From 4f91b19a9469214afe4fcbe77800a5ef6f8c6ec8 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 5 Jun 2022 14:09:33 +0300 Subject: [PATCH 001/116] Added MBC7 BESS support, documented BESS TPP1 --- BESS.md | 42 +++++++++++++++++++++++++ Core/gb.h | 2 +- Core/memory.c | 12 +++---- Core/save_state.c | 79 ++++++++++++++++++++++++++++++++++++++++++++++- Core/sm83_cpu.c | 2 +- 5 files changed, 128 insertions(+), 9 deletions(-) diff --git a/BESS.md b/BESS.md index 7c9296e23..1807943c6 100644 --- a/BESS.md +++ b/BESS.md @@ -176,6 +176,48 @@ The length of this block is 0x11 bytes long and it follows the following structu | 0x0E | Scheduled alarm time days (16-bit) | | 0x10 | Alarm enabled flag (8-bits, either 0 or 1) | +#### TPP1 block +The TPP1 block uses the `'TPP1'` identifier, and is an optional block that is used while emulating a TPP1 cartridge to store RTC information. This block can be omitted if the ROM header does not specify the inclusion of a RTC. + +The length of this block is 0x11 bytes long and it follows the following structure: + +| Offset | Content | +|--------|-------------------------------------------------------| +| 0x00 | UNIX timestamp at the time of the save state (64-bit) | +| 0x08 | The current RTC data (4 bytes) | +| 0x0C | The latched RTC data (4 bytes) | +| 0x10 | The value of the MR4 register (8-bits) | + + +#### MBC7 block +The MBC7 block uses the `'MBC7'` identifier, and is an optional block that is used while emulating an MBC7 cartridge to store the EEPROM communication state and motion control state. + +The length of this block is 0xA bytes long and it follows the following structure: + +| Offset | Content | +|--------|-------------------------------------------------------| +| 0x00 | Flags (8-bits) | +| 0x01 | Argument bits left (8-bits) | +| 0x02 | Current EEPROM command (16-bits) | +| 0x04 | Pending bits to read (16-bits) | +| 0x06 | Latched gyro X value (16-bits) | +| 0x08 | Latched gyro Y value (16-bits) | + +The meaning of the individual bits in flags are: + * Bit 0: Latch ready; set after writing `0x55` to `0xAX0X` and reset after writing `0xAA` to `0xAX1X` + * Bit 1: EEPROM DO line + * Bit 2: EEPROM DI line + * Bit 3: EEPROM CLK line + * Bit 4: EEPROM CS line + * Bit 5: EEPROM write enable; set after an `EWEN` command, reset after an `EWDS` command + * Bits 6-7: Unused. + +The current EEPROM command field has bits pushed to its LSB first, padded with zeros. For example, if the ROM clocked a single `1` bit, this field should contain `0b1`; if the ROM later clocks a `0` bit, this field should contain `0b10`. + +If the currently transmitted command has an argument, the "Argument bits left" field should contain the number argument bits remaining. Otherwise, it should contain 0. + +The "Pending bits to read" field contains the pending bits waiting to be shifted into the DO signal, MSB first, padded with ones. + #### SGB block The SGB block uses the `'SGB '` identifier, and is an optional block that is only used while emulating an SGB or SGB2 *and* SGB commands enabled. Implementations must not save this block on other models or when SGB commands are disabled, and should assume SGB commands are disabled if this block is missing. diff --git a/Core/gb.h b/Core/gb.h index 04d7f27b9..11f0b3b88 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -479,7 +479,7 @@ struct GB_gameboy_internal_s { bool eeprom_cs:1; uint16_t eeprom_command:11; uint16_t read_bits; - uint8_t bits_countdown:5; + uint8_t argument_bits_left:5; bool secondary_ram_enable:1; bool eeprom_write_enabled:1; } mbc7; diff --git a/Core/memory.c b/Core/memory.c index 9c9048b53..1d71490a6 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -1064,7 +1064,7 @@ static void write_mbc7_ram(GB_gameboy_t *gb, uint16_t addr, uint8_t value) gb->mbc7.eeprom_do = gb->mbc7.read_bits >> 15; gb->mbc7.read_bits <<= 1; gb->mbc7.read_bits |= 1; - if (gb->mbc7.bits_countdown == 0) { + if (gb->mbc7.argument_bits_left == 0) { /* Not transferring extra bits for a command*/ gb->mbc7.eeprom_command <<= 1; gb->mbc7.eeprom_command |= gb->mbc7.eeprom_di; @@ -1095,7 +1095,7 @@ static void write_mbc7_ram(GB_gameboy_t *gb, uint16_t addr, uint8_t value) if (gb->mbc7.eeprom_write_enabled) { ((uint16_t *)gb->mbc_ram)[gb->mbc7.eeprom_command & 0x7F] = 0; } - gb->mbc7.bits_countdown = 16; + gb->mbc7.argument_bits_left = 16; // We still need to process this command, don't erase eeprom_command break; case 0xC: @@ -1123,7 +1123,7 @@ static void write_mbc7_ram(GB_gameboy_t *gb, uint16_t addr, uint8_t value) if (gb->mbc7.eeprom_write_enabled) { memset(gb->mbc_ram, 0, gb->mbc_ram_size); } - gb->mbc7.bits_countdown = 16; + gb->mbc7.argument_bits_left = 16; // We still need to process this command, don't erase eeprom_command break; } @@ -1131,10 +1131,10 @@ static void write_mbc7_ram(GB_gameboy_t *gb, uint16_t addr, uint8_t value) } else { // We're shifting in extra bits for a WRITE/WRAL command - gb->mbc7.bits_countdown--; + gb->mbc7.argument_bits_left--; gb->mbc7.eeprom_do = true; if (gb->mbc7.eeprom_di) { - uint16_t bit = LE16(1 << gb->mbc7.bits_countdown); + uint16_t bit = LE16(1 << gb->mbc7.argument_bits_left); if (gb->mbc7.eeprom_command & 0x100) { // WRITE ((uint16_t *)gb->mbc_ram)[gb->mbc7.eeprom_command & 0x7F] |= bit; @@ -1146,7 +1146,7 @@ static void write_mbc7_ram(GB_gameboy_t *gb, uint16_t addr, uint8_t value) } } } - if (gb->mbc7.bits_countdown == 0) { // We're done + if (gb->mbc7.argument_bits_left == 0) { // We're done gb->mbc7.eeprom_command = 0; gb->mbc7.read_bits = (gb->mbc7.eeprom_command & 0x100)? 0xFF : 0x3FFF; // Emulate some time to settle } diff --git a/Core/save_state.c b/Core/save_state.c index d24e2f13e..ebb3646e0 100644 --- a/Core/save_state.c +++ b/Core/save_state.c @@ -119,6 +119,28 @@ typedef struct __attribute__((packed)){ GB_huc3_rtc_time_t data; } BESS_HUC3_t; +typedef struct __attribute__((packed)) { + BESS_block_t header; + + // Flags + bool latch_ready:1; + bool eeprom_do:1; + bool eeprom_di:1; + bool eeprom_clk:1; + bool eeprom_cs:1; + bool eeprom_write_enabled:1; + uint8_t padding:2; + + uint8_t argument_bits_left; + + uint16_t eeprom_command; + uint16_t read_bits; + + uint16_t x_latch; + uint16_t y_latch; + +} BESS_MBC7_t; + typedef struct __attribute__((packed)){ BESS_block_t header; uint64_t last_rtc_second; @@ -232,6 +254,8 @@ static size_t bess_size_for_cartridge(const GB_cartridge_t *cart) return sizeof(BESS_block_t) + 3 * sizeof(BESS_MBC_pair_t) + (cart->has_rtc? sizeof(BESS_RTC_t) : 0); case GB_MBC5: return sizeof(BESS_block_t) + 4 * sizeof(BESS_MBC_pair_t); + case GB_MBC7: + return sizeof(BESS_block_t) + 3 * sizeof(BESS_MBC_pair_t) + sizeof(BESS_MBC7_t); case GB_MMM01: return sizeof(BESS_block_t) + 8 * sizeof(BESS_MBC_pair_t); case GB_HUC1: @@ -270,7 +294,7 @@ size_t GB_get_save_state_size(GB_gameboy_t *gb) + sizeof(BESS_CORE_t) + sizeof(BESS_XOAM_t) + (gb->sgb? sizeof(BESS_SGB_t) : 0) - + bess_size_for_cartridge(gb->cartridge_type) // MBC & RTC/HUC3/TPP1 block + + bess_size_for_cartridge(gb->cartridge_type) // MBC & RTC/HUC3/TPP1/MBC7 block + sizeof(BESS_block_t) // END block + sizeof(BESS_footer_t); } @@ -435,6 +459,12 @@ static int save_bess_mbc_block(GB_gameboy_t *gb, virtual_file_t *file) pairs[3] = (BESS_MBC_pair_t){LE16(0x4000), gb->mbc5.ram_bank}; mbc_block.size = 4 * sizeof(pairs[0]); break; + case GB_MBC7: + pairs[0] = (BESS_MBC_pair_t){LE16(0x0000), gb->mbc_ram_enable? 0xA : 0x0}; + pairs[1] = (BESS_MBC_pair_t){LE16(0x2000), gb->mbc7.rom_bank}; + pairs[2] = (BESS_MBC_pair_t){LE16(0x4000), gb->mbc7.secondary_ram_enable? 0x40 : 0}; + mbc_block.size = 3 * sizeof(pairs[0]); + break; case GB_MMM01: pairs[0] = (BESS_MBC_pair_t){LE16(0x2000), (gb->mmm01.rom_bank_low & (gb->mmm01.rom_bank_mask << 1)) | (gb->mmm01.rom_bank_mid << 5)}; pairs[1] = (BESS_MBC_pair_t){LE16(0x6000), gb->mmm01.mbc1_mode | (gb->mmm01.rom_bank_mask << 2) | (gb->mmm01.multiplex_mode << 6)}; @@ -700,6 +730,30 @@ static int save_state_internal(GB_gameboy_t *gb, virtual_file_t *file, bool appe } } + if (gb->cartridge_type ->mbc_type == GB_MBC7) { + BESS_MBC7_t bess_mbc7 = { + .latch_ready = gb->mbc7.latch_ready, + .eeprom_do = gb->mbc7.eeprom_do, + .eeprom_di = gb->mbc7.eeprom_di, + .eeprom_clk = gb->mbc7.eeprom_clk, + .eeprom_cs = gb->mbc7.eeprom_cs, + .eeprom_write_enabled = gb->mbc7.eeprom_write_enabled, + + .argument_bits_left = gb->mbc7.argument_bits_left, + + .eeprom_command = LE16(gb->mbc7.eeprom_command), + .read_bits = LE16(gb->mbc7.read_bits), + + .x_latch = LE16(gb->mbc7.x_latch), + .y_latch = LE16(gb->mbc7.y_latch), + }; + bess_mbc7.header = (BESS_block_t){BE32('MBC7'), LE32(sizeof(bess_mbc7) - sizeof(bess_mbc7.header))}; + + if (file->write(file, &bess_mbc7, sizeof(bess_mbc7)) != sizeof(bess_mbc7)) { + goto error; + } + } + bool needs_sgb_padding = false; if (gb->sgb) { /* BESS SGB */ @@ -1089,6 +1143,29 @@ static int load_bess_save(GB_gameboy_t *gb, virtual_file_t *file, bool is_samebo save.rtc_latched.data[i ^ 3] = bess_tpp1.latched_rtc_data[i]; } save.tpp1_mr4 = bess_tpp1.mr4; + break; + case BE32('MBC7'): + if (!found_core) goto parse_error; + BESS_MBC7_t bess_mbc7; + if (LE32(block.size) != sizeof(bess_mbc7) - sizeof(block)) goto parse_error; + if (file->read(file, &bess_mbc7.header + 1, LE32(block.size)) != LE32(block.size)) goto error; + if (gb->cartridge_type->mbc_type != GB_MBC7) break; + + save.mbc7.latch_ready = bess_mbc7.latch_ready; + save.mbc7.eeprom_do = bess_mbc7.eeprom_do; + save.mbc7.eeprom_di = bess_mbc7.eeprom_di; + save.mbc7.eeprom_clk = bess_mbc7.eeprom_clk; + save.mbc7.eeprom_cs = bess_mbc7.eeprom_cs; + save.mbc7.eeprom_write_enabled = bess_mbc7.eeprom_write_enabled; + + save.mbc7.argument_bits_left = bess_mbc7.argument_bits_left; + + save.mbc7.eeprom_command = LE16(bess_mbc7.eeprom_command); + save.mbc7.read_bits = LE16(bess_mbc7.read_bits); + + save.mbc7.x_latch = LE16(bess_mbc7.x_latch); + save.mbc7.y_latch = LE16(bess_mbc7.y_latch); + break; case BE32('SGB '): if (!found_core) goto parse_error; diff --git a/Core/sm83_cpu.c b/Core/sm83_cpu.c index c35e539c5..f369e46e9 100644 --- a/Core/sm83_cpu.c +++ b/Core/sm83_cpu.c @@ -879,7 +879,7 @@ static void ld_##dhl##_##y(GB_gameboy_t *gb, uint8_t opcode) \ cycle_write(gb, gb->hl, gb->y); \ } -LD_X_Y(b,c) LD_X_Y(b,d) LD_X_Y(b,e) LD_X_Y(b,h) LD_X_Y(b,l) LD_X_DHL(b) LD_X_Y(b,a) + LD_X_Y(b,c) LD_X_Y(b,d) LD_X_Y(b,e) LD_X_Y(b,h) LD_X_Y(b,l) LD_X_DHL(b) LD_X_Y(b,a) LD_X_Y(c,b) LD_X_Y(c,d) LD_X_Y(c,e) LD_X_Y(c,h) LD_X_Y(c,l) LD_X_DHL(c) LD_X_Y(c,a) LD_X_Y(d,b) LD_X_Y(d,c) LD_X_Y(d,e) LD_X_Y(d,h) LD_X_Y(d,l) LD_X_DHL(d) LD_X_Y(d,a) LD_X_Y(e,b) LD_X_Y(e,c) LD_X_Y(e,d) LD_X_Y(e,h) LD_X_Y(e,l) LD_X_DHL(e) LD_X_Y(e,a) From 426d3d3a3745e94e2d20b1fdf9e6c657a771089d Mon Sep 17 00:00:00 2001 From: radimerry <102564317+radimerry@users.noreply.github.com> Date: Fri, 10 Jun 2022 04:12:15 +0000 Subject: [PATCH 002/116] [Libretro] Sync core options --- libretro/libretro.c | 241 +++++++++++--- libretro/libretro.h | 494 +++++++++++++++++++++++++++++ libretro/libretro_core_options.inc | 474 +++++++++++++++++++++------ 3 files changed, 1062 insertions(+), 147 deletions(-) diff --git a/libretro/libretro.c b/libretro/libretro.c index 069f1a409..e73ab6105 100644 --- a/libretro/libretro.c +++ b/libretro/libretro.c @@ -34,7 +34,6 @@ static const char slash = '/'; #define MAX_VIDEO_HEIGHT 224 #define MAX_VIDEO_PIXELS (MAX_VIDEO_WIDTH * MAX_VIDEO_HEIGHT) - #define RETRO_MEMORY_GAMEBOY_1_SRAM ((1 << 8) | RETRO_MEMORY_SAVE_RAM) #define RETRO_MEMORY_GAMEBOY_1_RTC ((2 << 8) | RETRO_MEMORY_RTC) #define RETRO_MEMORY_GAMEBOY_2_SRAM ((3 << 8) | RETRO_MEMORY_SAVE_RAM) @@ -42,8 +41,12 @@ static const char slash = '/'; #define RETRO_GAME_TYPE_GAMEBOY_LINK_2P 0x101 -char battery_save_path[512]; -char symbols_path[512]; +enum rom_type { + ROM_TYPE_INVALID, + ROM_TYPE_DMG, + ROM_TYPE_SGB, + ROM_TYPE_CGB +}; enum model { MODEL_DMG_B, @@ -77,8 +80,22 @@ enum audio_out { GB_2 }; -static enum model model[2]; -static enum model auto_model = MODEL_CGB_E; +static enum model model[2] = { + MODEL_DMG_B, + MODEL_DMG_B +}; +static enum model auto_model[2] = { + MODEL_CGB_E, + MODEL_CGB_E +}; +static enum model auto_sgb_model[2] = { + MODEL_SGB_NTSC, + MODEL_SGB_NTSC +}; +static bool auto_sgb_enabled[2] = { + false, + false +}; static uint32_t *frame_buf = NULL; static uint32_t *frame_buf_copy = NULL; @@ -108,8 +125,6 @@ static struct { } output_audio_buffer = {NULL, 0, 0}; char retro_system_directory[4096]; -char retro_save_directory[4096]; -char retro_game_path[4096]; GB_gameboy_t gameboy[2]; @@ -314,6 +329,7 @@ static void set_variable_visibility(void) for (i = 0; i < num_options; i++) { const char *key = option_defs_us[i].key; if ((strcmp(key, "sameboy_model") == 0) || + (strcmp(key, "sameboy_auto_sgb_model") == 0) || (strcmp(key, "sameboy_rtc") == 0) || (strcmp(key, "sameboy_scaling_filter") == 0) || (strcmp(key, "sameboy_mono_palette") == 0) || @@ -326,11 +342,13 @@ static void set_variable_visibility(void) option_display_singlecart.key = key; environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY, &option_display_singlecart); } - else if ((strcmp(key, "sameboy_link") == 0) || + else if ((strcmp(key, "sameboy_link") == 0) || (strcmp(key, "sameboy_screen_layout") == 0) || (strcmp(key, "sameboy_audio_output") == 0) || (strcmp(key, "sameboy_model_1") == 0) || + (strcmp(key, "sameboy_auto_sgb_model_1") == 0) || (strcmp(key, "sameboy_model_2") == 0) || + (strcmp(key, "sameboy_auto_sgb_model_2") == 0) || (strcmp(key, "sameboy_mono_palette_1") == 0) || (strcmp(key, "sameboy_mono_palette_2") == 0) || (strcmp(key, "sameboy_color_correction_mode_1") == 0) || @@ -360,8 +378,8 @@ static const struct retro_subsystem_memory_info gb2_memory[] = { }; static const struct retro_subsystem_rom_info gb_roms[] = { - { "GameBoy #1", "gb|gbc", true, false, true, gb1_memory, 1 }, - { "GameBoy #2", "gb|gbc", true, false, true, gb2_memory, 1 }, + { "GameBoy #1", "gb|gbc", false, false, true, gb1_memory, 1 }, + { "GameBoy #2", "gb|gbc", false, false, true, gb2_memory, 1 }, }; static const struct retro_subsystem_info subsystems[] = { @@ -585,10 +603,9 @@ static void init_for_current_model(unsigned id) effective_model = model[i]; if (effective_model == MODEL_AUTO) { - effective_model = auto_model; + effective_model = auto_model[i]; } - if (GB_is_inited(&gameboy[i])) { GB_switch_model_and_reset(&gameboy[i], libretro_to_internal_model[effective_model]); retro_set_memory_maps(); @@ -655,6 +672,10 @@ static void check_variables() var.key = "sameboy_model"; var.value = NULL; + + model[0] = MODEL_AUTO; + auto_sgb_enabled[0] = false; + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { enum model new_model = model[0]; if (strcmp(var.value, "Game Boy") == 0) { @@ -678,6 +699,10 @@ static void check_variables() else if (strcmp(var.value, "Super Game Boy 2") == 0) { new_model = MODEL_SGB2; } + else if (strcmp(var.value, "Auto (SGB)") == 0) { + new_model = MODEL_AUTO; + auto_sgb_enabled[0] = true; + } else { new_model = MODEL_AUTO; } @@ -685,6 +710,26 @@ static void check_variables() model[0] = new_model; } + var.key = "sameboy_auto_sgb_model"; + var.value = NULL; + + auto_sgb_model[0] = MODEL_SGB_NTSC; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { + enum model new_model = auto_sgb_model[0]; + if (strcmp(var.value, "Super Game Boy PAL") == 0) { + new_model = MODEL_SGB_PAL; + } + else if (strcmp(var.value, "Super Game Boy 2") == 0) { + new_model = MODEL_SGB2; + } + else { + new_model = MODEL_SGB_NTSC; + } + + auto_sgb_model[0] = new_model; + } + var.key = "sameboy_rtc"; var.value = NULL; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { @@ -842,6 +887,10 @@ static void check_variables() var.key = "sameboy_model_1"; var.value = NULL; + + model[0] = MODEL_AUTO; + auto_sgb_enabled[0] = false; + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { enum model new_model = model[0]; if (strcmp(var.value, "Game Boy") == 0) { @@ -865,6 +914,10 @@ static void check_variables() else if (strcmp(var.value, "Super Game Boy 2") == 0) { new_model = MODEL_SGB2; } + else if (strcmp(var.value, "Auto (SGB)") == 0) { + new_model = MODEL_AUTO; + auto_sgb_enabled[0] = true; + } else { new_model = MODEL_AUTO; } @@ -872,8 +925,32 @@ static void check_variables() model[0] = new_model; } + var.key = "sameboy_auto_sgb_model_1"; + var.value = NULL; + + auto_sgb_model[0] = MODEL_SGB_NTSC; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { + enum model new_model = auto_sgb_model[0]; + if (strcmp(var.value, "Super Game Boy PAL") == 0) { + new_model = MODEL_SGB_PAL; + } + else if (strcmp(var.value, "Super Game Boy 2") == 0) { + new_model = MODEL_SGB2; + } + else { + new_model = MODEL_SGB_NTSC; + } + + auto_sgb_model[0] = new_model; + } + var.key = "sameboy_model_2"; var.value = NULL; + + model[1] = MODEL_AUTO; + auto_sgb_enabled[1] = false; + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { enum model new_model = model[1]; if (strcmp(var.value, "Game Boy") == 0) { @@ -897,6 +974,10 @@ static void check_variables() else if (strcmp(var.value, "Super Game Boy 2") == 0) { new_model = MODEL_SGB2; } + else if (strcmp(var.value, "Auto (SGB)") == 0) { + new_model = MODEL_AUTO; + auto_sgb_enabled[1] = true; + } else { new_model = MODEL_AUTO; } @@ -904,6 +985,26 @@ static void check_variables() model[1] = new_model; } + var.key = "sameboy_auto_sgb_model_2"; + var.value = NULL; + + auto_sgb_model[1] = MODEL_SGB_NTSC; + + if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { + enum model new_model = auto_sgb_model[1]; + if (strcmp(var.value, "Super Game Boy PAL") == 0) { + new_model = MODEL_SGB_PAL; + } + else if (strcmp(var.value, "Super Game Boy 2") == 0) { + new_model = MODEL_SGB2; + } + else { + new_model = MODEL_SGB_NTSC; + } + + auto_sgb_model[1] = new_model; + } + var.key = "sameboy_mono_palette_1"; var.value = NULL; if (environ_cb(RETRO_ENVIRONMENT_GET_VARIABLE, &var) && var.value) { @@ -1079,13 +1180,6 @@ void retro_init(void) snprintf(retro_system_directory, sizeof(retro_system_directory), "%s", "."); } - if (environ_cb(RETRO_ENVIRONMENT_GET_SAVE_DIRECTORY, &dir) && dir) { - snprintf(retro_save_directory, sizeof(retro_save_directory), "%s", dir); - } - else { - snprintf(retro_save_directory, sizeof(retro_save_directory), "%s", "."); - } - if (environ_cb(RETRO_ENVIRONMENT_GET_LOG_INTERFACE, &logging)) { log_cb = logging.log; } @@ -1131,7 +1225,7 @@ void retro_get_system_info(struct retro_system_info *info) #else info->library_version = GB_VERSION; #endif - info->need_fullpath = true; + info->need_fullpath = false; info->valid_extensions = "gb|gbc"; } @@ -1165,14 +1259,15 @@ void retro_get_system_av_info(struct retro_system_av_info *info) info->timing = timing; } - void retro_set_environment(retro_environment_t cb) { + bool categories_supported; + environ_cb = cb; - libretro_set_core_options(environ_cb); + libretro_set_core_options(environ_cb, &categories_supported); - cb(RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO, (void*)subsystems); + environ_cb(RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO, (void*)subsystems); } void retro_set_audio_sample(retro_audio_sample_t cb) @@ -1297,28 +1392,76 @@ void retro_run(void) initialized = true; } +static enum rom_type check_rom_header(const uint8_t *data, size_t size) +{ + enum rom_type type; + uint8_t cgb_flag; + uint8_t sgb_flag; + + if (!data || (size < 0x146 + 1)) { + return ROM_TYPE_INVALID; + } + + type = ROM_TYPE_DMG; + cgb_flag = data[0x143]; + sgb_flag = data[0x146]; + + if ((cgb_flag == 0x80) || (cgb_flag == 0xC0)) { + type = ROM_TYPE_CGB; + } + + if ((type == ROM_TYPE_DMG) && (sgb_flag == 0x03)) { + type = ROM_TYPE_SGB; + } + + return type; +} + bool retro_load_game(const struct retro_game_info *info) { + enum rom_type content_type = ROM_TYPE_INVALID; + const uint8_t *content_data = NULL; + size_t content_size; + + if (info) { + content_data = (const uint8_t *)info->data; + content_size = info->size; + content_type = check_rom_header(content_data, content_size); + } + check_variables(); + switch (content_type) { + case ROM_TYPE_DMG: + auto_model[0] = MODEL_DMG_B; + auto_model[1] = MODEL_DMG_B; + break; + case ROM_TYPE_SGB: + auto_model[0] = auto_sgb_enabled[0] ? auto_sgb_model[0] : MODEL_DMG_B; + auto_model[1] = auto_sgb_enabled[1] ? auto_sgb_model[1] : MODEL_DMG_B; + break; + case ROM_TYPE_CGB: + auto_model[0] = MODEL_CGB_E; + auto_model[1] = MODEL_CGB_E; + break; + case ROM_TYPE_INVALID: + default: + log_cb(RETRO_LOG_ERROR, "Invalid content\n"); + return false; + } + frame_buf = (uint32_t *)malloc(MAX_VIDEO_PIXELS * emulated_devices * sizeof(uint32_t)); memset(frame_buf, 0, MAX_VIDEO_PIXELS * emulated_devices * sizeof(uint32_t)); enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_XRGB8888; if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt)) { - log_cb(RETRO_LOG_INFO, "XRGB8888 is not supported\n"); + log_cb(RETRO_LOG_ERROR, "XRGB8888 is not supported\n"); return false; } - auto_model = (info->path[strlen(info->path) - 1] & ~0x20) == 'C' ? MODEL_CGB_E : MODEL_DMG_B; - snprintf(retro_game_path, sizeof(retro_game_path), "%s", info->path); - for (int i = 0; i < emulated_devices; i++) { init_for_current_model(i); - if (GB_load_rom(&gameboy[i], info->path)) { - log_cb(RETRO_LOG_INFO, "Failed to load ROM at %s\n", info->path); - return false; - } + GB_load_rom_from_buffer(&gameboy[i], content_data, content_size); } bool achievements = true; @@ -1353,8 +1496,7 @@ unsigned retro_get_region(void) bool retro_load_game_special(unsigned type, const struct retro_game_info *info, size_t num_info) { - - if (type == RETRO_GAME_TYPE_GAMEBOY_LINK_2P) { + if ((type == RETRO_GAME_TYPE_GAMEBOY_LINK_2P) && (num_info >= 2)) { emulated_devices = 2; } else { @@ -1371,19 +1513,35 @@ bool retro_load_game_special(unsigned type, const struct retro_game_info *info, enum retro_pixel_format fmt = RETRO_PIXEL_FORMAT_XRGB8888; if (!environ_cb(RETRO_ENVIRONMENT_SET_PIXEL_FORMAT, &fmt)) { - log_cb(RETRO_LOG_INFO, "XRGB8888 is not supported\n"); + log_cb(RETRO_LOG_ERROR, "XRGB8888 is not supported\n"); return false; } - auto_model = (info->path[strlen(info->path) - 1] & ~0x20) == 'C' ? MODEL_CGB_E : MODEL_DMG_B; - snprintf(retro_game_path, sizeof(retro_game_path), "%s", info->path); - for (int i = 0; i < emulated_devices; i++) { - init_for_current_model(i); - if (GB_load_rom(&gameboy[i], info[i].path)) { - log_cb(RETRO_LOG_INFO, "Failed to load ROM\n"); - return false; + enum rom_type content_type = ROM_TYPE_INVALID; + const uint8_t *content_data = info[i].data; + size_t content_size = info[i].size; + + content_type = check_rom_header(content_data, content_size); + + switch (content_type) { + case ROM_TYPE_DMG: + auto_model[i] = MODEL_DMG_B; + break; + case ROM_TYPE_SGB: + auto_model[i] = auto_sgb_enabled[i] ? auto_sgb_model[i] : MODEL_DMG_B; + break; + case ROM_TYPE_CGB: + auto_model[i] = MODEL_CGB_E; + break; + case ROM_TYPE_INVALID: + default: + log_cb(RETRO_LOG_ERROR, "Invalid content\n"); + return false; } + + init_for_current_model(i); + GB_load_rom_from_buffer(&gameboy[i], content_data, content_size); } bool achievements = true; @@ -1616,4 +1774,3 @@ void retro_cheat_set(unsigned index, bool enabled, const char *code) (void)enabled; (void)code; } - diff --git a/libretro/libretro.h b/libretro/libretro.h index e6ee6269d..4f4db1cf9 100644 --- a/libretro/libretro.h +++ b/libretro/libretro.h @@ -1388,6 +1388,363 @@ enum retro_mod * fastforwarding state will occur in this case). */ +#define RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE 65 + /* const struct retro_system_content_info_override * -- + * Allows an implementation to override 'global' content + * info parameters reported by retro_get_system_info(). + * Overrides also affect subsystem content info parameters + * set via RETRO_ENVIRONMENT_SET_SUBSYSTEM_INFO. + * This function must be called inside retro_set_environment(). + * If callback returns false, content info overrides + * are unsupported by the frontend, and will be ignored. + * If callback returns true, extended game info may be + * retrieved by calling RETRO_ENVIRONMENT_GET_GAME_INFO_EXT + * in retro_load_game() or retro_load_game_special(). + * + * 'data' points to an array of retro_system_content_info_override + * structs terminated by a { NULL, false, false } element. + * If 'data' is NULL, no changes will be made to the frontend; + * a core may therefore pass NULL in order to test whether + * the RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE and + * RETRO_ENVIRONMENT_GET_GAME_INFO_EXT callbacks are supported + * by the frontend. + * + * For struct member descriptions, see the definition of + * struct retro_system_content_info_override. + * + * Example: + * + * - struct retro_system_info: + * { + * "My Core", // library_name + * "v1.0", // library_version + * "m3u|md|cue|iso|chd|sms|gg|sg", // valid_extensions + * true, // need_fullpath + * false // block_extract + * } + * + * - Array of struct retro_system_content_info_override: + * { + * { + * "md|sms|gg", // extensions + * false, // need_fullpath + * true // persistent_data + * }, + * { + * "sg", // extensions + * false, // need_fullpath + * false // persistent_data + * }, + * { NULL, false, false } + * } + * + * Result: + * - Files of type m3u, cue, iso, chd will not be + * loaded by the frontend. Frontend will pass a + * valid path to the core, and core will handle + * loading internally + * - Files of type md, sms, gg will be loaded by + * the frontend. A valid memory buffer will be + * passed to the core. This memory buffer will + * remain valid until retro_deinit() returns + * - Files of type sg will be loaded by the frontend. + * A valid memory buffer will be passed to the core. + * This memory buffer will remain valid until + * retro_load_game() (or retro_load_game_special()) + * returns + * + * NOTE: If an extension is listed multiple times in + * an array of retro_system_content_info_override + * structs, only the first instance will be registered + */ + +#define RETRO_ENVIRONMENT_GET_GAME_INFO_EXT 66 + /* const struct retro_game_info_ext ** -- + * Allows an implementation to fetch extended game + * information, providing additional content path + * and memory buffer status details. + * This function may only be called inside + * retro_load_game() or retro_load_game_special(). + * If callback returns false, extended game information + * is unsupported by the frontend. In this case, only + * regular retro_game_info will be available. + * RETRO_ENVIRONMENT_GET_GAME_INFO_EXT is guaranteed + * to return true if RETRO_ENVIRONMENT_SET_CONTENT_INFO_OVERRIDE + * returns true. + * + * 'data' points to an array of retro_game_info_ext structs. + * + * For struct member descriptions, see the definition of + * struct retro_game_info_ext. + * + * - If function is called inside retro_load_game(), + * the retro_game_info_ext array is guaranteed to + * have a size of 1 - i.e. the returned pointer may + * be used to access directly the members of the + * first retro_game_info_ext struct, for example: + * + * struct retro_game_info_ext *game_info_ext; + * if (environ_cb(RETRO_ENVIRONMENT_GET_GAME_INFO_EXT, &game_info_ext)) + * printf("Content Directory: %s\n", game_info_ext->dir); + * + * - If the function is called inside retro_load_game_special(), + * the retro_game_info_ext array is guaranteed to have a + * size equal to the num_info argument passed to + * retro_load_game_special() + */ + +#define RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2 67 + /* const struct retro_core_options_v2 * -- + * Allows an implementation to signal the environment + * which variables it might want to check for later using + * GET_VARIABLE. + * This allows the frontend to present these variables to + * a user dynamically. + * This should only be called if RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION + * returns an API version of >= 2. + * This should be called instead of RETRO_ENVIRONMENT_SET_VARIABLES. + * This should be called instead of RETRO_ENVIRONMENT_SET_CORE_OPTIONS. + * This should be called the first time as early as + * possible (ideally in retro_set_environment). + * Afterwards it may be called again for the core to communicate + * updated options to the frontend, but the number of core + * options must not change from the number in the initial call. + * If RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION returns an API + * version of >= 2, this callback is guaranteed to succeed + * (i.e. callback return value does not indicate success) + * If callback returns true, frontend has core option category + * support. + * If callback returns false, frontend does not have core option + * category support. + * + * 'data' points to a retro_core_options_v2 struct, containing + * of two pointers: + * - retro_core_options_v2::categories is an array of + * retro_core_option_v2_category structs terminated by a + * { NULL, NULL, NULL } element. If retro_core_options_v2::categories + * is NULL, all core options will have no category and will be shown + * at the top level of the frontend core option interface. If frontend + * does not have core option category support, categories array will + * be ignored. + * - retro_core_options_v2::definitions is an array of + * retro_core_option_v2_definition structs terminated by a + * { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL } + * element. + * + * >> retro_core_option_v2_category notes: + * + * - retro_core_option_v2_category::key should contain string + * that uniquely identifies the core option category. Valid + * key characters are [a-z, A-Z, 0-9, _, -] + * Namespace collisions with other implementations' category + * keys are permitted. + * - retro_core_option_v2_category::desc should contain a human + * readable description of the category key. + * - retro_core_option_v2_category::info should contain any + * additional human readable information text that a typical + * user may need to understand the nature of the core option + * category. + * + * Example entry: + * { + * "advanced_settings", + * "Advanced", + * "Options affecting low-level emulation performance and accuracy." + * } + * + * >> retro_core_option_v2_definition notes: + * + * - retro_core_option_v2_definition::key should be namespaced to not + * collide with other implementations' keys. e.g. A core called + * 'foo' should use keys named as 'foo_option'. Valid key characters + * are [a-z, A-Z, 0-9, _, -]. + * - retro_core_option_v2_definition::desc should contain a human readable + * description of the key. Will be used when the frontend does not + * have core option category support. Examples: "Aspect Ratio" or + * "Video > Aspect Ratio". + * - retro_core_option_v2_definition::desc_categorized should contain a + * human readable description of the key, which will be used when + * frontend has core option category support. Example: "Aspect Ratio", + * where associated retro_core_option_v2_category::desc is "Video". + * If empty or NULL, the string specified by + * retro_core_option_v2_definition::desc will be used instead. + * retro_core_option_v2_definition::desc_categorized will be ignored + * if retro_core_option_v2_definition::category_key is empty or NULL. + * - retro_core_option_v2_definition::info should contain any additional + * human readable information text that a typical user may need to + * understand the functionality of the option. + * - retro_core_option_v2_definition::info_categorized should contain + * any additional human readable information text that a typical user + * may need to understand the functionality of the option, and will be + * used when frontend has core option category support. This is provided + * to accommodate the case where info text references an option by + * name/desc, and the desc/desc_categorized text for that option differ. + * If empty or NULL, the string specified by + * retro_core_option_v2_definition::info will be used instead. + * retro_core_option_v2_definition::info_categorized will be ignored + * if retro_core_option_v2_definition::category_key is empty or NULL. + * - retro_core_option_v2_definition::category_key should contain a + * category identifier (e.g. "video" or "audio") that will be + * assigned to the core option if frontend has core option category + * support. A categorized option will be shown in a subsection/ + * submenu of the frontend core option interface. If key is empty + * or NULL, or if key does not match one of the + * retro_core_option_v2_category::key values in the associated + * retro_core_option_v2_category array, option will have no category + * and will be shown at the top level of the frontend core option + * interface. + * - retro_core_option_v2_definition::values is an array of + * retro_core_option_value structs terminated by a { NULL, NULL } + * element. + * --> retro_core_option_v2_definition::values[index].value is an + * expected option value. + * --> retro_core_option_v2_definition::values[index].label is a + * human readable label used when displaying the value on screen. + * If NULL, the value itself is used. + * - retro_core_option_v2_definition::default_value is the default + * core option setting. It must match one of the expected option + * values in the retro_core_option_v2_definition::values array. If + * it does not, or the default value is NULL, the first entry in the + * retro_core_option_v2_definition::values array is treated as the + * default. + * + * The number of possible option values should be very limited, + * and must be less than RETRO_NUM_CORE_OPTION_VALUES_MAX. + * i.e. it should be feasible to cycle through options + * without a keyboard. + * + * Example entries: + * + * - Uncategorized: + * + * { + * "foo_option", + * "Speed hack coprocessor X", + * NULL, + * "Provides increased performance at the expense of reduced accuracy.", + * NULL, + * NULL, + * { + * { "false", NULL }, + * { "true", NULL }, + * { "unstable", "Turbo (Unstable)" }, + * { NULL, NULL }, + * }, + * "false" + * } + * + * - Categorized: + * + * { + * "foo_option", + * "Advanced > Speed hack coprocessor X", + * "Speed hack coprocessor X", + * "Setting 'Advanced > Speed hack coprocessor X' to 'true' or 'Turbo' provides increased performance at the expense of reduced accuracy", + * "Setting 'Speed hack coprocessor X' to 'true' or 'Turbo' provides increased performance at the expense of reduced accuracy", + * "advanced_settings", + * { + * { "false", NULL }, + * { "true", NULL }, + * { "unstable", "Turbo (Unstable)" }, + * { NULL, NULL }, + * }, + * "false" + * } + * + * Only strings are operated on. The possible values will + * generally be displayed and stored as-is by the frontend. + */ + +#define RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2_INTL 68 + /* const struct retro_core_options_v2_intl * -- + * Allows an implementation to signal the environment + * which variables it might want to check for later using + * GET_VARIABLE. + * This allows the frontend to present these variables to + * a user dynamically. + * This should only be called if RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION + * returns an API version of >= 2. + * This should be called instead of RETRO_ENVIRONMENT_SET_VARIABLES. + * This should be called instead of RETRO_ENVIRONMENT_SET_CORE_OPTIONS. + * This should be called instead of RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL. + * This should be called instead of RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2. + * This should be called the first time as early as + * possible (ideally in retro_set_environment). + * Afterwards it may be called again for the core to communicate + * updated options to the frontend, but the number of core + * options must not change from the number in the initial call. + * If RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION returns an API + * version of >= 2, this callback is guaranteed to succeed + * (i.e. callback return value does not indicate success) + * If callback returns true, frontend has core option category + * support. + * If callback returns false, frontend does not have core option + * category support. + * + * This is fundamentally the same as RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2, + * with the addition of localisation support. The description of the + * RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2 callback should be consulted + * for further details. + * + * 'data' points to a retro_core_options_v2_intl struct. + * + * - retro_core_options_v2_intl::us is a pointer to a + * retro_core_options_v2 struct defining the US English + * core options implementation. It must point to a valid struct. + * + * - retro_core_options_v2_intl::local is a pointer to a + * retro_core_options_v2 struct defining core options for + * the current frontend language. It may be NULL (in which case + * retro_core_options_v2_intl::us is used by the frontend). Any items + * missing from this struct will be read from + * retro_core_options_v2_intl::us instead. + * + * NOTE: Default core option values are always taken from the + * retro_core_options_v2_intl::us struct. Any default values in + * the retro_core_options_v2_intl::local struct will be ignored. + */ + +#define RETRO_ENVIRONMENT_SET_CORE_OPTIONS_UPDATE_DISPLAY_CALLBACK 69 + /* const struct retro_core_options_update_display_callback * -- + * Allows a frontend to signal that a core must update + * the visibility of any dynamically hidden core options, + * and enables the frontend to detect visibility changes. + * Used by the frontend to update the menu display status + * of core options without requiring a call of retro_run(). + * Must be called in retro_set_environment(). + */ + +#define RETRO_ENVIRONMENT_SET_VARIABLE 70 + /* const struct retro_variable * -- + * Allows an implementation to notify the frontend + * that a core option value has changed. + * + * retro_variable::key and retro_variable::value + * must match strings that have been set previously + * via one of the following: + * + * - RETRO_ENVIRONMENT_SET_VARIABLES + * - RETRO_ENVIRONMENT_SET_CORE_OPTIONS + * - RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL + * - RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2 + * - RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2_INTL + * + * After changing a core option value via this + * callback, RETRO_ENVIRONMENT_GET_VARIABLE_UPDATE + * will return true. + * + * If data is NULL, no changes will be registered + * and the callback will return true; an + * implementation may therefore pass NULL in order + * to test whether the callback is supported. + */ + +#define RETRO_ENVIRONMENT_GET_THROTTLE_STATE (71 | RETRO_ENVIRONMENT_EXPERIMENTAL) + /* struct retro_throttle_state * -- + * Allows an implementation to get details on the actual rate + * the frontend is attempting to call retro_run(). + */ + /* VFS functionality */ /* File paths: @@ -2902,6 +3259,143 @@ struct retro_core_options_intl struct retro_core_option_definition *local; }; +struct retro_core_option_v2_category +{ + /* Variable uniquely identifying the + * option category. Valid key characters + * are [a-z, A-Z, 0-9, _, -] */ + const char *key; + + /* Human-readable category description + * > Used as category menu label when + * frontend has core option category + * support */ + const char *desc; + + /* Human-readable category information + * > Used as category menu sublabel when + * frontend has core option category + * support + * > Optional (may be NULL or an empty + * string) */ + const char *info; +}; + +struct retro_core_option_v2_definition +{ + /* Variable to query in RETRO_ENVIRONMENT_GET_VARIABLE. + * Valid key characters are [a-z, A-Z, 0-9, _, -] */ + const char *key; + + /* Human-readable core option description + * > Used as menu label when frontend does + * not have core option category support + * e.g. "Video > Aspect Ratio" */ + const char *desc; + + /* Human-readable core option description + * > Used as menu label when frontend has + * core option category support + * e.g. "Aspect Ratio", where associated + * retro_core_option_v2_category::desc + * is "Video" + * > If empty or NULL, the string specified by + * desc will be used as the menu label + * > Will be ignored (and may be set to NULL) + * if category_key is empty or NULL */ + const char *desc_categorized; + + /* Human-readable core option information + * > Used as menu sublabel */ + const char *info; + + /* Human-readable core option information + * > Used as menu sublabel when frontend + * has core option category support + * (e.g. may be required when info text + * references an option by name/desc, + * and the desc/desc_categorized text + * for that option differ) + * > If empty or NULL, the string specified by + * info will be used as the menu sublabel + * > Will be ignored (and may be set to NULL) + * if category_key is empty or NULL */ + const char *info_categorized; + + /* Variable specifying category (e.g. "video", + * "audio") that will be assigned to the option + * if frontend has core option category support. + * > Categorized options will be displayed in a + * subsection/submenu of the frontend core + * option interface + * > Specified string must match one of the + * retro_core_option_v2_category::key values + * in the associated retro_core_option_v2_category + * array; If no match is not found, specified + * string will be considered as NULL + * > If specified string is empty or NULL, option will + * have no category and will be shown at the top + * level of the frontend core option interface */ + const char *category_key; + + /* Array of retro_core_option_value structs, terminated by NULL */ + struct retro_core_option_value values[RETRO_NUM_CORE_OPTION_VALUES_MAX]; + + /* Default core option value. Must match one of the values + * in the retro_core_option_value array, otherwise will be + * ignored */ + const char *default_value; +}; + +struct retro_core_options_v2 +{ + /* Array of retro_core_option_v2_category structs, + * terminated by NULL + * > If NULL, all entries in definitions array + * will have no category and will be shown at + * the top level of the frontend core option + * interface + * > Will be ignored if frontend does not have + * core option category support */ + struct retro_core_option_v2_category *categories; + + /* Array of retro_core_option_v2_definition structs, + * terminated by NULL */ + struct retro_core_option_v2_definition *definitions; +}; + +struct retro_core_options_v2_intl +{ + /* Pointer to a retro_core_options_v2 struct + * > US English implementation + * > Must point to a valid struct */ + struct retro_core_options_v2 *us; + + /* Pointer to a retro_core_options_v2 struct + * - Implementation for current frontend language + * - May be NULL */ + struct retro_core_options_v2 *local; +}; + +/* Used by the frontend to monitor changes in core option + * visibility. May be called each time any core option + * value is set via the frontend. + * - On each invocation, the core must update the visibility + * of any dynamically hidden options using the + * RETRO_ENVIRONMENT_SET_CORE_OPTIONS_DISPLAY environment + * callback. + * - On the first invocation, returns 'true' if the visibility + * of any core option has changed since the last call of + * retro_load_game() or retro_load_game_special(). + * - On each subsequent invocation, returns 'true' if the + * visibility of any core option has changed since the last + * time the function was called. */ +typedef bool (RETRO_CALLCONV *retro_core_options_update_display_callback_t)(void); +struct retro_core_options_update_display_callback +{ + retro_core_options_update_display_callback_t callback; +}; + struct retro_game_info { const char *path; /* Path to game, UTF-8 encoded. diff --git a/libretro/libretro_core_options.inc b/libretro/libretro_core_options.inc index 118576326..8448eca1a 100644 --- a/libretro/libretro_core_options.inc +++ b/libretro/libretro_core_options.inc @@ -9,9 +9,10 @@ /* ******************************** - * VERSION: 1.3 + * VERSION: 2.0 ******************************** * + * - 2.0: Add support for core options v2 interface * - 1.3: Move translations to libretro_core_options_intl.h * - libretro_core_options_intl.h includes BOM and utf-8 * fix for MSVC 2010-2013 @@ -44,16 +45,44 @@ extern "C" { * - Will be used as a fallback for any missing entries in * frontend language definition */ -struct retro_core_option_definition option_defs_us[] = { - +struct retro_core_option_v2_category option_cats_us[] = { + { + "system", + "System", + "Configure base hardware selection." + }, + { + "video", + "Video", + "Configure display parameters: palette selection, colour correction, screen border." + }, + { + "audio", + "Audio", + "Configure audio emulation: highpass filter, electrical interference." + }, + { + "input", + "Input", + "Configure input parameters: rumble support." + }, + { NULL, NULL, NULL, NULL }, +}; + +struct retro_core_option_v2_definition option_defs_us[] = { + /* Core options used in single cart mode */ - + { "sameboy_model", "System - Emulated Model (Requires Restart)", + "Emulated Model (Requires Restart)", "Chooses which system model the content should be started on. Certain games may activate special in-game features when ran on specific models. This option requires a content restart in order to take effect.", + NULL, + "system", { - { "Auto", "Detect automatically" }, + { "Auto", "Auto Detect DMG/CGB" }, + { "Auto (SGB)", "Auto Detect DMG/SGB/CGB" }, { "Game Boy", "Game Boy (DMG-CPU B)" }, { "Game Boy Color C", "Game Boy Color (CPU-CGB C) (Experimental)" }, { "Game Boy Color", "Game Boy Color (CPU-CGB E)" }, @@ -65,10 +94,28 @@ struct retro_core_option_definition option_defs_us[] = { }, "Auto" }, + { + "sameboy_auto_sgb_model", + "System - Auto Detected SGB Model (Requires Restart)", + "Auto Detected SGB Model (Requires Restart)", + "Specifies which model of Super Game Boy hardware to emulate when SGB content is automatically detected. This option requires a content restart in order to take effect.", + NULL, + "system", + { + { "Super Game Boy", "Super Game Boy NTSC" }, + { "Super Game Boy PAL", NULL }, + { "Super Game Boy 2", NULL }, + { NULL, NULL }, + }, + "Super Game Boy" + }, { "sameboy_rtc", "System - Real Time Clock Emulation", + "Real Time Clock Emulation", "Specifies how the emulation of the real-time clock feature used in certain Game Boy and Game Boy Color games should function.", + NULL, + "system", { { "sync to system clock", "Sync to System Clock" }, { "accurate", "Accurate" }, @@ -76,11 +123,13 @@ struct retro_core_option_definition option_defs_us[] = { }, "sync to system clock" }, - { "sameboy_mono_palette", "Video - GB Mono Palette", + "GB Mono Palette", "Selects the color palette that should be used when playing Game Boy games.", + NULL, + "video", { { "greyscale", "Greyscale" }, { "lime", "Lime (Game Boy)" }, @@ -93,7 +142,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_color_correction_mode", "Video - GBC Color Correction", + "GBC Color Correction", "Defines which type of color correction should be applied when playing Game Boy Color games.", + NULL, + "video", { { "emulate hardware", "Emulate Hardware" }, { "preserve brightness", "Preserve Brightness" }, @@ -108,7 +160,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_light_temperature", "Video - Ambient Light Temperature", - "Simulates an ambient light’s effect on non-backlit Game Boy screens, by setting a user-controlled color temperature. This option has no effect if the content is run on an original Game Boy (DMG) emulated model.", + "Ambient Light Temperature", + "Simulates an ambient light's effect on non-backlit Game Boy screens, by setting a user-controlled color temperature. This option has no effect if the content is run on an original Game Boy (DMG) emulated model.", + NULL, + "video", { { "1.0", "1000K (Warmest)" }, { "0.9", "1550K" }, @@ -130,7 +185,7 @@ struct retro_core_option_definition option_defs_us[] = { { "-0.7", "10350K" }, { "-0.8", "10900K" }, { "-0.9", "11450K" }, - { "-1.0", "12000K (Coolest)" }, + { "-1.0", "12000K (Coolest)" }, { NULL, NULL }, }, "0" @@ -138,7 +193,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_border", "Video - Display Border", + "Display Border", "Defines when to display an on-screen border around the content.", + NULL, + "video", { { "always", "Always" }, { "Super Game Boy only", "Only for Super Game Boy" }, @@ -150,7 +208,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_high_pass_filter_mode", "Audio - Highpass Filter", + "Highpass Filter", "Applies a filter to the audio output, removing certain pop sounds caused by the DC Offset. If disabled, the sound will be rendered as output by the Game Boy APU, but popping effects will be heard when the emulator is paused or resumed. 'Accurate' will apply a global filter, masking popping sounds while also reducing lower frequencies. 'Preserve Waveform' applies the filter only to the DC Offset.", + NULL, + "audio", { { "accurate", "Accurate" }, { "remove dc offset", "Preserve Waveform" }, @@ -162,7 +223,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_audio_interference", "Audio - Interference Volume", + "Interference Volume", "Controls the volume of the buzzing effect caused by the electrical interference between the Game Boy SoC and the system speakers.", + NULL, + "audio", { { "0", "0%" }, { "5", "5%" }, @@ -192,7 +256,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_rumble", "Input - Rumble Mode", + "Rumble Mode", "Defines which type of content should trigger rumble effects.", + NULL, + "input", { { "all games", "Always" }, { "rumble-enabled games", "Only for rumble-enabled games" }, @@ -201,13 +268,16 @@ struct retro_core_option_definition option_defs_us[] = { }, "rumble-enabled games" }, - + /* Core options used in dual cart mode */ - + { "sameboy_link", "System - Link Cable Emulation", + "Link Cable Emulation", "Enables the emulation of the link cable, allowing communication and exchange of data between two Game Boy systems.", + NULL, + "system", { { "enabled", "Enabled" }, { "disabled", "Disabled" }, @@ -218,7 +288,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_screen_layout", "System - Screen Layout", + "Screen Layout", "When emulating two systems at once, this option defines the respective position of the two screens.", + NULL, + "system", { { "top-down", "Top-Down" }, { "left-right", "Left-Right" }, @@ -229,7 +302,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_audio_output", "System - Audio Output", + "Audio Output", "Selects which of the two emulated Game Boy systems should output audio.", + NULL, + "system", { { "Game Boy #1", NULL }, { "Game Boy #2", NULL }, @@ -240,9 +316,13 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_model_1", "System - Emulated Model for Game Boy #1 (Requires Restart)", + "Emulated Model for Game Boy #1 (Requires Restart)", "Chooses which system model the content should be started on for Game Boy #1. Certain games may activate special in-game features when ran on specific models. This option requires a content restart in order to take effect.", + NULL, + "system", { - { "Auto", "Detect automatically" }, + { "Auto", "Auto Detect DMG/CGB" }, + { "Auto (SGB)", "Auto Detect DMG/SGB/CGB" }, { "Game Boy", "Game Boy (DMG-CPU B)" }, { "Game Boy Color C", "Game Boy Color (CPU-CGB C) (Experimental)" }, { "Game Boy Color", "Game Boy Color (CPU-CGB E)" }, @@ -254,12 +334,31 @@ struct retro_core_option_definition option_defs_us[] = { }, "Auto" }, + { + "sameboy_auto_sgb_model_1", + "System - Auto Detected SGB Model for Game Boy #1 (Requires Restart)", + "Auto Detected SGB Model for Game Boy #1 (Requires Restart)", + "Specifies which model of Super Game Boy hardware to emulate when SGB content is automatically detected for Game Boy #1. This option requires a content restart in order to take effect.", + NULL, + "system", + { + { "Super Game Boy", "Super Game Boy NTSC" }, + { "Super Game Boy PAL", NULL }, + { "Super Game Boy 2", NULL }, + { NULL, NULL }, + }, + "Super Game Boy" + }, { "sameboy_model_2", "System - Emulated Model for Game Boy #2 (Requires Restart)", + "Emulated Model for Game Boy #2 (Requires Restart)", "Chooses which system model the content should be started on for Game Boy #2. Certain games may activate special in-game features when ran on specific models. This option requires a content restart in order to take effect.", + NULL, + "system", { - { "Auto", "Detect automatically" }, + { "Auto", "Auto Detect DMG/CGB" }, + { "Auto (SGB)", "Auto Detect DMG/SGB/CGB" }, { "Game Boy", "Game Boy (DMG-CPU B)" }, { "Game Boy Color C", "Game Boy Color (CPU-CGB C) (Experimental)" }, { "Game Boy Color", "Game Boy Color (CPU-CGB E)" }, @@ -271,10 +370,28 @@ struct retro_core_option_definition option_defs_us[] = { }, "Auto" }, + { + "sameboy_auto_sgb_model_2", + "System - Auto Detected SGB Model for Game Boy #2 (Requires Restart)", + "Auto Detected SGB Model for Game Boy #2 (Requires Restart)", + "Specifies which model of Super Game Boy hardware to emulate when SGB content is automatically detected for Game Boy #2. This option requires a content restart in order to take effect.", + NULL, + "system", + { + { "Super Game Boy", "Super Game Boy NTSC" }, + { "Super Game Boy PAL", NULL }, + { "Super Game Boy 2", NULL }, + { NULL, NULL }, + }, + "Super Game Boy" + }, { "sameboy_mono_palette_1", "Video - GB Mono Palette for Game Boy #1", + "GB Mono Palette for Game Boy #1", "Selects the color palette that should be used when playing Game Boy games on Game Boy #1.", + NULL, + "video", { { "greyscale", "Greyscale" }, { "lime", "Lime (Game Boy)" }, @@ -287,7 +404,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_mono_palette_2", "Video - GB Mono Palette for Game Boy #2", + "GB Mono Palette for Game Boy #2", "Selects the color palette that should be used when playing Game Boy games on Game Boy #2.", + NULL, + "video", { { "greyscale", "Greyscale" }, { "lime", "Lime (Game Boy)" }, @@ -300,7 +420,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_color_correction_mode_1", "Video - GBC Color Correction for Game Boy #1", + "GBC Color Correction for Game Boy #1", "Defines which type of color correction should be applied when playing Game Boy Color games on Game Boy #1.", + NULL, + "video", { { "emulate hardware", "Emulate Hardware" }, { "preserve brightness", "Preserve Brightness" }, @@ -315,7 +438,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_color_correction_mode_2", "Video - GBC Color Correction for Game Boy #2", + "GBC Color Correction for Game Boy #2", "Defines which type of color correction should be applied when playing Game Boy Color games on Game Boy #2.", + NULL, + "video", { { "emulate hardware", "Emulate Hardware" }, { "preserve brightness", "Preserve Brightness" }, @@ -330,7 +456,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_light_temperature_1", "Video - Ambient Light Temperature for Game Boy #1", - "Simulates an ambient light’s effect on non-backlit Game Boy screens, by setting a user-controlled color temperature applied to the screen of Game Boy #1. This option has no effect if the content is run on an original Game Boy (DMG) emulated model.", + "Ambient Light Temperature for Game Boy #1", + "Simulates an ambient light's effect on non-backlit Game Boy screens, by setting a user-controlled color temperature applied to the screen of Game Boy #1. This option has no effect if the content is run on an original Game Boy (DMG) emulated model.", + NULL, + "video", { { "1.0", "1000K (Warmest)" }, { "0.9", "1550K" }, @@ -352,7 +481,7 @@ struct retro_core_option_definition option_defs_us[] = { { "-0.7", "10350K" }, { "-0.8", "10900K" }, { "-0.9", "11450K" }, - { "-1.0", "12000K (Coolest)" }, + { "-1.0", "12000K (Coolest)" }, { NULL, NULL }, }, "0" @@ -360,7 +489,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_light_temperature_2", "Video - Ambient Light Temperature for Game Boy #2", - "Simulates an ambient light’s effect on non-backlit Game Boy screens, by setting a user-controlled color temperature applied to the screen of Game Boy #2. This option has no effect if the content is run on an original Game Boy (DMG) emulated model.", + "Ambient Light Temperature for Game Boy #2", + "Simulates an ambient light's effect on non-backlit Game Boy screens, by setting a user-controlled color temperature applied to the screen of Game Boy #2. This option has no effect if the content is run on an original Game Boy (DMG) emulated model.", + NULL, + "video", { { "1.0", "1000K (Warmest)" }, { "0.9", "1550K" }, @@ -382,7 +514,7 @@ struct retro_core_option_definition option_defs_us[] = { { "-0.7", "10350K" }, { "-0.8", "10900K" }, { "-0.9", "11450K" }, - { "-1.0", "12000K (Coolest)" }, + { "-1.0", "12000K (Coolest)" }, { NULL, NULL }, }, "0" @@ -390,7 +522,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_high_pass_filter_mode_1", "Audio - Highpass Filter for Game Boy #1", + "Highpass Filter for Game Boy #1", "Applies a filter to the audio output for Game Boy #1, removing certain pop sounds caused by the DC Offset. If disabled, the sound will be rendered as output by the Game Boy APU, but popping effects will be heard when the emulator is paused or resumed. 'Accurate' will apply a global filter, masking popping sounds while also reducing lower frequencies. 'Preserve Waveform' applies the filter only to the DC Offset.", + NULL, + "audio", { { "accurate", "Accurate" }, { "remove dc offset", "Preserve Waveform" }, @@ -402,7 +537,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_high_pass_filter_mode_2", "Audio - Highpass Filter for Game Boy #2", + "Highpass Filter for Game Boy #2", "Applies a filter to the audio output for Game Boy #2, removing certain pop sounds caused by the DC Offset. If disabled, the sound will be rendered as output by the Game Boy APU, but popping effects will be heard when the emulator is paused or resumed. 'Accurate' will apply a global filter, masking popping sounds while also reducing lower frequencies. 'Preserve Waveform' applies the filter only to the DC Offset.", + NULL, + "audio", { { "accurate", "Accurate" }, { "remove dc offset", "Preserve Waveform" }, @@ -414,7 +552,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_audio_interference_1", "Audio - Interference Volume for Game Boy #1", + "Interference Volume for Game Boy #1", "Controls the volume of the buzzing effect caused by the electrical interference between the Game Boy SoC and the system speakers on Game Boy #1.", + NULL, + "audio", { { "0", "0%" }, { "5", "5%" }, @@ -444,7 +585,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_audio_interference_2", "Audio - Interference Volume for Game Boy #2", + "Interference Volume for Game Boy #2", "Controls the volume of the buzzing effect caused by the electrical interference between the Game Boy SoC and the system speakers on Game Boy #2.", + NULL, + "audio", { { "0", "0%" }, { "5", "5%" }, @@ -474,11 +618,14 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_rumble_1", "Input - Rumble Mode for Game Boy #1", + "Rumble Mode for Game Boy #1", "Defines which type of content should trigger rumble effects when played on Game Boy #1.", + NULL, + "input", { { "all games", "Always" }, { "rumble-enabled games", "Only for rumble-enabled games" }, - { "never", "Never" }, + { "never", "Never" }, { NULL, NULL }, }, "rumble-enabled games" @@ -486,7 +633,10 @@ struct retro_core_option_definition option_defs_us[] = { { "sameboy_rumble_2", "Input - Rumble Mode for Game Boy #2", + "Rumble Mode for Game Boy #2", "Defines which type of content should trigger rumble effects when played on Game Boy #2.", + NULL, + "input", { { "all games", "Always" }, { "rumble-enabled games", "Only for rumble-enabled games" }, @@ -495,8 +645,13 @@ struct retro_core_option_definition option_defs_us[] = { }, "rumble-enabled games" }, - - { NULL, NULL, NULL, {{0}}, NULL }, + + { NULL, NULL, NULL, NULL, NULL, NULL, {{0}}, NULL }, +}; + +struct retro_core_options_v2 options_us = { + option_cats_us, + option_defs_us }; /* @@ -506,8 +661,8 @@ struct retro_core_option_definition option_defs_us[] = { */ #ifndef HAVE_NO_LANGEXTRA -struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = { - option_defs_us, /* RETRO_LANGUAGE_ENGLISH */ +struct retro_core_options_v2 *options_intl[RETRO_LANGUAGE_LAST] = { + &options_us, /* RETRO_LANGUAGE_ENGLISH */ NULL, /* RETRO_LANGUAGE_JAPANESE */ NULL, /* RETRO_LANGUAGE_FRENCH */ NULL, /* RETRO_LANGUAGE_SPANISH */ @@ -531,7 +686,6 @@ struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = { NULL, /* RETRO_LANGUAGE_HEBREW */ NULL, /* RETRO_LANGUAGE_ASTURIAN */ NULL, /* RETRO_LANGUAGE_FINNISH */ - }; #endif @@ -549,110 +703,220 @@ struct retro_core_option_definition *option_defs_intl[RETRO_LANGUAGE_LAST] = { * be as painless as possible for core devs) */ -static INLINE void libretro_set_core_options(retro_environment_t environ_cb) +static INLINE void libretro_set_core_options(retro_environment_t environ_cb, + bool *categories_supported) { - unsigned version = 0; - - if (!environ_cb) return; - - if (environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version) && (version >= 1)) { + unsigned version = 0; +#ifndef HAVE_NO_LANGEXTRA + unsigned language = 0; +#endif + + if (!environ_cb || !categories_supported) return; + + *categories_supported = false; + + if (!environ_cb(RETRO_ENVIRONMENT_GET_CORE_OPTIONS_VERSION, &version)) version = 0; + + if (version >= 2) { #ifndef HAVE_NO_LANGEXTRA - struct retro_core_options_intl core_options_intl; - unsigned language = 0; - - core_options_intl.us = option_defs_us; + struct retro_core_options_v2_intl core_options_intl; + + core_options_intl.us = &options_us; core_options_intl.local = NULL; - + if (environ_cb(RETRO_ENVIRONMENT_GET_LANGUAGE, &language) && (language < RETRO_LANGUAGE_LAST) && (language != RETRO_LANGUAGE_ENGLISH)) - core_options_intl.local = option_defs_intl[language]; - - environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_intl); + core_options_intl.local = options_intl[language]; + + *categories_supported = environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2_INTL, + &core_options_intl); #else - environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS, &option_defs_us); + *categories_supported = environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_V2, + &options_us); #endif } else { - size_t i; + size_t i, j; + size_t option_index = 0; size_t num_options = 0; + struct retro_core_option_definition + *option_v1_defs_us = NULL; +#ifndef HAVE_NO_LANGEXTRA + size_t num_options_intl = 0; + struct retro_core_option_v2_definition + *option_defs_intl = NULL; + struct retro_core_option_definition + *option_v1_defs_intl = NULL; + struct retro_core_options_intl + core_options_v1_intl; +#endif struct retro_variable *variables = NULL; char **values_buf = NULL; - - /* Determine number of options */ + + /* Determine total number of options */ while (true) { - if (!option_defs_us[num_options].key) break; - num_options++; + if (option_defs_us[num_options].key) num_options++; + else break; } - - /* Allocate arrays */ - variables = (struct retro_variable *)calloc(num_options + 1, sizeof(struct retro_variable)); - values_buf = (char **)calloc(num_options, sizeof(char *)); - - if (!variables || !values_buf) goto error; - - /* Copy parameters from option_defs_us array */ - for (i = 0; i < num_options; i++) { - const char *key = option_defs_us[i].key; - const char *desc = option_defs_us[i].desc; - const char *default_value = option_defs_us[i].default_value; - struct retro_core_option_value *values = option_defs_us[i].values; - size_t buf_len = 3; - size_t default_index = 0; - - values_buf[i] = NULL; - - if (desc) { - size_t num_values = 0; - - /* Determine number of values */ + + if (version >= 1) { + /* Allocate US array */ + option_v1_defs_us = (struct retro_core_option_definition *) calloc(num_options + 1, sizeof(struct retro_core_option_definition)); + + /* Copy parameters from option_defs_us array */ + for (i = 0; i < num_options; i++) { + struct retro_core_option_v2_definition *option_def_us = &option_defs_us[i]; + struct retro_core_option_value *option_values = option_def_us->values; + struct retro_core_option_definition *option_v1_def_us = &option_v1_defs_us[i]; + struct retro_core_option_value *option_v1_values = option_v1_def_us->values; + + option_v1_def_us->key = option_def_us->key; + option_v1_def_us->desc = option_def_us->desc; + option_v1_def_us->info = option_def_us->info; + option_v1_def_us->default_value = option_def_us->default_value; + + /* Values must be copied individually... */ + while (option_values->value) { + option_v1_values->value = option_values->value; + option_v1_values->label = option_values->label; + + option_values++; + option_v1_values++; + } + } + +#ifndef HAVE_NO_LANGEXTRA + if (environ_cb(RETRO_ENVIRONMENT_GET_LANGUAGE, &language) && + (language < RETRO_LANGUAGE_LAST) && (language != RETRO_LANGUAGE_ENGLISH) && + options_intl[language]) + option_defs_intl = options_intl[language]->definitions; + + if (option_defs_intl) { + /* Determine number of intl options */ while (true) { - if (!values[num_values].value) break; - - /* Check if this is the default value */ - if (default_value) { - if (strcmp(values[num_values].value, default_value) == 0) default_index = num_values; + if (option_defs_intl[num_options_intl].key) num_options_intl++; + else break; + } + + /* Allocate intl array */ + option_v1_defs_intl = (struct retro_core_option_definition *) + calloc(num_options_intl + 1, sizeof(struct retro_core_option_definition)); + + /* Copy parameters from option_defs_intl array */ + for (i = 0; i < num_options_intl; i++) { + struct retro_core_option_v2_definition *option_def_intl = &option_defs_intl[i]; + struct retro_core_option_value *option_values = option_def_intl->values; + struct retro_core_option_definition *option_v1_def_intl = &option_v1_defs_intl[i]; + struct retro_core_option_value *option_v1_values = option_v1_def_intl->values; + + option_v1_def_intl->key = option_def_intl->key; + option_v1_def_intl->desc = option_def_intl->desc; + option_v1_def_intl->info = option_def_intl->info; + option_v1_def_intl->default_value = option_def_intl->default_value; + + /* Values must be copied individually... */ + while (option_values->value) { + option_v1_values->value = option_values->value; + option_v1_values->label = option_values->label; + + option_values++; + option_v1_values++; } - - buf_len += strlen(values[num_values].value); - num_values++; } - - /* Build values string */ - if (num_values > 0) { - size_t j; - - buf_len += num_values - 1; - buf_len += strlen(desc); - - values_buf[i] = (char *)calloc(buf_len, sizeof(char)); - if (!values_buf[i]) goto error; - - strcpy(values_buf[i], desc); - strcat(values_buf[i], "; "); - - /* Default value goes first */ - strcat(values_buf[i], values[default_index].value); - - /* Add remaining values */ - for (j = 0; j < num_values; j++) { - if (j != default_index) { - strcat(values_buf[i], "|"); - strcat(values_buf[i], values[j].value); + } + + core_options_v1_intl.us = option_v1_defs_us; + core_options_v1_intl.local = option_v1_defs_intl; + + environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS_INTL, &core_options_v1_intl); +#else + environ_cb(RETRO_ENVIRONMENT_SET_CORE_OPTIONS, option_v1_defs_us); +#endif + } + else { + /* Allocate arrays */ + variables = (struct retro_variable *)calloc(num_options + 1, + sizeof(struct retro_variable)); + values_buf = (char **)calloc(num_options, sizeof(char *)); + + if (!variables || !values_buf) goto error; + + /* Copy parameters from option_defs_us array */ + for (i = 0; i < num_options; i++) { + const char *key = option_defs_us[i].key; + const char *desc = option_defs_us[i].desc; + const char *default_value = option_defs_us[i].default_value; + struct retro_core_option_value *values = option_defs_us[i].values; + size_t buf_len = 3; + size_t default_index = 0; + + values_buf[i] = NULL; + + if (desc) { + size_t num_values = 0; + + /* Determine number of values */ + while (true) { + if (values[num_values].value) { + /* Check if this is the default value */ + if (default_value) { + if (strcmp(values[num_values].value, default_value) == 0) default_index = num_values; + + buf_len += strlen(values[num_values].value); + num_values++; + } + } + else break; + } + + /* Build values string */ + if (num_values > 0) { + buf_len += num_values - 1; + buf_len += strlen(desc); + + values_buf[i] = (char *)calloc(buf_len, sizeof(char)); + if (!values_buf[i]) goto error; + + strcpy(values_buf[i], desc); + strcat(values_buf[i], "; "); + + /* Default value goes first */ + strcat(values_buf[i], values[default_index].value); + + /* Add remaining values */ + for (j = 0; j < num_values; j++) { + if (j != default_index) { + strcat(values_buf[i], "|"); + strcat(values_buf[i], values[j].value); + } } } } + + variables[option_index].key = key; + variables[option_index].value = values_buf[i]; + option_index++; } - - variables[i].key = key; - variables[i].value = values_buf[i]; + + /* Set variables */ + environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, variables); } - - /* Set variables */ - environ_cb(RETRO_ENVIRONMENT_SET_VARIABLES, variables); - - error: - + +error: /* Clean up */ + + if (option_v1_defs_us) { + free(option_v1_defs_us); + option_v1_defs_us = NULL; + } + +#ifndef HAVE_NO_LANGEXTRA + if (option_v1_defs_intl) { + free(option_v1_defs_intl); + option_v1_defs_intl = NULL; + } +#endif + if (values_buf) { for (i = 0; i < num_options; i++) { if (values_buf[i]) { @@ -660,11 +924,11 @@ static INLINE void libretro_set_core_options(retro_environment_t environ_cb) values_buf[i] = NULL; } } - + free(values_buf); values_buf = NULL; } - + if (variables) { free(variables); variables = NULL; From 197a475fab5e083c21b70995ffb3ef1ddd9b6721 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 10 Jun 2022 14:37:28 +0300 Subject: [PATCH 003/116] SDL Joypad controls for MBC7 games --- SDL/main.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/SDL/main.c b/SDL/main.c index d73d66762..aa95a0780 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -272,9 +272,14 @@ static void handle_events(GB_gameboy_t *gb) case SDL_JOYAXISMOTION: { static bool axis_active[2] = {false, false}; + static double accel_values[2] = {0, 0}; joypad_axis_t axis = get_joypad_axis(event.jaxis.axis); if (axis == JOYPAD_AXISES_X) { - if (event.jaxis.value > JOYSTICK_HIGH) { + if (GB_has_accelerometer(gb)) { + accel_values[0] = event.jaxis.value / (double)32768.0; + GB_set_accelerometer_values(gb, -accel_values[0], -accel_values[1]); + } + else if (event.jaxis.value > JOYSTICK_HIGH) { axis_active[0] = true; GB_set_key_state(gb, GB_KEY_RIGHT, true); GB_set_key_state(gb, GB_KEY_LEFT, false); @@ -291,7 +296,11 @@ static void handle_events(GB_gameboy_t *gb) } } else if (axis == JOYPAD_AXISES_Y) { - if (event.jaxis.value > JOYSTICK_HIGH) { + if (GB_has_accelerometer(gb)) { + accel_values[1] = event.jaxis.value / (double)32768.0; + GB_set_accelerometer_values(gb, -accel_values[0], -accel_values[1]); + } + else if (event.jaxis.value > JOYSTICK_HIGH) { axis_active[1] = true; GB_set_key_state(gb, GB_KEY_DOWN, true); GB_set_key_state(gb, GB_KEY_UP, false); From 979d32faed8e6fe78d16864c81a973bbb2711344 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 10 Jun 2022 14:55:13 +0300 Subject: [PATCH 004/116] Group keyboard and joypad controls into a submenu --- SDL/gui.c | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/SDL/gui.c b/SDL/gui.c index dbb7e9ef2..e76177bfb 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -313,9 +313,10 @@ static void item_help(unsigned index) static void enter_emulation_menu(unsigned index); static void enter_graphics_menu(unsigned index); -static void enter_controls_menu(unsigned index); +static void enter_keyboard_menu(unsigned index); static void enter_joypad_menu(unsigned index); static void enter_audio_menu(unsigned index); +static void enter_controls_menu(unsigned index); static void toggle_audio_recording(unsigned index); extern void set_filename(const char *new_filename, typeof(free) *new_free_function); @@ -353,8 +354,7 @@ static const struct menu_item paused_menu[] = { {"Emulation Options", enter_emulation_menu}, {"Graphic Options", enter_graphics_menu}, {"Audio Options", enter_audio_menu}, - {"Keyboard Options", enter_controls_menu}, - {"Joypad Options", enter_joypad_menu}, + {"Control Options", enter_controls_menu}, {audio_recording_menu_item, toggle_audio_recording}, {"Help", item_help}, {"Quit SameBoy", item_exit}, @@ -940,7 +940,7 @@ static void modify_key(unsigned index) static const char *key_name(unsigned index); -static const struct menu_item controls_menu[] = { +static const struct menu_item keyboard_menu[] = { {"Right:", modify_key, key_name,}, {"Left:", modify_key, key_name,}, {"Up:", modify_key, key_name,}, @@ -952,7 +952,7 @@ static const struct menu_item controls_menu[] = { {"Turbo:", modify_key, key_name,}, {"Rewind:", modify_key, key_name,}, {"Slow-Motion:", modify_key, key_name,}, - {"Back", return_to_root_menu}, + {"Back", enter_controls_menu}, {NULL,} }; @@ -964,9 +964,9 @@ static const char *key_name(unsigned index) return SDL_GetScancodeName(configuration.keys[index]); } -static void enter_controls_menu(unsigned index) +static void enter_keyboard_menu(unsigned index) { - current_menu = controls_menu; + current_menu = keyboard_menu; current_selection = 0; scroll = 0; recalculate_menu_height(); @@ -1096,7 +1096,7 @@ static const struct menu_item joypad_menu[] = { {"Joypad:", cycle_joypads, current_joypad_name, cycle_joypads_backwards}, {"Configure layout", detect_joypad_layout}, {"Rumble Mode:", cycle_rumble_mode, current_rumble_mode, cycle_rumble_mode_backwards}, - {"Back", return_to_root_menu}, + {"Back", enter_controls_menu}, {NULL,} }; @@ -1155,6 +1155,21 @@ void connect_joypad(void) } } +static const struct menu_item controls_menu[] = { + {"Keyboard Options", enter_keyboard_menu}, + {"Joypad Options", enter_joypad_menu}, + {"Back", return_to_root_menu}, + {NULL,} +}; + +static void enter_controls_menu(unsigned index) +{ + current_menu = controls_menu; + current_selection = 0; + scroll = 0; + recalculate_menu_height(); +} + static void toggle_audio_recording(unsigned index) { if (!GB_is_inited(&gb)) { @@ -1526,7 +1541,12 @@ void run_gui(bool is_running) } else if (event.key.keysym.scancode == SDL_SCANCODE_ESCAPE) { if (gui_state == SHOWING_MENU && current_menu != root_menu) { - return_to_root_menu(0); + for (const struct menu_item *item = current_menu; item->string; item++) { + if (strcmp(item->string, "Back") == 0) { + item->handler(0); + break; + } + } should_render = true; } else if (is_running) { From 24796acccf698aead888bc942dad155f67bc1f4a Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 10 Jun 2022 23:51:06 +0300 Subject: [PATCH 005/116] MBC7 mouse control in SDL --- SDL/gui.c | 37 ++++++++++++++++++++++++++++++------- SDL/gui.h | 4 ++++ SDL/main.c | 19 +++++++++++++++++++ 3 files changed, 53 insertions(+), 7 deletions(-) diff --git a/SDL/gui.c b/SDL/gui.c index e76177bfb..4b4ee7b29 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -1155,9 +1155,20 @@ void connect_joypad(void) } } +static void toggle_mouse_control(unsigned index) +{ + configuration.allow_mouse_controls = !configuration.allow_mouse_controls; +} + +const char *mouse_control_string(unsigned index) +{ + return configuration.allow_mouse_controls? "Allow mouse control" : "Disallow mouse control"; +} + static const struct menu_item controls_menu[] = { {"Keyboard Options", enter_keyboard_menu}, {"Joypad Options", enter_joypad_menu}, + {"Motion-controlled games:", toggle_mouse_control, mouse_control_string, toggle_mouse_control}, {"Back", return_to_root_menu}, {NULL,} }; @@ -1234,6 +1245,22 @@ static void toggle_audio_recording(unsigned index) } } +void convert_mouse_coordinates(signed *x, signed *y) +{ + signed width = GB_get_screen_width(&gb); + signed height = GB_get_screen_height(&gb); + signed x_offset = (width - 160) / 2; + signed y_offset = (height - 144) / 2; + + *x = (signed)(*x - rect.x / factor) * width / (signed)(rect.w / factor) - x_offset; + *y = (signed)(*y - rect.y / factor) * height / (signed)(rect.h / factor) - y_offset; + + if (strcmp("CRT", configuration.filter) == 0) { + *y = *y * 8 / 7; + *y -= 144 / 16; + } +} + void run_gui(bool is_running) { SDL_ShowCursor(SDL_ENABLE); @@ -1296,13 +1323,9 @@ void run_gui(bool is_running) event.key.keysym.scancode = SDL_SCANCODE_ESCAPE; } else if (gui_state == SHOWING_MENU) { - signed x = (event.button.x - rect.x / factor) * width / (rect.w / factor) - x_offset; - signed y = (event.button.y - rect.y / factor) * height / (rect.h / factor) - y_offset; - - if (strcmp("CRT", configuration.filter) == 0) { - y = y * 8 / 7; - y -= 144 / 16; - } + signed x = event.button.x; + signed y = event.button.y; + convert_mouse_coordinates(&x, &y); y += scroll; if (x < 0 || x >= 160 || y < 24) { diff --git a/SDL/gui.h b/SDL/gui.h index 1fe8a5496..81a13bb23 100644 --- a/SDL/gui.h +++ b/SDL/gui.h @@ -123,6 +123,9 @@ typedef struct { /* v0.14.4 */ bool osd; + + /* v0.15 */ + bool allow_mouse_controls; } configuration_t; extern configuration_t configuration; @@ -149,5 +152,6 @@ void show_osd_text(const char *text); extern const char *osd_text; extern unsigned osd_countdown; extern unsigned osd_text_lines; +void convert_mouse_coordinates(signed *x, signed *y); #endif diff --git a/SDL/main.c b/SDL/main.c index aa95a0780..da8c40e26 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -242,6 +242,25 @@ static void handle_events(GB_gameboy_t *gb) } break; } + case SDL_MOUSEBUTTONDOWN: + case SDL_MOUSEBUTTONUP: { + if (GB_has_accelerometer(gb) && configuration.allow_mouse_controls) { + GB_set_key_state(gb, GB_KEY_A, event.type == SDL_MOUSEBUTTONDOWN); + } + break; + } + + case SDL_MOUSEMOTION: { + if (GB_has_accelerometer(gb) && configuration.allow_mouse_controls) { + signed x = event.motion.x; + signed y = event.motion.y; + convert_mouse_coordinates(&x, &y); + x = SDL_max(SDL_min(x, 160), 0); + y = SDL_max(SDL_min(y, 144), 0); + GB_set_accelerometer_values(gb, (x - 80) / -80.0, (y - 72) / -72.0); + } + break; + } case SDL_JOYBUTTONUP: case SDL_JOYBUTTONDOWN: { From d41c188cfd479e01c45ad940e3de4202c205f1b9 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 11 Jun 2022 14:44:06 +0300 Subject: [PATCH 006/116] More accurate Camera MBC emulation --- Core/debugger.c | 18 ++++++++------ Core/gb.h | 2 +- Core/mbc.c | 62 ++++++++++++++++++++++++----------------------- Core/mbc.h | 5 +--- Core/memory.c | 15 +++++++++--- Core/save_state.c | 8 ++++++ 6 files changed, 64 insertions(+), 46 deletions(-) diff --git a/Core/debugger.c b/Core/debugger.c index 5fa168bc4..516095ae6 100644 --- a/Core/debugger.c +++ b/Core/debugger.c @@ -1546,14 +1546,16 @@ static bool mbc(GB_gameboy_t *gb, char *arguments, char *modifiers, const debugg } else { static const char *const mapper_names[] = { - [GB_MBC1] = "MBC1", - [GB_MBC2] = "MBC2", - [GB_MBC3] = "MBC3", - [GB_MBC5] = "MBC5", - [GB_MBC7] = "MBC7", - [GB_MMM01] = "MMM01", - [GB_HUC1] = "HUC-1", - [GB_HUC3] = "HUC-3", + [GB_MBC1] = "MBC1", + [GB_MBC2] = "MBC2", + [GB_MBC3] = "MBC3", + [GB_MBC5] = "MBC5", + [GB_MBC7] = "MBC7", + [GB_MMM01] = "MMM01", + [GB_HUC1] = "HUC-1", + [GB_HUC3] = "HUC-3", + [GB_CAMERA] = "MAC-GBD", + }; GB_log(gb, "%s\n", mapper_names[cartridge->mbc_type]); } diff --git a/Core/gb.h b/Core/gb.h index 11f0b3b88..11036479f 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -466,7 +466,7 @@ struct GB_gameboy_internal_s { uint8_t rom_bank_low; uint8_t rom_bank_high:1; uint8_t ram_bank:4; - } mbc5; + } mbc5; // Also used for GB_CAMERA struct { uint8_t rom_bank; diff --git a/Core/mbc.c b/Core/mbc.c index fe20b2806..bb5f9172a 100644 --- a/Core/mbc.c +++ b/Core/mbc.c @@ -5,41 +5,41 @@ const GB_cartridge_t GB_cart_defs[256] = { // From http://gbdev.gg8.se/wiki/articles/The_Cartridge_Header#0147_-_Cartridge_Type - /* MBC SUBTYPE RAM BAT. RTC RUMB. */ - { GB_NO_MBC, GB_STANDARD_MBC, false, false, false, false}, // 00h ROM ONLY - { GB_MBC1 , GB_STANDARD_MBC, false, false, false, false}, // 01h MBC1 - { GB_MBC1 , GB_STANDARD_MBC, true , false, false, false}, // 02h MBC1+RAM - { GB_MBC1 , GB_STANDARD_MBC, true , true , false, false}, // 03h MBC1+RAM+BATTERY + /* MBC RAM BAT. RTC RUMB. */ + { GB_NO_MBC, false, false, false, false}, // 00h ROM ONLY + { GB_MBC1 , false, false, false, false}, // 01h MBC1 + { GB_MBC1 , true , false, false, false}, // 02h MBC1+RAM + { GB_MBC1 , true , true , false, false}, // 03h MBC1+RAM+BATTERY [5] = - { GB_MBC2 , GB_STANDARD_MBC, true , false, false, false}, // 05h MBC2 - { GB_MBC2 , GB_STANDARD_MBC, true , true , false, false}, // 06h MBC2+BATTERY + { GB_MBC2 , true , false, false, false}, // 05h MBC2 + { GB_MBC2 , true , true , false, false}, // 06h MBC2+BATTERY [8] = - { GB_NO_MBC, GB_STANDARD_MBC, true , false, false, false}, // 08h ROM+RAM - { GB_NO_MBC, GB_STANDARD_MBC, true , true , false, false}, // 09h ROM+RAM+BATTERY + { GB_NO_MBC, true , false, false, false}, // 08h ROM+RAM + { GB_NO_MBC, true , true , false, false}, // 09h ROM+RAM+BATTERY [0xB] = - { GB_MMM01 , GB_STANDARD_MBC, false, false, false, false}, // 0Bh MMM01 - { GB_MMM01 , GB_STANDARD_MBC, true , false, false, false}, // 0Ch MMM01+RAM - { GB_MMM01 , GB_STANDARD_MBC, true , true , false, false}, // 0Dh MMM01+RAM+BATTERY + { GB_MMM01 , false, false, false, false}, // 0Bh MMM01 + { GB_MMM01 , true , false, false, false}, // 0Ch MMM01+RAM + { GB_MMM01 , true , true , false, false}, // 0Dh MMM01+RAM+BATTERY [0xF] = - { GB_MBC3 , GB_STANDARD_MBC, false, true, true , false}, // 0Fh MBC3+TIMER+BATTERY - { GB_MBC3 , GB_STANDARD_MBC, true , true, true , false}, // 10h MBC3+TIMER+RAM+BATTERY - { GB_MBC3 , GB_STANDARD_MBC, false, false, false, false}, // 11h MBC3 - { GB_MBC3 , GB_STANDARD_MBC, true , false, false, false}, // 12h MBC3+RAM - { GB_MBC3 , GB_STANDARD_MBC, true , true , false, false}, // 13h MBC3+RAM+BATTERY + { GB_MBC3 , false, true, true , false}, // 0Fh MBC3+TIMER+BATTERY + { GB_MBC3 , true , true, true , false}, // 10h MBC3+TIMER+RAM+BATTERY + { GB_MBC3 , false, false, false, false}, // 11h MBC3 + { GB_MBC3 , true , false, false, false}, // 12h MBC3+RAM + { GB_MBC3 , true , true , false, false}, // 13h MBC3+RAM+BATTERY [0x19] = - { GB_MBC5 , GB_STANDARD_MBC, false, false, false, false}, // 19h MBC5 - { GB_MBC5 , GB_STANDARD_MBC, true , false, false, false}, // 1Ah MBC5+RAM - { GB_MBC5 , GB_STANDARD_MBC, true , true , false, false}, // 1Bh MBC5+RAM+BATTERY - { GB_MBC5 , GB_STANDARD_MBC, false, false, false, true }, // 1Ch MBC5+RUMBLE - { GB_MBC5 , GB_STANDARD_MBC, true , false, false, true }, // 1Dh MBC5+RUMBLE+RAM - { GB_MBC5 , GB_STANDARD_MBC, true , true , false, true }, // 1Eh MBC5+RUMBLE+RAM+BATTERY + { GB_MBC5 , false, false, false, false}, // 19h MBC5 + { GB_MBC5 , true , false, false, false}, // 1Ah MBC5+RAM + { GB_MBC5 , true , true , false, false}, // 1Bh MBC5+RAM+BATTERY + { GB_MBC5 , false, false, false, true }, // 1Ch MBC5+RUMBLE + { GB_MBC5 , true , false, false, true }, // 1Dh MBC5+RUMBLE+RAM + { GB_MBC5 , true , true , false, true }, // 1Eh MBC5+RUMBLE+RAM+BATTERY [0x22] = - { GB_MBC7 , GB_STANDARD_MBC, true, true, false, false}, // 22h MBC7+ACCEL+EEPROM + { GB_MBC7 , true, true, false, false}, // 22h MBC7+ACCEL+EEPROM [0xFC] = - { GB_MBC5 , GB_CAMERA , true , true , false, false}, // FCh POCKET CAMERA - { GB_NO_MBC, GB_STANDARD_MBC, false, false, false, false}, // FDh BANDAI TAMA5 (Todo: Not supported) - { GB_HUC3 , GB_STANDARD_MBC, true , true , true, false}, // FEh HuC3 - { GB_HUC1 , GB_STANDARD_MBC, true , true , false, false}, // FFh HuC1+RAM+BATTERY + { GB_CAMERA, true , true , false, false}, // FCh POCKET CAMERA + { GB_NO_MBC, false, false, false, false}, // FDh BANDAI TAMA5 (Todo: Not supported) + { GB_HUC3 , true , true , true, false}, // FEh HuC3 + { GB_HUC1 , true , true , false, false}, // FFh HuC1+RAM+BATTERY }; void GB_update_mbc_mappings(GB_gameboy_t *gb) @@ -96,6 +96,7 @@ void GB_update_mbc_mappings(GB_gameboy_t *gb) } break; case GB_MBC5: + case GB_CAMERA: gb->mbc_rom_bank = gb->mbc5.rom_bank_low | (gb->mbc5.rom_bank_high << 8); gb->mbc_ram_bank = gb->mbc5.ram_bank; break; @@ -185,7 +186,7 @@ void GB_configure_cart(GB_gameboy_t *gb) if (gb->rom[0x147] == 0xBC && gb->rom[0x149] == 0xC1 && gb->rom[0x14A] == 0x65) { - static const GB_cartridge_t tpp1 = {GB_TPP1, GB_STANDARD_MBC, true, true, true, true}; + static const GB_cartridge_t tpp1 = {GB_TPP1, true, true, true, true}; gb->cartridge_type = &tpp1; gb->tpp1.rom_bank = 1; } @@ -255,7 +256,8 @@ void GB_reset_mbc(GB_gameboy_t *gb) gb->mbc_rom_bank = -1; gb->mbc_rom0_bank = -2; } - else if (gb->cartridge_type->mbc_type == GB_MBC5) { + else if (gb->cartridge_type->mbc_type == GB_MBC5 || + gb->cartridge_type->mbc_type == GB_CAMERA) { gb->mbc5.rom_bank_low = 1; gb->mbc_rom_bank = 1; } diff --git a/Core/mbc.h b/Core/mbc.h index c3f619086..8bdb07991 100644 --- a/Core/mbc.h +++ b/Core/mbc.h @@ -15,11 +15,8 @@ typedef struct { GB_HUC1, GB_HUC3, GB_TPP1, - } mbc_type; - enum { - GB_STANDARD_MBC, GB_CAMERA, - } mbc_subtype; + } mbc_type; bool has_ram; bool has_battery; bool has_rtc; diff --git a/Core/memory.c b/Core/memory.c index 1d71490a6..bf7f95702 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -383,7 +383,7 @@ static uint8_t read_mbc_ram(GB_gameboy_t *gb, uint16_t addr) } } else if ((!gb->mbc_ram_enable) && - gb->cartridge_type->mbc_subtype != GB_CAMERA && + gb->cartridge_type->mbc_type != GB_CAMERA && gb->cartridge_type->mbc_type != GB_HUC1 && gb->cartridge_type->mbc_type != GB_HUC3) { return 0xFF; @@ -414,7 +414,7 @@ static uint8_t read_mbc_ram(GB_gameboy_t *gb, uint16_t addr) return 0xFF; } - if (gb->cartridge_type->mbc_subtype == GB_CAMERA && gb->mbc_ram_bank == 0 && addr >= 0xA100 && addr < 0xAF00) { + if (gb->cartridge_type->mbc_type == GB_CAMERA && gb->mbc_ram_bank == 0 && addr >= 0xA100 && addr < 0xAF00) { return GB_camera_read_image(gb, addr - 0xA100); } @@ -827,7 +827,16 @@ static void write_mbc(GB_gameboy_t *gb, uint16_t addr, uint8_t value) value &= 7; } gb->mbc5.ram_bank = value; - gb->camera_registers_mapped = (value & 0x10) && gb->cartridge_type->mbc_subtype == GB_CAMERA; + break; + } + break; + case GB_CAMERA: + switch (addr & 0xF000) { + case 0x0000: case 0x1000: gb->mbc_ram_enable = (value & 0xF) == 0xA; break; + case 0x2000: case 0x3000: gb->mbc5.rom_bank_low = value; break; + case 0x4000: case 0x5000: + gb->mbc5.ram_bank = value; + gb->camera_registers_mapped = (value & 0x10); break; } break; diff --git a/Core/save_state.c b/Core/save_state.c index ebb3646e0..20f0eef5f 100644 --- a/Core/save_state.c +++ b/Core/save_state.c @@ -254,6 +254,8 @@ static size_t bess_size_for_cartridge(const GB_cartridge_t *cart) return sizeof(BESS_block_t) + 3 * sizeof(BESS_MBC_pair_t) + (cart->has_rtc? sizeof(BESS_RTC_t) : 0); case GB_MBC5: return sizeof(BESS_block_t) + 4 * sizeof(BESS_MBC_pair_t); + case GB_CAMERA: + return sizeof(BESS_block_t) + 3 * sizeof(BESS_MBC_pair_t); case GB_MBC7: return sizeof(BESS_block_t) + 3 * sizeof(BESS_MBC_pair_t) + sizeof(BESS_MBC7_t); case GB_MMM01: @@ -459,6 +461,12 @@ static int save_bess_mbc_block(GB_gameboy_t *gb, virtual_file_t *file) pairs[3] = (BESS_MBC_pair_t){LE16(0x4000), gb->mbc5.ram_bank}; mbc_block.size = 4 * sizeof(pairs[0]); break; + case GB_CAMERA: + pairs[0] = (BESS_MBC_pair_t){LE16(0x0000), gb->mbc_ram_enable? 0xA : 0x0}; + pairs[1] = (BESS_MBC_pair_t){LE16(0x2000), gb->mbc5.rom_bank_low}; + pairs[2] = (BESS_MBC_pair_t){LE16(0x4000), gb->mbc5.ram_bank}; + mbc_block.size = 3 * sizeof(pairs[0]); + break; case GB_MBC7: pairs[0] = (BESS_MBC_pair_t){LE16(0x0000), gb->mbc_ram_enable? 0xA : 0x0}; pairs[1] = (BESS_MBC_pair_t){LE16(0x2000), gb->mbc7.rom_bank}; From 4d90504688de2e8e559fa8ebc7da20a33d9ef1cf Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 11 Jun 2022 20:57:02 +0300 Subject: [PATCH 007/116] HuC-1 mode is not a thing, fixes Robopon Japanese prototype --- Core/gb.h | 3 +-- Core/mbc.c | 10 ++-------- Core/memory.c | 1 - Core/save_state.c | 5 ++--- 4 files changed, 5 insertions(+), 14 deletions(-) diff --git a/Core/gb.h b/Core/gb.h index 11036479f..6a22b2f77 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -504,8 +504,7 @@ struct GB_gameboy_internal_s { struct { uint8_t bank_low:6; uint8_t bank_high:3; - bool mode:1; - bool ir_mode:1; + bool ir_mode; } huc1; struct { diff --git a/Core/mbc.c b/Core/mbc.c index bb5f9172a..6f8f21a68 100644 --- a/Core/mbc.c +++ b/Core/mbc.c @@ -138,14 +138,8 @@ void GB_update_mbc_mappings(GB_gameboy_t *gb) } break; case GB_HUC1: - if (gb->huc1.mode == 0) { - gb->mbc_rom_bank = gb->huc1.bank_low | (gb->mbc1.bank_high << 6); - gb->mbc_ram_bank = 0; - } - else { - gb->mbc_rom_bank = gb->huc1.bank_low; - gb->mbc_ram_bank = gb->huc1.bank_high; - } + gb->mbc_rom_bank = gb->huc1.bank_low; + gb->mbc_ram_bank = gb->huc1.bank_high; break; case GB_HUC3: gb->mbc_rom_bank = gb->huc3.rom_bank; diff --git a/Core/memory.c b/Core/memory.c index bf7f95702..f123e46bc 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -888,7 +888,6 @@ static void write_mbc(GB_gameboy_t *gb, uint16_t addr, uint8_t value) case 0x0000: case 0x1000: gb->huc1.ir_mode = (value & 0xF) == 0xE; break; case 0x2000: case 0x3000: gb->huc1.bank_low = value; break; case 0x4000: case 0x5000: gb->huc1.bank_high = value; break; - case 0x6000: case 0x7000: gb->huc1.mode = value; break; } break; case GB_HUC3: diff --git a/Core/save_state.c b/Core/save_state.c index 20f0eef5f..9212ce80f 100644 --- a/Core/save_state.c +++ b/Core/save_state.c @@ -261,7 +261,7 @@ static size_t bess_size_for_cartridge(const GB_cartridge_t *cart) case GB_MMM01: return sizeof(BESS_block_t) + 8 * sizeof(BESS_MBC_pair_t); case GB_HUC1: - return sizeof(BESS_block_t) + 4 * sizeof(BESS_MBC_pair_t); + return sizeof(BESS_block_t) + 3 * sizeof(BESS_MBC_pair_t); case GB_HUC3: return sizeof(BESS_block_t) + 3 * sizeof(BESS_MBC_pair_t) + sizeof(BESS_HUC3_t); case GB_TPP1: @@ -489,8 +489,7 @@ static int save_bess_mbc_block(GB_gameboy_t *gb, virtual_file_t *file) pairs[0] = (BESS_MBC_pair_t){LE16(0x0000), gb->huc1.ir_mode? 0xE : 0x0}; pairs[1] = (BESS_MBC_pair_t){LE16(0x2000), gb->huc1.bank_low}; pairs[2] = (BESS_MBC_pair_t){LE16(0x4000), gb->huc1.bank_high}; - pairs[3] = (BESS_MBC_pair_t){LE16(0x6000), gb->huc1.mode}; - mbc_block.size = 4 * sizeof(pairs[0]); + mbc_block.size = 3 * sizeof(pairs[0]); case GB_HUC3: pairs[0] = (BESS_MBC_pair_t){LE16(0x0000), gb->huc3.mode}; pairs[1] = (BESS_MBC_pair_t){LE16(0x2000), gb->huc3.rom_bank}; From 3fbeb61c091cd0a9026cccb040bd683bb26b1993 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 12 Jun 2022 21:28:58 +0300 Subject: [PATCH 008/116] Fix MMM01 RAM size detection (Closes #446) --- Core/mbc.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/Core/mbc.c b/Core/mbc.c index 6f8f21a68..fddd3a908 100644 --- a/Core/mbc.c +++ b/Core/mbc.c @@ -185,14 +185,16 @@ void GB_configure_cart(GB_gameboy_t *gb) gb->tpp1.rom_bank = 1; } - if (gb->rom[0x147] == 0 && gb->rom_size > 0x8000) { - GB_log(gb, "ROM header reports no MBC, but file size is over 32Kb. Assuming cartridge uses MBC3.\n"); - gb->cartridge_type = &GB_cart_defs[0x11]; - } - else if (gb->rom[0x147] != 0 && memcmp(gb->cartridge_type, &GB_cart_defs[0], sizeof(GB_cart_defs[0])) == 0) { - GB_log(gb, "Cartridge type %02x is not yet supported.\n", gb->rom[0x147]); + if (gb->cartridge_type->mbc_type != GB_MMM01) { + if (gb->rom[0x147] == 0 && gb->rom_size > 0x8000) { + GB_log(gb, "ROM header reports no MBC, but file size is over 32Kb. Assuming cartridge uses MBC3.\n"); + gb->cartridge_type = &GB_cart_defs[0x11]; + } + else if (gb->rom[0x147] != 0 && memcmp(gb->cartridge_type, &GB_cart_defs[0], sizeof(GB_cart_defs[0])) == 0) { + GB_log(gb, "Cartridge type %02x is not yet supported.\n", gb->rom[0x147]); + } } - + if (gb->mbc_ram) { free(gb->mbc_ram); gb->mbc_ram = NULL; @@ -213,7 +215,12 @@ void GB_configure_cart(GB_gameboy_t *gb) } else { static const unsigned ram_sizes[256] = {0, 0x800, 0x2000, 0x8000, 0x20000, 0x10000}; - gb->mbc_ram_size = ram_sizes[gb->rom[0x149]]; + if (gb->cartridge_type->mbc_type == GB_MMM01) { + gb->mbc_ram_size = ram_sizes[gb->rom[gb->rom_size - 0x8000 + 0x149]]; + } + else { + gb->mbc_ram_size = ram_sizes[gb->rom[0x149]]; + } } if (gb->mbc_ram_size) { From b932f6699e0e3a61f6a9fdab0354f4c51251b64b Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 12 Jun 2022 21:42:26 +0300 Subject: [PATCH 009/116] Fix libretro build --- libretro/libretro_core_options.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libretro/libretro_core_options.inc b/libretro/libretro_core_options.inc index 8448eca1a..cf6e0b31a 100644 --- a/libretro/libretro_core_options.inc +++ b/libretro/libretro_core_options.inc @@ -66,7 +66,7 @@ struct retro_core_option_v2_category option_cats_us[] = { "Input", "Configure input parameters: rumble support." }, - { NULL, NULL, NULL, NULL }, + { NULL, NULL }, }; struct retro_core_option_v2_definition option_defs_us[] = { From 9b5dc9eca796bf6f10b0da2e34837e84b44646be Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 12 Jun 2022 21:43:04 +0300 Subject: [PATCH 010/116] Refine TILE_SEL glitch, fixes #445 --- Core/sm83_cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/sm83_cpu.c b/Core/sm83_cpu.c index f369e46e9..8e196bf4a 100644 --- a/Core/sm83_cpu.c +++ b/Core/sm83_cpu.c @@ -242,7 +242,7 @@ static void cycle_write(GB_gameboy_t *gb, uint16_t addr, uint8_t value) break; case GB_CONFLICT_CGB_LCDC: - if ((value ^ gb->io_registers[GB_IO_LCDC]) & 0x10) { + if ((~value & gb->io_registers[GB_IO_LCDC]) & 0x10) { // Todo: This is difference is because my timing is off in one of the models if (gb->model > GB_MODEL_CGB_C) { GB_advance_cycles(gb, gb->pending_cycles); From 517f4554862fe9d4b2ce58b96986e43a4ba04d2a Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 17 Jun 2022 15:58:37 +0300 Subject: [PATCH 011/116] Theorized HDMA behavior proven wrong --- Core/sm83_cpu.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Core/sm83_cpu.c b/Core/sm83_cpu.c index 8e196bf4a..6d228672d 100644 --- a/Core/sm83_cpu.c +++ b/Core/sm83_cpu.c @@ -1631,9 +1631,6 @@ void GB_cpu_run(GB_gameboy_t *gb) /* Wake up from HALT mode without calling interrupt code. */ if (gb->halted && !effective_ime && interrupt_queue) { gb->halted = false; - if (gb->hdma_on_hblank && (gb->io_registers[GB_IO_STAT] & 3) == 0) { - gb->hdma_on = true; - } gb->dma_cycles = 4; GB_dma_run(gb); gb->speed_switch_halt_countdown = 0; @@ -1642,9 +1639,6 @@ void GB_cpu_run(GB_gameboy_t *gb) /* Call interrupt */ else if (effective_ime && interrupt_queue) { gb->halted = false; - if (gb->hdma_on_hblank && (gb->io_registers[GB_IO_STAT] & 3) == 0) { - gb->hdma_on = true; - } // TODO: verify the timing! gb->dma_cycles = 4; GB_dma_run(gb); From 22f8ab65094b494588372b023214669e0a8a08ce Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 17 Jun 2022 18:17:29 +0300 Subject: [PATCH 012/116] Last fix was wrong, this is correct --- Core/gb.h | 1 + Core/sm83_cpu.c | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/Core/gb.h b/Core/gb.h index 6a22b2f77..5330461f2 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -436,6 +436,7 @@ struct GB_gameboy_internal_s { bool dma_ppu_vram_conflict; uint16_t dma_ppu_vram_conflict_addr; uint8_t hdma_open_bus; /* Required to emulate HDMA reads from Exxx */ + bool allow_hdma_on_wake; ) /* MBC */ diff --git a/Core/sm83_cpu.c b/Core/sm83_cpu.c index 6d228672d..7fad1ab91 100644 --- a/Core/sm83_cpu.c +++ b/Core/sm83_cpu.c @@ -360,6 +360,7 @@ static void enter_stop_mode(GB_gameboy_t *gb) gb->div_cycles = -4; // Emulate the CPU-side DIV-reset signal being held } gb->stopped = true; + gb->allow_hdma_on_wake = (gb->io_registers[GB_IO_STAT] & 3); gb->oam_ppu_blocked = !gb->oam_read_blocked; gb->vram_ppu_blocked = !gb->vram_read_blocked; gb->cgb_palettes_ppu_blocked = !gb->cgb_palettes_blocked; @@ -368,6 +369,9 @@ static void enter_stop_mode(GB_gameboy_t *gb) static void leave_stop_mode(GB_gameboy_t *gb) { gb->stopped = false; + if (gb->hdma_on_hblank && (gb->io_registers[GB_IO_STAT] & 3) == 0 && gb->allow_hdma_on_wake) { + gb->hdma_on = true; + } // TODO: verify this gb->dma_cycles = 4; GB_dma_run(gb); @@ -437,6 +441,7 @@ static void stop(GB_gameboy_t *gb, uint8_t opcode) GB_dma_run(gb); gb->halted = true; gb->just_halted = true; + gb->allow_hdma_on_wake = (gb->io_registers[GB_IO_STAT] & 3); } else { gb->speed_switch_halt_countdown = 0; @@ -1038,6 +1043,7 @@ static void halt(GB_gameboy_t *gb, uint8_t opcode) } else { gb->halted = true; + gb->allow_hdma_on_wake = (gb->io_registers[GB_IO_STAT] & 3); } gb->just_halted = true; } @@ -1631,6 +1637,9 @@ void GB_cpu_run(GB_gameboy_t *gb) /* Wake up from HALT mode without calling interrupt code. */ if (gb->halted && !effective_ime && interrupt_queue) { gb->halted = false; + if (gb->hdma_on_hblank && (gb->io_registers[GB_IO_STAT] & 3) == 0 && gb->allow_hdma_on_wake) { + gb->hdma_on = true; + } gb->dma_cycles = 4; GB_dma_run(gb); gb->speed_switch_halt_countdown = 0; @@ -1639,6 +1648,9 @@ void GB_cpu_run(GB_gameboy_t *gb) /* Call interrupt */ else if (effective_ime && interrupt_queue) { gb->halted = false; + if (gb->hdma_on_hblank && (gb->io_registers[GB_IO_STAT] & 3) == 0 && gb->allow_hdma_on_wake) { + gb->hdma_on = true; + } // TODO: verify the timing! gb->dma_cycles = 4; GB_dma_run(gb); From ec4c1948f58537a87ce1af5a2b79703ffc60be1d Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 18 Jun 2022 22:36:08 +0300 Subject: [PATCH 013/116] New macOS icon (again) --- Cocoa/AppDelegate.m | 8 ++++++++ Cocoa/AppIcon.icns | Bin 614501 -> 631354 bytes Cocoa/Icon.png | Bin 0 -> 3156 bytes Cocoa/Icon@2x.png | Bin 0 -> 9515 bytes Cocoa/MainMenu.xib | 2 +- 5 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 Cocoa/Icon.png create mode 100644 Cocoa/Icon@2x.png diff --git a/Cocoa/AppDelegate.m b/Cocoa/AppDelegate.m index 002a88f67..227ae39ed 100644 --- a/Cocoa/AppDelegate.m +++ b/Cocoa/AppDelegate.m @@ -506,6 +506,14 @@ - (IBAction)updateAction:(id)sender } } +- (void)orderFrontAboutPanel:(id)sender +{ + // NSAboutPanelOptionApplicationIcon is not available prior to 10.13, but the key is still there and working. + [[NSApplication sharedApplication] orderFrontStandardAboutPanelWithOptions:@{ + @"ApplicationIcon": [NSImage imageNamed:@"Icon"] + }]; +} + - (void)dealloc { if (_downloadDirectory) { diff --git a/Cocoa/AppIcon.icns b/Cocoa/AppIcon.icns index 6a1e6d4dd0f7a5215bbe5da74c12a19a199ce335..df89f11c4ddb61d1964292d70cb5f1f4bbec4592 100644 GIT binary patch literal 631354 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 GQLafwHu1HS!oVJA2Y}uH_%KS7KlV$s{oPOG z0N8eaoQB%uLMZv%d&n|KJbm-a5+5Af3X`&yJS;sHG5ytu{0Cn3lFh%^ykx_FI`Yv- zJU<1PtZiv_VJsO)DN&}ofHfD-t6;O4U!@q2jVPU#L65PbEp^I{FuVD)PHRV(wWCQm z>r~%1Ua*Xmv{tjkf?3wm*Eh>r?76noH8%NB zf&~y`bC?1~_TkgqYsOvtDlvG=(ZJXr^+V@8U&_xoxU#O%;Nz!snWME0H1vvJ&cIcy zbU|6lNQ-n2dr;Nn1-c|_ozz3kRjm)p&VAkFGk%`WvYuy6x<;dJ={l;WyN)HbE`tZ+3<)FM+otFCdPs=k zyE4KIgfDSjlS7vaUHo0%fcIsjdRvn>_Q}2NxUaIN`5-WljdQE&nDaZ&t?PFB+{8Sv zxN@^2%?1w-saXzz@GM{V!9>%mfAs8wl!MxMu6Ia#Y$tL64F8q3Tw<#x#tHUFB6xHG_WTABF_h4ytW6nsMX3!K97c}%b7H%%{ZNySv zK6jENWc3fq@S$=LkfkA?N_^X4R%Gb~I$%}%pn|C!jeQs(KVdt#(uJxN^d66JgIoRa3}C`c%6?d30j`R1N`?%BNUZEs7;Bab|?xpL*o=2w2@ zS2izt(Tg^}`J2DFx%b|C^PqYB@y9nWeBld|kIeht_r8>Q=%I%;?|Rp}Hjh2_SU->` z7*e9bu|4_XGb`5?7;(9~YQ3Vd>C#ZYnGeA-dIc;?6D!nWPw|ifOApDRM_A!@-G{%J zu#fI7rS%9an(Z1f_uG7X2+~_zH0iDUzFc8j-bIxqaQ}#d^YI`5@u~Z_fBUy{&L)TU$)Ehmo7cSNHJkhH zyKnQ-m%g+g7#t34e&k>FvX`Y^7eFSe*C&HM$s+XPSf#jwuWZx}C5*FVd>(ctvJuA; zQ>W%(q0oVQN?)QZx|v-sgX)_B^1`zPJSXs%+%fY=dO37xP}?x)%Nv}TYds)Gyc8Gn zT6{ya$D=E*s~556&#Avrznn507`z!=zI=J}IiK@6n&64HamhKCe~Ll0PAE+?#- zgXJFV```cmeEo;^@WT&hqHW76o__l2)XM?!#1l_!9)0xDeCor0>ZzwT?|%2Y^GyI9 zw$Hd071-`a8+#59E-TX3W~8xKnW0FWC_{G0NK1w${77)>B{JJ>&=?u6F*?dvg@e;(b#LZeWR+y%fFL*BG?prm<~gyvy6Ob6E2Tc5M#UJjU}J znKfDpp);TU3_^BMESjWzR*_Zi!qPxec;ta-ovi5vhUcrI`)N+%^7ozF#1JQ-}i zOpzJqRtxX-4)5W@zgCgI=LQo z80J^zHQyDBE0xC>ex)~)fy0hHK~VMVw_W2>xZR`)nfM7t?1gHp;`T82?ze)0*&d-;hP+<)RiC`DGzbdPb48e`XyW7bkgGN{w)EU9 zHUrbmbbY4SLvPfo$?`{uf#s^dj=Ola#F|*GJZR�c%bfyAC{djd))1-GdR-B&}fw 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�c%bfyAC{djd))1-GdR-B&}fw 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 z zORwc`KIxd;by?lRpqOEDW{C;ljSp^1;ISZavnZBW7s0DKbNhct>p68cwaXNTrycio zpWf97ocS#;b>XOmEItgSMcQ|5ue!i^n9`er4KzLXHOHGFsFc&B3p zckY_a?|ge4fyL;L9Fhcr7=15}4upbu=FXe^nXqO1W^>lw@x>kakm7c5C2Lw@#v^?MpfB8+u zL9dpS{F4!p*>JHjp4fUx76k)d4ldWZWH;qh1mHZh#qr9l(}cIc>gi-dfk$7GgnvNV zNixX&CVH22SQhbeK2E)BBq#XTP^?(7YjlC>jq+QO$|2JE?Jt0UnA2&?dKGS^sadl9 zY_X*oy4QY@Nc{jfZk!w!vK5x;)eAbynUscv|0ybZ&g zPqKvKvPV*Y#nlS%+aHm3YY(bs8pak$`+k@$FlE4MYriflVl!GuYc@R1PI8N5ai+Ju z-13iWC-H5dv}H~PTeqs{A|1KT@}KR(+6}1rgkynf>)_~p@B`E)ci4BX^zMVt%COb7 z@ww4u+i?X3fgZO375$bRL&fA{6j1%Iin{v}IuDfD9h$CRxYUyNI4I|54JnCDxyM}w zS))cpv3YLqb{GSNFgM-O_g|o=z&np-&n-Qx4o@lwJxy#!``j1{RZoD z%F}T--#%@fKVJXFu`9FuYB(<^xzV(a+AruQ`b zH*Mf^+ENh?m^f(C7<5>Bri#5`*Vln+F*=(`Na)B&nBtEfOuYg`zzQJ4=|Y&sh2eRf z`U7ZxZi4Tb&9L{ib~^PtNKC$OV`qABx+>P52FE3({ENL5n~s^U`^5xnHIfpGrwrc- z9PGN+CaA?~=2hze@AwE9v0P~U`XIP(yvm6@(QJr2JC@5knUk<>xX)6MCx^cb?SLz` zRaYA{p_a<&sBU}bcT1A9@G}-h!n2REcCr&^wk`McGu6zQpGh1@Ym=>?R(++p{o3|j zN;`%B!#*}S&*{pqIqZJQwR%O^ey9LcTA;-BbTo&dQCJqN9wJTiy1a-c5S5eYJ{-CHqhK)3L>`gTV~_(2kp&k@LUZxJcm`ZFsP*F zllETO8t)>tS2#8DwULN=^W1RDG@@KOtvcb*b-O9zpO*(>SJKht62h9CG3aOQEn%!M zpHmf)Hg$IBGdV4Vr$S%t1`b=zh@CnlX#H*|lh$R4-m0}{{5$42DCBH~VUOBGi<(X-tb?)W3%LRiot zR>`7!-`%r7ao?vcSEmo<+Y6V7%Z3%lyR_z;;bXtc2B`WHSx^7HA?eC*Ea-=s8oU{% z9pKt03VuSma0b#`Jw{ja751N;jZD_nLc8G42ItJytrV#pgmdMg{&r_s@2E<9236nO z@tpo<4DHY-_Z?T84N3L&qfmF%MH=rf&l^pB*CUp8*AKCtXSbstA~0?j0G<-Py8-h^ zB=_JNpM{Wp{eWoORo(yh?RD9%z?+B!%Q`T3jj93IZsru76m@RrO~2%o6y;>|@-}k5 z|6w3%EJhtnN}XvR*hRC{ze0Iwuhkm(4ERoX^;#k-9J=}XtM0~#jVV|->6cHloSD$b z;tUjB+CWB{C$|_9FD}xh@`rdwStvt>SJrdMIUiX*@ z>8Y2)^W2&yqknJKxLbV$W1^D)k?h7Xk@l9!6waQNF=s(MiYZhn0=R1H}!{zkN9gaGUBrQb?m zBCR}OvZI{H0?n>n8t7<;x}yP71*FWVqUbOOo*jwt?6jW)-&KIm)X??t>mWP5>~xwk zo9(#}E+A@k>?#&e1*v=cGrgqYOQ`zby0h|dsH#oM@I=Et|I2wM!TIsXcxe<1vNL1X zv$uS|C6V#i{Ik?jWhf z{q&FATP?|&(`q&UfE4S>Y}64odeIbxxmWbP@wo4VdQBx+Ev9VaeCse9mJ3`UJDK#a z7+U-N#(}E7L_a8oh1Edr1^(OLRHgWPbQ&x8t!AUdGhb~hM_vww=Evz)mrsFn*Ai78 z7>!#+kGXyq`4<)oXeQ(@let1?z{j`pie?n>NWxb-0$ zngH*VXy70Q$FJqUj4vJYk0kqz%^Z3Uy#v5Wc3#v=Ucmlc<^F{ln?BJY!DR(=(toBG54kj{;CZ*>X%1RG+He$G1*@3EpgF_eJXmNI4#k$A0|#5`TEh6s5XC6M_j z5zXK?pC$UKs(72+tU3ZHk^uLJ72H^EtA8wQ;}wg|jv^FU*yCA8Hl}~za6-H6ML0W6 zrC;8x7d3+l;p$g*r!q9qiETa1X_7irZGpwKToFB$<(Nnd*(MPo`z{%^MwnUfWaN|n z9K!Ziun>a424$JmBRb$ zsN0=5#2$+YimvMk^!-Z&Lq;KXxxk2meF8+)sxce6N1vhzF zZ@koTh6=y56x4{2-ivS;a&k^`uyYrhtm8LtwvC)7^R&pW-z(z8<_|q98vp6H13$@u z<*f=gCF0@_`2#J(FNVxRwW^|9EtJO;eqMDJ^oqW8IaT0OLL7KDrM|rL*!!fhf85Ac z+NV5Mm0EPX-h!7BIi1e+(k5uw?6g+|sk=e2XINi62XkOv>d!7E8*vM;Ytk}VEA{Rm zyi?@@)aJ%od5aNNRHB$M$alMrDR(zkFiRC&h|3(HiRMU(yX+Dy{+!MTw3!=dw zSWmK!Q&&(~$E~4-;;G)V{F^=?gG#@vr#D;u+vmBi)<&pYp(__IM@Pl%WhJqB#E!V- z^F^;^!m^c1(l@}%Y9YS^PRzxn-?$v&3M#%nAOu`leFG;qWotRa7QtfL?m7$*TC>F( z#xJ8Z<#FDBGfIz(^K^rg0q2!Q{Ck#_YD%euCW^-dhMFhTUs1jKo3pPf%WEg;MzIL; zyJGi7x1{v7Xx9gn%(&DS*0NwBb3 zg_PdOek9i8ZfYsB6L zNun49ObcO2Gnt+~GsPRKXUSLz$Ppk%?=9}IIki=TEzuhP+dqV!1!!{M3lkBAq+vF{*B*%T{;Yk&92r@4K@AjJP7$tn0tgSC4#_;Csr@OtQ`ZMomd7b%B1fFO$RF1KZj zN%Ze}@pivf{OUC+0bKa(yRHsj8JE+A8IFXf$F;!ei>Mrf)5R?FND3xHYjEj)qHQ87 zROF^ZN|v$Uq~Inz^q+H@2c0DqIA^t?=u8s)Fa7KMOSkKn?W*^21HV+C+ctiWyK^;c zPAF4lnqx@cT(fNZiGBHHw%%%)CH?L`>Gg^6ERHp+dDo}Coy5f>^;4Rttr}^WK#DtQ zi-d4tW|X|(V0f`Sa%J|LNLw2azb$IQH`;#|FcQ#_IN7*-x}f!Qbar>gu>t27cdsPQH8z$Lvp*`gZyRRss(U zbg;Z7HxVbwuh(=GKmL04%*bfVt|6hgMm0jWA$y#;RMvBad)1x^LPd6b@064pG`f{4 z7-?gh!D{f#nWuJeMa{u+?; z#;G{25wRJ>WHE+u)T0#)&)zrBgz(jzTU5N?bHTH&J)-WOq+5L(4)Dx18TFZfk%O(y z*pEhjR0&7PaT?*FFKqEKtiRVR+T_he5hE6y|x;|qXP_0Shocg~9W zlEy(NEjoRxVmIumOOQ3eI&uX|nQM*~;(OUTr(?I{n^a7@%vrXK+iEcFy*1Ctc19fV zCeBsfKZ@|`mu$)79oskdI72JdEygSSR}Z)x#ZSIJ+q#K2#aVMqTB=%AoU&lU@WwYq z8`ZNgahn&%E3F;9@5X6ZOxahO8iUyy(e&QfKPpFrWr_X1X~Ll@b0vx~_FvOHrkw%e z;6<4FybARBEVCmzN8nJYQn=gVbo$&xTjvRuUo6mv<1*R<`opDGHH& zD%|Wl0z_=k>fnm46Ql>Z+&*pgKwL$XVmyw$yXR#n7aDgiN@|}IjYqAn;{Wl72RinPc;U(4{`6lXEl%3ezxeH5`@&gq9CXI z&YUWc=e=>p=7ygTFRgk!tZ>@@;Wsvhm2=?oUCl5PQtEzexgrYko6-9pB_UjhIm*gx zurq6@1iO@T2`g78R^jC%&@IM<9?nDbOYg6wv2OB#=DvHnD$m3gL8OZ%3T3;9oRZ(!7C{AM!G7l>Sy97U#9_sWmopQxi7Q{)> z5J;M$0W>#metKW`PCjme{F##onO;U_EQ6uu5s`VbWk9u#00Jrf9T&ScUVxd1`C&TT z(skVX(CrrK4r2J{^sH3){;%J&#f|hh5C}MLEkRUIQm$bBJ3_>3eHSQPd{8HBpUe_h zgdSD+30fF;R;?-F+`N_k)6|>Tqp81AdSFl~{Hj$4GLdX$^7_VC!~wp+zBX0%9nTs{ zt)&_^Ag!0GkkY+|^{$nFxIlb(@=pcX^F)4>d^iN`Mxmu@=M{a00Er7mPEz0b)jEP! zJl2nN?eT9}WNLi}VBS)=Cv{QKgSBPP2jl?eZ;Mp`X9h$BI)b0k9-)4OTg(;b8l76& zZ+jqfp#xi7+B`^^H|RUPazve;ayh`JB-^eMonx6tAn&{&{MR?FZEB0ez9#2Bvxm6p z&0HtE%hzBTx7G(G=YI<$3Q85l_spkht$&=sjZ;Ut^0URpxxWPpZ7HRMQ+^8%sfu8r zWTD{?KU<)9CruSgB_BalWU>Nb$tHOOvDP~pE)vr8kI5dbbl9&{u5W=+9C2ApJmNuj zU@!CDcx}hL8t#WzCXvUN7;Jx6z3)|q(*;U21$0Rwj6-<=!Ee^}Vez~XgYKF8SS%W4 z&4UEegOVs^8OG}1X}y%LvY>-%Ci-|X(a^I|mZ}FHJ28S;5jqhUYgyeFHMmEX+1Rdo z|47+rBPCz#8F+40Op16u0Z(Tqv`QKaIy^voLO`nBrWw|$Uxodp-({EC@=SR$pGNx` z?~j4|`!DNG_U&b+9G2FnX>VV4CxKuz*DL!zw+{g1(;d|W$eA_(Dw}%R{0em7DrO-d zj|yJ4e0ZM7FN5<~w_9Fr$Aim|Sfq5DO%vb+yGCa0$n<&54kEqFXmQrF!(b;xH>`_P z3(jvcn(k@AOQ>})&b1kILG{gv^Ju=2W_gM$Gv(rlHA8`iQ-hV| zL{o#e_p^n*oYK_Qi9-jc_SM6{cztRSiIt1$yAbD(h^NaC?ED?E8h1k1CcCMi@UbnR zmc;5SN0miTU*I(P8Rai;i`m1m7Yx&4W5jA#GF8^TvCDlN{xK53)konp6UgB<+6af| zf%Z))UsMTd;%MzrMPxu*?b%|C1w#hJjj}4Qy zHX_&UfohFyKEak+=L61eZ$gfiw*ecg9cgmp=t+}Zp$NWHx#8woX^LYcrk4}+A3Ng% zVei$Q=Q76n$6;74?FIbdiv#8}dMwU?lKXn99a@d6J?CkPJee-^vG8tPy`@#ws2w@JU7i+Csq1uyUND_jbxs__L(t zY`U3NK`@`g`&avwFVyMAz{?{03%d<|BXd?k9+%4J^5Ps%S8J}m;8eW!WTJHp5Vk+| zEiS$C_!)f9ZR8`9zb319{j(e2FCk!B);YFlD+oMmY6W$Zrk-2roLO(ZJBF)G8p=hn zm#J)zt9O-s8|UEE&tyfNeXC8LV8FHb<{H_b!R>BAr0g4IMA}O+Isej1nqf__>3A1e z1>!>@9|Npz4EL-?txmTmr6qb3E=GY5wAzCYxPj|Kz`Y~j`p`SK6gbDTH*vFe@vpeHrp4%^oyeB5xP$N`U_$TBs3?vx zIsjFO#pl>c$~NuXx_IP%w9bOTT}HZ@Tv{Q3aB9zYBv&76@Sz}1f6~;`?Wck0oslDz zMTVZ5$1@}wlL5Cq(Fh4ToS7%j*a5Fdh6L83iu4oZVq`$Pn%|fcw35M(ra#^l6 zWay6^2rVGp{xTB3=l`{ZGWXGvpZ`cwbAH61kY*5Ne7xB@C6Uv(K4%8s@M%nrl7wp* z9Dv742><@%WAC;M)N#pyl|7(ZJu>Z3mQffr?OJX3^`;e}o4aS}%y_ijs#iQi1tbY) zTtaZYolu0qTEEY${QwYrB}(}w-flEsO|Md;g9BSaW<;@Ul!h_rAsteY(6o2x=rdm^ zgATZaibP+xK}On^X}ulsBpkK_RuI@f{=Q|d)dn(F_axjQtgnB5Vj?gR2w)7nZ@wt0 z7A;wO9AwQTsWui*_4xb9hxfcx*gyTBq0A=%My%JFfWIPIg=bUbHVpbyIn|jRgs|`5 z=}=OxTXmNQ2MaZ*xrXZWfQIe6fh4P=ha}iEBlPjBkoJ$o?G~nuY@F<73M`e4Ww5sd z`jUhi!|hmHsF*HTJ3WN^)L-L;*M&WdP$O|`LFn%QX?u@nQs;F(h13Hj6O1k$S- zk~K!cQ*aPkH~@T(u8`|sjFJ(+lb;>=k_{uO?Ff?9_s!^*i_$=LQ-|V=W&{m-b>eVb-O?;IR6YQC#uzlXi)^VQi>vyUFgZOv_~-r~>>Y><8bI z;)asmp9hhu`zb8~82x;9PLBDI9=xeA9RmV(hbhEo)7wAo#IlPkN!0h&MdWVJN~*e1 zdBsU}vPsl#{N#2g0$yap^hmG8ofu~(z&G$BJVE?R*j>ZImWx+4VCyZZHE4*&b<4a7 z#4-GiIp=fKZI5u&r(*IBGkeOQ-1-oUkHLO)BGPFIz#_z;}P%X8)5Use0=RY*(Z&Db`VVy;hhggi#WIS!`dQm!g> zn5r;ZR=}o{voapy=#6P%8L6;{j^V__r=R8eWdzUO+bqGN91eY}Tn~{3=|(q;4=oHg zTkmer+n%HJsan%XU4zWt4!6SadOC8@uQ(*Vjm24pwQ&Y=QfC6eM|wH(cYcqXA8*P= zi=UO6gJVtc!KF^@

yn4oBuT;Su8Ljn*c77U{H}`(t4V%Xh26#5#xV0mFJGUOb4^ zDwnk}*=MdcF{f0N=JInK^;94 z<&`peEoX2#d_ND0@IDWn+IxFeq%LeA$up61v+O$~773+lw!Z`KJn4i;Cw_~vyj>u#ror{Bx_b_qt4$i*Qcpsn zdFJ{oi{Zo%oq8)jBnz1NI>XPLz$B5te-*9dq>v0}-ygE7Y87!l11n2Is$tCL<`EsD zxn=tE0<1MrFk~P@pTM(7;pep1kL20hR|?G4G&(3f&}Cm(%)$h(FKZ4LaYg22Awe)w zDN9L`5%SlZ>dv{TZy`gCpM6k`^+^ykg*znpTgHpw2!QvQ zT)fx&B*xdq93t&lQTRTNY-&wvFzXF(uOCK3Zco!Q#Mi%YO@Yn$kBH*5%?Ohu&N6fv z-}kz%!@|P^Z6<#C4m@JK`EbkVh;ZAbEp2q!ObUBw5iaR*KRGy_A|ph8lOkJdX|;Yj zk<*eRIy88MnV*dQ}Z`*7^G8)^mQA^ zl<88>6o76dW#?t{j#guqoCi7vh*j6Fi(DwPJR!Yq?Q$lSV9Am*+$JlZPb%R@aXapdiQ`$evCH%H z2Dux}{JAM9k$c07577YJ1o8FG&s(WCp@t?COd5T!w%wn3+W7d~ob3({_Frti9iFE? z|2X$=m40quCgstT6tT=VS!Q@wooZCri}f+K{bAmljK96>UrSkpXFohL;nB6Mw@|yg zwjKFKo%SW4HMgJH;)TjLQ4!%DYXLHs0+_-3L+)7dTyO0b`@vkOyOOxs5d*nNH3L~0 zYozctYfkiQg>|vd{K7^qUCKjoE+?H-!yQljDm$4DI2*iu`NG}CL~2smGOJX+c84(4 z$!#emeo9q-Di@RDDO^q(S7gItb^9zM$waand1)17!ovMl!-|cg%lMB)jJT*`1RK7} z5&Uk~yxg-8K`(p=SOhy1j&-;Pc`~Sa zHHtzwzvc^gysRCqsI|k=P3}&RxH4i2Lv3I+l~hUY3g8vl!w*;1!xC%-FBl(X4={c_N{AbrPhr`*Hjku=x?-y9%EBbg=|b}c zNPh}ckna_+ zX;>YsHM0l(=nHoi$mL?fgm za?;LAbIDnOm7MWwbg{{}9S}b$&e2R@syF^xzI&#h=GTUBF_r&)c^=?4k>I(=`M63w zwde=;)%(`&uoMw;tg;wDRxZ$T%gUioI6348tzG2jE{!6)R09_MHZ zBik*o!KLwfg_S$f%L3|wX)(LJU^!mIts0J;@$ZV+@D~NdKFFMr|gym@JU>e`QlmR2>JA1%Pw+6ih zkmDIi-C5@|aiL54RfI(Pgc;mkkkgaioma8?m=xK+U8!XqsRB8r3i}jfONF#q4Roq9 zAU0&#)D2V>8E>-4Ene?&X(xnVy_n1L3)#Mw%8nliYtiRvQ*>TaV8MBgelZo#_K>wg zfe$KUo-5KW{{nbdTIU;PYwDauk0y@iUhmVTd*@WXUD;vd|LR(J_0A|FpKmM{X1KS8 zuj(`LV9`~&duHj0ty)_}TIzLi@M!5A*V{0LDYH}QpK*#UoGf^@p4zlr=wuS3g&Ek! zSc2Eh%Mb<0D-Z*CWi~o{s{UNqWcPcEl3a%4I5$|6L;dkWi*{uEH6Qc&!b-N|ggl~O zrYjb>pGDG#zdU;Q=LkT389C~y;%pe!iTqv;H32Bbd$(PscZ2UGz2CTpTSHyqHD(xL1HKKbv$hp@${qmcAQGg3jy7fjL z$QMR8ZH6t)N8Lvxwi1L@zuFk^aJiD*#QaK4^$(Jp@0Af8axfZX?N_v0OyX+M83hh3 ztR;t(FJbDb_FlH(dO=ua6c8M3ClRk#p$V|*l~XV`PEcrM$!{_XfSBRE9XFgZ3y@Ze zV^}qD3bb>ja@*)0*%|N5wwTFElhCLfqxsL4A_Vv*O}fz&Y`ITyx(NaV7{3hWPiS&H zdb@FBJxJqb`?lGu3G3~iWll!tM zJfa@NA|kStu^``l?bfLb#EX=`F&FJfHYo@b^wL^+=co62YeR}(bTe7K((P=HQ6f|C z=NDd@<#nmv)LaM?UUZfn`~xK3?pD`m)+(GEEKDy^E%@78ll2*12<0DeUijbHEWWb` z-(zr#0sK>3j)e`-AT>mP+N#q%8b_o}nK^@q;+U=W{K;^4vQmdZUYd+BtuFFi8$gzk z7i`Uf7Do{~AXv0hsuqDB6Olhc@`7LH=IxJfpWXB-%@JSJk)Pv=kJZzJ9V#WCivg8u zu|u{>znWA#e0{H}i(^vgMr8BrEg{n@9HW#?zn?q(vzFYb+;DH(deB`o=|!tM)usQ7 zB1}*%nRrnrj?V)gMs0w~@w)(WcDv#aFByTa34BcF9|Z-@I_1t>Mn4I}FKli`(L@S@ zUodqy35+W&ZE=W;^JDAav(>F=xN^aIUf8R_A+2{nLk&*m3$j-4kN6^&JeS|B`8y z;9)akea5+|Ra=*<_}>2J;MA9jL3e=;lr zoc*)7E&|(LSb%>8EF+Fhx*~#5;$Q}+2cM*6qM6{h`zWOvEoQz6;a&EH}C-} z<-{n$x!ewEas=f26$uFgIw@XGXLkO3Y5R+C2dnJEdBTLpp{!w?Tx+btpVx2S5EfAd z%rR8-c~4xrP>f)kii?#P{VpN+Ob}F+^6Du&-V}a7iJLk2@kdr=`8Ndqxovg#y_nlTi>zNPqAPq?|df@CwWv9|`t< zQ2v8BLhJ{N`u@K=|F3iq@buXURMZK(^v_M!KGwreNnY(;$y?Jv8*_efESzk^Pz^Oj z(#H&sAO0d$djC!f3k&CA69c&lL-cnEJm3 z8!I`L4h!oI)__>_D)_2jh;ZZa%>%#r(QH3FKpNKv|AORzenzOw%5=Epe-Hex zKK_51gA_#2=}3)mvzIfyk$PbUQY%j{=5Z96=w9=3ZgBt}us_^_pf!e;9J%*OegQN( z)o?mrVhZ|O()eZ5>v!BYq;Wlr@!>y(YnDGQc&+>9dsZ%EEpV|phuwL;5=k~-YIAV- z&!G2vT2LjZJB3w=*sIsnvyNEsuekLgu1&2F&Zi)@@sNqu*;zQ^5Q?QgwfZI5?@zMZAYvz zdsplh`%L=@l_?D|Pb@lO9c8q({Bm1eV4p6jI*CfE`y|nAe_Z*WYs2eFQr$9T>;}_c zKo?m`eCGUwoEB{wUIac!<5fadMHGc?%#G>%60>71{V*NtrG8adY<_6B3K*ZY@xk{K zuvqa1)^<;gp!VRuy3MaeCx_~X4@GgUNZX6Ek43R+_@?uDio;f)Ag_tKX?FfX!l6yC zog#aUBM@_HH$34dm)HEb>eIf=4J}Lxh|6mF+ND%hkEupIf#(%t)gm=_#rFKs^Jmrd zRu>hRLs1;7yd5s9BHXKZM#=sbU^P*6DD*R^B*<^7mO0ze#tsTLztF!k7j*V0WW26M z7}pgqjaOm9qyfhlk2ZECSYMUw5BBQ07+m{|E$_u%m{*c?PkP3P>mN@CWZQUs2)*IP zQn&FYZ(VLD#^}-h;T!TJ8q*gNLSEt0BzGwC;8H4%N_ZG&v6sEalPkNKwO;b zu!J~tHHmY3NP2ytx6VghO%49ZlU98wO-kcWt2ET*=oX@Wv4nlK&?`Os7n#ecyk-by z{FNRk<{>lm##~N}tL~(rlY2IfH3*Ixta8wdCRC~_yY=AYTXuChqW=n~p8AEhl(8^y zFK=#@9sVNiRj%K$H|!A4M>DV5qe$#IrD%Nk_+|l@ii46UUgQPjQY}5Z;+M&djiO{C zw-I)Y>c-HXqNwh~O0)q!+pVb%rq`$B_c2FN4^Gb44mVXjjmbyYU5HKtS2n0#iJT>9{t1`VYHBwl0oNK+bFu6gY z-?tduT^NI+cM`!sK+{4pNl}oS9S=+S**Cz6$^+r6N!T}g-|EV$^b6F~Ou~VV-{G|M zc^fTaM`z(C+^TV~SyG4$vOmGT9Gae=|4<5c z>vJynYWF~|2PO{IkOYYBJFNG6Qx>Lj-^Yb9z3zv9JS_g~5~LQTb?dCzD?)6n*MGEl z-C6<7eMSEVZTLdRUz<^@8|VK3fk1x0eZ@t-Y{Ylfz|@gg1|R$`@F`ecb3->J`fJXh zow5;y|Q#&b>4yHemixGvnZ zc(-%-rUBmw(9?CG-^~F&HYQtI`d6z@@jl|CUU}(vf70*!!29oe;3bzXUwZ$#$iM%E z^B3Olo|BXJt4qnV?XNdmHfs7h*raL`PFrIOUl+>WoQvqq{q*LXP2Y3EeB1KQgQLuW z&@8u}ONR}8b0J1PdfHt!7~z4mUOh$s`l+<7rOEp1A4w)K=}>?p@=nm5nM3uAZai)GCByn+(DS8K1l@8S3(nfT^hjjuLPGCgP1Kl3#66<-idJGE&wIu_gO# zUy)24+&t)Jf}4Y;*Q*E0OXO-z)(a0${@W)Wf8t+1{={Sd^0CJr|B-jT^Bq6(L;vFc z`al2FmweG%r05}O#|~~1j?r3W$jNkwOC8;XboJ(l>*`{69XIpub~^4EayvaJ+fTOv zem4j9*jTKzw2##*jrO?*pYxn^U-8v%e(5iLpZEC<_g=pDH`G)8%TLaqd_ehjF;7YL z5`1k6^#tGhR9>RRe*+ee3okONd!h`!`^Ynf$Knnxbt8-_bnInk=)KN9&^cPz(Ael^ zSusKlmeGwBIrW6k#%hg~won>w+BAlh?8m|@CV0jw)oLTzrW$J!qK^>y;2Cw$S~{`D zE`3UH<3BWWXt@XvT*heVp^2<>7+h<#l!*s6nq)C?f?`s9r$^h~*cLR~tA1GWr#lHE z0ZcWEH$AyEdjK_(sj{=;No)gvLsQ*tXq3Z1C1yqxTyMlIQqu8}LC^k{@kett9DXYg z`Sc~-vE-&<>i8x_n28tk$S-Z(7!(~|ZV*OWMx38|kKsq_#^47Zee}^EeB0aJ`al1j zzxBQU^n3o=cfAv+J|w+qZ)xdMQyjM2$NH0VMk_I$!M^Lr+52v% zbL;QsfNsZN?Weug+ctgCzUt3>{R`j!B`^KRd!O;lkGy#P!iU#O_|H*P<04+$B2Qzr z6V?0irNsq-y8!B{v_o~j+M%gF;U)lmnW{SSu0@p&E!H}+Sl3By_M}#a;m$&{mRYCH zC>8+rk)wTBrd`|LaM5dhIND5#X78r#Dl@59Z^@^{pXBJQ4Qt9LM-xBx4|N?|aHq86 z*wUrD#J0uU${*s<>pU;{5_QvG^}?rK@tqcr)ggU5envwkI&L4Av-I|yIk2Ul?yojZ zbFY%u5?=ip?ehEdoCLY(!!6$!*j~l88KVe#?4!rUx=S@Yw$-Q2zY4^$m{%VWkZ?WS zH!n9J^>$bbauY$R3%zP%0La=ZxqbmebR?d<^4JqkT={2@Jo>I5sLvUE-2 zXy<RMdGM8&FJJzMy5N7H{qR!(?Of=onRc7KDrS9gVB&_yzG6Pq*=Ag&Hg>>-!g>c=;^UN!ELi7?z+T1u%ae;RxI}20 zu?9#rtOt16Z{6r1cc^EXNvAanSoq^l6U1SEI59M58=a0zep`0(CV!%DTj=ZcmhmDq zeL^qDE@|l2?LaOPvFUnZhR^;!G2th!NUU!zIM#6b+R*vOujIlKvF%(WmSZ*&N08&g zN{5zy+KwA7@?W>50#Hm#-bJj_oC~3xRmTqenwtyO+CHw0uKi=2v@WWVT&+6fJ#*5r zO}$l)HgmjsJBT#bbb0a{h&ji$Uyy*NZeqGS-xpJkB$fmB0!q?3KHv~-w zC7AWOg10>O_+$U@9q)Mf`~Ue5{@@RM`Img*Ps3i0Y98%}zSgu;>}-11sN>Hy#O_#j z_PN{XpjXfB^q_3t%>(&v4B|HD=^v}19UQ;%Wgl?i3%~Tsf9rz}Jows6mo9&7y?kGv z9`C1fglh+8i&R~khBl+3>jGaF`Sa(`SDPCHbWEqAi$4S~qUWw?cEe4?*u*H=h}?r- z8w_|&U<1pAh|M~iwl)^*D?GpJid^Vcj{_J>8&3M!FW_z4Q$F^=m~F?f_1}DKtR?o2 z(PGy;$4Gmn$CuEy{!ZNF&y;C5^js7eBXWhmlzynIR&0qp#)Dok($+<@#S2Q~ZmoG< zb)x5-**EjWsnbd`aQO407wp`et>bWbGZEbx(=mQ>d1wzEazl>DRc_Ye;~eLi<9J3L ze)2o#v8BwP{;YDxa8BDj#7T@3=a^rIv~_G~=Vk#6;`aD17jXu;d0J=H)r|qN+z?RL zO+kHNP_<-`FQD8gKyxXgUop7y_~VcN)>e=$R&{NKzKc|a5Px!j{pXUkR7yZ)LO#pJlu*QLQHV*M?!L#A7 z8w~Sy>;njO$%e#u+KXUWAUd%DHCU-vnzeFfPe^)91BVM=a3ks3^3&F7{bTZnw9~!B zc$(vRyykM1At&%s!&|XJ-{wwoi{2`CHC}8XvzE}~XYi1rO*tkbMxPif#$u~Gb8QTy zR?PH+Pd`|+U3fx0)Q_*pSM1WCb2T>eY7 z#vM$`yuO_-&KYzYy|~*3?*<2Mo8$D?n)a#V6(9DSFTL@zKIh}^yZ`<_c;VuO-^dVQ zThBK2NR^lMdD^Fa;ewy=&)3D?FYWt6KW+-Rkf6^3rY?)sJhfq*H6CZtGj-15VLiFav&p7ELbHY3swx z+hGo@U-N*x57ccV*0*%}tCp-E6B@LPsSuSId^LvV^Gu9%R^DvGa*)9}h1)oy_naM0 zERBq3NY2N`r!cFI4-08D!*e+6jgj-hjSlv*C*-C_aTkhj2K-imZUX960$v?>{PDbf z@I>i@F+WRyao-#~@ssa*=exfBfB)b9mv8yfFZ%qS1P<02N0G%_YuXe$>-JU8@%ySm zcMvnVzK4$p z%N6Om@Yhp4H0p~NF8E2mF8UYr^1gZSS6|aUoolbJ-utv6U?xReHi;r&KQ(;oSU-JS z6+ObGf$iWA5Red#qN8)at=KAdEjRn|qxD-0>S{+W3^PYCnnwhZJ)<7*)c`+khn{#> zdtfSz2z5*tvM0?xP;R9pQFYOVLL6S4XoqYYt7;9aYAkq1xKmb6&u#+H_(2Ze#w-{g zhg$n^%1|rEml0GcMs}%brmQ(vy22=-s4OHklU6!Ird+^$iac6q^dmd#w9xVeQ$j5p z4eJ)a{@KJ~8|_(+S(@Bnx}Nlr>cwZtl)-pu+vtQ+ttIHSomT_Q_I{CvgLR*vor4M$QWwo);@lWgLc{ ziN&GO{DqcfE|R2{4Kg6!T`*&q_6c31dZPrN3%%*5YxpUVS^Ko(N9eh6NZ)m7w=Y+- zH}Ztz^`9_Wt!sOaFQY61$#DlcF@)7IM;?F$W(0CNpkWGm*{DY17|h@X^BB%5<4}gW z8VmklL}w7HaWxveD#@LDb#5KG)iP_IhTIXqqLbJsmW4AO8GH51#yTF!*DAB6#fRXf zpW4<|2dAWQXJC_4eh8rFcM`M0#DLW0cqj)cIl+^0<2^u#C zyfToo-Waep^6CH|CgfFt$LeN4Hw3ytNbDYJ!PSN87Z&OL(;mHwH%7sD5{CXb~8PqHDm^UvXdn)2W^8K9K(PsTk@egtFBd-a|6oV z;4Mbb-THtwv90)#fmb?G3rx!ns6n^vQG9R~%$S0#5+0zG^l1-T5u+I6gV%CHuVvAv zM0N0+81UdpxK8P(hE(lUeXuky=pp242rgua9mt&av9%9zR?M{>VQ6xUQ*|~n^1E1> zuTi5<(VPp$&@J93;GrMc0HrRv=dj&baffcprXL?Bgx6L2Yn}YzmWthXQ**MKOPtxy zY{O0)qbSjBz0n7vI@YZS+7^3=p8olqK-~<~&lBHM7y5f1eas&u1P;;Kvh+b?_MW;? z_S_x`hHpLHXUh*Foh%C;Z+LA~y82aG$UlX1A6?qs-crw=umu4_DR zi;p)jNNXsil!DJC=>U7?@;^GZ z>+|#%;Td%MrKUYhVYPT``Ai}L)DKxSi>)OI9r*z z^uv#9YabCx_CMEBLUquQNgUMq@F1@S_(tF{(b&tl30P#GeAgq7e(%5h;UD^wf9wr^ z@Lv_o)oubh3kn^Rl+fI}$~iW#B63?;$?a`1-bUAHbld#6%Lizi!}PUIDyeHdF8<&1 zy?^K9p8LG#ebvdyg%|35eXVfVUL<^=PZxi^$M2W<{b4?@_BChg6Mg7f9kn2}f#AWi zT&B$2+(eV-Eo?J$18RtMBf?jr^CneT*-0d8gL6YNuKUuIlv{1H!N8gBriDxujKzsf z+j@~lwvJYF!@TJefGH&?Jo<}2Vh1x|0q)uf2+*RwVlKD?uI&h>Whct%mh#)mt1Bg` z*yDe@<@nnMXt5h)VTAAPf6RlcVGNblS%FXKB^@iHeTn^yW9kfC;>jeFe4GzPoN@nf z?zAj8Rl*BQ*1;I=A>(zC3w+!WNG4Qaj+_hJTx4x$jd#gY$g5G&A_LB{F01DV4}G#U zl2f)lIINN$1)Yve3_tM~zbR_dB|iR1uj%1iP<|nR$eIgu`BnjM4dm?s-Xicu!5&v% z${e2+xbo;b-tmra{GRXruCM(o-~O%qF{a!Iq{g%MPIcNvR@wGLKd8r8A5d>^N4dVe zE_e)Yvk#hVx7&x+{tXOFFAr&_z1FnHMZenTzW&esh4+8i2Y&E3Uc7kWH(>_>*;AW~ zKA+}4UoZ35(cjr${aGh6ZLN-~vqVJcC9%rl;mV^w3QnL?^{Rt+wt%F44IiIurWFx^ zqOO1l%rwqLr{~ikyN?b<0xdgL2i@?88=lOSsv+EyS@0I7`3==}BqBy(5)V#xocNMH za#4|lctvZX)XLb3flj<~9w&xa=oXmF_t_GT&z?xqr$xS-0`RC9NAA?g{@B07kfC5a z$9%GJnMH2()8j5g#Xjc&;vRc2u@$?H$Dql@^e@JuPv7{9_e;QsxG>_oV}fGzAlZV? z_Awl5OI|)_tZd_yRNTU*;ZAufUy9mn42*($@|QUxW(&(+Y^WoJ4tQxtP)Uvg{9>pZ z+60;T#v*h@t$Ip%tVPUeP7q-ye~jbAY`rooTG#w|7^e7rk&I2oKW`6kL%^#7errH~ zys>1-A2$P)tt(f4>SurEXFm6JuYT2kQ7+};pBmTK1Fz|)tnJWF)$#2V<2Dh-I=oHx zF`F558(pZ8%qqLBUfB2z49c3jw5hiTHvlIOJ@kSL-}KGj`iA=-c<_r#;$AN-zsHZ| zOP4O_iJyzVKIIQk?;e`@%xXYe^^*WiD)T6 zLP7)=J$^=;v?*iN4PZcm)QZ8C-v&PfQcg00U z3m1}A;8C^%79Z_g2~=aW=~kyPQFmEn20y%I-4sbt4?G%_Z7hx<>vynA@-S6fJ&?S{ zQyblK*w&uY?(%_St!|}UAFzuN3D29@AfuE4sW9yjMr^1 zcgmn#=YVW;ra9k9OnZImKl!?E{0lF6*#~{lU$}Jf;;)x-Efg)TQo3;d;ysry^ZtGv z{WU%>hGMd4YK5?<>4;9dKt|4x(OPJEv%M+@&kIvJ+0de6F!k(P0aUR~wMs%9+m!xr zf|W1&N^S>*BUSm)U7)((O*1ytYkKTC1%K2+)>iSpi*REMRdND-3lre9^7tcyMA7I($ zqAr_?8)7xU)1j_$*n{{AA)gPZKTli-zaen&mH=Nfe9O)-0#4BU5{9QZTXHtZr)X+@3li z0>dIzEmc4$O;mGfS3eT4DAtE+D{KW@85@AVlo*G!wi7@^%K-7Neu@P_W!iS%^0djJ za@B3wskSuit^+XTs4O^^k3HOVgrUR(WGUvl%{jh@vifzLj}1%5M#fh4=#)&!#eVFr z_C}Z%6=-O5j^Pj6gW1a6haZeF42U$HfRiI^P%PJD8A2(@cQKjQ?N5QzUc@@=Re!bD z?W6upU#8C%)VwMq!-sZ2)#}sgkDMAxinB#WQrdMSRTBFQF#a~M+~HK3cBVBU6+wJR zZnUIi*0u;ks(U5ic*3pvz=k>@9?aF@w-p4WxvM_jRBr2EYAn!JZRNOJxW(b9e|&3+ zHia?Zb4&cXU_L0wX9e&I$9Zdj{qK=S-ubuwyMOeLKI>0^#g|>})c~oXiF%i{9oj*? zovR1TThvKDZjrg8W;`NCS+|aOy9eVs2V%`t+SKcz3xCm0zWB?(@&&JW#fN^|#fz6e z)W6hMV!Z(P@t#YU_%1&e{tF`GL-LUK&FFhkFuOgci)5IpO)K0(q9kz&jnwWHLA17o zKj?OmyhzcEeq^ktFd|&K_=z1HOAPA5qj9txZX&j{3QiwHjh{Buf{{rLIc@56Q3_qu z&1u6M`9!R7MkbAA5joQ`X-8-2AN3u%S++S;j-AyOT6}CgQ7kxsgku*S@!%&8L|dTh zjF;Acf*MdQH~Yrk#3g(-?H)n;>TKi!b4)(GQ5TqlYl=FJ3u(b#bw=AVr~D27n15&a zEq_aK=(I1vQVosbOCjr$mZ_1SG7ir2QqyUbBfi3D+nA=9T6NJCThXF5nG$VA@??L+ zDUw6!2E@cjQ$h=F^;a9xZ5iv?IY-`%fK(Sc{_?gapAn$Uxcs2Q2LyE^@aUt?Sw0(3 z&;3`fJpR)^{^LLX>A&xHzwRHDYTgRi*1+P3ouPNwHf3|p+~1IISvPsOWd@HJT88Qf z_ZE?E=RjQNAgp;xn>t4>{PfR%$9I3vM?Cb9p*U&(-ZR@(M#@)#w#WrJ{Z`ClT@MWP+jP5N1$%DS%!mhZ4<80jE5#qo+SI&|ArhU~Fm1Z4ew~JmO`CLrONkBl zPWMB<-nyU_bf;wau&6n&teKr#{eC;${cQpNvf!ijwg5jhEE|Q*UnMLXR~~-b+y2ZO|L7aO;{W;A|B4R}Ads5?Ol%L- zDbTN4;{R2Jo+9R&ho{KIHDNuP*A#nd1#Z_MT;~9+Iij6D7ya~g190Dc_n-f(fBkQK z{Js*BUe%C`oO;f z-ozQc!moS=OLfzzLZ_WFX@w`qsef9gD4nD5Mtufd!#km+j!t}zzGlJVyXn5r<5r60 z==B8d`2#(xIv4SlqEcQ|)rpwN)8Y)QDoTKxb=IE8OQA*Qw@liUbY-t__@)3K5Pbac zC+>NaR|E1&K=Js{^P`VG_TT@5zyE!&fAiOT<-aeW+yorE5y0*m>e_~PP!z)f<<@kx zPHv5t$(|FU4TPCt7pomn?-9k8w`&TEuqtS7DEDUzS`C{y1F-b zD$T_nz6Couj~^>qC79o9KB!Ji0#j$2NcPVZxD||Bo&4)e{F)ou+hbh(|HPmCiWk4)Lx0ovT)c4c1O0yg zd8LgX^SN~ClD^l^2mP4q*e2d_AX!sWOLM8Y2{2tyz4#9A;&Es@tIx_M^w>@f@`|y_ z*s9OU7e24VjqZkZ&F*R|{>aXv85u~lQ&zditbF7m6F#)GQ?E4IDZyGX!n+Y#a8}(d zExd!e<_P1Gvg%-;e*Dw$AQq{gWW^fODwm|D%EVu1 z(vz39rp>{HpPH+DeZ}uDe(=ja=mY;|eTDD&{M;pln*e{%&li9HXq;bg!0Ic#NaXlENhC-L#!kUPiU-F@LtQ?2*a& zS=dIKGw5Kv3y}Ge@eIZ)6Pw!_|M<1bWBQT3T3(RZ@~>uhokFZNd21HVK8q@SwM&M{ zzpgEHhK`_o(&Aj73WFON`gq`SJ-J>ru19`gS7TaotniZeV9{55S^NVdn{~xC9$5>gG!g-^^Mo6v(lp^J{|Jk#X60h!3%Sd32Ds%IOtQLAKGt?GccQb&1zr{ z9LF1a>N4)QQlCO*qMyE?XM9hIAHz9DL-7b5zfzJL`m4Rjgr9oI9l;IesvDZ>Gj(zS z@3C&BRu`el#@q5N(DHvvyvsT%?C>tIiP+gsoEwXb>AEB|DPvT$=FfZ03# zCg56mt{9&3GDq$yH+8lF4d~hIo5s10geMDTOCZUDr~iOCOc)vOhF`-0js z$tUrq9rd*iFLJ3@nQdD-7_P#Z{wclY%Q*?QzqH3i)*GNmP3I2Z$dgK|({hRj{g`~T z*C)@=sD;N*47PULC?%aM6F3M?^U&TB)MP}Z39I%&8upwbZF?E0pZDMs}^cIAQoOzFr^ z6C3FGm4HW=Zwb`j8mN8p;fEjo=1=;B*M831-~RU80FbO4xXVFFy={xRo}9;(a`W43 z%r_tX`Vfzg*7fP$G^slz*~!IP)8@#9pZffF{I$RF>gPZI`QKavc!`(&8OW3K=kB>& z@Aubl{MRR5i$->e&eJ~gj!(E!#fMk}^#QBTZy0YF5a<8y8ZBoEaa-PA*RDUFMsE+}J@U$9zy zVh{rb?8Oh+XPB_-xa2#XrqK+|c+*G8fDxaTTJa6t8`ms<#XYTi=;Ac ztk^$9KGL%viU)4zfjFjZ813)CJ?{U=-;z(wv!T~meX~Jtj6-Y}#rf@gBGNhVIQRJG z2ISN{+4@F5rN({h3;NKioEodLkvznw#E86aaAjnp2@uDUGSny?IE%r zpNrz}2|V)1ENAvcwQjQf9gyfX546{Vm6U_;_N!l_wwbs_+Pj< zUh>zB%SFF7vc#x*wWeG`C=HaVi3~RknIQDF5F`SY7iQ@6Rm|w-dhu<3S8ZnagdO>{ zh#4C?zOja;&0du_D*EJ2S!9GUBxsOEV}(3?X#xmWE7^RrNoKeWLxGiW@{xs(H%OPfAfY8>B*ZH zQen2w!NR9wCHk2!r)5shVPuAlYReDR&Kno1#E&dR@>Rzl$97V4sn?pMIIZ@&&1SHy zJ!CvbioWDK`5I7HX=JZiMb>@cT72}*k}>ZH9|u!9B<*uW3l_Hq(CBmUvVVR?Sf2~1 zzJ4p9?gHws3V!D&e!^@2$ir`cJAZA6M6L(cVsTp+>vZv2KTW?`l*D+m@ZKGqO6~10 zPi3O7BgtzHXs-t=F30(A{f_T`eUJ<&lKz?>`5x!x&fH|#z60ka$fvt_mmZyGf zZ*zDR-QZBC#NQE%@sz_G^*gu+dKs&-ncNkB;vez<00(|b&%p&JoH3UYqZqO6`8nrB z=4<%ASqXI=H~Z;)?e6eIyzW$ z8@>-u>4vve%YTt;KLvC;m3VstEUq2j6;`IVCP~u$XUsH)l}X3@ckh`KSdwN zR|o9Gw&qUi;Hexg*1C?fJ6ed2r6}Z}s+nN$39;>} zcdgU(=@1L}Wz$r<@qj#F+DDlhj?N~PZy^sbX~lG)%Lj<$6k0yhel46 zpSBqp(hBjb}ZF5c2U^W$kv;QS|bw`p~O@*HWr&1yTd)GOsfO~8A>tq8G_AE3G2@b*IyMJuLRT$z?1bg!MDEc zZGZN6eC$VmacSPsHv!3+V!TZ!4Z&@)J1-6=5~99{+m!-91%S{QEnED!3Wh2lz#>gQVnt9bH6 zTxo}Yx)1n#A98LY*zpE|t}in4{Y3S(DYVne=Hn+=(o%Yx3;9u;lFMeQ7^Rsfd+-Yj zTPfKv#s*h63)&SNi`vMZ;upp$7uajf{&&1Q&P#}^;TFPrnaAxdo6sxcwo zEfXuqWW0z1dSu|uadBS3kFMq~F$hz_buxcoblkRW8QVDBh7$XcpR(K7+MjJsWN*2- z>%Q~9&_}MyXvsK#crfFncThSOX!0-E=nOwHW-~7%?~;K|IkclVgO}QZ^3U@Vo#5AK zt$3xQ7^K_tag8zUU`K9XB!=|R^bPI>R~_b27P>n{5OLJ{U`tQ9b&_oJwDz-Uj7>uNr=KRK&fy|2 z<0=y;8=g0HUvztOL{foO+D2XSwYIo0rDg-e-b^+&i55ARMBd$!UpBhYHfEkG86GfH z*g%((8;)^-EFLzZJL7X))}B7g-||~3I$JkQ)y+rOl9Ri7BU>%2{H<+N=y#0Z9N-aG z^K&7HOsvWF$dP^7#vOkoI~1GR{>bivGsI}DeuPna(mBR&o>+A{#P*y!7~^2Bc2*4N zl=fB4IwhXq4}QzDZZt=#pE-f9N^GUSt)tUeYyO95WFQ1@p(Q_SEzym|HS{gAh`JF zMqqmb5GSy-w&{<8ots_O{M>Bp>&0Ud`zbgEBTRD8$nj)@~2E;($s&wKl%$Ya;=t+Xs9$83pKES%~v$ zC;hF=lpdQ^VcCb09oW+^5=%bfgXV&Ki#;$GT@8qRUvEr?Ok5}o@fUnp$p`Y*U$BRr znH%Q<%{5khqo1dH_!P?wT;*))L8oM%_~I|p@Fg;)PFd+4*xcG8w%n-2X6H~jBl1nm zMRD#A>7mJoF=mBX?ZFeBJS7LK&9oPvdfbwm_C6`)T7(-p@D9NE-h*0i)W`R+;XMD&HvJ?+cI_5!LN!coc4r?O}Be_#nMUjcX(} zF|RcoMzvg?yz)dKr={%09~|mL zux$?+J6&C{DeJ~P+iZ>$;jw}BCW2oFr8l>c6E>JdK=LJXu;HnX)M8KhF6qY8M!DdO zr!{EE^hP@TT4~5!#b0mIGq;FSh=Kg4HWj)zpix?9^i8d?oEI3)zoI7}$HrM|D`wg-%0_hQCLgqA zx8se?txu9ic7r2z$gLm#oa4po`Fu#gJdaQGbC8Q1=fCx@eD@dB zlm18Z;ZtGOgu8s1m;LK)06vUT)5MdErVr z)RIS5G;j9diN=L**qd_YO3~RcTqM)&fv4*-o3iaGF>R}q`)v*4Bp&LvFKpAKtBWsw zw2b=GE_xLEgL2+7F}<0t8jHL4$i+Vi)Mllaf;r;1Z_;B!6JG(A-HgYihi0SX$+F4~ zHk5~oDflHQ8n_3x{YOd^J2LJ6#H*Xb#@0PY3kjYw|zGRN~5WV@j6T z7JsqTb`%@!V9JN&qWvzK3K*1@Es!}bjX`X}&RDk&w9u2UvbyBQF^ISLV%fGY<8xdy zmlZ?vWQQ2=8K0^s_O1ti>sM^HpO%wSV=-R}ONafj4f0BC$#*}rD32vwJmR|`|XS5MC);EK5`Vx;!|T)EgIi;3W=>)HY_j2VND>?kKHTv@TEPtWcXGV ze{7AhGfG(xcU6;!9Mx2zPf6|G)BJo#1j~Tl zjB*1P{|r7g7k%nXjtk%PE&tg^{jy(HpZGtyaE_;caG6+q*PrkF<1Js)92&{x0Hh8OwO z7W7qSBd76Y{;WD{8~KzKXKO3GW?<2j?D3O4S;hn zm(}N@eR@4_v2Y`_wGHiHzQ9xg)9Y~XD;JV)iBpyMObO3Hul^O^n0^JobYxif&I3Nq zB3kokQ&LYU>tw}BjOmDg#$xU(Tb%+E-ug-aHw1h&@LlhESKS=gH$Eu%wzs|YTYl%O zKjw1^gWm|KJ2@qtfH*LhqnavmA)U3(KDW}|o%XR@ygNAWiB8Xu_XOgu(`6=Z5Awiq z{M5##}E`7ICdxC1B zi)XqPRN09hHd&Nwf6&kyM=ur@umtGSW{%gnn0EA_El$cSb5%9Og;h|ko? zef#d1dpr_j&jHz3{0v@vG@qwN&%yX7ddH@`#a3fQKemP27~(;|m&6HAZ2)?16fOBl zOxVpU9zam!Tj_`%8)jJ_8Rf{bV;zCN*odudEq~h2E7bVML7o?TgI@Ns4iEW`7uRHi zy6vZi=i(b}wcEC0P|p3zR4}4Jt=N=T#yj(**MtPgDRf>9DXVo*bnYCbZ~XE@GL}O! zeprzl%z|k8sVCR1=u>mSAFl*dpI2x3HCFx}3;Q=WE8HO5ci*!=wf=U?#}|S=-&J+? zd}=04j%upVKU#8KILf@shy?$%DAyR23}$L#&VY}J@X!lhaPc>N_;2}^dawUE`L2Kd zs$c!=Un#Ij^rTbmDauViCMCd7$KTmXYP|Rz%^IuL3t#v(2YU&0002M$Nkl1b-*(bsLy}Ro4?^RFI~R$>+-%o zHIvA{^2f$lf0?SD{O4rz#0xMr6Ec&udSe1J$3sVd%Bod7^K&!dg@`_jv1%(IR4wbT z8_Bw$J-4x*4F!F4qE~@6u3_zG{DYP>7XI^wZMne$^%RGVD&q;a^AH+(DQd?q{tQ{iqkLm~>uUpuKH^2rPgjY- z`N@;E$5K3OaxBI9dqPhw8n4x6$%UqIBu4pNwd5QVh--WUzOj_2bqpk5{vG&|v7GM} zYkUAJ9PI0*?Bx{%^5h(?PnVttLpSr}N>wwr|kF7pA%gd6I4Aqcp*nPUcNwbRWL_2CH=vht~y9)acZK|82jm z&I&s~P;<1bZgNXXbA&qlsu|nNodccd21otmmOPefu;A69I1c8DZ8;WhT<8;r{WIP3 z2t3@Wv;32A^_)A~gKZI=5v~HNvFQ=RTIln3Ec>ee_DXH$x(PV1-)r$J0rjh`Cnxv+ z#t;3lzx2>UFQ_|%aTAbh07g>MP96HFuW`*8a(8-z;D50c&!WsG*BSi!v7bNtArC(1 zIiJnf{rJQ`1FRqV;V=8uOGwN){usr)_*cK~JdxW@NKFnDdY*c|x)a&dBwwO+3XKJ% zg$Az{oi_!;X_J*s+cmi4q+hzhk)FUkkMRKBxJYWD7B3q_+ruVu-c+XjB9;Vw`x-ln z46NYbLrEeln>5F!;f+K#iYz{Ov8j5A0o@HvcCjaXHjX}uHeLZJ(y1pj`OlEYhiX>Q zhDBZU=x=k5PI&g!F)Fjfo7@Pout*brwNHbO9KK7(dLC2DvM@xRp%4Asgo_jRK>F7U3l`XUwtZ`@?-Hj zJAZU#Pr4mX(Xf4NZb9{!I0okis&VA6yOQgss*$Ved93W4V<+df>fB6C`)%KxkJ3>7 zN~UUQpM^rG;XJeTSvr22_pzH`bX9r4YbM-W~f1TeFR15z*hRG>; zFc=i@$y3Lc4NtZB0F_+J%b!Iz{vFtAd-63mMRcI|#uhu0(W!juo1`%w!~TpxqQWOf zDa4;XH8GWrO0~)F0j;{lpBI?suQJ8AkHH13^W1*PPka`ZGJsHznf;jaujg>_jl10F zkR#jf(Kku}}6@F_klcA()NW28b2!DA;Z+Ug@$rP`A3TDedge&ck1$O_xK z(6XLAS31rGJ2}F4`41j#$(Ux}y4`Y-myV@n*?sH_LA0EC0KO%fjpSfCEt-~-=QO3^6DKaR*9(>2ZGp_>3bsLihj z^4Tr+@{1R}m$SFkL*2y>e)-G4{yFdUUKdNBf#~AQ0`m#Uuvil!=@Q-na$jko}z3*Qaf7T?Ea{D0@zVp8=@g=qRW5JxB^zgx6 zkI-Dt_XM*LRg2l1DH!ytXu)bF&H1alcNX%7j=ZFLQ&YPZau&50D;q#>3{q%Zu!>F* zE;M~*T$AnlH;RD#5V!>;B&MWvDGd`)P--G7A~9g3bl2EWM5LubN<=`K5u>|vbazPC zfU#ox^SpRoo-fbi`dsHx-#CoXcrK;=onUCj}6SvKu zrS`N9&pm~RNP*zm%F^`8J)uqCd!);x@k^nb|Nh2(?rDeK1|n{kyHkTIsXHWgk)ZfO z*?`S-7=z;^``o(0>MNw9eMAi|f}Rjf3(mvu{4cCNq{&M-yQp8S++B#XOwY|bG3uY= zplzuRzo63~EcU+QyG@g^rNW;+gV8lfsu;dm)tZB~tg+N~*~+z2r}W{JD|K(@wHhub z`B5BaF!!Wi4U%-4>wK__e>(FsglPM$`RU0cSJF3E{Nx+U3BhpATlL&iK>;b|YM{o4 z?9a9Ls%1tCQLV(S)_)-IU*NHcr#c5Kb7<>P0T?ghEf61@_4aA|56z9(L$>3>;`<_3A@XMZpb8*;SDSF#1(=nXM9>A0`gAR2d%KSxn?S)VKYj+B`D ztA?HUA7YPNg1^^hoQQaoNIBh|v6RZBr*A|K{bxKPC(WI`Q{-Z7iGj4Jj)Yv~Ksgq4Uq#1F}AmOR&I3}`0*?Y6ox&oY{x zFFFS!mc6f)$DHgTa(IQK*7%;cU7 z#N|Z+uiiEd873ti)juqaqajAQV&~7Qyl7k?yH*R3o8QhVR(rE5rVPa2tDMZZ*WR<+ zrb};6a&j*LN8hiVZ&=kZkxDy0X((}?n^L`5WtHDNfbr`Rheet0I>IJclnH6d_xL{0 znSWl8`@q?qpuf$mRMKr3E6-QEBlbj!Fll}9t;LH==?O#Y|6b2+9e#v=FBB(U@Ty%r zE2zCW&;pyP+1pmVOo1*JK=F1>pmxbe9u##d5u1~vv&jb%Citb%OYJ%iuj#S^t~mOB9Wc+nU9Vi$8Eib5li8rS!DwZ-2eb zk7x$vrb=$HnAylh?Od*gpEj&ura*i4-1}hvxa?$UeF6_~-W4%(-B~ny6W5Coah(9G zmz+Iewkz$DK0Ob;W)i}z{i+M-Cx&&zXQU44XtjkgyQ8)Jk$_Fgp{_*aHU#$~W-l04 zN0KRTj{<}%opm*(HFjC}Tk@z2am)@uL*#VOlzGIhFZsBtAv>JC!k@(25}DiYPIv=i zy3cNBIkD!SWj+Yd{8iB|q9nf0=^_5p;9XCLm%|+uj|W3jg0&%!fF^Bjl$=oV1l1m|m({w&*tpR#tkT0y!_@S5ZcBpRdOJ5=C~ z=c86d;X_>OxHDG1fh7oRImL*$Bz{|L^Qleqn(b#%W{yJL^J+txsZJfUuc6cF|8d;F z1pY1-H`!Nz-FWC2;soGL&|_SHgd~_68`ahnnYw{NY#5*)T5T2i7o9km!-4C{b3k+9s+hdV-#Mv9}czf=vE?X|hL!I{8 zo$sS)8O^UztEO*j(HujCN$ULp6wUainEN@tK`q|mUeQC z^WOA*9RBOL!Gp5j_CKM?2k0^sd>#Ppv@@-9TcgswWzMuN!b|k~O0N4Vn9z#pwZ8Z| z<=gah?eoEJ+TQrxXi%m3z)oI?^VkPII>1kstP{ca=T#QlnsTh6=eJfPYlzP9FD5Ang0%nD5Z z&$~i2Oq_o%@F zM!ZYY`ftt)mUIht*CY=PMWjN!9iehFe~Q8Vk!_QGpy`+US;WV16^VGzX0a$oAW_Hp z#)zls?p$q}uYGUC)_2-DhZ&NMQ@RmM9^*}n6m0O$1fjAm7Rt7nd_1~(qtwt5(DleW z)tmPf2sAbSBT!9!CUdh|`j8k7e}8}pZ>u2r1v!S&T|m0qzE;+YbQ*+r#&4Ws^RjUT z4@{bY-la9F*4kjNnPM*GcMjRr$M@6}*jjiDRNn#5%%PiBfH>Y4iZ1{GhY22G%Bi8H zMil496bsLy_P@dSE0+It+rgIzn~OT;_(}<};imslOa=sNhlfw*FK=zvM;xJ_&0pOa zQ4FpQm$~S71Ygpkf<`>E&ce=u;ImD~r~*>G;id*0w!0!h-tIN4HvME37(Zuq^ghir zEzxaS);DL|xxrtQ!c<*0QtZtONV}(H%pJOXMiIn~u93;V+J+o z%PU0S2-g+Fw(>_2Ok*;<)a2$!zlQ;6lQxWPCHB7&5%^rPl%=Z zrKrznQI|R4r6}4{J#*CE^}m!^z1k6q###B>QQNE}yP=%km66CNgS8z`%*WEw-%Zzz z4i48lGov0PT!otxHDx!f7J9nX8Nzq0n^x5;RsGc(Hmp>CR zbsJMAESGA1O++wsbORpMlm|kZ1-$@~^wi+HYxgMx!j3ozdAxcp>y9@uU6WrRxjW%$ z1v`{;vau-~MW<(0D%{duu&;u`U^ zi4w%I_8{!++B%Py5vkK#=!bM?a-0|-BY=IrPL{mVnXDJl2US7iZ2T!Im+{#ab(+N+ zPX4hj#Fq?9*^sa1VR={5~V;go&J&BCn@1suBS~lKgraoyw3f{;( z2;1f@Q`k#09Ms6H#uTXi5(&$5boSUS5ne${ZA9Oaz0SCmOZVZ`O1+xd4-JS?~zzEgo?Zeh^$AcxmPF3!d_;b}e2jDF#Bqn0TN_HPV z=&rm^9uLc}buHZggv_sz$M z^$WD&9(6?g4HL)pO?h&7_BkFLuu^plS7GI)hXqluj`PD#dJ9LvxCurQ_KFw2C9#)f zU%vwxVvc>!A#Q4~Fm&qQ$I^Oh58fXTloBilVu>{qi~D33BDo}MpS%6yH9bqI?Dn5u z4?iT120YR!K(tp&I7uhpcXr5?SQu^7V%5Db`-Y(4K1{3P(;UZzk62L`Ua>F!!EE`( z#66+6$nzo4`e|a{Q=peg4^SF!P*)|ioCu5sNnc%>{f!ubJGFmp11EyOh2Rrj?ls$F*a*kb{)^g zDW49s#?xfK32=$463+3>5@lRUO}_Y`4P$5ZONfm+6IhsyhNEv7|9dwUHvH+q+sgg| zw78<*PGV9|h%)Y6S$yoGxM)=81umneP_=X8`xWAHAUQW4)+4xI;EtP`Xkz;1N|pFO z#sFA%t;@|ma2|F&FH(X~Sx($DN_s%M-DbV_iGkG~=={GM%TK%02fZ5yDayjAF}dcr z1>goTG$Anb9kVikct-zBZzIbs&F|xFU2|=g+X=BQ7Y_7uE}bTkxU7z!CEZWdB{bJC z-)`CxD88`>c`tkw09MNzzg?XNTB@gj|8;9kHVKXW7S#Z<1nj=$NZ%Ah9{LyBSEb3( ze;F%8e2c|y(9Mlzc1)qEy`BjlY|b=@)Os5JVGnWW=p}Rh6;n7BNdCYDaNl|Mww?|^ zOdS2*&5_|ro!RO2r&lwKF^N+0Yp(mVFYDhFTzi z5GS>RK%3gbe~4s%q4}aS#u^w?Dxap+6=5!EAWRr{O>^c>;`JNQvbt4O9Z~j0ulqCn zX;x{cA~?$a#H1&-`kS-nycH< zbBrBg%EMc}W5=DNtuJ5H2Mcf5hIK!KkJ}rYlkT|?<6AARajpBC{ z$HC;^f|eJQ`Sle(jEKYMr@%S?wmf~v&p5)HIIQXAFQ z*tfA!Ca^!bz$?$_gY?G7@28H;d6yUV`F5qvxY>U#0X>mcN{FC+0RhFPS?q7Q27yxRh47B zX2Qwxx!yuhl_=XU91fqLR4WV~rUtxJD^*u+34f+q`FoHRTEqiXwqF(v)RtXJe}9(# zjo+^OGzN=cZN>z3{ef9B2IN>*buiB7?Pt_5j)oDL1Z97DCT2O~Y2OR83n~g{Mq-9r zQW`v-KbhUwIsHC7B(eE;9F?j-!|sZROVEcrDyQ%Fk6*%?$gXRBg1F_g4IXwlHb*t@ zo(|s52p2%~`N%%+oRG0XsG!U zUYgug;U!jTk3(kJ=aIlE2~LP+%1`+=YP*rr&7t}HToK~zuO7|ajYi2tz^&8FPORzI z7oG2S{XzF%HSCJeU<)aoYD-PnqBQ`Vkk7+Y>ytt5257T>7^zy+rR!2K=|(-wPu;k`nNSt*G@W7)xFjX}|bU z6W=CnO8C2<-hR9jf;stAx$cxtRX4zv$0H>d_6Bwy^^v6Qd{pf(a zlDJ~BO~Xbz@-UqRtPUx0F2HU@x{9*V5gmm3XMfwrD?vqqaXn!zxHJn^GLzHQD=g}- zYA|Q8Q!G!k8xu>lL60eSqEhWx6?Vj1GRus=kp1i7voX}OtR}LKdBE}2wH#Xjn7Ch7 z{^8+Moht6}du*;RM*?Ogv~(9R-ov7Iex5sn9*(3L3F`kPLHt7HvRj;PxXYV~@M*?Y z20{BSNfHrudJ*G9nZ^AcbVgy4v^)z1m zP0Uqv1br_Z-Ll&*ck^2Nq8aYGC&S&(jFj)w+g-0EmPYWv8_JMl+ATq`B|8>j`kB15 zH@h(T7M?pDuHXpGCoL2kym^k@24?6vudR2a zZ0(J`Yd#XL#;EKDQTw6$iE(fM-RgZXwi}EorfZ_HoTTNcS*%|G-NJc^+!+n9e@LFS zYuSBzv5UI2HBIAW$DYoR_Cny$)mWqNPb{k~QWKkJ1HOzzJGxkzR?CPe`)~7cqqh?C zC7ItQ_#40dS?wG)_L%(5OliB7~4s6GB)MaHNc6gnyAPd4D zD>iqHK;UYu+Q=0|v{* ze$auLk$0FkySE!LbrFKHP2w*_o*Y+E-)wYxFaBI&eNw12{(_#O^=@1H@~+X1I+hcb zV5qQ(M9>@!G@x+f9?j;(-=m3w|5mxcWoNtD^3vtf7VKRK+gI^mba>NDLcupWR{itA z*N>$vpQuUaybb&knjKyM15Nj*Gkc71Y^;A52(nDh+4Ik_G#rVbX7Ug{Uw6E*<-kqd z@G@OcK%Nq$jO7fg{ClT$GOZv4N(JNP-4%S& zt+e}qh8W`_$tyT>{t7ZMxFYge3lPQB}v3a`X9adLtIIi?? z{Lzd?{=uI%LvkunCi3jxANE{Dc!2XvHSyyx2`7wY|gO6td@4fX?ra(tiRLIxey>?g5 zzA7>bS}e{s(Y)sMe7?p)I4Adf++5JE(^wdpyflm$+?&$VqGH>+t3f{Sy_g&$4b>5@#%a&Qelk zTO6p1&mT-Nf0&=d2(e81;U~Im-iCdct)q|lJq7hs*`)`cPctId6FDQPN){!*=eDeW z(b^@}g=F%$f68_!N?bx1v_-j4lTe7w;sG}oR~4DwVWQm)Axe) zrmXiWn5$2Fbfb*Q9IB-coBI(^5`R{dXV?IHRq42PE`;dj-dxkcJ%$Y@?Og9Y{~7ED zil=W&X?|Dr|KrCXpR8`;@ldw1vM~xlbkXgX@accYaHBdC1Hu`^1Rf;@5i*EMu{55P z%DA!FyyK>KU_!;6xyv;P<=DLXXeB2|tGmv#u`bu{>b_jVx~%aU4_ zg#7pW)lnXF)K{S(&Io#7l(!_Z|CM_nUkNAPC+a;QG}_9c=jcJ0eazgi1(_y{oVUl@ z-!e?ZBf*^;2Gz5PC4__6n9kEZvDes+OW5wI@cHk!NJOiT@}3;%EYxR>ns-C$s?%ut zht0Wm@Il-JN%NT*V;^&%(^VsJ3~+`hH+=2s=EgR|_$>$T>)n6QS{(8r14U7K(O-_A zk{~~46o(9PfrCzBfmlOlf#{>#?@+IJhIChpY95=YCXCmVx(b#S{;6fqlVzdhXReWW zGu3OnCezMuqBxrmu8~!<=Bw4;?@5H`KqTbze!cMsjm$J?lUNYummpw2Zave#=kX4G z%C8!sHPX<>2&Hb9!m6(#Ax@3)?d5&7679d=bN(xrXK~m4#0WoWg-`%xH;n?X$!dIp zQ$A(s;M;x@>{F|$g7}JenDm$r5mzPV3!jgo`(bwz#=iTue+RsOeK3&XbZ#0t)6Lq` z!vj)@O_Z^Y!OBA8p_FT#eY9D)-;UXFr`UNr!lQ#IJ&V5!jOdo0k_^6?Xu>Q2Vs?^aBbWPv zaH>}?IXS?m8dCQp^V~KJd#2B7{WkedA)tUXke`DSK_@+R9dfDF)U7}CIs_#iz zw4c33Y{W*kUidYp)SI*KtWcdCcbpWpsaz^=H)jz7wFQIa1Ez0OQ|8npB3MPMl}cX) z`+C)DGbNl?QEP@=E^ezFuU{MDU0!qJny6mCh0#W&1f;$@izP`~?pv4}jWHhDuS?w+ zd@jpSr8lv;Sr#`Q@l$5kuG0S|!9|X41f6#9YOF$%q|*E zA5Kt_h34GGjm+fpiuJTo!$`(q^8e!v=x`vsm|&|3ay8E!T&*of^Qb)O z7jdyVHvKA?ei(Mr$5B^Sv-aQRRofMUN(Nih^zQ)) zI{PA;#&YU})!B4z@EhL#)V`y5*4^<-Zej4Kg9^Hv6j_VUV0FE*`fBVt|3*_RvrN~q z!mi{O%ZWq@{CEnal;KN`dFoV#L=1G5acHT&SF%2S33zB

M@hpa-ZHV>*alu^qRkh+!4C9%<{XfjYgfJtJ+G|Gychs<6d69s^l-esuU&eUs9L+ zUNfYba(8%?AOgO`5FdQee)avsOhlJDAtK=}H##x}IBW$L=#(NvOFWIuCYZ5at(B?* zREB}9HU2jaP*RBQ|G#Ye+CgTTm&$d}**H0Ao!wGWN+@%hr_&j$QjF}G<0tvppJEvu zrq+Z#Ai!`wMv1VsWj{`As~w4mL`Wj+67WsMH(+T%zbSGmgsI3|DBqet6Ot6VltH>)kaQ%1ngklo1&r#h zrZlhiUAARnW?J1IZCARTg5-~04tk7lwYj(v4AVAHMn>S^`8r zoGsBrgxk#zTb{>;v9ogQ-C$4L?w&f+s#L(LI%@V&slaMAHS7veT>QUa(fZz&MWs5c z#ncl*(Q%l#MwZ2_(t?@q6K50hVT%Q$=?s65)YFz<$eGx|MWw}S?o=(CFY5|$A5u?X zo62vpTubUnJ(U8<)C8{uJ>EN@*-Nt@uP(_@h^tXoxGX(@+8IG1hUg?R$O}j$rSPM@ zucolP%Ku_wE)XIl@Hxl<{oH3ojV81MhY-+CVF5ukbZYlyC&OB_)koBjUXY%()|lh? zdCp0bvzf#gbc8Lw{76oUWTLmXa;PEu_SYj&C`paAS2L#GkvNTJ0jmlaoP=#pz?KZ2 zq3_c{ie-EJxiyqcOk=0j(zkM=5&NuS(Bk=I zcMZ!4E6Skg{m3lmGqIj_KU4|h`M+DhNo!?pKk-$RLEh)Vg^~Q+Gtq`F{d=HWu_nS{ zK;`8xVGgRsE}NEDXwnYpi|4}`wi6ecVV2MTGu3>(tMWWZF|Qgx9RI@1`o<{* z!J?{vFMWGh=JE?~?Xr;lWZn?o6nHCzoLn#dM0L}Om|AV|d>IwlD-`@9@#>8;lV5{` zWd2j`>%K-;oIixJQKwr4)cDbo6_m{*jxDF^&jEMTL{^M2 zS|$L^UeimUlV5kwjkbDQw{6bH^OWeP2ujfl^6)J`2*~tCVX&-q29)C!VX>LD4j_!6 z?v=M~FZ9dqq>|{P5FHryoxoPhZ?TZ(z1E7hHC~*5H8x7vyBSj0B=XU2(m2+mM?J7N zAaAP$zWO>6y}-AaG@Os^#Rd}EXfsoSOy<{!TRUqLK6+k_(Z}vILFeRwq7s{3qwG!c zIgckOnA1mVkIQRKU%*^;4v@Te)8Gug*v@U zRo{_4FEqEJMR@T;ltVr6Af0M86>FN4le9!Yo?k850TL&xv}k~rl@xJ^=i zT1Bb#C-ae$|E4O_{opmC?xw{z{qhsG!=t#FWHdo^GV)bSpc zu`{R#`^C?~1}CK@`4DkQwp3YZ*0%)SpAN=@){n`pl74F)s3e~iJ^NgQ(v-mPcneK+ zfNy&N<-kkBCQP#A3%{bT{6GNU=={wN1Hf5-xg_(!q)e`#K=ykmw>e5RA-&wl(3&1I zAI(tD3mFrDMn96~In&fYCb2^Dd7FLgWmEVNB|%|Swanis?=5m7|Iu{Fs#5|iaB_#6 zD`DX6W&emmd#o@%(g#~Be_WE44^P|ryLk5syD{c9YIi-O7^Mm86e&OS@p09u2E;M{ zn1n3WCj=R-0qfcSBXnPZvToUR+o@UGMY$s{$Zg$@8!oj)o38+=w{?{B+o^|WrwLSF zn9&DDSp1F2BT4g(f#ZkZS*6~JsUGl<@FUEc{ji4@BKd&AE$9&Ti5Hc-4(5*TksZI( zJRyt{_fV}|+-q>G-mMGt@*p*YqH?Dd;2}s8&n2Z zHIzZ1T8(5L1lfEckeUICf#xxI{I?eI0Ja~b5w}ajY1Sg}tA9_=q>GFz4*ySc*Ph1-{_5)Ge?O|z>6Pp z^<>aQ4U>ttLT9o2pOL3FmS*d=B?Rd-(}8I6j|4yX=E#2LQ}oJ7MP4P??Oco~5Mm2D zcD~ft`h^t4=P`SP*MCNR_i6XfPP6sNr~f@t_}DumZw-@H!kzeVe#D4(-3tP=ygK?+ z-0t#akp{~C7{b(^DNOiky|nGBg#5ek%>qe@t>gDKpPsd~w_LGyhzjnG`!3#P@sc9@ z>c*!VvwLzp9Ri?{hmWqCz&nHfB?Y~E8~fD3c@p8KdT4$KJ1Ab@$L(_^1fs7;KboyKQYBvhx;g z`62_dD0V=uJ_jNIqqmVvNstpwCUWkH=8~l9Vy=E}B=K70yj!Z-w&dz#zJcOHXG2#w z@h#MZ`WePTZYx8IPJRVgHb#2JOx^19>3CPSDEX;<0d-|jYi|gQIaSgYP74jT!)!Hf zHbza0FyHmR14kv$=2YQ~x$m~~ev`NkqaBwCwV}8!0|8kJyfHj>2B`XXW-U4T%UC4+ z%@v(6sA~F&Ny^~|?t2E3(ssQ&Z}LqILe5eWep;j%Ftgs*Oc`?qS$dnqj^JU|N z$b=h5L!r4-=T&*-tLrxjdq4M_SCd!!TP=vXJvvxXiIX~xJa4_At2Q=k=P8v_Bz))0 zyKJ|+L$&8B+5x~|cUu|j>^wD8QtBV6&$J$tx-(H>hgBWP%YLqI)%$T|H&Tim2_ZET z?Oml>)UGa`gBhSY7OoF7#=%k$X1L{ydanszJb5XSqDTMjDbR*PO*b!()R>Z9mjiUj z!>v)RT^AC5;q@QADljYpIsbX$C+FDlmvai-)ysd6-&(r-f^ucM48Q4-R3dAfszsC2 zgVKgHE2z3VO_(->X)yE9^HH$_m*#aZXY)tQDtCew-Zl-|vW7DPAQ$IpHP1Q17iO)Z1HUF6q4K zI~jENRxj585`0Y9WCy&S_0&gF>v;H@*G49`4K+c`BLAs$d=sNS;;Q}j=IS{^>B^7_ z%{7Cytf78WG2L#RLpsshi+j-I8+QPQcec;QMV$3KD8(>6bmONXMZYvQ5p3LhGhD}I z?DIlu*(WB+;%IGj)y7@E6~xCt-L6tet)LY0&P2Va`n2_#d3<7pjoZQ{j3uQf^?I$7 zXPZh%O^-I@ELN>^cDE;4tyk*lUH96xPq4e)4H6}Bf8JaO_vk)ljiGvJZJS^U5bdi{ zO$^AVDYaV&1mHxybD0~=KVZ|SKLycL6dVf~5|!hO2hCdl*^-Rd4~R?5V^jx- z0+SLjYAdiQJAkZ2YPL5~_ZGh|MlBi}crN~pXm8TvXM5!WVMOuoRMA|jU7jAvYdDtbCXZ!mM+

aZK0?v^9=BtAHO1df=v96(?EEAzXM*<;YW{k|edA*JWw z3VfkoO4Zoebzso>m4)RzeyHkg_4UuruD|<{HCGB~GNzx~4YAMeP#uz#MPomIadt%} z?E<7~X9N5UiRa;ro1Bx1$V17B*)ezO+q^qXaX@U_#^GRa>z(Q}ERoil>*|%Q4&%H$ z0}*xUc;U5e44b=T)PV?Ogr50>-A4xemq(~9{aMdd@a)1xy&CS6`Cgm#x2Q?2;KMBK z@C2iHwpg7Dad?1zBHgF~{;E&{95q@}=0+L&%oyY6_Iq`f7oyyqaR!}FTDp8Xy7Z6x zvChC21_$!>&Edw>L?-MxV=L*HA7#WcEO|-SL@OxV?DF;=lh>g?=6?m?g1cs^ID*19 z{oQdK#=yIR+u$`{c4@~c=Jrnnpt;UjPbMNUOdQT^1k8jyu^-F34gOLkBwJ+5L?zUBLFUYjsHmmS1%Fa=T zsJS~8*9=MBz5luR_=!NZAO4kzeUWAFFjZS}*>GA_Tww&honUWgZ7*M!S&Q2DG2GS|H%Lug)mBy&SyYUj-%R<7JfIY6i723N zbFK}>{eKsLB;sGBr=M!;f|&uYl80+r{_PJeQ7OD5+nrZqBi1`6 zkWv8~!wJO2yo}hk;yIOKXq%Up$as+iJh#vBFt^~I>I(=3t(kYCQ37!H^7EAp=+}_J zk{9mXIU%jf_P39{RS}uT1aGE3AA2YLUvp%XAbI=Rt@XUgR7^=kf_S;_k^DE7TF!}P z9%g1v;w{(Kvo#{9CkL``-F2-!+z^tN{Z75^^B$)MPGu){TntA1NDErpeg})joL)G0 zSe7m7k6ypUx~$-wRuY#3?R?>Rw^0WFnW0jf5_&hT-L?Y>Ix+FR7lEtO^GZoz8ta1C z-({>*(VLh48)qNdOF~7fY+OMU`JLM)23O=+qDDX*vXMd!IQG{M#=0{|tP;g}905s) zr|MAJKT^&e2$$=WJ`s}Y(^&=pJOmdOly3qTb+>gE3=p1*QD2v0l#tBg)^l18hW{hfS0% z>EHR7rr&Ta% zdRQYO;IM+118$Uh4?vAStVqG10I;aHehBY)3(l|x7oFohRzgao$Q}gTo3edmwb_*Qwekr=Uvm z=YnD+GUE|lSFODA^;CJ>^|tCi?iEdO--;?0O5%>PIk6$$pL>9i@Ad7q&Ox z|M~OpJTb1g_3C7x^UKP$P4f5w{XKdxNLu?AMw}+S~8@>I_iPXYL7PC zf=;37|2>3BfPxPyLQ_>Io&b@h`azvwleJ5f#!SAPR_NR9^w9VsuRQd7#f~z-u@qgR zhH-Byh|oB#xDFZ8S)e)UjXDOe9=h5txg-%vyEPlkkfRwy-+tO+zO-IQtY&rU!PoP# zmdu9(0A!3qC^BScsP)nUY+|P`ou>74$%lt&h)Mg=W#aNmfqhYHXE&@E>UDE{wBu;8 zx{aq*u}5m~^!u1y^HtO4y(jH1k60e@SoJ%5C|fG#%st@&)d!YUh0@_K?WOawjZdd| zp81<<-8g8=;aZ$NiafqG{LDP;BdIlW*O)0wUlm}io|^viF(0XVM|YdJ<3OTxyOot5 z_Q<|}H?j7U1DqM~RgF^JURfO0aYsrvyHIUvXZ(v=^WBQM_&0c@yd9jmrl;<2+S1?S zz-m9wsc!cWS9`>9E_?4(g>$6du_SxVhCa;8UW2`=Vmvj5n!0z3!cXC7B~9*&KS9Er z1OH8W20uEJPrCE4xAkS3+PF61PE)Tw3qqAKy+Y4td`-;{72lTnUi-{)xk_g-=|=$w zpG>mHo*y;TL7a-mr4s%~A_&>xwf@V|o&jE~HU)3cTW4_@?>jFS3Gkpx=aIhppj;F; z93LIQyFW=9X?C9KcjgXT!X2*Nc+paXHC13Lb{Vo_2y`lK~>xScP z?lx8IN+`N)wg-AQw(&p5*tLCz^FK#tdKIR^$0o;726xgAjU=16!sIpU8-VgKrS&{AXN3AOhOZiur5>*yu5!s=qbj%QP?&#Pd9>VrwFGj|E`c=d1jxM-276ltJ#odfG z79Yrbo}x9XHrlaG0vsKi&wTX@5zN+wE%wHE=Fp^9JwaBqQE{i+Yy=Cim-F5vnqJhc*sgI*NY*up6-VP$QnPWfV`$0MgqhJ z^)Q$tX25x7TVlHOVvH#Y+TTl`ni`@;PgDdt$F9l|-Gbg=eVRQM$7Z-iyH7D*3Fc9^(vFv~S48JVLki44c zhemx2zkj5C$O|V1drR|QWSD9DhLPfsNXZ4fU}#|b(#h1YIQu01obA8^eBVCQ59K7G zOIt6*3GzSip6;=E*S6h&+JCkWT_dd5TDR;D8jUzto66k6%Rrz z7qptQXFL)o;&L!|*L&``mey7;n&A)XMC^pf%rD%;_yowkI|dAd+k3*0AEeWD+8ZzC zC0PROC`j2o8fKogp_g0R-CxdqHF7)=QthqzJ-}*c;bxq8dWJ>xl8fH{M#bZtFJiC3 z5)u!rF1zXGz8z&R`>&`q#xy8+pl=$X{w1W@$9YFU?|E3oX79qlsK$3qL|C#~5$8q( zR^rd~9;xI1w4jaEZyxg-9GoVG@}(Rn?qJop-{N#@D=Ky8{48^jZGL9}g`XQgxOCj^ z9v6v}CGlnf%Bg2K#iiBsqK%P&F*1SmDezXT#DeaOl+Rwd{ zydhA#vWItG@S|7mq`hu}J+g4Dh+lss8a*1dPg*f1+vNK)5?~-sATKq?6y7KUK~%Ae zkw<^fSt#Z@(;UD(7|2>QFGr2rd!{5|_uWq;J#hutUy^N5%!&Hx|#3Qd}V-<_op_8apmDHnN_bUc`z@PLb ztz38HM*?xn_4av(R9fSN7BKo7`LfU5f4JV$fIMqI>RGS;BKESEzfH)q#E}lSqY_nb zKb=vr9YfscBHElV{ZOWd$vCBUz2_0-kLTpeY-ZTEG^AZivF6Gdz4$K%xsue z=3W(SiN@&Z=tMV+b`RWaKGz2D#Y9*tP+x%GgAYlyib^UO80 z!gd>;Bxn^MXc={%X#ddvYxnGTKM&$TqulEUJ;#Pey3Ck# zntj_ucH_4kTaAjH)hhU+-?wH9!zyQOL8aZY@!5BDK*v;$V&cl$syk`;Epn{I*rMry ziXIUX=&gR_alvmhGs@hPXxnSwletb-N!`E9HMbqH6Udg1+_P0)XhfzHYW1Lj9wymA zKIoZ9<#`O6+(*8?k}=wQ25aGFj8@R5Dw>&Z#s$9i+&yVh)7#b?NI05MO+!E9fR#Uq zegha%`88BH!D-}tg*Rw@CTu&$Q>?069&%S}u^Mwz*&x%35DBmR5LpF1+^M!|vNO^w zLT%vqJNW5q>k|UsasDNS=uYt)|9dtvU-{1o~BrmRq;*iHc{tZdYdSGKz@s|4t4Kf-&a`9bZu%@B?=c~it8De*2 z`?F=81v@<)dqdQYOZwo3ag6GH7 zF~xrh9RiiGXQLeBc7^KG-xqLyAKewx8F)W#Sq2w1nM$#XNzjLbNxWw`H%jCD_QaHZ zeqoM+4n2t+Ja$~w_U!g)u_oQAIB-(@O#_No8(wvfvML65$G?oM6{$9xE&lsmnt!A< zyUgemuqsm z2W@uE9_lGAQS)GT-<5qdW$O;xQFMxOgoJ(BY5QQE+xg%FxFR>`Q6g_)?>Frv!slIe zr~S?EpIp9@6Z)#&?qK1^GQWd&76y#9b24;Vg70_USwRn`PqMk$Sa<_Ad$%)%mjBiQdi-tTyoT%v7z6ElXzGyc6~e#?7=n z?UvDr=!wP^hHG#0jq+7sVSsPz8_!v{Rkpv9hSD&<=FWhXB3af6-HwTA8{*&uL*_!` z4|8%#j)M3WJKjA>JKXsdCp?QfuPX5+`p+q;g+@zHGcdsu{ton5#y0Rs`3G;X2SAEk z=C6Kj1hgf9@VkuQU-lU>CXB_BuC zX>ILi6%Q{;h5R$uv+Yx>$+2olA52dvg zZr+|LPFu+Rc%Sj4E34;e9_o5B-vUza1VZW;&9P+2k^%9<7ctq+}0Ar{gRpLA&VssJ;TiYk^PpvZef6utZmV+E2JE_x21hfZdcN>FXo>8yuDG= z^E?{*x8^v-yNOO#-S|DLBI{^=Y+pk0k0pwy#1ElpfM9<4eeG|(khUdNC1oku9P&Ni zY1HPOU{8JmT&VB+!ah6(bhk~BWoL9}<$kV1+tOx08y(-N3PK3QNShK7m5=uN+@E@T zyRr18xp;+yF*Pyqk(96<$5qQ-&tXzT*Tu-Q!j*i^jjSWN-2fW(Dn)@`KKVH{qQA{L7^JHfFKaZlC?j0C3bC`PNX~e&gzMzVwhF^}^ zWEqQZ)GY^&QgZQ^gX*J3E1TwBo!m(f@F0Wh8o>HCHttA4EVihOH_;$S>O!dS5x~Gg zmovD6omazFhiV{cW7lyy}9_+1!Ix#LI$Gh4A58U;F zIzm&V9)CR0GpBf?{Yp$lYL)a4MDN_j@E#R&_hw3)B51P>-Dn3;y>?m#SWDOqZk(1- zO=;f(>RP{5WdC!rIgayl4MG9{taRlH*%T4S-!9%+2}G9~`G8u#Z^Um7Ztt}Okz?_T$B?TxwO0UA zHQj*>5vP9KyF?=DFA4z)FXz9{`^V5si%Vg&DTvzTf4?e7wYXB2a1e2X6NZ2DGGySqqhScShJh`VgFQFgOojWvoAZPd~TaD<7zb- zEZuFC{|R}UV&oiG1>9b@THj&2`B^gRODS3Atp7{HObB)MUGaM^@3- z7$v^h3Z)2tE2oQIwgs?w`SzJP>l*-ra`Yt>o6s#(!sn8SRyjN_eWo^Jz|K*PS)YzP zp!^@#pBeo3E#%xXBKAx{8>4OxZEb7S-nVf5sEe6pGn(y)QtTD8%4%}v1)ltg*v-ND z|27o!e&Q+NCVx-$$EN_|wUeijrp_bPe$xN67#D6F`1syYDf#r~(dHYw6tw*mu840C z(0}(S8y=tinfm4JkuT)cj$!h8hwi7}4*>+D9Ym`hlNxss)8Nk2w;U;l49;U|X4K$g z_Wu=}GNV&7e3T#RN3BDJZ|yRH1sh`=$*Hb#dyrAvv$iKc5sU|1NGY zYR9Rltz&6eXyY`pwyT#67O-cZ3fPnmmK_<39ElBHV$K^ilN6EL`DI^2v4*%;QKdQl znT;hm>z$?ehEa~gxyO^O$<$n?JvyOr|0oee)nV>a-t5-iej+$J3`_IqO8M%|z37>3 zJ098CzaNe3N)sxL{!wJ>+bjeos6>t^IvTc^tUm*-UNSQ;#O$2@`UuW@n2o<|N3BC1 zYP2UgEvO9Y=Lh>r(4r<8g6VMqIfwfmaU)5=e zFO`xd1-mXAZ#gNA_Qjejdgk7b%5yfDy_G!{@G|8~z@NS*&m<9i`OoobwnC-sEm`%{ z8`Ji0u(6Iszvft3-@@FwlNX+x@>Rb@f3rt^N9<8EmkJi~*QbqZ_ii0E&pB%MrKFbu z`LS*s@hJWXG_?*SEqI?8Y+Zh_2Cnjbv9zL>OrSaD&DKeO9-x-FkGn^0Y!H3YJftGR zIqfaT6%QVrdRaSOxOir9p7`??@-%#3oY{u9rLcN*fW9%hlak!kkAR0RK=yQWCX8@-7ihM{!(TMQ(o3?Mw-sn((2@7a2N2QuO)vIFai1Br-Xi%^ zVE4^NQp{-g7y;d0Ngy8bsh?-$8>3j$tun0JXyd~684MlU^i=(F~MaV(_2(vFjgWj2fwN@6s)+65ENf431saQKT+7V-`QT4kmm2GoD|%#eP8)`RwXi<+`I9V)l#p9WTvo^`Cqli&m+?r zRe>IlmFCnpgU_f5(}i7*>&%_D`<3I6Qm~}U@To1cPdZbRhHn`mqGdHTc>d>;ElGL2 zqu`lfbKaFQ6j3Fa)teCcQjQ>+q;uFq=>L^-o3k2wTf&C){g+y+~T_!uC_)!*3< zp&sm;MB)#Zf=xY;;u*L}8fv2#o1=RMF_A+&^bkz@FIb$|loL^fT$o>9UAb0#C{j`4JCy&noxj4() za_8}0NugRMU%?uoBwz#DE5AL0P)o!@)<3uw5OQ1k$>kn5^L^XO8|}cZoOIve z@)ABrkjpiBN62R<(vW;EWmXi_1Q(v%+cl^A=bPIfyTC24(tt8c%NWRau)~*XOXNFvM*H&O`co6)(5 zRSP8zInga>c&Ak7(JB^1oQ5`apm5mXHN+g6Qs&a~D1R6+>giSUYRhS3Mkbo9bI}21 z@g&lY>WVihnuJp?Lwpp&Y#Uiwrf9x!F%OBAKM(yEcPivQEhAZ`oFOOv^1T(2Z^*Xp z#sBGINd5>jgV-Cg$$fu05c8%UgRpSXp6qmZhT_f-|3IYbX|e1NKh!-}A4ng3{U4{p zU!;F~3V(F>Yf!O_St>|g<5!YPSc%sD5Aj;Z_oCEy{QNTh@yX59ZC_8Ip6RuZ-Cy^a zp{u^X5oK8C7GbX5u|5`)QrYZ1`DFKolQqglkDUG}su&VRP5*~dpVY5NS<^oMKYUV^Q{1<^}Md@EKnv=)~ei}Gt3oSDt#w0BF zL=bZb*lHUT6+Ke3QJ+P?UZB;lny4tUe4*L!FPI5uNtyv=A-fb1N+8tYA%%P_7R`#~U}^rsfm40Si+=aH+n+C;J_m3vi%PmFtJ)Pg?qq>ObK~*>IYyQJR2f zFcgTP2S-r1DIBL_@8|HRqpma}W2ihx8S*Dl%AB!ik_7I;*1C^CW*RWFwa7`xpllh{ z>0PO3YAA22rst+;rFp3>K@UYV#HIpGin4i&p^8+ODgU0zB${;(4qNZ%iaUxXw=O3vQH6pmzzRkZ4O26{h3^0A&{ETeuQme>7x|E<t=7VhlDb|OKS&`@YDdpm-peH5f zsD+mD#k~(1|1cONr7frSQYYLcie`}&L6t`&dh5;F-p~#mw)4|Z;j|s8`xAQgcM^Ia z+3(DgeAQV6^ufU6Yk|U#Nmp-X^k1d)1b+?O>O~5&A)fc0c z8kz(7U8Xh^Me2tvxa*X^1~tqb+E&vYLWe$d5utSN=UEn2)MMfYNEH^krRg<>h^|tq zZwJJOM7QYCr|F>*pFKxItY;dCU_GhL6X;-v=Wy2FF%t*#^@c=VmUt5FTWW@g07Zon zr|K5~|MW1_GBX}w?U}McQ5J8pmdIZZK^ZP&wKvcwYJ?)9ZnYj$>I1NQT-1o{avEvr zHJe!FJ=6%pmX`#Rgs%!hLF+9!Q%$T`)hqE(4rPx~@`SSb%1U&MTY9(o!SRQt!P7TY z7ajbh1`xqzn(rwDs z=(HOm+NGl-Jl~}3@lj8Cdc~c4ABryx%kK^DFKgZ3VEuUO;^&7J18U`vvi}}|UtzwQ z{k^v)ok_Ov9?l~L7yCq>v!V>5vIu>pV9*_uCgW3$C!ob()o7CR&%)1o0$8urSWViP zq?eE7cR5TskhZw4OpVH{`NaUG zixCUK&%<$xz&>~8Br1_Naxve31xgDQ#Cf@M)zSQB(#KGK4!;LtB zR@%$41Sf3`#mER<-pgyroD@GAp6tBP7)!6+bw6P4Xu{Q&;*Z$a$9Csx8eyklQ~Q1t z8;GlOvH$%FioBv$dw)IF3duE>Yw2T{EVQ_85~qw76Hn?q3PsgEKD->3g zq>JLltkAmBMITdYA0xsqG<U?e z?w`yG8q|*(i2g6^0L!J+Z2#=lME#4lBZvFUgRcMB{r=5|lY{q25_djJnf@`kbmp|i z_S#zPW$FD^CN>ohF7D1z8qg#p!}=Lkqpuji`~Jhz-6$J|X-z5A{3)o|XDV0py5Z;0 z08dIolWe9}pI^KRhsL^Nt^TgO+mkk(ISMv;LUH<5vm+0cIL|~NQ`X*W~Id-AL}w-Lld1zcS0T|UDQgz?Z{(t0)jFE#?eQl zEer2$XG)CXB-10G0o{8f{ONVEfXF9Zc~fj;N1A9gz^^}b%Akn zOP*)%nsEEkpSCO&e^{SeY=-V9pP)ytz9*@WpDD#xZ?&W@Iou z`UVL?z0^|~l~xDIn!?DyR~+D5>QW%~@cD=)scc>q-qe9ujp&}z{Sx9HmefPj@+1(o zX|jV(HI=}iTcm*XNJ4q~@iLAmrj8&grs{r-!E0r#`Vw6eq=8jhiBVDa78_j0Q~w;z zeqyYF%8j}>oOgSjMu_u4wEbY@5x}Ef?lB>_V8Re^k&~wTtw_6TC9t{@y*c8^8>yT; ziY}iS?>%}9Dad(`=WlW@KWPJ$%U!1zHsX3-vZtFb=f`PP-&4f`R_4BahylK~_Za<| zP^Yc*ETNz}JXzI1Wo&?hYq(zDxU=wOK$N2pYhoYKX($#Ms4UD5fz@6}QvYG}&EzO%GIMBWp!mSv$yD>fyxRdgU0H6Fy*Zf(~CV*%jQKk994C)bmedis%O4 zNDK;)7k-Bop|Jq?7#am7_$BTTH6mloWvjFdQgB2A*ac-b=dO|gk?inA!l*ikF0=?m zn{iCt!KV4~fHFUe22QylbogS;`3UTVGP}o00K6Hvfkb=i>L>W^-OZXSBL2qAI{DR4 znTxXF6Bk ztGtZ&7<3bWaW(daczyjys#MCL0BN z3M#b`>Zu$zUQo(WgVAWxt%|&j##a?nUUScm)8eZ$O$Dvogk)Usp3kogkISP}8I zW$Y$8@x_Gn*Uu-r-@2q^@BXp{c=IL`?W4B)<6fK6aR9G z-*1@LKGN*I=N1CnUe~v`aZI6vRL7_{xY`Yq&!IIiYjQLu_D*|knX94n{DY?%Ozm>Wnkjv+Xnh`E(8seiQmt3Lok6Iqq%i>c3jrJ%`qBlV+ zP;t3t!+IuKWNk)u*Y|z)CWu_p(Fm?Y=rOP%ELB6$*C3J9FrG+muw+FGoa@>d_u@MFM#WS zm-mfwImUqnGC?J?<1eezs|)|@xr%>WZm>UDjCpA2=Dsr@C$c3~Wpj>%r$_}!mm1iu zev)6aGn9UnoStFLHeQ1l_DrdJdpo zj%=XTL+W_>Y)t1UFk++{Qjl5_ve;~T7FA3>hC6yJ0w6Jk7o}wo;B$F+nsPjehdBdc z%ksXn$BXO7)oH4n@x@(tc}b~uS;3|>cIH3u%XVq$@{8Wu*Ndu_bS*%Xr0g3T^@gI zD{{VZ&*bLmGuj9KE1(}9+$XqhCM_w~k?+7(QZZK*PUJIo!7;_QB*?l+K26lKI?ofu zBj{ygSR*W>B7U)~yp{ykN%G1kj&>40Iu{JeHV`&yAl=dRO^U@uHD zyz-=HX?2IH`MTy^^`+siP7BT=MDko|&>jc-BRLa{-f;XX!kd3W5kGM&4jH@$>*>>F za9(*&stwX-nDCF9?z(0HOd!&FT>ZNlM*$wnD1UAtDTmvUGhx0ll+rL-b~U#+@bvoQ zuL!m(VJ8@)Bo97N?5~8rFwVG>_)eoGO^T#62E~d$A)wCFUz1hq#%^k3KjT`Xa}@NU zH*UoIB)7JjW1g^x_dfel4>*+NsfL#?y!<$7}Uh=~X_SmZ4 zJ1;<2WBh<@8CY?&3hc+!5YOupose3%@*ceZt6>offt@hK5YojhF2!>o~Ng zCl4S6pq5loH)@zB$Ph~OFwcDo9+F@${9chnggBsa;usWiyjX#l8is6}gg7EZtxA58 z;5gYqr1E8mXGcYFB!uJIv?&%nl;IJzIjl?9_%jw6SO(yo$L9U&6wOecuVnGRD_weu zP3GybTYZV)cWvvup0zZ@1KCfgFC@F0_}xmMy3*O{oU77W!pEY!G5RrZi$S{?IuTt5 z?*jE6j*lqPT0R&%Jov~Y*31UTIHs;{u9{yI;yz|!zVZC`b!_wQ#L+(|&L7hJVz~3` zxq)i!@lPak{>s-It%m?QD4R?78+_ZAD-Jo8J1C~RHd?S3Oo4XXCP>rg*&?3lQI_Q& z2j8s+DwWmURbXFc!hYJ?6kWlOqx)sFa6XA+)~HDU8@P`U00pRqB(Uk}7^L9$sP3cz z&B-US&3PWDlhonxwV^+>xX6>m>?g46+AQ`;R%mX@;SI2~py5zN;%7l8)yOY2OEm}f zoP&(oFbuWDf;ha+P>dpT@3nIiRvte#$1aAne0;{ZpL;a&CmYvzCz1qcc-)$ID(DZM zKXx~$Gg~ndq(Qv8d*yH?g7t+LfXoSb6thQ=AJ}|BrBEoQ;BG${<>Zo&f9eZk2-aT(d*tqaT_oGotXwxBwyBki z+a)GH<*hVKvA7t=X~Wlf;gBRe)m7HB2t@ee!b$9tB`A<2*p|AqUC$L+N->4=`3q%1 zU4rzUR6*R5;DkF_4H0rjg*QZzsEi3>!fZUAUwt=oXFeQtK%eby z+%8emx=ca4-CkOOa4#Y!QY`i-gzNV`ccxJzQ|m;*jM^;V3eQaZ5AHzc)lLty9bs@J zAj{5tqBv{$upT|r5bBn+{r;3~>CM0V%emi9cdoOtetl*uo4&elxc9Wh*{f%ZWezuF zDEXKMsrQQ{lRIB<40rS7JtV(Z4uxFFJ~HWr&GJ1U-yb|#M4!O4>rB1xv3$`#{x4)j zbO@G;)9IPYYmwa~HL6pQZxKRui?Woh3NkQsEeDXZDAaTsF<}?TwcKqeW}|u0XrYY! zCu!+~kka8e8PAUGDi2nvL9CRcXrl8G70E$!KuwX{T-1u+R085Wifuk_=^CQzL4Hc| z$^nCl&5xLM6g{ZW4p|NseuDOR%K0xhTHoI-}a`>ueW5wc+>3%tvwjPnj<_e~4Yw8G!z(jt_N%zYQ>DkFBQ| z9+ooeW4q2vhUmvg=b_Wiya|)>+k5R`lympSD@c}w;m*s)thNVPj%|%nQ#PBT*{s&c zo8a0g@|NtGukxDb_BX%2@z&>prov~K%@ASOYEYhT-CVqYLs_*L=<2C|RkFF@#*Aac z?!1sRmuxMyGPN}lGb?iQ9vQe3Zg)J1>i3ESF`JFh*I|r=+3u(CE+R?VAd@uPXFKR* zC!Pyzb=*4?qeNmO7BUJ#9ZTJa?wmFd7Nk97eQo8H?}wF)sdE>tQgRx+F#Fs2VnEXp z8WsphuVcwYt4G1wJUVHN2Y zPyxO(o#q)ylck@mE@tLKzb`LK#ay+Xy}P_q1)zzRei_f+Zrm3P2BLmMzG_PHv$7h}gu1JG>8o zZHo#ECmdJ4%>)Y3iVM_`dra9h#tS}d`?ZD|>PWVQma(J~`GNV z=UvbEEyH_$8qFHd9t_@-0Mzj+Z>yPjF&cAgjcj->{PaEgn0fo zi2$dwK-G~#-c$n*8&67Te2Aak*{fw`@5y_72U27YA$LU~Jyvv9Y4T5uWL+kf?i_xV|Ij(BGYPz9gy$~)F!OPS}a}T)G-Lcdy-n|NN$EJ6D z*gskD0FziEqe=_ID@uGUQ9X3yLiT^>oX1|U=2OTb8Rt|JmB<)JiQwQmW$K5>-#=AV z8|DK&C~v6v#nrz!-PL5*w3dO0!&(mypnBfNll7|k;p^YIF)vmaCym?-P>D@#7Ee_2 zM=&xG?KQlrq;NXv*})nH6Y?;4vpfW+pHxU2L2t_cx2o zErutr*u5FLMbJ4voS?qiEEm;w*YKPS4%qT1d+%7L7Qgifd-HzywSO>TZB&n;n1Qjg zOJ(3aCVu$+nSeRZ?SDDwubw;KwESx`B~72scwlVtG{yJax$}Cj_-*Dx(iga=FE4Ht zytAI49{|QMPw+Xx31{XkBH`|V1J{H3a&YY_0CH|oFP)-PAxUS_TKnFrK;z&aLVi3kJ zvy|QXLPK&z1N5d}w}cR0m00@x3UOV-o*oXfuN#YP-0?9hA!+z4Ww@3SAy*f?qTj?q3v#id~>Sa!$(FR?Imdvpx z^GGqX{_mc`E==w58-W);&PsaN{^#Da&jeIVY7)on8Uz9S@Bg3$SHbFQJGd=Q|G84wKwjv@Pp7o^gP0d z!siWal+GW@B@{T=oprmxw}`k=^Jp<(#gSA5+wi}Ro|kZ4mjbA#2BZGe1fkYfe1;8G zBHDWm@`>*ZU`aTVsK9D(&mz#gAt^)%XI*@%AyS~IP4^>Sl{3vTz&YV3WLPJ2ERp_+ zWVnnqEu&Xlfxj;*S3C`F$Z;krghhC%f2w*cg^a###BG1c@ojk8mHCE{>vQYbRozs? z#lr?*MAF%ab6c`Ko9-1~Rj}-d`B4wa{`UuS{A+WX_#AKryoV9UxDORGP`#kF#XL3C zaI1SJEGTa-PWDi||D$sm0r^=9cj!8Gw~iXc{ylLepeG*VWM;6_!Kr=8#$4Cs-TZE9A(R8t^&KscDjYtd7-yiL?%K&W3vmvWs-z^-;I z)QW~{FfnGrZ`d;Au5vw;eOV)EIB26zR@=l~B!Y|Npn@ExPIzLSmYyRg74nM`H}i`c zIjGf!uOYbdD9VPx*5Zq1h92Q06~f6SKDkvuc2=1{4ohZ)=ev_=vV@R6%?z3bW6Tf4 zosMo$+3d&E@#=)@3#zCenERrU@JC zr?S$w>!(VkN`0~AzC=q{tatpFH}&j8m}4`q+CHNDVUFRx*5t^IJ4K?kVZ?QnsB(aI zl^+AmFM+~~){h;CdB(O`MG6^D~EZr;&D;qw5Lboz2j zy}C#pqRet2MC6b73(X>~Bh=4QO@JJ!&9MQ~R#T}W-lfpQvaU$phbcLP`nz5#1Xj%N zCH!Ofmq5T7A;rC}v=LxbgXT5KSAqY(3xIY}Znc{_R+STrJd2o-M?B;7Q?d!>8*`?i z+A#7Nnr)rx0TYr-Qm^kJ&+EHXwYyn6iJW^ujWK7PR>u4RHsdt7QB=k7>`H zbA8{L05M6qiyjub_2W;t%tU?|r4QhJ+8Jbg@3oFi_5icPz$;w;mAN)KxGpT&9VRsm zXG99=R)`hVFSSDdJ(0oXnOPNEeC(-%lGAj(%vS$We!r&7`WjuZZWsJID6g`YTLBlhd) ziGu`Jyh5La893v6gL1nD3Rw!yc$T&ik~X+d{Wi3F;e+pdw2z9YK{wCt1&sio4B`Tw z`nrpQ7;%Vtj*6hOj3FozeQ{R=bi5$J4J6!2T0^Sb9Nd$>-2uP%FM2mU{ErhIdY*d3 zFp^Ly-f}@!)vwWeVDz6z0Q%oPWTR+6gZikL{ZWPVEQhOb+6Bw}4{@a;(tA541H{)y zh|Jrbn``t;?Wj|;o#`(Ik(xlG)!Pl|a8a(6R){;kW}yKyKu6ZhFOxYd|i`TlZ8yA6%UdxKjF(tpy%)X7Nlm+-ysBnRvWUw zdX{u>ymyA~lFGlz;w}hD)akn~uyr$nzlpqPDi+YPdO#kvpB}?3Aq#$k8#Fgl>BoIW zoe9{WgQ;Z-BbBh9Zd}ANRJcO70`d$)Rru{O>ofs~Kaj>5z7WMWV*hR2-t09Kfsjf}>aPOU6(m*j+)xw6k_vL;@O7G($ z1Z~1z)KNX2E=_z}WT_ncF`jDK`vZGYN)^ew5q{;4;m(`?ns?idr>nlRxu$5$yp~g3 z4eSvQDZ>c1=rpEfCStV;$^Q7UgCFh#)h-k1#}_Ueo7g~I{ovpr z04o8U*^7ds^vkIIq71*T9{r2iJa-hT#5KU_kqXYh>8 zp{AI`^5%8`z#f&46l4_>n3XNZqXRBL4-cH&URI5Tl(i4ow>GCdM(l2GoD}tNXZCYQ zI$z%LDkAGc;|#^%S2$-y99S8q{UmdCdjCtA^ND)W0tx>}pBoWB$MW#8YK^RK=9 zPl>%wDQQeNz5A|U=b#?56|0y0o{`HHzc3|yXmU}bTpEX`m(0F>2ng*#F)}-k<2UyNtbbzdH=Ky*Kb=-VtVp)|W^_z`5_n zR?1m=y^6BRLQ;JjMlo9G+Q7AgviHUh^bcjf;1t0-6_4mTN&glRJv9|Q6#TZZ}Z%#_kM{iMya6r6W-=KJo@n>>i zCt$iN#;Tjj0`WWUzJ#7voEwF$ZoRlAGZQNk)-9nj1=uZhb3-}($dkUhwC}pGTkyKv zUnhGa%yzt(IlB=jqh%CZ{pi~>57xC}7a6wQm*AAwCgg;)?6cmX|7Xmg92tIf%Y$0p z<{C_o6`UuDg{|QpW45!Ph-lnJ=)>pLFJR&?pLl3EKakX{i0U;|IM7hvE z(EvwTqS-X)ykgf-d99Q?WCR`TyXzf4`1xikKkhPytWM8G%cRbX1 z$iy%77-S^}wpK{A0u_gbx4VAkEWzV=KO~@usJ-R-n(uI!6z80+}$9KyV6g;|13=-mMLFT zZ49Mckv=NXAlK8vDrPI;oRl)7aAQ#uHiM!fX&dLs9Ik zkvx0xYxwKiCDuZ=BWBCnQ#eTh<;2S#B-SzagMxFW4y_FXe;>qixgu*g~R6Irj+{MR61)VtR=FkeZJ@9tO z%Qgiy*;30bQaoDxw1w$WnEo9T%G83Z3B*2YX-F>YgRR5c%N_@O_3fzC_Ix*Z=1ys@*U4bDPpJ01$)jE7(v56i_su_k-_Q+3uWRz}O(Ub&l?`~<)?h=~ z_PArHkb&4vA&#QgL^%-JW_YA+E5&wn_SU&g?H7l52k(PFs;sUS=w7pqQ~m59stwQO z*N+YOA1>wl^^vQPS`1O8h`2twUFri118Rh-JkJ&lEg{99C!YMQ(QlIkQ2!dH2Ai1w z5DD1*BM=bR0=u9H67zDTTNBa0{Ng);yL>hhyqy$&9d87E!&Y#N+y;EiMA{&Wa6XNq zKBFs_!c68ZLV#tI>6}A|^>SPYvQ1*ERfaL-DP?}d9w;ve#i6*QjUl_cGoZSLqX?I6 z%H0_RW!`bUF3O{I+}|zekCY_}Hd}|dthGVOe%NrQ3my;GmUIuweQqj%z5XEom=&FwQe-BB?WqjmpRkDaS=|K_&#%%=wgr^thcOm3Z6S7R%gGC$k0E*>}6PqlVG z(Pk(;JBz<~6|_gGws`QCcGLRsVV?s(LS~_ytwYV>gVY3>L{NDHoWC_()`qF)=*p>M zcHPO;p@?lBeh=)}95gRE9r`l)uv`9~qcC%|IGJAonhDZY`*eQpa(S}re$$6U?Y<9> zbJJWd4C4RnCq9(1M$4~OgM<=o9C~Pz4+o49_#AJ!MH2MV=N-{S80E#xJw`mMgL+Ag z9p7jTWM5wE3$uGkhKa`KkpG&~JbGT~espAASWrLGtp9GJKI3M_)J3VlmDF~u)4cZR zj^=~`I8P@kseD^9;lsPKp$`ACw8Bxb&M`ABl;OtvoR+BX=T$7vtiha7OTLMFGB;LX z@5_uOk^)bsyYNP=q%teZyX)9t{Tt8_$kZSnf_ekL`ol?H|8Jt93NVtlg>8tHF4rS))q^j_t5m^ z*wD?z6Yd2Ny>|85S08=!vA6+< zZ*RukTm0Q-ta&CAOX-b(H8Lp4GyY6OCym|AmCVF1J{ts|C2;|X7B9&oDN`@y=>TaZ zu;eMr1ja5mH(`LOk1QV0KfLk#fB45rYGgi~xW3SdPvUbZu55y@QP;^AX}*tDV-QZo zfaRQ@{Blo@j!gkH$If`_&OhC04%Fm?D!mlt*aJAaH7}kI6arV|fq56M(eOE-Yyz*w zrPxNSj3?JsxWljD;*nm&%-G9UIT>N({Npn(9PvZVd%E(43&kw!87p1+3p!#8dyPfW z7eD7H`OG0I`*V<+SmlRsb3QUq7(N2)!IEiQ$=5fhi3MEEmr2Gk;x8HTYV7nKJ5aE zr8K;y-wNUPLSDaeRaL!W=&@ByJb}pwOG*-tQ#QIA}SZK+$}4w2lj(SM1l&u%GLe68$uANYnGQ z_1wbAe1f8Uf;`))lC&T1K`?Y`buYdQ&LS0=LY~`2wy-8TXQ$0N4 zj$i%Duf6sql8oGfvG)`p7M5cqfO@SjIVVZJ@-Z2C7Iu*=nQWkP)P|IujrYJ%f`OH> z45i@vEnz~AGB{xaViN`CG+OddlT;lUlV^mlC8K->)7=sQK%MPbO-q1u`*u*g~ z)Z+q|M@j>y^pflG%#9-FmcCzM5BbOYnL34hl-{N~*ef)??VJybMQe^q=JPrC5iIIxxcD+|>JvtA_ST4TcpVbMF^)YAoSGlW!0@4V z>>q(Cf1$_zN({P*sZ0&gDG*ynp-qwJX>$JRS~bIebphO=XHR%H+vC0R%6GnyzuXjw zA9rv59srZB#nl_RP>n#+f+%5t>Qj;l?!;6=kyK$jSGDvR*7PF{CG^*`6QICeHWD;X2bziJKi~A;=qp&TJ%$wapwG3 z-unZ$ggu6oZP{}XV_n#^3OnK)H)7LKYlWW2WM8J{n;J9Zb5!dXV%~|t^SIdPqEj;B zBw8Q6ZF|ccqvlXduP>d90h#9w?pTxZw}&4#<9nzmw^*1jUf5%kb6PhUBX${$dC2+j zT$rW~?~cuSNfBg=c^UC}zD2=eJyET5Fxs3W85ix)u?^ig23B_C-8$eg7Wz#q?D3)T z2A$Z^IdCW@$!2`1N^Icaiz6wR#+{x^mWsoF$~`Bnwe`YR#ho)(h9a30j;rT_$A#MT zJ=?})P7>E+YB>zjFDD zVLDt^JII+MgE_;#_ZXRR_g-A*MdU^36D{7?|MKf!P$TZx_#vR1H#y(6VGJu8i7&iL=+w=V6GNL{F8h`R~EcTPy?j@#eq4sBrrsM7N=vXul6@zSuQL&{DFr6dG$#>az zy~420D%WqVTUgZCJuc;?urh~HwOn)BFdQcrF6lUivIncj&OB(2iZ&=U?S~F}S{vrW z{h)pR(RU1}Ys@s_@YralPOf9upR&YtZ01j2bzzNhDXzM>qQ^0LGgtapj3Yg-nQ7Rk z?z9DS*wmcT*Ngdxaf8K+@udIg(AWFfvD!vDoO7ku=VNcJmiX+y4ClH!KJ*J$F%5qC z(w;+H{SuII<{s&}#Y4>n>nn#fo@mb;ES=CDduxkf>@TvlegN~u&QU7nOJ z0WnrWWx^={=~l8K=Ws%1FW%Sbu9HQHnMxT`i>EO9W-v~$ftx2H(a2J<(VG6o2~`^b zCnOs4uAfewKrxmXL1JhQ;5QkVLvP^b2~G@LbVTYWU9S44^pT44B_?|md)+6UJuqr0{K1ZfcVkp$|rx+WU z=C8*BUSTQ@#g;tGJRkODsPvgq-ZQ@0mmX_qY|cgb%K0!3bYL-85!;w6j{%dE|Q1Hn#B8w@zyIcXT+g+1JXa04X)L_o4Ewu{)m7WM0!?yzk9v zjl(?r`PB^Om}+h;Q+!|uC)9=@_Zzxk3!nLn7uOFxJ*G`D8P||+zWCywlqnE?6-#75 zcjmp^_R8GLF&>M}i!kU5&wu^OwX0XZz#_)~T0|C7oj|HfOfGgq)`l5LkSn-9Eh$6N z`T6;kAmU__PQwev@R^t)mLJ*F#;17X zBm9X6^?Kz7r!`>i!f#?G9ymI=J%+$R2VagW92o1YxC?FAReYmwZ@IRPZ^jsM#TE`UkI?<`r*4~T<{{KLB(pDZ z$Za2K!}>X=6ub1%i&yyWvCvNJi8IFSeM9RIT0z5jVwYR3CqC+xcnBxv+=JR)guagX zog8%szr=&o7#!E&w<1S#8+tXj_Tc=2>gBlygK;U=8E>8&^dsION0}pd_=%TsLCASC z20H0I=R3zOJz>-vI>Jvm+_66D;3sjQ@=<+a)G$INMb^UCxRop< zL?wmTN+?)P&^jTc!^MTo2|&B|bOvoWp%F(_nCM61j|+@4FOxkJG3Cm#z{ry!Ou{bP z6$2-lRcgJV+0T zQ1h9cc+a^=e>F#vG3VgLi?M+xe~v8yCbHva9w&F$*dFRR))+@1YNTyoS*Pg4$e42aautgg-qbK_|-^R0_ zu`V!JGmcu5>|`wXBWCkPyty8ePbj%I)=ybIk(6EeQOx@{7HQk;JucJXKm4eT{~W*a zeCXwkcJ77DZw!N%=S`f9Lv|6@+^4)JODW$17x~mB#?)i4)}gsg9Q0B*BoQc@x#n5@ z^94XE|6uZu0Db-6|K7jzKLflsl?i;B@0l6*NbF4h#<9t4ddT-)-~RTu{sUj$(4+sL zzWC?j=0azpWdfXaP)TPeI|I&ScHh&30}Sm29?$)=8ZS+~jS{J}G^&qdLvs@C?1wFJwphU%*aI&&qIctf& z^!CPHydH;b(GT5$U47!5zKOTR95Nm`YAn!k)HvxY9%RAOeD9BIn9vZ0=M=rPN#s8F zD9<L-?I`$T^H(lyTIdmd0WoOJ;v>?xkC?RZb{R_U6nOrh$dL zY|pkU9^_zp3t+Zy-C(~94Ijj51`XI^N$HgldrNwKD0j>2o{F(pm^ zwVq%`sN;esjIcAs1f7Z{FO+$)%ySY2=Z4oDUYON7*Jxv!qNR1L{U>zBh17FkDw!|J zV2Q!I=9_-v&N0&OF`+tih@W|Fd4${tddT}8$hgKwo!E}N&2>`jEnco0eE#nz$MmD9 z`~#pjUcsvHCWUtrM`h|s#Old+uOmia0jFU+E0rr{rn*uV)i)Z_! z%qQR(v*SdScD_6w)8LO7%dX~ijH7J9;h1?%4;#ip&XhfD9c_I#)@|sFHOM)EuUMN6 z{T#RBPQUmZ7ZI;d!;`$>q|bT}KDZplkdJ^iKczWlwKAgcIL<1+50XU0g}04l5~3~8^$D}=%KfHVh@eN6?U{o!dLRI zv3d-70t}R;(c%sXF<~d{!1aknpZ374O-Oz87;o^#;Wj5V?S_Sp?e=UC6s|W+^m3lO zK0pym`r&$m>8>!l7h1y8BdOhwlqS| zbk*NSh}df`nV-z5v;~X4$E7jA6F<&@p!VUpGq%Q4a@n`Ijc46Z!%>ms4q3C4TD&3i zJU|ma;uJ!@DOO=-&JVq&Gn=em%~vpm&77!B9=0R&+&?qsP#dwK7cUO<(S>?m)JDj< zm)tj}V)GV9$~>|hi}*EPQmQv=rF`~=uMiBb;zQEUvEI&Dt?xC%qQ~hufZY$yUFilB z+hHGm!So!6-AH|r z4)Xm1=}TCt9{UnXyz@l46X58w@^}dF*iARw@cX_6;41*sBZ4AUGFbS{QYlq~KVcOx z)ub%wL@WBG>*!eVV-iw8NBaouT=*TVmT%T5JyPjLK>G|pZ5uLyBew^Y%UY;uPb7Yq zc!Knw^o{KhA9xF8+M0E6nJjIyy@<^TA9{2V!ygHhKj49_$kI`hdhqG+Xk4@pJvx7U zPb%E3l-P8(N@V3WuQcj)5q&NI&T_J)Z`zH!%gJOzWCh1(hQ`!EEX3GVR9JtvR*4Of>Q}z)B z2{7KwZ3WHcE9q`{!H@|`@u8RrKO=`2nm(Zo4zfX&pautc`3A7{r99-LN5iE|5^dz> zX) zMNM?*Q1)Y!>=Mn?5qfIFclKA&$|uoI>Sg$5Jtub$)Wqc1@FWMFzs3B2UhAf>Olkl(r+(^cN`=*r9@RFN3fz@%bhkRf7Ov$n~t5gvY=a?##$%)`0(HvfSOkCc~Xfrth1rWQ#yOz@6d+$80a}C?^;14g zkDcV;5 z=D-3YFQJct1}Ku16s3Z^2BQW}@l_eMdv}yh;?m$TNEWI12&O3R3t!pV2$uR~yPL-P~0V_P(g%iFC-oq1(XYxZ9{v_FV zt|t_@``fu&_Hrf-WQ1(|VjpI?v{>k#@nt;tISy2YmwZ!;?9e~yQhw?!I@?_|!w1PM z(aYYoep6@kv@akDe=Ky)_!Tqh!(whdftnWI!)qBkq8m7YOaI_68qnKEB1Sb}w3iIw zsSUaIahI7G!WT<)Lyt=0l{^hnK6pi~=`dsft0bLV!8dL3F*x(?yNWBzZ~cJJCU?xG zRyM&uaA)k5KTF5dW#WoYr;nudi908|$+ycu7p3wSw3-~6u3PxlKZF+pXYSkV>jm%9 zZRiK>phrJwbHdUYHN^Bw!x63MIy~``zR5Q~n(K&cCA0gbwMk~QHQA!of9a!p6ws^cQ^n->urKjA~ z+YadxK0+7i6ZGEXke|sP42zbOmG<+;usW~J{b#9A=s|0&Pm*3H~CFCes+>xs?c9OPO}e<=X_FzJpmjx zt@< zJ#m}e29Sp?#!o!}rN=CjJpFb|V_A6M47@e|oa^9aenYJ0zg&357d1v>_UWjWZ?heL zOrL}@sSgYEm{XZ=LPO0{iJxy3Swh4}wA(i1*lytPS6lI*-ISC`)RB=#^uFkDN4@(W zi~rF$boL(;Rcr=6^Qu?A{KG|xQm|Mb0aEJXdfDx#T%NPzDW}#+E7UupcaF-R`t;>* z=2bxbNk`rWh}!@>2SDf2hxrUZ4~PtmDLn&SK~{khk)j|}uo*D|)@cUw(zWm)$XHN? zV?N|Ao5@D*pdSIhg)?AbA3Rq{@&lH<7%Vlw+aQ3%GH6#~5~+#A8v^4bLhw`pzecJ_ z&A17~ZMHwLZIcJ?kk=;)bciG66@SS<_k`vom~Dm$MS`;rt%DcH*`6)XE%hya(QKZ! znS6sTb|(mEg9u^TFO|;Tk<#lIu~#E`>JvF zPc)2}$KI9AqTBbMZA!gsp$S}Upbz=`2;B#;vCmz$O&u@k!I;T?1RgZXqfFj?<^>eW zfd{_*T6wljo4_XxysS?B%O=3k%4YC6iYGa3N|sYNz^X;fS`-Thfc+vn6Qh1JUIt&| z#uzuhIY%YQh*QsT0nWZ|bC_cybdcV~*Lo;!6bJO9p~;^ym$GvK7u5WW5;)dt+Jt<3 zKJ`$WeO9!>8T@7}=2(Yz9@4DYi6g0^KkLNJ-1}#Zh&pS>HDCC`8%haGSRdBFuBG0~ zZdaZ@U4ZWP%Jl5ruFCCJVBHz669JTOeeG|*@^|Cmzr*>*9Bz%B-O?h&G4|MVix`-}mR91W1?!E(e=p8inX-N{lS#~Mq1ZmMGJoS!p=^*>t}%Olb@Laj=*?d=@slw?Y_vESzB30gtiD2r&_%TT=2<-@ zbW43xM?j%i=|*>waXoD_fJEh;!H^9=LZYB5pK#oqC&~>dt zwiM2=1N|ot=@E9PzU25PwT376{%<}SSBYaIpiMyJmtFRWHwSN&hEdNc`-q~-XkMc6$L*;7ke8KH_)(4mefnnAgM*y4fHV_zq zivjEbf*dF_Nu~x`PHvjaWq)yvHtUsCwv$?13LLfufA~t@9PD7w&VkHvl>9j69_5^5$um(BTy4OnuGyA)bstIgz)!!XPE&ty><`L zr*2eB&wx)@;>gntpLXNG)BIEpuHd^p8pT^UrHJjTYGmPK%LmxXrW^cdMm~6vXwOK< zevig%pwEJj>hLS5vcM4?eu$JZxK$8XgPxWdlfc32dSpK*kKsS@OaDxnxqv}CWWhf8 z5C27N$S)nFW5I{q@OSqQT%>2S1&xgF9GLqDy(p8iefo}iw0W%3Dk}>;n_T12zDc{*-TeTM(xtJhV);n5&?|VP zzLf~S~7_G1d$Rg-_SHQp37kJ5>iNw5s)KJLAjbFEmX4n8?$O(Hr5K=C((IIV@ ze<%w8E+y!u2As?x{u&?RvY0}uC`=$d@mp|xI?Z5r|Ky0^GM595gstcth& z6O7fQ`e-v<;L}<-@YB(BS9AObkGL!z)|d87`7DKe769;v4uwG``&=)(rpy(MWYt(P zP04qaTsDUfr!VFhbBudD*+1%!;MM&L?m9_dWO68;?azXVU@mrpN9j4`C1?ENv7lo7 zB*y?#?)?iwB*C+|`VF~jox`UY%cvavEC&3p{Af<<`)nf)=ri?O*8?2l8{R?3A-?9J zJbj03&=V=vhFbht8+5W5bv_*Tg=@a>J2zZ^{mH!kw~!K*ebH--Q>4BhO{aij>wr8! zB|DjXeGo0cZhggXz4R^dUgsgc?M$a0jkf`K%9D;J5eOL&L!k*Kmv4Ql^b|pEyYGGNLLvVa}fg%!^n~2E&)=p$RQCE*VSRrmmtX?rER( zgtSk*i8TCTJ(T zA*znA_U%OX!H0NleQIi8)?>gZEbN&6OdRV#--UnBUGl4Jor;h9bRD~kIP!Q}>jUrN zFP+eQ}zAe#i-WuuZRG{YY2Kb55J$AnbNb3Lih%2f-2DNRpM~ zYWP1};x~CDF8x`)wN3CaAMu{{djl#~!f`(UiL&&SwL%de@ooKQKMTY3w5RU+EgW>G zZW|H<^;{}3nd!H05b_c{HntQz2S50PT*n7kOU?n1{y9%(8-48lt9I!gaCpOHm7qf} z>rL*N(i;HI{cZg+bN&B_fL664^Yrf@3}jS{I;vE zy7KTBuDSYmcn;uJ{=kD?^Ej%@J!2D4p^&!%vJVx+3e4803VPUv+aj0?15Q)&8X$pzyqTXFry6|^pdQEIN*)9obZs@lk2sB*TCx-2bP;Xk|Ez% zs|+*OCXXI|Q>G>d$qr0%`F&E2iH?4#WWNg6v~JWG9+gF5=u|RtVhTTmA7?7R0Ndk@ z4)$9V;X^-*xWQGQ`l=c~lDD?6$q*k+Zb2*fN?w=U=*)lUCcUgbJXo}9vLxT5EqT!S zm`tN&+sIu8!R5$U3?dKWjC;% z2JaaI;#)D#Sh6;nrw0CHl5<)1Yq!JW(0ZCr+Sg8Yf|chc<}=e-0`$ove5E)jSw#om zi33V4?twdGiWz?KkuvrAH*Bps=Zp%C;AoB;mVseRAHRDAU-E^cTUB+Iy>=^K%y~H%)*{?>jkahMUE(GO_?g$# zKVrDiS|>E_CpFMPuLJ%;Gt10z)Qpq9fv@4TnFoECyqkZ5ocUgOL6;Bz9o1D~P7qlm zKL5GTy*xGnJS+ww?8sfF-jArBp2?AQdTPJy1b342(P6K6*-PJlB)Pk+xi>dHSNI=BjQ@O*%DK$^iBT|uxfl7oA~=Rm={ zgOe%H8JhI~o_r<`*+;e6MipLDPayV%r6i2sgm|$+#~EU@%|V*_yH2O|wC0@cMH7ev zANxeeu?vUoF8KzJqro5WM-!x+B9fK{uST66Zr^2AFV zc#yh2lTY%u4CT^qn>IQ1U+_3ML!35PkB&)s4PWZf7H|4!PX@NzDo%3 zeSV3ZKA>zG^IvYnyf{04$dkf!Glmn_d@QHS=;cYj-^ZQS<&NL^OdHeI?qAa$FHij3 zVE1v4yggoJd!Fb-d(0hLT*0mRi5$4rQ%qM6!jn+T&Ua3S^|Ctf^2;xK5uMErk4rvuI2{iR1E)_K$jg+nU7mvkmElXCL9fE%hsk+=*Xzm3{#)o=`dB~Xn5_m^ z$wS|+vvHhzAWmDdMUD?zr=jDR0MaJf;cxvWg(<7Os?m z%W~O1m^{R2^2lm1&9e}1jx3*M@o$q4FzEqJ!GV$NSK!twTjsB5$~W@SY#ODZZ}YVq z?bjiDr3bVm%U2&o-TtL5%X#($A8=%I$g|H(Kj6^S0S}Vxv>oJ@pBPh*p|2Y%w;WYB z>^1sYfAcfF>;Sp(ur21{-1=tSF*_Gg+1dDj*X`=`%MC|K(AZ7Cn$~)%9=v;#9mKje1`4x31`Gdv4S7VBGuXWKbuFarS@c`a^Gh_q*QtnV_cQ z5k=k)VEu^d>6y+xJ=NaSx_3zLER|pWvX{Q z?z!je&f$}g1Vs!0CxXO-f_Tp|g9BUuuqBb_VqBwSP6T711Wu5`9S$5Gq$(4@#vSF( z*OPDQH*{q(^(4YzigMYI`eTFj47u=*W7?8>7}vIhdP?@k&~?y4hvwLY4waa+kY758 zE)A6IffwkhL*zvY+B(Uel9Re8wkEcaVH)S?LQ1(g$PXR4b@!SN-LU(>l}C4%e)NWg zh>O1B{M}<8bpGx;A99b~B^RANbg{kkYw8fPino0Nqi4PQ+T9y}|Jnsl!GHWKcNdU4=Zn{pZd%9+dbxM zE(isxe}dnS{K{q9$R~h)-=F)k-4B1`Me-Foyy*RhcCUEn7fwJ`&G$Nc_x)dg(eB$H za)InJQTGcxNWdBGBgF2Bj-BY*5S-FtVh^Usuiz2Bg~yFn*UNg z{ciQ2X{2NP=vI)%EPly8PJVN2nPuvja|`pVMtTs%QXXnTUvVtH@grNXyBGtat$c%B zyz-}wK-h_H(jiU+`S8z?SPOJ=SP%bw_=A7=yg*^%TpzGq9|1ak%6>UM&fV2|I&J{e zx8X2yr`{>+PE-9eSA6=$E3dlhw;uR_2mW~O^p0s0aLzgBWN@5$mICB9-5WYn0ReM& zo)>_Oi5A|BtdOq2lr|Bh0U%ftSHKLqESBOqFu_znR+}O-%4uY%9*veZbx7nf5Hz}T zV5mid#4a)8qEUwInsgXgafn6J1nQnNK?yGxeC(Z?*-zPq4XJDSV(5dPm}t`C%;}z> zPX$tgL63-(<9ub-r^7cZ;nk4lVtW;ETmU)Yx9n!OYT`yM)~>=KYx517E-ReW%u%T zeL)8si68p2_ljov-~P#5o9uwP&)@p-!@H-&W@-2NBMWxx${YV6H)Cu_9vvHvpZL~$ z@9ueiEpXy@#_q2_;-0&oUu^{8^ZJk7G&TU8ujAm&(Z0F(-}@Xb{=`l1YsFzOvd`g} z_T;!<%doA1rKT}9B2MUawMSWzPmcd1c|3Xk>GHA-q@X9O1KMB_Jgk!#iC2`wJMAuQ zB&+GYibEKiKlC|TD0O)Bb8JR>{E7xeT1r010-su@v}JB+EH86nDD|^Ha^47N@dvJ> zwBy9+X08MuJ`xZ7@$sL0HT>}5!ykUhi(c@qU(x_Q&l4%< zPU*Qj?^qD4{FXPo?)mXB;LW-X5FJkE^E?2z1l*?t3CX!C^^=1#T&4k3fvX_xm!1)| zouEL$5%Mf-0uZ0HXUdC-rD%X@QYt(RzS2dL)F^vkPMO0G@Pb~vf^(y>ZphIQsG^Jd^>Nn! zqc8vLaTkAB_w><^-MIVdp!v-8d^6ov1V)t8*A%Bup8U3}I{Bjf-cKEtPS#tx7SHrc z@DDvNz3Skzb{Kvt&g#J@e3LH9=o1ih1or$|^uXUtaYlUMx%9EL5Xy&7u<_XBQ@}@$ zv*eV2=~cI51JD?=NWb>O*C!-&8$J)a(3Ru*qqpsz{D!M{PkY_xPq>i(s*wNyKmbWZ zK~(rR)+)aDLx*-xeC20{kJD$j#b)Td9anzV>AlhahYsWC>~DOVzK;#vp<8xOKcK&# z^0@nI(}?~H8%jXulc1O%!nWBP)})Wam}3G*2|ZM(tBj@BLY}5K^Qkd8sx=?gm`$6C zSKthto4tl9?gLJ8pJ*zTZgaua=2BSuKjt-gWc&&|M4*Rk)xdb=i<-P|DXKC$DSL_S}$6TdcdUSDv#<$cLF^P zQug90s;CFx3Dl!goZLa~tlp8w;=axmS6_YAZ}VXw4*ooF?D(_^;HrRAe^4Z04)&aw z6iqa=03LxjcA{3R59}am?MYJ$Hj}&+Xu0`1Z%q}@*}|_51$&g*fX>ZDa1WRU271?o zkc&%B=JvPsfS*!L0+fvdPnF$%^^HsDM$F^_ znC;8ydc>$GlNK(LkG+E*1uu%=(E=}T1U$dhJP<94wTK(^Nk1e%%_Y&E>mhiwr*8#b z|5Sel((u3Z1FzcB^3-eSkKfcj{cc&Q`$~{`4ZkJ7^kp7$KT`#(+`g9s%!P_G|RJ-yTEcnbiJJ5GAuJBG45ZIQqAt#AI-@B9A0@qKX> z;H)!_ouS(R=bd-n?yR%Uisu2&&4H;t&HF~VF-S2Qtdh=Ph(S|>R_OKPflM`nkHJC6 z#{s_XX{jbSaZXZj2UlMTPiXy)!I1SFkP8e|JV0{r28cnY78ZcSPfKXSh8kqji*_c2 zZ1bSc!L}OY!Y_uPTaJj~YPs-SrpdQ;V$d1xd{TvD&Z=y`^UvX%E19NelT|f1^?w3@h_gg=HlB_xnuw3t#A2cTm^WIzYD-;fe**606ztaGq`Vb<{2z1 zGl<-g3Qz@R3+@dMf={5EPAD}96x_8im{b!3gAIW2_PZtrXi^y8^vX3D=YZ8&ga)-~ za$pUbrVj(fE=wB=D|iAQb_AZ<(>WSo!h~1Br01|@!A*QpR{GC;otM;>MK{71e&mZp z7t@@+rv23)TR!MVJC}U__jpL_pHx=l?gOELmrfjgkB^_AksN~#)wgH?tpqugHn2Q`b(dJ@^ z-HDrg^S8!{c`x!DCli!cAy`1g%MCG(%on))8*Mp{p+mH*K0OJkbxu8i1Wg>H-tBHS zLMM5mXg?*}?X?WL^8lT`Y3Z#~&<+RThHAYddbxL)I}MmS_1K$U|GKBgC7+{y@Z+Yq z4ZxG2{zP!Z-$;&K0*RDO!A^@#)PSpP2Brd4FvJ44N^nRX9yA_k7CGz<{v%nTg3+Q@ z>*N6waP-Up%izkxd_-5gh8%c}jS8Ed+_b12{@SQu`wSJe0f$!fIgo=9%mRYF6s-f8 zsT(EMd|SmxKMNYkc%0F4{dMHgP2IhAveH#^v~*`b&u;#4%UzcJGWU zJ~Q1KXZrVCZ5FciEwSjs>of5Q_^1Ew#&aH_^S>@V#+V3SL4(h*Qe}@9{3w|7zyo)Y zDjox#v~C0*V+s7CF>i9?lFJ|9lst1#zJ~R=B@ntcl+8DN96ER&88TB}%jon8V}sFf z&@1ZjoBlC%=II?|QJS=!cg9tW^S}`Q!cAIWqzAv$YyemX zKJkfU3HT7{s_86{t+QUQcMcK6&Ske9BBd9tbuF zIu>j473UG)YS#cy{$p|oUDhRaX$CIHrITJj3qPnFV)pw4ClM@TI%( za&a$q=^Oc{U*bz28V8={3k=?_laEw>mh4!3*NIEssq5q~`r?5VonPZT`k96EY46^D z1?)+WxzFxvFPe*|Wsk)Xze~S4)bQnH8<)@jLOoz-9^@a1XAOo=%O9_bd*|z`5Z}&| z{u}9m@zg%_$>Y}TTMxAm4>`dndp0Lq*wWVfI{>>+Y`l8-@Zcq1%4R6B`^??DKfQm| z;R(E&SnXiK^Z8q^6vig&XZ})LL6H4v3o@jybMe{b>yE391*|Xq^zyaAd!BpN?$KYf zzu|g$JUoaVKmGbE_k7IlhkyIHFE2k}7x9#1BJIdHvad&sNypF^MZm{5%|CPe!P5!e zGhRCl_@l3a&*&R?%10T&Bc=m3g3lBGoa~Wn{*POI@i6$up8uR* zdu5RI#UBCvK(VbOz~vrFEe-!S*r`_R5qGNT_QmMqj_MugvO4)Szx|45$L0S+x(c8T zz+v4A@Kpf%G(t$R<6z=l(oDIVrA&ZwkScUD_d@N3QwYYOf;uxfSjaV?X%a2`bAupI z!Bpl)sTNlan&dksm4JzN4SIN+CI=e>C}qyJggO3c7Y}qE^l*uKw3U;@*1S|f*Re^M z_DT+LXd@+W730T~Ob*~|&$1?rk`IrxBqlMDmJb$}fRiUrgg^NWSLVZD0YrFuLI+_G~Q)jq&NeAbE+cuxMwp~q$*!{6@T3*H%O>7qbp&laLf4hMv{`FcWab5DJ{-L*gHRHGI zfKSt}g;#!^^8j?y_F-2*ZI}6p*Q}&(igwTuw{fUWdB`{6Mqc{EpD~qjlcNiIE&TAR zwrM+}!oGqFK|g8ha-q-Gr+eYFcnDAdS%I-~I31!`X>fNE z9Y-5EoyrK~;6?9aANp?}yy~(~e*76<{gAKynPX?ft6%Xz;7x~b+MN?02I7Ih45Au9 z3jUlJfiE5q3uc+-07j@6@6=u6FM!6GdA2hUl1uWZGI3-A_6L#;2HRx~K0f#nyIIqx z{^@`KY5cU|Hr)l9cPD}dGZh$ixhon-Aw|w z@g0ZIL6_m#z_e!! z)(`CIA;;E^To$r7eKaneuhK)b7>8Q|u09K04si=$l`ak1AKjquXgn(+p8*U%U%z1k zO;3F8lY++vt;1_Rb14iGLCRqyjmX4@2^+;OeOI2;wL@r)Z3w%H|{*z}wsFw_y#dqZ0 z541Yv*c@Y4bDJcGPMPO?7x?81>wwQD4*ZZo!e=DiBeoWQ1o^PC1)Bh=I$Kl?mXwCqo4Du z&wlZdn{N7JE)8*T_J25bhl^VQ1W^mBE=~ip?O-$5rb{z;+hSG3TCk&>AH}Feov3x{ zKd|vy;y1KQ;kNJhuG+s8-`E{kd@#=lxX+_6wrn_% zxEj#)N#FB;-814X0j^ApRI##mRU{A|61PPh2ksB~DcYP5J`o3s4aLfYjuNl`(&i%? z{{HG=zJc2cPlyK?zx`|GRR!r&eG5M?K#o_#xyj;p5iTDg(aO` z)}j~m#REDW)t-D919Kdhzvc??@PTslV1o_Ftx31Xb1bx}yL>GsVYg(}m@%yEpbCX` z=>96y$kGq^47^NJf8*&J0ev2FL(xHMznKqnI}dsD^;e$vV&Uhw_1JAUzxj=?|Ak=T zh2Lv~bCi;6R=K5;+i4xve7OLha+Q4#pK>amP$74~R!6x5$=#_VzwyQ!kN)28z3=DZ zUeIl~#KR#31(%1G-v(fS6Tlgi4luNGfC)ir#=={JDce)EfmcBev|rX2Y5y4mv1F)D zS7F9}m!TO)AFxp!$qq6=1F&SETMm49lOk6e3-8olHZ&UWY!~$4y6!gd#bG39i$3ir zeFMfs;zb?Qq^Pq)NC7Sq6MaIRhj3xA7(VH*#A|5B+XR3amztmd)~j}W8W!D?&-AVB zeG%{cubhp}V*;np+DCx`VHf|%(cF(wKvrc>%h+8EGB_7QD zk+{O**e2@GyP{fT(~gYUtcQN+8?o(i1hV;XCOyjQFk%W}8dcI8N{*g*HvM}B}u)y#w@kT)9AC<@<;Gkv@j6ty&)Wm5nY|DtL048vQ>9Q?pMqtxE2DLF!KX^F87cR+x zoS+!|QIMV(AUkq!bzf4pEnc8R-}t8wQa-q*u|}rvcw<4g^V%er_=H}Cp9ZlfHG8w! zIe3&k%`VHvJ`y@S>XP$!&y4TrbJ_YtiCY8D&3eP8_+ z<*lnBYzXf;-bCQCu@|N@cYo{8ZafQsxY&F=r5^et9@K}(sxeR+Ro^;(66(c~e9%S{ zx+_I)xN!s@dL`Pxg)WYaqtvB11>Cmef}b*`Kg?<9-!^h%3>vBOp=Z=BlP1k+h2zX4 zcJLZ=R&E+Rhb?%T*#1x)r2eUA*`&E4k<(u0g-F8BVs3O&Pryh`onuaqIoulnuI%dU zKVJPla`^BkpZjb7@tMH^hTZ`595@GJOX!%c?Rw{dGE=v6LQl=o0XNG|O=XXx6&*nw z_70)ULFds%P6snG7RPVA=mo#@_kQ9ZKIYsr&b=?s0vwI6L)~=tVLc0QK|J`!GXaVK zxKx1kPVPcANX4FDo-H{DQXPU*^=QxX#0v@0mUXp-}TD+VmAf9(+$)+K%PPTBd+KOr*{_piTQ zPp{*PG>YGgW3jzv_3pa9xED6r4{$-fH?AK54A?{C%pc$I6#Y8=Q9Mxi#`qS!lI+W( zA7b13AP*RP*eFxl(>Em5pnKp?{jU3}n*G}PH>1A#+wjb{Y~b>~&ZvtycE2TFoqRfP zPpo|NFWwLz=lQ`01ttc?>xq0B@qm;q8i4~tF*0Ha@ND0DIPsxzuRl}9T=pF_v0;4h zdAsLTYtNn%uN0>I0O9W)nMT?i`Tw4hNZx5n;s7=8;upM=%-koO5)>dLuifsi#z$W`-WSI&ye;nMZ@j<$ z-uNqX<6*OqxB1S0u;mX3{phnkiG&lT4{)jfws_w>l68@8@nruZ#ieO(0e~|X?TPV9 z7JuJ15QDf?5bv?;iS$6*`XJ9Pp0Xc(DgT`rp8(!}_TX#v%mHy;eKvY*`aCt^@^->x z%i4xO`nvo0a(z_jph({ln)Ry2|4RJD$4p+N%8>#5$d#-9C`_)PxZjAu+!#iDIku1)x(xkl ztU#XrOh(BgVp?+mFfUpl=0+Ji#0T5T7EzZBEFN-c2)JQXRVLTiNS*`VFp;I*;G;W9 zcq+vY_LTe%hiWeV$O{`}FN8BzWNXk*TY^qC@OrBG${^{IJ`!!gQ(JgMDt#%UORC9S zP!h<6c!r+o;=aG1`qvZxJoO*Pm7o9o%U1vtD zuLc?;Oasl5aqHA?P6kX6k+3iD$0P_WQu-^}Wd97ql$kt}CMV0Gi}17EeB`%)_X$cu z>IYg5&Q5>wTjPE5jdbV;p}+*ht83fu{BMvQ7xdBbhlSEUbl_9MyVbV}E@~g^(PirO z^9x@5EiE<-KUrVa!$((aeN-sk|4;w9Z*JZE_>gZo5H<82I%eOb&+v!)K`2qzXN*@i z@C82pPJnz!Mn4rTuS#yEL+y5iAE;d8z422w4m-qC2>3G=WFt#X>bd!O zFX+dy`L_|`N(>tp$4-i}e;oVvZL|g-#h-F?N&k&;#)6f?#cJrFTE>TArbV_>FDHZG z9|e2>-Nc;s32watZ^5Jb2VU}H@c;+9;ad<^iMEu7Ka81U2R{S@(Mw*Hv1#~1{N@;* z?1NuboM)A1t7htU*hRoxW}`Y5|2UD;{2lZ8vAFafS9dRucm97VxQ)5L$|wYkydM_r zJem(q?!$vIPOX-Vyi-f3<7#sp2XA!{FdyzzcXAH^P63X+;JLs4Z;u{1e3|YO#ZK|) z%}2*3fQLskpwO;YxrG>(dD$(|7|x-P%-@q>tS zhYor!`booJ&AR*vU)7NgZcSdQnKtnYq|6i5fDK*YhXs|w&Xns3H09(kI0-kp<-;TC za#C}deA4FGE408^ys@cIHog9J_w!|OOUpcYM~DQi9=2OuvR-1JWGxnMJ=~`GBp(pt zPyDWvzt^8SoVlBqtJj!W|Gv1bq4)cVpGfb%a{qn&KOLKj?1Pj``Mn!|1yE1-k4b## zXT=->R(<(LpWnA(S6>nw@eU38MSik>ewbJC_ENmvz||P1j4Fn5u#Q9VD?i*C-y4Vr zHaGh1Z^w58GW7+$7Mq~m`m@XrjVmLH8_Osk$S3w!&`N%BcT6TMbFkF1F7uGVnAZSR+%Q1{8RW< zHBWQ~&$#50gFWElGy6?-W2PQy6L!q8-Ssp!q|1cA0ul!q`smVs-0$boKc9JL;XlS} zf4ALw%RBzd+y2>SKXV1|3HSNmWv>y=QNc$P)1;OIJFSzW;IuZPDW5SjJI$Tv+#Tx< zU*uPO`csGA_O`eD(^%|}as`0EIeg@BZ35yefpJNRS4s#p-EY!h&B5#d)__+;dIFf* zfzubJJadH`3H&*@JP?Gh!Ps`e$PH}T;3?T{GJ%`g#WTu%;L+y6N?yFcPyKT7lq2C; zv?*sf;d!D;y3|QFK*K;DI-$|z4}J*4fXt(<<4QIJMW1cUiNg9O8nxYyC-$HCoXd6J zdD>hPq3k$w^L=?}A5@pZS*+F%+tGeU6KBiz9XWsEcb)R{xfvVi{Z;L=ylY&(KfoWe z89oYxLmQh4J`9vTN=$iZV{zmaMztx%W*@mf6k}4Nri!p(>sG>}`Q`w9TDU1YW8#em zd}H8YamzrlP*mSj&sJ1*WKWAf#oIR#odzW8EdHDQ7H9I@{z-dsp;b9(?88ep9zfIv z3g(W{7R%5f(+6nj!)Pf#0<#Z$Su%qcZO|L1m#rT>DO*p?1u!E8Z8T=Nt{i41=bapz z(yDNZhD?x}pFF-NR+b8GuqC|-xk~|MUI{*Ch^LYRTWB`N|S-eF+A{euzs(uP30jq(f1$GcvP52bh zc~C3BfKg#Xc4qMezwko-);s@v@Balq6c4P)Kz!ZwEG}GmVDqs~e0k3w zkfCksZvZ^_UU~0aW(Lkd_rsyr*?&CXXpiX0{`KYfz~f4XeTDyY>!Dq8hZl)Y1t%Ug z`XIa&`0lf@{HPx@9zJy)^XD@0%As}grjdsZe=8oq+cc(7{K7Zqj zi`>(H@^4+Sd)y;04xD@Bvk&F07rp=b-7ER<)5gY%H#2^*zT0mZ_DL>OW!?HU&oGTX zfkumNJ^LVwOD^Tft9+(5MP>R?1pIhB)S@2{@pc|QcZ`DFQ|jRMq7VF}=cItLex++u zPjK_HuGFPrA<90{)BD)Oc%=X5Tm+5cLGX~33^X1F-ys+}cx+izJi#3{NGKwd+%Nbn zpECd){*%^;gMNYznXp5z+w={WT>Ni{KljcDe>nR;w!7}yYv20Jr~ilN2AvoEt%V;2 zePDnO#MvO{z)t&gT5bSN;B`7kvAn_qp3#{*KyWyi(fe`6e|*-{U-~mY`%k~=%kOia z?gEs*=LPVyY-1%nkXXs{I4qW4*0x9rn zfMh*?Wt0P6?ExQnjYgvr8u+D5YEIHugFGgV0tyzqB*Tc68;5F6MgfTlF()8VN)O|C z0QZ~)A?4=8g@0K5p<$2*gZLj9#SU3L!OI&74}P@=pDW@FTYo)nb)TF?hvR9T(E(*% z>qEwi`186Oivgda%|4wzmA&{s5);oo<9;z4h4ll5`MMl*IYGTQ9(-FT{t}<t~xO?z4aI!|yr!A^di!9%No&$1?<4=KKZrrz~Jh82k?Ev?_ZZI@&Ul?;_7GUMG1BCg2a7Cc_hbo_{)o-WjhB~o8XEg^Kq{B>Ob?q zPi`NuK+Jf|7z+d#2Xx+AlT719F8!(3LM{5J=jM&pjTAg{yhfY!0*6~no)6L&_}hFZ zmpOI}%h)WM0A}5qFL~kf z|7C0j){DNc1UP3h;>ZA5=14j)*_HzlPSFN><+Mz@M|(B;r;8IxyBUC<*!uW(J!F>0F5ST`e0lQ0W4z6-5oMyyS1C zb3oG+Levg^q!cPx$_zP@Z?h9E^(bB2?i{StKXb7(N#z>QQ5J5{YBIt0Jv`b{uJiRK zBzdF_iHYi_$xVUy2k)6rS;kG@pAoP7of#j`IbgwD>97qdgq_l{`ed5 z_9;4XI9U(+=VCShtHkSa_J!!y8;n@g`D=tu;2!iq-1mRuz4f47`XKxN!+xLM49G8@ z&pD*Nw{6~f=p-j9kGB)BeQm>uh*#}D7JoqLpR*v zfmQnKS>N}-@#mlMDZDv`Ec!9(S8Tiy!Z!o3ciGR0ulO~u$erNpcs7i@^AJ4biU;!X zWsPTaAu-lEucWWB9_{9*c|a5pCADB>SH|3O&an*gEYCT{tc=rbkxX>04Mpl;-ffeC zD)6p3AbF;YEc0tR+rkDSsANN4DFLg?S9`#0JIbSu>$K;){zvro){*#AzrO5$^RZiQ zeA63W|D=z7^pE-TnOhqGPrS|%?IVhd)YV!voUWDG8>g!U+j_gBdhSjor?Xl7oqHqT z{Fcvu?sGT%_A7qtXCtsauMY&peI$bHhU;(8Edh3$+;1XjY(&f`AZsz34T0spnEIJUjlj5&`I0C9B-Sh*#j`zv$v;PkNu3o)^ZhZU(#!hvw-c@p*KId;1EE4zr`d1U&O^ zUb5puN4G1*28?g^Kl8iqzq>GQFTj`7{h)e{58xl#_=IxbKoN5pcWW*g)8?mztzyD) zt1$sWPv8VklH0APfHm&3JvS9@2OmoDuSHfos_bzpKJl}z8%~}YaF)Hj1mL-p>jfH$ zj++ZVIMzve!F;5gcg7Xa>W}Od_+|+nscSyih@5N*Mrx~C&1sqy#4GRlGcO;F6SFvB z(-iCF0|BP4m>_ zG_+v7ARJ&q?;Xl?G7&{i$5Y-q&isSld*7!ox#U6r>Q;+1g=HJ}}P023)>r8{a1|e_3LFLJqu z&zU^;oj)9t`di}9zg`pX>@QL*5Ko9jl#lK3wZPQ*HoZH(b)TBgz&?sk#a8Mzc0IGt z;|>5{1YD=Ml+Ba>4~+-jw$3&m9q@I+cMpj#{C)KEv*mBcC36VIADibKbbi?xi4<81sp9(=*>;c-U&sQ9k`h!H0LW{!*UakQ}s(w_j1&E1RR z6Uf)b^9yhM{pH_5kgVv-?~7+WzAml;@w%b=LT8jUM&Lc-v0})2UbgW)gGHYNzIC%N z%?ln`R!J;{W4V>P)qEI#orehP$2ih?r7I|EZ+v}g%sfoL)HUSAT;jG|U~6tzz>^C; zgg)mbN|i#c=d$7F*5)F4QX#XA3Hm(bX}yf1^$~8g+1%6>y3kP*X}0CUA7IngH~x85 z`-b}14~sva`Q=+JmtFSBr@iEb&wEo)5d2$jIwcKkkFO)eZ;M z9Z_O05SL7BpL3#$GC2p=89CSpad7R_Ic3#<@P~i&vETSjkNUZI5HN22pQSGYo`2r? zy9+P8haL(%=bXA+NCXo$k=!!tS$5l&{_`dc^`7W&HT*6dNA30LGH5MzLsG= zL4RVNOZ=3%hGpHnoNJ{m|K@58^_mu6=0;%RBrIj^{|^4GY0Q1AImh$1=A>xz z7@7V^CcycVzVR!yCtm(}U(Wnl{PT(beBh5OvsYgE`Ir6DFZ|s98H6nSyn5rjmw~M} z0SpjK@exIp$@kKjQ}j=BhJCk`(GY;zEWN5B}H$UG=-lohErE)$-SJtkaSYxXIJ)$aHzhY041KMVy5$ zQFotq`m|xvCeL|RD|y6D@q^a%&aFrCn*BxH_N86M?D||UGW(Db{VkiY2Y?JdV7@Nxzr~SY}d4*bg`cX zpB3*R6Z|-0B1-fuluQdCnE~(HIxna82)KJG_ctlnjGsma|W# zOXHo|^bMWIDLjx5Mr^yu^2dGFh(1JHgHUp%2R{d9D2SeYXrpr z%aJ6W_M7Afytj?XS3zC_TC{`=2e7U13HZPZl%71fja`0BlHdxzBLYJE$zQez)^sr) z`M|Gs*a4#-n0$J>%1zJFW*t)Qq%quj74J3~C+@_{(n^0f5Bn3aqzxMNcg9Md5luen zld6~AOL_~LIPx7}<5Nb)uzSO&;3zeJDh91fz!&v^D^`+f=p-4%iY)4EYLpgjO-{D1 zew$p=3&U{t4SWLDc&GgnPqAzJo6Za0uB2xbo3mf`>_eW~0!OmjSTnDI6S^$q8Ufv> zjD&W*fwXqXnY{99LQ?tHW1PCmV;(VIa+g8Mvvcg5N7`HwIp!Mb%h(ElQt})=Dk$^J zLPyESjYgp;OS<45%w=Ls)9CIq|08wc+i zE_;SH0X%RLhaN)Fm4L&$!*wOV0m1;`qO%55lt~^~#*rEs=@IBeeX0ws70-dQ99TJ# zV#0Qs8;fio15&cw_2j|B6H@6Rd4d&Qz|jZXF^JLAbkQRI&A z`(dGT(?`09Pp|^6@{}nbM-yq`=L85oXrQ;xWq;H66FE?vr=fF(THj^72( zfWot2!ZAPIpMxVAa1A~~w?wk6)TiVWy>t)$L)YS;_0mDOtsH(F?ae32vi#9?XgF&* zLyah8+tiPGE@n9<)ZTb?TG`xX_A-c77mszDn%9vv^^hF@4F z)1uq4%)xP0;QB*{-uEldco`B#$%K8Y<|38xZ@NTu%f%3&F zF#>IyQMZ+{4@Q)a{!k$0{!pMF4%7pKfBz?b>c_t7Pkqh*6psa-ab|oakUtrG?m6e~ z?s1O`^k5(#3p(qp`GFV2bvr2&bqfAcCbGow03L$_RU=jdPO0;O#;L|j4NOcTzQNCh zM|9?)mUM#X3McV_aCXkl+q9{JeVjD$Tl^+nF($)~uwgHE8#(QAf9eWIbxk5sT*#+w zd1jRpRKno2?H}7>S;>cArP9-VF*XL)f1t6IizJ;37}@YigLl~EJ10BA0zdQ68hh=F zQBL0UoAFa>_U(jG2RF}@27Ks0?H}?K8%gIlN!}a3d;SSs12%mfe45U*t$oz-(SbDL z*t`N}p3*as_+6!Le^5v^lsQHuyXi3HWh}$Y{h0np|8_WK$E9(AWZ7dvTmTNeO*3)9 zNqrZvrXO%8@uyO;L_MozpKAGIy(UfKDh`q;^;LPcH5TQE>6au+S(csnX+v2odpjR| zkUE3c6XQDLuS0uGTaGl0ALWG%p3nTb=Rdyh&y)WAdEZ$4uRCj(Y30U%#*0x$_BZQ437O=dRYc7pCu$#&l%;ya0``}$5|dHdPiSq??=37l$sdrq0C z+G|37vAF@y9+Kje|Ju72+oO( zLA)op&?{dM$T(x1qw~HGwg*khdfi@i`=}=w%O<2gh|$3Jhbszeb@V0{a(7M$BFllB{(ruX`v(d=otxHXv;D= z@*FSZ6IYe^fin3gzUgVV#N-IXDR`A{43Qkc0=wGG%QC>2^WvpW8)rCnN9o?VT*(WZ2zV4n@{UIMp`yoY6s@oQ22#JgC#B?@aNAS#A#d;v1j?Q)#ZyE9ZIjK2Bh4bIyW?TB)nbw|r>$AH#OeD%p9uVx zFIN23l6qEAy_lF|WJBxR zuzeo(5f~YNU8c*ll4PCjus(|8jg3L$=NL;a^Vj;>SJ~2eIYwvy2)BG_dgz93;YVBL z_H5&~eAsO8*c6Y&m`s_bp}nW6bM$?e8Az57{z8XpGmLg8@oTXGyu-G9sP?kSd}h9$ zE818NIU|+L*txc2ZqkjNJRDnwI#;~FFW6H?3OaJ!a?8!}aP`f4zKTo!H%I-p+7#Rx z?VtbbXJ7ivr~UFTwg>)vrtd}Hbuaur`|pcCo#w-8xg%X4dHQcuzo^1`tb9?-?jUjN z)jP=HP9VE8or*dq;aJ;E-VdVHN8bdn@b{x{2+scRzx#V0`RD(_fA@1|pL6cTEb{!} zApTasdFP$0O~3``owqwHz7@dL0Db#Am^mr(4h%PArA=A@$D}_erabE?lSccbouwR% z)DdYXxV^*rUnRW9am#*H#L>*bPpQj%5mH9*0)26)DgxB$1wx7Cv@Y;$C z$!I)X*F=UdBXvGQM!^Su!xOAcj%#0rBLX{o&=vvsN?Pe@pTJ8#(gFllKVwF-S*MlM zb&{;G&w01SdRbOd=dWQS5Bc7#n6Befp1MLcQUSOznIAocZVFe%`*)W&hhQzw8rFd)CvR`kWx@i#+AyE&eS0Yywb+GP#c^ zDpB7|BgQscZ$A*f-QDT#*C0G_XFC?Bp1`@?Zp!^2ayi%lkhAbp?i&Egi%r0zzWH0e z;=8~1ul?Nl=U?zpo(bU31@m0M*|G57Bd!FTfBt#8C2)3J4T#4Ef;?5wS`f9o8nAx` zwrxkK6@yy?t|nSVt(gVCnJ^*G)FzD5dcXrqJb0ycz;cAR?$P0TV$5GpjO$!{G^qw} zO;FpDVUGn(EUSfJJt?N$b0J7M`@BupZ5uj@C@u2jNxn{=RDpv%cy3I#;MkUR9}cDVtwS4m2Fd^4Zr*Rp+ zIWF6Vs`Oj)Ox)Q&$zwVG&DV0*^)*l7u~4X&a`#o~YL*i9e!ukU}#OJDrLHwNi?@n3HM4!Z1rw=e#( z-AK)^yGeS9odI;`>fvBJfNQs%azBV*4qpXue!NY z-rt$G1M;#zR|B{uz@HNKEde$M`ipoK1PlTOqeeq%*2dfzIEms3F9(|KOnRHu7JUa= zFa#$tf_7{o;F`QBk;E%`3_>u};3%e_vi;Rl&Wl?Dd_I_40%rs~ zMa@WbNP5sPCY9P?v~9vsBYa3+_^Ho(*|d1zQjSUp#KevdJU9-4Ad))oJ`R z%SoZjnr&G+9?$iC$u;e=p7MhR8`{Lav>|E0bwazu$q&_J-K|Ugrj03QJ-M4|@N1L( zY}+qQzO!xLcPm|jcb9LQmii~Z&cEXs-eFMm$$V;*ak|A{H1X5h);yEX(gxF!n|50^ zbR=Fen|53OY@56jzOJYK;9Az`rv+@zT`)3U#^hir|WK5;#2c@+|qMm zQ`+V;_3kB$T zxBdBldCuAA+>hr1bi`uMLxS86@YR5G&f%6oZW6k#T7!`uAzMQw211q+uLkNEP~Zl^ zV$loOW@@z1D9wqdlUTN~)@`NYm`uT!e!(~IDVD5&tF1Fo`QQb9;wO($*UVy#mU@Fj za%<8|9q7unUP*C~ezcm#nCsm9dk)UjZRoC00=~`D`a^9SC~v3kJIh{TZprO>fo+*< zc@y4wFU#pm%iOnV$~Vq3-)=`nq`l2(!Nafny6ww`#pIuQPdZwcX$yDDC;be1(yaYB z^)XK7OaINjnEFkb9oM=}zJ@4|F`)&R_!@rOqBm8wt>+J7wv8_~m!5Z$GUVUJx(YpM zd6EGn^$0fH>MY~)yq`)YaQJfS&2eznpZELYtiL|1o=^E}@jn)S)aP0M@tIG5PTU?~ zu}ApUqHmZNedi1|4um_8;s~Ls6wp;#+P-T1BCCDA{~}r4Ve%PkcbLT&Pk2{48SPHO z(e^{nDHG-72W*S=`gk)v)Yuw`_Qe!dwKNL0lF@5tyk(x{8f**q2;AdgKQQL;xGRt#js&8n7sGfRy3RZi_t-C z1!w;A7#pIG*EWz^#dom)03v}&L_t(a2gmk8PSf4~b9-~9=U$ENz(Wtt=y{k=f5tZ! z|HE;~pLhKAggD0nUe68HW?FDd$FvJSbe)ATf0`c>xP=SM$#U0t z>pJ+RGfnbvzb-Z)YdyLT7Pc>WiQ}R@AR{g|a3NU8TIt>8iutNtu=P*itmAHhQtiEu zh7KG2hYrO=_EbDC_^vDPA{}6NHs&ufNYZJof9W*z=={3AmIotn*7X1d4=yZ%D&iHSsd;LD^ zKX&Yvc~uKVdu7jQBR?`lV*!$~^Z{^&VnMw0Ws3Gkxtyf6H{eAd@L z;!ofIul}_s{PexpG?yW__Z~J~2z`%}Edqxo&mk03;U57{MSO-Fr^OfzF^(L8uIosF>Yi-GVXH6J8k z_6Kw%Zx*(2X&yMa*i(gaJr1dhhJ-cGqM{1T1$)e%*t3P@L%`P%Mf>zz|0 z*6!|f_iGRy_)<6I(LCLn(| zQzi3|p1|z;txa0@Qq>wZH1;MSZ>a zZ!P>=i@yT}?W}wh7iH>;gzjI8M1S1f>F(DcJn*G*ILFK^)pFMftz z03t1PP0)fLU6kh^leX(oB%4|1-F4hYPFwfk(>BweNOs2?K52}-`7)lHtgCa`T@zU6 zV|vrA^Uinjnpo05s^&Rc+!qJ?qT_Cr&6_s!KS+m+H_z*n+d=p}rndO6>6Z11p^DRG zTa)c};ylu@fx6=!xLS#g<(RVXN8WIYM484IW3lK5zU1!v1fm?5**ECFzac^2oG)lz zC+R#CuhyvN>;P@TJpO%upO5+IQh$8C?`V9@FCX-aFZspQ0M7Wq=b#*a#qXVOdD9#I z-MilL_KycQFZz9v?;C&)H!jBa15@n~$}&B2QZFZ@{o0NOy32~5JMS_9C&AcVdlIO3 z9mYJGSk;Kko({XKUX+Oxj-TfX%xzx_KO`x6&m{AG`gD*>Sv z!z!lgc56VJ0A3m7wm@7FI4AzV5LX4_A%d`jGsaYpTz;g^;F7Xu=>6F!eo@IX;6LPq z`JU+ZnPZ;EU;2CYvCnctPc{O!h3|%f@c|Vzy!mePZ8deflAMQnH{)f0Qqxj=rYP_T)v`snZxnevmG-xsN(dmje!| z+vd9M3?{>$9k2T`Y226F{b;$S+tSH6;>S;r#IFk)B)PQvc2Ir_nj{KN6SxZ}Ay_;2@9t{ro#}`0&R+_=g{O z+ACi6(zgW{7IP+z^#Xsq#ozek94PKQjYwF4l?-!zk-I+@z`L+=yt(Es6uV%(*`EuH zFG1x??RZQ&N$1-?J*UjU=x|P%#of6Vdh%ZGn*+C<`5lja{3E{g+y2~7TzJt%->QcM zYhmY&059^qDZplcs{v=n9~{bO1h`s|&k4k?V8bTV%b3@1g?}zl(IoW)2%L>W7HFuX z23M4O!q{(FpzT$R?|cv8KmaafOh-b;nluxz@q02jgUr00kA^H9$ZL(isvk%<`RAmM z&&xKNPJ%8&tkIZdqfOp;`i`cRJ-3HV(_@kqKiWvqhkH7%>DKk6oWBRPHyIN-N(=mz zeT%k6CHSh3TJ!9SW}nZ-&6Au&+!~gU0PSx=s%eqACyUc)^H>~!C>Z8BHRrh+b=E-y z6Q;h1v9GNTLaJ#k4>I4^Cr8GydZOPC_ss|VZr&Y>&4AzI2bYieP>*K-KKrqcUizyq zdExV49r!Hp1hmiQ58429xbew-pfzQ34wCbAS&jY2{_3#1x}1G;S4%lQ|E)egKE++o zdUrScu*pAp z$rD3Rr#H}e$JZ;d<)aX2Ta~Fy@A?qG8Cq%xh5bmxHz@C%rgzhKGuCvg)e!NXUU+j;&2?%~? ze&^#J|A=1Krp1$0Fq zuL{^ka_CXnJ_n|e5(8AG*s?Kv5*|Z1sNBeiN;nXg;mpjWmTXX2@cKbMqEe46yIs0O z;~GbL!72Zz7L8BxTiFCKQs*VSfYE|_{#p2<(M?2o5>EL$q!k{?P(8G`=8;PPx zezBdZAa~kgAFS8}T`H59$w&4!hQsb6Hm>BxkJ_7F3%J`Wr;XIuSAF)wXpcgfV3$jn zq3~>g7)s@J)v$ui0jF^QFDRR2GAT^D7?Yag;j%k5sN+wAl|Jby`Vr7Ald-Is$TRSpXo*TM}tsuu?MZ|0Soz0O1hjPfM?w0CHuU*&;9%S zgFKwLbLauT`YU~=(ItN9`4_hb;(h)<{`ki}_TrcS=1YDj-uFKmV*4WQg}vu}1JL1K z^m~p;{g7GwRHE&`lr|pNe3v$8%-*FEPRzVQ=fsG2CC1&^3D|X#9npQ|GPw_L2D}j% zXZC^9%O~6b7(cECT=Ewm^X)%y|NB4Sd*dTQ7on$wvA9cbZw$CHP`3uy1k^@An*ePF z;tBzST$=*zC^P~ArR{LrPu(vXMKP#>E&HozBLkiqwlRm0Bv!Vbq%75N>P#F;kx5?E zkutba2mmzT(nc-ISsOfPDn40E9T)91L^8j1S&h|BS@x%xRBEA%8>L7U=7FbL&i#qkbxVzjJ|Bln?DdViIBfv_u9XECRkBfL0 zH9DT|BK9Z6wnF8kaPKmtySpPW?Eh=;+Ir+Dt}qC^-u2p!Lofl1ok&Ot61Na;Ql6qH zFG-Z2ndVZ|?#%9f1wH3}>eN@= zRkgFT8PYU5v z&F}P3`0(;@UsZovHVq;NTK;g;o%l-FeJlC#6%DSR3-k@X&e)ZQXnk_^Tv zhJx{w1;e952dBnjq9Tw)+w^w121F)TU?P?$ZoG}E99ap8TCn%sH?dO7PFo1$)bVX? z3f7s@^bXkY>i87P2&|YTbKjQJl}VymE40K|U0c^l!*!$A?%{i&gE*gRnMVaN<>Pa$ zrdGkW`nc1w@5^E$DtFMA{J+i_}Ct@Vx*#z5t$e~f`ooI3njTv8`lt{$F26$j_XqX z{+M>BtvC{4On5LaRBZ4ZU}Dxb`_n2)$enC4`!?2Q4RICaan7`eCJ^mI__JnZuZ2km zE|Attn!KT-CPD&5PY_jgq8Gq;9Ur0s;S}{f0TUSc?Q7pu^;E|>ISA(n^lzFHcyakP zizO&-P<*&zCAn}S>f^=QTtYs#gJ0S^w~F}2OCD&3`n~RFuQVpEb0kV=!<|@M1o=;B z91sU7UmPX#@>?Ska%9DClrH<|pRpWAGcHD6x!amu-_ilXm&J=y`QdG~4DO6}<19Az zqa&nwgp!9_LdUTv12YG@PDd01)hoYEME2sNDg~AA9?}-)JrX}&a-!H3Ebqz)GCq?| zdsKaU^Zf7&V*P$;ebGhC<1K&6Pp<)i6H;FiY!|!6&6*SmemTNG9fD zxsc3#ESMUrU<13zrsC0ZNhYR1Q(9D8T7qsB;)g$$FUE$Q5BUa!xvK!`gk zPC85h-(^rqTjLW;NO>RBWsFsgMpNa7?td4=r}%NCu*RyDt^}q}jKAD2-=sM{em1~p zX2A^st7IkN@DAsl|GA7t7q}35`)P5ICY)y=arNl0Jnf^91>4wdvdL7^PL0~7MOb@L0-98TzE8<=K`Ph@YgO_&w*2mjHt zb!^AAnF1<-VJ$L_4}zL^iqKDdA}jnH_w<)LN~;pH&&(b>H04$ZTlDVHt9|QC&qV5y zSntT-u)2{C;{JFo1oOcpza31gWvmaF*{K`cOm<=Z99wTCK~COMVT-%u;zd!j)pg}P zthS%yU=9}5T;ASDHn7K45iC*TvOoCyp7E|>BXd=>2IY#0$YOg)bf?6xl)~DyDKO)9 z?pOiR)!}izr9ff$bXi{g^bCz5x!d&u6J@DG(g()Kd>o&+bJ_?oMUoRQiEJz`@~n;W zE@!o8x>zu7C(D)&KC&Us*{HKoffN<{;)JZdHx|O*aTzTymrN0ofL49yx(xn`u%11& z4vu#}b#hu6)nTHD*!%C)-i1SkBNb4BM~kEe6h1}2x5*T8rc^@D8KR5fk0jZ2@j44f zsamPf%ZZ{e*^qp*O5$3xk?x+}<+$x1n$v@n zh|cT1U7x*)y0hN;GB=jXv3suD0F$H?CO9~SHppkNoB6rqTsS+tjb*K?|BZ>^pXcKD zOZWQA=V&qJojG}8NnG|9l|+=zjvc&pfq*rrcQFDQfH$n^Ia^D`7jNM9HWkL`F6 z91XiEo@VnTQz{C&qZTH@svTt%>Y;?hM2no*K6M z9A_&~JnvR^cfBn7-k12%_GvlZEjK9WIX=`t+@hmehYEOZ6v*)~9>4=GF#;zAk_Njs zwM)v{X%ETG?pdTE9D}q{OhchJhV#E7s=6e_n34TeDIP;vhL)Cqal)^g3UQ(yFHb5* zV$P<%zK>7mV`G;$I}&m8xNgRabsI!_R!3v-b~#@u+VbA1Y>gHV_9wXP$6xQJ_^Zxt zyVPsPW!M*mu;N#67;=;Z_;XvgMUK}@|Cri&SBFF2Mv_Tv(LjjOI@8Nsc=LWJOTCjZ zPam|OYp5QZ);`diS{aUD|IK{N8pbDIkkqfXFFWl|TvJ-;vxRot z#MfHo#V;u!+J+Q4Py4^|f)+Vpy8W%1?0Bt_+PF(>LmAN8Efl!1r$zppPEnGl3mxnb z0TOoh8wt9o(N=z2Qg##9+ancg(fuGUlrP?(yx*^9Bm!M}A9|^3}IVIg9URTSG&F4TMV%%-rkE`3#7D|*> z;BC84im%?MK9*G&ZFf1nWaf(HkQD#+nVzUI7^U&!PJ!@YG;G>}7tP_M+G?!KW9Q_P zwjakYFZ2bpO&s+i*jW3bm`;Lc{)J*jLq^^|CO_8$j~RJV(2IXK%j`IMWG?*bKtrOM zdrU)i;DyFg0=lJRW-kl=O?9sm@=f7HB!=+-tTK&amWLYCN*v11*;N|(aukNZ?tgeV zaHYtO>Z)xTBnno?MIk_sbU<`US5kUzD4YE+n0Hx8;tSDk1RefdKT6<e91Uy4|d8^l2&acPEwFL!@joRBTH&9;NzKAUA#AgE!ye`duAnOLFN6tn{=YI52MZ_;gaYn))`cu%!!r|;l5M%8(I6r;zmM6ApAfyw zm4r~wkfF%Ztw$I>ck9$~Ceh=r|qLNwQ8{RK6?MP-n04@vk+ls zi3=Zr5!`hhyj8KFK(@n(C!)dPICVycN$kC7E3i0E;7?hgrjp)fG0FDG4EdI#Z}%ltJq{C0?Ajp^=Ie>0%YVvIZ-+N*7dZQx&k6C|pArMXqIS zzV`fQs#}!f$|_9lD|>oJz+KV5 z>5B!73!3o8`n92CSh#M-;pSpak*Ht{CCeuyKHiS7ZV0xLjMY1whQQ=A;bky_e=1cs zNTmxgIwPp?s~y3`2nMP3ONx+HJsqf{jW#i~ zrz2Vi1+YD_1tL@GD&ALUXA+o@ShF1p zm~sseQ|O|fc8cckyowUIC_IXCEu=F}{3#jbZBXA1vD{rUFJyV@Y~ls7wwN9W>z73bA|(ucT> zYApT&7G?jR#5rHuWJkR|d!q(FOPN$*u%ylrX#A7^(kQoYtPVfy1d?>?)hKL+B&E%b zQt3O$i#yGN{mtMdE?X=5;eFHSx&L&pBSN6G2Y*$5f=l9LhH9h)VU}3Ld>~KGL2PbN z)~$SADkJ|9@f{|-2G5@imC^!5w6MRJ;0)%2hr6FoU}O;Sulx{6 z6;+I#GO8KzHzE8RIoGITA2(Gv=&kz)gN-MU`?1bFn@Y;`jbG&)U7;2lRZTVOl|xE9 zqZxx$ZsklW$3f|S_?0=&yv&l?GD1qtOWdXav<4sjNG$3%V;AL*H- zx4iL?gcz!#OrBFH3+LN=W?OR#$@43sBE4JfZpErD_;#h(hZwBfBsy~BA0Dgs*@J=P zYkZ&1VZULb2=?aL@%B^O?|2C8%)4*j@*vKPX#GQ6KNj4 z6Tog4#v=5+NmaKrXirH{mAm=p?i<9p9bgRROadlCqZxrNZ80gat-l-)F|6kamFXgS zd~Jjj+a)H0MzQMSCoz{Liinl1|58}*hV7|u||3Ygz zK9haY<^QN}r&U>|)o7=(d&Kz)Tiu^2tTwpPh^a|i1@g{F1T_1N8I_y@c#}fYDiJtI%Ca$n(*K7`oJL$hy&08TX`t@lr@y7Zc16!M0^pVI5%E!+ z{Q$xJGO#qGx-r3_??ncXerCsq3D?HFR^JZWDAS?|Xq{*jpV3P}Kh&i0#GoK=xP_}{s!!rt?VG1~hIpQ&xiZc-H|gV-$g4^F`z z_!8Noh(}*-Uh?f?e%W129#{{cjZDQ6^?ri}|JT4V4+TDoqt>xqnnhmJV<8JY3Qjmy z^A~*ZTR0|wMNl3Z;v!ZJK_1Tve|)pyQwcUysE;isARpu3BI;lu(t8_bLJK>pD5j%- z-eQ}B*qM;8!ZDFQ#=;8v`3WF)+fHS|%C*AuC11-En?fMXrg574#5=0QZg~>nzbq`c zU&PI6F#pm*{(+8=SA6e9}Gy!Q>t#~`tlp-yGz3R(0TM>(oMEf zkSF+Qe7Y(f&*O4NrVsuf9Mb6ELA>`_ScHiOyZQHI=tkSu=D(ZW20%FwmG@4x708Zn z@sOk6)9*S55k3f!LDpJs?!nv*-OHi}TU0^Moa6yD$nfC&;H9BvBcd=dB0qcu`yR(XT#COtaruH(pGe~yo+Jw==K%8dN-D57zY zHKu!ApQQmD9o7aTqB5bw^2M)@Z=(OePJ2@DK-}+$mx+TXdCz!%(l6PyhF(>qmQ!yK zSlmLrz$Mon(#OeOv5E z+;7Y;*-;2d{%?#CVjS=MZx?Y_LRkvjEsBh(dP7l=TG29 zy+ZqBx-k6wZT%Wb6ya}0AXOCVJWjt*ss9?piQt(&+dJWW1B|CKy}?;#m^ks72#Q#V z#hmr$?Jfc+;yn&cy@GQc30q1~7C2I5n1A+*1~8Xbgo4|heSxMdN?GdFisI#$@S1;= z{t^H4RVG<8j0vvXiWA-FYrJlBS1Y_S0oh%qjg5_&&;H;HUxD%G>assOudlC#pVY}% zAiQ(8x?}>5vAV|k=m8auKpzJPbaC-PY0*tm)!{p{>-Sr}gU!!TdgWkuK5nA-0(j4)D+~N}Af*aiHbI$pSmP+ko^B9uc5eixvE9UKZ$$Gg z1%Dmc)6tLA!)jOYHr)%CmmgQs zqRr;1&!pt|>SeEI`(u}ea_fGiZ(RFO zYHk`)GP8Nj7E`u?XT%j{@uqIg9PV7!fxv_~KmBUVfY^RUd@o&oO7*^Y_2Cn7*0*UY z({NTwHY7xPu2$HRE)J!Jec6oAc^zt98S!k5mI1@ipJxJ#F{WXl<#~j>k;S@Hs$Hqj zsGrY@Y!vaMjoPMQ!&{dzY@cIN{)=PSVfW67q6@kngVGJ^#ef)JHkMbnL0=z7y6?t~ z{q7`9fB&4cHEe!3Q)rXCAlA4bxds^ksbl(2mCT z3_0}Zu(?VD-E%KX>iXW0`l9)x z1uhOip*AFkhb0wG_F2lg8M*Sf4~eC?TrCfZ51V@7O1M7ut8F%E5?AnBHhf4)B zzy_uV&qq`1NA+DSYRYmb!0V(S@|tv_tWp2*bo!Nq3UpS8O&RZy7b~snOW(^2rq?>N zvcUbe{>ei9?&r)*eJk+x%iD*-7sZVETshpQ>Goym>{DDD+RSx9Bf2m`RZUbG1sr>S zsViKUv-QaQn&AppR~hpe;DO&vOB>3pA!tU&1O+ijOdIiGBH%&aEyj|z^G&#hhaq%s zY#0_PT%TST&nOLFP1?`=*ZT;kz{6CL3*Nx&z#?kQ-*e1k%(42c_rJE-bDKMq2AR8W!OXsUfBUn3(x`$8 zQ+7*0c#AWV;^bD8gG2T`X&~2OpiAy$p>lKI>7ROm6sWMpVMXp|JD98vrR%EdfWR~Mc4GlH!>lp9JMQ$t;@61sv(yQc(07cnQqIJ z8XgBzAQHDqLokoF^Yy%A;c$k=`nWi%Lub}0)~;Y1k3Cf`J-kMyX!K0!eeAfWjbn&g zup3%QsJdok(iLAh2WuU5kz%h)MvmGhu)`0VvRa{c%#%Phr(LO<6-?P2LLi-z)Xo;+P;i0#2=>gYKtFb!t}?W3pV(cQn6w zaA`8@$7zH3ZSi#D7l`;GF$h75%IAnDJ^?fP$#?wKrH+;<&`$G1sRwQ2fT6Lj*SY4d z>DA7`l>m_4p$7>GN%POhms{L`ew5|N#9>5H9?PBBaZ6p{&yo2~_aMV&)uFrht>!b< zrK*(@M9b*FN~9uz{7@g1WPwxR`)RvUE0fEgA|+>|HaeHJ6F$;l?xoXx55nu#caCW+ zvAdQ60C(G>#Drr9+aGhX)qlP4N*SzMMge%@8r{CJOk?_;;0Tul z<=EU&EG@~r#NZ>pWRpAIod@3S$%q8pmm6!{0)`14zkL?c6XCR9nQE<2$aZ%d@n;le zZ9mxY=sb|>@bwP5D8x?Nd@`LfBw7-^z(b%?HbNL6P0$c>Y0n{W_u=n`!9g>f+VOBv zzxU?ebJh1~RS<0P8q2lNjq9HusMn^v?qT~zW=9SXfSo5_-dhS*Ute zN!K^lH3tioF_6->zz*_@JG&|m>zDa^#OaudKs%9b=-!y4F&}?jbmFbnZ_Eb4B9<9lE)(8Ud$e+D#{anKzff__m2sVxX0w zraHpa_|>%Mu*A6_cA4!Y<@u^ziEN{Br!sxrNS1T2IMi2V&#psgeZcvXV3ywn<82=B za4nI%@0RB3`HAzQ{Z^`#ElNvBk}=0H(RRyrF+X?D`wPdh-FB_{YDlw~z&md=YK3~@ zHz5^zm_`Mm9du4kS>L2L=Rm(uZG*qn(YJs9j8U-a5F;MBGA74cneYndjexSTjB(`F zbMogs);H8JMgxl&1trVHDRPTjwl=%ZdStzt{4%@ASQR21)9)@@=tA-sl-h6P;=3foJkjg}uLejkpH{St zpAXiA5BF8>F(KbHA{XJB2tNy$p8m1&{9LUGp$7@?EY(HD&Qe6OZ15-05MqP}K|4eF z4NPSI{u&+c9kT67LvWP`+Co5ig{hYr2cL@@Qlgut^pIDxPyA9VcMY63R&KK0raC=N zMWBOw)6eZw9jO8M6J_emnQx;ICN$E^9~e8*nkPljAPG*ajK8Q~1%f9=2vgI(dS#iP zeos!r_T5f0UqSWn%cofFC>T}1LZJqu8%TN~_1e&JCRQxkiuixsm)Y|?y=woCAKU{^ zt(pc>DkacJCy1FzmA7~=P0)NTEspbTITshvg)-mB+icub{pO*{*?odqw?@%=OwNIk zr>wfjNrDF3X|?s^p70F9hR#5QgN#8!MMJ64k9hJGx-*Oit&lkKj`M-;wugiAm(A3P zz?*JE(3q!3N36h9!h*b=jklrA+}7BGa~6k+WfRka-o1_+Qh9C1Z!ZHxE&_7M1joFJ zC~lVdjC20@#CZB2xy7CN>gl2Trd8?G?P2sCyS208rR;!*u@m>v9O2v5<>e=K9MY0R zixmaB=ro}62Ri*7j$KB@Uqft@%7*yw(*|+*AUQ>3)$=*?zD{%1ldG*wzl-cQ8Bgiu zNOQF^fC*i~YTM0VUJAL+P(t<2@$a(5=>1}q7~5Z@JkDJ`L6cX3s#Y;AD%C{;Y*5L0 z)Nov$vWDwFBr+87!%EZqpqY>7%&gfBiP^kbU7ABZwWXT;xEB*bth?$)v}UbqpUOP` zXy{kf#C#wYHBzxSnl7LJ)3h;TDZYMieB2x8ZSoo{`WmP5{Fn< zmb8DpChD<5t(AV2g3Xg|uI(V1i6!GsHkr?9tg|}svdrM8l7D-K|1FNYg_ML$uEBL< zl5TCOd9?NC-SPA3Se`?PHdR!`Z7*F0M5yR|ZmN_TzRgpjTNmUp9+`H<1@ zgCVcE_3WEY=fZO@%CELu(Gn_1*`KI?(`KoCuv{zf3c>hqN`eMHbnNATe$YKnu2%p& zo+SH)PT-AI<-DQ*zb6NTWZYpVt~?xH1Tq%oxZ{cIYopQeH%Uh*vhv|u5p-OyPHTQ< zfYVQZEzg+fZv7f!_*fG7ROK14mmPT4M51Y+!Lj6Ctf!}|oO<9c1YJ^Es_zirqgD>} z3Qy!gRNI4*CP8CeV>n8u(-x7A$q~K~h;ayW-=Pi|EA)KSu(Jxuv8yh~66odxCGb@O3;EM0+GY zL@J^@@Wn4YMfvX2k*oc#fRcN%&5$$0ie{DYmhObeIWXX&B;cVX6Xra8<^SRve^H$K z8@-T@G-=Q>>&GS6O5+DSt>r#L;KL!;IZ)YhO2ub%x4SPFg#WC-moMXFYA&en`B|Lw z%`U?nQ0lxWXX`TZZ(&C88XnwOjXH}hjAR=nf&X%s(>$5NN8ZYC-tST8&t!1>!MvXB zd!j?663B3OSZSS%b;_WbwUaZ*Td;w!W{UvD>-%xW<#8=pBlU~W7{nG_``1DUyykw@ zvmqHFDu#*q)Vt<$T}1Kl825B+>ak;NU+K6gU%vFIKAQJ>*LL=n$9py(W$?N)0!~v# zS`2g;PsS9#5hhdCFM$T!xVnKLs{COYbgP=y)Yi>)J&xvd>I&GmtZqH+O1u$H>6#7< zl<V+MSSQ9g5!Th$#1>_YiTmLv5sE>sl> z?L9?eIIkmhS~<1>E-T{okJ}^;abSo0f$l!uc)`9zT4p`A{Rhe$0gtUpPALhNJLRA-$lAAe2@aGR1fn4i=|UU`2xD_1nrOZrlSIMn zdMr17u5Qk`EF64JMBGuF$x=|L*E~#NIj_jFS*fVHuwS5WZtJuj74`YeT~`O~rV-Sk z?)^EK`86CFxW4VV7N*kGw8ftanPoQKFXs4bu^!mxi=hb`;0&!x27p-k- zpdP~o-KWY4xU}NocSmZ9fPuywL%Rv=OaW6Wu{!iOPxL2#`%Bn4xM#j~{9|ESrEXmh zNd028+R*P?^wMso4W#u99D0<%Xt9-dH7FX{<6=LR=Kb+^-1J9?Wg4;Jd?&d-yra&N zw_B8*HZ2hdy+Tu#7VkL@$skkft+FerP+qRf8&|6IIakH`l9d)=kajn^g9P|#fgQxa zm~L!{Q~#i1uPi3e?EO|M=v#Wq0nLz~HV2S9$rCwypnlFjD3cqy_VcDO~u* z3w@J166V2i%h>%GX52NQ(tI7Ea(~SHvi)_XorkpYrD&Viv6MJOR-k)mXWZ~oui8)i zr;m%1J?s3AwlR&h8(SWmT|zm3So&~K3~Sp*%KANDtn-PF@b?T{)h^1sRiw#NUWPNc2tR_K);rTS$>(Kq20;khm7QGnTU{@tM~6_V6gkD~GjBtXKxHqsse z;7%J5O{OadOy2-H%k_1YLD{^G z?u`e&nH{#^;DUKK)vxj@i1PPdDg+7zBI9Q@T$I)_&Qpvyy(zdt8;h}P21eS=enqVf zT%ieP?upZ1;8VaR zE3W_TQ1@PKb_WBNjaAT_ZiB8(ZYFhl=ZV6RcGE8wlcoWoIT`Wtou4~DjVV~xpna0F zi}zMos!cz}qZHuWvs$eoDYYUWNIsQ zw#?%q0?alJc-Lo+fcA|xyx}fp0Y<2k)o3k(2(foU2qVClT=CfqP5uNe6_yHIgDU6wM?V$&#G;E~ck zqA=4gp^a8?#83vN^oR*N(s)yZ!kuZ1{43tq=0w@Ah~7r2y3eC!dYRu4l~SpjvWHHT z>&Gc7*5Vp=4?0{MUr$q6HQA<5U9G64SH@AdkICx`vs;`%O|<(a&vB@DHbUu zZmClTsLv^)cLfxpJ4u-$p0G)~Q5c@PnpR;#Q0hp__<`LOK=dUk7x?rssu*I-RqTu2~rOVl0Al#869R!_WWxGbe4?SJZoea0WmhS@Y7dUIWU|%j? z5e<(WV#&8d+t}>s?^R<)Th)OnWb~;h8@VIhESo>Vx zz;~^!;Ud8`a!;2SaB0)+_rTixm?)Ha2Mp*Cg*H0AOnpw@!(EH)2=UymuGB2wsy9nQ z`hc|>j~7o=+PC}xGMW6>?&{&8(i36G4O=!gW}hc!E~rO>GLIndD=NOYG@`%>U&)+W zdMAmNWHEe92%dWOj5v3;^P-l>Bcnk1jvcDpK5#cn`fN5E^ltp;Rk8?c&k6=5I=sxX z8Gz)Bn`Rrj8s|VWoWF`Mk>Ne~w-qu!u`>8`xRZVyay{UU-q*WQm(S(&EVL zFnBRgENMJ=)6n+rBFo=Bo+0M_$7p2bs&mhmFy*QPZszce5&O|>a_mD?p7&V*DTjT=ER7a~{?2qBHL~EH ze#4V!O)mppNDfXMcl7rI^p6`d#=&H$DalRpn#!fKRofpghM|^@4aA8VHIM8Cq5S`j zhuy^Uj(ryUWeSuVgFlpj#kF*t*L9GB8*euC3~>s{^Ti``S>FAv6Fcd7Ea!_=12<}N zBBc7ND&fQP5x8)z!S$fSt7lZBlK$)uD$v{=sT~6|k73vt22!UJMPO3A7#qJ#5g6Ym z0flbND-t^UqSvf7(x;m2VajWe|(&dS6d&tXZ_J>c>^fJRQ>Qx7W`p`z`nK>Q9+~88M4!tgN>hr-p_& z!)4P4F~qSX)PQ!vPdhV1c($DOK4_hixc{!NnqZ%$8jfU;uPl0Le$!O&k_N|zn<@#n z|B@WFw)`cVP%=dwG-6}VsVG?A$2X);yIUN^x=WzgE(mXs&V+a;2*39`a4KwUmU&F# zzLB=AJVE1KYgMAL9_ronKYU@g$9N*e>qOxn`$sd*%8x6WdPLJ5avHHrUCl#L((a=j z6Yf6i+SoPxzFKX1Sy!V5m0j9CQHf>na=?KwOr%zjtSw06g zti_S9WRkgFb>j?^nH8Vfbv^DHj6MmSm#Ex&|LLw(P7KVx^X&?lV#N)}xvv*AMmuIr zq|Q5(-H{iM&eBgmLZOlQ>$_gNE6`=fZ9`S7;muUQr!KB%f~1Si9&Qt5^)0wZh`Q!L zrsLi3%N8drT&%RW@aAOKjRPXp*60iKkE8UBl-`<=c%0^AYV=>JDA-lLzZ;2yS0iT} zv*JUsT18287yeURWsF?$&9Y%mTAse`LZYm|c%+BInhtg0BSQ zk4y^}0DI#jQRkQ2f7M8gdMQ_{mK?Ty$1Qu8 z?(>4ETwH9<@eevmbR!i82Un4=n7QtAx~wpc;(_8sLdO2ylkPT$)yZ$eh2TR3%5ApO zWeHL!+dc&4sa3AKdp39FFH-3e61Wk&`u&c;;JVwka2dL&Cc=i9GCmGR`m}1b!3bVm z*}+m>=y$DLs!qQ6aV%OcVJ>*Sqv3B;gpnAiqxix1qNsv0I%;mwX!>xx@S@4ukssxZ z&au2IHjApxnr8iE{D1;RTIj?S{4(II!By-YV}y0NZV|2@1PD$0u|a-RJu7fE%H;j& zUN`7~)myM6ic`n=7{&ckck6Z$YulY|$=~6PejYtm@aR^IyIXmIR#nlg#;Oh-l=*o* zvnQ*_7yv3WjGl{ zarlP!+tby`Ou4{#J7nhj$1z{$c!OS9Dzs=1TKzsX7kk?fW~IsN`IT^le^=YnMBrcQ zMAO582SQ=XrODqD%r)naX4%Z?w=-#U@qEjAqFUpoBi$ildY)a9?><3n$1VAIBNcb0^Xyw?$__09nZrft2ZgUhJz0cwUPe1Isdec zH0T)j>E2VPT*_h79J{B@R|W<}lT{o)R$}alHK`~+`14KLgLel#K(%R?v=Mv5eRUge z#R!Nw#cf}v(8DhIZHM{oi9h|dd9(79u2l3>Cf?gf;9Y(%W||A`>s@L0Q&z5b4TY}@ z0XH*771vRFylCv}hMA0Q>=*y)_p@QZ*|5QkocQyC)FgFx=$r$RwtE@b9gP>s??OpR zRXF%J@O+~>Jf;sNq?4^VZQ-P)2)&%0@KUsW`R{Ooq%6G{!{qAI%nI zIal>B0!mlCo=-cwk9$0UABb@8IeESplk9BithxVT#eKA37A4q_qa$pvkSUpneP2 zR`9#~4pq)7ACU-BT%Z050A7mH{Plq5JApnFH7>7;JjGA=-_%d|K4|2exj6Nw*jBn3 zP3Xy9=@w@$+N`7~ag;;k&EHL<#lH$Twy%D$=E|}ypL}kJ)SN4fHUEmBLRS zHfQ2DEbV@YacaF}c62G%hHWTYjnPkzN=l)^0qx^p+O_kHRlZ!%!L{jqReAE>oCp-U zhv0)ITaRf47L@`+!^)Dut4~UIkJb$R!z?>zs-sKYT(!k?Sk(@vOK+_|Wykd{nI+fQm zd<>1WbWzzn5nGUg3NDfXT{M(JG(DIxRe7GbD&iW&{fb7Kd929GUh4zA0e6zGkCxpo zLm#`SBzVsv!>cu@La8pj%0E^zm9#qYUYmN;fYS!KdU=Aq6+xjOCXA9r(m}q)N$1TO zN#QfOX}4uv-N?^5%%F_J3xV5?+_l?0l-%b(!h`nxalscjltw>A99pVV}pqw3RVxW-J<*Muy`?PPH94o}ZbW zUVX0L0+ooWf>qMm%vpAq+NPRDZK@8V1nX{MJ-cszmSnk3E6mM7R1${-qIPm;bwXch z#+U+vMvH}J*M!$q$QdMsUS`(FC>%FgQ&y9Xm!*w9?QB$V+8~3qmR{ z%ysdTTYr~HkzVP23tqOUZ18fxwi-vS9Ix3Ie}uF82a{k+nI5AIt0~9;fcPuTSHZMF z7@zi)1L8@C9UeXMrgPMlUpsL-dM&gPYB;XA1Jl`)XPG*eXU0Uk>L$*^e6uYDr;B=K z`;V!xMrNKd*lcwl_bvrK4ygoeE_8dXw&vzH=~x&q`;}Jt>GOb@>NCSkhzh3CrZwY9 zyhJn{OoI6~uJrQKfcPJjQ$92xW@QwG=?}nLLL^;1FtQumM^=XZ`bll9$y;_ zbYwT>1JkiTs(?~UtJaR=ME3{L0fmyh7-!qLE_o#b!`7!t@W)kfSLETx_EQvh6>`ai z%hd_cfsrliTivNq=m7w{sveftq7Ia>_01pSD7t%3s-`+I84@8b~U%(=z%kLNyWPu65~oYvQ3*<#{2co4to_VVWc`byVqMYkpZ||27I4+-D5;&D86= zU$9g@d~=UFg~JYE@oM8OTYdrd*kT*E@kObJYgx<~!T2|1m_-m#QxeP!HH#K~p7fIVs1oM{WSPd><>p5)4pt+W(cq1ihHK5^#0TzO9j?GC*vV${Nv>kW$-Q$5aA(1f%evd%|6Eq^R&&+$rLu%F}y<>n(i1UC5@vS&L!* zy&09hx+>i~otZmyq>mx-y8O%7H7C@>mv8UqB4;e}HEKZUlvjTGm0iaVQ;dIn=>YKL za7u*q$f$u5Y&(_OQR4hqodskoQ@mPkuuUxT*S*`h3x#+G5-7zgIN1baYaPHL@E-|) zFp3yH{GAnoB~=eI{245oDhT51Y_Qt zD@?lU859?|kRv=OB90u8-f~!Itg!k!7K+;~aIPYH&id{h*VTnoUJIb-l%gVA9oR#H4|h~ydLG70$%c-2Wh)TX1pdN`sOLE= zmY90u!FBXmN$W_{;|3p(47+UkyXK!O;{&}!p~#Tg|szA*X(i zLMw#%uYd<1fYZqZP}*$p?a+CLurSGb8_erPzx(N1gvg$QQMQsitNS2FkwQ_T?X+H0 z(W1;a>P*=L=sW)lDj!Q|q_A+xPf_!0IN$(fgk&P_M~${p3*GbUcBhVulQmG3epil2 ze|OR7qj$pTXSlvkSr5D{b7R1ljl{s`nYE=IgwV{9Hulv07J%4$QM^MWaZI6!V%r(D z^b|E2e#s=NJUuJ(=0gDE1I3aj_>gcE8$Q9GUpkQu>0dXlY8gHN{6?xa9C->kj9lswB>=QKwjdG`lf zz+(ZRg~%5q#3ld@3@jDA+SL)s3Y&tonL-$%{=+HAXFudX=r)ARNNPl;{4s)i&Y5fD zN0lT81DgrSMsZzS8Q(@XtgrxgPcxQgnatJ?e5;KG5*c3o6DX{1lh1pstS`#E4)-<# zzQm}X3iZFXWu*`1)8lC|H=`Jy+1_vD4*{!?T8BCr&t_g_1ou&3qk1dD>sSDvB0&>D z+vUU3T-u0ZxCyxSa;=#p{CGG0S9ops6pn|iX%aA0{|tNpFyz@tD!8beL`s1lM{-+R z2poPkgo4X;%lsK!)vyD^v>8x&@6m<92t|jDvi!V7qUmWDv|uOgPEW~fefY^%7-*-l zzn?qe5*dvEuW&tqpm&{N<+Epi=F@eO4vP}XdM<1%og_VCv}}9od1`}mAfN#V{weoK zoWjbPKK&i#`E$$8;FS#Lb$pdmwb$8s$0bYSQ^&a{mUk*dP+*it4(xu*^H|yGb)}H? zwBXGX?msC7q|B}h|K*dsha#o{VEbJ4VTp5v-9l|Fo~Vp6P2Mt>3|1@F!uwER#}-Nb z)U-l8&gJwa*BRv!7CIF5_0{trQo)s-ZT^yhbASg}K-h@!ds4Q?G8=FAD}FdW>n8d| z*&&AT(+`Q1`6uuqC(G~dSbn?3z=C^EV7eKJmkdK-2@M72%Qgq>gB1)W((moc80u_$$@L?+amRMe zD*`3?BijG&o^IXsG~6@#@yk--(OP zX)e%Yjr)FE|+!KGt2zw5G-fIOCfAiG#TTPX)GD32y{ zg?Ky_4h7A-5sxjJTJAdYmlg7qy5m+va=2>22)<1xr!i#BjM7_FhwVEjkz^z4Eh_92 zSM@B7FB_Ngu1l|0Rc*Vfo{@V+FRjP|tbmJ}3jB{pW14?DPR?l{TMZ!h$*kH4IeXw* zGJOE|l+v|bjEjd>5+Yj3SV_18sjHK?YbawxgScBWe>cu>z!igd4H8iWI%^vcfO<-Qn7Au~T^j9Z zGN?GHn}>$sR$7~+GhchRV)z9S1z>;Q%JE@dJ+%jU(&~PJgg>#$sl-_C>}2Uc|NG3d z;HICtt*y;k9HNaT;G1*lubAjahmFgP{1D*#mo_AFG{2ZI00=Fd7Bc5EBwPX45d6AX z!I`uaJzUl$&|_v@oxGTa!r4Sta@J?Q`OtozA96&2{VN5LVnz2F9n%o-xArq3z!q3N zDmj%a(@u*?TxZJ{lEmk_Du_!US`{gMOzB2NnE(vt6>i?ZQ6>Rv{KwFknM*SD;lJx6 zZ<@g`^20#uo+eea3msf6#0kUKibn_3yLTY)XwUk%Jg5GAj;?|Ww+L7C^=aCpq)wpl ztpCo)ri=}-2U_RE7!ItkD@X$aIv6VhOUj}Glj^@QkH z=}gFnI!tXm2DJbQ{hsEFNQn#ek0}?q0MHX_oWRVl{ji*KD&kama~HQJ^zM1$>W}J_Sx^TT2woC z3-{b_>naPso?@`Z?4JYKF>IIsVj5%gm?>q_TV3aM2QmY)<1;OP`{+CB#@EhUw2jwI zWd*^rdMBcV^_HQ|cWa!M*I3{)g_p|!{Ra`y9~ibuUeeXIw&jR0=@T7(*|^tVNA<+$ zOJ4~QpX5JrF;4NIz!_swjzPu~f9AXnQiqv@ItOJY z+2K#&gerIyAC^gKm74FukJw2oD=UyESJ3rBl+O?f>k~!&sFch~n2IQSp;Tm|T7TVI zdE}mJVUjz`4+LK~{2#pnHEKycA{#B|G6P|Id(f|C)M9U_FKh4I zzB}(tke;$X`9id@UEf?S6$f%0>6Cv_<>5S_?PsUD5+03oQ=z7qjLdUZq-zUA0Jv;d z;_mkHD|+vRjmQ@Asm#lSE6Km1+$hpnFOV1VC;IIC(PjqO2X4x=`$}(Emsqq20fu}X z7QIjS8v@28%FSCB?;zbjAua0X7IV|U1G)7tPSyf_vQ-7DjJDPdM)C#V2LeDk@EDhV z?;#eR@6jxh1EX+)R2Q{W&0#IyE2?9K73=9C!I$#Nx9f~@MTmq-?(zPS=H!}eg>1q2-GHRSp<;KmdGSB)&VPl8k`T9=gc;5G!-7MNyC_waV?G!qV z(!L;yXp|20)6~eE2ykGJk9A>FR93!%^>wB4SQg1sqDu3^eIHLBgjwM5lpu945lK;Z z)Qfz}@X?1zHS3kvNc>}>Jw(F*2HyOcdJq5*2K>Eu@t+P#SuFb`kRQcDtafw+eJ)6{ ztym<_2rwSd7InzvhCk9FsMBG*LbHqdwHAObC{`iqPXDpT(05v?MgUz%#3{~woOSO2 z_HhB`;RN7>*ToH@7RFS-90s1mqIkps8R(s}04+Af}GKX_@=)#6m27>EX z(^q2MZ6%ckx0Fft@_&=)-DFIJ97b1nrKHO6w7sD_6lv_wb@;rj-}B!2qv&6>wni;o zXR}=%hy#F!mP0IV+nq<9=L!>u(JO7MHjwf5$Vc`~r96SnmaS>D9^{GJkCD+a4zb6r z>tNM{cYQJFRL5Y{`ZB|%^`w?JUPxTqQ?K)%WEUgWi2_5?cq^E^5cjdwe;`21%GHPL zl0N^t@((X>ri3#pEc_O^Vk6J^tlY`E6@QU-HyHWm;%3538et{NS0CV4t8Z}qeFk=%ZMa!j$b_~5&< zy(^-x)o21um&R&Lw9ydk{ynBMjP`WF)2T8O{zXKsBL)&m=*AiPuB=(TS{w*nw~}7f zqJf_0=l^(e%7Haa?H&(`UQZaRo-32M&s@0CezEIJLvy7@JQL5oa>kL*=G@~%Jx$N7 zxsN8snHxEDS=``3{*3|uRvHW4-M#8}it^kdirVqd>R_>S7aL-ae_-@42c&%W0rEB0 zCZ=Eg=B1kv8VI%n+%Hb<@QCBa<^5qF9Xd3;-UutMaCpBMTuoSCQCcHU(KiM99tK~_ zq|9Pd%mUuKeG{4-v(wc?0aZuf|< zT6cIE3KEh|G<;|YuXE+unDb+Sr+Dml-2r-qaNd!$5Qk?-AYS{0?9&ZI5UQtXbcq9z zS|3Gy(csv;Qht>hSi75Oe3?-P?23TAc838KKiSYq>K=JWlXVk(DAJC&^XOL%^NdC-~x&@549>=TLCFX?nnS573$%JvwdNS{xv@vCgV2(KHY zfq`4k-7Hj8c zwoQ5#p3_1;(gQ> z_MM(O$j)j3n>(9GuuJvbRI5Jo%aFPfAE8C=YDtC?DA>{b$aV6SXyjU>pTs}l?LYkm z6B(?L@t{#M^p0C^t@@dP!E&XR;_{rMLF71wqkMh*7`$?w zLRu`(r{=C*dBBsj?}cU(Em$j6+!w0G(s?X*gdV&5yJ4?0j9z`;bzG3-cF7I}n-wfO zB|H3OiLRqjS^zC!dxvt?Z!ZBs;cx<7ntUuw3KrV?oC~)&q)+#uGWy;p{A+ua=Q%@= z6uz$`fHEu({i})Rq5Id8U2U-Y)%gvtghN@yP;@_IDa)Plc9kq<0j0i{W8zDte2OUv z)Ie?xR(RX?2Qsh`*9+c1zDv8BO;7A+&bTzzs41JJZq?N5WQAr3!% zvd%!k79-^9TOT0(bCS>Pl7WP?_D(4*g&FC)iUr*V`7uT~$`SC74JQKZ&T)71o@7@*C>Ns(?M=KsQg$GWMPe-XSHgFLubXs3Hd)lJwLQfX{Ud_=*T?DC-w3fahD&C`Q$4f%D` zJu)^+v+D178fM3Ypd6j4xIDtZW{0<5#E%JHb>`iVhO(sc1dWK*yl*`On0zkYK&3`J z@HH|IP4t_-dm29=bm^ z=`pyWyB6^AG)ie#C@^(^?>|7)UC^h46!j2O)#DzjD*({a(}=kzMQ=N5Cs57yjZZ)eHGvEw~Fc;TtU*HCoNn%&d^r>tlda~ zUG3AKrlmR)pS(dGw?LnbtlLN5*+S!%EZGN>@cUXLp7ohl$~XM61Kvp4Xi?ioq#AWo zwobM0wfw$%YIDC8uU5=cG+#NAM%($0&#G$_wBCo&g_`lH&-|Mx(jm2#=$|c@7NmEz z{68--J=QlXMX*Onrm~O3-xKz$m(JOVbS>T0ew6d9nW+M}t+6B}PEvlT83H~cH9nisCPNYtEoh-&#v=|5SaxO?BG35RU*l?GbOrF^#0jZjOYO;I_h&MnE%DBmL(mftGUy8X zYhH&Lw){aS#AU$2+9R3ei(UWe?_APZxN`G^NVpMY=x%S!*@rp~BEy=u0zUtanEGOu zJ_^Udnsl76_eS1yYGZ%j^kKYH;M6XonZl`8f3eXgd$;9Xx@a(JRP5ZC18>_DkC2d7 z6b5Nu0rHBicUo>jF-=0Q!6cGcr5a;#RQVE>Rd$*KPsJ#g`WJ4d2UwJUeFM76G4MaW z9@@_9#wnLgtM%TMaw$zz#+Z)bGgHVh&y1ACzIS0qB4giU(K->jEFJ+;E#g;~^*3?q z-=^a;KJK(Bf@r>GA(MvzQhTM3u4KkI(AM290-&UT9$G_;Z0CVnCH!w4vt{k>YLQ>A z1-|eWENaoZDu?FTaTt+K78rH?^F3tf5A8x0^xTi`H*SBPgMC^OAca;|mmhp=vz>aW z25e~|FI_-yAzwGnfa*VFgfy=|^ku|H=jzq8EpKw8RV?K+zIq{jo2F9bv;NO75B*90 z{)Z|(dw{68mI3@6RG46$=%JnwUt?ONbw>Klb*#h%5CJuZfc9p>LBjWCd_;FM5pW&&U!yKP0lJ&V62q{nVw;_*pW*j?Sa zHM;^XT07Nr%D|5YGLExxm!D&dT)lWkwhR!^_FG=7UJ7GP?h<6d`Y%>hO>=AK_7jjK z(nHrE)Ip`1kWTN=6I~j}Z{$wYRIft}=D;@fjXEq8 zOk#}1Z*q%AMpZUS=T>N9^9|1&Tgo-|30Kq*^7wI6xZ~&h9p3F=!UCFpymb@)=8jIM zyPsI(%5f%zv&>*d0pns`Sgy3MX2@w7R9ijZ=zH9Xin= z9%|jcV=NI2d}@QksX34P+t~3x+B)&SO>E6)g5MML#n4HHsBTJN<>X3iJZjBw0BR&e zomZVia&Ma}(#~7u`&(fQL2j8jVStx!UA-$_v|SiHk43~0*AgjV-z!I2Zuovdf_Q*; zF+fitT$mmfqLeOJ;U6rd2{DZ|vlPsLci+*I?%Mb0$4um*c;0|6h-cw^wgxUtPr&P)#z<;==+r37(Hg&0jY9a~HO zwwC&RF{aX1tYq8|t}UtwwV+g$w34WZtC9t(WGqN*h%{1uEUt~T5w$5m@A}Z7)Y__S z)~bWT$Lo)YZvOdOb^vorh>G@1NLzO~L#e~D7nhZ(lKxmz$Vsvf=3F_Q%ZGz}EyP>Y z5|t60UU=%Wz(Bx|3pG-q^*D4P!vg!m4Ay#v0&p*Ur9IBYb+8)KcKvix`CRc+@S#Xw zl+XjwH_=+{9y97iBCW~QSkzN3rl_XBhMCotGqYy$&rfU1jcwC4LG{q2(KXdC3?=gLI;9rM#LI+|E3mE1mE#65~p-3wxNB$AY_zr_= zH9yy-K^A8^b%Bw+A`0^?T!P)im69mYkRXev`8&;l`-@&L++XbZEd_nD&UjHsuKxu8 zVHax(2WOvaEF+uX+`rV6Tz3rF{^V+pv zb#a9bd(I5%=HOZ6DDkgv2hJ$q`H%3`cL6MCjw8ycBk5|Hi3V4o{jrJVw(Z+a(B4O= z;2-E7tbddPGXCB8YG*UK3ySkOwi5);lAUX3>RdMw(LAvOQd{V%)t(FeXj7fl!^KKe za&V8b?0!#=MfZhzC0G$q`4vmXe=x~SR4LbDfM!vZ+BYZIrS}Wj<6^9k5EH9{bwN(7^rn10?rU1e*{15U1E?zbFeHq+?ew&k^**or$mRiBF8LD~tjV z0YvCQeAdi|eF+#W$KXB-PnM?MGA8wA)HKrBdpO*%^ZP2H6k3<7WRUM&8X9JUGZ#8a zmEWhXa2uPa*S4sa@4^GQP*`G(JJ?6o*pyai<+itWS7xm z5a*zYPN^wzUYYUirkAphgO<2fsPwF|3lqH`8}E+~dD8Nl1*7#=@-^R%eHp1)O;ZEn z$Giu!$k@gvV1g&$vw7Pm+;#O%uZ-ML=f=l#CP05`qrCcOGH;T0MQI^g4q}P>YRN@0 z^9kieX~*X6>b&RI#lhZHw#)@Jq=7O^%^ew9S8$DWRsV(x3Q=6!p4%sQ?Ke8~r;yuG z9oP>;8c+ElTydZjoo5jR#LlmGYbhxmE(}HsYBH4B+5kGKbfOrQJ{$@Bkl&>YcOMJ< z^AlApTZLhZ7E9MlzuM$kL!Xxll=P3XDC_%~^@eL1&#!&}Xz5KRf%UGMs10+zu6bLzLZI=$@1?eFOmZgZsufs|!){l#yWJiKuOuYM|F>L+iG ztY&%j2Lik$bCeCvoG^s{z<-iOd$T$v4!G}*+t2zE_2+b%x90k+^LcRNWwxs0B6lJ< zz-ihJ4^YRba~w8E^Tq2@nb*?^Rz4Umz z`B8bO6k9C8NE5+gE+}5wqX5Adwf#@!badFh{3qNsDwaxg1w5E0xHitN6rzJ}&g!HP z2)7{GCYvDkce4QqpKslf6P11;{~O5z$Mctf#5uryl9peK&bKYdz2 za4>$eMw2$qPUz)6V+N2Ms}2u)OGzSFW>_PaBE?*iYzljXZ8>L&&@Do)G*^ck?~n_1 z%2g|kI=A#fD`-meM>J0~ z74VP(aH8!(_1pxx@SjJV|@m(&&y5IfIfv%`o+>LxX z5}>y&tJk?)SqT-QOP&q=<(R^)1kG@1Hl^OQJ0d@hPUijjSEAC zj~7hxN@Y4i7nx*=E$8Gt5H2UKV^I7)NnWE&iSd`vtjtZ4bgkBxta(d#EOxT7;fAzH zxK>0~#ra)<0l?0R;eb8sI;3Ut(nS-kATh=DM>2c7_qA1q(!9eg-!j zDuW((^*gU8Pyn;&Q3WrWo$rh}eTRzk;mTQe{AjQ6DiX>FypFvpg4Sg)k*lD#jrFevX1WH84}Vq`>o&YAuHBtkbGPkX#fI z-|7EM!K5N5du`F@Vu;R77v;h{rb`d8wdU~S2@BNFQgpTCto+-}aHu{Yr6?@ydaLqp ztE5cF%ed&6PNtGY`;QoBK)LBDRd!$AhDMEWL7W$xkc52(@iuIR8zFWx3xEgbo zYpm@NvZR-7{x`)h{R^FU=>x#0ExQj%E*RMsFv6`W>dP#}k$cX$)cf+OGs@8ASYOMZ z$tXfbG3KrA)N}p66jRv)R$TznUhBra-^P0DebbkL74Reft1(@`pVZakEP=}nGzX@_ zY6jGA0*?nG;ZYwal6uFcdn7kbzokk~L%Si1IF~eR_NC$pKyjV2L0^ynVN8xnfL!Tx z?jnV${@>mTQ~3*5L}w-Opj?LM1^)-%_DN(KIvBrZs0ifkCmuf*6Y_wZjU~le!`j(X ze+h9Od#+`Zn*J|&&ZcqD6yrSBZ2oaQDHPYXDs=w!Bq0jh^15M_pkN`E21|c?H@1_o z?4vRpG1|e9R~Q7thX$~Q+=T*oaR!70I+|Wj>%V!pDFQm*)n+~3becGN9PR4M>?i2; zp?Vd%$C(lntjn~KTT|@Y=*=B0njbH)4=zW(nj9J(2r(`BX)QMnGbW5Ow)ga9?Vi}Z z_PPRJTjhlw_a3nzd-=H{;fOVIEoWK4*M*l8X?q7HOl-{s%Jfbyux;K*GB2L>r zQCeOKpUCn0EWnvOuw$1V;X~^cJlqFE6nY?MdUgG=4mY3LoZ-?psi!d|`$Z9IJ2&{a zRq?1NC+!oA#a&hPrjs~CJZ69&&SzncAe@tilRr0nKnIzMpxd{%n4PsmID|zv5f{)F zYyAC6^qy~<|M3z0#N3fC!n(&V|H|t6W^EZt|5P+6v(FkscytH|MDy)L?b1j1&gwx& z4zXWJPdk>miS*i;0N(`MgDceapKxjxLOK)EF*H)szGZgQjZ@o=PBdb&E|koE_R)_S z4ayl9u-3||QloXY993uKm#7s(w6y4i^2xNIOZMd<$g)Z2>$2zS6L;e)mPho4ZToFj z5{I+@L;xY^Kws$f;QZxT8&W_`$hX=hehzM+CN)eRSSemS5oVC@_eSYWlStrm3a}Y= ztp9fCx#LXHYN%rCH%n-YKP7xwLU2fV-Kqdp#=<*}We7^{E?M%IzL64M>8GK&7V1OB7{UVMdJ zSU?6aUEVmG7dfBF+8=uKJuW(5t_RR!o8=#_V*{p=ICoB@9fycccC|y2PE?Nb_V01N zz_DRp!{{)#p*Yg9c53)JFYvZ>mv$^+?U%R6xN+1yx}^o4t)@Xu8_*z*9;FZh z_N^qur$=qbQoO_}Go%jm+y}ap{v1S9UYwsG-E1-x70J7wId(bNFA|KV&fGEb`!jaf zwudSHaB9${`FM5zgMT$0ReiqUsmzW=1dBGWVua{>{^j2;B&tSVdmH9SRLVUh8Z{b& zIm{~N{MPCl5E1^-NkCl*C8RhAV=SB(OTV6U#F@VlWTEq@F|F9{#pEddWAQ8Mj7JYps`eK#vJBlG=l0&m&q$ z4brBB7J)U-5f;>DtZ(Wa)J|2Ga^F75$MP4cw z%)fk3;cr_QgER5{sB;VpZ!Oojv}WHbi)f9cGQ1_Jr8B&iMK6naTY;bW;Wu(o!Rcs1 zcWwgRepDcQ0W-*Y!pw&5qx|E|h8GSwle(AAq#O=V7Z;MbA9PHffe+K zd?0XS4~f&7mICQHOkCk177C8bBtnJg6|M|i8|V1~BGk}@|MwY3+AH-~Eq}PWI;ir8 zAtkBv6xMgr&hx-?e8Y8G3hxL|5C>A9wt;UVFGuod@AlcvH?DlML1e?cj7?3xkCw;eE&vR#t2C+lu!h>n7@lD~r{liGW~WSY_90}ixo$4+fZW(Mq(-`qr8VLkCF^Rigt zenzo)%k^dhjTULdQ6C+^s(_)qW;o*{AU2d5 zNY|W5yvz(hKkL+Mb=)1~0zKl9b=((JJ=C*Cb18sZnE>CN2y+tq-U<{t*E;OgCtkA+ z)Hp&ti;{FcWYWs4PqD0NUj)?Fu|gX~C?%M|eVPmxM(;J1@sEAl%1hVtp;Q48G&gCt z!M_6-y>Y%-IgSY4*u`aRt!=0W`%gLnXH@tr5Rw9^qOSNTE2Aawha?faCk*ZO z1g7W*J-Y=S2x83BUucm7)Vu^f;NrQ~Adv$z&ajP3t0v%}sT7@snD5KWQ;^g?13l6A znJiBq!L18V2-5sHUr`J2l@u{wWUnqa=c=XUifBY>eZ!m$<^wK(qF7+6mzx&po!7S@ zgTR)gzj7U?ZPpt&(g%(K(8m4R)7wz107Mn2RnjKIpXBN=q06G5;1opg9<(duyxz=@ z0})C%p-0C^9JBijq4x#QU5^l={9%PvN27ZWHd(uib0&3=sOh zW4uBY7Ok4U&(X_EGtdjOArIq?368a;N}4u(~64UCrC0h4g%eypVr3{lgD= znFSFB@6Lk=a^ZzY23JG#J%dBG8R6`922XmJseg8eb9 zi%HEDRPa5#OK_-2OSK4S%WCZXOuTUO*EIUS=uh)}H6QS>#L!lq{AY^}fKSAQksGz- z$H#_MEL&FndNZ3rKjx&YP(Pg-)exlFE8lYHlv_ALpCpG#OXI%dk7s-S(K7O>x zt1x}8?x1y^=b%Ag=$?AY>AqrhDtpSFv|<8oGwY3jm_EYhPxz})iB#8X-A4YEtd~Ao zQnzkLA23-l&TAi#mG|Q1w+MZd#kw>J(`C9#Z|gV$p$ZKRp;0DRb+YMRGOgF*KEUrI z>hSc}g0{BZO!lfH>axJjYfn3$O{f)}pw{-bh$PsFtpFy}XFH1al}P6}K&Fp53e%o^ z8!H2mR&cBJeUPne37O_B@b*VSd2W>>|0Oksluilzl4)A9r?!1G*EhkC57z5b}cVN>rx?2y=75ZD)r?fixrC_erkpqVe&BeOL;)4l7qY*_&48G zV?&4g$;$d&J@7K_z8%@(5Yfx|5%{bQ)$H2q^2jiv?ZHy|l32QA$}7FMvfTAW0k~u_ zjG4^H(7fuIL8%#;u1^yJyQiIc8;hSxZZ?7YHa3^EkfSrmJKXo$wih>Olp!bpdBP2G z-gm5obR%o~p9C`HjKbiY$AaZV2E|1J=!<#PXa-BIGi#=`XhzGHTj<-p_a$&F7a1z) zBN9HSHg_paSted?YNmj9@HJ9&BO+MbK`)wGk2c zLA4zkws*rp=7eH|=7>0|;>iCr-Hf5aTzEsi<|^jcrja!I6=HF0vC>v-;%CqRVuEm_ z-sknGv4(V+q%*vwhB`BSp`sCy3Zcu;iG}?9+HHHCV_0I=k zyY9G|VXev5op*yFu-HoS zk*a^z+nqJPFkP}xjY452gORjyElH#Exc|LNduQ5y8_48IrFf(aHs zU(LCq+&?NulZM8Ys}ILQF!F6~F=;D?;e-Gh$)}fpHho=x?Y{XLZr$8N7qYu{yl7RX zt+e)zIo&U$s|VP;(qpFZzy8Lv(l%8x5Ls1W{vMApOAHMz9FFALo?fb7$y=TY%bJfB ztb5edRxRq2JI4T`XRGyG|1e=n1IF!WxG~QgUM(#s^@)a;&-NyK;!OB7HK^rdZ9+5_Pa zvl()ucAl5^zkJ3yGM%63dD@RqOhhN*Ji(MQ-j`5Aocjsj?LZ^-qjuaUFx#igE^)@l z9Ql9*qIWyK15frdTT!2ESHmcB(siGGQ&Xz>&nFU=BNK0*Y`s(knKL@d3IwLi5|?s= zl=MW(^wi7rwDt+9Kc~*8O4@xOkIq!1EGegdcw<`yxY($~lXOwLiWV?f%48RnL~ZNoBM=s9Q8!?Nc9)r4y&*K3}FW9n2Yu zJ~IB$rF})E<%1)P3$w}!XWnvt<(kwLw%-3#f(F_((i5ws-YBZ!WR3nlns&?S=dOp|Gw(DZ-rFNe5+AVd-qzNg@{2y%e`v>abm=* z;BHZXWN4Fm?6DFRyLH7*$>!Swa2q6MOPulwTTawcG3L+`3kt<#da)7e!ChQC|psHqCssldpoP?MOG**|M#}= zx4%ElRdYGZlS*mct_&Y`*W;Wd4jW6&HOd59jnr4^7tCou9mv!(c2~p!9Ynq}uJ=P3 ztij#xuj@N^LU%O_ZFd72%a;XywH<3$d?V5VR?0cNG}g7Bp+^0+y?XM47^$ooABRU| zTqXp(_ng-u6rN{9>knOmo{_H>886rF^aq8kk9QQ0Ylb zK^(wB`yGQg7^d0aZv};N8BWY6-b*5@TvpzEtB-Zr` zF$YvV`zdaG%Qaz?#XD7{c9X@g#-y*(G(?{$6zeuKPl{-ZT!`SKmL@vVDiqSOLeQi5 zp722GXvK4>a1I+?`AcSeik>z}-1kBipaqW}!-OHpe(vymTd%!->k9jd+kkEEboh6(m2$eIm~3GnWX3GfRX>5Vh3fe-A$+ya@yUGH6negByLhd3Vs zxz+5P^AjsDE##1!GUKI|PyxJ`C9%BQ0ID1bV~d#z-#8sHqGk_EGrH&!+@)cjA$pGJ z2$UK7PQbIJCN@kim`Bk;YS_65Q`e)TWV=G(q}vy>c1~@qJN~Q z+l%@?@NpRBs|T_nh$Z%1`*Y4${R^BBiTu-{seD6)(Hu&JnbPA`)!i>vsZl7|^B9l2 zKbYfEecK``rhmF1x?iDuYj4?|Ln+GjAp6|wa6jGD6wdl=pglPAXa%?{1H@j=5K-Ty zt~g3{t~-zDyNx5@eZ|UER1O*x$Z63rX|c76om=t+QvN-uK)LzFy5VS7i6BYZies2D zG0Nj~M_(5B=-Tpnv+@3YzC7fr9n^8AZ~J<%66Q9T6CpvzPxtZ6R@JaWdDDOy)s!$2 zsUVjjAw02yjh8xFJRN}`bI=Y*bxi(my*;1l4zEaCF zmL_8BxW(zWf)|`U?BBC$@AJKIdDbM_coMNJ2(d@h*&Bw5LM;%*Y~E zVNajNUiT*=?6j}TGn+yf!%L&b&2p~Z<+jdkw{aTx!B6rM-6(Qt*N9gR{~}BF;wa)A zc9I{4`%qK&#t{q<{cM#6dySdA z%U~Gko!hSi+N=tW3f4b4(>g)g5dFu}jkcA)3r7u}5?Ty2OmI}h>MrQB8t$V!AYu)w zHu+Y=7|Z_c^4BgR8^u}|E{e+;cOtd6@!&VPnn5Y-xKK_JJ3~qw9IL<)C#;ZA@qC=3 zv{~Yjfm}>>rRhPzBO;Es(x#aD74&T})m+9Aa(E3-1=D&egYndh|J5r0y%Zws_$EWP zFl5?I-RqW_&Vrf>bh}t$If?X+y2&ZcA-^zz+~u7~ZRE5F^+9yDQ0Hj5s=CbG1jG9@ zw`iU+6+4wgF+}#Udv~ozcff39{`pfGAink)3i;FZt~^*CqNF{77WU6?$CU%0o?M<~c1c|A#-*+!va$X~jXC(^S66by= zHb&tL_ANPu@JV%-7Z>qY!GnIIl$r8mfT2fvmGVx19C)bHdk^I}OvZ4}oflKCpZ;WuRN;D8&kWVNGRUA}*?0jf>sjmW2p~14# z9c~I!LoN$}j{_Twu~{$IUOep0FeO(*z^ETJzqdv>L~{re6}JMnSj|m-+*UaiZkJK0 z;;@*Mu^EOjD9zE8gzw?Z5$ewE)c9O$mCA+&mGf97MB_D!28zBkq>B9Ot_aNy4J~-i zf#_K|20spmthsoD%TWwL`CBzWU9#E0KAFIw?e8{{RKT9N-g;V z0_Q8ij`DhDXqf=}B>sk8UrKrg0@j#Zk!qXMQ}wGeW29{qmS-o5wi zf>Zc(J3GVT!sstxzNi3kzv}#x^>j`P@v;JF50me{$#xQtMWn~Q>Llt4-nDd_kSa;z zDYC-v78YD$UkJO+78h$OMyQr1`D`T;MPT5lG;=pjV#rJQBxgeut%o|SM|)>BwLxAR`ww#4)AJMlsYZA9_3rMfoRXLgKP}ujP?UZTZaVk9pB+DwLYU{FFnp1 zql19G@>pve2@0EvA2e_|G>I5QinhV3b8rDq5(3poVy9YP@p>5Rjy20hgGw#O_awEO z40+Lx?WpwGU}67TTGcT9s6c}bVTu4`aQr5_v7kv*DZ}(vWHC1BPaU}eER1Kxs0s3w zm2F-92}gxbmJ51sS{V$&b=NKMMN5%oc6PH2(NF-9tOhcC3Mhd1#*r%6NnJqt#KIba zFdDqq69S&zP5W$g8hpG=W2T5#U|t<;vNkO{rMHQaO@#-}=qk zaw``J1eg4o0fBcn<40n6V3<9=W>G!| zeE1gt!;t^FLNXV^U=L^7I7Iont-xp@s%B3xtAWYjhx9axoQCm5i9S!t*n7R?X}zq9 z0iI#6##T84-!-Ffi|8jy)!k$LC(2aVN%hz;N6PiY>$~rGz94e)qDyv#r1UJy^4f-u zXIr4dgub&s+fd{68#|Slk6Ani^HYzWaZC#dPr+pIxZZwC;n1@{sh27Bbw|6^?1k5O z15h_ppM%zy3zS2um0ZUx?A-{YqTvm)?Kx5KTL2pAmT|m2H7Xz9gNihv_XFz&anZ1= z2SHZZ&D#KLi7?M9tQEzeL{+I@D7nQ%^b0QaDCIe63-aMTO=Z%Wn)TJB9D9kSPr0!o zxnqu{290k1`2PbT09YF&^UMz(so8<2d1EaMXy8&Y)s#==xDAA9Vm}iC^h66`^UP*b zPI&e#HBA_a-7Qws?Uu3bOdBoNz6U!!awkb2@VejhH}eCVwDDlL_gDZ)$1;B=9HgEX zT+X0(Cpwb!?ouK0^R^UUS@NzWtD!KqCBZL~<1g|kAi<=W-lq=jeR!c%-iC zc+NDs7Z84fnDTOs=}Uy<#zs^Ow=Bz?fhSLLFGy|*PSFhAIJU=qSA5Oqt zz4#sc{O$f@t2HP+bJ~4K$is&3{Lln`Zyow{Wb+s+bC~m4l$W2uoA92SxqCw@?5-KT z9Dd_T6^|cORbo33*uK(+SaZQey!*_wgAs~YVx4_8A7qEEEGo;Zd~$*)P+X@{2n zT&Y&?y488@1aGJF`TFgc>WQn`Txn^2sY?;vYC1(K4V+@iyo$T!a&_Ic|6YDC0Rz20 zU%!I4!-Yd47;A#(-NjB7Y+pNIa%};PeL#a;9yUEa)2pNn;bMV2L4o%{{iGPq<_o?6 zJSr!u4BWtZySOhFfd65Ji8IY4p;Y#jK=|Oc-|DFr(hGTsnW>$rn(YRTmS24-`gKX> z!w1g~`56S$?d(QIlw{i;W92lt*d)P_2c<-dk)1EIR}5_>358rFHnZ)7U+!Zvzc>~t z*E>Fql7;h1zMYnW<+;}WzA!Ho^m!29#gsf13x+}%J{W*O4lDLe6TVzO*E_DSd_no6 zE3*OVFReo+JjVu35BLUjQ9SWN5yHq0s-@7?($=67JJj_X zT>+BQot#Xjliw4t+j+h4HxOrhUrw(~_q*mSue;_01%JOt>Y9&Y;m0Pr61~`7Zl?sW z>43#rpd{1y?C>^Y?qfXr9+~@YOx}UM+g4G}FFmp1i$U4?s~fT^@X0#^;+H&=;GdBq z1w$jI_(pKX%sKDV$G+@^5ReQhLNDcQVZPRTkAM@|Qlo_yN*(uV&T8ZXgvc>$8 zaM6lOwztK88febCXIn0U-i&a{MocB+3egHSIIL>1JBvc8DmkP?^SrsaHG?Toh%x~@ zWP4WWg1k;N$YlYRF7Ezj(j>~ab2z>WS2|dCxqcOB;dqWHu&J3X7$?`m5Dc~-0;iaKmx z?#dAnV9dER`TM`UQNjE_f4(P@@hjd!RZ5%@>1Tltk{R7TRJE+n8AIZ)-tgDK)!}DL zk6wAxX6LWO5i|1cJfBsz9~U#ZXYld7FWNvXW-K+6JZPF_txi{H7r4G&PH}eskF2*0 zh&pQ8#&-ef?(UFAx|ia zFTZon%v{%8GjmSIi(pBK+xq4>#5~_4b`Y3>>S4z7qJO5~TGC)XWC*xUW!2Hj5P*s7 z2DeErK{fihhF5y83y$=svg_zPv{m%+3hTbNTMumSQ2$i?R)VfD1wPq{_^KUokd)BL z!yJc<)@64r*~m(FEUo@!0Gqo0Bh5sd`&1oDMsnW`! zXJ4Z0)NlBVGXFF!hdS?o7U|?&3@mpn<507+UPhY6C6-8sM~#21IAW9Vd~N&PYGSFp z_dETOCHmY6GOBhpi4CF2k$3ROcXiDd*Q2GacNqRtww9sMIp*sN``$so6Rr?F2U)W!eAEO zD|C%t2soiHoleNV`!d;ev58e2&1Iix+KsD#rKc`>F@P1g8AjF4=<|gUXl^2+bVqC! zBe@!ny@}8hADow|YG}yVZqxMkT$23p)9AEs$91jiBaK_drtsHc6|;gX&jM*5iVDcp zh5&8SlH3rV$l7lMW~=d3(w8a5@CaRw@LMZPFUHw)k4!|G*vhi3!C5ZLnT(A>G?SP( znQFW76EzVe10UZm#lQLl-}0A_uOK0O?n>s)vev@kNf-!riyX}*4zqqZrm$s=j_0jv z;2d~yEaj&f_gkfKkq)PjobfkvabxzknYG;5$E$nVRvUoV*ukG;QvjGS`0D<&)?73E zRY*Lk^+J%x)l$M^G1a5#C~EQ=JwOSkwh7;ze1_ef?TXqn>GSI^)UW_|)?J}XoBxHy zgn4)aeBS*?1gohesQ0Zw-<)%j=3*T1zo-;{Bx>SHInXAEAViIeZQ-E(jp>q&oAZt~ z9*$njQL$ zf;p{)7Cx4s0A0L71MEX%-;~N86Bu#u@qbqFOX}zio}2i*N#G}@&N)pkB8$Ca950IU zxpHF;dzkQhpUQO!#WP<0PYmZEfLkl=%Lq)(@eCZL!>Pk>~u9_ZCV7eT3d( zFfo-=&5V8&yv5Qbqr5l-nL_m`7?CXX*2=EPusc4#fqqD&;}tKME4&;C*BfpW!v$-D z!lq0zt@YAn2@cVd4ad4uWRwS*`#j6FFpO`#oUevA&Eh$X>?EWAi&)ff`ZysqW+efo zD%_}w2PRQj*dcXSf7q08gkg*RPD;@yKXsBs7^xpO8_v3d{|YyX(^;3pj0OXtKp7q? zLs!8~3jFC0TP7QHu@m5d2q=aZ`r*AiO zqW)n;wQ*ngAituMQ;H_zdot!GtZBoD!G{(2t2&D27OVmYO?)Yth;L0+(Ts2RY7D+{ z{qg^!u={`b$bZh)%@9W+pk%>SDS1{~jU&sZbi)qPN7E3F{e>~Q(oVXfYv6NcKCRyU z%a*b6P4U#8DP66Rv4jud;b5>$b1+g6F%tP0k`*Dv2WnNisIbM0i;MfGRS@*7OY?P# z2kmW=8vp?KKX(DRFcn%9CyZwPMtNRm3P?sX_VZjb3)PRRb}DF8KBS{*z6mQbx>i@* z!0|d`8G5n15eUYj*$uK6w_I})4PA1c*)AD+*(^n2_9>P*RIDq-&S7hpHw@JpajR|DfRbgXW@`&jvY4hs4FLGmb3Y_&Q~Z_206N2_dNn)E?Vht$7G z;Q0V$4RHwS2>69*lB{a6d($@luXDmq@~ajMWf@PEZIW@=77AzYs;G&`}f4rLZmvGmdoWL&)qxuhzekTv((P&TCL+Tfk=OknGOV0V(vV2hF$+OJQ}iMZNHOfi_ro^A$8JeZkw%lOO8L85=P}Q88WaU z&=QpT3GoO)D^|hDG%$)wTObrfnIQBbRI*BHFE-B|O0l$gqRrdec~tz1Mh7F8i0d5b zGmLt;O$fYe$+KjLU6t204-06~w*wnK)Uh5cvJ10@$KXNAi#)kk_MDsNW&;;iH_h0z zgG?y~d4#P#CLjevsIl>Ym*&{;D6u$PY&{ujxC)RLX17n>#i$gj6koo$jT^7Il- z`?*;o>1Suzf=~ZgEp>2LYCwDZ0YJEpYN<&nL?z7Bs(zn1Rm}MKl^(vy*SZF-oOkFS zDA0EO@COG8N_<;h{uJ^SgCUiyhk$#WY%IMdOVzDmNQ5OQ~CeE%m3s?m~d;ueMFGg*O-QcbqgwG2cN_#llqUzBBGVy${vWanw46%AD<>ie&ExtgCG^RCW=Y9eZfaU5J87i2$~H+w@&D#Q{{d9z4-!XC%pvvk zvtL7ae5S6s`I|}(AQ_6*GSf?tbOlzWKgM(}!)W_E(pB_s&WLpj-q6 zKj4UQFR3UdxivZtBMPQog6QSJhX3tSEuCh62{@#DRPsA83pC{Is_YvBBmL$voADnw zSS1}y=cR3_R>*Sa%JTyue%G4a3VpXATuVoFXj2^2vTn`vU=zd-TUY`{6yMuIo5r(E zbUYWgcKQp+QbOuw(VAJ*NlQ)z7OOgxZ7IWsy`-3TYA)1Dkz7;s+6-j4e?=l{IAz*I z$m>d~bow;sB{W9_P1jNHm zA75U3aDP%h=$~v;Yp$p5K?!DI`xB1#I#o}IO_oODK4FyYx;>2Q77267q4({hmurI=VWjglZURK;PXTq1S=;PGp-f7l~`V2S80 zA+5{GU`>#1=AzLUu3TR^Ai}+i7j-6gpvn3xy9-8kMhU4oD~(MFZdM=LKscb`kI(D# zO%anN3etE{8bIn(CAe~>q!;xw8drrq)QzSDd{zs)p$>u>avL4AhK;?05KHQTE7A4P zy`LBK1k$n*=ZFf6;#&9!`J8F1Jr+kbpF=VK0td$PL(Sg^;j<_l7xRHxyN)=w4}&th zq)!*2G%dZ|bx`@zc;8gR?4S;88a=)clAN*@+p3;O(tO7&P=yE(Ijv$xru zhLKNJgGjXF}~GW2hIxwz2DR!;L{}qesMp5pQx4TGLjSmHuP-x^~Pu(8x<>*RqK7Fdc4Sg zXfG}nVoBkJ3`wD%YjVttNi7IRplfxcze~-@ zErs7Rn$j5gQML6wO0un3ThM}9S$Avof5+1I$Q}VLEBP)qKS_jRfcaGcCrrzbe2%KB zNvgw{*#@*Xvuz~BI>=N{%5YL$d_W@aw2*WrNddHs&ZqNTv$U!>exz!7D!&K6 zMTS_eu?q#{$TKywxvE&-;>n>uC9Tg4{R{dz>6S}@Yn@(i57|%Ud>`;?cjei!3OE%y4>2 zYhtb2cplMf)cuRKBn0`VFEgFNUFZ}9LZ}mYM@+S%1t|Qc2x#nUkQ5(g8a}&Yg5Cw) z+586xN4Q1+Y4d!haknjg2!g-{zlnfBiQhxUj@;+$S%4XzJIb!KqT7k%FTklKd1aGl z2Y9RDsq?wwW5IEZYG^9bU+LAy9#h%^6TaitaNNC5te(0!A9T~&q*g_0GK_S=HNyxd zsS3XoH#*_U@;QIWu;56MQtS{*-T*(Q0E7X(Zbi2@Q|~+Xi?{1`66B&U zvnZP>Nar$D=U!}dtd|fIt!3Z=$e!-J+;EH-SXkAPgO+a|A~)EYyzDC5qvYaBr6R9I zwF0io#Z+ebP)))BB%~35kBk?r(Vr|??6dZDm|DW@ZtW`}UAdC#b}TW8BpzcpZ~M9a z&`ST0w)r10ZwNx(ef;|AU1=>#XhT(KHFF}N{6WjMNG8FN<`=Y8O|kN-F_duh*VHw< z5dUdLIBeebl}w-&>34K&_^5LU%@Y|)@#;lsEU~NF1klBY8ocvjOoVy(Lf+TC8Qc|} zHABPLDqli+F8D*aZSg`HV<;e(Vdi`Lo{S*x?NKI>(bP;Y{E!7dr}OVEGw85_8Pa`v z5dnY#TBtkYMZ=Fd!q$QxqWK8C(rbT-6&;U4BU~I`CCl3_mz@TCWm1PCjg5u&0J7ah zPjVMp-XlWGGPtHWH4*Vww3x>hobJ+U`LGm%`eIyYUqcsRD{N)9HZS{*M#t8?iv!Ef zyllO5iB&aV2EU9@KNWjett}Z_RIn$Apjzb$i+aARdxm(WpFQxrtRZl_%i@Oe$2{>i zj>~TE_Ux=S=+X*wu@!Wg0(#;s&cVX@{5ugaZH0xiNd~yTkZ<%V&?B8Ue4Nm_Q;aX4 znyL#BTu{+GWTSA*dytlmPcuM*HWtz0)g}pVV!gIUFM=C0$HvVJMun!0cQ350BL3;Z zIB|}qDWNH*o<2o;Gf=`RS&;m`zn+tWeu!38eu(~XDeB#r*YW-!`hU~IknwQXX#Uhz zP4hSFJLBxJBs6yp63?GnOx!g7hzYhDf4IZyIGr1%9lc(8k_dn1a?e{=IOy^6QEWAf zw?`Nf$3DiE8p3?bBN0p0XHR>;)zxDF=QZ7Z-q)JboE(j;=Sy8XtC{ODq^{P&mQw3r zK-(h#P?DKSXhpSTsL&-%DZL^Szl_^pN!v6)de|lj9cg{Q3WI7`)XvcgW`~|PQ$@K! zUd8d@J0e>MZd!Wqh4b&`Ef8qV#o_d4Rla|d{I0f-P!G2}5#PBfGjz4{{zm`i_qxf? zZ}01G+Mt_HN4<~1E}RL(9*%mG+!~Vq&y+*Zq9taX*rsT~W;@v)CUd?X9m3+mecJYS zKF7td9JdkdiG&okw5pW#EA-Pl*$S2!d9@JoUk?)5oCj0nKd$y%qI|4>DQ z#ZXtKY+P5Uyf&MJ(BX3`@Uiord$Zfm)l(kv>HY5?ra#*Pm`dLNuK7JQ8hp=9<7UQ) z^c!A-_cL-{D1PtgKOD#dxj;E)iXE|7m^!Vr=Iv&JBy@B%%3n>Nsr(he>g=n)3smL# zn7|6zmOz7}m_0Z*MH_L2cRWnNEZ#bgY!P>48{8bH6XN5I)}NA+d}$%2Hds4QY;slv zjlHXL^@bO<8skJyr8a=el;BAD$ZDjy{Y7HS>K#hv?pRLBJ3p%X!urRkpof0wH|rRl zssKwG+)zEKGQVfp47{1ZrGZeb!F4!G^*D7FczJblH7=dT2mk61hHXtlMe}XsS_Kul z%5~Tb?JU%y0kxBq2G)uu-@Qq4DPiFkiTGQQ2~GGWe(V!d6k2iUO{tIgCJn->n8&Brvxsb8ykEO$wPi#UhUM>dD|D^Z(e11@WYqs!JRZ*D@3YF$GPE8 ztUYQh38E9e(VHR;v^|!FUPB2bxp!PP7UnjC=*|Aat$@^FW57YRbnIKe5K=FfV5oiv z{O=pg_5c7jV=N=4o;v7pshigDk?NJm_*`@dK6lK?uL7FZ{*&1JPuq|gl-N;9US1dw znk#&AHPRzLH?{Ro5B#|t)GxogjdgaQz;Nyg_%Ot+W2uwq@qskoU_p|gkfTW0F->L% zJK-h&7iEjB9n8^mt*5q-2wNixy0uEyGabHf4QauaskxW-M0$<@p!p@ z9P3U^Hy@t~FHk|_~NbtDY;>3DTuNaNR_~JZ5A`@9cVD(y`-RT&KkpLm& zurgb`jrKO2n7JmaCdo*s#%|4X>YI74DwDPd*Z~C~2~X4nifzRgo&moy-l;ycN&r3K=!~Cp3VwfY)J>PR!czT0Hmo&eN`W{u5>rac`JRFUd=OuR$Gr~<-({2tOl^wwTtxN$La0LH?C!W!}FJ8LS zwizmUvYwuv(8!LMTSskxyO~hYR1CN^s^@RpjmTPwgO+}@BzAd~$Qgt}t%BSm7SFuB z(mRA}FlY1|-p#}NY5?o;AR*u|=#dBXi1y0rljWUcU1AzT?WiR&<2MPI$n;IZCy=rW z&gYCi2uc*R32AX!?k=lwbTrR-Z;q%g?ntM3{@M&`@kJdZS=JO}Bq05$(xUTG=9`v; zEk+C;k`+F+4|9s3E1D|1SA&BS;->|^n~An`*Uz{rzkha@JKb&g@2FDTTDd`ws_T!m zAD3-#H*Y|9e$}9-Vvs>6BRAzgwDX%hAmB6TAx!;9K2NSb&+qB9y0!a{Ni}TSBY*Er zF6#?W`6~FRpqrloNSc+92*ZAig-n@i8B8}E4>Rf>X6FdkGE>jde4STiFo{(V9{oVw zke)m&L-7GK2N2UTUOEBrW7Dz^+{SnuEWFLkGMCrf>%T1N4woO(e zo3wmbMQr4z@BoX-TD5YZ#f?d!p#MTfeiU*L6X*O_Zj+{A=Q!aL8RSjJ@X?KBGK zbsSd5xlw?AHIbHBj}^B>=GEJF`$aW#GEzR)*QS%~gtYW%7(~3L_1oa(j}CQHZF(u& zwUp-aK@OV@L(uDG(`EfTGoL$~fXf8K{f+zEvjbH`vd4@6R~~?og%vD>bB(?CfyV-R z`L{ne3_H)k@9Wkd*KbNob6mwA$~Y*#2JS$PcsbA#mx0ZjKGQlfORrR-)n+u~-tog% zq;#+PmX10`V0^3k%A(R+*diHVNAgm1aype5&3pm?&|#oM+Pdg921thSb}R!>p_GBQ z7Ak-T9%}+nGX2`;xRAml3U(9abu4O|0eZv)pJ$Y$G(9%hp#?`?q)Q>KiNnbJC0hUl zRt@{uF37AfG6xB&?O;i**ATkG0JsUCCxk&OCaV&-NL(#QnVqGdUKvSM9JaXNN$CroO=W|BvC`g4$#2u)q*WBp&)LnkVvH}P-F980)FFx zzrRe9Xgr*vp|0Y@ntn0-L16}p1#egS%h`hjFont#A%g_H2%&9Aj2+rI75A`DF3i6%b?=CWWeQlR0^iMS;B`~f?L*@VB7m&7L7}0g?7QLt47Av=@HHiF?^^-XZPz2kL58W&9MTU>*jiXY za(Vonr7$OX6R0Ba9AU|VTO(LG_AY}b#7*tEl?&n7>-hqn^v9b&xeJd(3O+3BXE%VU zn!F$=9B%WD2}&D5k08;zv+NgqR1b4QbcP9mtI+B; z;>V#s*-V0L!!A++IlFJSk7VyQN1^o(mz*_E=Qp6$7-`@?h%_h#xEFam>V7O;v;*Dm zS7QYpX4F&u$jB?~x^AB{Ll+cBc7+?@@H$d+jQpNo<@u6FmSaNb>_@>Q&{3UeuZ?9N zb)FLK_^M{A&DIt0F+>gfCC6J8nlHlfJ>Li3nl<_fzP}*^L=Z36*aDU>>s!RX@^ zBvIYH?0f}lsX8)qKR1(5{#$?|q5z8ixVsCwez&$E-HqiM*!47Y4B+bHS zYc2JteA-Hudel3=p)fxfX>zP0_^DLaBBm0Y{d%r#ICDI6eILmfdeN@7Q{rM3x5Gw9 zLeBLkX4U**VuQ85gPi{%r3DIw>_43?mOov==89j^{I`DmT%tNhF3693q6GW<8ZrVB zi$LCI>n1)t0IY^t{fUGwnX5_h3g&iV#tVn?T5a1LCz>=m^-$+sW0RtMg035YhE=2@ zTq3db0f^+r{G?bpHVh6PllVgd_H^fYpIP+lWMN8E!Gfm#`9u;|hw-Uh6#sJd;N%ZX6=iiJg#~#ktN+23z~C zwEuWy)59eZ^Kp$D92LpV`QfjL#+2|T&}$T>Y(F%DkHM$k-?T#YJ>+hAg20DA;>iCo z=Ta%aqgV$@K{tfnHHcQW`#ettu!*s{Vl_3@cC2W--BY2?ERayeeKk5bXzbG-s|T*# zKhBLDNA3&^U|s137KGZnh6SzatK0y4Mr06)EP`=|sLglx0gYG^*sb%Mv96T+@z3hp z4bzO{b|0B*r8dLovapF=q-il|pT5<3J#9S>UT$ton(p$cjDSm^R5c+FZqyT2p?7gWp66n-)<1sd;jdDJAN|rQ?&~)3wmr>tbe-X zyc`X}Bp0HU_-_n*ZG>>n*i-*7$LaMbc}TRLW`;S_3YZC4DBeg=Vc}_Pc6B6GRCTD- zj!T{@rxwwF>6RICA?dgw>6q|nscsrRB~HdVkmOIQKSB>!=arKn3sQ)72%evB;(Xl3 z@*lmfc!gH-q@j;v;Mkrla988eE6{BB%TF^7rlW#_gsK4wk4OwE9S;$Q`Y)@OG})rG z+BG9}WGApC%#m!tAEq_{*owDQwV`os9+ghS!WOwlSyJXyUo%5S{f)4)eoVG-H6gcs zn!VL6&;Owyuj5NzB13j<1 z!aE}h+pIey-K@9~q0=d2YcCW^TpzJF$V?fHeP8wIgZ4h**V|M7PSGf7%7eQdkNI2b z2xVLTuEe*pYe*8qM7PoK7%SxDL%#%1;CTLb%lQbkzL1e!RrBu z2q zUye^D(*I+|x{{mvyX-U5{xD##SL!}*SvFk^q=m$E3I(s2fxj9g;5l3q^PQU#4r-NG ze-w7np*>u^4)2xeQY{S?B-J4CD2ug) zlto>Bp3ULV_;Mm^Li9N_Vby!qIuUVNgC$=#y)sOIc0sT1L1z57e#itIK62b0Pn`98 z1JRBz7TekR#1@V<8a=;Y;Syw*su#M+FLJbw3SIDplybaI`;Z$@g($g#sc-+f1_|qT z{qIrrr%sx0okbx*JCg!>-M6lRrULNfBhf5>oiTQZax?%E(S800YQzucZ$gD#n2$^X ziMtkem|c$jx=@PAdz=DUsPwb$f8#E0*wd$MfQHrdro%Pi1&s%gYidT_d*!9Ipo9$K z4z78ff##r(&&PKlP*!J6i~dQe zTU*Do@=izVT}3IzpVw^h=d~1KZ8qC+vo}}~N+=|Z@G7LvuYUJ*U!}ha#Ki7Tc&Tr6 z+vH?t=JjW9vN#i-%_x79yjbvFfqV7Eb34b2u^k_K-Dq1qiyqQiNTlme2)9BFcQ!6= z!1addyr#V8>`-AfxX|mnj6`zSc_g!vkAt>@&%|QR8>!YEU0%MVjxih1{Y?b#$?ajc z8FbNXwM5~H;U5g4M}F9=hh~GZX4TO_Xx^M1FUz2tAR z4K{YG1WRyaNDra}|AbOJ%ARui7Y9VoWj*$`94~kOAWoBG)R{Pk1U+4W7F_+VsE&O_ zcjD2~C@c$w8P|R(?%Q0pOPe@~_gDU!P0*axks+k0y1yh{rdVCQR$cw^0`%wdd-ok# z-v&Qk*+03ZJ~8kLZx$p2!g-WEZzqz7Qf!$vBv`xktuZ#)OT75_8YF|4mhShHLup)M z)?`pAviu2*DDl$YBf1zDv^29NpBkwdEt-x0WO5d$-iF>|OcEy*Qb+ObR||2f>NC;9 zlL#F}Y*K28S=EQb*mxOnNBMB=dJis-Pl(T36tsI320Vg?A7<@&fN#4lB`Wi%d+ zRmsw)KO(+#Eoazavt{)D!$J`DvbTE9gx0}jabd_;_e{Pex5Hy->&EL&=HsWvyN$De zhgMcf{D0%7F2W3GU|PDk+uIlt*N!d$nT)HmB@N#9HpFV?;Hxcd;BHUf(~QMaCLYI0 zp{xzP94BKk5d|Ie9e~o9vXBdRPy-;G`00QWy18ufnm1yXBaua8v23c8@x*gNJjvgm zmp5L#)?P5YJCi|`s%B&MMAUT|lZKB;F#E)ufe4k%R#Rkcc5~QF7?S$1)vb4Vo+euL zA>4sQ7g)X3Z|vQEx;WBCBS%g}1afkRH3Ia;ax8hkRuZIb=lT6k^Pl2|+ah+4Hgw~z zb|dv^o8nZU2wIT?M8)oM&DxqfN#G|CyHVj9<5e!oD{ecY?iS6*)(&6~ULlD}dVwjr zH9VY79yzOUt4B7Qn`?4Un^`5DC$$HfrC$vd0L{PpN&D`kl9##F*4^{3ntZfN+9BOP@DphsT?NgF9 z<`s%1;V4jZf;4KI-Fj%^b{JAZ;y3t*(b0?h^*`%3CU|oTgBA2bnUtZ-{G&+&+|QXd z33<63GpF~TrkIWL8JNF33)w4~I=V%k1{rv)HXe!uD;Ou9xDxM9SlS7C%JqIF#Z!zj z(y{er3S8~kiw}vIX$vJWu~OoKLuxkKnbaT7jL*qlx;IYIyJz_ z6Q@I3kNX>w14jM(rY0VrS~-QsdfJPGuqOlN>!0K?RSv|LJG$QfHKFC{@M$7zG;ck{ zKJEvWd+*ufL~5;o$-njK=;+Gvkt`4VMBgD9V9z?*Aj#x4jV$p~d9;gf^}*1zB99qYmbo1L zABqbqy+~^Np7TFJ2L0i=uc5mej~B29_WlK(Dw^|h=#%;`a8As}o1RLspA2xFXLs;6 zp4wXO8oPfg=T?vQCWab@+(TM#(*v7#`T!f9FJ|Ht;B5M_?nd2J0K~`IGf!c-q*$bp zt4Q%1#?sGjE+ul)cMa~sC9Z|kL(cV&osGETKak#yA+Ie`=)CrWB%n;x(ISoAj_vL_ z>#*s$f9Uy;&S*nFF*K)TcD`e4BDeDO1%`k)XZOS0QCfx>M^Vy0=t2!g0ms>OD`dzG zsp@#)rk?@ua0Pe-OiT%D>^#mNSVW{ty^i2ppF1$(@vIuPMkWh0rcAc{T5t7Y#^Ia_ z!@9?U4!!%tfaf|4uMk!$1_ve`V>1x47~+Rtxx1QWCjCTw_He|i>&z#q$ncBw?2HTM zfbA$Ikopj~mq9VCO;;v>eVA6k(X$=T;dBX=GS$|?!LE%%H_lqBbC9AVjS%McNE zQqB`#a5)qvl$Q&?VE&uH0BL6=HnoFTT!9Ku99Os%P9Va3V9MSkI zdx&`Ua%q5F`;OF?g!g<|CI{k!h{0#NtuHau?_lZ&jOE3i6d&nO+FsU#%ER$jEEo&c z)Edw}G#hX*?FZ)?w_KznKD^6+{KNizbuwT4$1vRde<45uffkOl^R@^~bpZiEl6(hB z;2osQbYeSoIc130iYJ)xIHn97q^fpaFi8I{YjO5`2#JiRRoKDOmO_k+e~qbksU3W| z$?f(^SHKQatJcJ*V)PB(GdaZi*@*W2xYp8}M5)Z(CwH&2K&s^!m7JwuU?j`PK5QZEpSEjD07CR0FLDu@8$BF zj(;(ZGj2&YAC&z`Mm-iVrm=L!V~y$J{rGZ0GP=u$e3)`}7?*576uh!?7Q>Bqhu?fr z%6hA1$FD;4oJ!M~A8q;$Fji%>o3mrig`M60?!Mq(J%n1|Iksp_Dg{PrmmxUw*Hv&D z<$GeYUF#A5YAK-LJ8cH{R%zOPWR-8=&qsol$NY;eWpVzE<|8-?k8%_MED!#70$Vj_ ztJ)_m64M%8C+q+UfrGZ?v8~H5^|DTcGUEmwvctA&BU*-`?G;F#!JUI+3B4m$;831`G$%Cm+44uxF_* zEJL#@k`mC1w66=>Do9)4!VVI;M8bWd^M zPve|7HhNWPZ}Qw@!r}hsF@nQ8=q*_-7*-P+@KXt9lU|I``4ob-6J&pqxK>rGw<-NI zeBw&E#D?p<)cL1BX`{;P(IFk5_}=rW-0y9f|HuvioC<2Un>sPUBjHcifn|a@MLeE3 zs)sU8DJ=$zD&_l$KfbL{Fj#P*XvwAYMqp}e6C*hOntw_EfE)a-X)CH!t<+lCbS=pY z8)lAd$a@nSEokf3>DzqS@9h_Hqo}s&IQ`%YQsf0HYmGu!n=(uW>vWD3nPy})-dQEt z!tIoobxPzGR|+f2mDc1g+QG z5~9kx=#>$+SQNBYA?MigebWBJC!|*q(`v)yhd^rqxDbb#L)>3v8xQOoU_yd$V*a{D zUIowKVryoB0QOvKvURnJHf_Y`UCll2;ZRdHZj(3zHSkcS!Rn}8o8bj-55nW*p<@!* zBTuc1yG65?Ep2DKs#-%M-d2g}%`jD9bZ&tlEsE{)h04E(-17yS_|y**Y^G|cthud4 zISpqSl-jXeD{Xfnx^svvC>GrOR)MoSY>~)+>wbfB@E5Y|us~7uD7#iAkI;Ph^Hh$M z#1#5`dxL7c&S6SQ3K1NEu4b5UWEOwzhhAy|$!f>faDevecA*S%Mx1b0BHo*+iH@Z5 zcNqg&^`(kQcx8Fmuin$k|5tgzewHQpWz4nA7RXeOn)PDY3R4uKrQHT^MVu_2hB;t22nDPhURjg<(dA&tC$eZ^kBM$ri!`meGU)R_=Ri^cL zE9H>l&3nj=td*N;y5oA==tyVU zckBZg{ORv$0m$~;;2uk{&>-!D==zi+=7@vA2ey6YR-(q#3Kri+& zb_Z7=J#u$#wWU=VZZ1BV!>8#_<*LDvXUYHQ=mPx&M0MTXVyFGqm+!mxJI{J<*D(Wr zfw+~*$Lt7Sd3y5eSlnSkr9HhMeNE=MGz!DM(wvlBe>jSp2QL~Ub0_Fpvw!E`C(->) z*uQQgm&99l<{L^6v!ysq+80e&X8G{gI;~ua;X%i9$g9X;i$3dHtX;3@)VSr&{q~3 zz5U4v@E8+Htv-ss!r`UjbZb6j^Q>ZV@JiQ7Pv3r z-}J?!M@QGz&S5f8AtT}5Lg*LvH)5R)crIbgC+QDJTZ(0IiXP;&#VNd$D0=)X&s8c@ z`XMQY=F;9mc9`d~TP--hBzw-`;5Tb3KgZ0?=@B2CTJf*%Z$jd7rai9vRHULIWjwCt z#roaZ@=^35mm5AEpJD>Bh3CHW4y@A`TbzM3(*5_iqAF91XtVL7<^IX6WeQ{p)>>;& zm8U7O>I>DUEhJ{xB+EuJeVePIh!9CPz!F+WToB!e0f0@5u&}WIc9vbfm~IBIRwGVK z8K3LO$$9f=CdYGUDj}S^T;|dX7xxmS{M@`TN`Oi2VO30p4WdLG?+dJP%YC(v%~=m7|!0aOgcv`j@ASo5QpYqBlYiaeqhFZ|H)iBWP9&zAd{sA${m#F#6S z@mAJ)tWykwm0J66(h$-K+pmNgut;^^qhPrQZWJ+lMlMDK9x*62k2q{)gr3Y=-a-LW zkF(<((G4>JeQxfv=f*(M3dwemI9kez<1?lLX(%?0~sD5?(FcYyv&P+9a$M| zOI~ibftX3m-gN<1d_qFrg;X`G#TQjxt-DaR2xWq$zG0;trZNw;fH^Y0sxAS;%rAJ2 z3*q%2RYVH7|CdH1W6lj1_BdWO_aR+v%F#-C*FcP0b_jp3tckbc-IN^tOn9S$xGBmu ztf=aN#r+MaJk7hCsERL>#K`XFD((B+4w8woLb_LI>k;3AwrZVT*LBGmc)QfwyM^J2 z$BYjKhBS8Xe>-O&sH)L@tsIuNLw-mHvv6wxUQ}+4Os&OFjXzW!ve5pfPCX1#1t(6n z<@|H%lg_OZyyIES+;U3v9e6@oyClmP5?AcOJ=>}6;Xp|*uTxT(hO&j~?0td+H+-)d z`^YN$rOf7TyO4Wj%VDIs$p49`1Ik?5r;m@6(SRT^afJ~~-Q-$Zbi0a4b7d9H=1H)c zv|d63X5?{@VN>^%;-F)sJIb;t5&HXs0656VsaUBs8-`$eJX2kGJjQB;RLzOH)QrF# ze;%zeH*^JS*26IPhusZH;u}^hUHS#|2#c=?7s*sSmAr(|-Q8X0S67j_2FNoGJ>PIW zqJd-nh$)seLQ;Fm$z;5?KWk@I4=;wPB@{Zz4q1Y*JUYlm8vKl$%|wU|I{oC zx?I~uH??h})ND2(j{$@x6h>Suy?M586N>*RQ`jM1RCByGRALskh}bIJN_kQ$?qEz+ z(xmKFBGW7vYc60>7(|7{$`(GEHq)DeiV8&1B#%==oZi>F`|%Bu^^o7%l?stWurllp zk4D@+vmd5njFF};l)eXrOdVEg@0(nVn5}X@ug$Gy%V^ORBDmyF88Ex*RoFJ*6=!Cp z4bFvpV$9rKPnYLl_}}0zWvk<9f7jMPpR#FoAv3ANb0$;(uq{}^ zwm3UG+hb7HJaxO|&CEmFBo5~fZys>+<AgNYNeE) zg?vJVNI#>l%*&Ok@AzbIKiLyDW!jmr6NUd1H1+X9+<)F9qb~iK@H@d^;`y?W<70?w z+ed#+nPM+v@3-8{mo<*s>nu^^krDFiowqms5O?onO;48MjEAp?X43_1nfHDp|MIX|zR#WyY!60TtP-PcId;~GKdcH}+N(#o%l)$~gr|0KoUsTdoZ zv$?}3GFwqGI-`Hs<7;1pvKw}bLlBwd{P-89OoH{X#dl+Uh>T5x>z3guV%N)JfUyfy z@4FyxZ?~PFXFg|qZ?EA=i`iwZ)ro}un|;&l%?zUF2Kb{SpX^@g2uvwR(k7WUHyR3@ zvA1Zm)|@`=J64Z%x|HN9%8Kaf$S|)kYj(txm*0BvPt7Og=HdTq@0l?@z7)!Tq#Ql6 z-YM64iP@-YM3DXZjuR@^eZfFQrbTT(bW)Bw5qTv z@bbsY8HRUz2t99}3ap6USAr7bcqr=$RoRP$lIM7YJQtgb3r@bqE2%kQbD$~=8*y>+ zx2sqLa9xUN0Csi^3;Gv7eH|@iDp{jtlO}V{cLd=m0JiL*Yl9dg{jZDTY<< ztAccT#5f{xT|hw6*r&cCn@XKErOw)qu*-a7V|EqJ&Ia?q{KvCt_5?VVpv<;-r_Rfn zn7?|aWj5z%%pb=WPWgdTyeLE>E;99UllUY}dh1?0` zLd{?v<$)hQ3OXO@gs5dWbWjjXb~^Ly{s))t+qxrZ-2HEPd} zLK<)Uc`s9z5!>A_T9G;TijOKS7DiF8aa=M{e*XXAe&ZSLrxW#xZTn)gaN2k=$Q})O zzk}6%?mjPcI6oAUr3}x;VmP)(rd2Pl9NK^PnzTXNQ?^jg3gK1>OKX(%?h6^ouh+?|*MZd^?EVoJlGOAVj-E2fKIamVZXj4@uFC_3B zd7?<^C#~XLc#sKPU`dunuk9oS-Kk|uGj1EpC0Hrwmh;gji(N#p%CKL8m53$xW&&}v zk!D7wi`Fd19krU)UasD>CprJ zVrw6}iQSdanKss}TN!$7^#hF(0mef%wfKZbGJuA4amG~g0>?A&;F!%zU+zV74U*S4 z9D6H%q*{Gs?a6CpImNfyELB>DMZ;pjQdAj|Yr+ss6as!|u$y0MOZsbu|M{*8F@!M= zyHO^j4G?Ug3^02&RTGiv_<^mvYEWY&`i)@3@{yYiB2=M?3Hpj<_p;hH5DNeby=YGB zAD8f3ch2N^ZZ9STyp{WSDaF68g>k)Nm9Q~p<>l!29WlA)^Bw77ZgEE`xXh*f6hqbc zd;E&S#5WZYw8ujZdDek_qi|EapuAXJcDFdLqLbO-Zz>3DQbLC7!ZJFp zbYe`2%f{JDTfCfiGv`lmqUpawE?1|?)%h&JVIcf-oE;StD}l1=(?Vbiz541 z2)Bqm5RJ7LA_8y^9j=O0ufKUc7Ebi-7p!0Y>a+})HKH>cU!atUN+Jc4S(>e(o^Jcr zMzLSFhnjM3&>|cD`yE`t!D1>-St>^}Wa^wQ7i3PasbCcS;rk zrX;6Gj1=rS*~^RoZgmUcNG<6=)@Sc!ZLlS}Jc)svoHQF6wwqJ@QkNvF;ydn0;E_uZ zK(NA*asBm)cw&M{rVQoZ*uEkR*90kF+Hdg)n`6f=`v3TP%eX4nt$TRUARr~(-7O_8 zEubLX-6`E69TI}1(j_h3-JOeWknZmHUhaLK=bZgN&--PqFaBH?^O|$aF~(JWf|66> zEinWo2?MaC#KC=uda2stFrIF13Q-o;AR~+2zY!DxeHGIW%HE}5faP~w++-bWh9GqU zU)2kO{nFuuddr2gPzSSJX*y&Vswg$wG`M}{FKPOQc@mas2{@J&|IvuW_0j#^ANwXe zs>)u57#lCku&Hw>sWy9j+U~BJZLaDY$})uV8?PVrmjmqpHL*a;L+;7~0nEd8UEQ7P z2F19Ns1NT+3K^8u%ZycNJ9jr1o0KA3q`8seO!lC^ba7Rm_fdS|-1m&?&4c^*zrAhx zt$uUMR*p~!KDEfqAY(mYZ1)d5rJ=h7?=Tbp*DvKG&lqyiUcQ_Z8%}eO`po6K>@Ahc zpKi?yWiM1W;~+si;Q?IxH(tQRaihk_6jR2zr0)MY_2tB{V}w7JDSy~nV41FJ<7*Rt;vqH<%Twf*iOStd7lCulK@m)%F}Erh*O>N9JP% zEBm2gKlu~wia|JiV2zh{&c{t<%Ju@9e^>mF6$mi!csQ0dxZT>r?8P9XNejt%ga%q% za+pj)BU`R+_Ra^;OEiFG-mF=%O9^|N2I0M2WxjV}G+p`n6{1ryUv0lL#w{yW;oJSz zqw-~l7r%#;;S=`jM+%U2VRemyvNc0i{03DPMh1D>D-Jwtj5eGs{C4yIXbvK<(9kC7 z74xG^Uw-?~T-Y+?b(b}mbwuK$hT}$7ri;CHC5%y@4|Uq;k(UF-t5UC=sGbrnWb#f) zKn%E{Ts9YjnhTYBCa9CLfgH>|mehVD;O+!vxuWm=o`G}+Ge{T?q5cF=1naRK?#|S2 zhbFXQ{}F}=im`o1)w^6y4j>HSx_Q}r#z&@te367lA1-A!um+iO&<6=Y)1TyR=Qap1 zJY8ND`vZSF7-Z9C5*L9D9Er69eSf)0uF8GmI+yz*CG=GmtN)9Mf}ey`&%0fQ{sbDT z>uTbtX8$yUOc9mu)6iA1Q@6e~;fDX{kfXD!kO$bRIb{sTA(MQirVf82&J}kNJwN_W zV#sl0;?IKYjQG!_-{q@xCWofYr8LXK`;=jRo;&35{b_h)T%#QeT`+0N|Ii-Y809|Z zhb9hce_H~5pBB}j!N$!tbcfu{)+h57gOPGXO5aj|LhX=@NbC{6YG!*hSN z8(WCk%?)c0s^#;?;nc7Hm|=Wqa4XTF5^%wfL8=^=9L-RYDN)&uyT}+8*m$Ji(s2Wi zzuq8X6!+q^A1MJ;#iV)0fpYuz;b-o*^7ZAMg!r5HY9`vV`U&__B}HlSGKIU|Mv1*d z6L1bx6n@O&SkP)s3>2j1(t^Uiq{;uWg50Jeo-rLlwCBq3-ZTb|ZOw_Qh@?4ba)XOm zX-NFFd_Y!tM8Mbi*)Hh*y5D`~iC}F@j_tP&^pNa+_4RxmMRyeeA*4a0Cqt3BHS0ZC zPBZ(AzI56R-FDMjF@j7VIaY&$SkY5y;vZ;^0}Zn@X7MzAgl>OSQbfG$6il0`$v zY(rH43MMITBkq?Tl%LcZR|-BVH^da%_pd#Yc;nsM z?s|&7#X{vZ#q!+2P|e{>1i3uCg!cabxFiGJAL+4AF)mH?16!!$^cy5BcDzo;ZMO{8 z9|u9wRcJdshb8T?O;8Gj?}Q?xP46My@*WRuOQ8t#QC^Z8DlqY!iP3l@AmXcb=2l^7 z@BpFnp&QnBWGpr4m?&lx6|M}H;eY;MHHN*|s%d2Gk=0i9G@M5zy*Ne679+L_8g_6c z^W|zB6NbqYx38C%0I-8)_dt>_H~aw;^1Dc{&hehIE}d+rS9RU)`N2;}A|)B6hHolT z7Lr=_rnsO4tADS=y+qPRBH9&{v;H~rPsq6U1Kkx~{Y;?UA2OAjUJMLipEmbkBAwic zujwdg%B?c{%CTwj#p6s6)buT1i5(uXvev0BzK|T4RJOnozMV9;v;Ildn!5Q;Y+;9` z+I{mEg6&jus$mo&?W#HsYfjO-3GOd9|KWuCP_UJSEL0vL{r<52uT}3>wL)(hR(G$gP!YvsVP;|AJySmO$xZhjs%qZr#($~9*~%F zEd|&F|#IS+Edm)x|9dLiaX~ zo(*j7usVGp1aZyn0ahlVIxQuO3Tt2$gSEwwX;O8CoU~B}1ql&jmcJX&l$J9AKL@7j z`s%_DSp^r`-)z~{%6T7LGQBpw23a821x`tRxRHwYlefbV1H*aENj9gv0Lob_B+Erb}F@JG*vA?u?_~p99=}x7Tyh2ue|@6syGfk z6y!Od>FIO~QzKdGF`<;GLUiZqgoHamE*eYg%4!eN(LJ<`2&y-yJA$x_a4m z*LDT6p<3wta*VL6i*+mvQjxheyfz|zgQUgMdG|P!%No7r);WJEGS8G}ZL53l%=weo zL%l(Fe5V=*Vq7rK)*Mv5SHUYuRk~s)<}0I!{=78nt}BqPv!+qL{Pm(+Vs+#P|6M$s znY~(C%VJ~5sNmu3=iq~<$NM+<_G+815|U|d`VOHpF#9kIFf}2BD`+H(dc^OZDHiQE zeVm?`_Y@?bT(_2;q>hB^dfc?(V8{BuuPByzn7n1<&Fdb~UIPRBavzi88t2|ezaR95 zY=5{v#})k|%-eB4TtZocWXU@#!lc1vRGj;kd;N76GgVg8$ysr}RF;A_JFqGxsPp6d z_hMtt#}r#5b@ zV1^?2tObipzE!L%VoVFrH`XC$1O$!X{_b;1ld}XirHt>X3rVXXpg}VeSGJV}3MU{1 zh@FL_{XN5ehih-H5uDhgK14aa#SVBzKqJ}lh6{Kh_hzFLs;B!95Y5dPUFz(=Seoe~Jh*-Ot?e>-gR{nX5`Wp)e{ zAq-)Jesyq>)$z-oWj0nl$eCJ~OJq&8I`iZ$un25B3$xl%+&RUSRI&V#wr#Wj*;^wb z>@vwCR;CD^ueH?u%7}R9h-fS=rGdpN3AWk52l;zYV-g%V>WI zElO=>ODG`!L3&)J^AQ2fCg$ykAc#ey*T_;2%SB_fh1MKesaozWI&a0Q=<6;1h)UB) z`r9tds7-ye?@~iFrqY#PAVxwD`p645kF}L1cSrl|$ac`Ll5!d&)&8%a`1>yEIuknQ zm1Cq|f#I|?1Jd;rhP-`RCXM(Mo-1Cj-;3&Q4B3r16}vd5^aVv^P&kIxUFD2$Sd(Uu+XTdGY^kU zg)zTAI&ZuY@ndpiAc_&xMJ?9H zXwvD6CC7zUP5q^C9Gz9;0*~>xa(_96<>oOHu?8oJ;*2(3V+Nu=8mRbJ7eZ@q z4%Qy1s`>gP4eNbZ?#6XN7{nAX{dJ)VCJn`0Iw`qHm@Mp_37+t1%V-8H)Tc8697)I; z1AG;xt*T87)bQoINcXJj!go##UdS#vM3;E>DY#}-sd#p~NgMSO>jD^vWzT~)%DUYs zWzVwVGxNWmCYTZ0MxUtb#~^qgVq5=r77|>FE(`FtHA@P&3opiXL_BBEMxKtG;|w(6 zN`kz{a_=*z-DHwN$2oU3XhbRI+26%=(PkaW4hM+>&1m~N{|pNzO}AKlvdFTEiRgt( zj<(HyO&$u8tl6Qo-5k0n))B6}aF!tIkF2IWsx%$;dc&I2UhIH zbwW7vP*)X(-;Pm;i!I(-V9kLPUw2Fx0#DFly|>f~yxaLOkFz(;W^ZpV?rrhu);?AP}_m$Lbj*nvFe zmpS*@(Nmcbsw+(Ya)h?iJ@Gg84ObtZ8q}Yo(>XeIK~mRIs`<3}1|^LrI|V=b2;>i- zK!Wb;?fd?h{)bQtoz+JOXLY34sW7+rA~zeTuZwScNkDa^ONkfiM-l=oxX_uTd?mC< zMV7*XO2%?n#c9~Eysrb&xOYswSuu>r#2AnL!jx1D96i2jL6)>?Kzs1yXq&+fHjBb# zj2oBMUC?_NaW2X8Q8x1YnzEIu#ns<6sWToHF~+W$x8|d*n8h%!VEl%_`g;v>^uUwC zNW|{z7-bl`qw%_o1!G>kI_CFq9lxV8u+JWkUNTeeDP#NsDvepj zU`eGLNlN>PdtrD9yWH@;R%f0-{G$zrjJROjR&J6-CFM{9ey`luA1=|rtXc@BX zCN86+Vm{#9Wj8qMG^iGgfxgsTOEgwJ$MzeMFRR2{@Ut=<=&X$v|5muVz9GSh}OcV41tAEz8GQ^elb5!kUgsK%!%V) zAJ3XrH#|#NlDd!EBq09ArDFrh9W8Fpb*lu|;UueuYUFyiHeJ;Uantj3-eZYeeJt2I zSbeOEnpICPCjkRAKh2(kHWxQdWBgS1-x(HKamf-inxl?|aD@ZtF1kCnB-4@fi+Zr@ z^RmU=UEaJ@HCHPi`|5k}m*UGMxk^>2KL{wW9(3+!c78q#dTBLLEh=jXbHSmwUAVU(E9Ot*dDTg)>+`;`2ByC-p1; zJ&PjH`^v(Gnjj6nc~h-1eY(z#?-+oKdwvTu+ikaNE30TB!;mGJ4AiTEb~);^djgDT zR^eAGOlm^`6y_@us3WMh74~fcpVGBIA9}8+&v}Ok*Pz*Z+YX!;vwKo+Tag+z zF#X!tb<;L6i8@?Wc2K4DBq8e1%va^MV-P(CN;`VbrQxzyI$FItG!=kX04X7va| zKj#02xjl`ct-f_2??^Z~m7Dh?p%gpYo?$jNk`atOE{$HuN&u}M5Qd*tg~O@6-Ec*^ zpP+)qHFLxG5d#YXelud$xW(@?sM%8vgGN%ZqV3TvsuP#IX%|EE^ASEaCVUQDNksL( z$$#m4Jm2pgkkS%&$>jNYq(-7-Z31~ZY8-s=xeB%#olE1W^_G`DTFMp{iUkS}%KUli ze6P>#N2+5m`~18p&!vadWIDGf{dZKm4KjFC6ThI)GPBPzF2+F#~?0J7T`_f!{)Jz)tD+Pg{e z@@3e{EfwJesDL|Cjc8P{quoU}>rdwF%R3ZhP%r2D8Z8eO@2{Wz*NiX10BNATN_cBR z-*72hsVfwioZ(TUQbZ*uK0OmCSOje0OMd@>b0+c=yQYKL+q1W1ZPcKn(N|y>zINNb z;%Z(2fj325WXX!z+64*2<5difz2S5`>XAU&fa8;K69ASQ*BXd8OMsViQzoPCX<@|{ z@ZIYBxbBe7#yd}~nZf-Kpt#T$0-6NNJ>_<2Q{EG5HsjOlCZ5y`DiMfg%-|j(6+#7< z1XoY{Ss@nHD+e8BcH7r{(eHdeb%Y2+-~iD)5%o@$6YVf+OK6(zSA~3mBbJ=DkMn-R zRJ~0EQNNpbbIC{cqZ)u@C!Wnrb0sEpRX=}1r3oL??Cj?%?X=PkLpzn3@tdZst>N1x z%NDBQ?Ajivs$KGyD)SMvTeSNuP(#eHI`d6z_4}J2ht>-zXLg)R6&Ko(Wl^R$5hEh< z0QO}d4a0pLDsJZ-<|hNYM3TRF{(N}0t2oK*SvssnahDK(zytj!)c*^zWsSkUlUD%% zq`Q(D_`VAf+P|r*F`LF35&-TG4O!G|NboWZv+#)m5`C4Zz0Abh$&L4k({JPO9rHyB zhq5D|A!ZVZ)%rWl>oPoU@kve=Cc;y?mI5Gw{HQNTZXr~-{c^qCKMJm)8GFVgZ!vM;FrQeb=A*+dWkbm6CqpL4vx6w^n<$LAUb zmQAOnSW^wb?OC21XIt&t*PD`FBkH0xkxX#4 z?HiolkwGcRMSg|`zj)1{w;HtdsU8FG!0IK#ex0%oAWWRM;c}H6Q!LeRSKi*GD+xkVETGBPJ@RUd5xfKvg&MQfkO+g!3frTuW>X7yV|e@zGQs&)&&iHY}f2I zfI=QfFC=_0-Nsn;K!POSYwb>=nV-;*@^0UQ|I2I2KJ>@yx{s&YT*JT8dT zQ^SSQCfV&vqWU3Kj6qpXWvH8=Ri1#vIk)<~SBM-)_xp>PmP&b<#)^ z#cWG@Q>XmPIxnMCLJv&gMEnD_$bSLv#MNLQr1wzXW0tLpZ}Mg4s^sV{m^egxs7OCV zYPs#dS&A6PntH^Er|H6p>{mdAWG&Q?pIa(!fi;wVDoC~BXDIvtzDhy662kI$H*Ncp z?A7PxNy9@p?!+4OMc}3|Q3<6O@V((9z5BYsevJDcYeKzAFvgFbCfFNDvx%$Mraxwv zuOw!eW>ah{*|JZ4AV-fMZ}@XQ_Q~hosY(i6jn;2|50x)E$$R=mh8!f5U%gar!o7Ko z3RPU)#ZP6yOjB2PrDqKMn!di3V*NJMsq_rU@_jL7lh9@Z8Q?RRfm1l9SdB+Rw-BIv9Ss^MTq-qU*@t4Ag$$X6E*$ciS-n#6( z2*$3mXPuqX_;Bv38bve`IbY=WSMSsA9OZiW^RZvLwo>&7v_rMb{9mhlS!k&ZNBBy^ zIhKmps!Ps>oF)iy_$`;AsWP#G(T|YlU8;yN%nB|RYN6D%vsE6Z6 z&$QJ@OfdNVjj~w<;O7*AOBL&K<0KUS)^q=Y1vEdwCQ-dpip*Y(!&I~I$e$G88gnbJ zj5L)Gt0mhL5%8(0e22JyDY&Viq8hmOtu%9J5e)TN(fi%t!?QcU*aY~#fv%_iHQs74p+Xy4&I!2Y z;1V@HNDJ4$+}wQ8Q?u1EMI}MYK}I|;t;c$upE)F9`gUuP0b>iYp5W<1+$XLh>2e->H}ziJ$|}CZ7foNnaUAuI|B;<_&M* zW)5?|>2Sa4@;44eaaizQ1>h$?b25<*X_`<+s0LJQnA>`3oBq{RGESL!3^r0-9xC-Iyb0y5NZ=7=2e}pTDwCjF66V zA1P9g;1`cwqOg z@0KqW)_)cT$jZm`Mr**8ID#=f>Dzm)ut$FKs4IkjZQD$48XDyErRvj39p=k*AjGpOhyE8NbT zoTdR8PSnu*l)%3O_uBSxsyMQrUBrymy{EVgIGhWur+eQXm2T8+c!+1kulhoC{FXAK ztTzKQFdY4BInE^5EbBACnodg5uSLq88@gbwQU9m+xOkU)qOgg7VAB67vL`6xZs4xX z0Sn%dDqWj^DFI03PCXODtU%*1C6mWn6fndc7nJ74Sv_LgPO<`?N-B1x7Jijk&OA## zDmbpwgn5i)f3FwmfCjo%G7_W#R~bG=DIZ@f^Zc!_~~)+M$NSB6l7RtG;T6u7T1 z>5YzHA^w&hy5opPl*DayV55S<{?}7O^TZXb?8A>5OsBBV>^-m$=>#pU)@d9UPUJoF zV(mMTI~Uuw#)#-2jQ?*bK0=&YBM3XzD| zz0>@6%mcu_;xD@rnuU4H*k&I67BaA=kZEdgE&_zuC}Uj)6uI5L!@vCh!5V~#wmfc} zfHuD}?xwm~XyN-jNdyXe5=86S?Uk`dfsrKlE65$B-f|-<6xXqodVZy8xqQ%NQBGzm zifO6l!m`e`_G}yS7;OYY<%pbA1Krh0pO|SY05I0xC{hbAIhL@T3F_|)@pvmRt6T0P zXGz+j>8tY?4HhdSB)9Jbl)0;N4=Y7E2)fP=_3{C??=yKRWKYLzy0DMhsNz2E8`B_$ zNaPyDEDKfVZQ!xcP}v>^qqr4>|1;NTL(EV#qCjut9+khodB8KEoI zf2}}t$hB{JW`dD)?fuu0{$B-$aQq||HJxtK>eloJRYMllbpIvt>KEVv{YG)nj|qIi z$29j3)X9JyEQN@DcX-W?6y3h^9rLnU0r;B~0l9cNXtyts zSKkVRBJ4}KqLvFesh4{f)I>uobRhDO9YK+O3+}~!>z92qc-0H+2!(r!U{NC8SKOOG zM!|{jImKwxlx>>Kv|?diBLUT1DJvCkcOyvS%cr@Wc<6iUdyeVASWO{(imFYwCw+Tg z7&6f4!h?7#4|@gU@Aggg#Uxlc@;(c7=^l!Hjtg2Fy4lwr zH(=X*9*7fIyWjV8@%J0MTjQO+{coKT*&VsnK4|%wge7DL_b6*V8`=>G*!YUKp%etO zl{AAmTuIXBVl$0NtxnN1Pb<>VMnBH^Lh6k955vt2NhLs=OKSArKKM?>ABdKOWRYIvG#Bo$c-XCq# z{(RL$@uu~ReY+bSqB45rt=NB2aTYfR4uOpwPz4l#NH4;WPa%Q-tazr@h5+JXT<$uR zEZW)TS1K{gp)hpaOP1AN=Z41uoya#*eCZUxpLDw_#5@!6(GJXz@941kTHo9m8{4d7yFMDo{i)@(7L^-ut&yu|$cak~oFd&Pr%Z$kEQrtT|kFAwPIU{t7j zeK^_iJAtEKMxFWA67C|4H{XCDXfyCvgWAj!V2*W@mv|y@V_=m+Z4=m6{cIvxe`7O+ z3{ZUo(|bCv8~hj7nnX+{wPq|^p1B2$>(XDzi=WG9154r$q1N&0i47M zaH#cXaSY%rXSQ{*lAe*!N+HMCf?Dkqnet?NZlKEQHAI!5XmPp{`F4Ty)B zUh28Jqj>8zg4Mk4+rI$?GV}i;>-I=?Cu(=`W3*{};?gW(>R9dak26CFw%bvV!nhW0 z=fed#KUWYX?rO6Pt{C^91GBx<;M4xi%7aI1QuZNKuK`{?eKxJ{(PYO1-DJY39LM^y zL)3`qhWgkwvf39>J5T7h$(zK-#*ZxGVSt<2eW=PT zjo#*5-E72rSMK7OYq)tX4j8;6SdW^^xJ@J@3{OlO1nNc=C1z}@pgrKE?;m&RZy#%$ z;K_OB#BSaP=+kg^JGeAcIQOxLf~UjJ_<8qX2RH_cqgcz&AA$0EewOr9?>H~*|MtL` zB?ucOF%SALhK02~W$wNyaQo;SVU=1?>K5nVebafmiaNnD5(JWHeM6BoA`QoM%B_A( zV6uY;lHT7#=$*8c!uYfFzRItsc!AS$=f1y|Et!@{q}yI$QHlU%|Ev@2&9H{)y`USJ zrk_5NWHRRp@zsufGrI?8Y}w~ix{-f9`X%le*PzV=^+8!Z{z}o9dC&`>?E?}ai z*foE&)?xYB$RZ~xGzF;7tIwB4AMgD<E+^!q3j3eM$ zV}Sg*U%?r+9G;V@!wCt9SsH@&Mj2Np_}o$cI)`gX(+-8Rib)bncwMcY1TYpJYvguq zG1QyNn%&x#*4r1sQb4f4y+@XwrPJocTbuT!H)`S|{+rZ)TblnR>13xeXD^h;uDb@w z<`l6_aXNEEUJ&{s;;>@-$Fs|5)Og~5Q`xeMiufA> z=)A|L9$e3bCjw&zX^oIVa0vq*&2&!dJYe2z4vN`+qBVq?N9?LjRFCKfpfxzzD#?bJ z(H7C_ur37<%a5Vjr+&RYoGb1?V9ea^V&7f2r1k zndaMfiSXXz)M?A3p_82QpT(_DXy;zTKe%fH>=&U;_vu@Wx_=Fx2WzHrCJP!sm&l&3 zUe9t?KfiaCu-_Macf-H~4^}lGPlcmsRUZ@NAM0GCvBU;WWchZR;p6wbSh&LkZMm+S>)zNws ztuQMd&eLbha0JMv|JRsrY&z#CQ-mF(9hSThY&Q?pAsnJ7Z(MAA+CQKX28M(>vYj;O zQgoCz&U0A?)%Yc;+KX<19TLbA(JcZurv7T@x~~Jd(rIovR(=q!({UI8N@43Z2ZC{M z^W@uKu~3!X@bj7X`@*O}6H3)A4I~d!cQ~$~5z8?&L0!-3%{-oW#C-b#&R33>{MGf^ zDlT&>c!@mP%PCjTP6o9Lbqix6m9t`K>?l}{?cZ2wKKuGbgz1-hNuXmHcv+OLcF_2> z1=jnuxsj=N;Dv)ydyw%abqlr4yjM7HjTx%*a^g9tb916cZks;}C69j9+sb>`b@#bP zCl^ZUL7M#T#Bkj`QD1Hj0x;J6uA}COXh;m9;gdM1`lEfQM@k> z4G(A|NvpqB2;p@-NB4}ZPy|J+<B?k)yli zmu5e{cj0lR%iE)DyrhT0^%GmZ3j6kQx0SpJyau$7$_joSh0!x+n8Wg7#3e9ZMH`8oEI=Q{3XVh-FCx1HzdN zkF$J7oRZ}fzV)5ABUke8jgrenHzrb!u`pVIg__nfjP!0toDxuGjNzOc}Fs>137Ez#mS>sQq zd-YK{y27tbCP>yOAbIlE+ii_D7{m@6O3uawe1pIm$JXzPm|B8y%(EF@>FCRPrU$n) zC6FPez6J7BeyP+c@|$S;z5Oef7=ra++1Ge3=}f<0!O4Frv9u}E3f;nIzLSjo^It>q z_+K$3{LzJGQB&M@z)*tf$2lWoeg48kT(K5Z5F!Emubs;t3@zBO7gL#%?tJNroy~lN z`>B)Ra_|m)8m-CZv?MBHzjvXv9wsB9GWN)p2iA)$9yxOx=3SM}7+M#Ycw>8d8_i*= z5bj_$#OC04(5P`HScu#Tpe68u)w~%?U6l)p52v5}K!|>AIKYIH?KW0jQEHX?+Hiht zkvb=El{C=v-bu_Lo{nZxE(}>LoSg5y6PBf?{@G8qSwb|w{c(Eiz&c6(<)zxaAw$Y# z|5Qt9;rqMqlW@2b_34HB&?Hp|3q0m%7YIE8?WZEx3UQ$iGuinpW%_Yp621pb*%l8_ z{#+O_G=(!B-QDlNp*~T{7{D;5`8O)8-sxGMy#C61&`G+|%vtPvtFqBT!>eRn-uEi&;y<<=`Gp6o=UypLN2)sy)H78w#NCPh*Tj#x zV=%zKKQoEfk*NOm&VPQsP{RDYSk6LYmck8>PJk#?6o~)uVqq>S>TW-I)9F4v|M^dn zYQ8LkoX!5uR_~qGjM6PfMHQ(xrCwAk12LLug~Dg6tm&x?8wqa)r6wHuB>hA?AF2tV z-&FQh{;V4L8-M z3)Ibh3Q`oFK3%aE*+kmtbk>h;8Ie9+inYGeQ&p+Y8A+VFZSrt%wFMP;RYKX*G-d+B z(m^WP`zjCO)9#bz!`0y|ew6ZJ&ZU{(o|uwp;_5D2xYJLu&V12-XYmytZ64;)|1`rK zCNesE8-c%f=awej)p(B_zHJ^k;BY^YD{*LCDO$nDt~rAKtS0m`6k<6PI!M>D_!6Pk z!;(u&YoR!RS@QsQV;&{SW3`oxK86nL`?O9tH-?b&I+8umG-F#8!Iv<*O@s3)6u z;8Xien;Wl>0Mj<{7hU!hJdfqtsiw|PM6fy3uM<>Fwmdlp4S%R*KK%IHYZ@Qihu!M~ z38B)p!{ZUIr6}EVp6!gdk;&Uw1kc^?xYJT3Psgh1jC;RSTOJb;?t7mv3Fih|&%PX- z9%#*pF);VG{v1`SD4I(o@g=(-kR|CGDXQ3hH9F@N{uSgGu6&QUqWTijRLG`6aD5CB z(Z&4mpp}de(P8u%i-Hd4=&dS8hGC=k0?#}PPUt99?XBUUxIr}z`FXSW*{nS=?A=!| zXML-7!t2+pXm@AxtzPG>XwMZG_LuXQ2VA4x?4DvS%$^E6u0OwgMleYw8zi|+=c%OC zdr-X+ZaphGaMZg^Jg`gm;kXBX8+^Aze5u-oPfRNE8Frxd`RrHRu&OOPJLumrhQ1dR zQ=bF_t12ae9Ov@LP5F(=94a zZ)c?Gzn|O=v&SUBkWj;~DjJd>LJPDR>3b=Fu<`m~jeD@TLKr+^^XD;o)6nsB$z_o6 zg|F=6o$1TMJ@}+0NN`idMbfxiHw26>*#ly23|N1OMs z{UWZlM@DqtlnFa9zfNT}36ff-LdVxkXh_fz9{*J@BWsXZ%e2Y#eA$1a`|hn*>Q-AX zKB<`n(#^xRPyYl@TfkLJbZlhw`&unWvl~XIa!?`TSrEPyn zws0@7>yDi9M zw(h4;2W699LWbX-=Acr=rB(z3b4cGj^wfW%8aj-~houJ@Vkiyu-R=~wDv5IZRK7;5 z@*wO@Q!?El1$UBF5EKt|+?~_N>#!Lc$+$P!J9&lOlN@TZGv}j)YA?5FAE+KfJt`6v zd@->^TKZX|Sbr9={zQ20Aveh>K0z$&W2-naUy&#hi>-C+D-9aTyFCh$!Pk@94*)W0 zcY2oY`-@gr(I}@dD7ScZ=|&LRi9W!o{j!A%hA8xYlN*BQVt8LeSI~T8cS^`c*VVo$ zN^V^jgu`o1_oCw*p4SyZws4srkWqoLYuR zh+SeLH0V)Fba`~Jyk2+`lE0Q z8RJ`3Pl;(^^XH}HNmf2qNli&X-~T8a9V_DhC^;}7<#tSm&y^frQyuU>#Q1N-u(rAC z(Itg7{(@7XhCXm?l+9e3!%`IIs0|yOM!9Y&Mu6xh343 z!s-81uwQ19SgEzgsu!911H%o+M3`On`txdbX3B{}91%e1c zq9?>5?o%;abO&Ve(5wmHWd_XjEx}R~XR!!Z3zo44z9Ywj(ZVT!Q(IaT4f~uJy(v@w z=0h^1+}*b1LG-K~MFQc!>oHr+Adrk)UoW%l!!At zK;OCcxGJIqwU)=16Jy!2Qc-fu`lHH?2+dlIv)7wys z3;sS@G`Dg7K{#2*{pfsdUqzE-#{@=%;&H)U!i_oI8uUhKi@=WW`M}n}Xqu1C)w-kJkZ%4mY@O_QpzWjEK~H-`_?7$R@bgMRi0@i`=0pX# zy^albsN9@DOofAb&cU1l)?@0uE|n6-p08P7jc@OnXA0)=`FhBzg4Opib#4RFd#NocS1n(L zi{C%1xo zsyr;W13q#pq5*Xl-*g=ePBN%oBH;lLtKLlNSlYA9*YQnE)e>x7DaqorqmN4#$);UV zL5O*eVqf2nL2nt_TRWpAO3X&E+ZJTekPo{{(NJx`xq;h+S@ z2|;Gz@_t$jHm$d~$rLMlCRJJ>QX1pEr@YY3U((Qo zFhe+A-DwD|P()FZhRhIDAn6!mq_m$Cu!vQN9|a)H8XgOiL1`vkBEQT7RUT0-yd5PU z$)Y~ghKl4S`u^71G&t+7&8LuK^YST`LCFVuwfJ455ByjQ9~mLk*{a^>kaYbptmtrQi)T0NXsvrnoI0cA+u~{-#3qipLyZ_ z%{A`wN;WNHMKh&NaXhOqC;N@!W42i=7f$dZjl+abZG-UvD#{WsN z3aTdrd}F?i*Dg&%7Vs^_=+Y}bU*#nNVqb%-rp$#=;3|g157U?DXo=;YbE%{}AO*H8 zs4xf3WXZul6{K+=rt%|SgIJ_-b{=g zpU8uePoUpG`{cuOoG9p6GVGgUhps=)y)hghbo*`W#aiNz!m(i3n^9tuC!Bh})?tX*KsP)uNaZgk&en(Qi#+cjo5d z)P!(i`9^6e2@x;m?&pv9+Ve_B5y|)Z;X?ZnVbQini43#q+792Pw+~?jc33aadJv*d ze|>iy5}-Pd5ZctnmqLkcy_Y0wy)II7VCDx;G`?AF8_s_VM*Ukwp-8q#}Cc1OzO3F6e7|nSB{hf`p<`cE6@OIBQXYE76w+KdS z4UmBmVrW_Jfr(YRtS1G$-<1unaaZjEa3P{PA`MXJHFgl(!RmpT_74}LI*-A(swNY} zpZlb)2zZ*X(8y&$+p0XZ4;XzPt4M*d-JNO(x_apmjQ;YV=0}&f6C~ZTv0IFk-2FjG#%vhH%ZcDc~C< z?ftF1%DZCr`>KI(Y)OI6>n9)4$NC^HZR=OSFo72pCic0#y4Zw+BT>adcVGTL#-N|k z=fHR>Xm*k;qds+PBAkn&j+I;@Tt61$uUVtxo^MTpPt@EP6F11xhj`zk=1z)=-0JTw zx$q78dPA^VcyjFY7A&per79!q`OBxV3h*g_qGq!dD0hrprNN46|G=U$AH}>ol%QUL z2aPq8#Z{wen6pLRl*JIgVsb>pq2rMeLp?$d2H)fmN%`A}T=L1-H#| zJa~VEXC`!>tg8F%WG6e?^w{_Lz7lv{ipuk5EyNjoJ}R8uG3nDn+!O4B_-fAFDO??K{f_k-{JS1Yse$96OywxWdFlMrET#*KH% zgRaxhcbEHf!cQB*roJ~JzDY9PhJZqZFpqy$$1k%>)c&~Y+@=Ti1@@2aee2AXRu9$U zMRbAQ6hIM!kBTlPe~|uEJAJx89@V|7NCe(iI7_s0T}QQZ6T1S}ws3h~&6!o|-G0;i zBn0cbBSt!5VhnYj%j!+N;)=}NdLN$|>Ywwjr z?*k*!!KbI==avscI|Bc#SvHTmKm!Tbm#1z&?mE1?@6!t{fkbWQG*qh~X839l*X_jS z60_aVU23G9tQ@TUC8>PG9_t|*v9p`(v=Y9Wj490Mez1Mnj&iOnGSiV}9(y#e&J!Rx^ zZsZZ;b{v^fD7ZXl)6Rl6(sGE@B0nd7xzloQ#&nXG^WDZ0)WdUg%BVFK9MZ>I4< z4%kgSio7JR;wVU=yYpu&n-|~qb;^vxU_5) zsVqXHtAJLjh(I3qTOP$cpvBuwo*f>T{Py+4yJ5F|+XN~i_+qOiY6&l5kLw(d{9)U> zvU)u$&cD-C;6}?6c+GA-JHWHBNc{%&t!_S7Yw=GoN?*nQ1sEI6Z0ICMYd&y0aH&EA zT;l!!?+n;s@jTi6;+0nj5&|Zz7sMXL(sdw%r#b6;w41?u;AuTo+56iq;gSWEj_<#B z?n@jy87hgqdW=air{&h|NIqkwGiYt6%jq}nd^{MlM%8e>zJxmgdgN@8JzEnRv7=2I zSkF}Q(hn`~!MJQHP!wQWkhfocxV+jr2@5Z3zWsUfF63;PO2X^zS?l_jZfLvJ(;8n2)oBp>>Rr2nAa?Ncu-4g{W98Q8ByA;9<#x1fn zjUIsQ<#@bm&E8;K+EszNnep^GX0_x2nTNIh?h*%f_9AZw5Rq@VAK`hFscC3kOn8`! zw8ebFd+Ex$@sVREFi-L7fGv=$Vkp+!^_EM4j|TjW1=rWU>|wEgo;K@3(j|AS{L|Ja zTOltD2uJ*YfV8C`-;?I9$suLB$JNQ#zpVZSzVJq~*-fT%jWRxA`q&t%EmWH-DfX%3 zR4u{g>xq)zAkWd3t76)#cD&|P9#Fn89Qfe9o3U~3Fj)_O<)kq4T7-$rhjQ2DqB-pBygfR0bxEYpCAip2eQt#oVYbT`TV--n#eFsE`&W zCL*L<4H&T_9AErY+}r|fB)TE6PoLJ*KtSycLkL~1N2)2?XQY~XLo=T`4Yu?t7Crb0 z->%54qSr!VD?5o6`~Qupdc>o8WDu=bAzR?3L|?J}G&zN*bDjeQqY0O7!LBlL*4L9DIR9*qpKeMvMGymC!{j%y-AQxri=j_%uvXtp70U_F{Eir4fm zXg&Lp7^q>O&{HHpbKct?)IgST;*C|or4~s&IJ&=R(Gr&DA=~wNu)5#0I<2`smS=&0 zpl%j9k%hR*)-sk8y2^CFj75RBCX3racU#3gERSts#Jc#Zin>uyu!I#}aXXbWf1!2j zXy5!;z-$1dBoNEPLXoQFdZctq2w1*BERT{NBRo$r>bvS1kyX1U=w3u0K??qyrBFAM zH$5r=|7H~^HN!4Z2swuvPF(Pa-~Xa#EwPL3+8bGasX@9<{o=l2SSazXjqLVi$m@y6Lbn(H#uH4}(#4rf}f`6w3Tb?n?iyeh=Hb(AOP_T~Yx^=9#+Syh+f zG1NQ>eYVBqVSC=5g;g6QQCFyPDBn9bE3kUgz>H6Tw)uVZ_sqMW*U^Mu^&{}%BE30t zU9uooSy+Vbj+gI&m4^l?x9iW3pne~A6%T>Aig1FSn%X7&z?)Ppct z$SXS%-Em2waVNC|E@3cJw^XvvbPXFmwwsX6a`&uOd7Sr^lo zBtaB|@9{sxUz3yg6#J@g{xfl_ndO4Fsemw6Y7xArb1V6^z)fBntmZ zn`v7o=abKi%GY>-_(BTDw=XLrRhTY@*dzE=Z!z3{y2!APE5kid^r?A_KlD(BVtYYs z=sbYSCK@ZmTFo1)fZH|Udp+6fE}rJmf&8ouS#LN}M{=whui_u~Nm?pEGsii&yX7Dy#|PBlTB# zITqOJh(M$Kf3s=n&%(g(Ch&!a%Z*?9Or~3-5g~7pwdoynx%oFe9KUP*FkdEjlz!~w zB*2{7#N&DtY5+yh*jgE0PJ5NrWV6cHWaV764Wz+3>{fiV%&?kQi z$_0lJl0j&IR`u%X{OORf=%!2a5uu~JkB4_3%JpmYIr4v+chujA{Lo5IHrYDEm)e)qn76Rr6S z38586n>wxVh}fra!3u2IoghI>$fAFAf z`JH}-193%FiNUX1D-9OgzX+|Pu5R^to1zrv$95o9_$!zm0jPPlsb`vI(j}tQ?v#PC zL03w&9@5LuqKMowtVForILHYl3@veSJc{i8S^jq|ym5;3L~-SCmf%KnTpfT*XWYr` z)vYF~UZx-hyLw|?j%b2KGeLgdYiabUT5mX;AApoA>#K(WEm52$iK~@~NDDmWq5+C% zWI7>=zQ<=m%48Pfbb(gp6$I) zu-b1WJO(^Slmy1X(#)Z-uDx}Ka>y1ED;cS2QbLcLa}WRp3k~F$;p7YDk)|(wRU-@K zn!rIdxMXipO?VJ@@k-%P-PmR=fASCDWqv90$55WAuv!(UxFO4NNkbS$KK8}0QFT?% z%YBd24LR;p;4KLRE_7$LrS^0E@@iNHE9M`x>u-)qK9(7Pj}E+}WIXKYQjQLo79;ej zg6S?)v*5vM!Ff9Hw)eO1z}v3C%00gVOZk-)#uf)TLV-+@X|%nxjxT_?0zFMQ7gni~ z?rLcAl#A&DtX`z@YgF{<@%lODmc96f1~M>ZGTbCnL4y=Th?FaZHJ71EEfmLIf%}&T zi=$raT&|%8vc=q`E={}VThlwNw=Bpw9$&h;;oReTNccKJ7c>3xmqf@ z4)iAosmsk=y1u1)j8}I)_0qoigq_0jj^uM6A#xMNAKmf^Fg3kCrh}Vdus5^QAp9Yf z(@cCcBF_e=PYZ*~mG4bF_NEjVVFud%w$FJXDyL1W?TV&Zt{Y>K@w()!NKejAJBAK7 z%|%pXa=#Px71PSQ{>Db3;EgkMxo|4sIrJa!zcNqA($svf{G_MVu45~SlX!wX zk1Kw1BqVLL2oWqv1Kjg=01b7KR`!4F5enaZO|Po0Jps4TB{E1Ktb@;7~(J-u!T^7Wjw3h!v%T71{Tr{{RoPFPE;5 zsCKI(I=4{FNyxrzC%_ie?M~a09s@B zV}BsNCjpN9&c1yNw@>Z;BI_xCSM((RmCs>#qdV-xo57N_?2wK=a2h{GfmdK@nm9RR z`K>jk$ki!Aj`-vd$@`)L!o(<+FB}h4=;1=TePn9@V#WOWe9-)Md+4K1uEyJHcHf}h zJ{=j<#|$z1_YAS6_5YC}03g!RC+z!6w#ia1f~t;BZj!iUxKjQA&P)X2uT4BXBAFM@ zXASbayzl3?w&8x50K^-Jz)M~K;p748<4;NET?&Sl?X2iGiNuBt(1vxRKwg8CF}lC0 zP1;Raocy8*TT2G4(+onZI1{7EhG0X%N82Pt1BkiRc@MjZDlU5_Hq3a?B4{#PLcx^+ z9L(UiM@==72VW5}Ild6fy_UcK74xGG3A*D#i~pejXh@!~xzHg1RKiv5DkU6*;+&Z8w99X%u0^rS=X`N34Jz(^bi5o<&Tw%hRENeFC~_Z#do zA^hRXG#k;YGr_=T>rxILiT0f^+KCqyngv-WEY6I@pGIfX7{Ot($HRp%#mcq$=<562 z7SUBl9PO;9jE?DjnTgX+jwxTw^;ZeM(IW{V%cgS6Hc*zUO6wuadfq}qEP|xgCA7O( zA%k>&;P2Icz0?LujxIE%yNTw9x|Z^vS~tvdwr{7B&eew2iINx}VSc6&VSE7VQd{$S z7Wb=rNFX9cY}_A0yOsA`%LIdM5t5fX;HNts__`2(t)Hz&&QS4BttRU;$`HN!mpHe* zs#88gVKzsRMKK3sc7!_NfBPTu?@hHYs#n@AgA!4d|I^w7Gck$nIXxsr=!LEnt;f$k za>oClf@7t9l+GJA5in`Dkx|O=$~>v2$Wv^8DV)&+gbpXkR8y3MDJ|~GCkOz)!AZHp z-%C3@8Q!AM1$89N*N_8yT@7-t2|bv~U=GWyVZlKM;=MR5`3M`ceHc-|?HjH*DN7iL zJ=?tfvPVU;%28WXKDbJNW5?Y7oH`5ppHe0S&XhbHK{E8Y4aM>4yLb==H4mo}Yby(V0eSYbEPO_K@1NjCtES-@)8yJT+G2O{9qyc2 z&0sCaPOrjwh#jpAhbdZG-3hMO&>Ggu;4za<6@+zf5v3fYqk#FHaJR+4YHAx3E%s$x z3z_CFYS`BDapBo6ie-(4sc%&syer?cwx*U%;5(Cmpt}5(ntC;k`6u&SHlunC{x!gm zR8JZwJ|3Hz*h*lYAX_j?cDibc4A^#K*eHK);kl3JY|EWKzm6o8*KhCLinnQg2ThT1 zWEkU*mS#ptzUMK(R^2H58JU2&u9>sOoo9l{Rz|f3I``xmKv6Va4p9k4hbWb0*zhT4 z<@n1^6q{7>apL_?1;D3mYAM3#SS||;$<&w+qe8f|3}1v*xrjiKY2Iw~kR)r8aCK?3 zCGWlc*TIscf0S=TiH#0M#f5x3_P~B>T+1;n3ciDpAV>|(jqLr?T*y$3;d}hABtOyX3?UCBvbojsxexcBiXeAUA z&mEF?7uJs*T{S|=G6YkL!B~bHQ8&7nP_37#%C7H@bcXM2V6aU1aEboFltIL3*xFZ( zdYcpka;Is(IzX)2#J{ZEAB+lZa((6R>6FyPwy^nEdf7EVs0)bnAFFJfjHPm2%l{O& ze@I0@G_UA(Db|gq3!-Wei0dvDEDp?i>vJK>#D?Z8C5sDuzlbI-B*IPnb>hr-us+8( zbm|g;DNIobL{EBA)(i7MS7B&<6g2_ao3bEAocy-l1F8_tpw&c4fZc?)N;{RE8hzyu zJ#papf`idIinIScpUNdeY&4``EQ+s0x!))YL$!c#(Vq{;7RtSJT{{ULt~vXmY{YdA zsNk_Jw0+N02|tW>t)~HOwXNJGf6S6vMm79hbP3RgTwf*CLES>lD20D~)v&FkSsW_~ zh@CgsBr~1^5*i7Q;vB>P3xr1}c3BCeV~+2-P%xf+u6W~I;Jk8@e3OO94WOw#H$atl z-|EQf?jFV`0jt0<90kAwTY7sjn~LVaUp-H0E=H5rn9*>cW5j`kDA zCd;!ind!h>(cYl{)j+fYnR6$Y01x8ZcLWG08vLz3*6(^W;~4y4@|H%d1~=pCyj}7} zE%fTnnW!!}vq%MQ#?V%X{7GH1?1|(VtgJd&J|wxLEDS|n z@#~Neh#6!{L8MgtOY_|;H67GZ)Ci{J6b5Sg*kI8eD#Z#T672K5=s&hPeCdjJKeU=y z=qzBe6N^Gx>34be(!Ml3w3m_uNal3|+l5M|X8j3*0E>n=r18A0^F=so!J$8Q+oU*f zzBJGBvYT!c8?=)ZA)<%*4N2)W&!+4+&|afpP?D-jH=x+G@| z0e)1VShKwk!o~hq*}3bFa&7M5j{YAikQFQ_a-TX(B1543jT^eSG8*G~V?NduoR8oW z3s%1yeEME!Fg09B61_tn+Rd7fdX&HN?PYi{M+j7-d2?JXWxp;IJ&^9Che8<$pOKR{#{gK7 z(bTw6EIxdl7P}+HiHO8o6S#A+`i}Mr4_a7Vka%2I4NbcT$uBJ%6y&jLOBC@Df23B} z*;aEB2ky3ysm#Tt{pj07|JH9Tx9cd<^b^kfVq}$LGF0e(3p{nfB2n|4}x0-Z5ED&?gGjXCAGv%!2m3?{&Hn`6P|e zfa2JQuC$(-Z7PXLl}Ys7!hTY^)PYar((7FuvCX$&sQWpOO)X)xre+=Srh2t_do~ji z^z1Cq>H_dd&_O=A&YhE>+XuQ(G`mq)W8qV>uF!H6$5S|^ID8P|^AHnws;2590u^bQ z0!EEQ5x|LM=d<4j6(S=?_rEXv5#mPqhp06d|~ zN-3<>uciYe@P;w-BM?(rg`zCTMLp!(zd@vaTF)gfZ6~yYiH=6Jt$PmivD4!Vr+L!d z+oLZ(OA{;AQat-wLr))*lrK{p`3GKl(#J|U`X?lE1!e~r>#m_P6g;R6_ zR$|@am*l>5u5=v}zAoAwmTmd`0Uzo~9zoZWc;(9jnGu`XzPyODJ#Qx^+N>yQnYB7>6ITlSdm<5#g* z{LX`GwvvkZ_NtP4d3aT2TA>8Y)q$xsAy(4LE~r%M|%Mwj;zn^4j*fQm1;RL)&Y^)=I`dKJ-Mi&_8r#Vtn#J@=f^m z@b!XdgRQdo08}vX)1u6(x2=a*^F2i#O*=rC(EG5G%*#xS9eDuJQ zYWzxES_Z2~CMU*1%ijDnGbIt)f0=Pw7vW2mrw5>R}&tBtu zWlh~n3(rv@yRm1NL4*wy#m$8EHo389IQVQ%En6VMC`yP7ljm0fz#CW-bS5}qrtWI}&uPAH6lc1H52_mt7RB}K5yr&9rU^Uj)v;J95PE-+TAm@Qbk`=L6 zAfcTBJ#Z@CcX5uatrF{j)EX^)4@*4g@!I;#mvS&qOe?IfFo@(1zQ^=u6T?XII7=Ci z18!OqVedRE5V11dPXcmgR?~IM0+o9;&&qYwDfxOU@!4tUeCZItVf`ARfJos|4qysc z%38hSAOW2cU=ZRVbg3XF)@Z*MRS0j_buykWP^6G-CH-@VI z_}Kf&e)qR94Y0YbZ&F~t~Z3mHEkJ#yg@L4bCB*?9v?*%#0a@kjP2wbZv zShN@$h)4mOCP0`C6!)7_&uv@O))^@6j6WnU<$O=$zTQq9VE>mwkdb4G?3MI3y}O0` z!%fGVd9s3yH{}qe#FIqhm4m2rl`qT#_4R7Zw>B~VL1uX-%bg=Avz+R9d#Z)-yOzzk> zWWa>eA4x0VaYD|ga1+`A+>}`8Y#?l7Vhd&5A8b zZj*sW`HoJ!2LNF8gL$=_LilN-Nw?k5>uZU8B30Lj*Q{B7K=JWwA+q|FTT=x~2@?V$ zygBZpeLWqQs_6H7?OW0K9hyjn2wZRk&(jXpFlYeu8f#rp{N3=D><}1$q5?)#^qjHQFj+D>;suo>t#I0$7o8;#pgygYznC~J zf)|tt#Ah%vzdHIfSfbM?`-v*V^HQ7e`9L4t#oh2-VixQr@7h|SI-<~l!93I)3nNXY zv^g}^AqZ`b=f$iyByGy0s4+;0b74S?uXE%I36d0^aojLwRN=jYj=hg2vjjND(biUL zIUcza zI3Zip<0voQe*AlS1(Or4)|+?OW-s=1oCv4ZuL1n3JejrF7r3;7mt@6`MQ}^*O?P!G zRTAww7(H$*op?YlykuSbVSX3pZz3WC)#Y8+4W$br{=5+`)!8sLxxlxQO$3+siEq|} z#ur~-TnxBJWBF_vd(b55ZpaJME{ zGt6`B&jyH;@3IYwT%!G`s3OgYn6Ul{;W<$U z3K%(nwNguX2{om2v7J4+uZ^-6-SU*P6(meFL8$Tjd^58 zqKxX|i;1ESz#9DAYyW`G%ltGK*Y1E!Q6b6E;egn?y3E^v-Ed<#T)}|+t`vb%j2`}g z9-M{`Uv|Qgk~!{#77pi&MO3@b{6+@au7F|ppmTY!>IjH)%BnELigaeb^%gJU%?4px z2SA}XCAWK)Kb=sgPvG(e!ituOnBR5B{iFc`-2LxGfU>a32|mag=}=KZbybFmCiWx7 z8(U7hf!XsqdN~VP^EQE_1bCh>1j&G8rv*p552Hz5Y$l4z@n55lW=HdL_MWnBrZVP?fr$*0d;U%+ryS7(3tx7*wxLWS$VzP6<^0Cf$F?uJfHbcH; zK*Ex8hQbEZDSulx$2~$hPT}Pvt2RJtf-&{^6@QZA9a=W-Tvh?|!C2^<+_ zJI%l3#6zioHPP@ttSBsh*-waNC1#qQ=k6GPc~SM*?9)20RPq-yf=B{01u3c^z(c?* z4s1H9r><94Gh`m;+BQkhetIef@g2uWB71(FLaa#Owl4amZ;QFcbl_tBX=mSn!d3nTN9~~ z%(V&WJfA4OE?_L2Tfvp(Ps;kQawp6N*|TY&=BFMK{GoV@PeW9GFwnK04SoA4pyjei z;&}{hI@kFJ2>=i*9-*a4H1*_(9$3=lca>fQv)-oKuZSWK9Q`3m_cp}i&I)>7lHfrcg51wul;V11=TADqRKe{?B?EL?Hk8S~gq#+|_BQC-G7n zjpKzq2m<{B77#Bd#XXc3g5lOAY^Ezmk$*fRp}wxN+xoo48znLe3;b7FSNS8SF5o?R z2izt73GdhHE#^SS(Q$y5?~UUo(|iTM)7&vACu%cIW4lBC7Nb(KMXO9-TD%|%@88h! z;Q`TTz-JeA-S>P?{+>ic3P<-Dxlr7(nkoPWKKghYw*BnX#CL|~_=LBFu9+w!LNffR z!eEd}bIr??_UaVCTI2tNwI1@&Ksq5MGO|Z`l-}$Kcz-%!5S$Xnz9guR;H?%D0?9RMzXY(BR?|wQNiC*o9uDvPfr>Wuu z^X9>|u|mJ}>BuO~eGZ*<%RLe0q-k-nfbta#vR-yw9Ci9FUURL9$vvcdaDnTfj--L` z2?=uj6~gwpYJEflH>B(jZsvf_A*Sge@}@_>OZkp4g0NTls1CtwC#Au?C)CgLyzV_p z_F*R#tO&-GNScNQgKMUG_|TnAoA2<@OE-o+1@X%s?nE$e>P^5aU5xt+TbTU|_mB&pMMGX{@+OI1wvIB*h zYxooF+`v`yKg3kPA2MU%yE)!YF7J&%b^q`plml;md0jf#o%uP-%I-Cq$D*Z_F;&B9 zSH=z9F7rfkM$2lj5p4wKA7t^r=?0JrQSrVc>!eck{VZhHz_IWiPy3$w<9vn*lRcB@ zD}61^Ed1ESm%zmuSVo@`mxx(_<{6PT&2jeo3{(d+&kScp@3!EdUE?q&H#8tJp=gU< zgPZQN{5ge7e#v9&SENFxK+Ekm+VbpX1kb`OV-1H5gsFz4-DeCvsexFM=fWuur>hOM z%*xX+3PaR;rSm~!+hrgO)3bO>kEOVDLismzS{?BF>18QTU#c{yvpRhxoyM zx;a7K><>v4tk1W;8_e) zu|b5516T*4-h~&v2;kK`^3W?6BCQ^u4q4(0NCua6m|u;Fi`;1B6KMj2baS>HppoXq z-yvYOWF`Nc;s>Oorz8Ne0;_Nc@OF(vUE~MYSBwd4D9Qmss?J<&K9u3xoa&&krQ2Mv6fthdVRG0c-!s0xF{YDR_Brkyd;j0QgxoMXiHM-u+GsX{To zjQJoLfZDQg>&l~zO2qj2Tp;C4>boc4=2#-?U#as@$62$(gM1`wrbCiYZ5Um`B60uR z(%+>;MRixDlRbn#ua@_RJ}FYBPGQbJlaa?1>w>N-1y*qaJi|*8>2SNgQ&g*hMx<;N zNk%n-$MbCet&Dv?PIULtV)r?$2=LQ~PmOdzg#vBq?n=-CQ(fOXpDA^kR%}V>VnjlN z%U^4v_MmU0Tula!c*q5cy$flj-WrD}8+b5v)5ws(s-cDHc05HFT|zCHR~16>v%`u? z`G*%#0%ObJH5jvSzz!SFBkSGUR9N}=PsdK#N#MFY>!UR>ve!`JVmup~$oJm@fwHC6 zLcLf)UY$@t5)}|hmx71fK|$OxL2W}?Wd0XYx!!Q=Zfr_jGQcp$qs_f7+b|GZWu|}1 z$un<)DDI$yA$nt0`v&6?;`n>03|mER(o1~CEU)NTDA(poQWG=y9tF>{!!p{LX|Kzi z<`r>=Va2HAq2})uMU}oNaJK`1j=8|00k*Rg=?TXM1E7u%+OFS-6-6M_wCR@y5~{O_ z5|F!SJ`O2skRW(96~4Yu2&JrQ@~kfhW;_>(3mx9dSxs&vkk)CoXvo=;z$y4i{+(P} z_<|v{c~jF=}pL&Dh~KTGvzx0Q%F1$da=j%(`j*N(4EcNUTDZ zR;lw=P04PYwC1SWIfVFq2=Ej^dHk_YTI*D9V4DT7`$Mc|4OE*K9(07cuS6U1@>@I- zz}sz#R;w4ECKYF}lmtHi)|}fu+9$yQtpi~@`!vN=ZkZNV!1oYV-+`=b)wjYs)o&@` zSMuAbgIHtJImm&w6gjmElWw8k&2Fo|U`qJUT-6s~SHLK+7z9?ak|5p_K=nn|Xfg21xJllPW4B*-I@UKT<-GA8(Ha4gU+nKj`uLf<<~BJm$U%^Sl)%ZZ zhPlx0x}USe2?k&r#J0d!F$W0;xj0phZ2NlxW7l&#HZc#^`mSu?DdDw~lJNY?!ibo2 z-Mh~wWR-A0iLEp5s11x<%YsMi9f#(y6#-fA8?mc81o9CH;M;K1ASlReS)oCQnkc$4 zuqKZiA8uYSZ=3OLp!x%Cb%^noRX z2@P>p$bwet&akU!@X*i5We3&{87JxJqFNML3I0P=xe@Z29ug=yrZ|!`DT5o5r&#%@ z3I*v|Y*l_E)v9$6?Qe?UXXLElaqO;@s^l>!v;nA@Gv^R`4I^q8$g-zWhcZK@^<7La z41Ofa0B6x?VOGu*q68B;6YNAZAiQk;_#Clr?3Ow0WiD;5n2^o=2D?0AV@#TdQEpg- zF(E``--WI@4y_jy5Os8 z#&LZj0^>m$)YwgHL&@VrKCc7R^xqc;+J#mdqt)HGyBx19*PvSQ7JU>!# zP#x<0n8yc0nGc`k6y zZ?3n)Xuq|4-qURByfq13O;X0|ivVXLiIYtayd?mx4xcC_9N$h#ve1}KPV!j1)vcGZ z7?`*7l9>WD=VMJgZ~GOTaL=oMG^AG4qrXfAgAyI>a(1{NkO=6t_{;a;S=Ik0AnfsH zcu16`)3#+f&xUo8GQQR`fxRDhKcZh^%eyLadUc;=qQ`^>{e1w~pohw|U z9M$m_eHq1*%1Xb9VN&rmVPpL}?aFJWxFyh08)NcAa7x2_67_WCdS-G#~os(8| zBcTM9&eXZp!7LZh4e#-nzPw8tKFhciM0CNPA@7Tue_D5P8cB{xKO;9A>Y_Y?KeO29 zHu%b`^fP6tC9_&v|HxWd(HXqrvGkk-{wK?wZMB~Aign?lr@u9Q0Jin9GHq^XQefoK zP1Sw8Z-`u@#2a0x=}>Z`lK)FX@ODeW$a{s$h!_e?phynCegO<(b&F`1RT+ItM_<&N z?-HAeKmqcghlDEVz*y>xw^ z549#9oBmIn&e#vJa`e!EXNrz^;{l3U@U{~m{ykBV;U@0C!$yK|f{j(Vry=#)#j0wr z23IJIUN+xCGAvVH6*^!P@vIBAHoW*py#y@v^E~SUcKviBA3F1%(^tmzdIxmH6IrJT z856+h0^wD}T-+$O#?o(Ra4;J6vx#Bg#zIaCfp%e)@ z7vEqbPdR>}J$8jL(l^M@mc!+E)v^b~I(hEcSyT%nlLgq!nW3|b#B!`V^L`}Mul)qk zS%W2@s38;zrcFoS@bgxuN?{0-0W+4z(kYmsJ;@R! zX$mm-F@Y#60lE23Aa`e;ugSLJ=jcP+T#EV|f@V`GQ!2kJB5H}FQ2KfKpV3KThOx}s z(*KY-iuAF8ViM3sD}bGEuVkBd{3gTGF~8<0Zx5uV?(x736>_1*|AACObvD7W?EO4|)8ndq4~r zw+J@f@|!nF`B5_;R`|ij_q1bhDSN`2Z91D1NF^;+WBh6?4|aL7RSa3CDkRHZGl&V`U$lhb_%TZK~(EI*!9K zyj#49(-9WE|8c^=RibiVm1r*1DVIL0X-*r-UXMN)IE2pWTzck+m_Drumh_1^DAX6+ zY!6w-`XNFRiGyj%UWK7!t(2gHtg|*wyH}ABlProunEJue!HV?$MisX}y4R+zZfq2FW&A{hb{s_Y2|8UBG?x;C%1< z20QTv0daf0UqdqkOkE?IkKX^Z#b2bmK8!C%jIKf94{d|=9j}O^-_=r(CRJ^$Al2W6 z1kCocHPKel*C2xZ4F2wq?#!n2p9hqL*Pp85J-OQI;fZ%&Cs3c)4_eUd)q)0~cL{a7 zFGgV{DG3TtEz2xTQ-+R+-Nt(6fOrR|cu?{u-gQ=j`O4ftsiT6Zyx5*p(Y(6ue8PK*vS-RQxS$1KE(!&l3klEzG>{d(-ekiaUUEtf9 zSF0TI1+MZby=1Dn~WWXA=?3(C!PKS)>J&M_%{j zWn{a4=kmG~apJ9F2vo41?MJlTb+$%l5^2R&2Q(rsB(vG(Xk11lNgc)Y!SwUg(APoW z19=!YQ;bQuo*sr@2vPCsm#QKVbpI2r+zEw}FShK;SI4s&6_n#5mE^n_R5ePtc)b*Nq7a)>pm`)J8 zh0w!l27gwE?Cx#bdKA&jJIUb=>-GseMAS1=23}01%rk*W&w7W!7NqM~jT#9$W4HqB zeNj82|6MAi%kA_c3V7VR-p5F$TY-9BsI;VoVSZ(7R;(uyt1g9L{W`LEf^|^hpICD- z8UFt6@l*abnku58c)}c9=XzyR20?BG2@H=ef}^UHLuHN7edzcCb%U+5($0W&Tms_(MM37%89H#ukRH&tp?I@+Qvw8d?X^16^s3qXcq!=xxGRBCyxOGNZqce zqZaL>q}U=b5~kd}CH8H)_u)>ydSvh#%{E!JOJg*?OQlvULUU0R=3TbPuZd$1Mh?jB z`-l~*72ye_!ONT!q~L!2`laNgEQb*4RbZ)6Qs_MTc4m>i5s4dze~it5uR{z#e2&^U z-^N8hZg;W@@Bx~wE-y?&MAJJOS)c`5Cz}Q2*m6I#MiyDF36%EtqK;L}+qvZV{?{J4}gdj@l zbOQW0vhM?pHq39k@Dz<_<>bZ(_w84f7@XSUV@LlFK=I{hY?SOh6y5AMpqdsMg*i*o z-@n|f>KpiZx8bIlnNemC0|8OGGAvYx7}#NaEpMuCOnzKTlsgg4&RD#O z>`wmPw-p0xFZeGt_GIEi?4;{K(?vp!z)+u=k6vYeLdDQX_WN}{j^qwR#igvoDcQk| zQ^WIL&#d~vVzA4FNOzNv+kC3&Ap4=bX^JYj-WdD+E{e)0Iw3Kcs{$p3t~dsVg^!I8 zBd)1aW<%E;_ome}2K~;osZNjp(IW#wiLr#9A6~UIjg7L-YRD8>A_1phxsJc!4Qk*4 z1K;A}Ed93?&GDHqfYl`}ceEIw%HT8cyJ z{1eeuc1VeMN>X#f#WvgG`Wj{${ecb?)ElvZHW(|*jq~agz^&I+Iyfau-e)mb@U;M-{ zX&DQ{ZCLO^Uxis~XegPZ1w`HgtKFg@)h4cb?Q8z}>+y}YJmYX65*c$JBY2Eanvzs{ zDN0iykK?UwpBX{BnHNB<_N_J=JiVwGqvJ{ok8SGEsFH^Qa?ee-(kku~lFM_P3gYZ)cg4SYGkd0=PYgw+%qF z&L9nUolF!m!2Du>YU^TfZb$lHPLz|qTY`P7g)Bs`mlkKVAJ{=-Bn%CQUeGgiTAo-L zmuRqbfqJ=V!dIX}*{NV^vF{GiIdGqDI&#AZI_vY(`3hhhzU2+fL4&i$=cxq;JR%S# z{Nd?3=LoLqg0s+97u+*OTw|VH7x3s%(~?f;wY{(_j}75#w9y@$nTVpDv`VHyXC6)2 zOz>3!b3E7fg0d=8`G%K{Tkd&ZP#i}{kA>2~;-_=)!ZA;vH}eTR{;M_P>pf=x(hV(S zXuj3MMxw_Rg2>T>upmiU81XwhZpS2UUVqfsIe+E4PC0DYxd<>+PBoihujH(}VN)5W zgpbL_i@~8>2jilc@5VfVG9eUu4lJ1Thah)cch9v^zWB}wj4FA8S#MxTck9>t)VPUM z(=Meta@f{ITzu8@>3+@Zmb+N1`{8d$p7SSJXgP15TbuO5o>~0pYcnOz227KvVWN!x zgSk`1k2*eYBgu7E#Q$BYoj1)p-WtfoO+6?fgPbz-PAPWA5zI5rPT4ZG#ZuhXsl5T` z>75T)BV2XQc918@TucAlnDDqF?7w0bfB{|`e6XFm{O)ov2s{n?@&wk?278IMf;TwwLle*wQu z;>3m1U&jlqFHieL;sV@CpXpjg{EcY@Y-nTf2d$5@l8Zdh|BtS>jH&)279YUa;Z1T?aF`=XaCa zkptOzs11mXjrluKTw#Xi9PGzWV?RfkFHXgnEq}TYsTgNXAX#mHoqR#qx=-(mZ{}01M&rsCq4^s@- z=((5P0qlE))ph5%Aagnfc0LG8AV08k_bhX+1DMQMaspz{>d{$$2PIXlfmryrh+Tqn zKK@Cuj21Ou1LAjrGxMg1WwlnkV=qjs{{`I1?lpqRw^GEO0ZARbm|TF4d4^oEvug1aeIr}S3UKZ zina8@dVM4&dJ^SK{uc!dXjA@gx_iUjP05Kz!XluDp39Iy?oeGTi&i%0tp=3NMnG_l zk;+!FQDvF;E#o&P`&`1RD*(!gFbj;ze_A{b8f1-}AZ+d)m(~?yLMgqWVRv(Ni7JyXg)r$0G9f zaqP+OppeOU(?a94F82J#PZ*Nw)>;YI&>ZsM@ZRi!^l9`L9=M#rzrs;3y~8-1yiz$; zF|#x#Ck@M2nE z^t~P{iqg_qgry4~2m!U_=;p66c-yA~7q^j%QOF<8Z>tcEMGV2ts+R=@z#Q*EM&|Z& zQs3S5?M>)5bjst?hvBc zXRzf=8Srmg(H(o)bxMKogIQA`>*BuohkYjV1TANq{K@x#s;@gy>f^&r?02oDl43Vd zL0g|RYH^i02|yo~l9+@C>bDxFKYLiRok1i>w{zRBsB^6j+Uj>^E_ZnAO({(?J#!{> zI3FbDu8w!^$-RIofY=Y!FMbzsLwnIZl2!^Xc9$}In{>C`lB!ps-(14=?%0ftTV|y| zE-5ZkoV6md%T@RZ@9F+!cu6;S_yByx=2&DFN`Dg1gKAkAw`(>Rg_O~=%y6NiGdvb@ z#4%_MlK*K_r2pAvoMqW$iN8IAzihS-5&MeX1LMa{PY|MqxV+&X_PwzE9naDIxmyZG z^DRlclzGZ3)R%1PzuQO_jl!KLQyuLLE2a(@4~n z`oB#^_cL$+ty3bK{`+9Wij*p>x^{oD1qR;0i&F+s6X<36vWS;9IphQ4{GI74Hc|#d z1QeEzCfk(Hws8K`hG)MIpW%pDfQK&!d0?tt>2F{#OI#VGTQuGLJ>IoDAkQ0}jyzuY z#~l3Ptw_oX8#68k(IVbl#x1^+^*PZxIQklNGl6`iX% z!Skb`P++Ric3E89+bs-Zp;DZGpNbQ{v4F8aI-BtP-PUFJFuzsB1n~x#8Gpn>O@RxV zhs(bUf900y={mcukF*jzglGCgTsLAaSS-q))$HEch+oQ*78rE53J^X{hY*A~ac_u;hkOZ&)SCv^oPI&T5d z1E`POE#@>I34lV~iBT&x>xG;Pr%}?u&7$D0pbPBFpN~5AdcKNYtV(0MeaZJ_uBWw* zHDNxQ-lNHcPmcRn;K!_$b!wn^7cK(yB#CN`ZpE@V@0r9Q7x@zP5! zO97Q&<>&Rai}6C{N0T<+XXiwZ8zmi1itU0cEt%U+y{>yM#wnmolyZQ!O;%rCMT2$@;3fR?@swD@tn^~@++7d3(!)Ow6Ftx7dpsrn7U(E= zKmkjq8`@qh`=vUTw3zS(%zYTw{c+fnVP)d1X5yT-SEx7xK@9&g>+Ij3u4{C+DLrsT zb z{wuDv2xD4|cK6TPfFD{V)&K=Qn(4LQIt=S~e{H01W0&;}+<8J8HZ_WUX&|`{ z@xw0w@xONuJOcm2W6$G3L$Kgjan>_CDmaPBK>Zo4HXE+yhS3C3nRDJQxLMWgE02 z*=rT7)n=Q@`oD8n>*PKE8GngO-N;B%{NSbF$gvfd3C=e(FBmL z%g(OX!+I;Fh7Vc*YFYDjHE2%HkUbUF;bN+H(w7~}-JPS?P-3)#|4sE$@B}@sYD~+o z>t5exfU=A-dG3;f{(q+>vbGD~cC^|l*b0PLT}0cTeMRq{SKHjxz&_soVdZ*nby}}e zC(?ALEfT^e>&}1UOv+c963G$*j?5a!{QYEprg8H0D#+F~g8-6{g8Rf{x*^o&w?x%! z*}K%&w~|Y05BTU7V{Lao?$?cgsbUczaMtqyTVDINwHiU2VGw~=wKU@sW5C3;Xr@(v z#;^0jMF=B8K%MQoQ6!e$qse3Vbt71VLsKWQUklI36f+-vZVD--pR-}5-u5SV!BGd8qTZ#*O(oC$#d0v0e|%}@o@%>2+TGy4YUK>TsZ3j4dFY#zOLd$Ecz6X>A@zy@|PB}o1&#K3bD!GISypG>l-1ZQ%W*nye% ze}Q+#GQw_;I$OX0F~}RWxyz7$>RAZ0ozAX!>5cc9R9NFg|H%pHlX8`w?~4&vDH#v- zkA8$eo5z7%1s{42mw~aF&2EabAllq7GzHJW%HC8=%th4-8+fGw?7mnUvbzip8JvDN z2*53pLGYI0>}d}=R|Jbjm7a5 zy$rQGSiUdT0&{(%rhuMRE%C9lC`cbLS5rqn>r7cE4I}$cNeikKe>D^6E2a3G!yL=w z92C+UG{aY74H4D_vvmSKY+WrQdSu?616P)c_;K4sJYKK9x!@zVXI#|S`n$IZIS0&( zY#hzQ)x{uj1Gu$*-0DN`)LB8csdf)G!c{xpec(!B51I%@)}mD??}jdzbrQxnUmZ0F z{+9f--OktY8UXuyc3{eV@YMl#q3;7T;(P*Db-R@(`&0FIjT&>sFf_Th4yG@xe0dJ? z!Tm%24BQXzqTaGqT;c$o#uWM@0jde!tMf6og(mX2rChk_*f3atalbNZN3g#;H%BOM z?-KX&4$@WPwG!0s>Sp)nP#kHR4C2M)a?~Mx7j!9U`Mw>eq~Il_LYprq7{~9=qG-W% z)mUkPzNq&QhA=BKJ6U-Es$G~#JmIVd*1|mKiI(xxkqvW z^&e$is0LEwC*(aIFvU1X%t$E`&owWx4ThDki?%Cm?#q!}N24=^NN&N|#l;Wd z*N+;$5xn{y|95DBby-Ple+<>y4ew2rjw_0_zqmU3%8bHf%2CHoeK6mV;g-Q9D;mUwarbx9{01nhazZn@p%TOrHTc4}Sn8D0N9%DCyTDmuKH!!i(8D|pHHm|6aq z0}$ilH5W^Ls2}!B?#&rK)r4|MZN9sZuLJ>JQpE5H9ChO9>#|kRT6Y5W-k$*j*iQ-d z5!*@`&DV2gsSuj>+rSdrFq-bB8(z%2m;NkdP>X2T)y$i@0Ti&T+@)BwyvC~htw1^z z!SuB_a0PU++xf^{mudsh;P3-a|Ps$_@qYiYLI%nUo{#--91G=-V2l&Hb zAJWBSm0oz)CBH^`U7uPOTgnM4GILtgj_o#n|6qaB_mI10qUjH(6BxONQI}^&VtRcU zIPe0u<3AT_Pwtd}Js|cqg1PNhR8iB}8KEsP^ajWzWYQWHNml%Eed`?n5$ zG}DSRz{p{KX#qauceH$JSCYq3GOBs`qei4g%Xx@@_>ykA8xi-_Wvto5r}MiqJunNO ze^^MM*P8wb?mO&$8K2;Frt9L+VzJhFpWBe>u$0>kiIRzsA2eOpnauDG8~bf}h&dB* zCCP{jBF%k2JNCIJo#k(;S0CZtG#=(Xn0?KOsWa8$FR~c363Kq0y{|*NZk|GjhlxBN zzdW7#-Wa%A0={1Q&I~wy-Lb+wqxV=hoS_0{rVUa;L{B=-!NZ|v4CJyJq~QQ)ahPk7 zg5zf_8YkQ9ZF`pT%8`jeB)J^uSMuIPgyz;4r)0kRaP5kv0%kUB13H{rcwYIw`*`JS zCCDkO+!EwTN2w#Yus6Hsmk4x1m{;(9zT2rxS$Vq{WToeHq#OJlI~0m;QPwh_V}D9| zv>2dey)yWYFuz;PBYHO=Wccbb z&XV?v26OzUJV~Ot5s*a#mlS>J2xYnHx~8mwAR2|h>QV07!R?CN{IPi@Y$ny%!oWjN3& zH;XP~+Q@J!$dL+lfVfp;YAaGV5G-+j$*~)HwdVgpF&>L>&~Whip~%N1LMdmYIf+b~ zrr1z6Q)t~1fP?yf@RejOsLR*w#xOi@S+b*pi8#1NdJhg zFfx>RTOdzKm(XxFOqV}hYOn1H81&oOMt=E;_MUQEM51W!R1*=Rh1W+(!V=zf(7A)V zbpu8ryj044HfpjLYJG9HcH*x-;kU;mhcm3q7SV{a9WON-tmD%e(Ei@i2ecXscFo%@ zpC=>mRbN1TZJ2cMz0)=}2AKiR>J37i;O}ey9;gMA;2z{x`>2A2j1qjVIrIkKLGkUb zN^U(cS3Y;T9o@GG-_5lims`%Np+LhS^0=vza#}a8-X@{al=|KKIyg8mV#Zbfe3{B( z%DCP?f*(oDYI9vhnl}XJ;;2y=!h@gM5_a?MaBx47o6}Oo93V}hz7j8EB*>c;PowKR z;WITryj=IRz()7K&{0w*X6D&vML-TMAcv+3MtA;BlzK$%7*o!v5n`G;=n8SPj%Jd23 z)8sT4e(#B!iaS8INmzQ1GAN10)AUtt8;t{r(A+5&aKp9r*|* zOt;wkeJ4z%9+X<-@u21w%SQdeoAK1#)IB228ZUs_3L=hAq|d{@-Pd&HBJ@j(+5|;{=|cZ7mITTA>cBtlOaVV zMUC-J{1jc{0Ts5^_QTgz@A?x3nWwS2MlWpN)1;0DauV^mbV;VM_7XNE<)qnK(uH+hA zrnl1daN0^P@$=Ts^Jo@-QRkEJnb&PnLC)Cuc%y!0wa|ADn9Y>x&D-65M)r~DSbA6Z zUkF?@+4m*=9T{n{?Q>jgA6`HSPin*ZqGMI>6u)bS+8Y&9$3aOXKOu$vJ0qJ+MGwY7 z##vFq`47blhE!CByq8Mx(D<*^h)62D*9rehLi@#ouLyW))xgzYutL8h-Fs)T{_uJb z>+5q+h0(#|)pXqhw?^<-jgjEypMiwLFO9a#9yyYMRdfKrEr;{1C)TV?@SWO2W*s_C z|Mb>5)M}@+`gX&h?S6;jhU{Pf)|uf&n+J+TITb z9hq$m44%ChG6;Sah*!_iSOa?HwBNGk2K*~(KLi|x&1``xe3^aU+=*SI*ZAmr%gGJd(VWmk z#F_Y`j|~gI>Y#WM6^mQ$5Ux2|-0U6>I($!+*O#9#Lo|VY1(0?{*F2}W!Nj+f!kGpw zZnUj#d#2aF@B>87LmrEVa(so$>JSP`zuH?=yYIUV8scPW_O2BRKMX zjc#aWxmESb0S=o7W;DWUBR~fUHk5quz45)zIs6+G_5yfn;E0=2F;T%q4+hAxBj0xp z=3TpJ+kjv|4-$H#Sq!b6^=|FAI7IJa#4GTkt6}_3YCx)GzrYABe__VpFMv*ar^h-k zeUhF^;^(qc&Y|MWM7o_Zd|A*D^4!r@I(^>KhR0FMz&E53^_*E=NL!0sry!aC+RyYr z@5i+Kb#ygCK9-EI5!{sf<@R#i&e>?=35IP#ay4o#;m zklGtMG)a<)3P;uvA2=rt&Y4d;g2Uzv>+HCaaCLji(;(kN`DVNX1p>{naydLIS+@Y+ zS90UQ>;Z_%`lh|RIRDJ+j)0jtF8)r#W;bESph`=YeoF1oG`S8b@D<(xs(;p&njQHj zJ0F);gTkre(Vi-6w@XPzQ zB_|KJ$0vVoJasDR*y+pYYM(V$C!T6rpHuECyzWYCI=tLx&|%|+vFd-Ss(!RmM%)E; zWp68BjUopK`Sw783YV+OvJlDYIB-Khhl%9bP=3#*39DeVLLlqCGh%HB0IvamfYByX z8mlY9n2n{3SPU}_IZzJ6mDxz^3GTd2TG+Ep@Aj^~;Id>$vWm@-u8+9Wv^Q_32}tgQ~OI*5WEAeZQOg z0!|cM`V?gv`2f7WRQQ7;mO)pV;-Ik%GFF3K*G#y!eJ{F+-2cV%$1wTqR={K;e7@fo1k3qc9F?RVqp~p-clsj zLF-d7OS0pE;LEMBtXY_P;i}&p_CfN2#=~&w#ZFHbZ3@KJAkss;9UT5fbI^!OeN@)g z3WXbI{LP^e0EKkfm7^O7cUIHE$G96SkQ!a8nCCTb#PvR8v|RA%()y+%qkur61UO`1 z@qYg~^GjQZ%l4IL;5pcNUFg+llqvq2E$5}=_k3!xp37{nBXp!o+hR|_;B#vK%#$sm zK6DfdhxnNSk?d<%_Mx`19fnM_r+xE87ZP+bCWw{ zBAkz@X)X?99IQIqR)z2v#0s)+hC*$>gU}Q{fG~wLEsnjs`j6<#V*HUtwC zY~Tx5?*}yBvs$59U(&b!ohKCqJqluB49oC2d$ggF$&1*=2s4X8%Y})=|6Qrxp;-S> zjJ(SlLOW%>mfdplQ!U>AEVvjZxVkHd+0Eqo_~seCvZXf`tbosb8V-Jjg4-SMOtH4@ z7~(oLaWb$j*`3V&+%}&h1Go0ZE9R8rz2q-yS}joWXvlzs}bm2eDkgna=Z%-J`{If8!(G*nO7M-_V7N(bf2)g;r*M zKB1VA;o0=dtnp$2?cFG8*>+tY;9)YHC0BZ4FXq#UIVr^QUEx zF^>(J_>#Y??=tw6T{xcO7mnF3>&YYnT8UtDVG+|CB&W%QDrqlX9#oJwqukmcsnL6hn`dS&-(wp9SB7I z^LuWy6Stj{b6T+dGwXrx<;65Aeti@U4Hq0T^}?mUf!5r}%;)-O9BpIu z_EdAXNy?$Z0aSzSPS%uRbzN6NrLO7A=@k^0bydDoTDg1}ClJY`G7&D3{HHfWrJSFI zr(N*E(}f*2e=!`T@QR=u?!mCwDYH#l)Q}8l6unt5Z}CR+U+VZjyFmK@L2!A~dgAFpnMEz^jtlx-|A)65GyU@@P~c4ds#j+w- zt_1>_z+-n<=$hKTyyFX+4Wrl&_1 zXizuIZGPMHMUY1D>6^m8X)gODk$O#ZmRX0$E3`wOr4l4O|SU*Ht52x0V2K2bBf7lrmVL0q@`A@2=xDw)hd|TO5rfeCtwjx?>{m z?g)xUbive@u0UPdTDI-wMBib?G7lI2(8Hpjt&fmI9r1HT< zn&b(TK zK*k>t=Z2Et3{68EEId3KK}{-O`Z*c|bT~LX17p8@tfq{EIJ0v^9F|$4DbA3aO#Zy) zs$yHAVu3uFv+<+eA(JnHk{x|)#T zzU?8Tw0C%QP+MP=@!Rt$N^!IHnPVcBfUjzkaAh<1y`^8xUleK}>rRhuUi#ja-oIM* zhYR{6O|w`(q*i?WDB|f5?Gln~GJ;%;g{lA1O8sY45_gd=c!_?1bQ>cqK`X&bLMg!0)VAW59w}#dBTCQ; z6%-#R9rX1nJ~^Pr=?!7`3lIo6gEeL(x*rS;HDL3w_$?~Fv26hhf=`ZuNaoV|l%7jS zYR}>)4V#f4l+P4dP_|*`e?!{=u&D{ZPT5~837km?rCit5fBwY#=TFVavdiZ%m+$|h zp6tD}jgR&$%{qM+?96y}ql9zhM}>usLN4OhZk3dctP)Wk9Ulsv8}@2L=8DSsys_aT zQ#qYi%XB#%nl?ozNurknbOp6bBN(ZPNk{Z~k#GZkk$?p0<4^@}FT@#oo=jw^T-H&5f1ME${M$k*(ENdU{`Mo?D0d`Q&p5`FKDnF$ZrW)uj@ z*-OK%22Tk~m9Yb;dmib%F&!&=?I4~Ghml}GemGa}BY&ehb7*6YLx6^G5aYwG;61Mo zS2l!>9`DUDCz`^eqiG11L=}af7e9gvB5mHhg^n%xf7(PF* zpV~zwdQQ%0H4(qQc71fYK1#DY@B3u<8vJ*$e)6y9z&#Jy`63a-0J#XL4q zsTPU&k^)uCJQnaI>H|ik)n8w<==gz6iU$gd#MldxB$?lPDJg$N9DlC6krj79=O49o zefV49#aa`kgZE-Z^}<5b4dKqaWEoOPggft2ESo0gkr5e(K3Pi)_FjGvnlY&-iie~K z5!iSiP#%T&OczR?IRWt(R7_U_p~{%=--H{ah1CIHwY?d4C*bGKM*wG91tURda!n>)# z!!8*Ey?Y17kK~l!rQgIiy^Wi>!Q?dz@7QucVCkm0r#j8UX{Axz0pZ&cpeCmT{$wT< z+9>NP?pGRATNu8K7X*P=Ahi$Ic5KoM;c8w0y4ifBY1sSI4dN&Ju`TdMXX@|%eob*r zp{8KN&`wNvhv)=|KR4C}oG1XD#_% zQv3&n-N3|_bG~Pb))(wbdUdJluVGQuBZEE04;QZyz`QYe|4gf?9peqzj@7iF&T=ws zSYL9idApb0>HUCOvtcxPn-}R%qydVzj*!NUF}vy;c!SnroYidTMUC{^ik3Pczj_zz zETT=+tW0EMt#(5RvRBHV!9`1(=HqrP;6%+LgMJxACpQP*v+|)(db|Igf$%H%vKoNw zcRhNjEhr3rRFy27Fah~B%OmY{z6+Su+YY}u>6Xo5`T>P%$uMXVVD>Q!Bh5Ufo~?%7 zd+gf2A?6v)cC|WexR&f84}7dtgWq|+by#gA6kFcT_CIc;wmf2acH~+RvzN;CB7jHQ zAOC7ibo-RK_k+Wy<}56;>NCg0`0P)W8yvmT8zs)yeI%1gq$RYvx9lA!#H*of&5&5%r`B6><|BTY_1{4>IrF zOel9GLPL7t1?ZZXC)os-02OkacvRR6-1*D)X_mV-YXuw!!xD{^^FM;fftc=n&AUKv zbg_6i!?EGJopSK8!8crZ$CZij(3Oht5U$8~?pUx5CRQ`i;x;{Nk6*Ugze5c~F+J1d z-vnVk^kr})F3Iu@I)Yi@G`E0CN5mNw6*fbdhiC{f&ZFPRxfGIh8y6k%Zk{H)%~ zn?7oY6*QYa*XiJPn{Uy^MKHll$c7<}<{w-B6{#@IhUFmYYLnqm)=*iiB{mc`*!*-d z%(Zcgk2Wd&MIIrJn}vL`_^Z)24aR!}m04-_s>M}UGNtl(P5RQexw_KStj_YcP~Qsd zZu=Qgx_PDPAyJ6<;-8LB+WGnIrtTIR?V4%xAd>l9g34Y82(;fJmJ1&o9&S}O@p$%? z8OGTNoCvtwS9kh8wXoM*S!T+3ce%R&{K>Y2dp@-VByR+S5Mpkpquc{@M)KHkN=L^C zS<2|y-~LE@1alb3VbWTp8F{*2{la@tBm<-%%Jq-+{gN^%Zz=A~&uL&-)bMh%R(!LB zLB`*ZLZ8wc7f2LPKLNfB&Sc9-%~QzonB~UC-3o3`cFdQxev5M?C>*!%A8R_1a9Z9H zwJrPAol%-Ql+wXg!lCY)$06dT`d_By`QA<=!$O=c|52MwPd{2}=J#AKs2t-muou0) zs?^W2S-oBwPc8QPA0%Cm)ph=S!R%&u9h=m_;JG(s6qDh3+;81C|7PV+6y@{5m;m_; z=5RCLKuJ9+LdZv|eX8BO%wyJGrMzGz2>(6?Ma1LAqUZRVb^+1ow9Wb=(Xtj9e{|?ML>O%Bvf6%Q=IV9QU>*CM z3z|@&>z);4XXV8*>2ZFF*V-$aj;OZCq^kGgVUzR*& zwZ;8nTdQ;1xv+f;843OEX2d85m&q61PZdxdC?ZA>AmVWnXEB&H<0tuKKBO!6pLcjG zcvXx)DZe;!8R+2+{XLbs7+)v%5?L#};5v`xO-DWr=I*5Q?4vhIc)G3NuYK@wP~zg` zU7%7t`yZf{%jk#elRoR)eZe%GdGm-^i@2-XXxpB$MO_5Wk5eQI@wIW`^X|V5e5;sk z6ZZG=Sos0mve`m+&Bf{ZSRkx{U@IbeB%#2`9$2Tn<) z+T5XKsMJ9L@co~rMbX0$ofz~>A@xRwN5`qh)4Ur^Vg6h8A*i4h94{OPr&h6k|w?urWkEZ5usZ<7f_TB zw<}5PMVprXNu~!#&V4I{TlSEqY6AXO*Cqh6D$swlXqf0`N^4Tt8Wqw_`sB4m0^;V8 zzYvG{*exTQ&AKhxMG1jMX}Bwv4e822{p;PluD@{IJU=%pYf6U8e(K@hB%}DFmD;H1 z)8kQ}r=!l4r$uwSu?AZoD$mm_-$cQy&9@7g%dL^-WgnMcosD!|S18A4-+o+63(N5w zFP;qWq2uTXm-SL|hWBx>_0|4NfA?=fAD;VNJ7XCzZCw&^$U9~zvJYn67S0jjQ4CR@0tMu`L3S%Jre9y%&Ak5_>ntf13WUyl1 z(CV6mk(Jt0LM)Lj>BnY+SPf0tFGE~hB0Cb~LZFEXe?SzOlB^Xlk5YZKHy&H@UMSTl zbL%C#SsV9{rre#9z5>egV6PlD?|t%~5fFFa ze~=oWu4#X`o-%xmj;I!v8`alj~Y_844+!O+m1ebnY( z&*>cb4tfVvsK#Q6gc6Vrf)y$Kgn6l%qIATsOy$_v(*K%p<8Fqv;n>O57Bc3&C7FOY z-yVcAHy5x(>bh`Dx_58#kx~17pf%^w@<4tM&krVvEJ(N;g-LlZ$H?(T=u_>b4cU;t zRjIMpO|E|p1f{uDH2faRnHas_d1TsixR#1fW?$5)y_ahQD%sPLyDlsL4l|gVFBy$P zN%+d_4;Bb~ENf`Wq~ZG?{jC*42cU6^P0FJw_#a)oz-W?P3t%dh$XAR33?{Dyc!fm{ zeyT0vcY(sv!Kk<`<*IEA7f4SZFpZ4V-^Gj&sl>r!=;dYvKe1p$o$Q)=c6Ez~)Ed;G zqK2FsLjx%y{93iS@^vWaPkq6mXLp2;tVNh0YjCcjv`C6bF$5eDA)*;j6l*Ou(ig`ZvBF-axZKm(j z>4LPxxGeVEbm*LaV0ng9q{$Nn8TXEfq#I4SF1zozWS57<;w6562}+q92hRM?McjN} zYj?6z#AU;`YNfwM{f?8(g{c`r_JOTt!mGM=ppGAkT>;n0{d5A-F0{-#QGWdg1_BjR zh&cc|7j3F`1c}9{0Nw#5v*9g``|v z3dfKCa{xr_u)gg=<&=+_afWjmcj_{wq+NW9S`a8T*kgn7&rpbF8led^VppJy)4-Hu z%m_y%dxnGUR%YS{e_N1B83Xd8Syjo06u+K~e;(E;g?Qn2^pLk`pbhZ)2{XH<|1pl= z2U>B8(X;-ppUUxa8F1~ab@s8fRfQk<8V>uB3D=)~-PXCu1elXG>Yg`Bp2RlBxgLNt z1Wg00&*01-PuvHYt1E`RzKw@O%BF{F-P7VE&ih^U|FBzjH>9(#o{bxFt3rU2L~*PJ zDMKObA@+J~GjCSIFR56}%OTQgkoQ5y_pYTJB$%oTW%%G#Q3J(W;=BD1*MgvY5+8&~ zCp0b~{8Po8jfNy1T5BSoE&TJvs0KHF(L-<%M_bJ8Hby``qV)W2tG%@LEw&M~2?YVm zd`Pv;MK1^GpgvK2K?;G3XV0tVkn2MbC3m#_m%=HZ&d`|f4mnn;pr19sCtv!Gn+rMN42z(pIKhb2daG8SSIHh;{ILgORZ8@CcjO_c z!jZwj#*3OO^E4m0CBA)NQ=&_)Y((=jUoV=R6jaU=kl8m&-Pj ztNO2v=$awo$vYs(e|Y5pVGTf%KPpsQLzPD7sv;K$P$hpffo=(+pmCuwj%QMlkijdI zli#7itnrwToGeFY(tH!Q(N)}*JPH2gjrtkJ?@ajH_$?)Sqwh{b(M3%cW74}Uxy|w@ zsPO^BtbRdV;1yYg)1tT{d#Ky*u45&0z=qbgd)^3Ta?{aqyPjVpYk`!>0>HOnFv%5p0bcLWXV{I)47WG22E~(T9K}TykPpGa{nNEWpgbK zbabW3Ag)Gj|KSIo86y`v=_z2a1!H>lk?uYMLygCM*T(*lJCJ5M8b7o zTYiC4PK@>%0r+nYobQ)2dLzk*q3{;WhzK}{VNH}_4!5s z`Zg%la}h{;dMg$9c0W^E|I>2IF^@$YXZj3_M z4Z+9Xi|yw-q2Mz>hQupfhiITj;L=2i~d#NnG1Q!0p4Rc@2=9qo_ol03+o zT`~|wHut}B48XPkJ(6QPx1UCLuA_`^Ps~KP4#ZG%W%%WN8gc z={Pj;92XDW@eqS;>~%=eJvUtAJK#(Ze%ZIA{7oYea64U(t&|q!R8jg1nL@q4CX})5 zSp|57m&U!Y=nAOp_6`eV0RnMv-*$>@{PmUS{`CC}S+Qe#NEF2J9(wAVO^A^n+sc61 zmQvG9(rvQ3@&iu4%Ex8Yx%FbU(!Yc|_S*+5(6i z;1R6yUI;;aWe6)+{{kf2ia@;*c#JR)lQ{8RP5Roy&cu@Wea)c$!D3ZhX_Ola@Pv#x zb(W9Yo$ww0DL=HW>F*8U3G3DC^iIgGis&D8=soFNGL(!07+Ub}qF?g0(v2x&G3O$0 ze)N*bont^nI(;D&^13yt6JhVM7?=k~4Rwu6%QY3|#^cz8jBQbfFQ~DS+;RL>UXJEJpZT`;5WA_a)2D&?e z2TSho_TYqd)QiVJ6v3NI^9d;@IQD3{_Q8aT1{R{Ynp7d^dd>waLoKx%~th^|Cz_T=3s5(8NOJ7)zru zifCVJrBTTB&Oyk8Cdn*mwis1PI0`a}SV?KTND7sKtv^tlsr;R64@T;56a^n6mUjFq zMdKnZ9;#v3M}4^j1>5g{K&C^oElT;Wp6WTqpPTVuQkxx{mV6FWMT##3!o2_+2;80+ zqG{R*jUQQ;)wl;E3?7p5IjiD%B&hv~di+QLvW*tF?Q;Qcc+E?Ba;d2`7%BmLN)kh%PlPE%VQls-j@1Li5Eg zKx*tUDVF=Ng)!KTfW@s&$|N)<84Kf%4U9zxIQX0QHL&9dWai>kP4ESfF8=+EekUdk zAe>Gpr2w9Jg10`VUXL-Vutl2)ajnd((E+tOUTqOmPQa~Hf-XM}OQ^X0DhOIY73fvR z>vQe!KA2tgydgd$#>eOXiZK6^I|7ybiv>r8b^c7hHQxOj4sF}>Z|K=#hHVLE>IYGk zF7#gwbOpZz&cnxg+{xjRW5!YEsc4}k1=?1`R7+5?Q_^ZDvYX1v5~_sP{A2spaOy<< z8VyP~uxcm#c!RD>9ZBKnhD8r$FjO&P`e{A!PoAPaXRD99M-UGRn@aL$kZWGD+a@DO z+s4|Mgw{S@$nCW2D@X^MG7Q8Mu%C8H8XvnH7zN`Dwj)9R)+jktHUTNJ!uYD8Cw4xyppf*s{xka3j`@AJaaS<4|J~{ zV8}%VZMsBsSom%HIh)6^#xX(2SOY)x!@qHk*Jqzrr6ro<`R8}Trt8NhHBCyR91EXz zeJaXy!M*(JyR>^AtYZyP1qUJhPWCM_4VR*D(+?32dib?2hB}Hrr()a=1S-nVgTJg8 zT0kZFPrc9y4hYNo(K$pk!`UAh8x7?jrlxz#cwR}-`v$)!?)JQ@(rlPzgm+; zc9-YDpCqV0uIMV$()-t$S;;OqlZ=VftQ-p8I~+Q8opc=v_tpH>w#Pv*PHk=;)U&;( zLIDLfID}%by64n?I3<;~cDU!S0pLm3FDf$#TGYaESq405!~ch>uV9FB?be>5yQHL3 zy1ToPZcsXt$P@~;N9_~VuE&AWjOdG+kZTJ&y_YLK+EINk7Fb>}DO8(b8}~4s^qoUZTaA=d z!GIH3#0J?!%0mF!{pup954vzWWp9{Q9l3?Qtfh&EO#^9Brm1f+xLXA`G_KRUSnb5&_b|CdUv4-ijHVa=zIUs)r#0}X@SN1qAMlJ} zU4%R0vG*cQTGcBTj?#-9^lXO}$g#13@-6ax?yD9dlaTl!2|yh_fZs1~s(EEcDdbt* zD%uqi)4L)i+m`k=Xe4~PfkI8{B_Hj`qwmsirm0xIMO9_ej`dUn)$w1XddVP)%>5T~ z;<#aC3E7;Jz;e-??IHTRK;vUdlrB_^LetS4O=_aQ>|lY>vT?X+Cw7adlI&?s0XOifDa6c@lG>5fm- z<|{PKqWwRLL@k(N5)b|BIhQ9SuR+kI+^D@&HvXPKN~2+t)w#@|RZ;56*SwNI-p+C% zUQB;^yL!sj+h5|p4)uwsBa8^@Pd<{v-v!vmcO5Ro;1(c*9e{waNj3YpTU zkQm_Eg>ZKtCa~0a=unOjpcf|URp=*;#lWQOu=@3(k5}`F)hZ^+`KD-yf;G80IQ5J zy75>f1#R<}cG;t3X$3$P3#F`P99OcsORRDdEnT5m^?&GctzRe`au8b=4;7NZSKBiT z806N5`?dJ0O|{DiuQ~LBujTEk&4muVT_Cd;Ng92NixR&@#cv(0QQ*BZTU(oi%hwt0 zN&cg;mh4UXb~#Kk^Eri==_!l^FMu`tV)e(i=*yiYX;5XU!Ew-aqa{f3od-F7vc*f; z+ZYE40F*7@Pc=Z^sh6>lswwFPsNK~~DZef@G>>-*V=$=#{AfX;N!uMm=Cp>RZTDsJ z_>+jm9VRE}m#6aPtGn+rwy@|&Yd`-t+d#uj1b<5((>Ui`qNDUlRB`Q-mls;--xxJx z_UD8juFQri5XO7}c%(Q&unWt&%vWE8fKEE7$(Xu@l>{|fI0DK-PRZO(U(m1Q8ff&m zxf0PACp{s9ljkLUdSa6}1hrPtBmMMmFHg66dzC%_Nq|($aD6LJAhZ%Nx&x>fg^U*T zc~P|lV^X?I9&)@|SMkwNB=rL`CiB~N{mI_=gHsx({CW&)LxhFLxOzj-rX{az0E?U< zB68rFO_n|biI@+U&OblLExh6t5N63+TkT4@KNTcltFUaptK{y*$)mbcr)FuQ>=XJ~ zlTjl_9Pv}rHj#Kt?jBPJ;-UlZX8@ncV8tUCA_x`d{l-0E#6tWSW*rP@z+j{VcZ7&qNNiHa@(sD&TAcj0JgT~`pttW`LRD*wctWZdyaJIjReUz`WhC%Sba z`rDf*fnOBs2uhOq1Tc5-l;Ndf$>f`&GN0EXk=i#|6$PY--<9%lgtk`*F&;$!{Geyc zUV$9;u7jM2ZvpzVVB6|Q+?SjGE9ILZ*^yf&AJX{cKLwDtsXV&BH`JB&sZ9Ejg$n4E zFY~U`jwL)CQ2WC$#EaJL(3^q@Oi;CM2ubxP46}V-{$BH}oWR;e3;Vt7k@-MIb&+IR zX@-q$dNa2nL!gzNNX5Te4?8m`yfw*Rq`}ZA*f*|bj>KOnZlR`Q#UY~FEBJYSlF6LQ zvg)^>r^_c}Qfu3iHk!mE>!+`<7_ydQmn&=T6I#q;vch7|c>37-5J<+!IXQyIoA_fh zPe*rp4rK#Y*sA>BCez1#_6<3PD<;;0muQJFn4PCVl=rT0zT)8_)=4*lCp(|K#Nja#+&N%317Ak?MoTF=huo0+$LW z_lOr^ik6Oimp^o*br0DsE7oqD zmZ{G@Z_Rl>AW@pv+|Z_e19+xUD|bYxtvD zgSbjmHv@L;LenwL5euB!pjo_MpzOoJDelyZqmt_}$0ye1XX87qV`6n!&t(6lm!$Q( zV9?GVo2Qq3Fy=hH_m^+UM{E=x#)v%*x;C)>CF!%?@6*FYELQ_0=Y}L02uskQR;WVrs-~+Tr04K#qYyo zq+n@B`Ah=ZreA71B@&B~=z(;yL*JP#5EU?ZthAw(|J~6`K(l@pCR-i%jm43BV3@L+8N~v+?KZk7wCD9!SyYuWvtzuCz`iVOInzEFB zt|@u++~UiWrp;C?k8O$cNeau0uNPk6n1tJWqwGAR%yxt@WZ(|*Lat}RVX<-NeS2iN zqEbtepr@=6YPbe>2o+!IW3?HMS43eiMudP+6!zL+SD=e_z8-&n0wFH_ncrvDSBC;E zL}xg)DtA4J_8R9yb$uYI@79T7?75%GG(@FSjdiNBHTLF;!TQM)7)5BDZ-^xrc$WT^ zh~r$LWmbxc^E5Dt z(=pjSwl-aN%6hdE0DPY~SkU3KS!7^BcPD1$nTp?JODE-wezN%=?1lMJUq!4+m8wkV z6n|8T7GpLA)e3_@a>G&`n|#3+B7j$W1Qw`{4S4TsZhiuT2v)|Al5V^r1jH`%w}%PQq0al&tV= zU9vn$)xXn=T2;-~QHgwG{iY(E;Frep9giHy@M30hJQVaw9xRPU;u;d?dqrOz|MOdo zJrTV`$c@^#^n=mT4x+?GeUWJ7i(T$`Wz`m>GA8ix8gG4Pz_I_nO;r5!D%v-?KUV12 za;^C+zN)IK@=%q-b>x1N8&Ho@vW#QXgc~e3umkw{5bGVL=G|S+`jj^D&m>;yb73WX zTWeppUJ9EQR&*O^RHm`WCmRgzwigZTwMM@K-(~%u(aDG0j1#mJBJ;a}K1$QbCmPqt zjzUVCz_G=a@lCkCqmi*6S%p<*Ar1vVpfILS`{pTm-mX2iyp-LDo2}oCwd|c&5u6Vm z-76L7e#fhkTHw)7#1|~((F0H;qO`-ubpgtt@lP!Tt*c36)l{)a-{=UHx2>=%x(<|i z09w6Pn$Ox0=2YdhIn@A@DH~eab%o+P%i3-poM^!)lDOy3Qqr8iQ}(p%(i78+PC$~Z z8ZC`pOH6(egjl*!ov_b*q#p{5d~v`zS0VGquTdZwHsppr`(IlT|7Y}Hh|i6NcxARJ zGVkeBd|ohbb-58c0H=*5La~NNqnSB}!})9&1jWIF3Vyak@+N?hxno3eL2+>h?1NWW zY;UPqi?Xg%N&`LGv)c8CHmC^Q<0WSUC{vB=RpQNg&dVPku0*9^6Il4Dg!if|3X>W| z1zb@8KL(VAQ;@Vg_+9LvoO5@wY*pxW@aH-}i}Tanpnnrsgk}=!_WMYGj!mG2%>}Y+zRy0o@ssqbaUuf{pbBH6~` zSwhe3!~e)CYQ=g^jx^{!)b#qgjT$Ga*Vwf3YNusD_`Lj1qv%sG)YJN^_;TRXJDrq( zb)H`3j61R|-K4dfS?Z1)zcNKQdZv+Z)UY|NZ1_9U9>gTkqw^@Pe)^*kgw22|dZ5u& z(Y4^^6wO+|4x#6VSUR5E>*L&V^Tr-jz+5=kW!=%Tf@KxQe{h&_oIIGCEkU)PsUfE8 zs{?*KuxX&`ypg}5r22fHVN&Gd6Mlx}VC9cAgE>_sf+bX(7XSJgtj@qaRCRaK%tCrT ziNAi)CC-G55Nk>m3oWBW^^eL*MdoeBs%gp*7$`v>zU|&pICgun%RM+>!H3U5zfP>( zQNhJNyXz3CM$biQoe{VaQ^MkDX_B<<^n!T!6903;N5h&rKQEQKZWnn}!rpS8R6(By+Zhbo@@teH!W}7kdqwLqF30y!JnZBqi@>C}LrP>r6LYu2YwZUz+lt63 z?ZS67*htz?%e85jE2l#qQ5S|TGt`V>WC3iW0yR^pe-2DMr_vegPY3eJuv=-O1EB) zs^7n=67CncGYB4vq+YEig4%ridAZ1U+Pn2h$90;aH0=>6FBk|>%os*qb?fGq&31`j z5@tmI7K#c<$Xm<{wT4eogsE>2MNX3{$#f-t8qhlR5w)74B6L9h1j>OLmbtKjBZK|* z5^NES@aW$WJFl!;;FdE%DU$f2*7*EF8DcIHnDSQ_LHTAUQOk%X#$YlmQt+RF%a6L| zdllDRwfC=VJ~O1`ym}IzOx0>2Qu%)kjC>Kg>O%q7{nwCiCRy@sk|WUUC*wq{wIqvk z3$#H2@w_&nh*2DC=PWPAZf#0CSmy}5pdA6*L#&ztu8tQk{yyAYJx{Z`vrWg;v|*pq zxq}fA2s5MK$Wi@%bXA=-Qe_EVI%qOKevo&d`zB=mep**1_y!7pXvzlyVD4&9%M`RW zMKOU?#7r|m_b@G{*NB$x%k*`Mcn5KU2U4#LqB?SuOlvLTl(@N)amCG9%V(K?TG-cC z0z2N4xpOF$x4!yN_|JccYl0GidP4Hfenqi|x~3CO(oxs!!mTU!pJ~RnL_)}k%fA+> zUVijA5-&m}BCCGmM;Eh=3{RjR>lC?@6B05!gz>SFy_54fk$Jr)e|Rphfft{i-HeS< z7^Bh%{iMPRS|m&9V~BN0`Y27Mv8rvJzQx-3Q!COfi9T$1#~L05B3aX}UgbmsjcP>!6jFW-Y7*3@?|2oAap+O09||%2 z2WOZnSu%}Kl~6UCMF`9p_I08unQfXmR(ewN1Lid){(1k1>cH?>9CJr~o3xb_b-`-X zqxokR5w_Zl&K8M~0cy&yqHV0~@Hc9vE8bSaKJw0fB&THk8G#(jw zh`xdz+dvEWh8vM#wtN5h22MVDeoBFFo%$n_0}~cH^)iLg==)&@9o|Q})(9@Ikb9&G z@y(gE#I-aLcw1^_|0q<(kINZbOqIgvzRT?;5xYE&+7ECfh67C;(|Bt`#P#op@yL0n zvhq3K);J7ve0Eb+OWu|U50n(cwqIxB?PnGq{{Y9_`nVc10NHr3Cx5TmQ0`upNW>}eC*Gu%H%i=cD*tCOX-)Ag23G^`x_uSd4Y7nUQxwMGYc zTZ&e09Jr|0BlQsK_4A5)n;fdsDu>qW*6)3hdnuOwjW+`RaM#h|xpI4*AJZ0beL7$c zxM|$s#6vqZ2iPwz;QYd=sguS9pr5`)#n$w(ZF>&(ZEys?q>lF0{(T?!i=am7gQ^bx z0xv^E@3WJ_z+oT1qG--C3mawJkOxTQV%K1c`$5;<;d{($%!)6qHqQeW(JT3nQF983 z%k@kCX}z*Ppik^@Miy{wXo-+j@JX)WN1=aG&%6Yjv0{s&Ii{-dy?5xb73B*5f=mHu(K6wn?IkdyF1j-2%?!6E-?(?D3!M1j~xpw-aCwLW;dUSoHK5aSGttti^=|8mTM2 z+GQq|eJbZ-kpZ%ee0gTHRDH=5ZH!Y!C37 z@wSO((6a=0Bc?Ubk&-CrI#G8t4DtKB{=H^7^1AP}v{~xPJ8Vs%cZykZMZrJ%#=8*d z*Xau%TvXX9G*kQJjXZ=lMz|$!7brC&1ZSZ{Dh`r=zm$JLtDuuU&|S27)A&P#Nh_h0a9~AXtz@6WZtath=p$Y{7yMj(@T18O8#p7c`$Y5Uijl1fJ!Z{ z*tVl1g!zkW{R4WA;-RW>LC3b`TFCD&Uag16hPpCGqhrYZjBBP)7P^2@lhA=C9}CR? z2266~az&PZ=*sa1AK6XhUHBnZ=r$&(nV%TZ$I`2zvtZm1nabyOQ@}IhQZ)4_&wwc_ z6EV|%A(FO~A4<>h`=ij;Z>&QRtK3rjG6tdRsaEe29bSYD{y?Y3y1Do!GrxD89wdG|1Jdz1DHM_N3hbHj-A2ty_)7{b)Np%#fVj zd?NQNBlJ%8jhb={;lo&P(GYe#Xf3DFVR0;;h!aoB)$wZMwdV+L`}!9DO9-xgIP2QD zx0HY zkE$NTZclUKLfpOf8 z-s)jHBiS@a_*+*F;)!BT2F7;+D=jbg;@8|5uCT6+d!tIWq8>$U zOrkDV#JHXEn!@i*N5Al*T1L3wU5ZfG;UZ!RCgyKAZD=Wbty|m?i5Ag%zlXtb79dk1YR&C{orlZhnu~dR1?_CL$v8 zx50cYaxv6z@FTtIopzbnaM;KcJt-R_$W}euJ|YhhJXWbN85%w5(1IjFJA|WXOzR2` z>I;AGQI2v~Xx?Y)iHh<{hN>GDL3kmdJF}#+b6gUMjs07|GgWd7 z7ymzUeFoUVwV+;pS?M&&@o~yGlK)io#J~4ZCQ-;VgMJ`0;*CL(R z)LiLT;7MY&OMrnUlpIqgNqEX`c;kfsmNRk1+EvK8It+RK-H0u;c9F{WciPK4Hr_22 z<1ZA4N$W3M^(EBo3H$=E7IC!;0%E5n-SYZ!Z8%62>=hpJ5mf2 zJiq{cDtY;m9gvUsoYDqXZqZ-84^w&N2;v_uCCrmBSZ> zHr*BmGn?N$*JfR;ci#}NpwjSCQhNr)nUwoCj9RbLW}Qk~U#3sj5q89necd%%_35X0 z`-CDx=h*Q?5^tvI)9xaqkbpbO&O`oP8;TW6T>Nxyd0Bb6AAcR5-C`Yyna)FHy!>ah zzC*dch{OuSoIEs{cB!+*aoFi@8q|S2UrQ-}0A?_ZoncyI^3OIS zAF=q|Hke6aSWGLeQ6Uxi)+;M)#Bo8&Dwq;@aMhXU^1hG~Wkh(={!JwQCakrDQbl{9 z{|YsBWB;|6-Hxr1d3Q?1&#L;!?t;npcd|WY4c)fo^7m!DSs0*wlep9|kKw~;=Pk*^ zlBk=uY%&0HU1wr1+B~A1_pjIp3TDO2WYw@6@zQ=97J~vX@lhJ02+Kn@BKQ5RV|m2r zJEeTqTtkVpq@eTG#?5Qix^x^X)@wk|pOOcc6ZDtM?YduUhYo>7N_LcrCSYoxf#MY zxaragD+s%kP9OLM4-~cv0{IekbiaSm`VFzoOt|^;_YG;d^l{KG6MqkJY&VKD2gHu- z*`qQmjy2meNtNkHVrGEK_EFm2RkYLu3fuf}0T{>%A*+OBc8l?k3sfI!?dTEJMf0XO60W04AkvZPzfU3-_V_*hnuaOFfP%QUdxY|KJli{Fu9u8fy*iu-z7>k z*>NnG1nk-XFU=?L_jxkAhm5?sBO^+OU0Du?i98tv_e>P=d$sSWKd!Iem+>7J-ltr2 z)}ZG;L-fMkU15__eQC=Pnuc0EbQF4<$HP21-d># zu(mVl{4|A+umR)WVF10G>0hF8xf0p9;}xUR*e@(d|7`ihM1+b$iN)`cT(Whah$yx% znOBFfSEm|8lYSgfu8VSrQCInqu0W5r?26x?h0b4}?W-uAeT>K%9{YM^1zHbqu6dvf zUCCPnmFWg-^n$QYLWj*4F|k%(gX`aJAFXuy@ZH`=(BOmQmAp9wFi38(FxA9!PyGlF z4?3v24LdyYWCrd&)tma;U*Yqh0y+=PU<0km7^M}^6` ze`$InSPQ;1&CdVvs)BL{?ERjHqa+2GJ)RxS4Z>jU$1@ujaEKPC(t2r(AS0Vc#5te;|3g? zxzA|1Wn_RqGawGhc^q>Bs9_8uj_vPW zIdb-tKSONwAh2fJ<^xd!^2i|-M&7WcagU?JrF#z7z(6TUkwA%px4z36?rvP`6(=V* zdCKmz>K435SqIJqPNC7Fjbk?s%ZRJS`e=`dpjTTDz1f*5_g68hFTO&6S(sH{X1=&r z*~@B2iVL6unw@VrRda}hY63Y%S2w%Y0W>Go>mS(~pW^)qZ}LpV`x|n?>O2L*+?{WV zrQU;%H3Gq0CnZl1PcEZ)_K}sDI!CfDZV8{GVjhXQbuHJ^7cVHLDhelAqcpQN0NL-6 z5)ta|hd{OKsoMVe4*tz?XOMm|DEWLBAvGq4f#bCE%&TLM+B75gS!E|S=Eb1OAQOHr zniLQJJBkIAHyBV9>NbdYr@~|Zd+a+J3QL?1%O-eO@KS}<&Ig9G?3*0vs@P~ z45NQ4d;h1Ni9<^e4<+PAW~V9eQY*QE)am)1Zy^2i8kLOfP<)odqZ^4|?xH0d=r*aNMaF?btW7*IgWoYKY73^(0V6vUln? zL)kq!^_6V=d4UtsyY3iF}laTyuq+=c0wpddHypi#p{$ zF1~wtrk)nYiev`1oKn;1L;J={DB?V!=Mf7m?vhiww>JxS#qlN%_nT)=0-Gtcza|*e!}S@4vvnEM=+$iw@|t_tv?OljDAy2a3kKh8;j+;0xeA9!)8Ws|0F@E3 zE{$t;=h$pkF$ordTX2lr28GtL^1K55uH3#kR-@))U4h)Ye2Fr8dT1#`{RF%2Zm@Ll z7nJvopY7uCE8jQQWs%;&4QXCrMb+PF+$Qv~-z^K2q#00Tw&q|A=Kn$_xRejv^L}B+ zLdQG&`IQAAhoKZBZpl(!(4EYRdpQAeBb(IJ^O~?Q@oyd0(=tg%`;lPG`;@>&8UJJRBIzj9t%h9;`og@AhKl|Rha~g^*$LAlIWYL0A zb5OO%YL8sZ-3=4&3H3~2_Et#rR2VAHc`>XXbo2Z2az^yoNx4z{a#omc1l&8YGekdA|*Ifnnr`4hzdGh{owqL zv&Y%G9ytK)B|jIb73P-LaWX1NelWnzWlVy->Dq4aWpv7>_)8tICVs_T$!+dg@A^r$ zeGH!ADAZkZf0E47i+EI(~= zmVX#g?N)U#E4e)7ac8VhCrY1&EP@K+3h&yykf9jb`=fs_5ofEQ{Szd0^wuD?5y$%C zREcnk-qRTd+E5}|zLqHYf}hdWE32~}m?W$SMZth{_L$l1{iTYn+A+x3m)k|6ueVGd z)+iYZeX|uuF;Y!P+u>kkame|}B5a3M4*A4I0?i1bC{Qr~r={x@7)Qi{k<^rG4G+&R zO1r+*;{ftC2G&%rxHR-uHZffB*<0Jx>(W{CAPxbB?bw_@e}8b%!-b-FyXWXZA$|fv zQMpfhWj7bhSDo!mm1h=EgmMIcI#$~1lbE9MNErF4g|CjiV$zD;L6UC$cZpsB$)6L- z2c#S2{h1V{EphML8@)GsTw~8|k<*ZcR;n!DdXp;}LO-E3w0@MoyYrEU(57EKOh2@0 z%3V7boGfTvuM#R)S5?9dswqujCcZ6i-$lJsPn$quuQkKEHhr0L#~p}5{MOf_0I<)c z;~J8>s_X!@+|#3?_Yvk6HqL<@qT z{@iO_cq7D0fJmOf{DVW>mN9RGs_KXriP~4oAIs$icD+LQrC-!8vQJbbeAGKTI1^SSW6lk#!ygi*bVh@zk``W2{4ne^Qch$caWg_tGK`g z4fm0`1i~pcpnZ?WoG5rE6hRO1Agc9{GNG@K>fq*g|5lax@`Gxvm$4?90rMI&cb$sj z4N5&?7rX;}@IPL=;FhDkja@{9tjUeT{jBLiL6=9*5p<#Vqe%6|ATrfzpD13zi^_CE z%&dl}aDpakd>oY*sqf*IP<;?idUV22uEcOd`Z1@%>e8}tx7B|nt5SXLEvcWrc=F_l zP|E%9jTA-ew|gl*m!k%ZbZE#;`I2Va1;Rn+rZ-?M9(0s>^1k~oA0{w&;f`a?n65Pc z-LrSkK4(wjJXHwH`i|qu)0qq?eM4$$n$%4(iGqDsEU?)@iUF)~rh1#UgyQtWaWMGs z<=#U3VSpojk`)KAlC_U9O!yqlf26eUkhy;-a##0CWh}XWP9l(6waCM8-I8!jIZcjl z0~Ra)nLEzhF>TUDZE2ArDA^vDYIW23Z&DC*ng<~+6MnxYdB}a8A)xSHG%dO&J%<0Di;Tct#-&`_yQSQ7EW@pi zm_?zZjXP&$boNZ8hw-a(+N2}b1~S!8?Kd8~}5Q$IT6jwLi-*)#A~uCntJf;9eyr^{`?}as;)@|uf{6O zXNv;pA`i4=wDZ6%*xP~I6&E^cig_2?JDll1K+->Ie_u{<=_Z$`b>Y;FLDil_HXDA7 z7@5u!y8VZ;^t=6*!7wX6n)}!c#Kyg!wQObCHex{TeqtPPI{{HLWKq7ySz1I&+X;V8 zbRE|%xzfkB{Vy|Vok(a2!0-2*3w%jM_PY@mpTbw(xe{rog3}_dy%1xqvbx{G1%B+( z^PrvP(T@av4QBWXmjS8Z`?aTuFS!6VwT3G-2?Lqi>}Wi^}V zGIPip;4JUe|Ag)_{R8XYo9P%{xE z-8RD>f%kuoBP!_ihmpYPp$<5(#b}<=*>fX*>(QX(Tb6Kd&iWpW4tAO;G+S(yt3v+JVxym6}R6`%Q5KxW~x3>)jQ}kaB3HaWQqW9AW2n9Hhz-?9ZoINus*`Zo-=cGzPk!%K<*A!-Mpx-ze zN`oTk@{$n(KWiNG(l1}PSjt}^K8Q1`6jj-$Bunwq=v?XCb_DHf+c9!6`A8j+CHr=} z*f4D|Kq2q)zVyM*cu@gu+>+hl>AD9Z5`P;dPFcavetld74L_@0!Wm03qocQUZk1)O z*rU5emFkej%k7n{GYxUAAD1n!fnek1b>OpXBPC zHgtbnXnLoL0(u2x5x<7_#Zs9m;`otj7VM=-{jae=jRzhJ4_;vS6}y{ z>%lacVw&;ZBLY2AGgp9-+?RjLR`fZ;ZtDCZ{a-Q5Ia0QQmieM+b?GSwhAaODT|KS; z%47Sg$35`y5U~w|xVN=4`Uc-?F*gEw=UOTfCU+B=8hsj$bW?b_!-=#m<<9%Z69Z>J z;R*=@r^(^Y2USTpv|!zfYM1hbigdr4S$YM~i+XEN!znay)ZO@Q93d=({i)HKQjh9X}LrEJQ! ztV=$6*w2p2_iuie-LnFcXr|CH>G_D0$j>(z#RO2B;riFkI3aXu`aQy&FG= zylfv}VWjWDz9!a+ua$20ypjzZ3_XPVbb8jlJ@AmRyIS<}qy#hzI_X6@J+GyqwzZ7p z?vxe4Wb2z-%vlkk_w(#l+(+xDuZI`2^f$O>#aOT9X0dl?`09k8;?Wid+TB6P{Go2| z#L8*-%__z5nXFVqJuM&f`@f!UPNF!jRcg~x2deK+3e;W}RKd}OSVs^je@5UtA4-qK z(J$8o6ms|;VlQ-`1WnI?a*Tn?uXj3RCJp33$oSg%@5oESu-EDg-^>P^qOG@s&yJK| z7H2BZ=ExnKZAT@!CnrAgVg=Zss4wRy1Yd zPEo0a2lqIaL|EzRSW*bHRaCXEC3)buGH1JJv`w8$vzMc6MJXR?oLb6s zUb3-m=vu#4^>Cdepu)HFm%!o=^lJa2HX?iXWBhBa2eZ?~(Mj7Hb?c?HU6l+Tt>wyn^S< zhNE?E2|d*+FppGfh-VXTTo_qx^AbK9F#9mqnFrxl<6%-Z3}WMH0dYhxyEg83p1i(s zqxheNetm<+fPr2P;uE;NNs+r6?hFn*m_urXFL4?4L(t@SWWuCGan_qIvCzCqFnC?x z<@`qpjlGft=5$dfDc9G)Yc5x+6}FSZ_yYao8s&X;*91C2lumZJ3Mt0r#M2Nd@)5j& z*l|~w){r03X9{E3kR3sAEjGx~DtkuNbtAE<9KBit`7H7d zprm8fF?>TmRET2z@~nj+dM5MB`YJbA0U$2Y&a=om`W3#KoF+#bw0$I1x*w->oKFz& zsvCx0K9Y&+HM9DLs=VfJ+@f>J!yyESEo<`}=UcphlE=5WxCaO85rem+PmOn|R(^mz zmS)dVZaMlTTV(HtzIlwUURSYY6rYsy;4~b{{9L>W&>m6?>n0JjH;GkWY<3oBE`J4u zBwPtC8z-OBg2;C(UXk#WBeO|}MRl2yQ`uOet*VQ)`Ef@wuN*AGpFH)32X~KM&ej?< ziQn*v-=$!8v>cvp^t?v&tcBh`BeB0jjkcEemhzZpc=4LdVjFwnKP8{Z)W^!0ut&oG z;a5gQK#<-8TPshBuRODV`q#vxJ}V8-UAC7@W9X7!u>c=QJ&C+3PAv}Dnq9DTfD1Tc zz}%*;Nmi2nmq{sk%>-?D%_5jQ%JXB#td;aOlRBq#8IVbn^dQ9~wf~(j^UzhZ@Y@hG z0PWEMqLSk32NfU|yutF9Hyp;44R@YneEn{FVkA&I?mfqNw93hsYl68%!w2$qax1PT1Cj-TSl+e2Ve0LcR9Rr{UBXt46bkBCyKbrEy8fv1a)j+N zio*JhlJ1$ObyH% zI~j_C101q;zek1{1Kw<$E&>}a)n|TFJb7T?H3jNnD5R=bEL*9n z$7mdc`Dzl<#*i!X>_#M$AYVCryg}{2`1XV_pnd$)RrG1H_8fh`fCH z^l~{zA$3Wb7tv=RlXN{ zSg&7M$mgm@ESpw#0ffX;zx}Bgl+^wMY;?R3DsH~}N-wMB8$#c8hV9#?YZ!P_vFT-3 zW&*>Nlxo=auz3DouLP~Wwk7J>84-3al=Y}TtSno4mqq4r9PD86vfnj`wetNl#Dg*5 z4{Hw}`5{*w0eWT*P9}%3fJ9qO0!1EhQfnmiorDBihER}xE(;!yndJmJEvuCQGK~*O zLJ7uJil9OwvFNnjUu9*Myv9A1htj`*vK6MhQH6pMC2Gb#b&)llH2D725GSv_t0|_~ zYb&Rj!WgxqWrv}F4GXaP=iq`0Glz1cQ}Ddkbc#dVUL!+M3zAX+w2V)Lg6bzEC1xQ{ zFS$Gy$(O%wOz?DRPnlwq&<0l>w;B?lmW!UHt*tVArlQ9sr~KGzD@h}Rn{rIovi+ka zyC7S6nTac|5r;iJb71;sxg0B{QAsas-1+9h5CLoB&Htz**DiRc`y?Q@h8ig#yg89O zYqDktD1?LF6L$5goj%~qVDU#0>8xw>?-PcQ;6GT}7$caBnYh82je@wVE5bpy7xRjf zyUJASQF?7_lz6OY$$;tkil_4Ra4$03>6XSut>>lE9DRDLFa01cwHwicNJnf=#r zgyN+R3zd=vED@*SGwG_0J7zLiRkWX&7)ydbfHjYqD^0~?qkAHv1pUQ?emAQM0Yq=k z0rLhwhcqVHsx6L8p~qBLb1DdcYx9AM0t0Owe2(Y;+u#)qUL5L!-POf8GEZiEA1-+P zVZT2NhhIya2!C57^wanpn{a)yG0?-Bjz~JYxqk${DUAlYlKUm`p$oNm{%d5p{XvrB zGOkF*Qj<;)fzL+ya+9Kp$=myO)ldHk<0S`e;pAm;}|w$`~}L8Zw~2*<_F z!rPRi);ixD`}Yt1<*UmhgvU3lprXRuT*mm_>#}+0{=i>-j4S@czpzWbD_O37n7#Zj zazv~Gfh?RvH%cpOZlcgn2~bc;?sA>&$X=wFJ}ePF#9CXnzxf-}B0v(|^e({GpEwd= zzjdE-h8&stWxY)w9Hx@dM#OFec#28zMq}Im8IGX9PTfuTE!Ky+XDer7+?;qvX3AL} zHfOUaWP+LKry3Gg^U^iN*}Es2oPX#fqdPnR0HIm2WqObk)H>v9kA=20&Q+AclE^M+ zcdb*%6Fb1gi53&MI{m>&mcfS^zoQ|HAdMyn4*$V+u^73VqY^b>Oi~;0k{UMHj5TVZ zVHc1f8Iq>i1E%N>ZHT3fh5tkop9U$0a1eMEEw^XX2Yg&zZ<6y7?@`F8g&de-mln$z zY?+ep4rA5^nEXJ)9ay_X%NCw;0~)L6E64sYwN2g{&{jj|7WKJmk&nQ|$#B3T87|Kc z&;KeenP(Q9_yloQ<;nff&$v=|*;#i&Uyo4k3|(pj{rLN*fR5Gtd2&aJQcB}-goP{t ze-z!D?iPj{dMb=sr0|il_p_?Y_^`>L$-3ANJvw}IDxuSK&!i^L#gH5L-SNZt0;Wwd zCWBT&&6*3&aMI^*DB{H!%B^ayq&F|JI|sL-pYcg5>BFglXdBBjjHD~P%YPapjpzBj z{%)COJl}CNa+aZt(Q`lXKPOmNklz4!1p37$3>8PFZV~=c_?#@_EF9aF6CVy|R}YRR z39}7_>fwSG=95$dbY?O>Jr8d!HTWtoh!n?mA_XLo4WlyeS@I{L!NgD2ufF`ovJ1e$ z?-fR}+11w_+lSB6N&2t%UGlCC1gr(w&0NUv=-tf#x4KprMEIO47>C1zGL`~|wbeol zTu$hk+IgBnVDx=>AZ`elNh^)L91qvP!Mrew^Dnz0`HvlkS5FDTvmoVzWY|-m!Oa%F zo%w|z-`y6uWF^G<{U+G6L77v53VaZSUj&~k z&|QWt%k!;V9#JMm%eMBmMvTo(6{dBF7L~L&a+y2te~z!UzS>FVJ7)w5-#Wcyg4r^O zdq-JIQu<_G0M2z$&(+I5GPn&MB-uIhGti@ooJc-vOlLLZ_>k_qTTQ}w3H17*X|KT0 zX%VABq#0<3gUxAcOpC!@&iz$_RmC*R?T_JMsTttyiO+(Szf0a^?^Q&*<>}t~Pr}-} z(nW>Dr!^n*%u`-Cdb5t{xp2jH#DHg?LWu5y+j5`Y?Mh}a)&9lZD@38Ts9X!0%y$XM zcWO1H-Mw>}9nk|uYH}PM70s-+Vl4Je4Rxj#%eot@VlSX1!e5({vY)7(yomaLOkH(c z({0xup`et2Qc@yuFl#^*RBopPpjLf0%ENG`xspP>VbwLxh~J?I2;6bb z2Qo}Xowr$a)(KVx4OA|69b`TNS8X+(pMGAe27Q-YYf4(p;zoI)bsNFlE zKr)D4Lpi=mK7B#xy!AX&4b{tzIsJ|)vPnyPli;jR%Y1{ex&#ew4m15JXjk~)j)CWV z&17!>d|*@=0*l=_PwA-lS12ly`6~f&M$8)#IoJt_o8se|dd*{tfxAPi-)wofNc&X= zMxH0pM(E-rbBAw}w-L@z3eHf`uR~^VN%75R%DTb1z>TCaq;^vK{UT?%IBoCyfK*C+ z);KB|)@KwK3h`oqszQzvfJ~wMEN;OwAzAK%^p;an;R}dE$f6Z3A9c$Q)VDshLjK{> ztCjOo>{IBnFH{GW2{M*g9aFeM}ueS|3^{&*x^zXSEBd)l&ksIgzhgE!D9oa z&kChlPq}dI4l`Tg?#e*!sNhr`=ZlO6ICJjwwu7+5c?4L$#=@lveD8v)GFsdFXGzN+?{$6Dq0CERK#IG5B)BKW&Lj0^_xn~v3iEb`@|PF8>Qo?x z{=Vbj*A()LQ=bbNyXzhaikiM$@BNd~%Bcvp46^FT4VEUU$#~Sn{{|`)#)*?(JlM2G>#c+jw5&k0>w zsOyW!R2z7}YEQ5d_YqHvQ3|ZR@@QC=V z;rzt&_a0ydbCqNJKG!jpIdH47#^3C37_~?2;0KAj(&EHFHkedJo{xOc+Y(awbApN7 ztN(yiI0t<~%5xb4e=O6K8MQR~SDv0$KD;h|R(lQ)oIyL@mI@w_&SsR z$)g_AjiS4*8aa^>0#wR|ki?d~sqhVpvmQK5iNhAOEI zZeeywh3RV~KXR52&WdnDK0xKIB z_hM5Au#PxGgOJzPqk)%Z=xgju_3F0YMNS7txpOhpRgVG*Cg_rb{(gN;yTqy_!>5Wb zl3d%_CAgfL(n&8%25}y?MxSA=Wzsj*VP9lEFn6^2zq)TjhP(Vh^Gx$K9$-_2ZTGuS z?IW;R;N|17k40a$__#h9X?|DzfZH^v`8Dx3UeUW#a4>V>OI_wLeoi@}B{ag~%-{`Y zQ^8)uDn@n~E6|x2L~G%1Cua4+)!jnufh-rtC~$mMpZ@Z9rZ#3P zF5{;x&Tt=a5U8go_h^qE2-(c~9kG-uOsO?l92zmCfm7u-WZB+qzH{m!{0tMp<516h z&|hCcY#i(vS4jeRmXl$^`&$t#P3bn2`8qDh)#Vg(WJWKpPk~51R$f2*{OI{(wb@4i zUI8)BPfO_F^u4NN79oXSi@h#xPUdN2bI8JsP&Ev3jLHdSTS`HbC}FN5i@JME07Dla#$=l%K{BG-Er_+nTM^Ty82E_P(~@`b`Y~~BPaP` zIN&*9X*EyxfUg97HLAR>HZS}pC8EL_Hv``kc4wM&F&ijmy?(zNaNS*CttSVge!;l- z0VXFZw0}}f-J97Li*zq05=+3KRjd_GGO$lS)IX4qnprYI0Iz|d4 z>xHs5M#sCubS@J|GC)G;>Mb)>6#Ev_4cg}t?uiPgs==(u^)exEVgt^d6qtp7ZLcXs z)nd0A$%meTpAf>@r9c!9EXNdafjxm!f+wF)SKsuEj?P=!F}zW)SIri!OUNu1y0u zS+DDr&sB-}@?2NG_C1B&gO1OX#T3QcFIoHWnM+^0hCNpskY|3BoGQdgr5|J6=C*ENyC^A?bI`o+&Y9 z)M4IB0B>z);W1=KQvALVkH9MlC8`SDu+Y8Ty|G~mT%V=AA03V^PH(W%8<)Tv_?<=P zgn3S=oI}&q7+Fv1PRtaz)pOaIM>YS#EDOP9FFEcUg;hR?rfp}i^Gn9#ShE$nhF`u5 zFQ(9WqRY!jk)S^f7OxIU>nm{0z_-luMLx`D;EU~jP<)dt%M1?q+fYi6Xva$cAGgn+U^+TyT)BO- zPsfB=(#_l-(_%3PaDQ|J29Z)BetZ5V5N`xSQ;+-V>01O1aaJ2fOG~Rs*1PCCC{9?m zcJ z0FgH5`llHrLRXENDMX z@xwRA2ZH$e&VigcKb7a1dED}%Q4B(cZ_{E@ApQ95-Dpk44?{y9_8Ce=w|S-a*6mKR6GNZ) zq?ofwEQkqf=kBsb-RWZFqXhS8KHj9co5+& zHks0n(IvfQJ@76Eboj(Y7+9BxDL}m~?^y%f2%{2jZ>Ve}@YGljiSk%^vy*2jU_uiu zCUz2nShXIK+fxu7JL3_4+ob=nBLIQg#a0oh$VNRKuTWOc;~7bHUMHHRNfsU-d2GA!sP z%lY_HP8LiAc#601$Z?tUr%2q?-D1(^?CM?ZdIHGL2j)aR(=R+O)>&(|ZjS=4h&H<1 z<<8E)=sa-q1F%sdN-c5OAuklFz-f%%(a)`GSRnVbR#(gNQS^xRn+04?=Wcy_{5|r@ z0>9GkAF6*i9BzsQWENqGJu+GA-?vh$a^NfOSB6ca(r|TJu!qEQs!FE`8+Xkf;XjWcjM`e#xCjC zri*@JfWp}tQ|+Hm1Nxk+%h1P>ny+HwzvfM#FR#Ckwf9QcFl`HR;A?^=vz@5-=If(4 zZKS&`*l!Gt`Q7)So|FI`%E_4-?a{0H9k)N>M$hya43E!NmIpu=Js?)}+^bORGnasA zh#`LCTFfHwd?E#Pvd5||1ev||la~gHU_vV#%l(2%h1I!^tqoq|Hv%d}&Gfy&U#nx@ zku8Z&F`}9%zntAHS&O&bOz;Gv;r%+d(!(rZpwG^|fy`Rc=C6R#_p2oNp5z@FW4-Hi}rBzfLkBIT?mCS|_3 z!!O%pXy*I%QozSdTA@>fsaf$PwFQ@?iv4gQ)h@HxW!dxECVms{hw49Udn|2ETNbll zz~hVjt`+@sCS~Hz^QCc3*B@OAS&n7o&oSvHhi^A%?(zpK9=v`|ETtS`OHiKI_;fR= zQhA7neJMJp+c#S`=$kqBb%P%IA`cXQ-qK>TF$40chXl^R*)iTLOx&&gN|?)o8)S*u zi8YATYkOC;-HtT&Ng)rST*Y`dr(GSa_BVsAm%GP5alRaUu#77~tD5T@-I%*4Ni|Uk zsZ6o=)l`oVUg_`Jfn9DwkSHDa^(CejJ9^PnaaC0j9RvR2ZE;UP6cQ{0cw3dkiM!21 zX#U`$pW?GTSJN}0(0$r|zjrTv{zQq7!@vRr+B+hE1A_?F9wndr^91t3@TcJQ)4WmP zk}I{??%YSVCBeVjvxcC^SnA9qDuw$$7f<3_Ce&vtMh`CaSYcY~$knEDGeG6-%Uhd9 z>i(MtiuaGXeP@I4IXZv24?PRm+e>J+dwLZn3m5Rc8AONwYI5ggqsDZr342Vw**X^j zFjjS5cQTeVwO>{xaZ6;FAP5yR>vxPIBzB$b72z@Ir=J5=6pun`d+jDfCgt06Q&F3u zh63c;p4xXDNIF0CMEC>xMHv&iQFHLiqobVeuY7%#K1`xVa8^tx8B_B`hLhhQ5yb0E z#Y?Gj+Zf6}!HV*9jAaZ??|Cp8JbXbDk`;_pCtZ5MeIM5tpr7cJQ_9qYH@MK@<>1Rw zslB(Y(6Jx|6|3-{&uqV#F>>@F2=sc$&if-3^%)HOF4@C_XFe&1YZwWr_BG%FsYbzm za$MBEIC{v5i_h=S*72bWw*r@%vht$_mnnaF8Ang5du8g?cJog9EFoTxIPwz}aM|V* zb-wu11H#_~Mf|E+z1OWI?xo}+b^o19`VD9K{mbTQ{X<=6z3*Qt5Rs>jU*k1Ti2!u$ zN$bT759gBEYy;xgD3ld@?QcY=K#(p5K!B;Mkgl1tAW8g1Lw|*4Vj%T12cR4yf%o|6 zk0wtdk81Dpkf;t7L)j zg(W2Aa%koif2I7cw3z3~@jXT4=St+E6D*1wu@3VfZT~IAC?+*n2awTWL53-|%|_*r zJwM>?t%JF_0PAK=#O!1F&$**1W;l}0%2H$v@PSK?{$E>*P#$K@Z5Xv{4-yHA`>Y35 z963kV3mI(-(m9VKC#Szsv?zJ9hI6zD$8f+`xR73q&u;<{lrdbOb6kbPEs?v&1hGyK zwI^Gq{@tdP&lLbly+8IQ)s1X}-gDgqTVISOwb*>DGs8_M8d=(;+I4OvMt<+00B;Bd zo(()}F!k7X=@om`M#u~#d!ARm&3YZz)Sz}#MVK|9a6iG5 zZYFt&!XFwo@EGaOLKxvNXBPonyWOVMhZgKBxfBoxFF0P3@ZRat(VDDqG{ATC2Gq>=PU@OiamQV7h3O`YDZZGrm32@XryEUi#*| z&!e>Jvhg@|{&WS}$Wh&5>q$vh#6jUUf5jQq3v*H8OD zYtHlwT$o%t)mnHG7!=lS%P_8;oXY5nCQv%+ix<(|M{S;0{1yICJJSoCd*MY1Y&Xf9 z=apX{?@EPIER@3h5Ngv#CQgiN@4u7bUWmWV+@vm<_Sp}^JHibMaMC3(wc6miNP)WG zz;1$i1dQpl+D;X-E3QMuRzGWj4(B0=v@)ZHpVieq-B4&{HH*8|85=th#LB~ClDC)s z>EevaYJ<&SGFQ5;Oha?^E=rUt@JW{VGeWJi33IpdV?#T;w-G#wgNHhu)(xR0>f2QK z72Vz!jrHY;midKgL@iXZqJ2P^3COGKUO$}O#arlSz-dCuVe?rH=oE-vBy!m* zdq+a)o0OCvAE<&z%JEv3v`jCw6Z3w^@GXVSYT9}ye#3aaiZhqIpJ9-mJarX7NG2h2 zziy|~-eFnCspu!*{8!dPab8o8EbftB@zZP$AeI-QM#i7YU9}|8t9n-ZhEskA?l2@- z|A;|Q<29QR977&}GYQWF(E{w$BRokt73EXxTHiR$zO!c-hA3xr@Nlp_9+|PFC4c`~ z*?6&-hO&0yLr1Eh$2;)9!KX3?6>TyZHtqEM%CCClmWv-gJg!VO7Lpj@Ey>z;3bgpM zubxMl+Pd5SglID36_v7hr$U>uT2Y+8Tt+d3inS(~uF$VJ2$r#SpoL=cpR{ zQ_1D&vAwncTlHWtfEqxxyqNZ$oO!=ZOkLWPY@22}L17@DJy{irzG}b0&fP>+!&4d( z6=87EhIJ|&XO@IvF5Er`)kACC6QhFDRmv+Zc2_yAng`(Q`6sE_^`otw;d6*Pr4`9x zv~sX(>b0F*fUaBME!Q7!n}8XS zmQs(`bO_SYW{t#}i(h+ljb%T-(7btLZRba4)79Gh?%5&%4maRj((c6HlEAc3i?-IT zhCMn?&SW~z+d74EnjL~BGrJ{gCd^`g%}My_Ge}<*>^-v+cM~oFq43qG0yw*Nsr}ei zBN8wvA8k7{B2=rcGk$Zzqcmf~K~u`m91}4UfG-YTUAVLgUU`L&P2PWE^?eeTNpx|a zzk^oG;Gxv>pqc0x0JeI3J}V3*|4$2-4}$fW!oMHb>X6=4jZc{H-p znJ>ibT$vxSkXW24){#V3^ix~A!j;+s4LX5fKlJ3NK=go;KbX4uh-LG~;+iK>>fMqp z=dnAIXZg?rMrAFs0jUTQ=!~PbbR4Cl_Xvpdc#gB}7jHWMg>rW>>ErCAO0?(l!o0 zeY-0%q5Siv4~&DZ4}NXWn^7hm7(~8|+kp#utK~k-nD~S#A^T4_K3~sbLexT;>UHu# zU4?IVO9gVI0iz%9ZGbYyn_`FjMYouiMrw4f9A}Di%-HCA8Ez|e7ecgX2 zxIFi(=vOD@1w|++pi6`g0XGQy&s@SpiI;tv`P?yfgbsyt;~?C zBonP8RV~kjznzXt{wepDFZni;U@@nW=-UtKai3w_aM6gh;>Gfwj`#j#<jC;`HpxQ#71&YFoT)VRWs z>Pv&BKLGx%m$KK8x&vLw4Z6Q{O)JTkoOiC1mV1?vftFFc>Nhy6<-{xcp#4BG z(S6q$c0 ztHR#&+mitYy*XW7fpG1~r0HpuUVCV>P03=t{X(@&{WKP$=ys1@E6VHXu@KODc_;rC zmMm9JW9M%|8Z63ZpIV&G*kgKLjWk{JhIG*UQ;m}8aE9hK4JR1njeI@5WrGxd4r~Wp)f0kb-lLU*6l|NHzzq)o;|lli3|__{5W9&2Oeb= zk@Sn$ry-1BY?rpNJABs_0f7gCpc`5;|FJJ1y%~V+I;f7Y(trvl@hTkM#RBHUFD)-^ z{tEUz$r9(twHy9EcrPjEtrowrL+o@_j}5}xZSq~|=+FuCn@_J`>c%2ln`;?4$^Y9$ zJA~hLsQGOQRk{;QB)@1DNyu8UVm&aM)E65rRgS)Mf2q2n)(4W*asWXV0lf&ot^0=M z`+9n)TL(;^;1WaSbWV^cqw|^{{B~pu1KkpDF=DZuaI{hQ?R1+YN7iX{-&D|o-FsVo z*;47bkx{Z)BFZ*m>7_`!6<__;h82BhSb!-ubm=r#_UM3$;z*6{-y{km?#VOZ{&{2@ zuU5#cwlJ}n`3lUGG^6h!q?-lMGtY{7WCne-e1zKp1vFBcm)Mu2>u!+Zc(H>K-cio% zLFf4|%iupHH2#?dVCIsfmGr}Q`eB}rU9BQ;BZ{ssblB*I#JmTlG&N28wDb7C2VXh< z;MG}5HuqyW?uTm+7uq4wX2G;1_vv0G)FXeR=sn%EE@H}AX$+|3qNf0*~=C@RRrBg36x zLpQ_Hge`Qb9iqHOlUEU0oA6%ZDG%=4k)e-LXK1<#+JcA@txk&lmEUIGlwj7ww|-)z zAw2yUU4y&MmJU?7X}!4h14)=o7w|`N^G8I0X%;Xyej^M|$Y|aDC_O9W@z*U5Qtl_w+-G&&QyEKTXGVWgnHT zp>QALTe;PviuFA%jK%2@%yI*DTmmSZ#9nYD0qH*G&ZM5R;GT@koLObCF9v^p&riztL-agWTU)D5vg-T z2LC10Fyl1qNk#JoOqv$w@j5hga)M-QiMTz>l`0gx8hoA7Fqmc)~>~d~d%)W|BZYGfbm5YcT-O2I%#P+-<v(FELrI{`ToyuX^qe(=V7bUFL=Qfp-|pSl4ULhif9T&BZp(7rAbf17-r!{r`c}t@n5s$2A85ADI9llx*;wqA^qajuxCHDL`{9qwMR8IRnmo=>vPoXS1?19FFu;=AzolBAlp7!>Y@or~iT_ zD%zkx%G5v@Uawf~H=MI7ZLI`fprGq@P$hD58rcdoMTAnL7{ob&7wk@`6v68T$BS4j z7QS(42w1k_xn|;lwRjy#N)E6cy=eb{17Mg&F6-!;zG(ju7fN~uS=r^Dt)^|-^}}|+ z|E2JVm5%D+-k@+iIkGKGq=eLNAVc6%tb|)OJJLb^GP|MH4hL{KA_EQ;J^zvL^Y+IU zy1`+wK65V~v0INGc8!E!zDtO*Ec@ID0bt~nbUtshBA*Zuwm*-~gf6d*I5$liQ|3e% zkWVShFZ@i-bfD zTog7l;GR)B(Yu8npiYM%=pm+`R~4DpDP3k}m!ZbLc^+zCEM)*1l7p zHxYb3gQJ{)c+ff3iG;MNb{#CbI6hlWBO?W6t!#au5U6oh^un!Z-8*G`3FM8kbyM@I`DtIyIpX8F8X0T9B<>7{$% zEBr<|+~O3x<`$f>08|AvE`9uX4Siy_wQv;8NY-;h4XcWSt0G?H^zKI6T@`uIOn#Cn zUco;oF~}pRgO4)$HQ*!s^SR}xr^4Np7dmoq6e@ zH;OS9H*Y|$8%*_c(`aNpCRdKEzXpxD7&W`uy;9gSQGnEKQ31vbE_AR6VoqKAu8e|) z(?#a4rH2ekcqA{P2g0cu{>R*)8R!V4_9^I=UktZDs_JdG!$J;D9vSHIAA%P$_L;(0M7gN2GHtzvG;!k zJ_BSpW=?0>Bs!!EdIah|F$~g~HF)bxGZn-vtLEaVGQ#aT`eY*GpY|Ki^2%N68{;8@ ze9~b$*@mue@?KY!D^x;I%Pae%dM|;S1;d`zIzEyDn1W(@yGwyN9)KvJPJRQuHkcys z{_N$!mtaRX1YjX#;P?&vtbDMfhtK9HXOa~|^RAKq%e186Ljf*EK$7o-%t&6GR;4$7 zSnxb0l~2L6qiWMxPrK9q25p;wRzEZ(>=Pr+s?rU-X2MLei=8i>p`%;LmT4LY)qxb| zFmiS1Bd{DUisuf38h;@LZ&ei_Dg}OK7R!(pr%BG!XYJ7(nRy|#)vPP{=9g_NCDdWK z&(fv2Mo8>C`4q9zfAtEb*p4_LYK_d7*Vm$l|CjU^%ziJ&j7j15V$cY5R+4*J0M(Vr zdO6I6aovElA22nbn92k1Rw^P(f+6KRE|*7euWk_-G8ukzx{(5X&XpZh{>$v3XdM`Z zW8g8+`~2>Gv51K{ubz(bW|rn{pQ*&R+T?c!S06Is4o)0>KX)7VGA8y7&JeuJz-BnM z^9Y*&z@@Eh=whw6GL}R*WzCq;grBY>-LWm}-SNwrt5i6}tgw?!RY2b%DZoom;(`Om zl^uNZ70~p!gA4azEAsU1mVivxCe1APb^@uC}aHmitRy zO}Dk+oyi@^gz!VfYi`6Zv)3RH2ZR+Zew|W+b{)i!FJaYKGsmk6&?=c8Qf0yne#pc7 zU@J!C5HV+Gc6|zL-AFz^|`aAe#3TVCs-@7sjDVj+_2iUFNGCdnCpTK(=n&mW8h0p zhae}f$u?z@pgQ^?1LpP1wcf7RF&~1(c?LF&FT>Hg(hrJ5S z%vs>sl$M%bOw{A0@R9?=?q%`reg%ZS6yJS~P)^m?F2oCsVtKqP?c*K# zTV9FXX*rt*>eWq3`Ij0A2;=5~W@ewM2Hb`3#rpAV(Jk~JB7_7^dQnVG&5Lp8YhOWW zsI{%zN&s`UUpwgaidQ5-*pomnW6vFG%<_R#z$9FeU`#!AJ+xVSqT)gdl*EONiUzWq zNFWm={x_^J<-b;kp9H5 zwv~DNqZf7jhY@|W?unsX;w@EZMQdjbR5Mp%x4Prk65(uq0|ZEB-S|l2pLUA6Ea&ti zXeVfkW8-V`S|&SmcUJ=@Z7SkrC+lX*zE+klRwU#7r~7g~#5DosQy16RLBDf5`=YCo z_jcyV-T7zd(uFKm&Db&AJ6AkN=~FZKDNjG7owzcvGZTMY1ZPaHtI_WWHi$JB8_+iu zf!C+$d6SolZER=K&xOk`5(!9rrh{?{OIx*ceK(S98It_Qtp+mkhthpls<%gmtE#re zOunGGCRK@rWaqwF!XeWyoL+cy*iBUUCh^aQnqIf_m9|`4kU^Gf3vP$rpv@OA54M^f zU-R!YOf8X{!$~S%MgkCd08Y~76x{PWLEioy;uOm>c!0`>Al<1IUz6JxJ=+FvR$_eH zsPG>Ukj!~6WGy^M{Q57PV#Ym_kl1?aS^hb28zr;Fbthnu4fRdPvt57|{qyp?fBLGw z`NRH24Z0D^gmr5pfIqKiQ*M)tFH)9Pem-_;T_LH!?!z=|0>Rt=OvJvj&}-t6iLJv@ zKWv#%f0&fyHK170nrAq=8-XB66@0W(O{}`I(o7ui(|{?(LGJDYH!Ms-Q!eJ4;7bh6 zy$_mnf>&AYIib!#CyND3S5wyg2r+z59OlNSfChBSSHPK8P)YUQ_OnC+*u~x-yg!m0 z=v=n3T1Ag$dyJ2bPwgG*nldS8ou@xev-Pxfw>k?BK54%U|0^5+w=k)Pbby<}GL8^0 zls~XgYJ6olRnd!Ch#f16nPf$$?yVKvoO^<3VzD<_4H0_&&lXci}7T3a$qIb+89}_K8LX%MGrE% zy_6VUN5ao&&z)(#K6Wg>SuO&E9}wskwB{|lrJLY`%~HpD-Lqqp${=f*CvKy@Q-7FT zRwCDRF*l7d{zQNLOMm`1{?cc-sqFldiG8Ina%_>*g7x_tx`j}& zwav@ltCs<+Xk zkiUbGnkfP=`k$d~wak>H8D9$|#_46e(e=b;y2;;6ANnram*Q(t+c$Cr!Hcr@&IXAl*u? zJg>_UH!V0Q6P!j73BlVuY$cP>p+*SI+4MA&1LL~Y5mZvq zy!)skV0sYF;-6aS#f4i4(RA1K$t$kmTYq9Hea~n5t)-QoY0->M6Sc{Vf6@2RE4ssG z_Yo%PJ=eY+Nv=K8vZr(w*hP8UQqxniE^&-DK!)0U7RgG;JkZy ztz^AT6;(owT1f_pZXH!1^}<0OEg-iNkjULtoyBjDof^?36#*9t z7uhO%Gw0b`Km0O5=TX+^k#P2(-uKd`yO_k(#ed0PLPzm;NAK+3;9yzXaK)YNT>L)t zi74}~nDP_``Z&Ju9doeeO~~|ru0>D2g5Pty_Z8y11;{u<$e5l3|LwJz_el2^ zW-Jy}g7uSs>{DER?gl^}Fhd?PL+C1HsBw0&m0VDwj>i0m)tQ4RqK+??@mIuKlE(t8 z8TTmoJvfP2ce7RsUranL{-|`=M56wil0r#jCP+xw*yB|VfVt$bG6-Xckbc^-(FAaCT zs+^ABQ`zKl3YaSA+bR&i=6*&V;LdAB`LdC>+DyCF9&O&;t$KNP+!>z;8g^)q>}l>g zKc;f%w<}9wFouMXd!A3BEwHy9dsjRre=$^_CWrVdhj35XiI#Xd{0!`&?Zu#YP!kmy zt^+TCEj~5Io77yIR?E5RleDzHS2+?W?JN^QiBmJKyNzD>S)`2Q*cA#f&3BmxPe-h3LN*NWyby}}8%OYn7PO&&7}7-F2X$)NelU56t%r!HmdF_Mi`2bS!0i~R7N z);G2unl=!{efN9+-kuHntVMKXO~EC3i5_esF4SI7Whz?>rg_Z!Hh+?4CcimNd~>x| zY}qA6bj8cFPYL%MMa!8)Qe_K1<9$@M1WvN1ZJmWc^qIwAR3{`-ZkmuR4iT~ zqIDx+gi{vBcXJ1K&+zQKaGhE=tBJJS|H&sE%=oKk!C?Y96L;HQti-9`G#liGs7+M+ zNKJ=4VBJH55^7t1nZwB`t#bZ0#?h2L956G(1Chaz%qhG_ z!f|B$CK8XXc%xza5vlK-e)yxva0k6 z3fnrdKeGe)lfBeW##nawxCH6<`zbu|r0@opBkJ2UKF@*QY^7B6z6lK`d4R)GDM`M4 zb7j~5Dtc-W$0F?|iJm37#&kW^8pBCAM7n$WB}TW9^vSK)NbO5|k)5k*r5P7HV7yOT zw^>okG{k2H4!y%%FWfnM2M|Syd3u^HO;B+YS`lzC3PbhGf)qot`-O$`{i6&S5ZrI6 z$pq~545n1cXuEfHJVOTZTQ$oHT%DRt&$7u~vtjz&wqMVynhM2!T0my@NGsx^E7uAx zsY~?4WwZAdT<^8k1(8{GjqKDplr>!ca2stI)e1y1-7Y9xwO?uBXX<2b=cdHCDFA)< z<3SemG8829>S8Yr_j(QC65<$p zBihWP{VRmZYnJ~Ok*Ht^IOOY7{>4Z6JGy^l_S{o*Jy`WP%XRm|3?dSLL&9AeJS_u% zu6j5ga&h{avhVhH{ng92P{k^y$Dx9l7Vot6FSvKuzZCBKG-)kgmOyTx5bw#yrWnU2 zBuHI0B<2%~)Ag%PJ)^?d{@uq|h7NONk+qusVk_D9A2C+fbhK%V&_|uB#p-oW?4%VP z)*Lb!6>0m;_j@FB!Map@UFYsJiHRm-t?B?r+W@bv$Fj7+nnBwx=bfYVUSq7LKPR&>s&8Ux;!QpwrkzV43JLPp3A%e5pg4@+z&C>48De-dI8b82< z$q2c8p4E)o4D9mjyCAK zAAu|lo-{U}B=Bd5a4(Mr>3jHO&f0A$0U(A&5D!uBWbpISI4`@~B)fYjzOZMod;Ohx z+5%6+C9i5#k>3jS!XdELiYa!~!8(TVdLDR1)_KBoQS~-Eo&J(45R&%Tg8`(?VgtyABwI~!?soT}}v~c@sU|>%HwR?UhJY#CABwfz?Lze)q20ES94wL8tv&qNf_b%e`JE z$l15;3?(g&UFSFc%Jp7&rG1t-C6`qI1Ax3ZBQyIm_bx7C?T1~`>rEnCc!-p+v9pOOYB*EdtZdhYow)^7wQ{THv+Wx=%b&@uTD)pJR5 zeIP17u$V73V}n?6IdC?*@@&oM@eV-#KqTAL3d_@6?I(XR3T#+T?P~gShtxF%ie484 zB10K3!-xW{wnj2yUBjA6F1LT7zJ%s3%Q$0_t~^YSO?PA8t}epn4lEG zKHe-aR?Jh57o_TNFAXsnr_TOaIky}ssuCtslukFW5Y+TszLM!L@eaCXjuR%!72I1j z7QK;NXYQ)aEv#*}!DrneWM;B>e;AJu-sydexK+E}nGVc6SNctsxoZI0en8MKCT>j3 zcB*w?#WJ~;&m}H~&tM=Hy?JrKR!htL{rzEg};!zE|8h>upxtIaPyvOBC zaT=Oa3qNwN$Ao34W2cWw%*r;-J>AYX_L19dstmiig0;jrf)kS9Bg-zlCv{8)ZCE^< zF@LP)}1Qe0*`48p(9^g<5R03gW*Se&zdlIRuVKz{t;Z4{8)R z3tu}=twercWXx*h=z!8H^B(zzFo^N|qmv>w^!mj(Gdl2m= zWfA=aQG}TwwoOX1Prx-%lSl z+o^EG`a$q%H(q0DomRqF-6fFPh8T{YWAjOfm;Z4E95dr&ax%PF91}V2A(wEet{V{3 zW1mgxqC=S!FifI7#s`^;Q4uHD;rE0u;;3~eMi+EtgHJngKom%lvu zE$&wWEI+@I0f;Wbzn$lrA$U%Vog~IeA{d3;w|nfojso}m;1@AhFz+=Izl`x|39g3u zE_&f4rBC5%#SGKEh3>hBnWtILk7wUw1SL`Vm(5Xnx1pKI9}1;u z?nV*6;07I2;^Gzrm(4V<6gbkw*}$w2H{Oo=m9zx1SseG@j}FoY92PDe7JI(sqf7Wz z1!?}#C_8>Lzq*06)7Y-^R2G&b!qzOTSWnA~vy;kIktec&qJv~@_Eo>kDv*1RFwNXK zYmlk4;j9eBlx(jf=#7<65quGbPX3?vzWblb$NgW(j6=y@B`GV)$icBf$liMu%FM_* zRT%uBd|*-!o6@iRn3~@E9=)+R#k5Rc?dQxb zK4~80hMR|0ToZH0l9Af>#!{+2$)+I)0+7z6v>cX>Ez+5Ld~^D7ycn`ma=iRe7k(gY zXF)V*eFPL3edyg7)xOa0m+jMbqtGOPwy5LV7X!9)D_JCxYXp=X34ZTo;f0r&tQC$; zMP<{DgefxiFTTpKG_0ga*ZIpOk6!~;K?>Jb7`bo;R*G%O=TC+hhMyg(7I%vxkhW2a zmMB3)+nk>%>{EKNth{ge&Z zpR87o@APW{qlwjFn=?H1>f2OR_+4^l?CEWJ1T5ni*)u+t=(QJzJNw-@@wml zx6=5j$fvh3fkKPex|Y{aJ(4X(P&_vDGTt~rzldzIYUH!^zQN1k+|t3vWB5GpSCGT! zw7Oy2j<-TbZvs5-%_2)=rV;E{dz`hXd8AN^l%m4FuwN^>v9YDNa9-nD z^w&b)iJ4pt>1%Uj`1$5ORU~+$)MGg&u>p0<=pxkrpyAp<`d%%opC$YbT4A)5%1@rT ze&-PQy5}VN&*=Et{_<|anhJnGR=J(S5%sO_o)#I}+{6pnYPxfcp>d{JFFXjnoj@rj zCxN-Eh+YC#4aurIu#v6Dl}7ed46RXhsbkWJ)GqXT%1hgDH= zHOa}KoA_vOa*4>S<85D*`zSi(0GAy!I&h2lof5KmQ&#ux?>6!Qk#wm8P7dlCtm5U} zhBul`rEv|mtcskat~Y!KpOY|Cz1Yo=h*C3t_QO%96Y(LY9qa3$Bh;z>FrpZaL&Sx;!TtvM_QL09;Ajwyo19V@5<<4v;+ zT1+6Ham<@Fkp17pP=F3eh|#7U{eTi{E13Uo$X5d)^%C?zt8;VGv5K0zwLJcYg*XvT zd!>QC7bX#n*+GHNv1|k8A%)}AM`S$PQ^7}jGud7pr#0tGW7TVSdCV)W_q4Z-_q_mT z8Mqiq5zbu}_;o(Km1LKeG}h`CRplDP`YV#Mj353O$@y)#EL^~brCq1kS2D2_L%7WT zXbkMRkv&mWXook?zKyn>EB42k;W&aAPr++!<8!_@8hN+#o0PN}bK&?)lP-}x0%b$g ze#T_fC=(Nil4MOa?KyzS)7Z&vzI+58@i!$NC5H{`SuHo^f2}a$GRjt4kTA2m3mvld zKOP^Ptj9O=5E~B^d=6Htxx8|Jn;{=>(w~UhtZKSveGpxVB)px!PW+1EjG{Y_aO8(2 z?qByKa`AIX#h&xAW=~U{-+U71>+W|}fA0#p~j)zEr9gB`Ez}c0q-ifv3E6R!) z(zGPc#7Uro0j}bW_(7Zg!qicF+ev?hd`*g(tJQv(UZ66DxkMv<-&J&8V47*Dm~-qL z5tpxUrbNP|r1b+|o<$)g>=Z>6FTs945S|$*AByvv<9HiloGmANYa>Eup(26Z`av{& z!s;i;JbP(ZD$KQ^p_Pa3n@M4hU@6v|%+er6N6RsIccp%XxLkU)Cji-bt7~;MzBWPa zUL^zKE1EFKh*j~N6GeA%V=7jo>sDRkfo>H-rJ0SNrjHb1>GL1iwe3+>dcJu{EfDLM znt7pFC5OhZ!;GMmUuY-yzgi{AuC=NEMay$Fw*kpU{L0PL+Nrafr|_)b92C|Pl~~)` zA)xRKD2;+tQ&zSf+QQ~liw%5ORQE+?-+2t(xFNOML$bbu2=B~?B%nU-f!|oK2`S9^ zFi9SUkw5>Es6QCjA(FL0R@AC~+rTn6I(_~}vgDdk+f|jb+RE~U2yj(l+9Ju8i6Kn0 z$M{l-GxSNY+5%Lt79hd31VZ2VaTig`zc2f`Qn2f~T=;_L>96F_jFs9(4;OfH;iXQY zD3xYedYaM_{9VxY(#Jf?-IWoarPtEG)<<;1@RzcQJJs+yu8#&&GQP_h-Kl%7w#B7* zha+R_gr?}{cMyo;8*^5iYQ6om}yV{gqGBbnr0;s^#?X+Nd8qcX=>XhNi4 zX7t!fcLw;(%(@NbG)K0EGnVo3NE952VlB-Bfh4KigEeB)e){82ONFlH2CamB7g7~XtGe=jUF+9^IRrnW^ z{ClGNEJeMCS*gyy-C4-xN>R}!e)ZB=`0!CdYcm)@!kb*_BUVf0-e3WX&sz-=G33W0 z955+xS(C0T(!a4^o>VlXb3rfAb#U%}ri=W;A%p8~#z!eOmv#%4lOYF0V@`5|`W_7q zypR;I?=I(~KlZ$Mc|~BhpmI^OL&2l2A$f#j0foeG(fU>x&|u`^IS5*1r6kG0_;GJX| zrSz*7O-TA~zYFcJIT<7kZ?{<^+qXiOE6w4}(q~jS9!`pmR>JUU%dZB7Y{zn`@P)bw z`9;@+sr}$|qh|>PZ=|Ax{1c%ugX<}hgUMDFt|IOe`~1)rW(%l}Ev3KdwB%%!)SSQ# zi=l50mCuHl-TG#D(l_X}6$?7%4UPm?xG(#8V{34YDU)#-b@@V~3v9>iIqg{?VGEx{6in4jNsi{)m znG%i0;a)k5CPll>%3UAtyJ&V-TN2of#7?I6oNIroV>K-I2awjM&)6@II%q(@(mra5 zUqX$(9EtdbPdZG5;6EK?9reY049iZ^mGJ};b_HR7s!aYtz1~51+QpikjVj(xlqIZH zJ$pvr01AteUuITvyZXz%`XtGc$|Wi+R(iX+d|O;a?tYYwtl60pHBFXm>e_}PAvJvo zsfDKV{8g{G3`O*HPhFdt7x^3fl-1DNP2UeiN-2R=3~vQjE!;bZCNhM3mT)!eA9r#+ zl%9m3?-7g+qT8CFh54H zlt3sD&m!Kaf@JidPC%Jn-}%C}4+nH)kLt1nGQD4t!@68Y10h={H+bM+8>Jf$+Y)%OKHuZQNPtd9CW z&|;5j@#fRQt;sR2&=-M^(fo5RBNydpXmZ<+-cN%}UWQ67UVW~n54rxujlUzP z`-_qDnDz$vW7%XOr7GfC=|*;8HFypPmp4Ck+rG4WN2?ZeU2w~`*XCXmv{o+s0xQ?b z1^Q3F(5$1y#ivwlz_=KA&QT(@5d`Ew`qsq?CM+{5S)CbxWgaH=%IqG-WI{V{f*|%o z@QOK83hr-y%eaH4?+;szf4cczex)-Qny~w6sLkDGEWkx_;C`zb^y-zQ4SZv?#tS#O zI+ZV$h7o^jmTtV{qiJTAFPrqHJ`wOO_4+qhawB%{$zp8Wwi5nS7z+RuSg!u@ilz2b zVz~k6rV#>^WX<+w^@i=nTtmakOIP?ah2DiMXs@KjDargH^JhT=4DlJ=GGW|{(X(k| z?JP_LvXI2*#DC(TtY5b^_(~y{)0BK7s}%wedbTnOIy@Ke2fk}LyAQ)MWX7`+VZ#o&eTw-eNKVD^ea`Y(G#%CzY zpIf5DWtH>wNKQpivLV>Dcf(pEBvqc7qq!9iF*;nf#5cZD{0F_m6z`W4PzBSxAt_GAyQZH10Q)H8lBb%zenV_8@(^;kc@FqB88{xY z#Srn^*i^Yhw_QbN2`lx2USp?<>w-1Vm0?Izzj@g*k?)JCt(IiUAl-ag#deGb#lGf= zj_`dto!}oV-y=K1`;)Tzm6FF4R5Fs20e+0EltT@EC{gM9Hm4}7&tnb%>nRr8Ge6(W zZ6rig^q?B*eAdys^7cd20zgaB%&a>AwI3~uw`Jb&2W4Js(DeF=$Kyr!kE>l8-Ml?5 z?zkEI84R>YST%{{N?rb*5_mrO##!~c5v7_Ve5)(y(d#Q-?h7f{i*EHurTHRYVhG}W z@Vhz2BguKoQ^9wAYV}}ewKi~VLSDK{Yu}@0AE?P4rfCmXj~0cu>M$?n~!i)_=(gc zR>C$qyyOday?#jCzw|ek5G1XyD4PJjk(5aJeCMlGu7dY$yR~{E_lVEz`dj&!M9vAH zy)w5L`c;{L^_;O;{1JEH*s=BIgJbT%r3tQ~KNBGthust00~W)II!GjIDH!HLQFmGq z0qTq}!wiG56g=j$Jyb|2I}b;}eg3E`Su_~_=f&&5PV#H@Om{jBg9!HenKEmVljI;_ zG7J+Sj%CiO%rFr6%ZT$w(ioWAaf?Ox3*%# zPfL^j)I0ih;XC2h0)O70e}38g-tZMEbJ@G|cWVZwh6e{lnmoqQfm@x0Vr^Xzq~I$W zSq7$3zt-vJGjl3<&q%J#&iQ0Vsi8#iyJOD^rrhwQM$CNppu%Mp*bfs+1d6#>-}yWO z^YyGXk(zYpSFEUWZ{p@hRGxa`DET+L_nS_#8px6v`CU$VukA(o&EnwkQTccA)zHsb zk;4z_gWqIwuz9vMXw4_8NBy~ME6y`2U^)-dyc)JX6+w1zZT@%tyE?6RVMaEE)#`8@ zPm1)?+F1QTdaWC0^AOi&x(A)H%?{sQo zmVU9T|85x}=^^V57blf%CKIWi#JB-HSqAY&fqGpjebP)Yl>ipr*tY{w?q5q`NClJ0R#3^%<@Zr_Hu`99bGsk+ zN$9S*)FcB)f(#S8asl-1*D*(hdDf<;xWk-?$efBoJL<7pa&ih@MM21a~ML~W@4eJ1|w>AIuSuZD!lGKs^DgRRg2#na*+i4B$hND>~a zZ4)f6rUaQM?x*9h6{-iGeui7!8u`&)R~s*Ey^TXMTYuL;>_-Qbv5BcUIS2Iltv2V% z^IHO?fG2)3+{ixeBrU%^HIxGeYBUsMG0Dj@s`+p)XYpJ8nb+CBo4cl0qZ<~D{2p}1 zTZ_??-qC2kYP~$5lj_;YjX!9|nFhjG6E^uJ<{ka6*j{aeI)GP&++=DAhCoyj0a8Af zV4Ejl^KS0FA1`jb{TO~3)hotwbLIQ=x2F!SXj*PBig-4}9l1T!&RpNeq(KuP7629X zfzG{X2EO<_;$xR$_+W&3Ke8Sx(uQ{#7qyHV$I$GTmF8ysCm26YLcJr(WPcDj)u!d? z!3p3|3?K`XmM)-2E6I3gcazdn^#TlDb!_A3taEBexmrYY;Qe#=4Zn4ZQKo$|-74tR zKzz@l{CLhWdLN|AHOd(c5HQ5DvOn^bLmdvulbo?Rg02aVg3w>eda!^Q%S5|>o6l0_2jfg}`$ zgQFl4^MI0ve$_s3TVC)j%YAWd!gAW3mXLZ~p>`!nl18#yi6$bw$sM!b#w2ffP?!m2 z?+#pN6Lac@e^(l=@&rbmhFXi{Pj6)+wM{w_ToClc^vRKtbHSX7t!vjtZppo9&`abJ zY{$6=x6|E59TL+XLcDzqvdnPCmEEQ47S8O3Jq0>0pmypXZKJd_9GvsA;3Bx5{A1#Ik1wGO&x`VzV~B zo0W&PL5tz9OoMsYx2nKhGa2D>uXP+}UAmq80MkxxUsvjX8dz|YR#D&_mq<+ML(C*s zYVe#H-v<%Wiu+TVj`N2GNWDpQBpM)qG$ZOZWk!dbjtuLN?yH4{=@s88`L_|^1v{uw z!oHbhoc#70|DCnP^F!F4J3TV_eW*!k{AZvGNb?W!~2%|B#F zFS=CG>N~J~#bgMtx!(u6{c>kW>-bK-VQ^1ABnK9X)M-y-jJv$w$GGV2&`8W! z<(b;fuXe|k?o$LPvWv|(!oNqDmp8OQm9vroADpPv78~JdGGm4|`Vy?xt>Cm=)U{uv zU9cL7C;k+7*mh4k{%djyl^3z(MfZPnc1P7F0z4earI|(^nLG+Aaj@SC8zKE zVg@l@b>l}g0tL*TZ}NM03&0||RSyzu=bv#3l~LY3(oV~OZwp{@zccIT&BF!NcY~Iu z9SU!x6%V@PmrUNfs(wbybpex~8n%x!-`nzpEV@4GnmH)*j$bP>41*!*24OD1c`8tE zZoPGc^hK#2aNyOG(k$aC=CBbs-qH`KMAysVNp_JEAOkYY^D@_fvJ_6*o7sBVNhR8W zFhzO5>lYBZmb|4n9I1G4aUCJP>#B&5o%D|0i`g9(Hg~kgjUM3t7J6$KKS(hOmt=1) z=Yc{>+ybF|CV!?KchD&GF)ZZ5k;84@8%U7NoqhA^JLW|((K4!_GF-bKozF{2_WpIJ zyKGX!8+MX*!mPE?lRRP9=u81?u6t}e_y&>=NCR(%*zzowLN(k7 z{QUp4yhpr#-6+vvuQ8sf+ih}czre*SfKUf)N{}uY$8>Jwidfzg_2cH%L`3wZVgK1{XlKm-#Fw12^^{Ze!vyu&yQh3Vyfd zQMH*gbwKD3NK5SL#gmQ`+1@8Tio6c80)$@S8o;nCqh^2>5BUoG*0yWLvcj7>yXexW z!`WMJsLS8)9$~-LOW2@W&Yv}Jc~GS)e+D^==}0RckQ}u1?B~0|h##^C&AGn^$8e390Wr z|GD|zPSf3&VvucdYn{nQkzD+jhb#xORhD6VKb6m(mV++B%wd!=@-)i47s&_t<;I7` zfQ2kWA56l{%JN>U2A7<4j}-IlLD2T&Hn+E;ZM=Sr2fp@+u1S<0I;ZoF4lMVEj#Uc- z-%uLg{noMH=Eje@0aJ!a+cN^fDOQ}bvF4RAlKNc5Cb28nD%aodT!S!Q3Lp_SO|fO~Da ziv2$4-e_j5tUjrU}H8&is1beMSAl zm{~3R{6idX3)xsWVs<5yeiPkhm>SjziH0!q^(Y(DPOIq3Z{em@k{d*^*gDR=XO!KL!#;op~1tb%jbTyAeY@6WM{ zRrKkmW_CD4Udo(emk7w=5W}&_E<}bdJ~c78wUAWto1F zXMvNKwBnxKXiJsuk-?;BgQ)Df;KtGnODH95qd6$Az5AS6#M9hJVMY2fvAqX(uGoH1 ziXUX;K6JcN!}*kX_MX_P`0$s|0?z^-^dba}a=cKG=V$24EN)buk|&D%1eGi`u}<9z!(QlM3s)tm&cy>$I*U7VjKFmxI@eI4(@5s zBu6={w9IbnsAjsO0}+ueKn9%i5zG3l7)~6lo%tA#|0tn$;q_o@PsJ)a1opSA)y)$T zC{XBFsUU&r3qp9hcbg&h>U}d8cAvYB%iNmc4D(?1ad697i2ELn_&#zTqR~D5f$Prv z2ZZKsQ(&d}s5J3!8Ih=BXA`&jVKsqGtKqkK3wAj2#==gdon>k=bAU&~e1Oli8}EWf zQ@9dR&5l}!wE~jh%+-KFIp9$BWg-9R;l-%gl_brWS4%JN8UF5-IWk%=>FU%H%eKAq zOQv5+Z|k9bBQJ-lU7Qa078toO=&^n9>D}M)twyl2osGtB-RLS|@G18sEu3zl?w-$H zT9~w@(*!98FX=MXxr4Sx-*vAQDBvn|`V3c7{+zG)WBXWP@o#v%XZL_S|LEYZldS`S zxjqa5@hsme|4Nn&0E!2^jpxIu?|Fq-k6u1i(4rKl|rWhe_PP6-g_B}8p!J@op{8+DCv25}V0r>VA& zEIAU(KU>HqTKv3HHg?a>{&d|>Q>f(1aF7!3As>>Sg&c)0G}m_cR@N6KxB3?xX^}e- zcHL7#Y}$u^TRpxa+o8i4;rATac7^L;>97|Dk^bhXq5H-whD&XY8#23p`!9jT5Fx3| zn@L%sU*Q%Fw6W0un`yjEc}acLcz0snydw2EHW-#Wi#LFW5~CqS1oqsBV0!@^sszZv zj=`Xx7;&tuQPiWlHvVs;Rk0yCYMy4=3e}K7BnGLm#i)W;F99$9ydIQnK%Fc)Ih~yu%xZ!%kua|06@i zzqsMQOV9rMWdGhbAnN}e_CFc?b%XyM?);xp{7)(VrxgE*8vmaSqnkS7g!V~hXHHH| S2{{Syr=hBI53X$Y{Qm$0W)imm literal 614501 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 z zVy{%oRLbyD(Y%c>MT$=(F`aN#fEys!wT`Dy>Dp=AjA)Ec@I1iGAyc+D;UDo-X#Nd+ zBwrCKy(m3sS%tz~TTh+YpJ8NB{|ZjCzTR>uyDr8g?*JjVpD?9rGo;D``FBzjrW2ob>ey*?zBx4F$A6P{#)v` z#b;=vXrrvVB1?@1Jngwf!G z9-e^&e?(IZx{w7}%Hb+E4JUQJDbcx_-`iw>0CHM=_hfz8$V03at{0+r9&BPv4S~2o z06V0AO8C;#W;6I4J&`N&b=X~+0bM<1@B!h-T@+hL&L5v6=y5bVwKF0D#_B;)jum2k zZ(520P+ER@c3QWNDIDFOzQV#Xlm5`IxY|J!M;MgzAT1$oXyEF%p_V4=4W(-)hBTr??eRnfPwBfk} zCKSor&YXr$S@M*zchPzey?0aEl1$Rfvwpm!|9DF>_*kn;EObwYH*FJ({p6 zKWU%A$IAV;h=QEO3&1qw;h>zCNtC-yy84m9pgpV4S^iqIctUq0+dlTOt$?z>y zk4T(bWehKUswd;N@5h;=p&%*KTqAmP4-MKE^qA%PzdjP(mkKm#Jm6w&&b zV&(8vb-<3jv|-0VjqZ=TDJr z^cO|CW{H>_RQYHgcIU{&WfQMnQOITAFF-U+QQRL3vJTs-EC}0xQ`&Y~C`lzxOMGOC zq-*2&1Lj=NpR}t{3d65aoRb8DKsPfolEl4CZ(?`u&}6a$%pQ-zSYKo*E7_O?;-OCK z{PzmY$PS$maIuy+UI=skl2rnOyA#9LVC5txX1BkR=QSga(Rvr?Gx{QqZ7OL^hDaUW zD8a?Mau?N(?26u_a3z&SVZ>^P*2&ScIX#@6xAboUFXyHwgej|C187^l?F9zvRqCQ^ z|J8NilE4=EC8mloWdnqB0}MtqfHC7{%6IAR!{>B%YK%vf}}S`6xF`6QA%XAuOl z9^syUzW9^<`5Mf3)RWBBnomy?Q3{&Ov^eY!!4Y2sm?IrD)F2+d&>>It^9wUrvh31pp!69rsEY!g*AN#9 za$^XG#ea^H!{{pgigw)mRwne@{6ftVK?t2zepf$ci&Cjl)W{(Zz^-J9GD1Ii-h3mN zCzeH2`pxiFcs`yzo;@K5(F{okM$C*3^vBknaG0^X1 z?P}H3o=B&0KJeaO$Ho3XrNN1VcTEHo??Vm__pbcED)_1B?G`b$3PDU5)m?%Ri=xN*?V zUr}-}vC)DyOySuZ2vJ_fkvt*tW27a5CH{S@$MIrb*!I5cWB1wvZM*FeBTekad|E)* zGnIfu!4zBoScMj0H`$W&KE;aJsH{pWeU6Lg-FnC}pj4ohlLU^2=B#F*Eq%^nU~K7q z>cj}CTdOf7&JEnl96D|c;h3%rV~)>^fY?V(kHul%`~T-8YuNv{GFOM`#%zD5a3kw0BG=#ul@oxbDY4Y{tmBQQ|tyZ$`?zNcr|G|-sSZxQx6v?NHt zV7XQp18k)dT4>;TUlAS``-zd_{azgEKd;-(|0 z>O?iS90?;ghVb=VaE=W)NyY!^wqZWTngpx4uK)$*$xB9Ym^>@v_QiACfle2x+W~!2 zPmoeW5vKE=|K4zg?f)3G_%|*0MDmW?AvPi)A8G0j+XX9*C(eJ+}xQ~vsKSU z^b#4j$H$PH;55))BL582hr8@w;B-v^Grk{kid<6*bM=GzHV~%YmHMme?xkRaHDGDa zuRZtlE+L*o6>sWBxpQ2sD4Q6q@6B(f^j%khZedn&@`F}HN=72ubFBKeB~%7a2a_bD zD7kKe#JSL$n|r(EF6eYj2pAl5%``v1vg|kbQ{U?nH z$kV7G$y3_?tdDY))Z~m~7jZu~jYruWu&?V27mz)GJ8z$=AS(-<^?HRyqjb7WLzb$W@2Z*s-TM zw!0wuN|97nAR^P`Uy3=rBn}XEa*OoP@y#*=3 zsKLc_?j4O`{t_JP+g`4T|K1&YeA1O9T(E_ncoBR>lZOHJ!?&C`Q}3w>;aX(IqvFS8 zNDd}NY&i_OZhcXW?8N3R@(0fxDcK{&T8ncNZ+C-MTq1JbEYY#f?G1X5B*OAh) z^OqqyZ*AD1e$)DOz?8R|LlxabVeM)$L~D)C_k;{LJbmZri6J|Rr>cU3shj2H{!DeA zl$;Bd0iBv;e)^u=Q5G}n$hn-Av&44j1N2m^h!lQ{=9mmWz{SUCaA}I~R7BiB0qI78SHn!iZ!w5aPZrkzd zd9=IC{r1H%#^Q4rDVHot7 z#!dOHg5oq#kQE%sg+U@Z)|;my5>d<2^SXPNy}_m7trKm;B!hej{sVrfl~dJvzTjml zmA4gvZg_%rKRPt$xolbHDpsNevGPuE0=EtjcL5JO^&SMN%nxGbOvb$1N ze;LF5U6jAmbJzdcaYtgXwcjhlI$hZ-yNXzxA>kT+?%;VD!rF|EsRv7DiJ3afF~Hx*EirkK z5Y@Xn1SuI!z;egOM=jDg+REMtG5`OhF#yMNkvWbBt9?bLyz-oeP0dkLno~YDrTX}MznTzM9{4Th8qGUN$}x}$ zD?8Q-rY%Zlrg3^+-sM(D8^H?GI~_dU&(B1zCM1nVPU)-2p`Xd}jKzPXSWr2@|RP?=-{v7^CBs{|DhB?Wh5k(I!%;%TU3vUZn-Nj!#9!tNn4o zzkI#-R+a$TdJcfheI5@^zNut%W~kbR8(qpK1rrqW)#S_$ zG7l_u6j~3cpaV=+-QX1ApImXNCHB7O*Z|qtd~$4TdfXCuW1$Of6V1N0cYeMCPqbu@ zlJ4(FEsuN0o0qg~)E9CfdY-Kq zmyhw|hNxY1-TW&WebpnTn`YDcRyE25@(RYts(k_#GqbI}r+j=mUL!2x_}MZ%o+u4R z4mxsI9|QDdI@5b$P{JN?0A0+qN&YEie~ z@$4-jp=icpvNI{I@>yB`VOyq;y0+YE1n{2%enHw!-_to%!Yr=H(#(34Qz%)#Yt2)` za77>uB+rK+KYjzuO93uRdE#(+TuD4|=8<~4&PqID)`^UBgM5U5k&M_eSEs}A<6+!d zwTQGYWbApl>ASO0)!>0C?!oVe`eXfS$-#%#+loWv6bK$w!=@@6wyR5@~Gy zCLu!y9`f6}9iGA1=RUsDt{w`l=m-!MiB}X!s~MNdqgpO~?+-L0Q>E|qly2~WxHm@F z9gPuG_M+^u>un`xD%nilu_1qfmAeVS1pD7aiOh`egBBOuxuVueeic5G7XZtX~&H+zN+ zAh?U1B66K(S0g_0c|b^72cfYh+Y$N=?I|4^uXNZ|#pk}=dYjWEU?Gg+>eJQxVQZsm zzt3t-Zn()PWN)}k$LZ@u z-P5-YBed6Ie_Q{*7C`Odz#3MCv|&Ubnpm~=`XLLz9+lkx+9Ebhj6UHr(l|eGT|YKL zwK1}EH4X58U2t5!<>yBS-*IWu8Y$)x5YE9Q;=&^PCLKWXrQW9H=L-&#Kh5MxnpfQj zQGJJ(wKTI&%agu$9@C_AjK4ixjQ-k%v?a^!5WFpUdksmT=X91iFebLgxL}!DM;EB5 zX&heaCEN*2;LkPEbNYgykutOWFZg@ruyUBr6@&34%Gn!jH&9Po&=5vzoBHMnO**&u z2zJfnNfOyKn%Jsmr6^=EK>xG4NR~xq1FmGU^fw1PaV9%w^RUPrle`13-`~!6({on7 z*=;`#j4lecK<+u^Lw9~Ell(5y#s(7iZj((M=AV41GjZUlj^n(Xp)~aO5moA4MhJsD z`YB|d)I2kn`)!*nWSQIz-N8Al3il2CU0^m3y{sRG!KPldl+fXi`D>uOahr=zb8U9O zF2}8H{Hy!eJLwE#xapU`babV;qM^gXkm2|Q{{M)owbrXc6v&c!$)E8X9ejG7(7q{o zRiYF3>oG5v5Lj;5@J&euv~)$0Oa&*em-#mj->PE%#B31a?+a06VQs%$2ZFR1D4ojAvtM9m5Xh$@>1#eOEqhNKO14^p4y#Alw25-Vib@ubmWpH+}p<|h?Scq`3buf zlSwxqse?eYp7Lu+&cNv_y+-0fol{}9O8-q;?-GiN9ij8!RO{p;L6;?iy<-o>sZPPn zPE_>(BmB?a71*-X(!+;c^G>dI`M3^osKPIyY5>=d5!o5q#p@|oL8%_IH4j6P{}PEj z+GQc&b?NPSg&z?{ZN^BzymCz})E0e-4%f;jN0EL4`SA*+T~(AZ_Y)&_ zLqhaY68xV|v4z#!v=M`=@yc){Z=2RPMz-t(y}dDPWgqXZWyAlSTK-fMSmu2Jw~ry`}0 zdgTZMXOU%3vlf&EMP>CJM=J9;^WMTm+i9h^D(I`1OXCd*Tt*CTvEM{MQYLRN0 zihpKIU}EPXo!dY6)-ZlgYiE?xUFs7o5@y@}+$Zuj29<>i4!T(_7&y6<>2>v1VnKX(;GKYZFFrUR|F zOtEcTjxAn2;>$z)Y>7aKjY#zox5)%JlEsiZknNQca4R^5;oOE0WH%PXFmMvcvOQx&<(bc!nn*jtLKcr@$D?5~UL17B4c(?j5cua(?>#QrIVr)T;rX!45<(FjzbpYVZQSW$gY#N<3O(moT zesBN@az6)g5Kg!T)QUnNzN0U;hY|OJH=^$@Z-k>&Rqx&;mGgX`=gMS>*z8zxskvGD zDuP|NLcmyl>@U4G5gqlI5eZC1<5xYzPAh#g>takhL%z~teAhKxO@1KLKm_{qEDiMG z33$D!w73F&P$&<5@ma$0vn4S9>~OSZKyqDJ3xQgM@+sdo4O{Q{KV?F=GnoyLhNqrj zM8s=akWW@a-%}A&I{}MWQep-7$UL5X`&1P{n07_zf|;TMhmxw})7*b|aN?uYk8CN%7L!w~ z%@`{h&jZL%s=voEABS+qo~21t&vZWj>S&QZ9W1S9ivNtky27Ii*R3XllXgVOq^B^} zK$j+>fuTHI5@)bWQvuOl+2&WJK+fsZFYRZ)*T0oKF;?Lt}sO#mWj)&nYU~ z(D=c;KM)E4$1pu1DiL}E%1m0h{n;Lelb0KnGEO9z>9|$VgYxg9G=Ef4&^42MuQISm z6h7`~1}TY<{7z=ldj@WMe@N}_M8G1A6Z6w8xXYO^bza@rfXO?*U?el$u#16E51)>y zq3b4bD+awEvYy!T>&2Dy3x=?whA7q$G&LPLGd;|FY9q&^6Y8TgD|8nb&Y!363}p>A zzCC}-5}#_GJL_E#sqXl4{-Bz7^fxMLl#JdgGtv*Wgl6eAQ{3ksjIuPme6$E<|JAgF z;~xzSdSHdP#F+<(6$afVU8Xb~X54hGricF>D;{!~ScL$BR-{+gC}?O`u!}u;+N|-r z1LDhXiwGguYDU!^9TK+_IDSm(Vh*DU-_@-61M>fKzd zW2s~f`-$=wDDd>}CIi-!Gdeoa(l)g;0ob*ykCl}o zpf5p_{{rBjFjtuS^5sACu)D;OI@5YAP%FnLcbST-^9r%iWXCca@qg2i1ZSzh{A5qU zyw>n*n`JMrqndw;(^oExJ9^3o2d9JR1-ThIo$YHOliojE4IfjnrLcIaj`ThVU1}8vf{ELlK>5gl6tw&OO>->s8L2&+l9$8$ z7cX_C_wpnX+F=lW>hgm3@o(AEjwiqcW+Xg|ncj&u4ot`mYD)S1;r25$C2%?Id<)4TAtguw>AA&Edxl?NrNo>kY^FubF*dXIgwCNWqb?ILD$i;)r7#+7P}qurJZruJ@)eSC&p7i9!>Xd{ z(|K{BTfJx@`!b5r!r31L{-_;}TW%FWJ7}xH{Nj)r#CE0t!)2z`?J+Q{2Tv`Am{b&P z%uI3yj1lECfE)Z-IZN>Wk~?$}HY_H@liia(r(zpZm7gj9%COm>C^ES>)>FsVSifkt z+K&#%L{$3&Yi>gvy9Yp!8I%MSaA~}mWS))f_5RJi zme`UXzC??--CC|8yx1Sf3rMo(0bH`hPpF}JQL+NtvMkr_R%&^IrOah2>-MeKBNV#T z`cVE+NFn@qrK!bEUr!D*paS+`cqkwKBE%(Yru_keMT!_(uQP*TaB!#j;xe+a4vJJ1=_JEftu zy(Uoct+4V$IqK3~5L!Qg5CFf6?lprATmO3I!C7CQlTp^xLIje>i(k+zE+G>kYOWB5 z&Xd`<#J+s-oCQqu4<5%&FNmu6{);DEI$)$qFml0Mwl%og3jZ*0JGNiOcT;RkI{3RG zXK&Ej+t^dew{V8xdc~VuN%(*fPZf3zVZJ0Q2OSj!;hXBaI4Bam)~jS=pfmX=Qg+AG za^~U=-I)_Y3*DjlJk(J0>Q%Es;-LgE-$t|}oQuOsy5E4M-fUT|Q0u(Zzjv72||B|rSQaXw146ioh z)zRbIWZV=}g)>7q@98=?Z@&aJ#RyZT2F0_>75!ZOR%}5CJCEqIP%)TUSybH5{(Ob1 zLO;(o_6Ar_*(y=*3#bzhO-z1f5h-mU1JN3|Vrkb9O;KSuNEG33^iVD&%ei6v{>A3> z6qhFR?!&{^htbldXQQfVCHh;>-vMb&!Ry{0J>-mt*{s*kKcSoaVZT0SpJG(kSyAJx zQuz7!+>w%&2jX#)2Pw{CA@t!mEZkh&D0}n5X}%DEJu}0gr6jK1m)YbeR#}|fL`@&v zD4M%7{zx!-nrvxKxO7}iXA3VpczwoA>R;-c&$j0~wZHK+e;P|pa~W;b%mOX9S6;L3 zt?gf`?$Njnsa7&}&lZp)W?3n1K?i+Sj}&S~Yefl4zpfXx@Cp$q0X;SWi zeJ=DN%8~Nf4r(J0ZDtF>KRXtOkS3A{biq%e15hO4l0rppKYzBVQ(wob$gf`j<-ff@ z1yvV%@eJt0CyR1YC88FKFo9qL4BVFjJ1N=*Gab*X5jbe(wiGXo&)vH|@2EE!rXoj( zju%Ai`(AvTn$Kp*P`77#CN$CNX2NjlUl|4=b%~*ExIBI1-c4;u3iuSMNf3jPiSDA` z+@uWr&xm{hzEM{F|3-pFTBS9WSf`x|>KT|MOLT5tKAoPrw)ykPJ}CK{?RMCRq7Qud zVCF1SjcR!*F~RR0n3*y<`I|;mMcXx^9hihTyc$g)q)yMNU6Kca-Y*Xj)2@XEnYtQG z_RE4>Dcgyb5fhH2+27r%yCq%arUg5B@y+`1Zr! zpM6QeKYQxdH#a$FCC|8Z=tItj_WoVX@qPXM)}QQM&`MLH&EGB?u8-$9gRSf9>+B{b zCfM2bUB~CU!!-Q;S0%r`2a8&-(?9~6bx(X6gBd;;%QDDuG-!^Ok7&U^D_RTJRPigu zSd|>P%EK9WpW=GhV!nd+@Sy^_r1ORUmy9CiAX%(G{+19kz{{gCF#^- zq)RI%+9$uAsG+)IvF9uXzjM|FaO$4UhY30i<$m>FCHnX8(^}mu=6&q^@T2>`MDJON zx`5+~xWsYkLji6yY83V7&(azw<84dVVNw|p1=}eqPj0LGZ%)#+C*1Js*2_jZ9ergD zp#k=DcSh*W8=h(#aD3md$i5_j48wxP#qMVBJ()sr6F6I&aXY1|7l)K_y1$Kmw5aXO zu$sWye?l5LIr|1PGmb$=x3mPu_XOpJuB%41#lDQBzPK~nd|DruHQ5T-PZ^Dq zy{_2vObe!w3U+?H9hb8X*&`|2Q6ZELx#=iNx$g}7C3K$23M=<3^pQNa`1|MZr@>*q zz^D6!gayX$KP97Pho)7PU~%*TaXr}RJTZeJTmZlChKie_ARQ~(Mu52QWQ?M&>vIG@ zK`Tlo=sQA?*2bdwGDy-~cG{VQh1IzK;pV?2Ou7JsamaZTJ-79FBn4?vQPKD7Uwywm z?mhnf#rJyP_v+qW65pZx?(ss^C`+D|0lW+NX2v4#fk1$ouu#s3MkFtm{GNeq(dccc z)p)GhNuH*jj_^r*V?MHfMc4DW6W>YR&F*dp$gh23)jSl~5I_I0 zOv>z1cd7_Oa$%)1WWH=vWg=rGD%yywZi~yEh+SIyu~hcx6Y=Hsz1vghuVDI)U%h9% zmY;=9puJ+jvR`Uu3s}HQ-P*1MMqZ38P9-CdVlP?wT1n=dA~I)3_s`$;J#*9FSG)g% z5Q^K+Ca_yddRlsodQtIU1LQZ2DRAUv>a^p&YlPJxJsSdmbr)gSOsz>z^BZbvwP5FR z%uEm|cLbGsLdF!}dV^;+IyEYQeIzYmNxEd^xqS|M?nes#S@Ym88W5A0Yfkg&KVDlZ{5)?^aWJI@jI*2qk@2sG+= zp?>hp13T*j_nJ8c_yukC=X5%Px7T;e{AqZSJ}J-0InLC77gN(m;J%oO4^@6+A{u6x zvdBNj1yH5;WQ>Hk)F&wDgQB?dW|jkL@gbBu(d`Bt=rujXpNqr<6~20TnWIY24n<(V zK$fZK=fTypk+)$*0uHr;Vt=>(Ge(;;dohSrywcU(@nXn2Br0FUjZuvI)0_RA_pAW> zw#DW}O($j6XUYW8!cOxw=BzvmSn)H*p~(*~l9??-pDU>QR(R7!oWKxaO{GEk`&-}f?_p;xz1_>PC6lx@GVq+Vee z%W+@DkN8l)%5%*KugYs@y!{K1ZnOVZS^lp?-R7>6#ndHY0=1~vZmHK9`vcT%tCjz7 zxp`JQ1jDu1rDQgH(`5!*enXbO^tG0uwbt~$Mv`<16b$+Yhs+Z3_~~)!4OfJ)Cs78! ztlLT|!&=EN@Cz0x?QLo#ilBP{+&&iNDXqe-Sq?r^nnUfQ4SQ#HrD(I4=0Fb1xcz@7 zH?KaQLmei--Xa9)x*NM>vk3>%ZvotB(e+e!_AyPJ@sDsJy$qc1xFAsk{Iz?8zT=hR zl72y3mmre{Mna=xTRTZA(uZ*V^;E-4x20SsmrN|*bmxTX;Z&mkQkPI$D*W_t;^J31G58;vhB;P{&O#>Z(g+;;a+ho z_gudXRN=%>wX`)}E|S7zBB>tRKPn>A@Brvk63e!swJzzYVRM0I&uuz-Ma$|lRIHX>WK{4CVop4!4JUl`#KMfGoX zx1_~*S_R{ddJt8NbJ({(tFjb(Yuzjv@P#+_nYP5=i{nrn7G!7Y$ zqsc~y^T#u_PhH<}1X+*(5E68&Q3qG$B1Kr9dm@L0A038+684RB#;7eBuT_gM4Zg{d zhlo|<52$d1?v7PsRAhfy5)G}3mNRYjdZ#P_#f(}8{VNs3E*_HWQH|-#;!aZzAIM^O zDB4ZA%VCCgeC4+Sfzy@U5UHiJ1-J63b#Xi!ta$0-Jk11zNOQd|_r(+<7f=}H7PKQ{b5(^!6rbxz z3+I6$(-fOtQ+2sh#KyT7|6VJ@$sa)OChz9{$UWm2rJQ($Da&$FG6-9-*?lb>5V}TF z3Igo@Whx(W&kDW!SX)@#zykub96Yo;DGjVrsD<)GR*IVmK;WVlBnDydgg!?8CW5C5 zy=K*yFn7JiEp3X01I4HFWzyTYLVlJB^6g-z*pkc{-c^I8H{uZJ%Lh=Te{0N<@DG7Z zI0N*-Y9q;0xabC3h4!z&z$>~}f;BCp&CTDWUI>9PoP7_c7D;&`d5`+$qM4iZ-Xo2~ z@x)^qtm?!B@xjL|Wcu>Q(wlKciZ%8c%Kd-YsKc?=-%m1@4|XE(TI~%j40pTF);Ilu z%!T+*;rz}^MqXjXP%x3h$3a~*PRbbV3Q;V-2wP6My~=O9%7&u)Bt00WC?#Jd*jZTS zq*>eR*>AFM_oEW?m9Yb7aHz)c@@_}SE{btMQqaX9TyKi@PlZ~;LaUplWPm-h2m^QC z_d0xxlVtsEvYBV;38b1kpYR5`OfgvVc=B?Me95GSiSot4$CXh(=YxIre>O74w^dF* zPVK4$9T(h+{EWo#8AT_2#b3^s%keISzmpZ1pusUuPKhVQz>~s-TBK>++X_OV^T}Pl zkDqI!y3nRlJ{0RZL@#k2v3ak)T_K{R2VEQg-XYtp<~o}WU;M)`yRtVS-{T>?pl?{Q zXl~DlT!qyQy+qp?qH9I`uabYZNRAFn(wyq7JB+=K)%v8P4T*>!h}3amRG{LD0rUKl zt?){ijH({Eyij;wc_C4Ia*@*$+e?&hA=k>5DoaEoo7L9b*D>P7i#=O59tnY1(M9iR zu(a^wS~$dOOA3&q_*nkz#MI+{uThbwIf36SeT{UO8=sZ4wf%?iS@OF^h{tE}-*k?; z;bPBav|Vl?E%!W6$f**dZyOrgszGXxIASj%ZsB_{ubbN+6+G=DU4uZt$Vn&Xc@_nW zoQF-o3gt9sgz#oJr!xlVjvlgPd?fg7IiC_6Wfb?Pm-F0J6$VWN7863} z#kW=g%$Ts*+1P{SlWJ1?h)3^GbE=(=l?nK#x{q8dLaT@u7rA$d+US;cZ+2HvrC|>R zwVqou90`|rCCBxjVv*>6Ch0l<2&nuhxC9?J?>tRqRVkOJ^R==OyF0;0RP z?^Y?DgF`DR#wI?IPgs&&_kJk=I;s-H?st<9B}4+$Ps8{z%CWRYf4fZ{aS4^wlG#-> zRY>i-=aOgoEBQ;|co^0{5FKRG6M<*6`n`!pjoG#O`n60sth73)L_`60Gp4p9J<@hY zwITb?POYF8ZO(S$RfWm54>mNur8%W`{#dKfc>!Dg6Ty%djhJ*kuF{qIRzojQ{0`gb z=T8wA;|grbyy`a^#>HL`iv%DD)gtRC8vhjWA=tWSWWHRHBX9bMD3h~`IIF;hRMo;Y z=bxJ}<#f-Fi7r;4l@4P6d>n_Mlz$#>Ka0~rOYU}H%v?_L72K=%E`-ki1BRXR27jJ# z;&=Xgt1%)DT-HX3)`;wIOBO(4%Kv&6NZH~v>cUmjz;`V zxyY^OC&QWhI*BrFngL22#>d0v-8Ow&1xDe+ce$K4hP+u` zjuLaf1R=Fw$>w15pTAkug>KP_t8W2luY)))r-O%{1@?ou0EE<8MRo($Ic}wefTinvm$tfityoU< zpe89c{PkCea&r)FdGdIytAM0`mP}n>i=(BB?4}~sl5_({=L#ym?W?pqi9;%RkK&t# z+GCV@;A8h z`S)kO0xi-}xb|2d90bpt&@%V!45_Lo!A;rPMkw9Yq(TCSmYA@E-_P9bmGP+R^Nb8n z*lv4+%Y;^sldFRKj&}VpT~EuV3j+1u9c~mWg|3|w@}1OX+C=drk%rCJaWI<-kU$f0Prf~=B1SI?7cq;vU~ zXz`^X`XiR^lw_ACQT_`#`7+#}Oqn%d)a_PUm^!v>)Ht_wvvH%xum}Lsz$}ZgUK3k# z?%2cw36|BkWyKX(jh?e5KmFf%lf=Ve!9CgQ;PnI1BVa;R#uYrOPnuZkNRq_M_ zk+;U4l)SS|$0r<74QUhp5}sP#kh ztM8gsb0pxX%4i;`EpT+9NG19Vzq2X1mh?M2CflEPMs=Pg+ z{87vKeYY-&drkIBBFXil(8G;aXLjp~D09GvfOq`Ujfm#O&K0N5OH<(dnm?Z!55u_1 zRZ_?4qBn{VxJ@VO+#nZV3u)8ljB7s7)3MAY%B5+5W&b8^+e3-}lgO7ZRnVtq#Knj5 z6W6w3m$o{D5v$j9Df^smjY{w~>b)%V@{)!ic;^hYD5?Kl7>V`z1)BgG{L_{tt=3-L zb`#lr#usiaP{K`H{sfEXHqSD=N{**$R1(!WOkYd1X2S1#4f_j%g9?+8>BM8%xV{d8fK+1B6wM$t7^%JE{Lh$`$jJCv0-_3qGFDwvBj17?ZxF~FDvw22_#o^iWJh{$`x#W_5M z(a4phrx-uK!^r&J7Opp{SYR=SqD5j_4Y5WG6@jkEPL2j@)=^e(eUSf5F3$gwu_b?r zLDsZR&kU*T*!ik~zQ4h#Ig7c^a2JuXK_{4<59eCGS6AOXu+NB|6ELgirMR|x-=+YO%D z_2S}pGNCk*COHKRHy+i@A1pe;@%VgESq;GVR1&`Xdur&q9e?96XWNTub%9VP-2L?GZ_vSr= zg{3F5d<)^OXI9C2Yt+Vc*u42=VKS%&3+8dbl1HXFE$my#RZqdzp55ZMG3BhAX#+5O z9=>8&-->N1a42cS0S!^;SssgIU7WhMgZ@{%nQ>RO3A>>w6-;%I6~CnbjcrDj?&QT* z3Wz_`u5=3)WwFkk5$s-caFMZjZ7r1LzS#9g2@uVu8NdnIA=J#3NNWNB zi@KN)Rs)v~%;1a_b9!P31gshN>PET-R5VW{$ZUy*mMo{4kY+1D)lJsI#d)822T`gau?s4!}BV#f$zwngV&qTfgfwf!9cg>y1#*+|riWlg5h*=uc00ASZ>^zO2J2MLSn z?{8-h{VqELH3}}9XdYbPf#8fuA=7gUb$XV2fg?~q0;_xW6gPa~v$Lgtbld3evrK4T z`?a19^0YHM&^mAF2Z2}=<02~7%BagV4a3RW5TM6-(Jp|R71J?5p4q3iMrW_6H32}d zQ$!T`I9@m-&c7@dD>zXv0ug8;)DXcA(ohr#?WTO9`k&IUa{aYYhdzH$!PtY>#Q|7r}-W6L2y zlGOez10&@`0(rwzvbVaV*r_oQ0N4UF-X~J`!S+x)jM+jHtG6=%;7Cq}QW`sC#TFZ~ zQJsrN55P`BQPEU%gf8fSANac7R&VEpUtf;auLBv z7`5n?%#DO8>>^31+>I;p>1TkU5Q+clqzld37-|DbLF!sS*Su9*gUwLXngGCrY{7tJ zL^kGj(MjPPo3^dbbDGhms?S1~*0@yd5z|md2Vth7#0=RIH>=?pN1zS_@Xh}hebq~g z^DnrNzx@C&pZ7b>rP~Z`7bTIaV#L!f9~CJ>Q&wOqs6wQfj4g0_Yy|KQK!6qcs5l45gbI51(m41c$UkDVz`nrIpn>p4N;&1R21G43a>GS8igytMwoUz9CCu zTB2#G*t3qn7zjM$na?Voa^3aC#`;EumKyq8R1v~sFvGgVd(-mIz zNT$$|$+bNz&8-ap;PkE8I2ZuRu&Qs9ML;n|sx*<}^o3#A;an`o(t4_imnf9wIhFR* z5f}%7%ddEB@q!nA1v`KAuy{A$qrXKNCStDZ6j0K;&!W`KS|S_*0xC);0VTfGih$S* z=*z!g31W*?YHh4B%GwhE=wKme`6Uic#dui4VM=8*WxgNkM?eAAl;$oXQ%=l*c4JVG z74|rzOhz&pt4B3wI|8F1aLJ{Y72ohpujDG?jt6;O^ulf#+czyO0|6Y-o(~LWn@<6& zZc5XO0eo(Ls2>5o`xg`N!X+#O%d-9WP=A}V)YzT?z>Ff;2|<890^k+sXgn^RCFZ-M zZ3aC}iwwWofKr|=DOHw$f?W4R+7B?19<5G4eO|V^5xD+oUr@a0C11^x{}#RU7dvWI zzwFyxr7#Qw0#%%SaQO-3FaV-lNhcShkY4}{!l|}XwIM)r2*C@40eAEtCSO}q4N}yi z03e~tMug#*g&`-Da+0J|lSF{;`gt^=6|n(7){GV*9{m?y6v^+{4o9G54R7rq3daUX=yIZ%d3i2ET#~`MyWV` z%OD=Ng~A|2jr)y1BQ}MD25Iu%n3@17(^EKuX*VIOU882lzi=E=^qsPk9o_7R>MgX7p{l-_mnwad)PisIRJvN37f{lm}T6i@y(>N9F zSphHu1f;&j2@7&SfK=g+gfcv>7XbxWQ_@Z(Zf=y5-U$#+{8hk+CxSb-$6k45@qs^m z--tC`+z}{>$6xh?;$>g|uZjZ)4;80Q_5LGI=%spd-i2E%>?$FK_IO*S4keUPVx@Rx zKvx~OB#azi3a}v7N;9;<4jhItEq3C&8PH z6*(Pyk_$Z6CWnPir+D#KzqGjhw$Bvz-+!MeancdU5xDr0%ZlfJ>5auz?D$U?Cr+Nq z1;)yi`>#>P-4+MwzZ~#}Y~XN_eFs3C4vhypB#cTY>qUUgK?iFOw7~p&n`(@ z#W;MEp~Qo(G0?a8L}Uc<1!C?>(Q_I~h_{t5GAziZ6J)eha@o=72Ooc)b^reT^wX_x zDSr8Fzd$c>J(P)iW_Kg7XU|@~(|^tvKeu@F#h36>|0Bmw^aTZ7Y$U&1RU!7%NMtKr z!o^YhdKwercFcn@h>dhYeJ{@o%LtHjQ1sa@VjPxIez{5;^6d!#GJ|!ShT{Nb8(C#} zS|__a&hTpmlunROT~#3CyR$4IX>_zv|k}b-|Drg zTtAsXby-JHr2620M=@V*m$#s zB%Wm9oU($(8Kn&;gtuzrMkMC5$O=WwBU?zBk&hLVRi(6AM#b0Zlda3ktHsN|;Twyu zdg<2|pSktc;=X(DiGctdgKzCZ055?qEiD&&_wFtB9oSzSIdVpEn0DA2Kjk}l>J%;W zhrplQG!A2P5b^0L&vf zEz`MfASkLk3g#2;*7jEM$O&5BCAo9Yzpyy(!i%^Kh_Cqf0wQXyBFNV01;MY@_*@^I zE%Zz#Qy!E|EG9@u#a!BTkV?#s&Oh)tPjq|-0NOPQkU2Gxn8AvS3BX{dw8McR1`=HP`*BJ{;fGnE=lN_Gq-!cAqM!c;Bu zGUeGR;P;?m+cLEBJaq)R5lDSTI#cXfENV-u${}R?V_BZ_bdY&SLjkFybyY)FH_Py; z_@Oog$PVfl)Ie+u7%JGNh4{B80I2E+(O{9_fmtQ$ygCt(5yK8XsMS0FIL(E@mIVdD zOvzeOxt#AlQ%Feo&|PLZgEd)cryT(xAiYblNbb5HHnv7Cm-(2WTOE(+rn>kaV-7eb z%3uJc5I0xqxf&4w&S8rrY@p0`rL747qGMtEkhRocu$U2*7oR=lzE7BD4rjUuh=dUBAIQ z3K*V~^&r4^BPD<}i&W`)T5F7!R{k*{MwgumS*^v!YfLZdI+1{T*QgO=@G;m2v~Gz` zl&DB~p+Y{fRYg8ftICt4Q;tA20=D1uqPuFA95|O#Wm}(kHY+sMqp_fLE&(M}!i6Hi zYW*-l1Om{2H)GF! zme)HP&st;8NHhCc0G@keH4Mdhpa`l{}J z@3FGGUPeYlMrKB2Wn^V#RgGmRmaB0)*JqTUns{n=`mKtKn-|e0uEW+9*`HuW+n(Hg zn)YzpkbhHW3tfLk2c6aB_)**wOou&}EpDW%w=7N7_r(MKbiB{C=R9sN%Bsqcp|-4g zmauteuXw})TZBC+AT+E7C{tER1#Wg4@aJA^kYJqp)O{UI0Id1Fv4ZiKW}S;=E#Uk$ zkUCd1VQu1yRFkONQ_d+>C}xh+8A7JOl94N4)Hio@)8`&OKs4gNH_zf9=i^V=q5jn; z&!iP?=~MDEj~}F$UU%O&_~6y6>0jQwE>)p_^U%9QC;j{E8yC@6fBiygG82ja@!U~* zVb}CnE_(k8`-J<*^h3e7A{l6 z-~RA8{q?sG@oO2Awt@C{PaUL7KCpuR-CY~0g(oRreCaqH-`h((~ ziYVf|G$6)MVP5~%3`(lAxPEQ{r~zZ6DP9cciHa*?H?ZWbhmw zfiVLxc{8X$>0n!iykO{eyNBs>-(rUi=g(Ka*I(L2ThCf1p5>;k?X-MJ+WEi4SHmyu zNIq_~ldr06fD@-~gX7EVeJ7IiNvt%yaNK60b5<>u^xKf7??r$EZsoTm`r{m4kwDm| z6AL8P@Tvh0@9+=2-9wM>;wyO{{@XK0=&v7t&pCfgK)}124>&D0*~{FHKmX2Q;r`_- zSGioQhezH#CGZH>{nOv#i4p3=y7`NbZKHP7ry7EExyk!os^wMmV~=@F;K8&g!jS~S3Ci=05^&LXa-Cn3@&_ye~B zQLM=+wK8Ikl2a0qH`BM@;^lO|`+m0z9Ofd z5!!!jFjb|!C;0WY+AzMdrqK!7d1R2z^iKY-zJJU)WKTn8+(tln^Qf2A)Ij(B+6B~T zRt(4spzIIy&{huG)NbC4k z1HzkJpWpn-J4C%B^vH|H>6flsP1||(fY$QlfUo#J|I!Kik&9N)A7EAFD8Ipxo&IM& zzKu4osM4i>X;sD#>@bBZbTt;Cu69JlPoL)dW2pft|OmIPio5&VQU6@Z3ILx<_DH zxVMk+Cr|ORKa|XM{qrB)5}ZG1m~edR+SLGMGJ#w#7% zj(_{nEp(Azfp829^P5Yb$r8dipc9f$DZ<8{B;0~mL=h)i%t;rbU-UHw6qXYfX&~YQ zytNCzU1qtbEGS5P8|Jy+$Qk13hq2_Id4Qv+95*t zXCrR})G##SY;o(^9rRhhvhlLt4;U=gOsfN(WXv`ZDgd1?T9xB9iSbuGuz6<6bN>DgN24a%&(7!E&mXu-?|R{=7m zYEGomwtkL)^DSnvY0qUdmhh*DoXE-(^UP;@Gdtk_`;%vh1C@b(V2r-@%whV8e|TH2 zzEKz4AO19!!+DZGd?ozB4|LL+cAlquC%y~I_P)(nLd}QIC+V0aXqv|w4e>mfF-;IA}0+% z$$W^ejlvbwIH%I8MNIvy09cKxu_X2hM0!}>0-gg6c%6F}tdT#voFOcWz=}v$r(_5& zVM||emGGyu``rl0++xxfQ zeAm_4UuM3^I_F#7KjKNt#T(kFm(%~^{{3|HogVrum$9Ai_m8=|7?P*Q z^Gm}2U_$ekuXnrDlEyGm0b*^t+b00{w{Bb~lLEjCA8aQB%sSy{f*;4zYkS9`eBL;o zwY2`oY_UGAIEhmU$1h@m2cWT)Q^0egfyfkT+s#Rd3nsLVCID)+NS7sOAWD!?rXo2j z4TyUACswtjJw8PQLD?NVnT?Vhn$r)$nnYY;XO%6)dH*@kJ;KZ3?DV**o0d1zr!MQF z&tL+;p_^9&u$=z4PxJkB4LmXUAs;rp%A4@eE^)kmi5@%qJK4GNTEA=-JcdW?_zL@f z=M8tVPXMb49L|&pz(leEkn4esh#iaLg}^k=*|Mo{f_LRN&>Fr)AP*Jtt$+bO&cVuq z_fLQO>IwSTB`d;XeYn#7+|!3??0}ol+{0Ea4mbJjrk`jS_=>OK@xf(Vpa2I^-5 zkg^Xal65wBa#<^-crBrT7gPgf?BdX6h`z$re&zo>zl`S(zP^vPu*3alyz3p$>VM|h zBSGC4uU|s{8IQ@~DFLQ^@}_mvruXid>mh!E;N7?Qu{(b3ub-FWkM!`%a{Lno&Ux}v zcPkguQNP@N!zH--Z>9%cOI8!MEO)m6cIguUydU5{K4~T#T+ZsHP4sIwuA#ugb@&qR zSHMQWmk$rpp55-TJ>uIAE7}_6RrOoWSVsF$H{LY(iT}Bq?)kuS+0$?zPj1xtV}sz& zU*jMD^R0eUZ!xf}rYd>jFBqf@FzbF+xf_=$)uU&Vx3c7d>L;-!iV&UiPo3(%ekK4V zmSaSi1i*TAYQd~_R|77n+v`5q!c;EsD6Ryd1Q(~ssYIGDD>Y5_ED7R+eiPJxGRhMOvxBUGDoGiHRiLlA;0=@_T zT?1B zyJ=8ZY{@^GR(cW7fd;&i)#;b$+#tY%q(Mzqp{cN@uGBPx#*-D0Gab(3i$A`N9_IV} zkMiqxU&lRoZuceZus?iWr@X!wZ_&Gjp9tWKfBF^P4Ik^{@{LRBmMh#9G#<(8;OFI$ zUd3+?L>}5n)r@$m$|nS zdVb`=)`8p3UMBDTx#~3^6-J zhX455Cfc-VGp${-T9%y$hlXf;9PWaHKM`GI653NzJccfrxjVEbyWl;lhzbpqXkd7F zn7gj;KfZ6t=0Drdkjt~^L_s$QhV&wybhWlnGvD7hapENH+qaK?>lt1pY2@*#k%z5D z9-ja=Am(AMfsaKR^Ki%cWtl}D-Q>dK@=I!7AZD%sRxUQEw6HDUH(J>)xGx3&(aSdL zO`g7yGCq6vIUMt#B?k{;go6jQaA43v57AztF{7#{a7*hXq}1yZDV%9%IlN&hz&X+Y zbT9f3fFiOBR9k5*Tt1P)Wn`a>o{^kj?)+w-LDZ9ZKFq{Y~Le3!wWdv>kAT757g6IOsQv+fP`SDU2mhsEt z@+`1AWYy0EKu(xQshPI(hK*Q@WZoLcQoh$cNP!HTO=r|2@Pd{~WH5tca-PhL1+vgU zmIlzBbcr~No`th{;_isF;52W$`Q>VZZmPoIl7tTLYN|Bs`1}5({ zu5ZPnvU_CU%_b*8l#X*KWMZ63Cs zMI|v#%%HKiPs}Pj$Ql3xB_bUazxD=glE-nz=_G#v6&lFWK+_x%eI1g0wt{vzb60o`B;70aQz_Hmu+zJ4YEwl~B^3~4Z_VQq#2&Rqks znnRj_0Hai!u&}F9$#qzYC6$m27E_WpRhE-q{1zH0)j-mV(1-K|KfoGy@3UoNOJyo1 zk)7)MBF58Vk#Sl@74aNs0LoT7aBPxuP}qWtte0B=-eRiHD5+?~6-bt?fOF7*=vo!7 zvC8Fim{o%o)0I!-G~K339K9uK_SwXcm$%H>)ThWh{~CzwZ~I(CnnGtW9ZJrDSc0ZG zR&f4X{5~u3{i*2sSpkUcr|IBi(4Re0Y45WxK7Y+M3I?b)FzBh&McFm3l*e7ERpO{X z%P1g?@~QC2(5x##mS1{#SfS8@RErw0jz6hC`bXOMr5JFhdsUL(K$=m`8J4MHHEmc6 zFlP-w$I!nXK|Bx~eB=`K@moI=0BapF6#rO*sS^^rSwejnvie#99mjg+w4i;AN?R5S zXEi8APbGxA6k~*dScbu&`PcnBMnRh49%(-qV@X)ZGCu1d%~(O2G7GRSG~gze>WL?5 zlIbUzoVJfBj98sdNheY!l&^564P@9??Bdm)@*lG*sH!s8(FDNiH9Aq$c!G{- zHd_Jbr-4|_Asql;7N>y<=m40yq;ct#VKZQG-DQ{^nt$b=xn%%$u^Wp)@LVo3FJfb7 zkMV+k!;Z0=-Ao|ojZ^JbCW{Pi+afbylNaDL21l1u9lejo z5s%9x022W{q+p~?4WuY>{3zEsemMU{4GsKRUZfjjG60&ZmrMzagaTY>4J7ttC`kwi z`-=TNVUe5FxhjL#_BG8bxR?mh%3xbO6&&-3IK;jmN!rRO;9ND}X8kPE>s}`RP&$tK z4fQhtuy#_ooc)wuzjj^VmKg;L=+g!*6_k?gdqT0wNje0MxC+`RhbLCIFZS@F5d{hDAInXpk`+p2PYM+l&I9dkrLJ!~{=m zY+=*^ghl+NYJAm|VNB@o=O=R#I~FjP59N4(55XtGIp7H)F9YiQh2+yAe*xsG0iDEo zv#83YOQ?-3E!V;qPFNjH0LFXxOzlWiX{-fMl8Vzf;Vz)OH4v1Z7Obj|V;D$r=^Uw4 zCJT@iysNl#K8eNQ<4WHg<$k^92dvu&t2Y5JrT-l9}<8YGzr6qlZbMrXh zhJr~31kNNyYIUT~ae^Jh7&{j@4Ux~Q0TT_4Zc-o)1XZ6*cHD|0J!1`c2M=3}v-5}j zu>#~)esuK*(vuD}Iy&km0Bp+!u^CSQ8XKr_!c7GDevj`b-j2vBU;rvt7i>v!ju-t$ zHUM%An(ZQSy0Y|wI$I4u-#AjC1d*cFYNC!N02wAo8PXfDKJA#%_yt6%jz$0cqv^~l zl@d!ZC5TKx0V%GT^N0gxXDnC#?DXX-U7bHFrE+<&c1ZbE=EC2+Z8a6aK+=RrIXVCNxX%gW9yus}{*1JJ$i18j5c17m&yptpOp zuUPSJa=_Cxw$TJH+bmjyiGrKRH8%2!4zKE9f(IuJp3H!50Fv(xnLL$*K#UcBOxUm}pJkh|wAbs)w{Q~v(^-^DhZ7_8ssWG7*4tK@Ey9TMfYOEQ5c> z`H)*anD}|;AD;5?#bDAm(lyWXSm_qvHr57Hvu`!~LrCu%F(h&HdJ=1pC43jkSQ zJGU|*Meszd=%8|Mu?CsfO*saY@q{~*uj@Acuxzkr2EIaY7ZMLtS9YUmcIb9>t_N0L&*u`wHOQ+X|)_aVk?rf(17X~F$OkG zi^x>M6(W4oFV9KBmO2>TIa#;Siyf_B_D>D|;jE4$5H>X>r%M(e z90Beb!x{N1i6E&b|41I41o$F&e;~7BIl#3hU2>7Cr~&9y?CzaEbgOn}7%KtN|GW@r zxcBMTsrAu!XiHNUwY6YdL0pY?Pji!cXTHC&kR*#I)u?G&&(eLl0mXBRQ z&0U>A5=4)289aNFqk;Db=%f(k*r5pBAr+90al&Ab0^$eqJ%385WGH^}(txU7V=Ffc zXX!NzCnH)7HzHJB4W+RVG@&sg4H)tkK#m%S6^t|=DYT|j$aEcq_`k@KXX(8#mCWq!x)x4M2}ffG*{c&giP&E%zfQxS(W)Sm!+c z*U`xM2p#J`DzQ8g2)iI~pI|Fey?2B(WX04eR|ng|ncuX{u`#A!>bVYn72 z02NH3Bp)M^gMU2A*(#N&Ve?gS)n!1<(6gc>)^1B54)s$!U~~ zUztDvMzRRm8t{4)$1jsTzsw)q=T9;_=Zy5p`<|n9?EIHBx6$e0Q#3R-BK;(>jL*gW z2-e1}fRW)58XO(sJWFU(<7(RXr59=V7ne}W8voP>>Lc}l?e&R)=^8NAIWp|;>FB_r z7x}stQH~lg`el`it`VokF(Kqw=E94TEi4OPjXY`)87E~pFJBCrM_Gl8iW*Q;Xbfh7 zJ)#_52RP6zPex&Z%z(I59*E^?kR7XBopBx+Gufji4xeFMZR;Tu0zBId9#@Fw)gtj| zpay+BOw)*!UnUnU2eRCwek_;eD;y>tsE-KXTFa!xzn1{@N2AfO&^TdyfB$%W;BFg;s^fHCP{6KbMTr{YJ=;&E^i!<2@FeeQ_ zzj_3bUg;8fIMC_?sKph4Y|UHySUANE0v~1RDdr-PhX!Qiwt~D3VpIjY1ak!dnKj`D z-f-p5cp<4%_s)O^Z0G2a#!3Jt2pGg2T@bcT3}-ofObGNbLCX$Vauq12)d?k;o_y=C5H7zS> zU~G`D{D;{r-T<0sl6Z7tl=?>psI6%UbscY{lh5v?(akP!f68^ zKPsqY2rmyNZrPugg&W`){OtfU84xEV^=GHX&Vx5DxO(ClL2ZC7_mF~BOoQl11Hd1@DpU3(ri zw($ERqzXwrC)n`l3)#Wf*H+uY$b_^^9t1FA;Xbw5mxLwF&cTh- zVC1s-fOFRXCyy0?tN>cPAy8!{V?TsK9`3U7OJjH`U>u-|1c?WF`C}X$hii+gPu7Hl zbJTqZmSw=*U(deJFX|I*cssJ<6T3PX@>nF0gJ{L z(eh!wm9S$kEx+^}u_0tZs<)=Z&VG}X<>}h*kVLmh1x5;9`%{WoBy!V$*RPmFeljGN z!)LJ82&#Ve0F00I2A!vjXp9EXBm;i||2{Y2-E7c48m z!Qrb@kl0-PN6tSUbM-2}Ty;Qq?~6}Y3T0ye$KYRD59|kUj!En1I9(~J{R?PUxx(ud zkM_cWvLWSuI-cZk_xbrAKi_t76EdEZ!QRX(HVgXH{TBW<4<>qi4EOd^%aI}8=|3vY z-#KWfTUXxnV5}ZsPr#DKRvOrIFquH2HW>nesu+a9b6Msr*y1V*Er>JH0Q75h%>66` zflWFPY9FYt6##1^z#*-GM{2V6?N|LR@G5r|RmE$p)z`Gfisv{3rLx5N!y(v{HPiWe z#|xULdr!?N1o!LY;%&W+)Y8(T$+9tC9;9_}Opwm?fjInNIamlPAN5F!)2gGHP8PPF zK@OVk;&hJsN(J+JJIWIryqcr;`Q4Kp>bliZPLG&KL80-LzfQ0Qk9AWkKhuvZcV0)p z++x;&rzf6y#VG`177b^2$YYYI88gOl4NuiQU*Q6>f|^sb^e+saSZANk{G_i z(Z!9xcZghj=5sCCOWX+9B;X__m5+=J7h#Sx0R6_HoSkC6+D+Hz1R%?n zuu(aD?b@%3YYt_r!ZkK1&i|(d699W6!7yS>Yaw%zxgpsS3ph^==n11SWXG_i z@nZ=#mBy#5$F7peay15kL&_oWV2M9BXeP14We=rr;#m5JBbsg~eJl`Va=kQ?7(W~& zLY*<$2rNiR7HyMU1o|wJuWo*f?Mklru}tsiXfA9D4XJH|qc_eznFN5}+nw_PYG`Yv zK7Qd(3*QD1xezzYfHLq7fw8tGE`bAn*F)TRz6k$#@ z5NrtP#wMY#`qX{>OaRnq!C)SM-D2Ct={Qf3&QAj={bwjX168hYVdWo}1%QLxSh6^&3#jy1gO0B_ICQhfBjtM#=uaXtEwb% zrLWR8e-cS58UoJX%p_7&|lNizm_;JF9)g4kkWQdsn zxC#Jr0nJI8q}U|Rqg!zzGM!8@J6?{eT-CEiVNxMPGaK5rXmM)_!i ztG6U0@gpax@1RybyKuOY_Kx{pW zf-y_@>fFK$(LB{LVtZ&^1Sd?2NyTZ3OIe)2W)M}si@_OTvK{^j5_qZ|KohtfXrC_k zBTkn4(Lm=sM|uZn^v(BZ;y^c1-!Q*$hx4{IQ{(#O)O_|jTD+mleZxV#tmMKEa!c%g zkO~0~d*hWC(u+^NOe+SKGK*Wa2@KN&n)&K~|Il$-dh^+|bScZzfI?Ze)FsqMiBpKx z)>?VByJq#14Bc#~=pxQj1FC$M8T5}1tYrj15p@yQ`UJoj!59m+(gPf^?c%hNQh;-* zfmrdJ#^7gzBqN;A700oHz{`2-oJcIniUka3gvkLMQr6CW(BZgofUe8>)`_b_L##{x zS+YE~1W0&-9Zj=Wc`jvlPUAWBJMz)OFY8 zwEOSBM`yRLC4L`Z7U!h6CU*Y){4Ie)>lV>PS6?hEH)w}*8>kEaVJ7MjlgbkYQG_Z( zv&3n|b6kOBxC(G48c5kKRy3z$)J)2#!aQ{}0kGQ5uvQp#GH5ny0q39rd%_rf3y2?s zo20aC&SYUVb>2cU+gY8e6|Ih6X<2;0S?6DF0)T;D9X#aP34)fXIFbRk!3Ysr& zL!utEzJ#hpRA=lBhW2CGAI@KNZ=F9kX?$dq2EO?sb^PEYZEo$N=B1td#y)(0cR=!> zakzqS<}diIZC_7odMD__-|V1c&+evWKYkr8UbEb{-%kW$ZFse{G`G;1S6oc59z98W zpLm*jaIH)$)$1baAnRQgaMTyHMoRnKp8uQNkAETfzDS0dNSc`Qr!m} z7p1V$;?iS0#Kb%pa%Ci!pAsq@H5`ySZn1-VR4YJI3p?rf{uv* z^63UbFaWQ?wINZH;w4VlQs`<;V0wnO$!0&l;ZNI&c8(4VQSTR@qK!uuQ`_P$8WO5dCOOsfSeM0=9Kcss?6jst^fW-uc*9E%O=bk*@#S|u2RxxMn&t9IZa zOApAHu59q@Z39dMlAx967z4jgYO9r+@K-N{I^&d+O@ID2h#;iOymG=$`1D_Yn>HP3 zm8<*i!EU+ocW>&`7ANh4&L9h)tQ# z=38&2&1Y<*#fuk*-sp;Pj^9lJv;t9Vn+4_IumMRNw%*Dj69LdcR3w8%$X5g051f8u z9c!9n1@kR=L8aMIXhAD7>%u3-`w|(jl(m+HBT|y7faX;LY7>p8SGb<8E|(oS9R^qM zc%OfNe}5RNUQhrj{4?C>KX2l5A}GCiYb)%2=*xg8QIqHo>o;uVtM_JFzI6i~dSNH+fAMYV=ppKCTrA%V;Lk4@3dC9Pyj5g= z3aXz8z-0PTV@}3b(DTti(02gf?IPKnj#1#q!bLfeltEXokUU)+4wobMo%ss1t*uS& z*AEU38fWX66X)yFaOmpv)wyd7ju=K-aaNY%oK*JF3fOPUr_`>sAZ`NA$*dHK1H zB`D0eW5KyJCSU833-)OJ#y-20$^JR zrEJgvp4+KlS>CE8aOLr@Z}s!`fvxb@`|KOEuCap#$J{4+SqD~ z?dpINYdRR00f9A+8H;p&8i1m`o<-+IvL}TRGRtmp9+N!{PCh8Y8RNNqICs3Z7n1-C z_T_>)es$uSj`<-ED-Gr7a3c6lfL`&(`BlE+W$ed~G${Z|uIgCK#Xo419NxHgayGW( z5My~F#yjfAWV7Ftjht#bglYwTw zMbybp3E&Ff)?4hwlNj{h(5{fz0Zxv0{=RnL4rO_qMy{o%z1rtpF>YLPLR}VR4J%ws z)I2J*i1X8cbW}A4i#4Ew)gbv5Sq+l1)*!2)UNfkJHITJlhA7LLK`v19p@GNtStnD#g$$+j z${_h6KD<5`na0?8S8}#0SU2El+Qx8JpyPfqoV-5fr#yP!9*^~bmNfxD9rR6sny*~! z>H-gi;9^ZVT&?`VNPPH6YVDmRoaVrL$ElgW%7^Fa8G1(0*rn?Fw|*u7WsL@cCrVV7v91k0uZ`1z&8j-U05qZT3~Hx?q!EFg+I!!5 zJKVdSs#G|2y`tA!190#-bRqy*a2V?Nt!%kZ%(SV#Z$M>%9}|ELn>NXqFHJ$aoTsrx z)CSBAkgI=RTewPfnxlOK)XexX)|2I#O~WvefV%J+VR6fxaNQyRiFmD>kHz^z;Vc6| z>f}Hqk|3gzcA%X1x`(N&y@^_z%mOO%NZ|oUWK@K-FvK3VA{0hFMVS?a6~vipz^mS6 z=LFKeZv?x{RCX2TtDgw~lpG8eY1|rD3@gkLQ<2P9176YLMDj-Pk(8yd#wlcJZ4$?U zkrtU`*cV2Ojn`baU9QS|c)1yav5d!#Dha)M*Kt-zkiv|;y}i`UALY>rfYNj#py@b< zOyt>m#+fofh-HULNE?$DfNv2$bbijc=TTQzm&t}&`^rlLTsz}(t1HcQl=higN!^i# zjoh>LShklB>Xa~>eA56?BxLf7nT8iKA}Vq7!fp9STdtNUQ)3KK-4tnKQg(p#_%Nq zrANwGb6%r)DWJY406}GJF?YrXjIko)G7N1v3viA#5Kbs9XD0T*fGoqf3Zd1j*3h-v zucwh=_l&(R&ufegc?hmF{x!w!c>Ohc{@G`Otf>N!jeP|--h2x+^E2il$UyF#h7==C zhpEQ-fOlDEC+|mS6Q?1c|AoK7k#ZxZqM?B52DJV%u5x=CmoAq3|BD-2eOAi>m{}Reck(^qs<`5^kW3P!-$g2V~*FNy`Ddx;Jjz%n&aPd(R`z)Wdi&kPD9A zXA{)nLx)PP{yp=g5mo@UY}qP~T$sga0MZdXaX_e>E?KdI`& zjV_`k>$~XS!~iW_v{-HfHCm#{Lrn}HwFUt&ujqz#ma*2Jmmf1g&4@hRol+b1nVx_fOLAfAu}O_wwcR(^szG31FJrWON`3(<4Q6wGb4* zSWFf!mA^>jq5)$DIVo*AmjbF!h`EVXeU+O=jpTe!@r&`i1=Wxmrx=Sw?ix_fT4I9? z11N9y$jDXGJU;f3j**DPzxzfwhtKbHW1xYT*cb5!WfVplOZKG)_*CNbw4n~h$;^_^ zvbjtw_b2snbpkF44C7xKkYH;Kg7dV0;>@^ROP6&}@0w2qi&jHN#XkyzQ8a+iT z&p#um2?K%H1aBhbi5cEC;B17R#GMEI&HcMH=XCWIKwzzN5Nd!8%iJo@d#6X}>Xkg9 zS14;uY1yc%$<$9-uqJs9~88)P8uaiQ-AqN9Z@3@Dt*Yx5QGtTa$gzrMfBN_G`z zuA>zI)^aeSo?sc84+hmUD}$#%<)8uRmk)_N45?xxq!o6c{(1_Cijp{;Qj&9;jK3OXvlFm_vR{QLqP+G2XD$C|E}m0G{e= zu*Q-TObwV~&_of>g$62}E1+4rg=btB899A!ICdV;jq_J$ujjdAbUe0rI1o5?Z2kjW zF5q1P=?#OB1#Vjpq*VsT_;-=PgNFlWc31xgfZwLjF*1amtJr46k;q zz3P10^X;8<(V}%c0Z8bYcRDe?()aezQCfS;jr`4rRjTkd+f1%UT>_otLwVlN;{kf|(1VvaRXN&RJLWzepoe()C0>qqJ2 zoOL-}TBZ1ydEu6L#X3*I7;?RuQ#7wNuyjvQp_<4gC= z2z3!guvPOBYKz9B{XUk25*N{`b!%zy?dQ|mgGZ^E9XOowO#a~fPmc6b|3zK2>4I~m zJbC@FEctthFueS`wAKO@ls_n%>*@XyYBmJrtIhbrzmsnR@X|k=zv3Y$Bp5)cWkUs0 zrEF#86@=MqAlSqMn$~#sB~+z^I$8n9ICa!`aa@(AsG~}$7Z$yHj>C;DcNYPJGJOrNOgEw%a2c58EI{?(q%)tOUdXPZMC0 zU;~_84;>}t-sMpO7_A}n7+)5Mdi#dPNNSI}!G zPSM`y57Cyzt7wRC1*lHSwHy{ifSy_xHBt9yAMIH=NEhGxL0ZbMc9w4nh>D$_!K*R> zYY;snAq9n$lBXR1+y%?%(hX&H{!b=F8zUV;nFEp$z70}GzzhJ^POVvrIA;x58$_Zj zkRr~SOV-l_K+YYpfDF3c7P0Y^7UOHqbTv|8=-KL8U`1G>hn0lpsjW(yYMDTk5z@te z65z6c&pCg0JAl&;uKXp2TokO4hnZh; zc*mdQcC0n|%Z&(a(q{T*qnRuDod;*#xt(^=GqmUV_vnn))%-p`eop}3!P9$qst1#u z8aXqr{NEcoK?nJ@|7ZQg?X;G^><0~s4T5?D;MC_TtGH~#6>zdC=!-iJ#S+|?(3-5-!B8!3euaKUGks9Z&qwjvWt4H1cx;jjWg6u|e87dYl@r z*i7f#dTlIlnw%*2y>$W7*X}hv4X)k0WmklFObxFm;jVlU0IuzC6t#{P-d@za%wM! zw6flh|3cv z&%DBe3gDj)2ShoX*XK$CFFz4OjV66lT*MPE)i?CO$fo8d+PG;mwer^zkDR%Qj=r*+ z_U$@IEk_5agIf7Yze)Vv2;Uy);p!gFJ`Py+*Zcl44Nf2VCiIPSXs6UAj*-*I4&|U`Nw9E&two62 z%C}u~5+G^`_qe$|P><3%iMj4NtH}BFHb1&adJ^CU)^=W69vB#)HohXwngo<9 z61N8M4FbG!7?S~1R;ufNO1dQmbrcx_7*mKqsS5zjW#wCEAKJxDcaI9P0|yMvsVblr z9~|friuZiM^=rN$Ky&91qs$g)Yk+c7|UC##9)j7t^^-47C!m7=Kb0%0k{izP5g>eq8277F z&OgP?a`+$Rl!k09-$0Omvtx408DBHC^-z z*R5hGORlg?^9OQJX&2Hd#g@h?zH(J5!Fz;c=AS@kAWRyCSXy9#$w>o2>1lb2);LYA z`Ba@v0J5wE93RQ(?2VSiTl4m;o(71%RmU1Psi-i%%b+^_!N`KmW^bCrrvMlxUEdc8=U?)urY_(p3u*3qMGY#m; z!?Ab3!A2F!)O=Y?Su~5Yu*(k&CIZemJNFN#4Lq*mv80b3|A^%P93P-D4t)3!4fYI( zT=~U7?c_V0E4TPH8t^Joj3&#)$|tioX1ZqUQZ`ltb?^syj`#7an)%pqVu=3avBNYv z2CdIFSQ+JDEyK_asMJa0)VZJnG@dkf!H|~*MCD%Zs{RlI&_rGZR)?JWnE+(zGqzcr z&dO8ZX0HL&v&JehP79uqg3lysPL4f&GB%S#L1c-uC24g#jz@U|-69nB@-!KE#X}`> zwEQA2qXAX@RAVn@!-^LA@vFM%%{@Kz*+&o3PhPQ-{CEfT7gn3C~-)*v#5@{JSE-iST@osKP#@ppG7Nh`D)-3m#-jd z=R24k&Gbp00Icb7cQcpps=#c6_8E;!7ear@`rln zLjRB{onnTbYX?o&jdh>%6#8^Otx>pECjh0U7$0{J1gjwe2Y`@B zfy!FMbEpATzcE3&G$t6D0Rvkpt`rlPvw&%`XNf3q)v19_cK&k`&}XLR!Dm*y^vNqrB$-!W4)$}koRAOnE)(7Fb?B8oU)4S2naP^)ZsLmn*Np&s+nnU)3|> zumMx?GnZV=Ip=8lyiiRR3nqm}$@Ga=LQL`%P!1Y^ekbgRgxxC zB8o(zf$3@>>PSfHg?L1AU7U%QC!NSBT!mHh3!nksti>1YApKZgrt28SkhT__XNvRmN&|8vX+-0 zk2^!}|;RXi>XncHJUSZtS#HaS8A2gVU z_VP;H*w~oV4W;4r%8gBp3|Y@M5A~SKBG9q8IX-eFr4kv1OJ|gyglO{!>=71DxC$G0#wqnJ~>X@LEQ*AkX*$!APLl(Z0kV>>HSp_Z^4Oq2X7=9&{&ZV@f5mHAJ0O-_P zN;Y(;)etLe^`3>Z^a7r-21K>|6ZT;MfwY$>u}>&YNU6m1i=Soo=@+M>#$`t3oqwIb zze-d+YpjY#I^ZI>tcH9Bo39*iiboR~m&;WBcy!^xfqvTi&O7wRj@RfEPXanSmr>iw z<+2)pTLA6t?R4nSAv(;5n*hvDyW!w_dwS??o{;Q*b0_sNykf<2YHe-h&n%C~1Yj9Y zNcQi0M^s&rjW^Z&}o9%3j|!qawR$rvat;p(sz#w8mO_Pu64+=cs`a+ZkJ+ z7_0k<@%|i3UQki>GXby$id71l(k&eG73usmp!$YH3rh(x!lxs2l$>GR@{uyb!t=|< z%@`RSq4y3Ppj~h5kmdfxtu3^6?HY0Xr%s&`CyNO{OG}G5TkHv#mw>vlgWtbzFYSE& zRlX&0h?cgs(V8`@X?S>;y1Tojj+h{zZo@-EG|c?fAJBJ7JVV85PnrV^5(1E&wt_6| zxr=BHG$0p<8RoF~bg{7!LCwOYb5&8Q)+YdovhA!)43?0pNZ;?1s#x7yn46zUBEd%r z7xN@4i`g6n*z_Qs&6mijDTo_`O?1bO9i=zl*h%}|aZBo5EBR}99D4XF8%`FEAEB|a zkp>0^XlQ7dR;^ycn!%gw=SU+g7LyXJH0*x!4LY!YFEutSqSdQb$pqvyFZE+$VCx24 zOY35}B`~LT6K%}&r&M3SlztOH`O^K*b!f&ZS*j872n|1m31EuNA}lNdi=SLIVC-P! zmUsS^t7hR^p8zC^pP1nLGHOJB^1*mzcS0*~BBFqD(txNIKe3ME^i;~zJQ~|Pli{-H zHh&evT=j9jciw&SB<i6*zR$mh#&{yIawTu<{1t`F17 zt}dA*2tyVApyxPWoIpu6flGRKm>6WSCYh!PIoS!bPZxUt5|zvaq%Q)3Y&AhD)&%JM z-I+QG^)ms0)zn6I7OlA0VCC>JUy+`<27-W6a$ADlj}`mqXd{KN^`xM?%p{gE4K z+ZkulBAyh0C%3?&FrnyY2ame#eEl^#-Hkm6oqV5v89(YbDD}gW2?$y@tVoAf2yB<*xy# zS`U%#b+7i(5(VvPimMnqUi>-}Cy>oH9f>yIg1}r^IL||e4)SvU4%){~wwa%qU&Tx6 zSVq?+b#>}+{Jwaq!W9BrHAorHf0uhXRHCS&x~_dea2dz0Hl>WKGv5;n3O%C>fE5F)e8u+lC92d zO$1+#Xc^ORR*q7f$CMJBuyXixQ45lSQ$K$Em|RuA!%OO;d_|Al{kV$8lDfUmk0o^k zEU7o}B;c|uucpf`zmmEzQD8ZvSbEQ~t#H`Kjvk@cUwc*dAn-GYw1OWwM4jRIF=+u0 z0_q0*30{rBz5W|-y`3()=n|d;Ea!I=jLUlp@~oQ_I_E!7W_eHSsGcXV24ITKW&R{f zxom90gT`{ZAdi+*2@F{7I7nx8h{5O7ksSADV~lhrif>tfuL*T zO(h~>Y8#Csa!5`_4~!|GQpqXC1y0~<_%OdH=i5&_Dv$NydH$xhC1FWju9&$$!@1(< z?d|1BK|h_(SJctj+9-{*HvBaG68mt0EMUUxljL|iTP%6n2Wtwzj(8R}HmAHy>etM-Y< zr%Yj{L<45B7RcFaKy70s0T<&ZCTigk7Tb!la8*nIFvws~nIyz!h}fANPAV@;(pIh! z5qKjpMKUK1SbKPps&iw8(z9zS#itjLAx^EFh)$rXNL)xByfN>^AAX-s@J@eh@`F?D z@9z(f&gs2$INTF_)xUnjM!NIvd+D5W&m+9@w~})`&^=85>FJ}iwX>Nn-PktmW@7c> zd(VECpXom>FB(D}un!^Lg8*DNZ$R93##ywTCna09Zj(I-mFjk^ca(M?8=~vBEuD6~ z<~)P#ROJe*z>^|LSCpSflEG;PoFm$q!5z|!)bl5jQY7=xfK_@dk8NUgUw#ijoU!WD zRWSjWrk2cEV{)djk--dG0nW1q#4Z{30A7ztsw5&N;hB`2i;zi6nGpl7rVsGFb-XYK zjvrV2INEeqoruL3ya-Sdf`m;jc&=|dVV1SM_H%R1WSRzzGkq;a2rDc9#No|Ig4@g?$xKhz6v1k4J!O>zILr|7<2 zJ@f~+ugzkqYFw%-AyG-KDdwnIpy^>{h|_0+?EH`N6v;W#fEogN_eBWGq_ayFu542E zV{35&5Np+$YkagPCKTxf)PS>!tAK@5XP2p;onZs*^Q5vGb^(>hgC{^ch6YyU35eA+Jd2oBXg^2OMI&;0O2lx8Ha(Z$7-7S1(q|t%!1U8yX#_ z9ft?$1Yh}gwKdVomIhk37#{|zvY>q?qf;pRXIJ9~&(x|Lz!xZol^ zhZ^v?VH*cox*WXBI@N@kQ4UHA|AZT%YT%WVLTIrnCi|JKf1wg=_gfG6pFFHCp zNM|v=8o~g7XQ7`rST5yBne0pAJ``5s(Vx^o+rDM-lQqKT6W$U;T7t?Jwn=!?Ig8X( zHDLXP=CP^cU2OXlMRqSk(hAIf;Pt zN2+!;PFmK*TKs@+XIJ)z5nn zvg(Ej!n1Gp%98&GH)u8A>;G3g8TrnhUi$TGyTrHs&Br%UM{6UU9vqX$65AQBhS0!! zG4S<7To8WkD_`b)4`o(*vrUre5z?&bROtT^+BqGgk(h2s1(=ftD(W~QCXWF|gq-R! zk7BBM0x&)0PK>3W%|!0$Ntj2qzmJOw4s9C739RYI|592EJSl8#CAbZ6s^VD7wCA1U zL-fFFr|3lA82$Z=-O|3*?alPRUeGDG0PbhnzhQ@a*~TUGQ&+5{3)e5nM+Z}^+s}RZ zU3&8EKDwCi^{-^-KRh-;7x4QBKKp~?^aM`=&Sn_bTDT>#g6RttpyRP|p2V0z0v{*( ziGTJ}v~K-+c`DNiTnbZGYyFPqm=-RSFu?p#(L+h z4)ZLynkN92RG}tG;?a@lO@JWrp&UV47A_DAAP)_wlNa5W7=TO2z-gXT`5AnmmqC}s zi%d7vBWq0_te^kE8|J?B;z`=hkM&)D)>3+r@1^(hRW#aj&-oqn;9I@4d3iJa@x8p! zk1u2AtDT2VkI-Lz{{+3k_4&hF*U%4nl7h0=v^UZ-{6xYX=XB7QKe2^AbZ!Uz_~k44 zDFS}#VL|OMK`+1bB7N>p|0CgpMz$`Uoy+M4{*V$jWxJuIl6gLZV<%7M3gg zh&Q`ab1u!8d47}#DG+&T06K^MW8F`TXDtn>rSh!7oXc9cDR|yZ8z1FS$JjuP7tWxJ znO)v>DC8Lp7+WYd1EnMvM+{Li&HMgH!NGrH$7yz=?erG!^8aOC+W*?C{9zrwpZ_zL zET=zvhCdY4%pL=FvnW9RGg+T{nn_Eq}nPyIYkO59M0O_Nt%eJ#E6(hIcrop6zP$6e4DhKf?>)UkWGN)>;gO=R`(O*LsOPr<&3qu0sytD z#aui#oUsW|Sz;@c!^eC@dUhIMJww&;WGtxP1A1}={8UR7;n~b7S(;G(+K90^@b@1+ zM3<~zOr1*_=@+l=qW|N*cj-pnP`8~A;MTH(y_FsAukvGl&KJ#Z+XhD_=os(te{O$2 zeU>Kz2Tl&tPh7g39^lo8(*wMz?jsw~0jlgEy8E7w(8i6McqQNk`J}O}Bc8grgFjh} z&5n;e^q_p#AiI+Ri?&T8D7*G~&98W*0mtXeG>Rx#r>TLU`zT+^4u+Qg?o7GdCPVdt zwLAexYjwEqbP5qpFpI@(eY!Jto4Or{5X*Ri(#aE)g$$=pou$qk!|! zK&)W(5sU{Z9;4ibbDPP+c~ofLWYo_DVBl2xO@J_(9P_5jq9D~ke8MOmaiC3h&ct+| zj?q@Oz>_kR0JR4fTTQ&vT)$YLNd;x0T)O9ItVr}=alMQ{fO0j zG64uVYZa)42|%n{H4X3yeDn=|X}YlzUQi+v0A(@84H6B%&0D};wKLU^F^#IceI##*u=(5J2Qw|XBPOy6!c*}Z|% zm?}=y;sij|Y0nCx?)`WQ!0gUsvKUa=Ikv`4&Mw1HfVpWvtm91-?4TyoQk1S~jblDD z7AgzJ;7W6*Q_7l+RciIe+t~SE%+K|wx^MMYdtPgJ=-@&6-B14p{ll03CUw6aPW+bJ z?sU)gzq_A)@V)2LoraZq_q`vLRe%k4sc?2(6fuK->Gmlk39 zQ*fn@7ia^IH{fyYoYGKmVZzACONRTfMDWyN<57`Wk9!X{Lw1@c@mE*i`_MFCA{+ zCkFa@d+3?(e4Bl9(jODZN~{2fyqr@rYaFtbAOfWT=0F3YZsYW|2=yVsW}eV@Tz8bJ zp)}TuJV^JUrxJsy+L?KfbB#0D9~+Q_P3vWj7}Usp6+i`O`*J0V1&h4SostuV;Lin zE{=S4pt_bP#CRg0a{=o=tj>E5x>s<9e6f}i^GkL9u7onynuvd)w%&$ z0CTE=*le2CxU}%{l!SLGJPCIJ)r$s(hKFQV|AP;FJ-yV=PW%@BYT>F?tLWW*d+9k| z39zsEMSp=4#~c2>%UALH_P&!+3BG!G?e#ax1meN_@8i!g>qc+qYqo6NCL02AQSpuY zzm|HUASGx<3GK}qtB^RY_#&QL4R{{`A0m6nY-xN?;N2gdWXxp70evzaD|kWRTABdF z3W}A>&+v>K2~$Iv0O&?Q@A!l7S3qr4#6fSlTwcIb-aOVy3d1&W$Uwy`<Y!>Pml#P7a9BFcT*?7$mbF4+GoeD0Z#ggtFESvn>N!pzqseACmu`RuV*^; z0(5jNqy4-}@Y<`dNLJkQM`+?V0N!-l9kL4Wy=R}HV@Hn)9zW<;E4xM*w`g9uX-c31&v)kl@prEaIFs5ENZ{n;1rmKX*MomUaIJLX4oCt2l?^ zYH%;fb>eZ|1owwg|_v=lC7V+DY?%)XmUf}aQJMokJk{=tEFJHk+ z{Wr)e!Q;Fapr79WsB1+S@A3A(ZD*V*lL34TXhN<4orH0|pt#}2TL_boZho`i3qSaN z<^C5gHn;?qlgQ$NY@f8S6a_?tjFPrZ1)PTl)L4jdu)?!uZDS+2&75JNP=}hbRIN_{ zRO`+lLw$#XX#}IU06bfm1o*U?v51o{orf-T@Pe#3Se%v>_$|?83>X6h(8$ih8FB&E zmZ+UsutB_Ms1C33MbP?aL$0K}S{ilCOzrcr`=B1ZkDZBblpX#Q^9_C&B z=1Lt77pnlv`AYre7hmA}^}MU!geI1WRRlQkN51u-tP;qG;D?1(yt;7B_8a)Iz!t&; zVwg7`x_~SB3A*T#OX@|dtt`kBH&emtFPTI^l$KEfdhl?1wN<%KKO%O{b!wXE)Nl7@&-U$ zoiCCt3r`gAEr^$R5@E|m*LHgeI%sHUAY3$-HVzUo3{A*h1-oCNlouEl zY?~O)Aw?oCj(l|hy^CW2z#w28tY=Ir#Rf*_!@c%RQA$8gz%>`DW&%(~b6HANTxq=f z(L-!7ovu6M=_Ei6E4DTUFH>-V&O-xgqAAFl2CGQ3{N-RKFU8wr8Jnp1j7lv9W<3#G`rq8ea`?;+OzH#_?lE>Dli*Esh;{tQKHgzu~4^ zWv>8U@heOH7#93Eft3eL0FyGQqjOmO}(0q_`W;J{P>xobeJ5(ERGheui-3xgb|eU=$TGN}7GJx=N( z)Qkq;tZ%sK7Fxf4gE-)CKly|>aod2q@A;_QuiyFltMum1ot7l`>-E|HM<4zs9pi~W z*oepdViSKS;NnX!qs9Cd!LRdUg(JhmvIc-*0zCz{8P=^|PXqk&AbckPSMnOh#>T0k zv6)89QwT~6v5YsoYRo*tLql}DcQ}w-kJMx$S1~2=6j(~~6o@Hkzz+~|)z2`J&^2rg z-w_W+N8iv10Azzx52R}@)XD@PRx;8Wl;+~mVcs^(Bsus8vp7kB9R~J?SX%jtIMG=S zx=?+?263=BIOLEHK%8T0=`z`IKD&k3MSMQvgf2oYX`q?!!{2q!N90QU=_emA+0~EN z_+Go+y};)oe)fNuop=b`Coa3xAN%3H_SnPU5+{y6fq*W9&4lf3mj`XHKR3zh(WUC;^_G`e! zk)ICKWKh2x3P8`SXx_Jx*7tZH?Ri|EG_#h0Bx@O@Ya-Oj1RzV9s&J*b^hp0(iV!2} zDgZ33&R^odRRD9Tf%r73R8|&m7Os*EoWnji(EoCTd%t$GnDP~I6>EU)e+F;3JMa7p zF$IqWl$oR73XqJ>$hY~)sx!I`!L+& z{2u3}Te%0!WogMpoHkLl=>vv>6UUYK55D)DJQgSp-uIXm{s_>m{AeDWIQ9zQO@0$R zfUBL?Z`eSWTz&;LH8#>Wzi~f}jbc^M^$(22S6p?CJQjGW`=mS;i1zCcfmNfeyn?W4 z%T}3CI06`4aNW-RN*+PGzJ~sWo&SCOv;Za+2l_;^W-X0la-1%DEb9zP$>WIBug)K) z6!AP+3#-SzywSluO7*!x$O`4~S-cC1tF;M$D$83$OqIr+KEM+I6R?bf*&NPv7#D_? z!^4KP0Q1y=7GLO&MX{8h~qPe zQqWhmlu%%1t^u__>p%De*ar4snk@fEiXZON2>^;!B4Ry&*PwJwS7ltQ69B7BRlbXN zJ+hk(=)UI(3}$hd07!tbxydkid?Kc$BqlBJGt-6FxQn1f1dUxP^;?0I;>$|FtN|~J zuaX7?ikKU){3o1PiYt!V&;hQ*x8HD+JllWZ-F^H)AKul^w{*mQ+^_I=>mBYp0M9=2 zG(S4HH}nVqc!3XY6=0R%{`(ZsOsyqElK%m|rb4Yx0IVS#eEPs3jg2I$0C4_t8-Qaqw0Hs--*5-PknUEYA9idaFPRr|tUq69@7%KvmSz~QRoK}1h&z%OKb3Vd_At%u0k3nh zt=fQNs2LZG=A9B!(D>*<+W(w>2G|?!-jF5>me4wX~fo}fHmqE#F zj#mJH5`$;m1~B|KZvmI6H>KN5{rD^#39nVH@C%{z2YizTcjB5;woDGk=LT-DBSsPhzyI(51D$#H*_B%_-Nrk6=}Qa)=ev{5Y*BdgAMX7hJ9dmtp6a3hzr8O3*5sl2L)i+eCBq_&AkO`Vx+1n^e>&%EMQ;ldp| z!uRBj{)Zm?Vd;eMRzJP~h!_68@^@d5=kO;=_4s<<`i-0PCwirdszRJTI3xt`yk#yif{kJ=FrxVCK<*l4Q2-({CaeoR$ypRCHC|O zz#lLE;f4{u!eVy(k?%-XsVqsO!BQDVW-pdYv}TpN)aHB^CNTgYJ{D;51znh33=1>& zvSCsxqC33?Wur>R={H<-X#i*XLIB#(L`JA#SzBsS60%UZbuFp>gv)4AjJixDGU#Yn z9mh8ljllNp+rtaw_xt!`K!5w0PwB^YctW_#zv@}f(ZAS-cLlz?r)3J*rYCCVld^GB zgaWOp1>-(1OaG@%oeYN#9}b64Oos2v-Pf1P}CNIL&!VHZiQ}cMSY#BnN_VxC$mrgrOIM*;m#ky z20lV`@W4U+WbvKyw@Je?oqlF-QV@VclQD{6TC{Y;t@A30y)Xa*z+AHWfv6ie2Rtg) z$HivoxwE^&%yE3j8H%V{1)zdRP3Q4uF*_$U5o}PK3k4nCdspei7Dayu0FdbTx%9(} zuc-CyFc6@2FqYL$X>6&m?MihlSml7P%CT*1T7(K^8Ao%vdJwqaf+xst|9@707WkDf zeK8zATD;ZIGu$qZ2(G{JW$}0Yl=e;wmmmA3=}1OCFAe7}HyCHnPKSf?XNeEX-Tx0C zmk<9;Z;|N==K?bu=dC*ajMt%}toHCaUMRIay}}@%Fv}+S0Ps;i`usoMD4H(f{J$wh zYsD;YTTUE5DFFayKY=IEEVt9|e*6dG@Wmp;D!kNzXFH&({CHtf`6&c%A1aN(v79zs z4}u>cEH;KhhQ#`!)Y@vNR?%{}Xq%E=)J21m^Ka_obrX*O?((1a)7OSw@|j*-(s#)R zfQFUYr<@4`SSc$GaQ=((d;fFt7XyzRJ`x_67Y`2|m+uT5x}b0@3;;-BXXt#$C)>lL z#}497N|yx+p8LlD_(ohyJ|N0)gDARe8~^b4aWh$W=Wi8)9ZXc(Fm6YSWjy`eZS#Q< zbhcu-rKBbK;P>pQJHnQWUZ;)latD;VQ7D&v>|+4T0gQqPVwMuMuW$N9KmqN(uQZ2I zFZ2+*Q7`cttsAVU&KhOKy1p)-Tm)b%eoj8)d*tvT`N+=`M{pt)lL%8(>92tqUC{4%~vvN{W9l%tA zrG>IiJvI~OrteHA2<0x!i7MmEfI0!>B4rRzTyd$nGyNhUI71sqq(v!i<$|k}%U@5E z&#@xoPqtP^%&>~gr9q>?%w%441iC~3vx*7R6Y~$bc+Ouqef$-|8Ts?R__hG<`X762 zzpMZp4}ZUZT{wK!y!1y$zs>{!DvNVh9g*;)+_BTqAOM_cH*6399)3Y@4kZAvX?gKP zxc4J>izs*gEbBCp`WkCy2OCd*5?25SHZ)2e=z@o0sO=6}4w-W-s>YUM=hCUfrqw zf|aM$>jSe(Kj4!ww}t0b9S)QPa)esB@`kENXV6DMsW;(5vn*vO=H?^&)@>lHP~j2=mr!2Fz+jBY5H?0)|44~(!--d{opko%DUzOOI-v02lVV^YLY~Q-MC?qCb0RAVz z4la|1Hs08Pp9UL4c4vrkPWrr?ZNcve%&*s#0*K-mqC7&nm0!Ww>eNa@$xSh3^L-^Dcl?dX}Fgkh4@MbMc#>riC#oxc~<_)4U6x)qIt>{Q952 zDLr5C;qhk6-$=R8$>2S@#88ff`;I7ZJ^5n=W3<^lxs9~vGT$@yZx(1j7kf`$(ENzn zjC$-R$Lyq^_L9u+6wR+2aLS$BB^4Y>s*cCI)C`a4|9o-a37=rfK<#|l@%fa_OLp>mtw84nn0V8E*bBht{S>uJf; z>1lHPYG2j(`-2=8jo|H~j|1zHv!3^6`%i+99*w=0@S6ZnWaR9w^<`=+d7TG@sBkfz zcu(HXu)e(2D`&!n*~Dv+zh3P``)@lN4nGFlprBN{Q7bJ;;m3QPe4G2Wv6l-6a6=m3 z6=Wt}N*Yz{=G+E;DEDD0S$(o11x7s^kSTl&YFdynX;4<+qF>MP->#PbLXZH~BuWw@ zo|bmbAnU5@2YIH(2B@qre;xt}Y%qwoqw3`b#EYYXrlQe30Rc#|xX>{COW3Air~a$S zlXk{%{ro)leKYuiEYx!jLG~rd$BpiKZoa4D@s8Sk$T0C~I!lr!HkBW&Hn?`DJOTs6 z|4r3|2^fgNrDI603K`c~MfDfz);oO?M|e|!)PsghhBP|*C4iYZD7f7-1#!q*%v^q7 zBJMep;WHG&V&7S;L<5>UF?@YhL7AxFegYZ3#@E+CXmfFo3557I-;ASf6g;(RK8#Mu z0J|&`e`s4nP)8|Nlf}_QKLY{50Y8mvD1OwB;xAF~PgBS~XK+!l9D_2z%Y^Rq<69Cx zQI3=Jh}1H9SQh@AOJ;AEP|l~Y<`-@43r&MT^DW!Z;}in|GQMhQf53A-stz2P%4bnS zN*`thkAw=2t?rYH_#Kz%Wc}5&+njOj>lj>`cxzts>)nx|;mgNhR^I2@v%OjL&>wBN zXV9|7z)sJXN%yKb=!718$LZf|Cbgj6jgS8L^*oZY%~9n>gefZkJ0^nMfKLsk8K9SDSyuq~^<5m-nVfN%rRFYqkbPmfbX6-?&Fd)W`n@5K3&KYi{9 zmq`!Mq8-CYX2O6G0d~`UL4ij}7CSuw8oRxv_~F(FV+oC%ZZ2F$6>HJ0>Ggp8%czzW zITk{r#nfK+Q3?uW5|*Qg_XZy;gwr3yC^kx>{R#Nbs4@72W}1CG1>beukKGEq>vSPk zVHYz^$(u`M8SVWfZvsF|C252esY@knBz6uwn|ICUWT5IYyPIaA?)w7(GmK4V;4soV zKac^un)#2!st>edC#8gtdat*@^jk`C15I681h^N~_5P!qGiZiUXEhTSR@s~rP)m+RYCup}z{_XEm9%#xdN zTV7g|4_=8s&O}99-xN@6eM>=jQAWLdA11e2FGLzn#by`jWGU*lH#~AS#_r_5HoOPV zGqJ~WU=~h!ykd7T(($l}!e@+;dp|5+g~H~&J7+kcDH?W>Im!e1QTeBn$J00lO5k`s5j?!v7+;u$18J8Q z0-(jSZ_-GB>{l04Ktex6Z?BwwNP;+e-=i3e!W8L4A(cEjgdN>tq``nOur(%aq5*PJ zlY4I&HqMU*0<96LOYABpBLEEsS>i>6<9si@P4E^X>deZ=(AGDWh{!r-qTP+X)f-Ej zsS{N-m1=36pOZ|r>l6$R2@x~X&hl>T^&(3jYx+#x$ucMXuz(T>Nt2Z8YbT747ZQo< ztHY)FMmi2Lvc5T*0~Asi-r^=Uk9eCcLr}PJiN>vBUxnwKZ@8YH*qBGlb_0 z!$Kwkoad=zY+VwZpNa#x-PTSJ$~(dkNzOsqaJg-}bT?na- zJvZhBjGYns{zAnAO$P+WLc(rTf6Is?HV~3MJw0|RJ}+hv7_ud>ZefDnd%=z*u$ zib?I;%(#3mx~^U%{Oy9D38`U;iD1A|bN?tpPxFsfB<|)SYhyc4gY)1+OKCv9vO+4J z>0E39jQ-!i%iv{9tM$9<6LO}GT%4#Ck}r`1Ds~Pph+slQA-X+akl|=6zY+uZ?n@Xd zob8`k!AI}`6t&bQ$aksk!`P1KCOR(KWQQk|u|BZXA?s(y?sgvT`o~U0JXk8tDG>P7 z)!V?O4$l{}zD-5fQpqX?A$}tkXaE^QsM0_d*BziE4D%X?qx*m_vRd{P)(KrbEvrz; z+>ayL*hV~EK`f2`@N?PtZwvlG4SaWEAlIH-B6m){^5eGWM+R6mKe(Er4|I-rzi=H^ z_SPrcIT%OyvD>cO+Oe=m1?WmJ9N9Sr+AG3i=o$YuFu!g>G*toLOXF;Z0zTO=iZwr7 zTO?-B$!}XGHeLiqHh-X$7sP!J0=&_D5wX$Xe~%WbFDE$-LW3jCA`}KCp=oC=-yXZbM z-w;ILyBjK?m*XmB05?J|)1w})#|O{Vuxr89c>27ao&TEHADT-J-^mPSvCl2^BErN$ z1VNiETpaDy@WR@~Ot7M4gsx@1p;lv&^&m85dj5uqsV=8)!Q$ISlCsI=4Eqz24zG^k>V;B%~ zShdOAf`ZwIH9>bG6e}o@s%mdyp#x_;p}_-Bmct5S#c4!D4(GEq6Y(^I_AMgVZiNMS zEy>jVC!(K)OeVTiG35e;zsf9Oow9rG;VHD>|GLweo(PvI^qkQTfnn-Y2P?;awdAew zqY;1(5WdIA^+izt4*`>XwlDSp=93o}o^E?#ud-riNM|^xV5zqO$^+FuRf^bo;wqk^ zK5C(X09;=pBRt_iVZSqaH72(mas8Y7ffLt2eP;Le@XTMu5}}A-7Wb=<9pThwQqB(| z_r-uA93~fW?6j1MGRRR||6LCJHB%U=uxX(4!&m^1&ylX1b&$MzQJiM2^ZaK@NaM5< zzI~Y`PF*m=h0{}#>(+-tR3(~O?l97%b7vp>990#Lg;fo%Rbud1%oPw>LA+0(XVPrH z*-H%nv|is>J?@>tFDLkdg#?gcg*e}x;SG=Bx+(p~#amwtK?2^8!KfAbBEtlNS>+4V zRA{~Emmb$`gK3`Q7PmHq$`c%7&g?0kRXf-UG374;A=eWLBM6iSi+g+Tn#V1(QcO@+ zH7GM1vXBW%F@-e5KPiajZN*+nKGGtLe^+{s_g&;A2)md zW>G~V^jS+FA)(_B&pw*CbAl`}rcz0s!8Ax;I_R=*qWvWnh0{7V=Bm`EF{=y37ymTx z-fLag=Nx1S@__&ll?Nn3yfdkBNX^l>}V6AC&qliDGKpF-npVfMOXvsnCQ`iz~~dh|u&PxTQlG0vW-8t{F7E-myNcO|75t^-Ddu&>=fS_JFGtKoNF-wpbFas*_#-5-{h5F7 zyASBD&mlqT)qiY%385Kdt&&cg+UVZXy5}Hl?kaqo`(YdvnWu!|;#k_gz8x2@4Ig z)sli(H=b_w@os$>vgj)+S~#C|+;x7X%ES%Gxj0 zZU{UalI~i#j0<%w+vKlftB>s0H4j*8PtrJrC-KlcHQgZd_V;1V)@I>D-nlM@>TJ5F zo~MX}a#u*GDO;&)zi!9$zM5V|%fC^~ zQ5XLcMbTq1+)0hHYUDI#1_!kH%(c)h#3DBnce8^aG<>7O9v<)uy zzQJ$&Kr4U~-uyiOaY829x+OEo^Nsa_u^Dc7331G&`8P~=dQ3nsVW0p7ezr~(h6Jvg zoyd$s%qNbP zA*h#>?#4H!W6wOm%z}qu${iav*;nZ-lw)vEBE=NvaPGbF00(AL<>Epf`bdd8?C=(g z6-YKksQcYFoO&dBrHIQJxuH-ArUQ6TAn|vj$Vfv?(;nz12U1?66!q)ntdrd8lXsEz za|g0TBOih`+ov;X{F^B z32}sU-uD3%+&-1<4-*-4I((;sG*LH>yX`Gb9DG-K^*=8KnRb7zUhj^OB@zcEa|eH( zCbH*hpH3>El`T|LqD>w|_^A!kM2t?l=FwI_RJy+&&rHt()J3CUK;@KDx628AjFD1l!8h zDuS-B^OzqraB*okog0w>aW=o;Sk^8=*ey-LAywm7P9JO+z4N-WE6pccR@|x=W+WWw z^90R3{b+y<%twxO8qDO49cDfP5%*7?E-Rn06N0;YcH}X*AT-Q!46o5&ZsiG z%s1-or?#nr0waG$1Xu2NZJ#!u6iz&B8+LaV0|PGeH_a)G=omg#>DXmSHD-+ri5DZS zB6k*ZY$NA52p8HZ@nRi`(Y@8koYseB8#onc8pl9?b7kB_~q(@RrlC?IrH_+pKpWj$g@_IGE0I7abD`EwLTD3|L~ zpuX+A*8}*F974HW6PrKsf`fv>kjUGcD^ksND_jjrHlCf8}e?HNUrBf zM&ff%+r=N`I^3aWt(!g%?MBixerL&s=i60${E>kR-?lS^{856}epehsC4zf0S^`G{ z-GqfHR?;U8{rapy%}ZnGFUqk-@1!spPPNVC-T=CcG{OO0QK889A8&3 zOOr$ioAxz#LJ1Y*4ka<8RpG(V9T%z*OG=)WZTx7!Xy=P$ zx*8nis%$W6Dh-Q!StbW1AoK+j0{G&Nv_sW!`?>Y2z|q__bxb`r^*Qyu3I!Pw1tNqA zv-FQ7m>N-udnbLE69cS6$g}(Jp-4bU2GTO0b4D^E4QWpT z?j!AA8oSJiIsmp*0a8I!d-h&B05j$fLuV%8m*%>n=>nM9^*^zho#pPnDQ*-0i6Q=vl;ST=dwGbg5+r%Tlay2OZU6& zmy*v*SDam(FL$LEyIy(1+oXb|?anW#fRP;$V8s5$NTpw9pYOhSLO@de=NqEwv*ie0 z2BFG&rT`$FlNPFLxxCIA9uaIcK@0bXKAX<#8@nyy5<(dooyflMpo<~l2&25v4*L5*sD7U%N%9h|3#5QYi@G+`z#R5tmx(o=cBk-n5Hy@)@LRllLoQzs6+9Nev6 zQFTdNl#yRo1U|*JU2ZJK$+PFX?~IjhJgr(A+!Z4Ow4wmSDorq);Uhx%r3WS9csR?fxE?qbYjKH*eh*5=b{|B*z+K0ec7m z?*)Xq!$MNYkh+aBZ(@MmETyW_@ifQ(@b?K*$^Z)G?Xgs5<~4hB`LGs4`(5{)K91vZ zN~2s{3OsKVwOq~GJSKJxNUjpMy-1SB&N!XrwrrXcP4Rf25n>4gwAB^K3%9+YMHKI6 zu0@;9RG(27RmmZ(8#e|&O(~9el)1`}B6|*!xC_Dj~7eyaz_EynS z{bKwnOYgS^L{gosuOd)dzl*Hl*SQ3U=|(V@0vO34T3P%;3|oS+$h=BsaP`d=BgM5v zZy^DPM9`bcH{2H1hz|8q@$@C<(p)H$8Bv7#8WDDkNjzhX+sTC1?f@#!kq~zYiY6?o zt-ytC?=z~tC?g>@fAIUc4!Fj}jJR#@XD`7cgT%xgj32>mXESGGySFlEsXS={1C0j0u`k!Iz(UYgt`i^hRNVbMb~G%8>^cu zedEzrFG=WHojKP$cY4TmdLc{#0g3A zsl8w`RHdM}z7G{bhJCYZ=l*Ko@E@aV3!7c2CSqW*NDB4xE1fG`Eepxnl2j`-A4;J8 z;5JVTt#ucL8H1qFWbUQw6O0hjAJxICG836DT+ET|qv;$?8c$2rV*^?)Zx*Uo_&9WWrg9t^kB-NbMOtY5?YmD9j%{1qu zc-hc1OO{EB(db!_;K@VG`Cc_WO2krEO=IEMWN_4C-lR>av;MXhdgv4=Pfy2TBQE02h7W$2bITM`E_c~$sxBcaB#eMd#b+-j6V?e9j2zJ4cFEW0bsnje5=Dwfx+dT|dIJx7;{E_&; zB_R;f$BUh;CJ;N`OmgMv8zH*?4za>58bN#~99}#qXY^xgoAc8a5w2X|H=pb6^#Q?W z;)~hRbO!5193~1_0BWSzn3&|*%q}bpM1XS4H5=gxf_q6@1__6D%h8xrSh-c z$*|L%bB#s)F`X_Irkm-U%Y1uGn6%B~huAViDT)fv2k=E1kdb#TBClYu!^Ol759Ij@ z?KBQyYaOSh{V$-G`3C!Twr!Md6AfM7V{Z@bKWvk}Z9 z)iKl`aU_~DdOJqV0bdv*VN73N3JkE)2n=X2^hR@~;e+1wrETmlSVOB zFJ+cCN{B^D>HZck9LOs8kP;5Y>EY_3pbNr~pN1>P^u?L-xL9@br@=mAi8pMKyvU|| zK2u1{PG`Q!=c##B^fw<*tott&$ftOG;1PM?BPGggJ*&k8?IX>fs=A}Lz2j3zUN@F< zpt#T}numZ>J}TH8Js(Xb*w%ee%Gv`SU|~lEES#kBivAV|Cr%JPWI0*om~2=P{&Q?R z+Wh*Iov~mos@>qbk>ZIINcd>kQhDh}`3ts*FqP1G@Y0_Tin|gx+vuzoZbay2-_PTb zW9$w2e^CbrXyYW-pk;4SEwsy!WbGqzT^a<&R#Z^owR2@^0EO6fG~HMNv~P8J3d^p= zM1OlCA!6@&AvS}Y6O$%)R*^}PUc)YZoOYGX?>bW+l_vEQX}Gc{cvh?d(h&wUVapm`&@RIKehu~)6f2^_pCti) zzVI+2*0|*a)u>s El_SVf}|!0~iFHm1b78ulaz4vhKo$~H)w-Vt*%+a}Ds;BVM| z$f_mTdQ98zL&LEzGKofgDO_K^5}0_@4OojiJZv~l?}z0CPtNjs-5D?V!RIlidT^0= z+?lSowL_C~GGcaNsAwXEFRV@#^|UEAuYVE9TXNq6wPKvKv6M#rb_t- zI6`zjT5L<@uh!MyivEu0VN6Au%7|&F!lC=|VlAI&K~RdA>B+VrTE~j>5f|_bP;WxDMLv=yvm+Fl$l^^ zT-qo87O0Mbt{`!7Krv;%hZz6*%kzq|d7)>*Hq*#Nn%fdMjbIQ+cWRAadn#b>)`}l@F~TkbBV~Em16n#q-B6k z@Mu+ncKUUlpj)OdDp`ox1%0@~MS>I9OMcrORhA2X$2Bz`Y}AYjt|?T8t%Uvik%aT} zjNd=+EqTk`C$dpNfWGFF-nAn$B7wpEhFym^GqP$*`nydG&OAI|p7ADJK0&T{Oo;e5 z#}P~@?qQgS@`!lh2$7^wCzkKxM0}D4cL+A6O=Qa$c9c!DxXy-hk9PsNijF}tnq$6e z@P2@6aE9mM$=O^zdVjyuh|}C0t2>WN{D5ork?i2PkaePo{f&`{h?i-yk>I48L4aCh zU?VAK4=^SW033&&7`^vn>v9js$3YkceAyDE-Ij@KMxVSf5<)_mW!;GS& zFngBqF}XE`2NGb?u&mecaf9Q6gd{WA+h}TP?4(W(Zi9a3+y-yHx*57%4S8(p3y`v= zvb*sd@+9+m)fC583ij1Jf)p6y5XAjkOq1=%C(oZAtXc3AoknEnsyDScZ} zmSmv#|qqJ z=t+bYt3zzTvX?xB)z}fUIp_(y(0qG!Ouv0$W$tta0)?cJ2J!vO{T770IgGyH`y$h5 zMO52mLMD$6RVo%Yod%;_GnF$nsjQ>9T>f7GxZdI&Z($r- zLg@R_7`kBk#Y@&@9Z$C_GXEGg#nmdV9M>j}!nnDF%<30~aSANT;&wBP?v`1H{Dmqs zwZDQBahcv%e&80Nj*3Jn<8?j9S+(^0GVy|2MGTAMm+QB_?au8jT>3nf+h+H6ZBL(C z;H;PS{H9WqU?TJ`9~+CE}0#G!-Pq-~H25DVzQ~arY{J`}Q_}oB1FO zUDDf5Z>2xKx@XTRJCobi>`0V|)+`Z<3lS%#&@MW7)=)895n~YHEI30YA>WB_*ZU1* zuG}pd)(n&j@&}H|{HS-FY7!^3HI<1GGZpoJJ16e&4G#0wwaB^S)v}#Q?HMK0P$O<}8az`9E*(U=gBF@`Z#RvLRNi?P~pJ^rfvi zZOKs9gS)2lw~|%Y44TRxhTP+0xV|VCt+-77Y08%+^&61PB;M7S?j0<08)W$F9`E?u zd90+K?IO)W-EiA1?ek2f zEB&rDw+&8DVP(1}PObCWZx)IFMx}pKR?J{pIDB_cV~nGLvsu%wi@)F@+HyLpD^1XD zD{DQL6%b@f6#hL{cgSA&k|Vh~{)w!Wodm^{uMqkDm=|povg=?G?dRb+#(NtQPgP=G z{Jt8t3;C%TKgmul=fc9WGQ|W>txdIvV>Zc5P1x@aI;8OB#2G5Of`hg!tQ+R;9<)_w`_y1x+Y}wP^m0-ou&AIww`@gSz@C>yfEze z>jj?IT?iBALFs@N;oNkt8j4Q_a@j;kLdr|9yRe0x+^<)XkNlff@Y;V|5QJA`2CO3 z3R}VA$4OH#P?b^?QChsc%sD0UF+Q}CrL9DzR*+Y}d>%Zuqn zd*g5OmI|Spc_)d?!QWMy>S+nuWL{d(VDFG?QN6VznHe=Nx|zQ6Es}l*yIoEt%g8t3 zc@0%cWcZ3Oy$tzn??X3w_g4jn8P{y*O_zh+>qy9Zim`gtaGKdE!Schrr74c`t}L~I zv-c083$D|FT-3rH(IaEQP;lNaK`e8yw`A-5t}Qsg7Xj$%us@P0 zY&PO&A>>uR2XTW<1BB9+2~%LMV2J3UL!jb~oRgQNpezOaIG@cS&!QZ|059vkK8GKA zQR6_LoLbeElK((B;s*jIrFs-bTM!oE)q-Bv*nJ_C5x)Nci~e`{{~0A9$P{O_&>Yw{}1M{Vhyo`$?Z8`=NZ~lz3?IDBh-@bVE9d| zr{C<@mRCspMA$Vp5!=az{l7Mn{U3Ac*X1WPd&q@=jNbRMqk-usjkyLu-tUbkA~GO? z^?Bh@s<=z2|6kL~0uR=IfFXHL2&0vZ=?5p`3j?6kRBNffV?p#|BDfa5iO2f?C@3Q( zAO8RtD{?WTb1dkf8>gZ+9kFj&_BvZWE7>`Q{9mWW&r2+`6rmvl^8eZt*B?-E%Nqfg53|7%u_urTLz zf5hw*4E##``x;I|G=``E|Gz zZx})J>LoR7{QlhpK4#Exe!)B=_;X*pJod) zK^V%vJrc#&Tlaa-7;oWkKAMoA5)ui#Vc>?&R_g*D^7k~zw|xv+D<8A8F6^%6L$%?y zQ|WEXbpE&2LdpM*5*7wwfZ4Jy`!-pos7v}sf25lcay!mN$ikZHQ~`@vL%JkevHw?o zOFAcHfX(p<&J5i?X}Yr6!h6?pb{M(YeL-R-@E>dKq7jGn&$uaBzSO3L?YO>kn=j8m zY!fx-+kJlU>PaEhK;TrwMGvQ<-aUh5J>GOu@rhg5E&aCe;_y1G7zEsoe!d$|MkK)n zS0mq`fAv6DZLFT-jC)9(S~<{Hs#L>yI1Y;dYM_xyyCDqDhulm$5SJPhgU~G9NsP)&a*XFBNCAd zUyLXFsM<1@uB$JMl3_#|LAL5Sd*69;XlgkH%b%oeN^g!K_>5HU%d!&THKlvaq-l?0# zVSg#o>_2bLX`v8(<_(S9e|NkwdFYyDzFsZcIK}M-+i;5EP0nC~hR%+tEe1hXPBX7P zmAqaQ_lX|i8yMq*pEg&zB$~B}9?fFwg%y3P!xab8N!Gl5tZ>B{O6q~`akCbQbvcB4=GQi7(nu3}Z61Qon!>5gsWk4A}#xIP6= zu`nO8Uermnsx ziou~52W@@HZgb>!ocXBdN%G{Z*PVX;%d>nt%stm*!9PxL%(tB5wGo+oe#wtz<48gd zcU<4{-SBUmyJ^8LG)+ZGWE~CgJimPakuK$sNp@W=Zc)8>pN+A|Y@=?J>%H_S3Va`G zHgxV7*VS`)S*UazJ+&oiHFCDz^f$0Qewy}v1tZmr{<7H*o8;PqShiPxa z4HI$@-Re^&B={!@|4fHtlrQRw6sg&nIYs~~??ijNA1qNn;DZ4p=aK)}bNxG!P=m3! z29afhjjj13Jds_4vFqjVwQjym%lehMpnVt3>UGm$x%=a{PG3>?oP4aMU!HO)!3)1U zA4=a)-!|z#Z9m{_6H&^+uIdqzD}}QVET(H_m#StQGK!}o+-{ug!0;4Ea(lz?*A2)# zrT*Hj#Bp4y@FYk{xIDEhe@RO}^Qsr{K0mgd6?Aw?bZ~v1X?=Mp-9~?4q>64A^S=!< z6V!X(@o?W%cBZhuL8e^7{a=eRi~wdEGO<1VUNWKhTq4JNmpg25S5uO)u)Nab;`(@$ zU#Gb0c|4%#eU;qqv9BtiUEoMpand>De8Cqw=<>{f%R&th@g z$&KVl`(5ZuZzb>5%#1Bf$8#R`oFO&n#SDAO@EvuWVvYdhi^k$w3mHrxkyhg|-&Qab z7~S}J(CE%jp7zO$gWI`lz3~7Px!#mxG4)krD10NYkXKw&ephzz_t(=EZpW>unB|nv z%ci(^*>0yI{;K8}v_Gn&Wd`sXw!U`01>eRUGijpCj*bU_juV>CzH6(WpQBpSN`00E z91k|l1#Uy4Jg=e*&uwShc1JHI=`ZAO-4#tAssH}+tT~7D#r`5{*j`n38Y1IyAo}P8 z`!#Y3o#IPUPHDMjpch^+0>&4F-qg59Ps}KX)SCUoJAF5UzR5XJfzy4B`4HKYvF5(| zwyRK60)3ZXwUjg`??(Unw87qMO8NSDz&`v|y!-u-jhB$26KE;`>oJXU|0hhQW*|0W zk5Y~6bL?~t9+;qJCzJFkIP ztZ8FRU>a~RNWf4iY6+7HwDfc@_x-}oj5+7>LoHX?h)#)ZQ7j;7-~ZO^$k=Gj)Pt9o ze0h2PsbZMyt}jLKJj>_%Zdltoj`nyRoskF6XcV+KCq)$1EkVP&YqS*!zwJl-zjMY6 zbLia`8K%K7^Sxz(Rpgt|8^TABBvS`+jJ2{p$rOW-j7#|K*5S!HUID}0)7x;(<(-zH z_A`TTeIxgsD+|5L@5kD!TY%F@6P_EC6VK`~k?p?xIZni>;_2N$iJmw;MpXk&WHt-9 zn8ElAZ#lJnF0B3vF^|tAM1f2LKeT7)$XE*Tx-cFDmcP!+ANtmRo9P+F{6W-|{)s-g z*JoDBs01y&@Urr&laWM@=v(|8;=i7cZ`8lC6wyzK)ymab(oc>F63Pk`5|>)`3w?nB zq{dID*e_I9hTny^DaMY(^>!dV0)?aHD{yY zw~bK$eN zm%~5|hpExOYe}f4^hp^p0M@v|$d%w;O0=%I{@v>ZQwLWP1>4p&JIcLOEi>)u@t~F8 z@$IpVb(`zqmHg@Bl3?5Q@~OwRtIv$(!@KZ0+^_n3dgZcYJX$TU5V}{F=?}WDTWpDY zh*O|~V^b1)K$lY|W|C($LgOIy>t$xzC~37Kg4L{P)_-ZE9l~^8;TZ2TzD(9~1Gjp& zdCTR{QA$p0JL3aQp*ofc>1QT&KJEAocZhf-e2X=AYm!Os-me=?eq|a>eq5`Ebtglq zI@CP4kJqrxM)FzSc;o#$uHh<}W)PZwv8t#NEB#=6K2!_3tB-ooQ{!?;7@H=k5pyDc z5)q~>kU^7}B+DC|VthO1^2PGNWj4Hyl9+wyXppG6pc1Wlreq?;Qu(7ZSzVU4Snohp z1ymS8bO#b&L=z1uKa>}a1x4)b%~SFAXc>M&MTVt1ig;c)$3W#W-9 z#^SEakYLYwK*gHNcQXmnW#OOAyZn3A!kk1yR&rU}b+a#Y{2ev^%3&q5g6}}Ny5A4S9vySqapS1rdQZE zli9URrT)*w`uX%uD#;3Ix0MC^YHrf4cbAiGLSvPX$gkDq4zl7pbJgXe1yrB${#K3a z{^qTqW!*Q)<6#VS)+WJpZ8BKNRQ`U4F>RHHfKhYkPM=-^CN+ossfl*CY2=&1S`h&9 zOKVL?^RzRfFoIiOIWgZF_j5h6O81`JAANazb?;O3Sw`TreMohi?NP`|^tY_ZOP@^$ zBEvtWv>W7$yRZ3txQ#O&{(;)x_MrC>S5vNarP{7wH%pt#KrDk#Y1h2`xJ!5;@3?+{ z%QJ&q;@4KM?7pb?(ddcGQDS|w&PwmAU1Qg)Qpm8P(>$+T1${^B^1$h>W`e|5zczIE zHJcx_!JqKI<>?BaR~2M6jU`*>zKyQ;ZAuRs32yqxJMf;=O)Wp+RA<}(-j7Hkj~2aA z=T8D2qbxel!W6$8jb_24TVz)o;iwCFDUX#cLV{PxS#ngQtT<(VhOZdV_v-0nd>DAmxkrnF#HFvwyj6r9oZQ? zvxeUNR+%#4Lsq@7@563Q;bxzf&;I~iTa6-G+RL>Cy^0E$`_dN~X%pU;&cW=!l}(P| zyI5Y@8{5#5lO5g+8@*f41Ys}T-UlHkR=vCjVKCH{EQ^1t!VkP{W7PoP1(|5WS#Ah? z8;xxPVy~~2+hxc46UO5x(`Qt4^SpkQthP_qn@491Zf)n2BRld@+EE6nd(J)IHF3LFoV(CKQ*wo)HXeP=R0vR1@{F9Ed zyy}PA4)%~)zVpq22keWkCo{2qN5LYVWWz=j%_l8oa_{PrM7O<5TZ(g@4^QhNaaV26FC-`tR>^f1V|_kKE;V_OpIcwITeHro>YKKl z>3jxfMj4@XGf>$3=d}Lv;3gtZFHle*Oc;2TG6Xt6k;}@FjdUSIj@>?pnT6Q)@#?Vn zX6Z?mwe+f*yD~YxuHaG)DiD8Z8R372SL>4AuI-hziBU*Y#qCa3q(^u|nPX#R^q@D} z*fM}->N#0@LyW3r8-2w%_Q>?z6vx4CoLw~0Fa3l<{Ru|v3{m3)x!fd~RAlmZ|1)0d zl#p`qZ>XrtxNiS3qrB`~g}&Djj~WQCw*1JXq5PRjlyV176twR|&Gfz_cv^)*X(sUE zT!|OTh8izTkZHrM!f*qy%TcgTS6`uha0>I3}NR)_ZWvGvl6+JOH7wOwx}-LTIvZ8RLpu~NSgbD z6y#&I^Hc_S7|$||N~~Ss&j^IPzhj#yo~W+VGp+qUQWl3euycJzWX5@wV<28xnKiS3 zsO|AX2;G?X)5s(6$;)yj3>;o?t6oVh`ze%DlPeSQI-aTy$wH6X^#k7Sg1~7gEZ+ho zC_aez2^M&H)!|;DCt}KR$q3YMF!sm+`k@2B`i0OlptdHr^zwe7Zn0PbyQp4k>^ccP@px3%idwP_VX{CLyS$b92*L(7hd2Y6l8C#&OJlfC&7fWBAV-S*#h#B=mY#1 zxgxG|w`T}#f9(8PVo|UbO69OR+n&R87Tl7f zq9b`kehqg2-J@61W&Si|B@F~!>fg+iJQ$ADf3?gX6>gCv0J3`tw+X1ENAc3Nu~WzC zQg~0Ybo`>2zBfE-U7$N!5JyYy4B3K1{IvlRz`8d&)g)x+cg~fXtKXf|tuclmE;m5F zKmERa&)+xFdo3Y+xP5(iKzVlMUCieAOSf|Q>%UO1Z#Q&5t2pY!fR@>!N+2!mM?wmYu|Ibu};a0=@iSY_h(uJHXVPgI%gWIpg zmnZpZ8nml%A0aVC(yOd*22DAmO&-Y6=><7U@^99d{Dt^s0L zb?S$a-=4hp-H(>G{qb;ToeHB#78b;r@<`w6(f?`OTJPaV`!@-U{G8WwS6P*}a^a%E z_B1}!wC_`izJgy@0}Ux{DiXkF`Xe$O(Q1Rh_NH}ml95q6=+K^XRseE)*ncH?@vNkH z;g)^=o{`=UBQrvryXhlj&HnGzlGDD9r{#_*694hw&EQSW^i6e1*EWsl$t>FuEakICiA#u*0h2~r3wy?XjWR5OjCPb|C?Sp{cnWWbF3h%2os|JjKNY-H4Bw2BRvbP(6KkB>*Os`uP5soSi>;eCV^>Tx^1=H? zRiJl;4uXGh%aVQ4+1c@) z#1B%*`^|%uNi&3KYf)1jL@Fl74j2g{HmFbzvd+2}_{h@1#fnjaU5|lfF5my|I0r&dsc4&O3?rQ|eGJ|LUjsTkN)CxhZcf zQ%?n=!%kbCxxjY2NSu7VhmW|~C#qIema6zM^j@wCxB&PLB;Vi))cFVvGP1qO>$tLhYX@ zP0B~TJV6g@uiZhHMbt3@_GcD~dQYdp=Brs3Y^9hlZ6T@UyO4idB2%xFdN?iI+EJXr zUuu=D`);ip^R3*TeV!*C;GNzON4a~$TLAXSXYP%|>`wgBOf~BPrn&2lxP=hd88TMR zt)mM(vRgWjcuy~4>7AOju-_vIYaDkmn$LDo_D@-W21rbayuI2^XWg5%!ASNd4^WWc zuCM&Zv2+iG>?zvufbAfFnzG+}aC%f&%h>U#COa!!iTNyR#CRrt2~p-<2gz_oJA6L4qv zWxPVe-9>&0xdyV@@fRDXcV@gb&9+xrpbLl-Sr{tugbi_MzK=YN=M9Ns%s*Ro#&?tD zqX*0|Qb*;I!tLc_0w_H%^tw2aY5Bur!zYwiHf~Zy-ycW*M=qO@H=DC~y7_U25dD~I z9wxQLQkCId$^uGe)%ft?tl*gxwoc^tans*&9b@Ve0J?uJ+f;~8~m|c`7!MG@}KNS zb??b1Z*MK%Rzz+{_P!K3y}a(E@U2wx00lk^g(2U^xQqHvJ}!rCaxggZZjGKa+Js3>8C3$R`r3>RhtJ`miUgeQ~rL)v#;aItvwD(v(J^eT}5 zy15{NSb2b5@g7oq%410iDQ$4oIYlgEpVTeqB`Lc=I9^Z>Oep+U^THMb6S`?;_I5;62twkO>626jNSxP#6L zT8ulp=mnWa%@<`D?fujLyWwuBL*y+gFRW^4$u!BZ{0hX`cGQ?30Qgxw;XLLV-*<Z$wUga>?`Jd>S`EC!L6< z#R#o3Z=5|0`%;#eHL;rtOOINWh0PsL+1ce3vVboC%wJ=<)jBKc(Xb23&-=p(+sX;p z{@o?Qu(VDp{y(|Izez}yk8scKSFzgiuaC*GBGkm$Fgq{&crKA}HSt?UvMh$V&pjkV znO$h&88YH?X)ozv%uK-|IvISrVC>&hOI+zW@Pcw8#yF?r$4aw{lgCI&V5>z}2K?2W z_)Tw#a1-_7b`HDMx2x9~mVzWrjZ!*-BnuTc#0ShG``KeW=u1z?70?$-hrz?m!&JTw z?9hX=WeriKlojaw@!@tTg*Xjnbv~dayqg%uNe$%gO{R*^V?J9o{Av@ZwH!|MFR}a| z%$3AJv|rH|t2f$H^9PW$gC=sMhm0RB0D3DuxG1J)(S8qw!)XHV=9C7c^ zVm{O55Z*XWzHAxIn>d9OAWz#c+naOCm3rtP-014!tvwpV?}qRtUHm9-fKNAg?zrdF zPOQ5|d~TFZ8NBeAJ^xaWP8reb@fJ|vNoY6!GIWx8PWtIz8R36pM@$&}GE8V_J#Y)$qe)#ta(FDyAKL`>slbxJsyLu^E zU=)b`N!l8QTZ6(fTK?ckPbO2fFq04MbVy(=zrihYbS#WQHz#H@0(An8=o+bky+s^F z7M76Wm)gInVEtwkFn(Sf9*!aLFnt&D$hf=_WU} z=HarRyqQb$HY4aNs2+EeyU6#daGKI7_t(V9U6shL0TMpU&BfDbuGH#`!*-EX6A4a(U!O@ zf;VWH(<8>eQ&<&cVGvR}qVq!U2EmkmK|}Di1+-^2_M7MZcliGYwG*73!x#7vHkgm% zB_+oiv{2KF(v&PP(kl(W;Gl?0lVPQ3k0KuKg#fk$EcCb!4$>7*i>EOA4i+dn#0fSl zf->Kh|Fipyw-TqS$_5K6t-teuwOF)7_-itj2R&nN-~4hVy{NWVcsnzid7>;)IPYT; z@%Mw>^f5m?c{kj=>7E8AjV+VtYMc+Gq`~XE#v;h4+I42~J^- z7yAtw$A!?&P;$>Iuv+O;qwNKr}!KTnNQpO|kh7mcN9W$0xYFnVV(u7`M}%faj=B^&ejwMMx`@BGbE z^)%2xY=(G}U6^x!rM90k6?ez2jypW{Y%=DB2R4lzb@^TVvuJZ}ol^PhTJbxLKj9FqNZ{|0po&(dNMZIR z$v5%g5+aNj@vq>9hziRto`e|ow#=OrU--`8Th3Pe0{VvgX0aeML2b#SM_?eX;S}+q zoiNyc-6N_Q&B{jWg~dL>yDi0b1iw8f|72=1_>blP;}O~*qFwAG8G7Yb>-c_Cm=J`F zg!Q-TKA>o~N}dFhc&4M$! zi=+_Q=!Svc$D{~pk+j|yqSw^#uue@dq`7Gud9_)}Dq1s_3`rD=(0!JxF;dVctCbKH z9PL*5GENXRe?W1WE^`kqI$8SfEc+v*8U|ozwonrMSvn&9)iDQx?h2U@C@#)H04i+e zYvLl=1)e%*H6`F>k3*_k|3~8q%c=lVJTKROtdjM#`edAyB2J0hn)JN}NhcgYMrjEb zm3Lak0#2Oa5;kjx$rCUcE4qHP?R}n@C!Uo+$nm@-5gSlKhbw`@m&VJyRl)lTWVJh zo#nk7t8lem06smGud3AVHMU&xNxInPzA2876j%;5x9gT6D&p^!HvgJs*6Q6b=!8A5 zeWd^)o-SOZx2}YUc7P;)883j$HsOw;~c!35if|| zDot(U+;a4Sz_zKEq)NoFtt|m1!!*Ef`hNm>07Hr(u;xc0c+4bPg7{1wapXZbPeB1b zdXSWBmJ-C@3C>G5QBKWbletILsVTa!M>txj8W1r|Xc|$Q4J9XfxI`HI!;gw> z>acxmWAUyV^k1LCgeSYTZ3J0NM}V{R<`2)Pj-3I6l2q*co`Iod{Yh?vS=F8^Eji%3=XJW+ z$jU(`y67UwFlF7A!7XL}H(kgMFph=p!RDBJo8i!;F-kg09(!pHOYc1RCVBb`Hg@7-!+WE@C5gRmn&Z4_k#@#J@dnan~caLpiPbWqdso?~&sG z6n@cA5EAGXH&VEFcLD9R&%bHb_Su(fYo;j>gIQ34ZT!+R1G{#ds?|A5bwA?FI+yn> zK?K`i_shV+Fe;4EO>!Xj>m?To@&BZH%Y+l2bd^8@v{VOhT^nH|`prv}!mxynzsiG; z6JFvCdgp(B?ulRDfT4R_e0O90|1_(u5Lgw>YpOLJXWE#XSY_6ZRRQVQ^2cDBAgLl%P@vsFtzMa?N^B|YY9%=x`(sVM# z(fwCuq&T;F!lV&3<^xQW@rY~neb)B>q}-}YN4MZ<0V_fcCE)xS7t6?2}(hd zKj99VxQUv|M~5}zM{JhpnEpe^BUs2AM@IZ@Hawf&M}awe9G@pzbO?-_SfB$C7$)Cv ze=@Od*1~TuAkZ1v-2Co5R_Thb-1|zy;`9@HXcQ!XFsS3pY8@OAD}s_S&P1^M#+Zbwc; zb{1t}!`-S~Nk?$1eEPJ&uIJW~!f<_y?j_<#gl?u`_@ZS;4aPDW`g2L2o1P3Xaw`$M z9mL}zN}-xHZcPmDb_AU9?vn-;tjz;rG>Fg7bu$`q33`6366OB2fHfN;Zp#b7qiTO$ zGcJDSt;8hhz(@7HW=W_p62R|+`laF(q5EAVmftcKCp{Gww+tyQc75yl@N1PG`8(Qq&4<7PumVaqFdHzu$nJ}8OVO3P2^;DE{x}5pUY$xEqartu#ApP0vYav9= z(r|wfedzT<2_oMsZ-}0^KIlZVec^mN4T_T)_FJPG@;_%B6Z{QO0#QTaxB6%7FAaBm zva!VIh$O4f!0N%{iL|6g+Y&rY`UE|C+TxdOIfA6S6hUL-#? zh{f0eP2PtSce$>$8xs#5w;i6&Z*;cpWGgfo7tHakr&Kz{ zIkX)#j49tW!~M9%!dpIj>;wC@Z35H2NDc=ngGpd2@&7KC{TDuhumC%?0fQ72x35*)}ehEYbwtcGAfuJS@lEMB9fQGjNfF#%}1%^5HmgRoGm0nlM^H@AL;LCXLthj5z zMMbv?2cY7vA*t2h&?Jotk_VHn>kgc{&75dDh4ODPo$-o#VbFAe%TVkaeDASK2r+ZI z$FV02h}T#%g88~78kq)8f$4C&Uf5y{K(I0H`oFm%_dgO}PzMEJ8RnBCd}@Is+yFAt zksn<;0{#N@Apn#qM4Az~VKf!E$G&*7SG>sW%uq;olL9h2(h+$_Pf_p2TV~r6ez7G<` zR&PJOiCMh^n{AdO0eD@x=FBHn7n9o4&3bPqWdIK`fI313XQX#$55Yz@_MCJM;>LObSve?EPYe>kO( zQJbpx4bg0;bGxKq;Pg%OXZ5DXPCrkhMe>$vOIzgw_T5EVFj|=>X2sZA@|i%@j95+@ zQM6g|5{T~w@ah&S*5xue8@hNFO9V&dfE5Q`66OTnm0LH_N%^mx6;dP~V^OnV&M@4c z=-2b+gJ2%QsmYe^|E{e?B?8!3+i8k~2Z3>3#Obmjsesy{?S;uc_P{+FJw%Vz&tf{9 zq7#{>lbWys$VaG~s&S`225Lv0T_s01@`8Hw^GZ(F^z^OTiE{;28@r!jMPK!b;*)2> zHrdP{cLSmsXp5 zea3CaejrrIzLCs~4e?ho+t9|o81=}!1BD~9W5F0Arq{VdOF|WzX(z-}u5Prb*0pP9Mi^MQaAUvUN zJo85Te;G)~5C#K+VU-$Cf}puaMZ^l!gkFnlbA(>iZDr<&`fUt;Y-7p3Pf_7>C9{AF z?onJ_lL9R;|Mn*X44yuH9$_PCDCE?-EFD;J^JD;JO97#}w*i39+Bq&=i#BXNQuvn_ zezCanT0BHAdNm!DLC@^3;Y6#)-gattAVwZ&{mH;NDIALO>86W$z42#4-oSX=V-`e1*EeD>Vmq!5^r1T(i2#Do-L%dZ8U~Bct%I0+N5OG@2wlnL3 zK`pvm%L)N-rSp#&H7Uz=5wbRdPHp7I82?0nRx&{TNQ0JB=V|o0oi4A7110VdU$Te} zraJHj1M!3!)1F5ssADOgZK!t;<-y+SPum~_4RDJJzvlzH*LR)Kz3czm!aXYDm-N|R zXyO*AxRnt@WO2%XGxvA&5Z|tbukX(HhWZ~}J_IPSZ6(i_R>Mv*lfg*-ENpw)5aqv2 z95o7$&wr8-;`KUcwqxoIt$oE73Bbs9I`4eR=U=2=iWG0GbRk8M>LUGcK@-OhXMaE7 z&wRiT3`^%Ywq?={r@;N-hP0f1!nkAR#Uu zJMEf)QIkDCicKa7{=m~_5t>Y#DOX!cLfrPLc{UAp90bL7@Ig=OzzTQ#&pg6tfbAT< zlY(^yCE|{>cr<$F1sum5^cM?1Zl#tQ`T@u*}(Q z^iuuu*OA14M9pV(2DvE|LJY)m>=0TSe;#_mK)AQ=f`h<9GLmPZvC8mj8!uzsOd(og z4ARfy{4-zRIf+ZRHsHnFrair7-|IY;@f;s!uVyy`b|jN}&Ex&{e|`DbT4qd-9sWAz zLPWf9YI1!DmVWNi0rMRPTLZX{VmlD6`=B~%9F1~*^+U@uF<+0U$tJzgrw(jP|C~tL z>qNV<+Ih6Ovg|s30yn-T+)*JYJa5t%)&^jxCxmCSmb&06L_7--vn=%{Y}ew-{;q_fwz>^+p`|=wOK1FvN2c6K1D1t(RF{Q#CV$JcpwDm1Lyf~Qbskyzd03Ggr zDdCM5LQFrJ123F`^08q>c+V+VPW9)f@a4v0a z-*XXQja4t5Au!#W4?q}X$wJ(@3OMe9i*o~T?Sv0p5QvT$_HQ326kgwMUDXW%OrG`` z?EzPV>hgX{{2B2WUHNNi^Jkk1N~%`&{VI1o-RZd5^VUuF7|DW|uo`B}BGwG*`R5KD ziZB`R>mU;nwiq$#Ru z$wpr>fE9P#rLM0edo3*SI>K2K3=#MHw>JX zbw8O}IBPXlN(ccY9R9hsn%^fVromMbGh~oRTP6@C`AI5N{l&~hrj6uSx-{3A=@G1_ z9QQR!1U4aq@T^66%FHHE;9>`6ak2dcII$a)9k4GaqF%US8{BROScO^TZIBUrm&uY& ziqr2u{Wejet%Q`1*doRAi&t$9KHRk`XT4Tm8AgVxFzd33n%j9z{xdadfgc=XK@)LCByBQ}v&1AS%kSpb#X4$br$lfmv% z;nzy;cI0$Nx!oL-U?=S3wG0Tj^h?eK&^AeDa_+MY7?qGJ#wPA zA#~7=PHun_LwMR7=RfkNjSg+tUyJzc#T%KV_@sxGPN7upZ~kxd-?Q3N%IM3#{A;y5 z!D?VkeGP(Obyl!QDL*O-Z1P3$$#4JH|9p#W741ABO|0ysPuz`gk3keaq2*kWdkIG&gw|+nI>`4#mZ=H)MUHV5vn8L@M z@Xl9-$3mOuT*&gCrK#>5@p98p1X$JZ`twwX%KQ>@@T75&rl`0RusJRc zfCm9UxrBxy|Gm|6bf`uk>bK}sNka$eA~`Pe!=M~cR+z_J+u7&aoy_F=v9`?8$Kcg>^dc*eoRaLcw=n02j7JW_H>28K3L6iD1SI z+`DUG-MO^*^>I}Y+&s0ZfK`qXwrqN%+}Mfs=ADn7w(d6v9NndQOYRAZccBY0b(Dk< zLvU=?8$kxcVBss_y~**}5&Jq>4*Tgcu@Ni!nRk4MtD02bK);U9LNvr<-1N6!dkS%d zbgfo+AAkbZ_A_=!|HS2r2An=yK%bxa1CV z5Y+hiehI1}VYPGJ;;KLtQ%s6yl}T0$?3Sy3{#BcfpV*|hw`zQL>*GiHqIZUmpMrGE z1}7}v6hGm*_D|Tr-Qu1n-8JyI=K=h^RT`p3p14#}{VGh@Re+|R=7Z7Q#%K!Ls5lTO zupIy&k*0vl;~m^2Xo>>Wv^ssLiPKwr{H)xmDg$cMTMuSzS}xILn0Lz%%OFJF)`QQ_ z9#rV6Wj?fy>JwU&&FD$7?_~d;Q6Ip-5so^8C4?9D8G3|1`b&=x{ zxcF5)$*s4+a^xKZc+`HOa~zF8oR$w`sOS#GI-<1C9EoQ*#LV4*ue4I^LbjG#LLQqH z@4wl(sJa>LxUQ%jpPB5d?V7Mfs0j(WMKPTR3!fS6s^sE*R#0NGF)95uq+c_aMQW2% zy!ON)mA3ndtRsajRUGJ>cTgQIu_ZISl@4MHn0MzQZfkWx zK!HLCRnOEiM#<7m9z%NR&wuQe@hWg(Mc^-ViLl9{jGCd6=0LaiUSqenTfABRIoR0L zXi4;B;fDog$Yu5c{u%gX_R{(tzM<`bY65H>xJE^!6bx%=01jgb$mLtgGm75YH+ut* z)~&>Te}#V)aILU^tE^*pk`|snq?-OQQ2x8llN&exhMWe5iiOUR(!G)g6GrB@t~d$h zTfa@`U-QaLT7>H*x{i*a>!mZ0z%mL^)#fuC9c=KC=l_=pF#7CWwv!dZ%Dk8ni zIg_FQuD32168K{o1pbH)w?pUuaPIk%3%@T(X7}A7o8tBOSNuq>$1T~4OUWbvl6F~3 zhGA)Ea*mu2rZeT41)Hf2+v>@NAWXT^l218dLSFJBHg+v2k7jzMF>keJ>Z}xh)d-et z-5S8{<-tC!0BZ&P7cRYMoKiJg_FgU~5n0uS@9gqdrR=vw=g-f(Ob9iJifef6`#*4NNN93Xlqnoqa3Ad#)DBbU ziyAQG&h|46jN9RcpS8J${8}J~50jK3e{ciZzQ4PgIPd4jibF_;7tSZ;7qBZXnEqYd z<-Sd*0}(89#m!kT+Wn@2P~Jdb1WOG$X2{4ou%nKc zG*@^_V_|E76R{EIjLhP?{N)lS6Purm<4mZ>t|q{|w?RXc-jgt`Or1_@IHylS(E?WE zNK`qy?aZabi2QrE)d7PhTABf^zn)aZF&iIxMV)jvyCk17LiXD)N-*hSb9#sa#WQ1-=Y(>Sx+xs%yXPZmdNb_4ZVqSNHNy zd=Y8lh2PJr=qDg9z!qWVArR+%i`$yW5&~!j1?(rB7(x`TFD37f%e0>0{Ws^cgj*Dj z>J`e4E-6_&*N2UI9q*^E%NLwphq?l?XRH)ro;)A?#S37R9`Vm2_^c)&KhM7vE7yt} zWyBU+TpcX#mVz2*ma39*PQ6-q%fc+thz?lFm8cC!;c$3qk=tyq23fNxkkWBJIqO_i3EdVd1k2Lumo`uBy9* zRy)p7jfIPUN^)Nn&wf1bYWny?=(Dk9%xbDMc?cW?Y!?D3Sg>1AHZ)azR0b$G3nn9f z{mMv8ThD`guT6>;lwnZ`i&rYf_{t-ptzje9HNh7txeB3!%n2rKM*T#Dr`h(4uj?_= z9;l2!w9w<;c}y+-ND{zf@Lt|w;6}GBi&9T^C&ilV=29L^(dT8~_rMt!c~X1>8q{Xj zltzw!ogrQFB%eIC9e2>KZ>p6lymwcflgUA#R(sq$hVk9*Bc0sL?IpkLe#pz#dmI0t zWDD1$ms0|YjQYb zE`Sh&m81#!pBB-4GSM4LfXtu0JouK^ERW(5ds#pa2#f()T$LQ+uc+c;N`5D;cnj{$wbePJEyx- z`M-X`(()c?guhP$;Jcd+7ej(ukYF;r_d!+%Lb;B6`}yW+M15)Ng!U&Zaux;E##_!} zrgLE$CZ_K{Dz-z53!g4wJh^}Wdee5d`aoafJArRk98yeo!E%Bb5~I(E^2&P+l`3%M{~NrH4C$W7f~g zw9=$6(cu8ktUa!|<({f2>8K;~B(ZxHg0E72nz@wN!c7|FB@pWx zdTcXB-M;wGH%ln1I`97c`SRl1gN!UxuuR#xZ?X!T4JhCMuL{jlBepbzXFTb5t5t3ZtN;D0C@-xk_0*tbmE%TDCTCLd<#($OCg1%% zqI8{$B!?-UHz#J$iMP;k4*}yYoJ)I#Ngjr?HEag}idKaWuRZX=MlGP`FL3;S2FHW| zX*b}yaA;8EJL(fAaWie}OWp0@9+QkZSA);q7OsBwLG0Fc;G4q*1O)vIgfeUMLgEPo zrJPe1ry62wesJ}A2dvKVvW_?FvU(UB%7X9nu3x~`FF}XsUT5%>sOF}g9W)&=G8Z#(H8^TpK?U=z=5XY=X7-~PYFb>{iqN^UnxJ`apk z8~I(s@HPY>z6u4AwiD9cAP7PKu%Hj0wsJQjBXaIU16CvfMNxaZ`|L_5nLVw$d|5}j zeWvYM1-92OBZcpC*$VY;YDFaPN}iCjIp}!j)>aBf4KDEl+^a6`+J4SEZ8$z*GNW3^ zetL)lZ-v6J4Q)WYr^o6g?;N&=9slyj(_IFt|;VWb-7cXtLJ5wU+s z+JKYiX|<S7-TL;qj@RmY**2IVEFp}1Z)WiKWg9JP7zp@V0)MrF zIQoMymo0r?kNXka0oGso#7ke!>nYpUMRF>vPU^Y$tj^CUE%@cH&OT1ICp*!mB39Q8 zPECg&aB57x^Dj#<6zhFbU9u%9+je`5KpKS@i6@^H)-`q)SqWr_|2B{5vrL(K7Q`<({^nD7KCP@)1b~caXSdjEj^nOKrFlik zZ@B2Zt$w%WlLN1M5B|$j~6?^(iC&lk$s-WX!zF03W_>I$PGahLCP_ z5Zq;79_MAoxbzL+k7xmd0Dz}A(Y4_68SZA;mrXw@dXXp3bG;4H#WpA0uJlCMIF15cD&!%dW7!FITPq zp@Q4U}+wE#XzltflF-T3= z6Lch;Gpy@LN=EE4ZBrMGAd`^Q2lv!G6R8!pr{7ja%PZkOuXpa0`}&aP z^=xcva?Jp+UA}v_s)j<35JSIg% zB!&;B9+|0b1xqK96?fRC+*kZ@ML$jP z014#!rn;4WF__dZVvR85S+}?N9^Fg+y@rCbnMd&Z$ztO5*++xT%qp#oY7iS@g4laD zP|33eO-}Q0IC%ik^F3vye-Kc0d9VFEH4SzeL(nB{db`)F0glq}ye-M+J+}&iV)`Jn zhAXKhDI(7YpU!J(s9qu(o6^gC8N&MyPLMw0ceN)>Zx*m&}%g_qoX z7noRlPpZ($A+-s-_C!II&xEw~i>Gh`lUaEDXEXmeLUCUEGNiqUlC!S6=-C@JnsaVn zm8TiOydjJ2_o~@n+>dDaP}ng7?@u;Z_$Up_pFeZBUi`RUqZ<(QxK^2_SmOsgTID^Q zhM0T$@Ff6H48&h4!8>A!_vX(;K`7BfRAo==qooREfCrh-Q9Y9af>?1Nq&wLEAE`qa zvFJJllreWeDp9iqk}d%*R#IpxJzB*qGGFbsS4$1g65v=!Af}vaGX$oM1-sSMkM;Da zGHYM-*x>h4VPts9ffKBx?jemjNkYd>-JRYK2`jbgHJ@~NZsz;4wA~v@A#6fZ`2)9+ z&+57=BbGo|zjOSh&Ufh{C!5yCLoXlcZ`3l+3*1BBBGhLEk*c;gU2EHM+e@CdAk1|C za&*|Qr#;?}`P1q@Dp>g4O<n-Nu+ZAR%V*rT^KxbRLw=t}5CetNjcVr~gL9mJ4vWV$ z4!cB2vKO6WiKiXs8ybr@=gvjIUd4Xko$q>x&0#$?uHZli*`$pv)Ccn%ckGbQPi3?s z#Ym%D*o$})0C`PF4>eA!)=A#7bvDu!EKUf zcc)xAOims0idyo&eUjtb*wH@awkyu&zL~wN@KK#CtNKX6RI%{y8R7=M?dWlhoCr)T z!Pao}3GaQei)3uS5u&ee-sM)SN8WU5`>WetpzY>*ly+BYJ30~Glf{m#8ik;b_S6h?FLAe{7;hsA2pQ(4rh8X+QGypOy zZ&~OVS_rcAL0L(E4g6`qqov4}hUS8ROC!Ge@%*xLwDBA=E$|9$1z6GujhK8X=uuL; zCfs+byy-UmitRSlO-u$m(6L}hCzQ5|2Q5n}wE=+G!Pp4MFXP~hs!g5uH}ZQH9-Umm zskq6`#}HR-NLH&in#SNwgv6|dxpYz z({QHmBQnA}6E)u?PB(gLYi#s?)tO?-iR~?puut6*I1+!fo-0J}qpbh>x43gNu}O0G zi;O=Nw?h7=3r8a1$lHc5^wlUzrFEwg5(C{#D!xuC}`FmnkDd;+ZC_Q-{YnZcXJefbKuLO!Cr!{nv6 z5a=7Q#95=?BFMT^#U1`Dv7ZnchCH}$O{9}LU zVV6a2#?*!5|5>iP?tX9aa>H4 zu4^JxXMF0{hA-HAzh^llgJfB_EJY{?6+5uZ9S4HP3B#H0%iHWf0?^<}JD%Hu@0#-jN5ut5ojEnBOY6icYd^YC>$x&WPzU9>n8 zMp(5?ze(5s2s$k1kiR90OBhwr7M)3w$1nfFdjlcXfZhmeJ(TB4CDZu}S}NjkB`*z_ z$~-fZeLkryw~Nzz-NpC@>EG40FXkdTiz^*cpTEgqp>~%qwLCLvEMqk>|CGJPcTMXf zaru)wi8YjN1%LajD$XdLC+7fERVFMYV_uEyktRO>>@np-V6({|jZ_KE{F1ft~ebvf05nSyMm8{&k~_&;9R^-7&~ zgHjGOsHLqjQWXnP0&CRpfCYCWM}JT0;c@>cZqYJhB|H+^+*Bvh0ej$i->|{;w*Lv; z{TrE=^(^6gnj_`IxT#<~CS^FvI+V%AIkdfgG0VSOI?jvfs+--{&q}&lCMd$6@2{o)0I358vDty=BC< zCcW6cXSw39+{IkW()uP1=o*y+8BBcaD~ucDDEcl*-P+AslPLdzUuWYwQ45ehjOfcs z8BWt|+yuZ%A9q308~OhL<3Jq0m;;Xn;HBR78E@N|qZeKFoZEcSfBBPZ-ueeO2@fsQ zT4|n|3DQzSg1+bHd2dg8P7vS#z?|%eA=R*h(bV$1=R?-E+AM(8%dUFTc}Fk0^ton; z(L;Rp51;(Q65jeBUi=3--1V3v$`=|Km=0fYFOQ?Ylc!)Rt#&Ix}#SAViV0O z>xv38mrq`WS7XPvo_L7}7RBhf; zarYmM4NAVzMWe(sx$&I~CCx|9Z_Q&nQr%j$D3}%ke&q72hsM-@3t2jF&RXF2rL)^)P^C!Fp zJ2H|eQ_!sEMLH#3hVrw#mM**+yUHk4{kXbDvgi-8%72*7`28fHMFVZ|~(-3ZDmUd7~TY-M{01-bsT0 zr`o1tbPywhm?nf}7gLDRC;#Hqe>tof{2O9S8wluWKR@?ZT6KxbIkHV#`Knh^&I530 zXL?0jVMeu()G~D+^-%?tsdh9;j!-m~hQ2bBS~9Z=s1fWMgfU_&3P~puX*LaC)P+Tx zBC~GC91$P_hX#ScM?9|mnMUXi)VE($LI9uXnwHu)Ukx=(w|7h>gMKQ``*5luSdR=z z!o7VVqM_DH#ZgCtZGYiZNsrnP6Sf@%< z`A}XXt4@=8!`vjr`kIjGG9#c@f3#aXu8X5o`tZ9l5U>*;1wcO^0|H0oQ2>0|3-9=f z%f?0bc*Kti{Ulk@^!y5ydgBBqEam|EMw`siK{C^+rJMy&gJY%{4gky)-ie*#;AvaD z40OK2F6U|f!Y_E}4~c9Y3Rv*mKTZrd@NiPlm;K@7fmNURms5)z-YwxpaKhi^L_kmb z&2xW~WAH>tQK7(8R+Aq%^4kzOhLSF?Rgir6j}?mYq?QQLtLQ+{QetFjd;*2?l`X)@1; zuFpe<%bX&>0f2qlF=I~u&ueD~qVe;*=R?+5@ACt{`+)w&vB#JqKKFM-P6mCMGlZj7 zpZ)iD|K&mxu8kt)VQsK6)wVFokdSLUj;w&pm?@hG*ZhQ6v7-yeNMs^Zr#`hT%92VV z#CM=8j!-F+h{$t!DWzTpijDH5mI$qr{xr&Sb{U!cRn`@yt_%JvjYJLHbKP7dUnGbC z5m*oeT6zpI9`3dg-bdqH0bxA5)bs)$1tfMYFt?(kUQ`OF#>y7P8g9pPrg~G|Sdln* z5N_ZHC-uAhUJsQCc^e48xj&2n1lx4Jg+pJCZH1c4_Npw{gkNlr2!kNn+BU+d(o$}X zRm&u?SzD^}5uj?mGMA>ubcqnq_JHG0Zswsa%OHT=)a%LT09Iv|FJ=N9k(+*a8~`(Y zZ8_(*cYUt=EFc6jWS~?3tz}tiCP>WzWJY^A=s~hvSM!_&P=sab%+d~>dLfJAu-SQ^ zUd_iC04VJnMA;wK`g)+;VXB2Oxbh-{ZH z>8ZHV36%U+tl%G2Q(jE~uJH5iaypL8oF>~q)PF0pimKPCu3z+>t1wRlh`u+ zHK9`#eqE$R6q!jc5m9$g;&g>{xj{yh9a03)4Dl`iyxd!-{^PTNa_1lK0|0M(dw1p3 z$(@zcr?zVdoV@14Px;#)e$*ce)7}B#Q*|nglp36!)AQ7C0c2ioc}*YiBd>epss#UbByPyb04IfBUyfi2O2SBCeDlAb z`X3F<&KF2}2@t65_*$mJ#t&*dnXjap@vW3nAP-qmPefpq^edIhPdTKi=T+X<;V5^MeAVEEU0(oG9h9+T_Qpc0+u(eI*Sc6q zqA#T7eAQY_DL7OJpvCC^M>~*y{H`#<;{f(qKzTu+%mTn;09%`@D_e4-&z55s-~QRh zFS)~?o%-ZQH-!gReuWy8!Ly|@HcmN(O;_Er2Xd#500#i34(U`J`U7l`Lw|6ZP0rK& z`nebNk6-e6&oO7XwrVm4@ zSm&$bO6bbT{aZ_oDh(UaPp$)@zcsz4PO$O5+jLNFo8L;7*CEzcOnn)~4gM;djNiyc zedEWp&TaFV88J%)h`{n7puGp28H9wG_rGejzkXLc()C3kxce{hKMu0= z;y;WS$^;)=^Yq|D3XJq;#$eI?oFXvl&bLO>wmHF{{?=UAGQn6oU%4OAi>e`Uc1pTD z6jL@3`dj@J$`PUdt5R7GZuF6~Vm=r|g(OS{DlT8xM7c#j80oM41f`m)DKwd8lFuI|XQ`@ZGEol6s6QC%k^qygf<^aGyRyh`2#=mVMY0E3M$^08hRBt0y8X1rdk^}%A8(J;`okq z4r|($X{bVwn29iTrbK`U%oPHIj?vgXuwH`IJDTL|AcioLSXS-o^5{xTB0n*lmzup* zBBmNti&3%@W$~pZiDy+3Zam*Mf_ykoqe=$>xSmDTj|4)gj?u9N=;~8+W1%`|peoKM zsvGsJa={DAlcJ-o+v-d|Zg1MqU}xhEaH1~auW4(Ff~@W}!Jtg2U9CQY)G0eW2*|G2 zc7-M&ZC1MU;e~+svKQX%C0+mUZh-Jb0DKlO9#+zh`|`*V!`Mn@x)=zIdG1b)roNSxw~DH_E60ba zW;32J>+YSrp)ZUm4vEi1TFWsy2HKi69_nGVq~YHx*Q{gGRmW}<%tzo`y^!;j3|d|n z;w^E@ zB6?C(&?K!{TEp^iLFW0x^4^y8J|n;ZfPDshNO5*x4N+@|VP`9ZMz8jd9P1yuWi3qFnV?b+o z-e#wKFZ2Tik)P|hGAiHBhm+$V2$H6+TW;*G-0A$CmD`=zUAfiqm6h{0R#w*K**f&k zZ~)q`W?&weDhWSeR06&06m^olv#Cf>m0j>9$F9_McPCEeOUlxj6@JO0R-d?e!I$%H zencMo&S5*Oc(bzt;K0-7(5F$ZE=(6GmV#gG4i$S{U#{7y1NkvuIX{;d%8ENXX!`P; zuLch0x0L$2nB3})d`lUoT1?Hx3yqhTS1L>FY|~M`(z%}bHpN_SeCT-@@>U1qqYR;q zUE5~Ufn8j{O1j`7lQVNW(}6w~%S)JO<) z+ITZ8_*Xyp@xEgDYGyV`(GgZpW0iDGM`XYN+lT~j7VqP&!D)xUI4THbi@MaGz_GKa zVO7gp@D5dVCqJ4>qCWITd0Wy)IkmO2^0_lBEB|q_xAKu2dn+G1*^hcs5AhXD3IhRg z5C95#M$~}-v9U5zU=0QM3KddaVTFMOWrm8XU8NTdLS4eBL2v;#SW-g_+3*V|(WfIr zrL@GPY$ccdB((vAR@ljtN5><1m=Mq=B|kVSbP&KE1Hb@)JPLqW0DbvF0Ahk{7QiJk z3*hVD_N<5eir^tpLpVw#MWex5Yps&E#TuFE7=P@PvjE11Zm1y#0ER+zpbB<|_9^Im zMJ00{4%*&*pZ)4b%ZokkYRB*TdSCDUV<5oZ461kkHTaj4gj}R>oeD>>9m{afg$NW7 z(6%zDoj92zt%cP*hTfjCDpjGXjL2d}lbS%=Zso5<5AEBR;QiFf7eP%1qhNXGbGKI> zc=6WC<>yH!Qy!%2$-$(veWU}K`jB!s+CiJ@6d5K-Hlh&hL?QeK6ZlKUIbjmi33NDa zckrNJVF?;R;A!0?b5*cQtg09*u5t!S#$|R?V83W}Iy$4DD=CJ)m2zW#z@FE_G5JSCbtdScv* z0|0h*3hf3SuvDHCr9{YS|01fXov>@E`lz|7JWAbB^pW+wl?#sTtz2>b-pYe+v$b-= zna!1VeX76m&d;r{Y~nU2D(eOU!X5v(9q_LwTNE6RJ*~QI4bJ~6gHn)#g1!8NdMJKs zprWLwEa+iDSxB&DK{r{T46PsZY>7N%9hqf9`N<@DPW3gxC@Bi#a;OoIT^t^jk^Vl~ zuH^NRU+MqrOaQzPP}VRDK)wjz-vw~Nt-tg5t*`ivQ`deBUj#rrfx8Q6%C-twZrM1{O!oIKsewr^0zIt4Fo6*Q^W#gb2&T+=uwgml|&Ra(8(NG zzcz@O%7Q{&t(G&znm!7(4kYNXh+Q&`gtX_x0+lkA9JX~|rWbTBTHjgu(#y`Q+~ItD zTemNrQ3U=W_z(RsJ50j?iKEgw$>>-@2YDQas*lt(AXBEdiJRjR=-ZZnt~NxzvgXy=?#;$)g||z>*e`S4$gOdygdv{O{K!7 zfwnO0oCUMcwTK*?mmybXn8g%GXQ2#OhCQI(qKytH$ej!fd|rQgXXP(Hv9a=xH_22i zU8I7jWBAb|oHHX&Wu6X`#tZE zzr=!nD6OrBPk-Pf5T*kmV35Gy-Te=T@kqxeTyr^u2(-2W6|_nt5>ehz%NUY%UA+oL z*XgTWE7Uyr2xOpxVWfi~`Kn($MCj#_4vGGXT})jaZhvfZ z*jBa6y>Hc$ALB`yrUIkzC<>JO6+P4)X1W*=ZIZz1oayIkNk6(%-vt{j20w6+$)l+z zQS4b&Wvy_NMt^Ff1&F|OtSsny+HCXGbX;ot7%W>-{i0qf+m)N+o99y<#cA?q1t9gl zTXf=0&jf#-S9i88(TDQnN4KYo%ycY;1EFmn+jgXFD9MCpv$f$S*@Kp)4L`_mcqi;& zYy}~W3%1+0do2U97JcKJtIDaf5weoQSzNqNuwp$_H_94z1%7Q`iCk^u$80UNx?1s; zCV5qbgcZE>W#ChntiH%ri{*khcPbT?5cEUW&dnOg2Zr*H$AG5tH4VDEa(>fqn`pEQW2Uv6-0=0S*962w=&)x^R@FMIH`@aTYrei|O%8?(pq) z1fov(<|m%_!QrdZfaC-a?)vL_0p|ueVuOX*jZ-Pw98v^Qqew){hDQ1SWAEL9Zp*In zu>D`ot^4#v-MVy3YDpMf5dtIGE+UY?F&L1`Hi;{y3<<$FrpSd<-jY-vk~pa(RdJ;V zE|>kpLtayPOmL`5#f2%8a49Yd2HPNzoFI%O`l9RUKIe4C_l@z5Ip$nz?SKF0{HObL zpE=LjYuvu^jk)HYbM3X(zWfVVb5LuWo(B^#Tj(iDY{X^A6%Wg4QmPaKG?z5t+{TN} zQ2b9c+$ggnN5Py5^>az6IdjonKY`{m~!Mu+X%8{F1=U4)yB>t*=b$NmFD;X3;Q z46)|(q{agZa2o&_*egRrfSPtF;mZJm1~WS@+zAhF<~V4{MclXvF1Q<6f>3$32X_Q8 zB{&B#P3(ai0QuWr_NM`HUC{j&Kn#_AefYf}{!jjw@A;*_^@*P`7ih)@kSjCJ%S8;O zvkOR=?fw{nc?017cpk=HXhBs8eS9Eq^wIv{kN@5G9bdZgQ4#YaKlr%M@a{i80l+`| z2Z?2h1B8;MoFjk{=q5yGtc*{@7ch6En@U>2V|M2XBi$v)$*S@RU}uTi6ZbhDT#4&# zalGO5rQKhC`q|w>m#^|d{}|u-x5uT^)7|AuxcIlP)0mBuM4tSaux)`=0vL345P-Yj<9S

)g=#VQ`LwWcl#TQTB?FWy_s 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⪚j)1`F~Z&uk^ z?krszH^b3BfLWpt#UFET5Q9{-oo=rj)LZ@X}WJr$c~0dICu~<2^po=Jy2mCnynso~-bh9;w|T zP-bRe-cScToTr_$KL(WK3Rfp)b2Bc8E2dAU|h&*U0*98VXb&_F=`xLEW{jAjyp zGsmw=I|9k#f70sK(a(%}frJW#ZIrf&|4C-baBlm`#aghDDQba;U%X?y4<4}x3A!;_ zpdK8*Wl z_WLQR4@!AuY|~xhS{7o<0#Y4|XY{==EVoQIw3ZD<$}Zft)vkvvAvzx=DAu!Xc^&Y)%)~v`nik$YD0xMcWFeMPm9zu z49q}?Ye%XUr z1_X}^j5QN&)FA>k)2Xc|1m>!-`LfgGoam*P@4BqonQx-JFM1D~f5uwXzGh+}fCR)y zWHVbCpy8VqQ9fr9U=Hfotf7lLziB1tP*Bv>QIDwK8NFysA~F}a`}ak8(b}IVsZT}9 zQV+`Td9k83S|1ktjINJd0EQ>C;EBk6j_?Gn<=BNc1!3)5YO7MS71 za+}c0Zw&-W!u#FO)VacdrZ?mXnCh9j)w!uId7;niAcwQ%)X8z{C8N4t+7=(?8Ts&FWg&Z=wDsHozv) z1m=7kJU%BM2X_~j`hO=YZjpuh0*8GgQ7w-~4AO;GlLe8$%|H`XNU~z z+~7Zyv1S+Li9=W%440$zqG#3qg$31g?-}cRvD~vHnD}h6Y5ex z(0GPW0FwqOO6QCdFg**2DRO_Vg>5wJ>4x-Z3c zZF0K8HW1GF#%7wV-yr33-@X603KMIEfZdr=FwUpqE}wC@_gK~`$7@~m`@hT<5{pIF zgk;(EuC3pUw^3-P6i1&c$08TfGHfmlcK#r`A3hx@T|~^v7HHvLcDBG=dfTUX`1yMW z|Lc_5!!?0M=-<|cP5$a-A;h8E`9Lc?OL0cv`MiRt>Bw;&4`Q{Cy(Shcdzwupy5*}w z=WzV}kW3zoB|6!%{xG-jM@O!ZfeDuQl0Ho`Omv9wiiBysD`h!6^%SAZ?LD*RR-ITC z`C!>N~C{jNny2^cs9pe4B&wMfyl$SpUd_inhW3q%|zfka9 z>&b{0kh77BU&`V;r#z@U^f*(}foXT{N<2XM*W}L|BWKWzcIn?@?rWbPm8AEH+(^it zMac8tD-89$#-!Q*lBwsxReb*YG4ona<8_l_U(O-Wm>#f8oBuKf+!xsQkwS30$GS1s z{z4^SB%bbC+hY3D3x}*Edo?MSvXGuvx0S*gi0qzkNE$9UT4f1TxCl$dhq|1(lwBMr z1mxi-u@^=4v?j3WbB7;M3%9l8i^kX6dk??P*qi|fqNUs^SgQX}9RkQsO@#Prb=E!t zL4=~HWLz_bf2P!(vH@Rt^VmBYw|8SNMtm13mo|p|UbS_YI_*V)lnJb6589D%mm21| z8ZN|TPvlwMzwtWDIG1JCuWL~Chrywn+h6G@%o7sB!VTSn*?!_v-gTR`w3BB6D1t>_ zYwXN|jCvAUA4~e|D7DkAn+#V@#NRepzsguR!`@!l1G$6HT6i8*qvQ*MPG+GlvZp#z zHaB}V=RYuZYx_jk0{#C4JuflWI4t~w!c04M>V=oO6W0RklnM? z>s+~X>`^%1kNgu)=l9GnY`|?qgY8&{f!bepQl%Pv>Z`;12rVIDlC#y&=H9*Fo|SD{ zAON;+J51F(8R4~XwDN(rP$>ZSLhp_OtHNcTywWE6ObN4$vPL7brw616-RC z=L`P!X&7|Nu#qcje$#{?cxCSx-O^%RV>y2PAz&rpCP~rN^fDqh6I{wE^VOqWln?@a zGOl;w95Tw@w5jbU^2MjtmP9^7q{c-+Y6^arQy)Ouv^ff*bD=lpl)g}?b|~gW1kr`A zOCK^s8~M!h!F#Ss9_a=>#D%2EQ$Q`|G{+R5l&IB8-7t-TwJI%4xK zK3t|6D{eoe$J|(g4MJkl)(B^Ea2tt&XFOE7%k{s$Z+{_60Ci?RHhL~LQkMTk7 zu4PtZn$O##{wk?aN|?@E_h}B8v{5?{*e_ z3~wZgRO|nr1z?wUbo4KNZknyyuA*;-;NuLl{eExI1Z2-4BlWoM$owbR?@xJD`uO_O zjFx`oxo0NCQT|bE)j=HI7@P5c?T^B{n3MzPw z!bL`|oEhfFgV=p=LXz?~=#F(Ql(G(4vkYNK_gRNFWyFEoSqsK0%lG=hrRp+YMKg%I z`z4OPuH+Ak_WIM1-%UMvdWkV&u9j@qf(Jl$@_^5uNEthIo`=MEVdc(dqS+Bmf}bV%5`% z(8~sm=sKZ2OE9AHa>uh(qXIcoq)#eWhsQ6fntJAnO&qSD4>06j^*ft7kK1WbJnzM+ zo4p;4SQD9+{zrM%>u@^$Cba9(_4+K^zdi2!@QruyXywWZf#qu|rzPQar+?etZU}zO zKm(%krcYw}o z_$3WA><(pEH)~wQ%+(Hy`pGZ0v2FfHnX}0Dit^u#CqP9ReJ}E(ZJHP5fj;p8io~Fn zFnFHvPFEZM!d=ywHZQp(?Ac{_VqV*CLZv9qsHd=L-0fOcUY-mHtr-vPM(%A@LHx+Y z{$1q7_=Oraz|0HDFQrLLXOrk%!c#ab_g{KCcDqK2kzst|&93svE2*vpLxD`-`MWOH z^Q4-R7#rm6C*OhX*i+|4c7f2q$ERMmYQVW_{0rp(F%fMx({0WTbb=K07eG+cmJ!)} z_AtF;zN4l$a|}8V>tX`r*X*B;o;t_~xJ91rSun(A5cWCuj_RywG+{+QI60bv7dZ1% zf*2={mQLBm1tV2m@WBl@OI(<=)Bl>&nn9vT#sLjxL{{@t4_em;`s&Tj*;v5#B*Jz_ z_HIWO^yY+GGl)J>zLef4y8Z;X`bAoCL6f}r4|m4oZ@+KvAr!+PtzQ@#kQH@*O^?-d z!SLl=Qq+jOdE>WnUMhg9jIwd$YN7?0!81E~y~IqwQjR!|e%{TfFk0_&s>ol(5g|MR zbGdd4@G+rV0>Y_BRG;%|^h9p+1&k+1EBo%wN+B_EUI<{I4>TG}J7_u*kqsV%2H5lv zE1G2oy<`Smba&*Fx_{0yg{M~20&!+;k2k(=Ql+$5GHeQ%GazX&wmkqQKH$a|<_mU_ z_2paR_kRVf9!~$?2_Bd|J>~(5O=T5Dy;*ItsD=-zBlVhQ0&NE~?{mgbP!~t!>#N9# z&QAgDkMi207=?0|XJM64rU&gmX_iVn(<(R{Re|<+3DKFhrTU(ePB1ui5suh zEm4jm_a(FfsnqAagxCD*0W0~fOFiEIe!=SYRfKw~;~XGsIP3%wp!z>mgGOhSQ|9tv z5BeBS=-Hpj2EG~O+JiS^_(VrJd;O4)Q9c>k2b#y}O7Uw^XR_?*y(sr3;d)+)vE1T1CL;D`S3e< z(Q*84pAX_2>1UB8VVgXLaL?D%G_d#%>@9=HBZivtv-H9Wo86JCy3_58GUma3xF5_N z+)Half5tfBP{CPF^u2WJ3-He~MqS<|P46dPUKn{4uf3b@a$GzJk)U1p+`eV$;rxl8 zTsh(7ZSlb2fC+}R>5Hu=IG=uxHJFzIeK29yo$RexNBBo(Wtr%N966w>vPi2jEmv47t&d? zE|tQ5O<9t|XKj}qkwSx;pH~BAPuLR+Q(rxbhRn%4zxTw*BCn&^3>DwSU$qhwurze` zcSG3*f$_pl*T0Q68uQyHhU99--*de0=DKWxuLyB%jPCElYWfpB>XzDlk-@QvN?Bgx z&zXHj<+w_$U(y2#*1gsS(~rAjqwCk#wp?bPHT3ztv+q!ozutM*v?l$;DMMQDW1XsD zzd%v{bJo{~N7j-s&*}17scUvI68Up~Rq^%remB1)cQjf_K6eiKaO2gyL+@#RjdH`% z^ly^>V%umEU~iHr#2MwD?~zoDUw&8!m7sO7rQzdAkFYne)CJ{KdF3>j9n zda?M8A3uF65Mmtje&_;^S291LQ>iMSX@Fv6P@39*?GRnmlFl#K2+jJAjYd z8CVp|K)zb=ZRO%&{K@Yt%b+8?_ma5An9j@y(Hi0D3_MX4IXn+eXG@^s;mY=G&W^Bm z3f+K0T(tuQsKzA*v?apfSW@`tY{)Xh{&E{C+wuo}6K06zHHON>H#(brWTHRGmd5)h zO%9@B3D$#DAGn<7FL|+cfk!7YoR0l!+4Tl4(CBTX^<_7Csk?o#QAh)-0*%4hLuH4JL9 zrIT)8beQ3$X{JMVez%IEaLu_xIM9W$~iT4g;&|}qm=EX3>z$8F^Nx2@m z3Z>D@qyb}$cdNwmV#nA6;L#v2tFf6ybxnqH4mr%Q{<@5cJpk} zZpVP2QJuR+*a(I<_(%hHT375TOlY4WIM&4UXeRe49Q{u}my~yycq@%_cN1M5vw{Sz zDqzCJ@|Agj0@7leG{12-gHZ`CGWw0ja(ZHMDcW1v5l+1u(kbL?Da=P_ry$GDg&)i< z@06fk5y?I?iXcHaa+emdcTFOwjrYO`iVW`&U;oh!~~p) zr6kr2BvPhiguZ_XePwVU3dr_Fa|Ts(m<2no=1MI}RG+fVv#?l?@uzTko6UJ#wv0i( zKJM+DUQ%E$D-yOHgVv$kg!?6rJ_bIP!*kTaRw}V;l0)Nrb01)}mlH7G%RhIqey*e6-4bv$(?@)dR}LyP5>O-^1&AEnDpRgB;Rm zj8ybseC-8ZoQC&Qt3Zm(8_Rf~rIWzNT2=SN-C<*axK(0W>@EV#da#`StB0^YuU$6m zKH&w@Z?Vkwr~pBSO^p{{4R#)1vQ^e4e zUF~+h`=Yhjv~K<)UqO$qGc>$r1j!#ZJ%;=xDgxsV!>rIbR|Or~O@-GfPkwi)gjrPv zfDC*pXJSteYC;W>J)%R>0B`M{%3a`q5SYIDoa8(IrYO&8ROtGqD;|x=S}%wOF4o2W z=zRNaOu=p!1cwqnn=X?oa&sEG?>_|K={?>|t3ZB5<}wL^?luxLPgcKicwhd++34!U zy#B&UuvaP28vlBPVIvuXpmBLZT$?V(5bOG~s`)JDC2WW{;~jOj84&E(Sz|%s)Zt{{ z)D{TSJv;MG+bRg7AyGx`w0T%s&3akONy8pWFTD`dzun2gYvIpbX9L z0t1+_eZ1v5^|K#vlUCG!n`FUN+UYZ@|InkE+iK($ls0)F+M$}EBOgbkxa%h^%Y-e= zLcXL{{augFuViZed2V-Wa}jeJ?$E%`b(MMy7E-1gct0d#R`(6-TiLU}QT`qHmx1Fz zjU0_kNkF+M#@PGiF7S?4?0(+;g_Q1I<^^Hy_fAS4pWDPO->$}H0`I~18z=Hkem5sU zO&zxr17+2?sL@T$-_X`i*K-j`&euhOaa~(2g{d>tUCwhvd>;jdAwTKn>w!75<^T z{TBt=QFEay`Muq}*O?BE7H_47eNr!S##+9|MS}hOUnlE*6X`Vz)L03nS|J(t6+??< zU0rJyq3w5D^Y3jro&B(nY+2uic zo?lT=zBvVEL^Nqc2l;P8RGFn~0jPVlQFYd&9z=}IE~d4FJ%9K{3cj$YqH&z}Fr4!R z{o&{4$+Nfo}uOZhzh%Nh#eQ5-bN^{eb(;Z!>}~!;1p1?(a8G0&i}mvhN_g z*J~5>7aSN^{E*yttG5i8rRbhgPs>g*XS8S<3@YN6Ei6 z9E`#Mgjwls8Lq*Tr^im%_LT9vmcC|15!xt+><%+)5tA48e6&{G(sBnEpqpQ2Lj^Sg zWKG$PE{Z=fkB4rW4B%9VXJ-A}e%0_7oV@!>PoJ(mofpb!MfMVqGrcjrYO$KTNkO=x z*581C2ma>0JeYIbs0t4;nC|xjj)1s|8(5#Hwl(}X>-;1!5yKv72qsKJ+L{V>CdOo3 z{gQIdM-4U7#ZUf8-AgnM9UEV0DjoO)nJN=txXs5&dHbE#19atPc50_IF*qdi=~Q`8YFLSm%K)->mw|z9j4DsJRb`AczYW;R!)q>l~>cH+`b-Pp8I{C;6O!=nc!a?hb=vd)_`WOQ)A;Ie4AQQQOX-Fn_#Ky!1F-A z^^<$QquV0h;G0V2zdyb!dtYy79d^O*q;AG02<|tTm6)&gJi&L=P|TR{mTS$(wr{o_ zSOn|lvSC`@j!|$%C-!vehN^kmrzc)&Lz86v_Umr*wt|6a-@l(HUXJf?=1*EIGo(`R zEzi&bSU*y}GZ9E_LW}=q*+HlXTCYUb(#rgr4KsH;z$A7iz^AY)_}qd)wTWX&r}e7;Cq9WMWL7ixgpYsR2$dn@X7=^D5>lEJD}w$iWr zwyAHqg`MZ6dS(@32sOs~-+V1J(A>fwgxMPS7o zhC0W-pTZ-&F3x4??+=kOBt{)~XRG|b$#qAhR8~><-Xt8xm=@FnJil!!+5@B4=6eJ0 z>3}ssC;t>C{G6RDk9qE!-226ix`rmtg;LO=C*Nm|L+A72z_|+d^Z3~-qZ#k=q?wza zYFKa-2i+bbZtp3#HErm8R9YR?`_f#is#h{AVs7?wcn1)iOdJ0B5tp#b)F3P3lVj5V zc2Ch}Q~C)odT(9iJ|JMjU0SOnGoC@!aGA(!Z9m$%wqVq)q76mL_ym1#%A7q$e|*_L zOf0ZQms}p%98c8}EE_n1>9=}1@JPo=C$oi~<%bY|7J;a}fT=cW$$_^kjqbtDl77#7 zQ3nz0px$pg62D!&?~SRN*cL!v9p9saCYS@K+mxMxaGi=S?7v?xdEp+BheRKL>SNIX|rNS$OKpFmBgfnhnOwqc$AWs{64k>8pD>W>@9Ph+$-I zpeOM76*Iqu+;V2bU!-vsRP>k`NRe{7cu_1{DIL{wTG8BxEiKCsod)FhOnv=Se~(>u zgkt)Q3n-IS!t+AQ(Z>VFsk5KZ-=(dwl#m%rxLo^2*@Uht=Cx?1+~sF#c+XKyB|@Cl z?5H`fV_P=BX|rx&UZF9@6@toxYe>Ak2f3e%qo z?RDh)XIMD?Q&8`Z-nTN6k=(Vm?po5c9Hg*j~NyAayyU65FYm7_utqBfa&^W2=BjLMrxH zp#PCAx7%UB%Vw~roZP)7*weH1v0Q|C;NZ5|)jQ+pVfui(41hz(50xeQtSHZgcwQco zS4=Quh9jO?P41ECPdM%~aWA8!zsyPkuM_VqIhDB7{VgS0`yMGB1vtStw=Q zCSCKv^Lt^h{6CMmyiE3B(aKcAV|I73vXd0w+yef6{R-sB_sZ0fTXQFZ;J8`U+O2%8EBu5(~9oIyPa;E1?qh7i9vm6vfro zB+{c-WvsP@xvO(CTq!;sj~!@DMf;V^aKG4CBT_=EF|y7%wbH`|FZX?A53U=vN;guy zGg~USH5P}&cSt|3{7Y_~7bIR}AXXc?`zyNP@-mEYCS;oN;e6DC)Cs2_LNzWRnNG*k zVLneuy3!qh^pb7zQ{C!Gf_uB@iAatvxJ zas%9QOTDLG-UJCc*2;LROFDXzpCKtSw|S&Dx9x%kg_ew{$DcM1}p<#KCZhd*6XG9U+}90(o{k2COxwPsEM)eh*}{%yUge- zz4kkjs^$B&^A#{|FD}*?Q`t-R*wduL)LCBr4*w8pwPKpV8jgv5v5S-fYPNFKOdYa}PB z*MVG3Y^Lxh&zQY8nkQ2DG_TJ)Z}H`Cr+*)G?zslB4Ki@QmFGRL20hDgzVPkDUm;U^ zD{DVm(^%P_dsB_JYaWvkbDqy3rO>nN_ag{IK9vulc7fFMpTd)6$cNn#E9vzoHsxDbu3D*Sv=^jY=u&On4Z` znLnhFD{F9FR2OvcMP&eEX+<0c2>mztrojlweCD)zVWP*8yrKZ$WCYCoI#9sR<%R(^RmQyi#9clXj&YCCFI96&#LUobA#ZnXYkIsRUlh;brIJbk>7>iA#5tJN4oiM>DkktBq|o z_y~R0=RRrLMQ`5Oj*I1W#!$_63@&c9@&wkVn1Wi;5kjk;i=w zJtNd8ocs;2E@k_Lg*;Z*iuic++IGg9=Bh|rdXA%yduJ%sbAcwIsq{Xm`95mJ$*&tZ z0fC?vi==uf@4XdZ8`$?`^N^K}jpfm^H&}d&yU?)4ZE3samuu9i?fk9XiJO;)-xNX* zB19CLRSJfyIDtu|mt%!tThg0ZiRNqLJdV9_%wFLpU>}zwV!ZyY&rs6mVhmyXdp#L< zeG`}COGwcsSI|k9Xs;$2t=(}yKSukbW3e=x3K&r&ZZc$@HaJwn2!{0r;(fTI%{bO? zD#mtS$iwHiJVRbY>7F;&UpL34)G|d`-zrr`1bch@4Ez+-d14X`u-srx6G50Uv6Jm4 zh{uMr$8)KXE9)R^Vop&xKF*jN-lO(Pdk^-0ZX7sT`F%2#S zL+G`C831Ud7$Kv#zu(YsvJqBwWz{vb71VQ5tmxn2>c;0)&wBR`w?LQdh^{?g8f24%^7tyjor?(rLqOK*(#qMQk;Fnv$vipbzg-1hcoi0Zkt#jgA_&*1}cl+wxS+s>*Iedmd^IKno>G!Fh0j}mOmo}U|*$3L?0-K+- zBwW4*UoG-Iu&nox8Hi-%%qEap=fo4aIE;S|sf`D*ap3wtQNSC1v4{OrWBpksc)+P= zeEG_MlBcJtli}VpIXWJ|8oFE37Az@6Qm#%Ml)Oi=+}f+4)S)a&{svF*XpOcGGp*|A zATI;m_N{#St*OhF?uD$|XO39(PYQN0P<&JM`TC?#jD?jh8CeS0s!?gzo@~A;xjPyM zqBYWSYpvrt;#u=3+1o&kJ4VhHQN3&tk-)o&M1pkFB?Vg9R-v0 z{%Z(sF!%Z^cEMSeV;D|#ho)2aIu4%mWUuXNr}D}C(OTt#gLe(2 zMiO2rgI7d-S0}s=BBQq7nPOoA(i81R)~DX{__s@!VIO6^hv}Th3}sg=O>JyPJ@^8+ zo!P{=1XINPYGr*CJT7xi4@0qjFC@}3OoUj~*2F!2gd^p4<9R(!2`@Hh5HUv1PJ$=v z#KM9lJ)_XcpJ>^9hqeP=oCvic>m-J8EnZCMJGm9t#YN>qr~(hi$??+rgr);`2=E3d zx0_e*51#|fAD&VMzg#FD8ZOGV>8IsV$&nB~$ncE6Phk-AwxH85LdJhL`-YQ0BTHq< zlq)V(Y&^@C;;}`X9lpZ}>4!E0FYMc3%LC!Ts7ilB_cW>Y41%h{=6F?LH0P$ToqMHX zR3W_i0y&uGnfAYmnYP+Mc!A;Fuiv5L)mt#@bRFIi|NN$SXqJNt%!3@pjrx;1vH4Oowu544Qc;ZSI zXBYby=ieKd%_vi#9geah!8w*~{gOCoRd69Zx}C+SzTPwm0d?L5NIpRs+8x=cNG&^? zoP&VsD&P(O(OSstY^dlFmk_+`qoBEz&<=>wGa}RbThuK7?MlVY$%0yu#K%Q7X$cwj z$b^z#+g&Ocf?J)#j(CIYt~9%^EK6`8w2fVAt@7NjtmrjL#$`Oyf+nE4hYir=jcnWG zw^K2VQLNxnE4l@ZiF-?=uV7#IyD0mEjM1NE_ZYLIs0~+1 z^3T;@_5kK2v8SFj4h2-;Q9WQpMWQB@B!T#vAgsbhKK4_Vg3f+ zA3zNmM;I;YwZGI-zKZXWg&S^^aB&+HCX%~gV&TC~J9iC#8bOK@B--NPzPxvJeFRzk zjhRSO1pmB1=jCZ#kHu;*iCUIKTJid=M?lpYB#pWVfFJ?}PC~>@mD?$_>Vgeie@DM= zha}{U2Hf-Y)5WvT<2O<0$9X)}BHk0BA>R2^bx1wGWG0(fR+=$d{kca^Pv4xi_94b~ z)1(%=Se-F%fFA=Y2o#p?2sx`U=VQH}XLcQ+Hv#Oj_x9MpIJ8kdhKlkGeIzofBCZ5a zn!%r&UQWw)*wv6ZG7&&q-|+g-*18g?(s-hT+Z|qOJ-i5N_8I&rzVQ~Uc$H~ip)kWs zT|E@Ysn__^s&f6@YDN=Evh^o(0W;igC{Z|lkCFGRQ+jig18?^VGUoB%rRD{->!v*@ zkHKwRjSX}UAOKkKph6}=_RiG5vkI(pRKZuuzC<(zrgx*La1v^7q5Xwy*>8V$A|KLS zZRpE%_x2H3^@3503!Hfm@>E=$vn_iZX^2%9XCHDky-ZyKfD;g6&w=zXS##;&0 zUC53D?ad9*{3GMq*G&%XGl!eO)r>&YE^utHc`q38g}aHyHgftOvfCP_@8v+K@&dro z%HAgH-_^kOn0NwSH0!_5x)-e2*7mq?C59JMu8$p8I3o4jO^`P0_)&OmG09Tr^WM)D z{QNdz6C+P?Rhrfm8tt|nx^Cs0edpJrkCxr<9H?HV<@GALGc|iJ;F>5>i5;4+5>!J( zx$E}0<}8P(Pk5ACF2p|rFnR-52L^nN>r|Uhnq+pUNQp5Il zEEDIRE&IaHulU=7VSGoA6+^8UaH6-nbhO?u67LNaLdxykb`=C4JT|nu5B@l?7gWTX}}!4l8Px@jMbJ{d`BUO@&dU3?z*Q0Rb>&cw@}+~7CMF5 zZUm=#G#tQg^g(Rk^eMEI&E&}oJSZ&EMHuKsQ!#Y+z6nl(*D8qFOVQxol-D&Av!2)A zndRmjw=euTV{7j5LZ<&5NqMe*O*Jli8tn0ygrt*lj@ESd6~}hp!}{Z;--i)x;ZFC$ zDt1h-*cj2Pq|W1_c*53MvoEPvgQ`z}1lK!By)<0tgO>dc5#RKz9`Z)Dhteqmc)*Ex zjQhq97H_8D8^f#AK~?o6AbWkkI%P8pCJ_cP*pdJp>`nf%n=Qde-mvK|#P){wi_3?@Ar-3ZRQ> zQ44=$mig80ORWX1$?h_#p>%DX_go#xr%%rd#lFqqXQ&BN6!1oy}=K14A@Eu$FPJ$_7Tx6 z))$(++)6<7DmYS9u&*YIb?|ri$w77K(Qmt{(2hKpsnjoXJ8OpE13ME$WmI#v$8!?P z&JNMr3R9zt2#Mtf#Abp|6gM_#<%%Yz?VXfsj<4xNj}$dngU=a7Q3LVZg{b_B#rl80 zWY94ggU0-TV>mEO&kga_O@GPN~o03SI$=OY*Qj(vaL2)1Elx%Jx* zWvUQObN0s{R>#a6)NUelCSw!{+xPGo(wCf$kz}(bwUgax_@( zdTF%ix~C}V=4SuaRB&wcrY7~OCOgXa8k4}Yr{K)1{)KB5 zbGbX)klo|Eul?Dn7YV77xFfmSGKf^;iBZ$Z+bcbvRlO9OeFmJ|iI$wJ=b+a->~gE< z#%?YGhw{BfZ328S0M&i3g)5#U1dw=rFqS*&Ha$rjYi?Wm`hhN=C!paiy`%_`-bFRR zY8jO3L-U6B#lvHbJVZ|Sj}qk>`ORo3^wFK%=xyhs7|&{7fdn0D(jhN?r8S&7Ieeuw zt*@Z!ab?#)5~|s=uQNvL@`KQ22-Dog3~y(jM=5{tl|8(VkX9^2nqlmt+U)WyG1u6+cLtF20g<77}X7n`8^lVeLW z+452${f+cq#+UCg@tUI#`q~@w`!BAH-FnX(ilCMP-uAj)X9jRvQIab}qM|A(i^WN# z=Ay+OpIdP5pb7u#?A5!+N(#z77Sk5`7Z?@(z9`p-a#-G@H}+nS z57*}Pe+p)j0r6SVO)N2TwTeWAMe==Idoz_G{mw2N`v1AfQ@{9!ev;g8wC8}TaA#l5 zY`>mzGg>C})&9d@EZX~tt}HU$v|hcYT&xap&+&4PJ?WnakHXvNH!yw`S2tCn$=`55 zpj1?A7`dj)NGLBPxjr&Su<%bAqBX2nntQpk)v&VCWo~+(VXPc+v+jGdsdlrXrh0cF zn%pk`yH2C-zGv>es}7D{Gn;jd+jXkG=fS=nmv@)yW;E(%BWi1NW#Ot}!RxYJ?fNZ( z^gze#M5lH!tBt`I%dmYSnR+C7$QuMWyFH-3b-Jt{ys95fy}d|H^}#auY807WW|~Ri zu9|MIHs|(zsv14cSIur#NAEsnDUCw+s@H?rj#UutyFs|DiH_WHb) zb89}ue`N@(3lIGZLBFh>N8C$8DSjV6Gji+u(qM#r^!`c5j7YfzAT9TCf@04xX;X<% zGK^enm0$KUv+-a=@~FjVZ}WrPc33Z4McY=2<3?`sLEqD58b=OZo2d(C^Hf#K2n-{* zZ^)<&{k~nsCj)MJhQa)HdW4|Rs#hLxiwaKyY%1KweDKWKE72SK-|M`0t1o#Wl9+iL4hAtrJanufF&TIrWeaRh<6r-|C56^uiq%C?7m z41w8p&%UubZSsl)eni(R?W^*1cjkVr15vDyMtinR=%St@T7?>TX}os%9e~sS!8$){ z8lyAE9dA4{10tjlo~gm+Ad%0p+47@S+wu#SGBvpl?;bXXaTUkciZT#g>cMA!G+vs; zRC~77p58Zg<=igStrW#;9x&2n`A#~2G=<&;pOu;1g*-?`oz(yB^~}{BF;WMi=$caZB#-N7RR#W)j&yO?yW|*WQR75Jz;1***2O zy9ChNh{1D;O+<+hzVw3darm8U4kCc&#KN{S54SV^WlFqiQ^;7bz=$pQ9!f>=fdui> zK?=n(#~|i^n!|)j6fPXFb+?5A2?nIB)>nb$WA95bA84AE2aQ+K4%H8Ohcr^O~z40;Ce!=rFmsHm;I$rjB1 zvEcEg^fJ+;x#v6?s}f#H)z`D#+YRiD_ttUQV^z)_hqu=I3Y(3ilIQbJ=yKqzSi!J& zuX3xL_(%RIRzzVoj_=U+#uZx*Rj8gVmCCUEa12A`$PsN3_X=h;Q)VMP)RXAS$mu7{(1 zw3R6NoNVzN%nqNLrR%TkNcNad4G;M8;z-$BJA)U;+osN)L|1ZxGtyQGx0aWnX}pvi zYgzRAf`Leq_NP=laxSXWZiL@6sVL5?W7$7+ZHmQPxfDxjdpli{sg9Tb(67oj?ni|m?ytYbsa9;en|5^K&=cZ%L z(B;?AF3P*qo7wE=V|bCS1F8C_7xKVD(bSzGY&9Rl1WC2^xj~8d$)A?*+ve^oE#cL< zs&`b11s$)IgVaNd32fg(O!N_T{l>f zlDYqok$orU^%`07A&Bx}5<)i60ZIO1CnZCJa68=;Xw`r;Ugk0#pmvhAOv<;F+4$}n zEi3HzX${)0KE6JACO+5#5sejx#6*@2lscSNIi8g{6q(?5t?jF%vm8tYlpRLk^-S13 zsZ$rumQM4W(npJtAF!(awJ#t~t+T%bJu@Ht&|FWHo77WXv~PGU6!GiBUD^y~z}ahC z(%pP@mBOdCdx~c{%?V_S4uX}?^p9Cmro>P7Y}mE`D@N>NOA>K?5}_`d=73l0-c&dZ ze=xt(=*K6s1ga&1`Sh@NkjpLIZ1pYsv40^}Gz3kU;#^%gvieuZKKlKs^|lW_-toGr z@Khp&e`QvcfAZPrJCP3ve3gc(!OQ$XsfMHE{jtGg-(_B(Hw=Zj;~H4?T60m+ zXGL)<4!?W~4R|;pGo9^meoY7IDpFM|S{D3u!ByhHw76ChdI?*> zk^^^_XzP23+|~!{FFs37Y-p^_V~&lro5E=8y&-tpsNfgV)I=Jos6eS6|4?iVatvAt zj;NN@5tMv?Q~$fMhXb>Uwb=9iS5*5amX*UJz4H2}KL$E?$f&Shb8yTL4^=XS6%$|U zkpii{MO)+iC*Z0i%sYJiIC%ue%2 zk5Q4;^8 z`=1&M;L>xu-U~_yn8#cXNHTuda91mP69|Eu1Ml;L$Yr{L^G2~PRcIqD=ioHG6pbeH zwf2{{_M+Z&iu#Kl`-1|Bk&gOlf&&qn&YWNKL-HL35cMXlOtA7hG*lp;s*V0i-AtJC zzy4U}{!G=pV$^)0T4-#XYF+~jtcJcu?)?X!7i&Xxs&H4w(tCC6t>z53C?Yk|*D_j^ zw#OkE<+N$?M|2qxYwrbtjDtRhznVx=A5T}SY(4TeCK#5Ct&a37^wbFc!z^9fvEUq0dk^UZ8K^iI zlkDDM;r7Om!~F(Na@NDmV&aYTcl3ErF9JhcAFMz5{UQR7P)jO$G)CynxR836tSqh? z5VG~b%u#lb@5(sC5zVq)iOJ9Ns8*_Ma0{qb(wpWf_0Rr2b7JP0#QCS}8!owj*$3*_ljy&oHUq|Zo8utYNEy_ zh zq?H#zX|SWIupYm508Km=-a`#wTO@X~4uB z|5exi$U2<+Erw6o*}w`SYn=ltEM$X!00CD84VrA9yXjY-DN)$&OA)1u0M<22Ph?mQ z-ri#g{yT3`^{e0t31(w*m;o2SOdBX?mIs)^h?@;cUmcPiw7|Sx#C7XQiD>e7Nlbl%-+c5$-gh^O zZr0v=6y!WpiB5#p(#Uz|klSuBe{@5nQy*J=7-qmc4>+-JxJXahUBJyPB>UV!j@P#Y zc)s(4*7pwZ{pD^jaz387R|`T6mp3gO*Dag9jXS+tdid8w%|`Qw^f<0RFkh6rcd!r5 zp1#~ENN%mr&}Zp@Q0{=xld5I^W^ez~I?LAqOyh(K<_vwk*)Snp=CJ+mLJv@sjC7r2 z{8o#u{HbkrWoRC8gh7ivKRBq z$oU`^xezZGz=7JC^iS(!F)ut}hn^D&Mj7WzpVhjcrkwfoI-OXNaRE+q9-xnGlCU|? zF#$+xvJecT`AuIm71}K7Ohf{2W~qrZUc*F#r~I{yFAt{f;igD)GPk-en+Fz($^?ML zVXNN5vK^`NCbUcXYKQ3pa_iwGBdO%{eJr2>3}FLeW6)alfcLhuEBJcxv&odFjL&hK zIGfhm!n&C=P0`79mzW)k_cdt~m<0pfRfHU$cyq6jQsp`8^m6|;*7t9Fir1br6TdBi zlJ_gv9=I6J#z+NU%~fG`(XO3^jh!QVJ}7-f>8S2n=-aV8%Yl3C!c*i8p3gSFJ?j{; zMTWli!M|Uw1*N(-SE8bke zAKh%Q(p6g$0T*URWG+o$N+X0fn*9Ii$TfSs!yiX+G{J7mnGAjS)R})99dHa~5Y*A> zTWN)klM0#qc=dIBR(VFSIW%=n@I(JtE$zwQ)NlAKTN{*;!no(b5Tjwto7|w6U+>Zi zrJg!DiDk+Ji2%{lJV=HCx$8DL`=Z)|s^u!5?W*H1w`cY1GIyvWbsJnzf^T#2N4~Kh zYkj+LB(nh0*rmn|Q9D$_(*`U_>}#-+1lQ}tH7DU7&)nP$7b5GJ<|FKq#S4Gdr2MA- z2tsaB;{6Iwy4;Ie2%#${&5{I)gG`>iO(^_N&KDp=aU zcI{Iz>km;!3If`iVtRl7*@+`B9N=iw6LH9O+h~=-7=>cB-wdF68_Aakd8l~$vxNki zQiKBBr3jFaMDZgyOyEGIsNJA`K8sPK1l_rEa4!D#SK}AtysFC^0j`%4&s->$`eMbL zR6^n+FsouGNYV9FF^z#AsZmj=UhIYeLC6Q6!yKfm_Zw7d;q(9~+n7ewo9lg7mqRZ8 zR>?q-pr~6k%A<2Oin-jH`Ag$5h5^JHJt%E)HL*I+yEX!^nSN2kDx4KR(=Ma#030>IVpqM48% z)bgd-(2nzXO*Ph{3UtE$Y*%+A6dlR<&p}!FbwTzmPis#sBP?sm81j!DYE2c`rZ2&B z^Q*z})Ln@M>-7>>GfbaUAO#0mG&v-oj_A@pq%@pry2qw_+`2ivAJrr-AYp_Jv>7-5ex6IA?p zL`jPgzVxlwL&&OiVmU}r4B(SCF*IT_>#)eu@$Rh6LwnJi2>6_k^O;WBDzMEQE=DJD z%TlHnJ-Gd#V!q8$BA%(qy;FT%@5df~uZPPW>sn0Uz-|ISd2o)3w<#I1`FV1DE$K(> z5j>9T7J4kr@2_N*{M7!vjg>7AQ|lA0--BJDf%=Koa&4c*9_!2y`_Tt6v<;SBEKl!x zLvg^qswK)HPI!*>~zPe*bKMj+ZR;I+Jrn)H8z?Ep1WPQL8yGu!2qib>wbnell z&gd6u$@uP1vQq!s${Q4{sydP#Dyk(w-O)`a4=39>_D8&U$Gxd5gC`%bhyAzIu~_>r z<`iGS@qV{s$E@M>a+|`kDNd%?~LVN1K3mshMA590kv+0HN7O8_@v zInegoaVzJB)7vdIx`|Bz>zB5N#RcocfBU4NohO&>MYz4~5e(^qad-;24O;~%?)3EG z+f?u=8n$9R^fakjZXMtT$PnWBzSM&puK&K2)Vq1drre@NVVWO`hrvc z^H+aa1K!oIvpvCXH(yv)4O5X%DGoV#5OiqSzEJo<;H4_)9*HI7@O83rv=7A6@VZo?437WPhzfk^UG<94 zf4uBD?8lWU`|e7yWjH~W=b>b6h?`Jp7jrV{ONKhU!NQdynfnvkN^ z(9bS?`)-xs-Hvtk>ukVyR zExc1c!?75_VuQpP@%N%zW!#NhFnUq)r;y5^Z#as?FIS8#jd=>reUFtCy|fo~={8_U zL@&hgotvMT-T&xdyP82_mVIm#dsD{1ADB~;fm97rbjLW53Mar{ocuoAN_6UO7R+r^ zx5k`GER*Vz;8aR2c=9QqN^pZ&V>=3RIz+*S@F-dEW&j(6JQP&@xL3z=brow7&-Q6o ztG-NNB@mG;1ug4)SmV~n7bOm9{W3UmP?{jFqfA0cT>i>^0TP#@KMSo9qMG*~7EK!N zb2I-Lhq#a$c%qPSNg6Hn&iuMN_%-+XlITjc^Q%euB1;yA&-Qnde9DTt9^sYvsrP6@r~qq^#z3YRufm>UK31`61yT1E2Yo&4 zow2w+W7v1|7U}hn&)71c{i{XK%=cm@x2KJi??tjbQJD4j5up^VyKJEz*1I)^nQsTK z7Pj)Da2{H7N3yDDF^VBkJ= z?rUk_M@sG;`K3$O5qTSUOzRU875KXDXjLVPQ`9pw+6u*dz$1SWT}$a>ZoRSxYm$G0vbnkHjeME+ca1gY1i{`InG0SYyK1!?a|P>M8b-dVtATc2)-k z7l|1n;>|aUNU-E%c9;{auRJe^KwShl7R}1HmwYQfEb?SqHv%%X!n8j-XpV!U4l650fHn%4X zp1&?=b^GiB79sB4NN}`4&TIJ3=*XLmn+tXtZ;A4YnYc=C5#nh0n^!|or^5W|`?uDk zE!{3jYSwu$#=T4ehajCQsl@x`=M^HKM6QCyTpQF14FpyHRaK_F7785E$yP4V>MIy! zRVD`8pf;HrkYYqG|E$WwXJBPl;ORr_=IKfMI$fgn$%7EYk;Vm0+xwV)>t7!qyYHqq zN#4tA61BTbQHB1jGoQ@tQ%8zSg$^<>A9Mek4350?q1CRWM~Ml?Ohb?SW;@f4xDuJJ~2|>{++vFTQ>KJgJj)N24!sz zwao5aZb#PUzWWh@+<8VX^aWN!_l2hQBXndT(t{BlhOSBG!M`_uZCDkNc-Mm1gA0^f zGIoV>z7E6&CRzOEY0r&j?IG238QNp{V@hcQzb6=6xg2dQTK%v10HYCt!qr(RX0*ie-xQAp@_ar~IVnnSKTbd+)Pki^*!W z`K43Clk?(NGK&<{I->y-2cuxwC%X@)J-!>s7E=KfJ@J^MC{6uCNh+`pwAM_13F{Ne zLO;uhaXiWiKKcbrlyu%(IQbfb56|`Y0PPqD&mU#aQKw1}+@67+#{h|8NlWlDI}-g>Q99 z1_qJl$d$Hm!dFd5_!hTY1gdd0piXCM$zcIH`vY+CFzTqkhLd}he$X&Psu_1OFTq)@ zBCtSP5aRyf(@DN`BWJOVLk4QT^K6Sr@;pMXoN_%Wpd=$O`IbBC{5jtXvPZs@CZOqk zuDo*sgB#}$MJh;TPWx8gzLMPJ<7oBo88GcdLArP=+Iv0TP#DWdiEqgNYE+1#r4Vnj z3hG&f-fsnW4mulHo-0mVRy!j*C%oFqIr4&{<6v2AaGrjv0Gi=%G2VapLMLDQs5Q)_ zDj@&W>WFmh-4MKxL5nhskK1}|o2#R3yYRrp7wAF>FjIqqTmnxY8p;_*3J7gXbp~u4 z`rGA1yB=dHSsi`;0Z8Ds3_S3Y2QnMymOmthd_7$=6KlJ;EsU2^*%np2+Tm`s1VI41 z6&j>$wFU*pWVGVNTEOB)TjCrNo`i8JTq!dC9*vOztolnQNmg|QGRjg6LbHsa>mSW7 zNEx6nMmxp&3&Gu?mh-tv6REQ>)}EHMlD2_JDGq8M4NZ*yJaq>was$;U+!a@Y6+>~N z7PW6A00aSvh{dX!$lnqGr1jcreF%oum5_RwuWBU%6f8-$&_h|N$gH=L>-`LnDn@mI zh!ER{HATa^uWe_M5&3~a=M9-j3 z<)1H7`+so!Wp&|Cwe(?I?j2F5ajRHiAzjX<5GANNRwFZQYFGM70I&1AU7qzpR;0(j z$qiAKO$N|);1m1?+v*9n`|}j?%$4=Vd3oYS6XJYUW?P!HgahGC0{r!6Wr$e5;KrH* zm9pdO^~-9NU(aqg4zfH;(ITXBVQ>E?o`;P#_HWd8ZTH7K?CpeW;v9V;Du5-V*1Pg%ny@%$KT7O`jqjZLJ3mha+#e6SDxhw_1fjTXq1!xq|V z&|5tEUfERrY3QT9|8@buL~BP+tW1JlGCwxjo_|IY;5WR`YS_dS8-zrXFHA76@OJcU$?pVCb{8{W5g6I{r| zJI~gH-?892%_Mc9!Vp88R`6WPdT6FR`cd^m)D7F!?-QL55z)S}z3HV(T^D-8jRr~O z{lSy1Pl9^|WhV`0x|^g+qWYncFeMh8tGA|YqRYL{ERx@Tz4QW>wqGQ=UL6Lv&Q>q9 zpPqlauk7}mijCKdcgXt-gRjLDU^t->_DtXXk6Ld(Pt|c697oQFh}g7^g)BX#23tv6 zLe@%reg!^6HcS!(oVVF7@3ICl8ova-_bqG*iN+evmZoK3U1&BYCa*6f0OCQVnSGKn z)|?yLP2v6-cm;fju}Zy;_q!CJ-K#9opJIVOPfmDho`vT9&TdTDr3cPA;Va#_KtB3) z-y}4r`lkZ=^+m%*Ow%73>gQS0{di4!#2RmlB<{qlceI@Wk+&?A2QL0krKL8pge@n| zI!GAykr=aV5 zv*4D0*1PqP+0q-br0o$=WF0Vx{m`u$iK^HJt;oGD!b(#41hIps zK;DNf=e@y!9;|Y6>o7Jhv7; zYimEE=K`$0;jn-nob35|&p(=(7iO5_N`HaD!H&}npS%6))kBt@z4##{7Hq*ijPEP@OUp)@Hmb%IW7tTr zc-KYtKD+cNY80HO9Ekg>y)HG<=A*q>NoNzC=Ne8_`*AK%6sHba*nQ`rE6~mq2h$!B zVh{f?qG_4^#h~lEZ$isdFRlJ*35%};c1q@c3~a|Zr5C?auiir?T5Pw? z!j1lhJ&5tN*R*lpmA1{Mrl#fD{~T%R|6&gp=(B(>@yyL?`hvkrHE%SJ0RcIsNPlPf zU|o&hq<^ma`YQlD!8&rc$ExRdcAFBL7rmanwrmGnA<@9UkzAZ)_axdqa%%TxM`1WUSxHr3I|W;@Z{yDu3+1&e00SXEiH#_ z{Ua9RT@bQI^=ZviIDYcCPf(iuACh~`D^Q{J4JWhQ zXRgXb4O>JpgPp?i zQ6_STEV*@8I~gjSMQ(kW);aH1wXHG7B$r0C4+Y@lnf5E|9p9Il%iJMth?akRt3zp; zk)|u8&EvC~?*F=W-OT+5sC6o%hT@qEk6OZ`C1>qLO(Kg}Y-GclX>bvPz`b4j(_gkH zw&yQ*55C!ffs55?PIP;n`PNxji-DKyeme=qlkH~WcWY!7fgfDy2LLX9a z-%eLUs#f)J0!6^sIc5gQFYH~x4W7GQ$I&t-=h<@Z9SNY)0Z_SepP|`w&U0l~!+c7i zgwC}W8^4FRUP!roQLE}Hh-{I1(^|CO&E~9`llIAQ=T&7)CauQti!yAAS`}$~q46%|y2d$1DLsHc!reTH#N)_y4 z?5Oj(m>cy*>H33E1U+rFg#}5`&uGw3t$3H#$g@2crQKMeohuKLqQQFAH6P}LHu0!? z1wrp^)l8Ff=~Ss8$zToI2TJj8s~wm{Z$W_TnpSjfXUQey8#$Pzu& zCTg~vp7oX;_)-$PP{G^ea-PmNQ7R26e61$Ccn;fZ?idW2${wg^=EkTdB`H<={}DuI z9+@fraU8!l`1<}rAE6wBZ_p~8+|@r%Rq^iQxH1&y`rL@W6T17U#Ms z*~TdRyq>72BU=SUUSJpF%9ZV*KGWRH3ubfPfXjxM)m+rzZz>3~Q5C{)DYtLCHom!kL*DW=i?AVArJj^DvODp293m1sPSu9ST|Ba0u@am$MKV9Y{N4zsiC}?p1ESJaiR-ts z)*lxa3Q(UKXru0g|4%|N+@@P2D9LVK*T8N=YRSVtYVGVOM4}Q>GD<`;WT`(E#IVm? zwVDMF0R6+t`_7ZpEaCA}IeBkbj6L%f8*l~62p$F~beaRUq*imMqu{d6OeH#w*h=HB zaE65^66osTs)1}agFobTdtUguJe?S;rV4>YRqOr=1viJBo z6h?2qNs1+tk?~|;zbiwZvei7iYLhF@pd~@(P?^R11Ukg_vMWT)Qbb+MByozp-q$!DLu%3%|;!TC352IbPjG z#&St}pP=8T0vqZjLaKQC=h2heS&|Z=YTF%zf1F9x*$u&6s*#83tl6^2fI!I{3P4hx zm|exXo6&HJ%}@@y>h13Ur6St;ACC26FJ zjMZxYYq6pRfX2zK;63;o$80yeDKy1WIpg=_$3g3lCy%TpV?KpHyyof#TB(k6MZ@H# zAL_ky-aH+8%Jb9i+C%6wRgaj(bD<^Sve>#2o!CSa|5+@|S-27QVLYp(;mFAPpa)bp zvjr z@#CP=f9{vi*i7Dk!BsMs+CI$3r;lbb&v82H75KGY@SR9>vJLaTA#bzGmLHM z$m~zV*;+yDMnx|JP~NAON+!N=`3XrthW3X)c zxq)GXy*vBUUYWmXu&9+u%`c#vW%B}-*^0OYrwaW7r@4|Bm~&}j6mN3eryyg4*G2ZpbR)Yp@q9!HDak)XVc3?(sj zmq|{g@GA1z0lmS@IjCR2D_ljCnj@jm*R>D-Eu?7@0YP9py7=E9ude?QMQ}wF8ow&6 z+KX(L-|?N7-@-9nR~6V)eXlROxYNjsOQVEp2Y1x*D(XRW?*oD|=f2bN9&Iv>WchxJ z4`oyme7e2O?f;k=iZ-a*e!kBq*bKe&DPrGbt&savn$Xv~m8E_RW2nr;95o0u1wZca#5aR?RxuDi)Ug=o2aD3L(%0`2QLAleqeBj%8nJNUVAXca8(A_&~TXyE|*FQGd zt!PdbZv<{geIHNr`uvAXp!xdxQ-BFdgG_6o$o{9br8BRsl+Xj-2a}N{eRcES1_f1m z1m)m~;_v}6Hc4Nr)YY_byX*nUWraH{MQ0-CtrI4Xsik7szhta~cpe`V32V*+v~4fi z1iqHGqQ1##Hmt$iJMS`!WY!sia$>3a=Exngco7eT}^WPR~ zb==k;{M`{(_%ezY?ay9v627cahcz7%N}mFxIP6CkT+Ix|k3(?N(?X>)&Qc^Zdi5vv z7mE_IPa>&bhX)s8)9kSi#J9c|+t+iCw2i5co}ZyFoB$gkEt)nLpJnPLoZ=Qq8cJ4~ zA-d5B>|ZtC=4lZ22;Uj|N6dBcXom?FO0q0Nw4Z_UIAFDD4{t`<kiXu-w7Y*11`vIssl+r0gb_N@+xOsRH!etbr1 z2+>7n*s8#b7f19!55D3@kW>_E+KolZ@qEkv&f#qiJIDh0<+D7P$Nr3fQ?-})762Lt z4<;42xeo97?`yPYDex6@Rrq$M9Gttf z=NRDY+NMYE{zCf6kF@Q_oH3+> zJMEtikK&-b@6&$5#;V3Hx=TTd+s%xo%Ro22L<&G)4EfEYv47hp?62GtJxwS9Bf;pB z&ZvbY3VLx3Ob4YV(-t17l>X$(_ynOv#3`6$WzEc=J=-8zxp+f3T3@|QFEs1|tGN8- ztH}gnmKHaW!a4heDS84HrfCd&Mn^KY$Ho#}((SPA zgZb^(KLa8u^)3v@6>eKx=kgYwma$3!27VBzAtN%(BwmrbjAzO(qYl%80^36p^1u}3#qkHZY^I2;@w3SY_0C0wL*u-{ zdk|@`r1eCITx&b@I==+W<&vu~0FOsSNx3+&+3>MaQT?7fm(<(Oi>0tQbT5^-i`*AL zGM5C@2k2x(y03GS%GZtU>sA*Le>_EUA*SW2VwrW>wmEA42t6p zKjGX>JEP--l1f+ChC6@OviH1P!g*mG>m9E7qwWmRu^0))W&36&G+n+xD&=22ar`m&q`kkoTz$QLtDGwq zS&?Ip6|`KkVGU@tyW#%9Vy7IVgY=d^c77^w8M-JZL;}M5KD#90N^hf{IxNye`TbkP zU&se+x0VrcRl(hODJ641vC4$5(7jnN1P9nrg-AQ~R}6pmYt!cl64jWfIS$yA6iYc^ zufc8x-2WM5l3NDfng~3tD-niBZqG}`ngC1TGi}xN;cDSrhp(9$erE3*cB4J+Twb^u zQzxI`X|9=M{TYlnk&z3JTvdfQ1jwQc+aBot*ZWrXawd6=jC=Ev& z*S|Klob+*~GK{sVh~0;=dBz4)`NKha<;0pSt4bf-d3A9xDXSj-coq*yh#F(+*Lv39 zHg>SNyVP*ygTD{`=Fc=`3p3pVM07LVFk1{Ws|klsyH+hGfY;yclq}|1+XYY}09U=3 z3YYE)IIq!aeZ6QVu_>^CT{u;_D_d(%Bt5Wp{ys^B23qlxTqL`Be?;yVpOcJ|Dp)^P z7Ly8RaS$*;>CBC_Z~wDY9)HV!B)$paj+l%U(UloN+>RkSdDG|hJzw~7la@$R#l#~W zn6xH~+Fhcdpe4o0sxWpA39?F~86hHo0X&Cbnt3d*0eF`is@nTo?kYD=>Wuhb!W91u zQIF<2tuu&iaV`AK^fAnopnK>0LYJ;%?KFDzYvwxrO#k?=k-+JxU8z&)+{1F$zCtq` zSeOkM;7(RGVS<`Is5pV@Ps7PGd4nYT%_gk+fyFaPV8^Mb?g=XDSih$HRrF|QykpPb zcJ-o0MLCIa(dpvY32!B^jBW+F>=}reMi|v%72Zi2K6K&SVNohG81%grL7OiB486~Z z7Ov?LMV=q6(`R}RGFkbv)K5hDvq%ZPNSq=G?-*F5YA%0S7E8jB{qIvFuYb%Qq zOP%-jgvk=3k#wkNG-c!}o0|+}1S;N9xN3m41fql^ZUCEr8QOoOS@vncB73oUh@VW? zb8nbS6ZQD$f3FfcUvV`_#KlW3br4{d+pz>Q!sx#NJMF?3uTD~2U*{a^HGZ+(5e!yh z-k?vG$3Tq#Jz%9+>KTwYM-XOG1z7#=M}0d~rf1Fr#^*a zf-9y*R_JP^&t=ahy^FN>5wM2rS0hW}z2Y&4TxKJE&9^-N2>O<(rxAjC4l69{w#+tC$4!@kF z-Jjsx3sn(HNER>s{wb{k0}1GsWm6TyjEU z&Kc~XvVc7#_PzRsr5{?QqZxH)Pd-rEEZLl#pBY$}9#2VZw#um8rRSlr^0?W@HP+7! zl_MgCmxp>>x0XAxLh1NiG}VvW`SQJ~0*P0F{; z`a`$XMu&fZEssMwtr6gzL9yGV&_rql z)4+GOJH%rT-bP>h6%}!K>VvFSe!IgwCz$Ml~5H&q?$51JX>Tx zzuU_U4xvF#L+tZGawqfykb2J)&$CiMvu8;Sv}^OSoz-kY(hNLf1>iMy?96E;jI*5U zMh}Q38pD=2m!+HsNfYcN_?;^QKi-LQTUENp640QplTLd~ABeW;Km5y{zyCkIT_aR1 z@uI;;Yd&N-1X1`unpk1a{L@nP=QRy<4B`tCPn8G2*VZ4Q@Onu&q_6IH(Q?OTL% zvxfLY#z0NAi6`uqls35A@)}6$QG9;NYp3*~aAJe9{+|kSA`wLE-DJKp;mxkN36d%P zanXmi3a?TNFMb4k;yd_~HPfahh|;lX;EKgYdlPu zZAR3^Drr3BLnCFZRl|vF#?bc$_XNL8prF`Kg^aUjljv&UWH#h&~e)-jTp7dcHu zHNOYlnmfs6taslWHB8FBlQ#lz4Vs`xy5q(|ZNGen1gWOB;-h6lipln$k(FxTRi${H!5<|p%d=%NcFv`)oA%ot70X`ifj6}8Hlq-V!;mvR5wuu z{6~pKvXw1pyoaR0&sB;oe+Tv)&qA=0MB}KmLw!Ad)8(DxJw}QpH~b;=t(a`&Paa=k zzM!?BdI!f9LBC~W^}1ER%prK%1160Ooh}snt;f95%@{{_D@ZrDRnPI#QN|*V&GXnW zz|yy)o}!sPx^7Vcu^N)0{)Rk8G627wOI-~NP4}~5-jpb_B**P9%yy^M%`pa#f2eMw zUQ0oJRP#VGU>Q&fKq?|^2%h`WSx21&njRu$F|;Za0+O)`Xme0ukY3Ho;QR>}qPQVQ zNDnUV6fUK10eP|+$+PW-L70PfeNA^f*=IMh7Q2(>E%cJ3v^ned8LE#tMvXix3P*Cl zDwk$gRU-J%Z~h4KH%ztHeQhHtEpL~itRq5NL^g5lkFrlm{Z4EMpHV#N*;H)O@#(tT zcIn?kH>4{#Arq<(Qq0ARSCk`I?rL3*;^sLPyn2BM_4!;cq7yi`hVZW1F2()DG;Of!R zcnNCGalpt9f;fI3q?%pF(6H6Vz>h;RxlA)51E->tiyeMStbT-o8iO(q78d;c<=R8U zlfhy2iyT2+VPW-=?RDMpLB-X9+EAGX?ED8SDZ;ywbgX4EatrVAuGr+l2;d9N^k&P- zY@MAKpjoMG3Q`XeQc1%bsa%*aYG~=btTfTxb^%!tIeX$u6_%o>clFMeMg6Q!ZJ__~ zRR+&v)K^qAg$Hv=SNnl?fMzhY`G6jf*}Z{nUS2|;Z3AiC2x8UR37p}t4zu~4kG;ep z-u8Z~*OwA2##Em6)3RdJcgGCp#$3**1Qu07PvSDluQHy?K1h>wf%ZLke-c{RTGB`7 zbHegziFry9(dABm=kBY)7u~J5^3Pn`$i5Z$Ux-QotYA~&^F$MHJv+#*? zj-zVF!GoA5hhuMTGzW~1Tv>Dp^3|V>7M(KO%VLv-7A3BKZ44Qjx_o^YK5PCKf=@Q} z*C&AHosHk*FQl~7HU1U(4*ys)R? zQ!MG<)n#^D+?9CV*+N^p_9tod*pMgMttV!9LaroMqB|Qd;!v=EUr-j0rqb}(CR#Is zu$-s~M5Y647QJNPi`)ytnyYl2qgspG5W<-SH4KDqpxa8Y+a)Zd09XE>1E|;dP z-SO7k$K5(y!bCytnm=y)=jQXfW4Bb&777Y?)&u=A&U1Y(Z+5F*@|qHmlKTh=C0-N^ z4?QdTx`RjhKw>TCDSLZCOs@j#aUe2l;!OmYZ{}rZD5ZIPgoa5Pz@K|Bo98zOq{8>U zX!d5Uj$$5CfY%K7uQ98_zwEA5Zno=DH*EeuXj$5r<}$2~-5BYOF6V9&!sv!8Z;}0b zwC<7ZP^vfK(+fC$D3aq39tRK99T;Ld-@AUo)rQo&Da_ufZZe8K@2?x{r8H)@1n!cN zJJDV}zx7zOdn+HWRneg0lvz|S6Ne(&{0zNpN>kR$?pGxK8n1h|*YB&Vt9P`5?sP-6SlZrbN!7KW6izmCAx%mb z54CvN@|P#qmqBw0%rNXaA1e=BC;9nG_1G&ET^DFDS0Zf_pD&;Il6DH%X=XIF4%s=0 zs4bvV1H;2Sr(Y`Pt;MF(Cv;scgXX_*ptiQXbJpVy-hF2MhU9oIIaZssq%WdIt)PES zdT>zvpbj+HEvx3XX)Q0%#$cWarH%Wg7ODKiwOg6Q6Q|J#nhlq3Woin5NB~&>l)?@q zB&_||$&Wl=uLvjOmOnionL;0YzlKn)4E1{kjDHws`9o~LzZDyp;_`*SEvN3Oy@R_65+3d}-4y*go2HNIrg%51$uQ{v_RC7i}L z3GZt5;s(#V8AFsfP$UIkIX@xzBSWoDSQeZVg4lCC^0I+PMyXO~7}^O?NInQ`fy7Q9l+o zcypBwS-`deGTTcd@;d8|pH}IM4^%ERb+k`-d4{X2$T-!56dv@p&o9ZlcT69+olPYB zy<*xwD|$}hmW}XxXp|5jmqSK?dI8ipG#9s=Aef6(nhm07rT|1YgQGbG7O=+vnS3;& z=OuYPlBt`gG)S7+v&dICxeq%15nMgD6dAC0d}2UxR75oQp@~Tm{(=08PEKYPd=D4) zxN>EAlW4(4Rc7uwMdEh(S@N>dNhlD? zW)6zHCbd#>os^5#MC}Cox_x^PzlH}(OK%~e?Ba$F=@iT{5#$dvAxbGdu+_&Q(R9Ye zt0>fYFKyGFJ@b%IBXxv(Vp(904M!{H8_x-3qyQ}{vAR=Dx+kj3 zJQOHBf!zjTWabzE>vBrY=N#OULVC!e6w0vFwR-w^6uUqoljJp}IO{gmP0wG5`hF4u z883I{Bm3upr_8`hh&^jGLxh~T6HhG=5ir{wOAkJL$(nU5>9tKI*7W|XGR4~%U6h1_ zOJ+JW)fG+9AH7Fn<|cW2;LEiuWjo*lB??6|?i02hxI4q3cbW@c(0<4M^JIRR*ZXuq z4;Lr`lQ(J==SYp{cZ<^GjJjrO`*GaG0)#OP2{$4{$|ZhPo3;A?9JFEh}h|rdnq?H2G$fY=o;@2wmgtBf;+c%b7W} zO0BIjVu5X^z1DE&nwuQMZWQqI%#_}HJvfNoX$X0AbGn1lD2U_1SuGI{+6I>CWykUg z#QMJAM{As{xLo#dUbUG+!RhyKTt@VEut(y5J)wVi&9~T17^Y1%V=3pKdWZ*(^tx*$ zOERnmJhA7RzGr8&w&sZVdiH9PAJ^fZl-FUJFtqNMV6>X7@l&$rXUP}Gx5mmTVxH(L zo|q@)dKdaV5>{Q?_>iNw0T*~}D}IxoP>-)aD>g-uC=h;y&_N*$&MP9}Gsr|p!1~C3 z)7js5n@@GGP*tVVjBbwkpGbPuAWR;KTcs|z?B;zslyV_c*ordBBxG#H^I7~h9pQ+v znp9KkRFyb=k()(BXYP7XaQtuh@Us`hr%rbt(QN!6^ysYR=T64~?#*WQ4(tWhosi&q zMinMAIZ)yClnXpMj#A7`exX@vrS3QzUk0ck-L!)GEt&Xl#A2PfW;UQRoj6vW=Fg zP6Eb6Qru*2mzhx>DJesvSnc0%dw7tKt0QQjRf^>jpR9iQCVziz9@MnPeCP zGZO1WQ5`N=GxNKu0Vvv-Fi$)5?QC*Sku4IH;v1y-mTVX^yh$0 zkNHC^?Z5-_R;$F%^cDPqes*Fdp29sy2SFb1ssa0VggjfVh|c}}@-k0nwbh{?Fx6*0 z>&u3f?OV6^N*ors>-(+7vc+vvZI+1iKwacvEJhfXW>u!Flf>%djdEqx%^7Ktzd7(} z!eY$Tf%8PI$io`Px9fQovVVk+zGNOm1@_8SsNWW}RO9z$TwM56Ns@?GW~>8wr}=Y0 zciwOkmKYV>O^jqUSLU>ti-7vO+Z~!ZsAbk6^hORLEf8svDbCQ~vihlj5@V2$Flc|w zKVO{y3Zuws*vJt%waxU}j{kKZ&gO6Yb*YOmxC->vLD4Yfvory7bt-GKLMD_cNUA># zP{w|Hs8!q#$&9`&_;7j`g56xlt`6&PjUV>vIsUaW3G6OTykXY6DyBg3Nd^^Wpz+=$ zZ#GDho8I!N>^Z=IYmH**Sdod9%0iRPy6~v0C4TFqYTE|#OpixSrF0atdAB3(&F@`I z)l2uU*JoFR$(B}^3yDOd0@x|a*z`*GJ>3qzkUa-mM!29mz=dqe5C4rD=y@#Srn$v&X4Mp>XJr27zBlhy6rGljxJ;H$xQ-Zu ztC-)-7+kz%W9wv3ZV4E#eA335^y{hP+eh$;im^kA1fOw3c+{!l%GsFl`o4D4zJ5fc zd;oQDcMsPR&-`9D0&sI)8SG&l&?9TOp^^!Y%0TGkX?)tXViA(Ry@h}tyooXD90dD> zRBN(}R5`DJgCFT1n22l?mZVWn9)cSWbHNO0-nXUmeY$jS=9qXnjb3$po~XdlH#{#y zPS5DVJN^6B_Is#~lA^v=kgg~Ojx}~I=w83dBt{s8rbVkv%xwQ%q`iK1J4Y;IhIiF? zd}Chaevl7kvr@Qx+eCDuz2M06xYEf6|LW=gvj9}8h8mw3$LQ9nCYumrJ_x#71dIf! z67)Cr9v@IFu+U-1 zg`C~Q@Q~}5&}9k$b0*?2eSW#zUGAk4NUm1+i?M^V+sl*#--Ez)3Lo;|-;vY55N|=VxDN2M43) z=4K+$JA(S;3O^!*7W7mjf}Ke?o2XwX0GbfqUo@Pg2Q)DpE2MVw|MJQoXv78cX=ZG7g(URD;mYtwzJUY$*vwMt$If2^3&&}YFq-VA&4p7^Kd@)~)_I%Rk0$4PnN(cuv*8)~NA*x3Bg2HgGaK#sZ~iWk zZe*JHISXD#{H_|&;&+nA2U6n!r`k0m8}M)i#Bcm6k*);Kf;VjYi_)-`w~3*iyD`D}sEeh>GoA?I(UUf&cxS_1 zUos!Q6VDrG2>ELtX0WQXAZG-;rUn_44YC%WdT`@U=x|Wm=;LLv-q%`dK^jz~z4@1g z1N0rS(#@h*k3}||%d{~!-<00dPxYbxUTqSP^y$XXgMV%kbKTkWwFTQfF7F-UxE6n* zQPq`?^8M>-RWEm$hcEvdKf|Vv&-Li~owzenX1h!?^c;TUXnkZoM3cffuqD2*E<DUC}Lab@wBE-olD4zwn^wIfgO-L8v z@BKW>BEBCr0qOwL-y^j$u69ikw-IN^!9!Owov=pucwuRM?GKm~lCfJfS2~L+@W8CD zUEl#AW)skSuY2cdErfvYq)}XQ*OvMh+ytWd7c(< zwzTRzt;XUtsk&K*gkvPOtguev3nEvtfd|2^msz`aKWsN33btSS`t{oHr+wLn-Zj0) zdy*a9OX#qI?B>Q}wwuTXhva2+X{`mD2~-o4KZ0NoYuzadL?J@dcMDpSxXU@lH+XNQ zG5_QmgX{6p{CGF(?0Z9JXolmVAF^jGvy$rh;#4s7N!?k2 zNXf*%2>O2$=2YwxdUt!C+Y9!}$=MZ|O*VWC`&Bb|ja~4*8zMh@VF1e1=f+w(C2Y_M(yPN|+hU2SNYrQ#;z-MjfBsOnGZ4YHU`tPEUn2XdXrZ$c01SYg69-FBu~K#Yddvj>mMkQ zR|K~#+`z4=ox0sWjOy=RJNn_^PnucVi%h5kFadMmWvIQu&*_qEZvVrt7W=@cq>bTCl1aRg;KO$pOE6;3^p*c!1o`V+ z6*(u)Inc0<{Q~2@M1)=JFU$k<|}G7i*!JbiLLIzE_WgTU=2RLASchmtXbtr7W3x=u%lWtB@SS{S?` z3{f}l;j|Je8-ypNR*v@x>-99-97O8TFWv501aZ~AEZZ-sD`bFE=B*^dMSYk7)9mU^ zbv+WP*ds~oQvfE#3MI&{q$nlWs{YX9GA&l7*%m5ska{q27EG~XRUvW0N@X^-EDhiB zuYEyGMq_{9~gBf_61J4NQQMNsK@5|B z$Q3Ld^=Q4uqjQp$h2`P16}J?1cMuNdq_u6S_XP%L>6LYt6rKS47RX~3i{kyB=ao?A zS8b<{EBc3%W9L-Cbsp0Jb#aE8fhN^YhZM?N*SLuGjp({-hAx&c+Zh(0Cnq`Nc;U5W z?np+@X_k5K+7)ru>n-I{nDS5W5PHjK-Cg@-V}1c4Om|&E;L@&_lu(-xWJ1;SL!a-X zFY_sVB?kp*uID*#I6gm{NvwPopYuhuls&^x=>TUqK3n@lsM&CxZ6QTiHu5E#L z^?_2b`Rqvz0-1XDy+|?s`rTG&Cg1Ecni8Taqm;hV!=12$9}LRBz{nBr@pvLHD27y1ighS%=DV zpd||W16OJ9gIk}jYw58Oyu+bmv;gFnbsyB{{~2Kco0rUNS}11~T&NT4#G`OvY-ZgT zVugdr9+Z{GW*rQ5I4%p3fKj2hLAG6uGZ$@^7X-W|H-(wd-v+TpE7ysOJr>TJF^%j{ado{KA0>t<_D^$ zPsCVGOez}JU32wr=)N;lT{hJ@b*>c)6afy0-@87lgbv!5z9sdwyo#C#yB{j_t0>uR zlZgrsHj)zEONY*vL4p>8@(6lu&1wrUrze@y-H;n{VaYs9(})}#9b_stp{f!)Mek|g zt;*3y?^XD3m!tQQv{EX;pnIN)B|1hZ%5%ao?>9Xyb58KOh@rBAOw@cIEBEoa-2B!5@d>RB0V zDXUnD`=6#|?K>1y&c3ZNZ8%og6T2~g-YY&H!Q%pnc-_7$3|a}>(9hm6-WzJ){u5q= zZD*>-X$hVA27;x3_F3VS=Rl-c#Ih9n%oH71IDV?*3iouuzzT!Brx-}gfc~vV@}Ao(7LOy|`Z1#oZ%>lJfiV(y`{6z^py$@J z&xT|LkT0C6^P6G$&iA=ww|;;w_zaK#2uVa8-ed*Yumvq)uAC5-&Y#YhP9DhJ&BS^A z(DanWS=d{zJf@YrOUVBYLu|aa{;j*}8UEY;#*piR79wu9RO`QyE0$?hLX6TsPccW# zH6J=Vv2mrcF~*8E{?(ZvzJJRm2RlZ7d~2h}^8qo8$&mWA*RyryufKb|vVUdq=BTrR zKLuZBTf)X^0x3ij+-7V=E@W*t2#U|pf}iN3v{7MGo! zU2C=f)xa8q{5482@#O&lo0w$~F4Sy0&J6xId~x`-0oCdt#9l8KA*X$;K+KA3A#GZgQ&;w2FNMxl#0sS z!KzrF0d`_|JW(htrD@7FeS0^ZVofiA*(dhdRm{3EHs$ao<$2}0uN%7}ufi(m7b|9UEuX*_~qgv#qFid?2S5U|f}bU8wb} zg&C>ksG3Z4F)33ozGqM$(*@;rqSAe~SNVLc)&L*>F!{*!f1>T>IQoijUoyqNIsoJy z3$>$6oIGHE_WzTlm2^VjYsstb8PDXo+u9F>xmzY?(I?TmEv|bGyjOqVa`x98G=mMk zO~4|i_6;$qqeirg!)UP81aqfbxEOrR>|auAfL_KRDfbkSflmX$(pmm6r+!e3yL;;3 zaYYT;y=+xtF&{lFF;vVL{`=&^snfbqMsX8fEk=lbGe-V8FW`g|a*a_d23DQ44)h9@ z1o*X#E&h=eJK0!NlJ_nl5U62bis@C&EO`~ruY)0SG{uepKJ7??_f?IVwMqq&k<0@_ za!bV(alhQ3@8LyKwe)+xZ^;dap!hkQt18p+#w>kIvC_GzmKvbnNAR(N8w}5(1Dm>3 zBJKKgRtTr5BOc#N->j+w{|mRUJTcCrgHIF%loytAFuNVGhPijRn^`}Th!8rGsd|n0 zHrf9*(dBTyrMuCXMOO4s;`hF!EyC!i#$H9Pj&Sg-$d!3%xi)iqM7PvHi3A6+E0%ol z-eiWeR`4=%$gq+;MbzG8cq28|n6}gMqyJKb9x%c-T)f|w+1*L$_(867+blsUT7ReH zzJwUra6RxQ#j1w8OOFbAXrDX~sKi;JHyloU?96KdHS5dHey7 z^Mqv@b)~&Flr5LGN?Od*JM?NR+1II$H+G&sHU?eB$_4I=hb%!p13j?cnrYN~5d z>GMkR+0+qdvR(VPu~n|z*{83Xg&5<5s}DXv;oEw1K&pO1VLG%^ldszQo~DJ26fJ;E ziM!UR?!2*2O1J3Y{UT$lmY78ML*keI&PT@LGtOe4FEj>{nhzN%hKfI3!U>*=3FJ#< zNcJYBRH4|i2$)36tX0OE&K6p9Q)*%*9(4s`U*?J&Dypii#Q=GrzR4z{DU&@4N0!g4 zt$P^9#=s&K`O6 z*#)LEn$;APxtUN+FtV*a%t)ps{&wI}DngH%43HUxzye>7{IlOFNPH!q8RoL+!A2d} zTjdG;cO3(}TXu}=*X>;RNTFa?obw5-=;@i@>Ka?ePpDR+?3T$=qtW%k0EUq(fbNP$ z7oo$X_V(iNzjN1+MUWTS%y&tFnqXDvzE$wmj|Im7wmz*;J(`8B`dczJbe&!)kWuBeH1QyEB5dgd464iZ*@P3qd-$i?r~>jATN{E zl~XKG`h1b{}`j-*}xG1{Umpp(?A56J#XOrD2=2;?P zv4$vLbys7R&3qal>jUzBH!ijPBV4`zt>sPh>eE+2mV4Jn_P7kVjtRH-)k^a!T~iO2 z#QC{=FH^qs49L`g18HCDywPf~>pi^=b+jC+gh@&4ctx3>F>H2(CCYO6k+ttQu)klE zB=LxG;r%4rPw?n1c1h(6+g3$)qhx)%(I;G$mv^IsQ`Ek;kFtO27}mRc3J6x#S<~3d z)xbM&m)B7ctjDECAyods!T3soY)ae?A zeK&J{tuA+~NaJfIW z;w?(GYP`m(S9H=an74SssZuOWbSlb1^~jJ1mQpq0x4$>$=Q3`NQWXlc^yjU!w(QOj z?{$k)FIDzQ@2d7t2A2~d(Tp0b&m5WELz@ITVxhQloUdnNEh@rvbI>aH1qaCBjzWSP z3$jEEolalE2jox+sxm8%JIh$$TB^~g`6#35jBs98PP;|U^#(kTj;m7x8)*O(|oaw16=hh(@(JohI z9+~H-Tl!CU;0L>r`P6cIih@|OW63nngbkX}jXm8Hjm_nd%%DL9bnFZE8yD6vC;xyR z4_pY_E|vcxD1*ZesseL%>8s-J@&xwK>jnu<));t`*{@HKkbB;Sj>Bd%VnfzujYM6DOo;{V)k(*p*(Wk=a zdY@kPzK+F7V;(SvPAlz3*t<=@4Qrstw_6Mk4eCWFTEjH&VxdqdrXTAopvuQaiQU>A zpG+dK<3s&)e*Do)aaG*WTK;eWGVpIZUhf3I2`VhvBMCB5IZL!<=r5=_aFzG@LDZ(D zv;IvEOA{{Baxv$y0c)^VH^u2IPGnb%2}T^I))jb~dQ@7tWv6Xu$$7Q|mtLY4Yy-Sp zoeyVk4AUJB)R`XFzQ01uZ^$3+d_es%MX{ zI{r6pqdKo?H$WF>y}P6RfkNtAwHYORBOKqr%Avx|9#?{RBcu9~@QQJDfm15Kauzwcl~ zb^2~;xn98nmu%q-4(05%p?X*gAj&^}66nV5!2HlcMw}eylwQm|lPc-N^ z1t(RaDZH(6oll(QE4mKLMo&H=8jAxlaWgWvw)3W100b~8Hn6NZ(>>4W+T_x^m|jVu zQS?Ak-1}yvw@WM2(`cGq|85`kb*)5*Kt;aFfEEW% z3%cOH%`cwAnHAhjJgZhxz{&|cui>kwPs%V<$tsEvy0JX(GCyg&p^cE-$aJ#KX9d1@@r zI=c3&moHPo?kZ0d=dQgK?@>yznm2R6D<3p>`|?H-5yL`19(2nf-<#>!$D;<}w?60x z;4NRc`3lu06igV;3?$R^(IDRk;2u*&RPP)2`uD+I0%P@nL-j|+1VF(uB;CMCYW2st zp72#x?d|Z+i2X#@@f5)Q4jzxzlc|(01Gr|`K}F`${@(X|AUFc_6RYX+!@uKE1L&K( zb2dlUmD3!&fB)5PIZtwmS{zKiT36K*anuUxJBX6#mUb|~x--ibJ=>s;jPcxCshik0 z^b`gbzGYrcb=2taO+~wJVF_36TDcA{2TnUO4`Aqt4f;c)fYX`)PitGd0X+e0uKKWd z_^{0+k>SnS`vg+;_7qMzep5^3^BeaLO!vo=@yz4m-v7}f^AmgT$~4g9l8hb8drNeC zAW6C|&>vr<|gI8McJ{|*bY1C^E9=^F#6xDTac`R3>sxv=t zE?*FTB|6Yv$fg))Vi(ELefBfyPgSjU ziE7??zvi3Hh2u2-xWZW!pn87Wb`{U$vpgAYnFQs&hOf}f`PB-)kh)<3Vq{QcMzdd( zZ`fJWl4=GC6_0tGN<%3y9d5#=;`FmAm2%gRI{VSI%RMWylVz%vy^3q6#eM+(@?FI5 zUabXAG*^YAR0*k3n{R~j?*lx%uaKWccFKtk?&U}~&B8lPJm z_uDuy1R)9*4tJ|Gizr-U4vW%DcQejRsy}$gF}})6k(Np`_ervsR7vCS6LlUbk*r`g zqY^2VmYjS1L8ocvV=g%DVD4)&tNv5$b=^q9xwHSJOOKK-_ns&B9`7!JJZF5wG3>t+ z4MOX8@NlvC^+)pzbp%TOZs=v|-cv1aFhG8IuZSsz?o|}?mFnhK4_Z)oY$4rpRX`Dp zW7Apm7?I?!9Ii}DU-@s6{kFfSC%dH7iBR9?xNbWA<9z9!8i{g6j7g_PQ@PrC0o&g+ z&n^7pJy!#;aod0kU%6cYNxwW+M3KV-49Qu}XpBOVvMU4r0A6q4;^})&DvD{ZA_Jqj zZV=D()6Y(Qzjh*)=;3;gMkhJ3uh}S+{O}id5dxoSct3Z)qL$UZ+>Q$%2-DH8`w1mr zjU3JZ(J68hQgXDv^j=XjqpoTPSjGjNGeWQj&-%J(qC-CGiXEOkFuQ5XDYJp7Z~X&+ z_xQmF>k<}^{GUm&)_X9*U5CvsxWYL6c&8!bK_Wlf^>s8DTQY3a&aP z@1)2NtY2q7O9_5MQYA4WR%x(S6l~{pXbPe}`mrgn>%H9T5?*phiLrQWw3go9utl*@ z&{C`20+_8mlasrBPdIlQJ0<^XjH;67xA?`+SyR#yU#b7OrBnn;DgS{gx2N(y6_`9= z#ptE3wKZ98rTDK#pD4O#J8ak($ugBO8U>i>JR}ILp!wI(n_cvz@KL$v^gecMdPgO9 zKA#QS>kq4wSOAAm^P4e|LEG z0B_Bekj2oV{+@{5zmdF~9j=B~TaU&4H=>{2x(g8P??ghJ6G90SQIAM3kur z2q=S5A|fgR3ewH!7>qGGM3iPANXJ0BySp}egp3Xu-J_dl{+{FcKgZtg)qU^2cYV+E zbDkFe6z{mVO zlSK7$lGaAbQErQ-=DaiU%o916>{()tuXjh;d21VA^nGfFI&nDH8`PBp2a`w7zIj=d z9WMvO5HD+sLs=3UG2^S>?|O5<9`X=5`l`rR+bYHJ=AOSc~lTG&W1IP}}@XU`m|mNc+w*FSplGk|p4KfB3J8ZRfb zb(Gfs@i#}DmC8q}w*m`nWe$;kcffX`>Xp@!Iwl?!&UcEF6+E&HuZ}ornstGcoidqm zx`^1um!KAJ!RXz$H+pit055(uSa=xNX3Zb7L!=)5eD|_Y!(yDM&rN9SU>{}@rg&t> zbQ34I|H&qwd9R>JNw5sm$CO=SL7Fhf8K08*&$&Hh2(&^S;BC{Br=F-xja;w%2d-ea z{G|M#s8EQpYP&%rpV5kY2Ei4~YYCyK%vBtBx|1=Q-Ad6gNPF0jTNUf3Ymk<;KFn3Y z6kf%V%m}O+JR*&hStl~}IUU!SxAdH$L}7asmL81%z7in5ek*aE0-_!0CC|a{R=bvP zT;qwVm><)+gWHvdP8`jpr^6C;WqySPWO*T|%%y6SX_;<|V?U(Nak4YByMIk`qiX-r zB&KB;rqa;G!_~t`dk`WmD3!!tf?St{$Ftc~2GP?x@)<0#x^5Fk`UTviQRW6~;kX?O z)K$D?S_HY?WwTi>Xi|4k&-S@U^$pa1qObB~HXc+Yo^GfDE!#6&N#a*}>|n8%*$<9y9Ty8C%lugn>>F@f#opIvi~1^Sed)SC*1-;UC7+bq-}e$EpgAQ~`)-O1JUY9pQ{{{-ydp zE6Z95DFKfnXQP5QhyOUwOyb!0$cG84DVmVxAJ_QPTn5)BqLbXEOK-=4*taTIg|~qvCGy6oz5QZG|tMyYja;_-dmoJyHrq>y7zKm>}*CRC~DQyEmq9R%_}d- z^Vpi*AduLvva6W4)!kadx;Hdeea<<75t4sG0adVcW%Ziw#jJpUr0%P=C`eb!JF*Y~ zNbp5TjSBa^{5K(_bbu6OyW@^4e!rwnOzXrUDvTEB-V1<0<5>Rc~|HTCus2MT1-LEz=H zb1{WiOCP*X`oU?EUbnlI8r(kqU3`Shlky^av-$Wi??&a$FQ>e%KDcN$t!II4?qwQR`Zx4wJY@fwx zdy+F6e9cp-cu05cH(8DU(FS3@Vv>8Tu{d(pr9vug;JZ~oef-OwcN3k<6^_*S2Tdb2 zCb?ee?HqZJjFATnJbr<_`YJ}->El2;8>e7gSDDhI=AE4&9!~8(S1bKtv!uG+YsHJA zo|){2tw+OI{=L*Xt>l~8_IDN!N1qoJ1@d<8%vjX0dT#zPWTJesJ-UpFP&&tb{f#S& zPL#Jlcvc&2M^7x`x+Eet|4TsU`0ss@gO$v(oJ!qNdX*$UaK{=u&D;&&x9sbo`n684 zU=+prJilNY>3*b=P)5oQc>Utth!9%6G?&8ZHs{vgq5WqNK01Q&TpG%ao5zruaE44U z5q%u0kv8AL5=ndsnar+s!{6~dX;>~b1ElESjRmAvYCN7>f=eqV& z)18Do9Uwgs5$?@Rr78?sUZo!GfT^3|(rfN1dc3B8g~Nf6zQpiTeTt8>Rn0>z@1M>_ zWRK+wd8^9;hDLmz?*1l*ty>9v+ZdqAR=8CB@{f**6}!zBD!B#P* zo_Adc1FK0VE^oDC^C_pnh47hE!w#f2H4F3a$7aw4d?0MY3DWVA&nRH&RalVnX7&{8 ziz=|$VP6J$=w^pI{ABYy^*ij#E*-7i7xKr7>jKTfsis0<&~Fx?2eA;fjqzvwef;xE z^>p&8q6dG>$^*V{YC27ACk2AJbmj!K1Hu~%+Q-0eW19i*e{B%w<4wdC#+OBfHvIs< zR=tv#%nxtg6NQfmpR=kw&KkHpo=TEKi7)TWIo=cZZfIX#t+a^Ent1Ys*)Akzd(!#I zAt@P~3;NuaqC?n%Y>MOBBsG>LtLS)7z3L~Rp#952?OAImA2hPk`m%CsoD9>`8FQhaMA2u&uq!Gp4gH+jzeaCm!GSi zrs{bt_CvJ=Wk8=H6(+HqWKS`8@gf_$j&_F}!l)}#sOe;WWU)`_tTB`FO*LL6Bl}?% zM=RN-+tS{wg@=oWw~4$V)CL=;B>C`(U4O)h4qB;qa`!~#EH6fAk0Pb^O24Vn+0a>k z_0K-Vw}9!u!V5o@jZvJ%cCg&QIF2hRd~~{vPPJ|xuj7nvEWA z5`iR|2w3rZh-m`~u$c-1!N`rjEWpFIl(@ZIe1y$dSmpU=8^=Y9wR!bwOMRv>{tXtw zhQEzn2Dyznv{0z&<>rk|d^w_r2TdNna69EzG8}xcNGHC|Ld~kVeA7ajtL%|Z!B6z+6zcXoZuKwRt zlF!Mq(nwwL$xXHh90y?&+kF-8R+LkN5|m+3*(qjfw3|VYOhWjDZ@`)3O0?}f=w$Z zCZ=bCbI2cl?0!J;hKgM%UI;)NZn6G-1iF&tGx~i})xb#xcCOy^MQ`V4KDy?T z@x7uxEXtI7&aszq1XrVN5BNJ(Es*y9latLyHjbZ_kAt_n(ZHecK7?FMcGSrX#`Y zO|)vCDKrsbEN|+)I7nYFmwtF4oP-|mw&M8iTi-!JCzhR+Nam2X&zHp8jpFVtaj6CY z0^-XmD~76{!?rGZCZRO#2W!Fdaj0IO&dlm_r<3ikP%ljxaY+fHc5qUX!l!e%GV!x+ z@xgCON5mZc9k+Dn*G4=MYPGiRCO_!C&mP>Lj3Sw+8y)x@&{)Iw$9}GcrkE`6i8z&J z%h3jcrAix|IjNbcf8e*d+LZEsZ42B?>d7rOd#jWeMTKN<5snN8=W+4kAsHyz%vV?$ z0(ZWX^Xg+uuM=fwoZX!4Rn67re`4zd!`1!ki?8e9rBKoSC_57w=4D?Q23G>3J`s8n z6C`T&Rz^nPo9n7@U#?b}yP}guD47@k!202E(i{!IvU)!=@i}n+BR*R~4ovhC+&Vkj!V^;@;H&@o}Ol zE_N@}AD_>;H@4%R=wF)6aDVa{L&Z`^a{`9=E`!cb%PiVCgH)$=2a8@SeLNbGJ~UB= zJM48vUg|#Si9C7}AX6M{#oRQhYpM7cj^62yO z;~E1cOk?k|)JecC_9mryf)+?=Yd&rf-G({=wla69K-InWhl?HACO1iA89m~JD}j$h z=FQHrq*BT|6NYzve*D#~(UvHx95e9aC>!%uBqAhG`ZX;hr{2Rd?loCdpR z1#c6A<20X4-2Cr%!IC57rzg@n!<`uNW zkR)N7l73gZ<{S>$+o4}+&}RcYBv-p0^RUoq&1Id@HdyWC`TC=cB4=p^Pt)&o93#z$ATf)rWbgzl|-r0%1hw=RMghh!K&kq%6l#>b4! z)B?~J$N!u8xIVtNz><4$o~Zc(`F2fI*Pfb#$coZt?%aPg)hl}Ga`JFXCB(lugu`m{ zW8y&qFMsite0qNI>(S`(QFN@Oacd5_n4Q(H5|4FO0X-Q<-|Jb@OAkV;XOqS;|8!_S z=7y1y2=MK+sj#zct-s{hH$NP2bfUF^&rNS*f7+xyGk$jyHFFLSu+-t9ilpDpyjIe( zx!$$~q%uoa=xOzO2=D~|c{BJBZ6Wr67tDP0Ck-iS#Ej|bbUv*oD~KNpvtLk;%9#&V z472tOZd`a_zGwo0ykaRvD1`ax^k$=4@Y?J=Vb<8rGA*} zHl7;L77A9VT4fUf57~QB1~)pn5t3rvY0@m2GW)zfc&zIcHdaeKP^ zl3`H%&x)y=Wu$l5vEM1+zhRGHN$@%w&}0}l{e(&PGX(}Iga`HPowR5YAHC z{*F$DW@U2DYqJ2MQ(4&kERVzNb%DP#G;_lRv!PKsM@dl|4ZTz<+WU~S_?N8jACfn`Dcjp~O%(q59z1Wk{ z>k+}{*B#}&dnB;c({gj%HQrBhJS#j?AE31r)7kjj3UY;bmUv42T&_!_mT`deR+E}Q zHIIs~sUzpDYVRAX9(TxNEVh&6#?0Q-^^zu!p(LtK`87!$pE2~-29?8ks$cOnzU!#1 z`PA>RXx~^X&lZkU z4c82fTgsD<{uEtWDVXzYhc-%T>>TLFtjeahLMD|WY6%-XeEXxri_{_U3?!4=dmf5+ zQ*Z6BzNnK(tYzuuUOBp%uwxrf-W_gssI1q`w#57JRbH~1{1AqAn|OZrpGee5d^oC` z;sFK?9oi(v&2g^aFT@#kSN1T*K3dKB#2_TeF3p$E58e+q(2% zlD5hRvAk^4-*jv3Uwa3BU*DA^&J0{xZltjKIQo3rh4$)PQKX_>UwWkyYmQFKiIIM* z!89zA1FzTyyUcB^wg0HGYkK_e4oQnQRqoU*J3lM(e`%`EP)u9{gtc4rsOMoPvWrRt zb43j#d!IFrPY5U)WGcE$_Wlvw4SMe%26$F)Yl}jPo}GT+I_o1rHQ4s5)cv$@PxLvC zhwo3x`?F01OP_=9qE`%S6*<}Ce~&p}swk)~1m$vjX zh^?asliT>)>fB*7ZH*oOXQ3m~=fKrZosU+Q)riNomOOiXBSVIWSjd@}hVlB!O{sp<}{lGeBa~((LO%n+%vE24Kd%7h2THE;7npv!Jcoxq;G`<f*6mAD5vgbBgfz6TLuh>wKS|yI8)1&-V^^PIm7u*-L3?4uzyI}JuVmk+%HnBw z!|ypL2*}wZw%{<$LW_R5i(JBylcThFxKgfGg{b7F7w$J1w926S%9$^|%4|vkjHDfe zN)LBC0{K7w`HIEy02aQ3E?QH&`&agC?b0i~*Qc`)w&kSuGix>zgI>SY8u{}5RXJoObxeIn)Vgs+M6ZG)jjMOKcnV*)!5Mf43Np8Z)T#q){{ zsuppMD@B&SuyKLeIUU}~8HK)7N4n?KR4qgs2AT?XsAj3vYwYPgK3^Cw^t5)ds2*^w zZd$FHDOAk~ae_^u3lAY%Hp&}eE+MmVYkpE(t}(Q4aoko&=~HeyJYB`A&v3u%YWfl? z=txbHC_KAG7vMD=cq;4RPRGVT^9;D(u$e9mLI+8Ek4Li!AGyK>+TI}k(x)zlPX8ET zj+85%4`Zvww2nER#%Z#T_iEO5QYWM6L6b7zfq9j%rVb_w$qBATF{^IiLWauvbs%d7 zhBbWi@RejZUTqgoSF26$sC%?ZFM(j=2PX2xmbmpLD-5WV`24h3TxQefbOq3yhw6Ad zOCl8!1rJPWQU}rtUX@Kr|NYgF79+KBMBWrCxRAPoWAH*7Z+BUAymuRgcjn?d`epEg z_O&qr%2JW>}-y&-d`-4{(!f-ZdAS%nDNGP5gQnXdIEN z$YISMQb{pYY1iHiS6Rtz8T<0}l(_~*nMUY%YW@!!85i2K(8}txy2r#Eojy5Uxj7&x z>JLcvS)rW%m>2T&9@7jO)qvSAKJE|sQ~eFBSbt>y$}oNq$z^F8xQ#{oQM7DVD>@`i z@f-Rsca{qd2=#|-1jW1KcAOl>ukvKv2>OPhefS+!r0X5n6}-hv(fi25OP@{0Ag?)R zUFzr6?oTh1^c}kpv!$U(Lv*W#WBYSd7OLu&&iV^1XEM}I>?)&wX^2v=`9RzrEByAGgu&1W z`!lEw`&?ldAmDJ>aUf>PUdnZ&Zwaec{u1k1H9`2f-}{tqmTjUiWq(hd{L9vEp4u%Y zW~4J~k7IQfH+f-}JoCtvD1i>SUv5r5!<(S=;nZ$9oFXFE;56D_yqJ`Jx2N$D?4?XX zHgWOORG(3kM9U5RgndD?=NJF43qV0_Bi^vM=Qw-=X+d;>3z*-!iLEVnPg0k2Pn<86 zW;j`=obG#?3poH}7sV(q3ADGN+fmrpE+J$0rK;J8dAmo+>O6qF(p&46r1@)TLjBx;^<-63@Vrj*POu zgXC0%CU2Qdl2$ea|2qvH=;N?1HFT;2tV<8-qC&vf#t}H7@i$ciK`3qu+b5uh6 zR`(3OCeeDewIxz?OTj@zckuI)QVc#WAK@!hp*ph~)><)}Pn&vMu^J5UJFoa*2pQIs zX3Or~EH=$LS|vZ7H$>?!3ClDROw^o~-U(B`DOv~V!DfPvO~_O?>G((vyX__Ip;@@X zvxx6(1G($Ee#U~YTopsu#T#nR&NJ}*I1&=&uv#oE1@-wV`xalwi@~Xu`k0*C@6#L^^@cYxLhdS`Jh3uhP-g>Mu`4L8oWWe3kHMi-huFWWZ zDf>@_?OCpSL;??Px7<#K# z_MFe)Bdq%;8_8%saqme^s)KX!TSXyz;fuonG}Arx>c={ZM~~KD3q=BuY9-ILf!^DK z5{JCxqjrRa*ZKgo$~cdJ+q}YdkKxrF6^!z`kJuKQsr?gXBwR7s`nOItyNoAOHEL3* zi+^lqB~CRUq|o_~sQZ*Gsh0xb`_RuNf5rQD#C**Uq3euwe6S!O(gV6#{gpCN0pmLG#lfn>8jB9vmZZ)_F2;vnV!UoMw_iCWV#F~y*r44LpAN6 zu!aYRnQ`&`WGcPEsBj5wGTZQdX7*vcX*}(My8f!N($n&LGL2dNXMGczgnunox=&kP zgaGf=o_Y4W9r4?SW9HQVDNW7!!*h24D*2Mh(>}^YJC9d!?q7`h^F#^gyPYFIfVOm1nxIIc?vbfDVV5XA0&-F9e{ zO`&#x^w@%Z++Pxzq!Vj9mrg9REAOjNbc2Kfg8mw1N!ayyrbMt&_jXvHql7r6bnlz4 z7uS@NrNNr^f)cy+u9Xq3EZ2{bCp-XAFr&)ewloX54Da(TWN^F<9wXGt37ub*Pbt#n zIu_#G_}x{nGRi1Db{&Fds^b?ZElGxpFSY#iSYdqGwZdNmX(b#hVk5ksm62(WsNC5p zNL=Kp)+WK|hONX&oZkK#C-RdELzGJ3BEb9Nt5{c4QBU(Z=gC~;l?dVxlHGhh;ymU; z1KG+J9hv^}vvQeb%RT#9pyD^fa~-!qBQD-L=wcRllEh-X)BBUa^mF!Ky=8j}$C2mQ zxgOhzWAmuI5qV3PGv%Lgt0r~jmVbVtI>S8whdFJAg!s;7(M*eLzW*Dzmw3AJJ_;~a zw8ZnnZtTj0#BKN#n9~x%@@IX!pmaJXM#z0j@2^FF2b8YYg=zqgs=<_@%1qsZ(l|3=XO!0N}7h_v7qv z_!?7s0lrQ?37#Q-btrUDWagSC9xqIIyPupE#xk_0u z9kn}_FH~KfPzz}fZn0OtAu^5K~Jn`O>+CA1wx#6 z*PImFm#h6Qot|gr!#OV+e6jLh^cpjICBJyC##`Cz+#}e;DYm6t9f|I_f^SVZD70!&QP^r&d|8(<>&Q8ANBZ{%2jK`FnQpG zH%%=rh^DVcowa70h9lL;Q*#?1@HDF*2S;M5OI?u5_3#;S14>cEkbWnQG`gFqTP+|> zyid^Vw@M0XfrCy^zD%30vO}uH6V4aeiC{yBXO}`Jn2LQq<>)lm`bZVxf2B z!~x6FeT%WQo=zy<>j+&gW$X>u#ou8q+=+H$$-J9*_0LxiG}yt5kGYP^k|nENxnx)C zZ*}>Ytd(a%mbhou=pW-I3HPC!ab{vK|7LIMYPk{z%(#d9sOlKE(~)x1H*UpHA{1d` z#a?y}A@|%!X+qVLZZ_%Cf1J3~^o$BqBqVSJY~SKN1ZQf z-SV(20Dk&1Tjf;XnLY}gC1#f+?3QyfUKNxfyVWKhZ@zgWaa}!3|NPy56l-&viM1OT zBofU3l-V^tNI7kM=xFYC%Ko}pBWFAC%e*jBAh`Ix5^^j>@R>$_CEee=jgVe` z-y2g0y@i)5^-Cgp>t6ny=y9dnMTMWTpBw?>^nX2owO~E&pNEL6wpvRB3QjawPVc+(2`PK>@~{0Xy~Z!uqMrf z-}&Nu%Hf5wfiIothBhp=#>>>`c%$Zol7H?**8K12&jn za&F*;xHsl%!s8!*T#R9c{h7STyHVP@m#17L+X*cS zj)xmHh%e{qE}>!{EXPPWbo_{=*8P|~AY;RDR-#~au%JzCyLh(V(C!Q=E&ReLP9qqtEj2V z{wB<8yy|P>ta63t)wIHgEk*Qu$AbV`{i<_1D~}_BELBA;gdAYmcyd&Ek9HfG|F6$N zM)Ul<3q9di)2O-eoo|f9L*>Mh5c{hj2GWP*4^P&OCA0b2k}@~dY2Eb%VZ1$4Hy7R; z>{+stjdr>`W(7L^7B>wlol=&(DZP&19}U=}vw3wQ(6gC_dwtUIDdo1H;4eVV8CUCU z&9wsq1K6t?E23~N4zaFryY%y}&=(8pc0$fMSK`c7Z!-h! zlt9#5hv}6D;_zKQ7{jD-H|(oUCw`|SK6BX3w`kK2b%9kr=Q9lJ7o|RWUy4+AnLps@c;^c9UvJ_k=teF!scUdZzlswn6C4+wP_OB1NIIo>ZN1 zDP4zC)lqU@!NGiUIl-P~fU5P8n5Ob($8c#ulUK08QHElHi&r*Rltz>h)&RITd$d} zd0KEv8zv!fykk8q-uN)AG>1Z<{gimNg#C)EMPglXrxMrM5iA6<43^rO7PX>(wYG`e z-Bd$SRecHY_Jg$j{#{+K?`zp$rzKl_(jkl#J%}`@73=D)V&~gNUH2ym`bqg`6US0^ zWE-tI8jOJD_D&7#?T2OR4U35{wznp{M=4JhQup>L{Kd|jt|F2I7~ zuNk`fS^-~sHGN*a@Nr)Bh*j9=;ZC5|UH7k56MJKrwKd2Mua+>;zIz-0y7X5+-|mZy z*B(9&G^0QlpPOUHu+RsK(Xz4fF@#n*_X*h2d}7(lfILfmo_e{dD`R;L*Rxc)G^}Gq zV&n4{wx~LLd!360H!)Q4beNW27zNF7{u`?4#!!M`6{qhgmo6#bRo zix8UnG#{MOFa0EQ(|cKl=T{~efcep0V#$F{LP)_{QJ3kZkoQhuq-7P)Jn|w6ZM@eW z9Df>T%$q8-WEz0lJ}yp1$D7$Mxaui7BYvL}m=W40DE?4`W- z!hD5IH1*RBGk=oGRCSmcdN6bwX%;M6hK|va_89ia4$UmZL_|hqe%3`_OJ>#0jV9l1=;{9&Y}5Zb@joBP8M=Ht>PHwA zl}Qm3@W3t4e8ZltHr_v42YKH6eSE*_R_#W)fdMrie&ey1tH12iLUXEo`33bRl{@Mp zpN15R7{^_jOeYu{LPa~~cu(5S?Wt-=9l7@e-QKxt>yN9SA2K!XlgR;TPNu3s%invX z5xxyIeB%>0T|d_WoqkmRz%~?)C@HOvc$2xcYdq{H_33mlvFWq&n*nEH%xgVqhhH|2f$ItA+3GK<2e@nggp4o3IIwCqI@b9gYbuKpVi%f#~>d|t~Va#ss@grb( zAWB|=J=3z0BH!*hf@4na)!rO5TZtU{Tcz}P*{YK**=H}wd8X-QK=aj^Jt&2<8EvQC zo)w|~aqQmZW-;Zq&gmG!aA+mQP~_oW$BwY7%|X1XDj)S%7`|#E8CTwiR2cwFg_7O_ zHX@p!Jo!L%;nx**Or7Rl-w8+Z!WL(1%LU$ckr8Q~?q;s*XE#pHZLUV|i2K&qN~vV1 zU0Ju0pAeSF69Yx^)MvWgRzq0uzwBgR+x%6RxL;kHA>7!HrwqLGEWACrk@4j83o`fo zo73N#;M-5G?awCOckIzwJl3x=i4$ms%Wy#$X%j*MQcivCe7ren^+NdeJ>Tg{S@P$} zhDl$u(3*ruJo414Zsa6mq9qMAS#O2oKUG$sJxo_GUdfnnOQbmFkW-+**kM48_=mPH zNhg2_9*ld7;i~KXDZ?)OG%?g45k|hX#tU57C2AuG-#@^Yb>as`wU|2q;w6&p(C!PC zTwFUwkv24c`W|56bHH;AYCZZrD#>g0B2HSDIBmZcM8K3+Q0H

Wh|Dz&k(Y9Ua4 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

i$Z>1Xa6M`m^NvjN}qbA@{{cy<~~yoK4;- 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∋FpEj+F}x!(6J!&t%Qo6(7=}fq8XPQI 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


T94D&?9UA;o_r*v^jp@*1FtW*tLp}#ou>$fo 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 literal 0 HcmV?d00001 diff --git a/Cocoa/MainMenu.xib b/Cocoa/MainMenu.xib index 55e31cbe4..982817223 100644 --- a/Cocoa/MainMenu.xib +++ b/Cocoa/MainMenu.xib @@ -27,7 +27,7 @@ - + From 8f8b7f6b330306ff23372679decc18c6acdfe2df Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 18 Jun 2022 23:10:48 +0300 Subject: [PATCH 014/116] Minor adjustment to 32x32@2x --- Cocoa/AppIcon.icns | Bin 631354 -> 631345 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Cocoa/AppIcon.icns b/Cocoa/AppIcon.icns index df89f11c4ddb61d1964292d70cb5f1f4bbec4592..2a85022a965752735fd24d90c4151a7628a44089 100644 GIT binary patch delta 4167 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 RhrcEVhrcEWx4$L{dwUy!9##MV delta 4173 zcmV-T5VG&F#3s7LCJ1R`ZgT($qB@ZXHvvDfKu;C{Ka-FaMt|H%L_t(|0qt9Rj9gV2 zKl9j`-Pvt-x7{t;Zduq;ssJ8~Uiu&%24kha2PLh#G4vX) zR;xKwgMcZ`VXZu00+f*?T|2&PN77AMDqDKv~J%f9gaAKiA-h7B9Gc9cr4t*uRD zYBdIieTZPqCj0>M34yAi*Fy`u24r}V2C!{T8Iz-q(5*Llvn}?p!KouLV9cJraIs~x zd4~ha4GpdN`jy|j>SN3WS4+fWcL5I>3V#>Yp1JOZzP{yvH>*h?XkBs4;ftuV>}+L) z$1Nc%18ijsQ&=_S!77`aUdRY?(%8|K&P0v%_*Dl#(gKIk)l$>+bYet7r;Hx`Q>Fpbi}e_S;tB7dRM zD_yfBlZ`opB^*f-BPJb;sj7icA`q0)4h-2?1p{M&4T_LX>$E9(i6DG(Targm5HD7# z(AG9kZ0~sBsV8?G0z)!KTiIq6^_J8)c!P8E=5J5hPi=`6-LF*-+f&c(x=jD0g!;0-s zuKxXhxc7uio+%tX`d@edefKyygIF1emv^o1o}OW_+i)?rSWB&dj*gB~^`PR?Lx<&y z|0gEKV+KyN3FG5gAm<0R2)98;M`;jowmb;a0LT@J#T8t6F$QfsdLGwY^?y)%V?McX znG7o+i|WNWP$(=vRsgI-GPtLf*g|?sKg8b~^?;ZqYJgBjF|_6LT`*TzU#_PS`mCfO0Rv(`Gv}4A^n^v$D08|A4xxC(1o~<+wTWN}3s7pS14Y`FPFaT4V_YIlxs5hGgI=J(a z*_1qqX#luUMt^mH-~+l(qikhv zK4B|9H2_##9NRoDrL*K3nGApi>Nr4rWjtCKzh!SJSsIp*(wPoNcF}|;uYA)o(@ISy zPi|N(CYsVq>1alMZLMg=Ywk5^Jiaqr0VBO~ z(*dAeD9dv|0!bbmm%en+efiKKSD;+btYSFTu~C?q50CL9TB{N5sHSm`5eSQ$2G|x* zTL1vnlF#5E@y~woU}=Oi$1Lq zSoRTEJbw&ZC`X0&bQyzQPvg8yIn_&7{O_;`O#* z#$V{nNCklQG->`Gh(L}x`6v>9-&D7*s26$!4h)5D%Wow+hJ2 zSkGiMtsvBZVIf3(l_J}CesAMIJ+K+h7TVMhV(ff`mmK6V-ZY#0Q~*SjNz27>^=Yu# zgim4M8hljp{_Zz^l)eGxTjALB)tY{q%%T+_`n1720m1P7nHB991V9ye5NhL3O$)Us zOn=HniThfXP$b)GL@!CYXJx^tnX{HXEqGcq+SF1_h2>*a0M#g@COblioT+P@FQ%u~ zxaPKBP1EXt631pmZ3SDF3x@bv1!*l6fI6RmM3MK@#Y;&Y_>Q80mFj=$%1|Pb@+~Me zs-b4Nw1n{Yj9}HRa;I5O(!Yi&(i?F%Q#i}<&j$@PtUF#gI0WYZ1pd~ko#_Hm!HV$VMJJox37MStS* zB*t-iC}|ZCt~yn<0)qQ$x~;dJvuX1OUDuMOh&QO9V8QqTMOsS*0Dl*(%NbzC#6no- zY4+YWI!piKpV%UAi}2fzfj}rK^YeU9sAWq7pn+GB-bCJ9E zp1a-j)KtvS@tp8wsAbESyECxrn>KBBJs3|-O-l%jk*m(cSp`|V-h-d-#z2z1M9BL{ z0ze_Q#?;Kz2yRVh*{_mXQVq9q^`N`<`fcJswg?Xz*=vvvww@Tk2d8AI2!BBI1k91j zD33HV!OAmvku^JF98V_r%Wb7H?`F$oys$9^KW0&1=b;$g;SE+dJvlXksqJ4Aq)5wO zg(*;*7#rVRt>4gc(#7d?qcEL80n%&+d6}bd;6D zz=PG0M2Ik(K5p{+ft(ZU<%J3jT)vHQE;Rj3LC1kS=<@m;^rVLywWIn%gBSYJZ+3bY z(y{qe8caz%{1lJ_a5)_v8*}^j?R^NtmH_azk!0h-WM4k;(#%VsDp@fF)+`+>Y_xF8M?#Ofv^bE$6uB(`J4};d%m3Mb+A9ttr6hwxy zJ71h~W0O^PN_XBp0-0wImR)CC*6n&}+8r3Hxb9NUwHJI3vd#h;<6sn7i9uiA<(6%0 z%eiOw?AdkKFYmk!Y=0hFc%L>{KMdGXD*(LN#~<7AqhO zZ^_~H(+pli&E*-oHq#;cq-j+IegvpMke!?%;E@hrQL{o!#z%UR7HM%5Rih?e$4fzt zYRx_V#N&Va`Oj{@yj(8-2VyLL0)TMC95L0HWx$UFlYid%$KNFYq3^OUe(9?BtzUm> ze}8|5Z(h+c=<2c{=9#B|d)Kdi@x8fnc@$!NqcinoY2Uv9K*NSAhK!nTKJhK9o{xO=g7Y^H z4}W9zz<=ru_y-d%0|0mzu+v=P!iT@M;s9V-(6k)_9mtwLrE77pNJ4lLa^&#=hkE$e zDezx&hYufdua1oTYu6Kx{p6v){^emPAHl`aXYz8u_%VPctt9~DSWp;RCGZ8HCAgLj zZ`!;b&)y%x)7XYmskE}KSX`FR<=YE|wszAClYfMQH9r6w8;^QvI=)TH<5{GPe;`rD zgV2%Lndw(2CMKSKe*fO>|NO@zPlL^*dGYbr_B~8T%VPGxk5yo}N@TEkf&_sFCaZx! zbmC%FlyH&8mqjSUD+Vg&Z+2rQytt}Na1Ixf<+CvN`YbNe$PW*YGysy1!qADDw<0t| zr+@5utkW?|i?^2(1ptD;c*0f3xM@*I^IL4Se3W8Bx* Date: Thu, 23 Jun 2022 01:13:59 +0300 Subject: [PATCH 015/116] Replace SDL2 audio with XAudio2 on Windows --- Makefile | 3 +- SDL/audio/xaudio2.c | 110 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 SDL/audio/xaudio2.c diff --git a/Makefile b/Makefile index 659cda894..4ea66fe44 100644 --- a/Makefile +++ b/Makefile @@ -17,9 +17,11 @@ ifeq ($(PLATFORM),windows32) _ := $(shell chcp 65001) EXESUFFIX:=.exe NATIVE_CC = clang -IWindows -Wno-deprecated-declarations --target=i386-pc-windows +SDL_AUDIO_DRIVER ?= xaudio2 else EXESUFFIX:= NATIVE_CC := cc +SDL_AUDIO_DRIVER ?= sdl endif PB12_COMPRESS := build/pb12$(EXESUFFIX) @@ -47,7 +49,6 @@ endif include version.mk export VERSION CONF ?= debug -SDL_AUDIO_DRIVER ?= sdl BIN := build/bin OBJ := build/obj diff --git a/SDL/audio/xaudio2.c b/SDL/audio/xaudio2.c new file mode 100644 index 000000000..3eab780a6 --- /dev/null +++ b/SDL/audio/xaudio2.c @@ -0,0 +1,110 @@ +#include "audio.h" +#include +#include + +#define AUDIO_FREQUENCY 96000 +static IXAudio2 *xaudio2 = NULL; +static IXAudio2MasteringVoice *master_voice = NULL; +static IXAudio2SourceVoice *source_voice = NULL; +static bool playing = false; +static GB_sample_t sample_pool[0x2000]; +static unsigned pos = 0; + +#define BATCH_SIZE 256 + +static const WAVEFORMATEX wave_format = { + .wFormatTag = WAVE_FORMAT_PCM, + .nChannels = 2, + .nSamplesPerSec = AUDIO_FREQUENCY, + .nAvgBytesPerSec = AUDIO_FREQUENCY * 4, + .nBlockAlign = 4, + .wBitsPerSample = 16, + .cbSize = 0 +}; + +bool GB_audio_is_playing(void) +{ + return playing; +} + +void GB_audio_set_paused(bool paused) +{ + if (paused) { + playing = false; + IXAudio2SourceVoice_Stop(source_voice, 0, XAUDIO2_COMMIT_NOW); + GB_audio_clear_queue(); + } + else { + playing = true; + IXAudio2SourceVoice_Start(source_voice, 0, XAUDIO2_COMMIT_NOW); + } + +} + +void GB_audio_clear_queue(void) +{ + pos = 0; + IXAudio2SourceVoice_FlushSourceBuffers(source_voice); +} + +unsigned GB_audio_get_frequency(void) +{ + return AUDIO_FREQUENCY; +} + +size_t GB_audio_get_queue_length(void) +{ + static XAUDIO2_VOICE_STATE state; + IXAudio2SourceVoice_GetState(source_voice, &state, XAUDIO2_VOICE_NOSAMPLESPLAYED); + + return state.BuffersQueued * BATCH_SIZE + (pos & (BATCH_SIZE - 1)); +} + +void GB_audio_queue_sample(GB_sample_t *sample) +{ + if (!playing) return; + + static XAUDIO2_BUFFER buffer = {.AudioBytes = sizeof(*sample) * BATCH_SIZE, }; + sample_pool[pos] = *sample; + buffer.pAudioData = (void *)&sample_pool[pos & ~(BATCH_SIZE - 1)]; + pos++; + pos &= 0x1fff; + if ((pos & (BATCH_SIZE - 1)) == 0) { + IXAudio2SourceVoice_SubmitSourceBuffer(source_voice, &buffer, NULL); + } +} + +void GB_audio_init(void) +{ + HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + if (FAILED(hr)) { + fprintf(stderr, "CoInitializeEx failed: %lx\n", hr); + return; + } + + hr = XAudio2Create(&xaudio2, 0, XAUDIO2_DEFAULT_PROCESSOR); + if (FAILED(hr)) { + fprintf(stderr, "XAudio2Create failed: %lx\n", hr); + return; + } + + hr = IXAudio2_CreateMasteringVoice(xaudio2, &master_voice, + 2, // 2 channels + AUDIO_FREQUENCY, + 0, // Flags + 0, // Device index + NULL, // Effect chain + AudioCategory_GameMedia // Category + ); + if (FAILED(hr)) { + fprintf(stderr, "CreateMasteringVoice failed: %lx\n", hr); + return; + } + + hr = IXAudio2_CreateSourceVoice(xaudio2, &source_voice, &wave_format, 0, XAUDIO2_DEFAULT_FREQ_RATIO, NULL, NULL, NULL); + + if (FAILED(hr)) { + fprintf(stderr, "CreateSourceVoice failed: %lx\n", hr); + return; + } +} From fd6b734fd097be49c7630b9273e73b2f25c691d5 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 24 Jun 2022 13:27:02 +0300 Subject: [PATCH 016/116] Add XAudio2.7 as an compile-time audio driver for vanilla Windows 7 --- SDL/audio/xaudio2_7.c | 131 ++++++++++++++++++++++++++++++++++++++++++ SDL/audio/xaudio2_7.h | 103 +++++++++++++++++++++++++++++++++ 2 files changed, 234 insertions(+) create mode 100644 SDL/audio/xaudio2_7.c create mode 100644 SDL/audio/xaudio2_7.h diff --git a/SDL/audio/xaudio2_7.c b/SDL/audio/xaudio2_7.c new file mode 100644 index 000000000..eb81905e8 --- /dev/null +++ b/SDL/audio/xaudio2_7.c @@ -0,0 +1,131 @@ +#include "xaudio2_7.h" +#include "audio.h" + + +#define AUDIO_FREQUENCY 96000 +static IXAudio2 *xaudio2 = NULL; +static IXAudio2MasteringVoice *master_voice = NULL; +static IXAudio2SourceVoice *source_voice = NULL; +static bool playing = false; +static GB_sample_t sample_pool[0x2000]; +static unsigned pos = 0; + +#define BATCH_SIZE 256 + + +static const WAVEFORMATEX wave_format = { + .wFormatTag = WAVE_FORMAT_PCM, + .nChannels = 2, + .nSamplesPerSec = AUDIO_FREQUENCY, + .nAvgBytesPerSec = AUDIO_FREQUENCY * 4, + .nBlockAlign = 4, + .wBitsPerSample = 16, + .cbSize = 0 +}; + +static inline HRESULT XAudio2Create(IXAudio2 **ppXAudio2, + UINT32 Flags, + XAUDIO2_PROCESSOR XAudio2Processor) +{ + IXAudio2 *pXAudio2; + LoadLibraryEx("xaudio2_7.dll", NULL, LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); + + HRESULT hr = CoCreateInstance(&CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (void**)&pXAudio2); + if (SUCCEEDED(hr)) { + hr = pXAudio2->lpVtbl->Initialize(pXAudio2, Flags, XAudio2Processor); + } + + if (SUCCEEDED(hr)) { + *ppXAudio2 = pXAudio2; + } + else { + pXAudio2->lpVtbl->Release(pXAudio2); + } + return hr; +} + +bool GB_audio_is_playing(void) +{ + return playing; +} + +void GB_audio_set_paused(bool paused) +{ + if (paused) { + playing = false; + IXAudio2SourceVoice_Stop(source_voice, 0, XAUDIO2_COMMIT_NOW); + GB_audio_clear_queue(); + } + else { + playing = true; + IXAudio2SourceVoice_Start(source_voice, 0, XAUDIO2_COMMIT_NOW); + } + +} + +void GB_audio_clear_queue(void) +{ + pos = 0; + IXAudio2SourceVoice_FlushSourceBuffers(source_voice); +} + +unsigned GB_audio_get_frequency(void) +{ + return AUDIO_FREQUENCY; +} + +size_t GB_audio_get_queue_length(void) +{ + static XAUDIO2_VOICE_STATE state; + IXAudio2SourceVoice_GetState(source_voice, &state); + + return state.BuffersQueued * BATCH_SIZE + (pos & (BATCH_SIZE - 1)); +} + +void GB_audio_queue_sample(GB_sample_t *sample) +{ + if (!playing) return; + + static XAUDIO2_BUFFER buffer = {.AudioBytes = sizeof(*sample) * BATCH_SIZE, }; + sample_pool[pos] = *sample; + buffer.pAudioData = (void *)&sample_pool[pos & ~(BATCH_SIZE - 1)]; + pos++; + pos &= 0x1fff; + if ((pos & (BATCH_SIZE - 1)) == 0) { + IXAudio2SourceVoice_SubmitSourceBuffer(source_voice, &buffer, NULL); + } +} + +void GB_audio_init(void) +{ + HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + if (FAILED(hr)) { + fprintf(stderr, "CoInitializeEx failed: %lx\n", hr); + return; + } + + hr = XAudio2Create(&xaudio2, 0, XAUDIO2_DEFAULT_PROCESSOR); + if (FAILED(hr)) { + fprintf(stderr, "XAudio2Create failed: %lx\n", hr); + return; + } + + hr = IXAudio2_CreateMasteringVoice(xaudio2, &master_voice, + 2, // 2 channels + AUDIO_FREQUENCY, + 0, // Flags + 0, // Device index + NULL // Effect chain + ); + if (FAILED(hr)) { + fprintf(stderr, "CreateMasteringVoice failed: %lx\n", hr); + return; + } + + hr = IXAudio2_CreateSourceVoice(xaudio2, &source_voice, &wave_format, 0, XAUDIO2_DEFAULT_FREQ_RATIO, NULL, NULL, NULL); + + if (FAILED(hr)) { + fprintf(stderr, "CreateSourceVoice failed: %lx\n", hr); + return; + } +} diff --git a/SDL/audio/xaudio2_7.h b/SDL/audio/xaudio2_7.h new file mode 100644 index 000000000..c436d2e0a --- /dev/null +++ b/SDL/audio/xaudio2_7.h @@ -0,0 +1,103 @@ +#define INITGUID +#include + +/* Minimal definitions for XAudio2.7 */ +typedef UINT32 XAUDIO2_PROCESSOR; + +typedef struct XAUDIO2_BUFFER { + UINT32 Flags; + UINT32 AudioBytes; + const BYTE *pAudioData; + UINT32 PlayBegin; + UINT32 PlayLength; + UINT32 LoopBegin; + UINT32 LoopLength; + UINT32 LoopCount; + void *pContext; +} XAUDIO2_BUFFER; + +typedef struct XAUDIO2_VOICE_STATE { + void *pCurrentBufferContext; + UINT32 BuffersQueued; + UINT64 SamplesPlayed; +} XAUDIO2_VOICE_STATE; + +typedef struct IXAudio2SourceVoice { + struct IXAudio2SourceVoiceVtbl *lpVtbl; +} IXAudio2SourceVoice; + +typedef struct IXAudio2SourceVoiceVtbl IXAudio2SourceVoiceVtbl; + +#undef INTERFACE +#define INTERFACE IXAudio2SourceVoice + +struct IXAudio2SourceVoiceVtbl { + void *voiceMethods[19]; // Unused inherited methods + STDMETHOD(Start) (THIS_ UINT32 Flags, UINT32 OperationSet) PURE; + STDMETHOD(Stop) (THIS_ UINT32 Flags, UINT32 OperationSet) PURE; + STDMETHOD(SubmitSourceBuffer) (THIS_ __in const XAUDIO2_BUFFER *pBuffer, __in_opt const void *pBufferWMA) PURE; + STDMETHOD(FlushSourceBuffers) (THIS) PURE; + STDMETHOD(Discontinuity) (THIS) PURE; + STDMETHOD(ExitLoop) (THIS_ UINT32 OperationSet) PURE; + STDMETHOD_(void, GetState) (THIS_ __out XAUDIO2_VOICE_STATE *pVoiceState) PURE; +}; + +typedef struct IXAudio2 { + struct IXAudio2Vtbl *lpVtbl; +} IXAudio2; + +typedef struct IXAudio2Vtbl IXAudio2Vtbl; +typedef void *IXAudio2MasteringVoice; + +#undef INTERFACE +#define INTERFACE IXAudio2 + +struct IXAudio2Vtbl { + void *QueryInterface; + STDMETHOD_(ULONG, AddRef) (THIS) PURE; + STDMETHOD_(ULONG, Release) (THIS) PURE; + void *GetDeviceCount; + void *GetDeviceDetails; + STDMETHOD(Initialize) (THIS_ UINT32 Flags, + XAUDIO2_PROCESSOR XAudio2Processor) PURE; + + void *RegisterForCallbacks; + void *UnregisterForCallbacks; + + STDMETHOD(CreateSourceVoice) (THIS_ __deref_out IXAudio2SourceVoice **ppSourceVoice, + __in const WAVEFORMATEX *pSourceFormat, + UINT32 Flags, + float MaxFrequencyRatio, + __in_opt void *pCallback, + __in_opt const void *pSendList, + __in_opt const void *pEffectChain) PURE; + + void *CreateSubmixVoice; + + STDMETHOD(CreateMasteringVoice) (THIS_ __deref_out IXAudio2MasteringVoice **ppMasteringVoice, + UINT32 InputChannels, + UINT32 InputSampleRate, + UINT32 Flags, UINT32 DeviceIndex, + __in_opt const void *pEffectChain) PURE; +}; + +#define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ +DEFINE_GUID(CLSID_##className, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8) + +#define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \ +DEFINE_GUID(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, 0x##b4, 0x##b5, 0x##b6, 0x##b7, 0x##b8) + +DEFINE_CLSID(XAudio2, 5a508685, a254, 4fba, 9b, 82, 9a, 24, b0, 03, 06, af); +DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb); + +#define IXAudio2SourceVoice_Start(This,Flags,OperationSet) ((This)->lpVtbl->Start(This,Flags,OperationSet)) +#define IXAudio2SourceVoice_Stop(This,Flags,OperationSet) ((This)->lpVtbl->Stop(This,Flags,OperationSet)) +#define IXAudio2SourceVoice_SubmitSourceBuffer(This,pBuffer,pBufferWMA) ((This)->lpVtbl->SubmitSourceBuffer(This,pBuffer,pBufferWMA)) +#define IXAudio2SourceVoice_FlushSourceBuffers(This) ((This)->lpVtbl->FlushSourceBuffers(This)) +#define IXAudio2SourceVoice_GetState(This,pVoiceState) ((This)->lpVtbl->GetState(This,pVoiceState)) +#define IXAudio2_CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain) ((This)->lpVtbl->CreateMasteringVoice(This,ppMasteringVoice,InputChannels,InputSampleRate,Flags,DeviceIndex,pEffectChain)) +#define IXAudio2_CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain) ((This)->lpVtbl->CreateSourceVoice(This,ppSourceVoice,pSourceFormat,Flags,MaxFrequencyRatio,pCallback,pSendList,pEffectChain)) + +#define XAUDIO2_COMMIT_NOW 0 +#define XAUDIO2_DEFAULT_PROCESSOR 0xffffffff +#define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f \ No newline at end of file From 9a765820ccb56c84b1454ca39b27b1642edf901e Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 24 Jun 2022 14:18:53 +0300 Subject: [PATCH 017/116] Runtime audio driver fallback --- Makefile | 6 ++-- SDL/audio.c | 71 +++++++++++++++++++++++++++++++++++++++++++ SDL/audio/audio.h | 27 +++++++++++++++- SDL/audio/sdl.c | 24 +++++++++------ SDL/audio/xaudio2.c | 38 ++++++++++++----------- SDL/audio/xaudio2_7.c | 38 ++++++++++++----------- SDL/gui.c | 27 ++++++++++------ 7 files changed, 174 insertions(+), 57 deletions(-) create mode 100644 SDL/audio.c diff --git a/Makefile b/Makefile index 4ea66fe44..e5667731d 100644 --- a/Makefile +++ b/Makefile @@ -17,11 +17,11 @@ ifeq ($(PLATFORM),windows32) _ := $(shell chcp 65001) EXESUFFIX:=.exe NATIVE_CC = clang -IWindows -Wno-deprecated-declarations --target=i386-pc-windows -SDL_AUDIO_DRIVER ?= xaudio2 +SDL_AUDIO_DRIVERS ?= xaudio2 xaudio2_7 sdl else EXESUFFIX:= NATIVE_CC := cc -SDL_AUDIO_DRIVER ?= sdl +SDL_AUDIO_DRIVERS ?= sdl endif PB12_COMPRESS := build/pb12$(EXESUFFIX) @@ -212,7 +212,7 @@ all: cocoa sdl tester libretro # Get a list of our source files and their respective object file targets CORE_SOURCES := $(shell ls Core/*.c) -SDL_SOURCES := $(shell ls SDL/*.c) $(OPEN_DIALOG) SDL/audio/$(SDL_AUDIO_DRIVER).c +SDL_SOURCES := $(shell ls SDL/*.c) $(OPEN_DIALOG) $(patsubst %,SDL/audio/%.c,$(SDL_AUDIO_DRIVERS)) TESTER_SOURCES := $(shell ls Tester/*.c) ifeq ($(PLATFORM),Darwin) diff --git a/SDL/audio.c b/SDL/audio.c new file mode 100644 index 000000000..1627189fe --- /dev/null +++ b/SDL/audio.c @@ -0,0 +1,71 @@ +#include +#include +#include +#include "audio/audio.h" + +#define unlikely(x) __builtin_expect((bool)(x), 0) + +static const GB_audio_driver_t *driver = NULL; + +bool GB_audio_init(void) +{ + const GB_audio_driver_t *drivers[] = { +#ifdef _WIN32 + GB_AUDIO_DRIVER_REF(XAudio2), + GB_AUDIO_DRIVER_REF(XAudio2_7), +#endif + GB_AUDIO_DRIVER_REF(SDL), + }; + + for (unsigned i = 0; i < sizeof(drivers) / sizeof(drivers[0]); i++) { + driver = drivers[i]; + if (driver->audio_init()) { + return true; + } + } + + driver = NULL; + return false; +} + +bool GB_audio_is_playing(void) +{ + if (unlikely(!driver)) return false; + return driver->audio_is_playing(); +} + +void GB_audio_set_paused(bool paused) +{ + if (unlikely(!driver)) return; + return driver->audio_set_paused(paused); +} + +void GB_audio_clear_queue(void) +{ + if (unlikely(!driver)) return; + return driver->audio_clear_queue(); +} + +unsigned GB_audio_get_frequency(void) +{ + if (unlikely(!driver)) return 0; + return driver->audio_get_frequency(); +} + +size_t GB_audio_get_queue_length(void) +{ + if (unlikely(!driver)) return 0; + return driver->audio_get_queue_length(); +} + +void GB_audio_queue_sample(GB_sample_t *sample) +{ + if (unlikely(!driver)) return; + return driver->audio_queue_sample(sample); +} + +const char *GB_audio_driver_name(void) +{ + if (unlikely(!driver)) return "None"; + return driver->name; +} diff --git a/SDL/audio/audio.h b/SDL/audio/audio.h index acaa011da..d743c32ba 100644 --- a/SDL/audio/audio.h +++ b/SDL/audio/audio.h @@ -11,6 +11,31 @@ void GB_audio_clear_queue(void); unsigned GB_audio_get_frequency(void); size_t GB_audio_get_queue_length(void); void GB_audio_queue_sample(GB_sample_t *sample); -void GB_audio_init(void); +bool GB_audio_init(void); +const char *GB_audio_driver_name(void); + +typedef struct { + typeof(GB_audio_is_playing) *audio_is_playing; + typeof(GB_audio_set_paused) *audio_set_paused; + typeof(GB_audio_clear_queue) *audio_clear_queue; + typeof(GB_audio_get_frequency) *audio_get_frequency; + typeof(GB_audio_get_queue_length) *audio_get_queue_length; + typeof(GB_audio_queue_sample) *audio_queue_sample; + typeof(GB_audio_init) *audio_init; + const char *name; +} GB_audio_driver_t; + +#define GB_AUDIO_DRIVER(_name) const GB_audio_driver_t _name##driver = { \ + .audio_is_playing = _audio_is_playing, \ + .audio_set_paused = _audio_set_paused, \ + .audio_clear_queue = _audio_clear_queue, \ + .audio_get_frequency = _audio_get_frequency, \ + .audio_get_queue_length = _audio_get_queue_length, \ + .audio_queue_sample = _audio_queue_sample, \ + .audio_init = _audio_init, \ + .name = #_name, \ +} + +#define GB_AUDIO_DRIVER_REF(name) ({extern const GB_audio_driver_t name##driver; &name##driver;}) #endif /* sdl_audio_h */ diff --git a/SDL/audio/sdl.c b/SDL/audio/sdl.c index 12ee69ae0..6b987f113 100644 --- a/SDL/audio/sdl.c +++ b/SDL/audio/sdl.c @@ -29,33 +29,33 @@ static SDL_AudioSpec want_aspec, have_aspec; static unsigned buffer_pos = 0; static GB_sample_t audio_buffer[AUDIO_BUFFER_SIZE]; -bool GB_audio_is_playing(void) +static bool _audio_is_playing(void) { return SDL_GetAudioDeviceStatus(device_id) == SDL_AUDIO_PLAYING; } -void GB_audio_set_paused(bool paused) +static void _audio_clear_queue(void) { - GB_audio_clear_queue(); - SDL_PauseAudioDevice(device_id, paused); + SDL_ClearQueuedAudio(device_id); } -void GB_audio_clear_queue(void) +static void _audio_set_paused(bool paused) { - SDL_ClearQueuedAudio(device_id); + _audio_clear_queue(); + SDL_PauseAudioDevice(device_id, paused); } -unsigned GB_audio_get_frequency(void) +static unsigned _audio_get_frequency(void) { return have_aspec.freq; } -size_t GB_audio_get_queue_length(void) +static size_t _audio_get_queue_length(void) { return SDL_GetQueuedAudioSize(device_id); } -void GB_audio_queue_sample(GB_sample_t *sample) +static void _audio_queue_sample(GB_sample_t *sample) { audio_buffer[buffer_pos++] = *sample; @@ -65,7 +65,7 @@ void GB_audio_queue_sample(GB_sample_t *sample) } } -void GB_audio_init(void) +static bool _audio_init(void) { /* Configure Audio */ memset(&want_aspec, 0, sizeof(want_aspec)); @@ -93,4 +93,8 @@ void GB_audio_init(void) #endif device_id = SDL_OpenAudioDevice(0, 0, &want_aspec, &have_aspec, SDL_AUDIO_ALLOW_FREQUENCY_CHANGE | SDL_AUDIO_ALLOW_SAMPLES_CHANGE); + + return true; } + +GB_AUDIO_DRIVER(SDL); diff --git a/SDL/audio/xaudio2.c b/SDL/audio/xaudio2.c index 3eab780a6..f738a4e1b 100644 --- a/SDL/audio/xaudio2.c +++ b/SDL/audio/xaudio2.c @@ -22,17 +22,23 @@ static const WAVEFORMATEX wave_format = { .cbSize = 0 }; -bool GB_audio_is_playing(void) +static bool _audio_is_playing(void) { return playing; } -void GB_audio_set_paused(bool paused) +static void _audio_clear_queue(void) +{ + pos = 0; + IXAudio2SourceVoice_FlushSourceBuffers(source_voice); +} + +static void _audio_set_paused(bool paused) { if (paused) { playing = false; IXAudio2SourceVoice_Stop(source_voice, 0, XAUDIO2_COMMIT_NOW); - GB_audio_clear_queue(); + _audio_clear_queue(); } else { playing = true; @@ -41,18 +47,12 @@ void GB_audio_set_paused(bool paused) } -void GB_audio_clear_queue(void) -{ - pos = 0; - IXAudio2SourceVoice_FlushSourceBuffers(source_voice); -} - -unsigned GB_audio_get_frequency(void) +static unsigned _audio_get_frequency(void) { return AUDIO_FREQUENCY; } -size_t GB_audio_get_queue_length(void) +static size_t _audio_get_queue_length(void) { static XAUDIO2_VOICE_STATE state; IXAudio2SourceVoice_GetState(source_voice, &state, XAUDIO2_VOICE_NOSAMPLESPLAYED); @@ -60,7 +60,7 @@ size_t GB_audio_get_queue_length(void) return state.BuffersQueued * BATCH_SIZE + (pos & (BATCH_SIZE - 1)); } -void GB_audio_queue_sample(GB_sample_t *sample) +static void _audio_queue_sample(GB_sample_t *sample) { if (!playing) return; @@ -74,18 +74,18 @@ void GB_audio_queue_sample(GB_sample_t *sample) } } -void GB_audio_init(void) +static bool _audio_init(void) { HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); if (FAILED(hr)) { fprintf(stderr, "CoInitializeEx failed: %lx\n", hr); - return; + return false; } hr = XAudio2Create(&xaudio2, 0, XAUDIO2_DEFAULT_PROCESSOR); if (FAILED(hr)) { fprintf(stderr, "XAudio2Create failed: %lx\n", hr); - return; + return false; } hr = IXAudio2_CreateMasteringVoice(xaudio2, &master_voice, @@ -98,13 +98,17 @@ void GB_audio_init(void) ); if (FAILED(hr)) { fprintf(stderr, "CreateMasteringVoice failed: %lx\n", hr); - return; + return false; } hr = IXAudio2_CreateSourceVoice(xaudio2, &source_voice, &wave_format, 0, XAUDIO2_DEFAULT_FREQ_RATIO, NULL, NULL, NULL); if (FAILED(hr)) { fprintf(stderr, "CreateSourceVoice failed: %lx\n", hr); - return; + return false; } + + return true; } + +GB_AUDIO_DRIVER(XAudio2); \ No newline at end of file diff --git a/SDL/audio/xaudio2_7.c b/SDL/audio/xaudio2_7.c index eb81905e8..fdce47f6b 100644 --- a/SDL/audio/xaudio2_7.c +++ b/SDL/audio/xaudio2_7.c @@ -44,17 +44,23 @@ static inline HRESULT XAudio2Create(IXAudio2 **ppXAudio2, return hr; } -bool GB_audio_is_playing(void) +static bool _audio_is_playing(void) { return playing; } -void GB_audio_set_paused(bool paused) +static void _audio_clear_queue(void) +{ + pos = 0; + IXAudio2SourceVoice_FlushSourceBuffers(source_voice); +} + +static void _audio_set_paused(bool paused) { if (paused) { playing = false; IXAudio2SourceVoice_Stop(source_voice, 0, XAUDIO2_COMMIT_NOW); - GB_audio_clear_queue(); + _audio_clear_queue(); } else { playing = true; @@ -63,18 +69,12 @@ void GB_audio_set_paused(bool paused) } -void GB_audio_clear_queue(void) -{ - pos = 0; - IXAudio2SourceVoice_FlushSourceBuffers(source_voice); -} - -unsigned GB_audio_get_frequency(void) +static unsigned _audio_get_frequency(void) { return AUDIO_FREQUENCY; } -size_t GB_audio_get_queue_length(void) +static size_t _audio_get_queue_length(void) { static XAUDIO2_VOICE_STATE state; IXAudio2SourceVoice_GetState(source_voice, &state); @@ -82,7 +82,7 @@ size_t GB_audio_get_queue_length(void) return state.BuffersQueued * BATCH_SIZE + (pos & (BATCH_SIZE - 1)); } -void GB_audio_queue_sample(GB_sample_t *sample) +static void _audio_queue_sample(GB_sample_t *sample) { if (!playing) return; @@ -96,18 +96,18 @@ void GB_audio_queue_sample(GB_sample_t *sample) } } -void GB_audio_init(void) +static bool _audio_init(void) { HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); if (FAILED(hr)) { fprintf(stderr, "CoInitializeEx failed: %lx\n", hr); - return; + return false; } hr = XAudio2Create(&xaudio2, 0, XAUDIO2_DEFAULT_PROCESSOR); if (FAILED(hr)) { fprintf(stderr, "XAudio2Create failed: %lx\n", hr); - return; + return false; } hr = IXAudio2_CreateMasteringVoice(xaudio2, &master_voice, @@ -119,13 +119,17 @@ void GB_audio_init(void) ); if (FAILED(hr)) { fprintf(stderr, "CreateMasteringVoice failed: %lx\n", hr); - return; + return false; } hr = IXAudio2_CreateSourceVoice(xaudio2, &source_voice, &wave_format, 0, XAUDIO2_DEFAULT_FREQ_RATIO, NULL, NULL, NULL); if (FAILED(hr)) { fprintf(stderr, "CreateSourceVoice failed: %lx\n", hr); - return; + return false; } + + return true; } + +GB_AUDIO_DRIVER(XAudio2_7); \ No newline at end of file diff --git a/SDL/gui.c b/SDL/gui.c index 4b4ee7b29..68940e75a 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -8,6 +8,7 @@ #include "utils.h" #include "gui.h" #include "font.h" +#include "audio/audio.h" static const SDL_Color gui_palette[4] = {{8, 24, 16,}, {57, 97, 57,}, {132, 165, 99}, {198, 222, 140}}; static uint32_t gui_palette_native[4]; @@ -847,13 +848,13 @@ static void enter_graphics_menu(unsigned index) recalculate_menu_height(); } -const char *highpass_filter_string(unsigned index) +static const char *highpass_filter_string(unsigned index) { return (const char *[]){"None (Keep DC Offset)", "Accurate", "Preserve Waveform"} [configuration.highpass_mode]; } -void cycle_highpass_filter(unsigned index) +static void cycle_highpass_filter(unsigned index) { configuration.highpass_mode++; if (configuration.highpass_mode == GB_HIGHPASS_MAX) { @@ -861,7 +862,7 @@ void cycle_highpass_filter(unsigned index) } } -void cycle_highpass_filter_backwards(unsigned index) +static void cycle_highpass_filter_backwards(unsigned index) { if (configuration.highpass_mode == 0) { configuration.highpass_mode = GB_HIGHPASS_MAX - 1; @@ -871,14 +872,14 @@ void cycle_highpass_filter_backwards(unsigned index) } } -const char *volume_string(unsigned index) +static const char *volume_string(unsigned index) { static char ret[5]; sprintf(ret, "%d%%", configuration.volume); return ret; } -void increase_volume(unsigned index) +static void increase_volume(unsigned index) { configuration.volume += 5; if (configuration.volume > 100) { @@ -886,7 +887,7 @@ void increase_volume(unsigned index) } } -void decrease_volume(unsigned index) +static void decrease_volume(unsigned index) { configuration.volume -= 5; if (configuration.volume > 100) { @@ -894,14 +895,14 @@ void decrease_volume(unsigned index) } } -const char *interference_volume_string(unsigned index) +static const char *interference_volume_string(unsigned index) { static char ret[5]; sprintf(ret, "%d%%", configuration.interference_volume); return ret; } -void increase_interference_volume(unsigned index) +static void increase_interference_volume(unsigned index) { configuration.interference_volume += 5; if (configuration.interference_volume > 100) { @@ -909,7 +910,7 @@ void increase_interference_volume(unsigned index) } } -void decrease_interference_volume(unsigned index) +static void decrease_interference_volume(unsigned index) { configuration.interference_volume -= 5; if (configuration.interference_volume > 100) { @@ -917,10 +918,18 @@ void decrease_interference_volume(unsigned index) } } +static const char *audio_driver_string(unsigned index) +{ + return GB_audio_driver_name(); +} + +static void nop(index){} + static const struct menu_item audio_menu[] = { {"Highpass Filter:", cycle_highpass_filter, highpass_filter_string, cycle_highpass_filter_backwards}, {"Volume:", increase_volume, volume_string, decrease_volume}, {"Interference Volume:", increase_interference_volume, interference_volume_string, decrease_interference_volume}, + {"Audio Driver:", nop, audio_driver_string}, {"Back", return_to_root_menu}, {NULL,} }; From 16913f925bf62beb5598d54035cd3854eb96d27d Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 24 Jun 2022 14:24:24 +0300 Subject: [PATCH 018/116] Oops --- SDL/gui.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SDL/gui.c b/SDL/gui.c index 68940e75a..f5b093bb2 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -923,7 +923,7 @@ static const char *audio_driver_string(unsigned index) return GB_audio_driver_name(); } -static void nop(index){} +static void nop(unsigned index){} static const struct menu_item audio_menu[] = { {"Highpass Filter:", cycle_highpass_filter, highpass_filter_string, cycle_highpass_filter_backwards}, From 58df8144ec83c3e8917983d2b9d6a9c8d1e4009f Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 25 Jun 2022 01:44:50 +0300 Subject: [PATCH 019/116] Fix audio artifacts in the SGB jingle --- Core/apu.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Core/apu.c b/Core/apu.c index d3341efb1..62185e6a0 100644 --- a/Core/apu.c +++ b/Core/apu.c @@ -225,6 +225,8 @@ static void render(GB_gameboy_t *gb) gb->apu_output.last_update[i] = 0; } gb->apu_output.cycles_since_render = 0; + + if (gb->sgb && gb->sgb->intro_animation < GB_SGB_INTRO_ANIMATION_LENGTH) return; GB_sample_t filtered_output = gb->apu_output.highpass_mode? (GB_sample_t) {output.left - gb->apu_output.highpass_diff.left, From aaf9a76b675dc292cccff656ad7481fc587458c3 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 25 Jun 2022 01:59:51 +0300 Subject: [PATCH 020/116] The vblank callback now reports the vblank type --- Cocoa/Document.m | 2 +- Core/display.c | 16 ++++++++-------- Core/display.h | 8 +++++++- Core/gb.h | 2 +- Core/memory.c | 20 ++++++-------------- QuickLook/get_image_for_rom.c | 2 +- SDL/main.c | 2 +- Tester/main.c | 2 +- libretro/libretro.c | 4 ++-- 9 files changed, 28 insertions(+), 30 deletions(-) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index 453e3c866..74ca598f6 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -131,7 +131,7 @@ static void boot_rom_load(GB_gameboy_t *gb, GB_boot_rom_t type) [self loadBootROM: type]; } -static void vblank(GB_gameboy_t *gb) +static void vblank(GB_gameboy_t *gb, GB_vblank_type_t type) { Document *self = (__bridge Document *)GB_get_user_data(gb); [self vblank]; diff --git a/Core/display.c b/Core/display.c index cfe037624..3e50d4ce1 100644 --- a/Core/display.c +++ b/Core/display.c @@ -106,7 +106,7 @@ typedef struct __attribute__((packed)) { uint8_t flags; } object_t; -void GB_display_vblank(GB_gameboy_t *gb) +void GB_display_vblank(GB_gameboy_t *gb, GB_vblank_type_t type) { gb->vblank_just_occured = true; gb->cycles_since_vblank_callback = 0; @@ -211,7 +211,7 @@ void GB_display_vblank(GB_gameboy_t *gb) GB_handle_rumble(gb); if (gb->vblank_callback) { - gb->vblank_callback(gb); + gb->vblank_callback(gb, type); } GB_timing_sync(gb); } @@ -1348,7 +1348,7 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) /* The PPU does not advance while in STOP mode on the DMG */ if (gb->stopped && !GB_is_cgb(gb)) { if (gb->cycles_since_vblank_callback >= LCDC_PERIOD) { - GB_display_vblank(gb); + GB_display_vblank(gb, GB_VBLANK_TYPE_ARTIFICIAL); } return; } @@ -1402,7 +1402,7 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) if (gb->cycles_since_vblank_callback < LCDC_PERIOD) { GB_SLEEP(gb, display, 1, LCDC_PERIOD - gb->cycles_since_vblank_callback); } - GB_display_vblank(gb); + GB_display_vblank(gb, GB_VBLANK_TYPE_LCD_OFF); gb->cgb_repeated_a_frame = true; } return; @@ -1889,7 +1889,7 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) // Todo: unverified timing gb->current_lcd_line++; if (gb->current_lcd_line == LINES && GB_is_sgb(gb)) { - GB_display_vblank(gb); + GB_display_vblank(gb, GB_VBLANK_TYPE_NORMAL_FRAME); } if (gb->icd_hreset_callback) { @@ -1931,13 +1931,13 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) if (gb->frame_skip_state == GB_FRAMESKIP_LCD_TURNED_ON) { if (GB_is_cgb(gb)) { - GB_display_vblank(gb); + GB_display_vblank(gb, GB_VBLANK_TYPE_NORMAL_FRAME); gb->frame_skip_state = GB_FRAMESKIP_FIRST_FRAME_SKIPPED; } else { if (!GB_is_sgb(gb) || gb->current_lcd_line < LINES) { gb->is_odd_frame ^= true; - GB_display_vblank(gb); + GB_display_vblank(gb, GB_VBLANK_TYPE_NORMAL_FRAME); } gb->frame_skip_state = GB_FRAMESKIP_SECOND_FRAME_RENDERED; } @@ -1945,7 +1945,7 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) else { if (!GB_is_sgb(gb) || gb->current_lcd_line < LINES) { gb->is_odd_frame ^= true; - GB_display_vblank(gb); + GB_display_vblank(gb, GB_VBLANK_TYPE_NORMAL_FRAME); } if (gb->frame_skip_state == GB_FRAMESKIP_FIRST_FRAME_SKIPPED) { gb->cgb_repeated_a_frame = true; diff --git a/Core/display.h b/Core/display.h index d50dc185e..bf0c83d7e 100644 --- a/Core/display.h +++ b/Core/display.h @@ -5,12 +5,18 @@ #include #include +typedef enum { + GB_VBLANK_TYPE_NORMAL_FRAME, // An actual Vblank-triggered frame + GB_VBLANK_TYPE_LCD_OFF, // An artificial frame pushed while the LCD was off + GB_VBLANK_TYPE_ARTIFICIAL, // An artificial frame pushed for some other reason +} GB_vblank_type_t; + #ifdef GB_INTERNAL internal void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force); internal void GB_palette_changed(GB_gameboy_t *gb, bool background_palette, uint8_t index); internal void GB_STAT_update(GB_gameboy_t *gb); internal void GB_lcd_off(GB_gameboy_t *gb); -internal void GB_display_vblank(GB_gameboy_t *gb); +internal void GB_display_vblank(GB_gameboy_t *gb, GB_vblank_type_t type); #define GB_display_sync(gb) GB_display_run(gb, 0, true) enum { diff --git a/Core/gb.h b/Core/gb.h index 5330461f2..1621149fa 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -283,7 +283,7 @@ typedef enum { #endif #endif -typedef void (*GB_vblank_callback_t)(GB_gameboy_t *gb); +typedef void (*GB_vblank_callback_t)(GB_gameboy_t *gb, GB_vblank_type_t type); typedef void (*GB_log_callback_t)(GB_gameboy_t *gb, const char *string, GB_log_attributes attributes); typedef char *(*GB_input_callback_t)(GB_gameboy_t *gb); typedef uint32_t (*GB_rgb_encode_callback_t)(GB_gameboy_t *gb, uint8_t r, uint8_t g, uint8_t b); diff --git a/Core/memory.c b/Core/memory.c index f123e46bc..18f8cdf9d 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -1422,21 +1422,13 @@ static void write_high_memory(GB_gameboy_t *gb, uint16_t addr, uint8_t value) case GB_IO_LCDC: if ((value & 0x80) && !(gb->io_registers[GB_IO_LCDC] & 0x80)) { - if (value & 0x80) { - // LCD turned on - if (!gb->lcd_disabled_outside_of_vblank && - (gb->cycles_since_vblank_callback > 10 * 456 || GB_is_sgb(gb))) { - // Trigger a vblank here so we don't exceed LCDC_PERIOD - GB_display_vblank(gb); - } - } - else { - // LCD turned off - if (gb->current_line < 144) { - // ROM might be repeatedly disabling LCDC outside of vblank, avoid callback spam - gb->lcd_disabled_outside_of_vblank = true; - } + // LCD turned on + if (!gb->lcd_disabled_outside_of_vblank && + (gb->cycles_since_vblank_callback > 10 * 456 || GB_is_sgb(gb))) { + // Trigger a vblank here so we don't exceed LCDC_PERIOD + GB_display_vblank(gb, GB_VBLANK_TYPE_ARTIFICIAL); } + gb->display_cycles = 0; gb->display_state = 0; gb->double_speed_alignment = 0; diff --git a/QuickLook/get_image_for_rom.c b/QuickLook/get_image_for_rom.c index b9f87edb1..f6e53fa20 100755 --- a/QuickLook/get_image_for_rom.c +++ b/QuickLook/get_image_for_rom.c @@ -25,7 +25,7 @@ static void log_callback(GB_gameboy_t *gb, const char *string, GB_log_attributes } -static void vblank(GB_gameboy_t *gb) +static void vblank(GB_gameboy_t *gb, GB_vblank_type_t type) { struct local_data *local_data = (struct local_data *)GB_get_user_data(gb); diff --git a/SDL/main.c b/SDL/main.c index da8c40e26..9a85661b0 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -462,7 +462,7 @@ static uint32_t rgb_encode(GB_gameboy_t *gb, uint8_t r, uint8_t g, uint8_t b) return SDL_MapRGB(pixel_format, r, g, b); } -static void vblank(GB_gameboy_t *gb) +static void vblank(GB_gameboy_t *gb, GB_vblank_type_t type) { if (underclock_down && clock_mutliplier > 0.5) { clock_mutliplier -= 1.0/16; diff --git a/Tester/main.c b/Tester/main.c index a3add107d..d4fb30509 100755 --- a/Tester/main.c +++ b/Tester/main.c @@ -123,7 +123,7 @@ static void handle_buttons(GB_gameboy_t *gb) } -static void vblank(GB_gameboy_t *gb) +static void vblank(GB_gameboy_t *gb, GB_vblank_type_t type) { /* Detect common crashes and stop the test early */ if (frames < test_length - 1) { diff --git a/libretro/libretro.c b/libretro/libretro.c index e73ab6105..3899864bf 100644 --- a/libretro/libretro.c +++ b/libretro/libretro.c @@ -248,12 +248,12 @@ static void audio_callback(GB_gameboy_t *gb, GB_sample_t *sample) output_audio_buffer.data[output_audio_buffer.size++] = sample->right; } -static void vblank1(GB_gameboy_t *gb) +static void vblank1(GB_gameboy_t *gb, GB_vblank_type_t type) { vblank1_occurred = true; } -static void vblank2(GB_gameboy_t *gb) +static void vblank2(GB_gameboy_t *gb, GB_vblank_type_t type) { vblank2_occurred = true; } From 6a245982666f80a9a8eb59bf7fb3a67f27c4e947 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 25 Jun 2022 15:55:42 +0300 Subject: [PATCH 021/116] Grammar --- Core/debugger.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/debugger.c b/Core/debugger.c index 516095ae6..f7b1034b3 100644 --- a/Core/debugger.c +++ b/Core/debugger.c @@ -2001,7 +2001,7 @@ static const debugger_command_t commands[] = { {"lcd", 3, lcd, "Display information about the current state of the LCD controller"}, {"palettes", 3, palettes, "Display the current CGB palettes"}, {"dma", 3, dma, "Display the current OAM DMA status"}, - {"softbreak", 2, softbreak, "Enable or disables software breakpoints", "(on|off)", .argument_completer = on_off_completer}, + {"softbreak", 2, softbreak, "Enable or disable software breakpoints", "(on|off)", .argument_completer = on_off_completer}, {"breakpoint", 1, breakpoint, "Add a new breakpoint at the specified address/expression" HELP_NEWLINE "Can also modify the condition of existing breakpoints." HELP_NEWLINE "If the j modifier is used, the breakpoint will occur just before" HELP_NEWLINE From 52a4c09855ee45c6349af422d36cba3d9415e16a Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 25 Jun 2022 20:08:14 +0300 Subject: [PATCH 022/116] More accurate PPU/OAM-DMA conflicts, artifacts in "It Came from Planet Zilog" should match hardware now --- Core/display.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Core/display.c b/Core/display.c index 3e50d4ce1..3ae50396a 100644 --- a/Core/display.c +++ b/Core/display.c @@ -473,7 +473,9 @@ static inline uint8_t oam_read(GB_gameboy_t *gb, uint8_t addr) if (gb->hdma_in_progress) { return GB_read_oam(gb, (gb->hdma_current_src & ~1) | (addr & 1)); } - return gb->oam[((gb->dma_current_dest - 1 + (gb->halted || gb->stopped)) & ~1) | (addr & 1)]; + if (gb->dma_current_dest != 0xA0) { + return gb->oam[(gb->dma_current_dest & ~1) | (addr & 1)]; + } } return gb->oam[addr]; } From 1b38e8c9321522d8211c834a548d55fb6e4c79cc Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 25 Jun 2022 20:09:23 +0300 Subject: [PATCH 023/116] Prevent audio chuckling when an instance is debug-stopped --- Cocoa/Document.m | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index 74ca598f6..cb9d71e36 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -1362,6 +1362,10 @@ - (void) updateSideView - (char *) getDebuggerInput { + bool isPlaying = _audioClient.isPlaying; + if (isPlaying) { + [_audioClient stop]; + } [audioLock lock]; [audioLock signal]; [audioLock unlock]; @@ -1380,6 +1384,9 @@ - (char *) getDebuggerInput [self.debuggerSideView setString:@""]; } }); + if (isPlaying) { + [_audioClient start]; + } if ((id) input == [NSNull null]) { return NULL; } From 96d127e1607fe7cc2030a5048709d0ea582f42e9 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 1 Jul 2022 16:14:52 +0300 Subject: [PATCH 024/116] Remove the SLD command, reorder debugger commands --- Core/debugger.c | 96 +++++++++++++------------------------------------ Core/gb.h | 2 -- 2 files changed, 25 insertions(+), 73 deletions(-) diff --git a/Core/debugger.c b/Core/debugger.c index f7b1034b3..22a3f7b43 100644 --- a/Core/debugger.c +++ b/Core/debugger.c @@ -794,22 +794,6 @@ static bool finish(GB_gameboy_t *gb, char *arguments, char *modifiers, const deb return false; } -static bool stack_leak_detection(GB_gameboy_t *gb, char *arguments, char *modifiers, const debugger_command_t *command) -{ - NO_MODIFIERS - STOPPED_ONLY - - if (strlen(lstrip(arguments))) { - print_usage(gb, command); - return true; - } - - gb->debug_stopped = false; - gb->stack_leak_detection = true; - gb->debug_call_depth = 0; - return false; -} - static bool registers(GB_gameboy_t *gb, char *arguments, char *modifiers, const debugger_command_t *command) { NO_MODIFIERS @@ -1986,12 +1970,35 @@ static const debugger_command_t commands[] = { {"step", 1, step, "Run the next instruction, stepping into function calls"}, {"finish", 1, finish, "Run until the current function returns"}, {"undo", 1, undo, "Revert the last command"}, + {"registers", 1, registers, "Print values of processor registers and other important registers"}, {"backtrace", 2, backtrace, "Display the current call stack"}, {"bt", 2, }, /* Alias */ - {"sld", 3, stack_leak_detection, "Like finish, but stops if a stack leak is detected"}, + {"print", 1, print, "Evaluate and print an expression" HELP_NEWLINE + "Use modifier to format as an address (a, default) or as a number in" HELP_NEWLINE + "decimal (d), hexadecimal (x), octal (o) or binary (b).", + "", "format", .argument_completer = symbol_completer, .modifiers_completer = format_completer}, + {"eval", 2, }, /* Alias */ + {"examine", 2, examine, "Examine values at address", "", "count", .argument_completer = symbol_completer}, + {"x", 1, }, /* Alias */ + {"disassemble", 1, disassemble, "Disassemble instructions at address", "", "count", .argument_completer = symbol_completer}, + {"breakpoint", 1, breakpoint, "Add a new breakpoint at the specified address/expression" HELP_NEWLINE + "Can also modify the condition of existing breakpoints." HELP_NEWLINE + "If the j modifier is used, the breakpoint will occur just before" HELP_NEWLINE + "jumping to the target.", + "[ if ]", "j", + .argument_completer = symbol_completer, .modifiers_completer = j_completer}, + {"delete", 2, delete, "Delete a breakpoint by its address, or all breakpoints", "[]", .argument_completer = symbol_completer}, + {"watch", 1, watch, "Add a new watchpoint at the specified address/expression." HELP_NEWLINE + "Can also modify the condition and type of existing watchpoints." HELP_NEWLINE + "Default watchpoint type is write-only.", + "[ if ]", "(r|w|rw)", + .argument_completer = symbol_completer, .modifiers_completer = rw_completer + }, + {"unwatch", 3, unwatch, "Delete a watchpoint by its address, or all watchpoints", "[]", .argument_completer = symbol_completer}, + {"softbreak", 2, softbreak, "Enable or disable software breakpoints", "(on|off)", .argument_completer = on_off_completer}, + {"list", 1, list, "List all set breakpoints and watchpoints"}, {"ticks", 2, ticks, "Display the number of CPU ticks since the last time 'ticks' was" HELP_NEWLINE "used"}, - {"registers", 1, registers, "Print values of processor registers and other important registers"}, {"cartridge", 2, mbc, "Display information about the MBC and cartridge"}, {"mbc", 3, }, /* Alias */ {"apu", 3, apu, "Display information about the current state of the audio processing unit", "[channel (1-4, 5 for NR5x)]"}, @@ -2001,31 +2008,6 @@ static const debugger_command_t commands[] = { {"lcd", 3, lcd, "Display information about the current state of the LCD controller"}, {"palettes", 3, palettes, "Display the current CGB palettes"}, {"dma", 3, dma, "Display the current OAM DMA status"}, - {"softbreak", 2, softbreak, "Enable or disable software breakpoints", "(on|off)", .argument_completer = on_off_completer}, - {"breakpoint", 1, breakpoint, "Add a new breakpoint at the specified address/expression" HELP_NEWLINE - "Can also modify the condition of existing breakpoints." HELP_NEWLINE - "If the j modifier is used, the breakpoint will occur just before" HELP_NEWLINE - "jumping to the target.", - "[ if ]", "j", - .argument_completer = symbol_completer, .modifiers_completer = j_completer}, - {"delete", 2, delete, "Delete a breakpoint by its address, or all breakpoints", "[]", .argument_completer = symbol_completer}, - {"watch", 1, watch, "Add a new watchpoint at the specified address/expression." HELP_NEWLINE - "Can also modify the condition and type of existing watchpoints." HELP_NEWLINE - "Default watchpoint type is write-only.", - "[ if ]", "(r|w|rw)", - .argument_completer = symbol_completer, .modifiers_completer = rw_completer - }, - {"unwatch", 3, unwatch, "Delete a watchpoint by its address, or all watchpoints", "[]", .argument_completer = symbol_completer}, - {"list", 1, list, "List all set breakpoints and watchpoints"}, - {"print", 1, print, "Evaluate and print an expression" HELP_NEWLINE - "Use modifier to format as an address (a, default) or as a number in" HELP_NEWLINE - "decimal (d), hexadecimal (x), octal (o) or binary (b).", - "", "format", .argument_completer = symbol_completer, .modifiers_completer = format_completer}, - {"eval", 2, }, /* Alias */ - {"examine", 2, examine, "Examine values at address", "", "count", .argument_completer = symbol_completer}, - {"x", 1, }, /* Alias */ - {"disassemble", 1, disassemble, "Disassemble instructions at address", "", "count", .argument_completer = symbol_completer}, - {"help", 1, help, "List available commands or show help for the specified command", "[]"}, {NULL,}, /* Null terminator */ @@ -2093,19 +2075,7 @@ void GB_debugger_call_hook(GB_gameboy_t *gb, uint16_t call_addr) { /* Called just after the CPU calls a function/enters an interrupt/etc... */ - if (gb->stack_leak_detection) { - if (gb->debug_call_depth >= sizeof(gb->sp_for_call_depth) / sizeof(gb->sp_for_call_depth[0])) { - GB_log(gb, "Potential stack overflow detected (Functions nest too much). \n"); - gb->debug_stopped = true; - } - else { - gb->sp_for_call_depth[gb->debug_call_depth] = gb->sp; - gb->addr_for_call_depth[gb->debug_call_depth] = gb->pc; - } - } - if (gb->backtrace_size < sizeof(gb->backtrace_sps) / sizeof(gb->backtrace_sps[0])) { - while (gb->backtrace_size) { if (gb->backtrace_sps[gb->backtrace_size - 1] < gb->sp) { gb->backtrace_size--; @@ -2130,21 +2100,6 @@ void GB_debugger_ret_hook(GB_gameboy_t *gb) gb->debug_call_depth--; - if (gb->stack_leak_detection) { - if (gb->debug_call_depth < 0) { - GB_log(gb, "Function finished without a stack leak.\n"); - gb->debug_stopped = true; - } - else { - if (gb->sp != gb->sp_for_call_depth[gb->debug_call_depth]) { - GB_log(gb, "Stack leak detected for function %s!\n", value_to_string(gb, gb->addr_for_call_depth[gb->debug_call_depth], true)); - GB_log(gb, "SP is $%04x, should be $%04x.\n", gb->sp, - gb->sp_for_call_depth[gb->debug_call_depth]); - gb->debug_stopped = true; - } - } - } - while (gb->backtrace_size) { if (gb->backtrace_sps[gb->backtrace_size - 1] <= gb->sp) { gb->backtrace_size--; @@ -2445,7 +2400,6 @@ void GB_debugger_run(GB_gameboy_t *gb) if (gb->debug_stopped && !gb->debug_disable) { gb->debug_next_command = false; gb->debug_fin_command = false; - gb->stack_leak_detection = false; input = gb->input_callback(gb); if (input == NULL) { diff --git a/Core/gb.h b/Core/gb.h index 1621149fa..7eb925e28 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -733,8 +733,6 @@ struct GB_gameboy_internal_s { void *nontrivial_jump_state; bool non_trivial_jump_breakpoint_occured; - /* SLD (Todo: merge with backtrace) */ - bool stack_leak_detection; signed debug_call_depth; uint16_t sp_for_call_depth[0x200]; /* Should be much more than enough */ uint16_t addr_for_call_depth[0x200]; From f2429e1c25064b8720002a0f5a64dfe29cf3844a Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 1 Jul 2022 16:22:47 +0300 Subject: [PATCH 025/116] Fix IB oopsies --- Cocoa/Preferences.xib | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Cocoa/Preferences.xib b/Cocoa/Preferences.xib index d6a3af66b..d75900c4f 100644 --- a/Cocoa/Preferences.xib +++ b/Cocoa/Preferences.xib @@ -222,7 +222,7 @@ - + @@ -251,7 +251,7 @@ - + @@ -281,7 +281,7 @@ - + @@ -446,7 +446,7 @@ - + @@ -522,7 +522,7 @@ - + @@ -637,7 +637,7 @@ - + @@ -790,7 +790,7 @@ - + @@ -879,7 +879,7 @@ - + From 1065a40d8f947a0f21609480f47fccca7e05b689 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 1 Jul 2022 17:40:47 +0300 Subject: [PATCH 026/116] Add rX as symbol aliases to IO_X --- Core/symbol_hash.c | 3 +++ Misc/registers.sym | 67 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) diff --git a/Core/symbol_hash.c b/Core/symbol_hash.c index 66894f1bc..62ec52a6d 100644 --- a/Core/symbol_hash.c +++ b/Core/symbol_hash.c @@ -44,6 +44,9 @@ const GB_bank_symbol_t *GB_map_find_symbol(GB_symbol_map_t *map, uint16_t addr) index--; } if (index < map->n_symbols) { + while (index && map->symbols[index].addr == map->symbols[index - 1].addr) { + index--; + } return &map->symbols[index]; } return NULL; diff --git a/Misc/registers.sym b/Misc/registers.sym index 58fff3e14..67c3266d3 100644 --- a/Misc/registers.sym +++ b/Misc/registers.sym @@ -1,67 +1,134 @@ 00:FF00 IO_JOYP +00:FF00 rJOYP 00:FF01 IO_SB +00:FF01 rSB 00:FF02 IO_SC +00:FF02 rSC 00:FF04 IO_DIV +00:FF04 rDIV 00:FF05 IO_TIMA +00:FF05 rTIMA 00:FF06 IO_TMA +00:FF06 rTMA 00:FF07 IO_TAC +00:FF07 rTAC 00:FF0F IO_IF +00:FF0F rIF 00:FF10 IO_NR10 +00:FF10 rNR10 00:FF11 IO_NR11 +00:FF11 rNR11 00:FF12 IO_NR12 +00:FF12 rNR12 00:FF13 IO_NR13 +00:FF13 rNR13 00:FF14 IO_NR14 +00:FF14 rNR14 00:FF16 IO_NR21 +00:FF16 rNR21 00:FF17 IO_NR22 +00:FF17 rNR22 00:FF18 IO_NR23 +00:FF18 rNR23 00:FF19 IO_NR24 +00:FF19 rNR24 00:FF1A IO_NR30 +00:FF1A rNR30 00:FF1B IO_NR31 +00:FF1B rNR31 00:FF1C IO_NR32 +00:FF1C rNR32 00:FF1D IO_NR33 +00:FF1D rNR33 00:FF1E IO_NR34 +00:FF1E rNR34 00:FF20 IO_NR41 +00:FF20 rNR41 00:FF21 IO_NR42 +00:FF21 rNR42 00:FF22 IO_NR43 +00:FF22 rNR43 00:FF23 IO_NR44 +00:FF23 rNR44 00:FF24 IO_NR50 +00:FF24 rNR50 00:FF25 IO_NR51 +00:FF25 rNR51 00:FF26 IO_NR52 +00:FF26 rNR52 00:FF30 IO_WAV_START +00:FF30 rWAV_START 00:FF3F IO_WAV_END +00:FF3F rWAV_END 00:FF40 IO_LCDC +00:FF40 rLCDC 00:FF41 IO_STAT +00:FF41 rSTAT 00:FF42 IO_SCY +00:FF42 rSCY 00:FF43 IO_SCX +00:FF43 rSCX 00:FF44 IO_LY +00:FF44 rLY 00:FF45 IO_LYC +00:FF45 rLYC 00:FF46 IO_DMA +00:FF46 rDMA 00:FF47 IO_BGP +00:FF47 rBGP 00:FF48 IO_OBP0 +00:FF48 rOBP0 00:FF49 IO_OBP1 +00:FF49 rOBP1 00:FF4A IO_WY +00:FF4A rWY 00:FF4B IO_WX +00:FF4B rWX 00:FF4C IO_KEY0 +00:FF4C rKEY0 00:FF4D IO_KEY1 +00:FF4D rKEY1 00:FF4F IO_VBK +00:FF4F rVBK 00:FF50 IO_BANK +00:FF50 rBANK 00:FF51 IO_HDMA1 +00:FF51 rHDMA1 00:FF52 IO_HDMA2 +00:FF52 rHDMA2 00:FF53 IO_HDMA3 +00:FF53 rHDMA3 00:FF54 IO_HDMA4 +00:FF54 rHDMA4 00:FF55 IO_HDMA5 +00:FF55 rHDMA5 00:FF56 IO_RP +00:FF56 rRP 00:FF68 IO_BGPI +00:FF68 rBGPI 00:FF69 IO_BGPD +00:FF69 rBGPD 00:FF6A IO_OBPI +00:FF6A rOBPI 00:FF6B IO_OBPD +00:FF6B rOBPD 00:FF6C IO_OPRI +00:FF6C rOPRI 00:FF70 IO_SVBK +00:FF70 rSVBK 00:FF71 IO_PSM +00:FF71 rPSM 00:FF72 IO_PSWX +00:FF72 rPSWX 00:FF73 IO_PSWY +00:FF73 rPSWY 00:FF74 IO_PSW +00:FF74 rPSW 00:FF75 IO_UNKNOWN5 +00:FF75 rUNKNOWN5 00:FF76 IO_PCM12 +00:FF76 rPCM12 00:FF77 IO_PCM34 +00:FF77 rPCM34 00:FFFF IO_IE +00:FFFF rIE From 63a858d7672ba858b1eda2fd21d27295df84151c Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 1 Jul 2022 22:46:03 +0300 Subject: [PATCH 027/116] Fix GBS player's appearance on Big Sur and newer --- Cocoa/Document.m | 7 ++- Cocoa/GBS.xib | 54 +++++++++--------- Cocoa/GBS11.xib | 128 ++++++++++++++++++++++++++++++++++++++++++ Cocoa/Next@2x.png | Bin 261 -> 257 bytes Cocoa/Previous@2x.png | Bin 256 -> 266 bytes Cocoa/Rewind@2x.png | Bin 223 -> 215 bytes 6 files changed, 161 insertions(+), 28 deletions(-) mode change 100644 => 100755 Cocoa/GBS.xib create mode 100755 Cocoa/GBS11.xib diff --git a/Cocoa/Document.m b/Cocoa/Document.m index cb9d71e36..b29f7b4c0 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -933,7 +933,12 @@ - (void)prepareGBSInterface: (GB_gbs_info_t *)info for (NSView *view in [_mainWindow.contentView.subviews copy]) { [view removeFromSuperview]; } - [[NSBundle mainBundle] loadNibNamed:@"GBS" owner:self topLevelObjects:nil]; + if (@available(macOS 11, *)) { + [[NSBundle mainBundle] loadNibNamed:@"GBS11" owner:self topLevelObjects:nil]; + } + else { + [[NSBundle mainBundle] loadNibNamed:@"GBS" owner:self topLevelObjects:nil]; + } [_mainWindow setContentSize:self.gbsPlayerView.bounds.size]; _mainWindow.styleMask &= ~NSWindowStyleMaskResizable; dispatch_async(dispatch_get_main_queue(), ^{ // Cocoa is weird, no clue why it's needed diff --git a/Cocoa/GBS.xib b/Cocoa/GBS.xib old mode 100644 new mode 100755 index 534ff5590..65bd44f82 --- a/Cocoa/GBS.xib +++ b/Cocoa/GBS.xib @@ -44,7 +44,7 @@ - - - - - - - - - - - - - - + - - + + @@ -114,6 +91,29 @@ + + + + + + + + + + + + + diff --git a/Cocoa/GBS11.xib b/Cocoa/GBS11.xib new file mode 100755 index 000000000..b7a69fd56 --- /dev/null +++ b/Cocoa/GBS11.xib @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Cocoa/Next@2x.png b/Cocoa/Next@2x.png index 3bff7f77b05f4bc13554d0419537eee2b13c30b7..c6b9d3aca4070b804aaf83e2c9cac0c6c5070f06 100644 GIT binary patch delta 229 zcmV=0)YaMB!9?BL_t(I%f*y24#F@DMIWrNpiVHe(;ab;-T?I+y+V%wE9wat z%FG>LWvqmdDq#jv35p#fG2mo-$r}=XBd}wRUN#9OVP7d2soWp}HA3A91mQ%coHIyw z>s25Kdlrg7A(lXBDVZpO900000NkvXXu0mjfQEOcA delta 233 zcmVQP5yQP4lJ?9C!-N} zDrP^C79rY~Oo$7GVGt%7FXG6`l=shJi=EWJ287GGa|6rc8)4>m=eDh@M>n z2^gfk|2F8^Cy>B5Zjy*|E~R@&W$chTYBKkfvv`CKEH;r%vfmXfoRn|>gY3=>Mx(?Kq{XxjXvYMkuupxS-g>4jb$s3m*B8Mr750k4NOU}V@_J|W4 oca0000v%CVLwD1pF%-~sSLjn%CIYBV#r{4jjRZ}LTiR|=!!5DGDtEkW%!3p z8M?yH*cD+a{7-d-L|ZMzu#70rfP=@Dh~R+-cos1M4gtc%L^L4`7!Z>vAb=5=%pRdC pJc2Xf@&FU=4}?NOSz#kcApoZcAc03I8@K=f002ovPDHLkV1lHkODq5Y delta 195 zcmV;!06hQK0p9_TB!3BTNLh0L02UYHAOutx*29>G z8U6#|VJwQc8Cn>=0p+0JKNO;a2!@BKGT0RAG3SBJA#ON$6fPsyGYkwi#03u|z%z*na6AYQA|?u9z<`)U0RfB* xkqnPeWgrRn2$qD)15CI-u%uKRSz!Z+0stbp=8B8{$gThY002ovPDHLkV1oNwM=1aR From a773297b3a4863d56f908b4b9fbb70bec17a2125 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 2 Jul 2022 18:11:55 +0300 Subject: [PATCH 028/116] Add CGB revision selection to the SDL frontend --- SDL/gui.c | 34 ++++++++++++++++++++++++++++++++++ SDL/gui.h | 7 ++++++- SDL/main.c | 5 +++-- 3 files changed, 43 insertions(+), 3 deletions(-) diff --git a/SDL/gui.c b/SDL/gui.c index f5b093bb2..bb7b80b4c 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -113,6 +113,7 @@ configuration_t configuration = .rumble_mode = GB_RUMBLE_ALL_GAMES, .default_scale = 2, .color_temperature = 10, + .cgb_revision = GB_MODEL_CGB_E - GB_MODEL_CGB_0, }; @@ -397,6 +398,38 @@ const char *current_model_string(unsigned index) [configuration.model]; } +static void cycle_cgb_revision(unsigned index) +{ + + configuration.cgb_revision++; + if (configuration.cgb_revision == GB_MODEL_CGB_E - GB_MODEL_CGB_0) { + configuration.cgb_revision = 0; + } + pending_command = GB_SDL_RESET_COMMAND; +} + +static void cycle_cgb_revision_backwards(unsigned index) +{ + if (configuration.cgb_revision == 0) { + configuration.cgb_revision = GB_MODEL_CGB_E - GB_MODEL_CGB_0; + } + configuration.cgb_revision--; + pending_command = GB_SDL_RESET_COMMAND; +} + +const char *current_cgb_revision_string(unsigned index) +{ + return (const char *[]){ + "CPU CGB 0 (Exp.)", + "CPU CGB A (Exp.)", + "CPU CGB B (Exp.)", + "CPU CGB C (Exp.)", + "CPU CGB D", + "CPU CGB E", + } + [configuration.cgb_revision]; +} + static void cycle_sgb_revision(unsigned index) { @@ -524,6 +557,7 @@ const char *current_rtc_mode_string(unsigned index) static const struct menu_item emulation_menu[] = { {"Emulated Model:", cycle_model, current_model_string, cycle_model_backwards}, + {"GBC Revision:", cycle_cgb_revision, current_cgb_revision_string, cycle_cgb_revision_backwards}, {"SGB Revision:", cycle_sgb_revision, current_sgb_revision_string, cycle_sgb_revision_backwards}, {"Boot ROMs Folder:", toggle_bootrom, current_bootrom_string, toggle_bootrom}, {"Rewind Length:", cycle_rewind, current_rewind_string, cycle_rewind_backwards}, diff --git a/SDL/gui.h b/SDL/gui.h index 81a13bb23..cc34733e4 100644 --- a/SDL/gui.h +++ b/SDL/gui.h @@ -123,9 +123,14 @@ typedef struct { /* v0.14.4 */ bool osd; - + + struct __attribute__((packed, aligned(4))) { + /* v0.15 */ bool allow_mouse_controls; + uint8_t cgb_revision; + + }; } configuration_t; extern configuration_t configuration; diff --git a/SDL/main.c b/SDL/main.c index 9a85661b0..686dcb4d0 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -649,7 +649,7 @@ static void run(void) model = (GB_model_t []) { [MODEL_DMG] = GB_MODEL_DMG_B, - [MODEL_CGB] = GB_MODEL_CGB_E, + [MODEL_CGB] = GB_MODEL_CGB_0 + configuration.cgb_revision, [MODEL_AGB] = GB_MODEL_AGB_A, [MODEL_MGB] = GB_MODEL_MGB, [MODEL_SGB] = (GB_model_t []) @@ -857,7 +857,7 @@ int main(int argc, char **argv) fclose(prefs_file); /* Sanitize for stability */ - configuration.color_correction_mode %= GB_COLOR_CORRECTION_LOW_CONTRAST +1; + configuration.color_correction_mode %= GB_COLOR_CORRECTION_LOW_CONTRAST + 1; configuration.scaling_mode %= GB_SDL_SCALING_MAX; configuration.default_scale %= GB_SDL_DEFAULT_SCALE_MAX + 1; configuration.blending_mode %= GB_FRAME_BLENDING_MODE_ACCURATE + 1; @@ -869,6 +869,7 @@ int main(int argc, char **argv) configuration.rumble_mode %= GB_RUMBLE_ALL_GAMES + 1; configuration.color_temperature %= 21; configuration.bootrom_path[sizeof(configuration.bootrom_path) - 1] = 0; + configuration.cgb_revision %= GB_MODEL_CGB_E - GB_MODEL_CGB_0 + 1; } if (configuration.model >= MODEL_MAX) { From 887a8104f5c98d4dc5c39872678e12b2233182c7 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 2 Jul 2022 21:00:40 +0300 Subject: [PATCH 029/116] Refresh icon if launched via a software update --- Cocoa/AppDelegate.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Cocoa/AppDelegate.m b/Cocoa/AppDelegate.m index 227ae39ed..1670472a4 100644 --- a/Cocoa/AppDelegate.m +++ b/Cocoa/AppDelegate.m @@ -35,6 +35,9 @@ @implementation AppDelegate - (void) applicationDidFinishLaunching:(NSNotification *)notification { + // Refresh icon if launched via a software update + [NSApplication sharedApplication].applicationIconImage = [NSImage imageNamed:@"AppIcon"]; + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; for (unsigned i = 0; i < GBButtonCount; i++) { if ([[defaults objectForKey:button_to_preference_name(i, 0)] isKindOfClass:[NSString class]]) { From 707103228808e196e704013ed6ff85e4546bf103 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 2 Jul 2022 21:03:26 +0300 Subject: [PATCH 030/116] Improved MMM01 emulation, fixes #447 --- Core/mbc.c | 7 ++++--- Core/memory.c | 13 ++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Core/mbc.c b/Core/mbc.c index fddd3a908..5d50db571 100644 --- a/Core/mbc.c +++ b/Core/mbc.c @@ -107,10 +107,10 @@ void GB_update_mbc_mappings(GB_gameboy_t *gb) if (gb->mmm01.locked) { if (gb->mmm01.multiplex_mode) { gb->mbc_rom0_bank = (gb->mmm01.rom_bank_low & (gb->mmm01.rom_bank_mask << 1)) | - ((gb->mmm01.rom_bank_low & (gb->mmm01.mbc1_mode? -1 : gb->mmm01.ram_bank_mask)) << 5) | + ((gb->mmm01.mbc1_mode? 0 : gb->mmm01.ram_bank_low) << 5) | (gb->mmm01.rom_bank_high << 7); gb->mbc_rom_bank = gb->mmm01.rom_bank_low | - (gb->mmm01.rom_bank_low << 5) | + (gb->mmm01.ram_bank_low << 5) | (gb->mmm01.rom_bank_high << 7); gb->mbc_ram_bank = gb->mmm01.rom_bank_mid | (gb->mmm01.ram_bank_high << 2); } @@ -125,7 +125,7 @@ void GB_update_mbc_mappings(GB_gameboy_t *gb) gb->mbc_ram_bank = gb->mmm01.ram_bank_low | (gb->mmm01.ram_bank_high << 2); } else { - gb->mbc_ram_bank = (gb->mmm01.ram_bank_low & gb->mmm01.ram_bank_mask) | (gb->mmm01.ram_bank_high << 2); + gb->mbc_ram_bank = gb->mmm01.ram_bank_low | (gb->mmm01.ram_bank_high << 2); } } if (gb->mbc_rom_bank == gb->mbc_rom0_bank) { @@ -256,6 +256,7 @@ void GB_reset_mbc(GB_gameboy_t *gb) if (gb->cartridge_type->mbc_type == GB_MMM01) { gb->mbc_rom_bank = -1; gb->mbc_rom0_bank = -2; + gb->mmm01.ram_bank_mask = -1; } else if (gb->cartridge_type->mbc_type == GB_MBC5 || gb->cartridge_type->mbc_type == GB_CAMERA) { diff --git a/Core/memory.c b/Core/memory.c index 18f8cdf9d..2e686c8f5 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -859,15 +859,12 @@ static void write_mbc(GB_gameboy_t *gb, uint16_t addr, uint8_t value) case 0x2000: case 0x3000: if (!gb->mmm01.locked) { gb->mmm01.rom_bank_mid = value >> 5; - gb->mmm01.rom_bank_low = value; - } - else { - gb->mmm01.rom_bank_low &= (gb->mmm01.rom_bank_mask << 1); - gb->mmm01.rom_bank_low |= ~(gb->mmm01.rom_bank_mask << 1) & value; } + gb->mmm01.rom_bank_low &= (gb->mmm01.rom_bank_mask << 1); + gb->mmm01.rom_bank_low |= ~(gb->mmm01.rom_bank_mask << 1) & value; break; case 0x4000: case 0x5000: - gb->mmm01.ram_bank_low = value; + gb->mmm01.ram_bank_low = value | ~gb->mmm01.ram_bank_mask; if (!gb->mmm01.locked) { gb->mmm01.ram_bank_high = value >> 2; gb->mmm01.rom_bank_high = value >> 4; @@ -875,7 +872,9 @@ static void write_mbc(GB_gameboy_t *gb, uint16_t addr, uint8_t value) } break; case 0x6000: case 0x7000: - gb->mmm01.mbc1_mode = (value & 1) && !gb->mmm01.mbc1_mode_disable; + if (!gb->mmm01.mbc1_mode_disable) { + gb->mmm01.mbc1_mode = (value & 1); + } if (!gb->mmm01.locked) { gb->mmm01.rom_bank_mask = value >> 2; gb->mmm01.multiplex_mode = value & 0x40; From e466c3c5b1a5676edd63a0205c83f52afce3669a Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 2 Jul 2022 22:40:37 +0300 Subject: [PATCH 031/116] Ehh oops --- SDL/gui.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/SDL/gui.c b/SDL/gui.c index bb7b80b4c..ae1c6e9b0 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -401,10 +401,12 @@ const char *current_model_string(unsigned index) static void cycle_cgb_revision(unsigned index) { - configuration.cgb_revision++; if (configuration.cgb_revision == GB_MODEL_CGB_E - GB_MODEL_CGB_0) { configuration.cgb_revision = 0; } + else { + configuration.cgb_revision++; + } pending_command = GB_SDL_RESET_COMMAND; } @@ -413,7 +415,9 @@ static void cycle_cgb_revision_backwards(unsigned index) if (configuration.cgb_revision == 0) { configuration.cgb_revision = GB_MODEL_CGB_E - GB_MODEL_CGB_0; } - configuration.cgb_revision--; + else { + configuration.cgb_revision--; + } pending_command = GB_SDL_RESET_COMMAND; } From faccdd3e9baa86bdb9fdeca1ec0dbcbdf95981c3 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 2 Jul 2022 22:41:07 +0300 Subject: [PATCH 032/116] Correct the Windows audio dialog rate, add a default file name --- OpenDialog/windows.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/OpenDialog/windows.c b/OpenDialog/windows.c index 13dea8e6f..e9408040d 100644 --- a/OpenDialog/windows.c +++ b/OpenDialog/windows.c @@ -65,22 +65,25 @@ char *do_open_folder_dialog(void) char *do_save_recording_dialog(unsigned frequency) { OPENFILENAMEW dialog; - wchar_t filename[MAX_PATH + 5]; - - filename[0] = '\0'; + wchar_t filename[MAX_PATH + 5] = L"recording.wav"; + memset(&dialog, 0, sizeof(dialog)); dialog.lStructSize = sizeof(dialog); dialog.lpstrFile = filename; dialog.nMaxFile = MAX_PATH; - if (frequency == 48000) { - dialog.lpstrFilter = L"RIFF WAVE\0*.wav\0Apple AIFF\0*.aiff;*.aif;*.aifc\0Raw PCM (Stereo 48000Hz, 16-bit LE)\0*.raw;*.pcm;\0All files\0*.*\0\0"; - } - else { - dialog.lpstrFilter = L"RIFF WAVE\0*.wav\0Apple AIFF\0*.aiff;*.aif;*.aifc\0Raw PCM (Stereo 44100Hz, 16-bit LE)\0*.raw;*.pcm;\0All files\0*.*\0\0"; + switch (frequency) { + case 96000: + dialog.lpstrFilter = L"RIFF WAVE\0*.wav\0Apple AIFF\0*.aiff;*.aif;*.aifc\0Raw PCM (Stereo 96000Hz, 16-bit LE)\0*.raw;*.pcm;\0All files\0*.*\0\0"; + break; + case 48000: + dialog.lpstrFilter = L"RIFF WAVE\0*.wav\0Apple AIFF\0*.aiff;*.aif;*.aifc\0Raw PCM (Stereo 48000Hz, 16-bit LE)\0*.raw;*.pcm;\0All files\0*.*\0\0"; + break; + case 44100: + default: + dialog.lpstrFilter = L"RIFF WAVE\0*.wav\0Apple AIFF\0*.aiff;*.aif;*.aifc\0Raw PCM (Stereo 44100Hz, 16-bit LE)\0*.raw;*.pcm;\0All files\0*.*\0\0"; + break; } dialog.nFilterIndex = 1; - dialog.lpstrFileTitle = NULL; - dialog.nMaxFileTitle = 0; dialog.lpstrInitialDir = NULL; dialog.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; From 3c4bfd2a1b222779e102b048837dde9ec75b8def Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 2 Jul 2022 22:41:17 +0300 Subject: [PATCH 033/116] Update version to 0.15 --- version.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.mk b/version.mk index 89642709d..1582a0707 100644 --- a/version.mk +++ b/version.mk @@ -1 +1 @@ -VERSION := 0.14.7 \ No newline at end of file +VERSION := 0.15 \ No newline at end of file From 004c20d8e26c94f1bee7c7924aaa56691289c66b Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 3 Jul 2022 22:23:35 +0300 Subject: [PATCH 034/116] Handle GateKeeper and write permissions in the auto updater --- Cocoa/AppDelegate.m | 55 ++++++++++++++++++++++++++++++++++++++++++++- Makefile | 2 +- 2 files changed, 55 insertions(+), 2 deletions(-) diff --git a/Cocoa/AppDelegate.m b/Cocoa/AppDelegate.m index 1670472a4..65e5934b8 100644 --- a/Cocoa/AppDelegate.m +++ b/Cocoa/AppDelegate.m @@ -5,6 +5,7 @@ #import #import #import +#import #define UPDATE_SERVER "https://sameboy.github.io" @@ -31,6 +32,7 @@ @implementation AppDelegate UPDATE_FAILED, } _updateState; NSString *_downloadDirectory; + AuthorizationRef _auth; } - (void) applicationDidFinishLaunching:(NSNotification *)notification @@ -366,8 +368,55 @@ - (IBAction)skipVersion:(id)sender [self.updateWindow performClose:sender]; } +- (bool)executePath:(NSString *)path withArguments:(NSArray *)arguments +{ + if (!_auth) { + NSTask *task = [[NSTask alloc] init]; + task.launchPath = path; + task.arguments = arguments; + [task launch]; + [task waitUntilExit]; + return task.terminationStatus == 0 && task.terminationReason == NSTaskTerminationReasonExit; + } + + char *argv[arguments.count + 1]; + argv[arguments.count] = NULL; + for (unsigned i = 0; i < arguments.count; i++) { + argv[i] = (char *)arguments[i].UTF8String; + } + + return AuthorizationExecuteWithPrivileges(_auth, path.UTF8String, kAuthorizationFlagDefaults, argv, NULL) == errAuthorizationSuccess; +} + +- (void)deauthorize +{ + if (_auth) { + AuthorizationFree(_auth, kAuthorizationFlagDefaults); + _auth = nil; + } +} + - (IBAction)installUpdate:(id)sender { + bool needsAuthorization = false; + if ([self executePath:@"/usr/sbin/spctl" withArguments:@[@"--status"]]) { // Succeeds when GateKeeper is on + // GateKeeper is on, we need to --add ourselves as root, else we might get a GateKeeper crash + needsAuthorization = true; + } + else if (access(_dyld_get_image_name(0), W_OK)) { + // We don't have write access, so we need authorization to update as root + needsAuthorization = true; + } + + if (needsAuthorization && !_auth) { + AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagPreAuthorize | kAuthorizationFlagInteractionAllowed, &_auth); + // Make sure we can modify the bundle + if (![self executePath:@"/usr/sbin/chown" withArguments:@[@"-R", [NSString stringWithFormat:@"%d:%d", getuid(), getgid()], [NSBundle mainBundle].bundlePath]]) { + [self deauthorize]; + return; + } + } + [self.updateProgressSpinner startAnimation:nil]; self.updateProgressButton.title = @"Cancel"; self.updateProgressButton.enabled = true; @@ -386,8 +435,8 @@ - (IBAction)installUpdate:(id)sender appropriateForURL:[[NSBundle mainBundle] bundleURL] create:true error:nil] path]; - NSTask *unzipTask; if (!_downloadDirectory) { + [self deauthorize]; dispatch_sync(dispatch_get_main_queue(), ^{ self.updateProgressButton.enabled = false; self.updateProgressLabel.stringValue = @"Failed to extract update."; @@ -399,12 +448,14 @@ - (IBAction)installUpdate:(id)sender return; } + NSTask *unzipTask; unzipTask = [[NSTask alloc] init]; unzipTask.launchPath = @"/usr/bin/unzip"; unzipTask.arguments = @[location.path, @"-d", _downloadDirectory]; [unzipTask launch]; [unzipTask waitUntilExit]; if (unzipTask.terminationStatus != 0 || unzipTask.terminationReason != NSTaskTerminationReasonExit) { + [self deauthorize]; [[NSFileManager defaultManager] removeItemAtPath:_downloadDirectory error:nil]; dispatch_sync(dispatch_get_main_queue(), ^{ self.updateProgressButton.enabled = false; @@ -449,6 +500,7 @@ - (void)performUpgrade NSError *error = nil; [[NSFileManager defaultManager] moveItemAtPath:contentsPath toPath:contentsTempPath error:&error]; if (error) { + [self deauthorize]; [[NSFileManager defaultManager] removeItemAtPath:_downloadDirectory error:nil]; _downloadDirectory = nil; dispatch_sync(dispatch_get_main_queue(), ^{ @@ -463,6 +515,7 @@ - (void)performUpgrade } [[NSFileManager defaultManager] moveItemAtPath:updateContentsPath toPath:contentsPath error:&error]; if (error) { + [self deauthorize]; [[NSFileManager defaultManager] moveItemAtPath:contentsTempPath toPath:contentsPath error:nil]; [[NSFileManager defaultManager] removeItemAtPath:_downloadDirectory error:nil]; _downloadDirectory = nil; diff --git a/Makefile b/Makefile index e5667731d..6637bce06 100644 --- a/Makefile +++ b/Makefile @@ -163,7 +163,7 @@ endif CFLAGS += -F/Library/Frameworks -mmacosx-version-min=10.9 -isysroot $(SYSROOT) OCFLAGS += -x objective-c -fobjc-arc -Wno-deprecated-declarations -isysroot $(SYSROOT) -LDFLAGS += -framework AppKit -framework PreferencePanes -framework Carbon -framework QuartzCore -weak_framework Metal -weak_framework MetalKit -mmacosx-version-min=10.9 -isysroot $(SYSROOT) +LDFLAGS += -framework AppKit -framework PreferencePanes -framework Carbon -framework QuartzCore -framework Security -weak_framework Metal -weak_framework MetalKit -mmacosx-version-min=10.9 -isysroot $(SYSROOT) GL_LDFLAGS := -framework OpenGL endif CFLAGS += -Wno-deprecated-declarations From 856a2b0ebe00524ff29c78d7ac5c9c293dc1e137 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 4 Jul 2022 00:13:05 +0300 Subject: [PATCH 035/116] Makefile fixes, explicitly codesign the app bundle for releases --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 6637bce06..15e1fb785 100644 --- a/Makefile +++ b/Makefile @@ -205,7 +205,7 @@ endif cocoa: $(BIN)/SameBoy.app quicklook: $(BIN)/SameBoy.qlgenerator sdl: $(SDL_TARGET) $(BIN)/SDL/dmg_boot.bin $(BIN)/SDL/mgb_boot.bin $(BIN)/SDL/cgb0_boot.bin $(BIN)/SDL/cgb_boot.bin $(BIN)/SDL/agb_boot.bin $(BIN)/SDL/sgb_boot.bin $(BIN)/SDL/sgb2_boot.bin $(BIN)/SDL/LICENSE $(BIN)/SDL/registers.sym $(BIN)/SDL/background.bmp $(BIN)/SDL/Shaders -bootroms: $(BIN)/BootROMs/agb_boot.bin $(BIN)/BootROMs/cgb_boot.bin $(BIN)/BootROMs/cgb0_boot.bin $(BIN)/BootROMs/dmg_boot.bin $(BIN)/BootROMs/sgb_boot.bin $(BIN)/BootROMs/sgb2_boot.bin +bootroms: $(BIN)/BootROMs/agb_boot.bin $(BIN)/BootROMs/cgb_boot.bin $(BIN)/BootROMs/cgb0_boot.bin $(BIN)/BootROMs/dmg_boot.bin $(BIN)/BootROMs/mgb_boot.bin $(BIN)/BootROMs/sgb_boot.bin $(BIN)/BootROMs/sgb2_boot.bin tester: $(TESTER_TARGET) $(BIN)/tester/dmg_boot.bin $(BIN)/tester/cgb_boot.bin $(BIN)/tester/agb_boot.bin $(BIN)/tester/sgb_boot.bin $(BIN)/tester/sgb2_boot.bin all: cocoa sdl tester libretro @@ -301,6 +301,9 @@ $(BIN)/SameBoy.app: $(BIN)/SameBoy.app/Contents/MacOS/SameBoy \ cp Shaders/*.fsh Shaders/*.metal $(BIN)/SameBoy.app/Contents/Resources/Shaders $(MKDIR) -p $(BIN)/SameBoy.app/Contents/Library/QuickLook/ cp -rf $(BIN)/SameBoy.qlgenerator $(BIN)/SameBoy.app/Contents/Library/QuickLook/ +ifeq ($(CONF), release) + codesign -fs - $@ +endif $(BIN)/SameBoy.app/Contents/MacOS/SameBoy: $(CORE_OBJECTS) $(COCOA_OBJECTS) -@$(MKDIR) -p $(dir $@) From d9b8e829a5908bfd30166ef352d6dc162b807810 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 8 Jul 2022 14:17:28 +0300 Subject: [PATCH 036/116] Fix crash on Windows 8.x --- SDL/audio/xaudio2_7.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDL/audio/xaudio2_7.c b/SDL/audio/xaudio2_7.c index fdce47f6b..6cc163d2a 100644 --- a/SDL/audio/xaudio2_7.c +++ b/SDL/audio/xaudio2_7.c @@ -38,7 +38,7 @@ static inline HRESULT XAudio2Create(IXAudio2 **ppXAudio2, if (SUCCEEDED(hr)) { *ppXAudio2 = pXAudio2; } - else { + else if (pXAudio2) { pXAudio2->lpVtbl->Release(pXAudio2); } return hr; @@ -132,4 +132,4 @@ static bool _audio_init(void) return true; } -GB_AUDIO_DRIVER(XAudio2_7); \ No newline at end of file +GB_AUDIO_DRIVER(XAudio2_7); From 88f5b22bf6d9285aba26b0dcebaf2fff33f7ba86 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 8 Jul 2022 17:51:42 +0300 Subject: [PATCH 037/116] Allow setting a non-default audio driver, fixes #466 --- SDL/audio.c | 28 ++++++++++ SDL/audio/audio.h | 1 + SDL/configuration.c | 49 ++++++++++++++++++ SDL/configuration.h | 103 +++++++++++++++++++++++++++++++++++++ SDL/gui.c | 122 ++++++++++++++++++++++++++------------------ SDL/gui.h | 96 +--------------------------------- SDL/main.c | 1 + 7 files changed, 254 insertions(+), 146 deletions(-) create mode 100644 SDL/configuration.c create mode 100644 SDL/configuration.h diff --git a/SDL/audio.c b/SDL/audio.c index 1627189fe..f9a49a732 100644 --- a/SDL/audio.c +++ b/SDL/audio.c @@ -2,6 +2,7 @@ #include #include #include "audio/audio.h" +#include "configuration.h" #define unlikely(x) __builtin_expect((bool)(x), 0) @@ -17,6 +18,18 @@ bool GB_audio_init(void) GB_AUDIO_DRIVER_REF(SDL), }; + // First try the preferred driver + for (unsigned i = 0; i < sizeof(drivers) / sizeof(drivers[0]); i++) { + driver = drivers[i]; + if (strcmp(driver->name, configuration.audio_driver) != 0) { + continue; + } + if (driver->audio_init()) { + return true; + } + } + + // Else go by priority for (unsigned i = 0; i < sizeof(drivers) / sizeof(drivers[0]); i++) { driver = drivers[i]; if (driver->audio_init()) { @@ -69,3 +82,18 @@ const char *GB_audio_driver_name(void) if (unlikely(!driver)) return "None"; return driver->name; } + +const char *GB_audio_driver_name_at_index(unsigned index) +{ + const GB_audio_driver_t *drivers[] = { +#ifdef _WIN32 + GB_AUDIO_DRIVER_REF(XAudio2), + GB_AUDIO_DRIVER_REF(XAudio2_7), +#endif + GB_AUDIO_DRIVER_REF(SDL), + }; + if (index >= sizeof(drivers) / sizeof(drivers[0])) { + return ""; + } + return drivers[index]->name; +} diff --git a/SDL/audio/audio.h b/SDL/audio/audio.h index d743c32ba..1b2fa713e 100644 --- a/SDL/audio/audio.h +++ b/SDL/audio/audio.h @@ -13,6 +13,7 @@ size_t GB_audio_get_queue_length(void); void GB_audio_queue_sample(GB_sample_t *sample); bool GB_audio_init(void); const char *GB_audio_driver_name(void); +const char *GB_audio_driver_name_at_index(unsigned index); typedef struct { typeof(GB_audio_is_playing) *audio_is_playing; diff --git a/SDL/configuration.c b/SDL/configuration.c new file mode 100644 index 000000000..bde42ebcd --- /dev/null +++ b/SDL/configuration.c @@ -0,0 +1,49 @@ +#include "configuration.h" + +configuration_t configuration = +{ + .keys = { + SDL_SCANCODE_RIGHT, + SDL_SCANCODE_LEFT, + SDL_SCANCODE_UP, + SDL_SCANCODE_DOWN, + SDL_SCANCODE_X, + SDL_SCANCODE_Z, + SDL_SCANCODE_BACKSPACE, + SDL_SCANCODE_RETURN, + SDL_SCANCODE_SPACE + }, + .keys_2 = { + SDL_SCANCODE_TAB, + SDL_SCANCODE_LSHIFT, + }, + .joypad_configuration = { + 13, + 14, + 11, + 12, + 0, + 1, + 9, + 8, + 10, + 4, + -1, + 5, + }, + .joypad_axises = { + 0, + 1, + }, + .color_correction_mode = GB_COLOR_CORRECTION_EMULATE_HARDWARE, + .highpass_mode = GB_HIGHPASS_ACCURATE, + .scaling_mode = GB_SDL_SCALING_INTEGER_FACTOR, + .blending_mode = GB_FRAME_BLENDING_MODE_ACCURATE, + .rewind_length = 60 * 2, + .model = MODEL_CGB, + .volume = 100, + .rumble_mode = GB_RUMBLE_ALL_GAMES, + .default_scale = 2, + .color_temperature = 10, + .cgb_revision = GB_MODEL_CGB_E - GB_MODEL_CGB_0, +}; diff --git a/SDL/configuration.h b/SDL/configuration.h new file mode 100644 index 000000000..b3ac93456 --- /dev/null +++ b/SDL/configuration.h @@ -0,0 +1,103 @@ +#ifndef configuration_h +#define configuration_h + +#include +#include +#include "shader.h" + +enum scaling_mode { + GB_SDL_SCALING_ENTIRE_WINDOW, + GB_SDL_SCALING_KEEP_RATIO, + GB_SDL_SCALING_INTEGER_FACTOR, + GB_SDL_SCALING_MAX, +}; + +typedef enum { + JOYPAD_BUTTON_RIGHT, + JOYPAD_BUTTON_LEFT, + JOYPAD_BUTTON_UP, + JOYPAD_BUTTON_DOWN, + JOYPAD_BUTTON_A, + JOYPAD_BUTTON_B, + JOYPAD_BUTTON_SELECT, + JOYPAD_BUTTON_START, + JOYPAD_BUTTON_MENU, + JOYPAD_BUTTON_TURBO, + JOYPAD_BUTTON_REWIND, + JOYPAD_BUTTON_SLOW_MOTION, + JOYPAD_BUTTONS_MAX +} joypad_button_t; + +typedef enum { + JOYPAD_AXISES_X, + JOYPAD_AXISES_Y, + JOYPAD_AXISES_MAX +} joypad_axis_t; + +typedef struct { + SDL_Scancode keys[9]; + GB_color_correction_mode_t color_correction_mode; + enum scaling_mode scaling_mode; + uint8_t blending_mode; + + GB_highpass_mode_t highpass_mode; + + bool _deprecated_div_joystick; + bool _deprecated_flip_joystick_bit_1; + bool _deprecated_swap_joysticks_bits_1_and_2; + + char filter[32]; + enum { + MODEL_DMG, + MODEL_CGB, + MODEL_AGB, + MODEL_SGB, + MODEL_MGB, + MODEL_MAX, + } model; + + /* v0.11 */ + uint32_t rewind_length; + SDL_Scancode keys_2[32]; /* Rewind and underclock, + padding for the future */ + uint8_t joypad_configuration[32]; /* 12 Keys + padding for the future*/; + uint8_t joypad_axises[JOYPAD_AXISES_MAX]; + + /* v0.12 */ + enum { + SGB_NTSC, + SGB_PAL, + SGB_2, + SGB_MAX + } sgb_revision; + + /* v0.13 */ + uint8_t dmg_palette; + GB_border_mode_t border_mode; + uint8_t volume; + GB_rumble_mode_t rumble_mode; + + uint8_t default_scale; + + /* v0.14 */ + unsigned padding; + uint8_t color_temperature; + char bootrom_path[4096]; + uint8_t interference_volume; + GB_rtc_mode_t rtc_mode; + + /* v0.14.4 */ + bool osd; + + struct __attribute__((packed, aligned(4))) { + + /* v0.15 */ + bool allow_mouse_controls; + uint8_t cgb_revision; + /* v0.15.1 */ + char audio_driver[16]; + }; +} configuration_t; + +extern configuration_t configuration; + +#endif diff --git a/SDL/gui.c b/SDL/gui.c index ae1c6e9b0..b513d2106 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -68,55 +68,6 @@ void render_texture(void *pixels, void *previous) } } -configuration_t configuration = -{ - .keys = { - SDL_SCANCODE_RIGHT, - SDL_SCANCODE_LEFT, - SDL_SCANCODE_UP, - SDL_SCANCODE_DOWN, - SDL_SCANCODE_X, - SDL_SCANCODE_Z, - SDL_SCANCODE_BACKSPACE, - SDL_SCANCODE_RETURN, - SDL_SCANCODE_SPACE - }, - .keys_2 = { - SDL_SCANCODE_TAB, - SDL_SCANCODE_LSHIFT, - }, - .joypad_configuration = { - 13, - 14, - 11, - 12, - 0, - 1, - 9, - 8, - 10, - 4, - -1, - 5, - }, - .joypad_axises = { - 0, - 1, - }, - .color_correction_mode = GB_COLOR_CORRECTION_EMULATE_HARDWARE, - .highpass_mode = GB_HIGHPASS_ACCURATE, - .scaling_mode = GB_SDL_SCALING_INTEGER_FACTOR, - .blending_mode = GB_FRAME_BLENDING_MODE_ACCURATE, - .rewind_length = 60 * 2, - .model = MODEL_CGB, - .volume = 100, - .rumble_mode = GB_RUMBLE_ALL_GAMES, - .default_scale = 2, - .color_temperature = 10, - .cgb_revision = GB_MODEL_CGB_E - GB_MODEL_CGB_0, -}; - - static const char *help[] = { "Drop a ROM to play.\n" "\n" @@ -961,17 +912,86 @@ static const char *audio_driver_string(unsigned index) return GB_audio_driver_name(); } +static const char *preferred_audio_driver_string(unsigned index) +{ + if (configuration.audio_driver[0] == 0) { + return "Auto"; + } + return configuration.audio_driver; +} + +static void audio_driver_changed(void); + +static void cycle_prefrered_audio_driver(unsigned index) +{ + audio_driver_changed(); + if (configuration.audio_driver[0] == 0) { + strcpy(configuration.audio_driver, GB_audio_driver_name_at_index(0)); + return; + } + unsigned i = 0; + while (true) { + const char *name = GB_audio_driver_name_at_index(i); + if (name[0] == 0) { // Not a supported driver? Switch to auto + configuration.audio_driver[0] = 0; + return; + } + if (strcmp(configuration.audio_driver, name) == 0) { + strcpy(configuration.audio_driver, GB_audio_driver_name_at_index(i + 1)); + return; + } + i++; + } +} + +static void cycle_preferred_audio_driver_backwards(unsigned index) +{ + audio_driver_changed(); + if (configuration.audio_driver[0] == 0) { + unsigned i = 0; + while (true) { + const char *name = GB_audio_driver_name_at_index(i); + if (name[0] == 0) { + strcpy(configuration.audio_driver, GB_audio_driver_name_at_index(i - 1)); + return; + } + i++; + } + return; + } + unsigned i = 0; + while (true) { + const char *name = GB_audio_driver_name_at_index(i); + if (name[0] == 0) { // Not a supported driver? Switch to auto + configuration.audio_driver[0] = 0; + return; + } + if (strcmp(configuration.audio_driver, name) == 0) { + strcpy(configuration.audio_driver, GB_audio_driver_name_at_index(i - 1)); + return; + } + i++; + } +} + static void nop(unsigned index){} -static const struct menu_item audio_menu[] = { +static struct menu_item audio_menu[] = { {"Highpass Filter:", cycle_highpass_filter, highpass_filter_string, cycle_highpass_filter_backwards}, {"Volume:", increase_volume, volume_string, decrease_volume}, {"Interference Volume:", increase_interference_volume, interference_volume_string, decrease_interference_volume}, - {"Audio Driver:", nop, audio_driver_string}, + {"Preferred Audio Driver:", cycle_prefrered_audio_driver, preferred_audio_driver_string, cycle_preferred_audio_driver_backwards}, + {"Active Driver:", nop, audio_driver_string}, {"Back", return_to_root_menu}, {NULL,} }; +static void audio_driver_changed(void) +{ + audio_menu[4].value_getter = NULL; + audio_menu[4].string = "Relaunch to apply"; +} + static void enter_audio_menu(unsigned index) { current_menu = audio_menu; diff --git a/SDL/gui.h b/SDL/gui.h index cc34733e4..f23ebd86f 100644 --- a/SDL/gui.h +++ b/SDL/gui.h @@ -5,6 +5,7 @@ #include #include #include "shader.h" +#include "configuration.h" #define JOYSTICK_HIGH 0x4000 #define JOYSTICK_LOW 0x3800 @@ -24,14 +25,6 @@ extern SDL_PixelFormat *pixel_format; extern SDL_Haptic *haptic; extern shader_t shader; -enum scaling_mode { - GB_SDL_SCALING_ENTIRE_WINDOW, - GB_SDL_SCALING_KEEP_RATIO, - GB_SDL_SCALING_INTEGER_FACTOR, - GB_SDL_SCALING_MAX, -}; - - enum pending_command { GB_SDL_NO_COMMAND, GB_SDL_SAVE_STATE_COMMAND, @@ -48,93 +41,6 @@ extern enum pending_command pending_command; extern unsigned command_parameter; extern char *dropped_state_file; -typedef enum { - JOYPAD_BUTTON_RIGHT, - JOYPAD_BUTTON_LEFT, - JOYPAD_BUTTON_UP, - JOYPAD_BUTTON_DOWN, - JOYPAD_BUTTON_A, - JOYPAD_BUTTON_B, - JOYPAD_BUTTON_SELECT, - JOYPAD_BUTTON_START, - JOYPAD_BUTTON_MENU, - JOYPAD_BUTTON_TURBO, - JOYPAD_BUTTON_REWIND, - JOYPAD_BUTTON_SLOW_MOTION, - JOYPAD_BUTTONS_MAX -} joypad_button_t; - -typedef enum { - JOYPAD_AXISES_X, - JOYPAD_AXISES_Y, - JOYPAD_AXISES_MAX -} joypad_axis_t; - -typedef struct { - SDL_Scancode keys[9]; - GB_color_correction_mode_t color_correction_mode; - enum scaling_mode scaling_mode; - uint8_t blending_mode; - - GB_highpass_mode_t highpass_mode; - - bool _deprecated_div_joystick; - bool _deprecated_flip_joystick_bit_1; - bool _deprecated_swap_joysticks_bits_1_and_2; - - char filter[32]; - enum { - MODEL_DMG, - MODEL_CGB, - MODEL_AGB, - MODEL_SGB, - MODEL_MGB, - MODEL_MAX, - } model; - - /* v0.11 */ - uint32_t rewind_length; - SDL_Scancode keys_2[32]; /* Rewind and underclock, + padding for the future */ - uint8_t joypad_configuration[32]; /* 12 Keys + padding for the future*/; - uint8_t joypad_axises[JOYPAD_AXISES_MAX]; - - /* v0.12 */ - enum { - SGB_NTSC, - SGB_PAL, - SGB_2, - SGB_MAX - } sgb_revision; - - /* v0.13 */ - uint8_t dmg_palette; - GB_border_mode_t border_mode; - uint8_t volume; - GB_rumble_mode_t rumble_mode; - - uint8_t default_scale; - - /* v0.14 */ - unsigned padding; - uint8_t color_temperature; - char bootrom_path[4096]; - uint8_t interference_volume; - GB_rtc_mode_t rtc_mode; - - /* v0.14.4 */ - bool osd; - - struct __attribute__((packed, aligned(4))) { - - /* v0.15 */ - bool allow_mouse_controls; - uint8_t cgb_revision; - - }; -} configuration_t; - -extern configuration_t configuration; - void update_viewport(void); void run_gui(bool is_running); void render_texture(void *pixels, void *previous); diff --git a/SDL/main.c b/SDL/main.c index 686dcb4d0..51b1f69e8 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -870,6 +870,7 @@ int main(int argc, char **argv) configuration.color_temperature %= 21; configuration.bootrom_path[sizeof(configuration.bootrom_path) - 1] = 0; configuration.cgb_revision %= GB_MODEL_CGB_E - GB_MODEL_CGB_0 + 1; + configuration.audio_driver[15] = 0; } if (configuration.model >= MODEL_MAX) { From 0dbfaef4cf9ca6a75875ee82afb757de541c2726 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 8 Jul 2022 19:51:10 +0300 Subject: [PATCH 038/116] Query the system sample rate on Windows and use it, rather than hardcode 96KHz --- OpenDialog/windows.c | 20 +++++++--------- SDL/audio/xaudio2.c | 54 +++++++++++++++++++++++++++++++++++++------ SDL/audio/xaudio2_7.c | 51 +++++++++++++++++++++++++++++++++++----- SDL/audio/xaudio2_7.h | 7 +++++- 4 files changed, 106 insertions(+), 26 deletions(-) diff --git a/OpenDialog/windows.c b/OpenDialog/windows.c index e9408040d..5a0af0e32 100644 --- a/OpenDialog/windows.c +++ b/OpenDialog/windows.c @@ -1,5 +1,6 @@ #include #include +#include #include "open_dialog.h" static char *wc_to_utf8_alloc(const wchar_t *wide) @@ -66,23 +67,18 @@ char *do_save_recording_dialog(unsigned frequency) { OPENFILENAMEW dialog; wchar_t filename[MAX_PATH + 5] = L"recording.wav"; + static wchar_t filter[] = L"RIFF WAVE\0*.wav\0Apple AIFF\0*.aiff;*.aif;*.aifc\0Raw PCM (Stereo _______Hz, 16-bit LE)\0*.raw;*.pcm;\0All files\0*.*\0\0"; memset(&dialog, 0, sizeof(dialog)); dialog.lStructSize = sizeof(dialog); dialog.lpstrFile = filename; dialog.nMaxFile = MAX_PATH; - switch (frequency) { - case 96000: - dialog.lpstrFilter = L"RIFF WAVE\0*.wav\0Apple AIFF\0*.aiff;*.aif;*.aifc\0Raw PCM (Stereo 96000Hz, 16-bit LE)\0*.raw;*.pcm;\0All files\0*.*\0\0"; - break; - case 48000: - dialog.lpstrFilter = L"RIFF WAVE\0*.wav\0Apple AIFF\0*.aiff;*.aif;*.aifc\0Raw PCM (Stereo 48000Hz, 16-bit LE)\0*.raw;*.pcm;\0All files\0*.*\0\0"; - break; - case 44100: - default: - dialog.lpstrFilter = L"RIFF WAVE\0*.wav\0Apple AIFF\0*.aiff;*.aif;*.aifc\0Raw PCM (Stereo 44100Hz, 16-bit LE)\0*.raw;*.pcm;\0All files\0*.*\0\0"; - break; - } + dialog.lpstrFilter = filter; + swprintf(filter + sizeof("RIFF WAVE\0*.wav\0Apple AIFF\0*.aiff;*.aif;*.aifc\0Raw PCM (Stereo ") - 1, + sizeof("_______Hz, 16-bit LE)"), + L"%dHz, 16-bit LE) ", + frequency); + dialog.nFilterIndex = 1; dialog.lpstrInitialDir = NULL; dialog.Flags = OFN_PATHMUSTEXIST | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT; diff --git a/SDL/audio/xaudio2.c b/SDL/audio/xaudio2.c index f738a4e1b..b1ffe2621 100644 --- a/SDL/audio/xaudio2.c +++ b/SDL/audio/xaudio2.c @@ -1,8 +1,10 @@ +#define COBJMACROS #include "audio.h" #include #include +#include -#define AUDIO_FREQUENCY 96000 +static unsigned audio_frequency = 48000; static IXAudio2 *xaudio2 = NULL; static IXAudio2MasteringVoice *master_voice = NULL; static IXAudio2SourceVoice *source_voice = NULL; @@ -12,11 +14,9 @@ static unsigned pos = 0; #define BATCH_SIZE 256 -static const WAVEFORMATEX wave_format = { +static WAVEFORMATEX wave_format = { .wFormatTag = WAVE_FORMAT_PCM, .nChannels = 2, - .nSamplesPerSec = AUDIO_FREQUENCY, - .nAvgBytesPerSec = AUDIO_FREQUENCY * 4, .nBlockAlign = 4, .wBitsPerSample = 16, .cbSize = 0 @@ -47,9 +47,45 @@ static void _audio_set_paused(bool paused) } + +#define _DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) static const PROPERTYKEY name = { { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }, pid } +_DEFINE_PROPERTYKEY(_PKEY_AudioEngine_DeviceFormat, 0xf19f064d, 0x82c, 0x4e27, 0xbc, 0x73, 0x68, 0x82, 0xa1, 0xbb, 0x8e, 0x4c, 0); + + +static void update_frequency(void) +{ + HRESULT hr; + IMMDevice *device = NULL; + IMMDeviceEnumerator *enumerator = NULL; + IPropertyStore *store = NULL; + PWAVEFORMATEX deviceFormatProperties; + PROPVARIANT prop; + + hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, &IID_IMMDeviceEnumerator, (LPVOID *)&enumerator); + if (FAILED(hr)) return; + + // get default audio endpoint + + hr = IMMDeviceEnumerator_GetDefaultAudioEndpoint(enumerator, eRender, eMultimedia, &device); + if (FAILED(hr)) return; + + hr = IMMDevice_OpenPropertyStore(device, STGM_READ, &store); + if (FAILED(hr)) return; + + hr = IPropertyStore_GetValue(store, &_PKEY_AudioEngine_DeviceFormat, &prop); + if (FAILED(hr)) return; + + deviceFormatProperties = (PWAVEFORMATEX)prop.blob.pBlobData; + audio_frequency = deviceFormatProperties->nSamplesPerSec; + if (audio_frequency < 8000 || audio_frequency > 192000) { + // Bogus value, revert to 48KHz + audio_frequency = 48000; + } +} + static unsigned _audio_get_frequency(void) { - return AUDIO_FREQUENCY; + return audio_frequency; } static size_t _audio_get_queue_length(void) @@ -88,9 +124,11 @@ static bool _audio_init(void) return false; } + update_frequency(); + hr = IXAudio2_CreateMasteringVoice(xaudio2, &master_voice, 2, // 2 channels - AUDIO_FREQUENCY, + audio_frequency, 0, // Flags 0, // Device index NULL, // Effect chain @@ -101,6 +139,8 @@ static bool _audio_init(void) return false; } + wave_format.nSamplesPerSec = audio_frequency; + wave_format.nAvgBytesPerSec = audio_frequency * 4; hr = IXAudio2_CreateSourceVoice(xaudio2, &source_voice, &wave_format, 0, XAUDIO2_DEFAULT_FREQ_RATIO, NULL, NULL, NULL); if (FAILED(hr)) { @@ -111,4 +151,4 @@ static bool _audio_init(void) return true; } -GB_AUDIO_DRIVER(XAudio2); \ No newline at end of file +GB_AUDIO_DRIVER(XAudio2); diff --git a/SDL/audio/xaudio2_7.c b/SDL/audio/xaudio2_7.c index 6cc163d2a..788ba1c6c 100644 --- a/SDL/audio/xaudio2_7.c +++ b/SDL/audio/xaudio2_7.c @@ -1,8 +1,10 @@ +#define COBJMACROS #include "xaudio2_7.h" #include "audio.h" +#include -#define AUDIO_FREQUENCY 96000 +static unsigned audio_frequency = 48000; static IXAudio2 *xaudio2 = NULL; static IXAudio2MasteringVoice *master_voice = NULL; static IXAudio2SourceVoice *source_voice = NULL; @@ -13,11 +15,9 @@ static unsigned pos = 0; #define BATCH_SIZE 256 -static const WAVEFORMATEX wave_format = { +static WAVEFORMATEX wave_format = { .wFormatTag = WAVE_FORMAT_PCM, .nChannels = 2, - .nSamplesPerSec = AUDIO_FREQUENCY, - .nAvgBytesPerSec = AUDIO_FREQUENCY * 4, .nBlockAlign = 4, .wBitsPerSample = 16, .cbSize = 0 @@ -69,9 +69,44 @@ static void _audio_set_paused(bool paused) } +#define _DEFINE_PROPERTYKEY(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8, pid) static const PROPERTYKEY name = { { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }, pid } +_DEFINE_PROPERTYKEY(_PKEY_AudioEngine_DeviceFormat, 0xf19f064d, 0x82c, 0x4e27, 0xbc, 0x73, 0x68, 0x82, 0xa1, 0xbb, 0x8e, 0x4c, 0); + + +static void update_frequency(void) +{ + HRESULT hr; + IMMDevice *device = NULL; + IMMDeviceEnumerator *enumerator = NULL; + IPropertyStore *store = NULL; + PWAVEFORMATEX deviceFormatProperties; + PROPVARIANT prop; + + hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, &IID_IMMDeviceEnumerator, (LPVOID *)&enumerator); + if (FAILED(hr)) return; + + // get default audio endpoint + + hr = IMMDeviceEnumerator_GetDefaultAudioEndpoint(enumerator, eRender, eMultimedia, &device); + if (FAILED(hr)) return; + + hr = IMMDevice_OpenPropertyStore(device, STGM_READ, &store); + if (FAILED(hr)) return; + + hr = IPropertyStore_GetValue(store, &_PKEY_AudioEngine_DeviceFormat, &prop); + if (FAILED(hr)) return; + + deviceFormatProperties = (PWAVEFORMATEX)prop.blob.pBlobData; + audio_frequency = deviceFormatProperties->nSamplesPerSec; + if (audio_frequency < 8000 || audio_frequency > 192000) { + // Bogus value, revert to 48KHz + audio_frequency = 48000; + } +} + static unsigned _audio_get_frequency(void) { - return AUDIO_FREQUENCY; + return audio_frequency; } static size_t _audio_get_queue_length(void) @@ -110,9 +145,11 @@ static bool _audio_init(void) return false; } + update_frequency(); + hr = IXAudio2_CreateMasteringVoice(xaudio2, &master_voice, 2, // 2 channels - AUDIO_FREQUENCY, + audio_frequency, 0, // Flags 0, // Device index NULL // Effect chain @@ -122,6 +159,8 @@ static bool _audio_init(void) return false; } + wave_format.nSamplesPerSec = audio_frequency; + wave_format.nAvgBytesPerSec = audio_frequency * 4; hr = IXAudio2_CreateSourceVoice(xaudio2, &source_voice, &wave_format, 0, XAUDIO2_DEFAULT_FREQ_RATIO, NULL, NULL, NULL); if (FAILED(hr)) { diff --git a/SDL/audio/xaudio2_7.h b/SDL/audio/xaudio2_7.h index c436d2e0a..298715650 100644 --- a/SDL/audio/xaudio2_7.h +++ b/SDL/audio/xaudio2_7.h @@ -90,6 +90,7 @@ DEFINE_GUID(IID_##interfaceName, 0x##l, 0x##w1, 0x##w2, 0x##b1, 0x##b2, 0x##b3, DEFINE_CLSID(XAudio2, 5a508685, a254, 4fba, 9b, 82, 9a, 24, b0, 03, 06, af); DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb); + #define IXAudio2SourceVoice_Start(This,Flags,OperationSet) ((This)->lpVtbl->Start(This,Flags,OperationSet)) #define IXAudio2SourceVoice_Stop(This,Flags,OperationSet) ((This)->lpVtbl->Stop(This,Flags,OperationSet)) #define IXAudio2SourceVoice_SubmitSourceBuffer(This,pBuffer,pBufferWMA) ((This)->lpVtbl->SubmitSourceBuffer(This,pBuffer,pBufferWMA)) @@ -100,4 +101,8 @@ DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb); #define XAUDIO2_COMMIT_NOW 0 #define XAUDIO2_DEFAULT_PROCESSOR 0xffffffff -#define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f \ No newline at end of file +#define XAUDIO2_DEFAULT_FREQ_RATIO 2.0f + +// WASAPI extras. This is a hack, but Windows itself is a hack so I don't care +DEFINE_CLSID(MMDeviceEnumerator, bcde0395, e52f, 467c, 8e, 3d, c4, 57, 92, 91, 69, 2e); +DEFINE_IID(IMMDeviceEnumerator, a95664d2, 9614, 4f35, a7, 46, de, 8d, b6, 36, 17, e6); From eceb2e4830b8f76b0afccaa37df218ba28dd84be Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 8 Jul 2022 20:08:28 +0300 Subject: [PATCH 039/116] Fix SDL/tester release builds on ARM64 Macs, strip and codesign Quick Look --- Makefile | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 15e1fb785..9b2114a6d 100644 --- a/Makefile +++ b/Makefile @@ -177,9 +177,11 @@ CFLAGS += -g else ifeq ($(CONF), release) CFLAGS += -O3 -DNDEBUG STRIP := strip +CODESIGN := true ifeq ($(PLATFORM),Darwin) LDFLAGS += -Wl,-exported_symbols_list,$(NULL) STRIP := strip -x +CODESIGN := codesign -fs - endif ifeq ($(PLATFORM),windows32) LDFLAGS += -fuse-ld=lld @@ -302,7 +304,7 @@ $(BIN)/SameBoy.app: $(BIN)/SameBoy.app/Contents/MacOS/SameBoy \ $(MKDIR) -p $(BIN)/SameBoy.app/Contents/Library/QuickLook/ cp -rf $(BIN)/SameBoy.qlgenerator $(BIN)/SameBoy.app/Contents/Library/QuickLook/ ifeq ($(CONF), release) - codesign -fs - $@ + $(CODESIGN) $@ endif $(BIN)/SameBoy.app/Contents/MacOS/SameBoy: $(CORE_OBJECTS) $(COCOA_OBJECTS) @@ -324,12 +326,18 @@ $(BIN)/SameBoy.qlgenerator: $(BIN)/SameBoy.qlgenerator/Contents/MacOS/SameBoyQL $(MKDIR) -p $(BIN)/SameBoy.qlgenerator/Contents/Resources cp QuickLook/*.png $(BIN)/SameBoy.qlgenerator/Contents/Resources/ sed s/@VERSION/$(VERSION)/ < QuickLook/Info.plist > $(BIN)/SameBoy.qlgenerator/Contents/Info.plist +ifeq ($(CONF), release) + $(CODESIGN) $@ +endif # Currently, SameBoy.app includes two "copies" of each Core .o file once in the app itself and # once in the QL Generator. It should probably become a dylib instead. $(BIN)/SameBoy.qlgenerator/Contents/MacOS/SameBoyQL: $(CORE_OBJECTS) $(QUICKLOOK_OBJECTS) -@$(MKDIR) -p $(dir $@) $(CC) $^ -o $@ $(LDFLAGS) $(FAT_FLAGS) -Wl,-exported_symbols_list,QuickLook/exports.sym -bundle -framework Cocoa -framework Quicklook +ifeq ($(CONF), release) + $(STRIP) $@ +endif # cgb_boot_fast.bin is not a standard boot ROM, we don't expect it to exist in the user-provided # boot ROM directory. @@ -345,6 +353,7 @@ $(BIN)/SDL/sameboy: $(CORE_OBJECTS) $(SDL_OBJECTS) $(CC) $^ -o $@ $(LDFLAGS) $(FAT_FLAGS) $(SDL_LDFLAGS) $(GL_LDFLAGS) ifeq ($(CONF), release) $(STRIP) $@ + $(CODESIGN) $@ endif # Windows version builds two, one with a conole and one without it @@ -381,6 +390,7 @@ $(BIN)/tester/sameboy_tester: $(CORE_OBJECTS) $(TESTER_OBJECTS) $(CC) $^ -o $@ $(LDFLAGS) ifeq ($(CONF), release) $(STRIP) $@ + $(CODESIGN) $@ endif $(BIN)/tester/sameboy_tester.exe: $(CORE_OBJECTS) $(SDL_OBJECTS) @@ -472,15 +482,15 @@ endif $(DESTDIR)$(PREFIX)/share/icons/hicolor/%/apps/sameboy.png: FreeDesktop/AppIcon/%.png -@$(MKDIR) -p $(dir $@) cp -f $^ $@ - + $(DESTDIR)$(PREFIX)/share/icons/hicolor/%/mimetypes/x-gameboy-rom.png: FreeDesktop/Cartridge/%.png -@$(MKDIR) -p $(dir $@) cp -f $^ $@ - + $(DESTDIR)$(PREFIX)/share/icons/hicolor/%/mimetypes/x-gameboy-color-rom.png: FreeDesktop/ColorCartridge/%.png -@$(MKDIR) -p $(dir $@) cp -f $^ $@ - + $(DESTDIR)$(PREFIX)/share/mime/packages/sameboy.xml: FreeDesktop/sameboy.xml -@$(MKDIR) -p $(dir $@) cp -f $^ $@ From 56deb4b92e14b7d06ca43289c842beab23ff9a1c Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 8 Jul 2022 20:10:11 +0300 Subject: [PATCH 040/116] Update version to 0.15.1 --- version.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.mk b/version.mk index 1582a0707..6246d2bf2 100644 --- a/version.mk +++ b/version.mk @@ -1 +1 @@ -VERSION := 0.15 \ No newline at end of file +VERSION := 0.15.1 \ No newline at end of file From f9401300b57f8946d9f51f133c61b2a2081a7a8c Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 16 Jul 2022 18:23:08 +0300 Subject: [PATCH 041/116] =?UTF-8?q?SDL=20=E2=80=93=20Add=20setting=20to=20?= =?UTF-8?q?allow=20background=20joypad=20control?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/configuration.h | 2 ++ SDL/gui.c | 47 ++++++++++++++++++++++++++++++--------------- SDL/main.c | 2 ++ 3 files changed, 35 insertions(+), 16 deletions(-) diff --git a/SDL/configuration.h b/SDL/configuration.h index b3ac93456..26a681ad4 100644 --- a/SDL/configuration.h +++ b/SDL/configuration.h @@ -95,6 +95,8 @@ typedef struct { uint8_t cgb_revision; /* v0.15.1 */ char audio_driver[16]; + /* v0.15.2 */ + bool allow_background_controllers; }; } configuration_t; diff --git a/SDL/gui.c b/SDL/gui.c index b513d2106..f63b62812 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -299,7 +299,7 @@ static void recalculate_menu_height(void) } } -char audio_recording_menu_item[] = "Start Audio Recording"; +static char audio_recording_menu_item[] = "Start Audio Recording"; static const struct menu_item paused_menu[] = { {"Resume", NULL}, @@ -343,7 +343,7 @@ static void cycle_model_backwards(unsigned index) pending_command = GB_SDL_RESET_COMMAND; } -const char *current_model_string(unsigned index) +static const char *current_model_string(unsigned index) { return (const char *[]){"Game Boy", "Game Boy Color", "Game Boy Advance", "Super Game Boy", "Game Boy Pocket"} [configuration.model]; @@ -372,7 +372,7 @@ static void cycle_cgb_revision_backwards(unsigned index) pending_command = GB_SDL_RESET_COMMAND; } -const char *current_cgb_revision_string(unsigned index) +static const char *current_cgb_revision_string(unsigned index) { return (const char *[]){ "CPU CGB 0 (Exp.)", @@ -404,7 +404,7 @@ static void cycle_sgb_revision_backwards(unsigned index) pending_command = GB_SDL_RESET_COMMAND; } -const char *current_sgb_revision_string(unsigned index) +static const char *current_sgb_revision_string(unsigned index) { return (const char *[]){"Super Game Boy NTSC", "Super Game Boy PAL", "Super Game Boy 2"} [configuration.sgb_revision]; @@ -446,7 +446,7 @@ static void cycle_rewind_backwards(unsigned index) GB_set_rewind_length(&gb, configuration.rewind_length); } -const char *current_rewind_string(unsigned index) +static const char *current_rewind_string(unsigned index) { for (unsigned i = 0; i < sizeof(rewind_lengths) / sizeof(rewind_lengths[0]); i++) { if (configuration.rewind_length == rewind_lengths[i]) { @@ -456,7 +456,7 @@ const char *current_rewind_string(unsigned index) return "Custom"; } -const char *current_bootrom_string(unsigned index) +static const char *current_bootrom_string(unsigned index) { if (!configuration.bootrom_path[0]) { return "Built-in Boot ROMs"; @@ -501,7 +501,7 @@ static void toggle_rtc_mode(unsigned index) configuration.rtc_mode = !configuration.rtc_mode; } -const char *current_rtc_mode_string(unsigned index) +static const char *current_rtc_mode_string(unsigned index) { switch (configuration.rtc_mode) { case GB_RTC_MODE_SYNC_TO_HOST: return "Sync to System Clock"; @@ -529,13 +529,13 @@ static void enter_emulation_menu(unsigned index) recalculate_menu_height(); } -const char *current_scaling_mode(unsigned index) +static const char *current_scaling_mode(unsigned index) { return (const char *[]){"Fill Entire Window", "Retain Aspect Ratio", "Retain Integer Factor"} [configuration.scaling_mode]; } -const char *current_default_scale(unsigned index) +static const char *current_default_scale(unsigned index) { return (const char *[]){"1x", "2x", "3x", "4x", "5x", "6x", "7x", "8x"} [configuration.default_scale - 1]; @@ -568,7 +568,7 @@ const char *current_border_mode(unsigned index) [configuration.border_mode]; } -void cycle_scaling(unsigned index) +static void cycle_scaling(unsigned index) { configuration.scaling_mode++; if (configuration.scaling_mode == GB_SDL_SCALING_MAX) { @@ -578,7 +578,7 @@ void cycle_scaling(unsigned index) render_texture(NULL, NULL); } -void cycle_scaling_backwards(unsigned index) +static void cycle_scaling_backwards(unsigned index) { if (configuration.scaling_mode == 0) { configuration.scaling_mode = GB_SDL_SCALING_MAX - 1; @@ -590,7 +590,7 @@ void cycle_scaling_backwards(unsigned index) render_texture(NULL, NULL); } -void cycle_default_scale(unsigned index) +static void cycle_default_scale(unsigned index) { if (configuration.default_scale == GB_SDL_DEFAULT_SCALE_MAX) { configuration.default_scale = 1; @@ -603,7 +603,7 @@ void cycle_default_scale(unsigned index) update_viewport(); } -void cycle_default_scale_backwards(unsigned index) +static void cycle_default_scale_backwards(unsigned index) { if (configuration.default_scale == 1) { configuration.default_scale = GB_SDL_DEFAULT_SCALE_MAX; @@ -1044,7 +1044,7 @@ static SDL_Joystick *joystick = NULL; static SDL_GameController *controller = NULL; SDL_Haptic *haptic = NULL; -const char *current_joypad_name(unsigned index) +static const char *current_joypad_name(unsigned index) { static char name[23] = {0,}; const char *orig_name = joystick? SDL_JoystickName(joystick) : NULL; @@ -1153,16 +1153,31 @@ static void cycle_rumble_mode_backwards(unsigned index) } } -const char *current_rumble_mode(unsigned index) +static const char *current_rumble_mode(unsigned index) { return (const char *[]){"Disabled", "Rumble Game Paks Only", "All Games"} [configuration.rumble_mode]; } +static void toggle_allow_background_controllers(unsigned index) +{ + configuration.allow_background_controllers ^= true; + + SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, + configuration.allow_background_controllers? "1" : "0"); +} + +static const char *current_background_control_mode(unsigned index) +{ + return configuration.allow_background_controllers? "Always" : "During Window Focus Only"; +} + + static const struct menu_item joypad_menu[] = { {"Joypad:", cycle_joypads, current_joypad_name, cycle_joypads_backwards}, {"Configure layout", detect_joypad_layout}, {"Rumble Mode:", cycle_rumble_mode, current_rumble_mode, cycle_rumble_mode_backwards}, + {"Enable Control:", toggle_allow_background_controllers, current_background_control_mode, toggle_allow_background_controllers}, {"Back", enter_controls_menu}, {NULL,} }; @@ -1227,7 +1242,7 @@ static void toggle_mouse_control(unsigned index) configuration.allow_mouse_controls = !configuration.allow_mouse_controls; } -const char *mouse_control_string(unsigned index) +static const char *mouse_control_string(unsigned index) { return configuration.allow_mouse_controls? "Allow mouse control" : "Disallow mouse control"; } diff --git a/SDL/main.c b/SDL/main.c index 51b1f69e8..647a870cf 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -836,6 +836,8 @@ int main(int argc, char **argv) signal(SIGINT, debugger_interrupt); SDL_Init(SDL_INIT_EVERYTHING); + SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, + configuration.allow_background_controllers? "1" : "0"); if ((console_supported = CON_start(completer))) { CON_set_repeat_empty(true); CON_printf("SameBoy v" GB_VERSION "\n"); From 500e767247c22ee7e014de296f3776fca4a2ec39 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 16 Jul 2022 18:54:16 +0300 Subject: [PATCH 042/116] And the same feature in Cocoa as well. Closes #472 --- Cocoa/GBPreferencesWindow.h | 63 +++++++++++++++++++------------------ Cocoa/GBPreferencesWindow.m | 18 +++++++++++ Cocoa/GBView.m | 15 +++++++-- Cocoa/Preferences.xib | 50 ++++++++++++++++++----------- 4 files changed, 94 insertions(+), 52 deletions(-) diff --git a/Cocoa/GBPreferencesWindow.h b/Cocoa/GBPreferencesWindow.h index 30b045cc3..460b65abd 100644 --- a/Cocoa/GBPreferencesWindow.h +++ b/Cocoa/GBPreferencesWindow.h @@ -3,35 +3,36 @@ #import "GBPaletteEditorController.h" @interface GBPreferencesWindow : NSWindow -@property (nonatomic, strong) IBOutlet NSTableView *controlsTableView; -@property (nonatomic, strong) IBOutlet NSPopUpButton *graphicsFilterPopupButton; -@property (nonatomic, strong) IBOutlet NSButton *analogControlsCheckbox; -@property (nonatomic, strong) IBOutlet NSButton *aspectRatioCheckbox; -@property (nonatomic, strong) IBOutlet NSPopUpButton *highpassFilterPopupButton; -@property (nonatomic, strong) IBOutlet NSPopUpButton *colorCorrectionPopupButton; -@property (nonatomic, strong) IBOutlet NSPopUpButton *frameBlendingModePopupButton; -@property (nonatomic, strong) IBOutlet NSPopUpButton *colorPalettePopupButton; -@property (nonatomic, strong) IBOutlet NSPopUpButton *displayBorderPopupButton; -@property (nonatomic, strong) IBOutlet NSPopUpButton *rewindPopupButton; -@property (nonatomic, strong) IBOutlet NSPopUpButton *rtcPopupButton; -@property (nonatomic, strong) IBOutlet NSButton *configureJoypadButton; -@property (nonatomic, strong) IBOutlet NSButton *skipButton; -@property (nonatomic, strong) IBOutlet NSMenuItem *bootROMsFolderItem; -@property (nonatomic, strong) IBOutlet NSPopUpButtonCell *bootROMsButton; -@property (nonatomic, strong) IBOutlet NSPopUpButton *rumbleModePopupButton; -@property (nonatomic, weak) IBOutlet NSSlider *temperatureSlider; -@property (nonatomic, weak) IBOutlet NSSlider *interferenceSlider; -@property (nonatomic, weak) IBOutlet NSPopUpButton *dmgPopupButton; -@property (nonatomic, weak) IBOutlet NSPopUpButton *sgbPopupButton; -@property (nonatomic, weak) IBOutlet NSPopUpButton *cgbPopupButton; -@property (nonatomic, weak) IBOutlet NSPopUpButton *preferredJoypadButton; -@property (nonatomic, weak) IBOutlet NSPopUpButton *playerListButton; -@property (nonatomic, weak) IBOutlet NSButton *autoUpdatesCheckbox; -@property (weak) IBOutlet NSSlider *volumeSlider; -@property (weak) IBOutlet NSButton *OSDCheckbox; -@property (weak) IBOutlet NSButton *screenshotFilterCheckbox; -@property (weak) IBOutlet GBPaletteEditorController *paletteEditorController; -@property (strong) IBOutlet NSWindow *paletteEditor; -@property (weak) IBOutlet NSButton *joystickMBC7Checkbox; -@property (weak) IBOutlet NSButton *mouseMBC7Checkbox; +@property IBOutlet NSTableView *controlsTableView; +@property IBOutlet NSPopUpButton *graphicsFilterPopupButton; +@property IBOutlet NSButton *analogControlsCheckbox; +@property IBOutlet NSButton *controllersFocusCheckbox; +@property IBOutlet NSButton *aspectRatioCheckbox; +@property IBOutlet NSPopUpButton *highpassFilterPopupButton; +@property IBOutlet NSPopUpButton *colorCorrectionPopupButton; +@property IBOutlet NSPopUpButton *frameBlendingModePopupButton; +@property IBOutlet NSPopUpButton *colorPalettePopupButton; +@property IBOutlet NSPopUpButton *displayBorderPopupButton; +@property IBOutlet NSPopUpButton *rewindPopupButton; +@property IBOutlet NSPopUpButton *rtcPopupButton; +@property IBOutlet NSButton *configureJoypadButton; +@property IBOutlet NSButton *skipButton; +@property IBOutlet NSMenuItem *bootROMsFolderItem; +@property IBOutlet NSPopUpButtonCell *bootROMsButton; +@property IBOutlet NSPopUpButton *rumbleModePopupButton; +@property IBOutlet NSSlider *temperatureSlider; +@property IBOutlet NSSlider *interferenceSlider; +@property IBOutlet NSPopUpButton *dmgPopupButton; +@property IBOutlet NSPopUpButton *sgbPopupButton; +@property IBOutlet NSPopUpButton *cgbPopupButton; +@property IBOutlet NSPopUpButton *preferredJoypadButton; +@property IBOutlet NSPopUpButton *playerListButton; +@property IBOutlet NSButton *autoUpdatesCheckbox; +@property IBOutlet NSSlider *volumeSlider; +@property IBOutlet NSButton *OSDCheckbox; +@property IBOutlet NSButton *screenshotFilterCheckbox; +@property IBOutlet GBPaletteEditorController *paletteEditorController; +@property IBOutlet NSWindow *paletteEditor; +@property IBOutlet NSButton *joystickMBC7Checkbox; +@property IBOutlet NSButton *mouseMBC7Checkbox; @end diff --git a/Cocoa/GBPreferencesWindow.m b/Cocoa/GBPreferencesWindow.m index def5ce0c3..031fa5b23 100644 --- a/Cocoa/GBPreferencesWindow.m +++ b/Cocoa/GBPreferencesWindow.m @@ -23,6 +23,7 @@ @implementation GBPreferencesWindow NSPopUpButton *_rtcPopupButton; NSButton *_aspectRatioCheckbox; NSButton *_analogControlsCheckbox; + NSButton *_controllersFocusCheckbox; NSEventModifierFlags previousModifiers; NSPopUpButton *_dmgPopupButton, *_sgbPopupButton, *_cgbPopupButton; @@ -345,6 +346,12 @@ - (IBAction)changeAnalogControls:(id)sender forKey:@"GBAnalogControls"]; } +- (IBAction)changeControllerFocus:(id)sender +{ + [[NSUserDefaults standardUserDefaults] setBool: [(NSButton *)sender state] == NSOnState + forKey:@"GBAllowBackgroundControllers"]; +} + - (IBAction)changeAspectRatio:(id)sender { [[NSUserDefaults standardUserDefaults] setBool: [(NSButton *)sender state] != NSOnState @@ -620,6 +627,17 @@ - (void)setAnalogControlsCheckbox:(NSButton *)analogControlsCheckbox [_analogControlsCheckbox setState: [[NSUserDefaults standardUserDefaults] boolForKey:@"GBAnalogControls"]]; } +- (NSButton *)controllersFocusCheckbox +{ + return _controllersFocusCheckbox; +} + +- (void)setControllersFocusCheckbox:(NSButton *)controllersFocusCheckbox +{ + _controllersFocusCheckbox = controllersFocusCheckbox; + [_controllersFocusCheckbox setState: [[NSUserDefaults standardUserDefaults] boolForKey:@"GBAllowBackgroundControllers"]]; +} + - (NSButton *)aspectRatioCheckbox { return _aspectRatioCheckbox; diff --git a/Cocoa/GBView.m b/Cocoa/GBView.m index 5ae9c791d..cf591e052 100644 --- a/Cocoa/GBView.m +++ b/Cocoa/GBView.m @@ -474,10 +474,21 @@ - (bool)shouldControllerUseJoystickForMotion:(JOYController *)controller return true; } +- (bool)allowController +{ + if ([self.window isMainWindow]) return true; + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"GBAllowBackgroundControllers"]) { + if ([(Document *)[NSApplication sharedApplication].orderedDocuments.firstObject mainWindow] == self.window) { + return true; + } + } + return false; +} + - (void)controller:(JOYController *)controller movedAxis:(JOYAxis *)axis { if (!_gb) return; - if (![self.window isMainWindow]) return; + if (![self allowController]) return; NSDictionary *mapping = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"JoyKitInstanceMapping"][controller.uniqueID]; if (!mapping) { @@ -532,7 +543,7 @@ - (void)controller:(JOYController *)controller movedAxes3D:(JOYAxes3D *)axes - (void)controller:(JOYController *)controller buttonChangedState:(JOYButton *)button { if (!_gb) return; - if (![self.window isMainWindow]) return; + if (![self allowController]) return; _mouseControlEnabled = false; if (button.type == JOYButtonTypeAxes2DEmulated && [self shouldControllerUseJoystickForMotion:controller]) return; diff --git a/Cocoa/Preferences.xib b/Cocoa/Preferences.xib index d75900c4f..3078d569e 100644 --- a/Cocoa/Preferences.xib +++ b/Cocoa/Preferences.xib @@ -77,6 +77,7 @@ + @@ -611,11 +612,11 @@ - + - + @@ -623,17 +624,8 @@ - - - - - - - - - - + @@ -691,7 +683,7 @@ - + @@ -700,7 +692,7 @@ - + @@ -716,11 +708,11 @@ - + - + @@ -729,7 +721,7 @@ - + @@ -748,7 +740,7 @@ + + + + + + + + + + - + From 9a966a558177730de21bf2ff88a7cc455c7919ef Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 17 Jul 2022 01:19:43 +0300 Subject: [PATCH 043/116] SDL GUI follows the DMG palette --- SDL/configuration.c | 1 + SDL/configuration.h | 1 + SDL/gui.c | 78 +++++++++++++++++++++++++++++++++++++-------- SDL/main.c | 3 ++ 4 files changed, 69 insertions(+), 14 deletions(-) diff --git a/SDL/configuration.c b/SDL/configuration.c index bde42ebcd..469c33417 100644 --- a/SDL/configuration.c +++ b/SDL/configuration.c @@ -46,4 +46,5 @@ configuration_t configuration = .default_scale = 2, .color_temperature = 10, .cgb_revision = GB_MODEL_CGB_E - GB_MODEL_CGB_0, + .dmg_palette = 1, // Replacing the old default (0) as of 0.15.2 }; diff --git a/SDL/configuration.h b/SDL/configuration.h index 26a681ad4..4ddd6a42c 100644 --- a/SDL/configuration.h +++ b/SDL/configuration.h @@ -97,6 +97,7 @@ typedef struct { char audio_driver[16]; /* v0.15.2 */ bool allow_background_controllers; + bool gui_pallete_enabled; // Change the GUI palette only once the user changed the DMG palette }; } configuration_t; diff --git a/SDL/gui.c b/SDL/gui.c index f63b62812..737ceec1c 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -21,6 +21,7 @@ enum pending_command pending_command; unsigned command_parameter; char *dropped_state_file = NULL; + #ifdef __APPLE__ #define MODIFIER_NAME " " CMD_STRING #else @@ -31,6 +32,8 @@ shader_t shader; static SDL_Rect rect; static unsigned factor; +static SDL_Surface *converted_background = NULL; + void render_texture(void *pixels, void *previous) { if (renderer) { @@ -650,6 +653,45 @@ static void increase_color_temperature(unsigned index) } } +static void update_gui_palette(void) +{ + const GB_palette_t *palette; + switch (configuration.dmg_palette) { + case 1: + palette = &GB_PALETTE_DMG; + break; + + case 2: + palette = &GB_PALETTE_MGB; + break; + + case 3: + palette = &GB_PALETTE_GBL; + break; + + default: + palette = &GB_PALETTE_GREY; + } + + SDL_Color colors[4]; + for (unsigned i = 4; i--; ) { + gui_palette_native[i] = SDL_MapRGB(pixel_format, palette->colors[i].r, palette->colors[i].g, palette->colors[i].b); + colors[i].r = palette->colors[i].r; + colors[i].g = palette->colors[i].g; + colors[i].b = palette->colors[i].b; + } + + SDL_Surface *background = SDL_LoadBMP(resource_path("background.bmp")); + + /* Create a blank background if background.bmp could not be loaded */ + if (!background) { + background = SDL_CreateRGBSurface(0, 160, 144, 8, 0, 0, 0, 0); + } + SDL_SetPaletteColors(background->format->palette, colors, 0, 4); + converted_background = SDL_ConvertSurface(background, pixel_format, 0); + SDL_FreeSurface(background); +} + static void cycle_palette(unsigned index) { if (configuration.dmg_palette == 3) { @@ -658,6 +700,8 @@ static void cycle_palette(unsigned index) else { configuration.dmg_palette++; } + configuration.gui_pallete_enabled = true; + update_gui_palette(); } static void cycle_palette_backwards(unsigned index) @@ -668,6 +712,8 @@ static void cycle_palette_backwards(unsigned index) else { configuration.dmg_palette--; } + configuration.gui_pallete_enabled = true; + update_gui_palette(); } static void cycle_border_mode(unsigned index) @@ -1349,22 +1395,24 @@ void run_gui(bool is_running) connect_joypad(); /* Draw the background screen */ - static SDL_Surface *converted_background = NULL; if (!converted_background) { - SDL_Surface *background = SDL_LoadBMP(resource_path("background.bmp")); - - /* Create a blank background if background.bmp could not be loaded */ - if (!background) { - background = SDL_CreateRGBSurface(0, 160, 144, 8, 0, 0, 0, 0); + if (configuration.gui_pallete_enabled) { + update_gui_palette(); } - - SDL_SetPaletteColors(background->format->palette, gui_palette, 0, 4); - converted_background = SDL_ConvertSurface(background, pixel_format, 0); - SDL_LockSurface(converted_background); - SDL_FreeSurface(background); - - for (unsigned i = 4; i--; ) { - gui_palette_native[i] = SDL_MapRGB(pixel_format, gui_palette[i].r, gui_palette[i].g, gui_palette[i].b); + else { + SDL_Surface *background = SDL_LoadBMP(resource_path("background.bmp")); + + /* Create a blank background if background.bmp could not be loaded */ + if (!background) { + background = SDL_CreateRGBSurface(0, 160, 144, 8, 0, 0, 0, 0); + } + SDL_SetPaletteColors(background->format->palette, gui_palette, 0, 4); + converted_background = SDL_ConvertSurface(background, pixel_format, 0); + SDL_FreeSurface(background); + + for (unsigned i = 4; i--; ) { + gui_palette_native[i] = SDL_MapRGB(pixel_format, gui_palette[i].r, gui_palette[i].g, gui_palette[i].b); + } } } @@ -1723,6 +1771,7 @@ void run_gui(bool is_running) if (should_render) { should_render = false; rerender: + SDL_LockSurface(converted_background); if (width == 160 && height == 144) { memcpy(pixels, converted_background->pixels, sizeof(pixels)); } @@ -1731,6 +1780,7 @@ void run_gui(bool is_running) memcpy(pixels + x_offset + width * (y + y_offset), ((uint32_t *)converted_background->pixels) + 160 * y, 160 * 4); } } + SDL_UnlockSurface(converted_background); switch (gui_state) { case SHOWING_DROP_MESSAGE: diff --git a/SDL/main.c b/SDL/main.c index 647a870cf..5ad3f40e9 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -867,6 +867,9 @@ int main(int argc, char **argv) configuration.model %= MODEL_MAX; configuration.sgb_revision %= SGB_MAX; configuration.dmg_palette %= 4; + if (configuration.dmg_palette) { + configuration.gui_pallete_enabled = true; + } configuration.border_mode %= GB_BORDER_ALWAYS + 1; configuration.rumble_mode %= GB_RUMBLE_ALL_GAMES + 1; configuration.color_temperature %= 21; From cbf1a5481fe4ae1cc150bd0d27a463f83bea2168 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 17 Jul 2022 15:48:41 +0300 Subject: [PATCH 044/116] Allow the SDL port to use custom palettes imported from Cocoa --- Makefile | 6 +- Misc/Palettes/Desert.sbp | Bin 0 -> 32 bytes Misc/Palettes/Evening.sbp | 1 + Misc/Palettes/Fog.sbp | Bin 0 -> 32 bytes Misc/Palettes/Magic Eggplant.sbp | Bin 0 -> 32 bytes Misc/Palettes/Radioactive Pea.sbp | Bin 0 -> 32 bytes Misc/Palettes/Seaweed.sbp | Bin 0 -> 32 bytes Misc/Palettes/Twilight.sbp | Bin 0 -> 32 bytes SDL/configuration.h | 1 + SDL/gui.c | 129 +++++++++++++++++++++++++----- SDL/gui.h | 1 + SDL/main.c | 20 +---- Windows/dirent.c | 51 ++++++++++++ Windows/dirent.h | 15 ++++ 14 files changed, 188 insertions(+), 36 deletions(-) create mode 100644 Misc/Palettes/Desert.sbp create mode 100644 Misc/Palettes/Evening.sbp create mode 100644 Misc/Palettes/Fog.sbp create mode 100644 Misc/Palettes/Magic Eggplant.sbp create mode 100644 Misc/Palettes/Radioactive Pea.sbp create mode 100644 Misc/Palettes/Seaweed.sbp create mode 100644 Misc/Palettes/Twilight.sbp create mode 100755 Windows/dirent.c create mode 100755 Windows/dirent.h diff --git a/Makefile b/Makefile index 9b2114a6d..a01cbc2e8 100644 --- a/Makefile +++ b/Makefile @@ -206,7 +206,7 @@ endif cocoa: $(BIN)/SameBoy.app quicklook: $(BIN)/SameBoy.qlgenerator -sdl: $(SDL_TARGET) $(BIN)/SDL/dmg_boot.bin $(BIN)/SDL/mgb_boot.bin $(BIN)/SDL/cgb0_boot.bin $(BIN)/SDL/cgb_boot.bin $(BIN)/SDL/agb_boot.bin $(BIN)/SDL/sgb_boot.bin $(BIN)/SDL/sgb2_boot.bin $(BIN)/SDL/LICENSE $(BIN)/SDL/registers.sym $(BIN)/SDL/background.bmp $(BIN)/SDL/Shaders +sdl: $(SDL_TARGET) $(BIN)/SDL/dmg_boot.bin $(BIN)/SDL/mgb_boot.bin $(BIN)/SDL/cgb0_boot.bin $(BIN)/SDL/cgb_boot.bin $(BIN)/SDL/agb_boot.bin $(BIN)/SDL/sgb_boot.bin $(BIN)/SDL/sgb2_boot.bin $(BIN)/SDL/LICENSE $(BIN)/SDL/registers.sym $(BIN)/SDL/background.bmp $(BIN)/SDL/Shaders $(BIN)/SDL/Palettes bootroms: $(BIN)/BootROMs/agb_boot.bin $(BIN)/BootROMs/cgb_boot.bin $(BIN)/BootROMs/cgb0_boot.bin $(BIN)/BootROMs/dmg_boot.bin $(BIN)/BootROMs/mgb_boot.bin $(BIN)/BootROMs/sgb_boot.bin $(BIN)/BootROMs/sgb2_boot.bin tester: $(TESTER_TARGET) $(BIN)/tester/dmg_boot.bin $(BIN)/tester/cgb_boot.bin $(BIN)/tester/agb_boot.bin $(BIN)/tester/sgb_boot.bin $(BIN)/tester/sgb2_boot.bin all: cocoa sdl tester libretro @@ -424,6 +424,10 @@ $(BIN)/SDL/background.bmp: SDL/background.bmp $(BIN)/SDL/Shaders: Shaders -@$(MKDIR) -p $@ cp -rf Shaders/*.fsh $@ + +$(BIN)/SDL/Palettes: Misc/Palettes + -@$(MKDIR) -p $@ + cp -rf Misc/Palettes/*.sbp $@ # Boot ROMs diff --git a/Misc/Palettes/Desert.sbp b/Misc/Palettes/Desert.sbp new file mode 100644 index 0000000000000000000000000000000000000000..28625ad3b807240dea55043679d261eb39163d71 GIT binary patch literal 32 ncmeYXa0+I!(>Ewd3tuw3`O<}rH?D7I0D|-VFL|O|zpw)U(FzS} literal 0 HcmV?d00001 diff --git a/Misc/Palettes/Evening.sbp b/Misc/Palettes/Evening.sbp new file mode 100644 index 000000000..e11998ab1 --- /dev/null +++ b/Misc/Palettes/Evening.sbp @@ -0,0 +1 @@ +LPBS&6UiS˜‰®ä¦»î©Îõ}ù^¬ÕLŸìH+ \ No newline at end of file diff --git a/Misc/Palettes/Fog.sbp b/Misc/Palettes/Fog.sbp new file mode 100644 index 0000000000000000000000000000000000000000..a79fe00fd112d9b5276a96491a0cb9586f7ca97c GIT binary patch literal 32 mcmeYXa0+HJu`v%TDsEdmcmJis$8H>F0D>0Z7K literal 0 HcmV?d00001 diff --git a/Misc/Palettes/Radioactive Pea.sbp b/Misc/Palettes/Radioactive Pea.sbp new file mode 100644 index 0000000000000000000000000000000000000000..57f9d6a31fcddce8aa40f2772455113540d456cd GIT binary patch literal 32 ocmeYXa0+H(2vTG#mN%Ivw&NW0#VZWfORXLjKAvoF?$Bp#0IXmQ6#xJL literal 0 HcmV?d00001 diff --git a/Misc/Palettes/Seaweed.sbp b/Misc/Palettes/Seaweed.sbp new file mode 100644 index 0000000000000000000000000000000000000000..3718efd749165f5fa3060b17f23e0b03166c3e50 GIT binary patch literal 32 ocmeYXa0+G;Ww19&b*fk%asR>8ch496GTi%i*6V5|NmfQD0M&pE`2YX_ literal 0 HcmV?d00001 diff --git a/Misc/Palettes/Twilight.sbp b/Misc/Palettes/Twilight.sbp new file mode 100644 index 0000000000000000000000000000000000000000..a5decc103acfc724e3e38a0d1dad71814e846d97 GIT binary patch literal 32 ncmeYXa0+G;Ww37(a@!k{^z!obch46rQBe5B00etf7uo{=!4(WZ literal 0 HcmV?d00001 diff --git a/SDL/configuration.h b/SDL/configuration.h index 4ddd6a42c..b8bdfbda7 100644 --- a/SDL/configuration.h +++ b/SDL/configuration.h @@ -98,6 +98,7 @@ typedef struct { /* v0.15.2 */ bool allow_background_controllers; bool gui_pallete_enabled; // Change the GUI palette only once the user changed the DMG palette + char dmg_palette_name[25]; }; } configuration_t; diff --git a/SDL/gui.c b/SDL/gui.c index 737ceec1c..c02ae7629 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -5,6 +5,7 @@ #include #include #include +#include #include "utils.h" #include "gui.h" #include "font.h" @@ -21,6 +22,9 @@ enum pending_command pending_command; unsigned command_parameter; char *dropped_state_file = NULL; +static char **custom_palettes; +static unsigned n_custom_palettes; + #ifdef __APPLE__ #define MODIFIER_NAME " " CMD_STRING @@ -561,6 +565,9 @@ const char *current_color_temperature(unsigned index) const char *current_palette(unsigned index) { + if (configuration.dmg_palette == 4) { + return configuration.dmg_palette_name; + } return (const char *[]){"Greyscale", "Lime (Game Boy)", "Olive (Pocket)", "Teal (Light)"} [configuration.dmg_palette]; } @@ -653,25 +660,45 @@ static void increase_color_temperature(unsigned index) } } -static void update_gui_palette(void) +const GB_palette_t *current_dmg_palette(void) { - const GB_palette_t *palette; + typedef struct __attribute__ ((packed)) { + uint32_t magic; + uint8_t flags; + struct GB_color_s colors[5]; + int32_t brightness_bias; + uint32_t hue_bias; + uint32_t hue_bias_strength; + } theme_t; + + static theme_t theme; + + if (configuration.dmg_palette == 4) { + char *path = resource_path("Palettes"); + sprintf(path + strlen(path), "/%s.sbp", configuration.dmg_palette_name); + FILE *file = fopen(path, "rb"); + if (!file) return &GB_PALETTE_GREY; + memset(&theme, 0, sizeof(theme)); + fread(&theme, sizeof(theme), 1, file); + fclose(file); +#ifdef GB_BIG_ENDIAN + theme.magic = __builtin_bswap32(theme.magic); +#endif + if (theme.magic != 'SBPL') return &GB_PALETTE_GREY; + return (GB_palette_t *)&theme.colors; + } + switch (configuration.dmg_palette) { - case 1: - palette = &GB_PALETTE_DMG; - break; - - case 2: - palette = &GB_PALETTE_MGB; - break; - - case 3: - palette = &GB_PALETTE_GBL; - break; - - default: - palette = &GB_PALETTE_GREY; + case 1: return &GB_PALETTE_DMG; + case 2: return &GB_PALETTE_MGB; + case 3: return &GB_PALETTE_GBL; + default: return &GB_PALETTE_GREY; } +} + +static void update_gui_palette(void) +{ + const GB_palette_t *palette = current_dmg_palette(); SDL_Color colors[4]; for (unsigned i = 4; i--; ) { @@ -695,7 +722,26 @@ static void update_gui_palette(void) static void cycle_palette(unsigned index) { if (configuration.dmg_palette == 3) { - configuration.dmg_palette = 0; + if (n_custom_palettes == 0) { + configuration.dmg_palette = 0; + } + else { + configuration.dmg_palette = 4; + strcpy(configuration.dmg_palette_name, custom_palettes[0]); + } + } + else if (configuration.dmg_palette == 4) { + for (unsigned i = 0; i < n_custom_palettes; i++) { + if (strcmp(custom_palettes[i], configuration.dmg_palette_name) == 0) { + if (i == n_custom_palettes - 1) { + configuration.dmg_palette = 0; + } + else { + strcpy(configuration.dmg_palette_name, custom_palettes[i + 1]); + } + break; + } + } } else { configuration.dmg_palette++; @@ -707,7 +753,26 @@ static void cycle_palette(unsigned index) static void cycle_palette_backwards(unsigned index) { if (configuration.dmg_palette == 0) { - configuration.dmg_palette = 3; + if (n_custom_palettes == 0) { + configuration.dmg_palette = 3; + } + else { + configuration.dmg_palette = 4; + strcpy(configuration.dmg_palette_name, custom_palettes[n_custom_palettes - 1]); + } + } + else if (configuration.dmg_palette == 4) { + for (unsigned i = 0; i < n_custom_palettes; i++) { + if (strcmp(custom_palettes[i], configuration.dmg_palette_name) == 0) { + if (i == 0) { + configuration.dmg_palette = 3; + } + else { + strcpy(configuration.dmg_palette_name, custom_palettes[i - 1]); + } + break; + } + } } else { configuration.dmg_palette--; @@ -1896,3 +1961,31 @@ void run_gui(bool is_running) } } } + +static void __attribute__ ((constructor)) list_custom_palettes(void) +{ + char *path = resource_path("Palettes"); + if (!path) return; + if (strlen(path) > 1024 - 30) { + // path too long to safely concat filenames + return; + } + DIR *dir = opendir(path); + if (!dir) return; + + struct dirent *ent; + + while ((ent = readdir(dir))) { + unsigned length = strlen(ent->d_name); + if (length < 5 || length > 28) { + continue; + } + if (strcmp(ent->d_name + length - 4, ".sbp")) continue; + ent->d_name[length - 4] = 0; + custom_palettes = realloc(custom_palettes, + sizeof(custom_palettes[0]) * (n_custom_palettes + 1)); + custom_palettes[n_custom_palettes++] = strdup(ent->d_name); + } + + closedir(dir); +} diff --git a/SDL/gui.h b/SDL/gui.h index f23ebd86f..835794a24 100644 --- a/SDL/gui.h +++ b/SDL/gui.h @@ -64,5 +64,6 @@ extern const char *osd_text; extern unsigned osd_countdown; extern unsigned osd_text_lines; void convert_mouse_coordinates(signed *x, signed *y); +const GB_palette_t *current_dmg_palette(void); #endif diff --git a/SDL/main.c b/SDL/main.c index 5ad3f40e9..2834ae397 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -161,22 +161,7 @@ static const char *end_capturing_logs(bool show_popup, bool should_exit, uint32_ static void update_palette(void) { - switch (configuration.dmg_palette) { - case 1: - GB_set_palette(&gb, &GB_PALETTE_DMG); - break; - - case 2: - GB_set_palette(&gb, &GB_PALETTE_MGB); - break; - - case 3: - GB_set_palette(&gb, &GB_PALETTE_GBL); - break; - - default: - GB_set_palette(&gb, &GB_PALETTE_GREY); - } + GB_set_palette(&gb, current_dmg_palette()); } static void screen_size_changed(void) @@ -866,7 +851,7 @@ int main(int argc, char **argv) configuration.highpass_mode %= GB_HIGHPASS_MAX; configuration.model %= MODEL_MAX; configuration.sgb_revision %= SGB_MAX; - configuration.dmg_palette %= 4; + configuration.dmg_palette %= 5; if (configuration.dmg_palette) { configuration.gui_pallete_enabled = true; } @@ -876,6 +861,7 @@ int main(int argc, char **argv) configuration.bootrom_path[sizeof(configuration.bootrom_path) - 1] = 0; configuration.cgb_revision %= GB_MODEL_CGB_E - GB_MODEL_CGB_0 + 1; configuration.audio_driver[15] = 0; + configuration.dmg_palette_name[24] = 0; } if (configuration.model >= MODEL_MAX) { diff --git a/Windows/dirent.c b/Windows/dirent.c new file mode 100755 index 000000000..f5fd8b3b2 --- /dev/null +++ b/Windows/dirent.c @@ -0,0 +1,51 @@ +#include +#include +#include +#include +#include "dirent.h" + +DIR *opendir(const char *filename) +{ + wchar_t w_filename[MAX_PATH + 3] = {0,}; + unsigned length = MultiByteToWideChar(CP_UTF8, 0, filename, -1, w_filename, MAX_PATH); + if (length) { + w_filename[length - 1] = L'/'; + w_filename[length] = L'*'; + w_filename[length + 1] = 0; + } + DIR *ret = malloc(sizeof(*ret)); + ret->handle = FindFirstFileW(w_filename, &ret->entry); + if (ret->handle == INVALID_HANDLE_VALUE) { + free(ret); + return NULL; + } + + return ret; +} + +int closedir(DIR *dir) +{ + if (dir->handle != INVALID_HANDLE_VALUE) { + FindClose(dir->handle); + } + free(dir); + return 0; +} + +struct dirent *readdir(DIR *dir) +{ + if (dir->handle == INVALID_HANDLE_VALUE) { + return NULL; + } + + WideCharToMultiByte(CP_UTF8, 0, dir->entry.cFileName, -1, + dir->out_entry.d_name, sizeof(dir->out_entry.d_name), + NULL, NULL); + + if (!FindNextFileW(dir->handle, &dir->entry)) { + FindClose(dir->handle); + dir->handle = INVALID_HANDLE_VALUE; + } + + return &dir->out_entry; +} diff --git a/Windows/dirent.h b/Windows/dirent.h new file mode 100755 index 000000000..7102995b2 --- /dev/null +++ b/Windows/dirent.h @@ -0,0 +1,15 @@ +#include + +struct dirent { + char d_name[MAX_PATH + 1]; +}; + +typedef struct { + HANDLE handle; + WIN32_FIND_DATAW entry; + struct dirent out_entry; +} DIR; + +DIR *opendir(const char *filename); +int closedir(DIR *dir); +struct dirent *readdir(DIR *dir); From 96b5306ff3efafe3bf0531ddbd89ad05e29d58b2 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 17 Jul 2022 19:57:29 +0300 Subject: [PATCH 045/116] Make the scrollbar draggable in SDL --- SDL/gui.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/SDL/gui.c b/SDL/gui.c index c02ae7629..77f2a8508 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -1500,6 +1500,10 @@ void run_gui(bool is_running) recalculate_menu_height(); current_selection = 0; scroll = 0; + + bool scrollbar_drag = false; + signed scroll_mouse_start = 0; + signed scroll_start = 0; while (true) { SDL_WaitEvent(&event); /* Convert Joypad and mouse events (We only generate down events) */ @@ -1508,6 +1512,9 @@ void run_gui(bool is_running) case SDL_WINDOWEVENT: should_render = true; break; + case SDL_MOUSEBUTTONUP: + scrollbar_drag = false; + break; case SDL_MOUSEBUTTONDOWN: if (gui_state == SHOWING_HELP) { event.type = SDL_KEYDOWN; @@ -1521,6 +1528,23 @@ void run_gui(bool is_running) signed x = event.button.x; signed y = event.button.y; convert_mouse_coordinates(&x, &y); + if (x >= 160 - 6 && x < 160 && menu_height > 144) { + unsigned scrollbar_offset = (140 - scrollbar_size) * scroll / (menu_height - 144); + if (scrollbar_offset + scrollbar_size > 140) { + scrollbar_offset = 140 - scrollbar_size; + } + + if (y < scrollbar_offset || y > scrollbar_offset + scrollbar_size) { + scroll = (menu_height - 144) * y / 143; + should_render = true; + } + + scrollbar_drag = true; + mouse_scroling = true; + scroll_mouse_start = y; + scroll_start = scroll; + break; + } y += scroll; if (x < 0 || x >= 160 || y < 24) { @@ -1711,8 +1735,28 @@ void run_gui(bool is_running) break; } + case SDL_MOUSEMOTION: { + if (scrollbar_drag && scrollbar_size < 140 && scrollbar_size > 0) { + signed x = event.motion.x; + signed y = event.motion.y; + convert_mouse_coordinates(&x, &y); + signed delta = scroll_mouse_start - y; + scroll = scroll_start - delta * (signed)(menu_height - 144) / (signed)(140 - scrollbar_size); + if (scroll < 0) { + scroll = 0; + } + if (scroll >= menu_height - 144) { + scroll = menu_height - 144; + } + + should_render = true; + } + break; + } + case SDL_KEYDOWN: + scrollbar_drag = false; if (gui_state == WAITING_FOR_KEY) { if (current_selection > 8) { configuration.keys_2[current_selection - 9] = event.key.keysym.scancode; @@ -1912,10 +1956,10 @@ void run_gui(bool is_running) for (unsigned y = 0; y < 140; y++) { uint32_t *pixel = pixels + x_offset + 156 + width * (y + y_offset + 2); if (y >= scrollbar_offset && y < scrollbar_offset + scrollbar_size) { - pixel[0] = pixel[1]= gui_palette_native[2]; + pixel[0] = pixel[1] = gui_palette_native[2]; } else { - pixel[0] = pixel[1]= gui_palette_native[1]; + pixel[0] = pixel[1] = gui_palette_native[1]; } } From d31f34cab4309c627984494518c7314c407203a5 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 17 Jul 2022 20:30:09 +0300 Subject: [PATCH 046/116] Allow the user-configured keys to be used in the SDL menu --- SDL/gui.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/SDL/gui.c b/SDL/gui.c index 77f2a8508..f7316709e 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -1509,6 +1509,31 @@ void run_gui(bool is_running) /* Convert Joypad and mouse events (We only generate down events) */ if (gui_state != WAITING_FOR_KEY && gui_state != WAITING_FOR_JBUTTON) { switch (event.type) { + case SDL_KEYDOWN: + if (gui_state == WAITING_FOR_KEY) break; + if (event.key.keysym.mod != 0) break; + switch (event.key.keysym.scancode) { + // Do not remap these keys to prevent deadlocking + case SDL_SCANCODE_ESCAPE: + case SDL_SCANCODE_RETURN: + case SDL_SCANCODE_RIGHT: + case SDL_SCANCODE_LEFT: + case SDL_SCANCODE_UP: + case SDL_SCANCODE_DOWN: + break; + + default: + if (event.key.keysym.scancode == configuration.keys[GB_KEY_RIGHT]) event.key.keysym.scancode = SDL_SCANCODE_RIGHT; + else if (event.key.keysym.scancode == configuration.keys[GB_KEY_LEFT]) event.key.keysym.scancode = SDL_SCANCODE_LEFT; + else if (event.key.keysym.scancode == configuration.keys[GB_KEY_UP]) event.key.keysym.scancode = SDL_SCANCODE_UP; + else if (event.key.keysym.scancode == configuration.keys[GB_KEY_DOWN]) event.key.keysym.scancode = SDL_SCANCODE_DOWN; + else if (event.key.keysym.scancode == configuration.keys[GB_KEY_A]) event.key.keysym.scancode = SDL_SCANCODE_RETURN; + else if (event.key.keysym.scancode == configuration.keys[GB_KEY_START]) event.key.keysym.scancode = SDL_SCANCODE_RETURN; + else if (event.key.keysym.scancode == configuration.keys[GB_KEY_B]) event.key.keysym.scancode = SDL_SCANCODE_ESCAPE; + break; + } + break; + case SDL_WINDOWEVENT: should_render = true; break; From a856566b54ffa92df66055e817dad83d7f174ba2 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 18 Jul 2022 21:56:47 +0300 Subject: [PATCH 047/116] Fixed GB_audio_get_queue_length to actually be the length rather than size, fixed XAudio2.7 audio overflow crash, changed the maximum lag limit to 1/8s rather than 1/4s. Closes #473 --- SDL/audio/sdl.c | 2 +- SDL/audio/xaudio2_7.c | 14 +++++++------- SDL/main.c | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/SDL/audio/sdl.c b/SDL/audio/sdl.c index 6b987f113..68742e9f0 100644 --- a/SDL/audio/sdl.c +++ b/SDL/audio/sdl.c @@ -52,7 +52,7 @@ static unsigned _audio_get_frequency(void) static size_t _audio_get_queue_length(void) { - return SDL_GetQueuedAudioSize(device_id); + return SDL_GetQueuedAudioSize(device_id) / sizeof(GB_sample_t); } static void _audio_queue_sample(GB_sample_t *sample) diff --git a/SDL/audio/xaudio2_7.c b/SDL/audio/xaudio2_7.c index 788ba1c6c..a698f1516 100644 --- a/SDL/audio/xaudio2_7.c +++ b/SDL/audio/xaudio2_7.c @@ -23,23 +23,23 @@ static WAVEFORMATEX wave_format = { .cbSize = 0 }; -static inline HRESULT XAudio2Create(IXAudio2 **ppXAudio2, +static inline HRESULT XAudio2Create(IXAudio2 **out, UINT32 Flags, XAUDIO2_PROCESSOR XAudio2Processor) { - IXAudio2 *pXAudio2; + IXAudio2 *xaudio2; LoadLibraryEx("xaudio2_7.dll", NULL, LOAD_LIBRARY_SEARCH_DEFAULT_DIRS); - HRESULT hr = CoCreateInstance(&CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (void**)&pXAudio2); + HRESULT hr = CoCreateInstance(&CLSID_XAudio2, NULL, CLSCTX_INPROC_SERVER, &IID_IXAudio2, (void **)&xaudio2); if (SUCCEEDED(hr)) { - hr = pXAudio2->lpVtbl->Initialize(pXAudio2, Flags, XAudio2Processor); + hr = xaudio2->lpVtbl->Initialize(xaudio2, Flags, XAudio2Processor); } if (SUCCEEDED(hr)) { - *ppXAudio2 = pXAudio2; + *out = xaudio2; } - else if (pXAudio2) { - pXAudio2->lpVtbl->Release(pXAudio2); + else if (xaudio2) { + xaudio2->lpVtbl->Release(xaudio2); } return hr; } diff --git a/SDL/main.c b/SDL/main.c index 2834ae397..badc41d57 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -523,7 +523,7 @@ static void gb_audio_callback(GB_gameboy_t *gb, GB_sample_t *sample) } } - if (GB_audio_get_queue_length() / sizeof(*sample) > GB_audio_get_frequency() / 4) { + if (GB_audio_get_queue_length() > GB_audio_get_frequency() / 8) { // Maximum lag of 0.125s return; } From 09cbf6a13f23b46bb173ffe1e58570fdb9b45af4 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 18 Jul 2022 22:19:10 +0300 Subject: [PATCH 048/116] Fix GCC C++ warning? #464 --- Core/save_state.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/save_state.h b/Core/save_state.h index 75f03d2ea..a13fad5ea 100644 --- a/Core/save_state.h +++ b/Core/save_state.h @@ -8,7 +8,7 @@ #ifdef __cplusplus /* For bsnes integration. C++ code does not need section information, and throws a fit over certain types such as anonymous enums inside unions */ -#define GB_SECTION(name, ...) __attribute__ ((aligned (8))) __VA_ARGS__ +#define GB_SECTION(name, ...) struct __attribute__ ((aligned (8))) { __VA_ARGS__} #else #define GB_SECTION(name, ...) union __attribute__ ((aligned (8))) {uint8_t name##_section_start; struct {__VA_ARGS__};}; uint8_t name##_section_end[0]; #define GB_SECTION_OFFSET(name) (offsetof(GB_gameboy_t, name##_section_start)) From 64db300f241a3f01610c2a3bfb31f7643104675b Mon Sep 17 00:00:00 2001 From: Maximilian Mader Date: Sat, 9 Jul 2022 21:47:26 +0200 Subject: [PATCH 049/116] Add an optional OpenAL audio driver for the SDL frontend To compile the OpenAL driver specify `ENABLE_OPENAL=1` when invoking `make`. --- Makefile | 6 + SDL/audio.c | 13 ++ SDL/audio/audio.h | 3 + SDL/audio/openal.c | 287 ++++++++++++++++++++++++++++++++++++++++++ SDL/audio/sdl.c | 6 + SDL/audio/xaudio2.c | 5 + SDL/audio/xaudio2_7.c | 5 + 7 files changed, 325 insertions(+) create mode 100644 SDL/audio/openal.c diff --git a/Makefile b/Makefile index a01cbc2e8..d8ff5f584 100644 --- a/Makefile +++ b/Makefile @@ -24,6 +24,12 @@ NATIVE_CC := cc SDL_AUDIO_DRIVERS ?= sdl endif +ifneq ($(ENABLE_OPENAL),) +CFLAGS += -DENABLE_OPENAL +LDFLAGS += -lopenal +SDL_AUDIO_DRIVERS += openal +endif + PB12_COMPRESS := build/pb12$(EXESUFFIX) ifeq ($(PLATFORM),Darwin) diff --git a/SDL/audio.c b/SDL/audio.c index f9a49a732..6a695fed3 100644 --- a/SDL/audio.c +++ b/SDL/audio.c @@ -1,5 +1,6 @@ #include #include +#include #include #include "audio/audio.h" #include "configuration.h" @@ -16,6 +17,9 @@ bool GB_audio_init(void) GB_AUDIO_DRIVER_REF(XAudio2_7), #endif GB_AUDIO_DRIVER_REF(SDL), +#ifdef ENABLE_OPENAL + GB_AUDIO_DRIVER_REF(OpenAL), +#endif }; // First try the preferred driver @@ -25,6 +29,9 @@ bool GB_audio_init(void) continue; } if (driver->audio_init()) { + if (driver->audio_deinit) { + atexit(driver->audio_deinit); + } return true; } } @@ -33,6 +40,9 @@ bool GB_audio_init(void) for (unsigned i = 0; i < sizeof(drivers) / sizeof(drivers[0]); i++) { driver = drivers[i]; if (driver->audio_init()) { + if (driver->audio_deinit) { + atexit(driver->audio_deinit); + } return true; } } @@ -91,6 +101,9 @@ const char *GB_audio_driver_name_at_index(unsigned index) GB_AUDIO_DRIVER_REF(XAudio2_7), #endif GB_AUDIO_DRIVER_REF(SDL), +#ifdef ENABLE_OPENAL + GB_AUDIO_DRIVER_REF(OpenAL), +#endif }; if (index >= sizeof(drivers) / sizeof(drivers[0])) { return ""; diff --git a/SDL/audio/audio.h b/SDL/audio/audio.h index 1b2fa713e..0de574679 100644 --- a/SDL/audio/audio.h +++ b/SDL/audio/audio.h @@ -12,6 +12,7 @@ unsigned GB_audio_get_frequency(void); size_t GB_audio_get_queue_length(void); void GB_audio_queue_sample(GB_sample_t *sample); bool GB_audio_init(void); +void GB_audio_deinit(void); const char *GB_audio_driver_name(void); const char *GB_audio_driver_name_at_index(unsigned index); @@ -23,6 +24,7 @@ typedef struct { typeof(GB_audio_get_queue_length) *audio_get_queue_length; typeof(GB_audio_queue_sample) *audio_queue_sample; typeof(GB_audio_init) *audio_init; + typeof(GB_audio_deinit) *audio_deinit; const char *name; } GB_audio_driver_t; @@ -34,6 +36,7 @@ typedef struct { .audio_get_queue_length = _audio_get_queue_length, \ .audio_queue_sample = _audio_queue_sample, \ .audio_init = _audio_init, \ + .audio_deinit = _audio_deinit, \ .name = #_name, \ } diff --git a/SDL/audio/openal.c b/SDL/audio/openal.c new file mode 100644 index 000000000..8a2072b97 --- /dev/null +++ b/SDL/audio/openal.c @@ -0,0 +1,287 @@ +#include "audio.h" +#include +#include +#include +#include +#include + +#define BUFFER_LEN_MS 32 + +static ALCdevice *al_device = NULL; +static ALCcontext *al_context = NULL; +static GB_sample_t *audio_buffer = NULL; +static ALuint al_source = 0; +static ALCint sample_rate = 0; +static unsigned buffer_size = 0; +static unsigned buffer_pos = 0; + +#define AL_ERR_STRINGIFY(x) #x +#define AL_ERR_TOSTRING(x) AL_ERR_STRINGIFY(x) +#define AL_ERROR(msg) check_al_error(msg, __FILE__ ":" AL_ERR_TOSTRING(__LINE__)) + +// Check if the previous OpenAL call returned an error. +// If an error occurred a message will be logged to stderr. +bool check_al_error(const char *user_msg, const char *file) { + ALCenum error = alGetError(); + char *description; + + switch (error) { + case AL_NO_ERROR: + return false; + case AL_INVALID_NAME: + description = "A bad name (ID) was passed to an OpenAL function"; + break; + case AL_INVALID_ENUM: + description = "An invalid enum value was passed to an OpenAL function"; + break; + case AL_INVALID_VALUE: + description = "An invalid value was passed to an OpenAL function"; + break; + case AL_INVALID_OPERATION: + description = "The requested operation is not valid"; + break; + case AL_OUT_OF_MEMORY: + description = "The requested operation resulted in OpenAL running out of memory"; + break; + } + + if (user_msg != NULL) { + fprintf(stderr, "[%s] %s: %s\n", file, user_msg, description); + } + else { + fprintf(stderr, "[%s] %s\n", file, description); + } + + return true; +} + +static void _audio_deinit(void) { + // Stop the source (this should mark all queued buffers as processed) + alSourceStop(al_source); + + // Free the processed buffers while ignoring potential errors + ALint processed; + alGetSourcei(al_source, AL_BUFFERS_PROCESSED, &processed); + while (processed--) { + ALuint buffer; + alSourceUnqueueBuffers(al_source, 1, &buffer); + alDeleteBuffers(1, &buffer); + } + + alDeleteSources(1, &al_source); + alcDestroyContext(al_context); + alcCloseDevice(al_device); + + if (audio_buffer != NULL) { + free(audio_buffer); + audio_buffer = NULL; + } +} + +static void free_processed_buffers(void) +{ + ALint processed; + alGetSourcei(al_source, AL_BUFFERS_PROCESSED, &processed); + if (AL_ERROR("Failed to query number of processed buffers")) { + _audio_deinit(); + return; + } + + while (processed--) { + ALuint buffer; + + alSourceUnqueueBuffers(al_source, 1, &buffer); + if (AL_ERROR("Failed to unqueue buffer")) { + _audio_deinit(); + return; + } + + alDeleteBuffers(1, &buffer); + if (AL_ERROR("Failed to delete buffer")) { + _audio_deinit(); + return; + } + } +} + +static bool _audio_is_playing(void) +{ + ALenum state; + alGetSourcei(al_source, AL_SOURCE_STATE, &state); + if (AL_ERROR("Failed to query source state")) { + _audio_deinit(); + return false; + } + + return state == AL_PLAYING; +} + +static void _audio_clear_queue(void) +{ + alSourceStop(al_source); + if (AL_ERROR(NULL)) { + _audio_deinit(); + return; + } + + free_processed_buffers(); +} + +static void _audio_set_paused(bool paused) +{ + if (paused) { + alSourcePause(al_source); + } + else { + alSourcePlay(al_source); + } + + if (AL_ERROR(NULL)) { + _audio_deinit(); + } +} + +static unsigned _audio_get_frequency(void) +{ + return sample_rate; +} + +static size_t _audio_get_queue_length(void) +{ + // Get the number of all attached buffers + ALint buffers; + alGetSourcei(al_source, AL_BUFFERS_QUEUED, &buffers); + if (AL_ERROR("Failed to query number of queued buffers")) { + buffers = 0; + } + + // Get the number of all processed buffers (ready to be detached) + ALint processed; + alGetSourcei(al_source, AL_BUFFERS_PROCESSED, &processed); + if (AL_ERROR("Failed to query number of processed buffers")) { + processed = 0; + } + + return (buffers - processed) * buffer_size * sizeof(GB_sample_t); +} + +static void _audio_queue_sample(GB_sample_t *sample) +{ + audio_buffer[buffer_pos++] = *sample; + + if (buffer_pos == buffer_size) { + buffer_pos = 0; + + ALuint al_buffer; + alGenBuffers(1, &al_buffer); + if (AL_ERROR("Failed to create audio buffer")) { + return _audio_deinit(); + } + + alBufferData(al_buffer, AL_FORMAT_STEREO16, audio_buffer, buffer_size * sizeof(GB_sample_t), sample_rate); + if (AL_ERROR("Failed to buffer data")) { + return _audio_deinit(); + } + + alSourceQueueBuffers(al_source, 1, &al_buffer); + if (AL_ERROR("Failed to queue buffer")) { + return _audio_deinit(); + } + + // In case of an audio underrun, the source might + // have finished playing all attached buffers + // which means its status will be "AL_STOPPED". + if (!_audio_is_playing()) { + alSourcePlay(al_source); + } + + free_processed_buffers(); + } +} + +static bool _audio_init(void) +{ + // Open the default device + al_device = alcOpenDevice(NULL); + if (!al_device) { + AL_ERROR("Failed to open device"); + return false; + } + + // Create a new audio context without special attributes + al_context = alcCreateContext(al_device, NULL); + if (al_context == NULL) { + AL_ERROR("Failed to create context"); + _audio_deinit(); + return false; + } + + // Enable our audio context + if (!alcMakeContextCurrent(al_context)) { + AL_ERROR("Failed to set context"); + _audio_deinit(); + return false; + } + + // Query the sample rate of the playback device + alcGetIntegerv(al_device, ALC_FREQUENCY, 1, &sample_rate); + if (AL_ERROR("Failed to query sample rate")) { + _audio_deinit(); + return false; + } + + // Allocate our working buffer + buffer_size = (sample_rate * BUFFER_LEN_MS) / 1000; + audio_buffer = malloc(buffer_size * sizeof(GB_sample_t)); + if (audio_buffer == NULL) { + fprintf(stderr, "Failed to allocate audio buffer\n"); + _audio_deinit(); + return false; + } + + // Create our playback source + alGenSources(1, &al_source); + if (AL_ERROR(NULL)) { + _audio_deinit(); + return false; + } + + // Keep the pitch as is + alSourcef(al_source, AL_PITCH, 1); + if (AL_ERROR(NULL)) { + _audio_deinit(); + return false; + } + + // Keep the volume as is + alSourcef(al_source, AL_GAIN, 1); + if (AL_ERROR(NULL)) { + _audio_deinit(); + return false; + } + + // Position our source at the center of the 3D space + alSource3f(al_source, AL_POSITION, 0, 0, 0); + if (AL_ERROR(NULL)) { + _audio_deinit(); + return false; + } + + // Our source is fixed in space + alSource3f(al_source, AL_VELOCITY, 0, 0, 0); + if (AL_ERROR(NULL)) { + _audio_deinit(); + return false; + } + + // Our source does not loop + alSourcei(al_source, AL_LOOPING, AL_FALSE); + if (AL_ERROR(NULL)) { + _audio_deinit(); + return false; + } + + return true; +} + +GB_AUDIO_DRIVER(OpenAL); diff --git a/SDL/audio/sdl.c b/SDL/audio/sdl.c index 68742e9f0..ec8850a5e 100644 --- a/SDL/audio/sdl.c +++ b/SDL/audio/sdl.c @@ -97,4 +97,10 @@ static bool _audio_init(void) return true; } +void _audio_deinit(void) +{ + _audio_set_paused(true); + SDL_CloseAudioDevice(device_id); +} + GB_AUDIO_DRIVER(SDL); diff --git a/SDL/audio/xaudio2.c b/SDL/audio/xaudio2.c index b1ffe2621..78fe877f6 100644 --- a/SDL/audio/xaudio2.c +++ b/SDL/audio/xaudio2.c @@ -151,4 +151,9 @@ static bool _audio_init(void) return true; } +void _audio_deinit(void) +{ + _audio_set_paused(true); +} + GB_AUDIO_DRIVER(XAudio2); diff --git a/SDL/audio/xaudio2_7.c b/SDL/audio/xaudio2_7.c index a698f1516..5dc752c7a 100644 --- a/SDL/audio/xaudio2_7.c +++ b/SDL/audio/xaudio2_7.c @@ -171,4 +171,9 @@ static bool _audio_init(void) return true; } +void _audio_deinit(void) +{ + _audio_set_paused(true); +} + GB_AUDIO_DRIVER(XAudio2_7); From 7a24073f6d6376b3279ca030c82f0f57144707cf Mon Sep 17 00:00:00 2001 From: Maximilian Mader Date: Wed, 13 Jul 2022 15:51:37 +0200 Subject: [PATCH 050/116] Make sure that `AL_BUFFERS_PROCESSED` returns a valid value in `_audio_deinit()` --- SDL/audio/openal.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/SDL/audio/openal.c b/SDL/audio/openal.c index 8a2072b97..88f0cebae 100644 --- a/SDL/audio/openal.c +++ b/SDL/audio/openal.c @@ -59,13 +59,16 @@ static void _audio_deinit(void) { // Stop the source (this should mark all queued buffers as processed) alSourceStop(al_source); - // Free the processed buffers while ignoring potential errors + // Check if there are buffers that can be freed ALint processed; alGetSourcei(al_source, AL_BUFFERS_PROCESSED, &processed); - while (processed--) { - ALuint buffer; - alSourceUnqueueBuffers(al_source, 1, &buffer); - alDeleteBuffers(1, &buffer); + if (!AL_ERROR("Failed to query number of processed buffers")) { + // Try to free the buffers, we do not care about potential errors here + while (processed--) { + ALuint buffer; + alSourceUnqueueBuffers(al_source, 1, &buffer); + alDeleteBuffers(1, &buffer); + } } alDeleteSources(1, &al_source); From 8fa02e0ea2b4bbb8c0cdc735663a327377662264 Mon Sep 17 00:00:00 2001 From: Maximilian Mader Date: Wed, 13 Jul 2022 15:54:57 +0200 Subject: [PATCH 051/116] Make sure that audio resumes playing after clearing the queue --- SDL/audio/openal.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/SDL/audio/openal.c b/SDL/audio/openal.c index 88f0cebae..5cde557d1 100644 --- a/SDL/audio/openal.c +++ b/SDL/audio/openal.c @@ -119,17 +119,6 @@ static bool _audio_is_playing(void) return state == AL_PLAYING; } -static void _audio_clear_queue(void) -{ - alSourceStop(al_source); - if (AL_ERROR(NULL)) { - _audio_deinit(); - return; - } - - free_processed_buffers(); -} - static void _audio_set_paused(bool paused) { if (paused) { @@ -144,6 +133,25 @@ static void _audio_set_paused(bool paused) } } +static void _audio_clear_queue(void) +{ + bool is_playing = _audio_is_playing(); + + // Stopping a source clears its queue + alSourceStop(al_source); + if (AL_ERROR(NULL)) { + _audio_deinit(); + return; + } + + free_processed_buffers(); + buffer_pos = 0; + + if (is_playing) { + _audio_set_paused(false); + } +} + static unsigned _audio_get_frequency(void) { return sample_rate; From d48037beec0bd0b39e6fc378f4e394f073ec5392 Mon Sep 17 00:00:00 2001 From: Maximilian Mader Date: Wed, 13 Jul 2022 15:49:52 +0200 Subject: [PATCH 052/116] Remove `__FILE__` usage in the OpenAL driver --- SDL/audio/openal.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/SDL/audio/openal.c b/SDL/audio/openal.c index 5cde557d1..76a57181d 100644 --- a/SDL/audio/openal.c +++ b/SDL/audio/openal.c @@ -17,11 +17,11 @@ static unsigned buffer_pos = 0; #define AL_ERR_STRINGIFY(x) #x #define AL_ERR_TOSTRING(x) AL_ERR_STRINGIFY(x) -#define AL_ERROR(msg) check_al_error(msg, __FILE__ ":" AL_ERR_TOSTRING(__LINE__)) +#define AL_ERROR(msg) check_al_error(msg, AL_ERR_TOSTRING(__LINE__)) // Check if the previous OpenAL call returned an error. // If an error occurred a message will be logged to stderr. -bool check_al_error(const char *user_msg, const char *file) { +bool check_al_error(const char *user_msg, const char *line) { ALCenum error = alGetError(); char *description; @@ -46,10 +46,10 @@ bool check_al_error(const char *user_msg, const char *file) { } if (user_msg != NULL) { - fprintf(stderr, "[%s] %s: %s\n", file, user_msg, description); + fprintf(stderr, "[OpenAL:%s] %s: %s\n", line, user_msg, description); } else { - fprintf(stderr, "[%s] %s\n", file, description); + fprintf(stderr, "[OpenAL:%s] %s\n", line, description); } return true; From 91a2b459f9c4c983094f5d1742bc0abcd13be6fd Mon Sep 17 00:00:00 2001 From: Maximilian Mader Date: Wed, 13 Jul 2022 15:47:53 +0200 Subject: [PATCH 053/116] Initialize the SDL audio system in the driver --- SDL/audio/sdl.c | 5 +++++ SDL/main.c | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/SDL/audio/sdl.c b/SDL/audio/sdl.c index ec8850a5e..61a4fd7fc 100644 --- a/SDL/audio/sdl.c +++ b/SDL/audio/sdl.c @@ -67,6 +67,11 @@ static void _audio_queue_sample(GB_sample_t *sample) static bool _audio_init(void) { + if (SDL_Init(SDL_INIT_AUDIO) != 0) { + printf("Failed to initialize SDL audio: %s", SDL_GetError()); + return false; + } + /* Configure Audio */ memset(&want_aspec, 0, sizeof(want_aspec)); want_aspec.freq = AUDIO_FREQUENCY; diff --git a/SDL/main.c b/SDL/main.c index badc41d57..bddbca378 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -820,7 +820,7 @@ int main(int argc, char **argv) signal(SIGINT, debugger_interrupt); - SDL_Init(SDL_INIT_EVERYTHING); + SDL_Init(SDL_INIT_EVERYTHING & ~SDL_INIT_AUDIO); SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, configuration.allow_background_controllers? "1" : "0"); if ((console_supported = CON_start(completer))) { From 8760cc55174409ddab92b719a2964c3462e27749 Mon Sep 17 00:00:00 2001 From: Maximilian Mader Date: Wed, 13 Jul 2022 17:01:31 +0200 Subject: [PATCH 054/116] Mark `check_al_error()` as `static` --- SDL/audio/openal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SDL/audio/openal.c b/SDL/audio/openal.c index 76a57181d..1d5a6cdbe 100644 --- a/SDL/audio/openal.c +++ b/SDL/audio/openal.c @@ -21,7 +21,7 @@ static unsigned buffer_pos = 0; // Check if the previous OpenAL call returned an error. // If an error occurred a message will be logged to stderr. -bool check_al_error(const char *user_msg, const char *line) { +static bool check_al_error(const char *user_msg, const char *line) { ALCenum error = alGetError(); char *description; From 43210876beaa355e96fe8a94069d301a4c9a6219 Mon Sep 17 00:00:00 2001 From: Maximilian Mader Date: Wed, 13 Jul 2022 18:07:24 +0200 Subject: [PATCH 055/116] Use `pkg-config` to check if OpenAL is available If `pkg-config` is available, the OpenAL driver will be compiled unless OpenAL dev headers cannot be found or `ENABLE_OPENAL=0` is set. If `pkg-config` is unavailable `ENABLE_OPENAL=1` can be set to force the use of OpenAL. In this case users must make sure that they have OpenAL dev headers installed to compile successfully. --- Makefile | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index d8ff5f584..894ac500c 100644 --- a/Makefile +++ b/Makefile @@ -24,12 +24,6 @@ NATIVE_CC := cc SDL_AUDIO_DRIVERS ?= sdl endif -ifneq ($(ENABLE_OPENAL),) -CFLAGS += -DENABLE_OPENAL -LDFLAGS += -lopenal -SDL_AUDIO_DRIVERS += openal -endif - PB12_COMPRESS := build/pb12$(EXESUFFIX) ifeq ($(PLATFORM),Darwin) @@ -139,16 +133,35 @@ endif ifeq (,$(PKG_CONFIG)) SDL_CFLAGS := $(shell sdl2-config --cflags) SDL_LDFLAGS := $(shell sdl2-config --libs) -lpthread + +# We cannot detect the presence of OpenAL dev headers, +# so we must do this manually +ifeq ($(ENABLE_OPENAL),1) +SDL_CFLAGS += -DENABLE_OPENAL +SDL_LDFLAGS += -lopenal +SDL_AUDIO_DRIVERS += openal +endif else SDL_CFLAGS := $(shell $(PKG_CONFIG) --cflags sdl2) SDL_LDFLAGS := $(shell $(PKG_CONFIG) --libs sdl2) -lpthread + +# Allow OpenAL to be disabled even if the development libraries are available +ifneq ($(ENABLE_OPENAL),0) +ifeq ($(shell $(PKG_CONFIG) --exists openal && echo 0),0) +SDL_CFLAGS += $(shell $(PKG_CONFIG) --cflags openal) -DENABLE_OPENAL +SDL_LDFLAGS += $(shell $(PKG_CONFIG) --libs openal) +SDL_AUDIO_DRIVERS += openal +endif endif +endif + ifeq (,$(PKG_CONFIG)) GL_LDFLAGS := -lGL else GL_CFLAGS := $(shell $(PKG_CONFIG) --cflags gl) GL_LDFLAGS := $(shell $(PKG_CONFIG) --libs gl || echo -lGL) endif + ifeq ($(PLATFORM),windows32) CFLAGS += -IWindows -Drandom=rand --target=i386-pc-windows LDFLAGS += -lmsvcrt -lcomdlg32 -luser32 -lshell32 -lole32 -lSDL2main -Wl,/MANIFESTFILE:NUL --target=i386-pc-windows From 110deee6f8201761392eb2086733e7ebf575421e Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 18 Jul 2022 23:22:23 +0300 Subject: [PATCH 056/116] Oops --- Core/save_state.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/save_state.h b/Core/save_state.h index a13fad5ea..06ab76064 100644 --- a/Core/save_state.h +++ b/Core/save_state.h @@ -8,7 +8,7 @@ #ifdef __cplusplus /* For bsnes integration. C++ code does not need section information, and throws a fit over certain types such as anonymous enums inside unions */ -#define GB_SECTION(name, ...) struct __attribute__ ((aligned (8))) { __VA_ARGS__} +#define GB_SECTION(name, ...) struct __attribute__ ((aligned (8))) { __VA_ARGS__ }; #else #define GB_SECTION(name, ...) union __attribute__ ((aligned (8))) {uint8_t name##_section_start; struct {__VA_ARGS__};}; uint8_t name##_section_end[0]; #define GB_SECTION_OFFSET(name) (offsetof(GB_gameboy_t, name##_section_start)) From de10338962d37b5cc69fe5bee8b148f5db476298 Mon Sep 17 00:00:00 2001 From: Maximilian Mader Date: Mon, 18 Jul 2022 22:24:00 +0200 Subject: [PATCH 057/116] Change `_audio_get_queue_length()` accoring to a856566b This also reduces the internal audio buffer size down to 5 ms, similar to the SDL backend at 96 kHz. --- SDL/audio/openal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SDL/audio/openal.c b/SDL/audio/openal.c index 1d5a6cdbe..7ee6afd57 100644 --- a/SDL/audio/openal.c +++ b/SDL/audio/openal.c @@ -5,7 +5,7 @@ #include #include -#define BUFFER_LEN_MS 32 +#define BUFFER_LEN_MS 5 static ALCdevice *al_device = NULL; static ALCcontext *al_context = NULL; @@ -173,7 +173,7 @@ static size_t _audio_get_queue_length(void) processed = 0; } - return (buffers - processed) * buffer_size * sizeof(GB_sample_t); + return (buffers - processed) * buffer_size; } static void _audio_queue_sample(GB_sample_t *sample) From 541dbc5db38a7a05ae4354896ee171c6819c18b1 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Tue, 19 Jul 2022 01:52:38 +0300 Subject: [PATCH 058/116] One last try --- Core/save_state.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Core/save_state.h b/Core/save_state.h index 06ab76064..31071966f 100644 --- a/Core/save_state.h +++ b/Core/save_state.h @@ -8,7 +8,12 @@ #ifdef __cplusplus /* For bsnes integration. C++ code does not need section information, and throws a fit over certain types such as anonymous enums inside unions */ -#define GB_SECTION(name, ...) struct __attribute__ ((aligned (8))) { __VA_ARGS__ }; +#if __clang__ +#define GB_SECTION(name, ...) __attribute__ ((aligned (8))) __VA_ARGS__ +#else +// GCC's handling of attributes is so awfully bad, that it is alone a good enough reason to never use that compiler +#define SECTION(name, ...) _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wpedantic\"") alignas(8) char _align_##name[0]; __VA_ARGS__ _Pragma("GCC diagnostic pop") +#endif #else #define GB_SECTION(name, ...) union __attribute__ ((aligned (8))) {uint8_t name##_section_start; struct {__VA_ARGS__};}; uint8_t name##_section_end[0]; #define GB_SECTION_OFFSET(name) (offsetof(GB_gameboy_t, name##_section_start)) From 08549c13951e637eb8dfabd00fa776f15e99ce23 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Tue, 19 Jul 2022 02:19:31 +0300 Subject: [PATCH 059/116] Typo --- Core/save_state.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/save_state.h b/Core/save_state.h index 31071966f..acb6b89bd 100644 --- a/Core/save_state.h +++ b/Core/save_state.h @@ -12,7 +12,7 @@ #define GB_SECTION(name, ...) __attribute__ ((aligned (8))) __VA_ARGS__ #else // GCC's handling of attributes is so awfully bad, that it is alone a good enough reason to never use that compiler -#define SECTION(name, ...) _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wpedantic\"") alignas(8) char _align_##name[0]; __VA_ARGS__ _Pragma("GCC diagnostic pop") +#define GB_SECTION(name, ...) _Pragma("GCC diagnostic push") _Pragma("GCC diagnostic ignored \"-Wpedantic\"") alignas(8) char _align_##name[0]; __VA_ARGS__ _Pragma("GCC diagnostic pop") #endif #else #define GB_SECTION(name, ...) union __attribute__ ((aligned (8))) {uint8_t name##_section_start; struct {__VA_ARGS__};}; uint8_t name##_section_end[0]; From 349114097bf4a7156c7df1335951b1174030d644 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Tue, 19 Jul 2022 23:55:34 +0300 Subject: [PATCH 060/116] Add joypad hotkeys to SDL --- SDL/configuration.c | 3 +++ SDL/configuration.h | 34 +++++++++++++++++++++++++++- SDL/gui.c | 55 +++++++++++++++++++++++++++++++++++++++++++++ SDL/main.c | 35 +++++++++++++++++++++++++++++ 4 files changed, 126 insertions(+), 1 deletion(-) diff --git a/SDL/configuration.c b/SDL/configuration.c index 469c33417..2a14426e6 100644 --- a/SDL/configuration.c +++ b/SDL/configuration.c @@ -30,6 +30,9 @@ configuration_t configuration = 4, -1, 5, + // The rest are unmapped by default + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, }, .joypad_axises = { 0, diff --git a/SDL/configuration.h b/SDL/configuration.h index b8bdfbda7..3eae7d60f 100644 --- a/SDL/configuration.h +++ b/SDL/configuration.h @@ -25,6 +25,8 @@ typedef enum { JOYPAD_BUTTON_TURBO, JOYPAD_BUTTON_REWIND, JOYPAD_BUTTON_SLOW_MOTION, + JOYPAD_BUTTON_HOTKEY_1, + JOYPAD_BUTTON_HOTKEY_2, JOYPAD_BUTTONS_MAX } joypad_button_t; @@ -34,6 +36,35 @@ typedef enum { JOYPAD_AXISES_MAX } joypad_axis_t; +typedef enum { + HOTKEY_NONE, + HOTKEY_PAUSE, + HOTKEY_MUTE, + HOTKEY_RESET, + HOTKEY_QUIT, + HOTKEY_SAVE_STATE_1, + HOTKEY_LOAD_STATE_1, + HOTKEY_SAVE_STATE_2, + HOTKEY_LOAD_STATE_2, + HOTKEY_SAVE_STATE_3, + HOTKEY_LOAD_STATE_3, + HOTKEY_SAVE_STATE_4, + HOTKEY_LOAD_STATE_4, + HOTKEY_SAVE_STATE_5, + HOTKEY_LOAD_STATE_5, + HOTKEY_SAVE_STATE_6, + HOTKEY_LOAD_STATE_6, + HOTKEY_SAVE_STATE_7, + HOTKEY_LOAD_STATE_7, + HOTKEY_SAVE_STATE_8, + HOTKEY_LOAD_STATE_8, + HOTKEY_SAVE_STATE_9, + HOTKEY_LOAD_STATE_9, + HOTKEY_SAVE_STATE_10, + HOTKEY_LOAD_STATE_10, + HOTKEY_MAX = HOTKEY_LOAD_STATE_10, +} hotkey_action_t; + typedef struct { SDL_Scancode keys[9]; GB_color_correction_mode_t color_correction_mode; @@ -59,7 +90,7 @@ typedef struct { /* v0.11 */ uint32_t rewind_length; SDL_Scancode keys_2[32]; /* Rewind and underclock, + padding for the future */ - uint8_t joypad_configuration[32]; /* 12 Keys + padding for the future*/; + uint8_t joypad_configuration[32]; /* 14 Keys + padding for the future*/; uint8_t joypad_axises[JOYPAD_AXISES_MAX]; /* v0.12 */ @@ -99,6 +130,7 @@ typedef struct { bool allow_background_controllers; bool gui_pallete_enabled; // Change the GUI palette only once the user changed the DMG palette char dmg_palette_name[25]; + hotkey_action_t hotkey_actions[2]; }; } configuration_t; diff --git a/SDL/gui.c b/SDL/gui.c index f7316709e..4d03d1d65 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -1283,10 +1283,63 @@ static const char *current_background_control_mode(unsigned index) return configuration.allow_background_controllers? "Always" : "During Window Focus Only"; } +static void cycle_hotkey(unsigned index) +{ + if (configuration.hotkey_actions[index - 2] == HOTKEY_MAX) { + configuration.hotkey_actions[index - 2] = 0; + } + else { + configuration.hotkey_actions[index - 2]++; + } +} + +static void cycle_hotkey_backwards(unsigned index) +{ + if (configuration.hotkey_actions[index - 2] == 0) { + configuration.hotkey_actions[index - 2] = HOTKEY_MAX; + } + else { + configuration.hotkey_actions[index - 2]--; + } +} + +static const char *current_hotkey(unsigned index) +{ + return (const char *[]){ + "None", + "Toggle Pause", + "Toggle Mute", + "Reset", + "Quit SameBoy", + "Save State Slot 1", + "Load State Slot 1", + "Save State Slot 2", + "Load State Slot 2", + "Save State Slot 3", + "Load State Slot 3", + "Save State Slot 4", + "Load State Slot 4", + "Save State Slot 5", + "Load State Slot 5", + "Save State Slot 6", + "Load State Slot 6", + "Save State Slot 7", + "Load State Slot 7", + "Save State Slot 8", + "Load State Slot 8", + "Save State Slot 9", + "Load State Slot 9", + "Save State Slot 10", + "Load State Slot 10", + } + [configuration.hotkey_actions[index - 2]]; +} static const struct menu_item joypad_menu[] = { {"Joypad:", cycle_joypads, current_joypad_name, cycle_joypads_backwards}, {"Configure layout", detect_joypad_layout}, + {"Hotkey 1 Action:", cycle_hotkey, current_hotkey, cycle_hotkey_backwards}, + {"Hotkey 2 Action:", cycle_hotkey, current_hotkey, cycle_hotkey_backwards}, {"Rumble Mode:", cycle_rumble_mode, current_rumble_mode, cycle_rumble_mode_backwards}, {"Enable Control:", toggle_allow_background_controllers, current_background_control_mode, toggle_allow_background_controllers}, {"Back", enter_controls_menu}, @@ -2015,6 +2068,8 @@ void run_gui(bool is_running) "Turbo", "Rewind", "Slow-Motion", + "Hotkey 1", + "Hotkey 2", "", } [joypad_configuration_progress], gui_palette_native[3], gui_palette_native[0], DECORATION_NONE); diff --git a/SDL/main.c b/SDL/main.c index badc41d57..3e6f5df79 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -271,6 +271,37 @@ static void handle_events(GB_gameboy_t *gb) else if (button == JOYPAD_BUTTON_MENU && event.type == SDL_JOYBUTTONDOWN) { open_menu(); } + else if ((button == JOYPAD_BUTTON_HOTKEY_1 || button == JOYPAD_BUTTON_HOTKEY_2) && event.type == SDL_JOYBUTTONDOWN) { + hotkey_action_t action = configuration.hotkey_actions[button - JOYPAD_BUTTON_HOTKEY_1]; + switch (action) { + case HOTKEY_NONE: + break; + case HOTKEY_PAUSE: + paused = !paused; + break; + case HOTKEY_MUTE: + GB_audio_set_paused(GB_audio_is_playing()); + break; + case HOTKEY_RESET: + pending_command = GB_SDL_RESET_COMMAND; + break; + case HOTKEY_QUIT: + pending_command = GB_SDL_QUIT_COMMAND; + break; + default: + command_parameter = (action - HOTKEY_SAVE_STATE_1) / 2 + 1; + pending_command = ((action - HOTKEY_SAVE_STATE_1) % 2)? GB_SDL_LOAD_STATE_COMMAND:GB_SDL_SAVE_STATE_COMMAND; + break; + case HOTKEY_SAVE_STATE_10: + command_parameter = 0; + pending_command = GB_SDL_SAVE_STATE_COMMAND; + break; + case HOTKEY_LOAD_STATE_10: + command_parameter = 0; + pending_command = GB_SDL_LOAD_STATE_COMMAND; + break; + } + } } break; @@ -862,6 +893,10 @@ int main(int argc, char **argv) configuration.cgb_revision %= GB_MODEL_CGB_E - GB_MODEL_CGB_0 + 1; configuration.audio_driver[15] = 0; configuration.dmg_palette_name[24] = 0; + // Fix broken defaults, should keys 12-31 should be unmapped by default + if (configuration.joypad_configuration[31] == 0) { + memset(configuration.joypad_configuration + 12 , -1, 32 - 12); + } } if (configuration.model >= MODEL_MAX) { From 3a86b868fe2925d3c3b9fb55c158445f873635dd Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Thu, 21 Jul 2022 21:27:10 +0300 Subject: [PATCH 061/116] Add the same feature to Cocoa. Closes #474 --- Cocoa/Document.h | 10 +- Cocoa/Document.m | 2 +- Cocoa/{AppDelegate.h => GBApp.h} | 3 +- Cocoa/{AppDelegate.m => GBApp.m} | 77 +++++++++++++-- Cocoa/GBButtons.h | 10 +- Cocoa/GBButtons.m | 2 +- Cocoa/GBPreferencesWindow.h | 2 + Cocoa/GBPreferencesWindow.m | 59 ++++++++++- Cocoa/GBView.h | 1 + Cocoa/Info.plist | 2 +- Cocoa/MainMenu.xib | 2 +- Cocoa/Preferences.xib | 164 +++++++++++++++++++++++++++++-- Cocoa/UpdateWindow.xib | 2 +- 13 files changed, 304 insertions(+), 32 deletions(-) rename Cocoa/{AppDelegate.h => GBApp.h} (84%) rename Cocoa/{AppDelegate.m => GBApp.m} (90%) diff --git a/Cocoa/Document.h b/Cocoa/Document.h index c52a4ed98..19fe0feb4 100644 --- a/Cocoa/Document.h +++ b/Cocoa/Document.h @@ -1,9 +1,9 @@ #import -#include "GBView.h" -#include "GBImageView.h" -#include "GBSplitView.h" -#include "GBVisualizerView.h" -#include "GBOSDView.h" +#import "GBView.h" +#import "GBImageView.h" +#import "GBSplitView.h" +#import "GBVisualizerView.h" +#import "GBOSDView.h" @class GBCheatWindowController; @class GBPaletteView; diff --git a/Cocoa/Document.m b/Cocoa/Document.m index b29f7b4c0..8d3082026 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -3,7 +3,7 @@ #import #import "GBAudioClient.h" #import "Document.h" -#import "AppDelegate.h" +#import "GBApp.h" #import "HexFiend/HexFiend.h" #import "GBMemoryByteArray.h" #import "GBWarningPopover.h" diff --git a/Cocoa/AppDelegate.h b/Cocoa/GBApp.h similarity index 84% rename from Cocoa/AppDelegate.h rename to Cocoa/GBApp.h index a9b00487e..0ad7ac309 100644 --- a/Cocoa/AppDelegate.h +++ b/Cocoa/GBApp.h @@ -1,7 +1,8 @@ #import #import +#import -@interface AppDelegate : NSObject +@interface GBApp : NSApplication @property (nonatomic, strong) IBOutlet NSWindow *preferencesWindow; @property (nonatomic, strong) IBOutlet NSView *graphicsTab; diff --git a/Cocoa/AppDelegate.m b/Cocoa/GBApp.m similarity index 90% rename from Cocoa/AppDelegate.m rename to Cocoa/GBApp.m index 65e5934b8..1ff0a19ff 100644 --- a/Cocoa/AppDelegate.m +++ b/Cocoa/GBApp.m @@ -1,6 +1,7 @@ -#import "AppDelegate.h" +#import "GBApp.h" #include "GBButtons.h" #include "GBView.h" +#include "Document.h" #include #import #import @@ -17,10 +18,9 @@ static uint32_t color_to_int(NSColor *color) ((unsigned)(color.blueComponent * 0xFF)); } -@implementation AppDelegate +@implementation GBApp { - NSWindow *preferences_window; - NSArray *preferences_tabs; + NSArray *_preferencesTabs; NSString *_lastVersion; NSString *_updateURL; NSURLSessionDownloadTask *_updateTask; @@ -33,6 +33,7 @@ @implementation AppDelegate } _updateState; NSString *_downloadDirectory; AuthorizationRef _auth; + bool _simulatingMenuEvent; } - (void) applicationDidFinishLaunching:(NSNotification *)notification @@ -145,6 +146,8 @@ - (void) applicationDidFinishLaunching:(NSNotification *)notification JOYHatsEmulateButtonsKey: @YES, }]; + [JOYController registerListener:self]; + if ([[NSUserDefaults standardUserDefaults] boolForKey:@"GBNotificationsUsed"]) { [NSUserNotificationCenter defaultUserNotificationCenter].delegate = self; } @@ -168,10 +171,10 @@ - (IBAction)toggleDeveloperMode:(id)sender - (IBAction)switchPreferencesTab:(id)sender { - for (NSView *view in preferences_tabs) { + for (NSView *view in _preferencesTabs) { [view removeFromSuperview]; } - NSView *tab = preferences_tabs[[sender tag]]; + NSView *tab = _preferencesTabs[[sender tag]]; NSRect old = [_preferencesWindow frame]; NSRect new = [_preferencesWindow frameRectForContentRect:tab.frame]; new.origin.x = old.origin.x; @@ -215,7 +218,7 @@ - (IBAction) showPreferences: (id) sender [[NSBundle mainBundle] loadNibNamed:@"Preferences" owner:self topLevelObjects:&objects]; NSToolbarItem *first_toolbar_item = [_preferencesWindow.toolbar.items firstObject]; _preferencesWindow.toolbar.selectedItemIdentifier = [first_toolbar_item itemIdentifier]; - preferences_tabs = @[self.emulationTab, self.graphicsTab, self.audioTab, self.controlsTab, self.updatesTab]; + _preferencesTabs = @[self.emulationTab, self.graphicsTab, self.audioTab, self.controlsTab, self.updatesTab]; [self switchPreferencesTab:first_toolbar_item]; [_preferencesWindow center]; #ifndef UPDATE_SUPPORT @@ -570,6 +573,66 @@ - (void)orderFrontAboutPanel:(id)sender }]; } +- (void)controller:(JOYController *)controller buttonChangedState:(JOYButton *)button +{ + if (!button.isPressed) return; + NSDictionary *mapping = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"JoyKitInstanceMapping"][controller.uniqueID]; + if (!mapping) { + mapping = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"JoyKitNameMapping"][controller.deviceName]; + } + + JOYButtonUsage usage = ((JOYButtonUsage)[mapping[n2s(button.uniqueID)] unsignedIntValue]) ?: -1; + if (!mapping && usage >= JOYButtonUsageGeneric0) { + usage = (const JOYButtonUsage[]){JOYButtonUsageY, JOYButtonUsageA, JOYButtonUsageB, JOYButtonUsageX}[(usage - JOYButtonUsageGeneric0) & 3]; + } + + if (usage == GBJoyKitHotkey1 || usage == GBJoyKitHotkey2) { + if (_preferencesWindow && self.keyWindow == _preferencesWindow) { + return; + } + if (![[NSUserDefaults standardUserDefaults] boolForKey:@"GBAllowBackgroundControllers"] && !self.keyWindow) { + return; + } + + NSString *keyEquivalent = [[NSUserDefaults standardUserDefaults] stringForKey:usage == GBJoyKitHotkey1? @"GBJoypadHotkey1" : @"GBJoypadHotkey2"]; + NSEventModifierFlags flags = NSEventModifierFlagCommand; + if ([keyEquivalent hasPrefix:@"^"]) { + flags |= NSEventModifierFlagShift; + [keyEquivalent substringFromIndex:1]; + } + _simulatingMenuEvent = true; + [[NSApplication sharedApplication] sendEvent:[NSEvent keyEventWithType:NSEventTypeKeyDown + location:(NSPoint){0,} + modifierFlags:flags + timestamp:0 + windowNumber:0 + context:NULL + characters:keyEquivalent + charactersIgnoringModifiers:keyEquivalent + isARepeat:false + keyCode:0]]; + _simulatingMenuEvent = false; + } +} + +- (NSWindow *)keyWindow +{ + NSWindow *ret = [super keyWindow]; + if (!ret && _simulatingMenuEvent) { + ret = [(Document *)self.orderedDocuments.firstObject mainWindow]; + } + return ret; +} + +- (NSWindow *)mainWindow +{ + NSWindow *ret = [super mainWindow]; + if (!ret && _simulatingMenuEvent) { + ret = [(Document *)self.orderedDocuments.firstObject mainWindow]; + } + return ret; +} + - (void)dealloc { if (_downloadDirectory) { diff --git a/Cocoa/GBButtons.h b/Cocoa/GBButtons.h index 1f8b5afbd..f5c76dab7 100644 --- a/Cocoa/GBButtons.h +++ b/Cocoa/GBButtons.h @@ -13,11 +13,17 @@ typedef enum : NSUInteger { GBTurbo, GBRewind, GBUnderclock, - GBButtonCount, + GBHotkey1, + GBHotkey2, + GBJoypadButtonCount, + GBButtonCount = GBUnderclock + 1, GBGameBoyButtonCount = GBStart + 1, } GBButton; -extern NSString const *GBButtonNames[GBButtonCount]; +#define GBJoyKitHotkey1 JOYButtonUsageGeneric0 + 0x100 +#define GBJoyKitHotkey2 JOYButtonUsageGeneric0 + 0x101 + +extern NSString const *GBButtonNames[GBJoypadButtonCount]; static inline NSString *n2s(uint64_t number) { diff --git a/Cocoa/GBButtons.m b/Cocoa/GBButtons.m index 044e93326..ef86738f0 100644 --- a/Cocoa/GBButtons.m +++ b/Cocoa/GBButtons.m @@ -1,4 +1,4 @@ #import #import "GBButtons.h" -NSString const *GBButtonNames[] = {@"Right", @"Left", @"Up", @"Down", @"A", @"B", @"Select", @"Start", @"Turbo", @"Rewind", @"Slow-Motion"}; +NSString const *GBButtonNames[] = {@"Right", @"Left", @"Up", @"Down", @"A", @"B", @"Select", @"Start", @"Turbo", @"Rewind", @"Slow-Motion", @"Hotkey 1", @"Hotkey 2"}; diff --git a/Cocoa/GBPreferencesWindow.h b/Cocoa/GBPreferencesWindow.h index 460b65abd..339437604 100644 --- a/Cocoa/GBPreferencesWindow.h +++ b/Cocoa/GBPreferencesWindow.h @@ -20,6 +20,8 @@ @property IBOutlet NSMenuItem *bootROMsFolderItem; @property IBOutlet NSPopUpButtonCell *bootROMsButton; @property IBOutlet NSPopUpButton *rumbleModePopupButton; +@property IBOutlet NSPopUpButton *hotkey1PopupButton; +@property IBOutlet NSPopUpButton *hotkey2PopupButton; @property IBOutlet NSSlider *temperatureSlider; @property IBOutlet NSSlider *interferenceSlider; @property IBOutlet NSPopUpButton *dmgPopupButton; diff --git a/Cocoa/GBPreferencesWindow.m b/Cocoa/GBPreferencesWindow.m index 031fa5b23..f536f9f01 100644 --- a/Cocoa/GBPreferencesWindow.m +++ b/Cocoa/GBPreferencesWindow.m @@ -29,6 +29,8 @@ @implementation GBPreferencesWindow NSPopUpButton *_dmgPopupButton, *_sgbPopupButton, *_cgbPopupButton; NSPopUpButton *_preferredJoypadButton; NSPopUpButton *_rumbleModePopupButton; + NSPopUpButton *_hotkey1PopupButton; + NSPopUpButton *_hotkey2PopupButton; NSSlider *_temperatureSlider; NSSlider *_interferenceSlider; NSSlider *_volumeSlider; @@ -195,6 +197,45 @@ - (NSPopUpButton *)rumbleModePopupButton return _rumbleModePopupButton; } +static inline NSString *keyEquivalentString(NSMenuItem *item) +{ + return [NSString stringWithFormat:@"%s%@", (item.keyEquivalentModifierMask & NSEventModifierFlagShift)? "^":"", item.keyEquivalent]; +} + +- (void)setHotkey1PopupButton:(NSPopUpButton *)hotkey1PopupButton +{ + _hotkey1PopupButton = hotkey1PopupButton; + NSString *keyEquivalent = [[NSUserDefaults standardUserDefaults] stringForKey:@"GBJoypadHotkey1"]; + for (NSMenuItem *item in _hotkey1PopupButton.menu.itemArray) { + if ([keyEquivalent isEqualToString:keyEquivalentString(item)]) { + [_hotkey1PopupButton selectItem:item]; + break; + } + } +} + +- (NSPopUpButton *)hotkey1PopupButton +{ + return _hotkey1PopupButton; +} + +- (void)setHotkey2PopupButton:(NSPopUpButton *)hotkey2PopupButton +{ + _hotkey2PopupButton = hotkey2PopupButton; + NSString *keyEquivalent = [[NSUserDefaults standardUserDefaults] stringForKey:@"GBJoypadHotkey2"]; + for (NSMenuItem *item in _hotkey2PopupButton.menu.itemArray) { + if ([keyEquivalent isEqualToString:keyEquivalentString(item)]) { + [_hotkey2PopupButton selectItem:item]; + break; + } + } +} + +- (NSPopUpButton *)hotkey2PopupButton +{ + return _hotkey2PopupButton; +} + - (void)setRewindPopupButton:(NSPopUpButton *)rewindPopupButton { _rewindPopupButton = rewindPopupButton; @@ -457,6 +498,18 @@ - (IBAction)rumbleModeChanged:(id)sender [[NSNotificationCenter defaultCenter] postNotificationName:@"GBRumbleModeChanged" object:nil]; } +- (IBAction)hotkey1Changed:(id)sender +{ + [[NSUserDefaults standardUserDefaults] setObject:keyEquivalentString([sender selectedItem]) + forKey:@"GBJoypadHotkey1"]; +} + +- (IBAction)hotkey2Changed:(id)sender +{ + [[NSUserDefaults standardUserDefaults] setObject:keyEquivalentString([sender selectedItem]) + forKey:@"GBJoypadHotkey2"]; +} + - (IBAction)rewindLengthChanged:(id)sender { [[NSUserDefaults standardUserDefaults] setObject:@([sender selectedTag]) @@ -497,7 +550,7 @@ - (void) advanceConfigurationStateMachine if (joystick_configuration_state == GBUnderclock) { [self.configureJoypadButton setTitle:@"Press Button for Slo-Mo"]; // Full name is too long :< } - else if (joystick_configuration_state < GBButtonCount) { + else if (joystick_configuration_state < GBJoypadButtonCount) { [self.configureJoypadButton setTitle:[NSString stringWithFormat:@"Press Button for %@", GBButtonNames[joystick_configuration_state]]]; } else { @@ -519,7 +572,7 @@ - (void)controller:(JOYController *)controller buttonChangedState:(JOYButton *)b if (!button.isPressed) return; if (joystick_configuration_state == -1) return; - if (joystick_configuration_state == GBButtonCount) return; + if (joystick_configuration_state == GBJoypadButtonCount) return; if (!joystick_being_configured) { joystick_being_configured = controller.uniqueID; } @@ -561,6 +614,8 @@ - (void)controller:(JOYController *)controller buttonChangedState:(JOYButton *)b [GBTurbo] = JOYButtonUsageL1, [GBRewind] = JOYButtonUsageL2, [GBUnderclock] = JOYButtonUsageR1, + [GBHotkey1] = GBJoyKitHotkey1, + [GBHotkey2] = GBJoyKitHotkey2, }; if (joystick_configuration_state == GBUnderclock) { diff --git a/Cocoa/GBView.h b/Cocoa/GBView.h index 01481a7d1..a264d29a4 100644 --- a/Cocoa/GBView.h +++ b/Cocoa/GBView.h @@ -2,6 +2,7 @@ #include #import #import "GBOSDView.h" + @class Document; typedef enum { diff --git a/Cocoa/Info.plist b/Cocoa/Info.plist index 6a86fdbf3..97e197dcd 100644 --- a/Cocoa/Info.plist +++ b/Cocoa/Info.plist @@ -134,7 +134,7 @@ NSMainNibFile MainMenu NSPrincipalClass - NSApplication + GBApp UTExportedTypeDeclarations diff --git a/Cocoa/MainMenu.xib b/Cocoa/MainMenu.xib index 982817223..c1d4006f4 100644 --- a/Cocoa/MainMenu.xib +++ b/Cocoa/MainMenu.xib @@ -12,7 +12,7 @@ - + diff --git a/Cocoa/Preferences.xib b/Cocoa/Preferences.xib index 3078d569e..4c36146b7 100644 --- a/Cocoa/Preferences.xib +++ b/Cocoa/Preferences.xib @@ -6,7 +6,7 @@ - + @@ -85,6 +85,8 @@ + + @@ -612,11 +614,11 @@ - + - + @@ -625,7 +627,7 @@ - + @@ -683,7 +685,7 @@ - + @@ -692,7 +694,7 @@ - + @@ -708,11 +710,11 @@ - + - + @@ -721,7 +723,7 @@ - + @@ -801,6 +803,15 @@ + + + + + + + + + @@ -819,6 +830,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/Cocoa/UpdateWindow.xib b/Cocoa/UpdateWindow.xib index e34f8f219..0949af4fe 100644 --- a/Cocoa/UpdateWindow.xib +++ b/Cocoa/UpdateWindow.xib @@ -7,7 +7,7 @@ - + From 1fedb81ab7b6d40af2fb52e7d16c4996455a7097 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 22 Jul 2022 00:27:21 +0300 Subject: [PATCH 062/116] Emulate window pixel insertion glitch, fixes Star Trek - 25th Anniversary, closes #278 --- Core/display.c | 33 +++++++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/Core/display.c b/Core/display.c index 3ae50396a..f10313f59 100644 --- a/Core/display.c +++ b/Core/display.c @@ -1294,8 +1294,17 @@ static inline uint16_t mode3_batching_length(GB_gameboy_t *gb) if (gb->hdma_on) return 0; if (gb->stopped) return 0; if (GB_is_dma_active(gb)) return 0; - if (gb->wy_triggered && (gb->io_registers[GB_IO_LCDC] & 0x20) && (gb->io_registers[GB_IO_WX] < 8 || gb->io_registers[GB_IO_WX] == 166)) { - return 0; + if (gb->wy_triggered) { + if (gb->io_registers[GB_IO_LCDC] & 0x20) { + if ((gb->io_registers[GB_IO_WX] < 8 || gb->io_registers[GB_IO_WX] == 166)) { + return 0; + } + } + else { + if (gb->io_registers[GB_IO_WX] < 167 && !GB_is_cgb(gb)) { + return 0; + } + } } // No objects or window, timing is trivial @@ -1683,15 +1692,31 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) } } - /* TODO: What happens when WX=0? */ + /* TODO: What happens when WX=0? When the fifo is full? */ if (!GB_is_cgb(gb) && gb->wx_triggered && !gb->window_is_being_fetched && - gb->fetcher_state == 0 && gb->io_registers[GB_IO_WX] == (uint8_t) (gb->position_in_line + 7) ) { + gb->fetcher_state == 0 && gb->io_registers[GB_IO_WX] == (uint8_t) (gb->position_in_line + 7) && gb->bg_fifo.size == 8) { // Insert a pixel right at the FIFO's end gb->bg_fifo.read_end--; gb->bg_fifo.read_end &= GB_FIFO_LENGTH - 1; gb->bg_fifo.fifo[gb->bg_fifo.read_end] = (GB_fifo_item_t){0,}; + gb->bg_fifo.size++; gb->window_is_being_fetched = false; } + + /* TODO: WX=0 behaves wrong, but WX=0 behaves wrong regardless in DMG mode */ + if (!GB_is_cgb(gb) && gb->wy_triggered && !(gb->io_registers[GB_IO_LCDC] & 0x20) && gb->bg_fifo.size == 1) { + /* See https://github.com/LIJI32/SameBoy/issues/278 for documentation */ + uint8_t logical_position = gb->position_in_line + 8; + if (logical_position >= (uint8_t)(-8)) { + logical_position += 8; + } + if (gb->io_registers[GB_IO_WX] == logical_position) { + gb->bg_fifo.read_end--; + gb->bg_fifo.read_end &= GB_FIFO_LENGTH - 1; + gb->bg_fifo.fifo[gb->bg_fifo.read_end] = (GB_fifo_item_t){0,}; + gb->bg_fifo.size = 2; + } + } /* Handle objects */ /* When the object enabled bit is off, this proccess is skipped entirely on the DMG, but not on the CGB. From ee407f07f3db09fbe977af0ac6d4196796d7ad82 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 22 Jul 2022 13:51:56 +0300 Subject: [PATCH 063/116] Better describe softbreak --- Core/debugger.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/debugger.c b/Core/debugger.c index 22a3f7b43..4ff49f3e6 100644 --- a/Core/debugger.c +++ b/Core/debugger.c @@ -1995,7 +1995,7 @@ static const debugger_command_t commands[] = { .argument_completer = symbol_completer, .modifiers_completer = rw_completer }, {"unwatch", 3, unwatch, "Delete a watchpoint by its address, or all watchpoints", "[]", .argument_completer = symbol_completer}, - {"softbreak", 2, softbreak, "Enable or disable software breakpoints", "(on|off)", .argument_completer = on_off_completer}, + {"softbreak", 2, softbreak, "Enable or disable software breakpoints ('ld b, b' opcodes)", "(on|off)", .argument_completer = on_off_completer}, {"list", 1, list, "List all set breakpoints and watchpoints"}, {"ticks", 2, ticks, "Display the number of CPU ticks since the last time 'ticks' was" HELP_NEWLINE "used"}, From 537d0e1b25c9d4503ce1b7eb233f1a4df40dbbf4 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 22 Jul 2022 18:55:28 +0300 Subject: [PATCH 064/116] Fix for WX=1-6 --- Core/display.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/Core/display.c b/Core/display.c index f10313f59..de167392d 100644 --- a/Core/display.c +++ b/Core/display.c @@ -1707,9 +1707,6 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) if (!GB_is_cgb(gb) && gb->wy_triggered && !(gb->io_registers[GB_IO_LCDC] & 0x20) && gb->bg_fifo.size == 1) { /* See https://github.com/LIJI32/SameBoy/issues/278 for documentation */ uint8_t logical_position = gb->position_in_line + 8; - if (logical_position >= (uint8_t)(-8)) { - logical_position += 8; - } if (gb->io_registers[GB_IO_WX] == logical_position) { gb->bg_fifo.read_end--; gb->bg_fifo.read_end &= GB_FIFO_LENGTH - 1; From 029b7492b63a329c3792c1205b363f645c8b9050 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 22 Jul 2022 19:51:20 +0300 Subject: [PATCH 065/116] Fix WX=0 regression --- Core/display.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/display.c b/Core/display.c index de167392d..c7e88591c 100644 --- a/Core/display.c +++ b/Core/display.c @@ -1647,13 +1647,13 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) if (!gb->wx_triggered && gb->wy_triggered && (gb->io_registers[GB_IO_LCDC] & 0x20)) { bool should_activate_window = false; if (gb->io_registers[GB_IO_WX] == 0) { - static const uint8_t scx_to_wx0_comparisons[] = {-7, -9, -10, -11, -12, -13, -14, -14}; + static const uint8_t scx_to_wx0_comparisons[] = {-7, -1, -2, -3, -4, -5, -6, -6}; if (gb->position_in_line == scx_to_wx0_comparisons[gb->io_registers[GB_IO_SCX] & 7]) { should_activate_window = true; } } else if (gb->wx166_glitch) { - static const uint8_t scx_to_wx166_comparisons[] = {-8, -9, -10, -11, -12, -13, -14, -15}; + static const uint8_t scx_to_wx166_comparisons[] = {-16, -1, -2, -3, -4, -5, -6, -7}; if (gb->position_in_line == scx_to_wx166_comparisons[gb->io_registers[GB_IO_SCX] & 7]) { should_activate_window = true; } From f75f1704489c50a14a03a64008065c7712c9ea11 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 22 Jul 2022 19:51:38 +0300 Subject: [PATCH 066/116] Proper fix for WX=0 in the window pixel insertion glitch --- Core/display.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Core/display.c b/Core/display.c index c7e88591c..379b92125 100644 --- a/Core/display.c +++ b/Core/display.c @@ -1707,6 +1707,9 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) if (!GB_is_cgb(gb) && gb->wy_triggered && !(gb->io_registers[GB_IO_LCDC] & 0x20) && gb->bg_fifo.size == 1) { /* See https://github.com/LIJI32/SameBoy/issues/278 for documentation */ uint8_t logical_position = gb->position_in_line + 8; + if (logical_position > 167) { + logical_position = 0; + } if (gb->io_registers[GB_IO_WX] == logical_position) { gb->bg_fifo.read_end--; gb->bg_fifo.read_end &= GB_FIFO_LENGTH - 1; From f5f79f88ab8a3f0b2ce0d64877be71e8b8b7ef5e Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 23 Jul 2022 01:52:33 +0300 Subject: [PATCH 067/116] Insert the pixel at the correct position --- Core/display.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Core/display.c b/Core/display.c index 379b92125..fa2a9ba59 100644 --- a/Core/display.c +++ b/Core/display.c @@ -908,6 +908,21 @@ static void advance_fetcher_state_machine(GB_gameboy_t *gb, unsigned *cycles) } if (fifo_size(&gb->bg_fifo) > 0) break; + if (unlikely(gb->wy_triggered && !(gb->io_registers[GB_IO_LCDC] & 0x20) && !GB_is_cgb(gb))) { + /* See https://github.com/LIJI32/SameBoy/issues/278 for documentation */ + uint8_t logical_position = gb->position_in_line + 7; + if (logical_position > 167) { + logical_position = 0; + } + if (gb->io_registers[GB_IO_WX] == logical_position) { + gb->bg_fifo.read_end--; + gb->bg_fifo.read_end &= GB_FIFO_LENGTH - 1; + gb->bg_fifo.fifo[gb->bg_fifo.read_end] = (GB_fifo_item_t){0,}; + gb->bg_fifo.size = 1; + break; + } + } + fifo_push_bg_row(&gb->bg_fifo, gb->current_tile_data[0], gb->current_tile_data[1], gb->current_tile_attributes & 7, gb->current_tile_attributes & 0x80, gb->current_tile_attributes & 0x20); gb->fetcher_state = 0; @@ -1702,21 +1717,6 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) gb->bg_fifo.size++; gb->window_is_being_fetched = false; } - - /* TODO: WX=0 behaves wrong, but WX=0 behaves wrong regardless in DMG mode */ - if (!GB_is_cgb(gb) && gb->wy_triggered && !(gb->io_registers[GB_IO_LCDC] & 0x20) && gb->bg_fifo.size == 1) { - /* See https://github.com/LIJI32/SameBoy/issues/278 for documentation */ - uint8_t logical_position = gb->position_in_line + 8; - if (logical_position > 167) { - logical_position = 0; - } - if (gb->io_registers[GB_IO_WX] == logical_position) { - gb->bg_fifo.read_end--; - gb->bg_fifo.read_end &= GB_FIFO_LENGTH - 1; - gb->bg_fifo.fifo[gb->bg_fifo.read_end] = (GB_fifo_item_t){0,}; - gb->bg_fifo.size = 2; - } - } /* Handle objects */ /* When the object enabled bit is off, this proccess is skipped entirely on the DMG, but not on the CGB. From bb8f973fb4002864979931c019af258fa3178e8c Mon Sep 17 00:00:00 2001 From: CasualPokePlayer <50538166+CasualPokePlayer@users.noreply.github.com> Date: Fri, 22 Jul 2022 20:15:00 -0700 Subject: [PATCH 068/116] Implement GB Camera timing (when no webcam is connected), misc camera accuracy improvements, use GB_random instead of rand for noise_seed --- Core/camera.c | 35 +++++++++++++++++++++++++---------- Core/gb.h | 2 ++ Core/memory.c | 18 +++++++++++++++--- Core/sm83_cpu.c | 3 +++ Core/timing.c | 24 ++++++++++++++++++++++++ 5 files changed, 69 insertions(+), 13 deletions(-) diff --git a/Core/camera.c b/Core/camera.c index 7751f18fe..22ecf5de0 100644 --- a/Core/camera.c +++ b/Core/camera.c @@ -3,7 +3,7 @@ static uint32_t noise_seed = 0; /* This is not a complete emulation of the camera chip. Only the features used by the Game Boy Camera ROMs are supported. - We also do not emulate the timing of the real cart, as it might be actually faster than the webcam. */ + We also do not emulate the timing of the real cart when a webcam is used, as it might be actually faster than the webcam. */ static uint8_t generate_noise(uint8_t x, uint8_t y) { @@ -55,10 +55,6 @@ static long get_processed_color(GB_gameboy_t *gb, uint8_t x, uint8_t y) uint8_t GB_camera_read_image(GB_gameboy_t *gb, uint16_t addr) { - if (gb->camera_registers[GB_CAMERA_SHOOT_AND_1D_FLAGS] & 1) { - /* Forbid reading the image while the camera is busy. */ - return 0xFF; - } uint8_t tile_x = addr / 0x10 % 0x10; uint8_t tile_y = addr / 0x10 / 0x10; @@ -112,6 +108,12 @@ void GB_set_camera_get_pixel_callback(GB_gameboy_t *gb, GB_camera_get_pixel_call void GB_set_camera_update_request_callback(GB_gameboy_t *gb, GB_camera_update_request_callback_t callback) { + if (gb->camera_countdown > 0 && callback) { + GB_log(gb, "Camera update request callback set while camera was proccessing, clearing camera countdown.\n"); + gb->camera_countdown = 0; + GB_camera_updated(gb); + } + gb->camera_update_request_callback = callback; } @@ -125,12 +127,25 @@ void GB_camera_write_register(GB_gameboy_t *gb, uint16_t addr, uint8_t value) addr &= 0x7F; if (addr == GB_CAMERA_SHOOT_AND_1D_FLAGS) { value &= 0x7; - noise_seed = rand(); - if ((value & 1) && !(gb->camera_registers[GB_CAMERA_SHOOT_AND_1D_FLAGS] & 1) && gb->camera_update_request_callback) { - /* If no callback is set, ignore the write as if the camera is instantly done */ - gb->camera_registers[GB_CAMERA_SHOOT_AND_1D_FLAGS] |= 1; - gb->camera_update_request_callback(gb); + noise_seed = GB_random(); + if ((value & 1) && !(gb->camera_registers[GB_CAMERA_SHOOT_AND_1D_FLAGS] & 1)) { + if (gb->camera_update_request_callback) { + gb->camera_update_request_callback(gb); + } + else { + /* If no callback is set, wait the amount of time the real camera would take before clearing the busy bit */ + uint16_t exposure = (gb->camera_registers[GB_CAMERA_EXPOSURE_HIGH] << 8) | gb->camera_registers[GB_CAMERA_EXPOSURE_LOW]; + gb->camera_countdown = 129792 + ((gb->camera_registers[GB_CAMERA_GAIN_AND_EDGE_ENHACEMENT_FLAGS] & 0x80)? 0 : 2048) + (exposure * 64) + (gb->camera_alignment & 4); + } } + + if (!(value & 1) && (gb->camera_registers[GB_CAMERA_SHOOT_AND_1D_FLAGS] & 1)) { + /* We don't support cancelling a camera shoot */ + GB_log(gb, "ROM attempted to cancel camera shoot, which is currently not supported. The camera shoot will not be cancelled.\n"); + value |= 1; + } + + gb->camera_registers[GB_CAMERA_SHOOT_AND_1D_FLAGS] = value; } else { if (addr >= 0x36) { diff --git a/Core/gb.h b/Core/gb.h index 1621149fa..6c84eef31 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -529,6 +529,8 @@ struct GB_gameboy_internal_s { }; bool camera_registers_mapped; uint8_t camera_registers[0x36]; + uint8_t camera_alignment; + int32_t camera_countdown; uint8_t rumble_strength; bool cart_ir; ) diff --git a/Core/memory.c b/Core/memory.c index 18f8cdf9d..cc472874e 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -414,8 +414,15 @@ static uint8_t read_mbc_ram(GB_gameboy_t *gb, uint16_t addr) return 0xFF; } - if (gb->cartridge_type->mbc_type == GB_CAMERA && gb->mbc_ram_bank == 0 && addr >= 0xA100 && addr < 0xAF00) { - return GB_camera_read_image(gb, addr - 0xA100); + if (gb->cartridge_type->mbc_type == GB_CAMERA) { + /* Forbid reading RAM while the camera is busy. */ + if (gb->camera_registers[GB_CAMERA_SHOOT_AND_1D_FLAGS] & 1) { + return 0; + } + + if (gb->mbc_ram_bank == 0 && addr >= 0xA100 && addr < 0xAF00) { + return GB_camera_read_image(gb, addr - 0xA100); + } } uint8_t effective_bank = gb->mbc_ram_bank; @@ -1220,7 +1227,12 @@ static void write_mbc_ram(GB_gameboy_t *gb, uint16_t addr, uint8_t value) if (!gb->mbc_ram || !gb->mbc_ram_size) { return; } - + + if (gb->cartridge_type->mbc_type == GB_CAMERA && (gb->camera_registers[GB_CAMERA_SHOOT_AND_1D_FLAGS] & 1)) { + /* Forbid writing to RAM while the camera is busy. */ + return; + } + uint8_t effective_bank = gb->mbc_ram_bank; if (gb->cartridge_type->mbc_type == GB_MBC3 && !gb->is_mbc30) { if (gb->cartridge_type->has_rtc) { diff --git a/Core/sm83_cpu.c b/Core/sm83_cpu.c index 7fad1ab91..a56fbdeda 100644 --- a/Core/sm83_cpu.c +++ b/Core/sm83_cpu.c @@ -416,6 +416,9 @@ static void stop(GB_gameboy_t *gb, uint8_t opcode) if (gb->apu.global_enable && gb->cgb_double_speed) { GB_log(gb, "ROM triggered an APU odd mode, which is currently not tested.\n"); } + if (gb->cartridge_type->mbc_type == GB_CAMERA && (gb->camera_registers[GB_CAMERA_SHOOT_AND_1D_FLAGS] & 1) && !gb->cgb_double_speed) { + GB_log(gb, "ROM entered double speed mode with a camera cartridge, this could damage a real cartridge's camera.\n"); + } if (gb->cgb_double_speed) { gb->cgb_double_speed = false; diff --git a/Core/timing.c b/Core/timing.c index 41c675298..91191cf07 100644 --- a/Core/timing.c +++ b/Core/timing.c @@ -365,6 +365,29 @@ static void rtc_run(GB_gameboy_t *gb, uint8_t cycles) } } +static void camera_run(GB_gameboy_t *gb, uint8_t cycles) +{ + /* Do we have a camera? */ + if (likely(gb->cartridge_type->mbc_type != GB_CAMERA)) return; + + /* The camera mapper uses the PHI pin to clock itself */ + + /* PHI does not run in halt nor stop mode */ + if (unlikely(gb->halted || gb->stopped)) return; + + /* Only every other PHI is used (as the camera wants a 512KiHz clock) */ + gb->camera_alignment += cycles; + + /* Is the camera processing an image? */ + if (likely(gb->camera_countdown == 0)) return; + + gb->camera_countdown -= cycles; + if (gb->camera_countdown <= 0) { + gb->camera_countdown = 0; + GB_camera_updated(gb); + } +} + void GB_advance_cycles(GB_gameboy_t *gb, uint8_t cycles) { @@ -389,6 +412,7 @@ void GB_advance_cycles(GB_gameboy_t *gb, uint8_t cycles) gb->dma_cycles = cycles; timers_run(gb, cycles); + camera_run(gb, cycles); if (unlikely(gb->speed_switch_halt_countdown)) { gb->speed_switch_halt_countdown -= cycles; From 93c611e9bc383a5b56d7d9d8ef0b7f55fa434407 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 23 Jul 2022 13:12:48 +0300 Subject: [PATCH 069/116] Values must be added to the end of a GB_SECTION for save state compatibility --- Core/gb.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Core/gb.h b/Core/gb.h index 6c84eef31..49fe671c2 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -529,10 +529,10 @@ struct GB_gameboy_internal_s { }; bool camera_registers_mapped; uint8_t camera_registers[0x36]; - uint8_t camera_alignment; - int32_t camera_countdown; uint8_t rumble_strength; bool cart_ir; + uint8_t camera_alignment; + int32_t camera_countdown; ) /* HRAM and HW Registers */ From 6a8743e13a7be4a64d1b98e126f26a8adc49ef96 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 23 Jul 2022 13:24:10 +0300 Subject: [PATCH 070/116] Fix Cocoa being broken outside of a debug environment --- Cocoa/MainMenu.xib | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Cocoa/MainMenu.xib b/Cocoa/MainMenu.xib index c1d4006f4..386d2e27e 100644 --- a/Cocoa/MainMenu.xib +++ b/Cocoa/MainMenu.xib @@ -7,12 +7,11 @@ - + - - + @@ -33,7 +32,7 @@ - + @@ -415,11 +414,11 @@ - + - + @@ -444,7 +443,7 @@ - + From 8e125b31f65a59310cb7a92348f88a38071b5ca1 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 23 Jul 2022 14:21:31 +0300 Subject: [PATCH 071/116] macOS compatibility, stability --- Makefile | 5 +++++ SDL/audio/openal.c | 48 +++++++++++++++++++++++++++++----------------- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 894ac500c..05f72d32d 100644 --- a/Makefile +++ b/Makefile @@ -28,6 +28,7 @@ PB12_COMPRESS := build/pb12$(EXESUFFIX) ifeq ($(PLATFORM),Darwin) DEFAULT := cocoa +ENABLE_OPENAL ?= 1 else DEFAULT := sdl endif @@ -138,7 +139,11 @@ SDL_LDFLAGS := $(shell sdl2-config --libs) -lpthread # so we must do this manually ifeq ($(ENABLE_OPENAL),1) SDL_CFLAGS += -DENABLE_OPENAL +ifeq ($(PLATFORM),Darwin) +SDL_LDFLAGS += -framework OpenAL +else SDL_LDFLAGS += -lopenal +endif SDL_AUDIO_DRIVERS += openal endif else diff --git a/SDL/audio/openal.c b/SDL/audio/openal.c index 7ee6afd57..ffdb09aaa 100644 --- a/SDL/audio/openal.c +++ b/SDL/audio/openal.c @@ -1,6 +1,12 @@ #include "audio.h" +#if defined(__APPLE__) +#include +#include + +#else #include #include +#endif #include #include #include @@ -14,6 +20,7 @@ static ALuint al_source = 0; static ALCint sample_rate = 0; static unsigned buffer_size = 0; static unsigned buffer_pos = 0; +static bool is_paused = false; #define AL_ERR_STRINGIFY(x) #x #define AL_ERR_TOSTRING(x) AL_ERR_STRINGIFY(x) @@ -21,9 +28,10 @@ static unsigned buffer_pos = 0; // Check if the previous OpenAL call returned an error. // If an error occurred a message will be logged to stderr. -static bool check_al_error(const char *user_msg, const char *line) { +static bool check_al_error(const char *user_msg, const char *line) +{ ALCenum error = alGetError(); - char *description; + const char *description = ""; switch (error) { case AL_NO_ERROR: @@ -55,7 +63,8 @@ static bool check_al_error(const char *user_msg, const char *line) { return true; } -static void _audio_deinit(void) { +static void _audio_deinit(void) +{ // Stop the source (this should mark all queued buffers as processed) alSourceStop(al_source); @@ -72,10 +81,17 @@ static void _audio_deinit(void) { } alDeleteSources(1, &al_source); - alcDestroyContext(al_context); - alcCloseDevice(al_device); + if (al_context) { + alcDestroyContext(al_context); + al_context = NULL; + } + + if (al_device) { + alcCloseDevice(al_device); + al_device = NULL; + } - if (audio_buffer != NULL) { + if (audio_buffer) { free(audio_buffer); audio_buffer = NULL; } @@ -86,7 +102,6 @@ static void free_processed_buffers(void) ALint processed; alGetSourcei(al_source, AL_BUFFERS_PROCESSED, &processed); if (AL_ERROR("Failed to query number of processed buffers")) { - _audio_deinit(); return; } @@ -95,13 +110,11 @@ static void free_processed_buffers(void) alSourceUnqueueBuffers(al_source, 1, &buffer); if (AL_ERROR("Failed to unqueue buffer")) { - _audio_deinit(); return; } alDeleteBuffers(1, &buffer); if (AL_ERROR("Failed to delete buffer")) { - _audio_deinit(); return; } } @@ -112,7 +125,6 @@ static bool _audio_is_playing(void) ALenum state; alGetSourcei(al_source, AL_SOURCE_STATE, &state); if (AL_ERROR("Failed to query source state")) { - _audio_deinit(); return false; } @@ -121,16 +133,13 @@ static bool _audio_is_playing(void) static void _audio_set_paused(bool paused) { + is_paused = paused; if (paused) { alSourcePause(al_source); } else { alSourcePlay(al_source); } - - if (AL_ERROR(NULL)) { - _audio_deinit(); - } } static void _audio_clear_queue(void) @@ -140,7 +149,6 @@ static void _audio_clear_queue(void) // Stopping a source clears its queue alSourceStop(al_source); if (AL_ERROR(NULL)) { - _audio_deinit(); return; } @@ -178,6 +186,7 @@ static size_t _audio_get_queue_length(void) static void _audio_queue_sample(GB_sample_t *sample) { + if (is_paused) return; audio_buffer[buffer_pos++] = *sample; if (buffer_pos == buffer_size) { @@ -186,17 +195,17 @@ static void _audio_queue_sample(GB_sample_t *sample) ALuint al_buffer; alGenBuffers(1, &al_buffer); if (AL_ERROR("Failed to create audio buffer")) { - return _audio_deinit(); + return; } alBufferData(al_buffer, AL_FORMAT_STEREO16, audio_buffer, buffer_size * sizeof(GB_sample_t), sample_rate); if (AL_ERROR("Failed to buffer data")) { - return _audio_deinit(); + return; } alSourceQueueBuffers(al_source, 1, &al_buffer); if (AL_ERROR("Failed to queue buffer")) { - return _audio_deinit(); + return; } // In case of an audio underrun, the source might @@ -240,6 +249,9 @@ static bool _audio_init(void) _audio_deinit(); return false; } + if (sample_rate == 0) { + sample_rate = 48000; + } // Allocate our working buffer buffer_size = (sample_rate * BUFFER_LEN_MS) / 1000; From 04afa645972dd708342bd7c70ebeefa2b4ea4f25 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 23 Jul 2022 14:24:28 +0300 Subject: [PATCH 072/116] Can't be NULL --- SDL/audio.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/SDL/audio.c b/SDL/audio.c index 6a695fed3..f64c3114b 100644 --- a/SDL/audio.c +++ b/SDL/audio.c @@ -40,9 +40,7 @@ bool GB_audio_init(void) for (unsigned i = 0; i < sizeof(drivers) / sizeof(drivers[0]); i++) { driver = drivers[i]; if (driver->audio_init()) { - if (driver->audio_deinit) { - atexit(driver->audio_deinit); - } + atexit(driver->audio_deinit); return true; } } From 0e1d6545e98f28919ea8b826d55ae09630b67be0 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 23 Jul 2022 14:38:55 +0300 Subject: [PATCH 073/116] Various improvements and fixes --- SDL/audio/openal.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/SDL/audio/openal.c b/SDL/audio/openal.c index ffdb09aaa..fdcaeadea 100644 --- a/SDL/audio/openal.c +++ b/SDL/audio/openal.c @@ -114,9 +114,16 @@ static void free_processed_buffers(void) } alDeleteBuffers(1, &buffer); + /* Due to a limitation in Apple's OpenAL implementation, this function + can fail once in a few times. If it does, ignore the warning, and let + this buffer be freed in a later call to free_processed_buffers. */ +#if defined(__APPLE__) + if (alGetError()) return; +#else if (AL_ERROR("Failed to delete buffer")) { return; } +#endif } } @@ -181,7 +188,7 @@ static size_t _audio_get_queue_length(void) processed = 0; } - return (buffers - processed) * buffer_size; + return (buffers - processed) * buffer_size + buffer_pos; } static void _audio_queue_sample(GB_sample_t *sample) From 33ba353c3a6711ea0d5b06225fbd571c59e9e453 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 23 Jul 2022 19:29:23 +0300 Subject: [PATCH 074/116] Emulate the JOYP mode switching delay on the DMG --- Core/gb.h | 2 ++ Core/memory.c | 12 ++++++++++++ Core/timing.c | 10 ++++++++++ 3 files changed, 24 insertions(+) diff --git a/Core/gb.h b/Core/gb.h index 536e6fd71..8ec5e1cae 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -559,6 +559,8 @@ struct GB_gameboy_internal_s { bool lcd_disabled_outside_of_vblank; int32_t allowed_pending_cycles; uint16_t mode3_batching_length; + uint8_t joyp_switching_delay; + uint8_t joyp_switch_value; ) /* APU */ diff --git a/Core/memory.c b/Core/memory.c index dd8e88bda..6bbc949ea 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -627,6 +627,10 @@ static uint8_t read_high_memory(GB_gameboy_t *gb, uint16_t addr) case GB_IO_JOYP: gb->joyp_accessed = true; GB_timing_sync(gb); + if (unlikely(gb->joyp_switching_delay)) { + return (gb->io_registers[addr & 0xFF] & ~0x30) | (gb->joyp_switch_value & 0x30); + } + return gb->io_registers[addr & 0xFF]; case GB_IO_TMA: case GB_IO_LCDC: case GB_IO_SCY: @@ -1497,6 +1501,14 @@ static void write_high_memory(GB_gameboy_t *gb, uint16_t addr, uint8_t value) GB_update_joyp(gb); } else if ((gb->io_registers[GB_IO_JOYP] & 0x30) != (value & 0x30)) { + if (gb->model < GB_MODEL_SGB) { // DMG only + if (gb->joyp_switching_delay) { + gb->io_registers[GB_IO_JOYP] = (gb->joyp_switch_value & 0xF0) | (gb->io_registers[GB_IO_JOYP] & 0x0F); + } + gb->joyp_switch_value = value; + gb->joyp_switching_delay = 24; + value &= gb->io_registers[GB_IO_JOYP]; + } GB_sgb_write(gb, value); gb->io_registers[GB_IO_JOYP] = (value & 0xF0) | (gb->io_registers[GB_IO_JOYP] & 0x0F); GB_update_joyp(gb); diff --git a/Core/timing.c b/Core/timing.c index 91191cf07..1cd04be7e 100644 --- a/Core/timing.c +++ b/Core/timing.c @@ -449,6 +449,16 @@ void GB_advance_cycles(GB_gameboy_t *gb, uint8_t cycles) gb->rumble_on_cycles += gb->rumble_strength & 3; gb->rumble_off_cycles += (gb->rumble_strength & 3) ^ 3; + if (gb->joyp_switching_delay) { + if (gb->joyp_switching_delay > cycles) { + gb->joyp_switching_delay -= cycles; + } + else { + gb->joyp_switching_delay = 0; + gb->io_registers[GB_IO_JOYP] = (gb->joyp_switch_value & 0xF0) | (gb->io_registers[GB_IO_JOYP] & 0x0F); + GB_update_joyp(gb); + } + } GB_apu_run(gb, false); GB_display_run(gb, cycles, false); From a524cc310534bbb81d5041f33e9c806a4344ebc3 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 23 Jul 2022 21:46:54 +0300 Subject: [PATCH 075/116] Emulate key bouncing --- Core/gb.h | 2 + Core/joypad.c | 111 +++++++++++++++++++++++++++++++++++++++++--------- Core/joypad.h | 3 +- Core/timing.c | 13 +----- Tester/main.c | 1 + 5 files changed, 98 insertions(+), 32 deletions(-) diff --git a/Core/gb.h b/Core/gb.h index 8ec5e1cae..c5404a5e4 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -561,6 +561,7 @@ struct GB_gameboy_internal_s { uint16_t mode3_batching_length; uint8_t joyp_switching_delay; uint8_t joyp_switch_value; + uint16_t key_bounce_timing[GB_KEY_MAX]; ) /* APU */ @@ -687,6 +688,7 @@ struct GB_gameboy_internal_s { bool background_disabled; bool joyp_accessed; bool illegal_inputs_allowed; + bool no_bouncing_emulation; /* Timing */ uint64_t last_sync; diff --git a/Core/joypad.c b/Core/joypad.c index df3d201a4..8ae128427 100644 --- a/Core/joypad.c +++ b/Core/joypad.c @@ -1,6 +1,40 @@ #include "gb.h" #include +static inline bool should_bounce(GB_gameboy_t *gb) +{ + // Bouncing is super rare on an AGS, so don't emulate it on GB_MODEL_AGB_B (when addeed) + return !GB_is_sgb(gb) && !gb-> no_bouncing_emulation /*&& gb->model != GB_MODEL_AGB_B*/; +} + +static inline uint16_t bounce_for_key(GB_gameboy_t *gb, GB_key_t key) +{ + if (gb->model > GB_MODEL_CGB_E) { + // AGB are less bouncy + return 0xC00; + } + if (key == GB_KEY_START || key == GB_KEY_SELECT) { + return 0x2000; + } + return 0x1000; +} + +static inline bool get_input(GB_gameboy_t *gb, uint8_t player, GB_key_t key) +{ + if (player != 0) { + return gb->keys[player][key]; + } + bool ret = gb->keys[player][key]; + + if (likely(gb->key_bounce_timing[key] == 0)) return ret; + uint16_t semi_random = ((((key << 5) + gb->div_counter) * 17) ^ ((gb->apu.apu_cycles + gb->display_cycles) * 13)); + semi_random >>= 3; + if (semi_random < gb->key_bounce_timing[key]) { + ret ^= true; + } + return ret; +} + void GB_update_joyp(GB_gameboy_t *gb) { if (gb->model & GB_MODEL_NO_SFC_BIT) return; @@ -27,7 +61,7 @@ void GB_update_joyp(GB_gameboy_t *gb) case 2: /* Direction keys */ for (uint8_t i = 0; i < 4; i++) { - gb->io_registers[GB_IO_JOYP] |= (!gb->keys[current_player][i]) << i; + gb->io_registers[GB_IO_JOYP] |= (!get_input(gb, current_player, i)) << i; } /* Forbid pressing two opposing keys, this breaks a lot of games; even if it's somewhat possible. */ if (likely(!gb->illegal_inputs_allowed)) { @@ -43,22 +77,21 @@ void GB_update_joyp(GB_gameboy_t *gb) case 1: /* Other keys */ for (uint8_t i = 0; i < 4; i++) { - gb->io_registers[GB_IO_JOYP] |= (!gb->keys[current_player][i + 4]) << i; + gb->io_registers[GB_IO_JOYP] |= (!get_input(gb, current_player, i + 4)) << i; } break; case 0: for (uint8_t i = 0; i < 4; i++) { - gb->io_registers[GB_IO_JOYP] |= (!(gb->keys[current_player][i] || gb->keys[current_player][i + 4])) << i; + gb->io_registers[GB_IO_JOYP] |= (!(get_input(gb, current_player, i) || get_input(gb, current_player, i + 4))) << i; } break; nodefault; } - /* Todo: This assumes the keys *always* bounce, which is incorrect when emulating an SGB */ - if (previous_state != (gb->io_registers[GB_IO_JOYP] & 0xF)) { - /* The joypad interrupt DOES occur on CGB (Tested on CGB-E), unlike what some documents say. */ + // TODO: Implement the lame anti-debouncing mechanism as seen on the DMG schematics + if (previous_state & ~(gb->io_registers[GB_IO_JOYP] & 0xF)) { if (!(gb->io_registers[GB_IO_IF] & 0x10)) { gb->joyp_accessed = true; gb->io_registers[GB_IO_IF] |= 0x10; @@ -86,6 +119,9 @@ void GB_icd_set_joyp(GB_gameboy_t *gb, uint8_t value) void GB_set_key_state(GB_gameboy_t *gb, GB_key_t index, bool pressed) { assert(index >= 0 && index < GB_KEY_MAX); + if (should_bounce(gb) && pressed != gb->keys[0][index]) { + gb->key_bounce_timing[index] = bounce_for_key(gb, index); + } gb->keys[0][index] = pressed; GB_update_joyp(gb); } @@ -94,20 +130,21 @@ void GB_set_key_state_for_player(GB_gameboy_t *gb, GB_key_t index, unsigned play { assert(index >= 0 && index < GB_KEY_MAX); assert(player < 4); + if (should_bounce(gb) && pressed != gb->keys[player][index]) { + gb->key_bounce_timing[index] = bounce_for_key(gb, index); + } gb->keys[player][index] = pressed; GB_update_joyp(gb); } void GB_set_key_mask(GB_gameboy_t *gb, GB_key_mask_t mask) { - memset(gb->keys, 0, sizeof(gb->keys)); - bool *key = &gb->keys[0][0]; - while (mask) { - if (mask & 1) { - *key = true; + for (unsigned i = 0; i < GB_KEY_MAX; i++) { + bool pressed = mask & (1 << i); + if (should_bounce(gb) && pressed != gb->keys[0][i]) { + gb->key_bounce_timing[i] = bounce_for_key(gb, i); } - mask >>= 1; - key++; + gb->keys[0][i] = pressed; } GB_update_joyp(gb); @@ -115,19 +152,48 @@ void GB_set_key_mask(GB_gameboy_t *gb, GB_key_mask_t mask) void GB_set_key_mask_for_player(GB_gameboy_t *gb, GB_key_mask_t mask, unsigned player) { - memset(gb->keys[player], 0, sizeof(gb->keys[player])); - bool *key = gb->keys[player]; - while (mask) { - if (mask & 1) { - *key = true; + for (unsigned i = 0; i < GB_KEY_MAX; i++) { + bool pressed = mask & (1 << i); + if (should_bounce(gb) && pressed != gb->keys[player][i]) { + gb->key_bounce_timing[i] = bounce_for_key(gb, i); } - mask >>= 1; - key++; + gb->keys[player][i] = pressed; } GB_update_joyp(gb); } +void GB_joypad_run(GB_gameboy_t *gb, unsigned cycles) +{ + bool should_update_joyp = false; + if (gb->joyp_switching_delay) { + if (gb->joyp_switching_delay > cycles) { + gb->joyp_switching_delay -= cycles; + } + else { + gb->joyp_switching_delay = 0; + gb->io_registers[GB_IO_JOYP] = (gb->joyp_switch_value & 0xF0) | (gb->io_registers[GB_IO_JOYP] & 0x0F); + should_update_joyp = true; + } + } + + for (unsigned i = 0; i < GB_KEY_MAX; i++) { + if (gb->key_bounce_timing[i]) { + should_update_joyp = true; + if (gb->key_bounce_timing[i] > cycles) { + gb->key_bounce_timing[i] -= cycles; + } + else { + gb->key_bounce_timing[i] = 0; + } + } + } + + if (should_update_joyp) { + GB_update_joyp(gb); + } +} + bool GB_get_joyp_accessed(GB_gameboy_t *gb) { return gb->joyp_accessed; @@ -142,3 +208,8 @@ void GB_set_allow_illegal_inputs(GB_gameboy_t *gb, bool allow) { gb->illegal_inputs_allowed = allow; } + +void GB_emulate_joypad_bouncing(GB_gameboy_t *gb, bool emulate) +{ + gb->no_bouncing_emulation = !emulate; +} diff --git a/Core/joypad.h b/Core/joypad.h index 21574e0f0..3dee39360 100644 --- a/Core/joypad.h +++ b/Core/joypad.h @@ -37,9 +37,10 @@ void GB_icd_set_joyp(GB_gameboy_t *gb, uint8_t value); bool GB_get_joyp_accessed(GB_gameboy_t *gb); void GB_clear_joyp_accessed(GB_gameboy_t *gb); void GB_set_allow_illegal_inputs(GB_gameboy_t *gb, bool allow); - +void GB_emulate_joypad_bouncing(GB_gameboy_t *gb, bool emulate); #ifdef GB_INTERNAL internal void GB_update_joyp(GB_gameboy_t *gb); +internal void GB_joypad_run(GB_gameboy_t *gb, unsigned cycles); #endif #endif /* joypad_h */ diff --git a/Core/timing.c b/Core/timing.c index 1cd04be7e..67cd996fe 100644 --- a/Core/timing.c +++ b/Core/timing.c @@ -449,17 +449,8 @@ void GB_advance_cycles(GB_gameboy_t *gb, uint8_t cycles) gb->rumble_on_cycles += gb->rumble_strength & 3; gb->rumble_off_cycles += (gb->rumble_strength & 3) ^ 3; - if (gb->joyp_switching_delay) { - if (gb->joyp_switching_delay > cycles) { - gb->joyp_switching_delay -= cycles; - } - else { - gb->joyp_switching_delay = 0; - gb->io_registers[GB_IO_JOYP] = (gb->joyp_switch_value & 0xF0) | (gb->io_registers[GB_IO_JOYP] & 0x0F); - GB_update_joyp(gb); - } - } - + + GB_joypad_run(gb, cycles); GB_apu_run(gb, false); GB_display_run(gb, cycles, false); if (unlikely(!gb->stopped)) { // TODO: Verify what happens in STOP mode diff --git a/Tester/main.c b/Tester/main.c index d4fb30509..e86fbbff1 100755 --- a/Tester/main.c +++ b/Tester/main.c @@ -432,6 +432,7 @@ int main(int argc, char **argv) GB_set_async_input_callback(&gb, async_input_callback); GB_set_color_correction_mode(&gb, GB_COLOR_CORRECTION_EMULATE_HARDWARE); GB_set_rtc_mode(&gb, GB_RTC_MODE_ACCURATE); + GB_emulate_joypad_bouncing(&gb, false); // Adds too much noise if (GB_load_rom(&gb, filename)) { perror("Failed to load ROM"); From 0f31c7a1ba828f125fab1f5775964376c6e787bc Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 02:35:46 +0300 Subject: [PATCH 076/116] Lag minimization bounce optimization --- Core/joypad.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Core/joypad.c b/Core/joypad.c index 8ae128427..b4e3cf971 100644 --- a/Core/joypad.c +++ b/Core/joypad.c @@ -11,12 +11,12 @@ static inline uint16_t bounce_for_key(GB_gameboy_t *gb, GB_key_t key) { if (gb->model > GB_MODEL_CGB_E) { // AGB are less bouncy - return 0xC00; + return 0xBFF; } if (key == GB_KEY_START || key == GB_KEY_SELECT) { - return 0x2000; + return 0x1FFF; } - return 0x1000; + return 0xFFF; } static inline bool get_input(GB_gameboy_t *gb, uint8_t player, GB_key_t key) @@ -27,6 +27,7 @@ static inline bool get_input(GB_gameboy_t *gb, uint8_t player, GB_key_t key) bool ret = gb->keys[player][key]; if (likely(gb->key_bounce_timing[key] == 0)) return ret; + if (likely((gb->key_bounce_timing[key] & 0x3FF) > 0x300)) return ret; uint16_t semi_random = ((((key << 5) + gb->div_counter) * 17) ^ ((gb->apu.apu_cycles + gb->display_cycles) * 13)); semi_random >>= 3; if (semi_random < gb->key_bounce_timing[key]) { From 4b03cc05c1ab5b94cebf50b90bb8b187875b91b6 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 13:16:19 +0300 Subject: [PATCH 077/116] Optimization to joypad code --- Core/gb.h | 1 + Core/joypad.c | 7 +++++++ Core/memory.c | 1 + 3 files changed, 9 insertions(+) diff --git a/Core/gb.h b/Core/gb.h index c5404a5e4..63f02fe4a 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -689,6 +689,7 @@ struct GB_gameboy_internal_s { bool joyp_accessed; bool illegal_inputs_allowed; bool no_bouncing_emulation; + bool joypad_is_stable; /* Timing */ uint64_t last_sync; diff --git a/Core/joypad.c b/Core/joypad.c index b4e3cf971..2f47c6085 100644 --- a/Core/joypad.c +++ b/Core/joypad.c @@ -132,6 +132,7 @@ void GB_set_key_state_for_player(GB_gameboy_t *gb, GB_key_t index, unsigned play assert(index >= 0 && index < GB_KEY_MAX); assert(player < 4); if (should_bounce(gb) && pressed != gb->keys[player][index]) { + gb->joypad_is_stable = false; gb->key_bounce_timing[index] = bounce_for_key(gb, index); } gb->keys[player][index] = pressed; @@ -143,6 +144,7 @@ void GB_set_key_mask(GB_gameboy_t *gb, GB_key_mask_t mask) for (unsigned i = 0; i < GB_KEY_MAX; i++) { bool pressed = mask & (1 << i); if (should_bounce(gb) && pressed != gb->keys[0][i]) { + gb->joypad_is_stable = false; gb->key_bounce_timing[i] = bounce_for_key(gb, i); } gb->keys[0][i] = pressed; @@ -156,6 +158,7 @@ void GB_set_key_mask_for_player(GB_gameboy_t *gb, GB_key_mask_t mask, unsigned p for (unsigned i = 0; i < GB_KEY_MAX; i++) { bool pressed = mask & (1 << i); if (should_bounce(gb) && pressed != gb->keys[player][i]) { + gb->joypad_is_stable = false; gb->key_bounce_timing[i] = bounce_for_key(gb, i); } gb->keys[player][i] = pressed; @@ -166,8 +169,11 @@ void GB_set_key_mask_for_player(GB_gameboy_t *gb, GB_key_mask_t mask, unsigned p void GB_joypad_run(GB_gameboy_t *gb, unsigned cycles) { + if (gb->joypad_is_stable) return; bool should_update_joyp = false; + gb->joypad_is_stable = true; if (gb->joyp_switching_delay) { + gb->joypad_is_stable = false; if (gb->joyp_switching_delay > cycles) { gb->joyp_switching_delay -= cycles; } @@ -180,6 +186,7 @@ void GB_joypad_run(GB_gameboy_t *gb, unsigned cycles) for (unsigned i = 0; i < GB_KEY_MAX; i++) { if (gb->key_bounce_timing[i]) { + gb->joypad_is_stable = false; should_update_joyp = true; if (gb->key_bounce_timing[i] > cycles) { gb->key_bounce_timing[i] -= cycles; diff --git a/Core/memory.c b/Core/memory.c index 6bbc949ea..8c454cf16 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -1508,6 +1508,7 @@ static void write_high_memory(GB_gameboy_t *gb, uint16_t addr, uint8_t value) gb->joyp_switch_value = value; gb->joyp_switching_delay = 24; value &= gb->io_registers[GB_IO_JOYP]; + gb->joypad_is_stable = false; } GB_sgb_write(gb, value); gb->io_registers[GB_IO_JOYP] = (value & 0xF0) | (gb->io_registers[GB_IO_JOYP] & 0x0F); From 5cd65f845de7115ae520b21b2623abc8f69056ec Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 13:23:50 +0300 Subject: [PATCH 078/116] Warn when progress can't be saved --- Cocoa/Document.m | 5 +++++ SDL/main.c | 19 ++++++++++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index 8d3082026..c648c2158 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -1071,6 +1071,11 @@ - (int) loadROM else { ret = GB_load_rom(&gb, [fileName UTF8String]); } + if (GB_save_battery_size(&gb)) { + if (access(self.savPath.UTF8String, W_OK)) { + GB_log(&gb, "The save path for this ROM is not writeable, progress will not be saved.\n"); + } + } GB_load_battery(&gb, self.savPath.UTF8String); GB_load_cheats(&gb, self.chtPath.UTF8String); [self.cheatWindowController cheatsUpdated]; diff --git a/SDL/main.c b/SDL/main.c index 0c056e2bf..52050cfbd 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -737,6 +737,18 @@ static void run(void) else { GB_load_rom(&gb, filename); } + + /* Configure battery */ + char battery_save_path[path_length + 5]; /* At the worst case, size is strlen(path) + 4 bytes for .sav + NULL */ + replace_extension(filename, path_length, battery_save_path, ".sav"); + battery_save_path_ptr = battery_save_path; + GB_load_battery(&gb, battery_save_path); + if (GB_save_battery_size(&gb)) { + if (access(battery_save_path, W_OK)) { + GB_log(&gb, "The save path for this ROM is not writeable, progress will not be saved.\n"); + } + } + end_capturing_logs(true, error, SDL_MESSAGEBOX_WARNING, "Warning"); static char start_text[64]; @@ -745,13 +757,6 @@ static void run(void) sprintf(start_text, "SameBoy v" GB_VERSION "\n%s\n%08X", title, GB_get_rom_crc32(&gb)); show_osd_text(start_text); - - /* Configure battery */ - char battery_save_path[path_length + 5]; /* At the worst case, size is strlen(path) + 4 bytes for .sav + NULL */ - replace_extension(filename, path_length, battery_save_path, ".sav"); - battery_save_path_ptr = battery_save_path; - GB_load_battery(&gb, battery_save_path); - /* Configure symbols */ GB_debugger_load_symbol_file(&gb, resource_path("registers.sym")); From 03f4f03661d10a366c2302a4299362878d1aea91 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 13:56:33 +0300 Subject: [PATCH 079/116] Rename function --- Core/joypad.c | 2 +- Core/joypad.h | 2 +- Tester/main.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Core/joypad.c b/Core/joypad.c index 2f47c6085..c331234d3 100644 --- a/Core/joypad.c +++ b/Core/joypad.c @@ -217,7 +217,7 @@ void GB_set_allow_illegal_inputs(GB_gameboy_t *gb, bool allow) gb->illegal_inputs_allowed = allow; } -void GB_emulate_joypad_bouncing(GB_gameboy_t *gb, bool emulate) +void GB_set_emulate_joypad_bouncing(GB_gameboy_t *gb, bool emulate) { gb->no_bouncing_emulation = !emulate; } diff --git a/Core/joypad.h b/Core/joypad.h index 3dee39360..d39eff38d 100644 --- a/Core/joypad.h +++ b/Core/joypad.h @@ -37,7 +37,7 @@ void GB_icd_set_joyp(GB_gameboy_t *gb, uint8_t value); bool GB_get_joyp_accessed(GB_gameboy_t *gb); void GB_clear_joyp_accessed(GB_gameboy_t *gb); void GB_set_allow_illegal_inputs(GB_gameboy_t *gb, bool allow); -void GB_emulate_joypad_bouncing(GB_gameboy_t *gb, bool emulate); +void GB_set_emulate_joypad_bouncing(GB_gameboy_t *gb, bool emulate); #ifdef GB_INTERNAL internal void GB_update_joyp(GB_gameboy_t *gb); diff --git a/Tester/main.c b/Tester/main.c index e86fbbff1..a1c89a52f 100755 --- a/Tester/main.c +++ b/Tester/main.c @@ -432,7 +432,7 @@ int main(int argc, char **argv) GB_set_async_input_callback(&gb, async_input_callback); GB_set_color_correction_mode(&gb, GB_COLOR_CORRECTION_EMULATE_HARDWARE); GB_set_rtc_mode(&gb, GB_RTC_MODE_ACCURATE); - GB_emulate_joypad_bouncing(&gb, false); // Adds too much noise + GB_set_emulate_joypad_bouncing(&gb, false); // Adds too much noise if (GB_load_rom(&gb, filename)) { perror("Failed to load ROM"); From 6f9da353bd06221332007cdeeffbe87216103834 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 14:22:49 +0300 Subject: [PATCH 080/116] Add GBP model to the core (disables bouncing) --- Core/gb.c | 4 ++++ Core/gb.h | 4 ++++ Core/joypad.c | 2 +- Core/memory.c | 8 +++++--- Core/save_state.c | 5 ++++- 5 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Core/gb.c b/Core/gb.c index bb75e7ce8..b08688de1 100644 --- a/Core/gb.c +++ b/Core/gb.c @@ -1392,6 +1392,7 @@ static void reset_ram(GB_gameboy_t *gb) case GB_MODEL_MGB: case GB_MODEL_CGB_E: case GB_MODEL_AGB_A: /* Unverified */ + case GB_MODEL_GBP_A: for (unsigned i = 0; i < gb->ram_size; i++) { gb->ram[i] = GB_random(); } @@ -1456,6 +1457,7 @@ static void reset_ram(GB_gameboy_t *gb) case GB_MODEL_CGB_D: case GB_MODEL_CGB_E: case GB_MODEL_AGB_A: + case GB_MODEL_GBP_A: for (unsigned i = 0; i < sizeof(gb->hram); i++) { gb->hram[i] = GB_random(); } @@ -1489,6 +1491,7 @@ static void reset_ram(GB_gameboy_t *gb) case GB_MODEL_CGB_D: case GB_MODEL_CGB_E: case GB_MODEL_AGB_A: + case GB_MODEL_GBP_A: /* Zero'd out by boot ROM anyway */ break; @@ -1603,6 +1606,7 @@ static void request_boot_rom(GB_gameboy_t *gb) type = GB_BOOT_ROM_CGB; break; case GB_MODEL_AGB_A: + case GB_MODEL_GBP_A: type = GB_BOOT_ROM_AGB; break; } diff --git a/Core/gb.h b/Core/gb.h index 63f02fe4a..ca6b01187 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -33,6 +33,7 @@ #define GB_MODEL_DMG_FAMILY 0x000 #define GB_MODEL_MGB_FAMILY 0x100 #define GB_MODEL_CGB_FAMILY 0x200 +#define GB_MODEL_GBP_BIT 0x20 #define GB_MODEL_PAL_BIT 0x40 #define GB_MODEL_NO_SFC_BIT 0x80 @@ -117,9 +118,12 @@ typedef enum { GB_MODEL_CGB_E = 0x205, // GB_MODEL_AGB_0 = 0x206, GB_MODEL_AGB_A = 0x207, + GB_MODEL_GBP_A = GB_MODEL_AGB_A | GB_MODEL_GBP_BIT, // AGB-A inside a Game Boy Player GB_MODEL_AGB = GB_MODEL_AGB_A, + GB_MODEL_GBP = GB_MODEL_GBP_A, //GB_MODEL_AGB_B = 0x208 //GB_MODEL_AGB_E = 0x209 + //GB_MODEL_GBP_E = GB_MODEL_AGB_E | GB_MODEL_GBP_BIT, // AGB-E inside a Game Boy Player } GB_model_t; enum { diff --git a/Core/joypad.c b/Core/joypad.c index c331234d3..be0e4be87 100644 --- a/Core/joypad.c +++ b/Core/joypad.c @@ -4,7 +4,7 @@ static inline bool should_bounce(GB_gameboy_t *gb) { // Bouncing is super rare on an AGS, so don't emulate it on GB_MODEL_AGB_B (when addeed) - return !GB_is_sgb(gb) && !gb-> no_bouncing_emulation /*&& gb->model != GB_MODEL_AGB_B*/; + return !GB_is_sgb(gb) && !gb-> no_bouncing_emulation && !(gb->model & GB_MODEL_GBP_BIT) /*&& gb->model != GB_MODEL_AGB_B*/; } static inline uint16_t bounce_for_key(GB_gameboy_t *gb, GB_key_t key) diff --git a/Core/memory.c b/Core/memory.c index 8c454cf16..22c041f8e 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -489,6 +489,7 @@ internal uint8_t GB_read_oam(GB_gameboy_t *gb, uint8_t addr) switch (gb->model) { case GB_MODEL_CGB_E: case GB_MODEL_AGB_A: + case GB_MODEL_GBP_A: return (addr & 0xF0) | (addr >> 4); case GB_MODEL_CGB_D: @@ -1279,6 +1280,7 @@ static void write_oam(GB_gameboy_t *gb, uint8_t addr, uint8_t value) break; case GB_MODEL_CGB_E: case GB_MODEL_AGB_A: + case GB_MODEL_GBP_A: case GB_MODEL_DMG_B: case GB_MODEL_MGB: case GB_MODEL_SGB_NTSC: @@ -1819,11 +1821,11 @@ void GB_hdma_run(GB_gameboy_t *gb) } gb->hdma_current_src++; GB_advance_cycles(gb, cycles); - if (gb->addr_for_hdma_conflict == 0xFFFF /* || (gb->model >= GB_MODEL_AGB_B && gb->cgb_double_speed) */) { + if (gb->addr_for_hdma_conflict == 0xFFFF /* || ((gb->model & ~GB_MODEL_GBP_BIT) >= GB_MODEL_AGB_B && gb->cgb_double_speed) */) { uint16_t addr = (gb->hdma_current_dest++ & 0x1FFF); gb->vram[vram_base + addr] = byte; // TODO: vram_write_blocked might not be the correct timing - if (gb->vram_write_blocked /* && gb->model < GB_MODEL_AGB_B */) { + if (gb->vram_write_blocked /* && (gb->model & ~GB_MODEL_GBP_BIT) < GB_MODEL_AGB_B */) { gb->vram[(vram_base ^ 0x2000) + addr] = byte; } } @@ -1837,7 +1839,7 @@ void GB_hdma_run(GB_gameboy_t *gb) uint16_t addr = (gb->hdma_current_dest & gb->addr_for_hdma_conflict & 0x1FFF); gb->vram[vram_base + addr] = byte; // TODO: vram_write_blocked might not be the correct timing - if (gb->vram_write_blocked /* && gb->model < GB_MODEL_AGB_B */) { + if (gb->vram_write_blocked /* && (gb->model & ~GB_MODEL_GBP_BIT) < GB_MODEL_AGB_B */) { gb->vram[(vram_base ^ 0x2000) + addr] = byte; } } diff --git a/Core/save_state.c b/Core/save_state.c index 9212ce80f..a4b316c3e 100644 --- a/Core/save_state.c +++ b/Core/save_state.c @@ -352,6 +352,7 @@ static bool verify_and_update_state_compatibility(GB_gameboy_t *gb, GB_gameboy_t case GB_MODEL_CGB_D: return true; case GB_MODEL_CGB_E: return true; case GB_MODEL_AGB_A: return true; + case GB_MODEL_GBP_A: return true; } if ((gb->model & GB_MODEL_FAMILY_MASK) == (save->model & GB_MODEL_FAMILY_MASK)) { save->model = gb->model; @@ -633,7 +634,9 @@ static int save_state_internal(GB_gameboy_t *gb, virtual_file_t *file, bool appe case GB_MODEL_CGB_C: bess_core.full_model = BE32('CCC '); break; case GB_MODEL_CGB_D: bess_core.full_model = BE32('CCD '); break; case GB_MODEL_CGB_E: bess_core.full_model = BE32('CCE '); break; - case GB_MODEL_AGB_A: bess_core.full_model = BE32('CAA '); break; + case GB_MODEL_AGB_A: + case GB_MODEL_GBP_A: + bess_core.full_model = BE32('CAA '); break; } bess_core.pc = LE16(gb->pc); From 4db047c7d1d07c016e61f3393e51819cb439b959 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 14:24:03 +0300 Subject: [PATCH 081/116] Make GBP selectable in Cocoa --- Cocoa/Document.m | 17 ++++++++++++++++- Cocoa/GBApp.m | 1 + Cocoa/GBPreferencesWindow.h | 1 + Cocoa/GBPreferencesWindow.m | 20 +++++++++++++++++++- Cocoa/Preferences.xib | 16 +++++++++++----- 5 files changed, 48 insertions(+), 7 deletions(-) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index c648c2158..42ca00ef1 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -281,7 +281,7 @@ - (GB_model_t)internalModel return GB_MODEL_MGB; case MODEL_AGB: - return GB_MODEL_AGB; + return (GB_model_t)[[NSUserDefaults standardUserDefaults] integerForKey:@"GBAGBModel"]; } } @@ -798,6 +798,12 @@ - (void)windowControllerDidLoadNib:(NSWindowController *)aController name:@"GBCGBModelChanged" object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self + selector:@selector(agbModelChanged) + name:@"GBAGBModelChanged" + object:nil]; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateVolume) name:@"GBVolumeChanged" @@ -2130,6 +2136,15 @@ - (void)cgbModelChanged modelsChanging = false; } +- (void)agbModelChanged +{ + modelsChanging = true; + if (current_model == MODEL_AGB) { + [self reset:nil]; + } + modelsChanging = false; +} + - (void)setFileURL:(NSURL *)fileURL { [super setFileURL:fileURL]; diff --git a/Cocoa/GBApp.m b/Cocoa/GBApp.m index 1ff0a19ff..adb4d9c55 100644 --- a/Cocoa/GBApp.m +++ b/Cocoa/GBApp.m @@ -70,6 +70,7 @@ - (void) applicationDidFinishLaunching:(NSNotification *)notification @"GBDMGModel": @(GB_MODEL_DMG_B), @"GBCGBModel": @(GB_MODEL_CGB_E), + @"GBAGBModel": @(GB_MODEL_AGB_A), @"GBSGBModel": @(GB_MODEL_SGB2), @"GBRumbleMode": @(GB_RUMBLE_CARTRIDGE_ONLY), diff --git a/Cocoa/GBPreferencesWindow.h b/Cocoa/GBPreferencesWindow.h index 339437604..8e11830eb 100644 --- a/Cocoa/GBPreferencesWindow.h +++ b/Cocoa/GBPreferencesWindow.h @@ -27,6 +27,7 @@ @property IBOutlet NSPopUpButton *dmgPopupButton; @property IBOutlet NSPopUpButton *sgbPopupButton; @property IBOutlet NSPopUpButton *cgbPopupButton; +@property IBOutlet NSPopUpButton *agbPopupButton; @property IBOutlet NSPopUpButton *preferredJoypadButton; @property IBOutlet NSPopUpButton *playerListButton; @property IBOutlet NSButton *autoUpdatesCheckbox; diff --git a/Cocoa/GBPreferencesWindow.m b/Cocoa/GBPreferencesWindow.m index f536f9f01..b76e12570 100644 --- a/Cocoa/GBPreferencesWindow.m +++ b/Cocoa/GBPreferencesWindow.m @@ -26,7 +26,7 @@ @implementation GBPreferencesWindow NSButton *_controllersFocusCheckbox; NSEventModifierFlags previousModifiers; - NSPopUpButton *_dmgPopupButton, *_sgbPopupButton, *_cgbPopupButton; + NSPopUpButton *_dmgPopupButton, *_sgbPopupButton, *_cgbPopupButton, *_agbPopupButton; NSPopUpButton *_preferredJoypadButton; NSPopUpButton *_rumbleModePopupButton; NSPopUpButton *_hotkey1PopupButton; @@ -796,6 +796,17 @@ - (NSPopUpButton *)cgbPopupButton return _cgbPopupButton; } +- (void)setAgbPopupButton:(NSPopUpButton *)agbPopupButton +{ + _agbPopupButton = agbPopupButton; + [_agbPopupButton selectItemWithTag:[[NSUserDefaults standardUserDefaults] integerForKey:@"GBAGBModel"]]; +} + +- (NSPopUpButton *)agbPopupButton +{ + return _agbPopupButton; +} + - (IBAction)dmgModelChanged:(id)sender { [[NSUserDefaults standardUserDefaults] setObject:@([sender selectedTag]) @@ -818,6 +829,13 @@ - (IBAction)cgbModelChanged:(id)sender [[NSNotificationCenter defaultCenter] postNotificationName:@"GBCGBModelChanged" object:nil]; } +- (IBAction)agbModelChanged:(id)sender +{ + [[NSUserDefaults standardUserDefaults] setObject:@([sender selectedTag]) + forKey:@"GBAGBModel"]; + [[NSNotificationCenter defaultCenter] postNotificationName:@"GBAGBModelChanged" object:nil]; +} + - (IBAction)reloadButtonsData:(id)sender { [self.controlsTableView reloadData]; diff --git a/Cocoa/Preferences.xib b/Cocoa/Preferences.xib index 4c36146b7..36738a36d 100644 --- a/Cocoa/Preferences.xib +++ b/Cocoa/Preferences.xib @@ -83,6 +83,7 @@ + @@ -527,18 +528,23 @@ - + - + + - + + + + + @@ -631,7 +637,7 @@ - + @@ -1035,7 +1041,7 @@ - + From dbd33684e866ce58db589a794b9f6ce20b76cfc5 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 14:34:32 +0300 Subject: [PATCH 082/116] Missed some switches --- Core/apu.c | 1 + Core/gb.c | 1 + 2 files changed, 2 insertions(+) diff --git a/Core/apu.c b/Core/apu.c index 62185e6a0..1914fa505 100644 --- a/Core/apu.c +++ b/Core/apu.c @@ -988,6 +988,7 @@ static inline uint16_t effective_channel4_counter(GB_gameboy_t *gb) } break; case GB_MODEL_AGB_A: + case GB_MODEL_GBP_A: /* TODO: AGBs are not affected, but AGSes are. They don't seem to follow a simple pattern like the other revisions. */ /* For the most part, AGS seems to do: diff --git a/Core/gb.c b/Core/gb.c index b08688de1..44c8ecabd 100644 --- a/Core/gb.c +++ b/Core/gb.c @@ -1526,6 +1526,7 @@ static void reset_ram(GB_gameboy_t *gb) case GB_MODEL_CGB_D: case GB_MODEL_CGB_E: case GB_MODEL_AGB_A: + case GB_MODEL_GBP_A: /* Initialized by CGB-A and newer, 0s in CGB-0 */ break; case GB_MODEL_MGB: { From 0c2772942e8276dfe6e7d49f67f46043547d9f15 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 14:49:58 +0300 Subject: [PATCH 083/116] Oops --- Core/joypad.c | 1 + 1 file changed, 1 insertion(+) diff --git a/Core/joypad.c b/Core/joypad.c index be0e4be87..0d001ee78 100644 --- a/Core/joypad.c +++ b/Core/joypad.c @@ -121,6 +121,7 @@ void GB_set_key_state(GB_gameboy_t *gb, GB_key_t index, bool pressed) { assert(index >= 0 && index < GB_KEY_MAX); if (should_bounce(gb) && pressed != gb->keys[0][index]) { + gb->joypad_is_stable = false; gb->key_bounce_timing[index] = bounce_for_key(gb, index); } gb->keys[0][index] = pressed; From 45bd5342e7ff2111f7effcfda8004ffee398adfa Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 14:51:22 +0300 Subject: [PATCH 084/116] GBP support in SDL --- SDL/configuration.c | 1 + SDL/configuration.h | 1 + SDL/gui.c | 18 +++++++++++++++++- SDL/main.c | 5 ++++- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/SDL/configuration.c b/SDL/configuration.c index 2a14426e6..d8ca1bdb2 100644 --- a/SDL/configuration.c +++ b/SDL/configuration.c @@ -50,4 +50,5 @@ configuration_t configuration = .color_temperature = 10, .cgb_revision = GB_MODEL_CGB_E - GB_MODEL_CGB_0, .dmg_palette = 1, // Replacing the old default (0) as of 0.15.2 + .agb_revision = GB_MODEL_AGB_A, }; diff --git a/SDL/configuration.h b/SDL/configuration.h index 3eae7d60f..c328e3c9c 100644 --- a/SDL/configuration.h +++ b/SDL/configuration.h @@ -131,6 +131,7 @@ typedef struct { bool gui_pallete_enabled; // Change the GUI palette only once the user changed the DMG palette char dmg_palette_name[25]; hotkey_action_t hotkey_actions[2]; + uint16_t agb_revision; }; } configuration_t; diff --git a/SDL/gui.c b/SDL/gui.c index 4d03d1d65..873696ce2 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -517,10 +517,26 @@ static const char *current_rtc_mode_string(unsigned index) return ""; } +static void cycle_agb_revision(unsigned index) +{ + + configuration.agb_revision ^= GB_MODEL_GBP_BIT; + pending_command = GB_SDL_RESET_COMMAND; +} + +static const char *current_agb_revision_string(unsigned index) +{ + if (configuration.agb_revision == GB_MODEL_GBP_A) { + return "CPU AGB A (GBP)"; + } + return "CPU AGB A (AGB)"; +} + static const struct menu_item emulation_menu[] = { {"Emulated Model:", cycle_model, current_model_string, cycle_model_backwards}, - {"GBC Revision:", cycle_cgb_revision, current_cgb_revision_string, cycle_cgb_revision_backwards}, {"SGB Revision:", cycle_sgb_revision, current_sgb_revision_string, cycle_sgb_revision_backwards}, + {"GBC Revision:", cycle_cgb_revision, current_cgb_revision_string, cycle_cgb_revision_backwards}, + {"GBA Revision:", cycle_agb_revision, current_agb_revision_string, cycle_agb_revision}, {"Boot ROMs Folder:", toggle_bootrom, current_bootrom_string, toggle_bootrom}, {"Rewind Length:", cycle_rewind, current_rewind_string, cycle_rewind_backwards}, {"Real Time Clock:", toggle_rtc_mode, current_rtc_mode_string, toggle_rtc_mode}, diff --git a/SDL/main.c b/SDL/main.c index 52050cfbd..587b09e4c 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -666,7 +666,7 @@ static void run(void) { [MODEL_DMG] = GB_MODEL_DMG_B, [MODEL_CGB] = GB_MODEL_CGB_0 + configuration.cgb_revision, - [MODEL_AGB] = GB_MODEL_AGB_A, + [MODEL_AGB] = configuration.agb_revision, [MODEL_MGB] = GB_MODEL_MGB, [MODEL_SGB] = (GB_model_t []) { @@ -902,6 +902,9 @@ int main(int argc, char **argv) if (configuration.joypad_configuration[31] == 0) { memset(configuration.joypad_configuration + 12 , -1, 32 - 12); } + if ((configuration.agb_revision & ~GB_MODEL_GBP_BIT) != GB_MODEL_AGB_A) { + configuration.agb_revision = GB_MODEL_AGB_A; + } } if (configuration.model >= MODEL_MAX) { From 10df4d7a13c3458b696b1632851be26b2dc1dbbe Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 14:54:14 +0300 Subject: [PATCH 085/116] Missing static --- SDL/audio/sdl.c | 2 +- SDL/audio/xaudio2.c | 2 +- SDL/audio/xaudio2_7.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/SDL/audio/sdl.c b/SDL/audio/sdl.c index 61a4fd7fc..9c0cd98bb 100644 --- a/SDL/audio/sdl.c +++ b/SDL/audio/sdl.c @@ -102,7 +102,7 @@ static bool _audio_init(void) return true; } -void _audio_deinit(void) +static void _audio_deinit(void) { _audio_set_paused(true); SDL_CloseAudioDevice(device_id); diff --git a/SDL/audio/xaudio2.c b/SDL/audio/xaudio2.c index 78fe877f6..e2ca68b8f 100644 --- a/SDL/audio/xaudio2.c +++ b/SDL/audio/xaudio2.c @@ -151,7 +151,7 @@ static bool _audio_init(void) return true; } -void _audio_deinit(void) +static void _audio_deinit(void) { _audio_set_paused(true); } diff --git a/SDL/audio/xaudio2_7.c b/SDL/audio/xaudio2_7.c index 5dc752c7a..b8ed544af 100644 --- a/SDL/audio/xaudio2_7.c +++ b/SDL/audio/xaudio2_7.c @@ -171,7 +171,7 @@ static bool _audio_init(void) return true; } -void _audio_deinit(void) +static void _audio_deinit(void) { _audio_set_paused(true); } From 53dd19ec352e0ddc6b0ee377c7018e93afb85e06 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 14:54:31 +0300 Subject: [PATCH 086/116] Update version to 0.15.2 --- version.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.mk b/version.mk index 6246d2bf2..29215c806 100644 --- a/version.mk +++ b/version.mk @@ -1 +1 @@ -VERSION := 0.15.1 \ No newline at end of file +VERSION := 0.15.2 \ No newline at end of file From dd435ae5f011e09941bbd9e99eec5f1ca80108fa Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 17:41:34 +0300 Subject: [PATCH 087/116] Fixed potential race condition in the Cocoa memory viewer --- Cocoa/GBMemoryByteArray.m | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/Cocoa/GBMemoryByteArray.m b/Cocoa/GBMemoryByteArray.m index 32526ade2..a4ff53739 100644 --- a/Cocoa/GBMemoryByteArray.m +++ b/Cocoa/GBMemoryByteArray.m @@ -34,17 +34,18 @@ - (unsigned long long)length - (void)copyBytes:(unsigned char *)dst range:(HFRange)range { - __block uint16_t addr = (uint16_t) range.location; - __block unsigned long long length = range.length; - if (_mode == GBMemoryEntireSpace) { - while (length) { - *(dst++) = [_document readMemory:addr++]; - length--; + [_document performAtomicBlock:^{ + uint8_t *_dst = dst; + uint16_t addr = (uint16_t) range.location; + unsigned long long length = range.length; + if (_mode == GBMemoryEntireSpace) { + while (length) { + *(_dst++) = [_document readMemory:addr++]; + length--; + } } - } - else { - [_document performAtomicBlock:^{ - unsigned char *_dst = dst; + else { + uint8_t *_dst = dst; uint16_t bank_backup = 0; GB_gameboy_t *gb = _document.gameboy; switch (_mode) { @@ -94,8 +95,8 @@ - (void)copyBytes:(unsigned char *)dst range:(HFRange)range default: assert(false); } - }]; - } + } + }]; } - (NSArray *)byteSlices From bcfe36897cb6900b2f67cd0256e30fa3f300e8c5 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 24 Jul 2022 23:57:29 +0300 Subject: [PATCH 088/116] Color correction improvements --- Core/display.c | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/Core/display.c b/Core/display.c index fa2a9ba59..9e5a752a5 100644 --- a/Core/display.c +++ b/Core/display.c @@ -282,7 +282,7 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) if (gb->color_correction_mode != GB_COLOR_CORRECTION_CORRECT_CURVES) { uint8_t new_r, new_g, new_b; if (agb) { - new_g = (g * 6 + b * 1) / 7; + new_g = (g * 5 + b * 1) / 6; } else { new_g = (g * 3 + b) / 4; @@ -298,9 +298,16 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) new_g = new_g * 7 / 8 + (r + b) / 16; new_b = new_b * 7 / 8 + (r + g ) / 16; - new_r = new_r * (224 - 32) / 255 + 32; - new_g = new_g * (220 - 36) / 255 + 36; - new_b = new_b * (216 - 40) / 255 + 40; + if (agb) { + new_r = new_r * (224 - 40) / 255 + 20; + new_g = new_g * (220 - 36) / 255 + 18; + new_b = new_b * (216 - 32) / 255 + 16; + } + else { + new_r = new_r * (220 - 40) / 255 + 40; + new_g = new_g * (224 - 36) / 255 + 36; + new_b = new_b * (216 - 32) / 255 + 32; + } } else if (gb->color_correction_mode == GB_COLOR_CORRECTION_LOW_CONTRAST) { r = new_r; @@ -311,9 +318,16 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) new_g = new_g * 7 / 8 + (r + b) / 16; new_b = new_b * 7 / 8 + (r + g ) / 16; - new_r = new_r * (162 - 67) / 255 + 67; - new_g = new_g * (167 - 62) / 255 + 62; - new_b = new_b * (157 - 58) / 255 + 58; + if (agb) { + new_r = new_r * (167 - 27) / 255 + 27; + new_g = new_g * (165 - 24) / 255 + 24; + new_b = new_b * (157 - 22) / 255 + 22; + } + else { + new_r = new_r * (162 - 45) / 255 + 45; + new_g = new_g * (167 - 41) / 255 + 41; + new_b = new_b * (157 - 38) / 255 + 38; + } } else if (gb->color_correction_mode == GB_COLOR_CORRECTION_PRESERVE_BRIGHTNESS) { uint8_t old_max = MAX(r, MAX(g, b)); From c5362023c8d495cca0280bf87e51e7a034c693ba Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 25 Jul 2022 00:26:42 +0300 Subject: [PATCH 089/116] Fix false positives when detecting unwritable save paths --- Cocoa/Document.m | 12 +++++++++++- SDL/main.c | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index 42ca00ef1..2fc41e228 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -1049,6 +1049,16 @@ - (NSString *)romPath return fileName; } +static bool is_path_writeable(const char *path) +{ + if (!access(path, W_OK)) return true; + int fd = creat(path, 0644); + if (fd == -1) return false; + close(fd); + unlink(path); + return true; +} + - (int) loadROM { __block int ret = 0; @@ -1078,7 +1088,7 @@ - (int) loadROM ret = GB_load_rom(&gb, [fileName UTF8String]); } if (GB_save_battery_size(&gb)) { - if (access(self.savPath.UTF8String, W_OK)) { + if (!is_path_writeable(self.savPath.UTF8String)) { GB_log(&gb, "The save path for this ROM is not writeable, progress will not be saved.\n"); } } diff --git a/SDL/main.c b/SDL/main.c index 587b09e4c..215b05752 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -656,6 +656,16 @@ static void load_boot_rom(GB_gameboy_t *gb, GB_boot_rom_t type) } } +static bool is_path_writeable(const char *path) +{ + if (!access(path, W_OK)) return true; + int fd = creat(path, 0644); + if (fd == -1) return false; + close(fd); + unlink(path); + return true; +} + static void run(void) { SDL_ShowCursor(SDL_DISABLE); @@ -744,7 +754,7 @@ static void run(void) battery_save_path_ptr = battery_save_path; GB_load_battery(&gb, battery_save_path); if (GB_save_battery_size(&gb)) { - if (access(battery_save_path, W_OK)) { + if (!is_path_writeable(battery_save_path)) { GB_log(&gb, "The save path for this ROM is not writeable, progress will not be saved.\n"); } } From ae14fcfbd75f3c786a39878f57277f1e83f9865e Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 25 Jul 2022 19:08:55 +0300 Subject: [PATCH 090/116] Fix allow background controllers not working correctly on start up --- SDL/main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/SDL/main.c b/SDL/main.c index 215b05752..16dbd7e87 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -867,8 +867,6 @@ int main(int argc, char **argv) signal(SIGINT, debugger_interrupt); SDL_Init(SDL_INIT_EVERYTHING & ~SDL_INIT_AUDIO); - SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, - configuration.allow_background_controllers? "1" : "0"); if ((console_supported = CON_start(completer))) { CON_set_repeat_empty(true); CON_printf("SameBoy v" GB_VERSION "\n"); @@ -931,6 +929,9 @@ int main(int argc, char **argv) SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2); SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); + + SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, + configuration.allow_background_controllers? "1" : "0"); window = SDL_CreateWindow("SameBoy v" GB_VERSION, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 160 * configuration.default_scale, 144 * configuration.default_scale, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI); From 43e1e8517985743517c7d7c9cf8479b2ebebd721 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 25 Jul 2022 19:11:41 +0300 Subject: [PATCH 091/116] Style --- Core/display.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Core/display.c b/Core/display.c index 9e5a752a5..f00418ed2 100644 --- a/Core/display.c +++ b/Core/display.c @@ -282,7 +282,7 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) if (gb->color_correction_mode != GB_COLOR_CORRECTION_CORRECT_CURVES) { uint8_t new_r, new_g, new_b; if (agb) { - new_g = (g * 5 + b * 1) / 6; + new_g = (g * 5 + b) / 6; } else { new_g = (g * 3 + b) / 4; From e0436e33d4b2ad203ec358e040fc194afc999918 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 25 Jul 2022 19:55:31 +0300 Subject: [PATCH 092/116] Use gamma correct (and nearly gamma correct) color mixing --- Core/display.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/Core/display.c b/Core/display.c index f00418ed2..d19249194 100644 --- a/Core/display.c +++ b/Core/display.c @@ -281,12 +281,21 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) if (gb->color_correction_mode != GB_COLOR_CORRECTION_CORRECT_CURVES) { uint8_t new_r, new_g, new_b; + double gamma = 2.2; + if (gb->color_correction_mode < GB_COLOR_CORRECTION_REDUCE_CONTRAST) { + /* Don't use absolutely gamma-correct mixing for the high-contrast + modes, to prevent the blue hues from being too washed out */ + gamma = 1.6; + } + + // TODO: Optimze pow out using a LUT if (agb) { - new_g = (g * 5 + b) / 6; + new_g = pow((pow(g / 255.0, gamma) * 5 + pow(b / 255.0, gamma)) / 6, 1 / gamma) * 255; } else { - new_g = (g * 3 + b) / 4; + new_g = pow((pow(g / 255.0, gamma) * 3 + pow(b / 255.0, gamma)) / 4, 1 / gamma) * 255; } + new_r = r; new_b = b; if (gb->color_correction_mode == GB_COLOR_CORRECTION_REDUCE_CONTRAST) { From f47e143e7547cf1a7fdc563a21a35e01a5f957e8 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 25 Jul 2022 19:56:44 +0300 Subject: [PATCH 093/116] Update the boot ROM color to match SameBoy's logo slightly better --- BootROMs/cgb_boot.asm | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/BootROMs/cgb_boot.asm b/BootROMs/cgb_boot.asm index c4565c494..dc055b2ac 100644 --- a/BootROMs/cgb_boot.asm +++ b/BootROMs/cgb_boot.asm @@ -565,7 +565,12 @@ AnimationColors: dw $017D ; Orange dw $241D ; Red dw $6D38 ; Purple - dw $7102 ; Blue +IF DEF(AGB) + dw $6D60 ; Blue +ELSE + dw $5500 ; Blue +ENDC + AnimationColorsEnd: ; Helper Functions From 12655cb50c27fb6d6c79b856023f6b78af22dc87 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 25 Jul 2022 22:21:44 +0300 Subject: [PATCH 094/116] Fix Windows build --- SDL/main.c | 3 ++- Windows/unistd.h | 2 ++ Windows/utf8_compat.c | 8 ++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/SDL/main.c b/SDL/main.c index 16dbd7e87..93da1632b 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -13,7 +14,7 @@ #include "console.h" #ifndef _WIN32 -#include +#include #else #include #endif diff --git a/Windows/unistd.h b/Windows/unistd.h index 62e2337c3..c17587e45 100644 --- a/Windows/unistd.h +++ b/Windows/unistd.h @@ -6,3 +6,5 @@ #define read(...) _read(__VA_ARGS__) #define write(...) _write(__VA_ARGS__) #define isatty(...) _isatty(__VA_ARGS__) +#define close(...) _close(__VA_ARGS__) +#define creat(...) _creat(__VA_ARGS__) diff --git a/Windows/utf8_compat.c b/Windows/utf8_compat.c index 03472115d..a8f51ca18 100755 --- a/Windows/utf8_compat.c +++ b/Windows/utf8_compat.c @@ -22,3 +22,11 @@ int access(const char *filename, int mode) return _waccess(w_filename, mode); } +int creat(const char *filename, int mode) +{ + wchar_t w_filename[MAX_PATH] = {0,}; + MultiByteToWideChar(CP_UTF8, 0, filename, -1, w_filename, sizeof(w_filename) / sizeof(w_filename[0])); + + return _wcreat(w_filename, mode); +} + From f6de7b3fbdc9ff1a0a4b53017232bc5845423c76 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 25 Jul 2022 22:43:56 +0300 Subject: [PATCH 095/116] This is wrong --- Windows/stdio.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Windows/stdio.h b/Windows/stdio.h index c369ac625..4a9279e3d 100755 --- a/Windows/stdio.h +++ b/Windows/stdio.h @@ -4,8 +4,8 @@ #include int access(const char *filename, int mode); -#define R_OK 2 -#define W_OK 4 +#define R_OK 4 +#define W_OK 2 #ifndef __MINGW32__ #ifndef __LIBRETRO__ From 99ac632d3af7e34ef2007731ffbfae914156b86a Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 25 Jul 2022 22:56:26 +0300 Subject: [PATCH 096/116] Fix creat on Windows --- Windows/utf8_compat.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Windows/utf8_compat.c b/Windows/utf8_compat.c index a8f51ca18..9264e2e80 100755 --- a/Windows/utf8_compat.c +++ b/Windows/utf8_compat.c @@ -22,11 +22,10 @@ int access(const char *filename, int mode) return _waccess(w_filename, mode); } -int creat(const char *filename, int mode) +int _creat(const char *filename, int mode) { wchar_t w_filename[MAX_PATH] = {0,}; MultiByteToWideChar(CP_UTF8, 0, filename, -1, w_filename, sizeof(w_filename) / sizeof(w_filename[0])); - - return _wcreat(w_filename, mode); + return _wcreat(w_filename, mode & 0700); } From 1414e68a76530a1855fbeb24cda472a5d5db20a2 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 25 Jul 2022 22:56:34 +0300 Subject: [PATCH 097/116] Update version to 0.15.3 --- version.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.mk b/version.mk index 29215c806..54ec09031 100644 --- a/version.mk +++ b/version.mk @@ -1 +1 @@ -VERSION := 0.15.2 \ No newline at end of file +VERSION := 0.15.3 \ No newline at end of file From 859ff79527beb83c01ad3dbdd8865885b48d98ea Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Mon, 25 Jul 2022 23:10:30 +0300 Subject: [PATCH 098/116] Fix sanity test --- .github/actions/sanity_tests.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/sanity_tests.sh b/.github/actions/sanity_tests.sh index 13b5e39b1..42dc70840 100755 --- a/.github/actions/sanity_tests.sh +++ b/.github/actions/sanity_tests.sh @@ -16,10 +16,10 @@ set +e FAILED_TESTS=` shasum .github/actions/*.bmp | grep -E -v \(\ -5283564df0cf5bb78a7a90aff026c1a4692fd39e\ \ .github/actions/cgb-acid2.bmp\|\ +7673e1836eaa28c2967689d0b399f69a597c0c5a\ \ .github/actions/cgb-acid2.bmp\|\ dbcc438dcea13b5d1b80c5cd06bda2592cc5d9e0\ \ .github/actions/cgb_sound.bmp\|\ 0caadf9634e40247ae9c15ff71992e8f77bbf89e\ \ .github/actions/dmg-acid2.bmp\|\ -a732077f98f43d9231453b1764d9f797a836924d\ \ .github/actions/dmg-mode-acid2.bmp\|\ +e3494dcba47af69e8d35fb84c49c272a0d735809\ \ .github/actions/dmg-mode-acid2.bmp\|\ c9e944b7e01078bdeba1819bc2fa9372b111f52d\ \ .github/actions/dmg_sound-2.bmp\|\ f0172cc91867d3343fbd113a2bb98100074be0de\ \ .github/actions/oam_bug-2.bmp\ \)` From f3915a64947505f53ce482add7cbcc0fef6cbd3d Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 29 Jul 2022 15:31:53 +0300 Subject: [PATCH 099/116] Create FUNDING.yml --- .github/FUNDING.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 000000000..a4c3a1bbd --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +# These are supported funding model platforms + +github: LIJI32 From 84a193a918ab9a9d26b9b6d398f450d7a9459961 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 29 Jul 2022 17:08:51 +0300 Subject: [PATCH 100/116] Fix shader artifacts, revise AAScale4x --- Shaders/AAScale2x.fsh | 18 ++++++----------- Shaders/AAScale4x.fsh | 41 ++++++++++++++------------------------ Shaders/CRT.fsh | 18 ++++++++--------- Shaders/HQ2x.fsh | 22 ++++++++++---------- Shaders/LCD.fsh | 18 ++++++++--------- Shaders/MasterShader.fsh | 6 ++++++ Shaders/MasterShader.metal | 7 +++++++ Shaders/OmniScale.fsh | 34 +++++++++++++++---------------- Shaders/Scale2x.fsh | 18 ++++++----------- Shaders/Scale4x.fsh | 41 ++++++++++++++++---------------------- 10 files changed, 102 insertions(+), 121 deletions(-) diff --git a/Shaders/AAScale2x.fsh b/Shaders/AAScale2x.fsh index d51a9a6a8..b1b35cefe 100644 --- a/Shaders/AAScale2x.fsh +++ b/Shaders/AAScale2x.fsh @@ -1,21 +1,15 @@ STATIC vec4 scale2x(sampler2D image, vec2 position, vec2 input_resolution, vec2 output_resolution) -{ - // o = offset, the width of a pixel - vec2 o = 1.0 / input_resolution; - +{ // texel arrangement // A B C // D E F // G H I // vec4 A = texture(image, position + vec2( -o.x, o.y)); - vec4 B = texture(image, position + vec2( 0, o.y)); - // vec4 C = texture(image, position + vec2( o.x, o.y)); - vec4 D = texture(image, position + vec2( -o.x, 0)); - vec4 E = texture(image, position + vec2( 0, 0)); - vec4 F = texture(image, position + vec2( o.x, 0)); - // vec4 G = texture(image, position + vec2( -o.x, -o.y)); - vec4 H = texture(image, position + vec2( 0, -o.y)); - // vec4 I = texture(image, position + vec2( o.x, -o.y)); + vec4 B = texture_relative(image, position, vec2( 0, 1)); + vec4 D = texture_relative(image, position, vec2( -1, 0)); + vec4 E = texture_relative(image, position, vec2( 0, 0)); + vec4 F = texture_relative(image, position, vec2( 1, 0)); + vec4 H = texture_relative(image, position, vec2( 0, -1)); vec2 p = position * input_resolution; // p = the position within a pixel [0...1] p = fract(p); diff --git a/Shaders/AAScale4x.fsh b/Shaders/AAScale4x.fsh index b59b80e97..f8237c791 100644 --- a/Shaders/AAScale4x.fsh +++ b/Shaders/AAScale4x.fsh @@ -1,20 +1,15 @@ STATIC vec4 scale2x(sampler2D image, vec2 position, vec2 input_resolution, vec2 output_resolution) { - // o = offset, the width of a pixel - vec2 o = 1.0 / input_resolution; // texel arrangement // A B C // D E F // G H I - // vec4 A = texture(image, position + vec2( -o.x, o.y)); - vec4 B = texture(image, position + vec2( 0, o.y)); - // vec4 C = texture(image, position + vec2( o.x, o.y)); - vec4 D = texture(image, position + vec2( -o.x, 0)); - vec4 E = texture(image, position + vec2( 0, 0)); - vec4 F = texture(image, position + vec2( o.x, 0)); - // vec4 G = texture(image, position + vec2( -o.x, -o.y)); - vec4 H = texture(image, position + vec2( 0, -o.y)); - // vec4 I = texture(image, position + vec2( o.x, -o.y)); + + vec4 B = texture_relative(image, position, vec2( 0, 1)); + vec4 D = texture_relative(image, position, vec2( -1, 0)); + vec4 E = texture_relative(image, position, vec2( 0, 0)); + vec4 F = texture_relative(image, position, vec2( 1, 0)); + vec4 H = texture_relative(image, position, vec2( 0, -1)); vec2 p = position * input_resolution; // p = the position within a pixel [0...1] p = fract(p); @@ -36,30 +31,24 @@ STATIC vec4 scale2x(sampler2D image, vec2 position, vec2 input_resolution, vec2 } } } - -STATIC vec4 aaScale2x(sampler2D image, vec2 position, vec2 input_resolution, vec2 output_resolution) +STATIC vec4 scale2x_wrapper(sampler2D t, vec2 pos, vec2 offset, vec2 input_resolution, vec2 output_resolution) { - return mix(texture(image, position), scale2x(image, position, input_resolution, output_resolution), 0.5); + vec2 origin = (floor(pos * input_resolution * 2)) + vec2(0.5, 0.5); + return scale2x(t, (origin + offset) / input_resolution / 2, input_resolution, output_resolution); } STATIC vec4 scale(sampler2D image, vec2 position, vec2 input_resolution, vec2 output_resolution) { - // o = offset, the width of a pixel - vec2 o = 1.0 / (input_resolution * 2.); - // texel arrangement // A B C // D E F // G H I - // vec4 A = aaScale2x(image, position + vec2( -o.x, o.y), input_resolution, output_resolution); - vec4 B = aaScale2x(image, position + vec2( 0, o.y), input_resolution, output_resolution); - // vec4 C = aaScale2x(image, position + vec2( o.x, o.y), input_resolution, output_resolution); - vec4 D = aaScale2x(image, position + vec2( -o.x, 0), input_resolution, output_resolution); - vec4 E = aaScale2x(image, position + vec2( 0, 0), input_resolution, output_resolution); - vec4 F = aaScale2x(image, position + vec2( o.x, 0), input_resolution, output_resolution); - // vec4 G = aaScale2x(image, position + vec2( -o.x, -o.y), input_resolution, output_resolution); - vec4 H = aaScale2x(image, position + vec2( 0, -o.y), input_resolution, output_resolution); - // vec4 I = aaScale2x(image, position + vec2( o.x, -o.y), input_resolution, output_resolution); + vec4 B = scale2x_wrapper(image, position, vec2( 0, 1), input_resolution, output_resolution); + vec4 D = scale2x_wrapper(image, position, vec2( -1, 0), input_resolution, output_resolution); + vec4 E = scale2x_wrapper(image, position, vec2( 0, 0), input_resolution, output_resolution); + vec4 F = scale2x_wrapper(image, position, vec2( 1, 0), input_resolution, output_resolution); + vec4 H = scale2x_wrapper(image, position, vec2( 0, -1), input_resolution, output_resolution); + vec4 R; vec2 p = position * input_resolution * 2.; // p = the position within a pixel [0...1] diff --git a/Shaders/CRT.fsh b/Shaders/CRT.fsh index 4cbab721f..25e5b37f4 100644 --- a/Shaders/CRT.fsh +++ b/Shaders/CRT.fsh @@ -25,20 +25,20 @@ STATIC vec4 scale(sampler2D image, vec2 position, vec2 input_resolution, vec2 ou vec2 pos = fract(position * input_resolution); vec2 sub_pos = fract(position * input_resolution * 6); - vec4 center = texture(image, position); - vec4 left = texture(image, position - vec2(1.0 / input_resolution.x, 0)); - vec4 right = texture(image, position + vec2(1.0 / input_resolution.x, 0)); + vec4 center = texture_relative(image, position, vec2(0, 0)); + vec4 left = texture_relative(image, position, vec2(-1, 0)); + vec4 right = texture_relative(image, position, vec2(1, 0)); /* Vertical blurring */ if (pos.y < 1.0 / 6.0) { - center = mix(center, texture(image, position + vec2(0, -1.0 / input_resolution.y)), 0.5 - sub_pos.y / 2.0); - left = mix(left, texture(image, position + vec2(-1.0 / input_resolution.x, -1.0 / input_resolution.y)), 0.5 - sub_pos.y / 2.0); - right = mix(right, texture(image, position + vec2( 1.0 / input_resolution.x, -1.0 / input_resolution.y)), 0.5 - sub_pos.y / 2.0); + center = mix(center, texture_relative(image, position, vec2( 0, -1)), 0.5 - sub_pos.y / 2.0); + left = mix(left, texture_relative(image, position, vec2(-1, -1)), 0.5 - sub_pos.y / 2.0); + right = mix(right, texture_relative(image, position, vec2( 1, -1)), 0.5 - sub_pos.y / 2.0); } else if (pos.y > 5.0 / 6.0) { - center = mix(center, texture(image, position + vec2(0, 1.0 / input_resolution.y)), sub_pos.y / 2.0); - left = mix(left, texture(image, position + vec2(-1.0 / input_resolution.x, 1.0 / input_resolution.y)), sub_pos.y / 2.0); - right = mix(right, texture(image, position + vec2( 1.0 / input_resolution.x, 1.0 / input_resolution.y)), sub_pos.y / 2.0); + center = mix(center, texture_relative(image, position, vec2( 0, 1)), sub_pos.y / 2.0); + left = mix(left, texture_relative(image, position, vec2(-1, 1)), sub_pos.y / 2.0); + right = mix(right, texture_relative(image, position, vec2( 1, 1)), sub_pos.y / 2.0); } /* Scanlines */ diff --git a/Shaders/HQ2x.fsh b/Shaders/HQ2x.fsh index a098e7a18..0baf9e146 100644 --- a/Shaders/HQ2x.fsh +++ b/Shaders/HQ2x.fsh @@ -30,7 +30,7 @@ STATIC vec4 interp_3px(vec4 c1, float w1, vec4 c2, float w2, vec4 c3, float w3) STATIC vec4 scale(sampler2D image, vec2 position, vec2 input_resolution, vec2 output_resolution) { // o = offset, the width of a pixel - vec2 o = 1.0 / input_resolution; + vec2 o = vec2(1, 1); /* We always calculate the top left pixel. If we need a different pixel, we flip the image */ @@ -40,17 +40,15 @@ STATIC vec4 scale(sampler2D image, vec2 position, vec2 input_resolution, vec2 ou if (p.x > 0.5) o.x = -o.x; if (p.y > 0.5) o.y = -o.y; - - - vec4 w0 = texture(image, position + vec2( -o.x, -o.y)); - vec4 w1 = texture(image, position + vec2( 0, -o.y)); - vec4 w2 = texture(image, position + vec2( o.x, -o.y)); - vec4 w3 = texture(image, position + vec2( -o.x, 0)); - vec4 w4 = texture(image, position + vec2( 0, 0)); - vec4 w5 = texture(image, position + vec2( o.x, 0)); - vec4 w6 = texture(image, position + vec2( -o.x, o.y)); - vec4 w7 = texture(image, position + vec2( 0, o.y)); - vec4 w8 = texture(image, position + vec2( o.x, o.y)); + vec4 w0 = texture_relative(image, position, vec2( -o.x, -o.y)); + vec4 w1 = texture_relative(image, position, vec2( 0, -o.y)); + vec4 w2 = texture_relative(image, position, vec2( o.x, -o.y)); + vec4 w3 = texture_relative(image, position, vec2( -o.x, 0)); + vec4 w4 = texture_relative(image, position, vec2( 0, 0)); + vec4 w5 = texture_relative(image, position, vec2( o.x, 0)); + vec4 w6 = texture_relative(image, position, vec2( -o.x, o.y)); + vec4 w7 = texture_relative(image, position, vec2( 0, o.y)); + vec4 w8 = texture_relative(image, position, vec2( o.x, o.y)); int pattern = 0; if (is_different(w0, w4)) pattern |= 1; diff --git a/Shaders/LCD.fsh b/Shaders/LCD.fsh index d20a7c937..d49ac57ed 100644 --- a/Shaders/LCD.fsh +++ b/Shaders/LCD.fsh @@ -7,22 +7,22 @@ STATIC vec4 scale(sampler2D image, vec2 position, vec2 input_resolution, vec2 ou vec2 pos = fract(position * input_resolution); vec2 sub_pos = fract(position * input_resolution * 6); - vec4 center = texture(image, position); - vec4 left = texture(image, position - vec2(1.0 / input_resolution.x, 0)); - vec4 right = texture(image, position + vec2(1.0 / input_resolution.x, 0)); + vec4 center = texture_relative(image, position, vec2(0, 0)); + vec4 left = texture_relative(image, position, vec2(-1, 0)); + vec4 right = texture_relative(image, position, vec2(1, 0)); if (pos.y < 1.0 / 6.0) { - center = mix(center, texture(image, position + vec2(0, -1.0 / input_resolution.y)), 0.5 - sub_pos.y / 2.0); - left = mix(left, texture(image, position + vec2(-1.0 / input_resolution.x, -1.0 / input_resolution.y)), 0.5 - sub_pos.y / 2.0); - right = mix(right, texture(image, position + vec2( 1.0 / input_resolution.x, -1.0 / input_resolution.y)), 0.5 - sub_pos.y / 2.0); + center = mix(center, texture_relative(image, position, vec2( 0, -1)), 0.5 - sub_pos.y / 2.0); + left = mix(left, texture_relative(image, position, vec2(-1, -1)), 0.5 - sub_pos.y / 2.0); + right = mix(right, texture_relative(image, position, vec2( 1, -1)), 0.5 - sub_pos.y / 2.0); center *= sub_pos.y * SCANLINE_DEPTH + (1 - SCANLINE_DEPTH); left *= sub_pos.y * SCANLINE_DEPTH + (1 - SCANLINE_DEPTH); right *= sub_pos.y * SCANLINE_DEPTH + (1 - SCANLINE_DEPTH); } else if (pos.y > 5.0 / 6.0) { - center = mix(center, texture(image, position + vec2(0, 1.0 / input_resolution.y)), sub_pos.y / 2.0); - left = mix(left, texture(image, position + vec2(-1.0 / input_resolution.x, 1.0 / input_resolution.y)), sub_pos.y / 2.0); - right = mix(right, texture(image, position + vec2( 1.0 / input_resolution.x, 1.0 / input_resolution.y)), sub_pos.y / 2.0); + center = mix(center, texture_relative(image, position, vec2( 0, 1)), sub_pos.y / 2.0); + left = mix(left, texture_relative(image, position, vec2(-1, 1)), sub_pos.y / 2.0); + right = mix(right, texture_relative(image, position, vec2( 1, 1)), sub_pos.y / 2.0); center *= (1.0 - sub_pos.y) * SCANLINE_DEPTH + (1 - SCANLINE_DEPTH); left *= (1.0 - sub_pos.y) * SCANLINE_DEPTH + (1 - SCANLINE_DEPTH); right *= (1.0 - sub_pos.y) * SCANLINE_DEPTH + (1 - SCANLINE_DEPTH); diff --git a/Shaders/MasterShader.fsh b/Shaders/MasterShader.fsh index 3f891d5d2..24bba3cbe 100644 --- a/Shaders/MasterShader.fsh +++ b/Shaders/MasterShader.fsh @@ -18,6 +18,12 @@ vec4 _texture(sampler2D t, vec2 pos) return pow(texture(t, pos), vec4(GAMMA)); } +vec4 texture_relative(sampler2D t, vec2 pos, vec2 offset) +{ + vec2 input_resolution = textureSize(t, 0); + return _texture(t, (floor(pos * input_resolution) + offset + vec2(0.5, 0.5)) / input_resolution); +} + #define texture _texture #line 1 diff --git a/Shaders/MasterShader.metal b/Shaders/MasterShader.metal index 2f3113e38..7ba04dda6 100644 --- a/Shaders/MasterShader.metal +++ b/Shaders/MasterShader.metal @@ -40,6 +40,13 @@ static inline float4 texture(texture2d texture, float2 pos) return pow(float4(texture.sample(texture_sampler, pos)), GAMMA); } +__attribute__((unused)) static inline float4 texture_relative(texture2d t, float2 pos, float2 offset) +{ + float2 input_resolution = float2(t.get_width(), t.get_height());; + float2 origin = (floor(pos * input_resolution)) + float2(0.5, 0.5); + return texture(t, (origin + offset) / input_resolution); +} + #line 1 {filter} diff --git a/Shaders/OmniScale.fsh b/Shaders/OmniScale.fsh index 108da8ba8..28ce3211d 100644 --- a/Shaders/OmniScale.fsh +++ b/Shaders/OmniScale.fsh @@ -27,7 +27,7 @@ STATIC bool is_different(vec4 a, vec4 b) STATIC vec4 scale(sampler2D image, vec2 position, vec2 input_resolution, vec2 output_resolution) { // o = offset, the width of a pixel - vec2 o = 1.0 / input_resolution; + vec2 o = vec2(1, 1); /* We always calculate the top left quarter. If we need a different quarter, we flip our co-ordinates */ @@ -43,15 +43,15 @@ STATIC vec4 scale(sampler2D image, vec2 position, vec2 input_resolution, vec2 ou p.y = 1.0 - p.y; } - vec4 w0 = texture(image, position + vec2( -o.x, -o.y)); - vec4 w1 = texture(image, position + vec2( 0, -o.y)); - vec4 w2 = texture(image, position + vec2( o.x, -o.y)); - vec4 w3 = texture(image, position + vec2( -o.x, 0)); - vec4 w4 = texture(image, position + vec2( 0, 0)); - vec4 w5 = texture(image, position + vec2( o.x, 0)); - vec4 w6 = texture(image, position + vec2( -o.x, o.y)); - vec4 w7 = texture(image, position + vec2( 0, o.y)); - vec4 w8 = texture(image, position + vec2( o.x, o.y)); + vec4 w0 = texture_relative(image, position, vec2( -o.x, -o.y)); + vec4 w1 = texture_relative(image, position, vec2( 0, -o.y)); + vec4 w2 = texture_relative(image, position, vec2( o.x, -o.y)); + vec4 w3 = texture_relative(image, position, vec2( -o.x, 0)); + vec4 w4 = texture_relative(image, position, vec2( 0, 0)); + vec4 w5 = texture_relative(image, position, vec2( o.x, 0)); + vec4 w6 = texture_relative(image, position, vec2( -o.x, o.y)); + vec4 w7 = texture_relative(image, position, vec2( 0, o.y)); + vec4 w8 = texture_relative(image, position, vec2( o.x, o.y)); int pattern = 0; if (is_different(w0, w4)) pattern |= 1 << 0; @@ -228,13 +228,13 @@ STATIC vec4 scale(sampler2D image, vec2 position, vec2 input_resolution, vec2 ou } /* We need more samples to "solve" this diagonal */ - vec4 x0 = texture(image, position + vec2( -o.x * 2.0, -o.y * 2.0)); - vec4 x1 = texture(image, position + vec2( -o.x , -o.y * 2.0)); - vec4 x2 = texture(image, position + vec2( 0.0 , -o.y * 2.0)); - vec4 x3 = texture(image, position + vec2( o.x , -o.y * 2.0)); - vec4 x4 = texture(image, position + vec2( -o.x * 2.0, -o.y )); - vec4 x5 = texture(image, position + vec2( -o.x * 2.0, 0.0 )); - vec4 x6 = texture(image, position + vec2( -o.x * 2.0, o.y )); + vec4 x0 = texture_relative(image, position, vec2( -o.x * 2.0, -o.y * 2.0)); + vec4 x1 = texture_relative(image, position, vec2( -o.x , -o.y * 2.0)); + vec4 x2 = texture_relative(image, position, vec2( 0.0 , -o.y * 2.0)); + vec4 x3 = texture_relative(image, position, vec2( o.x , -o.y * 2.0)); + vec4 x4 = texture_relative(image, position, vec2( -o.x * 2.0, -o.y )); + vec4 x5 = texture_relative(image, position, vec2( -o.x * 2.0, 0.0 )); + vec4 x6 = texture_relative(image, position, vec2( -o.x * 2.0, o.y )); if (is_different(x0, w4)) pattern |= 1 << 8; if (is_different(x1, w4)) pattern |= 1 << 9; diff --git a/Shaders/Scale2x.fsh b/Shaders/Scale2x.fsh index 17b6edb8d..44bcfc4d6 100644 --- a/Shaders/Scale2x.fsh +++ b/Shaders/Scale2x.fsh @@ -2,22 +2,16 @@ STATIC vec4 scale(sampler2D image, vec2 position, vec2 input_resolution, vec2 output_resolution) { - // o = offset, the width of a pixel - vec2 o = 1.0 / input_resolution; - // texel arrangement // A B C // D E F // G H I - // vec4 A = texture(image, position + vec2( -o.x, o.y)); - vec4 B = texture(image, position + vec2( 0, o.y)); - // vec4 C = texture(image, position + vec2( o.x, o.y)); - vec4 D = texture(image, position + vec2( -o.x, 0)); - vec4 E = texture(image, position + vec2( 0, 0)); - vec4 F = texture(image, position + vec2( o.x, 0)); - // vec4 G = texture(image, position + vec2( -o.x, -o.y)); - vec4 H = texture(image, position + vec2( 0, -o.y)); - // vec4 I = texture(image, position + vec2( o.x, -o.y)); + + vec4 B = texture_relative(image, position, vec2( 0, 1)); + vec4 D = texture_relative(image, position, vec2( -1, 0)); + vec4 E = texture_relative(image, position, vec2( 0, 0)); + vec4 F = texture_relative(image, position, vec2( 1, 0)); + vec4 H = texture_relative(image, position, vec2( 0, -1)); vec2 p = position * input_resolution; // p = the position within a pixel [0...1] p = fract(p); diff --git a/Shaders/Scale4x.fsh b/Shaders/Scale4x.fsh index da1ff1487..93c4b2159 100644 --- a/Shaders/Scale4x.fsh +++ b/Shaders/Scale4x.fsh @@ -1,23 +1,16 @@ STATIC vec4 scale2x(sampler2D image, vec2 position, vec2 input_resolution, vec2 output_resolution) { - // o = offset, the width of a pixel - vec2 o = 1.0 / input_resolution; // texel arrangement // A B C // D E F // G H I - // vec4 A = texture(image, position + vec2( -o.x, o.y)); - vec4 B = texture(image, position + vec2( 0, o.y)); - // vec4 C = texture(image, position + vec2( o.x, o.y)); - vec4 D = texture(image, position + vec2( -o.x, 0)); - vec4 E = texture(image, position + vec2( 0, 0)); - vec4 F = texture(image, position + vec2( o.x, 0)); - // vec4 G = texture(image, position + vec2( -o.x, -o.y)); - vec4 H = texture(image, position + vec2( 0, -o.y)); - // vec4 I = texture(image, position + vec2( o.x, -o.y)); + vec4 B = texture_relative(image, position, vec2( 0, 1)); + vec4 D = texture_relative(image, position, vec2( -1, 0)); + vec4 E = texture_relative(image, position, vec2( 0, 0)); + vec4 F = texture_relative(image, position, vec2( 1, 0)); + vec4 H = texture_relative(image, position, vec2( 0, -1)); vec2 p = position * input_resolution; // p = the position within a pixel [0...1] - vec4 R; p = fract(p); if (p.x > .5) { if (p.y > .5) { @@ -38,24 +31,24 @@ STATIC vec4 scale2x(sampler2D image, vec2 position, vec2 input_resolution, vec2 } } +STATIC vec4 scale2x_wrapper(sampler2D t, vec2 pos, vec2 offset, vec2 input_resolution, vec2 output_resolution) +{ + vec2 origin = (floor(pos * input_resolution * 2)) + vec2(0.5, 0.5); + return scale2x(t, (origin + offset) / input_resolution / 2, input_resolution, output_resolution); +} + STATIC vec4 scale(sampler2D image, vec2 position, vec2 input_resolution, vec2 output_resolution) { - // o = offset, the width of a pixel - vec2 o = 1.0 / (input_resolution * 2.); - // texel arrangement // A B C // D E F // G H I - // vec4 A = scale2x(image, position + vec2( -o.x, o.y), input_resolution, output_resolution); - vec4 B = scale2x(image, position + vec2( 0, o.y), input_resolution, output_resolution); - // vec4 C = scale2x(image, position + vec2( o.x, o.y), input_resolution, output_resolution); - vec4 D = scale2x(image, position + vec2( -o.x, 0), input_resolution, output_resolution); - vec4 E = scale2x(image, position + vec2( 0, 0), input_resolution, output_resolution); - vec4 F = scale2x(image, position + vec2( o.x, 0), input_resolution, output_resolution); - // vec4 G = scale2x(image, position + vec2( -o.x, -o.y), input_resolution, output_resolution); - vec4 H = scale2x(image, position + vec2( 0, -o.y), input_resolution, output_resolution); - // vec4 I = scale2x(image, position + vec2( o.x, -o.y), input_resolution, output_resolution); + vec4 B = scale2x_wrapper(image, position, vec2( 0, 1), input_resolution, output_resolution); + vec4 D = scale2x_wrapper(image, position, vec2( -1, 0), input_resolution, output_resolution); + vec4 E = scale2x_wrapper(image, position, vec2( 0, 0), input_resolution, output_resolution); + vec4 F = scale2x_wrapper(image, position, vec2( 1, 0), input_resolution, output_resolution); + vec4 H = scale2x_wrapper(image, position, vec2( 0, -1), input_resolution, output_resolution); + vec2 p = position * input_resolution * 2.; // p = the position within a pixel [0...1] p = fract(p); From 86a05e25912ec4482064bf5f4bc9636dc296a559 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 29 Jul 2022 20:00:05 +0300 Subject: [PATCH 101/116] Fix updater crash, closes #469 --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 05f72d32d..fc8d932b9 100644 --- a/Makefile +++ b/Makefile @@ -187,7 +187,7 @@ endif CFLAGS += -F/Library/Frameworks -mmacosx-version-min=10.9 -isysroot $(SYSROOT) OCFLAGS += -x objective-c -fobjc-arc -Wno-deprecated-declarations -isysroot $(SYSROOT) -LDFLAGS += -framework AppKit -framework PreferencePanes -framework Carbon -framework QuartzCore -framework Security -weak_framework Metal -weak_framework MetalKit -mmacosx-version-min=10.9 -isysroot $(SYSROOT) +LDFLAGS += -framework AppKit -framework PreferencePanes -framework Carbon -framework QuartzCore -framework Security -framework WebKit -weak_framework Metal -weak_framework MetalKit -mmacosx-version-min=10.9 -isysroot $(SYSROOT) GL_LDFLAGS := -framework OpenGL endif CFLAGS += -Wno-deprecated-declarations From 0894c1dcda263a894402220dbc744e9a0f914b00 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 29 Jul 2022 20:31:27 +0300 Subject: [PATCH 102/116] Avoid rounding errors in color correction, minor optimization --- .github/actions/sanity_tests.sh | 4 ++-- Core/display.c | 9 +++++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/actions/sanity_tests.sh b/.github/actions/sanity_tests.sh index 42dc70840..1d8b33e2c 100755 --- a/.github/actions/sanity_tests.sh +++ b/.github/actions/sanity_tests.sh @@ -16,10 +16,10 @@ set +e FAILED_TESTS=` shasum .github/actions/*.bmp | grep -E -v \(\ -7673e1836eaa28c2967689d0b399f69a597c0c5a\ \ .github/actions/cgb-acid2.bmp\|\ +64c3fd9a5fe9aee40fe15f3371029c0d2f20f5bc\ \ .github/actions/cgb-acid2.bmp\|\ dbcc438dcea13b5d1b80c5cd06bda2592cc5d9e0\ \ .github/actions/cgb_sound.bmp\|\ 0caadf9634e40247ae9c15ff71992e8f77bbf89e\ \ .github/actions/dmg-acid2.bmp\|\ -e3494dcba47af69e8d35fb84c49c272a0d735809\ \ .github/actions/dmg-mode-acid2.bmp\|\ +fbdb5e342bfdd2edda3ea5601d35d0ca60d18034\ \ .github/actions/dmg-mode-acid2.bmp\|\ c9e944b7e01078bdeba1819bc2fa9372b111f52d\ \ .github/actions/dmg_sound-2.bmp\|\ f0172cc91867d3343fbd113a2bb98100074be0de\ \ .github/actions/oam_bug-2.bmp\ \)` diff --git a/Core/display.c b/Core/display.c index d19249194..d397e0b7f 100644 --- a/Core/display.c +++ b/Core/display.c @@ -281,6 +281,7 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) if (gb->color_correction_mode != GB_COLOR_CORRECTION_CORRECT_CURVES) { uint8_t new_r, new_g, new_b; + if (g != b) { // Minor optimization double gamma = 2.2; if (gb->color_correction_mode < GB_COLOR_CORRECTION_REDUCE_CONTRAST) { /* Don't use absolutely gamma-correct mixing for the high-contrast @@ -290,10 +291,14 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) // TODO: Optimze pow out using a LUT if (agb) { - new_g = pow((pow(g / 255.0, gamma) * 5 + pow(b / 255.0, gamma)) / 6, 1 / gamma) * 255; + new_g = round(pow((pow(g / 255.0, gamma) * 5 + pow(b / 255.0, gamma)) / 6, 1 / gamma) * 255); } else { - new_g = pow((pow(g / 255.0, gamma) * 3 + pow(b / 255.0, gamma)) / 4, 1 / gamma) * 255; + new_g = round(pow((pow(g / 255.0, gamma) * 3 + pow(b / 255.0, gamma)) / 4, 1 / gamma) * 255); + } + } + else { + new_g = g; } new_r = r; From 3f7bcb9af2f24af561a6ba4b21a0ae354f074905 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Fri, 29 Jul 2022 20:44:47 +0300 Subject: [PATCH 103/116] Rename several color correction modes, add a new accurate mode --- Cocoa/GBApp.m | 2 +- Cocoa/GBPreferencesWindow.m | 4 ++-- Cocoa/Preferences.xib | 13 ++++++++----- Core/display.c | 24 ++++++++++++------------ Core/display.h | 8 ++++++-- QuickLook/get_image_for_rom.c | 2 +- SDL/configuration.c | 2 +- SDL/gui.c | 14 +++++++++++++- SDL/main.c | 2 +- libretro/libretro.c | 21 +++++++++++++++------ libretro/libretro_core_options.inc | 15 +++++++++------ 11 files changed, 69 insertions(+), 38 deletions(-) diff --git a/Cocoa/GBApp.m b/Cocoa/GBApp.m index adb4d9c55..8c85c520a 100644 --- a/Cocoa/GBApp.m +++ b/Cocoa/GBApp.m @@ -63,7 +63,7 @@ - (void) applicationDidFinishLaunching:(NSNotification *)notification @"GBSlow-Motion": @(kVK_Shift), @"GBFilter": @"NearestNeighbor", - @"GBColorCorrection": @(GB_COLOR_CORRECTION_EMULATE_HARDWARE), + @"GBColorCorrection": @(GB_COLOR_CORRECTION_MODERN_BALANCED), @"GBHighpassFilter": @(GB_HIGHPASS_REMOVE_DC_OFFSET), @"GBRewindLength": @(10), @"GBFrameBlendingMode": @([defaults boolForKey:@"DisableFrameBlending"]? GB_FRAME_BLENDING_MODE_DISABLED : GB_FRAME_BLENDING_MODE_ACCURATE), diff --git a/Cocoa/GBPreferencesWindow.m b/Cocoa/GBPreferencesWindow.m index b76e12570..2b6b0708a 100644 --- a/Cocoa/GBPreferencesWindow.m +++ b/Cocoa/GBPreferencesWindow.m @@ -101,7 +101,7 @@ - (void)setColorCorrectionPopupButton:(NSPopUpButton *)colorCorrectionPopupButto { _colorCorrectionPopupButton = colorCorrectionPopupButton; NSInteger mode = [[NSUserDefaults standardUserDefaults] integerForKey:@"GBColorCorrection"]; - [_colorCorrectionPopupButton selectItemAtIndex:mode]; + [_colorCorrectionPopupButton selectItemWithTag:mode]; } @@ -402,7 +402,7 @@ - (IBAction)changeAspectRatio:(id)sender - (IBAction)colorCorrectionChanged:(id)sender { - [[NSUserDefaults standardUserDefaults] setObject:@([sender indexOfSelectedItem]) + [[NSUserDefaults standardUserDefaults] setObject:@([sender selectedItem].tag) forKey:@"GBColorCorrection"]; [[NSNotificationCenter defaultCenter] postNotificationName:@"GBColorCorrectionChanged" object:nil]; } diff --git a/Cocoa/Preferences.xib b/Cocoa/Preferences.xib index 36738a36d..464de278a 100644 --- a/Cocoa/Preferences.xib +++ b/Cocoa/Preferences.xib @@ -187,11 +187,14 @@ - - - - - + + + + + + + + diff --git a/Core/display.c b/Core/display.c index d397e0b7f..b0dca98ff 100644 --- a/Core/display.c +++ b/Core/display.c @@ -282,18 +282,18 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) if (gb->color_correction_mode != GB_COLOR_CORRECTION_CORRECT_CURVES) { uint8_t new_r, new_g, new_b; if (g != b) { // Minor optimization - double gamma = 2.2; - if (gb->color_correction_mode < GB_COLOR_CORRECTION_REDUCE_CONTRAST) { - /* Don't use absolutely gamma-correct mixing for the high-contrast - modes, to prevent the blue hues from being too washed out */ - gamma = 1.6; - } - - // TODO: Optimze pow out using a LUT - if (agb) { + double gamma = 2.2; + if (gb->color_correction_mode < GB_COLOR_CORRECTION_REDUCE_CONTRAST) { + /* Don't use absolutely gamma-correct mixing for the high-contrast + modes, to prevent the blue hues from being too washed out */ + gamma = 1.6; + } + + // TODO: Optimze pow out using a LUT + if (agb) { new_g = round(pow((pow(g / 255.0, gamma) * 5 + pow(b / 255.0, gamma)) / 6, 1 / gamma) * 255); - } - else { + } + else { new_g = round(pow((pow(g / 255.0, gamma) * 3 + pow(b / 255.0, gamma)) / 4, 1 / gamma) * 255); } } @@ -343,7 +343,7 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) new_b = new_b * (157 - 38) / 255 + 38; } } - else if (gb->color_correction_mode == GB_COLOR_CORRECTION_PRESERVE_BRIGHTNESS) { + else if (gb->color_correction_mode == GB_COLOR_CORRECTION_MODERN_BOOST_CONTRAST) { uint8_t old_max = MAX(r, MAX(g, b)); uint8_t new_max = MAX(new_r, MAX(new_g, new_b)); diff --git a/Core/display.h b/Core/display.h index bf0c83d7e..0c5c64eec 100644 --- a/Core/display.h +++ b/Core/display.h @@ -55,12 +55,16 @@ typedef struct { typedef enum { GB_COLOR_CORRECTION_DISABLED, GB_COLOR_CORRECTION_CORRECT_CURVES, - GB_COLOR_CORRECTION_EMULATE_HARDWARE, - GB_COLOR_CORRECTION_PRESERVE_BRIGHTNESS, + GB_COLOR_CORRECTION_MODERN_BALANCED, + GB_COLOR_CORRECTION_MODERN_BOOST_CONTRAST, GB_COLOR_CORRECTION_REDUCE_CONTRAST, GB_COLOR_CORRECTION_LOW_CONTRAST, + GB_COLOR_CORRECTION_MODERN_ACCURATE, } GB_color_correction_mode_t; +static const GB_color_correction_mode_t __attribute__((deprecated("Use GB_COLOR_CORRECTION_MODERN_BALANCED instead"))) GB_COLOR_CORRECTION_EMULATE_HARDWARE = GB_COLOR_CORRECTION_MODERN_BALANCED; +static const GB_color_correction_mode_t __attribute__((deprecated("Use GB_COLOR_CORRECTION_MODERN_BOOST_CONTRAST instead"))) GB_COLOR_CORRECTION_PRESERVE_BRIGHTNESS = GB_COLOR_CORRECTION_MODERN_BOOST_CONTRAST; + void GB_draw_tileset(GB_gameboy_t *gb, uint32_t *dest, GB_palette_type_t palette_type, uint8_t palette_index); void GB_draw_tilemap(GB_gameboy_t *gb, uint32_t *dest, GB_palette_type_t palette_type, uint8_t palette_index, GB_map_type_t map_type, GB_tileset_type_t tileset_type); uint8_t GB_get_oam_info(GB_gameboy_t *gb, GB_oam_info_t *dest, uint8_t *object_height); diff --git a/QuickLook/get_image_for_rom.c b/QuickLook/get_image_for_rom.c index f6e53fa20..6c9ac9198 100755 --- a/QuickLook/get_image_for_rom.c +++ b/QuickLook/get_image_for_rom.c @@ -59,7 +59,7 @@ int get_image_for_rom(const char *filename, const char *boot_path, uint32_t *out GB_set_rgb_encode_callback(&gb, rgb_encode); GB_set_async_input_callback(&gb, async_input_callback); GB_set_log_callback(&gb, log_callback); - GB_set_color_correction_mode(&gb, GB_COLOR_CORRECTION_EMULATE_HARDWARE); + GB_set_color_correction_mode(&gb, GB_COLOR_CORRECTION_MODERN_BALANCED); size_t length = strlen(filename); char extension[4] = {0,}; diff --git a/SDL/configuration.c b/SDL/configuration.c index d8ca1bdb2..35ad29952 100644 --- a/SDL/configuration.c +++ b/SDL/configuration.c @@ -38,7 +38,7 @@ configuration_t configuration = 0, 1, }, - .color_correction_mode = GB_COLOR_CORRECTION_EMULATE_HARDWARE, + .color_correction_mode = GB_COLOR_CORRECTION_MODERN_BALANCED, .highpass_mode = GB_HIGHPASS_ACCURATE, .scaling_mode = GB_SDL_SCALING_INTEGER_FACTOR, .blending_mode = GB_FRAME_BLENDING_MODE_ACCURATE, diff --git a/SDL/gui.c b/SDL/gui.c index 873696ce2..fbeb15b39 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -566,7 +566,7 @@ static const char *current_default_scale(unsigned index) const char *current_color_correction_mode(unsigned index) { - return (const char *[]){"Disabled", "Correct Color Curves", "Emulate Hardware", "Preserve Brightness", "Reduce Contrast", "Harsh Reality"} + return (const char *[]){"Disabled", "Correct Color Curves", "Modern - Balanced", "Modern - Boost Contrast", "Reduce Contrast", "Harsh Reality", "Modern - Accurate"} [configuration.color_correction_mode]; } @@ -647,6 +647,12 @@ static void cycle_color_correction(unsigned index) if (configuration.color_correction_mode == GB_COLOR_CORRECTION_LOW_CONTRAST) { configuration.color_correction_mode = GB_COLOR_CORRECTION_DISABLED; } + else if (configuration.color_correction_mode == GB_COLOR_CORRECTION_MODERN_BALANCED) { + configuration.color_correction_mode = GB_COLOR_CORRECTION_MODERN_ACCURATE; + } + else if (configuration.color_correction_mode == GB_COLOR_CORRECTION_MODERN_ACCURATE) { + configuration.color_correction_mode = GB_COLOR_CORRECTION_MODERN_BOOST_CONTRAST; + } else { configuration.color_correction_mode++; } @@ -657,6 +663,12 @@ static void cycle_color_correction_backwards(unsigned index) if (configuration.color_correction_mode == GB_COLOR_CORRECTION_DISABLED) { configuration.color_correction_mode = GB_COLOR_CORRECTION_LOW_CONTRAST; } + else if (configuration.color_correction_mode == GB_COLOR_CORRECTION_MODERN_ACCURATE) { + configuration.color_correction_mode = GB_COLOR_CORRECTION_MODERN_BALANCED; + } + else if (configuration.color_correction_mode == GB_COLOR_CORRECTION_MODERN_BOOST_CONTRAST) { + configuration.color_correction_mode = GB_COLOR_CORRECTION_MODERN_ACCURATE; + } else { configuration.color_correction_mode--; } diff --git a/SDL/main.c b/SDL/main.c index 93da1632b..7b873928c 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -889,7 +889,7 @@ int main(int argc, char **argv) fclose(prefs_file); /* Sanitize for stability */ - configuration.color_correction_mode %= GB_COLOR_CORRECTION_LOW_CONTRAST + 1; + configuration.color_correction_mode %= GB_COLOR_CORRECTION_MODERN_ACCURATE + 1; configuration.scaling_mode %= GB_SDL_SCALING_MAX; configuration.default_scale %= GB_SDL_DEFAULT_SCALE_MAX + 1; configuration.blending_mode %= GB_FRAME_BLENDING_MODE_ACCURATE + 1; diff --git a/libretro/libretro.c b/libretro/libretro.c index 3899864bf..2f51bd8ae 100644 --- a/libretro/libretro.c +++ b/libretro/libretro.c @@ -768,10 +768,10 @@ static void check_variables() GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_CORRECT_CURVES); } else if (strcmp(var.value, "emulate hardware") == 0) { - GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_EMULATE_HARDWARE); + GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_MODERN_BALANCED); } else if (strcmp(var.value, "preserve brightness") == 0) { - GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_PRESERVE_BRIGHTNESS); + GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_MODERN_BOOST_CONTRAST); } else if (strcmp(var.value, "reduce contrast") == 0) { GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_REDUCE_CONTRAST); @@ -779,6 +779,9 @@ static void check_variables() else if (strcmp(var.value, "harsh reality") == 0) { GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_LOW_CONTRAST); } + else if (strcmp(var.value, "accurate") == 0) { + GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_MODERN_ACCURATE); + } } var.key = "sameboy_light_temperature"; @@ -1049,10 +1052,10 @@ static void check_variables() GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_CORRECT_CURVES); } else if (strcmp(var.value, "emulate hardware") == 0) { - GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_EMULATE_HARDWARE); + GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_MODERN_BALANCED); } else if (strcmp(var.value, "preserve brightness") == 0) { - GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_PRESERVE_BRIGHTNESS); + GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_MODERN_BOOST_CONTRAST); } else if (strcmp(var.value, "reduce contrast") == 0) { GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_REDUCE_CONTRAST); @@ -1060,6 +1063,9 @@ static void check_variables() else if (strcmp(var.value, "harsh reality") == 0) { GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_LOW_CONTRAST); } + else if (strcmp(var.value, "accurate") == 0) { + GB_set_color_correction_mode(&gameboy[0], GB_COLOR_CORRECTION_MODERN_ACCURATE); + } } var.key = "sameboy_color_correction_mode_2"; @@ -1072,10 +1078,10 @@ static void check_variables() GB_set_color_correction_mode(&gameboy[1], GB_COLOR_CORRECTION_CORRECT_CURVES); } else if (strcmp(var.value, "emulate hardware") == 0) { - GB_set_color_correction_mode(&gameboy[1], GB_COLOR_CORRECTION_EMULATE_HARDWARE); + GB_set_color_correction_mode(&gameboy[1], GB_COLOR_CORRECTION_MODERN_BALANCED); } else if (strcmp(var.value, "preserve brightness") == 0) { - GB_set_color_correction_mode(&gameboy[1], GB_COLOR_CORRECTION_PRESERVE_BRIGHTNESS); + GB_set_color_correction_mode(&gameboy[1], GB_COLOR_CORRECTION_MODERN_BOOST_CONTRAST); } else if (strcmp(var.value, "reduce contrast") == 0) { GB_set_color_correction_mode(&gameboy[1], GB_COLOR_CORRECTION_REDUCE_CONTRAST); @@ -1083,6 +1089,9 @@ static void check_variables() else if (strcmp(var.value, "harsh reality") == 0) { GB_set_color_correction_mode(&gameboy[1], GB_COLOR_CORRECTION_LOW_CONTRAST); } + else if (strcmp(var.value, "accurate") == 0) { + GB_set_color_correction_mode(&gameboy[1], GB_COLOR_CORRECTION_MODERN_ACCURATE); + } } var.key = "sameboy_light_temperature_1"; diff --git a/libretro/libretro_core_options.inc b/libretro/libretro_core_options.inc index cf6e0b31a..94e147412 100644 --- a/libretro/libretro_core_options.inc +++ b/libretro/libretro_core_options.inc @@ -147,8 +147,9 @@ struct retro_core_option_v2_definition option_defs_us[] = { NULL, "video", { - { "emulate hardware", "Emulate Hardware" }, - { "preserve brightness", "Preserve Brightness" }, + { "emulate hardware", "Modern – Balanced" }, + { "accurate", "Modern – Accurate" }, + { "preserve brightness", "Modern – Boost Contrast" }, { "reduce contrast", "Reduce Contrast" }, { "correct curves", "Correct Color Curves" }, { "harsh reality", "Harsh Reality (Low Contrast)" }, @@ -425,8 +426,9 @@ struct retro_core_option_v2_definition option_defs_us[] = { NULL, "video", { - { "emulate hardware", "Emulate Hardware" }, - { "preserve brightness", "Preserve Brightness" }, + { "emulate hardware", "Modern – Balanced" }, + { "accurate", "Modern – Accurate" }, + { "preserve brightness", "Modern – Boost Contrast" }, { "reduce contrast", "Reduce Contrast" }, { "correct curves", "Correct Color Curves" }, { "harsh reality", "Harsh Reality (Low Contrast)" }, @@ -443,8 +445,9 @@ struct retro_core_option_v2_definition option_defs_us[] = { NULL, "video", { - { "emulate hardware", "Emulate Hardware" }, - { "preserve brightness", "Preserve Brightness" }, + { "emulate hardware", "Modern – Balanced" }, + { "accurate", "Modern – Accurate" }, + { "preserve brightness", "Modern – Boost Contrast" }, { "reduce contrast", "Reduce Contrast" }, { "correct curves", "Correct Color Curves" }, { "harsh reality", "Harsh Reality (Low Contrast)" }, From 352f8d54f850e7726b3c9e9b4ef145c906d63b9c Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 30 Jul 2022 14:31:21 +0300 Subject: [PATCH 104/116] Add popover descriptions to the color correction and high-pass filter options --- Cocoa/GBPreferencesWindow.m | 33 +++++++++++++++++++++++++++++++++ Cocoa/GBWarningPopover.h | 1 + Cocoa/GBWarningPopover.m | 25 +++++++++++++++++++++---- Cocoa/Preferences.xib | 32 +++++++++++++++++++++++++++----- 4 files changed, 82 insertions(+), 9 deletions(-) diff --git a/Cocoa/GBPreferencesWindow.m b/Cocoa/GBPreferencesWindow.m index 2b6b0708a..a9c2c913a 100644 --- a/Cocoa/GBPreferencesWindow.m +++ b/Cocoa/GBPreferencesWindow.m @@ -3,6 +3,7 @@ #import "GBButtons.h" #import "BigSurToolbar.h" #import "GBViewMetal.h" +#import "GBWarningPopover.h" #import @implementation GBPreferencesWindow @@ -966,4 +967,36 @@ - (void)setScreenshotFilterCheckbox:(NSButton *)screenshotFilterCheckbox } } +- (IBAction)displayColorCorrectionHelp:(id)sender +{ + [GBWarningPopover popoverWithContents: + (NSString * const[]){ + [GB_COLOR_CORRECTION_DISABLED] = @"Colors are directly interpreted as sRGB, resulting in unbalanced colors and inaccurate hues.", + [GB_COLOR_CORRECTION_CORRECT_CURVES] = @"Colors have their brightness corrected, but hues remain unbalanced.", + [GB_COLOR_CORRECTION_MODERN_BALANCED] = @"Emulates a modern display. Blue contrast is moderately enhanced at the cost of slight hue inaccuracy.", + [GB_COLOR_CORRECTION_MODERN_BOOST_CONTRAST] = @"Like Modern – Balanced, but further boosts the contrast of greens and magentas that is lacking on the original hardware.", + [GB_COLOR_CORRECTION_REDUCE_CONTRAST] = @"Slightly reduce the contrast to better represent the tint and contrast of the original display.", + [GB_COLOR_CORRECTION_LOW_CONTRAST] = @"Harshly reduce the contrast to accurately represent the tint low constrast of the original display.", + [GB_COLOR_CORRECTION_MODERN_ACCURATE] = @"Emulates a modern display. Colors have their hues and brightness corrected.", + } [self.colorCorrectionPopupButton.selectedItem.tag] + title:self.colorCorrectionPopupButton.selectedItem.title + onView:sender + timeout:6 + preferredEdge:NSRectEdgeMaxX]; +} + +- (IBAction)displayHighPassHelp:(id)sender +{ + [GBWarningPopover popoverWithContents: + (NSString * const[]){ + [GB_HIGHPASS_OFF] = @"No high-pass filter will be applied. DC offset will be kept, pausing and resuming will trigger audio pops.", + [GB_HIGHPASS_ACCURATE] = @"An accurate high-pass filter will be applied, removing the DC offset while somewhat attenuating the bass.", + [GB_HIGHPASS_REMOVE_DC_OFFSET] = @"A high-pass filter will be applied to the DC offset itself, removing the DC offset while preserving the waveform.", + } [self.highpassFilterPopupButton.indexOfSelectedItem] + title:self.highpassFilterPopupButton.selectedItem.title + onView:sender + timeout:6 + preferredEdge:NSRectEdgeMaxX]; +} + @end diff --git a/Cocoa/GBWarningPopover.h b/Cocoa/GBWarningPopover.h index 1d695b13e..953aa3c91 100644 --- a/Cocoa/GBWarningPopover.h +++ b/Cocoa/GBWarningPopover.h @@ -4,5 +4,6 @@ + (GBWarningPopover *) popoverWithContents:(NSString *)contents onView:(NSView *)view; + (GBWarningPopover *) popoverWithContents:(NSString *)contents onWindow:(NSWindow *)window; ++ (GBWarningPopover *) popoverWithContents:(NSString *)contents title:(NSString *)title onView:(NSView *)view timeout:(double)seconds preferredEdge:(NSRectEdge)preferredEdge; @end diff --git a/Cocoa/GBWarningPopover.m b/Cocoa/GBWarningPopover.m index 74f6444da..b66186ba2 100644 --- a/Cocoa/GBWarningPopover.m +++ b/Cocoa/GBWarningPopover.m @@ -4,7 +4,7 @@ @implementation GBWarningPopover -+ (GBWarningPopover *) popoverWithContents:(NSString *)contents onView:(NSView *)view ++ (GBWarningPopover *) popoverWithContents:(NSString *)contents title:(NSString *)title onView:(NSView *)view timeout:(double)seconds preferredEdge:(NSRectEdge)preferredEdge { [lastPopover close]; lastPopover = [[self alloc] init]; @@ -13,7 +13,17 @@ + (GBWarningPopover *) popoverWithContents:(NSString *)contents onView:(NSView * [lastPopover setAnimates:true]; lastPopover.contentViewController = [[NSViewController alloc] initWithNibName:@"PopoverView" bundle:nil]; NSTextField *field = (NSTextField *)lastPopover.contentViewController.view; - [field setStringValue:contents]; + if (!title) { + [field setStringValue:contents]; + } + else { + NSMutableAttributedString *fullContents = [[NSMutableAttributedString alloc] initWithString:title + attributes:@{NSFontAttributeName: [NSFont boldSystemFontOfSize:[NSFont systemFontSize]]}]; + [fullContents appendAttributedString:[[NSAttributedString alloc] initWithString:[@"\n" stringByAppendingString:contents] + attributes:@{NSFontAttributeName: [NSFont systemFontOfSize:[NSFont systemFontSize]]}]]; + [field setAttributedStringValue:fullContents]; + + } NSSize textSize = [field.cell cellSizeForBounds:[field.cell drawingRectForBounds:NSMakeRect(0, 0, 240, CGFLOAT_MAX)]]; textSize.width = ceil(textSize.width) + 16; textSize.height = ceil(textSize.height) + 12; @@ -25,11 +35,13 @@ + (GBWarningPopover *) popoverWithContents:(NSString *)contents onView:(NSView * [lastPopover showRelativeToRect:view.bounds ofView:view - preferredEdge:NSMinYEdge]; + preferredEdge:preferredEdge]; NSRect frame = field.frame; frame.origin.x += 8; - frame.origin.y -= 6; + frame.origin.y += 6; + frame.size.width -= 16; + frame.size.height -= 12; field.frame = frame; @@ -38,6 +50,11 @@ + (GBWarningPopover *) popoverWithContents:(NSString *)contents onView:(NSView * return lastPopover; } ++ (GBWarningPopover *) popoverWithContents:(NSString *)contents onView:(NSView *)view +{ + return [self popoverWithContents:contents title:nil onView:view timeout:3.0 preferredEdge:NSMinYEdge]; +} + + (GBWarningPopover *)popoverWithContents:(NSString *)contents onWindow:(NSWindow *)window { return [self popoverWithContents:contents onView:window.contentView.superview.subviews.lastObject]; diff --git a/Cocoa/Preferences.xib b/Cocoa/Preferences.xib index 464de278a..57a4755c0 100644 --- a/Cocoa/Preferences.xib +++ b/Cocoa/Preferences.xib @@ -177,7 +177,7 @@ - + @@ -329,6 +329,17 @@ + @@ -566,7 +577,7 @@ - + @@ -574,7 +585,7 @@ - + @@ -612,15 +623,26 @@ - + + - + From 44618f75c433096f5f38890442ec5742d895c6a6 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sat, 30 Jul 2022 19:09:14 +0300 Subject: [PATCH 105/116] Optimize the memory viewer, GB_INTERNAL no longer required --- Cocoa/GBMemoryByteArray.m | 294 ++++++++++++++++++++++++-------------- Core/gb.c | 8 +- Core/gb.h | 1 + HexFiend/HFController.m | 7 +- 4 files changed, 199 insertions(+), 111 deletions(-) diff --git a/Cocoa/GBMemoryByteArray.m b/Cocoa/GBMemoryByteArray.m index a4ff53739..55e1bd152 100644 --- a/Cocoa/GBMemoryByteArray.m +++ b/Cocoa/GBMemoryByteArray.m @@ -1,4 +1,3 @@ -#define GB_INTERNAL // Todo: Some memory accesses are being done using the struct directly #import "GBMemoryByteArray.h" #import "GBCompleteByteSlice.h" @@ -32,71 +31,111 @@ - (unsigned long long)length } } +- (uint16_t)base +{ + switch (_mode) { + case GBMemoryEntireSpace: return 0; + case GBMemoryROM: return 0; + case GBMemoryVRAM: return 0x8000; + case GBMemoryExternalRAM: return 0xA000; + case GBMemoryRAM: return 0xC000; + } +} + - (void)copyBytes:(unsigned char *)dst range:(HFRange)range { - [_document performAtomicBlock:^{ - uint8_t *_dst = dst; - uint16_t addr = (uint16_t) range.location; - unsigned long long length = range.length; - if (_mode == GBMemoryEntireSpace) { - while (length) { - *(_dst++) = [_document readMemory:addr++]; - length--; + // Do everything in 0x1000 chunks, never cross a 0x1000 boundary + if ((range.location & 0xF000) != ((range.location + range.length) & 0xF000)) { + size_t partial = 0x1000 - (range.location & 0xFFF); + [self copyBytes:dst + partial range:HFRangeMake(range.location + partial, range.length - partial)]; + range.length = partial; + } + range.location += self.base; + + GB_gameboy_t *gb = _document.gameboy; + + switch (range.location >> 12) { + case 0x0: + case 0x1: + case 0x2: + case 0x3: { + uint16_t bank; + uint8_t *data = GB_get_direct_access(gb, GB_DIRECT_ACCESS_ROM0, NULL, &bank); + memcpy(dst, data + bank * 0x4000 + range.location, range.length); + break; + } + case 0x4: + case 0x5: + case 0x6: + case 0x7: { + uint16_t bank; + size_t size; + uint8_t *data = GB_get_direct_access(gb, GB_DIRECT_ACCESS_ROM, &size, &bank); + if (_mode != GBMemoryEntireSpace) { + bank = self.selectedBank & (size / 0x4000 - 1); } + memcpy(dst, data + bank * 0x4000 + range.location - 0x4000, range.length); + break; } - else { - uint8_t *_dst = dst; - uint16_t bank_backup = 0; - GB_gameboy_t *gb = _document.gameboy; - switch (_mode) { - case GBMemoryROM: - bank_backup = gb->mbc_rom_bank; - gb->mbc_rom_bank = self.selectedBank; - break; - case GBMemoryVRAM: - bank_backup = gb->cgb_vram_bank; - if (GB_is_cgb(gb)) { - gb->cgb_vram_bank = self.selectedBank; - } - addr += 0x8000; - break; - case GBMemoryExternalRAM: - bank_backup = gb->mbc_ram_bank; - gb->mbc_ram_bank = self.selectedBank; - addr += 0xA000; - break; - case GBMemoryRAM: - bank_backup = gb->cgb_ram_bank; - if (GB_is_cgb(gb)) { - gb->cgb_ram_bank = self.selectedBank; + case 0x8: + case 0x9: { + uint16_t bank; + size_t size; + uint8_t *data = GB_get_direct_access(gb, GB_DIRECT_ACCESS_VRAM, &size, &bank); + if (_mode != GBMemoryEntireSpace) { + bank = self.selectedBank & (size / 0x2000 - 1); + } + memcpy(dst, data + bank * 0x2000 + range.location - 0x8000, range.length); + break; + } + case 0xA: + case 0xB: { + // Some carts are special, use memory read directly in full mem mode + if (_mode == GBMemoryEntireSpace) { + case 0xF: + slow_path: + [_document performAtomicBlock:^{ + for (unsigned i = 0; i < range.length; i++) { + dst[i] = GB_safe_read_memory(gb, range.location + i); } - addr += 0xC000; - break; - default: - assert(false); + }]; + break; } - while (length) { - *(_dst++) = [_document readMemory:addr++]; - length--; + else { + uint16_t bank; + size_t size; + uint8_t *data = GB_get_direct_access(gb, GB_DIRECT_ACCESS_CART_RAM, &size, &bank); + bank = self.selectedBank & (size / 0x2000 - 1); + if (size == 0) { + memset(dst, 0xFF, range.length); + } + else if (range.location + range.length - 0xA000 > size) { + goto slow_path; + } + else { + memcpy(dst, data + bank * 0x2000 + range.location - 0xA000, range.length); + } + break; } - switch (_mode) { - case GBMemoryROM: - gb->mbc_rom_bank = bank_backup; - break; - case GBMemoryVRAM: - gb->cgb_vram_bank = bank_backup; - break; - case GBMemoryExternalRAM: - gb->mbc_ram_bank = bank_backup; - break; - case GBMemoryRAM: - gb->cgb_ram_bank = bank_backup; - break; - default: - assert(false); + } + case 0xC: + case 0xE: { + uint8_t *data = GB_get_direct_access(gb, GB_DIRECT_ACCESS_RAM, NULL, NULL); + memcpy(dst, data + (range.location & 0xFFF), range.length); + break; + } + + case 0xD: { + uint16_t bank; + size_t size; + uint8_t *data = GB_get_direct_access(gb, GB_DIRECT_ACCESS_RAM, &size, &bank); + if (_mode != GBMemoryEntireSpace) { + bank = self.selectedBank & (size / 0x1000 - 1); } + memcpy(dst, data + bank * 0x1000 + range.location - 0xD000, range.length); + break; } - }]; + } } - (NSArray *)byteSlices @@ -114,65 +153,104 @@ - (HFByteArray *)subarrayWithRange:(HFRange)range return ret; } -- (void)insertByteSlice:(HFByteSlice *)slice inRange:(HFRange)lrange +- (void)insertByteSlice:(HFByteSlice *)slice inRange:(HFRange)range { - if (slice.length != lrange.length) return; /* Insertion is not allowed, only overwriting. */ - [_document performAtomicBlock:^{ - uint16_t addr = (uint16_t) lrange.location; - uint16_t bank_backup = 0; - GB_gameboy_t *gb = _document.gameboy; - switch (_mode) { - case GBMemoryROM: - bank_backup = gb->mbc_rom_bank; - gb->mbc_rom_bank = self.selectedBank; + if (slice.length != range.length) return; /* Insertion is not allowed, only overwriting. */ + // Do everything in 0x1000 chunks, never cross a 0x1000 boundary + if ((range.location & 0xF000) != ((range.location + range.length) & 0xF000)) { + size_t partial = 0x1000 - (range.location & 0xFFF); + if (slice.length - partial) { + [self insertByteSlice:[slice subsliceWithRange:HFRangeMake(partial, slice.length - partial)] + inRange:HFRangeMake(range.location + partial, range.length - partial)]; + } + range.length = partial; + } + range.location += self.base; + + GB_gameboy_t *gb = _document.gameboy; + + + switch (range.location >> 12) { + case 0x0: + case 0x1: + case 0x2: + case 0x3: + case 0x4: + case 0x5: + case 0x6: + case 0x7: { + return; // ROM not writeable + } + case 0x8: + case 0x9: { + uint16_t bank; + size_t size; + uint8_t *data = GB_get_direct_access(gb, GB_DIRECT_ACCESS_VRAM, &size, &bank); + if (_mode != GBMemoryEntireSpace) { + bank = self.selectedBank & (size / 0x2000 - 1); + } + uint8_t sliceData[range.length]; + [slice copyBytes:sliceData range:HFRangeMake(0, range.length)]; + memcpy(data + bank * 0x2000 + range.location - 0x8000, sliceData, range.length); + break; + } + case 0xA: + case 0xB: { + // Some carts are special, use memory write directly in full mem mode + if (_mode == GBMemoryEntireSpace) { + case 0xF: + slow_path: + [_document performAtomicBlock:^{ + uint8_t sliceData[range.length]; + [slice copyBytes:sliceData range:HFRangeMake(0, range.length)]; + for (unsigned i = 0; i < range.length; i++) { + GB_write_memory(gb, range.location + i, sliceData[i]); + } + }]; break; - case GBMemoryVRAM: - bank_backup = gb->cgb_vram_bank; - if (GB_is_cgb(gb)) { - gb->cgb_vram_bank = self.selectedBank; + } + else { + uint16_t bank; + size_t size; + uint8_t *data = GB_get_direct_access(gb, GB_DIRECT_ACCESS_CART_RAM, &size, &bank); + bank = self.selectedBank & (size / 0x2000 - 1); + if (size == 0) { + // Nothing to write to } - addr += 0x8000; - break; - case GBMemoryExternalRAM: - bank_backup = gb->mbc_ram_bank; - gb->mbc_ram_bank = self.selectedBank; - addr += 0xA000; - break; - case GBMemoryRAM: - bank_backup = gb->cgb_ram_bank; - if (GB_is_cgb(gb)) { - gb->cgb_ram_bank = self.selectedBank; + else if (range.location + range.length - 0xA000 > size) { + goto slow_path; + } + else { + uint8_t sliceData[range.length]; + [slice copyBytes:sliceData range:HFRangeMake(0, range.length)]; + memcpy(data + bank * 0x2000 + range.location - 0xA000, sliceData, range.length); } - addr += 0xC000; - break; - default: break; + } } - uint8_t values[lrange.length]; - [slice copyBytes:values range:HFRangeMake(0, lrange.length)]; - uint8_t *src = values; - unsigned long long length = lrange.length; - while (length) { - [_document writeMemory:addr++ value:*(src++)]; - length--; + case 0xC: + case 0xE: { + uint8_t *data = GB_get_direct_access(gb, GB_DIRECT_ACCESS_RAM, NULL, NULL); + uint8_t sliceData[range.length]; + [slice copyBytes:sliceData range:HFRangeMake(0, range.length)]; + memcpy(data + (range.location & 0xFFF), sliceData, range.length); + break; } - switch (_mode) { - case GBMemoryROM: - gb->mbc_rom_bank = bank_backup; - break; - case GBMemoryVRAM: - gb->cgb_vram_bank = bank_backup; - break; - case GBMemoryExternalRAM: - gb->mbc_ram_bank = bank_backup; - break; - case GBMemoryRAM: - gb->cgb_ram_bank = bank_backup; - break; - default: - break; + + case 0xD: { + uint16_t bank; + size_t size; + uint8_t *data = GB_get_direct_access(gb, GB_DIRECT_ACCESS_RAM, &size, &bank); + if (_mode != GBMemoryEntireSpace) { + bank = self.selectedBank & (size / 0x1000 - 1); + } + uint8_t sliceData[range.length]; + [slice copyBytes:sliceData range:HFRangeMake(0, range.length)]; + + memcpy(data + bank * 0x1000 + range.location - 0xD000, sliceData, range.length); + break; } - }]; + } } @end diff --git a/Core/gb.c b/Core/gb.c index 44c8ecabd..f8a9321f6 100644 --- a/Core/gb.c +++ b/Core/gb.c @@ -1728,7 +1728,11 @@ void *GB_get_direct_access(GB_gameboy_t *gb, GB_direct_access_t access, size_t * switch (access) { case GB_DIRECT_ACCESS_ROM: *size = gb->rom_size; - *bank = gb->mbc_rom_bank; + *bank = gb->mbc_rom_bank & (gb->rom_size / 0x4000 - 1); + return gb->rom; + case GB_DIRECT_ACCESS_ROM0: + *size = gb->rom_size; + *bank = gb->mbc_rom0_bank & (gb->rom_size / 0x4000 - 1); return gb->rom; case GB_DIRECT_ACCESS_RAM: *size = gb->ram_size; @@ -1736,7 +1740,7 @@ void *GB_get_direct_access(GB_gameboy_t *gb, GB_direct_access_t access, size_t * return gb->ram; case GB_DIRECT_ACCESS_CART_RAM: *size = gb->mbc_ram_size; - *bank = gb->mbc_ram_bank; + *bank = gb->mbc_ram_bank & (gb->mbc_ram_size / 0x2000 - 1); return gb->mbc_ram; case GB_DIRECT_ACCESS_VRAM: *size = gb->vram_size; diff --git a/Core/gb.h b/Core/gb.h index ca6b01187..64e1acdde 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -860,6 +860,7 @@ typedef enum { GB_DIRECT_ACCESS_BGP, GB_DIRECT_ACCESS_OBP, GB_DIRECT_ACCESS_IE, + GB_DIRECT_ACCESS_ROM0, // Identical to ROM, but returns the correct rom0 bank in the bank output argument } GB_direct_access_t; /* Returns a mutable pointer to various hardware memories. If that memory is banked, the current bank diff --git a/HexFiend/HFController.m b/HexFiend/HFController.m index 74e033c03..9d4b1aec0 100644 --- a/HexFiend/HFController.m +++ b/HexFiend/HFController.m @@ -279,8 +279,13 @@ - (void)setDisplayedLineRange:(HFFPRange)range { #if ! NDEBUG HFASSERT(range.location >= 0); HFASSERT(range.length >= 0); - HFASSERT(range.location + range.length <= HFULToFP([self totalLineCount])); #endif + if (range.location + range.length > HFULToFP([self totalLineCount])) { + range.location = [self totalLineCount] - range.length; + if (range.location < 0) { + return; + } + } if (! HFFPRangeEqualsRange(range, displayedLineRange)) { displayedLineRange = range; [self _addPropertyChangeBits:HFControllerDisplayedLineRange]; From 9383acda342784794a4c624d313df21cfafd7244 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 31 Jul 2022 00:41:27 +0300 Subject: [PATCH 106/116] Optimize performAtomicBlock --- Cocoa/Document.m | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index 2fc41e228..0b717e7e5 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -104,6 +104,8 @@ @interface Document () NSSavePanel *_audioSavePanel; bool _isRecordingAudio; + + volatile void (^_pendingAtomicBlock)(); } @property GBAudioClient *audioClient; @@ -477,7 +479,7 @@ - (void) preRun return ret; } -- (void) run +- (void)run { assert(!master); [self preRun]; @@ -492,6 +494,10 @@ - (void) run else { linkOffset -= masterTable[GB_run(&slave->gb)]; } + if (unlikely(_pendingAtomicBlock)) { + _pendingAtomicBlock(); + _pendingAtomicBlock = nil; + } } free(masterTable); free(slaveTable); @@ -509,6 +515,10 @@ - (void) run else { GB_run(&gb); } + if (unlikely(_pendingAtomicBlock)) { + _pendingAtomicBlock(); + _pendingAtomicBlock = nil; + } } } [self postRun]; @@ -1506,20 +1516,25 @@ - (void) writeMemory:(uint16_t)addr value:(uint8_t)value - (void) performAtomicBlock: (void (^)())block { while (!GB_is_inited(&gb)); - bool was_running = running && !GB_debugger_is_stopped(&gb); + bool isRunning = running && !GB_debugger_is_stopped(&gb); if (master) { - was_running |= master->running; + isRunning |= master->running; } - if (was_running) { - [self stop]; + if (!isRunning) { + block(); + return; } - block(); - if (was_running) { - [self start]; + + if (master) { + [master performAtomicBlock:block]; + return; } + + _pendingAtomicBlock = block; + while (_pendingAtomicBlock); } -- (NSString *) captureOutputForBlock: (void (^)())block +- (NSString *)captureOutputForBlock: (void (^)())block { capturedOutput = [[NSMutableString alloc] init]; [self performAtomicBlock:block]; From d6adbe0c7f01907a769265a08c6703eb191d3b6d Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 31 Jul 2022 00:53:38 +0300 Subject: [PATCH 107/116] No clue why force redrawing the parent wasn't enough --- Cocoa/Document.m | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index 0b717e7e5..1d3f620d7 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -889,6 +889,7 @@ - (void) initMemoryView [layoutView setFrame:layoutViewFrame]; [layoutView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable | NSViewMaxYMargin]; [self.memoryView addSubview:layoutView]; + self.memoryView = layoutView; self.memoryBankItem.enabled = false; } @@ -1757,7 +1758,9 @@ - (IBAction)hexUpdateSpace:(NSPopUpButtonCell *)sender } [self.memoryBankInput setStringValue:[NSString stringWithFormat:@"$%x", byteArray.selectedBank]]; [hex_controller reloadData]; - [self.memoryView setNeedsDisplay:true]; + for (NSView *view in self.memoryView.subviews) { + [view setNeedsDisplay:true]; + } } - (GB_gameboy_t *) gameboy From 7b5846fbaf10d543e09585eb701577e6a859de22 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 31 Jul 2022 01:16:03 +0300 Subject: [PATCH 108/116] Build break --- Cocoa/Document.m | 3 +++ Core/defs.h | 7 +++++-- SDL/audio.c | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index 1d3f620d7..f235bca18 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -14,6 +14,9 @@ #import "GBObjectView.h" #import "GBPaletteView.h" +#define likely(x) GB_likely(x) +#define unlikely(x) GB_unlikely(x) + @implementation NSString (relativePath) - (NSString *)pathRelativeToDirectory:(NSString *)directory diff --git a/Core/defs.h b/Core/defs.h index b51298673..082da67af 100644 --- a/Core/defs.h +++ b/Core/defs.h @@ -1,11 +1,14 @@ #ifndef defs_h #define defs_h +#define GB_likely(x) __builtin_expect((bool)(x), 1) +#define GB_unlikely(x) __builtin_expect((bool)(x), 0) + #ifdef GB_INTERNAL // "Keyword" definitions -#define likely(x) __builtin_expect((bool)(x), 1) -#define unlikely(x) __builtin_expect((bool)(x), 0) +#define likely(x) GB_likely(x) +#define unlikely(x) GB_unlikely(x) #define internal __attribute__((visibility("internal"))) diff --git a/SDL/audio.c b/SDL/audio.c index f64c3114b..29b3eb0f6 100644 --- a/SDL/audio.c +++ b/SDL/audio.c @@ -5,7 +5,8 @@ #include "audio/audio.h" #include "configuration.h" -#define unlikely(x) __builtin_expect((bool)(x), 0) +#define likely(x) GB_likely(x) +#define unlikely(x) GB_unlikely(x) static const GB_audio_driver_t *driver = NULL; From 1bdd58d051edcaac579b592821a17edf5ceb8bb4 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 31 Jul 2022 01:17:04 +0300 Subject: [PATCH 109/116] Auto-skip D-Pad configuration if hats are used, closes #480 --- SDL/gui.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/SDL/gui.c b/SDL/gui.c index fbeb15b39..befea12ca 100644 --- a/SDL/gui.c +++ b/SDL/gui.c @@ -1792,14 +1792,23 @@ void run_gui(bool is_running) return; } } - case SDL_JOYBUTTONDOWN: - { + case SDL_JOYBUTTONDOWN: { if (gui_state == WAITING_FOR_JBUTTON && joypad_configuration_progress != JOYPAD_BUTTONS_MAX) { should_render = true; configuration.joypad_configuration[joypad_configuration_progress++] = event.jbutton.button; } break; } + case SDL_JOYHATMOTION: { + if (gui_state == WAITING_FOR_JBUTTON && joypad_configuration_progress == JOYPAD_BUTTON_RIGHT) { + should_render = true; + configuration.joypad_configuration[joypad_configuration_progress++] = -1; + configuration.joypad_configuration[joypad_configuration_progress++] = -1; + configuration.joypad_configuration[joypad_configuration_progress++] = -1; + configuration.joypad_configuration[joypad_configuration_progress++] = -1; + } + break; + } case SDL_JOYAXISMOTION: { if (gui_state == WAITING_FOR_JBUTTON && From ae1d3ddf6c1b48065d4311366ba3c837bc8382d8 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 31 Jul 2022 13:30:21 +0300 Subject: [PATCH 110/116] =?UTF-8?q?Work=20around=20a=20Wayland=20bug=20?= =?UTF-8?q?=E2=80=93=20wait=20for=20mouse=20up=20before=20creating=20a=20n?= =?UTF-8?q?ew=20window=20#470?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 9 +++++++++ OpenDialog/gtk.c | 13 +++++++++++++ 2 files changed, 22 insertions(+) diff --git a/Makefile b/Makefile index fc8d932b9..334e21d14 100644 --- a/Makefile +++ b/Makefile @@ -274,6 +274,10 @@ endif $(OBJ)/SDL/%.dep: SDL/% -@$(MKDIR) -p $(dir $@) $(CC) $(CFLAGS) $(SDL_CFLAGS) $(GL_CFLAGS) -MT $(OBJ)/$^.o -M $^ -c -o $@ + +$(OBJ)/OpenDialog/%.dep: OpenDialog/% + -@$(MKDIR) -p $(dir $@) + $(CC) $(CFLAGS) $(SDL_CFLAGS) $(GL_CFLAGS) -MT $(OBJ)/$^.o -M $^ -c -o $@ $(OBJ)/%.dep: % -@$(MKDIR) -p $(dir $@) @@ -289,6 +293,11 @@ $(OBJ)/SDL/%.c.o: SDL/%.c -@$(MKDIR) -p $(dir $@) $(CC) $(CFLAGS) $(FAT_FLAGS) $(SDL_CFLAGS) $(GL_CFLAGS) -c $< -o $@ +$(OBJ)/OpenDialog/%.c.o: OpenDialog/%.c + -@$(MKDIR) -p $(dir $@) + $(CC) $(CFLAGS) $(FAT_FLAGS) $(SDL_CFLAGS) $(GL_CFLAGS) -c $< -o $@ + + $(OBJ)/%.c.o: %.c -@$(MKDIR) -p $(dir $@) $(CC) $(CFLAGS) $(FAT_FLAGS) -c $< -o $@ diff --git a/OpenDialog/gtk.c b/OpenDialog/gtk.c index d0eb9427e..d3c0faa81 100644 --- a/OpenDialog/gtk.c +++ b/OpenDialog/gtk.c @@ -1,4 +1,5 @@ #include "open_dialog.h" +#include #include #include #include @@ -51,8 +52,18 @@ if (symbol == NULL) goto lazy_error void nop(){} +static void wait_mouse_up(void) +{ + while (true) { + if (!(SDL_GetMouseState(NULL, NULL) & SDL_BUTTON(SDL_BUTTON_LEFT))) break; + SDL_Event event; + SDL_PollEvent(&event); + } +} + char *do_open_rom_dialog(void) { + wait_mouse_up(); static void *handle = NULL; TRY_DLOPEN("libgtk-3.so"); @@ -129,6 +140,7 @@ char *do_open_rom_dialog(void) char *do_open_folder_dialog(void) { + wait_mouse_up(); static void *handle = NULL; TRY_DLOPEN("libgtk-3.so"); @@ -261,6 +273,7 @@ static void filter_changed(void *dialog, char *do_save_recording_dialog(unsigned frequency) { + wait_mouse_up(); static void *handle = NULL; TRY_DLOPEN("libgtk-3.so"); From ab07f955e4cc427d54886899af8335ff16120500 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 31 Jul 2022 13:30:28 +0300 Subject: [PATCH 111/116] Update version to 0.15.4 --- version.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.mk b/version.mk index 54ec09031..ee8731d3e 100644 --- a/version.mk +++ b/version.mk @@ -1 +1 @@ -VERSION := 0.15.3 \ No newline at end of file +VERSION := 0.15.4 \ No newline at end of file From 779ffe3e1ba5af43675db8251ec5b481d5c04a3d Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Wed, 3 Aug 2022 01:06:34 +0300 Subject: [PATCH 112/116] Fix desaturation --- Core/display.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Core/display.c b/Core/display.c index b0dca98ff..e0b2c9bb2 100644 --- a/Core/display.c +++ b/Core/display.c @@ -305,12 +305,12 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) new_b = b; if (gb->color_correction_mode == GB_COLOR_CORRECTION_REDUCE_CONTRAST) { r = new_r; - g = new_r; - b = new_r; + g = new_g; + b = new_b; - new_r = new_r * 7 / 8 + ( g + b) / 16; - new_g = new_g * 7 / 8 + (r + b) / 16; - new_b = new_b * 7 / 8 + (r + g ) / 16; + new_r = new_r * 15 / 16 + ( g + b) / 32; + new_g = new_g * 15 / 16 + (r + b) / 32; + new_b = new_b * 15 / 16 + (r + g ) / 32; if (agb) { new_r = new_r * (224 - 40) / 255 + 20; @@ -325,12 +325,12 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) } else if (gb->color_correction_mode == GB_COLOR_CORRECTION_LOW_CONTRAST) { r = new_r; - g = new_r; - b = new_r; - - new_r = new_r * 7 / 8 + ( g + b) / 16; - new_g = new_g * 7 / 8 + (r + b) / 16; - new_b = new_b * 7 / 8 + (r + g ) / 16; + g = new_g; + b = new_b; + + new_r = new_r * 15 / 16 + ( g + b) / 32; + new_g = new_g * 15 / 16 + (r + b) / 32; + new_b = new_b * 15 / 16 + (r + g ) / 32; if (agb) { new_r = new_r * (167 - 27) / 255 + 27; From f0959d4e709abd45e9a73769ec6c741755a85b31 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Thu, 4 Aug 2022 00:28:02 +0300 Subject: [PATCH 113/116] Fix threading issue causing crashes and deadlocks --- Cocoa/Document.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index f235bca18..285daf480 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -108,7 +108,7 @@ @interface Document () NSSavePanel *_audioSavePanel; bool _isRecordingAudio; - volatile void (^_pendingAtomicBlock)(); + void (^ volatile _pendingAtomicBlock)(); } @property GBAudioClient *audioClient; From 52ab20054486330a8757641230f55c716ea525e6 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Tue, 9 Aug 2022 00:54:31 +0300 Subject: [PATCH 114/116] Accurately emulate CGB first frame behavior. Fixes #432, fixes #482 --- Cocoa/Document.m | 72 ++++++++++++++++++--------------------------- Core/display.c | 49 ++++++++++++++++++++---------- Core/display.h | 1 + Core/gb.c | 10 +++++++ Core/gb.h | 12 +++++--- Core/memory.c | 10 +++++-- SDL/main.c | 20 +++++++------ libretro/libretro.c | 32 ++++++++++++++++++++ 8 files changed, 132 insertions(+), 74 deletions(-) diff --git a/Cocoa/Document.m b/Cocoa/Document.m index 285daf480..e2b12c0ba 100644 --- a/Cocoa/Document.m +++ b/Cocoa/Document.m @@ -56,7 +56,16 @@ - (NSString *)pathRelativeToDirectory:(NSString *)directory }; @interface Document () +@property GBAudioClient *audioClient; +@end + +@implementation Document { + GB_gameboy_t gb; + volatile bool running; + volatile bool stopping; + NSConditionLock *has_debugger_input; + NSMutableArray *debugger_input_queue; NSMutableAttributedString *pending_console_output; NSRecursiveLock *console_output_lock; @@ -66,10 +75,10 @@ @interface Document () bool fullScreen; bool in_sync_input; HFController *hex_controller; - + NSString *lastConsoleInput; HFLineCountingRepresenter *lineRep; - + CVImageBufferRef cameraImage; AVCaptureSession *cameraSession; AVCaptureConnection *cameraConnection; @@ -111,25 +120,6 @@ @interface Document () void (^ volatile _pendingAtomicBlock)(); } -@property GBAudioClient *audioClient; -- (void) vblank; -- (void) log: (const char *) log withAttributes: (GB_log_attributes) attributes; -- (char *) getDebuggerInput; -- (char *) getAsyncDebuggerInput; -- (void) cameraRequestUpdate; -- (uint8_t) cameraGetPixelAtX:(uint8_t)x andY:(uint8_t)y; -- (void) printImage:(uint32_t *)image height:(unsigned) height - topMargin:(unsigned) topMargin bottomMargin: (unsigned) bottomMargin - exposure:(unsigned) exposure; -- (void) gotNewSample:(GB_sample_t *)sample; -- (void) rumbleChanged:(double)amp; -- (void) loadBootROM:(GB_boot_rom_t)type; -- (void)linkCableBitStart:(bool)bit; -- (bool)linkCableBitEnd; -- (void)infraredStateChanged:(bool)state; - -@end - static void boot_rom_load(GB_gameboy_t *gb, GB_boot_rom_t type) { Document *self = (__bridge Document *)GB_get_user_data(gb); @@ -139,7 +129,7 @@ static void boot_rom_load(GB_gameboy_t *gb, GB_boot_rom_t type) static void vblank(GB_gameboy_t *gb, GB_vblank_type_t type) { Document *self = (__bridge Document *)GB_get_user_data(gb); - [self vblank]; + [self vblankWithType:type]; } static void consoleLog(GB_gameboy_t *gb, const char *string, GB_log_attributes attributes) @@ -227,15 +217,6 @@ static void infraredStateChanged(GB_gameboy_t *gb, bool on) } -@implementation Document -{ - GB_gameboy_t gb; - volatile bool running; - volatile bool stopping; - NSConditionLock *has_debugger_input; - NSMutableArray *debugger_input_queue; -} - - (instancetype)init { self = [super init]; @@ -341,26 +322,29 @@ - (void) updateMinSize self.osdView.usesSGBScale = GB_get_screen_width(&gb) == 256; } -- (void) vblank +- (void) vblankWithType:(GB_vblank_type_t)type { if (_gbsVisualizer) { dispatch_async(dispatch_get_main_queue(), ^{ [_gbsVisualizer setNeedsDisplay:true]; }); } - [self.view flip]; - if (borderModeChanged) { - dispatch_sync(dispatch_get_main_queue(), ^{ - size_t previous_width = GB_get_screen_width(&gb); - GB_set_border_mode(&gb, (GB_border_mode_t) [[NSUserDefaults standardUserDefaults] integerForKey:@"GBBorderMode"]); - if (GB_get_screen_width(&gb) != previous_width) { - [self.view screenSizeChanged]; - [self updateMinSize]; - } - }); - borderModeChanged = false; + if (type != GB_VBLANK_TYPE_REPEAT) { + [self.view flip]; + if (borderModeChanged) { + dispatch_sync(dispatch_get_main_queue(), ^{ + size_t previous_width = GB_get_screen_width(&gb); + GB_set_border_mode(&gb, (GB_border_mode_t) [[NSUserDefaults standardUserDefaults] integerForKey:@"GBBorderMode"]); + if (GB_get_screen_width(&gb) != previous_width) { + [self.view screenSizeChanged]; + [self updateMinSize]; + } + }); + borderModeChanged = false; + } + GB_set_pixels_output(&gb, self.view.pixels); } - GB_set_pixels_output(&gb, self.view.pixels); + if (self.vramWindow.isVisible) { dispatch_async(dispatch_get_main_queue(), ^{ self.view.mouseHidingEnabled = (self.mainWindow.styleMask & NSWindowStyleMaskFullScreen) != 0; diff --git a/Core/display.c b/Core/display.c index e0b2c9bb2..27c1b029b 100644 --- a/Core/display.c +++ b/Core/display.c @@ -107,7 +107,7 @@ typedef struct __attribute__((packed)) { } object_t; void GB_display_vblank(GB_gameboy_t *gb, GB_vblank_type_t type) -{ +{ gb->vblank_just_occured = true; gb->cycles_since_vblank_callback = 0; gb->lcd_disabled_outside_of_vblank = false; @@ -123,9 +123,19 @@ void GB_display_vblank(GB_gameboy_t *gb, GB_vblank_type_t type) } } + if (GB_is_cgb(gb) && type == GB_VBLANK_TYPE_NORMAL_FRAME && gb->frame_repeat_countdown > 0 && gb->frame_skip_state == GB_FRAMESKIP_LCD_TURNED_ON) { + GB_handle_rumble(gb); + + if (gb->vblank_callback) { + gb->vblank_callback(gb, GB_VBLANK_TYPE_REPEAT); + } + GB_timing_sync(gb); + return; + } + bool is_ppu_stopped = !GB_is_cgb(gb) && gb->stopped && gb->io_registers[GB_IO_LCDC] & 0x80; - if (!gb->disable_rendering && ((!(gb->io_registers[GB_IO_LCDC] & 0x80) || is_ppu_stopped) || gb->cgb_repeated_a_frame || gb->frame_skip_state == GB_FRAMESKIP_LCD_TURNED_ON)) { + if (!gb->disable_rendering && ((!(gb->io_registers[GB_IO_LCDC] & 0x80) || is_ppu_stopped) || gb->frame_skip_state == GB_FRAMESKIP_LCD_TURNED_ON)) { /* LCD is off, set screen to white or black (if LCD is on in stop mode) */ if (!GB_is_sgb(gb)) { uint32_t color = 0; @@ -313,9 +323,9 @@ uint32_t GB_convert_rgb15(GB_gameboy_t *gb, uint16_t color, bool for_border) new_b = new_b * 15 / 16 + (r + g ) / 32; if (agb) { - new_r = new_r * (224 - 40) / 255 + 20; - new_g = new_g * (220 - 36) / 255 + 18; - new_b = new_b * (216 - 32) / 255 + 16; + new_r = new_r * (224 - 20) / 255 + 20; + new_g = new_g * (220 - 18) / 255 + 18; + new_b = new_b * (216 - 16) / 255 + 16; } else { new_r = new_r * (220 - 40) / 255 + 40; @@ -1398,6 +1408,13 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) gb->mode_for_interrupt = 3; } gb->cycles_since_vblank_callback += cycles / 2; + + if (cycles < gb->frame_repeat_countdown) { + gb->frame_repeat_countdown -= cycles; + } + else { + gb->frame_repeat_countdown = 0; + } /* The PPU does not advance while in STOP mode on the DMG */ if (gb->stopped && !GB_is_cgb(gb)) { @@ -1457,7 +1474,6 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) GB_SLEEP(gb, display, 1, LCDC_PERIOD - gb->cycles_since_vblank_callback); } GB_display_vblank(gb, GB_VBLANK_TYPE_LCD_OFF); - gb->cgb_repeated_a_frame = true; } return; } @@ -1987,14 +2003,14 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) if (gb->frame_skip_state == GB_FRAMESKIP_LCD_TURNED_ON) { if (GB_is_cgb(gb)) { GB_display_vblank(gb, GB_VBLANK_TYPE_NORMAL_FRAME); - gb->frame_skip_state = GB_FRAMESKIP_FIRST_FRAME_SKIPPED; + gb->frame_skip_state = GB_FRAMESKIP_FIRST_FRAME_RENDERED; } else { if (!GB_is_sgb(gb) || gb->current_lcd_line < LINES) { gb->is_odd_frame ^= true; GB_display_vblank(gb, GB_VBLANK_TYPE_NORMAL_FRAME); } - gb->frame_skip_state = GB_FRAMESKIP_SECOND_FRAME_RENDERED; + gb->frame_skip_state = GB_FRAMESKIP_FIRST_FRAME_RENDERED; } } else { @@ -2002,16 +2018,19 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force) gb->is_odd_frame ^= true; GB_display_vblank(gb, GB_VBLANK_TYPE_NORMAL_FRAME); } - if (gb->frame_skip_state == GB_FRAMESKIP_FIRST_FRAME_SKIPPED) { - gb->cgb_repeated_a_frame = true; - gb->frame_skip_state = GB_FRAMESKIP_SECOND_FRAME_RENDERED; - } - else { - gb->cgb_repeated_a_frame = false; - } } } + /* 3640 is just a few cycles less than 4 lines, no clue where the + AGB constant comes from (These are measured and confirmed) */ + gb->frame_repeat_countdown = LINES * LINE_LENGTH * 2 + (gb->model > GB_MODEL_CGB_E? 5982 : 3640); // 8MHz units + if (gb->display_cycles < gb->frame_repeat_countdown) { + gb->frame_repeat_countdown -= gb->display_cycles; + } + else { + gb->frame_repeat_countdown = 0; + } + GB_SLEEP(gb, display, 13, LINE_LENGTH - 5); } diff --git a/Core/display.h b/Core/display.h index 0c5c64eec..38105bb3c 100644 --- a/Core/display.h +++ b/Core/display.h @@ -9,6 +9,7 @@ typedef enum { GB_VBLANK_TYPE_NORMAL_FRAME, // An actual Vblank-triggered frame GB_VBLANK_TYPE_LCD_OFF, // An artificial frame pushed while the LCD was off GB_VBLANK_TYPE_ARTIFICIAL, // An artificial frame pushed for some other reason + GB_VBLANK_TYPE_REPEAT, // A frame that would not render on actual hardware, but the screen should retain the previous frame } GB_vblank_type_t; #ifdef GB_INTERNAL diff --git a/Core/gb.c b/Core/gb.c index f8a9321f6..923a97f8d 100644 --- a/Core/gb.c +++ b/Core/gb.c @@ -1183,6 +1183,11 @@ void GB_set_pixels_output(GB_gameboy_t *gb, uint32_t *output) gb->screen = output; } +uint32_t *GB_get_pixels_output(GB_gameboy_t *gb) +{ + return gb->screen; +} + void GB_set_vblank_callback(GB_gameboy_t *gb, GB_vblank_callback_t callback) { gb->vblank_callback = callback; @@ -1220,6 +1225,11 @@ void GB_set_lcd_line_callback(GB_gameboy_t *gb, GB_lcd_line_callback_t callback) gb->lcd_line_callback = callback; } +void GB_set_lcd_status_callback(GB_gameboy_t *gb, GB_lcd_status_callback_t callback) +{ + gb->lcd_status_callback = callback; +} + const GB_palette_t GB_PALETTE_GREY = {{{0x00, 0x00, 0x00}, {0x55, 0x55, 0x55}, {0xAA, 0xAA, 0xAA}, {0xFF, 0xFF, 0xFF}, {0xFF, 0xFF, 0xFF}}}; const GB_palette_t GB_PALETTE_DMG = {{{0x08, 0x18, 0x10}, {0x39, 0x61, 0x39}, {0x84, 0xA5, 0x63}, {0xC6, 0xDE, 0x8C}, {0xD2, 0xE6, 0xA6}}}; const GB_palette_t GB_PALETTE_MGB = {{{0x07, 0x10, 0x0E}, {0x3A, 0x4C, 0x3A}, {0x81, 0x8D, 0x66}, {0xC2, 0xCE, 0x93}, {0xCF, 0xDA, 0xAC}}}; diff --git a/Core/gb.h b/Core/gb.h index 64e1acdde..f3086133f 100644 --- a/Core/gb.h +++ b/Core/gb.h @@ -304,6 +304,7 @@ typedef void (*GB_boot_rom_load_callback_t)(GB_gameboy_t *gb, GB_boot_rom_t type typedef void (*GB_execution_callback_t)(GB_gameboy_t *gb, uint16_t address, uint8_t opcode); typedef void (*GB_lcd_line_callback_t)(GB_gameboy_t *gb, uint8_t line); +typedef void (*GB_lcd_status_callback_t)(GB_gameboy_t *gb, bool on); struct GB_breakpoint_s; struct GB_watchpoint_s; @@ -600,8 +601,8 @@ struct GB_gameboy_internal_s { GB_FRAMESKIP_LCD_TURNED_ON, // On a DMG, the LCD renders a blank screen during this state, // on a CGB, the previous frame is repeated (which might be // blank if the LCD was off for more than a few cycles) - GB_FRAMESKIP_FIRST_FRAME_SKIPPED, // This state is 'skipped' when emulating a DMG - GB_FRAMESKIP_SECOND_FRAME_RENDERED, + GB_FRAMESKIP_FIRST_FRAME_SKIPPED__DEPRECATED, + GB_FRAMESKIP_FIRST_FRAME_RENDERED, } frame_skip_state; bool oam_read_blocked; bool vram_read_blocked; @@ -650,9 +651,10 @@ struct GB_gameboy_internal_s { bool is_odd_frame; uint16_t last_tile_data_address; uint16_t last_tile_index_address; - bool cgb_repeated_a_frame; + GB_PADDING(bool, cgb_repeated_a_frame); uint8_t data_for_sel_glitch; bool delayed_glitch_hblank_interrupt; + uint32_t frame_repeat_countdown; ) /* Unsaved data. This includes all pointers, as well as everything that shouldn't be on a save state */ @@ -732,7 +734,7 @@ struct GB_gameboy_internal_s { GB_workboy_get_time_callback workboy_get_time_callback; GB_execution_callback_t execution_callback; GB_lcd_line_callback_t lcd_line_callback; - + GB_lcd_status_callback_t lcd_status_callback; /*** Debugger ***/ volatile bool debug_stopped, debug_disable; bool debug_fin_command, debug_next_command; @@ -894,6 +896,7 @@ void GB_log(GB_gameboy_t *gb, const char *fmt, ...) __printflike(2, 3); void GB_attributed_log(GB_gameboy_t *gb, GB_log_attributes attributes, const char *fmt, ...) __printflike(3, 4); void GB_set_pixels_output(GB_gameboy_t *gb, uint32_t *output); +uint32_t *GB_get_pixels_output(GB_gameboy_t *gb); void GB_set_border_mode(GB_gameboy_t *gb, GB_border_mode_t border_mode); void GB_set_infrared_input(GB_gameboy_t *gb, bool state); @@ -911,6 +914,7 @@ void GB_set_boot_rom_load_callback(GB_gameboy_t *gb, GB_boot_rom_load_callback_t void GB_set_execution_callback(GB_gameboy_t *gb, GB_execution_callback_t callback); void GB_set_lcd_line_callback(GB_gameboy_t *gb, GB_lcd_line_callback_t callback); +void GB_set_lcd_status_callback(GB_gameboy_t *gb, GB_lcd_status_callback_t callback); void GB_set_palette(GB_gameboy_t *gb, const GB_palette_t *palette); const GB_palette_t *GB_get_palette(GB_gameboy_t *gb); diff --git a/Core/memory.c b/Core/memory.c index 22c041f8e..bac55e078 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -1440,6 +1440,9 @@ static void write_high_memory(GB_gameboy_t *gb, uint16_t addr, uint8_t value) case GB_IO_LCDC: if ((value & 0x80) && !(gb->io_registers[GB_IO_LCDC] & 0x80)) { // LCD turned on + if (gb->lcd_status_callback) { + gb->lcd_status_callback(gb, true); + } if (!gb->lcd_disabled_outside_of_vblank && (gb->cycles_since_vblank_callback > 10 * 456 || GB_is_sgb(gb))) { // Trigger a vblank here so we don't exceed LCDC_PERIOD @@ -1451,15 +1454,18 @@ static void write_high_memory(GB_gameboy_t *gb, uint16_t addr, uint8_t value) gb->double_speed_alignment = 0; gb->cycles_for_line = 0; if (GB_is_sgb(gb)) { - gb->frame_skip_state = GB_FRAMESKIP_SECOND_FRAME_RENDERED; + gb->frame_skip_state = GB_FRAMESKIP_FIRST_FRAME_RENDERED; } - else if (gb->frame_skip_state == GB_FRAMESKIP_SECOND_FRAME_RENDERED) { + else { gb->frame_skip_state = GB_FRAMESKIP_LCD_TURNED_ON; } GB_timing_sync(gb); } else if (!(value & 0x80) && (gb->io_registers[GB_IO_LCDC] & 0x80)) { /* Sync after turning off LCD */ + if (gb->lcd_status_callback) { + gb->lcd_status_callback(gb, false); + } gb->double_speed_alignment = 0; GB_timing_sync(gb); GB_lcd_off(gb); diff --git a/SDL/main.c b/SDL/main.c index 7b873928c..c3f95942c 100644 --- a/SDL/main.c +++ b/SDL/main.c @@ -509,15 +509,17 @@ static void vblank(GB_gameboy_t *gb, GB_vblank_type_t type) true); osd_countdown--; } - if (configuration.blending_mode) { - render_texture(active_pixel_buffer, previous_pixel_buffer); - uint32_t *temp = active_pixel_buffer; - active_pixel_buffer = previous_pixel_buffer; - previous_pixel_buffer = temp; - GB_set_pixels_output(gb, active_pixel_buffer); - } - else { - render_texture(active_pixel_buffer, NULL); + if (type != GB_VBLANK_TYPE_REPEAT) { + if (configuration.blending_mode) { + render_texture(active_pixel_buffer, previous_pixel_buffer); + uint32_t *temp = active_pixel_buffer; + active_pixel_buffer = previous_pixel_buffer; + previous_pixel_buffer = temp; + GB_set_pixels_output(gb, active_pixel_buffer); + } + else { + render_texture(active_pixel_buffer, NULL); + } } do_rewind = rewind_down; handle_events(gb); diff --git a/libretro/libretro.c b/libretro/libretro.c index 2f51bd8ae..eb5f2dd68 100644 --- a/libretro/libretro.c +++ b/libretro/libretro.c @@ -99,6 +99,8 @@ static bool auto_sgb_enabled[2] = { static uint32_t *frame_buf = NULL; static uint32_t *frame_buf_copy = NULL; +static uint32_t retained_frame_1[256 * 224]; +static uint32_t retained_frame_2[256 * 224]; static struct retro_log_callback logging; static retro_log_printf_t log_cb; @@ -250,14 +252,42 @@ static void audio_callback(GB_gameboy_t *gb, GB_sample_t *sample) static void vblank1(GB_gameboy_t *gb, GB_vblank_type_t type) { + if (type == GB_VBLANK_TYPE_REPEAT) { + memcpy(GB_get_pixels_output(gb), + retained_frame_1, + GB_get_screen_width(gb) * GB_get_screen_height(gb) * sizeof(uint32_t)); + } vblank1_occurred = true; } static void vblank2(GB_gameboy_t *gb, GB_vblank_type_t type) { + if (type == GB_VBLANK_TYPE_REPEAT) { + memcpy(GB_get_pixels_output(gb), + retained_frame_2, + GB_get_screen_width(gb) * GB_get_screen_height(gb) * sizeof(uint32_t)); + } vblank2_occurred = true; } +static void lcd_status_change_1(GB_gameboy_t *gb, bool on) +{ + if (!on) { + memcpy(retained_frame_1, + GB_get_pixels_output(gb), + GB_get_screen_width(gb) * GB_get_screen_height(gb) * sizeof(uint32_t)); + } +} + +static void lcd_status_change_2(GB_gameboy_t *gb, bool on) +{ + if (!on) { + memcpy(retained_frame_2, + GB_get_pixels_output(gb), + GB_get_screen_width(gb) * GB_get_screen_height(gb) * sizeof(uint32_t)); + } +} + static bool bit_to_send1 = true, bit_to_send2 = true; static void serial_start1(GB_gameboy_t *gb, bool bit_received) @@ -627,8 +657,10 @@ static void init_for_current_model(unsigned id) /* todo: attempt to make these more generic */ GB_set_vblank_callback(&gameboy[0], (GB_vblank_callback_t) vblank1); + GB_set_lcd_status_callback(&gameboy[0], lcd_status_change_1); if (emulated_devices == 2) { GB_set_vblank_callback(&gameboy[1], (GB_vblank_callback_t) vblank2); + GB_set_lcd_status_callback(&gameboy[2], lcd_status_change_2); if (link_cable_emulation) { set_link_cable_state(true); } From 95773b9538b5b85de95bdc06ab568b1a833386f0 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 14 Aug 2022 01:54:28 +0300 Subject: [PATCH 115/116] Make things const --- Core/apu.c | 10 +++++----- Core/debugger.c | 6 +++--- Core/display.c | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Core/apu.c b/Core/apu.c index 1914fa505..0824f9f78 100644 --- a/Core/apu.c +++ b/Core/apu.c @@ -1292,7 +1292,7 @@ void GB_apu_write(GB_gameboy_t *gb, uint8_t reg, uint8_t value) gb->apu.wave_channel.pulse_length = (0x100 - value); break; case GB_IO_NR32: - gb->apu.wave_channel.shift = (uint8_t[]){4, 0, 1, 2}[(value >> 5) & 3]; + gb->apu.wave_channel.shift = (const uint8_t[]){4, 0, 1, 2}[(value >> 5) & 3]; if (gb->apu.is_active[GB_WAVE]) { update_wave_sample(gb, 0); } @@ -1407,11 +1407,11 @@ void GB_apu_write(GB_gameboy_t *gb, uint8_t reg, uint8_t value) if (!divisor) divisor = 2; if (gb->model > GB_MODEL_CGB_C) { gb->apu.noise_channel.counter_countdown = - divisor + (divisor == 2? 0 : (uint8_t[]){2, 1, 0, 3}[(gb->apu.noise_channel.alignment) & 3]); + divisor + (divisor == 2? 0 : (const uint8_t[]){2, 1, 0, 3}[(gb->apu.noise_channel.alignment) & 3]); } else { gb->apu.noise_channel.counter_countdown = - divisor + (divisor == 2? 0 : (uint8_t[]){2, 1, 4, 3}[(gb->apu.noise_channel.alignment) & 3]); + divisor + (divisor == 2? 0 : (const uint8_t[]){2, 1, 4, 3}[(gb->apu.noise_channel.alignment) & 3]); } gb->apu.noise_channel.delta = 0; } @@ -1455,10 +1455,10 @@ void GB_apu_write(GB_gameboy_t *gb, uint8_t reg, uint8_t value) } else { if (gb->model <= GB_MODEL_CGB_C) { - gb->apu.noise_channel.counter_countdown += (uint8_t[]){2, 1, 4, 3}[gb->apu.noise_channel.alignment & 3]; + gb->apu.noise_channel.counter_countdown += (const uint8_t[]){2, 1, 4, 3}[gb->apu.noise_channel.alignment & 3]; } else { - gb->apu.noise_channel.counter_countdown += (uint8_t[]){2, 1, 0, 3}[gb->apu.noise_channel.alignment & 3]; + gb->apu.noise_channel.counter_countdown += (const uint8_t[]){2, 1, 0, 3}[gb->apu.noise_channel.alignment & 3]; } if (((gb->apu.noise_channel.alignment + 1) & 3) < 2) { if ((gb->io_registers[GB_IO_NR43] & 0x07) == 1) { diff --git a/Core/debugger.c b/Core/debugger.c index 4ff49f3e6..2bec9e65f 100644 --- a/Core/debugger.c +++ b/Core/debugger.c @@ -1803,8 +1803,8 @@ static bool apu(GB_gameboy_t *gb, char *arguments, char *modifiers, const debugg uint8_t duty = gb->io_registers[channel == GB_SQUARE_1? GB_IO_NR11 :GB_IO_NR21] >> 6; GB_log(gb, " Duty cycle %s%% (%s), current index %u/8%s\n", - duty > 3? "" : (const char *[]){"12.5", " 25", " 50", " 75"}[duty], - duty > 3? "" : (const char *[]){"_______-", "-______-", "-____---", "_------_"}[duty], + duty > 3? "" : (const char *const[]){"12.5", " 25", " 50", " 75"}[duty], + duty > 3? "" : (const char *const[]){"_______-", "-______-", "-____---", "_------_"}[duty], gb->apu.square_channels[channel].current_sample_index, gb->apu.square_channels[channel].sample_surpressed ? " (suppressed)" : ""); @@ -1839,7 +1839,7 @@ static bool apu(GB_gameboy_t *gb, char *arguments, char *modifiers, const debugg GB_log(gb, " Current position: %u\n", gb->apu.wave_channel.current_sample_index); GB_log(gb, " Volume %s (right-shifted %u times)\n", - gb->apu.wave_channel.shift > 4? "" : (const char *[]){"100%", "50%", "25%", "", "muted"}[gb->apu.wave_channel.shift], + gb->apu.wave_channel.shift > 4? "" : (const char *const[]){"100%", "50%", "25%", "", "muted"}[gb->apu.wave_channel.shift], gb->apu.wave_channel.shift); GB_log(gb, " Current sample length: %u APU ticks (next in %u ticks)\n", diff --git a/Core/display.c b/Core/display.c index 27c1b029b..f0ae1486c 100644 --- a/Core/display.c +++ b/Core/display.c @@ -253,17 +253,17 @@ static inline uint8_t scale_channel(uint8_t x) static inline uint8_t scale_channel_with_curve(uint8_t x) { - return (uint8_t[]){0,6,12,20,28,36,45,56,66,76,88,100,113,125,137,149,161,172,182,192,202,210,218,225,232,238,243,247,250,252,254,255}[x]; + return (const uint8_t[]){0,6,12,20,28,36,45,56,66,76,88,100,113,125,137,149,161,172,182,192,202,210,218,225,232,238,243,247,250,252,254,255}[x]; } static inline uint8_t scale_channel_with_curve_agb(uint8_t x) { - return (uint8_t[]){0,3,8,14,20,26,33,40,47,54,62,70,78,86,94,103,112,120,129,138,147,157,166,176,185,195,205,215,225,235,245,255}[x]; + return (const uint8_t[]){0,3,8,14,20,26,33,40,47,54,62,70,78,86,94,103,112,120,129,138,147,157,166,176,185,195,205,215,225,235,245,255}[x]; } static inline uint8_t scale_channel_with_curve_sgb(uint8_t x) { - return (uint8_t[]){0,2,5,9,15,20,27,34,42,50,58,67,76,85,94,104,114,123,133,143,153,163,173,182,192,202,211,220,229,238,247,255}[x]; + return (const uint8_t[]){0,2,5,9,15,20,27,34,42,50,58,67,76,85,94,104,114,123,133,143,153,163,173,182,192,202,211,220,229,238,247,255}[x]; } From 9bf7e0b4dffc20941e4dfadffc6899ae19463844 Mon Sep 17 00:00:00 2001 From: Lior Halphon Date: Sun, 14 Aug 2022 17:43:28 +0300 Subject: [PATCH 116/116] More accurate sample repeat glitch, fixes #483 --- Core/apu.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/Core/apu.c b/Core/apu.c index 0824f9f78..e8d82a1b3 100644 --- a/Core/apu.c +++ b/Core/apu.c @@ -1111,19 +1111,6 @@ void GB_apu_write(GB_gameboy_t *gb, uint8_t reg, uint8_t value) case GB_IO_NR13: case GB_IO_NR23: { unsigned index = reg == GB_IO_NR23? GB_SQUARE_2: GB_SQUARE_1; - if (gb->apu.is_active[index]) { - /* On an AGB, as well as on CGB C and earlier (TODO: Tested: 0, B and C), it behaves slightly different on - double speed. */ - if (gb->model == GB_MODEL_CGB_E || gb->model == GB_MODEL_CGB_D || gb->apu.square_channels[index].sample_countdown & 1) { - if (gb->apu.square_channels[index].did_tick && - gb->apu.square_channels[index].sample_countdown >> 1 == (gb->apu.square_channels[index].sample_length ^ 0x7FF)) { - gb->apu.square_channels[index].current_sample_index--; - gb->apu.square_channels[index].current_sample_index &= 7; - gb->apu.square_channels[index].sample_surpressed = false; - } - } - } - gb->apu.square_channels[index].sample_length &= ~0xFF; gb->apu.square_channels[index].sample_length |= value & 0xFF; break; @@ -1133,10 +1120,10 @@ void GB_apu_write(GB_gameboy_t *gb, uint8_t reg, uint8_t value) case GB_IO_NR24: { unsigned index = reg == GB_IO_NR24? GB_SQUARE_2: GB_SQUARE_1; bool was_active = gb->apu.is_active[index]; - /* TODO: When the sample length changes right before being updated, the countdown should change to the - old length, but the current sample should not change. Because our write timing isn't accurate to - the T-cycle, we hack around it by stepping the sample index backwards. */ - if ((value & 0x80) == 0 && gb->apu.is_active[index]) { + /* TODO: When the sample length changes right before being updated from ≥$700 to <$700, the countdown + should change to the old length, but the current sample should not change. Because our write + timing isn't accurate to the T-cycle, we hack around it by stepping the sample index backwards. */ + if ((value & 0x80) == 0 && gb->apu.is_active[index] && (gb->io_registers[reg] & 0x7) == 7 && (value & 7) != 7) { /* On an AGB, as well as on CGB C and earlier (TODO: Tested: 0, B and C), it behaves slightly different on double speed. */ if (gb->model == GB_MODEL_CGB_E || gb->model == GB_MODEL_CGB_D || gb->apu.square_channels[index].sample_countdown & 1) {

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≧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