diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index be4251423ab5dafe26033cd385cf5ab5efe94c33..9c4c356467c75b6bddad1a203349f3c4e7a570a8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,29 +1,37 @@ -variables: - BRANCH: master - -trigger_build: - script: - - "curl -X POST -F token=$TOKEN_SNES9X2010 -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/87/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_FCEUMM -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/85/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_VBANEXT -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/83/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_SNES9X -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/80/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_BEETLE_WSWAN -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/84/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_BEETLE_VBOY -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/92/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_HANDY -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/86/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_BLUEMSX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/93/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_SGRAFX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/94/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_NGP -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/95/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_PROSYSTEM -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/96/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_O2EM -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/97/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_STELLA -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/98/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_NXENGINE -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/99/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_VECX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/100/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_PCEFAST -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/101/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_GAMBATTE -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/104/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_VJAGUAR -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/105/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_MAME2003 -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/106/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_YABAUSE -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/108/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_4DO -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/111/trigger/pipeline" - - "curl -X POST -F token=$TOKEN_GPLUSGX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/112/trigger/pipeline" - only: - - master +variables: + BRANCH: master + +trigger_build: + script: + - "curl -X POST -F token=$TOKEN_SNES9X2010 -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/87/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_DOSBOX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/129/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_PICODRIVE -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/132/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_FMSX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/133/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_FCEUMM -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/85/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_VBANEXT -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/83/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_SNES9X -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/80/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_BEETLE_WSWAN -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/84/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_BEETLE_VBOY -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/92/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_HANDY -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/86/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_BLUEMSX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/93/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_SGRAFX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/94/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_NGP -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/95/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_PROSYSTEM -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/96/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_O2EM -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/97/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_STELLA -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/98/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_NXENGINE -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/99/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_VECX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/100/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_PCEFAST -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/101/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_GAMBATTE -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/104/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_VJAGUAR -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/105/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_YABAUSE -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/108/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_4DO -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/111/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_GPLUSGX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/112/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_MGBA -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/114/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_MAME2003 -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/106/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_MAME2003PLUS -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/107/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_BEETLEPSX -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/109/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_FBALPHA -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/113/trigger/pipeline" + - "curl -X POST -F token=$TOKEN_REARMED -F ref=$BRANCH https://git.m4xw.net/api/v4/projects/124/trigger/pipeline" + only: + - master diff --git a/.gitlab/issue_templates/CoreBugs.md b/.gitlab/issue_templates/CoreBugs.md new file mode 100644 index 0000000000000000000000000000000000000000..9ab1046b4df09cd3930e50a89bd91ad38c564d5c --- /dev/null +++ b/.gitlab/issue_templates/CoreBugs.md @@ -0,0 +1,25 @@ +# First and foremost consider this: +- Only libretro core bugs + +## Description + +[Description of the bug] + +### Expected behavior + +[What you expected to happen] + +### Actual behavior + +[What is actually happening] + +### Steps to reproduce the bug + +1. [First step] +2. [Second step] +3. [and so on...] + +### Version/Commit +You can find this information under Information/System Information + +- RetroArch: [version/commit] diff --git a/Makefile.common b/Makefile.common index 26d11cbd0b21917c88bdb3d65d4b015b32f44f00..30597e1af9bd430e4e98e1a5b516ad064f9033b7 100644 --- a/Makefile.common +++ b/Makefile.common @@ -604,6 +604,10 @@ ifeq ($(TARGET), retroarch_3ds) OBJ += gfx/drivers_font/ctr_font.o endif +ifeq ($(TARGET), retroarch_switch) + OBJ += gfx/drivers_font/switch_font.o +endif + ifeq ($(HAVE_OSS), 1) OBJ += audio/drivers/oss.o else ifeq ($(HAVE_OSS_BSD), 1) @@ -857,6 +861,10 @@ ifeq ($(HAVE_THREAD_STORAGE), 1) DEFINES += -DHAVE_THREAD_STORAGE endif +ifeq ($(HAVE_SWITCH), 1) + OBJ += $(LIBRETRO_COMM_DIR)/rthreads/switch_pthread.o +endif + ifeq ($(HAVE_VITA2D), 1) OBJ += $(DEPS_DIR)/libvita2d/source/vita2d.o \ $(DEPS_DIR)/libvita2d/source/vita2d_texture.o \ @@ -893,7 +901,8 @@ ifeq ($(TARGET), retroarch_switch) audio/drivers/switch_audio.o \ audio/drivers/switch_thread_audio.o \ input/drivers/switch_input.o \ - gfx/drivers/switch_gfx.o + gfx/drivers/switch_gfx.o \ + menu/drivers_display/menu_display_switch.o ifeq ($(HAVE_DUMMY), 1) OBJ += switch/dummy.o endif diff --git a/Makefile.switch b/Makefile.switch index fbe049d8bb539fe20b8349da30be7f3cedaaa1da..a43418a6d657616942852b6973c111faa30d900b 100644 --- a/Makefile.switch +++ b/Makefile.switch @@ -20,7 +20,7 @@ OBJ := # For threading we need to overwrite some vars with global defines because devkitPro's includes # make it hard for us DEFINES_THREAD := -Dpthread_t=Thread -Dpthread_mutex_t=Mutex -Dpthread_mutexattr_t='void*' -Dpthread_attr_t=int -Dpthread_cond_t=CondVar -Dpthread_condattr_t='int' -DEFINES := -DSWITCH=1 -DHAVE_THREADS -DNXLINK=1 -U__linux__ -U__linux -DRARCH_INTERNAL -D_SYS__PTHREADTYPES_H_ $(DEFINES_THREAD) -DGLOBAL_CONFIG_DIR='"/switch"' +DEFINES := -DHAVE_FREETYPE -DSWITCH=1 -DHAVE_THREADS -DNXLINK=1 -U__linux__ -U__linux -DRARCH_INTERNAL -D_SYS__PTHREADTYPES_H_ $(DEFINES_THREAD) -DGLOBAL_CONFIG_DIR='"/switch"' HAVE_CC_RESAMPLER = 1 HAVE_MENU_COMMON = 1 @@ -29,7 +29,6 @@ HAVE_RPNG = 1 HAVE_RJPEG = 1 HAVE_RBMP = 1 HAVE_RGUI = 0 -HAVE_NXRGUI = 1 HAVE_ZLIB = 1 HAVE_BUILTINZLIB = 1 HAVE_LIBRETRODB = 1 @@ -40,10 +39,15 @@ HAVE_STATIC_VIDEO_FILTERS = 1 HAVE_STATIC_AUDIO_FILTERS = 1 HAVE_MENU = 1 HAVE_RUNAHEAD = 1 + +# RetroNX specific flags HAVE_OVERLAY = 1 HAVE_THREADS = 1 HAVE_PTHREADS = 1 HAVE_DUMMY = 0 +HAVE_FREETYPE = 1 +HAVE_SWITCH = 1 +HAVE_NXRGUI = 1 include Makefile.common BLACKLIST := @@ -81,17 +85,17 @@ EXEFS_SRC := exefs_src #ROMFS := switch/romfs #APP_TITLE := RetroNX -APP_ICON := switch/retronx.jpg -APP_VERSION := 0.9.7 -APP_AUTHOR := M4xw, Credit: Reswitched, libretro +APP_ICON := icon.jpg #switch/retronx.jpg +APP_VERSION := 0.9.8 +APP_AUTHOR := M4xw, Credits: libretro #--------------------------------------------------------------------------------- # options for code generation #--------------------------------------------------------------------------------- -ARCH := -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE +ARCH := -march=armv8-a -mtune=cortex-a57 -mtp=soft -fPIE -mcpu=cortex-a57+crc+fp+simd CFLAGS := -g -Wall -O3 -ffast-math -ffunction-sections \ - $(ARCH) $(DEFINES) -Ideps -Ideps/libz -Ilibretro-common/include -Ideps/stb -I$(LIBNX)/include -include $(LIBNX)/include/switch.h + $(ARCH) $(DEFINES) -Ideps -Ideps/libz -Ilibretro-common/include -Ideps/stb -I$(LIBNX)/include -include $(LIBNX)/include/switch.h $(shell $(DEVKITPRO)/portlibs/switch/bin/freetype-config --cflags) CFLAGS += $(INCLUDE) -D__SWITCH__ @@ -100,7 +104,7 @@ CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11 ASFLAGS := -g $(ARCH) LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs $(ARCH) -Wl,--allow-multiple-definition -Wl,-Map,$(notdir $*.map) -LIBS := -lnx -lm -lstdc++ +LIBS := -lnx -lm -lstdc++ -lfreetype -lbz2 -lpng -lz #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing diff --git a/audio/drivers/switch_thread_audio.c b/audio/drivers/switch_thread_audio.c index cd4179e890cea91a1ff311be353bf4bfe6f6b7f2..3254fe4e72a28ac4e9d5341ed8a7c6e091a8396c 100644 --- a/audio/drivers/switch_thread_audio.c +++ b/audio/drivers/switch_thread_audio.c @@ -38,8 +38,7 @@ static inline void lockMutex(Mutex* mtx) { - while (!mutexTryLock(mtx)) - svcSleepThread(3); + mutexLock(mtx); } typedef struct @@ -194,7 +193,7 @@ static void *switch_thread_audio_init(const char *device, unsigned rate, unsigne static bool switch_thread_audio_start(void *data, bool is_shutdown) { - RARCH_LOG("[Audio]: switch_thread_audio_start\n"); + //RARCH_LOG("[Audio]: switch_thread_audio_start\n"); switch_thread_audio_t *swa = (switch_thread_audio_t *)data; if (!swa) @@ -206,7 +205,7 @@ static bool switch_thread_audio_start(void *data, bool is_shutdown) static bool switch_thread_audio_stop(void *data) { - RARCH_LOG("[Audio]: switch_thread_audio_stop\n"); + //RARCH_LOG("[Audio]: switch_thread_audio_stop\n"); switch_thread_audio_t* swa = (switch_thread_audio_t*)data; if (!swa) @@ -218,7 +217,7 @@ static bool switch_thread_audio_stop(void *data) static void switch_thread_audio_free(void *data) { - RARCH_LOG("[Audio]: switch_thread_audio_free\n"); + //RARCH_LOG("[Audio]: switch_thread_audio_free\n"); switch_thread_audio_t *swa = (switch_thread_audio_t *)data; if (!swa) @@ -308,7 +307,7 @@ static bool switch_thread_audio_alive(void *data) static void switch_thread_audio_set_nonblock_state(void *data, bool state) { - RARCH_LOG("[Audio]: switch_thread_audio_set_nonblock_state state %d\n", (int)state); + //RARCH_LOG("[Audio]: switch_thread_audio_set_nonblock_state state %d\n", (int)state); switch_thread_audio_t *swa = (switch_thread_audio_t *)data; if (swa) diff --git a/config.def.h b/config.def.h index c232c3b8d1e2af016538a30ddd951bb37e575737..a019c68cc8a36b82141165a822769dfd232fa3f2 100644 --- a/config.def.h +++ b/config.def.h @@ -64,12 +64,11 @@ static bool bundle_assets_extract_enable = false; #endif #ifdef HAVE_MATERIALUI -static bool materialui_icons_enable = true; +static bool materialui_icons_enable = true; #endif -static const bool crt_switch_resolution = false; -static const int crt_switch_resolution_super = 2560; - +static const bool crt_switch_resolution = false; +static const int crt_switch_resolution_super = 2560; static const bool def_history_list_enable = true; static const bool def_playlist_entry_remove = true; @@ -251,55 +250,55 @@ static const bool display_keyboard_overlay = false; #ifdef HAVE_MENU #include "menu/menu_driver.h" -static bool default_block_config_read = true; +static bool default_block_config_read = true; -static bool quick_menu_show_take_screenshot = true; -static bool quick_menu_show_save_load_state = true; +static bool quick_menu_show_take_screenshot = true; +static bool quick_menu_show_save_load_state = true; static bool quick_menu_show_undo_save_load_state = true; -static bool quick_menu_show_add_to_favorites = true; -static bool quick_menu_show_options = true; -static bool quick_menu_show_controls = true; -static bool quick_menu_show_cheats = true; -static bool quick_menu_show_shaders = true; -static bool quick_menu_show_information = true; - -static bool quick_menu_show_save_core_overrides = true; -static bool quick_menu_show_save_game_overrides = true; -static bool quick_menu_show_save_content_dir_overrides = true; - -static bool kiosk_mode_enable = false; - -static bool menu_show_online_updater = true; -static bool menu_show_load_core = true; -static bool menu_show_load_content = true; -static bool menu_show_information = true; -static bool menu_show_configurations = true; -static bool menu_show_help = true; -static bool menu_show_quit_retroarch = true; -static bool menu_show_reboot = true; +static bool quick_menu_show_add_to_favorites = true; +static bool quick_menu_show_options = true; +static bool quick_menu_show_controls = true; +static bool quick_menu_show_cheats = true; +static bool quick_menu_show_shaders = true; +static bool quick_menu_show_information = true; + +static bool quick_menu_show_save_core_overrides = true; +static bool quick_menu_show_save_game_overrides = true; +static bool quick_menu_show_save_content_dir_overrides = true; + +static bool kiosk_mode_enable = false; + +static bool menu_show_online_updater = true; +static bool menu_show_load_core = true; +static bool menu_show_load_content = true; +static bool menu_show_information = true; +static bool menu_show_configurations = true; +static bool menu_show_help = true; +static bool menu_show_quit_retroarch = true; +static bool menu_show_reboot = true; #if defined(HAVE_LAKKA) || defined(VITA) || defined(_3DS) -static bool menu_show_core_updater = false; +static bool menu_show_core_updater = false; #else -static bool menu_show_core_updater = true; +static bool menu_show_core_updater = true; #endif -static bool content_show_settings = true; -static bool content_show_favorites = true; +static bool content_show_settings = true; +static bool content_show_favorites = true; #ifdef HAVE_IMAGEVIEWER -static bool content_show_images = true; +static bool content_show_images = true; #endif -static bool content_show_music = true; +static bool content_show_music = true; #ifdef HAVE_FFMPEG -static bool content_show_video = true; +static bool content_show_video = true; #endif #ifdef HAVE_NETWORKING -static bool content_show_netplay = true; +static bool content_show_netplay = true; #endif -static bool content_show_history = true; +static bool content_show_history = true; #ifdef HAVE_LIBRETRODB -static bool content_show_add = true; +static bool content_show_add = true; #endif -static bool content_show_playlists = true; +static bool content_show_playlists = true; #ifdef HAVE_XMB static unsigned xmb_scale_factor = 100; @@ -307,13 +306,13 @@ static unsigned xmb_alpha_factor = 75; static unsigned menu_font_color_red = 255; static unsigned menu_font_color_green = 255; static unsigned menu_font_color_blue = 255; -static unsigned xmb_menu_layout = 0; -static unsigned xmb_icon_theme = XMB_ICON_THEME_MONOCHROME; -static unsigned xmb_theme = XMB_THEME_ELECTRIC_BLUE; +static unsigned xmb_menu_layout = 0; +static unsigned xmb_icon_theme = XMB_ICON_THEME_MONOCHROME; +static unsigned xmb_theme = XMB_THEME_ELECTRIC_BLUE; #if defined(HAVE_LAKKA) || defined(__arm__) || defined(__PPC64__) || defined(__ppc64__) || defined(__powerpc64__) || defined(__powerpc__) || defined(__ppc__) || defined(__POWERPC__) -static bool xmb_shadows_enable = false; +static bool xmb_shadows_enable = false; #else -static bool xmb_shadows_enable = true; +static bool xmb_shadows_enable = true; #endif #endif @@ -333,10 +332,10 @@ static unsigned menu_shader_pipeline = 1; static unsigned menu_shader_pipeline = 2; #endif -static bool show_advanced_settings = false; +static bool show_advanced_settings = false; static const uint32_t menu_entry_normal_color = 0xffffffff; -static const uint32_t menu_entry_hover_color = 0xff64ff64; -static const uint32_t menu_title_color = 0xff64ff64; +static const uint32_t menu_entry_hover_color = 0xff64ff64; +static const uint32_t menu_title_color = 0xff64ff64; #else static bool default_block_config_read = false; @@ -357,21 +356,21 @@ static bool default_systemfiles_in_content_dir = false; static bool default_screenshots_in_content_dir = false; #if defined(__CELLOS_LV2__) || defined(_XBOX1) || defined(_XBOX360) -static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L3_R3; +static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L3_R3; #elif defined(VITA) -static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L1_R1_START_SELECT; +static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_L1_R1_START_SELECT; #elif defined(SWITCH) -static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_START_SELECT; +static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_START_SELECT; #else -static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_NONE; +static unsigned menu_toggle_gamepad_combo = INPUT_TOGGLE_NONE; #endif #if defined(VITA) -static unsigned input_backtouch_enable = false; -static unsigned input_backtouch_toggle = false; +static unsigned input_backtouch_enable = false; +static unsigned input_backtouch_toggle = false; #endif -static bool show_physical_inputs = true; +static bool show_physical_inputs = true; static bool all_users_control_menu = false; @@ -440,9 +439,9 @@ static const bool font_enable = true; * If your monitor does not run at 60Hz, or something close to it, * disable VSync, and leave this at its default. */ #ifdef _3DS -static const float refresh_rate = (32730.0 * 8192.0) / 4481134.0 ; +static const float refresh_rate = (32730.0 * 8192.0) / 4481134.0; #else -static const float refresh_rate = 60/1.001; +static const float refresh_rate = 60 / 1.001; #endif /* Allow games to set rotation. If false, rotation requests are @@ -502,8 +501,8 @@ static const float audio_mixer_volume = 0.0; #ifdef HAVE_WASAPI /* WASAPI defaults */ -static const bool wasapi_exclusive_mode = true; -static const bool wasapi_float_format = false; +static const bool wasapi_exclusive_mode = true; +static const bool wasapi_float_format = false; static const int wasapi_sh_buffer_length = -16; /* auto */ #endif @@ -689,6 +688,12 @@ static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_ static enum resampler_quality audio_resampler_quality_level = RESAMPLER_QUALITY_NORMAL; #endif +// Switch Specific settings +#if defined(SWITCH) +static const bool split_joycon = false; +static const bool hack_overlay = true; +#endif + #if defined(ANDROID) #if defined(ANDROID_ARM) static char buildbot_server_url[] = "http://buildbot.libretro.com/nightly/android/latest/armeabi-v7a/"; diff --git a/configuration.c b/configuration.c index be79f48265d92edf31c94ee01323870dc4d15c12..aba34aebcd89dd110a932b0a4565baabf9b954e1 100644 --- a/configuration.c +++ b/configuration.c @@ -1215,6 +1215,10 @@ static struct config_bool_setting *populate_settings_bool(settings_t *settings, SETTING_BOOL("netplay_request_device_p14", &settings->bools.netplay_request_devices[13], true, false, false); SETTING_BOOL("netplay_request_device_p15", &settings->bools.netplay_request_devices[14], true, false, false); SETTING_BOOL("netplay_request_device_p16", &settings->bools.netplay_request_devices[15], true, false, false); +#endif +#ifdef SWITCH // Switch specific Settings + SETTING_BOOL("split_joycon", &settings->bools.split_joycon, false, split_joycon, false); + SETTING_BOOL("hack_overlay", &settings->bools.hack_overlay, true, hack_overlay, false); #endif SETTING_BOOL("input_descriptor_label_show", &settings->bools.input_descriptor_label_show, true, input_descriptor_label_show, false); SETTING_BOOL("input_descriptor_hide_unbound", &settings->bools.input_descriptor_hide_unbound, true, input_descriptor_hide_unbound, false); diff --git a/configuration.h b/configuration.h index 659b8a34ed5453ab921c90cbc255e2ed2f21a76c..ae32f7dfc73e827a6221cc2fdae073c53f0556a9 100644 --- a/configuration.h +++ b/configuration.h @@ -3,6 +3,7 @@ * Copyright (C) 2011-2016 - Daniel De Matteis * Copyright (C) 2014-2016 - Jean-André Santoni * Copyright (C) 2016 - Brad Parker + * Copyright (C) 2018 - M4xw * * RetroArch is free software: you can redistribute it and/or modify it under the terms * of the GNU General Public License as published by the Free Software Found- @@ -30,475 +31,479 @@ #include "led/led_defines.h" #define configuration_set_float(settings, var, newvar) \ -{ \ - settings->modified = true; \ - var = newvar; \ -} + { \ + settings->modified = true; \ + var = newvar; \ + } #define configuration_set_bool(settings, var, newvar) \ -{ \ - settings->modified = true; \ - var = newvar; \ -} + { \ + settings->modified = true; \ + var = newvar; \ + } #define configuration_set_uint(settings, var, newvar) \ -{ \ - settings->modified = true; \ - var = newvar; \ -} + { \ + settings->modified = true; \ + var = newvar; \ + } #define configuration_set_int(settings, var, newvar) \ -{ \ - settings->modified = true; \ - var = newvar; \ -} + { \ + settings->modified = true; \ + var = newvar; \ + } enum override_type { - OVERRIDE_NONE = 0, - OVERRIDE_CORE, - OVERRIDE_CONTENT_DIR, - OVERRIDE_GAME + OVERRIDE_NONE = 0, + OVERRIDE_CORE, + OVERRIDE_CONTENT_DIR, + OVERRIDE_GAME }; RETRO_BEGIN_DECLS typedef struct settings { - struct - { - bool placeholder; - - /* Video */ - bool video_fullscreen; - bool video_windowed_fullscreen; - bool video_vsync; - bool video_hard_sync; - bool video_black_frame_insertion; - bool video_vfilter; - bool video_smooth; - bool video_force_aspect; - bool video_crop_overscan; - bool video_aspect_ratio_auto; - bool video_scale_integer; - bool video_shader_enable; - bool video_shader_watch_files; - bool video_threaded; - bool video_font_enable; - bool video_disable_composition; - bool video_post_filter_record; - bool video_gpu_record; - bool video_gpu_screenshot; - bool video_allow_rotate; - bool video_shared_context; - bool video_force_srgb_disable; - bool video_fps_show; - bool video_statistics_show; - bool video_framecount_show; - bool video_msg_bgcolor_enable; - bool crt_switch_resolution; - - /* Audio */ - bool audio_enable; - bool audio_enable_menu; - bool audio_sync; - bool audio_rate_control; - bool audio_wasapi_exclusive_mode; - bool audio_wasapi_float_format; - - /* Input */ - bool input_remap_binds_enable; - bool input_autodetect_enable; - bool input_overlay_enable; - bool input_overlay_enable_autopreferred; - bool input_overlay_hide_in_menu; - bool input_overlay_show_physical_inputs; - bool input_descriptor_label_show; - bool input_descriptor_hide_unbound; - bool input_all_users_control_menu; - bool input_menu_swap_ok_cancel_buttons; - bool input_backtouch_enable; - bool input_backtouch_toggle; - bool input_small_keyboard_enable; - bool input_keyboard_gamepad_enable; - - /* Menu */ - bool filter_by_current_core; - bool menu_show_start_screen; - bool menu_pause_libretro; - bool menu_timedate_enable; - bool menu_battery_level_enable; - bool menu_core_enable; - bool menu_dynamic_wallpaper_enable; - bool menu_throttle; - bool menu_mouse_enable; - bool menu_pointer_enable; - bool menu_navigation_wraparound_enable; - bool menu_navigation_browser_filter_supported_extensions_enable; - bool menu_dpi_override_enable; - bool menu_show_advanced_settings; - bool menu_throttle_framerate; - bool menu_linear_filter; - bool menu_horizontal_animation; - bool menu_show_online_updater; - bool menu_show_core_updater; - bool menu_show_load_core; - bool menu_show_load_content; - bool menu_show_information; - bool menu_show_configurations; - bool menu_show_help; - bool menu_show_quit_retroarch; - bool menu_show_reboot; - bool menu_show_latency; - bool menu_show_rewind; - bool menu_show_overlays; - bool menu_materialui_icons_enable; - bool menu_rgui_background_filler_thickness_enable; - bool menu_rgui_border_filler_thickness_enable; - bool menu_rgui_border_filler_enable; - bool menu_xmb_shadows_enable; - bool menu_xmb_vertical_thumbnails; - bool menu_content_show_settings; - bool menu_content_show_favorites; - bool menu_content_show_images; - bool menu_content_show_music; - bool menu_content_show_video; - bool menu_content_show_netplay; - bool menu_content_show_history; - bool menu_content_show_add; - bool menu_content_show_playlists; - bool menu_unified_controls; - bool quick_menu_show_take_screenshot; - bool quick_menu_show_save_load_state; - bool quick_menu_show_undo_save_load_state; - bool quick_menu_show_add_to_favorites; - bool quick_menu_show_options; - bool quick_menu_show_controls; - bool quick_menu_show_cheats; - bool quick_menu_show_shaders; - bool quick_menu_show_save_core_overrides; - bool quick_menu_show_save_game_overrides; - bool quick_menu_show_save_content_dir_overrides; - bool quick_menu_show_information; - bool kiosk_mode_enable; - - /* Netplay */ - bool netplay_public_announce; - bool netplay_start_as_spectator; - bool netplay_allow_slaves; - bool netplay_require_slaves; - bool netplay_stateless_mode; - bool netplay_nat_traversal; - bool netplay_use_mitm_server; - bool netplay_request_devices[MAX_USERS]; - - /* Network */ - bool network_buildbot_auto_extract_archive; - - /* UI */ - bool ui_menubar_enable; - bool ui_suspend_screensaver_enable; - bool ui_companion_start_on_boot; - bool ui_companion_enable; - bool ui_companion_toggle; - bool desktop_menu_enable; - - /* Cheevos */ - bool cheevos_enable; - bool cheevos_test_unofficial; - bool cheevos_hardcore_mode_enable; - bool cheevos_leaderboards_enable; - bool cheevos_badges_enable; - bool cheevos_verbose_enable; - bool cheevos_auto_screenshot; - - /* Camera */ - bool camera_allow; - - /* WiFi */ - bool wifi_allow; - - /* Location */ - bool location_allow; - - /* Multimedia */ - bool multimedia_builtin_mediaplayer_enable; - bool multimedia_builtin_imageviewer_enable; - - /* Bundle */ - bool bundle_finished; - bool bundle_assets_extract_enable; - - /* Misc. */ - bool threaded_data_runloop_enable; - bool set_supports_no_game_enable; - bool auto_screenshot_filename; - bool history_list_enable; - bool playlist_entry_remove; - bool playlist_entry_rename; - bool rewind_enable; - bool run_ahead_enabled; - bool run_ahead_secondary_instance; - bool run_ahead_hide_warnings; - bool pause_nonactive; - bool block_sram_overwrite; - bool savestate_auto_index; - bool savestate_auto_save; - bool savestate_auto_load; - bool savestate_thumbnail_enable; - bool network_cmd_enable; - bool stdin_cmd_enable; - bool keymapper_enable; - bool network_remote_enable; - bool network_remote_enable_user[MAX_USERS]; - bool load_dummy_on_core_shutdown; - bool check_firmware_before_loading; - - bool game_specific_options; - bool auto_overrides_enable; - bool auto_remaps_enable; - bool auto_shaders_enable; - - bool sort_savefiles_enable; - bool sort_savestates_enable; - bool config_save_on_exit; - bool show_hidden_files; - - bool savefiles_in_content_dir; - bool savestates_in_content_dir; - bool screenshots_in_content_dir; - bool systemfiles_in_content_dir; - bool ssh_enable; - bool samba_enable; - bool bluetooth_enable; - - bool automatically_add_content_to_playlist; - bool video_window_show_decorations; - } bools; - - struct - { - float placeholder; - float video_scale; - float video_aspect_ratio; - float video_refresh_rate; - float video_font_size; - float video_msg_pos_x; - float video_msg_pos_y; - float video_msg_color_r; - float video_msg_color_g; - float video_msg_color_b; - float video_msg_bgcolor_opacity; - - float menu_wallpaper_opacity; - float menu_framebuffer_opacity; - float menu_footer_opacity; - float menu_header_opacity; - - float audio_max_timing_skew; - float audio_volume; /* dB scale. */ - float audio_mixer_volume; /* dB scale. */ - - float input_overlay_opacity; - float input_overlay_scale; - - float slowmotion_ratio; - float fastforward_ratio; - } floats; - - struct - { - int placeholder; - int netplay_check_frames; - int location_update_interval_ms; - int location_update_interval_distance; - int state_slot; - int audio_wasapi_sh_buffer_length; - } ints; - - struct - { - unsigned placeholder; - unsigned audio_out_rate; - unsigned audio_block_frames; - unsigned audio_latency; - - unsigned audio_resampler_quality; - - unsigned input_turbo_period; - unsigned input_turbo_duty_cycle; - - unsigned input_bind_timeout; - - unsigned input_menu_toggle_gamepad_combo; - unsigned input_keyboard_gamepad_mapping_type; - unsigned input_poll_type_behavior; - unsigned netplay_port; - unsigned netplay_input_latency_frames_min; - unsigned netplay_input_latency_frames_range; - unsigned netplay_share_digital; - unsigned netplay_share_analog; - unsigned bundle_assets_extract_version_current; - unsigned bundle_assets_extract_last_version; - unsigned content_history_size; - unsigned libretro_log_level; - unsigned rewind_granularity; - unsigned autosave_interval; - unsigned network_cmd_port; - unsigned network_remote_base_port; - unsigned keymapper_port; - unsigned video_window_x; - unsigned video_window_y; - unsigned video_window_opacity; - unsigned crt_switch_resolution_super; - unsigned video_monitor_index; - unsigned video_fullscreen_x; - unsigned video_fullscreen_y; - unsigned video_max_swapchain_images; - unsigned video_swap_interval; - unsigned video_hard_sync_frames; - unsigned video_frame_delay; - unsigned video_viwidth; - unsigned video_aspect_ratio_idx; - unsigned video_rotation; - unsigned video_msg_bgcolor_red; - unsigned video_msg_bgcolor_green; - unsigned video_msg_bgcolor_blue; - - unsigned menu_thumbnails; - unsigned menu_left_thumbnails; - unsigned menu_dpi_override_value; - unsigned menu_entry_normal_color; - unsigned menu_entry_hover_color; - unsigned menu_title_color; - unsigned menu_xmb_layout; - unsigned menu_xmb_shader_pipeline; - unsigned menu_xmb_scale_factor; - unsigned menu_xmb_alpha_factor; - unsigned menu_xmb_theme; - unsigned menu_xmb_color_theme; - unsigned menu_materialui_color_theme; - unsigned menu_font_color_red; - unsigned menu_font_color_green; - unsigned menu_font_color_blue; - - unsigned camera_width; - unsigned camera_height; - - unsigned input_overlay_show_physical_inputs_port; - - unsigned input_joypad_map[MAX_USERS]; - unsigned input_device[MAX_USERS]; - unsigned input_mouse_index[MAX_USERS]; - /* Set by autoconfiguration in joypad_autoconfig_dir. + struct + { + bool placeholder; + + /* Video */ + bool video_fullscreen; + bool video_windowed_fullscreen; + bool video_vsync; + bool video_hard_sync; + bool video_black_frame_insertion; + bool video_vfilter; + bool video_smooth; + bool video_force_aspect; + bool video_crop_overscan; + bool video_aspect_ratio_auto; + bool video_scale_integer; + bool video_shader_enable; + bool video_shader_watch_files; + bool video_threaded; + bool video_font_enable; + bool video_disable_composition; + bool video_post_filter_record; + bool video_gpu_record; + bool video_gpu_screenshot; + bool video_allow_rotate; + bool video_shared_context; + bool video_force_srgb_disable; + bool video_fps_show; + bool video_statistics_show; + bool video_framecount_show; + bool video_msg_bgcolor_enable; + bool crt_switch_resolution; + + /* Audio */ + bool audio_enable; + bool audio_enable_menu; + bool audio_sync; + bool audio_rate_control; + bool audio_wasapi_exclusive_mode; + bool audio_wasapi_float_format; + + /* Input */ + bool input_remap_binds_enable; + bool input_autodetect_enable; + bool input_overlay_enable; + bool input_overlay_enable_autopreferred; + bool input_overlay_hide_in_menu; + bool input_overlay_show_physical_inputs; + bool input_descriptor_label_show; + bool input_descriptor_hide_unbound; + bool input_all_users_control_menu; + bool input_menu_swap_ok_cancel_buttons; + bool input_backtouch_enable; + bool input_backtouch_toggle; + bool input_small_keyboard_enable; + bool input_keyboard_gamepad_enable; + + /* Menu */ + bool filter_by_current_core; + bool menu_show_start_screen; + bool menu_pause_libretro; + bool menu_timedate_enable; + bool menu_battery_level_enable; + bool menu_core_enable; + bool menu_dynamic_wallpaper_enable; + bool menu_throttle; + bool menu_mouse_enable; + bool menu_pointer_enable; + bool menu_navigation_wraparound_enable; + bool menu_navigation_browser_filter_supported_extensions_enable; + bool menu_dpi_override_enable; + bool menu_show_advanced_settings; + bool menu_throttle_framerate; + bool menu_linear_filter; + bool menu_horizontal_animation; + bool menu_show_online_updater; + bool menu_show_core_updater; + bool menu_show_load_core; + bool menu_show_load_content; + bool menu_show_information; + bool menu_show_configurations; + bool menu_show_help; + bool menu_show_quit_retroarch; + bool menu_show_reboot; + bool menu_show_latency; + bool menu_show_rewind; + bool menu_show_overlays; + bool menu_materialui_icons_enable; + bool menu_rgui_background_filler_thickness_enable; + bool menu_rgui_border_filler_thickness_enable; + bool menu_rgui_border_filler_enable; + bool menu_xmb_shadows_enable; + bool menu_xmb_vertical_thumbnails; + bool menu_content_show_settings; + bool menu_content_show_favorites; + bool menu_content_show_images; + bool menu_content_show_music; + bool menu_content_show_video; + bool menu_content_show_netplay; + bool menu_content_show_history; + bool menu_content_show_add; + bool menu_content_show_playlists; + bool menu_unified_controls; + bool quick_menu_show_take_screenshot; + bool quick_menu_show_save_load_state; + bool quick_menu_show_undo_save_load_state; + bool quick_menu_show_add_to_favorites; + bool quick_menu_show_options; + bool quick_menu_show_controls; + bool quick_menu_show_cheats; + bool quick_menu_show_shaders; + bool quick_menu_show_save_core_overrides; + bool quick_menu_show_save_game_overrides; + bool quick_menu_show_save_content_dir_overrides; + bool quick_menu_show_information; + bool kiosk_mode_enable; + + /* Netplay */ + bool netplay_public_announce; + bool netplay_start_as_spectator; + bool netplay_allow_slaves; + bool netplay_require_slaves; + bool netplay_stateless_mode; + bool netplay_nat_traversal; + bool netplay_use_mitm_server; + bool netplay_request_devices[MAX_USERS]; + + /* Network */ + bool network_buildbot_auto_extract_archive; + + /* UI */ + bool ui_menubar_enable; + bool ui_suspend_screensaver_enable; + bool ui_companion_start_on_boot; + bool ui_companion_enable; + bool ui_companion_toggle; + bool desktop_menu_enable; + + /* Cheevos */ + bool cheevos_enable; + bool cheevos_test_unofficial; + bool cheevos_hardcore_mode_enable; + bool cheevos_leaderboards_enable; + bool cheevos_badges_enable; + bool cheevos_verbose_enable; + bool cheevos_auto_screenshot; + + /* Camera */ + bool camera_allow; + + /* WiFi */ + bool wifi_allow; + + /* Location */ + bool location_allow; + + /* Multimedia */ + bool multimedia_builtin_mediaplayer_enable; + bool multimedia_builtin_imageviewer_enable; + + /* Bundle */ + bool bundle_finished; + bool bundle_assets_extract_enable; + + /* Misc. */ + bool threaded_data_runloop_enable; + bool set_supports_no_game_enable; + bool auto_screenshot_filename; + bool history_list_enable; + bool playlist_entry_remove; + bool playlist_entry_rename; + bool rewind_enable; + bool run_ahead_enabled; + bool run_ahead_secondary_instance; + bool run_ahead_hide_warnings; + bool pause_nonactive; + bool block_sram_overwrite; + bool savestate_auto_index; + bool savestate_auto_save; + bool savestate_auto_load; + bool savestate_thumbnail_enable; + bool network_cmd_enable; + bool stdin_cmd_enable; + bool keymapper_enable; + bool network_remote_enable; + bool network_remote_enable_user[MAX_USERS]; + bool load_dummy_on_core_shutdown; + bool check_firmware_before_loading; + + bool game_specific_options; + bool auto_overrides_enable; + bool auto_remaps_enable; + bool auto_shaders_enable; + + bool sort_savefiles_enable; + bool sort_savestates_enable; + bool config_save_on_exit; + bool show_hidden_files; + + bool savefiles_in_content_dir; + bool savestates_in_content_dir; + bool screenshots_in_content_dir; + bool systemfiles_in_content_dir; + bool ssh_enable; + bool samba_enable; + bool bluetooth_enable; + + bool automatically_add_content_to_playlist; + bool video_window_show_decorations; + +#ifdef SWITCH // Switch specific Settings + bool split_joycon; // Split Joycons + bool hack_overlay; // Hacky overlay since our switches are possessed +#endif + } bools; + + struct + { + float placeholder; + float video_scale; + float video_aspect_ratio; + float video_refresh_rate; + float video_font_size; + float video_msg_pos_x; + float video_msg_pos_y; + float video_msg_color_r; + float video_msg_color_g; + float video_msg_color_b; + float video_msg_bgcolor_opacity; + + float menu_wallpaper_opacity; + float menu_framebuffer_opacity; + float menu_footer_opacity; + float menu_header_opacity; + + float audio_max_timing_skew; + float audio_volume; /* dB scale. */ + float audio_mixer_volume; /* dB scale. */ + + float input_overlay_opacity; + float input_overlay_scale; + + float slowmotion_ratio; + float fastforward_ratio; + } floats; + + struct + { + int placeholder; + int netplay_check_frames; + int location_update_interval_ms; + int location_update_interval_distance; + int state_slot; + int audio_wasapi_sh_buffer_length; + } ints; + + struct + { + unsigned placeholder; + unsigned audio_out_rate; + unsigned audio_block_frames; + unsigned audio_latency; + + unsigned audio_resampler_quality; + + unsigned input_turbo_period; + unsigned input_turbo_duty_cycle; + + unsigned input_bind_timeout; + + unsigned input_menu_toggle_gamepad_combo; + unsigned input_keyboard_gamepad_mapping_type; + unsigned input_poll_type_behavior; + unsigned netplay_port; + unsigned netplay_input_latency_frames_min; + unsigned netplay_input_latency_frames_range; + unsigned netplay_share_digital; + unsigned netplay_share_analog; + unsigned bundle_assets_extract_version_current; + unsigned bundle_assets_extract_last_version; + unsigned content_history_size; + unsigned libretro_log_level; + unsigned rewind_granularity; + unsigned autosave_interval; + unsigned network_cmd_port; + unsigned network_remote_base_port; + unsigned keymapper_port; + unsigned video_window_x; + unsigned video_window_y; + unsigned video_window_opacity; + unsigned crt_switch_resolution_super; + unsigned video_monitor_index; + unsigned video_fullscreen_x; + unsigned video_fullscreen_y; + unsigned video_max_swapchain_images; + unsigned video_swap_interval; + unsigned video_hard_sync_frames; + unsigned video_frame_delay; + unsigned video_viwidth; + unsigned video_aspect_ratio_idx; + unsigned video_rotation; + unsigned video_msg_bgcolor_red; + unsigned video_msg_bgcolor_green; + unsigned video_msg_bgcolor_blue; + + unsigned menu_thumbnails; + unsigned menu_left_thumbnails; + unsigned menu_dpi_override_value; + unsigned menu_entry_normal_color; + unsigned menu_entry_hover_color; + unsigned menu_title_color; + unsigned menu_xmb_layout; + unsigned menu_xmb_shader_pipeline; + unsigned menu_xmb_scale_factor; + unsigned menu_xmb_alpha_factor; + unsigned menu_xmb_theme; + unsigned menu_xmb_color_theme; + unsigned menu_materialui_color_theme; + unsigned menu_font_color_red; + unsigned menu_font_color_green; + unsigned menu_font_color_blue; + + unsigned camera_width; + unsigned camera_height; + + unsigned input_overlay_show_physical_inputs_port; + + unsigned input_joypad_map[MAX_USERS]; + unsigned input_device[MAX_USERS]; + unsigned input_mouse_index[MAX_USERS]; + /* Set by autoconfiguration in joypad_autoconfig_dir. * Does not override main binds. */ - unsigned input_libretro_device[MAX_USERS]; - unsigned input_analog_dpad_mode[MAX_USERS]; - - unsigned input_keymapper_ids[MAX_USERS][RARCH_CUSTOM_BIND_LIST_END]; - - unsigned input_remap_ids[MAX_USERS][RARCH_CUSTOM_BIND_LIST_END]; - - unsigned led_map[MAX_LEDS]; - - unsigned run_ahead_frames; - } uints; - - struct - { - char placeholder; - - char video_driver[32]; - char record_driver[32]; - char camera_driver[32]; - char wifi_driver[32]; - char led_driver[32]; - char location_driver[32]; - char menu_driver[32]; - char cheevos_username[32]; - char cheevos_password[32]; - char cheevos_token[32]; - char video_context_driver[32]; - char audio_driver[32]; - char audio_resampler[32]; - char input_driver[32]; - char input_joypad_driver[32]; - - char input_keyboard_layout[64]; - - char audio_device[255]; - char camera_device[255]; - - char playlist_names[PATH_MAX_LENGTH]; - char playlist_cores[PATH_MAX_LENGTH]; - char bundle_assets_src[PATH_MAX_LENGTH]; - char bundle_assets_dst[PATH_MAX_LENGTH]; - char bundle_assets_dst_subdir[PATH_MAX_LENGTH]; - - char netplay_mitm_server[255]; - } arrays; - - struct - { - char placeholder; - - char username[32]; - char netplay_password[128]; - char netplay_spectate_password[128]; - char netplay_server[255]; - char network_buildbot_url[255]; - char network_buildbot_assets_url[255]; - char browse_url[4096]; - - char path_menu_xmb_font[PATH_MAX_LENGTH]; - char menu_content_show_settings_password[PATH_MAX_LENGTH]; - char kiosk_mode_password[PATH_MAX_LENGTH]; - char path_cheat_database[PATH_MAX_LENGTH]; - char path_content_database[PATH_MAX_LENGTH]; - char path_overlay[PATH_MAX_LENGTH]; - char path_menu_wallpaper[PATH_MAX_LENGTH]; - char path_audio_dsp_plugin[PATH_MAX_LENGTH]; - char path_softfilter_plugin[PATH_MAX_LENGTH]; - char path_core_options[PATH_MAX_LENGTH]; - char path_content_history[PATH_MAX_LENGTH]; - char path_content_favorites[PATH_MAX_LENGTH]; - char path_content_music_history[PATH_MAX_LENGTH]; - char path_content_image_history[PATH_MAX_LENGTH]; - char path_content_video_history[PATH_MAX_LENGTH]; - char path_libretro_info[PATH_MAX_LENGTH]; - char path_cheat_settings[PATH_MAX_LENGTH]; - char path_shader[PATH_MAX_LENGTH]; - char path_font[PATH_MAX_LENGTH]; - - - char directory_audio_filter[PATH_MAX_LENGTH]; - char directory_autoconfig[PATH_MAX_LENGTH]; - char directory_video_filter[PATH_MAX_LENGTH]; - char directory_video_shader[PATH_MAX_LENGTH]; - char directory_content_history[PATH_MAX_LENGTH]; - char directory_content_favorites[PATH_MAX_LENGTH]; - char directory_libretro[PATH_MAX_LENGTH]; - char directory_cursor[PATH_MAX_LENGTH]; - char directory_input_remapping[PATH_MAX_LENGTH]; - char directory_overlay[PATH_MAX_LENGTH]; - char directory_resampler[PATH_MAX_LENGTH]; - char directory_screenshot[PATH_MAX_LENGTH]; - char directory_system[PATH_MAX_LENGTH]; - char directory_cache[PATH_MAX_LENGTH]; - char directory_playlist[PATH_MAX_LENGTH]; - char directory_core_assets[PATH_MAX_LENGTH]; - char directory_assets[PATH_MAX_LENGTH]; - char directory_dynamic_wallpapers[PATH_MAX_LENGTH]; - char directory_thumbnails[PATH_MAX_LENGTH]; - char directory_menu_config[PATH_MAX_LENGTH]; - char directory_menu_content[PATH_MAX_LENGTH]; - } paths; - - bool modified; - - video_viewport_t video_viewport_custom; - - size_t rewind_buffer_size; + unsigned input_libretro_device[MAX_USERS]; + unsigned input_analog_dpad_mode[MAX_USERS]; + + unsigned input_keymapper_ids[MAX_USERS][RARCH_CUSTOM_BIND_LIST_END]; + + unsigned input_remap_ids[MAX_USERS][RARCH_CUSTOM_BIND_LIST_END]; + + unsigned led_map[MAX_LEDS]; + + unsigned run_ahead_frames; + } uints; + + struct + { + char placeholder; + + char video_driver[32]; + char record_driver[32]; + char camera_driver[32]; + char wifi_driver[32]; + char led_driver[32]; + char location_driver[32]; + char menu_driver[32]; + char cheevos_username[32]; + char cheevos_password[32]; + char cheevos_token[32]; + char video_context_driver[32]; + char audio_driver[32]; + char audio_resampler[32]; + char input_driver[32]; + char input_joypad_driver[32]; + + char input_keyboard_layout[64]; + + char audio_device[255]; + char camera_device[255]; + + char playlist_names[PATH_MAX_LENGTH]; + char playlist_cores[PATH_MAX_LENGTH]; + char bundle_assets_src[PATH_MAX_LENGTH]; + char bundle_assets_dst[PATH_MAX_LENGTH]; + char bundle_assets_dst_subdir[PATH_MAX_LENGTH]; + + char netplay_mitm_server[255]; + } arrays; + + struct + { + char placeholder; + + char username[32]; + char netplay_password[128]; + char netplay_spectate_password[128]; + char netplay_server[255]; + char network_buildbot_url[255]; + char network_buildbot_assets_url[255]; + char browse_url[4096]; + + char path_menu_xmb_font[PATH_MAX_LENGTH]; + char menu_content_show_settings_password[PATH_MAX_LENGTH]; + char kiosk_mode_password[PATH_MAX_LENGTH]; + char path_cheat_database[PATH_MAX_LENGTH]; + char path_content_database[PATH_MAX_LENGTH]; + char path_overlay[PATH_MAX_LENGTH]; + char path_menu_wallpaper[PATH_MAX_LENGTH]; + char path_audio_dsp_plugin[PATH_MAX_LENGTH]; + char path_softfilter_plugin[PATH_MAX_LENGTH]; + char path_core_options[PATH_MAX_LENGTH]; + char path_content_history[PATH_MAX_LENGTH]; + char path_content_favorites[PATH_MAX_LENGTH]; + char path_content_music_history[PATH_MAX_LENGTH]; + char path_content_image_history[PATH_MAX_LENGTH]; + char path_content_video_history[PATH_MAX_LENGTH]; + char path_libretro_info[PATH_MAX_LENGTH]; + char path_cheat_settings[PATH_MAX_LENGTH]; + char path_shader[PATH_MAX_LENGTH]; + char path_font[PATH_MAX_LENGTH]; + + char directory_audio_filter[PATH_MAX_LENGTH]; + char directory_autoconfig[PATH_MAX_LENGTH]; + char directory_video_filter[PATH_MAX_LENGTH]; + char directory_video_shader[PATH_MAX_LENGTH]; + char directory_content_history[PATH_MAX_LENGTH]; + char directory_content_favorites[PATH_MAX_LENGTH]; + char directory_libretro[PATH_MAX_LENGTH]; + char directory_cursor[PATH_MAX_LENGTH]; + char directory_input_remapping[PATH_MAX_LENGTH]; + char directory_overlay[PATH_MAX_LENGTH]; + char directory_resampler[PATH_MAX_LENGTH]; + char directory_screenshot[PATH_MAX_LENGTH]; + char directory_system[PATH_MAX_LENGTH]; + char directory_cache[PATH_MAX_LENGTH]; + char directory_playlist[PATH_MAX_LENGTH]; + char directory_core_assets[PATH_MAX_LENGTH]; + char directory_assets[PATH_MAX_LENGTH]; + char directory_dynamic_wallpapers[PATH_MAX_LENGTH]; + char directory_thumbnails[PATH_MAX_LENGTH]; + char directory_menu_config[PATH_MAX_LENGTH]; + char directory_menu_content[PATH_MAX_LENGTH]; + } paths; + + bool modified; + + video_viewport_t video_viewport_custom; + + size_t rewind_buffer_size; } settings_t; /** diff --git a/file_path_special.c b/file_path_special.c index 85313af6b4dd773b7bf7e241d8e0c541f6f283d9..f40627176f9dde36a86c4bb26d95773a9287e501 100644 --- a/file_path_special.c +++ b/file_path_special.c @@ -358,6 +358,13 @@ void fill_pathname_application_special(char *s, free(s2); } break; + case APPLICATION_SPECIAL_DIRECTORY_ASSETS_NXRGUI_FONT: +#ifdef SWITCH + { + strcpy(s, "/retroarch/nxrgui.ttf"); + } +#endif + break; case APPLICATION_SPECIAL_NONE: default: diff --git a/file_path_special.h b/file_path_special.h index 16455f24869ae41e376120590e021c3c15e72bd3..e3e56c0d82205b50ef0e24c48b30d9c19d83dfe1 100644 --- a/file_path_special.h +++ b/file_path_special.h @@ -111,7 +111,8 @@ enum application_special_type APPLICATION_SPECIAL_DIRECTORY_ASSETS_ZARCH, APPLICATION_SPECIAL_DIRECTORY_ASSETS_ZARCH_FONT, APPLICATION_SPECIAL_DIRECTORY_ASSETS_ZARCH_ICONS, - APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_CHEEVOS_BADGES + APPLICATION_SPECIAL_DIRECTORY_THUMBNAILS_CHEEVOS_BADGES, + APPLICATION_SPECIAL_DIRECTORY_ASSETS_NXRGUI_FONT }; /** diff --git a/frontend/drivers/platform_switch.c b/frontend/drivers/platform_switch.c index d3e0405cacf7f4822036df1aa2925b8eb4787a73..fef56b1678d523f70e6fbd700c602d6a6fc4c5f2 100644 --- a/frontend/drivers/platform_switch.c +++ b/frontend/drivers/platform_switch.c @@ -148,8 +148,6 @@ static void frontend_switch_deinit(void *data) splashData = NULL; } - //romfsExit(); - gfxExit(); } @@ -392,6 +390,9 @@ end: return ret; } +// runloop_get_system_info isnt initialized that early.. +extern void retro_get_system_info(struct retro_system_info *info); + static void frontend_switch_init(void *data) { (void)data; @@ -414,105 +415,57 @@ static void frontend_switch_init(void *data) #endif #endif + rarch_system_info_t *sys_info = runloop_get_system_info(); + retro_get_system_info(sys_info); + + const char *core_name = NULL; + printf("[Video]: Video initialized\n"); - // RomFs - /*Result rc = romfsInit(); - if (R_FAILED(rc)) - { - printf("[RomFS]: %08X\n", rc); - } - else - { - printf("[RomFS]: RomFS initialized\n", rc); - */ + uint32_t width, height; + width = height = 0; + // Load splash if (!splashData) { - uint32_t width, height; - width = height = 0; - - // Meh, filesize got too big.. - rpng_load_image_argb("/retroarch/splash_01_720p.png", &splashData, &width, &height); - if (splashData) + if (sys_info) { - argb_to_rgba8(splashData, height, width); - frontend_switch_showsplash(); - } + core_name = sys_info->info.library_name; + char *full_core_splash_path = (char *)malloc(PATH_MAX); + snprintf(full_core_splash_path, PATH_MAX, "/retroarch/nxrgui/splash/%s.png", core_name); -#if 0 - FILE *fsplash = fopen("romfs:/splash_01_720p.png", "r"); - if (fsplash) + rpng_load_image_argb((const char *)full_core_splash_path, &splashData, &width, &height); + if (splashData) { - uint64_t fsize = 0; - fseek(fsplash, 0L, SEEK_END); - fsize = ftell(fsplash); - rewind(fsplash); - - splashData = malloc(fsize); + argb_to_rgba8(splashData, height, width); + frontend_switch_showsplash(); + } + else + { + rpng_load_image_argb("/retroarch/nxrgui/splash/RetroNX.png", &splashData, &width, &height); if (splashData) { - // I am lazy - fread(splashData, fsize, 1, fsplash); - fclose(fsplash); - if (splashData) - { - rpng_t *rpng = NULL; - rpng_set_buf_ptr(rpng, splashData); - rpng_start(rpng); - while (rpng_iterate_image(rpng)) - ; - - if (!rpng_is_valid(rpng)) - { - // Invalid image - free(splashData); - splashData = NULL; - } - else - { - int retval; - uint32_t *tmpswap = NULL; - - do - { - retval = rpng_process_image(rpng, &tmpswap, fsize, 1280, 720); - - // Yield - svcSleepThread(3); - } while (retval == IMAGE_PROCESS_NEXT); - - rpng_free(rpng); - if (tmpswap) - { - free(splashData); - splashData = tmpswap; - } - frontend_switch_showsplash(); - } - } - } - else - { - // Uufff, no memory? - // What were you doing?? - printf("??[Out of memory]??\n"); - fclose(fsplash); + argb_to_rgba8(splashData, height, width); + frontend_switch_showsplash(); } } + + free(full_core_splash_path); } else { - // For future updates - frontend_switch_showsplash(); + rpng_load_image_argb("/retroarch/nxrgui/splash/RetroNX.png", &splashData, &width, &height); + if (splashData) + { + argb_to_rgba8(splashData, height, width); + frontend_switch_showsplash(); + } } -#endif } else { frontend_switch_showsplash(); } - //} } static int frontend_switch_get_rating(void) diff --git a/gfx/common/switch_common.h b/gfx/common/switch_common.h new file mode 100644 index 0000000000000000000000000000000000000000..34dd6dd043f4dd24422954dd29390fc33bbc2d52 --- /dev/null +++ b/gfx/common/switch_common.h @@ -0,0 +1,58 @@ +#ifndef SWITCH_COMMON_H__ +#define SWITCH_COMMON_H__ + +#include +#include + +typedef struct +{ + bool vsync; + bool rgb32; + bool smooth; // bilinear + unsigned width, height; + unsigned rotation; + struct video_viewport vp; + struct texture_image *overlay; + bool overlay_enabled; + bool in_menu; + struct + { + bool enable; + bool fullscreen; + + uint32_t *pixels; + + uint32_t width; + uint32_t height; + + unsigned tgtw; + unsigned tgth; + + struct scaler_ctx scaler; + } menu_texture; + + struct { + uint32_t width; + uint32_t height; + uint32_t x_offset; + } hw_scale; + + uint32_t image[1280 * 720]; + uint32_t tmp_image[1280 * 720]; + u32 cnt; + struct scaler_ctx scaler; + uint32_t last_width; + uint32_t last_height; + bool keep_aspect; + bool should_resize; + bool need_clear; + bool is_threaded; + + bool o_size; + uint32_t o_height; + uint32_t o_width; +} switch_video_t; + +void gfx_slow_swizzling_blit(uint32_t *buffer, uint32_t *image, int w, int h, int tx, int ty, bool blend); + +#endif diff --git a/gfx/drivers/switch_gfx.c b/gfx/drivers/switch_gfx.c index e81565faa845786cb064b79847ea6f29cb3a8caf..eacd544bfe4293e0ab3bd3bbf676fa65c6c171bd 100644 --- a/gfx/drivers/switch_gfx.c +++ b/gfx/drivers/switch_gfx.c @@ -9,6 +9,7 @@ #include "../../libretro-common/include/formats/image.h" #include #include +#include #include @@ -29,29 +30,33 @@ #include "../../retroarch.h" #include "../../verbosity.h" +#include "../common/switch_common.h" + #ifndef HAVE_THREADS #include "../../tasks/tasks_internal.h" #endif +#ifdef HAVE_NXRGUI extern uint32_t *nx_backgroundImage; // Temp Overlay // KILL IT WITH FIRE extern uint32_t *tmp_overlay; +#endif // (C) libtransistor static int pdep(uint32_t mask, uint32_t value) { - uint32_t out = 0; - for (int shift = 0; shift < 32; shift++) - { - uint32_t bit = 1u << shift; - if (mask & bit) - { - if (value & 1) - out |= bit; - value >>= 1; - } - } - return out; + uint32_t out = 0; + for (int shift = 0; shift < 32; shift++) + { + uint32_t bit = 1u << shift; + if (mask & bit) + { + if (value & 1) + out |= bit; + value >>= 1; + } + } + return out; } static uint32_t swizzle_x(uint32_t v) { return pdep(~0x7B4u, v); } @@ -59,582 +64,629 @@ static uint32_t swizzle_y(uint32_t v) { return pdep(0x7B4, v); } void gfx_slow_swizzling_blit(uint32_t *buffer, uint32_t *image, int w, int h, int tx, int ty, bool blend) { - uint32_t *dest = buffer; - uint32_t *src = image; - int x0 = tx; - int y0 = ty; - int x1 = x0 + w; - int y1 = y0 + h; - const uint32_t tile_height = 128; - const uint32_t padded_width = 128 * 10; - - // we're doing this in pixels - should just shift the swizzles instead - uint32_t offs_x0 = swizzle_x(x0); - uint32_t offs_y = swizzle_y(y0); - uint32_t x_mask = swizzle_x(~0u); - uint32_t y_mask = swizzle_y(~0u); - uint32_t incr_y = swizzle_x(padded_width); - - // step offs_x0 to the right row of tiles - offs_x0 += incr_y * (y0 / tile_height); - - uint32_t x, y; - for (y = y0; y < y1; y++) - { - uint32_t *dest_line = dest + offs_y; - uint32_t offs_x = offs_x0; - - for (x = x0; x < x1; x++) + uint32_t *dest = buffer; + uint32_t *src = image; + int x0 = tx; + int y0 = ty; + int x1 = x0 + w; + int y1 = y0 + h; + const uint32_t tile_height = 128; + const uint32_t padded_width = 128 * 10; + + // we're doing this in pixels - should just shift the swizzles instead + uint32_t offs_x0 = swizzle_x(x0); + uint32_t offs_y = swizzle_y(y0); + uint32_t x_mask = swizzle_x(~0u); + uint32_t y_mask = swizzle_y(~0u); + uint32_t incr_y = swizzle_x(padded_width); + + // step offs_x0 to the right row of tiles + offs_x0 += incr_y * (y0 / tile_height); + + uint32_t x, y; + for (y = y0; y < y1; y++) + { + uint32_t *dest_line = dest + offs_y; + uint32_t offs_x = offs_x0; + + for (x = x0; x < x1; x++) + { + uint32_t pixel = *src++; + if (blend) // supercheap masking { - uint32_t pixel = *src++; - if (blend) // supercheap masking - { - uint32_t dst = dest_line[offs_x]; - uint8_t src_a = ((pixel & 0xFF000000) >> 24); - - if (src_a > 0) - { - pixel &= 0x00FFFFFF; - } - else - { - pixel = dst; - } - } - - dest_line[offs_x] = pixel; - offs_x = (offs_x - x_mask) & x_mask; + uint32_t dst = dest_line[offs_x]; + uint8_t src_a = ((pixel & 0xFF000000) >> 24); + + if (src_a > 0) + { + pixel &= 0x00FFFFFF; + } + else + { + pixel = dst; + } } - offs_y = (offs_y - y_mask) & y_mask; - if (!offs_y) - offs_x0 += incr_y; // wrap into next tile row - } + dest_line[offs_x] = pixel; + + offs_x = (offs_x - x_mask) & x_mask; + } + + offs_y = (offs_y - y_mask) & y_mask; + if (!offs_y) + offs_x0 += incr_y; // wrap into next tile row + } } -typedef struct +// needed to clear surface completely as hw scaling doesn't always scale to full resoution perflectly +static void clear_screen(switch_video_t *sw) { - struct video_viewport vp; - struct scaler_ctx scaler; - bool vsync; - bool should_resize; - - uint32_t image[1280 * 720]; - uint32_t tmp_image[1280 * 720]; - - struct texture_image *overlay; - unsigned rotation; - uint32_t last_width; - uint32_t last_height; - uint32_t o_height; - uint32_t o_width; - bool o_size; - bool keep_aspect; - bool overlay_enabled; - bool rgb32; - - struct - { - uint32_t *pixels; - - uint32_t width; - uint32_t height; - - unsigned tgtw; - unsigned tgth; - - struct scaler_ctx scaler; - - bool enable; - bool fullscreen; - } menu_texture; -} switch_video_t; + gfxConfigureResolution(sw->vp.full_width, sw->vp.full_height); -static void *switch_init(const video_info_t *video, - const input_driver_t **input, void **input_data) -{ - unsigned x, y; - void *switchinput = NULL; - - switch_video_t *sw = (switch_video_t *)calloc(1, sizeof(*sw)); - if (!sw) - return NULL; - - printf("loading switch gfx driver, width: %d, height: %d\n", video->width, video->height); - sw->vp.x = 0; - sw->vp.y = 0; - sw->vp.width = sw->o_width = video->width; - sw->vp.height = sw->o_height = video->height; - sw->overlay_enabled = false; - sw->overlay = NULL; - - sw->vp.full_width = 1280; - sw->vp.full_height = 720; - - // Sanity check - sw->vp.width = MIN(sw->vp.width, sw->vp.full_width); - sw->vp.height = MIN(sw->vp.height, sw->vp.full_height); - - sw->vsync = video->vsync; - sw->rgb32 = video->rgb32; - sw->keep_aspect = true; - sw->should_resize = true; - sw->o_size = true; - - // Autoselect driver - if (input && input_data) - { - settings_t *settings = config_get_ptr(); - switchinput = input_switch.init(settings->arrays.input_joypad_driver); - *input = switchinput ? &input_switch : NULL; - *input_data = switchinput; - } - - return sw; + uint32_t *out_buffer = (uint32_t *)gfxGetFramebuffer(NULL, NULL); + + memset(out_buffer, 0, gfxGetFramebufferSize()); + + gfxFlushBuffers(); + gfxSwapBuffers(); + gfxWaitForVsync(); } -static void switch_wait_vsync(switch_video_t *sw) +static void *switch_init(const video_info_t *video, + const input_driver_t **input, void **input_data) { - gfxWaitForVsync(); + void *switchinput = NULL; + + switch_video_t *sw = (switch_video_t *)calloc(1, sizeof(*sw)); + if (!sw) + return NULL; + + printf("loading switch gfx driver, width: %d, height: %d threaded: %d smooth %d\n", video->width, video->height, video->is_threaded, video->smooth); + sw->vp.x = 0; + sw->vp.y = 0; + sw->vp.width = sw->o_width = video->width; + sw->vp.height = sw->o_height = video->height; + sw->overlay_enabled = false; + sw->overlay = NULL; + sw->in_menu = false; + + sw->vp.full_width = 1280; + sw->vp.full_height = 720; + + // Sanity check + sw->vp.width = MIN(sw->vp.width, sw->vp.full_width); + sw->vp.height = MIN(sw->vp.height, sw->vp.full_height); + + sw->vsync = video->vsync; + sw->rgb32 = video->rgb32; + sw->keep_aspect = true; + sw->should_resize = true; + sw->o_size = true; + sw->is_threaded = video->is_threaded; + sw->smooth = video->smooth; + sw->menu_texture.enable = false; + + // Autoselect driver + if (input && input_data) + { + settings_t *settings = config_get_ptr(); + switchinput = input_switch.init(settings->arrays.input_joypad_driver); + *input = switchinput ? &input_switch : NULL; + *input_data = switchinput; + } + + font_driver_init_osd(sw, false, + video->is_threaded, + FONT_DRIVER_RENDER_SWITCH); + + clear_screen(sw); + + return sw; } static void switch_update_viewport(switch_video_t *sw, video_frame_info_t *video_info) { - int x = 0; - int y = 0; - float width = sw->vp.full_width; - float height = sw->vp.full_height; - if (sw->o_size) - { - width = sw->o_width; - height = sw->o_height; - sw->vp.x = (int)(((float)sw->vp.full_width - width)) / 2; - sw->vp.y = (int)(((float)sw->vp.full_height - height)) / 2; - - sw->vp.width = width; - sw->vp.height = height; - - return; - } - - settings_t *settings = config_get_ptr(); - float desired_aspect = video_driver_get_aspect_ratio(); - - // We crash if >1.0f - printf("[Video] Aspect: %f\n", desired_aspect); - /*if (desired_aspect > 1.8f) + int x = 0; + int y = 0; + float width = sw->vp.full_width; + float height = sw->vp.full_height; + if (sw->o_size) + { + width = sw->o_width; + height = sw->o_height; + sw->vp.x = (int)(((float)sw->vp.full_width - width)) / 2; + sw->vp.y = (int)(((float)sw->vp.full_height - height)) / 2; + + sw->vp.width = width; + sw->vp.height = height; + + return; + } + + settings_t *settings = config_get_ptr(); + float desired_aspect = video_driver_get_aspect_ratio(); + + // We crash if >1.0f + printf("[Video] Aspect: %f\n", desired_aspect); + /*if (desired_aspect > 1.8f) desired_aspect = 1.7778f; if (desired_aspect < 1.2f && desired_aspect != 0.0f) desired_aspect = 1.0f;*/ - if (settings->bools.video_scale_integer) - { - video_viewport_get_scaled_integer(&sw->vp, sw->vp.full_width, sw->vp.full_height, desired_aspect, sw->keep_aspect); - } - else if (sw->keep_aspect) - { + if (settings->bools.video_scale_integer) + { + video_viewport_get_scaled_integer(&sw->vp, sw->vp.full_width, sw->vp.full_height, desired_aspect, sw->keep_aspect); + } + else if (sw->keep_aspect) + { #if defined(HAVE_MENU) - if (settings->uints.video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM) + if (settings->uints.video_aspect_ratio_idx == ASPECT_RATIO_CUSTOM) + { + sw->vp.x = sw->vp.y = 0; + sw->vp.width = width; + sw->vp.height = height; + } + else +#endif + { + float delta; + float device_aspect = ((float)sw->vp.full_width) / sw->vp.full_height; + + if (fabsf(device_aspect - desired_aspect) < 0.0001f) { - sw->vp.x = sw->vp.y = 0; - sw->vp.width = width; - sw->vp.height = height; + /* + * If the aspect ratios of screen and desired aspect + * ratio are sufficiently equal (floating point stuff), + * assume they are actually equal. + */ + } + else if (device_aspect > desired_aspect) + { + delta = (desired_aspect / device_aspect - 1.0f) / 2.0f + 0.5f; + x = (int)roundf(width * (0.5f - delta)); + width = (unsigned)roundf(2.0f * width * delta); } else -#endif { - float delta; - float device_aspect = ((float)sw->vp.full_width) / sw->vp.full_height; - - if (fabsf(device_aspect - desired_aspect) < 0.0001f) - { - /* If the aspect ratios of screen and desired aspect - * ratio are sufficiently equal (floating point stuff), - * assume they are actually equal. - */ - } - else if (device_aspect > desired_aspect) - { - delta = (desired_aspect / device_aspect - 1.0f) / 2.0f + 0.5f; - x = (int)roundf(width * (0.5f - delta)); - width = (unsigned)roundf(2.0f * width * delta); - } - else - { - delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f; - y = (int)roundf(height * (0.5f - delta)); - height = (unsigned)roundf(2.0f * height * delta); - } + delta = (device_aspect / desired_aspect - 1.0f) / 2.0f + 0.5f; + y = (int)roundf(height * (0.5f - delta)); + height = (unsigned)roundf(2.0f * height * delta); } - - sw->vp.x = x; - sw->vp.y = y; - - sw->vp.width = width; - sw->vp.height = height; - } - else - { - sw->vp.x = sw->vp.y = 0; - sw->vp.width = width; - sw->vp.height = height; - } + } + + sw->vp.x = x; + sw->vp.y = y; + + sw->vp.width = width; + sw->vp.height = height; + } + else + { + sw->vp.x = sw->vp.y = 0; + sw->vp.width = width; + sw->vp.height = height; + } } static void switch_set_aspect_ratio(void *data, unsigned aspect_ratio_idx) { - switch_video_t *sw = (switch_video_t *)data; + switch_video_t *sw = (switch_video_t *)data; - if (!sw) - return; + if (!sw) + return; + + sw->keep_aspect = true; + sw->o_size = false; + + settings_t *settings = config_get_ptr(); - sw->keep_aspect = true; - sw->o_size = false; + switch (aspect_ratio_idx) + { + case ASPECT_RATIO_SQUARE: + video_driver_set_viewport_square_pixel(); + break; - settings_t *settings = config_get_ptr(); + case ASPECT_RATIO_CORE: + video_driver_set_viewport_core(); + sw->o_size = true; + sw->keep_aspect = false; + break; - switch (aspect_ratio_idx) - { - case ASPECT_RATIO_SQUARE: - video_driver_set_viewport_square_pixel(); - break; + case ASPECT_RATIO_CONFIG: + video_driver_set_viewport_config(); + break; - case ASPECT_RATIO_CORE: + case ASPECT_RATIO_CUSTOM: + if (settings->bools.video_scale_integer) + { video_driver_set_viewport_core(); sw->o_size = true; sw->keep_aspect = false; - break; + } + break; - case ASPECT_RATIO_CONFIG: - video_driver_set_viewport_config(); - break; + default: + break; + } - case ASPECT_RATIO_CUSTOM: - if (settings->bools.video_scale_integer) - { - video_driver_set_viewport_core(); - sw->o_size = true; - sw->keep_aspect = false; - } - break; - - default: - break; - } + video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value); - video_driver_set_aspect_ratio_value(aspectratio_lut[aspect_ratio_idx].value); - - sw->should_resize = true; + sw->should_resize = true; } static bool switch_frame(void *data, const void *frame, unsigned width, unsigned height, uint64_t frame_count, unsigned pitch, const char *msg, video_frame_info_t *video_info) - { - //static uint64_t last_frame = 0; - - unsigned x, y; - uint32_t *out_buffer = NULL; - switch_video_t *sw = data; - - if (sw->should_resize) - { - printf("[Video] Requesting new size\n"); - printf("[Video] fw: %i fh: %i w: %i h: %i x: %i y: %i\n", sw->vp.full_width, sw->vp.full_height, sw->vp.width, sw->vp.height, sw->vp.x, sw->vp.y); - switch_update_viewport(sw, video_info); - printf("[Video] fw: %i fh: %i w: %i h: %i x: %i y: %i\n", sw->vp.full_width, sw->vp.full_height, sw->vp.width, sw->vp.height, sw->vp.x, sw->vp.y); - - // Sanity check - sw->vp.width = MIN(sw->vp.width, sw->vp.full_width); - sw->vp.height = MIN(sw->vp.height, sw->vp.full_height); - - scaler_ctx_gen_reset(&sw->scaler); - - sw->scaler.in_width = width; - sw->scaler.in_height = height; - sw->scaler.in_stride = pitch; - sw->scaler.in_fmt = sw->rgb32 ? SCALER_FMT_ARGB8888 : SCALER_FMT_RGB565; - + switch_video_t *sw = data; + uint32_t *out_buffer = NULL; + bool ffwd_mode = video_info->input_driver_nonblock_state; + + if (!frame) + return true; + + if (ffwd_mode && !sw->is_threaded) + { + // render every 4th frame when in ffwd mode and not threaded + if ((frame_count % 4) != 0) + return true; + } + + if (sw->should_resize || width != sw->last_width || height != sw->last_height) + { + printf("[Video] Requesting new size: width %i height %i\n", width, height); + printf("[Video] fw: %i fh: %i w: %i h: %i x: %i y: %i\n", sw->vp.full_width, sw->vp.full_height, sw->vp.width, sw->vp.height, sw->vp.x, sw->vp.y); + switch_update_viewport(sw, video_info); + printf("[Video] fw: %i fh: %i w: %i h: %i x: %i y: %i\n", sw->vp.full_width, sw->vp.full_height, sw->vp.width, sw->vp.height, sw->vp.x, sw->vp.y); + + // Sanity check + sw->vp.width = MIN(sw->vp.width, sw->vp.full_width); + sw->vp.height = MIN(sw->vp.height, sw->vp.full_height); + + scaler_ctx_gen_reset(&sw->scaler); + + sw->scaler.in_width = width; + sw->scaler.in_height = height; + sw->scaler.in_stride = pitch; + sw->scaler.in_fmt = sw->rgb32 ? SCALER_FMT_ARGB8888 : SCALER_FMT_RGB565; + + if (!sw->smooth) + { sw->scaler.out_width = sw->vp.width; sw->scaler.out_height = sw->vp.height; sw->scaler.out_stride = sw->vp.full_width * sizeof(uint32_t); - sw->scaler.out_fmt = SCALER_FMT_ABGR8888; - - sw->scaler.scaler_type = SCALER_TYPE_POINT; - - if (!scaler_ctx_gen_filter(&sw->scaler)) + } + else + { + sw->scaler.out_width = width; + sw->scaler.out_height = height; + sw->scaler.out_stride = width * sizeof(uint32_t); + + float screen_ratio = (float)sw->vp.full_width / sw->vp.full_height; + float tgt_ratio = (float)sw->vp.width / sw->vp.height; + + sw->hw_scale.width = ceil(screen_ratio / tgt_ratio * sw->scaler.out_width); + sw->hw_scale.height = sw->scaler.out_height; + sw->hw_scale.x_offset = ceil((sw->hw_scale.width - sw->scaler.out_width) / 2.0); + if (!video_info->menu_is_alive) { - printf("failed to generate scaler for main image\n"); - return false; + clear_screen(sw); + gfxConfigureResolution(sw->hw_scale.width, sw->hw_scale.height); } + } + sw->scaler.out_fmt = SCALER_FMT_ABGR8888; - sw->last_width = width; - sw->last_height = height; - - sw->should_resize = false; - memset(sw->image, 0, sizeof(sw->image)); - } + sw->scaler.scaler_type = SCALER_TYPE_POINT; - if (width > 0 && height > 0) - { - scaler_ctx_scale(&sw->scaler, sw->image + (sw->vp.y * sw->vp.full_width) + sw->vp.x, frame); - } - - if (sw->menu_texture.enable) - { - memset(sw->tmp_image, 0, sizeof(sw->tmp_image)); - menu_driver_frame(video_info); + if (!scaler_ctx_gen_filter(&sw->scaler)) + { + printf("failed to generate scaler for main image\n"); + return false; + } - if (sw->menu_texture.pixels) - { - scaler_ctx_scale(&sw->menu_texture.scaler, sw->tmp_image + ((sw->vp.full_height - sw->menu_texture.tgth) / 2) * sw->vp.full_width + ((sw->vp.full_width - sw->menu_texture.tgtw) / 2), sw->menu_texture.pixels); - } - } - else if (video_info->statistics_show) - { - struct font_params *osd_params = (struct font_params *)&video_info->osd_stat_params; + sw->last_width = width; + sw->last_height = height; - if (osd_params) - { - font_driver_render_msg(video_info, NULL, video_info->stat_text, - (const struct font_params *)&video_info->osd_stat_params); - } - } + sw->should_resize = false; + } - //if (msg && strlen(msg) > 0) - // printf("message: %s\n", msg); + out_buffer = (uint32_t *)gfxGetFramebuffer(NULL, NULL); - width = 0; - height = 0; + if (sw->in_menu && !video_info->menu_is_alive && sw->smooth) + { + memset(out_buffer, 0, sw->vp.full_width * sw->vp.full_height * 4); + gfxConfigureResolution(sw->hw_scale.width, sw->hw_scale.height); + } + sw->in_menu = video_info->menu_is_alive; - out_buffer = (uint32_t *)gfxGetFramebuffer(&width, &height); + if (sw->menu_texture.enable) + { + menu_driver_frame(video_info); - if (sw->menu_texture.enable && sw->menu_texture.pixels) - { + if (sw->menu_texture.pixels) + { +#ifdef HAVE_NXRGUI gfx_slow_swizzling_blit(out_buffer, nx_backgroundImage, sw->vp.full_width, sw->vp.full_height, 0, 0, false); +#else + memset(out_buffer, 0, gfxGetFramebufferSize()); +#endif + scaler_ctx_scale(&sw->menu_texture.scaler, sw->tmp_image + ((sw->vp.full_height - sw->menu_texture.tgth) / 2) * sw->vp.full_width + ((sw->vp.full_width - sw->menu_texture.tgtw) / 2), sw->menu_texture.pixels); gfx_slow_swizzling_blit(out_buffer, sw->tmp_image, sw->vp.full_width, sw->vp.full_height, 0, 0, true); - } - else - { - gfx_slow_swizzling_blit(out_buffer, sw->image, sw->vp.full_width, sw->vp.full_height, 0, 0, false); - if (tmp_overlay) - { - gfx_slow_swizzling_blit(out_buffer, tmp_overlay, sw->vp.full_width, sw->vp.full_height, 0, 0, true); - } - } + } + } + else if (sw->smooth) // bilinear + { + struct scaler_ctx *ctx = &sw->scaler; + scaler_ctx_scale_direct(ctx, sw->image, frame); + int w = sw->scaler.out_width; + int h = sw->scaler.out_height; + for (int y = 0; y < h; y++) + for (int x = 0; x < w; x++) + out_buffer[gfxGetFramebufferDisplayOffset(x + sw->hw_scale.x_offset, y)] = sw->image[y * w + x]; + } + else + { + struct scaler_ctx *ctx = &sw->scaler; + scaler_ctx_scale(ctx, sw->image + (sw->vp.y * sw->vp.full_width) + sw->vp.x, frame); + gfx_slow_swizzling_blit(out_buffer, sw->image, sw->vp.full_width, sw->vp.full_height, 0, 0, false); +#ifdef HAVE_NXRGUI + if (tmp_overlay) + { + gfx_slow_swizzling_blit(out_buffer, tmp_overlay, sw->vp.full_width, sw->vp.full_height, 0, 0, true); + } +#endif + } + + if (video_info->statistics_show && !sw->smooth) + { + struct font_params *osd_params = (struct font_params *)&video_info->osd_stat_params; - gfxFlushBuffers(); - gfxSwapBuffers(); - if (sw->vsync) - switch_wait_vsync(sw); + if (osd_params) + { + font_driver_render_msg(video_info, NULL, video_info->stat_text, + (const struct font_params *)&video_info->osd_stat_params); + } + } - //last_frame = svcGetSystemTick(); + if (msg) + font_driver_render_msg(video_info, NULL, msg, NULL); - return true; + gfxFlushBuffers(); + gfxSwapBuffers(); + if (sw->vsync || video_info->menu_is_alive) + gfxWaitForVsync(); + + return true; } static void switch_set_nonblock_state(void *data, bool toggle) { - switch_video_t *sw = data; - sw->vsync = !toggle; + switch_video_t *sw = data; + sw->vsync = !toggle; } static bool switch_alive(void *data) { - (void)data; - return true; + (void)data; + return true; } static bool switch_focus(void *data) { - (void)data; - return true; + (void)data; + return true; } static bool switch_suppress_screensaver(void *data, bool enable) { - (void)data; - (void)enable; - return false; + (void)data; + (void)enable; + return false; } static bool switch_has_windowed(void *data) { - (void)data; - return false; + (void)data; + return false; } static void switch_free(void *data) { - switch_video_t *sw = data; - if (sw->menu_texture.pixels) - free(sw->menu_texture.pixels); + switch_video_t *sw = data; + if (sw->menu_texture.pixels) + free(sw->menu_texture.pixels); - free(sw); + free(sw); } static bool switch_set_shader(void *data, enum rarch_shader_type type, const char *path) { - (void)data; - (void)type; - (void)path; + (void)data; + (void)type; + (void)path; - return false; + return false; } static void switch_set_rotation(void *data, unsigned rotation) { - switch_video_t *sw = data; - if (!sw) - return; - sw->rotation = rotation; + switch_video_t *sw = data; + if (!sw) + return; + sw->rotation = rotation; } static void switch_viewport_info(void *data, struct video_viewport *vp) { - switch_video_t *sw = data; - *vp = sw->vp; + switch_video_t *sw = data; + *vp = sw->vp; } static bool switch_read_viewport(void *data, uint8_t *buffer, bool is_idle) { - (void)data; - (void)buffer; + (void)data; + (void)buffer; - return true; + return true; } static void switch_set_texture_frame( void *data, const void *frame, bool rgb32, unsigned width, unsigned height, float alpha) { + switch_video_t *sw = data; + size_t sz = width * height * (rgb32 ? 4 : 2); + + if (!sw->menu_texture.pixels || + sw->menu_texture.width != width || + sw->menu_texture.height != height) + { + if (sw->menu_texture.pixels) + { + realloc(sw->menu_texture.pixels, sz); + } + else + { + sw->menu_texture.pixels = malloc(sz); + } + + if (!sw->menu_texture.pixels) + { + printf("failed to allocate buffer for menu texture\n"); + return; + } - switch_video_t *sw = data; - - if (!sw->menu_texture.pixels || - sw->menu_texture.width != width || - sw->menu_texture.height != height) - { - if (sw->menu_texture.pixels) - free(sw->menu_texture.pixels); - - sw->menu_texture.pixels = malloc(width * height * (rgb32 ? 4 : 2)); - if (!sw->menu_texture.pixels) - { - printf("failed to allocate buffer for menu texture\n"); - return; - } - - int xsf = 1280 / width; - int ysf = 720 / height; - int sf = xsf; + int xsf = 1280 / width; + int ysf = 720 / height; + int sf = xsf; - if (ysf < sf) - sf = ysf; + if (ysf < sf) + sf = ysf; - sw->menu_texture.width = width; - sw->menu_texture.height = height; - sw->menu_texture.tgtw = width * sf; - sw->menu_texture.tgth = height * sf; + sw->menu_texture.width = width; + sw->menu_texture.height = height; + sw->menu_texture.tgtw = width * sf; + sw->menu_texture.tgth = height * sf; - struct scaler_ctx *sctx = &sw->menu_texture.scaler; - scaler_ctx_gen_reset(sctx); + struct scaler_ctx *sctx = &sw->menu_texture.scaler; + scaler_ctx_gen_reset(sctx); - sctx->in_width = width; - sctx->in_height = height; - sctx->in_stride = width * (rgb32 ? 4 : 2); - sctx->in_fmt = rgb32 ? SCALER_FMT_ARGB8888 : SCALER_FMT_RGB565; - sctx->out_width = sw->menu_texture.tgtw; - sctx->out_height = sw->menu_texture.tgth; - sctx->out_stride = 1280 * 4; - sctx->out_fmt = SCALER_FMT_ABGR8888; + sctx->in_width = width; + sctx->in_height = height; + sctx->in_stride = width * (rgb32 ? 4 : 2); + sctx->in_fmt = rgb32 ? SCALER_FMT_ARGB8888 : SCALER_FMT_RGB565; + sctx->out_width = sw->menu_texture.tgtw; + sctx->out_height = sw->menu_texture.tgth; + sctx->out_stride = 1280 * 4; + sctx->out_fmt = SCALER_FMT_ABGR8888; - sctx->scaler_type = SCALER_TYPE_POINT; + sctx->scaler_type = SCALER_TYPE_POINT; - if (!scaler_ctx_gen_filter(sctx)) - { - printf("failed to generate scaler for menu texture\n"); - return; - } - } + if (!scaler_ctx_gen_filter(sctx)) + { + printf("failed to generate scaler for menu texture\n"); + return; + } + } - memcpy(sw->menu_texture.pixels, frame, width * height * (rgb32 ? 4 : 2)); + memcpy(sw->menu_texture.pixels, frame, sz); } static void switch_apply_state_changes(void *data) { - switch_video_t *sw = (switch_video_t *)data; + (void)data; } static void switch_set_texture_enable(void *data, bool enable, bool full_screen) { - switch_video_t *sw = data; - sw->menu_texture.enable = enable; - sw->menu_texture.fullscreen = full_screen; + switch_video_t *sw = data; + + if (!sw->menu_texture.enable && enable) + { + gfxConfigureResolution(sw->vp.full_width, sw->vp.full_height); + } + else if (!enable && sw->menu_texture.enable && sw->smooth) + { + clear_screen(sw); + gfxConfigureResolution(sw->hw_scale.width, sw->hw_scale.height); + } + + sw->menu_texture.enable = enable; + sw->menu_texture.fullscreen = full_screen; +} + +static void switch_set_osd_msg(void *data, + video_frame_info_t *video_info, + const char *msg, + const void *params, void *font) +{ + switch_video_t *sw = (switch_video_t *)data; + + if (sw) + font_driver_render_msg(video_info, font, msg, params); } #ifdef HAVE_OVERLAY static void switch_overlay_enable(void *data, bool state) { - printf("[Video] Enabled Overlay\n"); + printf("[Video] Enabled Overlay\n"); - switch_video_t *swa = (switch_video_t *)data; + switch_video_t *swa = (switch_video_t *)data; - if (!swa) - return; + if (!swa) + return; - swa->overlay_enabled = state; + swa->overlay_enabled = state; } static bool switch_overlay_load(void *data, const void *image_data, unsigned num_images) { - switch_video_t *swa = (switch_video_t *)data; + switch_video_t *swa = (switch_video_t *)data; - struct texture_image *images = (struct texture_image *)image_data; + struct texture_image *images = (struct texture_image *)image_data; - if (!swa) - return false; + if (!swa) + return false; - swa->overlay = images; - swa->overlay_enabled = true; + swa->overlay = images; + swa->overlay_enabled = true; - return true; + return true; } static void switch_overlay_tex_geom(void *data, unsigned idx, float x, float y, float w, float h) { - switch_video_t *swa = (switch_video_t *)data; + switch_video_t *swa = (switch_video_t *)data; - if (!swa) - return; + if (!swa) + return; } static void switch_overlay_vertex_geom(void *data, unsigned idx, float x, float y, float w, float h) { - switch_video_t *swa = (switch_video_t *)data; + switch_video_t *swa = (switch_video_t *)data; - if (!swa) - return; + if (!swa) + return; } static void switch_overlay_full_screen(void *data, bool enable) { - switch_video_t *swa = (switch_video_t *)data; + (void)data; + (void)enable; } static void switch_overlay_set_alpha(void *data, unsigned idx, float mod) { - switch_video_t *swa = (switch_video_t *)data; - - if (!swa) - return; + (void)data; + (void)idx; + (void)mod; } static const video_overlay_interface_t switch_overlay = { @@ -648,10 +700,10 @@ static const video_overlay_interface_t switch_overlay = { void switch_overlay_interface(void *data, const video_overlay_interface_t **iface) { - switch_video_t *swa = (switch_video_t *)data; - if (!swa) - return; - *iface = &switch_overlay; + switch_video_t *swa = (switch_video_t *)data; + if (!swa) + return; + *iface = &switch_overlay; } #endif @@ -674,7 +726,7 @@ static const video_poke_interface_t switch_poke_interface = { switch_apply_state_changes, /* apply_state_changes */ switch_set_texture_frame, switch_set_texture_enable, - NULL, /* set_osd_msg */ + switch_set_osd_msg, NULL, /* show_mouse */ NULL, /* grab_mouse_toggle */ NULL, /* get_current_shader */ @@ -685,8 +737,8 @@ static const video_poke_interface_t switch_poke_interface = { static void switch_get_poke_interface(void *data, const video_poke_interface_t **iface) { - (void)data; - *iface = &switch_poke_interface; + (void)data; + *iface = &switch_poke_interface; } video_driver_t video_switch = { @@ -710,3 +762,5 @@ video_driver_t video_switch = { #endif switch_get_poke_interface, }; + +/* vim: set ts=6 sw=6 sts=6: */ diff --git a/gfx/drivers_font/switch_font.c b/gfx/drivers_font/switch_font.c new file mode 100644 index 0000000000000000000000000000000000000000..5864b44d540c915842b998a60511f7578382dafc --- /dev/null +++ b/gfx/drivers_font/switch_font.c @@ -0,0 +1,333 @@ +#include +#include +#include +#include +#include + +#include + +#include "../font_driver.h" +#include "../video_driver.h" + +#include "../../verbosity.h" + +#include "../common/switch_common.h" + +typedef struct +{ + struct font_atlas *atlas; + + const font_renderer_driver_t *font_driver; + void *font_data; +} switch_font_t; + +static void *switch_font_init_font(void *data, const char *font_path, + float font_size, bool is_threaded) +{ + switch_font_t *font = (switch_font_t *)calloc(1, sizeof(switch_font_t)); + + if (!font) + return NULL; + + if (!font_renderer_create_default((const void **)&font->font_driver, + &font->font_data, font_path, font_size)) + { + RARCH_WARN("Couldn't initialize font renderer.\n"); + free(font); + return NULL; + } + + font->atlas = font->font_driver->get_atlas(font->font_data); + + RARCH_LOG("Switch font driver initialized with backend %s\n", font->font_driver->ident); + + return font; +} + +static void switch_font_free_font(void *data, bool is_threaded) +{ + switch_font_t *font = (switch_font_t *)data; + + if (!font) + return; + + if (font->font_driver && font->font_data) + font->font_driver->free(font->font_data); + + free(font); +} + +static int switch_font_get_message_width(void *data, const char *msg, + unsigned msg_len, float scale) +{ + switch_font_t *font = (switch_font_t *)data; + + unsigned i; + int delta_x = 0; + + if (!font) + return 0; + + for (i = 0; i < msg_len; i++) + { + const char *msg_tmp = &msg[i]; + unsigned code = utf8_walk(&msg_tmp); + unsigned skip = msg_tmp - &msg[i]; + + if (skip > 1) + i += skip - 1; + + const struct font_glyph *glyph = + font->font_driver->get_glyph(font->font_data, code); + + if (!glyph) /* Do something smarter here ... */ + glyph = font->font_driver->get_glyph(font->font_data, '?'); + + if (!glyph) + continue; + + delta_x += glyph->advance_x; + } + + return delta_x * scale; +} + +static void switch_font_render_line( + video_frame_info_t *video_info, + switch_font_t *font, const char *msg, unsigned msg_len, + float scale, const unsigned int color, float pos_x, + float pos_y, unsigned text_align) +{ + int delta_x = 0; + int delta_y = 0; + + unsigned fbWidth = 0; + unsigned fbHeight = 0; + + uint32_t *out_buffer = (uint32_t *)gfxGetFramebuffer(&fbWidth, &fbHeight); + if (out_buffer) + { + int x = roundf(pos_x * fbWidth); + int y = roundf((1.0f - pos_y) * fbHeight); + + switch (text_align) + { + case TEXT_ALIGN_RIGHT: + x -= switch_font_get_message_width(font, msg, msg_len, scale); + break; + case TEXT_ALIGN_CENTER: + x -= switch_font_get_message_width(font, msg, msg_len, scale) / 2; + break; + } + + for (int i = 0; i < msg_len; i++) + { + int off_x, off_y, tex_x, tex_y, width, height; + const char *msg_tmp = &msg[i]; + unsigned code = utf8_walk(&msg_tmp); + unsigned skip = msg_tmp - &msg[i]; + + if (skip > 1) + i += skip - 1; + + const struct font_glyph *glyph = + font->font_driver->get_glyph(font->font_data, code); + + if (!glyph) /* Do something smarter here ... */ + glyph = font->font_driver->get_glyph(font->font_data, '?'); + + if (!glyph) + continue; + + off_x = x + glyph->draw_offset_x + delta_x; + off_y = y + glyph->draw_offset_y + delta_y; + width = glyph->width; + height = glyph->height; + + tex_x = glyph->atlas_offset_x; + tex_y = glyph->atlas_offset_y; + + for (int y = tex_y; y < tex_y + height; y++) + { + uint8_t *row = &font->atlas->buffer[y * font->atlas->width]; + for (int x = tex_x; x < tex_x + width; x++) + { + if (!row[x]) + continue; + int x1 = off_x + (x - tex_x); + int y1 = off_y + (y - tex_y); + if (x1 < fbWidth && y1 < fbHeight) + out_buffer[gfxGetFramebufferDisplayOffset(x1, y1)] = color; + } + } + + delta_x += glyph->advance_x; + delta_y += glyph->advance_y; + } + } +} + +#define AVG_GLPYH_LIMIT 140 +static void switch_font_render_message( + video_frame_info_t *video_info, + switch_font_t *font, const char *msg, float scale, + const unsigned int color, float pos_x, float pos_y, + unsigned text_align) +{ + int lines = 0; + float line_height; + + if (!msg || !*msg) + return; + + /* If the font height is not supported just draw as usual */ + if (!font->font_driver->get_line_height) + { + int msgLen = strlen(msg); + if (msgLen <= AVG_GLPYH_LIMIT) + { + switch_font_render_line(video_info, font, msg, strlen(msg), + scale, color, pos_x, pos_y, text_align); + } + return; + } + line_height = scale / font->font_driver->get_line_height(font->font_data); + + for (;;) + { + const char *delim = strchr(msg, '\n'); + + /* Draw the line */ + if (delim) + { + unsigned msg_len = delim - msg; + if (msg_len <= AVG_GLPYH_LIMIT) + { + switch_font_render_line(video_info, font, msg, msg_len, + scale, color, pos_x, pos_y - (float)lines * line_height, + text_align); + } + msg += msg_len + 1; + lines++; + } + else + { + unsigned msg_len = strlen(msg); + if (msg_len <= AVG_GLPYH_LIMIT) + { + switch_font_render_line(video_info, font, msg, msg_len, + scale, color, pos_x, pos_y - (float)lines * line_height, + text_align); + } + break; + } + } +} + +static void switch_font_render_msg( + video_frame_info_t *video_info, + void *data, const char *msg, + const struct font_params *params) +{ + float x, y, scale, drop_mod, drop_alpha; + int drop_x, drop_y; + unsigned max_glyphs; + enum text_alignment text_align; + unsigned color, color_dark, r, g, b, + alpha, r_dark, g_dark, b_dark, alpha_dark; + switch_font_t *font = (switch_font_t *)data; + unsigned width = video_info->width; + unsigned height = video_info->height; + + if (!font || !msg || msg && !*msg) + return; + + if (params) + { + x = params->x; + y = params->y; + scale = params->scale; + text_align = params->text_align; + drop_x = params->drop_x; + drop_y = params->drop_y; + drop_mod = params->drop_mod; + drop_alpha = params->drop_alpha; + + r = FONT_COLOR_GET_RED(params->color); + g = FONT_COLOR_GET_GREEN(params->color); + b = FONT_COLOR_GET_BLUE(params->color); + alpha = FONT_COLOR_GET_ALPHA(params->color); + + color = params->color; + } + else + { + x = 0.0f; + y = 0.0f; + scale = 1.0f; + text_align = TEXT_ALIGN_LEFT; + + r = (video_info->font_msg_color_r * 255); + g = (video_info->font_msg_color_g * 255); + b = (video_info->font_msg_color_b * 255); + alpha = 255; + color = COLOR_ABGR(r, g, b, alpha); + + drop_x = -2; + drop_y = -2; + drop_mod = 0.3f; + drop_alpha = 1.0f; + } + + max_glyphs = strlen(msg); + + /*if (drop_x || drop_y) + max_glyphs *= 2; + + if (drop_x || drop_y) + { + r_dark = r * drop_mod; + g_dark = g * drop_mod; + b_dark = b * drop_mod; + alpha_dark = alpha * drop_alpha; + color_dark = COLOR_ABGR(r_dark, g_dark, b_dark, alpha_dark); + + switch_font_render_message(video_info, font, msg, scale, color_dark, + x + scale * drop_x / width, y + + scale * drop_y / height, text_align); + }*/ + + switch_font_render_message(video_info, font, msg, scale, + color, x, y, text_align); +} + +static const struct font_glyph *switch_font_get_glyph( + void *data, uint32_t code) +{ + switch_font_t *font = (switch_font_t *)data; + + if (!font || !font->font_driver) + return NULL; + + if (!font->font_driver->ident) + return NULL; + + return font->font_driver->get_glyph((void *)font->font_driver, code); +} + +static void switch_font_bind_block(void *data, void *userdata) +{ + (void)data; +} + +font_renderer_t switch_font = + { + switch_font_init_font, + switch_font_free_font, + switch_font_render_msg, + "switchfont", + switch_font_get_glyph, + switch_font_bind_block, + NULL, /* flush_block */ + switch_font_get_message_width, +}; diff --git a/gfx/font_driver.c b/gfx/font_driver.c index e385c8f67853528469f462b08bdd7f79c92ce1f0..3e07715acdf27343ae650cbc9242e562213590ad 100644 --- a/gfx/font_driver.c +++ b/gfx/font_driver.c @@ -27,7 +27,7 @@ #include "../verbosity.h" static const font_renderer_driver_t *font_backends[] = { -#ifdef HAVE_FREETYPE +#if defined(HAVE_FREETYPE) && !defined(SWITCH) // TODO: Fix freetype &freetype_font_renderer, #endif #if defined(__APPLE__) && defined(HAVE_CORETEXT) @@ -49,7 +49,6 @@ static void *video_font_driver = NULL; int font_renderer_create_default(const void **data, void **handle, const char *font_path, unsigned font_size) { - unsigned i; const font_renderer_driver_t **drv = (const font_renderer_driver_t**)data; @@ -433,6 +432,36 @@ static bool vita2d_font_init_first( } #endif +#ifdef __SWITCH__ +static const font_renderer_t *switch_font_backends[] = { + &switch_font +}; + +static bool switch_font_init_first( + const void **font_driver, void **font_handle, + void *video_data, const char *font_path, + float font_size, bool is_threaded) +{ + unsigned i; + + for (i = 0; switch_font_backends[i]; i++) + { + void *data = switch_font_backends[i]->init( + video_data, font_path, font_size, + is_threaded); + + if (!data) + continue; + + *font_driver = switch_font_backends[i]; + *font_handle = data; + return true; + } + + return false; +} +#endif + #ifdef _3DS static const font_renderer_t *ctr_font_backends[] = { &ctr_font @@ -501,7 +530,7 @@ static bool font_init_first( { if (font_path && !font_path[0]) font_path = NULL; - + switch (api) { #ifdef HAVE_OPENGL @@ -549,6 +578,11 @@ static bool font_init_first( return ctr_font_init_first(font_driver, font_handle, video_data, font_path, font_size, is_threaded); #endif +#ifdef __SWITCH__ + case FONT_DRIVER_RENDER_SWITCH: + return switch_font_init_first(font_driver, font_handle, + video_data, font_path, font_size, is_threaded); +#endif #ifdef WIIU case FONT_DRIVER_RENDER_WIIU: return wiiu_font_init_first(font_driver, font_handle, diff --git a/gfx/font_driver.h b/gfx/font_driver.h index 7d1818b4a33fd08a07b403d38aaf4bda9d8f0865..6bb5b7e5620a5dca200c51a89b305e4c90e412ee 100644 --- a/gfx/font_driver.h +++ b/gfx/font_driver.h @@ -169,6 +169,7 @@ extern font_renderer_t d3d12_font; extern font_renderer_t caca_font; extern font_renderer_t gdi_font; extern font_renderer_t vga_font; +extern font_renderer_t switch_font; extern font_renderer_driver_t stb_font_renderer; extern font_renderer_driver_t stb_unicode_font_renderer; diff --git a/gfx/video_defines.h b/gfx/video_defines.h index 997850b85658e8e9de79a9889648a0d333d98ef9..4d643059266213f2e6d0e2d7379f34ff9c0e29dd 100644 --- a/gfx/video_defines.h +++ b/gfx/video_defines.h @@ -93,7 +93,8 @@ enum font_driver_render_api FONT_DRIVER_RENDER_VULKAN_API, FONT_DRIVER_RENDER_CACA, FONT_DRIVER_RENDER_GDI, - FONT_DRIVER_RENDER_VGA + FONT_DRIVER_RENDER_VGA, + FONT_DRIVER_RENDER_SWITCH }; enum text_alignment diff --git a/input/drivers/switch_input.c b/input/drivers/switch_input.c index 4b36608a1e13548341ca417c0fb72d3ca1a8b873..3131a336b9e94837db18af6385ade00d583f430d 100644 --- a/input/drivers/switch_input.c +++ b/input/drivers/switch_input.c @@ -4,27 +4,30 @@ #include #include #include +#include "../configuration.h" #ifdef HAVE_CONFIG_H #include "../../config.h" #endif +#include + #include "../input_driver.h" #define MAX_PADS 8 typedef struct switch_input { - const input_device_driver_t *joypad; - bool blocked; + const input_device_driver_t *joypad; + bool blocked; } switch_input_t; static void switch_input_poll(void *data) { - switch_input_t *sw = (switch_input_t *)data; + switch_input_t *sw = (switch_input_t *)data; - if (sw->joypad) - sw->joypad->poll(); + if (sw->joypad) + sw->joypad->poll(); } static int16_t switch_input_state(void *data, @@ -33,91 +36,91 @@ static int16_t switch_input_state(void *data, unsigned port, unsigned device, unsigned idx, unsigned id) { - switch_input_t *sw = (switch_input_t *)data; - - if (port > MAX_PADS - 1) - return 0; - - switch (device) - { - case RETRO_DEVICE_JOYPAD: - return input_joypad_pressed(sw->joypad, joypad_info, port, binds[port], id); - break; - case RETRO_DEVICE_ANALOG: - if (binds[port]) - return input_joypad_analog(sw->joypad, joypad_info, port, idx, id, binds[port]); - break; - } - - return 0; + switch_input_t *sw = (switch_input_t *)data; + + if (port > MAX_PADS - 1) + return 0; + + switch (device) + { + case RETRO_DEVICE_JOYPAD: + return input_joypad_pressed(sw->joypad, joypad_info, port, binds[port], id); + break; + case RETRO_DEVICE_ANALOG: + if (binds[port]) + return input_joypad_analog(sw->joypad, joypad_info, port, idx, id, binds[port]); + break; + } + + return 0; } static void switch_input_free_input(void *data) { - switch_input_t *sw = (switch_input_t *)data; + switch_input_t *sw = (switch_input_t *)data; - if (sw && sw->joypad) - sw->joypad->destroy(); + if (sw && sw->joypad) + sw->joypad->destroy(); - free(sw); + free(sw); } static void *switch_input_init(const char *joypad_driver) { - switch_input_t *sw = (switch_input_t *)calloc(1, sizeof(*sw)); - if (!sw) - return NULL; + switch_input_t *sw = (switch_input_t *)calloc(1, sizeof(*sw)); + if (!sw) + return NULL; - sw->joypad = input_joypad_init_driver(joypad_driver, sw); + sw->joypad = input_joypad_init_driver(joypad_driver, sw); - return sw; + return sw; } static uint64_t switch_input_get_capabilities(void *data) { - (void)data; + (void)data; - return (1 << RETRO_DEVICE_JOYPAD) | (1 << RETRO_DEVICE_ANALOG); + return (1 << RETRO_DEVICE_JOYPAD) | (1 << RETRO_DEVICE_ANALOG); } static const input_device_driver_t *switch_input_get_joypad_driver(void *data) { - switch_input_t *sw = (switch_input_t *)data; - if (sw) - return sw->joypad; - return NULL; + switch_input_t *sw = (switch_input_t *)data; + if (sw) + return sw->joypad; + return NULL; } static void switch_input_grab_mouse(void *data, bool state) { - (void)data; - (void)state; + (void)data; + (void)state; } static bool switch_input_set_rumble(void *data, unsigned port, enum retro_rumble_effect effect, uint16_t strength) { - (void)data; - (void)port; - (void)effect; - (void)strength; + (void)data; + (void)port; + (void)effect; + (void)strength; - return false; + return false; } static bool switch_input_keyboard_mapping_is_blocked(void *data) { - switch_input_t *sw = (switch_input_t *)data; - if (!sw) - return false; - return sw->blocked; + switch_input_t *sw = (switch_input_t *)data; + if (!sw) + return false; + return sw->blocked; } static void switch_input_keyboard_mapping_set_block(void *data, bool value) { - switch_input_t *sw = (switch_input_t *)data; - if (!sw) - return; - sw->blocked = value; + switch_input_t *sw = (switch_input_t *)data; + if (!sw) + return; + sw->blocked = value; } input_driver_t input_switch = { diff --git a/input/drivers_joypad/switch_joypad.c b/input/drivers_joypad/switch_joypad.c index 9fea53015dce70a7a826ff878b135e71f0ef787b..3711c6aea4297d9ac94ec627533f586eb0464e32 100644 --- a/input/drivers_joypad/switch_joypad.c +++ b/input/drivers_joypad/switch_joypad.c @@ -4,6 +4,7 @@ #include +#include "../configuration.h" #include "../input_driver.h" #include "../../tasks/tasks_internal.h" @@ -22,138 +23,162 @@ extern uint64_t lifecycle_state; static const char *switch_joypad_name(unsigned pad) { - return "Switch Controller"; + return "Switch Controller"; } static void switch_joypad_autodetect_add(unsigned autoconf_pad) { - if (!input_autoconfigure_connect( - switch_joypad_name(autoconf_pad), /* name */ - NULL, /* display name */ - switch_joypad.ident, /* driver */ - autoconf_pad, /* idx */ - 0, /* vid */ - 0)) /* pid */ - input_config_set_device_name(autoconf_pad, switch_joypad_name(autoconf_pad)); + if (!input_autoconfigure_connect( + switch_joypad_name(autoconf_pad), /* name */ + NULL, /* display name */ + switch_joypad.ident, /* driver */ + autoconf_pad, /* idx */ + 0, /* vid */ + 0)) /* pid */ + input_config_set_device_name(autoconf_pad, switch_joypad_name(autoconf_pad)); } // This should be protected by the Input Mutex static bool switch_joypad_init(void *data) { - // Scan Input - hidScanInput(); + // Scan Input + hidScanInput(); - // Uhh, should use actual detection with libnx, no? - for (int i = 0; i < MAX_PADS; i++) - { - switch_joypad_autodetect_add(i); - } + // Uhh, should use actual detection with libnx, no? + for (int i = 0; i < MAX_PADS; i++) + { + switch_joypad_autodetect_add(i); + } - printf("[Input]: HID initialized\n"); + printf("[Input]: HID initialized\n"); - return true; + return true; } static bool switch_joypad_button(unsigned port_num, uint16_t key) { - if (port_num >= MAX_PADS) - return false; + if (port_num >= MAX_PADS) + return false; #if 0 RARCH_LOG("button(%d, %d)\n", port_num, key); #endif - return (pad_state[port_num] & (1 << key)); + return (pad_state[port_num] & (1 << key)); } static void switch_joypad_get_buttons(unsigned port_num, input_bits_t *state) { - if (port_num < MAX_PADS) - { - BITS_COPY16_PTR(state, pad_state[port_num]); - } - else - { - BIT256_CLEAR_ALL_PTR(state); - } + if (port_num < MAX_PADS) + { + BITS_COPY16_PTR(state, pad_state[port_num]); + } + else + { + BIT256_CLEAR_ALL_PTR(state); + } } static int16_t switch_joypad_axis(unsigned port_num, uint32_t joyaxis) { - int val = 0; - int axis = -1; - bool is_neg = false; - bool is_pos = false; - - if (joyaxis == AXIS_NONE || port_num >= MAX_PADS) - { - /* TODO/FIXME - implement */ - } - - if (AXIS_NEG_GET(joyaxis) < 4) - { - axis = AXIS_NEG_GET(joyaxis); - is_neg = true; - } - else if (AXIS_POS_GET(joyaxis) < 4) - { - axis = AXIS_POS_GET(joyaxis); - is_pos = true; - } - - switch (axis) - { - case 0: - val = analog_state[port_num][0][0]; - break; - case 1: - val = analog_state[port_num][0][1]; - break; - case 2: - val = analog_state[port_num][1][0]; - break; - case 3: - val = analog_state[port_num][1][1]; - break; - } - - if (is_neg && val > 0) - val = 0; - else if (is_pos && val < 0) - val = 0; - - return val; + int val = 0; + int axis = -1; + bool is_neg = false; + bool is_pos = false; + + if (joyaxis == AXIS_NONE || port_num >= MAX_PADS) + { + /* TODO/FIXME - implement */ + } + + if (AXIS_NEG_GET(joyaxis) < 4) + { + axis = AXIS_NEG_GET(joyaxis); + is_neg = true; + } + else if (AXIS_POS_GET(joyaxis) < 4) + { + axis = AXIS_POS_GET(joyaxis); + is_pos = true; + } + + switch (axis) + { + case 0: + val = analog_state[port_num][0][0]; + break; + case 1: + val = analog_state[port_num][0][1]; + break; + case 2: + val = analog_state[port_num][1][0]; + break; + case 3: + val = analog_state[port_num][1][1]; + break; + } + + if (is_neg && val > 0) + val = 0; + else if (is_pos && val < 0) + val = 0; + + return val; } static bool switch_joypad_query_pad(unsigned pad) { - return pad < MAX_PADS && pad_state[pad]; + return pad < MAX_PADS && pad_state[pad]; } static void switch_joypad_destroy(void) { } +extern settings_t *config_get_ptr(void); +int lastMode = 0; // 0 = handheld, 1 = whatever static void switch_joypad_poll(void) { - hidScanInput(); - - for (int i = 0; i < MAX_PADS; i++) - { - HidControllerID target = (i == 0) ? CONTROLLER_P1_AUTO : i; - - pad_state[i] = hidKeysDown(target) | hidKeysHeld(target); - - JoystickPosition joyPositionLeft, joyPositionRight; - - hidJoystickRead(&joyPositionLeft, target, JOYSTICK_LEFT); - hidJoystickRead(&joyPositionRight, target, JOYSTICK_RIGHT); - - analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_X] = joyPositionLeft.dx; - analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_Y] = -joyPositionLeft.dy; - analog_state[i][RETRO_DEVICE_INDEX_ANALOG_RIGHT][RETRO_DEVICE_ID_ANALOG_X] = joyPositionRight.dx; - analog_state[i][RETRO_DEVICE_INDEX_ANALOG_RIGHT][RETRO_DEVICE_ID_ANALOG_Y] = -joyPositionRight.dy; - } + hidScanInput(); + + settings_t *settingspr = config_get_ptr(); + if (settingspr->bools.split_joycon && !hidGetHandheldMode()) + { + if (lastMode != 1) + { + printf("[HID] Enable Split Joycon!\n"); + hidSetNpadJoyAssignmentModeSingleByDefault(CONTROLLER_PLAYER_1); + hidSetNpadJoyAssignmentModeSingleByDefault(CONTROLLER_PLAYER_2); + lastMode = 1; + } + } + else + { + if (lastMode != 0) + { + printf("[HID] Disable Split Joycon!\n"); + hidSetNpadJoyAssignmentModeDual(CONTROLLER_PLAYER_1); + hidSetNpadJoyAssignmentModeDual(CONTROLLER_PLAYER_2); + lastMode = 0; + } + } + + for (int i = 0; i < MAX_PADS; i++) + { + HidControllerID target = (i == 0) ? CONTROLLER_P1_AUTO : i; + + pad_state[i] = hidKeysDown(target) | hidKeysHeld(target); + + JoystickPosition joyPositionLeft, joyPositionRight; + + hidJoystickRead(&joyPositionLeft, target, JOYSTICK_LEFT); + hidJoystickRead(&joyPositionRight, target, JOYSTICK_RIGHT); + + analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_X] = joyPositionLeft.dx; + analog_state[i][RETRO_DEVICE_INDEX_ANALOG_LEFT][RETRO_DEVICE_ID_ANALOG_Y] = -joyPositionLeft.dy; + analog_state[i][RETRO_DEVICE_INDEX_ANALOG_RIGHT][RETRO_DEVICE_ID_ANALOG_X] = joyPositionRight.dx; + analog_state[i][RETRO_DEVICE_INDEX_ANALOG_RIGHT][RETRO_DEVICE_ID_ANALOG_Y] = -joyPositionRight.dy; + } } input_device_driver_t switch_joypad = { diff --git a/libretro-common/gfx/scaler/pixconv.c b/libretro-common/gfx/scaler/pixconv.c index 22e3359e25859df056b09d3ad1fce7313b9d51cb..49cc370509ae2b7845afa2323225c44309b7a02d 100644 --- a/libretro-common/gfx/scaler/pixconv.c +++ b/libretro-common/gfx/scaler/pixconv.c @@ -259,6 +259,79 @@ void conv_rgb565_argb8888(void *output_, const void *input_, } } +void conv_rgb565_abgr8888(void *output_, const void *input_, + int width, int height, + int out_stride, int in_stride) +{ + int h; + const uint16_t *input = (const uint16_t*)input_; + uint32_t *output = (uint32_t*)output_; + +#if defined(__SSE2__) + const __m128i pix_mask_r = _mm_set1_epi16(0x1f << 10); + const __m128i pix_mask_g = _mm_set1_epi16(0x3f << 5); + const __m128i pix_mask_b = _mm_set1_epi16(0x1f << 5); + const __m128i mul16_r = _mm_set1_epi16(0x0210); + const __m128i mul16_g = _mm_set1_epi16(0x2080); + const __m128i mul16_b = _mm_set1_epi16(0x4200); + const __m128i a = _mm_set1_epi16(0x00ff); + + int max_width = width - 7; +#endif + + for (h = 0; h < height; + h++, output += out_stride >> 2, input += in_stride >> 1) + { + int w = 0; +#if defined(__SSE2__) + for (; w < max_width; w += 8) + { + __m128i res_lo, res_hi; + __m128i res_lo_bg, res_hi_bg, res_lo_ra, res_hi_ra; + const __m128i in = _mm_loadu_si128((const __m128i*)(input + w)); + __m128i r = _mm_and_si128(_mm_srli_epi16(in, 1), pix_mask_r); + __m128i g = _mm_and_si128(in, pix_mask_g); + __m128i b = _mm_and_si128(_mm_slli_epi16(in, 5), pix_mask_b); + + r = _mm_mulhi_epi16(r, mul16_r); + g = _mm_mulhi_epi16(g, mul16_g); + b = _mm_mulhi_epi16(b, mul16_b); + + res_lo_bg = _mm_unpacklo_epi8(b, g); + res_hi_bg = _mm_unpackhi_epi8(b, g); + res_lo_ra = _mm_unpacklo_epi8(r, a); + res_hi_ra = _mm_unpackhi_epi8(r, a); + + res_lo = _mm_or_si128(res_lo_bg, + _mm_slli_si128(res_lo_ra, 2)); + res_hi = _mm_or_si128(res_hi_bg, + _mm_slli_si128(res_hi_ra, 2)); + + _mm_storeu_si128((__m128i*)(output + w + 0), res_lo); + _mm_storeu_si128((__m128i*)(output + w + 4), res_hi); + } +#endif + + for (; w < width; w++) + { + uint32_t col = input[w]; + uint32_t r = (col >> 11) & 0x1f; + uint32_t g = (col >> 5) & 0x3f; + uint32_t b = (col >> 0) & 0x1f; + r = (r << 3) | (r >> 2); + g = (g << 2) | (g >> 4); + b = (b << 3) | (b >> 2); + +// Transparent RGUI hack +#ifdef HAVE_NXRGUI + output[w] = ((r > 0 ? 0xffu : 0) << 24) | (b << 16) | (g << 8) | (r << 0); +#else + output[w] = (0xffu << 24) | (b << 16) | (g << 8) | (r << 0); +#endif + } + } +} + void conv_argb8888_rgba4444(void *output_, const void *input_, int width, int height, int out_stride, int in_stride) diff --git a/libretro-common/gfx/scaler/scaler.c b/libretro-common/gfx/scaler/scaler.c index 803fecb1aab37573a80fa6d647a3433d992c52ef..047c3745488a32916a7c2bbf45afccf991b5730f 100644 --- a/libretro-common/gfx/scaler/scaler.c +++ b/libretro-common/gfx/scaler/scaler.c @@ -119,6 +119,9 @@ bool scaler_ctx_gen_filter(struct scaler_ctx *ctx) case SCALER_FMT_ARGB8888: ctx->direct_pixconv = conv_rgb565_argb8888; break; + case SCALER_FMT_ABGR8888: + ctx->direct_pixconv = conv_rgb565_abgr8888; + break; case SCALER_FMT_BGR24: ctx->direct_pixconv = conv_rgb565_bgr24; break; diff --git a/libretro-common/include/gfx/scaler/pixconv.h b/libretro-common/include/gfx/scaler/pixconv.h index 100864de68ebdad4b726882ff28b567e25b9e22a..315d29076a99c2b36ef594bf9dc201975c442d47 100644 --- a/libretro-common/include/gfx/scaler/pixconv.h +++ b/libretro-common/include/gfx/scaler/pixconv.h @@ -46,6 +46,10 @@ void conv_rgb565_argb8888(void *output, const void *input, int width, int height, int out_stride, int in_stride); +void conv_rgb565_abgr8888(void *output, const void *input, + int width, int height, + int out_stride, int in_stride); + void conv_rgba4444_argb8888(void *output, const void *input, int width, int height, int out_stride, int in_stride); diff --git a/libretro-common/rthreads/switch_pthread.c b/libretro-common/rthreads/switch_pthread.c new file mode 100644 index 0000000000000000000000000000000000000000..102bc11ce476358c0e61e68fd0fdf1016242dcdf --- /dev/null +++ b/libretro-common/rthreads/switch_pthread.c @@ -0,0 +1,46 @@ +#include "switch_pthread.h" + +#include + +//extern unsigned cpu_features_get_core_amount(void); + +// Access is safe by safe_double_thread_launch Mutex +static uint32_t threadCounter = 1; + +int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) +{ + u32 prio = 0; + Thread new_switch_thread; + + svcGetThreadPriority(&prio, CUR_THREAD_HANDLE); + + //start_routine_jump = start_routine; + //if (threadCounter == cpu_features_get_core_amount()) + // threadCounter = 1; + + //int rc = threadCreate(&new_switch_thread, switch_thread_launcher, arg, STACKSIZE, prio - 1, 1); + int rc = threadCreate(&new_switch_thread, (void (*)(void *))start_routine, arg, STACKSIZE, prio - 1, 1); + + if (R_FAILED(rc)) + { + return EAGAIN; + } + + printf("[Threading]: Starting Thread(#%i)\n", threadCounter); + if (R_FAILED(threadStart(&new_switch_thread))) + { + threadClose(&new_switch_thread); + return -1; + } + + *thread = new_switch_thread; + + return 0; +} + +void pthread_exit(void *retval) +{ + (void)retval; + printf("[Threading]: Exiting Thread\n"); + svcExitThread(); +} diff --git a/libretro-common/rthreads/switch_pthread.h b/libretro-common/rthreads/switch_pthread.h index 21a63505e1b06b0e2384b22531ead5afdf2e1ff1..8293c84f63ff3ff0bed6690fc2c0d9320f4787b7 100644 --- a/libretro-common/rthreads/switch_pthread.h +++ b/libretro-common/rthreads/switch_pthread.h @@ -24,20 +24,14 @@ #define _SWITCH_PTHREAD_WRAP_ #include -#include #include -// memset -#include - #include #include #include "../../verbosity.h" #define THREADVARS_MAGIC 0x21545624 // !TV$ -extern unsigned cpu_features_get_core_amount(void); - // This structure is exactly 0x20 bytes, if more is needed modify getThreadVars() below typedef struct { @@ -57,7 +51,7 @@ typedef struct void *tls_tp; // !! Offset needs to be TLS+0x1F8 for __aarch64_read_tp !! } ThreadVars; -static inline ThreadVars *getThreadVars(void) +static INLINE ThreadVars *getThreadVars(void) { return (ThreadVars *)((u8 *)armGetTls() + 0x1E0); } @@ -65,73 +59,11 @@ static inline ThreadVars *getThreadVars(void) #define STACKSIZE (8 * 1024) /* libnx threads return void but pthreads return void pointer */ -static bool mutex_inited = false; -static Mutex safe_double_thread_launch; -static void *(*start_routine_jump)(void *); - -static INLINE void pthread_exit(void *retval) -{ - (void)retval; - printf("[Threading]: Exiting Thread\n"); - svcExitThread(); -} - -// Access is safe by safe_double_thread_launch Mutex -static uint32_t threadCounter = 1; - -static void switch_thread_launcher(void *data) -{ - threadCounter++; - void *(*start_routine_jump_safe)(void *) = start_routine_jump; - - mutexUnlock(&safe_double_thread_launch); - - start_routine_jump_safe(data); - - return; -} +void pthread_exit(void *retval); -static INLINE int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg) -{ - u32 prio = 0; - Thread new_switch_thread; - - if (!mutex_inited) - { - mutexInit(&safe_double_thread_launch); - mutex_inited = true; - } - - mutexLock(&safe_double_thread_launch); - - svcGetThreadPriority(&prio, CUR_THREAD_HANDLE); - - start_routine_jump = start_routine; - //if (threadCounter == cpu_features_get_core_amount()) - // threadCounter = 1; - - int rc = threadCreate(&new_switch_thread, switch_thread_launcher, arg, STACKSIZE, prio - 1, 1); - - if (R_FAILED(rc)) - { - mutexUnlock(&safe_double_thread_launch); - return EAGAIN; - } - - printf("[Threading]: Starting Thread(#%i)\n", threadCounter); - if (R_FAILED(threadStart(&new_switch_thread))) - { - threadClose(&new_switch_thread); - mutexUnlock(&safe_double_thread_launch); - return -1; - } - - *thread = new_switch_thread; - - return 0; -} +int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg); -Thread threadGetCurrent(void) +static INLINE Thread threadGetCurrent(void) { ThreadVars *tv = getThreadVars(); return *tv->thread_ptr; @@ -149,7 +81,7 @@ static INLINE int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutex return 0; } -static INLINE int pthread_mutex_destroy(pthread_mutex_t *mutex) +INLINE int pthread_mutex_destroy(pthread_mutex_t *mutex) { // Nothing *mutex = 0; @@ -159,8 +91,7 @@ static INLINE int pthread_mutex_destroy(pthread_mutex_t *mutex) static INLINE int pthread_mutex_lock(pthread_mutex_t *mutex) { - while (!mutexTryLock(mutex)) - svcSleepThread(3); + mutexLock(mutex); return 0; } @@ -171,7 +102,7 @@ static INLINE int pthread_mutex_unlock(pthread_mutex_t *mutex) return 0; } -static INLINE int pthread_detach(pthread_t thread) +INLINE int pthread_detach(pthread_t thread) { (void)thread; // Nothing for now @@ -227,13 +158,13 @@ static INLINE int pthread_cond_broadcast(pthread_cond_t *cond) return 0; } -static INLINE int pthread_cond_destroy(pthread_cond_t *cond) +INLINE int pthread_cond_destroy(pthread_cond_t *cond) { // Nothing return 0; } -static INLINE int pthread_equal(pthread_t t1, pthread_t t2) +INLINE int pthread_equal(pthread_t t1, pthread_t t2) { if (t1.handle == t2.handle) return 1; diff --git a/menu/drivers/nxrgui.c b/menu/drivers/nxrgui.c index 4e6c132768abccd70112ffa4623105840cb68d3b..a9b29b961245f972042833d3d4d1f649f506444a 100644 --- a/menu/drivers/nxrgui.c +++ b/menu/drivers/nxrgui.c @@ -61,7 +61,6 @@ #define nxrgui_TERM_HEIGHT(width, height) (((height - nxrgui_TERM_START_Y(height) - nxrgui_TERM_START_X(width)) / (FONT_HEIGHT_STRIDE)) - 1) uint32_t *nx_backgroundImage = NULL; -static uint16_t *nx_backgroundFb = NULL; // Extern Prototypes bool rpng_load_image_argb(const char *path, uint32_t **data, unsigned *width, unsigned *height); @@ -75,16 +74,18 @@ uint32_t *tmp_overlay = 0; typedef struct { - bool bg_modified; - bool force_redraw; - bool mouse_show; - unsigned last_width; - unsigned last_height; - unsigned frame_count; - bool bg_thickness; - bool border_thickness; - float scroll_y; - char *msgbox; + bool bg_modified; + bool force_redraw; + bool mouse_show; + unsigned last_width; + unsigned last_height; + unsigned frame_count; + bool bg_thickness; + bool border_thickness; + float scroll_y; + char *msgbox; + + font_data_t *font; } nxrgui_t; static uint16_t *nxrgui_framebuf_data = NULL; @@ -100,41 +101,41 @@ static uint16_t *nxrgui_framebuf_data = NULL; static uint16_t argb32_to_rgba4444(uint32_t col) { - unsigned a = ((col >> 24) & 0xff) >> 4; - unsigned r = ((col >> 16) & 0xff) >> 4; - unsigned g = ((col >> 8) & 0xff) >> 4; - unsigned b = ((col & 0xff)) >> 4; - return (r << 12) | (g << 8) | (b << 4) | a; + unsigned a = ((col >> 24) & 0xff) >> 4; + unsigned r = ((col >> 16) & 0xff) >> 4; + unsigned g = ((col >> 8) & 0xff) >> 4; + unsigned b = ((col & 0xff)) >> 4; + return (r << 12) | (g << 8) | (b << 4) | a; } #endif static uint16_t nxrgui_gray_filler(nxrgui_t *nxrgui, unsigned x, unsigned y) { - unsigned shft = (nxrgui->bg_thickness ? 1 : 0); - unsigned col = (((x >> shft) + (y >> shft)) & 1) + 1; + unsigned shft = (nxrgui->bg_thickness ? 1 : 0); + unsigned col = (((x >> shft) + (y >> shft)) & 1) + 1; #if defined(GEKKO) || defined(PSP) - return (6 << 12) | (col << 8) | (col << 4) | (col << 0); + return (6 << 12) | (col << 8) | (col << 4) | (col << 0); #elif defined(SWITCH) - return (((31 * (54)) / 255) << 11) | - (((63 * (54)) / 255) << 5) | - ((31 * (54)) / 255); + return (((31 * (54)) / 255) << 11) | + (((63 * (54)) / 255) << 5) | + ((31 * (54)) / 255); #else - return (col << 13) | (col << 9) | (col << 5) | (12 << 0); + return (col << 13) | (col << 9) | (col << 5) | (12 << 0); #endif } static uint16_t nxrgui_green_filler(nxrgui_t *nxrgui, unsigned x, unsigned y) { - unsigned shft = (nxrgui->border_thickness ? 1 : 0); - unsigned col = (((x >> shft) + (y >> shft)) & 1) + 1; + unsigned shft = (nxrgui->border_thickness ? 1 : 0); + unsigned col = (((x >> shft) + (y >> shft)) & 1) + 1; #if defined(GEKKO) || defined(PSP) - return (6 << 12) | (col << 8) | (col << 5) | (col << 0); + return (6 << 12) | (col << 8) | (col << 5) | (col << 0); #elif defined(SWITCH) - return (((31 * (54)) / 255) << 11) | - (((63 * (109)) / 255) << 5) | - ((31 * (54)) / 255); + return (((31 * (54)) / 255) << 11) | + (((63 * (109)) / 255) << 5) | + ((31 * (54)) / 255); #else - return (col << 13) | (col << 10) | (col << 5) | (12 << 0); + return (col << 13) | (col << 10) | (col << 5) | (12 << 0); #endif } @@ -146,43 +147,43 @@ static void nxrgui_color_rect( unsigned width, unsigned height, uint16_t color) { - unsigned i, j; + unsigned i, j; - for (j = y; j < y + height; j++) - for (i = x; i < x + width; i++) - if (i < fb_width && j < fb_height) - data[j * (pitch >> 1) + i] = color; + for (j = y; j < y + height; j++) + for (i = x; i < x + width; i++) + if (i < fb_width && j < fb_height) + data[j * (pitch >> 1) + i] = color; } static void blit_line(int x, int y, const char *message, uint16_t color) { - size_t pitch = menu_display_get_framebuffer_pitch(); - const uint8_t *font_fb = menu_display_get_font_framebuffer(); + size_t pitch = menu_display_get_framebuffer_pitch(); + const uint8_t *font_fb = menu_display_get_font_framebuffer(); - if (font_fb) - { - while (!string_is_empty(message)) + if (font_fb) + { + while (!string_is_empty(message)) + { + unsigned i, j; + char symbol = *message++; + + for (j = 0; j < FONT_HEIGHT; j++) { - unsigned i, j; - char symbol = *message++; - - for (j = 0; j < FONT_HEIGHT; j++) - { - for (i = 0; i < FONT_WIDTH; i++) - { - uint8_t rem = 1 << ((i + j * FONT_WIDTH) & 7); - int offset = (i + j * FONT_WIDTH) >> 3; - bool col = (font_fb[FONT_OFFSET(symbol) + offset] & rem); - - if (col) - nxrgui_framebuf_data[(y + j) * (pitch >> 1) + (x + i)] = color; - } - } - - x += FONT_WIDTH_STRIDE; + for (i = 0; i < FONT_WIDTH; i++) + { + uint8_t rem = 1 << ((i + j * FONT_WIDTH) & 7); + int offset = (i + j * FONT_WIDTH) >> 3; + bool col = (font_fb[FONT_OFFSET(symbol) + offset] & rem); + + if (col) + nxrgui_framebuf_data[(y + j) * (pitch >> 1) + (x + i)] = color; + } } - } + + x += FONT_WIDTH_STRIDE; + } + } } #if 0 @@ -241,685 +242,733 @@ static bool nxrguidisp_init_font(menu_handle_t *menu) #if 0 const uint8_t *font_bmp_buf = NULL; #endif - const uint8_t *font_bin_buf = bitmap_bin; + const uint8_t *font_bin_buf = bitmap_bin; - if (!menu) - return false; + if (!menu) + return false; #if 0 if (font_bmp_buf) return init_font(menu, font_bmp_buf); #endif - menu_display_set_font_framebuffer(font_bin_buf); + menu_display_set_font_framebuffer(font_bin_buf); - return true; + return true; } static void nxrgui_render_background(nxrgui_t *nxrgui) { - size_t pitch_in_pixels, size; - size_t fb_pitch; - unsigned fb_width, fb_height; - uint16_t *src = NULL; - uint16_t *dst = NULL; - - menu_display_get_fb_size(&fb_width, &fb_height, &fb_pitch); - pitch_in_pixels = fb_pitch >> 1; - size = fb_pitch * 4; - src = nxrgui_framebuf_data + pitch_in_pixels * fb_height; - dst = nxrgui_framebuf_data; - - while (dst < src) - { - memset(dst, 0, size); - dst += pitch_in_pixels * 4; - } - - if (nxrgui_framebuf_data) - { - settings_t *settings = config_get_ptr(); - } + size_t pitch_in_pixels, size; + size_t fb_pitch; + unsigned fb_width, fb_height; + uint16_t *src = NULL; + uint16_t *dst = NULL; + + menu_display_get_fb_size(&fb_width, &fb_height, &fb_pitch); + pitch_in_pixels = fb_pitch >> 1; + size = fb_pitch * 4; + src = nxrgui_framebuf_data + pitch_in_pixels * fb_height; + dst = nxrgui_framebuf_data; + + while (dst < src) + { + memset(dst, 0, size); + dst += pitch_in_pixels * 4; + } + + if (nxrgui_framebuf_data) + { + settings_t *settings = config_get_ptr(); + } } static void nxrgui_set_message(void *data, const char *message) { - nxrgui_t *nxrgui = (nxrgui_t *)data; + nxrgui_t *nxrgui = (nxrgui_t *)data; - if (!nxrgui || !message || !*message) - return; + if (!nxrgui || !message || !*message) + return; - if (!string_is_empty(nxrgui->msgbox)) - free(nxrgui->msgbox); - nxrgui->msgbox = strdup(message); - nxrgui->force_redraw = true; + if (!string_is_empty(nxrgui->msgbox)) + free(nxrgui->msgbox); + nxrgui->msgbox = strdup(message); + nxrgui->force_redraw = true; } static void nxrgui_render_messagebox(nxrgui_t *nxrgui, const char *message) { - int x, y; - uint16_t color; - size_t i, fb_pitch; - unsigned fb_width, fb_height; - unsigned width, glyphs_width, height; - struct string_list *list = NULL; - settings_t *settings = config_get_ptr(); - - (void)settings; - - if (!message || !*message) - return; - - list = string_split(message, "\n"); - if (!list) - return; - if (list->elems == 0) - goto end; - - width = 0; - glyphs_width = 0; - - menu_display_get_fb_size(&fb_width, &fb_height, - &fb_pitch); - - for (i = 0; i < list->size; i++) - { - unsigned line_width; - char *msg = list->elems[i].data; - unsigned msglen = (unsigned)utf8len(msg); - - if (msglen > nxrgui_TERM_WIDTH(fb_width)) - { - msg[nxrgui_TERM_WIDTH(fb_width) - 2] = '.'; - msg[nxrgui_TERM_WIDTH(fb_width) - 1] = '.'; - msg[nxrgui_TERM_WIDTH(fb_width) - 0] = '.'; - msg[nxrgui_TERM_WIDTH(fb_width) + 1] = '\0'; - msglen = nxrgui_TERM_WIDTH(fb_width); - } - - line_width = msglen * FONT_WIDTH_STRIDE - 1 + 6 + 10; - width = MAX(width, line_width); - glyphs_width = MAX(glyphs_width, msglen); - } - - height = (unsigned)(FONT_HEIGHT_STRIDE * list->size + 6 + 10); - x = (fb_width - width) / 2; - y = (fb_height - height) / 2; - - color = NORMAL_COLOR(settings); - - for (i = 0; i < list->size; i++) - { - const char *msg = list->elems[i].data; - int offset_x = (int)(FONT_WIDTH_STRIDE * (glyphs_width - utf8len(msg)) / 2); - int offset_y = (int)(FONT_HEIGHT_STRIDE * i); - - if (nxrgui_framebuf_data) - blit_line(x + 8 + offset_x, y + 8 + offset_y, msg, color); - } + int x, y; + uint16_t color; + size_t i, fb_pitch; + unsigned fb_width, fb_height; + unsigned width, glyphs_width, height; + struct string_list *list = NULL; + settings_t *settings = config_get_ptr(); + + (void)settings; + + if (!message || !*message) + return; + + list = string_split(message, "\n"); + if (!list) + return; + if (list->elems == 0) + goto end; + + width = 0; + glyphs_width = 0; + + menu_display_get_fb_size(&fb_width, &fb_height, + &fb_pitch); + + for (i = 0; i < list->size; i++) + { + unsigned line_width; + char *msg = list->elems[i].data; + unsigned msglen = (unsigned)utf8len(msg); + + if (msglen > nxrgui_TERM_WIDTH(fb_width)) + { + msg[nxrgui_TERM_WIDTH(fb_width) - 2] = '.'; + msg[nxrgui_TERM_WIDTH(fb_width) - 1] = '.'; + msg[nxrgui_TERM_WIDTH(fb_width) - 0] = '.'; + msg[nxrgui_TERM_WIDTH(fb_width) + 1] = '\0'; + msglen = nxrgui_TERM_WIDTH(fb_width); + } + + line_width = msglen * FONT_WIDTH_STRIDE - 1 + 6 + 10; + width = MAX(width, line_width); + glyphs_width = MAX(glyphs_width, msglen); + } + + height = (unsigned)(FONT_HEIGHT_STRIDE * list->size + 6 + 10); + x = (fb_width - width) / 2; + y = (fb_height - height) / 2; + + color = NORMAL_COLOR(settings); + + for (i = 0; i < list->size; i++) + { + const char *msg = list->elems[i].data; + int offset_x = (int)(FONT_WIDTH_STRIDE * (glyphs_width - utf8len(msg)) / 2); + int offset_y = (int)(FONT_HEIGHT_STRIDE * i); + + if (nxrgui_framebuf_data) + blit_line(x + 8 + offset_x, y + 8 + offset_y, msg, color); + } end: - string_list_free(list); + string_list_free(list); } static void nxrgui_blit_cursor(void) { - size_t fb_pitch; - unsigned fb_width, fb_height; - int16_t x = menu_input_mouse_state(MENU_MOUSE_X_AXIS); - int16_t y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS); - - menu_display_get_fb_size(&fb_width, &fb_height, - &fb_pitch); - - if (nxrgui_framebuf_data) - { - nxrgui_color_rect(nxrgui_framebuf_data, fb_pitch, fb_width, fb_height, x, y - 5, 1, 11, 0xFFFF); - nxrgui_color_rect(nxrgui_framebuf_data, fb_pitch, fb_width, fb_height, x - 5, y, 11, 1, 0xFFFF); - } + size_t fb_pitch; + unsigned fb_width, fb_height; + int16_t x = menu_input_mouse_state(MENU_MOUSE_X_AXIS); + int16_t y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS); + + menu_display_get_fb_size(&fb_width, &fb_height, + &fb_pitch); + + if (nxrgui_framebuf_data) + { + nxrgui_color_rect(nxrgui_framebuf_data, fb_pitch, fb_width, fb_height, x, y - 5, 1, 11, 0xFFFF); + nxrgui_color_rect(nxrgui_framebuf_data, fb_pitch, fb_width, fb_height, x - 5, y, 11, 1, 0xFFFF); + } } static void nxrgui_frame(void *data, video_frame_info_t *video_info) { - nxrgui_t *nxrgui = (nxrgui_t *)data; - settings_t *settings = config_get_ptr(); + nxrgui_t *nxrgui = (nxrgui_t *)data; + settings_t *settings = config_get_ptr(); + + if ((settings->bools.menu_rgui_background_filler_thickness_enable != nxrgui->bg_thickness) || + (settings->bools.menu_rgui_border_filler_thickness_enable != nxrgui->border_thickness)) + nxrgui->bg_modified = true; + + unsigned fbWidth; + unsigned fbHeight; + + uint32_t *fb = (uint32_t *)gfxGetFramebuffer(&fbWidth, &fbHeight); - if ((settings->bools.menu_rgui_background_filler_thickness_enable != nxrgui->bg_thickness) || - (settings->bools.menu_rgui_border_filler_thickness_enable != nxrgui->border_thickness)) - nxrgui->bg_modified = true; + nxrgui->bg_thickness = settings->bools.menu_rgui_background_filler_thickness_enable; + nxrgui->border_thickness = settings->bools.menu_rgui_border_filler_thickness_enable; - nxrgui->bg_thickness = settings->bools.menu_rgui_background_filler_thickness_enable; - nxrgui->border_thickness = settings->bools.menu_rgui_border_filler_thickness_enable; + //menu_display_draw_text(nxrgui->font, "Hello from freetype2!", 23, 23, fbWidth, fbHeight, 0xFFFFFFFF, TEXT_ALIGN_LEFT, 1.0f, false, 0); - nxrgui->frame_count++; + nxrgui->frame_count++; } static void nxrgui_render(void *data, bool is_idle) { - menu_animation_ctx_ticker_t ticker; - unsigned x, y; - uint16_t hover_color, normal_color; - size_t i, end, fb_pitch, old_start; - unsigned fb_width, fb_height; - int bottom; - char title[255]; - char title_buf[255]; - char title_msg[64]; - char msg[255]; - size_t entries_end = 0; - bool msg_force = false; - settings_t *settings = config_get_ptr(); - nxrgui_t *nxrgui = (nxrgui_t *)data; - uint64_t frame_count = nxrgui->frame_count; - - msg[0] = title[0] = title_buf[0] = title_msg[0] = '\0'; - - if (!nxrgui->force_redraw) - { - msg_force = menu_display_get_msg_force(); + menu_animation_ctx_ticker_t ticker; + unsigned x, y; + uint16_t hover_color, normal_color; + size_t i, end, fb_pitch, old_start; + unsigned fb_width, fb_height; + int bottom; + char title[255]; + char title_buf[255]; + char title_msg[64]; + char msg[255]; + size_t entries_end = 0; + bool msg_force = false; + settings_t *settings = config_get_ptr(); + nxrgui_t *nxrgui = (nxrgui_t *)data; + uint64_t frame_count = nxrgui->frame_count; + + msg[0] = title[0] = title_buf[0] = title_msg[0] = '\0'; + + if (!nxrgui->force_redraw) + { + msg_force = menu_display_get_msg_force(); + + if (menu_entries_ctl(MENU_ENTRIES_CTL_NEEDS_REFRESH, NULL) && menu_driver_is_alive() && !msg_force) + return; - if (menu_entries_ctl(MENU_ENTRIES_CTL_NEEDS_REFRESH, NULL) && menu_driver_is_alive() && !msg_force) - return; + if (is_idle || !menu_display_get_update_pending()) + return; + } - if (is_idle || !menu_display_get_update_pending()) - return; - } + menu_display_get_fb_size(&fb_width, &fb_height, &fb_pitch); - menu_display_get_fb_size(&fb_width, &fb_height, &fb_pitch); + /* if the framebuffer changed size, recache the background */ + if (nxrgui->bg_modified || nxrgui->last_width != fb_width || nxrgui->last_height != fb_height) + { + nxrgui->last_height = fb_height; + } - /* if the framebuffer changed size, recache the background */ - if (nxrgui->bg_modified || nxrgui->last_width != fb_width || nxrgui->last_height != fb_height) - { - nxrgui->last_height = fb_height; - } + if (nxrgui->bg_modified) + nxrgui->bg_modified = false; - if (nxrgui->bg_modified) - nxrgui->bg_modified = false; + menu_display_set_framebuffer_dirty_flag(); + menu_animation_ctl(MENU_ANIMATION_CTL_CLEAR_ACTIVE, NULL); - menu_display_set_framebuffer_dirty_flag(); - menu_animation_ctl(MENU_ANIMATION_CTL_CLEAR_ACTIVE, NULL); + nxrgui->force_redraw = false; - nxrgui->force_redraw = false; + if (settings->bools.menu_pointer_enable) + { + unsigned new_val; - if (settings->bools.menu_pointer_enable) - { - unsigned new_val; + menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); - menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); + new_val = (unsigned)(menu_input_pointer_state(MENU_POINTER_Y_AXIS) / (11 - 2 + old_start)); - new_val = (unsigned)(menu_input_pointer_state(MENU_POINTER_Y_AXIS) / (11 - 2 + old_start)); + menu_input_ctl(MENU_INPUT_CTL_POINTER_PTR, &new_val); - menu_input_ctl(MENU_INPUT_CTL_POINTER_PTR, &new_val); + if (menu_input_ctl(MENU_INPUT_CTL_IS_POINTER_DRAGGED, NULL)) + { + size_t start; + int16_t delta_y = menu_input_pointer_state(MENU_POINTER_DELTA_Y_AXIS); + nxrgui->scroll_y += delta_y; - if (menu_input_ctl(MENU_INPUT_CTL_IS_POINTER_DRAGGED, NULL)) - { - size_t start; - int16_t delta_y = menu_input_pointer_state(MENU_POINTER_DELTA_Y_AXIS); - nxrgui->scroll_y += delta_y; + start = -nxrgui->scroll_y / 11 + 2; - start = -nxrgui->scroll_y / 11 + 2; + menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); - menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); + if (nxrgui->scroll_y > 0) + nxrgui->scroll_y = 0; + } + } - if (nxrgui->scroll_y > 0) - nxrgui->scroll_y = 0; - } - } + if (settings->bools.menu_mouse_enable) + { + unsigned new_mouse_ptr; + int16_t mouse_y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS); - if (settings->bools.menu_mouse_enable) - { - unsigned new_mouse_ptr; - int16_t mouse_y = menu_input_mouse_state(MENU_MOUSE_Y_AXIS); + menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); - menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); + new_mouse_ptr = (unsigned)(mouse_y / 11 - 2 + old_start); - new_mouse_ptr = (unsigned)(mouse_y / 11 - 2 + old_start); + menu_input_ctl(MENU_INPUT_CTL_MOUSE_PTR, &new_mouse_ptr); + } - menu_input_ctl(MENU_INPUT_CTL_MOUSE_PTR, &new_mouse_ptr); - } + /* Do not scroll if all items are visible. */ + if (menu_entries_get_size() <= nxrgui_TERM_HEIGHT(fb_width, fb_height)) + { + size_t start = 0; + menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); + } - /* Do not scroll if all items are visible. */ - if (menu_entries_get_size() <= nxrgui_TERM_HEIGHT(fb_width, fb_height)) - { - size_t start = 0; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); - } - - bottom = (int)(menu_entries_get_size() - nxrgui_TERM_HEIGHT(fb_width, fb_height)); - menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); + bottom = (int)(menu_entries_get_size() - nxrgui_TERM_HEIGHT(fb_width, fb_height)); + menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); - if (old_start > (unsigned)bottom) - menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &bottom); + if (old_start > (unsigned)bottom) + menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &bottom); - menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); + menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); - entries_end = menu_entries_get_size(); + entries_end = menu_entries_get_size(); - end = ((old_start + nxrgui_TERM_HEIGHT(fb_width, fb_height)) <= (entries_end)) ? old_start + nxrgui_TERM_HEIGHT(fb_width, fb_height) : entries_end; + end = ((old_start + nxrgui_TERM_HEIGHT(fb_width, fb_height)) <= (entries_end)) ? old_start + nxrgui_TERM_HEIGHT(fb_width, fb_height) : entries_end; - nxrgui_render_background(nxrgui); + nxrgui_render_background(nxrgui); - menu_entries_get_title(title, sizeof(title)); + menu_entries_get_title(title, sizeof(title)); - ticker.s = title_buf; - ticker.len = nxrgui_TERM_WIDTH(fb_width) - 10; - ticker.idx = frame_count / nxrgui_TERM_START_X(fb_width); - ticker.str = title; - ticker.selected = true; + ticker.s = title_buf; + ticker.len = nxrgui_TERM_WIDTH(fb_width) - 10; + ticker.idx = frame_count / nxrgui_TERM_START_X(fb_width); + ticker.str = title; + ticker.selected = true; - menu_animation_ticker(&ticker); + menu_animation_ticker(&ticker); - hover_color = HOVER_COLOR(settings); - normal_color = NORMAL_COLOR(settings); + hover_color = HOVER_COLOR(settings); + normal_color = NORMAL_COLOR(settings); - if (menu_entries_ctl(MENU_ENTRIES_CTL_SHOW_BACK, NULL)) - { - char back_buf[32]; - char back_msg[32]; - - back_buf[0] = back_msg[0] = '\0'; - - strlcpy(back_buf, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK), sizeof(back_buf)); - string_to_upper(back_buf); - if (nxrgui_framebuf_data) - blit_line( - nxrgui_TERM_START_X(fb_width), - nxrgui_TERM_START_X(fb_width), - back_msg, - TITLE_COLOR(settings)); - } + if (menu_entries_ctl(MENU_ENTRIES_CTL_SHOW_BACK, NULL)) + { + char back_buf[32]; + char back_msg[32]; - string_to_upper(title_buf); + back_buf[0] = back_msg[0] = '\0'; - if (nxrgui_framebuf_data) + strlcpy(back_buf, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_BASIC_MENU_CONTROLS_BACK), sizeof(back_buf)); + string_to_upper(back_buf); + if (nxrgui_framebuf_data) blit_line( - (int)(nxrgui_TERM_START_X(fb_width) + (nxrgui_TERM_WIDTH(fb_width) - utf8len(title_buf)) * FONT_WIDTH_STRIDE / 2), nxrgui_TERM_START_X(fb_width), - title_buf, TITLE_COLOR(settings)); - - if (settings->bools.menu_core_enable && - menu_entries_get_core_title(title_msg, sizeof(title_msg)) == 0) - { - if (nxrgui_framebuf_data) - blit_line( - nxrgui_TERM_START_X(fb_width), - (nxrgui_TERM_HEIGHT(fb_width, fb_height) * FONT_HEIGHT_STRIDE) + - nxrgui_TERM_START_Y(fb_height) + 2, - title_msg, hover_color); - } - - if (settings->bools.menu_timedate_enable) - { - menu_display_ctx_datetime_t datetime; - char timedate[255]; - - timedate[0] = '\0'; - - datetime.s = timedate; - datetime.len = sizeof(timedate); - datetime.time_mode = 3; - - menu_display_timedate(&datetime); - - if (nxrgui_framebuf_data) - blit_line( - nxrgui_TERM_WIDTH(fb_width) * FONT_WIDTH_STRIDE - nxrgui_TERM_START_X(fb_width), - (nxrgui_TERM_HEIGHT(fb_width, fb_height) * FONT_HEIGHT_STRIDE) + - nxrgui_TERM_START_Y(fb_height) + 2, - timedate, hover_color); - } - - x = nxrgui_TERM_START_X(fb_width); - y = nxrgui_TERM_START_Y(fb_height); - - menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i); - - for (; i < end; i++, y += FONT_HEIGHT_STRIDE) - { - menu_entry_t entry; - menu_animation_ctx_ticker_t ticker; - char entry_value[255]; - char message[255]; - char entry_title_buf[255]; - char type_str_buf[255]; - char *entry_path = NULL; - unsigned entry_spacing = 0; - size_t entry_title_buf_utf8len = 0; - size_t entry_title_buf_len = 0; - bool entry_selected = menu_entry_is_currently_selected((unsigned)i); - size_t selection = menu_navigation_get_selection(); - - if (i > (selection + 100)) - continue; - - entry_value[0] = '\0'; - message[0] = '\0'; - entry_title_buf[0] = '\0'; - type_str_buf[0] = '\0'; - - menu_entry_init(&entry); - menu_entry_get(&entry, 0, (unsigned)i, NULL, true); - - entry_spacing = menu_entry_get_spacing(&entry); - menu_entry_get_value(&entry, entry_value, sizeof(entry_value)); - entry_path = menu_entry_get_rich_label(&entry); - - ticker.s = entry_title_buf; - ticker.len = nxrgui_TERM_WIDTH(fb_width) - (entry_spacing + 1 + 2); - ticker.idx = frame_count / nxrgui_TERM_START_X(fb_width); - ticker.str = entry_path; - ticker.selected = entry_selected; - - menu_animation_ticker(&ticker); - - ticker.s = type_str_buf; - ticker.len = entry_spacing; - ticker.str = entry_value; - - menu_animation_ticker(&ticker); - - entry_title_buf_utf8len = utf8len(entry_title_buf); - entry_title_buf_len = strlen(entry_title_buf); - - snprintf(message, sizeof(message), "%c %-*.*s %-*s", - entry_selected ? '>' : ' ', - (int)(nxrgui_TERM_WIDTH(fb_width) - (entry_spacing + 1 + 2) - entry_title_buf_utf8len + entry_title_buf_len), - (int)(nxrgui_TERM_WIDTH(fb_width) - (entry_spacing + 1 + 2) - entry_title_buf_utf8len + entry_title_buf_len), - entry_title_buf, - entry_spacing, - type_str_buf); - - if (nxrgui_framebuf_data) - blit_line(x, y, message, - entry_selected ? hover_color : normal_color); - - menu_entry_free(&entry); - if (!string_is_empty(entry_path)) - free(entry_path); - } + nxrgui_TERM_START_X(fb_width), + back_msg, + TITLE_COLOR(settings)); + } + + string_to_upper(title_buf); + + if (nxrgui_framebuf_data) + blit_line( + (int)(nxrgui_TERM_START_X(fb_width) + (nxrgui_TERM_WIDTH(fb_width) - utf8len(title_buf)) * FONT_WIDTH_STRIDE / 2), + nxrgui_TERM_START_X(fb_width), + title_buf, TITLE_COLOR(settings)); + + if (settings->bools.menu_core_enable && + menu_entries_get_core_title(title_msg, sizeof(title_msg)) == 0) + { + if (nxrgui_framebuf_data) + blit_line( + nxrgui_TERM_START_X(fb_width), + (nxrgui_TERM_HEIGHT(fb_width, fb_height) * FONT_HEIGHT_STRIDE) + + nxrgui_TERM_START_Y(fb_height) + 2, + title_msg, hover_color); + } - if (menu_input_dialog_get_display_kb()) - { - const char *str = menu_input_dialog_get_buffer(); - const char *label = menu_input_dialog_get_label_buffer(); + if (settings->bools.menu_timedate_enable) + { + menu_display_ctx_datetime_t datetime; + char timedate[255]; - snprintf(msg, sizeof(msg), "%s\n%s", label, str); - nxrgui_render_messagebox(nxrgui, msg); - } + timedate[0] = '\0'; - if (!string_is_empty(nxrgui->msgbox)) - { - nxrgui_render_messagebox(nxrgui, nxrgui->msgbox); - free(nxrgui->msgbox); - nxrgui->msgbox = NULL; - nxrgui->force_redraw = true; - } + datetime.s = timedate; + datetime.len = sizeof(timedate); + datetime.time_mode = 3; - if (nxrgui->mouse_show) - { - settings_t *settings = config_get_ptr(); - bool cursor_visible = settings->bools.video_fullscreen || - !video_driver_has_windowed(); + menu_display_timedate(&datetime); - if (settings->bools.menu_mouse_enable && cursor_visible) - nxrgui_blit_cursor(); - } + if (nxrgui_framebuf_data) + blit_line( + nxrgui_TERM_WIDTH(fb_width) * FONT_WIDTH_STRIDE - nxrgui_TERM_START_X(fb_width), + (nxrgui_TERM_HEIGHT(fb_width, fb_height) * FONT_HEIGHT_STRIDE) + + nxrgui_TERM_START_Y(fb_height) + 2, + timedate, hover_color); + } + + x = nxrgui_TERM_START_X(fb_width); + y = nxrgui_TERM_START_Y(fb_height); + + menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i); + + for (; i < end; i++, y += FONT_HEIGHT_STRIDE) + { + menu_entry_t entry; + menu_animation_ctx_ticker_t ticker; + char entry_value[255]; + char message[255]; + char entry_title_buf[255]; + char type_str_buf[255]; + char *entry_path = NULL; + unsigned entry_spacing = 0; + size_t entry_title_buf_utf8len = 0; + size_t entry_title_buf_len = 0; + bool entry_selected = menu_entry_is_currently_selected((unsigned)i); + size_t selection = menu_navigation_get_selection(); + + if (i > (selection + 100)) + continue; + + entry_value[0] = '\0'; + message[0] = '\0'; + entry_title_buf[0] = '\0'; + type_str_buf[0] = '\0'; + + menu_entry_init(&entry); + menu_entry_get(&entry, 0, (unsigned)i, NULL, true); + + entry_spacing = menu_entry_get_spacing(&entry); + menu_entry_get_value(&entry, entry_value, sizeof(entry_value)); + entry_path = menu_entry_get_rich_label(&entry); + + ticker.s = entry_title_buf; + ticker.len = nxrgui_TERM_WIDTH(fb_width) - (entry_spacing + 1 + 2); + ticker.idx = frame_count / nxrgui_TERM_START_X(fb_width); + ticker.str = entry_path; + ticker.selected = entry_selected; + + menu_animation_ticker(&ticker); + + ticker.s = type_str_buf; + ticker.len = entry_spacing; + ticker.str = entry_value; + + menu_animation_ticker(&ticker); + + entry_title_buf_utf8len = utf8len(entry_title_buf); + entry_title_buf_len = strlen(entry_title_buf); + + snprintf(message, sizeof(message), "%c %-*.*s %-*s", + entry_selected ? '>' : ' ', + (int)(nxrgui_TERM_WIDTH(fb_width) - (entry_spacing + 1 + 2) - entry_title_buf_utf8len + entry_title_buf_len), + (int)(nxrgui_TERM_WIDTH(fb_width) - (entry_spacing + 1 + 2) - entry_title_buf_utf8len + entry_title_buf_len), + entry_title_buf, + entry_spacing, + type_str_buf); + + if (nxrgui_framebuf_data) + blit_line(x, y, message, + entry_selected ? hover_color : normal_color); + + menu_entry_free(&entry); + if (!string_is_empty(entry_path)) + free(entry_path); + } + + if (menu_input_dialog_get_display_kb()) + { + const char *str = menu_input_dialog_get_buffer(); + const char *label = menu_input_dialog_get_label_buffer(); + + snprintf(msg, sizeof(msg), "%s\n%s", label, str); + nxrgui_render_messagebox(nxrgui, msg); + } + + if (!string_is_empty(nxrgui->msgbox)) + { + nxrgui_render_messagebox(nxrgui, nxrgui->msgbox); + free(nxrgui->msgbox); + nxrgui->msgbox = NULL; + nxrgui->force_redraw = true; + } + + if (nxrgui->mouse_show) + { + settings_t *settings = config_get_ptr(); + bool cursor_visible = settings->bools.video_fullscreen || + !video_driver_has_windowed(); + + if (settings->bools.menu_mouse_enable && cursor_visible) + nxrgui_blit_cursor(); + } } static void nxrgui_framebuffer_free(void) { - if (nxrgui_framebuf_data) - free(nxrgui_framebuf_data); - nxrgui_framebuf_data = NULL; + if (nxrgui_framebuf_data) + free(nxrgui_framebuf_data); + nxrgui_framebuf_data = NULL; +} + +static bool nxrgui_load_menu_bg(const char *path, uint32_t *width, uint32_t *height) +{ + // Default + rpng_load_image_argb(path, &nx_backgroundImage, width, height); + if (nx_backgroundImage) + { + // Convert + argb_to_rgba8(nx_backgroundImage, *height, *width); + return true; + } + else + { + return false; + } } static void *nxrgui_init(void **userdata, bool video_is_threaded) { - size_t fb_pitch, start; - unsigned fb_width, fb_height, new_font_height; - nxrgui_t *nxrgui = NULL; - bool ret = false; - settings_t *settings = config_get_ptr(); - menu_handle_t *menu = (menu_handle_t *)calloc(1, sizeof(*menu)); + size_t fb_pitch, start; + unsigned fb_width, fb_height, new_font_height; + nxrgui_t *nxrgui = NULL; + bool ret = false; + settings_t *settings = config_get_ptr(); + menu_handle_t *menu = (menu_handle_t *)calloc(1, sizeof(*menu)); - if (!menu) - return NULL; + if (!menu) + return NULL; - nxrgui = (nxrgui_t *)calloc(1, sizeof(nxrgui_t)); + nxrgui = (nxrgui_t *)calloc(1, sizeof(nxrgui_t)); - if (!nxrgui) - goto error; + if (!nxrgui) + goto error; - *userdata = nxrgui; + *userdata = nxrgui; - /* 4 extra lines to cache the checked background */ - nxrgui_framebuf_data = (uint16_t *)calloc(400 * (240 + 4), sizeof(uint16_t)); + if (!menu_display_init_first_driver(video_is_threaded)) + goto error; - if (!nxrgui_framebuf_data) - goto error; + /* 4 extra lines to cache the checked background */ + nxrgui_framebuf_data = (uint16_t *)calloc(400 * (240 + 4), sizeof(uint16_t)); - fb_width = 320; - fb_height = 240; + if (!nxrgui_framebuf_data) + goto error; - fb_pitch = fb_width * sizeof(uint16_t); - new_font_height = FONT_HEIGHT_STRIDE * 2; + fb_width = 320; + fb_height = 240; - menu_display_set_width(fb_width); - menu_display_set_height(fb_height); - menu_display_set_header_height(new_font_height); - menu_display_set_framebuffer_pitch(fb_pitch); + fb_pitch = fb_width * sizeof(uint16_t); + new_font_height = FONT_HEIGHT_STRIDE * 2; - start = 0; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); + menu_display_set_width(fb_width); + menu_display_set_height(fb_height); + menu_display_set_header_height(new_font_height); + menu_display_set_framebuffer_pitch(fb_pitch); - ret = nxrguidisp_init_font(menu); + start = 0; + menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); - if (!ret) - goto error; + ret = nxrguidisp_init_font(menu); - nxrgui->bg_thickness = settings->bools.menu_rgui_background_filler_thickness_enable; - nxrgui->border_thickness = settings->bools.menu_rgui_border_filler_thickness_enable; - nxrgui->bg_modified = true; + if (!ret) + goto error; - nxrgui->last_width = fb_width; - nxrgui->last_height = fb_height; + nxrgui->bg_thickness = settings->bools.menu_rgui_background_filler_thickness_enable; + nxrgui->border_thickness = settings->bools.menu_rgui_border_filler_thickness_enable; + nxrgui->bg_modified = true; - // Load PNG Data - printf("[UI] Loading..\n"); + nxrgui->last_width = fb_width; + nxrgui->last_height = fb_height; - uint32_t width, height; - width = height = 0; + // Load PNG Data + printf("[UI] Loading..\n"); - rpng_load_image_argb("/retroarch/menu_bg_blank.png", &nx_backgroundImage, &width, &height); - if (nx_backgroundImage) - { - // Convert - argb_to_rgba8(nx_backgroundImage, height, width); - printf("[NxRGUI] Menu loaded\n"); - } - else - { - nx_backgroundFb = nx_backgroundImage = NULL; - } + uint32_t width, height; + width = height = 0; - // Temp overlay hack - // TODO: KILL IT WITH FIRE - // At least i try to give it some options, since loading the cfg's doesnt work with threading - rarch_system_info_t *sys_info = runloop_get_system_info(); - const char *core_name = NULL; + // Core Info + rarch_system_info_t *sys_info = runloop_get_system_info(); + const char *core_name = NULL; + bool menuFound = false; + if (sys_info) + { + core_name = sys_info->info.library_name; - if (sys_info) - { - core_name = sys_info->info.library_name; - printf("[Overlay] Load Overlay for Core: \"%s\"\n", core_name); - char* full_overlaypath = (char*)malloc(PATH_MAX); - snprintf(full_overlaypath, PATH_MAX, "/retroarch/overlays/%s.png", core_name); - rpng_load_image_argb(full_overlaypath, &tmp_overlay, &width, &height); - if (tmp_overlay) - { - // Convert - argb_to_rgba8(tmp_overlay, height, width); - printf("[Overlay] Overlay loaded\n"); - } - else - { - printf("[Overlay] Overlay failed to load\n"); - tmp_overlay = NULL; - } - free(full_overlaypath); - } - else - { + char *full_core_menu_path = (char *)malloc(PATH_MAX); + snprintf(full_core_menu_path, PATH_MAX, "/retroarch/nxrgui/menu/%s.png", core_name); + + // Default + if (nxrgui_load_menu_bg((const char *)full_core_menu_path, &width, &height)) + { + printf("[NxRGUI] Menu loaded\n"); + menuFound = true; + } + + free(full_core_menu_path); + } + + if (!menuFound) // Fallback + { + // Default + if (nxrgui_load_menu_bg("/retroarch/nxrgui/menu/RetroNX.png", &width, &height)) + { + menuFound = true; + printf("[NxRGUI] Menu loaded\n"); + } + else + { + // Black bg Fallback + uint32_t buffSize = 1280 * 720 * sizeof(uint32_t); + nx_backgroundImage = malloc(buffSize); + memset(nx_backgroundImage, 0, buffSize); + } + } + + // Temp overlay hack + // TODO: KILL IT WITH FIRE + // At least i try to give it some options, since loading the cfg's doesnt work with threading + if (sys_info) + { + printf("[Overlay] Load Overlay for Core: \"%s\"\n", core_name); + char *full_overlaypath = (char *)malloc(PATH_MAX); + snprintf(full_overlaypath, PATH_MAX, "/retroarch/overlays/%s.png", core_name); + rpng_load_image_argb(full_overlaypath, &tmp_overlay, &width, &height); + if (tmp_overlay) + { + // Convert + argb_to_rgba8(tmp_overlay, height, width); + printf("[Overlay] Overlay loaded\n"); + } + else + { + printf("[Overlay] Overlay failed to load\n"); tmp_overlay = NULL; - } + } + free(full_overlaypath); + } + else + { + tmp_overlay = NULL; + } - return menu; + return menu; error: - nxrgui_framebuffer_free(); - if (menu) - free(menu); - return NULL; + nxrgui_framebuffer_free(); + if (menu) + free(menu); + return NULL; } static void nxrgui_free(void *data) { - const uint8_t *font_fb; - bool fb_font_inited = false; - - fb_font_inited = menu_display_get_font_data_init(); - font_fb = menu_display_get_font_framebuffer(); - - if (fb_font_inited) - free((void *)font_fb); - - fb_font_inited = false; - menu_display_set_font_data_init(fb_font_inited); - - if (nx_backgroundImage) - { - free(nx_backgroundImage); - nx_backgroundImage = NULL; - } - - // Temp Overlay hack - if (tmp_overlay) - { - free(tmp_overlay); - tmp_overlay = NULL; - } + const uint8_t *font_fb; + bool fb_font_inited = false; + + fb_font_inited = menu_display_get_font_data_init(); + font_fb = menu_display_get_font_framebuffer(); + + if (fb_font_inited) + free((void *)font_fb); + + fb_font_inited = false; + menu_display_set_font_data_init(fb_font_inited); + + if (nx_backgroundImage) + { + free(nx_backgroundImage); + nx_backgroundImage = NULL; + } + + // Temp Overlay hack + if (tmp_overlay) + { + free(tmp_overlay); + tmp_overlay = NULL; + } } static void nxrgui_set_texture(void) { - size_t fb_pitch; - unsigned fb_width, fb_height; + size_t fb_pitch; + unsigned fb_width, fb_height; - if (!menu_display_get_framebuffer_dirty_flag()) - return; + if (!menu_display_get_framebuffer_dirty_flag()) + return; - menu_display_get_fb_size(&fb_width, &fb_height, - &fb_pitch); + menu_display_get_fb_size(&fb_width, &fb_height, + &fb_pitch); - menu_display_unset_framebuffer_dirty_flag(); + menu_display_unset_framebuffer_dirty_flag(); - video_driver_set_texture_frame(nxrgui_framebuf_data, - false, fb_width, fb_height, 1.0f); + video_driver_set_texture_frame(nxrgui_framebuf_data, + false, fb_width, fb_height, 1.0f); } static void nxrgui_navigation_clear(void *data, bool pending_push) { - size_t start; - nxrgui_t *nxrgui = (nxrgui_t *)data; - if (!nxrgui) - return; - - start = 0; - menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); - nxrgui->scroll_y = 0; + size_t start; + nxrgui_t *nxrgui = (nxrgui_t *)data; + if (!nxrgui) + return; + + start = 0; + menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); + nxrgui->scroll_y = 0; } static void nxrgui_navigation_set(void *data, bool scroll) { - size_t start, fb_pitch; - unsigned fb_width, fb_height; - bool do_set_start = false; - size_t end = menu_entries_get_size(); - size_t selection = menu_navigation_get_selection(); - - if (!scroll) - return; - - menu_display_get_fb_size(&fb_width, &fb_height, - &fb_pitch); - - if (selection < nxrgui_TERM_HEIGHT(fb_width, fb_height) / 2) - { - start = 0; - do_set_start = true; - } - else if (selection >= (nxrgui_TERM_HEIGHT(fb_width, fb_height) / 2) && selection < (end - nxrgui_TERM_HEIGHT(fb_width, fb_height) / 2)) - { - start = selection - nxrgui_TERM_HEIGHT(fb_width, fb_height) / 2; - do_set_start = true; - } - else if (selection >= (end - nxrgui_TERM_HEIGHT(fb_width, fb_height) / 2)) - { - start = end - nxrgui_TERM_HEIGHT(fb_width, fb_height); - do_set_start = true; - } - - if (do_set_start) - menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); + size_t start, fb_pitch; + unsigned fb_width, fb_height; + bool do_set_start = false; + size_t end = menu_entries_get_size(); + size_t selection = menu_navigation_get_selection(); + + if (!scroll) + return; + + menu_display_get_fb_size(&fb_width, &fb_height, + &fb_pitch); + + if (selection < nxrgui_TERM_HEIGHT(fb_width, fb_height) / 2) + { + start = 0; + do_set_start = true; + } + else if (selection >= (nxrgui_TERM_HEIGHT(fb_width, fb_height) / 2) && selection < (end - nxrgui_TERM_HEIGHT(fb_width, fb_height) / 2)) + { + start = selection - nxrgui_TERM_HEIGHT(fb_width, fb_height) / 2; + do_set_start = true; + } + else if (selection >= (end - nxrgui_TERM_HEIGHT(fb_width, fb_height) / 2)) + { + start = end - nxrgui_TERM_HEIGHT(fb_width, fb_height); + do_set_start = true; + } + + if (do_set_start) + menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); } static void nxrgui_navigation_set_last(void *data) { - nxrgui_navigation_set(data, true); + nxrgui_navigation_set(data, true); } static void nxrgui_navigation_descend_alphabet(void *data, size_t *unused) { - nxrgui_navigation_set(data, true); + nxrgui_navigation_set(data, true); } static void nxrgui_navigation_ascend_alphabet(void *data, size_t *unused) { - nxrgui_navigation_set(data, true); + nxrgui_navigation_set(data, true); } static void nxrgui_populate_entries(void *data, const char *path, const char *label, unsigned k) { - nxrgui_navigation_set(data, true); + nxrgui_navigation_set(data, true); } static int nxrgui_environ(enum menu_environ_cb type, void *data, void *userdata) { - nxrgui_t *nxrgui = (nxrgui_t *)userdata; - - switch (type) - { - case MENU_ENVIRON_ENABLE_MOUSE_CURSOR: - if (!nxrgui) - return -1; - nxrgui->mouse_show = true; - menu_display_set_framebuffer_dirty_flag(); - break; - case MENU_ENVIRON_DISABLE_MOUSE_CURSOR: - if (!nxrgui) - return -1; - nxrgui->mouse_show = false; - menu_display_unset_framebuffer_dirty_flag(); - break; - case 0: - default: - break; - } - - return -1; + nxrgui_t *nxrgui = (nxrgui_t *)userdata; + + switch (type) + { + case MENU_ENVIRON_ENABLE_MOUSE_CURSOR: + if (!nxrgui) + return -1; + nxrgui->mouse_show = true; + menu_display_set_framebuffer_dirty_flag(); + break; + case MENU_ENVIRON_DISABLE_MOUSE_CURSOR: + if (!nxrgui) + return -1; + nxrgui->mouse_show = false; + menu_display_unset_framebuffer_dirty_flag(); + break; + case 0: + default: + break; + } + + return -1; } static int nxrgui_pointer_tap(void *data, @@ -927,25 +976,49 @@ static int nxrgui_pointer_tap(void *data, unsigned ptr, menu_file_list_cbs_t *cbs, menu_entry_t *entry, unsigned action) { - unsigned header_height = menu_display_get_header_height(); + unsigned header_height = menu_display_get_header_height(); - if (y < header_height) - { - size_t selection = menu_navigation_get_selection(); - return menu_entry_action(entry, (unsigned)selection, MENU_ACTION_CANCEL); - } - else if (ptr <= (menu_entries_get_size() - 1)) - { - size_t selection = menu_navigation_get_selection(); + if (y < header_height) + { + size_t selection = menu_navigation_get_selection(); + return menu_entry_action(entry, (unsigned)selection, MENU_ACTION_CANCEL); + } + else if (ptr <= (menu_entries_get_size() - 1)) + { + size_t selection = menu_navigation_get_selection(); - if (ptr == selection && cbs && cbs->action_select) - return menu_entry_action(entry, (unsigned)selection, MENU_ACTION_SELECT); + if (ptr == selection && cbs && cbs->action_select) + return menu_entry_action(entry, (unsigned)selection, MENU_ACTION_SELECT); - menu_navigation_set_selection(ptr); - menu_driver_navigation_set(false); - } + menu_navigation_set_selection(ptr); + menu_driver_navigation_set(false); + } + + return 0; +} + +static void nxrgui_context_reset(void *data, bool is_threaded) +{ + nxrgui_t *nxrgui = (nxrgui_t *)data; - return 0; + if (!nxrgui) + return; + + nxrgui->font = menu_display_font(APPLICATION_SPECIAL_DIRECTORY_ASSETS_NXRGUI_FONT, 24, is_threaded); + + if (!nxrgui->font) + printf("[NxRGUI] Unable to load font\n"); +} + +static void nxrgui_context_destroy(void *data) +{ + nxrgui_t *nxrgui = (nxrgui_t *)data; + + if (!nxrgui) + return; + + if (nxrgui->font) + menu_display_font_free(nxrgui->font); } menu_ctx_driver_t menu_ctx_nxrgui = { @@ -956,8 +1029,8 @@ menu_ctx_driver_t menu_ctx_nxrgui = { nxrgui_frame, nxrgui_init, nxrgui_free, - NULL, - NULL, + nxrgui_context_reset, + nxrgui_context_destroy, nxrgui_populate_entries, NULL, nxrgui_navigation_clear, diff --git a/menu/drivers_display/menu_display_switch.c b/menu/drivers_display/menu_display_switch.c new file mode 100644 index 0000000000000000000000000000000000000000..2ac7a7f07223ba8183c714d0d685e4c72f723d69 --- /dev/null +++ b/menu/drivers_display/menu_display_switch.c @@ -0,0 +1,90 @@ +#include + +#include +#include + +#include "../../gfx/font_driver.h" +#include "../../gfx/video_driver.h" + +#include "../menu_driver.h" + +static void *menu_display_switch_get_default_mvp(video_frame_info_t *video_info) +{ + return NULL; +} + +static void menu_display_switch_blend_begin(video_frame_info_t *video_info) +{ +} + +static void menu_display_switch_blend_end(video_frame_info_t *video_info) +{ +} + +static void menu_display_switch_draw(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) +{ +} + +static void menu_display_switch_draw_pipeline( + menu_display_ctx_draw_t *draw, video_frame_info_t *video_info) +{ +} + +static void menu_display_switch_viewport(menu_display_ctx_draw_t *draw, + video_frame_info_t *video_info) +{ +} + +static void menu_display_switch_restore_clear_color(void) +{ +} + +static void menu_display_switch_clear_color( + menu_display_ctx_clearcolor_t *clearcolor, + video_frame_info_t *video_info) +{ + (void)clearcolor; +} + +static bool menu_display_switch_font_init_first( + void **font_handle, void *video_data, + const char *font_path, float font_size, + bool is_threaded) +{ + font_data_t **handle = (font_data_t**)font_handle; + *handle = font_driver_init_first(video_data, + font_path, font_size, true, + is_threaded, + FONT_DRIVER_RENDER_SWITCH); + return *handle; +} + +static const float *menu_display_switch_get_default_vertices(void) +{ + static float dummy[16] = {0.0f}; + return &dummy[0]; +} + +static const float *menu_display_switch_get_default_tex_coords(void) +{ + static float dummy[16] = {0.0f}; + return &dummy[0]; +} + +menu_display_ctx_driver_t menu_display_ctx_switch = { + menu_display_switch_draw, + menu_display_switch_draw_pipeline, + menu_display_switch_viewport, + menu_display_switch_blend_begin, + menu_display_switch_blend_end, + menu_display_switch_restore_clear_color, + menu_display_switch_clear_color, + menu_display_switch_get_default_mvp, + menu_display_switch_get_default_vertices, + menu_display_switch_get_default_tex_coords, + menu_display_switch_font_init_first, + MENU_VIDEO_DRIVER_SWITCH, + "menu_display_switch", + false +}; \ No newline at end of file diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 58fc15d9e0d78b0d8f47f7fd0b8ddfa8ac09acbd..3b32c76ebefef3a44d10f8d296e28e5e32976311 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -138,6 +138,9 @@ static menu_display_ctx_driver_t *menu_display_ctx_drivers[] = { #endif #ifdef DJGPP &menu_display_ctx_vga, +#endif +#if defined(SWITCH) + &menu_display_ctx_switch, #endif &menu_display_ctx_null, NULL, @@ -307,6 +310,10 @@ static bool menu_display_check_compatibility( if (string_is_equal(video_driver, "vga")) return true; break; + case MENU_VIDEO_DRIVER_SWITCH: + if (string_is_equal(video_driver, "switch")) + return true; + break; } return false; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 49467016b0d0c99612815eb77ea270b6ddd7e9ed..b6d43e0333911d66fa16052a9be51a340aaa9e51 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -315,7 +315,8 @@ enum menu_display_driver_type MENU_VIDEO_DRIVER_WIIU, MENU_VIDEO_DRIVER_CACA, MENU_VIDEO_DRIVER_GDI, - MENU_VIDEO_DRIVER_VGA + MENU_VIDEO_DRIVER_VGA, + MENU_VIDEO_DRIVER_SWITCH }; enum menu_toggle_reason @@ -812,6 +813,7 @@ extern menu_display_ctx_driver_t menu_display_ctx_wiiu; extern menu_display_ctx_driver_t menu_display_ctx_caca; extern menu_display_ctx_driver_t menu_display_ctx_gdi; extern menu_display_ctx_driver_t menu_display_ctx_vga; +extern menu_display_ctx_driver_t menu_display_ctx_switch; extern menu_display_ctx_driver_t menu_display_ctx_null; extern menu_ctx_driver_t menu_ctx_xui; diff --git a/switch/RetroNX.pdn b/switch/RetroNX.pdn index 321c80694f60cf78a48fd78abd7748660c481b78..ce2b04569fb9335d15d8bb7ae3e1b7e625d7a68b 100644 --- a/switch/RetroNX.pdn +++ b/switch/RetroNX.pdn @@ -1,5 +1,6 @@ -PDN3] NPaintDotNet.Data, Version=4.21.6589.7045, Culture=neutral, PublicKeyToken=nullPaintDotNet.Document -isDisposedlayerswidthheight savedWithuserMetadataItemsPaintDotNet.LayerListSystem.VersionSystem.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]][]   PaintDotNet.LayerListparentArrayList+_itemsArrayList+_sizeArrayList+_versionPaintDotNet.Document  System.Version_Major_Minor_Build _Revision System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]keyvalue +PDN3}0 NPaintDotNet.Data, Version=4.21.6589.7045, Culture=neutral, PublicKeyToken=nullPaintDotNet.Document +isDisposedlayerswidthheight savedWithuserMetadataItemsPaintDotNet.LayerListSystem.VersionSystem.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]][]   PaintDotNet.LayerListparentArrayList+_itemsArrayList+_sizeArrayList+_versionPaintDotNet.Document   +System.Version_Major_Minor_Build _Revision System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]keyvalue $exif.tag0 L $exif.tag1 ! @@ -7,6072 +8,3453 @@ $exif.tag2D $exif.tag41 $exif.tag55 -$exif.tag65 $exif.tag11D! $exif.tag15"/$ $exif.tag16%7' $exif.tag17(7 ) * + - ,NPaintDotNet.Core, Version=4.21.6589.7045, Culture=neutral, PublicKeyToken=null)PaintDotNet.BitmapLayer -propertiessurfaceLayer+isDisposed Layer+width Layer+heightLayer+properties-PaintDotNet.BitmapLayer+BitmapLayerPropertiesPaintDotNet.Surface,!PaintDotNet.Layer+LayerProperties - . /*) 0 1 2+) 3 4 5--PaintDotNet.BitmapLayer+BitmapLayerPropertiesblendOp&PaintDotNet.UserBlendOps+NormalBlendOp 6.PaintDotNet.Surfacewidthheightstridescan0PaintDotNet.MemoryBlock,, 7/!PaintDotNet.Layer+LayerPropertiesnameuserMetadataItemsvisible isBackgroundopacity blendModeSystem.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]][]PaintDotNet.LayerBlendMode8 Hintergrund 9PaintDotNet.LayerBlendModevalue__0- ;1. <2/=Footer 93- @4. A5/BMenu 96&PaintDotNet.UserBlendOps+NormalBlendOp7PaintDotNet.MemoryBlocklength64 hasParentdeferred ,@89System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]];6<7@8@6A7@8 lWe]ߕU{ӛJ}fyo2UeefZj4N3ьD 2H#RL$"DxMG=lo?;>۟s9_ZZeKUO?>/֧O>ז>Mضd}tcߧ^''F.wxoGjMio]>Ʀmf1zk4]S`O3eߟRЧƁ eM^F~.CbLGYg}tZҧZZ0TuO1i֣V>-ʗ?4z2,1NK#/-\s66;&0ϒsӲ1矡\ F? ˶6҂hq 1TզOkßj3_SЖs5Wuan$\odvVµƫaf(lֶGm})ߨ|^G^?i3f㸧6Ƹyۦ~:6em|z 씖y/2֯ SaV'AXkWakuj ,d7vW oҭ"ݮNZUK~"k-7klpPƋzQ_ک݆)OE~eǤXffr9|mu7|QXXu6sדko a>DQw'M=eZ?hҿ|h] G[}=,UۮC? -QFm\򗭱~i^;ܴkE={ymÖuߒ^unMϟtZZ~ռva׳%/z9e%1luZxfK+;cUz8WoOl 6OCFxnmߑϺ7±lIцtdӎpy-Xߓ4홃iXeKR>c>s{l5-lʶ|k;j] {uS' -?58ܭ }3OПq4kyӱeﺯgcwiӎ6Zxcsܶ>?ҩ}FBjk?3,5@=㼷k}I䩧\2%ڼoSNg-j[M ;"?ye4E3/%Mc1ܩ/mSb:y[F>p\cy^I[sgmSv-υ_}p8NW779%f潭3['-sOsaMwm,Z8G#Q3c۹_ [߸Yg֮l/u֖ ^۳͸9Zf^t=?.ٹ؟ -3ks2ϗWJ}~[uo庸ߛ Y8k?|m.ܹۣWzo4WDD{n\ؽ| o5gVxڶ<;Ypl y̾sNɷ=}乏3kyسev=|$ʔhGo39_?7kϺg:5SV|筄ƅ7B8+3iצ;;gxzguG6[ْNdT]pҹcxc-396퇝׵,dVؾƠ 뱾5/qg$ڳ'^tԽisxzik#ӳ6v[okYDz=n=s:bk_thþ;v~+tڼ]O~YBxѹmUk;o7ֶl7`?Z{ֆ2ym߱>Z[wV{73<1H}m!O:s><tqYygFͅot~ǜ'k-m.^\xб`pe󏺖.$qM4{ySdsߧ^+4PoGklI{>wZҧOW|h]'Mxc]mҧAKfZ}$M6RΖ>MT[l2~ۍUv!;8aAjvNdcl?y4\8mNw"sۼ*S^i~юΉk`;XH73?sPǚRql;\i$ͧc>r3^7\=>cOgq1f8}_^-=0Ga<uTC_/ڞ0jMO֗ד&J͌r!W:%4.m\}_9,)?]S>mHuŖD̤>jOtuO+IwB[k7U/u0[}5iqL&_W籴hs-51Ԗ,[{ʖ=`mSF~XHت ԑ/ƛaF[cX)0ǹdNǾKfqk\%CN$/yZiV>[jJ>kݹhȕΰ<犱V]kcyϪ۩ y[rK?8> s;lt/[Jx<m-;%;'K{OMg~&-5iߕ&cv:k3ߵ&~# kvSo}nO$-~ow}n;UΖD[Tk^Ɩ5>d;l~O~R,ʯї83V},۴ccݖE/cKA皷}iliqFRNb]ڴJ&E>{9h_ ->Czi畴<mkwck~Cݔkw7V-۹"$ʕ^9ܩrNɇ?s2a-Vi&ma}u >]klؖ?tlۉSƎ>uᇷޅ_&_;_=z+>{v9YNV|+ob|䩧N׊>OαEp̿x4|wEx|i,< ovu_9ް\Vz3uϺ'}]gK{p^^Z?' [)k /c{{{ȾN˛s镍s*I'e'ǁc\O,tXbcAU/l^vy߶ۦ?Y.,\einm&ӞEg_laz`_0s)>k6ܵ'EO½p#2?ivC{Obc8:OlSOkci:;sҬ=3._c豶ms/x^[.owmݶvJ#OΉTo [ ay,\k9 -7;p>[3zi2 {Zj&g;ݼs_ix~w.{~콭1{g&ػ.kU>Y{'&M{1[-6x"O;ՇqhrӸX)Ӽv<3F{GNz}꽞<HQ7㼡 -_KP;8b3ʾrACL#_Gn6Y4VIܧ[XC)6VC˧UKSoi\X}go.k:h]GoΧ}y5'uZ;mk}ku ibZg11ReouN4<4fչ.QKcrHTFli.ܓ-e5?\fVnAa 45y:q=1~^?XꉵL|fcBgǶ>hC:V>\f2i}8uYWu94U5+a>x_kY׷t/*Ͻ5zh{<9̙/Jiy]={Y_%[gxɩya∳|=6YWSu)Zg\= jJ7#o ;#<@䴭ڧ^cx]l?Ly{GKc;+Xnɋ]i.n[1"l+_>ߋk} -ss1x]J[X^/zUƠ~99|kMrhclع5;[Zo? _ʗruY;n#c m,x -l$<‫Vekm|[mmd:w/ՑvFX}bJ*m7%OJ5ۚ,7v^`zp>1Ϲ <}\Xpi'}P,ۻۓmOx/})O8!SӦ9H:q{yROԎOl;C{{dOӦY{[q'r:uwox{ȓhþơx_%sܳ|l֏9wY [|mg Q̈́͹'n k g۱}Rяqbnns=~iKGƙgNq2>Z"k\09KbW'xH9{ti4Nxcz#(;̸"OSr.3sSGc\K_(g~1gp7sg)q<;0i~ӶޢoXuvҶ<5<Ͷżhs#hc -G+NՈ{Ἁrk<({R=;¿,WmϦSuW #fIoRmԌ| .ODf+mtF>Kͯ]jkvN3yV?zyطg9WNcil;[K8ܛڇ5rrSluA}*OG}?:гϞ;>Τ$_[.>#Z S/lҷî}H0AxiVxiߧu]KIa}6}K[5x[ў2SyǙ<0@?W1`wLGOg> Pm՟tk^>kg~ϻ*gKJx5τGsu[e[s}c=c.ڟXߧlK=l~=Q^f=$#=Hegyz=({>[1@ڨ[Gu{`e0@?l٧Ny8 lnL9wOǽuM9{ҷۻVs|oi:[;ۊݷla|?(5Ni. ۭk'x1g g|'suQ9a}oQ`h +2xepn[,Qv39U9O ML@lj!.gbu^`@\2J+#EeOS{y'+rw<-pnL'1.s@tKKb~$@DT<ưckY*YyW]pV>jǏfJOS2tn]c -.8}m(}Zhc5Dƹuo^=߳$kYIb#;BW#`YK-Þr}WuJ .ܚ -k{1^0lG?|j]W\-|6b~w1]wIG> IG|֎}ްV{n!L_rGyq`twڈI#<!.q\ݑr mnx|n:[F&笮?l *p-l4MXՂe9mq9+~ /:\9۶v`׍\`rr7^+SW@E1nuVpan17:C''6OJ.(-!ޱߏ|_]_R`|b{IXSQCdAim|p;I("*>?o{;jJx74 K>wʗ.=%ɵ|^,a sPB P=r4|G"M[y-1{4NKAw#~[)⭷^|#gKr7~궫hJl,q4: :?xX 4oGm^dҤ/9I<Bu ~m^~/ax~?K u's g {ӻUDuz.|{onrx7py_Ţs@X磷o֏ eMe߽pf'ǫCGabG(<߯'Rv#]dk^5%`ԣ$>-I:@1s>\q`{:2.HB|m%V?+=4pGaW̏:ɣ{ ʶ:''> v>nvM:N?ݱN?8EgwK5z7z&㹞ޓ>>}$XpCjgh %ƶ6LcFϓO9Y4b{1|JG,PcHH{{KzirVmҾ9Tj>i -r<RLB0QR/X.21)8MtA'#FS}/(A}8W_ڜ-K 8R9jue VF|Et}4/L.2:+龠N<<.:d͑mJkn\S9&r=y6tF52i[t\V5g).-Νk^u6gjs/'m{Q&]ulY]a ˃jkRmkӟ?_gy|GP@[`NM@\h?mU';9؞^i fw|NB5vQ9Hvi.)nHMwn[gKlQp%\ -?4<^ -S-8- ͵l0~]08,Іy/J˗R/y8w^;'Fd%rh5zƫar9 W5Z=6c\[o?؞4~-Hu9'6 -yrh m]w$&X<2t_󓭰Xa%Sl|" D8Ǎp; Z?xXt|ϵ}Kjnjnñf3 -z9E/$ niGb'[bt=ʮ76/fc;ﱽkM:A{k<vx9/T m~3]4JBLO6}+{Vmy}uyEK˵x']Qw_ѥ [<19qD1=ܰGnG9RMz?kKk#^.i`jm>N< /a6\>k֤N&:tENLub"]}_`lVc`L؅3ֶVWlѹM/,< ;{ ̄ ڤt4cbw&e0C6[_[-ouڶZhllm𩟯d쏹lP?YѲ>ίwf+~.oֺLqgIϓM0̏ۅG3'/=C]sin5ȆI7Qz^[פn}e䎗/Ig )gSSy=N?m({ӷ]?%}2lPO-=y!Kn ׋e=r'{y[qyمݱEG^O?Q/maGMp~ޗtXK[[['mχ*mVU -›~V -}'CڡKߜ2'ԇF]er`ڽԻ{ol{16O `0?p??dK^mw b+Mm`zld -j`}\Ѷy]d{akk׿ 1ܮH9+l({}w)mo3[\?؟؛ߤ;JFXi+G\1rW%1?mgZrƻgVr  1r|>tHjQi[FqǴp>l?(*5MA|Q%]]9k&N/f4qng ,4~nLԋQF^mǛn9X{ʴxjڌ}QUj;T@ ?kΏyYcYtkbbu]a|'(s_qZ{4bhbmvC5muZuk(Mdؚ_@k`=֗G1&Wh}w:[*ئ8ƋLQBƸn#U|n4m!l'jmm5̚gl{R׶4{=3\WYWOI:Alژbg.bnkj/˕M?g=tz> Q_qUʝbӀ:ki\sa ,b{y;+|~&8y3WU? _è}GMg能ϱ-'݅fp|ƷmW܆7[AG8txvZj~Y| =aw[1|Kvm_a{؍~_}06ǒ9+\mE}^r6jstŶd7Dvp/+9[Ov+~n/jz]w$6pnËo`o#??Ju\'Ns@xs{dE㍌Q/s.(ƷfK'vXun!>1\솥1XxXehۖ_q?[͇d| -|3Y%~ -5'y!|:%z3W} O^kswrD1l^p>ZrS?U4N=./&2alpBx.&C;Gv'HL'$>pew0 v쓤]|_ǍSTČgۿlNx4]Ɛ>\C?R<Ԝ+}0Zu.gp 0@}/|2cu`wh~vKX O:wEh ;]\^q ྲྀ~n)-'߂v>]>zl;ka `>O,Pz@* @}أ}_(}ay! &?7[Fݎt`)-M].{Bx~߷24}|Ώ2xXad GDG|#o[v&m#~o]+C^(i;d~3;|}Դfwy/.IGvy[CJbB0'( "~u^$>&PV9tG?@?@.҇Jf0e3[VR>7vNy[t]m"[hs6|Xp\>,?O9KMmۗ=삕cy\n 67>0\|Id'+{ -u*' _8[O<2ޯRGd=\dnm*[4_{h}θF%?7Cc:I< ?7tz\X8yc8M>toann]n5qv^X_b|/@% ٤}bDgOJ{ 79d+着 UY8z<އX?s{ceJ'|W@-b>z؂FFo,Yz,Ϊ-}u5[m~殔.2d/skpXo˞u+Î֎{eĮSrU}lxd :7D.m{@!&mZ3|?F]^v\la]۵#qv1^b \r(l!rS,d󻞴~vjE/&6ǰ3t}EV&%`z߃m^pՕH v@q@&zPvbz$?H7_C~^s~jU?nՎog n+/{-6n/{.W^n7x"hb%Ɨz}0?~&6N{uZ<-=pq?`v/mY|hS?[h|UN녍q $K2Gt`7/\͵{URLgk~>O5u_xy8o.UCe{WvΕyQ?sI1 '?7 -V/@;:zp\{YCOvS!V\UZYt`0|ձ/`E ͰcP?e;,_qn}`xlAw%,/:%vikvߓo sA߳^;`l01@ҋžؠx6XZqC'['.d.ylL|!R3ci:n>}<ܱr Dw#|a[ _t~-Ͼ43-أVWckv3I au"sm_bѶw|`lRd`y]|)Km}_sdsvx:i_A0v0V0bq18w . ^!Չ6mb9cw6-^he>ObOY9O'/1AmZbYdq6Cs_zz -m84~Lmd'O~"DgF~9n^/q<~6>\v =1DX;|/jbXhH~kW .uAwp#c˓fo#8]tSl/~M0w1fvH:M_h|]?cO<ίBs8Ľh}}4;6S{omzNǘ:s="afh |.O8k6h^q?m6Bه=M$> kO8>GgC| f[]8Z.4n=p%Rv8yi{*tqP<_줿)UTJ{`S>K'N(ޗϣl1B43>07ï};yyj[ pO~d+?aA^PYo>xdX_Ɩ24JZQX`xU1~yaO7`mrIӤcSwS?66λvf:(I[|7̅w`k#NB)֖xb-syfkm^:|wi_חmxv윴:;܌qZMq%+Ck]-+_9xɏS|Mo|&v&g=G=si+?f-]_qjÏ?Bz"^״_osXϲ[DϝK/O? -_-"+KmN2g¯>ssw™}8 ~vjeAF֙g| ݭ?q\q-|a~P[RsֿU͵~'`tef`@w{b70Axdkmcv˧؞8&_WqP{>^tomtan D (]AzxM}IzWC8a}vx97 @<5씗<cQ…z0=?q>1B -eKۜ J/(${4`@1wτžyzk“w1-ŘL;v8 u_=&ؿ+_g ӮiGh`)Gh:vVnK_S_ c"ڻ5q{K{Cg]/R2{Og.p.^)^X*{lEnVW7g}yLa ɵq/"Vhz͘X0̮2ί4R:\W$g2cA.aO`Ɇ8ƄU# ,_59T`Efu0 -cv]q, =zc:&//7y$z<cЏ>n]Wj׃ގk{_Flhd-1V=l o⓸6 4Wn|}F1j~N0\8]o&?k:},4+]1.z4/`it>X^cscKOmΡlM]U:Ty/Ur1lGѽ5 6+}}ɯ i}q?(vߗ~SDho>ϴc&t~9S*P}1dW\Wgl[gS< qjZpt'Lxa_)t|})Gk3fgRr[XkH6ݡ,&ۍD ZpX%^g]HXfJ9q;]2su}Sߵ#Q6_?XF6xQks5a1juٹᖴϖ17y SWnTx.:#嚻\ws<.!VqySl"G|[O`mXM|[9:;oصanжC9 ygjω#nޙn{dr~7v /"vE~FQCgem`sR=Os?)cY`r+[/c9;m{mJXOM|OqxyǓ>O|PL/y\C#ScHsA-aՐۻ|yqbQbKzķd(a*8yWKC|/g$*`n0\r?F(+kЇc]q0adɓK -G%Kxq o>`1){E|cbs5_k+b8 -gj%я!֥Ji+5̆[= ߛ Ľk9|Nxw+lw9έ宭pJ.;6ئY -aO5oO}_Fk;h9/g+ν`:qm`2| Vdc-8,޽z_{Iը3J4 3b-K\OkHyiS'Z;o?~[sOݮĿ_k}v8Ε826E爯m[>10%~/{هᛳONd/綾+O@ax'I{(''_ 3?/&]\ Ol .c/ "GR\.bxlsu%䶹?b#k ]C9 czocNy`^1EmL籁KR2WO\((`!>VBqAow -61zKӞg\5iuVýpӐ Kmso?`s? ~ ygs=!ðBp7:}m_ -7m7KSZz{*?b; -6{i2fFJO`Cs6ժfלPI_TZu߃Q{JLp>7镏@WO QsU| -GHMQXdxyV01cʆXMsp*s&ʘv95( o2H:u?gO@1,isrMc~DqA",ZJx!]m,ڟ't]?1eMijx%$MҒfvʰ6 ëPWu) 5V;0LIGd&xgbߤk`+S,.e6]6/$iŞ5"pPyNspM'v=DžYlݤsb+_z?uUAy+~{j< fo62.Pm)^?C4F/s6i2RpFK'}q}*{&zh fhoW֑"oC|OIzs4lSع8'#8Zb-n/mU&G=> ]gRˮb_AJk sʵbyaz1BI+(./ip߸r}v^ -?1;ãpܙ\S#L,P6y;c>q˹Ӊ62r>vOI7,6&k(Mp5 )nG-6yٞ汁l(:v/|yNvwcq7X6։ :C8ϯYyOg]DG$pm}׽7¾I߿nf_yI;0c wRL`ybycw3"Gʾx!9tm_)=q'd,~yuxܷv\Gm!;]ymp +{w&+,O1~U/&g? ̏~mssvE1uM˵}1Er'3|C$tn4~9|+fڈQ.A1JmwԵ%ّeG+)jjmx8_ V t!h y,tx4<~|V>%3DO\NlR.q[ދv I3%T8~WQF am}~~X?1vů#B7ݨR[;j \;(GxfWh+ѹ8u}nC;Scku^7iKA&25jG9m1fk3:^xu4@'oOO@#O> 9yV?'.x1>F -zi7T[KZ=i]mnwd׻$ 1i -O-Gq~>_L _`jw_7N皿<).l0jNvB3vw|#|ƮfPîw˯x~ǰbv-6@F2#a-@j9g#ofvA>gvU9XWI뻖cc~][H~~]*[Ul'-QWóyny/: ~h݉Xnyb}vO=#:Aۅ%WσirV-XC2wbox0C&`m\x\ sNs†7Ei&/2?I6j9ki(eo7Wi7L'RGq?2i b$^n;tƘ|OKQ Hہs^6Jb*'{\䪞:G췞~yX8Te̍2[E\dED_ӎuw>6bؖe?~/].b5|sQ%kk=kϒV֙m/\eb0Ft|$‡\w{)G"\;Q툼_/28E[^w&;椯N|KcNf}_tN+- `>Z;&tI(GBGc{,> =\2`%7zG)ŗGn;㺸`i'8gI#'m;K|^7c$+J-νuXde<<=EmX ~v/CGӑQja^=|5r$`ޭ\WK>gx ̻$# ,a/5(vۦ;~X^DCvP PlO|0=,^Ė׳uNy J/딺/U_U ʸ9;H_ki\;;_>o~iI|tipű-_綰hj\M9(ާ1?58f꛶Į8c%x$kX앝aZ0TUrMsk ?¯`t_fwX*܇^bI xڗ/?C<`ukQ?x g 1pSnP?I9ecl1rɖ^#15t:fvqr͉>?<(χo9z.&Liye }nϋwl섗lӥ櫺²Om&_ j6Fvn|>lkN Zr[\z -˹UJb1Fm0g-cƀOsn)8nՍvn獚p~,,ǘϓ@u)a8H _ڻ0_>Ps_}}9 \7=Nb}oRiS9qAΙ\#E|T'I'ZZ[#El7)+q^Q/Xc|TF5=<^.?iĐ(C5\D只=(rNl}'C'6(_b1|Fohc<5Jpg]töAZ_|^ $[`Q[r~ԫ :@at`[4a?oyw&l~e{+M`unʤt- kF[a 3F{f ̭ngƺo`dMOI @i D\pA4w/)/O3P[i'Ams^nG|ey֋.J,0 2'y4z?l{S-[DbS*6)΅o(?4knxY07ir X^汁sv3E1||B҅寎>:eʆ;B%`l5h}{n6J1{ vF2(fG+8x!N/xCbs|I8;D1FZLK9 -ɾb\v]WtN=3Q8+b~h. }*f(!W;9}ZrWd[h՟S1?1n7\s/0z|r&kܿn'E>y{1@q>h[|>k u X}\Zgk~/cf60:q>m\J'w!Gb|nG՘FղJuo9yc,W[ztZhO>7o¸?lp{\v[`8 ;gޥf50q8'X`{H߯m#Փ/j Vpa+{]4}ob~7]/mX"/}t6[)H䊝*{_j_P7m Wz]3]c\(_#1>ၭ/?lჹ\ϗ;I(~'(GMJAK~Ri8O嶵hS|d|`T}0q?|1}b~O >&fm^/ٗwѿFQ7r8_O5֑ _]M}O>Rh ;b<}7߆_1h*xJ6EĎsmѹPnKϾvb↲%=έ$HOSim~~nߞI?==c,󼺷C宜Nꮜs羝s} '#q( E#("i۔ P  ٲ2,C K?!2_չ lv8Ny wmӑ3ƈn}0e::^'=.; ?􅠏{I&^ɗCs{}IP:@2`LQ>Ͻ'G_ү񽿐n_xm{- ݬ%([yA=z߉$'/[ -Nﯿ^2m9/[1~0>{?y6PA&eR\E〬o8os}<{Z>ޫT?x \˾d]aưc xia|x/ -3dѕtywMhyO|LzEs*P]?qYVHG?x_x8]C}1P?1s1\S0-ݽB^q[z -G/xWX:ڿʛ(t'.9O9_b G{Ӣkɠi֑b|ʧiע9z7[L ]dyQsդɋ0'f;v3M6w¨#OC/>%_ap]\if_<盧qy0>q#=FWdy 'SΟ|bxp@cu~kDߨcG5eئ>m,?tH{#O[2a9 #CЙ~^g+?3W}c6awDم?f,A9~y+6Eoy|:#jCd;ZwXEnzcZR_SS>O -.+3PAX}9~`rK'W?'؟DtpEOm3q-?s;'+^92d_4Mi舭o),@]Yqm;aȌmuv;8SisuI P>cj|Ϣw c E8j; __`HgpKL##db~ 3,/:gQ>>C:@071;t,_mt~iOרa+,`h=C88.􀁽Is'}&Xz?61SspƌF`^|H'_Ex>1>y'C}wA:ss+;z/vr숸s|6lοoetib'7!/_9;Kϗvfvd<;_M/#'+c^{>Afa|vO8_|, Yrv}|2cY_1e.a:F?rt{u2,-O%ZY}[Uo^wJwO깏3ZY !W9##?2VC~tb{pWMG;Akx7=7S_@=skt>c~W}h/0G?bve}Q֙YzB,_?{p;_f3U>炞+M /9l ͞tD?H?zt&G/O^`ɿ5N>y0;n/Oi}HߧND(} #Ktz닽p9&`o'/0XGل7xw:9>3Zre_Ֆe2GhY^eNЙ?d wqi1LJmC(#[ @OLx^`a>zf0@&t(o Jw`]cy~x$Jtt#wI˄ebu\Gp lƵ' x@v67:qy A1y}j\t؛*?N :fA\:1nhΆ*r|WڵiҴ{4bօ^gt^N賍N,.vD.b w}tZKǺuDvZ72#~I9t(O2/O{0|O;y} F(_qX kN :Gݾ+ntbu^j<^uIWmvkN-:riڿAciȉܭoS탖C>+nczyw#\ts0ŎJSsWun೚>9s+flX~Egh -s'nk>w}8˃ױr=N:-/ h\Gk!n9닽z@&m7L;6 -wߺ,څX}ޏ._gyx{} o=}￝ٶE%pu΅9͝סW.NwGn߾ǬwС?Ɛ(9[U^c;}Qסިk`~>>j$`i$^s?GE ct3-nN -bǴSQtѹho'W}t:OugZOX/]Z>yxf @q]!oubF$Nb柺*_)EӸU#wH_'x= |/{}OK̇k;~Jv/TߺQ呶z k窺2f:t׽1tOބ%w;}u=vXu<ϴ L/NN]JY9(~lS0clĘ $C+y}e0oPD[n:z*iW*= eK1n><~d"n9?nCn5y*c&P)i^+1_ot~bz{ـaYam;,uw:yvx2ʾ Ę^AWuo>cZ/l@l+kh9?czWJoowJw1ilL>rUczvt:rk=f~>z>`t/v42s6'b~AcCIaol;0އW@&@n# S޴_ -ted)ݜ[NyRSts@xb>ow?Zi`]Qm5ǜ?U1[p͵|;xs؜8[>:닚ACR+>*6^]cr̭cI@8^*PP (lol4wҾGxƬwL˓x|~ѻ/:Š?̿G+&?.aJRTk:hҘ'XRctṘ4/s=Y,^ic-(5VC<֛Mw'X[x8ukI( ,n'90Y϶c=-_? udDWI;zɺ 6(/zc]}1R8^^}Ui6P p(MoKޠs*d\p?rZHFoqibv_s_cOucve ϴ8|o]%GcvլLx Nt =Q'M_ mη^m}E0Gs=xu{sm7=L#<b7Lv)=iw77y㺿_o#ﭞ5;];Cg_ 8 S#c]@&3mzϯ8tJçL@x,\0]:t/}kkky{2^=?y^rC-ЦI1+jt lFm>mV? -yd1/o^7/~_;e8|̍t;qm/u'2AhE'N^ivXف~Pbƕy=߰K{NY& `lݺ@ 5e /[< < |޷Tu.9ϻ -]Lk x'7ӵJ'|.4,ov7j_L+]1jk_+MLC1K-Aϴ:7t5`m<.ng^o֏23asO-Ypݫ1W]:<ð;k̜tY^V}ha帳pCG`fbI2xuζNƯ/ylT ?38Լ_7zypI'X83c:~c =Cb#WU=ܷ{~  0ߋnx7OԵ{<1K^9"cz>g,O]UψKVھ |}yG1쾳b4lkk}M0wp=2~֗?x5vL7kҸ`y~I-,T]^ͳ7dcc/d,}#փ8ˊOxs&_]kzW=rzZ3?3n#̄- ܏؟r~SQ1?y#@\ SɈ`}.Gp=BEϲ9M=KF?L?H5j׿b|ux ,wKWc4*32-cppBՏW'miKXd 'XiG4k QwYt /3.~E\Ҽt3=Ci,/nj7G#z}EDӑA?]8HmyΚwMC9=}7u屻+w8-Lt2c4.v7/4f[&kr9X|:ɫު7Ĺ✟cx3s=T{ItxOcqms0;W_ۖw{L3[]TGe,9t~sӲyᬝuqK&rz+3O>NKSiHOݓl1f OD\zϟ3ͯ>b1cOػ[Awv(oճ7 & [fO^yzwߕ̽Z`p[^o#?]o/$ͥXcχje:}*/.\`So +2;+Z:Ϸmڴune7v)5>q߇t`~wnXyw1}:>$Vs} :`ϳDԂwdW{s+yta:N=yuF+(ne!G;s嵭~WM{K -C.[gwڛgsWB^~W}Ev'yvڮ}SDcv=gi#325Iok z?/:XmѽVyx׹:?u;8F>?XP,0fFs,K|HJTEo1Ow|`4^9YiS_y˕/95dH7:wΩWI<>s<Ǎg1>Oovz1=c9ui0}*WO5>?{(7z^ -#d^c|Yz_V<߲:tI?z -I5Mrc²`3uپ.WEIU(vw -g݊G%#mS/GyWodu<}=c+M߃Ŋr8oв}J1 v>wE7hwCOfO'M1t7u%ܩxiI' Ac4ℚ7*O~݇ {aw{ͺ2vǻw8s=mյPirn,[M\ee=뛏l//u=2$fHO^`X~+͐)O>M~F}jrN>u>u Oy1.z]ϫ}#˶'h+hWg}4h9>x|/7.Jgg'`9R04.,x`6 uiޭOc6 WC6k4&rI}:z>lOחϤ?Ki{}Qw0:Ee;ӫRoSs7 w09si/tsy%Xm]s:9s+^g>X"%pǮ1Y8 \pזsxVg9ZzW̮_;mTK>ωMt z@uJOXyS,8^x#ܮV|ȓ{uk5}`.ms771/D'o1yZ^b[??9,|غgB?p{o?L=o96~<39C<0cǂkփWO/:M2Jqu~ë^`:I}S.wp:;1CZz…n8;Jǹز\g]m`}pZEϷ!lwvqm;'4{c+ C1w7?Af`~7s.5JS_>~% Sum_{ѵ~Xs͡5k6<b:}5]y['9.>&ϻ9bkک_a7]{Lwwַ.MY<ߥuMzӫ &ߡ\A~M052b:@7zoW;+3PԘx_X]3F߱x_#%>5&q(/yߡ ?spB+ưξ;۬:vP\W'\GSiŋZ؅ 3f\'vvԏnN<Jd>Q,wLDTχױz|wCJE+ݷ T6S./rP=w6Yi&K7+}Lw{|Ng>+}cygLn0f塭9aKW7NX?eڦ|@8ޘ!?zAJNYi (ÕOY}*OŞ4t"75QˊSG4܉\;u:vfg? aPw/-.,Enr]_Wgu_\np=UG9^.A?ȶ:0N6VZD&ex_a-:XflkwUzY.߾NAS2LSwpN:F쵅7zByPۖ{T`N7$,8:L`0̩>=i<بm  ~^d1#S7u Sn%~>?Es|Aw,r}{zP`xvl负}^^ik+BG=5pz:`{uo8r4}c:F?NDzs]`\V}ރ9,>Ay-sz\h\s;}bwc;7}!mtvZf;.c5~:L,m2/n+\?X ^c_dLZטUk.-v؟{}5/*S񵁥s-[=p!<>`: ~Z6C;G3}|m:]lJXf7|7xp8iDztbv!Cڃ`/zE;{35{8ݾxϻ~=.ld4ѽta 3T@&}u^XYb1 u9i`jы\N .zvb/Ƴ.Ƕ;X4{,k|P;W=< -%v0IOa0"U/ϼ01Sf_\;g|1wC ,@;Vz@_Jٵ{K~gb~1SM賕R:F]۱Lfo^r7bLOcXktrMڿ%)ϲ4Y2⓮`х 1n_hMճnH~Ϥ/}w.U3X ω{y{ov?ב 'SΡ>;-9{g_u1-Ƒ7ϥa\ȯ -MY.`JuOʮWWO].r`sd:Mbls̹yy{7oc6Uۿ;=qb}bqy{5yr,[ SNl#;ǷWn/M]8 YЊkGύrc rgGcYF;>u1N=`~ay~E?k2v? :{k`b{X{6kYOPNj\V -nw7oS:pAfs~Oa?g||< w19k핇&sWX@0sb ;?c;,u&>t %n5B_9q__7}M?vi"mj\Gdh]k zF|>`F`Z+M-%=!aZ?+KQݟ<-u X܏Q[s4^ޚ|}xaZN| $oNK_H^GӸϣA2y|׹|p_ɻküZ9WkNZd*/fI ;Ad[\6o|Ϻ緱;dQ~Yoq@:T|K_\WV'66>>#kݿ._ 8`*ݝ7u{<خ~F<1>x=xĩt{l8>.L=LLZ7){CN__ (fON|PPY~qbCֱvs>q#0>^[,.0g?Eh{]:Jn\on[zҳiR:[O`Mbܛ!}Z;)#[=ywG2/,B1E;>¬\|b|1u7fFN\2f,ryEG߮߾nCbY'Wƣ[ 7+VLjI꾹p##pD)+bI/(5b߹ [n^Bq8h>~/Z:86Yg_LO;OVoƖРѭkK[!]w}B=W?7[n0!45|]?R^`12I+'ma֕=tߥ?#\|Qz>y͎Y0=Xy?Gd}(^ S,2ci8@@=߫r 24xS?t|>/0n p}h`ǷM x~iNE_922;q?{,n buԖ1<ޥQg.w&<>9QY~__?u0~Ώ1k̦2}QoXJ5|vbūr/bUB5r9}.(.''.W\ݧ=(L\/c!8K|ŷ{:o0̿==NB~*%pX_a$Ig~^'+ݘ=٧=nd5)Mq_# -L2K/=gmZ_قqp@ƘVrYO@bH8wY^s/z7/v;l-=Lmg͸rt~37|`ϥH0y[ziӵvczkߣxGC}k+xq?^MO~[y]{ ͟MGҷ^~KZ+U?2 =93!{yߙJv]^q>3]w٠z;rOXidx1ii W~ʗ?"'lzW?5;oӣ4Aook6`w圦Uey|7s{{_u~G[fPW>K2" ^N|QѶس!~W`tPpw@23z->(^Z}[UY nT\OmZs]ѳ,}_䃑F=o}5/^`ctC>^ާq݉Iw'MN\i1ytyc[5ֈ\,^|7f4z:@÷Ţ VZ3so= [<v|xb7WL{9`3}cjlR:ԗ,3L4ϊC(:~9m{QﯺBm=l|txZl͏{򌱷+Ǧp~' Ӥl?Eop>LSXi/^5!p>1D7Ec8nk}^k~dL)oO"cK~|GԨytO[Nb9ՓO.b[;nB!.OXJhx873N./_̧\p&xy{u=T_,|Y#$V8 oocL1A -!+4E(WnN`ߴ?:D~\9?ILJo-hǰԉc]|Ο169?G{,pƹIXY -kP` 06| -}`uwxmw8f~ܯ{2,e桏kz,}ufO\ޯDz#n.|X9y׺7оYިm:?u9Cq>y~7_ ]#ƛѦ'+tyf3451tN`[Cz9ux+N7V1B_nwǗuK2niel/>㪏x &]x.|tI8Μ:wJW3yQt~g6u0@FN&o4vhMW7n,~5{xq?~gW^'o!g^^{?yu _?o=Pw֏;3Q<#>j9W:|N7fɣ+']`ۻY1Ç1P>aYf#SX]ƮqAj4~tG0N, 6g&0_ zmaWm!>_5^}-{ÔPxݟ2]]8x5rx}{wqCS_1@ yl\1/_+щ*P^`C@{?||O+;^FhwؤZ'+beEv_NZ,GljŎyssty׫^:%?$v~g9=(75TAs{x`m>y7C:qGO\>[:D8%A|mteEuV ~npÉ["8?beKO-lABɍc컕Oo?}td?k:6%47X_bX z?W>y>M8T8=^4*O<2#|ZWgqx]bϙP]=E𻃆pۮ0O9'B-˿'vLx@yuת˺~Y_1Au 2F7ܷk:9zËZWz@i3,߃/we`1]ӭ)r ڹ=#G> GxM辰kyh ԲrW/v16b`#/֎׳ΑCzzV,0>KN1;>`y:c ! &?-e8t{>:a oν/pÎC?MA;߃ܿzȡܿ .Z4A[jj2OROr t O0|~c4h2MIs/A8IrP ?X,ǭ$-u4XxρwT?,۶ xxyms4;ocг@gwcLJF - @cp_7-_*PO_mײ2\kI;XY'qc>sg?[z< ^a޺d>Pׇ4˗uU঱wX]>1N5iWדخOl57Gٶ2ZuvX1tvrLG\G8έ1m;^ylWŦt39n=^f2*/v uQ6.ȘNiܾ۫?:;b,o׹N; PYU~`C_xK5dtGǙe#?s-l^(l>Dž|||-ǧSހ>^q>i'2z z7zk,NLM] U.fvb8szAlsO21=svvc>u֨b&]CO'Ǿ_uh[X[v 7l{j׋@ict~ǃmpF1@Y<:_-rb9=Y qo9S>w2͟ ?{kvn&m9^_83)ߏ4bKVkl7hǼC4c^L짗L?C`3[t6fr:աsO|tkގsl25\gAry@>e2^ &ٟ:?+>6 eYGx-#/+/z?tbV,d, M{u8?6s][ KMnkkigھ(7r?֙X>1as6rM8vd5V,A-7 haqap"+W =p.jǬ⛬qQ9k"kd{z`~꼚"btq8#u=b:ze7~[;!LNG*|GenyopA}zYߺ7o6Oif/ -{go.|oޏ1Rz-|S}iXO<ښ~=c#ymsr cES}Lys |m<׊.[8V}??_?nniǗk񇿗-XbfKmN5#޿ᚾ*k?Q#8Pq>`O)Iӧޏ%[>=qG ۵˱ſ[tu~_6䪟L[ڦ}!ooP'8-/n ߧ<@{vOls&(_Lەe;:.{+Ӆc#<K-h&m^b_>m0A|ݼ.xg+nP;ӵ<{tIJ{]kxxxt{bmqJDŽvO:N;cvU|UW`p̋~Q;]؟?,%s,O~}z7yͺV@pyzW;c@oܿ -X+<9U&q=2~8>>]r -CnX-I踘(kuUdy}^$Ooas]Uw91I '1cerw=铮YNz?(ZI4φ}qvzչk{uᡣ7ᷟlkzl SyQay1/ {o+_`h_?>j)sw~;]kYG~ii_.Oقܩ|kxo?k}\xw{ZM(?Gt:lL5[k:i7xvqC=?B|yӟ&ϘnnHW_%L{xUIo~{=1a!l{p~ݰlAܰ,Tc`LGʶEa֭|'tYLWNoQ18V:Bt{x|xu z|>}>E׻j۞w25?y8_GW<}4uARaX~Oy~}xv֝׵~3',Kȹ y`x.̣߯iIw٫0\:n /-Y~SLkݚ@˗FNJ-LmOXV t{o^3ckc+v>ܴ~ a| Χh YO]O^=fx`j  )v$opd,3nsm-hFod8|0]U6]o}0̥|6k'HiǠ͗z-/0>i;+mOMPZ@+~1\q"@PskC5:g^{NOIK,/AzAE9=:GKSg.ۣF/jyht>[\H]9"T`#c]%=x0bƴ{b'.d[:ajU_u?vu-WBn}!t{ ;k7s^'a.Ҷ;>..#6I?Y}~ؒ/ @y9`q?0>iK-MMi?" m+0c͟:?NNobn.yvͳޏz~'hirSށz:wZOݻ~)/ݟ<?0hGtΖ ϓ/W> ?e-'W_: XPᓮOQWy|eoo3`k=M++a-{xk \˯;W=c֗~ZSzwMg,Mڸq2]Gqd{8kk)lM1c76k^+_7޷h -D=y|P@֟W|E~Ē}zg=G4&<,E5[8:c{ڽGߋ=v~>&xo۫{Aǵn~Y]btwW,N]8N O,fl'-9K v/q=Go4T?`w ?=ho4:OSrO]c(~?|WS\YuXy;w}ܹt;W_WN9:֕?i= ZË-2cyh>>m\MOaKY߸u(Kw}L^^Bz߽i}kp qO~'[-N7)KO> ݷkIcʳFi׺s 85i-']sէާ„_zKxZN|wsd 6?#mKk`Y.d~-ƾC&k}#[SU!;~aq|Ұ>Wxf -?t~p>LGKZ>i 2Sަ/O_|0N:#GϯgL?FnH~ߎmϒj2BY1j< cM팱۱,P{;M};_?NHwfk|/mOϥ-^{6mh|mp<0Fp^'Ǝldx8u8<Xg0|o^.`X]ύ 6)H xwaxQu,m/q;,e-h14r¤]ߍ|wf۶X4tY1 >`ޚvq~?׌9ny~eo.ޠ\mX)N3٩C/fICH_{L3TD.OZBcw|bc\r+냕8s3tQ -9Q(1mC ͧ[i!8<{7ڧx^so.tV?t~Z`Xg#XAg JXxw?w#vŌef&Y N?"{?t<8v9㱫W$ u"raUO\[@냱sҗYSCh~acp-8OC7 -YLǃ9 Ou NM¢57ZՄVq'ꭥ|ξnK#G:-3ugeIG'_rN}gż{kk0}*O5hx= Z?roO~kZ;(-:y](ϯ5׫c هqf̑Rb/vxX'gNL7}QgPbx S'-NZk3llL[cwyȿ#.?ԽoMn^`i?wuߘM{EGqLџ 3#߰8'Y}b?!:?zlXÅ 6O/ܿa[3c5½nU\٘X \д/9csB \~g[=X.z!_E,"9Faz8;ٖx뱳XӔ'/ؚx"kcq}]'S{ O3Kit3~=jrE*7г/:b][;vKXY~-G8"m |j2K7~tv~>k L񉿦 $c!UxJz/=gmx:Cz{'3 ׾n'~/?LC_%g(.*(xvz 7fv/q@8͙wsqc>uϬߴtn~]DzU;z/}ڻA>JGWN^1= n~?/i5[G1@YT4V>qWtOZGOoI$k4nZ4iϺe͙ut|XϹ[7h +~rO֙LPA&;ߧzbboiFVD7"?7ouޚq׶S=׿tȔWyhybvZї+ (A9b?:@yG1ϘȎotxޓc}J |ֿf>9~ =bᐯ'jſMw-nN`.D'ΘLazɵ7+ 3_FX/,pb}cqL`76]?zau80˿{+`_dOD= ?u]y0i_:8ݪ>ƇFbٽln>'ywaX^JcaOwƠL|^4&0}6y:1pM7{;|}`y>V/,Oaa5-[Z'`Zǐ?G殥oE&I9`.i BJpιO=x|3>VSn~ ,z/OIXqߏ<|!>e.߸\.zy/'l_ PIն/vy"sK'X='؛su+[Zk+dߘ9Xtޥ\o5>?bU>' K=˥S^*/V zp8l1&f,p ͗t1nד}ضcCDϷfXj>q>~/zVKo#3ōͥIwwBwx}"W~>n WʥO,7@~0>8ؠq5>X yry|:?8 'ǺX&io[NJ9w|8{m.g̛V<6xgֻ~ym=ͩ}y&'{:Wut Xʺ>a`v|~.:V/4x_3É֟K-Uo>:=G I6&9=YwY,g+D\1"# "/>Vbڗm4kzx;l3.Z嵂1mџj/y9Bw{S^oKi`Z}s}@ u K'('ߗ}X۩_=}~gzϰ_EWٟR6T]{k2rtws:@q~>`f'(.hA j,|9sIçP~?^w AN&l&%@s8>_!FG'n-|b1+3E&n8פs9c\O5X܏~cuWX\0 N-B DDFHz?>ZDN|Ә8hZ|aπ"wcUY,[r@;\C/쭿^_2'!1mٽ/S><3V~LA 1KQ؅yt,-庅^էmȱXd^.y~x}z>e?̒>iI}t!R /q/n\}6v/,3U[p)g+oChQgoZyjv{mZ>_m5NVw}67K9)\1Pg|hW/',\o-(ߣUc}ZV"7rR7>`{q)el[']EY ->7.\ǜ{3gvI˧,yx7r1ź>w{3`7-oJHGf~Z6mAz>VM@y@1{ 2' 8y.W;[}ZCيi|Q_/3?ƈUzԪCu52&WkU@1@9Գ|{^Wÿ`.͢ >sys%>2kgZ''f&χ+ݦ8W_8D[Yg%KD|_Z}ˤ빟:ǗsR_=7`GV7n3o³w¯Nxܻn9 f׾>(6L|g:>WbB10ֹOM|s&ǡ}nPy Orކ;C_^Pd̅k?ܼ_alINY΅}f^P69gKn-y*@|.ﲮ4gfཕWP[l L N)-M9|N2G5xmj&לa?~rn>xO݋s~eܠ{j70̏u8rb|/6˒~؆[Oޕo=sm;g5N{<퍟3::X&oY>gz>y{4^M},^1NX]'࣎9\^5oX^>Xa80]0M#|#${Gs xOZ6^O=<oRN@ /> ް;˅痼ts aA4-`i*grL&,Ng}4K%a;y~ ϰ8b1ǽ;ڽTߛϚ:<=c}`"͠G5ʃ+>'=+V s١1TOv[9TwO쎺|hg}by{n4Db mCb?;q ,'m+X2B4^Ĺķ/5|>_|=!yO54^q~r>Cs?e*Ck2S'y?LutBvR){C 0X>ct9 `]h,397X@8 ,x!}nRLט4]c[MǪv5>y'6~\0- -Yk//yj8[(럈3}r] #9l3i0-f}6֘=^7(WoA`[Vpy/{~Y֏uqyVw+nh{$L~UO_e(+dʼq>2~i-25!Yx0_}~1A8gbF-bx܃zݡź/coN+^XB>{ nvԻi/ ? w wŤ 3¯2Թ}A>}ەl=qOƺiLYg}峍]YW F{Q]=sœ|z#߯(ZyآYS3_~ ɵ%'e"d)19cɏLc_[kcS?gN5^F<׷h7f0^dr?β^~W_y~[H:@~V?Ex?|Vw!9#pG'֧sLbE]_bTqЍ'wm:uK ;샃E9꘳ml :`0RN\rh;u]q_6֏ӃI);D^at>1@K:_q@|>{y>Qw/n g6/%w*ɰ3uflNt5}2 a:{9&_=̏f }_&n|{'e?@<|oohl3'>+ zbK?n?x% 2v{4a<֫}zp>=_W8m:[^cη6boOm]wI_\IGy>(l z fxzW];jg E^hJҼdn -M)xݞ,ڮ"N\m03uDSztC?=ھdȻk3,ɜ!tjVlu6u{^Xl`_#?Cw~y/qu^H<9?̥`O1o|v.%G\[XekO\-f1}v>ãOerJ/y1)w26ycz~'9 ?o;VͿ"#5W2hG(jjW#w6anزeWP{/M߷2z~|}3^jC? -gOXNj`KΙ|fZSHǔͫfRzuOM,O|O:>y}C#h|X+]a㬭.OO #ϣx!uчQosk>?lsg3`X!"c%g^/: p8xYO0{V7Y_wKSMek9O/kz'ԥc3\?-?$WO@qAqO?eVxūoS]ek#W쌭˩Ξow#FrG.RDF;ؔzwbN'~7NM(>6Y\ON`4=x5_ݟ~dp%gݏ>jO+7L/K_:gѨG-8-tps)W<2{sUvɚ@y|?qKIS?3c~ZzY 'e9mqoWuT=emx-:yRފqƢCYnLzć_ٟKv혱3>t=ˬUi.p?@/wyϒe<ش%,0j_?(_w½)#y_o5R^?Ʈq,OZ?~\=<;K!Ω ]݁8Zrak*{<ao%νoȚ}_|S?` {f -O.ߔ1yp<|0azb - Kg%6 zxYyݞ ?|%)t-Y:Mty.CO5ufYubt5-c>-6&jafy;@9暳'tB974[ > -V=bɣ;z*#8fR--T?kil5{ks^Ѣ.h|@ Տ^{}Vt09_Og(C|,k~߯Gev%n%͜le:ƕ}ÍHS]9%gl[v xcalv?qx?>؝ pr."y3wT$} 8jbR3~/\879 ʿ}2r_[h5So{k-[Z>V:'jn_'EG7L_kYv,@?kΟ4YiLu?j `mh>_WW'\syQ76 La|~y05W?_ w\y0@ n3狿W2 BFC 0.Q g!1j>]'|_q?@44OcܵEM?>e~x?tY^,b5-a1qA<ٍǼCosJ'ng>8;%-9ҹ%YU7%^ejn<4Q9 0ƜϳC?XK.Џ^`[{,d~ה!!J-<-^gA>C|F k|GY;_?S@|{r_w&ٰ{;yG|_9f.h8%Bq3zֱ16=WoKm])kڃ+4;|>;~;/ŭQqwf=@I=k:~GccG_Cwb:O-YG*5&ŨO -zWi%˓Mg-.uDZWw>w=ǃy\\z2}_ܰ| yf/kڿR|EFv_sr9p?Dr "%Cru7o? U6-qOg˜ 65T~NNp} ,OKK<>"`bI+2:@/dJkmLcֶJ ^\ <܈ ;Sw! A9^\x2Kmxp4ϥ%9S!{}.dp<Vij8uz?-xmރ#;Z7°ʳ7:a|KVn^j> S__>ǘa_j8G?1@WONlOZ@<3+AJ'&WNpw!39}ǹsf/rqg*8"7 -0߅8'.|-_44eq~kSV+i/K|dsͽES?um.poW[.xYӋϺlK56a/71`n9⥬˙Uj}_z|ߓ&:Co2>&P}S fg>K}lT0M5*u}`8j'p[<ǵޢ.DV 9{<>S7XguCkڹ7܍ -擖QB)~$dmoOɕ?78[Wƒ@MSjHKvL]b*TS`q|yӹ u=4oUg2>Xx:L+H-ٽx/vK'ց{͜.Ws+5|g@xޥB_W׃1>[r Nc73On/LNh;<߳}IWygzȿ '4oSK>KY' gݲ=Ѫs>T>6~k9kw.x=7Z}1J[(VsU/,Ou2t.C:?eOZt墮h<Fhn1=syo6 ܤ`[Cw>]Hջ O5Wl+Cj>_pS^߸r}e{~5Vz@i :~4;;Zᥖ1=<:mTu nB >Gwsg+3>@1^'My5ģ+Vsy͢wyq^tm^hzB&g`bg2_{<ۓγ깤d}\_P\ )|lKֿl rMWCMɶ~ fDߧsʵ'_y]UZÜcaYߧ_,3 +6G!GoR~HWfSS]w"5Ҕ#s>>d9)oWNisJgaGxTpooZy;JblLVlFxٹAmci/S. 1?j84wo7~7cv^%cng^>gAzuXS5,nPz?^]bA#O933@; Lp8V8&vP8_3g//l,^} $xLmlm'=48ڽyjaiK+~܇NpAGpeG;Y4wH.sk";#ym`>ϙ>~yɑj-N{0w>xln<7vg0c)cwxոLO>Zuȹp@xat}Z'D݈s/؟v>`-"l϶->!oww.~kE6]J aڕA[!G̒1kWRgXZB `aZK%Zo|(yo.xx!h5j% \ mI[贈V?`E:a<~n뛁%^pkga. mT<7;im-w 0#'& :9vxLk7M.ocF;S*jJXbk|?2kkμn:jf9ty㉟O9:zkcٞ9Ugrosl=j:+tb8u *GZ=#ݤϕ6Oz;s}} ~w\d?Uk8)?9vY^Ibk.jVqL'+.n{ .ɸ.pQ'_Gڶ\'u}¼=|כgeԦZz>W\qǶ2y󙽾vWu -NdsX>&'0ǎVZwÍɱ my_\O]2S\k4V5VO:=YnHp:ng\o +h84|K,_q塺}4{!?dط華 o ^yUP m1WmoZO`w|m?[}b[}+O}vNWx} nvz/MlϏR?}^Ɖ\f͙~A|ds?TO|P_(#8V:AI;iüV繡z:,N:BxV(.M1GQ\AJxچ̑zz{ҐIW'x<ƚ_8Q,/Ii#m _^xv<]i2Ne"|c4Q[YH(;sß$,ny4p/xq9ic^j'G̅MvmpA͡>Lxl bgo<=͹ڲNs=[u[ކrcGbo'O|see\l -AWҝr?e{XBtMhټGשs9ӿ>;}1xٱfvP5R+w9%ԮMe&bXF -8jJ"I>߳\W56r\ԇ׌Ӭ!jwsY{wόY6o¹ )ycLl5-VѼp?_-CȹͫFxwoBpP.OnYy!'_DlkTWs]E3g/1AKSޯ|GT͕}9W1ӞحpT /6m>G?AgxeX Rlu8<92ۏG0>z]z+Xߒ'sb:sv;gwr=Xg_r|{LG4glxp-Yf̷;m  ƟG\Ɵ m1AiU%cԌ f ^᧺}{0=,Ob|bWHEOd{,]_\_L9 ql|5?1>|0ؿ}/9 8_uf؟<=;:kV -Ki#/׼èn .7{# tzUKдYCi^5MG16iuZb~8ff;ߔ mt4wZbJɜ'e.?AsS`NvVkugul`}-j߮MiK-aZ|Zj/5(a),xs5g{I:_{b̯\ee1|js+Wc<)7ji̵Κ˱il/2H>-3Q|-,]?56V}-a<. _&R0L~){+Xz\_Ӵ\;u藾O>5_O\Pi"ϣ6Гpf/6]XRqxڴS|_,ެS/Y<]듖O|?N QcӇfm.iwz͟Ҕy$.5l1?񾵜~zW~lyhx<~su# $yEAxi;V>q;yz߫UU Zkb|@w7mo=.7MT}?_^_ ~b{gX? ~udP,O:>@=AoTZ-XIq̡5ܙwGU^X4{ fV]wOXNOܰz]jl"='EQPѶXӧ, q5<@+'M~[e4szy4?;[I|Y*h.RU3<}CMn_:,`|ڽali2~ ˁo/ [>)}:our ,5Vje&,Q^/YQq>4?'ӊZ ?u߿ml?_ kL(ݝ`c]=ovqJۑqUc~x=xhOsn9nK>ey-7_SI 8W 在F|ת+Xp\{, rK&^CMӔ138^ Eހ}q? 5\;ᆙ}b,m:AX8mx1Ýhbz=~,~hilK (Y4wdxӖh[`wl_8N=xl}O3_OzBHc0ã5;0hxg<:A 4ob٩4~k%3;dpmꕁ+d;i{EsYjD'kOU+P?OfYc 9?]i8mߣ&wKN,/ *CcW?H6F|߇dZ;TåBK8&&q:5x=e}}#& r,;{s1?k)8S5m sYg Y{/ 'YҴU4mVj01<5X]nߍ0=W_/5)=Wӵy {Sk'HU{bB rD~QפCuwW4{^^''5XH]T~IhP.)\&;t?#ZZ}Ea]%sA~}չ -<ș$|?L\(2<^L_Sݿ).2&=hOez_uc?^qy7Wx _y7j{>W's~}Xڥނ_1g#7phھw~>M~1~zM_ NN^Z.4~48lODk}v'My繛4|' ž!j4b^Cs[1mR0hsDlbf"c 74u~wۤۿ?/ Ԙ?y.Y X/la"|sa/g5pIG@/>Yzq:`+?e";/¯q+[!g:;|p@j݈Ź[O>Y9y NےV3z^||rtuwJׄvO:Wq TK3Չ|uwõh_1|vͅ7?G/C4{=w) _8! 71FuyawOm3eI?u73Aac mqŔ닖`#juNBw:WvL><1<,i_ o796 ӱpAšAL#cC?malvOۥZ2K=tq XXpȲ20scid{&0?cڈ1;ynu~ۻl 0q6#4t~, di,{v pnU~u#\" sYzMCy%i`\v4↺Nݧ?V| Y_u D; m>O:@_Pۓ-;G3ߓgkwx^u]@u{7u? -iHt6/{,t]?)?M4tCnU:@e&_wQb>~w L;i L^e;5=zpI'm1VlPl9y}[^h-/H[)8]col1ϹdY}E2~#<24=`u|j= ~g{,g9a%~m5Mz ;p_<~V{}49n̏J|>㣒{ynxu؟ZZ@)倔 -gxlR_h|}!uq.r;2/ !lQނG3uXWX.ZVP{x}Ir`q)W=xݽ)[ [hwxi5:7?jy{@gޗ+߯=OIsz^yIsk0ZooIw32`o'= ~eJG_Xu}F8xVH-~{=L${.y}V?ŗXh9ip>CO_ƽYdH31g6N/{IGמ5_ _sNX_;~'7|#Ov9Ϯ| R~Hgl8mnݬGǝeV(MyUkO><ҙמd=#`k|6;,N\΋vl?~e;hc ,RzK-7ݏ;>Zϙu̧>F3cka]9WK:=iXRh})ߓW=Yؙ3s<157eo2YigizQ kcܵm2j` 3l#ZK$8j7^÷)gz ƇwXX"l3#7ë= s S[6gmi9/0O_xROxb~b}`{^+X]O^br ?yyiφ6I(m;aGkSjvCšS?ip?x}0OnxԭB' MOA~-5h<ڽِxp|`~QLSǠ3.=N -Nw(!IfJb˻ PP'Fel`w=esEf]gj囏W33`|d<,nz O}4'=B|=@a׆y |cwo~PlIכ|l>3jw -k,9,0$afw76d}>WT;p˼\y",ËvIyju2o긞xl|s9P)!eYk>Y,zkyjlXȇ[_iڬ=w^=Y&Z,I`,ZfuM6,`A, j_Oayɦa m5B{ExM]GyM ->ߏTwnM{|lZR4`mX / -?EW:`nh}=۫S_E''9#sƁ]ݓ_oK/+@#lH׾ﻶ\4ߵ+ã_Z@q>ux[g)Dg6A{MCX ſkz|o] 5-66`ٲAhXp՜__[6 S\9\Ɗ %}|cv.2CoӶg\N^iپ^ m qS?pnמ%Wy8}415aRWe0g>2cnH<И^̮2a9(ub^/(w#q|}:fK1?1@ikU9=7/ / =g}v{WfLWdc=[ZkTN6q<9iW?S{=scyrt%N7t~gж4y;ۧ -[]W&(6w}n4+hT PY xVNltm}fB -T}Jxsqqw;<*-d>58y{z{I'''|8n4ϡ8g{ O/ p}Ƙ}|s]&{ -2LW=2;}Il:?`3@O#K9c`ud!{u_<}b: -{R=2/4`0D`up0ٓmoxg׳22fQog yv+/C T7]L"X?0ڿu{}KEo9 r0A~xiY+5`x0Av9/p -Nj-؜|,yr·i[㿻ۄ >X߼žsu/3/}xi]毼p;/('u4X쯺jQfm_Գ/+arz?l¼'Sq|KMMcgfMwSL^| Pko('Og>k6$h푹^7biOLPLkpe̊f6az&f9vbibmO[myd3jG^ yOWΪڧ1 -朾O+Ƕ]hYV ͚>|`{Kg<`12}}29 V5 />՟pz~KJ[:&Fkbu3\ϼ}ebcn p%>ca%Gc61@3Fhiޣ뵁>yO!ĚF`xy^f{yͦ*(V(vXB7ʐ/ TtVp.k -#W|+q&Kz+ێ|δ^r9,z;FZ/{e<8 JT]%kONz94l`ؚUM=i֤'odg*:G*Y»x6d߈fZfF'39qOIOȱ 2.+4Fi5+'I/Wy~8'=]<&s~T8k^\K|7k0}q$fG_ .ZÜ M%iOy޷]2ދJVMs;2jPAyG&,z>m4{>Ou#V$jtsNӮu19IJ|ԑJ/e!]>~yTxp,x޽Q035W!8Il^[giJ3g͛ Z/X aqN-8Ӭ|{;Ǿڼ|._o4GF5'}ܓHYj%8A2gkiQ5*CCg+Ywצ{GoÊ?<~~__ϝ>XؽSM=[fچ0@~ir:2KKr@5gSmActFxaoi/kMCCMA8UPspO/4sIi?NM]y5|yveY}p7Coh EJoT3/pُ0=qy8^Ӂ8זI'/0xڿ3@6M'&j=`9"qWZgy>ԎzwHi!~zO  ST/>xOSWp \71 GSw*<[2fZҼeo(ytr7L 2*'RP~82F{>v:Kޣ_¸8/zf ng`Ǡ÷ Z}Կ {h51as>Oy"ǥ#K1X6-SپoodݶL,064^u97{_X SYwܐ3=`&ɍñՔY`9=S cLM@rA8~h]8k5󼖉ڄvZKZ*fcG`8hӁ7:td/گY<)1 `q.ӟT8`˫\%jo%TP:EiǛro/T-C_}}C7}]r1Osw q<{{mHgym')esRs!}-|B煺ܟs|gq޶,#V~\.[?gWeW]a|^ k컄k`\~FS"_k|>^\W5u<:Ad `.M^kʦ %=57~&P~~2N^$]x| cŦTSSm?=1eWؖrz}MrdRMs?ol|-Ɣ1wӸfe/ukkM:=h2My𶆤[E7`aLfq;W. >@6\2|u8 o7~>I{PgFӠ h;/}[ﳾ[Gڼuv̌ˉ5g -o5$f`/Ll[%&Q<<;׋>m1OMY\f9V@iAhxn$<@u PW|#G!j}ih[pη&m֔ڵb9#4w=Pep(Gc~x{oo{Vt|.Zgş1]{ϳ=ݓ<'_{~`z"Zck2g|%fd0~\Gρ1mk8&&fa3R7dxW?k[`2Bx);w)1BsvڽVg 3=#טy'ʳ:yqgk@ި鷟)ϪMetVN*!̓ʵRU;/ 2r[c{k#e'43Ƴ/>˺g2ߓ>r9Lsoo/oT13Ky/_37O}5u3KUcS2N-kxxǃ7W> -?9w79gߖ|]5,ǹ.(-O$v5׫csϚ_:GxYzm:=xe,׭YVoZ.~qy7]wz;qeWq׽9#·eqP4~p#wݎs飆_ϲY{Ӝ:|C޴Io^Z1O{߲e}aI/\qߞxq?@lޖGq}kqR~To8q^rz /AG4Ou֌o/c~]_s~(=aL3uNd~Ŀ&^yWmq_ #$E/Kt  ]߼y{e?>ݴoQxQ1AX?fA'[9?,0< 7gzc -ry>Luu0KvWTxL8P~;zpڞ3/gcq9翾'6F|\ 뭼:rS)n|+='. -g;n&_b DW2m/4Q/1&x2syZ yu7\2ߖ-}fg_W2:@eEF(>]r1-ß>]5{p{m/f=4;Z?]Zu\-zvyvx&olƑ;ȵ6q] -So;Դݫgez4Zi<TQ:s+t|?F˵Tϳ@q@~6y:Hc[?gXm -ۻbCȳҝ׳Pd]w5W<wl{~_SM@U db@5t:E)ds%GŖ`Va2x-M|| Iy֟x>W+ͷnܲ6iKk S5-a(~wWjnj 9sևÊmq\ךr]~{\z{y`k̩{ۚo=vlmOKY}c_{=8sO[g[-G3.6WO8p3m^)#͑[HD#G-@b)8Lsw`c741ln~z::?9"ՙ!oێoOy^'Ƨ~uSv ^/xN\ߊOo*ڃ5cBdt՘}㐉 2AǤ,jp@^b-v'mٲ#&qg A/Q>D;s?yOg {8V0Ԏk`VN}pq8|{(/mwjõO~ba%᳼O 3rtQ Jv!mEMOO|9V܇Lwn_*?lL˫l֞ډp?RbVצ]i9.k0F/Yf?^2ϔ3B6FwV^?43:ɬsЩΛ Waq"|LI11қ z3vޭ)8zo0ܭ;m z({^%}x_e=w{Gֈya09=Uf߳R\_\<kff+0֖r|,nwKds fŪ-;][ZۛxMq&=o\q%5|X&1Ze[1ԘSX`Z <+/|mOaxފϦzq^ ?S=siZޘ'p>;x֏wgᵴ Ç=3);|bv)7Q9m̎uz:{lF [?"X 5f ZC$8atc6+\=H >8`oG#h m`pْ^oyhuM6ևsYgxa̎~| NB,dpw`*g4E\x{4k] Ogn۰?8ߢ-O܋׻;>|]NG7XT'_ݱpgh&܏׽s}w:ZK)l]e룱6qw]%ۣ3KW\|O\kV={v6r~z]a8oKwV|cXx_\o鱾8_k.EsdrZЦUTm|Ǵ[Z|[t%^ -I-lva^ҕ[ σgE? -l8nrE:L7nӘ+%,$zJ5,U79\95X"k>NVGVr`9V ݖ-Cv$A@@`InrEƹ]yZEsoZ]~yGyy4_; C?zKĞacyWl EA54s>빤u}&1QA>&2}yFUMmﬕ1ggo<•;c?SCaqw\뉌 4wݠ;" s lXWNc~Qr+j۲]#0480e슣^59W8\_8wrF.8\^s>jj6;^{p #Y%;y-ky!zvg ƛKQp\o|ۯ:zY'8r3 -σ퍞_ipK9txiJQo DS;Tq WKsd3G's>l{^bp[hY,+g³[cl xg`yB>2>&Ϸ9^Zu4{wU:;XZ}?>N|qq;EjR7F'H>c2Q,juzy\'gF^Wϵ}kc9cjZ}?xYkF@YxO Syrn'@ ]+t5ZZz}yݽN^ߗu5-m_rXEyřS2J9.2N}+>&1 -WW|uBpL{OZsa01Cs|}idۣo'L oanX\N\p3}msᗇ? pp%d\e)*'1ZIau\OC}ߞ?֞۾Oqb@ȹvLQwe1f1C=4zzp| e O_#3F:<{ׯߔM"_/} -v]jn5Mlp}^ǫ}+/x}T0>}^bUs<6Bþm:{|i{3]vеlM MJjV[]=[a= qy9aߒGro@՚m=kkw˳ag~ӏmm#[ct5<Zq>cDOg l~^`t n$m}~SS @Ӷ5Ø -{ / P~_P>~0}u[=a5*"a[O{X0<ߓY_'6>8&,3'-BK2 }p?X g&} ٿɣoagͶ[l?Eއpx#?+}zˎ5gSfL8NjZ>})7g,s`.Lxzv9[kx);\9|}5-~}~)mR -YϺٺv_6u=>} }7v//7w˙j<jjB.̷&>Wn]Έ.jM3ę,$r1ͦ\9 wF]gP]cuz\kc`uhZt)e6,ߘ EȮf qO8Ŗ~_l֏]lMr/#~b'Fq:Ǎ]h.|=SƱ2'R> fߟUCotr|NbZ< _lvV:Zq -c: Bח2MN:`p۱ ^_,f}e} ^9Q0 ZĨW8bd&f'o]1ŜS,I^tw0pcd:, uh9Ki xs3g? 5zmAXc%]z~<^/؞<ǷD5xԧƌ}K)5b/^^Q ri4&|( 4:'Rdf,,|'η;au xe%r&S?sXMYybp/si*>\_qǫI{Avx0@|y6qHu9~d2p=߱Gӟ=s-޵ѣܫ<637Rf<^ ܠV ZrѹrHBy:w el^]9~WTt7jk ^}­~;_tvOMumOM1m#CJ~UN,ׯ130|tK^^Go|2Sϙu+|OPLPZcbqtL/8itgstPkQ j>[}ޡ{Xj:wZEY9S6ri{)Sxz_>/B?9;{{Ah! UAjQOZ3x44UɭVdt}q*8{!ְu.i"_K|OE.fZNxlZ-Ѽaj5bbgv)<7? /r܇ 6pm]բ"%m!FwѩS+t&zy8qFe|SY ]<+9AS>٬>^Ԧg5uKYKj>Ʊw+r4 cSגRϏs|z2ݙs|?Otҵp]4Z{s;_no"Fn$voqY#"U8臔!]ji y+dWN>^/&,{_׳YOKv7a]5Ooox;4|.mu=+C'z z@?]~`~y6p{/iع6xA3BЩO:{c0?X`X u,vf+<}vWWwsm޶s:r<Iw4dEg,3~uݳ% tpRaxgk+1W 3{J=s>q@~4҄o2ۙw&\Z`|b}48 LoghZdU]}̐sAeXW|{<|Z 3WÛOb?2vackp>67evxt7wy Ou֗|y=f£ق]kڻT{}u똇2pޑ!azKOO4OmV_qF@,3܏ AإNA'6d#'"͟;0gﯭ5 a|v! uKW콏0-FD_1z.g[J ^t~/A®bΩTPbfQ XqosN 8e;<!-x`R}9gOzI(&6y[Ԧ3k̯Sy'.}8>pe1?孈:ls-v96Kg::ty:rH*W<|B3'{\$w;/T]A%.Z>Xb:IKڄc ,ƃ\n~>Y X9_1>bl/4G/ϱ_w1>|sdlpox de}gRщ rql's{*W<0k,t/: 1CLy˴z.PxWj%fg8Ps9sNpMپ`^:<#y?j%FȾ0;jHM<{1 +;GS/N):3m גV>w}$]U1#k&MuS|ׯ yAE29yd<"Is8WrFcM O^q8X8W Xl:{b{7Z W/jߜPw`,WJl/ɽW4}F0Wf}FY5ۖ֞d,\0/lrHWVwnue^%}"L2'~({uad0>JL*1_z𣯦gԾWwX^3/9>^,_B;c||;>0 Dg釫;O -SE=, MZ '߄~s~x][X9{ՃS;q\TlOc5~pBW]JsNDG[k9o{hӃc=Le۴_r@`1c͙s=41?8i;LppT=M aݳpx5l-τu71k{>l'FS-?@qdm^KlG@as`ų@Ҕg]s?~X#^ka}xa!~(y%tHu^\{ϳAzgX'%_![7GU;[7 y2tp5 ; -㱽#2]Km죎߼١| *Cl|ls󿧣vǗF}_h?m7* <=`?ߪsA4,[08;Vy‹)kf:@r0gxj΄_߄R0s!lv;\ԷM4tZN6NJZ@mE7}Cս:FOl Lbh41\6DĴ -댺;bGw{gE_9=-Oں/7׵ovʺP\W˵rRM_7_LilsOnq\(p#cKLjEulO̎<D:36|/ɀX }m%|UZo{Z~>GFJ"̷F곛'7|Iom⡄zEw/gfvݹMW8Js1T-N  MUs/R;x7VNgʌ3@<PԎTC/^, kXޔuRHZ<獙P$;ę^VOݷpm)ǥ\a^lojqkWk{\ -Ȼy^G)-f\XNƉT뉟h<>=hsܙĈ=6KD4y`N_u]gӋVx̉{ L^GFQbsb{T5 W>YfJ>=Пu%>xjR/emz{K^em~|? uƶ>x#OKsvLv0|} /JFlχO01'Xok G @a{J yY܏ l6ޅm7|'O_֣<\+x źsޗ>}<#:)D_ t71IxIG?aG?r ?6<}WO·.P?mˁE&ȹ$3enx?e~Dz H>Ks?8 @o69`,'xW!|Kއ&GG<1 .mMεo&<&{;u죾97T_*]'x`V-@i^f>ߜ<""<Dr j<<~yG8qNO ?,ec^a1<vѫ%4Vp9""׸x>?r|9rt^Roƾ5͞c[5Eݟ ?Z $/kQfx͕0sy}эq9iK˳{=?D5#뼭5g5Ÿ~|'a6f~_N39iq 7dۍ++vLR|Ax7u0y;3E/ˉm-c9a_ 7n]_;:+'X}kµsvA~5}AA}ޞn0/z/ M^bQB,OSt^Ҽ=K,0 2Cdj9?l=IϗۓWMO_,嬎~:5Ngx{'>Hܕ{>O^ZM;}SRcs5]p=jQ ϵ+(iAg|OY"9/IOz6 -!c3ہ[3އ&-{/{:toOd+V8Y4ϹZpL}/ԃi2ֆCV^0 q4lArI5"bE&5edg[?1EII+O,᭦ig˾皻Tsй%-gg%<;RmfU pn -x|"1~=66q>7]{ J oז?/^0/ji>J>dlR6ح|bl+|{ NYS>_~r.c{^01o -Úߗm?=k{#sd~rXϼy?mwƘj^_ 7 - zNx_^Ϲ.S5Nm ]ZuFo{ S2;.O7^c;|p?`x~ٯ)0>y0>XQ- -72 dJ&u`z?y{T`_lms,3Ffp>p=Ϳ{0QvYei1_ΐuO' -k:<.MLrn')|y1[XǼ4 >{w>>^/Yt!Ƈ0 *MG}lӓWZ?mgY۴,p:\˽bp@1B-+1tYxs`Cװ:u.wt=6oԶy!L41:eR^ +6^gp4|iQo:“W/ϧrj==/'صxI$ơ:b"f arN3>˽uH/r%~Ia֒TS:}z8?ZމWT G?%|!4v\֗=ytTfsM|ǙgKk?SAe +qٝg&~W9k[l]1I[=8hSomv; -'nay0;x<z\pX7`Qv<,iGbJ Hp4yR{ -s 1OL||44m3v XscNRh kCGއs }EGt`}ʃO;t?amyOeFNw/ܺ2{)&乶ŷ+':~zyZlCwY>J79tڹDƇP9yA]p>v9#elG'Vv^SdJo [ǻ>]O`pjc, -/o7ٳm>Vxr/0G8F5Y!?a?d^pQ՛{~04K7=KlεJQwzXZ+|b` GvÏ6x5Pk;s } - 2TvֶT\{ey_,YZfeNcg -#}wçGȫ}c+>pRuEo~&f~bvgy=H# cDi9s _%"h WǾkz~ mp:j߇]S֦mεzv 2Ggã ->]ѿ2B YLp;s#k˳ݼ&_7a'7fG0,au)5N;d=H>a<1냜_g}䃤tpo-gcB_tQc>XAq0^_1 83@]IJk8{j kW*z{9_ݮEד2+:i/ݣ Cӣ/@i5W̐~.gq塰14FZ`רV5V\԰_wBF? hw{#DZl5aގ>˔1IvE]G=jן4@2<] ̒z<RLu::N&YБ8XgE8)D(UWOfTm]&sb9&#<5ЪY||wG? g.zl1~+ oDrٴ!&(7|ym>׏5 -V'<≱`{s~ muÉR]J촶-j.Κ a1ffMj|凈S:$]W ?`wWku;D'_OM?ey(iڔ9WXJ|oRWҶ>Ͻfs׆XpRhg{ -T%cN>_E/S#:xS+%湷7FoDmٶp<VZ\/M,Q[y?4@gm]q~}cz=Fi1ڨM.̑k4|6U Z>vȻ|y Qҳz݋/7>ڵ-3A|:C4k(_qy&G}Y׮gȦ#E䒟Lg]_g&=91&Zd߷{Ź,ei!.<=zx]صXx*+~__{ýp>ݾ56xFx׿f~sg{q;\o||+0|-|[׷JW}@g%yf0nۘa -#eڛ]ou9~Psg>*M:Bٝ~'/i_V:~"Casfk2z?;vOxapa˦/Lx\ߗ{UO<oɵdĮyԶͺ-os0Zh|Ln-G3pFKq7Z{ӻL/r;8aN3@ls@q|EM]'_>/}jǻO{z[R3^xv- .bZj>]{{8ۧꨛ_uИػʹְXg >Es"{lCMg !|^΂ "ݟto7dZIy;N9 >Lc%{;Sr'&l+~ˏG]B ki &QYֆlLg(TԹN$ ݟ{~ڼkR.HI7w^O 07EܮUqٙ 0;6_Jv|{d -kGV7j0TYZ{g:\m gcGC-]Oٽ}y>FҿEo?32}]c_h/XjyV٠&<^cr8}bx}Ox#WzrwS}>qK߼y6ǭ7Nh4=qԼ}QOݱOâ#7n݁l4~kvm}b n]k廌yk:S/:_9!tM6my"7.pN*޶O?=^r&y 7V38QC޵Qk3^7\1׼[|ܓ+MiooU}?qm=-hޡY.~Aٳ6zahШF 9rh٣>9ȗ1, ~+xQ+1.Mۻi?//ڬٽgZ$L( Zg}7e:?KWI{g;qw ۮ<}2 o?qE!qqҞflx?x;|5qߟ-0v.x K<Խq̞rzݎβޥL:ݱgB֌];ctxfϒGXh )u~~v-љQgql_;`+E3^hpH5'>۲~wyi6F'׹9iJ^q^lF]:cͽ{{y,|Y _.{8º^7k!ûUV3[XSe)|Nm5jG%6?Ě*{kW۱og>=gߏe%x(61M ?q/ M_eͻ_wᓆ[~?ر>ۻfz:A{vq>xoVbR%G8ٽ9`{G߿<XޛUErP`V|شU/t3vEcFM詝Ք}Fl~~͆^\Lx=^D-uydx= -;is؇fa98}f?Zu,7'mc P(D;!Gdb}w;z饺~`tzgt]{b8^;uv ja|CE?=צv?vl|~aݳO{02g]S?c]jtͷ=#~Ѽ ̄Yk6.bAcgc>qhIB;nvv?l?|Ofoj5FpYѥ3,z Ww6l/zc~Ӯak|)R9Rx4`oUpA<٨ -zI/pp9,]Twz<PVٻ=se.nZj1؏z%*c%1Cs߰=ƺf;+yXey"sk}7v:C\brΥM,x\땜I\ǗMGL~نrQP͠j,3B.3YMeixͼ-.f -\shmŶ_f~\LcɛgfkvEl/yx_ˑ1,ל #g8t $91Km1JG-({7iȯpfJj^syo@e|-rcsAk 5/X37/o|B>Pwaqm:)י]ik*y>%|G3cM94%opX3t\0T50,~YuOddY'L5$\b|xzϷʙf{ˑ]Ib6u݅6Nכo?xΗ -_-?5Qs= {.2F/\:'ݞ8^=B}b+͟Ew"k^lCpwzw 7s"oӫ ]9kt| VO/d1"$OL:ABws_4JdJ/|(kWm#zźc_}j0~:'tFZ^0HN`p6ڝ䷽ܻ='uk13K?4j<oPS/|Roh홙 ku8z \:}ȏe}9u5оul菍Zi} ` 'w쿍^)#ۗ{uc/Ŭ^fk9/r`y ^5׷E^yOp1EG4ql|~ ]);8~սʑR&9to֝t :x+=Ξر6]z5y+ZϺisMXtEVdT+ ֙jLrU=g3(ihUo|nvxjٮCw6{/j yޥ:–M\6jX;Qׂo2|c֧AS{:evLc4柨g48+c>~A:;Ln[>8JQS7^u &v3?kt1GmQWwƮ=GE ߓXΎ:qHCyd:fA,Nz73G>jՓcW)_žлӺ7s ;}=alШ̇ 6<.Mw—}Ǟ[Eݳ{~Qjm#|ֹ޷m]᫞Mm;D6׽_=a02Fz?t;\$zd{׾wv}j=>d;ww-Ig\7Cw^P_̓|gmW:_/?7㧚{k ۄgQcgއ =EgYSm2'g2;Yl{?nQτϘN{f}du'o߉:τA{h`Ygy^h<[#]rlh=ϦK6;=j G||1L,;dGоvVΤ&ǃ `Fc]? o+mm#s2s#|3eXa튽[W NrYࢽK\؄wޟׯ9[&+fS?ͧq.5(W{$zq_Vf# Ap;3Ȉ,3`缯˷{yU) +_dyΏg>\1?uK5[Ա^}v?ʼn} -}sos_s% Ϛ+aLׅb tVkUm9f,Y`1_yEM?-uzEvo^ P,t}@Xu>⑤٢|N'`bMrGZŁ\ -] 1F|N;u\HS{5-4{Lakh+rOsˑR#p,qG}.pclj%<DeAy%22UOx`kmRO5B=+dD\c.p-t8wZ?kZ Hn}w?i3M_g\X:P\u|Y:q[뿕m M553AV/"j5rk^L/Yaҏ>ngR/?/'vHM?Svjs+4~?glܜ JX]085Ng/2jiJ_(H]@qSGAֆ-KZKs_lboNL-1O.Oyjq|{bԞ05ɚ0U V]s9)s/XNyy^ZZεyp>z; {-@?uv ;'h콞I1rȤc^\,Y皿~)]/EYb/]X{t o_(9w]Wm"q oUvɁ?1qIMp>HiwM#;=1n{>Y7|{l׷M>NOYNݱ>}>o{6};?i-t;WFݵWKQ>m \N= `xAɀ~XwϥsI뾭昽q?Pԅ|{ux2V>&5t\Û{3a#p9Lo 8$~;g#58FxV -ݓ^3mB95~5xώDx=2a'ކ7kt5|l>__W> _u _Zr3|h$|~+|q3F'Ffjnwwa۝y ,/􏇣^;߁OÇ;߾=aga:3EsmM~^r 1ϰ5nsu'ms7F]شf3SKr:X,pdUV\>u!}ѾQ r?pw}ɱmlݽOe"<*=}:'&9i#UWax9f7u{1>kvt{c^m؞ O[YGڞ|lgSdxdԺmNaAǘ{aSO(0va6E蜐|{"/eyn۽{j ^bo-<柲AA~2E=YV (n -GOS K?7{W?m[=Q }>Rn`kC_=9g2|T|6l#97fn36 }V &Ya*'i$LNogsc|lSjacyu%!9g׉/ynp9.~a`b^K0>q|:]kǍ:4[L^5{ڮ1rךt~pg,oX"X;x - Η HGӌnWM]h9oޖӹׅα q/o/_1AcYu%s<>o2$83EV`S+͞|bqvk`ҟ>Z-ܥy m}}g_.K55j,$-a ;r(-u:?͋>Nh }ZuIGٟo/ς;l{*> ~73\2= }khS,R|5ռPK'gk`ՓO 0×/:B L0F_b}𤑣lW&qك6e罯ϛUU]{_gtCJt2(⊢#0`3$H.wx۳O񏼑Cy]/3Ӗ oհl'4v-"[PcF4z=A#M1j \ 87F˅FƿcJ]j^7[<DŽ&cy=Iwx pLw5-m1ZRr/6k5ظ<^%O-{h#0D+^Zђ;*]lGF`Kw]mu;4/m+>Z屰u*-<%wʴx^tU}VxHІmeܪW@?2o7vpvBCCO"#v->>:v# Y+w?:*cv:op:snk/>FaZgC]z|Cgq{i׶k<:7ssX橋<6I1z9>_p=kƱ ele-t^Y5lg{46+DG4.ק鮻@b(ow^'Ӳ}gsn)/%h>R[oϋ6|f-uφ Իr2/>|N87?磫* -EO7,}do}5u5{d -O7u[ ?~@F|3 ;9C?}]ŶOu>_(K7X̿.}{ɏcx]霡ͶoQ&xlQj{nImh/x$mxF x:n7X4?K:pi4nә{NyK=tkq(8JtM{<}p^g[\#~Oֶw{t]EZo?=qeYsg,q7Mytד4 讗ry6@^ cEݍ=+%MtmvQwH?q:g׷mbIk>f&?s(_U주- uKޢCy؈DV+aEj+!#y}|8[y%>2Q{mOwS|y=q֢L&e(qa ~wE,_-ףw5z/6v=g-1"|ߥT?͆у85SXSdf]h!3$*4/y籰(Ö縼yEZuNߖTbEdiM:LZF|967{/Xjm#Y"m\kS2隣ks-:->oC=ڵ|7)J`{Zہ uyzC~a`[Hl1n mA9F]Q:1 pA[Rrurh C?kˍn*7{V<^Q:~jZ=<eR#)}Bvjܿ|e&=V[*+6`]akoX|k`[jV및y0'lEnsZ0ư-+VGǠm:̇>:rM.J^n9u^m9aX8>L봏0u~ϱQ-p8f9v#Vsu; -l9ϢkEئge5a|_lu.wqM}AǪh84[u};jTs':zڜkX-'xYiuymy`tR]muBҞB ]ס|gM<[a^i7}oQ뻥[۽/bF:.ukiVh>|k"1ϲ쇬g/[]"Kh2K'MO˔d|PWƿ_ lK@=sTblWz]0y޶([#2h+\<:']S7{="VXՆk@?lQ_aU>?u_ޯ꼦ނ^v 59{t8X/hR/~O`sDATꧡQmKH; 0mG_nI=І9QvѦ?a}~̋up8G>_m#<7u9&mQN|Z i<auζkivCsN= ([cx[_>|n%Ao&foN-ɔi8c;r%$a60@~Xd[ZXkȥ H=Ɓ!4p=r ӵzՙDczsҵkסX5s-JӭyZ ywͩO8o7=8ݙ>`v1qoU;(:ϵy`tnoq^qsۑa8X!ڦ$(}"[69u#bߵ|n/'V O y|p-.N#xwajG |>XrM=w#[=W+:uXa\sZSX>2#z`:z_!X*Q~F/]agg߮6WokGs6~wWzn~?q9.L Kt@7ZogpD֤p;MwfeZsV7]a{E{Mo3U{LVfh9{whU}~,n6ߞsr`SǑQY86x/[G;?XGro<ȿYbB>U!߳[|/r346ݤ:t8PuПP΃|ZsC6;cG,S,i7:$p 8Å,Q~#xOM\s_KGzmvo ->8iroam|a:{==r!^Wk<[|ۅg&M{w7M ~([i_fBEap m7C>3a~ >:n*2xNc.c`~^#,y+T.mzl EZcۊsy3R P ǀzvq\.D-޷b .ߗ۰ 6[WdmqH; p$zq ,E*RہYo .9~`rK1"G 4Hb9#9]b"<ϱ;LP ;W}>t]"X wW o6\Ú<eÞ&7hk Yt_rjGt b몆߁bK^j`|Fs8a~]>duSa]0Qssś:eBW>Z3c jv7.88^5ls?;5a[m|e+n6<ܖoȿe3o\a?%L/Y~?.Q}|xg?}` 6X}Uad!~WOXϡy>G偘WyG6Z#>p>0?90e{I98a}]\2U| 9/spDpkwj=zq5&b<[xe0niB0?մJ?AW4w`sZd/0_KZx׭c _7D]\8?p@}0=8d[RW~c`-6}}҆hOI;1Cf6Kl`4whK sy9.\pZ=R>=bR4<0'a-"Gb4}7Kum8GWv' 0LS?xΛI+˶&ЌQ)BV`J&ehNYxj a VƇ~:1:@N-*},F~+1x|q;# nhhi >ow,͸ಇroi%o3Oi?p6}`7]5yp<o}fZږc<ca\T?[[l0v oߏ0ߒ5~g ׿g1:i =/~O~vUG?Cm_=NBf?D瑟/qqyoGCO^g__a%:|N=3Ү{hs6:nV3ge5ڂOx _;u̔u?'>~@"-˴Ѣd|e~WDw:@pAԡm o}@gnb@/Qcn v3mCZXO愮Ô ۄe[h6ܖ+>0@ -ڀ+4[~`|oS Pi tMt{yېfu^ :?K[σލa{\g.xAV1]55}Fv9' ,JOx\B31.K%Acr=4׻K*-{D#-nآ}X>KHPy:\O,g1Av@QxO>̚'`- @3lkj^uEm-azeQWnpIơD7lnOY@0?'Dz>8bc9!avVwmGEXjVE&ntG4|YzAp?ko:4GľZxalќ<ϩ̓6N8y9>g4tMu0.Ei/u.mf Q):)3*ӵ;~_d̸Y$Ρ+F=\'4pauy˶Y\"8p4`V?g`ؿnn9ؙhq} |f:Q-qP.B2a:p~.A;61:ykqc.|r.`Ψ#n]{,- -"ڠkwC4q?R׹,V6gi`떖,Z \\jߗ+X"Xt/+4y S, bMM){cQ.xF|Pz#T+^֩2x]xx`w,4_h9q#aou00l-.Vg-wEql2`vU}FZ T}.i LYu|0a)s@kO0-Q:4c--?붘0@,_1a#*jB_Bֶl9ȨhP^X? n -uW`78DKM,0gpXXܶ͟48f=k~)ɩ/j^u>z?( LnK)}.N}KS=u S~Cǁa.YlW~jUzlkAʞ[s3%%gW5|v(1a+_Svmϰ/2Ai?;>ȼe:O 8l[8b?i44 -K6?)S-h=mSޢ]u)S^eN }B]!tI3Þ)yg7N6&_ۙ"=`[>jGIN[/gxz3ߡ~z?MwhR6e:{< -OF'p :šDn75}@Ƚ/};׼cF'|:Fz8Cn:ϧ)g6=Z10cr?47Eh1y; }J|n6$fUw'="~&@w#P~a,X`N9^T?}K [7ڿM ?Cw/U_5c/l24|uT(@hS}>#VKXV˱0TUxl^ji|e|UXރLY30tYmX.G\!ہ"t×?_ZvhXuwL0xR>!2ݖ+mU -smAehh EKW()ӹNU5k?Ov %8e |PO8T X7jtkYк]XO /C\ZE} -/оA}G߅B%-mbA[zA[y9yYNZ1:|o|Q}}rKymiO|r0\%i?a/h+8*xg^O4q\m|m(>f}&KXm3`|ͽh5J]# Y ?wMc\1l.dF'[uw(>zj^\O*?Dz6S͟rs?~_f|~}Xc Gko4E- X`}SӧzeN])SF`I OW ߰C__V~<n|Xy!g z' aX蓫ZwXxk4uh7F0J>O4n:XWC5ޭƸӒ}5ik1M:!~?6Wu} ÜX׸a_1MC![SX;p1+Ua@C Ƽ`x n 8MÝF.'OODo?dkfeh4-|n -%azw S_e|C;AWnXj&L\?p -9ٟNxO1~mIG?B}}=aڱNkޟis@SYnl[6o$Ib=/sg\e·_-z[>_?B/3|oڂ1/5c;_-:O -y>5G!zt4'(2=I?3!ڋ>m,1& ta:ྻ^{`z?0> ӓ nu(c\pB5pʓ7 ӻёXfe(=nXV? dm}j<)J8YNYqY6.9e{כ -p#6d'ed MJ4*}=KqhJ⓫o>f9 Ӫ`hwģ-?z-C~|M _`;-mp׿>niږZ2V/Kٶ/ߛ o?Vf. ohB%_TDuus&~ -Ã-~w]D_p83OxZޟM0~6[%&(?0"ڻ->Jw/ ?G}}6\}09' jF?- -R||kˢ߃<,U>[|y%VMŻiGA]Awވh,L8_gFaDD_0WX7زa$)^׋`] x;쎉=m - eh={aί5h|zV^ ϳ^h,:b =z?U[R=u|h<@7y.|E[ +:ZKP9k-!p%N xSg#}),^Scr=1[aF5į8 }:g:ek(4YǑ sS}>݂#ϯrD?S,;j_:w?p?OU{ݙy6 -~V:p<+<Y _^3A+-~?Fw}zqu n?Zl_ D+r rF2/c%qq|ۏO|'`-gs_Bg%V?14nYJ # ъChd;> ]~`lxm r2h}p^]j">ݯ$KW(RLNȂ!x{ - Lba 1D1CV2z7׽迫i _^o{=lzo>'SSs2>=9c#F7[ɟL_?o9؀<6#lA(`Yo02\W·Ty;K~9[`05!$nhncXUK όq56XHly.~&m6}q lWkyQ>8\4|nK oxJL | ZU_ݎ'\-`ғ\5}'0|wo1d^0e -Z̭O׃N?lWc=?=̡ C#Dn8s6aoLc9a|"qmx5';tr:gX^jq;5~>^io a]> u3TeivjqeM?nOXKU} 5-kDr̵{ߡEWb4zhڕ.˷pSIse馧@73>T1VRCS&3At_~9屨W_ϷhBw#+ϗiXlYZtim=6dz ׭L[ͫ.ڻkg#j}6D?0C^U]-; a.8ϖE^"~m߾c\tG2=oēh7u[ Ӵ~azYzxΣߡכ(-zcɿWmD@ߥDžw''ߤt2ELS_'(9: ~wAǁ?,EzޥGoy]O|>vÃ/M:L}wx<ח'1=:þ]:KGz%t kFr8B}>Ct}@P "rműRp^6o^jD|J7lQbUhְP+Jfn5N}5_OZZ?p@!;-v`A 1{˝xחf Me 2|e?|j;MKPArbhҖ"`mobGoePU`[t#D>!GFjr߷&[q 9 -3ܿ,kzDsLŁ{me5@h?=c6Kes?`>{`ye0@o Fi%قa %U}w`s܎Jw]X} Ơ(@G]VY`)+~ xy=k}E.x݅!ti&VV%&+,w9=Ubbw3eZ)i1[WVuٮ@|K6Vd*}Vb``>],r -+ި'$6~аG ?![QoB߇-bB7i -[u&ƠR7}5e>~   /Dʽ1r_k҅7R7u$Mwc$n|Zy b {>>!f=Z(QRo/vK1M=_c4~r@K>v&\Xc ! J\%~Jc[f _<z9':O9~Bӽ'Pu~j Tf;vS͡ }aL0=ȾVpCoy7 Y:~gŪC4b]w]<.vM4ymgi'_/Y'ׅux9h,?c,ϑwÙCY0D\%>~2}bN>_ y?q2ʹx߲LK!f#`+\Qy#s9is6K4Ԙ{`kںzc":oJwHE-X!`Lg?Oj.P+ЬI5/we}`U1el^xӯW{s=僘 JW<ܢC,=| 'u|,m6 l|Z,އz |Y%bh ۚsq Ӳ?eڿ~oϥ9Aħ{y:5~=My 8n >Qoͩ3=1^N?eSǯDžqnZ04ك |^끧iL?g\eo\zNݟis=sargL \P5 3//NN46Lf mrE+jI5kM6v5-&ѴYzD&|̺rg/ `Ys{l_[i=;zlXe4_x}Uӡ<1i',wVΧsb_}u>~zLs`n=62/c|hZ:7:<1ᗻp\V΍mv ;w K㋏ NvN͟ji\@'q1Z|vA;0>*8`?IZ1 :YlH0W5EN|~+`&9iKZ9}iL@ܿXrm#<Os88{uz˕<&w^{7nKo$3}tU|rh5p[1$߲jeͱk9g3М<>+?PЅcHnXBl :ON(-57B!:gq+tA=(| ZJ 0Qz5+>sz.x_IgZ|}4E?JW{t<(FDgl2_4e:MIq 㟄Ji[=:}\}Egɯa-:~ǽM{?־M!^gu:Z3oЉUҫoУدctT8$=H%s>lYtp'Yp}7?I 8=Ag o r/8=ݢWJwmFϊw P}5_38vxi'~!y%P᫛4~F'y:u|S//mLLۆΆKnӳX` 0gs>0>o[[A|n$V ~c`(Ka{>-v9C|>tuk1XCO4|`vv$V`3j{aLjg"x:X^:0;$5b*w'=`U_he7O+בWz ~;#.c%y\:p; - ^'?1!Uheӕ\Ebgס:,9<6Coo>ԭl>#my 16'(|ℨZ}`]ǫI5/*f퇤쯷E  D9A^q,] 8u͎!(&gp]~T͞95Of4֡@~[LlN~B F%/!`uW}+,})e0lS0ԢL^C+3]nv's"6=2E_wMX5z~텟czOT+>nJhy~ *8˹d߄뙘~PiA30&|,=`/zNӧz;ji|@S,Yp?g1 t|[7݀W_Xq//D:sl2)q5X4g7B`me{PutX>|9h='9Aqu^ߡAa{ 5v 749{uQ6wnykφ l9U0knX<BY׼[AwL}jq4Nj1i'O WS}j't*:r;P99&^5gp>6 {ʕapf”)xGor*?|ݵݦr>m4 ?w<yXT!jS}OR7c/JMm:v#7:ޡ/|г7e:2I3g/.g4)zy@]z%.E(8D'/ѣ[7t,&DOK?_k F_Sv&k*V*F'o~ xMtCGq->((K!ESEȐh}Z,|A'

8юzWD,@08 VgIAvD #ewr#r3yyM!o}u:N kX&GLN` } ַh,'jܽl0@9s O}`xۃo@|&"hy ryVyD|wqG - eEhMt~}"׃ B XbZy@X |~`֪Ox'$[?V2in`^w',x"<G5vņ\6LyĨa]!mzCe#`G<ÚOV`9b7ehqQV=/+~· F|f5ƾ95֩rZiYc*8 M^yF1J^nBChЯzPOԘ̙oX|!Ai?/sy\Ob[Et3'P|W8m~{ >`f8t<Y"'L^v>jl,ap~[˧y -(p Z>7zH *tm.[7\48}b-c;+uK?( s/:oAql_~?յFlݞ?ܾMA>XW߅"&`R/uЍx?G٫|\?@ar}(-8(k7 P~5v_SULON_eNVhkO~u(\ZAV>5 f6Nv^= Q'`P-`5>;~yz{k'կxş몥8Cs8}~%`V إ+TyEU})SMj1W^OpS 5KƇ{i.^-iN^Z18_9`pbG= 1T 猭7x h ,-L#E(nQ׮s4z!߆ɋ"S&~VdjDSˈ`vm>;6:a;v7*Ә-$G76EnO?Sp()¾V`yKROkCo_Y=En/P[kʭ EcVw/Ps{)29ay=H]oڼ1mʚ7Ip@CC\3ɥ)MwӭpOʱ*ExMe <. \ThY؞Djt`sQ&_ rJ>hh@)۳4ȆE4/-rn{y>YΣe:~ލ锿w")Z$e*S?I̿N-9= -tѳ_Yt^ ->GO(6=L~fJOoquz -ޠӏ}>GOs๾Nw&-_OZ^yޣWg i:ޢGoIMszi:q!k$:y?Cgӱ4y: -|N~yΓnte?IK_Au~ޢFi8\:8Dv{盢mG2Vz%;HO2a;5:+dDxE=LW[xD2}|-?a>iamq}r.iUdz _fB+yw m= 43Ư|SNgs6~F-A*S=ߔ4P5Nn ay,FKm'zQ?#S_p}ǫ<|~V84?1O}za)=0~ZNXz1Lq{<?`= p5_C9#Ms:MC ȻkbrX9%Vߢɧ@>EC_{` uzY{ Vx9?Ze.Orkb 0W݉OQF[oK`Z~v?}  6 epAcEa tA'|4 Ҩ ۼ ľ'}`HDG5Kd3fD}ц2t6AΨ,KC  P[m DZg<#R"TX\=:U]ٞk<@4}N2D:-&a~uk3~{CRy;46 1ZV.:5O|zL:/Y/UÅN5}b?ja9,651Z}MLyqPX~n,'|-pCg|}ajsSRJQ}`U#{k )#nWG\QU bN'NPu~|N/(C%_a;r;?p=]zþ_8pHXok5%WSۇ~1ۢY[[;Py2@(\)J}WߗvJԔ)T~y=$^+`W-my|L^fZ@R;mwjtbMcU9ՐhnƄM6Zw0qOٛj^Uݝ3dž5q)*sAi>e9x/NӶY[ihOts G-I[ӇT߄#"c6·+ a`uNZns%)_sk]7tCu^]N"Sσ{%r+qjP1L$T?U@``Z\sB(wkYZB4ޞS秱=ehFP}5!i.GǷnӃ#:Ei^(2'N`hU?>P޾&-3!Q'E3#٘;9#-x{莧@kzv¶o-߯Xٟnp]na  J@,0@?/8՞Ч[=^Ì|Am+/XC&3tyՁ(~׆!߁B,ĎE;Jl?̩q{xK>yn: -i~'>~&7(} EIO2УE:LFIzz&I/'am}F߳8hߢK6?M_GmDt~tO)'_oi˱q=: {?rt$}q>Cߧ1/t_製@S_~dox_k|o'i7{6-zx~ 6'ŏN-M -vU5K/yoC'Iuqbr =?g1P,$aD>gw8#=4/I? ^hrfoAD1j^e{z?X ݠ *?2)E?-[>``=fh/GlZ!&~9~[Y)I̾-tPbJ>ߚF?.k0xp+ YzM^h~1^^?2ELifUz4|/q܈[Qv]s "$h~ 7y=Y;wTקW|Pu  bAQsw {:pAnqh*-1O5~`T] `ETGWr[-={E'uwha hsO~z3H7C|U@ cЦ\&c&}8+'h!>nAhokq>x &m.ZaŨ}m`j.z ;LlUWE [( -eʠ -(F7lJ"8ҌFZI5Elv7eŠBL(k"vbvvϞ{5;7o/zp{2{c<6)AC D >k -G"ti<7ú!_v7soU}2@ ؟;`]{D50*s6ka[ qD=FЮsF[Xk"WrY+qoE⣲?lrV 8b٬]h:MsEk?h Z}r|& 6,'(R/muڄݰ=!j3AROY? /-S~M`T8<a= KOaϦ#6c#0-BKhep:l@vm԰W q~Qj6'/ızO2?ex񃏸. 7`_00ul,62t;]yqG?p=i_hܺ@FV7r{k'}.*o mL9>kJFDv \`pBP7wr:]~9^-Y2\09|MM?6 #ڃ[k2by;yc|5$X&WwWWu[u|]mbۨO ]z@̫*ZK[zQȓ;R2.9w]L7N7 .Z]ݜ^}`sF46s[hW6cch yY9R~s5sP#2U/3x]Ctq+Z tmU~3ηyK.uhc/]rr#{4K':ؖq~h>'阿@c 펖D*ܜO򁧻Gjq{S 4Fq^7d҃ܞi{y"_\3D-h95]rz1]tqm.z$+xf\BOܗA "'A`QZ2_n|]C7h.ih~7Ht=kh9]MH+ŧZ[)=K7/vPǻt3-ߛzV/Z+z6*ww]; -] -]W~+t%-23*MB w:Zq]Ɏ - >ڼ_POڟcE&p7nr@.5 M4~6 |se)c:Yl8teh? l~ oD2[O5}X?[vt:AlJJCS/n&Y0~VhdgQB'}v\ψCh {x~OE7 DeL T |aqtL%`t 95WY[˧M[f{Sf('4L1" -*F 軯 /I50>==ezUN颁5nnuuw;;Dur(S١=WMnUWhE#طn>+MA",?K7ySoײ)b]ulԮfaz~f'm&4Fs˵lm~uַ9?h -ްax~wzoj}C൶4OIa Y^?l^6P~WL)hBX` ۡ~`]D uۼP _Ѳe~E9!fY!f?pf9k~Fu -;_덋wX!أzΰFHm-=uy r:߯"dK|-M+~fǞ3Y#)3ksBC@CL4tCs7^Uۧ?F j;Nn~Tw/ 9N# tQaeӜh`L 5mM +,nۋ?asN5159!_'xLlRn-ڂ|N2mFw?]v etk|;A[<H] }惸&C9JǛ5AS8չ394C92<*w\ϭS?~اOkgR#|C0.Z;ZBhھ|'h$߬5 gk驷Vy2Py`\3`.|nо@m VC7oιy`S6c$k@-.&\ o\3yǡxB߼tlO7i 便}=2}M -<JK1G>`Y7LU)\:+`~]j_#m9:(*tU\XAo}rz&9W^ 3 4u̐䃘'!:@~;&  |g=% JdP/C{Ik0 -sE/^~a'3Y5!F?~Zj(j0Mtj{.y)}t;[nTޠ³<mdަ;_ѭԛt#.]~nrWwLLq_5z8̯wNKFeHkWRe>ߗy=Yz}/K@~w%dzVu~_ǎݥOy}ﻻv@W۹u5¯{\5~А_xW;Gzv̙ zbx~aW}Ϯ8ދT=p[㑒c.?0`&S5l9Z؞`k @w$ -_X|đS=wloL5+XXם*_5G:ϫa|`{4_,|0]͌Jun> ~`d,Xmނ 1`~X5Ul?,a -= ;t)#\Nw@GWZ,L_*=[4y'E ҃9׫?o]へ~a[9![>|!iX XB<c!dza#(~d s1XE ,?6g}:U7 -"/Ae;\H&+4Qa} 4br@Pӯ_L`eND3TgOZhԻ5 Qh}`7~O"ƨVнfA'9qCSn!zYV0[SƗr|@SϯV6Py;[ĭ izV 3:]O{/lnD)WLq֛k[9.gx j5z~Յ_iXFu:0(uoAm*|^6Q=OϡZM>) oE]?g)}+m'y'^_w -Nbٟx[WnnA!4z4FEWr}İ@W>L_S_ <^4)c2zœ}}m6*VCX5$z=wQ1(Аj5}Q}8koNYoh\_ sg@8 (ahn}R͗m|h՝iև\nΎ_{@}~~xok|%atm>xs:$_8($uVהpkZR4ܐ?ofD>nuGRvSm{Fe6Ƒzߍ= V`Zd<iHkO׻j@>Qxp1AԽcƏ#_#TLm/X*__l?\$l俿K?}D- X jBmu{ڷƸg]P- OاԢqgz7vј4^0:pk}=xk] ZD8sA;4>x>/5'ߞaߔŁ}n+ɲr8rfhSf\k.۳->#hl߬> D}UDO/DtlL <"8ecL ߪ&Н}ZKO9!;.Z'^n>6#j-D6ZOyj ՇnH3O5j>M_^8MX}'f={XC.Y0hGtfI] 'k|l,E >0 rKiL/j#7[ DǑִ}B A/2K#O4$g"MgqIyo'qZxYX_JCC4a } < t+GSN:TKzo=Vޤ=/r%Z+JW|;ޢ[i#*nf;|_ ;]˿kޡ dަWi5zV2/Ҥ{t)<]mg2?ޤk]/õW/h ~c/ -~nd~yz6/jiZ r_n%C$^s@秴1o4OhWbХ%kd14yi4.N HB?1c_h9UZ }B?'J o}_Jkth-AKmtiuOJטϖ:kO;D3S:_oiipj^Nz>~~εQ_7? XN%*t"fDw*Q=a_NjjYZ?.%Kj'rDi:o5xr=>m}ZvВf[?Mkinsz=tCk,J}Ok*T49!FVzm@4d_V!Ž:: U߼ ]^`gU9y~VQtЉ,v3E>稩&xG2R0~'|4.,JO[aHS5:Uig5|5Z( +zúLWz?,Ϡ4]5:,ޙp a(Klh%q4t>y4:[66U?/\N \5$ۅhM '~fxdJ9Uoڀd %l_w?@a=|7r$A\oiF!> 4wh,0+1(=Hp DCDM9">@=3Vnm[񵊉.l28ZŶ:dkb2r>Ã>Ntz-A<vl{w}_vmő9 "45JOk͟iZ0`􄒿dji+h.G_5 % #Dž!'i3㤍? h7u9*%4{ ?G>p9ouk^kW6Ƀ,,^^8-]ݑi1*۽fۆsQNxqOfJ/4X_uS/8_U?$Ba[LSff2*o׵ΕG󏴺pꑉq ~9ʹ8`pV&~$_LОY7&ֿ;`ݠbdx8Y80J9,yi6yOrCwaot:@XY e'0|=0.}ûc״ް>ڜLPzswlzoy[3m>$ۃRX#[:}aw_Bx޾JX^sFp9zyI}ݙp#I|>k!Cz}s9-(#tSfxIQ~v5we:MQ3{m&j6`~)Sz~_iއթnpkz *۪T?Oۚy}UjfC m%ZJML_?N*|6۪<mTo0 4ZGZ64Iu:as?r|.n]ӭA'ݜR$csчΊ ]>`GNz4߷c)ZB J;x%9LK#{a=HV'sC'u.e[hCX`[*4Bw*Rt E<7x EaoeqoiK7d :ôX9@'i?6Jt 3`r < D_o3rctkϙ-:(3C!.<o.*<쑆 ] VSGB[|:?Jx/QN7fv_6:+ -G??ծ;_Ft=}y ӇޣG]봞{ѵ"ɿIu"5nf_GޢWjߢ7xzn6hG׻ߤ+|?,5zK?ǫ?/w5 /X}z]iUZzYtWRyKnWyZHem>3ty>st)%r'|}H Еst1 ?O7y-~,BM|~?C?g|ͿgI~7͇=ISi> D?͟G9=1Bfef}A7tc 2ǟKaZ&~D_>yV75oZ u)Oy"E{E8 D:?; t8I~.ضeio8CgRmVdwP_D(}Yy2t, -OoLO&1.Y:r{0㖡Ñ.iǓ|<P^8>d.{h9˟5纒ޮ et of(T>4,czo!b ^Mzf擆A.@NO"%¯;!(3:P;B0En YTt?ur|nY6~stG'h:Hy3R GjN`kׯ'˓~D*3Rc5 Ń6WPy A?.>^ih=>/$ m^01}hqY彡ٗ/@,}Y8<X"rN4{iڂ{IX?0+BFB1 y{3Qj -!)b^8a+ts<IiVlKFh<|ܰp<Նh,ܯpCprL@6/ Oz=JfTN冰CքLU#hj \~_ES&,n:pJaY`eоI0x=|luW(.j<¿jc -De`*1Kdi)-5Es5,Ivp20n~'N-QBChY0_&zu7{wc'Eoc@*isϕ5o?;/y3î+>i<tyÆ&34W6)qh ^zvSn'˶`,o{!QʺjvU;ކd Ls~FHvFWul}1`>xw\_n6k `7ϫGWs՚ߡ_ vU5;::ǫ jzZO3<A!ek5@g}v>>ernkS=I>W-:B73yO>W‡}&Ts=ǿ- {:{sӚ|[ܞ_*TCeZoϝ۸Sjqj\C&so^>z9Ç}9 -=ZRp4As6H'Bˏ\_)z?| mE+?[w&#&]+A~Cwzަy˼EWt;HAw>2KYy^qo$!7-C-h;_|[ -/d~a=x/KG.-VS OCW}˿I ޟZyxݥ d˴__N>CKt)-~oiC:m:]|ot46<훴=>i6 |˝ߦsnVL!Hgea}'1yZ [ًT{ g 7Mr=xv^C3ܴfxHeg2Xh@wI?5(; ڷyh)ßgRO['Rq2AY=Ϋx%=Bmf3PK?M1$|yD)ө; IVBW0)~. ϶*oߏI~o28<~^]C26?o.SɂpK>7_/x2-Ł)S? (hQyeC=+m\Ou~3AwS]ϭq'S֝GLE-`m&!J@GC eh'lt_C;_0vKǒi]姡6as|5Fje~4:80;p>=L7̿*+ۍ~aiƀ -0_n@FHt5 QkRIL>]&5dӒ0b<13 &SGQW=kBCkSEX(W еK^pFkD_Ud)c5ǘb}oy#.i4&oeT&NJ=e3_9.Χ@ù]Vz}!#:^ K~|~Va|~=u5oXƖ[C+6NWmo~i -ZmO?;p+S+E>P[L?A,fI,aOrMW a7x=a`y]gEl2>db,2L7*V<^.' z|Rٽ[~uxtm&غ]u6}Q*ӫX?.xC)𤖞 iJR`[#y>㒉h?x~^}\g~\h~%EC-TGjW2B|[WD-Z t( }v!w8t1h,sӦܮPOuwe86? 4D!S8`kb%Z}j0 _傲QK.nr>Tiy{X4R#:T)mP |~]-c_B<{wYnnzpNy.ou}B:hhtnܵ9!:އ0:ƒL^NX ygٶ(m9E:x5|h`uZCez n|N)Sڇ贏}zt*,\wr>e]:4|^eSQ:Bˮ\ -*#l4xU:ޘ=<\-ot A;*׶8^_ahv\xP~OIcsD>Fw%iu+|/KGUӧq+s -\=Ou:kD[힠+Qjz>Bx[r?<4=?V:dY RvF r*TwS`}gC5:L'_쨰?d&T(/jך<fhF&lJ9ߓ~vaQpv ]8G'79x=i&m2O>kHm-|߶鼷$O~j2~A/ˢHx=ȄXcY^?̿NDNѮ铥Hg~MҿsÃKWͼCߧ;՟ӵ>*F7ovgt:(&F=z(KZGW;_[}}.Ok]{Ǿ)Z;6ynu۴ɗ~x2]C|6_R9;h}Sz&]kG{VwVKh% v`~/ujyZN<]?|^bOrB;1M{M3ot4 f"͟GߠBS_B/i*:&_w#/J_i9:M參Uz>d/WOwߥޟE_=;ZmjqDN7OXdB~o&R{gicM;PlG,h2Y $8^Dڋt4YwsOX56`=<w4-üt(Gb >hNst_\ -]QwJ˙Zɡ_MKt)i2?\:-ZX\PB4GX`,-c,z|V_LhAڂZ8j  6xlX8aj|S/D7W[c`|#aY]ԩg+jsPv։ÿ12C|_Z=p:AC`h`u|߁:~Aau`y+7y7(}30 z0@eM JZ]V$ZkrMFU8bC7Fk /~{ 1wy4xW|M>=z|m|aa - j0NEb!X*ﻀ Ay-F+A/,!~6FF'ST}3gHtEw|l>hCH- |Nټ 3u 4"fY($4]jB ?dX8tp*BgtFh^FujJnQt1@"˪+ٚUfZAsXWWib:63xWiz{ C7dr 5;NZ}TxEFǞ6bY@&7xO~QYFv?".&q-tݗšL}{FcEWgzR Hnu҄ >]qA(^bWV.P=3Vp6`XWxM2v6%ڷ1ڋߪ|<4S/" =FG箭:?55t_ g3* >3͝':$27ew>_;\O/nR=ܿ7)GwXڧ)O׭S}6w~ ؟ b;(Pu f ޷Q~o{rtQ|񺪦5 OxhSf>YF5t? Ff*ɧ@pC#Y aa3yld-xf zV`ٛ8[[\Ruم5'7菏ӹ E]=fMӂews_Y;#Dj#u{]}sBUE/f1Fဿ36CiH.r?p@h D,!|^+t} Pٟx:<12ry C.8ڑ`^} tu`mP#דl@&yA P7i/DyN}ۺ͟a/YuGNݻw)U> 黎@;߳nN3dO{o/.?ؾ.vH/}1 i%Kt#\daL'@W%}t;t'?ЍJ Vx>{HCWv-]~M7v=z.*ܣ[t#>Ht=Z|K4`~bF˽MyzN5*|]_W_땟ӝ{te~ / |j|/>E뙟ҭwZZ?k?Nx~_}/rZN-}BI3<\/|5Z*?ϼsE~n_OӡO>׷i) O1sLj>JDh59T!<`ٟ>a|h ,HzL11/1?X\? ַ/Ya4.BR#p 1BެAY} MsP H(_F"2v_k4mPrQy. oHR;En3/BOZ[@oUƈM[AkH31:>C^)|ָe~㏕:yA?m^hК2λ<̃0@4h+bׅ_?L1uU[N?`Y ڴ-'~tz18}}Fmu}v ^ks -B3Mkaxu̞cT\ _HC\"c:bl_ 0C ->ހ|pmTg -R_Gu۶QTAHf,k=ؗ>?CV {40AVe¸?>cY "cu#pJ (}`bi4|\<~*6}tZp?O)kI -{3úXfwJ1&$Yۚmvʧ|Q7)st7pA-cִ֠]SO4z}j=8Uw7+x ɰ @Ψ\ 1ȿw$#$I|mJ~Fp2;* /w|C#,cŻ bgj _12;`4Q}x- tk cvޕǎ]7>2Ŀ ;i`GmӧOS`f j?V~uDI:~;{ -9MѽH?hf9!?d֪~U֧:>7sgzLН 7~&=4#lr{-3TY$.ݟ mΆ}ﻏOIѩzS{n zNOw؎Ln^Ouz-V6`7/n Н3>mpəXhCjϫ OzotN8N\^3}Uk*s{]Qu} U|;a2,eW7oy ޴y龥 ":p3Tgw뮳F1|ah*+tp7'hڭvo$6O@g^)S!y}ѭAsV&qv~:c6c[l,/]O<_5X&PSc/Bh>>6G2}òpAw 0<yazNo/C_=;x~:k M y~c4ɥ%d hr~i-p@䃬'ޡ諴=:~Dgh[=KWyVڹGkc~~şߤO{Ǐ4&v=EJsѯɓ5M$o1 Z -~&#+kt. }._3Oѩ迢Oӧޢ[{KGZK|܍эܧisuVjzBZ. -t0D#|GGicTE^g9WRLDgm^/ji -;/QvranS:qA:Z/wDZ, TBSoxߗ~0IL`r/X RvcKU]OWsôw~~_ O=š^EۏQ/gEpȎ~㾥g%_1(_ :\ g]^`q\`0@4></lgex{/mEW]o7x~F?#T. ;a~O %D6. W9CMC>{?Neva޶& Pߌ& Xz|;{ ^+RizDXXƙ|`at}g~Wm&E7 Sݟa*Z@T`~ݞ%IևKNuѯS:AG >? &/$7˼a{*7 -3c @Ўh5apLt=?2~y|[O05:b, #0ޚ KS~Xi SNrƃNBh#9!*5A/8hڌm(75T}6ؾ_O/$6A3 Yq`z녨>xqXV8wJcVDGHٞ%4|Dh>J-^Eh5FOhwBm~`Ի6Eֵ8l}_38a닊7hU>*rhe|W&b=|f<sx~~~Ygc\Iz|AD}L7'X2{y=9'\ al"6:~`X6N{OQj`GH꾻{jt#n& -+T NՋܓGpxx};ڕ}R<'!ZM4R.u:u{5 ]醷G~$dgLޱ֬dՉ@tD7ktwPm_.:Uǿw{@=@\(K"q<)szyx!TW)?}qcwM^ - ml[S^yٿzxZM݂b>̣֠ܵ8zz|)sR6(Q/p2C/Hݷ? .,cvwZϝY!ȳ 53@ )y{"XmwY1"jzxD;;rb쾚++sk#0YoײOoHM -w;\}t)1,^`؀y/AeS?bcA`7\Y?+4#X@CSAmM*Vx(>`4>|xV8AqړlazG:bs!O&w$'/' SHP]lS@'eGSw>AyAhO<l?,|wqh(;-@N>B^KMFD^uzAatpgWiL"/B^:ɿ WScË;*ݩtn_՗p==^%=;z7tgt)ߡ+oѣv4%O׳Э;"i]|ndަr;oWٷe?7oFִ5{F m-$~Rpt= -]M?Mѵi--JOZY|4/'stYz|Ğ)Gqh?7t46|Zi}WJ׷3|S_i4y:SZ<=>MH oWӼi9zO9%: :,u9]-Oi%G4 -WWK׋: е}t#; F}VJ8Ӊp&U|ǐʊmZOr@"TU|`l:kA -Cj>{ `Ho/2?,CZҼͥ$\|&5@!Z ?4 s{mƷd}藌 r~֋/_˹1!/9,Y/Bh/ X"AZ.&0%70&P7gt~2,Gd9S-T o4*Ӌ|ݡJD7C35;_4cz:G7jtǰ /uy}g:g -[D"{xȟ:}6M|j]@)ܻW!֟w2DӅ~ -Y7<6,o*W<%a||fGt WH<?xO9 p̩ >S\nfx۩W}n?ߵ]Щg9AI6Hi,om0࣡_?iXCAH4 -/T7 FplǍE)⠌ -뇶C>k ahm8¿~}b: s 0";D12jmj7lv(#`ް/ĸ_XO,Kkm_yfhUma,<\ -armn~iAC ˲hx x#Zw{yeml} {\. qUE"UZr΂VZMͿZM jvMm_=F/l 8:, Zoi˾~W9a]1AELuiQߒݲo}Y# xg˸?#M}|PxѨ2`|6y%'M8I B/>G@70NWDP`(IƇ^EyP/?U~nWd}9 ӏ&m! P1/\>yu?d]5^ۜ0Q4kX𳬮M"k[3}H ~=t4rskBp<6emzUdZƄl_{{$ oWV㧏N-ӉooLX䅧]u;lf''^ϗwx@GV?%omOx4_9x^c|]kcWWœ1l`w}(j -B(Lh\r}nމ /1\Jڬ8!bf 4z=p!5ah199ѡ>14xˉnb=]߂yM?͆l̫X55m#2TծѡYw1i}H u7~,:?Y ab7{v5I/5<( \ydυ6S^z(9+[-a,\/<AReZjERIK")zD{Qj{g͚koּ@"ƍ& *?} `L \wl=hP P=X Wxi+͟{wxҴEg9?W9"f(k /OREA^ RK@ǭWb﫧,M&K{Y*p dcgoMamr2:+5:J7di62@WoNft? ӷ Ct}tMS:!N5N5}A?g%iNAgX4foэ;~OT[:;:JDGt3ZJOu{c)w C$/hÇX.-$cѱ[t]~VjߧclK˵oy|߃Oщ _ -?g57x/DExċ4%M>JÑ=Bhn1뤥ƊV{L~'oy+7B wSt|BY糵L_n``jER/E -htg υ.Oo+?xAp̏~S}+[|24t -q S~ޟ-f;Ym ͦ S7//ͧo)km?2LpZbxl ^lH^n__,6 ~=o -$d`?cy^LB 1|]|&aSͤP94o}C82YZOK.q`}`` -xs+4A?d7|fs2y SfA8TgVD ڬ_'ӷzXA%ƉO&d#%~l߱n:o ~EjA\>x~G77?x|TÅ6ĘM6} M`*ˈ0}DM6]m0w8|~> 4܏X]pCϝb<WSw -e7ʿBD神p?^v2Pg(x;M t`~v5{j'ȿW>[^ s_,/|2'1o[uP~7և>q8^AShsy^hQC3[c8_n}ú0?H;rN\mX _FZ vFk(lc(18c0luQ1m˜T ͢ -ӗnoIq@m>h񼠵lk3Rg8oa沍bìuh更Vh|`&1o]V`,ZDƟϲEˇḁf.έ?K,<y*47 P5|J ?[cj Z/`UԀ,ކ5 %oyשzF~ >9lfx}#of&UTµGCŸ}cz&c﫬/-]ljA&,p .:ߌէ?> 1nOpf.S_@2t ^Ak#OJ؇%Cr}-GT_aM'X 8u,`7Sퟛ meEQ -[/$,6g{ۑa8JkmWRUC>;O$u;,4X4Q_|w+%]wMa䴬r_VsnUVjZ>*ܺixm`-<`:}[Cᆚ 2hGP9f7.Qc֟,cqE7uE3\}`~*rݚ;aW=ݖUhW5maFl^ad` YYvJ&Xo?TfӷjՌ^8Pr<l޶xѐwAS'O9 α >ߵ&畺ji5 _bm2Qw7~d/ȿ`Ir"Bst]a[OШZ~Erb歏-F6#*D+ltusk[6LW5}AgstS^}'iL{.w<_өWҟrqӏw|%W S }B'*d7}N+i9M~H+h16-ߡu-;gަ4xfxfo{5'Lp5 )ȻN :!-hU^5:ϥ?O%~,i2 <)YcGi4~?#Hagm]cѡmy] gbфi~t;]7Mg~_9C@::*|Nǒ5|WJ]٦ ,Ӊlm젹hozi&Zh/Eol|x͓fs>+\.l3Eo+S~C]5 s$z.Q<>O~7yY2Fi"&MTY8`~ 3`s?rudC/xe"Ky '4^>l};{s2kk.7wLd|Js?{! dyN/},ߍ[hsWxL/̓ "MtIl-V% xwԪDISuH|M6 S/ j'x9;eX#C,l+T>^'q`;&?9cR%xٞLw>o$&Z<D@~߮W} 4. ;Pu4Dxǃ/C>S=bZz j/Ч9 \휚3ZTNC>?ZqΒdH+¯a[tڐ0 4c2M ?k(uf]>~1o  D_0& R4?B<&F[cVtZO}ZOu{<< ;I-[B#swhϿ`x> -~h*񋮰+h8~jZGg -ˮ8!4`|ވ>xMMA]ʯt|-6:#3N}A(kxme`R 3ݯhO7 X׶cSc.U{x+,qυ* -8~Baa |9Z4/yxh,̱ihX_P\a'1dl4:Il Kg]^QeQ˭>M(Z[~v0+dV] 4l^Sy=Pj [cJeQnCB 8jɜ%~8 -5*{EKojǂBȉ&Jen|o`gA~U˞XPtv|*yx 4u2/5w#կ_Oi߃yzy9g|h5x?ט:9_P9"ˡe}jx(-ϟBGɳ|o-z7Z=Ggks:&ZOubY }o ^ݢ'2h 3.B"~mF?>!/%S^ -d>Cnvs\lѺU9X"}fqh=@za,kS^vegz%pN'\e9;^s2x-Sfzqh FP?.PꂵR;[Q'4k4^^9 nY=ޥhoX<=€ٚ~nf~`|cдޟ:>>nȩ; jr98[XjqC6IluXG~c;q,~`W0{h1)r: L2: vF;t<\5Zzj5|n: *S>"~.D̶9u>eUН*˓y6fsmCMEx3{Q@^xzh<LTw~XxtYOouk -ZC3~k}b>eh`lkJrN=KKsuHpYN #VaY꽝ݝ7 - Ddaxz^v*# =nX5~tc:Lgs_љ염{:Ӏ,O}ݲ_DC3:}N?z`u_ݸ_xWtO<''*7tMtw4N >oJJR-ԾEx;4{4}ҽCN~I3'h%6-zޥy|Kt-_ ϗPW?]~/A -_m^sFWex}V^sM'Ro2 x!m 27ZhƮ"?~҇19Mãg0)hP+σ\jMX_LTQcf;iDwe2+ٽ"nMC~6٧uАBE|djȟD;UC?}PE2;xn(7"y%::^~pk<Ǩs0*jx'>r}6n]V-z0A+kVs}/&o[}Ɠ ̌^/$, m,Q_,S?5w[#H m#yǶJ3D#ϣ{<sۼ>s~d@">+nŅ[܀OYm4,L.yT}t4]fz*TS [#2z* 7kX> - &jVQ[Mx?+xx]+rmPc9kj^x|M.lUSSW-?;ӓ%}|N56|]]Cx6tx~'jrLM_W zոas|{)O d9cbe!G_S?Y@ˇA*s?_7?_x3`ooi>4%A)T_0~·9uQk8/,]0lap<لa5PG6K,J<_o{P 𾵫^^ctC+&ExhVOYhh <^ޥF?c[]tCr9|V?G9͋RZXcr%_T1q{-!y0'ttz+JFVpC6'= :ƝLe{q~m?ף_K P|^ׇz}`{&cրі˓2Gtk e}D.0ᏅO{sO|ǧ WyGsnhY\_{恓{qhчqӥOhw2->;D7l'%N7n6]#k-$=6Dߤۯ{?ҌUIQ^6B?x/B%~?~Egh92-_؛^zfz]ѺhϹ|ަx9r˼>F#5\vAGJ;{^˟wۯh,=Ek_QO-6?' i:CֶЁhGʴ 杖+,>?Oatԕd^Pm$[uG6m!)Y aQ}ݲo3]g|s#,A':p/24msπՖdRGy ,W1E>[¹q.>;Mپa~ݰ>㱭>`*Cf+#13Mo37WM4"]8Ta}|`{X b 2B*9u& - M86p=R7֗3 c7dsG3-&x?ptzNO ֝<__/2>E1@eykj @0AtQHILc9<~v m#W_/| #qi! þq`{Bz>oz}ZO=˿x^xr+SwCg9¯y SM%<pAiEWϵZzf Mjuq*RڰD"_CrMԈϨ;nxq}&6kꁧ#"*LQyxnjbP/ϋ]CK6\I܀Wj|fqü{-_Kp?mԂD2O~0/aXXDfHfH@禪MVtX^ֲMdב!e0?~oKMB/ ~ZE>0ANx.USzuN'Uoi}D<h`t˭]~Pr6w?C7^\c&[.*sb#/P|T{z'1d`iG@X7h-a)ԥdX-fA狀N= :KnOCk(([{CjŅ_b.[cybN>}m]hkw\5SM M[LN|ѹ:m~/A9 MS]_X߾59{םcݙn}nm[WG;648\~dk^B7s6[[Ug u}9)ߍ9^\V̷cc9T+kȺOSm<%cpj4:A~߲1) jn<.lGrUW\5D'ipբVj1-NƮSP#y.0Q'p']cT 7.]X^&ϲ75h[O;-8lOnoS'Weh_UZ2Q,~qS['2O Xg3D_:?u0*e箧 3xX~8 &Wd "iO(Osm4{w/MAd&~Us -Jta{|[3љ[t,}Bg?Lt-2_ҵ/ls:ǝj+}I:f>OlEoG5|/y//%xt*9s _ot'~~/t;zF7ߣ ½ÿ1#4{LaY.$s4b/bZJLK7D{t:z1^.$ޠؗU:Qn {&Ogis?|=3q:y2#h$zP'4[;h$y+ D?ﭻ&Gi$q'6pKMˍӤQ=LCP{j{=.=߉D]4VwE7Z|顿Z>mFzNY;o]0}@=0>,?m߁_ds+~+ir`uW&xֲ+8uu\f柛n"ΐ[u/UG%Mi,+MԖ-4KoLE7 >FGs+G60"xbERs0ۦDϧLoKW -}:#h~~ _)sa9 M|NC=gr_3?bFlC *t5 8/Z@40@7au~?:V?f7i(M`mi>qmqx~\ T} - 6iVuX#܏}t~v`y~z>,']0~]c,`8GR_?kX`;)Ilg˴%W\0"5}uz}7r0N=Zo~x{ax6hFm`qa]\V~ ZOѭ+S 0CC-70Ziݶv`,b=~#5~CWOj!>&^A'^ KHQ}g4s=|]`_WhᬧKdv6 ZN4߄*[$'k}aV] qn_2!|lP 4 VKJ(¯O'x ?~&x`ad8G+AK>[+x<%8Nxe`q\6PdݥԆ1Fߙb~\K_^_h;/~"?k۶ؼtv0b sX瓈 :=pxH}{ݒKӕ6x6Rj .<̃f>.e^4b`¯,`uɰ ^h'^QO -4M~FqZ#U -r[ -ӌ?wG?/ +Y>i?Msv.'{:DzͭErB¢/L_5Mß9XS_lE5P3XR/$=Р>02҆Ͷ烙^_knm;+^]kilٵZڇI @7ާt^Yoy Ur@_:buַܷN>D'Y8W72|Ȋ]4fuC (u\z>a~;?ez`:~FN[79N{./Yn~{ֆ![B?݇>ϭ T^_O!-V|n,oMa|`~g]5ܜOYft85;{:;Ck_/uD;75:9Z} G.ZV(pO; {aXx f{ [Bo>L &tܺ?7S&(<~O|cv'WV]ì[C+g=9O !x0ZMw mV.=ۯtr9ņ& ƒg2 nB'@Iaw-:M }žn˽ -ĻʹRp?S5Zi!̿ɓi:ж 4Q-^oґ;;?3;zd1~O'i1<-F_Uߦi4v+Zo/i(nh* ?_57ҾƃO~NWW^daMN?!4S H=AS'l&OGy'JR3 -d PcРC6gr{3E-5@`x_ﳚ>eXBׇl@p>M C?ƨOswƚhXa]NXP2fRcyp6vSAKM^ƃ 7os:4VavhV&<}#gV:įx3<m.m[栗>e`{ڏ㴉O4)}؇a:e~#  1/wC6 ` ,V柛* ,ul;m&^qS*}T o@{ĵ6w#"o5uC(L0v8!Q5ujx{⭖V cX( h+TCE&D|T -TS?JOQ0V Y v׆u|01Ɓ۵.^M5Cwƭ/3m-ж́jsch+%y&u"[:LD?r􅡩 Z\ZB/?O恽a$}!*-qt|h?oPjåV z ~YzРs3B5 1m֞5Ԙ]] M,f}tFGMbO9Y -bo`9ߚ S ?0@Q6{9O=^`P/A߯ߋ8j,"|d3-JFpDby"S yRuc{wRk|~#ք&/X*3A y)tgyh@e}ځK sjY~ǝOS&^S y 2?:mr.O5~5W5>3Oy=U}i1nu%"C/znOJ.5n] yn.o[>gmLxE=FEt^=HeWvV/XA&` }\N 1jBھ^ksNu4Xz JNJ>J^g650F 1)Q5WSoHi$usjWea7kK  鿾4xIBdv:/=7 ,O `b>ُK傪[T~}۫Nyj!w^ˣM`U?FA+b1_/t|?sh8&%oP -t0RLཡNgu: PrDe5|狆t7S Dlk 꺓/RKO]n+):k#|.Ҟ8fTnx&?/OlS:w*!};:sS:n+A*wǝ~Dg>ӟ5͟ЉH?g^4}Bkߥk -Uh9}?ҕ'h.[:--_s߳/P):z럣<^ 4{k~|MJ{4~jS\<KJSr%Z>G ghKtuhdFqc4|ROҰA <̟}s(w#h4z/{&SpV:SwСĭ4Rw;MgcHM4F"JGh80&~u;-ޛ@4-K-J ߁9}FbwPV{{L^|Ҿz:,yJ455Tm=Idr?p>,זvLÍevNue|txc1N"̏VSx `.^Oho$Ϥ@SMmGFGmCS- X؟# 6u^ˁaM963@{n= ء [, xֵy̏.zd9_"Y6o,gM-qhfmoIЧ?*?T.a%~eDlo% ^W~`47aǢa f'ar~CC -\|1:lS?_})zg)pԽC;77*njhw6G5ӺeOkinY0901p:pARbvTϧuz|1}< lֽr.3F_ ZU|>އ o59#8 ^ Um!K4I3;uDC7%8Z^WLfDg7gؙD\G]~UC:RKCgZ{IFqeZw *C+Jk%zEO鱐@4kd BkWn?SV>_Yj}bTzYx߷tUT1_[\Zmn Y`U!r'e{'^T}?dXZ^_)lx8̋|X9q~e>uO5x=r rϼEL0`EYί|HüzF_r`LK!sG<5(Kasܔשvo!w<>`x% -{M 1hfОe=򆍏z_>*̐V;)C?rOkN%Q6h4Ý><k`` "sT=ezC?_zULcq##_ūT|OY;XPؙw~?ep|Z|_5)siߧQ2]":cl2u]>^ -grM֞Oٟsj*T^(ǥd3yDž,4.LN7شUX^^,g}T?HRtis8906PֱTm1X=p=燹prFhid_:/#ӑYv:kNxw ˃X* Ķj4D5sDGASݠ %j@Eh8N99>m|uOҡp tD;/+юt|}?tUoi).ߢ<4urU=)|Nז/ ה>=.Owm %~Nߥ9Ϧ?So?Wi%󴌟{6Dɗ= -ӯqdǟ3<~>_<6KN>ev,|_Cc{3 2Y{iMNqh(~L{7ӾCo|.&ohVMq:?akEL. ӷv پ+h_A|`v;xMW< qNTl}``sہPy?+[uT,zB,q`qZ7KZC=Ɵu2A?>~v C>4;b?ǶK>lYx\N'>GM^h uV׈_!Gj陼,xE1uԇ+ua}~*@$"%O -jƈ0" =x\"l_>j - D^u:^֟|}*~7 ]aOyh1|Uzfb2LjuIZ ~ 6؊dxAz.;~!_cFd0zQz1 H}^_Ͽw#|1~j}J,hנ5t>5g(ϡGlF+`r}&Bdذˆz ØZb~adʞas]?bK1 K Ư8pI -/| U,, 8yӺ~ٟjV`zb[9[P{WJm=O_NY'k&=@O w9fx!|lu;a~Գ 'Ud36^7&<:6Ka9xj?,ܜO|߫>w1n>¾ ^`CAdZo)<`]q ?FSҤ|pg삡)[S9>^>bFN)Z)|`sz֬LO=ZqSHخ^^߲WR+w{s Ei_ߌ[ETиE Ko -Xɧ?9uݲc<&s؜gaйpQɯއ&: 㿧 e :?#wCZO}i?:> n|h]g8Q(B(|l<0?|ëU :pj{/5k$}Z|,cǹaZP}Ęv_.[6w^2gW=6:?d' h$+9'A. TwE(oU)usg`*S\|};X %KcX3@t _-ZMum*4ojSËґt<-%>[|N5MgѺ7MO'>fV+:{n[:UxoDGt6; ->-~"³[D^ds|Wi6 j_i&4M#4x:܎BKh9xmݾ9S':=ݛP|yVzl?[s#τק;ڀ`~V@~'w9y4WyX[1!\Uc>9 Z,? Cn0]߄nmvz}ԧz@8h\_=N/2>`5_Xz`vn/0Xߐ5~Ze Sl<`+=rBoye[v2h `;)u(piWUvVi'L~ԙC=nTCrtO5Y #,si '~xgڧl ЩKĵ`]rn/GmMHHg'FCF@ܰp H=xz1჆\{{C׊+Tcr1/$cA\ǿȂ/$`lڅ% :c?bٗrF7P5 -K 4|qMh*r_[y<X%K3[so`XE^QU # }9呸Vgעv Bh@za OYS(:;:S/# =,3Ԧ>m0?+: C>_g|EƧ?&P`+tmk#Nk?yQ~U&yn? e[Oy;KXYr:;UoZa}\aN]zy'ᕐ̯ۮJpAd_ťD=Vj;+Zu@gݮz>e~|;oMrz7st=7?Tbq~ވΥo.Bsrʷi'EWyۿ\cwA7r-xUl>0F8 וp@nnq,0L[yt]pAYjL]i6m6? -0ͼW/xoczuX?()gxy)\yy6<<`O19=e;骇7)YԌ_Y#S d-۸˩NNyj:zzN偷9ٽp>&|ycYa/nm7I BgC͝-]N?&xoi5~L Ɇ誦햯Lt"n|d?oG>ߥR Z@GSkkZ\ԝ\y'd{Ctq -ϯ}_Nz4#B4ۣ[u'M=4Yw5MgAc~}O${i2@ԓsG8F:~^p]4|3 o#uJC?#MTn:.vM}7Ў -Vwbt{4Aݴ/AbM4MU gW -DNAܛ;Y!^gX{T}xTPWsA0t. a`0!ou5 |`{c?|Oxͱ8">s |^<3 TLX]%/.絜/ \>n]ˊ \|g]給 @sss:w#@7:F $ L)$1HD]I7Ⱦ5cxs=4ߣF2>\<_ڢOl!>_ XO|[n}x_ I>G隸ϫ\ Sxv{4,>w>j!#J6DM]@n'ӎS5ѩh%{:Qzs?ʿlMH7 -_MgHD3=]gzxre-]%xE/t{:S[:]%W1?uѹdgi::~;4~¯l v;ox Z)M%S:M|E|wܣ]ſ ?4{^|s>_љ/b+:K|^џm={!>nK=/\4[nwD8ßu:| /^#t4ro3t$qOӡS4EoDM:EGX. s7 -sx*oO¿ohu6"]#a{CF;K.'ih5hlm~w[KC,,k1DjhO_Bgk6Wr~#f=S=pjŇx%O|vE$cG(C ;ʮa -x]=1eU2([O3u2D8,RNc4DpZ㥅WkLO}Nw;Yخ}X?OkY ’z?p=p?zcs?K+-`[ y- ߓ7]VvqԫXN?~_LMjͨ*yV8Y>ʟL-V մI?IB#}StE@~8c5_L'6_cM@Q|: qs4QTБ&t[7Ri}m^F֌?#|{`}h|Aւ@YccԺ -(Ro *-]%<+ p(>*x}J&^ _Gq[ Ɛ^Yi潥!4fŴY1w28 3濃Ѣ+,eVJ]yL;C1i_"^^Gı|E{gwF>ooߪJC9pYbk@BpA0BxW~7 lQOW 9/үb>i`Umbꌕ}>(*&q;ϩ'{M:ݭus0?6zGV]<11}1+S}ZZFJ -V"}G5FyZy֤jCxoc3Mqf炾-ş G!R籍[xfLoSTnfX21:2A luϩ)^,5 BZ~ZS=jN@74:Fdm_ y`ܷd+%ncbY2AF|ŎO?óki~4X}TFW1 O}LNoG//|V߲R z؟zݵпǫ:>p~W3P2qƯzn>^eyZϭy -9}Uc4}hiM?5ZtCi׉}ѹvwuo8NnkG=m~~kzwêodZӬ 'c ':~"+Bj`}p.2.ؔN[R -ծjV+!sXx='zf=c C6+#Dox]DoSNϭyn槵T{1pJuAr!0?|6QX8S􄅁ݤ -0M'snfkMylF"fyTߠA˝ca*; >XM[< ѼY Quq8dxmz\өW>͝5cL[܄i~w_~\_Mְ>d=Oۄ*Nvp£v&lǜžZ46c.pty{81Ox"Hl68&zLehKii2D} w׈緿]Giuig] vӾ+|EXߓ\OjrP W?O9|l_e::nPUSx yh r1LUPϖ*:V1y*lѠ'IyXl` LH=|.Y*4CgjJEOך ]Gz }Iott1@WLӼ_;ZN_g Nd?u?i%O$ٯh%sa~Ǔ1=ytůh:t"|^4y?7-W3Huwh8_4CэEsB=秴sN_мgt"1-e>G4۸_:KKnD5AW _t]:Fg /o"w0,Me^M#7nc+tt}YzxёmFCtK4]~W?GGc9Bu-хt8?/ޥ{o<~os+ܮҮY=E˴#p+AC,Lt5H}*:C:NxZW!|Ozv4jׁ);6Ah:d뵁 76\(v$kh_t,$ƒ4 ^߹LxO]OVz{Ӂ(E6o(wuއia{ RaXp@X_W$oG*BC0 CŸy]w+| \] ZY>` ,/jݱx~<ª -}Q/9uÆe yuZnq:2~' -|  '3ny`cHXVg F |$"l>F'!hk(@}@D@˸N6N#A%k2_ Ž -`OR3.&d55 I<~4}p -B_ױO9-nMʥSlVjNסaY.aYya -&,PSp<6S挣}apڷM֙} c,u]n:a"x\›? |*ǛmM[ %o]̉yJmJQ `|0%NZ_O9 +֕O5P4 -3lNu:))y#ByHm?OmOFgj4 ^`S0vUۧO<6Y)=!oZ@svU)e7?mN.Oݟ^aeNGUgh-vnQ[xMq,#y`cA6DM->\@a5Xou}| nϮa}\P7ep#-뵜N=9}m;N5}nY 2HLXf|O;Gítg~ځaO-xl LN5{UY[ەAguԦ@luYuz.~yAzt},vfΔR~,W薺|ֻZ8eb0|op5ezK5:5zx/c}]G35ܚ>wpñP>[y:svoNpidN؜T>'Y&9 5 w5|o1]p4|a8K.g_y<s[G3=Gi 0e_p F:{ۗC|M|?}{Zh_vy+iOV X}>[p>kx!|>ZOR?XI#A8$lVt=o77۲~|M7g#y¼橧.}myߤD /һyNC+i1+:[;:NK~.@?_jt2%-ɪ҉oi)%-gIӥzL=Z~F߈?lt"+. ĿMSZI~J3_|#ߣ=:zN&>uNCSi$.ߍWi4d-t;4Ϳi/T|ޣi%sgN'?;zQd&h쎰cWh-̼D#t($MܠmO^Śh"2~Fb(pi:h{CxEKD?G豒i$'^+t0rr[/J/iOߡk4[&^{&XzAEP_d T(Dnxbt _+/K1n x σpA\Pٟ怀顁) -a>僘w_ Q>dM6fw&/~t -<0ݦP E7'+, p Tf r>,CS@e16ݑɴWDCb~,~uN5nti0ݯdX@t c~R3?O-jELE!'5%#1ڂ:o)^a'|Ҩ=5/0c19arA.m=\hZo3G'm!_> %b2?W< -SNfY=DS(}IAxܖ]iS][} a{}v| ANXh:>GiTM S" EӇ{{˟f859>bxO.\jo'grVk| 7t}N-@wtk/;C4. zZU +u} l|1]5[Fqk }yLއAWγ&C4ם<D+ׁiέs:T/x~-3ļ_x1:,tȸ7 07vwnȣƫu4C28rCo68 -Xyxau[Ut2@l]'a1D[Tw.P=EuA:詣~mj8 xfhqy;D*/oWxdZ/8jܞ^Sn ~\az~:}z w2Ie;^9ITf} P5eVzIg&| |QnN6Z6.[>`ynGc6LUg|LpG/ k{|1BP|ž2\xeyrF=(^ϥzJ=$B97a/ޒiO髴']ݱK4y?YV2_/h:3}HsONgoBѩi)%M~CMOtt<}MOg@k35/i!9-&?u LS:L@se4}F;#]cJh%1-"T] O A>ȏx&d%Mg?wCG7wEZz^߳ |ӻ̿AT| }@KD?X,_ޯ-HޡRCO@O{ƒs4Wv&/ӱm>G42_m~ޯҠ4Vh(x'4ӎߠS@'kxUms3@[@4X*T>d6 F_4_= -֚hZOFC#%FNߧ<_^ hgჭ^azPo/.;3: uya:[0߱fn7Ÿ+h^xr=N j -Dm><]t:>B4޶v׶О&[akt Ż;_cpVzQO3Ugr>xza?p@ƬwQoj9yh+S_0l/ 'H=@LBn F͍ǃh}L}Af2{?ShL^O{vev&=_(x~U6a:X{hgYza\PyenC싦^;|騣ļ¦Ơj!/:om[3˺7q  gXap=3b,w'N֋?7$,|$ ?p?d #>_}6XX|ǁf.X"V'l{0cv^>X"z?^/pWKF=p;vsji&za=?7tQ_%:WrB3`H F<,\AO>|?S-Lme;2Z D!j]2@ fuj̻=j^`@m0`,9>`U1z)DTևeƏ׶%lM utyȅݚpEC -_L_,K 'u5:.WM@]k r#]lS~T i]:S#.xblg]*Stk u>qqU#%d3EM4{o:G{S%Ԏz5b|nZphkP;GC׍Z s[Qڱ5ΟjjZ Y}Ul~{1`kDPe=M\f yLmrCPo*P3M.Yt@+{-:0@301𵕊~Z.sXS~C9utlblcWk9}UkYA1[ >&/N;dGWZ99AVp2G7a&ȾhlOC j}@p|qN@譑ڷ-B*SBb|[<"_ X$kl1&j'Bw̟ŅDNkWz4Du4ict[f|_Zv/XszQGP9m2C{ #T,p{w|;]*۞7(K{漏 E4Kqo=M{big -u]Fi5b}OҹO驎oDCZ ~G'3_olwt2]}B{:Y= -|Gg2*s[:_G:'s?r&yWq"Z -xoi!3D+oxDCi% E|Iwg:Y&_kA};z4_IUyyo43=xV9Buno厏h.?;yξ  ߾4Wqfnұ ~ch8u:HGPM\#i8 ]&8#'HYm;MCwLuҡM;:P -nf4~ߠCޗhyz,xv/Rg -s@}e-BCiO9~^)r;L!~>E:l?]\)Cz~zDGUNGʚJ/xei??ၶ/e/XaFxKhYMdDf3-tG'!ߣCaNy8t}0uhZO3u;ƁOu+>[nJtz&C㼟+gkι[+6 dQ46w̃G"7+l5{k w0\AySѰM`2&2>v}De0>4;"UX)j] z/Y} tcNɾ4*:,gB=~{MҎV5 -yhlkuSeu0ձ0OySyB,[01_3J}nVz|l^T, r@0.E/`auM˧=v Sf+>}OYDShF`whOǃnWYBѰ O6a%:z=9suh]W^ t}اqFjn=ɐz? аD+>ƇM<:úN"fz|?P~I&1`hbr`Fou4VNY/DFERDm;"%rdĩ}k:YN{h*$Svss=xx {WyzBu]@]:AG7֙ z}),+T~] *TmrC3*s$tzul4rAz -*)4)uq4u[S|a~yW,҇~jz%wJfs5o_/J:@6iАeE}@Pu ",U״9a^kaxw7%Wj?TS=.8z~1sk4U|f20&nW/+'v>~`{8HkrEm@5ٺm\̘!Ǔ TZkS[a[.,_>N~S'Mb@YfCM=SK00}pSJ|`~{#LPGX7u?ZާsoS\Pyn30!:>yn3V jӱH;!M|]L|l[{U/oG=lc Sv25106erN>[jT+xOkiΈ(skzZ}ئ c,13t8sQ>3Q&ZY -M[i h<NwSفA+8je>ߗXc Qy&M9svU8E~O.}6-Y1?n32u2]tjy~fl:`a`).:͟`+ -N1i%}G?ժ?3h9k:N~C+ololt6ks _-FES\gt:Y}#'t>9B?d5ZjN|C_^7;C'ɲD%+/32?Kw^4N繽@}nӅ{}{Kxd^"EsWMĞ O44|,tFi8r&/d nOx ~.ѡy8|Fh -_i!St/%~Vx& ?OZط||noy-Lߡt8rWhw - W\ - O@{@k49S~wh`|:ٿB+ kn\~_0@K|3V (3GXU2Nn[?׺N eB <])5MU)T2>]ayL}S33dV5K |5^vDssC ك6pm=Y;r#r&]{3;M4VWx <׃Oki:4dxG$Mu ZR9GlӍ[闯I^{zX`/h47h?ʃX(mR!C^( [SguP ø/)$VrND}>=zLE'O:z_d2*$k*|υ :o2ju`xޠݓ>P#)klPօn47{S6ZouoX׻+w<&U|Pqs6vq#X5R"  o}puiMV/pH؝oMȴ¨-hs~ѷQ.ϰtSs~Uˇ>,5LOeokjoRëc1ZO׃ ZX#!{PhgNwꇶ;DŽW8duD>nz]xVx7ƄC][P XnK 9K)'ˇZi1ש7naYu9Ӛ|M -75ֹFU[(ZtyYn=;Xja}[ˌgn]+naoөN83 4pI$%as 0?6z)sN_AxkF÷Kyq13Xh&om6h MMy[gisځ8GJ.'#`-44|31C+8̿+|t8HJivjEr>Аً.  ԺXWd2@z%Y~[w0PE;$7){8&h;x /KgǗHUL;?tFW О2=[ -,9MO4zZjˮE*ߦT#:dޠgھt1xʟ齑Et1 ])/C8ީ*d|Ig*c}N2.KoL |LK|%s:Q9-ľ9s"%]JŸGKi8qS>=ߦ苴K+Wh9 -_ \ysqg_9~vw&ş ?I3c~^=y~OE~QcM4H?G,ҙt{t8LGhI{<( Ԝབ߹3=Y.UY5Gxy9Mӱl#Mpjgљm.Wtgm-`Z[s-vmHAT\wjo2 }CZAe`} Q3Ex~5wq,^'|n[,PVlk6_haz~3 t0YEGxfA]@xl߮wV&_dji:W4͝R_?cCS lOu~`IշJ0a{W)MX~%~ ߟ~۵4H6$ Afh s?xS*Oup@`zϩOxp;WAݡ_@eH'7/ 4-S-_ԝ }^Blë 1ypBJF :=~4*%;5s4/"""[G0,//ҧA'#ӛ5{ pw,hCJe] C+Ľ;]M\kH2:mOaCN;"zktaaRh6!YG-'{Ptvښ{& '1E1]K<`t`u?D3-c;l@v,xԈ|`aRET-tpa`}phmw[ -D&ɴ=F mL۲! ^cd wG6&>Z(0l4`5-wc4M @h 4=7bŊdp_\Z#/׆ )Z5?{ 5JXƴ}Hs 55 ֧0~cHR,}9\N2:m nh>2Ps~UΧz?@ld_ZM rC( -jx|^) SO[茶6[sr:sVGhr|,_׺{>gu5lDw=Q3߱4x;i6C mB>.M*>' "7D=jd',CVz{A^jU-`Hx$"_TtrsckUO?Xŷ*1+|m|(@4_7H_'2j7Aۖpż.$ZZQW;dX4{QyThrM_KDd<Y7Fҷ>cƜl`Tƞ@<ݚ?ﰛi-@pClW&<,MlH;n_]PZ~\9dOuk`H- -N}qev_|F-3Z̬r/e~P/Xǫg]Zy+8Z6p-¡.\E0&sþ Y>c ~2փacr6_ݰc,Wsl%#ӫ8hNe]ʺi<!oV6:ϥ0?d. ʻD.yfTJ|yܼN}-IyJ[I7 u7 -\ʂv:_ o7:6sӘ3c3^owBfc:Gd~ݭu^cyE0:ciuo49&7>hÁZ::UZA<N2{:~4Xjuyʜm, -"cJ=j]ExhEJB0^} Wَ˷F.qkǿHGg=_Ǽ+/pF"OXY~o2z៭|.WIg. K|GR{>iIrb]WvOTGtc9Wr_Gt=~ߥ o{7]+f"?3h)->_L= -ޢg~F3ss{V|^\so:/u*]ߵK4FM}@ߪ;ܥy7[D-M&4~xƢOJ]A}%酽7DXe>ֳ4Nɫt4yWh<8V_5?c_st(^i:?h5:z_YkKGRsO7tqORtǟ, _9_7Kx^ ~WUD*ïtq4E 7RV{,RkY\=U@ck?yE 4cʚ<_̫Ok2."wQC.H+uy{7ن^:YZT]ϛ Ų6^ul.:2@{yY<ܺ?O f|``t`s5by&ktw<26PC9%`d@M8rL\Y 6cAq|m0uj-@x{/`yZv ֧5>`mTi? *\h=hHivgWZOfjrCq,S&:RCz1Ic+<*It}sjQYF*ilj/]QFkZ$ GbpDMkL72ۼT( -+_pB߹]pE-5o.Qs+4y,N@,hSœ#L+NOI.H+:=?xX4&/CApx" 'x~b|Qdrno@G~Zz7W~ 3 |ٕ t :Ã`u`|~hڼETmuE1ה8sM#FcovKJp+OE>=VeZ3Pky̘W~Gx d&1h{AQ+15iA4㋓tj0Ul(R 05Z۩=_h0-$}r#7 85Tnhx5[?/4|q B.ut}'bN.P2-G숛LvhK·4aq߳\Ou7*~bVjـ0?і0c30݌p6z,'4Sw=?=.r8/hD/Zk°βxt, F3.1b}l;e+cB؂|2VxKvH+<z>[$^8>_{1_cUF̕6VVZQS'J wVZ`5a6Zvg= ::>æ!Ck4yn!ښ}_`M?m~ o -7l>ukZ{ԩ+m,{Of~)O@˺d0,\h˴|ئYh$[V6M)/>ip&Sfنy>hdKW+z|Nm 4s. ] Vfq1v !t-ry9>ΘxE|nIHއ? w_EyPNO9W -<쮯;{\O|YYF(MٖAovyzS9ૢ_N.-6%P@[s-`~OәiYZLF/g7h/֗ii]5FG.Y\kt48I^y34JG"Oҙw\=^ߥ-E7h -{.Ohq:xV3K%,Le[oz4B2 ^=!/4G.@z\;4x]]ݿv*`dh_ho^]S.U<4? -'MSM_V QoWkJ6/N(J߽N:Ly%mK'jrt;h;eyvw [*Lp]xzx<zl4I>3fNzsqg@GWfw-H+ہ<w&;c_u]u4)0?'#5IcMeA.)CnO>95}+lBk(~c[ն >l[h(t3YJ&pJ_^O<v`Իܟv8[c8j\ۅAw ]etz4\^ku i4a?M!h:e[Pk[B'x1Y!/pѷ}d#JL?Ǚz}:;I|EYZ"O=` F& -yQ]!#hҤ8}a=)B: 8=䪿_wz}(S f <ОX<@e[5= $zx:06L"%ԗ{!T, }Je[og::\OW|>D=p9s7}eS|׋6K>L>,Ǘ)W|`0þl -s+hܸjpߐa<,zEO/1G%J={e<1܆||'cR>i!a-jB(>|:|~PGX!Ǽi8~c`+u2'K-^L<^)̣Vj}>z>V'qњPH A>7lVHӂ`=Dr L/Q=÷lY>ʕ{lh S;,"uq> ޘRGAc۩!Z~̟g3zNCՒ-T)Ioc$y*}C[#lB ܞKVpd%'"`oA ߋfJ%s?mR9/T1Hn[n~`jSp}X$Ck=lvOyë^: 8FnRՏJ v;L~  ZL` m}k/*ts?W5p{%ץ|c+om;94J_~@6'VL}>ef>DM1=FK&/,:Pb {$FZ@ OXn{ .4Rr_;Ǝk[ -HJ ss Mvιفd3Q(TWWW=xfl?Ƽ0g=ڰ=6<60X^{Ui_`vUNwo}ͯz%]߯ӎ<ՋiMԎCou:O_7>fYnsC,`}>mn_2,uzE S2=hvBX/jVztkrtc 3mA?pf{ߌ^WaqႢ k|^ ౄ7.e:ǭd:E?fmаY{@' p bY 9i#R7/ !odԓ1~)A~7QI IpF~)efd~>>ſEm4ڠK4\|7iؿMghسngإ%;4ۦޣmLߘw~۷W9?;VS,ZS[~N:K{{Z.MG?R?d?Oi{4J ;ܿO[U9ѕ =&a}6+PۯA;`< 4nm^NūEgڽ?yKD\l`]UO8~:QCS<Ǽ[ ΫK}u P68uZ~S@[TVۍ}/d'(dLE$K  [hV̗ `XB+XV'o2SI3;ﰜϑC&5jUE,4Q^gsq)OzhT7e#|h? 45x%Va<0SB_e4KSBSf PAY~nvLeKGk8qJ" 7 C3^>Gq! %¢S͜am%@W.8 b2ydl贵:mLE$C2@mcN3a]怟ܒBڛLg)=N>?H(Ff/Z<,zx'^BA{00lJ* y= W" L-\ &I*דp?>G+|W&yn/Qbӕ 3H8$`{+9W,a򅋨C-n`w50;pX8{P_3(zj1-<͖55F -56c# u ( 5'x56xN \! -g>s\C}o4 jY;h9h ->j@GF6nu5JDkW:)Xx%/gzwJja6>ݺI>-m=ș+Q|^ eدu +qtrC^[aWY~i-?sgj[惢|p=0Y|y9Jo}z~m-AZFӥr: c_8 ඣf08[Y[Qx^h8cHx"m;-ءWvso`::|7lv/N-vR-E_a^-?,A (͟G(WzU'NjM[7B.δZͦPmGv4:79#+}GbPOk;]&G>쎶W>t<-^ut80>skoO :~[0AGj }`9ƹϖ!+t䱀uI,Rk=9j6}5  -rjDrfJ`mrPX|XG֡C?v5%^~ݚ^V8 p@[M=!/q]8^Ơ)D'*;Tmmy;/3Z_m7G?;6w[<+|x|ZRwoUSz>@oh&4zXq-X:xʤOMp>ha{ng k2Z<\OZX|0X\cez%X㔿w^3쫠<](f+k^O3|fW``|~oAy 4QRA㼼yO)t 7E^/:fLyA__qʰ?;NDjYZo?G[E.HqڋRnp12G22(&7Twd fh$xFdh@}Y7jL48b Ɨ؞j k>C~oKtbE#m|E]WoO[nxߥl_J٬ZF@44qsOWc.)chcB#h-FޘF:~a=bK\k7{ʋޢ2I!^?DՒa<^ {Au<0e_2 #T$?@m\m0,zכ;۪ö b I$Ұ+\0f ~Y"K mx]860>b7naSx[-zpjnW,7-٠0H>)<+Klv2<k􃦿+\p7lc &XE/p@Z^󀛵X~s OVNR#z Χ7PURя&s}S9/ܐ2k}Q>W.tRך ߒ}M)l' -1F/Ia~<.YD51>hHK`>i|`sՒ bj V=.A&#/mI 4m}|^/O,>d}Ut}nj͟f`"*}Xr<0yUGir}5CyO&X} {6{ϭDlBm= /okۿ5=P5ZOydxŜ>GWJxh[ߊAi]>8a}v[yn_0~y|M]>h5e͟)d~0W{=Ono*qR\ˏnfyz vWl^'X7t)5ﯲ<Ż&_ЛT}Hqz3LvSǰ{bthFA7Uky^εP-26h!GߧMYA>N9^: q+;WٝꍉO}F h{:zZCO5Tn{ O;uB+FjYƇ/y~a 5zSV.+?Z-x?ep`iWz;*nA'R߇rnW+ibyۄa`*S~ewO+7z8U;cm22ꄏ{a9n7X5`i[L"Mxϱ \mi;49{uކY> {.rZ:i.m:׮ p,aZ=H ^g68:Uamax40>̇~4kI6/̙C3ћ>23Mޠ Z.K[5i.ux{>y>=KCǒ<9~D>|D4}+c3Y4cy ,'7F}QvEϬ`:r_Dkh4~ #>-pDh|^gpm %i._dOX ϝlׅS"gpj2:xt5Lo"Q%ͭñ`YY\@hѯ557x/+0zCI~_KNQ{oOYcTJF~azNn"_#Xx|{/~`a` #3xDcn{A<%lh /X9?tƫv8O|)?5&BT(Z@+Xs$r E-N'>pyė%m !؛2?h?= ,_K]/W5t:82LCS(A5]|#<}`|Xkk3D>p9.8ߏ \ $0&_2')vr^~r~cS>T|@8t!qU ؔ -cO -O3lfrMcV xc4Q::q p2cshc2]oQ')S OQ}8>5ePOKo@ _,ѧ`}+@ L>>p>5˾~i9n~`=Fǹz[ߎR 2wGxq^4W|26ԗ>-GԈumW8;Cí3T- Y<dT=}yT\:#Fgq]G¶֟is>XT|KǨ6S!M ~7nF)f#1+Mke  z :K9[`O5TOSh ʵC?ZxtLF M=`{kN\oY]kݎ5J[DǶhvi3h㖭~Cƺ%P p~M?Qj?e|80G:?_6Wo0>_s PaX'z)-7UCFhdgić,u=?/} ,:R ;H Wd.Grty ʼ|FKg RIQBtx΄fg -}ZK>swi=!i%l[K3491M] ѣoeCڨF=G465{H4Kt״\RKp!w[-kt%qwh2w ߠ^,uS>$U{NQoC ?|BwJ{/P]e~WL#axjP+ T5J"Wҙp^ )b?څd'rJ8ςgnWK>p<ú>vS|K/Q+ߊe}Z>xlkj@p ~kC]h2:]\^,-!U7n?lc;c~uA?'S/<0=vZOЯ=e:NΡAZ'Ppz>_,'y35Cd촜aM~%$_+RRBT&oYjKʵ 8["@ɪzi85,vRvj`Z^~_w"xPpA%2 E/`hы_xhCGˇ,]wOw.)gO,As}|>eSDp2"ocSGQF9uXRAv[M x`ӯ -M4&98g'?:b]ٟt?ugsΡ[۸Ia t~n'u-D]AZf?6O٠SmbGm9&+tGwxxfC /p>h\T1IpW~.2%ԜJkLT:. t{r?)kʖ8Ԙ7:vB5fp?W- n8 r?RNR%6&Pkם meLe^VOki>5 P3@k7DK=j>.Э 4.@or=麓 |4 h4j8xMFOv 6{C*Dž!Cuxux% BTi[lP q}̲DL|1~6 J]#Fi9dCX~CkEB -,RZ)#ĺ@ k֑ ˟/ʛ{5@^md?##oFh+ֱP1>տRD`EXԜuް&n[6_t|}?3A#h</~f"wah8D<0Lh"15S,G̬>M5uCt8-xjU3MuV6h`{/HNe/s tTK*iWpO֬O \>a6˺h&^O4Ta$ǣTLH úS/n; go;-0I p$piON𹽼T΅+0KOlӝm;y -p:?0CC%m7ߡ#ߖ<4?OKt9Exy>DcE:YXˡ^67uZ?e_ҵgN{ُi't-5]~M ޭ=~Koh7&o^o靺zkW|Orѭož}__ӣѵW|Ju ni#]v|oNtY-%nҝwf> LrKߋGG;e?%~'{J[o~V!-nw?࿹Gnbrnoޗ>,7ޣmi2/KqݧM_y?&qt-ywy'÷x JlZ%|.Fv߻@4^uy.{n>gi(:Om1P 3y~/w{kSF]rF}r/.p 竣1hEoeDx~4_ﻐ+9Rq~5x$_ihYjh~i4@; -o~XW2BSݟ@/} D^W:xc!/^mc˿_, }sid倘k6Q# dīi R!N)ľDSP3:A%6;|o,Rmƨi?<Mjti[oyN}o)hWk;x++lLe4L%+ -70 +V^Ƈ0?pAT7(uJkdx!Or~m/4-jl]3]WW3i-6F_qΟ>+ IFpI y<_woKQ@wo2n_J=V\P9;XUL\X^ 6 -zC&0#sN\|Oǂ4C=I'Q?; qFm?xS&~`%}AB>u̇9z:$M 䁎O ueyZP=ݙ n'ǃ5ŐQL"Jy- b?RxsѠSؙ*Lo lyLfwh8x; ``<0xֿnvf:@m?6[-|^Q(?#4| Ugk¿+9p,]"e"')^ fxi#Dג*n+ߣL@8h#9E`tCsoBgX}^/F(`ޏ<?9\~U A(5h'.!QW7@O9#%Jrrd#D~l[W? f=pt|ZׯAƇr Vcx8=ffOjGdv;]_}!ǂΡ}};*#G&ፀ? ]9xߵ~n]` UހuHVa}{+*zAl;_]Z؎<#|VsC\׍.Ӳ<>ץ `v# 9k:)\Z@kF%ś4Nܹ :$!}M@F@^GǫoN5U.z՚t &#d{56Ep V:'ZrЃ{?M)!akHh68sg{(;`aSj G+Jgd K|gz?>d3l:1~=7Bތ'|KuHNjӚySqɩN*I%t?Lx?h٠s[6 7D=-lNxtjtT {xd| [lqF+KEi,LӨ/K= ,qwIx24Q:MWh<ӈMQ7ωI~]5=yxyޠZK{ml8]9X+eJ=ʼK}h/ (Ǵ[Ɵү^SJs)群ٯi79[=p7t{>kzWtt' }N-ݣ5ߤ.-r}7i){yj#ڨ}۴X]ߠ{[2Acȯip`.QozJ.Puq L9I ejR$:1~+x/0xC0OLPX \Pnkb}C@>Lp9"]xP[/˿iYfgt~W%dA+dYBDǿ|>?X.wϫM @,~PX`hM|N]@.뗣NMA󠆠Q/0W//C·rSy3y ocZsU\NTW5Sf54| w]^p? D~ ƱXsgNL`1z|za':@⦷4l\D_:>]hN8 r: S/;hkWet`a V} I^pP;$W8(CShTI/kWx򿣆tWikևr,lKr{;lnEa75e~QH7<1FCe-T z֑=dCy_OWGg)tujGA5EħꮛF\=vBjɸ~3ƟCL~#윣G恵0A?6:VwmXw;4p澗*>͘~G>M&ֵn6k͹cՌˡc[3b;DB6p!_v*e9\*Z/A0Um Mxs^a|Fh{E/j]Du׭>el_>]߿.׳2tJƯqw.Rkr{jjhE[eh)ǴƟӖ?i]=ۥ_݊Oat/I|A열n?C|H꿡?V~AWi=976"Z3m Ov-=⿑,~cZO?'wٸ5!׿G}x@K{4ߥ;W NgmGK[*noMTt7&vDſi7ݢUKB.QR,]^ާq^;>l;]wݢ3% ,]H-Rwy~?/v:|i+>@`/P_/(^(=v:s:½ԟh!zF<;]NХT=]LBTghF%L/I2:/:Xnk/< ϯ543~OɊ@EmVVCwZ}:fcIe}N@*u̫>0?}~XG @"c ayX~XG4 0ò69^VΟi?;S/;WU (ĉ,k9FSƧ-ތ-UY Wʟ.KX@̡} 6Ū6L5W,^hKϻP-`[jq+oqzgjoT@_Y4k' UKL6g~T6}Z/PǨP^!OX8!<ĕ F qhy`p=mt~eX|_CM^ wz1OS ժ'Mk!S^ z^ 𾁨iv9`~`1"V a^+DHg<@-!h#A n#wuz]p?H2=E7£Tr?-ӟ ~nJGEN?Ķd]Pƀu)M דB.jBחϘfA+ȭ/ɡ*;zO* `vwi}p=a{6a09u[+?,A8X%N f(#ڿ.h!"9NCEr\O6 7O<o \H d/Ƌ ,/ռ %c+Mr+{B>dy1`u)~#:x}Q ǩ7x\vËs=^cy̓8t_7S^c64;03xr_4x}FI6x!cym| [Qɜ6씅Y_jL.fXw{ v7rӀձalաc|/Q㡓j-ؑr,V/pAB`j `M`\zv_vk]C +4̭[6È]+ O΃q.e% -sHfetSNkYr;>r"Z{}psw.%r G>Oø8\fxi 8WF\A 6=ҿl'Y>60֙3 j WCS?,j5ѧu^pv_jmZzXnfa;~l -/Аg&oy}7A]c|1>o5iX3E-Y e~_Q].x`ƂKt)0KW^]Z -ܡ=y@;M-Vm%ߡ;zGڊ}}SKH?۹n3z9}7ҽ܇9?t+vO齮???r?No1]+}r~G}B }qo^G4WrKӝqw>g6[x6˝owOBWh.m{H_=mf<⻴Kk|byHK= ,AS4@;^vfWi1}4"ehvyk䏴]&RzfS4!mwY#p/S/c >+2sx?hEbi+g9|[a [ tyvB>YsΦMvK'c[4yE/Zo.xQ/oj ͞l<-WGwL/_/zj5~ҕ4]*oR1~,Z4ZnֶѪz~vN3\KWA?94lxY/xWqS'>1/!ߦ@h]<&*ևm_ȖK? <,PxFc$'Xb2AZ -<p7l0QS¿z79!;Y"}dBޕOF};k1h:}@>H槭']_BֿL"Y -3^OGx=,t hMХ*jMOvsSO|#.4KO[WPt<GuFQ@=i/g|~lDu}P3xSӆ+b4H]<``$S7z{=oplxY.~Ɛے <Ӂ?b^DOpl^0I59bwg> L2WB-&bC):5U,5'$sՇOuGµ搗롚 i`Y+v֐ s+luSAgҚ3-ȟ?#ǹ_(ph+S]JKPS`AOX? Xߚ,/<ōyK;Y# -SE*?_ ΧhP$خrAO'ze{XW.:z>>,uk ?7;~L}'N2NZV=^A:EUu^mi|_=߰y ]E?Fr`_`x/g\^S_] Oo,o:ٷlV6悪SzoE)?Ԛ{kǡێ_Thp~G4+)?%S6(YXnϋl^=!u>T$;<3k!ZN , ˼ߚ5:7n)Gӌ ԣtr=\`LNЌ]Bдfk1׬Px]5Է F=S4uKO6VEcd=0870?qW#q2|2?:m:rY?e~v.4ݭ~WCo\\_MдB濊cuùDo, ,hZ OcLK4s8̉%/' s[֙Ϝ2s/` cFxx0?ǗKJ\~S|n0w_oM -_ ;c"54+*.Pm7[NW r$`jySIv^8bש.d h؃;9j\1+ ̯ <4c.Ҡ - ә9.0C3t12K!އp繏=B4^U_yԧ =ᶟG{ɛG7JF!mp~uҭgt#!]KO{ih?Dun3|J~'t}Dw?gNgtW[ mU|'~H[;{B{zه6fGN+CZ?7翛KR|YOw??7qϧ_j~S%;x m%Lw|x>lNW*bl~sShi2GxE:^,;+ԏ+z:\GQ:D?#>K=sw!~wA 3t>w߃E 0 'FyQ 4nt=]Ixt9SGS]M#Io Dc xɎ)JERB|xuD[-CS60;40=nc 5ްo9,$kSU*O~-oq8fw5QOjU ClͭKe bM.rhsMkd I_2>xڼռ^#Z>5Gw& ?`jHW,oin 4_NU4Yj*c;i_dH+yˢV"WQKYU69d ) R=Vw4p()50  |&Ll_HWe̅ڃ%h啲ja|Wk\Ka}8r^_ *KԚ>W D6 /@mQz",u7`8  h(?x<ŒЌ]i@^p5l # %"́=b^G֯lG o84ry%ԇ H1 $Jh0 W|~~^sp_wWpg`WPJFaX1OH;mSWzEn/ <"HϟR_ޗDCX_4n"c[Dž -K-rEhL3~]n>)sd#|x0;[OjqF | 7K<|ӞKS^a#D0@ e0Nl7YFhtxe1[.-8x;w\gb쬮UjIrcdnL}ߙLEII$EM o%UksWuWS3ݞ.74blx؞p ~_Ѐ_ ?p7nܸQ'`5z|2.p:eve~vő6N!~>#LI.SfjД*NǼy5ِwv̖,L1c7s=63sD2CJWLG !}-wC `c?Խ˶'^>jyLB> 72vj_Q4{\ 9 y9̺8_aCSss_bdF {6ò=79}z#kչΏl.sAopYKyY0V [(ZI@ 3mGxsz_=zXn|Cq7tcYdvFN7`}Gj\M9'kq3xy^j!bWch&S_G\dG;F#~\P͠*S?qzC^?d5G$TƱŊ;;}suyUnvz\kίPi:厾W^]f^ rZF^נ~nGnn瀪Svy֦*@jx&p=%Ws7Rg|~TZ.rT1zKnu~uOmc<9_o(|Wӫ+Ry"ZjqdZ{6<2}dW12{e5~Y0- yMc<Oj SmTǭ-&}80~Žq7v_a?)>klW _a/ ^Jݾk~ۙr-l3s\~]3n9⏱W\Hobz7%{is}G{t|onb+'0m?16cwm~*/p!fC7p.>_ |f~9r.&vq%u,%7r`f[u[3k5q!r{mmpR;Bj sk8[q3g0Z~L?Y g$/e\9nL)L>y.?#,z\;e w7ǃ@N -#T.Ys˦ Ou|6պfoSx^hAȭOxoӼ^C _0@طxjy^xOjY,^<j}.U7b>xgyO7G};^h>k%r;Vj<,Ԛ[Gߥ:s?1d[+dMfn/cެż&Qϣ{ - 3UMc>^+29~5~ߩo"m?B(&P i@L/b9 r/j14sZ?>_zfO}jrz@DK}F?pT)z^=|Fd"ߢR'b,T&`krk:e2/Vz!|cVّqK8,<#R0 kv \$q$f9* 6Σo2E!` ɐXYW}<] ٟcb$Dq?rRzd~'~<Ŋ1S5>TvF6G6 _#8A3m8 jd 0)k?~jX'P4xEr-ǹQ~GO) 뱾^݌azaum2WRW6.Oi SW#߰1گ O{!d>Ǹ׷([ރxBvSGVӦ,O#dS͟jӱO y]퓱[L3#2!֠;s~O. c#M6䭅UZ],>bVs-%{|}>ߐ $xk\_N3B3i U>D[A&H~˅R(LP<?׽YOuZOyxe:?傚| }MVGu -lvj99=sh.0}'*nD2~Y5:{vw=FYd {gOv9>{}eOϩw6khٞS|U= ~wpjXʻ\n>7O3}h<~l?'#'!OuuGs5sP=WozBw>j<)s<έ'>GxT'sS>wu\+ǐ3*c|_Ng|D}5a1N4kLsmXS}287~r5=ry;}u䍪9t3myxFͿ%S=!kX}Ⱥ.;|}Wa#C < ZS};^sjS?jU/ ~h''y8w~7KmދssދVFW2Y#p#a֒ǽ/ks ܪ{}lTnslU 縙|clT>^Ƭ?gK?/7bh b. v2f]wURX~s6T\ZƵ:KX^Zzbf;XJoȧi}fWl݁,B>4*6ϬSys= t`iw|_zJ1ZZf y_x֟'7YgR3aMQ & Cԃ{6r&noQad~ZO nd;ɩ7r_5s)yqkyx}ח܏O 5ftd[v"9qNe enu.pɜp]9tj0Au/rHex-pijIO7 cu~~Sf驮o"W3? -9NurN9\?Uy2-^+KOFd/|/Tycd^; H:Kkr/Vk߫L|#g߰9=;n]c9_uEOz|'5#Qg~dt{k>#evUes ңKyP2^1D| T>(sQhY{=!;ͼ- 6|r:28{x^9V@^usNY@6pX[KmG8Y/rB^yaMkN{Nb8U$K<;%^nj!O41> ZwoUCGml s)Ml(+y )](#W5mh- 1}'+09c_ f8FSsa*|1e4$ƈ(*8Wŕ c28cYLfZl*f# Y0\db+1d~{-Uv6n<>v<]v+XL^ťUV/ly\\ŚEF&0Ew_~&ڊz3^Ϙ -.vm=70Db<3wLt}# VL)8By^:zzs~e^Vta*ւI?HKOr,5l3qA_|o~íXO je{dz`j>2:nn?&Xu BGoy~coƈWZ<}A_?Wǧzm1$d>zkW}~f #.T|WϯYy9n4 H۱Z!܏?6]NЊ˹=bEeFG d~!\2߭K̐I0vl״b/:m`g:1eA7ùMcs9RϩGw&Ƨ>n֟psxΡ9"͛K0/o8 ThTG?So/ZOj\B8(W- BQWL4ld~0/Y!e%#WkQw/JoNME'̎x~*lfED7VvG-x2wc0 Z`P_^|A[+035VW$:>Gh Zy_l?~q^?Zl1ε)##^S wٌTO̐tuT(aLj~Oϗ̐SMaru\ROumɲjzK}WQmΡ̏9?5a5K&:GW5~SMhy7aNM?n['~M':Ii}at֬-I9ٟ=FQuJd7rF]91ـh+LG?sid\#e 3WX%[۩qL4ۃ܏{7cx^;{վ@Sx1_b{_ KAj NX8`k'#;Q!X x|geNz=3W}kz|]ء#PScntGz}%8Vݺzf>]W&f( y3WqnS MUY7Z3WzR c>n]ujXѽQ5_&1$Br Fr~G,S~zơΫy}8ku ?5T Y܀y;>n@E5ydw?;?W2v YOy<7VջZ=,:i@25zUwB.Zn5 ?\5 ?rcv~;tuk +$exif.tag65 $exif.tag11D! $exif.tag12"/$ $exif.tag13%7' $exif.tag14(7 ) * + , -NPaintDotNet.Core, Version=4.21.6589.7045, Culture=neutral, PublicKeyToken=null)PaintDotNet.BitmapLayer +propertiessurfaceLayer+isDisposed Layer+width Layer+heightLayer+properties-PaintDotNet.BitmapLayer+BitmapLayerPropertiesPaintDotNet.Surface-!PaintDotNet.Layer+LayerProperties . / 0*) 1 2 3+) 4 5 6,) 7 8 9.-PaintDotNet.BitmapLayer+BitmapLayerPropertiesblendOp&PaintDotNet.UserBlendOps+NormalBlendOp :/PaintDotNet.Surfacewidthheightstridescan0PaintDotNet.MemoryBlock-- ;0!PaintDotNet.Layer+LayerPropertiesnameuserMetadataItemsvisible isBackgroundopacity blendModeSystem.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]][]PaintDotNet.LayerBlendMode< Hintergrund =PaintDotNet.LayerBlendModevalue__1. ?2/ @30Amenu_bg_blank: Hintergrund =4. D5/ E60FFooter =7. I8/ J90KMenu =:&PaintDotNet.UserBlendOps+NormalBlendOp;PaintDotNet.MemoryBlocklength64 hasParentdeferred -@8=System.Collections.Generic.KeyValuePair`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]?:@;@8D:E;@8I:J;@8 #A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt#A 7}V$T|rt #A 7}V$T|rt +#A 7}V$T|rt #A 7}V$T|rt #A 7}V$T|rt #A 7}V$T|rt5A 7}$T:Qe@?{Gi%r9lc@UڬsY DpN8a1`p L0^UꮞY9|kfz{{zfgsWu8E{)?m𲀷eK 4lOϗylee;.\S&>D9c{"wi>_k̢xPԖgkuEm=^ԃjޱy_ +Ŝ?'N9gag32\əh&\N?ǣ'13-Ga%$Oi?4ˠ,HCR>[BۮL6γe2`\o#JDne)Q +ukVоNJAE9 dX19AKP.'Q61".?)[In3e 9nBb޿>2ۛu%"?.Dr;D;^L[p_ˡyI{6{&QΗМoPߛsٰ˖{v4ew}E*[k%3[kwAJߛ~9̒\snsO#]-2_ #j3{ ozL8Ĭ/?KobqNеЃw[lߎet{q +]>>i{ޭWed$ߓ&h2GA:;DԿԶZd֔QbZQD ŪWP [%Pr_#T{rzтGeKRCYJ6]{~=wk|nN_t}HPԹ/e/P)Y\2nKŒ/7Aebf4>U +qm, k\Gs5Rǖz}Fvwm]܆'|U|nxeETVv56`s׽>o{M;hXGjiu%.+{*8z0M}hpgGC#Ա[QN5J"n[/%bQzxs.DJLқE?'sI=zidW;@{iNFJ;uoiuԱ ҉aɋU|< j[_Mf?F?r ؎I:c|>HЁc4g?`; =Ag#gTI~Ξ]4o Ա:6S6j_Dmiy-5,%UTՒV*dYjҿ&_.*\r)iJaq55.EUԸՉ, ԾzsyپִR7[N.]I[Юqu8^^P^O_-om4z6>l=vPV\&ֱL[ױt&vNiP}X>]z.h>=GܣW-z|=zD|JOǟЃӯ~my!=;^{F/zN/O?>g'G{l!8I/^\|LyH?suzr]xHBLܤ;駁ozW}+a>|TSJjckY\A͋ʨcy5nV> ˨͒ ]mQ)/rg-\N_JM\.;VTQ{м/y2Y5Oʲ7xWϿMKe|c5s԰HA}kmy d5u|5QUϏ˲ +l#Ta*c9aܹQJ>4-+rU rZ~6`*gH]Xw5~ K}OJg+"~_CZpzQf.ʗ~?/w"~)gx;2މwC~{yoԥE]Q~ebyǔsW%{c3ߢ ]Hp:!d c-;f*HsblcKͧļUh~1i/mIZx1k3cǒnl^3]FҳSxE݌wSscl9'1{n361e/u7Dm8&W Ҳde)/| nDz -ێBoҴK˜%q5u[Xwe~Q9\Wvۉg~ʋgr3 a9R\Wpw .0G,|>,jA1NvKKW Y7-'oF?-;%oHbEqG-=3z6m{} +>yn0-PQCuٲfi) ~%) ukiߙL(W\'6㐨e$8>.i޸f0(s?28-1+WX1j.f_D3=VRcu2FfLiYGIDk{FQ +#ǂ'*4Uo}.D'lH!!mNƳͽ17kr"1ʹ6SG +y;,!V\=>^i!I7 ھvH+FV 0<{ʩ2C뵉g>uqe&@1C 4cp0\')Π7FrpG=FÂk${{CĞCw +? k؝;w(]%"mʽFl!IKZƇu}9=$bY\Α2} vMWde2\xzM,-;_EsT=-c&}ǜӆIO1n+~-K3M$ڈ͗m4dnp%9o AD7OEqH+e1goE9ErD>)ǒ?l-&4?Yf{`k.q,_œ+F,[owA^'lg[([>ߖf`sz 1>/Row=G|=7=,ρ7:냗ޅ[ttkOߦߏߤ_n#?ҭCWu29}ߢ է͊t0K#q:A Xv E}SV{:5PjjP%OyZr*_Bɲ +y X{ [^ե4s[W g郦t5[t_x hN8Gʃ-ylǥ突-T6| ͺnkZ邈~'S:qB<~^QV,W CIc{u]55êr_YFK [^&ܯ}`=o4Z,Ӑiu5W!jq1U.2rQ!Uz%Usiu^v~=wLX e8z C9t,2!`{[[aEჯ0[6L vQ&j][K˩0׼먓;Pv:5LhhgNN۸^Wx.8EǂGh*xqPXW۪&aYv-W\0[*YPFK~qX2EU/6ۼ3ϰA#>MKk\L[`kۨw]pԷK8>ˡM7vQ?<@l`C=x>}>ZF+ΕԵՆrnmEM1}:GnғGE<Iڳ^AO<ߟ>_?>SӼ|!=;Gߢӓ{o܆_҃u5s+ص/ T >ߙEԺB 66$q~ .l렝66,[jc\R)K+ bE.VH\br[+yT?7!xA@L.9(< P9/Q"&p +#,`pQa~sT;/NUsbT˚y gR ؠ僕~Q18792jy6zahg\8 쯚b-d+ N/w֑+<i~3 +vV`exG"{;/)߭NeLQr6XH[z?&N_E}mϿ8<͎8@8:EcGX?c^E>kr@O`ǣ>6(}6m,c@0ZXKzu9>fp=`u!O}>n5fi4]Nl||07c-e̲hzqXEely vcYr\) R^4`8Cޘe3<~k̬#=rdߘ+'c*ODDZW 6eah8'v/0CIieiO'Q&i@rˇn gt1/lyt,F/)\-w u,'農|mt񴄖,ώI { 23uOߥ;u<^8NgJ +?`(Xv? ]j+uhM^ۖzjv/M8m_%%[T<K[6ՈS:hIǻt__~{ߕcA;7JYvW,|0;p8hj,3L/q>pYR/f[]/,_lʆN3 _Y*#7K{LyA|BO??/8|~8xG'csO'\zz!~EOݓ4pG>2q~n cע3v2 3|inږWN4YM UX _0aHg>X!y%UEo^ZQj\NCҚZm_llA[oY` ,2 34\RՆ!ɲ@Zz5/*fA5on,R_,mIaR4$fcD`~YעFX!D>^v!=5gWlueba%] `Mwn;p"Ǡ2wQ}5!Ǖ +SҔ۸on<.tlJݸΎt\~@ Ņ}<gzeO[2} ԬF¯73Q9_ ]i.s!jݚ;'Re}61?m_ uz/+$_/QrtI>.=(M\L\ S5-'i!MRw1-Q{H3m}|/f9XrT]4AV1X OKE>.l`Ox Py݌,DZDIoC?eiCX+I-T6M!ڧ̫3r:%<ڲªͳ0cxiFW8;"lΰ偲n9+q>oT06miC'u&-}f5 :_=2SUy\c {Or|o: ɍҳR 1;<&|;qlkKOV_u!W >yжйNG\wA9hE x׈rX~xj;2QP|s7V%2@}/09S(R&2}A5dqoy%wfϏ$[:<5! k^U5!>,V>1SiT0!~ \05*w.)4aM0AU3 ½8b5ogK~kI3K^8;߁l_l eU؟x"3}c~(umӂsA(軸 Q aίmm{?i^r=yO%<=Sun|s{gC.KM%UyΔ`T}ŠxS}ëYYL˒lT$t|+^ۛ? \NnM5#qu*W>+ZFC s@OXj{ʭP~~<, +Ku+u]4t[8` = ')e],;6v`kXG{n5[ˉ _Q*>jHeA (ڿMVz%TJYs^A69OC;h^J=vCƄ}Fw^}_-=o mε-ԶZVW7 +mXՁ .M `0hqZXƯ [T!\D-+16-2W k[X(Ͳ]f4_.^YC[} ܿ~NC( nGkۘ׵?7uMj&7-˸mKmttE\Ήt1~St1yjh>.5~JW;~?еMz4^zN/ ~</xzx><~7~G[ɑ{C'?Gt0CW7w^n\ᴟUk }g|x-G5s EױVQ#_zjky5\yww5U׺:eΥƸ5 6ײT (p%\f)u/2*ma)/Nogk_i%y\傭OBZyZBp7uj?ƅ剿.V h4}QaϘ>C|gǨqj  օq| ͝KzާvaRtbԵ%{Fo*T`jƆ#? 3}hNXx_;xZyvߤ4+;vԾ',Rmx;^X%d-Oo̦c.76O7:&s_i⟱Nj1eǑA'T>F1֩Zjuo7`ܠNYr4--vZ̨gc{74P[s9GQ[^lY#Iry"VR~I3-3/פtXE#z?_A{nIV h9‘b1)5e)f5tҔٰ˷O9/)OѾ/yo47C#:L^>N/p~X]fnP5ju~i[V\ŻOK'dA/> TMlr.rPWDX"uど^f,IiS-P؎^=?aL)) +[} +֏)~EaX7xc=HEZB1hw[BPt FYҔ)Leb)Ln͵)>TtO#Nna);j7Y!rZDB}@|C}=No`g9cncd9~^٪V5($=IUY%~?#U 5 +CНOV7Wx(H~T),wj{Z5pE߃PRrimP6ϫ793vg ,NRۚ*q_rDjGo) ̳q6>ƕ=$}xTcPfɄo Ki3Z=%u[F|G?#>Nj|oD{? w;uǰWWtu2}!}6}x.T7ˎөI11/8@Ye_z10uYUJU 9?^[t$ ֯:B. ֗ q&#諁OV >~_?M?^)7HV+[l\ms=/4|<0R[VpØZ +/֫xY$)Ljy1U/+]u-{W;[RX+6o1#^Ϙx~neԶk\U%ڿ +-+]Hkct4\l"k&Gh*M}r:PhTX߮8#,>wȇo//2ʀ>gKe 8 nطjR%#a6-yUe4Juoj]`ߖEcҾC4O4moZ&Zn[l4x-׼V؞ax|}U+5 X}QRٮury?||;u\WZ$֟mY ?vm~4 }! o?>L;Gey`s9Hdz҉1u:NvQNJ7wqZMu-ov\u)sU馎M!or}q'sNt'#lo%ޢ/[>ȏtw1#]JKOI/O<'ѣ ߤ_Fn큟d`wm.#=?{B|f{3zzvz<=:=z@>zzپzzen}C7/DI.29IXVM|;P'_S=+Ek +1XRE}`뒆Pb Xus`y]˪VՉgiu_\ױOʅu50w!2u~3(Je~c6DOXdh "6bɺy +E;X)?invUm5·y~Kxh9mj"Z$5̃~0 +1|`{00:Q8ZDM}`F J\|U.LX=TPtG=Uߑh@Z-ri~8DU7>t7st8L9*ۥA}|-:kj2k,jl~o},B^>7UoZny;.BqZEOakz>zRtvLgV'PYclE&/Un5L(rĐ0>q۳.a}oez[mkwpͫz? + 4ʖ{j}RV Dz*OGc[3\015ʋhV*3>َy@9شTcg{4m_(A_x]@٢gE`Z~Rv 2/rKӖ|^[¢Iۜn61yRqk9>7(s|pmr(7Z66u4qECj7sϖS*)[!V>4tU?{{/曊γD3/þgs[3rt}䈩.οoE= 7yi5hܓx6΀ͣז긽>0ul}>A/FRN&p"p$'|!ǕUc@z@m'՘>^Wuק?>׌6/ e .5aUg%2rB>=U3}L$3UnhN~*sױq wzRvgc5ss<co}3<'M E\?6+sr\ײRS/_S WSU8ּ\|PwsE//_Z$2MLrn>ay{B\lLS&֥:.YQ"u`nڕ%TmP-uԾ^Q(1Tgu||so\z7opZBat`{ãaE)umn7zitW56^<?Wvi0@gXA6?CK94VURJc]Nw`+mw +Zf"l\Z u'l sx6߶Vb}@'s{'q^YGhK&! ++dNl[[Gie5׻Mx`r>eW~1@^};i}ԿK |Z ӫ_*j) k^fc.4,P}Lj{5HU$> t_B׾7RתVݫ״S[K`uzhd377vh7p~ڿ17f){杤St|$u6 +KO[7_\J-KqI-r_{eH|QVa-KyDnצn'$C7&kt,xN坥{ө Xr>nݢ[?ѯwį?97:3}% Dwno#oBǡ{sz3zS;zF (~ g +cfvpyb55.,jj!Fjnz?C/˯ˬOD,@ &D/.DĆ9 69Z!k0W |y[f:Ui<v΍JldeyτO4~=:7;vswHzv8{=/Qy+bg46iY|67p^7+H +۱g u,{$exc,xՎӽ`YԷղ|?ʵD_i @/a5f٤Fh{L,@iӔNO_pV/>Fӗc59O}3 ,*ym>7gc>b|=]-=$/T>L|ALb|+LO2guVdǝo|O玈e{ibɥLSbN}2q$eS~_zw"Ԕ{=2 mWgdm罃I{-K}^9] ߹Nfi|bxL7lJ6 x&K7Oo2f񘧖 +Ƌ416NY̝,bzA/~ =.<.eO<rR8YFyoIOjmldⴁ+fN86xUb"3ΧBڛi5qtV@Z7ANL!igon7}qL0DZ +'sffOyW&vh8]Ҳ9õ ԥMY15ީ#Qy;7 t$<}Ub=v.?36BW?o?܇MS&)C M:hN<_u۰Bh Oe-,Xa/BEl yQ.X_n;Z@v}7M%"*9a:7*ljmOuPFjXSAPၘH.}tΏXuWX0GP4Cxk^S)z4+? +ݡaxf"82rbwwIBD\> .D|i:wWTѼ2/{f10/t|Ayz cDLV~bN$J }mꨝ^\,cD=1G+жlB/٦U,sZWsyzI\|L`mk9}Muk]A>m\ZO̼NmL*+~'J?3Go}liI߅~Xvi>f64;3Fh:W bF7Nڷu@֕6ƶ Axq:L'Gb,s#Oٜt!smf8:Q^):.D.Kp~·yE<}:D"oѧۖOi*8Eo҅sme=z~0s}^xJޣ1/sϥ/;_xS~?>rЏt}]mRJ%/Zt[3=]Ɯ_oǞohnR?y>C׸z5P/_g}.>=Kkx@X_VVGgyh: l˱5ɲֶp5b޷:%%?04`wՅ_1{AiuK*D` zGD 6.(y?X +911Kj^7+j _:1kbbU[`epnj)fa| = /Ϳ/0=>110qrV ŚY*@hKΞi_4.ߚʝ|$=6nwlE9/]:eL:fvטպ.sњ:i2i3҂n\fKo߯<1z7j<&Єq/Y o 3i;JRx߿Vd :[}ѩP5:7mu:WG7x8 ,bcՉOYeNclciZA7DrLjҼ?MV?5 4~Az`y94x,F(c#pvc7ܠ3/[HY|U +\>7ezw?l1d}s] S]zO1-w:ƒҲR8t?~WݳѤY}wiѕeu\xu+ҸWв -#ac~aNAa}]}5EjlwkܯJF\<;y:aՎ; `HZWcjt x:r36yB8&Âvym?vΣxF(e< /abJl~SΆxW͢bW@о7{S8P-i)=-~AS(W^sY~Ć_ 62Xr;7KeSv'l/0Aʻ b \YsO]H+c1z+Ğ;s _h48iyjLgX"B;wy,)WSiLxr;x ˜qhP 1KȓXJ-?S~hxayv/\/|d\nM+6O 8g႕|oCzZƨ]Ck&Vajl#a:">\8h_/K϶}?[CNؘya&3=dݾ8!/|U{1:}ܜuYo]}e i_{L{'<ߵˢ|GC֝edѤh0o|~G2oώV}MZǶFYec"8XWl恗I,@;`.ۨ˖quUvBtKMH[.Ve[vlmJW-ΏyG'\ :c>z[ϕbi:?(.ؾZ6HZǖ/6,:rSqm0TTl\[!1[P}77ʲ~y)5()+켽`j`X"V԰\b т "ڿ(5:JDg\̟{2:I]o[ c27x.blkf۴Jx uQ=`C}]خ>1pA #?eM-ulhbzܾxٵ:xk=fH]Z{C;n줁ͽԱ4𳡖j\Qռ"̇ޏ:YS] X֡:|{ \~llernMCEƇ9=7PNZ}9||Ûzh~nG!Witc{Ct&8EOłtr: =A"g8=& }F7g)io]7 lnn'ܷ's'Ue[~t^_"s?GZo>Г{}#z#]sn1}9-]~F?~MߴNqڍ+t#j^RID7#A>+> zrvT Y^GjE/ a ly>ObCUJA;<Dl<n^,1ڿn r) J}>/?:X6s-9vl23ws ]39/}o/mt  僪S~KS3\P}=߬12y: +҂6t[>fs+割Ntj]e1: +{t@LS׌yiqGU⡪V:ljU0Yٯy5 =%_t^VΧXۢg+xO qI֜N5=5FaԞ?u$-˱݄}Y_9aU[|[mV{4s誏aXo.ljvw,]lD]'="N\>F| y\@މ$~ijnޕ9dMQ&gvp:'lJN J['Q4~3TgVVpW'~ $e߁ :Lq?ekēVe9 M2Ë(<{Xofr:alDeV M"E٩Ri:bGK @fiM\dq^\H ^Qɱ)~ d[_bzDc8X>ǜk6M&}󳘾S xKF_xlӊAwUپnӃ;3?~~=rnG?}M_}J_t}HuOC7u(,<,< p]]4Z;h ǧxM|7Q'8۞>J>0us L}j5\`ԈcrYkCCR_߫m>^S+-ZzBNY:[2E#{叉Adž}:ON +߄d0󕧄+p-\78 y}l}B' +zۦ:ry\6}ٽY:a~Ub>-fnԸIr>p?K~UͽPzv +gooY4GR+ԸRba];=BoFag[ umiA( I}< Qs9%^SEaeno[7U)}_qnˁ=lC{saEp?Xml]lYU'sjM]ԾZ7jZ]9+nq W3\pJ1_55a |iI_)4۸Z8_25mF6o/4ݘc=wm޵475N^o;б=t|$Ȟ :cp[bMa~oG%{ t1zIc{K FSy'|<.8Dqh$z؎9B|L碧髦 t>}^9=9B?'ǟЃtow?q~N7{ɋtsSn9}n\۽?+C~ҳ#9;/^?¢^[Ƽ"3?ӳ?x=ON,+@4/X\5 y kZP}lNLT :BxY??!1%༸[DtlGn]\2O9'$,4-GQ=;ust|`EX1ej?0GX.P+Uh˱o龱>s-P}Yr@Ŝ,y1"7~Butcpyw e1-ʂ߷UwL?L96tys1ż _uKJE?M'|C~0a +d߯Mk#|z-9_zH8a _t ^%6& +:)|2)+z4w{>Yq'Zg!+S_JYA7Gj!onَ:?b_l;Zhu/bi^92CFg3=\vۑUק@& y_zLt>iq씴ŬWh]cMO{NǤachf^mrB#>ozb3-[TXf_Otk{>(㨄3n}FZm[]<+?=P߉e޿s~3Ë]%ޤiWqYn?/nfnnq}}9O[gy\/1'nӝCe1}}{FE ~Tn%s|д!úRVӺ* }ɹGt [simD_m!6b B]^#Wm6q2 ]VnFgtD<#-GE7ܺWs;IbB` ID.h $vQikԱF衮-Կ飃{hbWc[ZB[E`=54zzan%/5ea^^#?.ރq\-4C|} u~c$~``z#P:,"Br`Ƚ[/1S bfc*o렱h^4{Xk e^۾]\N+7R=j|JC,<P|=WeAfװƥA v𞵝2.I,5Գim M4i@l|۰;*_Gs'vwt!:Su&vht*kގw[t!|F /ޤߡ/j>Kߣ+>?*>h20M=DǂS&NE:>Er8t +]B_|NT@g#髦=z2OIO?7qn ޢnۅ-]~U]*4]o꿠+v 3xF==?M=}A99、?'/tm&^GHW۾kJߵ__ #]iu}M7{Ҿm|IRZhpe+ ^eX  (ռq[&L6UX ;UF. _cü_J1op["s u['W1sU-aCwWQϒJY$?X'zB5X`,0/l_d}nRM.lu-naӳ|S:\7GBnܤ>d(ױȘtsMj _֯~i6ԟg=`Yg=2 ;/}ʻLyڳ8V֪R6DQk= ^sηmж9ڧ3(6Zf kF3V$ ߒ}yg}~i;R~[3ls̜<>_\{w<ǣ1<>&: ph"u2ؙln ~W {ZP{`Kc.>~Mߟ@-ߊZ%q,T.m8Ojf[ΖOx=Y_Vr~6Lk5Y=}s_E]\CK/J)7ao31??7yͥr|:;*n+5>b̲%eFo6'ҍϩLE2 oqH#N 3S8mXY13ڲ%l 3Fff!fwvunխQ{PfwsOr^_ 5)k +c K`K k( 2K[ )zG_YՍ0d'Hݢs4cxfaR19>ޭCyew CNMzi_l'5G.m6e7F&Dm\;rU!.{tY uF[!7xY.Pn49ОNA5rkb > aQʖ`zڿ2.:!QxCkJ4EZ/Zjٌ<7x;w4eպVp]@p C;]4~zN{}0G۩em5jZb[XBZU:8I$\zu2Ot/NЍ+7?}kz~D~?^`CO~> {>DL_ӓt*5I[zםHg(:Oȝ]QA+k}y ^u>n[VI1ԳZ6 kO.5_{Lk;bT׹ V`)7x{VhtSܯu.ZTyfx #ַPbO` m]^N++u[FϤT>_\|1ꅹR>7BU, 9$6/$sG7/%3 N^ȺA0B/5,wte br :3NMmj!ǜ? m7˘Ka Y(#*r@'s?{p^zVvYTسg~gkb +KHRNUcFyٶs8W)[1-gP6h鬌XhtpK=f"K~_f}>74fJO?;Okži.5f)9!VgY>x9Kd/qE Kӻo neEkmYkUeqͫi5 f.'qvѝdl~֟TK +d6i|6 ^x; OpT2@g4~dm7MJ{pz(T/.dވ=^}PgT#cMM]I|-1a7p6.Zj^3Qk/_,2$'[CԂkP4a>_їX kmtp9sirL sKܯv1!7V iXw<$$A<͵e_C7۩ (LPf/䠠^|A0J͚0jXIj҅A2fةn.V?!Cm6 ce39a_3l>ߍ2׼2ca\&fmc.dOVGvn˦ s~8{cJT?,X޶>ך9f9UUr~ j1&12t"r%}>OO}\gˁ.|@riTuΖu[7ۮ5 +m^)0l Lk(a=ޟ[Ojާi.(pY^'dGdc8scY&6_ fxR C@d+ >Pfy"QFDF +X(1TΚC:/&oDN05e_C5 _n}CXQ?qodoM!jZ_?67Ot8jF438`՞&`hf~``z]^LQ]ֵ6Q˚Fj^[LۨgC;uo릑tM-~u^5}KC~|j'yD!hsѵ4]vGz.FWv1j%Wu[ k>kyL/ }B9O3?ѿN;okV~7OC zTw^4ݧj=jE7.Ӎ t=oKOo zT3i=>Q>mCϚd8. u)!Xy <܍uԽBsN5^%VԵ-ې%5+b5,)eԤVd {xI1@4&߼:Q͂\!n^^J ˊ^7!B`-Uρ״x5C|~ ^dLc0s!b\<T-R <1x^ :-s`\?"yHֈ^:'UZ=Du\pa = PMBhLbՏ}jDSOY߿ J.2CN`>Gq&ˢ< g%k9SW!:`uv3SaT2c~"vgaNt4)޼A.=&ыf,y<>kpoFOw ͟yf~R5^ZYM/lHшUdn&z7E ~eԒψNd-kx#o'/x懢 _/':@z1ØyTWE<&x+uYg#v=q۔e}]O7lR"< M?oT_>uyg?Q" ?˓"lHE؛Dz;SsM~'ċ*yFK#mkkó!jL=3i{H6 .m)Q_cjr5n*}_w"=ixOYZi '"tqNx. ݫMiRǒ&jSt2˞jߩ}3JDZQڷk'$>KetMWޤuQz?[7zU^t9|ǗUZe:u\7ݫM\/zFӻs?a]?? >-ImY|Q:}yI@Hz_Ѓ4];MWOӃ~^@Ws9滬|\wcԷʑT]K-FCzV3TWQZ^jR;UQZ5z]=܍q4@D}Aw.``j-K9cb'X!]}*< W_-Ȥ%̵ڃ95̶jnY<UԵUEdj՛bd˸:{X9yc&Vp}lJHƙ#_1+SBUACx^2󱧘33esuI hc0OBLy϶(WcW3=en d7cn 6-B|Ʒ7 &8<Fp~fݹZ>՞da0F7-`R{u&7E4}.0YpBa'rT0z=ZdeIv/]!rLv%.e~.cm8/[xouYL0kdجS|~˿9t}潀ZNT馶ؿ˲H' ӧ3 +, Ÿp,+6KeZZVM +7 ~p͘ǔ 570˺DӅe:u](@-jxqr\ ee v%)_Xo9*]I F;,M3(&snDP|:Thnx*|Βk-h4f\(!e/14;]3 +睥[0nY,κ.o%!|7'Vihz]OlʒktY#{MA9; '|V^S3%ᬢ Qj}:Z+֤y; ^Y3FG_yiT9ӬO{m٦ C4 5 8rG xlQ5Jr0TXV +_#c{g3Is>G(,YZA +GMNeD; p9Z~a|޼6 FBqV:FwFs˥w|:yC_Ыi<]:Mʎӹi,u&HB vPO͖lm55L:PʼZجS )wazcg{y&7Kan(-0C̃z~?,~LSSM=}U.`"4eglyA`p/,8LgJ&`J,8ĵzwqt~AS,]hQ'|u>s@ <}jY{J7mbWL=z[lvS9w7s\ m.ՅfQ>3(ozf]O=O R #oW00x~]o`fh:h~1/hI-8nآu[}[x nܨ3J7Tr& <`~+.pm9@ʗS +/Բ9}K#5oi,a/ A n+G5ժְB]+zI ^RA Jlfe rۭ_^, _]:TJ}]+5J]u:"ߣ_ߦnKmm4GhOۻhwta:﮽t8{{ƍl f'DQ=FS&;zLбTݎ4w遼 8Ϝg  }G;Ve:qΤM鷡wVt?ej Wz^6g$tM- ]Uzzݦgizڍ̥_L9`{TS:hdC m Ե`ߪ^]-ӳ<.c*pq)-.uMnؾLkԱg}i)f=j2kXZDUr}G"gIQm.K*21yސZou:Z?}21?TC-@'60W0Gi.֧%lr kyM?؆ZOsLh Qk~N%}g$S>4Xs%I~3L^ KyNzcNh7&~v'2Ɵ=fuTs$kA&0"֮OJ#V֪JtmԈr_ZaQ@<-hQ '7 +C qLYdݟfWX7 >z~Wõ?[/RxWN_R `j #~f5{xlz?w~6ޒ,N},Ì[^>0LںVL}DCm8LZk&Q ӌ~c8Ǟ`{,K"\>\fn t{l}-׫+:T:0_#6 +QA>a2|޿OXúo䫦 j|杩޻Ēp'ϙErVT%<uҲ&%.=*ӫ?x}'y^ Xh$z1j'L ՚3XVK.CcK˲ {sv'<K^~EwmHH쯳{[{ u/¿5~ْ#Q#QνgFU(sk L /L[OO[(OEYԾVjvQZwtSפa|֮(6ci|&O(:@[ǚTV/G4reF{y6ZGѩ.C-+l,ޫZ6o=ijv_'},tvyf^Ow޻[NM!ab&xs=v=1㏊Zg\Y_\/$9_X7#3Yd9{oY@ɒYɋ}qM9$vopGk}/L_鑺v`<{>L/s,r?&^ӗïocoz{Kt#4E+NՊt0>@Gh<0L# 4]ڶy{56W0Ah(3'hjp|o:<< Z@l5q>8E +VѺ]=One x`6{Ql/&U.x WU}Q_:>Xa9E]\1\ZB#]5mՌܯqK6JxFOg0dcq U*` _rئ[K-[Q_hm1{EޯV;M5TVo]%ի-j^Jke5]t4ezS&_^K5K(x߫E ?5ZZE ˨j1x_3@T6ahY"X_=sA}\﯎ZVj`_.څuz݄n mos7mQ˫ktS y;iX {ht=@Xw5Ҥ>?H'#Mi'i*0icNqGģt4Z8w'AwNOIjكqRa\m*}g^{U};z^u]M{_F~f!|MŬt!,}Ho^ҋܢշ]k_w7?Z&I_?ҫ֧=+sE3Et2|>R}FoѵI?>':ݫH7K/[= +ud5BkUHjs߳֨FD]+T6&W-׫A5ӫhBԩ KʨuI9sCY"/`M`j=1\7uY5-*EԺ\//e&uj9Gk9Чхes3iY)/̯yY g 1C1SU|}tnIe?y_ ֣ j+"DQ|tf}`vea #Y 8YQ Kw?w0¢|^M%Dh6e/,][?X,%TTǧ;|$.,hvr,%-'9 )Ks ?]I {T*9|Db^p< '0Q>FuUdVcF :^[޺Rf3#< ukf[l q1k7TrF0[jUwlWZVZu}Lt$eNd}?@uQ߫k&\W6PR5u˫BV! [բrMf|qE-k1߶\kk~?\M]ԧZNC#;Yح[V5Q6Eжn=Jcj#t}4;hl3ɤ :(R=rN%0s@h2Nхst6x^3St.8E'OбģC0 &h}tH/rHeԲyWhyNM{z>Jo;ҋ=}H7Ki: /de_ݚ=ICzPM+zK}qcwK[z{P}ܢtg.Lr u7uߡwO^Kt<.:K.kt_4?wq&=E\ai)u0ܵڗou3 o 4V7QV7Pu-ԻbR뎩%mG%P0t f`L%OC0RTJc.~huxǻ@ώ=mL'Pύ r.%Ea5png`?:WTpM90>5/3iYZZ3cf6<3Jt pWs Xp2c< Mg?%{Q/QOh?t3t=h6<=h{'=OxAk=Q|0>[asyex2]=[jW?G_@~ޔc/WߓId0z6|}eR+,3a>0?kO0 7 :uYm:|XO@.w7`a \.X"?u 'a'9XP?gWa

u5rޚtyȵ#G/gy޾+ 8&hxp8vN}w1x,XZ-*1+!L*Z>=uLCσc +zPeTR2 ++f]X! |5M֦Ck|ܴ4LNxa>XF0惚5>& ~Y jz~5W` nݾ Y5{7vSNZN;Sgo7whdZ/Uػ}4J?i*u&bi|W 4pǎTQ:|Τ|N$Mdqf~`xr.Х t- +]ι/ɔI:c?M4mj[t);S~^-Qcz n?Uwqc.d4> zD^w NU5M*oҳ'jACwG}_?҇7!=Cw+ZEWh*8]? k, ǁϗaLّ3[oNHiv&%='\PKmqf#Fǃ,HK?oVKϰ6O&/|Z@7G,o~&yx1q-]_ny~d<%u%;5lFDxK5?<ϋwqz[᙮O +4>O)zDeO ܭkBD|$!WexX\^'u†MSٯv[$cʰEA˒Iv03'ais7G;>=[Ǿ; c~pd8)TbI? 1WLfN|h hP[]^ MSu^}Sz}kb_[ޯ*NґQMbI&cXiBL,!e{ &4䔀bqo;i~#~Q˵ρ:a.+63#|dtו0!\Gl\j4_\6UR >%:72Av};~F߶RӺU,*%%T641ieP*L&Ȓ*/1[VC 1u԰cj5.SMw4SZojZ4Qۺf^ș뚨gs; nQ^zU5mԲR}Fhֵ<pHC{iﷃo ^}OG15qv#L8LS%k,RD: =0 V4];UfZko:o/{{_'>_ҋj?en [>Mgҡ7߯N}.Fi9]u^17a9vߕ +WPxd_{~Pn? /efRo)=aY,>~mZ 1[83`8_e#T$j$?fsS4iZ]9їIVx`֬dEyLOݵ`h8slDh5QNGGNei}_24-`{ikn?iD'5_u2~Jj7/#vʜ:^6a=|p2s6 +#įV'&_s}(wY(w0Q/2v\oF{qt\0@5`%˛<fr8A}o7#ګwɞea:7Lygc2:rDhxdgR<0+:v i}~j6j:8_+b}jM` +NO/L؊]q43"_׾BBuN'S47/9 u.V#9O#|awiu֍J\Tr͒8c-vS6~W~uK@=5w[r }9򚾜|C=WQ4=t +g~+0nzi`W+{OSjm +iָ6~KՅon2 z?d V5* d]`ZoojVpQzB _<eZ 4S3rDtnR#[0@.O|axU;CCxI@h0?4p`yRϏyBRG Lp4k?]'wcn?]7RizsKO v `j5ƛ¾w sIm:`I&90@h"WN>uNpY*j/˃a;8Zh )ո3w.ɥT,\ yXؼ7USC;og8`#6fwR:o+~ebʹ[=~Wۤk[6}Wb&X5Kxuܭ_w +Cc:7RdžV ^\mꢮum\Nf5GXadl;it oSA:07M4M݈6L?]c=(E.pA:xΦiXL:JSt?`Ӹ.Jʅ5.(&|>p| +˥5\3/OlKM4;+y-c a9iz|6g܆ڄ vРpLzJ闩|_z?Z&Opv*I"_<79 ~%.~ܜ55U-*msm.fr='y 6ѧ_{:Z%n@`}@a :̑}[ç[frIaIjV勖EMkvm¬\˶#!\"Z+zǝkdꦅ <ki +a};y>7:d +dFW V׬ Ծ^}]%e/fb?'9q$bx=@iϰeic^Lt|8Jsr{ {Ժ@d^ϧ>]׿25p٫kd6Wnr${a>CC)#`i4vf~);YÂudVۇ΋g" Y\{3q\K{Ke3+j9ѼsmYvոpxSj_2{zW%wfR̺9e̔C |/ ˞9YW6ZZeؙ3,QZwPƐvNa?qDS;Ixx%\ L: lQdpgbnɼt]c0<)^|VLКH0;Z򄓨l~NFg6XS`yh F( c=Cۜk5neݪ*Хk|-}~>yڿ/ѧ=hFۮO+Գ{~:!bxo|&RMԱZV1CBrnUapՅT"WZƗ@0%t?!S~bL+gvAuekF>ue 3]gMoNƈ0@łyU#bAGFka~ fZve&+fLCۂWL^u::c;b5`7 eÃ=~o=wIz5~9>TA'93aMz9M08"js +}Kcaګy:ë > ك5EGgA +js>f]$)!վ ;Z煔H /tִU*kY\X^֕gg3ooֶ-CTPMH][ea?Sݣjcg<? YcU1MnS!]?&?Fou3Z7=C'~\pUݢzt-,οH׳ѕi1E3jYf?CX3M/w|ȵw|L㺘r\F7P/}1{T>5nxC'?;!y@=U`:.eԨZNѷF2յX6w3`Ff{v G+uq~/X(U3vDߗ#Z@hfe + c6l3p@3߲fT4\ٴO9ɮWeovty|9 *etN >c9g@k|Fu}7\OM̍|ns {YR5g_˅w@7~I䬏?sty|ߠ T!i46DzhߡtD-&]8˙{hu$ȜKy]V.҅t:N9IRO)L>AwhX4u9ΨVp^\4ma\y:` 颫!zKkҋU%1}L[҃tbm_ z>@_>ҿr`e>/靚ﭚZdz}lE:>9Յf:ȹ@7ϱlzy.Hw+KOy.um#zRy*k}IuĄ_FouzQ+:ְwߺvCahxmZZVQz׵Qېyյu`C;?ZS~J:.w=P2h_7TH.*5jN0_zS04//ڗf8 hXa W뜯0|`~o=fBW2Gy]o^Em~l@k$;5$ !! Ipwwi=w\U=zvy-caZ}3oL/2)WI\P8vտx&O"\ՑkduX/V0O6WKj9_m{;?$O獒:NMGk' u,{] [}z!(>dMXd[ݞƻKG}Y>~0mx< :D틷,ѭsg%}n~q0^y9Oo(-Of)>#~hhes763D8Fx:VY/QiM}U";\17֠M9En /Z|n3&ruEOp͹]똼iN͢5ؽ~Iwe@I :sszi._Ow1q ӲgjiY +o E5ymgţk[ PW!$-۱z(ͱ_=vhG=c8/J0-t:k*Cctfbr^WO!M6|3ޞSCÑgb-:z<5}!N0ZN﷋~xzaH/0g1J3M]c f|V/ vdޔ3]Eܿ5B_ +NH}x 2ʴ,Ϛf`(2hxvc9da8V76 P8u궤=X0ʥԿ3!-ya`Vgr\Og&:{ZÖ!ۭ}#uEZރͫKx^IL:,1JZ@0( ;5˖atPb=i}*ǥ'c><3?,}!/=1`'ga6/$h!#u ҅vpFY_8(ÙZ e-Xg\O3J*[Mcuq-}z Ñg6mH׫ӵ*,Z7ɹ?u;ퟯĵRw\/_Ӗrj\F][iV\{g#/\"sQon +C~6V*ٵ23 h}x1~zY&#D,0ݟhtOm&s8\PsCp<1-w0^lfv[队c2td/42Fgr-4Րexe{N`Y30hF.jG- QR3Fz'sz!|a-N;@W 18&^d9r1ӠEF0^Pˑ^-:5buuhچ8ZoX5xd@_L$藚 %=_USmPl=/O,*YK+W- e:cK5TjWQJjH_6ѡؽ--ԽU6P2;VSۺ6_@kfI5ǔR"*W:E,KYG/<^s~V7`5M7R˺&jB];cckרfj6M޻ldh{YO'q˝I]Gh?DgN I>Y;6J46FRKe5\q5HSttQu]T7Yit2vN8Fqt{xOӉxd!SNuݛKmG'<ct.Ew+ѽ㾟}O}{?ҋ=Okr{Zu=?~_|?7-w?ߧ~vwj[KnШᤓ% Ј3Qu&C]+8Q/nUzQUݡeYqGٽ~a1/nuo۸_|y_3lCb]T-נ-,R˕z+kuug +l #$VRz/@m:4)B;tag&5Hkrr.ya,o^_[17 /7/vdnavX6<N,PjUq| /y٩ YVEkW0S4|83?SР7OM˝ep< e W^,D dע F[f4mRoI3lgJ}x: Fg_~c~Ʉ{ᘤFop9o&kb/1ws8d"F;I}gh" ҵ.Kzju=4ú~SO;D(iƯl! m$ip7f~z@"<ar3StVdB393u#u`Wœkv̾m@͓SqOOUB/w)/ϗ.%gآ^-ZhڋkrfOؗp@anS/UF(Q1'lV4aYld#\ ]ǖ up3Bsi +y#{))<^3]4uoKSc|S\9 +Kco%>W?T"w{D/%kx7dqR\9-UV߹iZK奺|A5smY3 mW" PN +;hUg{,$ ~_nk+4𭒘4fo`z3^@~ʟNר bi |ױ=T4_6_niIP+=2 +aVNO\+\'o1`}ش7܏~ju [VFW$Ɨ,O`< A0?If3M_3ZCqgXqO w{*ggx?>>N#b~FB?xA?7N$]wbYmNeb/>:܏^ؽ6rM%[,gR*VGy}sKgSNL_yM/ы~{)>Y=t"st~_YwXm5p`y]͜~\9hŹM<_9}Ky8Ξ0cv\3}pEE ֹ\s OjF?ΣR2CjZլ/aFMnwMrn5rjTRV(S~Moj|%X]"jVS**_PcfAQ"CǪZ5WCFMXE]Z~_ЁӾ{Y t[v};>A:uqoSIm z@L;=wQӈ?L'cҙL>IgB4:H#iÜ;q.eϕ4zCc4lꡁl)L8M'i?̬p4u#aS_/:umgFKO:rhyI?{_'55=}5Vݣ ^mWz޶?B?wO}k'[Mߤh 5N< '8&ӘQ_ x9kT$=*Iy*oQ2u//ȥeԡԴ^uѱ6,,E%qBmj]K+iW3kV˷ xA5-,Ey&YޏZ/|23 .(uybɢU͢y`p-̧af|-KYT:;kUDŽy ul?1L͇o\ g߁煸2FWUNe&̯?/sH5|Ы~%s`6rAdgOE3@䀠6Y!I7x3;sN::L#['l,f)}DGǕ?'hnΨ9'`lW8-vi"N=6wz<_6@қgKkVkxM4dK C %:yul$ӵ5Yggq}鴐 kӌ7 G>9Kj)Z@?wn,4?M\Jk5ïA3Z>!c 5v؞['LO_4]`9F :6aFg4t}>P<kp:NG?ib0$#r8,1ͲҿR7nl`&\5ym׾^f|c74&>:a:{Ir~䢢y͚p)09rt:ѕ YVhaRj͹8Jz\N78Y#nB}/|j /\wp( '_$j qdٳ3wYc%~A{у+t<=nFHz^M;DJxS﯍vhֽs@:Meu5} _ot[ʭar18`ђ nx XLZ Pܲչӹ4Odۊ9#klY$R 0}3µYf^^6!84|ШsGkPZ%/~p``)MU 9~axc۱;TaT5Bۯs?pUt<]z@A:/Jx^!aW07RÊ*Y^ fj[JmZwSvo{gs7z/~=:>4{wCj#3C{*8ôjtsN\0_ 4rh(0gdy5A&i^Tuٯ{:4P8vFt6 ju_Q:]̜YIPN>sg<Su_ǟmzx1Yr5>?ϽVY ~W5ݫKwʑo{G*=O+ge[ߏ__} zYܢt6a@17quc}Ct7Bײb0]9fEzTz\zVܤWw]CI>Ne1Թ\cK uq%,miWμn7-vVqQ)5,,ŨWLMJXذby9m]Xj`~1Eb +2 RӷAc-Tr<~痟Ay2Y۰4&J ^gNgWG ռ, X2+x k{U ` +3ysΛ2 _hX6' + +4~^Դ\pA1\s|!N j:xcÜ^ffaVt23@gFwQm`w*sf U1Y`'L5/Yk@2\Èߓunƃ)?Ɲֺ +0+e0:48S|>Y^g$Zt2,z;=ayV7 +~0_|KSwyc߰1Ӝ(^m9^,l02ݤnDusIҌ~ú 9w0`@WZ9(͍\7cz\ay:DR1QsLcXK1<&SќqaW^fLے< ӛU9,!'|.cf>#:>xA5ŦoVloFD5u1A[4,#ӄ/k˟9 g^ :3wm4ɗYVNN-PG#0;ɨpF4HK3$YCj1eNɕz.Ed|Zɮ0Z[h,dWG5,zI:8?ѝ]1(D(9Wv2a\)h^ ? OnrڣgTz8ph>pvjh9D c-S?jr,J6Onqg\'u{Jth~{lJ4}lzS{Vp-7l뵻p)qv6W\/YGYسmө1wezcY2&0c]DE.u0t]H:f-5LK3?9$˹ҍT 4efrV0q\}mi3hٟthF%iNK ճ^u)ff`rq;cދgj;7թĚI-:^f^倧? zQO0(Et=a[j9u'd~c~_Ϣ<:YȟKHf{RYS|i%N93=M#X]$y~FY_<ԱYx|?Sz\pF}Y'~l96ტ-že" {C4X|Q3@zu2u?N_/]#z=hLk&z(OWKh2Q.SioŷSjfزy46m~ Η@=#-͠ 1+]fޗLϜO?1/׌o\,S-3}0GY 녹~`:3l0zxR $/D? +kOj6ROS`sK-]ϻD\?uCa;z~^Guӆ'-}/Q;t.i~I+Ӛ.=WC>uWȯC??ǎC+zQn^ ?$R=Br.%5 6 ڭKt'Vy]nOoK0O/+P2XK ˩mq^^5ڠ~UԺ\RfhoYTBM Yͯ[Pn~/.QS2jS;1;ZP<\EE=_S\U->8j'g$GtenvU L%͢Ә-gO0jփɢ9j^.OG0`֟n3.ud=lᲹnB/Z?2,ٞjmy~坩ǡL|O^s8ϝ5Z?7 3d\34hl6cKJ ).hN:yz0Ѻƛ6]yxI3}|y3u1LUG;Ϗv=;v϶Eg ESʦ8YS,0-)}ϭ&VkKNOe| 9 kgü u" p?gtg)T1_}wϔ\k DpF%r 2ȼh]2ۋe`QQǞD6[hݬk +^e[Fuq3_[ 籬L892ƩyT=;t9sezHFZsN(rYwfqVKhf.l.O#=Vhy_Oul!?䬅H%\4u +oZW߯tX$73YΥ{mx].oYx= +K1UR[Y!6pˋ]>os&xcE'FXeN1n5.a2Yg D\5~ JLa8^|B‡|H7aZwLqZgf ZW )Xߧie4 E^J|>9'?TS8|mhȰ3D{<=%}j}YKmN]ѵiMY>SѼh0Lk[(ۧZNtR4s\U}dr䷉0<΋pryOn\8?1N3K &Ϭ&߯Ae{S<5_Z6ZoCy}trG'u!n&\jqLwaauNeݼ/L_%|Q-=s|6[E`5[V[o8k+Y40Hq5}N?sݿ]wIux4]MWX fO~::@:wg3un}k |֭\Q37,.cv +/SqK3Y D%5x_uio *Xt Su@0@@5z]!&u~ry[{ ƃa85KL&0!Pk +6fHI0A=VP1SB4zޗ:tOәׁϋzwXA#طj`Fصz; +x ]Mb}zq^OeC4;G8?9!",u wjڀ/8{`86p@L_µ)!xe۶Z¿c,۬lu+MA}C52~ads]@O~d?KP{KQ_uok3TWSR﹖5Mu~y:uժղuzll/jam5կVZR֬UZZC+[PB% +TTS[SzjO a_Nڻ}G[t`~r/k=AA `I|g\ {k%VNxFN>M޳t;H#h)gi(4<48KAdڦ ܮd_Kt9}&#49>|ZWp$ ل4SҼn3Nq %K9 d<=*O]~e;D=趣|*]șEusznܡ/瞏 =kxJI^7-QC_^^uM3{wZ߃s/=#}^mAML151AFULIydzP|\Q_:|UuުMa׶Xs&/Wg"ki3;%\ï!3~lRVRmL/:@=,o"ciW>)5,Rmi}IkJfy.Ťwd*0Գgx_´53G oyiT _9\5DM\*\>a`~' %n3=e*Lp r/<ĭ8;Ux3/'k؞fyQXM/~f<,2XYya})ph'`}|rim^N7'wN*`xP/~u+%_se<7/5Uk +?z+,VO~ƩOth-I]6#>`G5D_zGG&+.헭 h:kwnha#DH:)Ԍw?=ԼKijYڇ⚳^ߞa}&>Vf/-(mfMz8{~|щƿwfK5Lu{Y3wsnxl,/*^+w6-ץSݺ4o_a ҙ/˦V*<1w0Ss嚋jB]PyӢm5Eg0 sL+:+Xu 3\0^qg]V~Q,̠t^ |5jZVNƏ;C,zgh& ޮni\3%?۠c~63hO- P303d>h&1[b?%1nyTQkq'$ eX'a_S?yasXO=>=jżTDiY2¹A@rAsWp.dOgy9H>uLJ3xN?Vϰ_лw5|.ݮtjsOҹ#t2ķӞ:/3Fl6Qr^O˲di&s;?5=q?_J˳O A\|j\Q + Գx{v}1umoYAMư渴Z/hw\] !/o4Л08D:amB Nv8^Xmo|Ke9Zs1zA4:8.x?$c>ig,j 垠ma E?dAC4r8$ M/N ]˞P4Jr.]nӣ.yDԱ@H}zYs7QYLv}i%g=Zs~Gϊ:mj@g{tvk0<û+ MRj^P@5+"G u({7{}M!.Π aa*R9<ڼ* o~7J9r GVp?l̯`~z"{\˲pvSy,i gΗÌ0= :9F+Ӿ_,lS#06>][3-YO<<M@pxK9V<{g5D5udyMſLND'>_˗+u# +%XtR7Oj95 z| (] N%}4ϡ67Bw'IjVIonqoM`\t23)~nT7Ϟs+YW 4Ovϛj.keV5$q\0AJO?p9dw} DGo0_w|F:qgK2_)Mf[Oϣw*s38^&Fl<= +FY1_Es,Mvop)o!~k͡[kVKkauӜ25Xܺ$w.OszQkk9kXɐ&D %G]-lmxM52D,{ukOt)ffƁ',%|ӼLk:eݪ3?S5>0a: Bš\>bh: :nvyqZc*PW叶\dj_X]?,сW,5G(@l\oKVjؠ֓[=^UѴ'LanZoO[z+I&>X/',5qfYrn'|YesN_pɦ'4Ehu{a^ܠծ9JM@{G'hL@aCYxj['F hf%K3jslnj 7 Ux0(_upm!=,鼝uU/VG2407_,&]{Mp:ͼϽY_T2/dEKvsOcnȌY'xaKM'|-+ZAᬒ/kG ǵtMDx Ld''6%eLgHŊh^҇W=~SOOM}=V 9 ѓR2L*F踷$uѤ:mMkZ6WRzU5yT2)~sHJf1scX`arR0~݅굌.ˢr /+Wm{{#Qg\@ϼ/&dǙ7q/X=ȼ.Uj,5aEu0ע3ٿ``huq7J-Cd]c)8Wjg>uF=Ko>jy^?uxBo?>\O?'VQR} _3'8 AL %F Óܹ5(#c}gj')O'|h# #~KlV`%Vc>qYqXW>GmԼ8<5jeկԱ:DnkVR]SA_P*RjX]E*lI!_]YkV-e˟!Q͢rj_LkcjԱvouG}[7T;@@q:O):O'8Kc(y5gO20G}>iѨ7DPˌCǗ5A.ѥqnW/qwn\y7FU 퍨D8)M7ӵ4SG>I{6u.&ԱбoPn~C48խԶI=6ӞM\ȱ]_ki,sl !T,CoYп_ⷍ)jUߣgu^޷z3'3}w/I5~Wz^^T=Տ|se/KW}?r.U}t{Ix; +/N*â1?_Tޥ׵u8B:^j[VIMJ"xquwu3uad4~_@ 0N^Ǣ +T]QKV˫mIN5,,fU۩[@'=.jXAuk +da:RX}vW8!1@懩se5yQ|_}=T>7Vu*2Gk* X ~]R2]ؔI&~0Qnw~z:3rG;LZ2aFH +L6bOk/l$*6CE%vyXxdtvcپ6TS3Z7<;d_k`xq,i|zT2+fkG^OUJb>`yz\S|J4|S&u7j(=F{'h5<)Z3?o^:{mVt?2afRXg b"/##˸5slM?ZxlEgtyn& /`|Nއޘ:S@kxS0ٰCnO]ZGgNfn?E$>KOs?eԺ@h2r,N_49ubJxfql >[mrN5ذ,d ؏3kLLr煘3 ÃV*wYe0)@BwuN㱶&Yo59k0sC c:M*;EC-?9O}>^5av?9i3}$Щ~?ɱ`5o&C8fpI{ŲH|1F*?ڧCõ549wa\]Ng+]iYxop?3M>TǾpnȮ| M=I`vY}X'i~M1+ۖFFt xAqfAF&Ě?4E9oaH72.h*( TuDuu̽ s</BMVu]\&S6kfxJ`Ly^ A#y;CX`~aAgU/ +qKmA3zHh:kYW4;uPStzr3%o_e" `:npJE\3fщ/m}gT^LznMCx}8~ܧYMztWӮWtdеQѾVڷu-o-:ZW\=o-ͲX= g>/k[b8s=5/<\Nύ1?^o +MM/_VۮEԨJKVB<;,^a_hMq,Lq{j 9kY/ZD 3eW*bq}Ax9˳, U!~b\'ϤHm +\+hEc;}>J[ѻOv=_7ve|| Λ pA-n5^`s4Zx|MgC^bYY&EԹڶ_2C@ =N}u~r[i])k s c eZ^1sd#*˿F׳/Kt#|E_7I}:9E69=,}@ KK|<;NGh"0v;BwP^:Au~4cQߦ=rbqj]BKgCqOP`.yR޶wo];{~3u{zQ=~@?ug}ߟ~~~=; =U=^ Oј6&k|}gsT}v=,V%7Yz]ަgwEzZqzשIݓ}~\QCݨ:3 ͪ.*̎&RG>~^z_9^>P +Qۂo}n` 0XR\=5~]p=W/ImժPۺ +ZU&*5RI.R6w^.-*bmnO5 c_&/SW庀ɰ,z™ROs%˟^SOj ++4{L&åKۋY⹕xI.due{S}3gճ9yLm@7&M\Osymm?0ka{f9?_$2V(lO3L}Sskxt&3'N։6];o3%_a=0k2Daaec7h).L!y 2IvՖs;ArNߚ6zҭf W9*/{I?O c{Q:!sL?=YT&SW5T hպKFOZ&O?Ff4WS'D809<㘗mrFl<kvlu?kR75̼!.VNj,ed`>Nke0kD:pyɧܚbO+=zƶ/맋er(=hAOvߡkxuޢwfEwn~ߤut +Jok,w|dZ8z>ޭMeNC'չm#ןv5;^!"8r-/mFg"_pShAA,$2k9+] BU&uF}q'9`U^-/JԽ]Ju_RJXYH ic U)UTDRuQͪ2j\`MVJMkym {kS*u"穖OEs~yn=_[{hϖnZ mԽi7{~s8FǷ3i04M8c8eM3Yr3IZon}.gLd1MFBh.MЍeֱɜ`w%k|kj%Pz=zB*{FO»t;]Lz}ΩN'd :Iewꋧ^ i,,1uF<'i3@9x4E_^QՇnUzPtݣE7uCzZz}*&z9u t*0^YO׶R:}"̯aA1ա֟V ͋Q^x}kSw-b r[^b r>ս`sT1'̌uE)ܵW^:NU׫z7Qb\kyEve5KT(L!Tq}_t +Y󗦵{ܴ^O{|C + YϬm4E@@?9v:{gma) ?3qlmև?0#RwG +tdkwlu6 @uɭRDgQ运 ._iLUkNs7ss|՚1߃G4{VN8NZ`NB Zm禟uB7w2'ijv)Oj<95eSC!^fSL46r>h=Zj6'2Tep]3W= }zxJЌqF(2K9)L\c0O#%gFlX[gN͙eM1H*vɖ6`W6wr9N ?kM[_}-LEVLi+K#B2?gؚL{|^ӉߖsM\zCg'Sp=Y4as{vo!k +#LQ'kqHrP`p>GX؟)H7KydkFc%:àt%AdNƦswꮙʸxe}._ w9zD2⮏`2z#v72~Kʐc饸%lgi*{ ~-SQ9xKrsS~'*þSUwSM9w;&εOQ!:'1+Yf'f0oK7\ }]5 i:Yf?yFONF4 MS؄7jZD{ f0 وftƳ ^4,ϚHh4g'xmAÓCE'0A>h ~%v~5-}m( ԲjVg9T4LE` Ө|ycB\KT iݟy Zْ,*U O0__LȲ?'D>[$clW̥mԮ-"*]C>gS˪j[]FU .d0Xb0򺦠ڂ[Ag _  9:xPnj9E|5t`W`}m_0ڽYԁlMԲ̥r8hiZw9,9Kڮ#Kzwj@/ғݷ顚w=5Owߡ[ԟv}(YLPD~:ysOSj|nc/0rQT+d>AİT 3 qV ++0>8'3Cѷ5&Ch֠/-T7PRuRWTjוys5l(VW0 ]W!Uk~W3D^pՊ"_]N~WRFn[*XL3T ӂ*O1ZvڳoKS^fu>:Q=ɜ\ffѝKZMMt!u42LBQ;^5~9u5}wѕInײ.If~3&ZfU5ٵz2];?+C;zW^V=Bw6]P)~zשK}X9}NY{7Љmyҩ\?>j7sw49TySz޷J+>Og=k+ڿz>?{~_;?0C/wrDŽ:I9O5'ü̥1s}\t^'7Uz\]zU}^WߣC_5Ծ:}I5/R6j_13@kQeкTg-H#03fvmJ*IUbffefff,ےNO{k=j6f KSޖ*5 %Ԩ8>GTedabV)Sչq{^bձj#oc"4y|CLNpLy"ٳ2.~mc^.-DT +; >Ic%i3;"'8i}v>^46˼I5YG4wʉ4GkߩpMkF{}7VO&}Å_OvJz ~ⴍ&}NkahXFwXCÖF6w^|KBNU+u:REh-1]S?Ohs^-[L.܆9UǴz_=8nqg(h+ z;CxB#/%bϑˡݤ?Kޟ34-]6=mnSoXr(7c~Ĵ~V(G,OktЙn]ӽvAW8Nܐ'xXLzMSTgp!)zs>q!etNmbjm}wflQv;f񜥆f5nq\}xDw^>4[ٟGqn?(5]dlD~Ktϻ^[Gucf341w){JMn>[23̀AӇo.Z9y elc!?qfW#2oKB8\{m!N>}V527,{WW[|~}<5Nӻ]#4F[4pn%gJq]wI/Y`7.riǚvh)suPKk˨jy'"f p6S~"͇s j1Y6X,_qEra@W2l\SFrYsj3-\vQNIGh`9|/w?t<=lN:h=mG{5=LOqmBx<|j3>!gk\䉜=z 'y?dn36΍x|v"g%5֣_2dQJ^ :s0_nS=L̸=1ݴ?73Epos3l0*6k+TM|g)կ*o2WAu~[,ue-5uMԺkV.-*Zj9`j\\C J})ui?Ѿwi]t৽t}fjSێӉmGv}ϱb9f{ۏN?>q|uOkkmi9izI|K{A}O >' m;*-<3V1KNe)K~OZZ*s_|Ycΐ>sxs8_l GkjM>lNGD@;#,xu0In9 <0+p©GeQ1 __qMz^mIOr,*R=rA7Wkީ3wL ^y抦,[t_:J\2$Az(0! +F[6o.C4SynϮm-E +fqa2?.[:*CRFPMO9d;ͫC?Zqr=sh2$8_eĒudU?f?bAufn s*K 0 <мyT-5W'u|/t}XK~܀?u}`~ߖ qm,vZh?l[/&RBfirEWeh2bdžϫIGas:b17ا2;fӜ?Ye˳DW1?i sX˘s$DhV9*Rs%f +SgA;'Ŋorq,Ԝs;i1t:x]$#|2I=hEc; ;^a r4cI]ݶuKŧFEXt8z"Ck `d@_1Lby7+^,xu)51gɨmkHA}fڴ +^{Sk3 /pjFWW1Rj\QI-kXش̬nwPӊjj0ZV ꖖQӲ*_RI˩bn5.]z{h.?>E_rm'Xʹkt6$]M>پB> <ݠ[׹:2o}ns1.kݥB{/ z[C@} ѓ惯_җ6Lл4Q?ftfq #x+;VQ6j_jZ3^|׼o=Rw[>Do_x8VЋ^6׭>_ nou8- }nK{/W?_N_1G'\K{4zn@giǵ f/7;O5$+ θlY}@H}:f+T P*Kea%51ش, 5QïmA9k2k1xZ-VWlp? KυT~B3ۖb.W9;*grI7:\՚`sr8`z}%]dN`_t}RfISS0/ } 33L3~٩?\T/ri~ 0_LwD ΂pJ~zm`2̚E2,Qq`d= ˡcjó&ID>bG~Ɨ.YZgOTM=ѨY. ɻ`\dUfu;T_;QΑٟ-ʯКun5'CeU9?ӧ/GxVM%ov{?$flܴg]^y)|4f2΢ϋwlfeX Ḟv G8 +(DqNtxL|Q!6bq?Õ/*dl ӡh9ZNeO8cI:7;)CHOo\05:ѝۤk9y:5c:f$5#2~X}\OKYQ^YFygg|n}ؚ@͉V߯\/1nLֹM>7I1Edr5病cȚ/mh Oyo2x񸠌32Fm'Oohk%sciV ,f6^Fmc9jUp-< *?_k;iOhyYI|6Eyj9xi_qγ?;cTCmV+/S;V!֘85KeS=fe8Ң& uX +9)7 +W!~[wa7Kj`_0' 0(P%z(=|/G4i!hleo = ~1g.ߧtyXgOZ9\_rfW2{>XjfLZGyV ^ߞ5 hߑx)guz»]嘬dH"/9eʹ,Χ3'| +eҁNG*tl1ԫOǔ>)[a4wƵ+ +Q  Nz}9~?:Nч#4v^t<W\g|kΆ2;K;~nfoԅ뫩oK 좾͍ԼW˨lq6VLs-/e]+Jg2f +X6|/\e9ނL +Z@n\9`us.Ȫ"~nXEHY~Xm+_Hls}ʩam93|@+ o4;vfKcSul݌!@1opZs_7SӚJNf./5a)5ƕU;5PFڹ:4P˪jYY y!VQ:j]f>/5-Uto3>vҁ-ii졣}<$ݎ\Kt+&JNٷ4oVn=̼KwzZ?t?|{ =ȟog\m36a= ょ4ZLqoX0}n E(=+zBce#xN kiW/le[0:iUt/t=zʆY=*z@Õ4RmCz&Ǚn~EZ_wǎ4l޶M}ߋQ|ʵ^׿_EL?uM=>~GKy3^h،q-v.$s[B +o. >{4{xŐ#3fyc b5GV9GM skyp8̴iQ%o4MYZOfYb^Te?gS\fx痲Vٛ՚eu:6c\Bճ rVU)dW=f} XX3[ .czEW93f;Lѐgq(]y73Z>f3B2XX~bכ#ӄۉr4i0P} }aMAy1ӬhU߯r)߯f+;t{R}Q Hw\0v{ڑf+gGC W?S74Rex^\|]kza7#m7UzSyEo)>C?|l =#10񿆤#HΨY35%볢mƄDu)̒ Y0T\pMf+m6h;~oƷfA.sE0@duMy!/b9@*qtj\RDksEWZCW3_z^CvLq=F]1Lp%;;JuV7e;.ƽ)̤3Q*OUzctWף:IcdžoK˱q~ϻӻ?ǜq ߢXw:u/KEhl[gs\Z@ie9//1cm|`x 2EfB熨D_ aϢy}|_\CUrj8`\%36|_L?407X˜Po`n_[f`r4խ(ip.2}!Ψ#fMА}K5 7 xBoWa]YLР=-͖̐tV~ǹPOME%'D~ +t~kyj˨ߍ5_X70zszC=uXGz@b5to\Dct!(g?;BG zb>}INqz~\pg5ߦkegiW\'uHir;iCh]]TZK`yʠ3:LMf;F 6zhpB4c۶f,ϣZj6f>ծ,e/5;϶*sk. t-d׺<+aU ^UMuߗS׊uM-5?# Ե6RVj_cF\D+Fj6cvo5[iߏt|>fL;0ឍ9EӮyμ5n9`zut-|><|`ktٷi Y~o +ku9wi0ޣwA]*MgCt1A73N0{?@w7i J;~.;KЭ[SCkvRԿ^T҃;\Gt28]^[_>};^ۖ׬{2u'}0uX=)u4Q^Tx(z=O{g4[_綷5>"39w57tؓtvq:(5/zd&5 +=ʾlܥᒇ-{Dcm0~J;VPâ2f=4po3 {Kma}˩oq-w.2Ͻ +n8us +8r7`};YE\5R6 +mV7| y=xbf5?? s,*n~g2gN5UpL@>{wfȼ 8s610D@|.f~h u5W{`y`\;pfs=L tY_lp<誦8g}Mk#X/$)_=ǼWA#phmC j]8rR;|/I9N} f}Oq5k;.zAhEY/jr)y6g3T!5 Z d]Sօ*OSf8ֿ>MKΜ"414#]oYl|}lckDЯ *sWD=7eUd,/($z>Z0}J8LMN똝9J=1_elw:~99Ey%XSp=ͦ @&?{?' sM$+}x()mUչgW24yke8{S_swL-z( OEd4u#}OL5AխE +~mM4_A  +5:"O:_yɱZێYp  ;zIME[߽I _הG5eZ$7ZۈMg:_0}8mSzW~DђyK#Ҥ_zU#s<>U3w>Via9(g%}c)^/uQO>1Nۅ'f69$O|/! I,ɨPvq 9crq/եwRs6BRgPk9'PeJjr'O8]z}= ?&Pq>wQXM7+,يON!޽[N:/IVNYUɚLy~1[LqgOYwIK}lɺI'lsR _3|zZCMlϹ`2.Jf5U値2CHĴD_|F?ؖYW8Mcv|N?h͛fr0:ݦ@$=g\v熙CO{fb?Ӓ9Vg+rJg~ ~)I5 k牗:Io\QBvܤO'koYq;isF[6==JcfQUyѩt #VKPoOԱWSiZT ʗR1<ҋ&BwEJ[mZ =Wy!^Wn4SxzhMZaݿӉ=5޽t o3x{Lri"]^DGvҾn::Dw.P:8`p>:-.N6k 4VJH13BBp@x)ܽ:6[-~_:>"xY.U//Lp@> +cƇeyz?4If?Z,9ȭ-7=޻䝠x{ܣ݃8}J]hZsZku+uh`ܹͬvm?xb> vŝ~^ \`rN-v9t4Amw2 J=νGOe~wdަEr3}s+}LOhd>'3fݡ'~h,?Z%wX0=Gd7ZܠCљ3tjimqMکky=+tA8z۽tٌj">+B_:?_]U379xK|߻>ӧ ׏HSf=!ړ~lyC;}06MЋft~t}Uq{g+= ݠ t.8vNo=Fē}ܻޝk:n '3]Adަ'}Zps@FJ0{]>41;Ms٫۹u]KjME0Z߬XTۂu-,z0%T?ZTSiu`|J}a53Dd"ea5/*5M[`Sh/gQŌ{`x3Q +YiL7cfyhn09"fznyG`z{9fY3CVbYٷ̗iOx-}A/<dey},d ׸ʴBDe|}S'5AN_kZ@b[hӣ$ Lc/>' Ir,a^ܶڿ)1{vrHam((˳XagX+/NX#Xy~b'#sӗ9Ϝ0*ʹ2y~MrH(*o\X9sS2Kp53ͳi&s^Z7 } \.S":MIT_yu=WO*;gH[:]FE6)iJd~kf+T23St^b?QMFzY':7)x5Mʌ^鿔8^Q0;8V01WPgL؊'~>MkzQpӥ3xߎ"2ܱ7#DH:>D7ҁ^:lYT0k\]F-f!G3NUC\,c9A11"| \W8@LW{Gn5:{w3AGzDϺF>ޤ^頃);T! I7ck3uhټ:yw9ǝ[jX_5.&Up24=?7X֯.y]y<ZA6sQӯmcug` dư>jZ^U_Q9 M+3~]뛨{}3ml^:׵Rlm+m7v[A0^:e[GoYvvq:s30\[!hn͌t-236eݡ k #pC|ﱙ*x@ϊ>\|Rh0s?0'fҧj۳!){B/khjhrM=)yٿGid={wzu:q:1: s-[G]vk>E}-o9iWi`v 3t-2o{K5~tfߧ=c[QaӻٷU zR~S7-TQBc`|me2@ki|h7{}yN>ffyfyԬ~b n._#2mXp9gIKyO,7 ^Fw5T9Wk*LyWZPΆ}1z:[{~b& gɲ<:vZ1BYR~ӎqp8Fv/14EYo=c@]l @OM0=`tf.ixZlrٔDyo +ʻN׆Cܩ`=k3zP3ϱwfJh sXf"4,)Q .? iHL*?2$B~}Li60S~Vb3d8봪AjnR|:>iZϲ?koޛ~^js~5Nb]t0 |qwk6CsCg)eϓ̐ח _~ohi*  @a|v 4 ^,ǷoDžw:[ٹܸg>/&w;}i>i-zT\4}ұ~:n3mk߶UԱ|'4Sgk|y`kt`\o,+o|kX7|c ^ٯqI1,5ۃ~S@vRfewA7`Ϧz:O/QӪ2| AV1I*\y!!b lW4}WD+gs#C}Ժւk4@X&e 5t9,  =JNѹtr:ߤt3Nt,v1Gt?6iIVǝ 6 fq~Hwam KW=CgsM_h6y_?D8?4R3J##4\hu2=牆q6놗4^5BO=Y1q_qȾG=@cOŸ3t9,CvKIa_;urЍs?S/ҝe~h=3>5cb+h)ۏߛYZ_9օyD?WBMk~,b׳:Yg-ΗQz6-5L= Ki +:gF#<Z~V7':0%ӑk 7Y\sY 1 +a_J>HL0 f:ii3/ 3˙=3g-כ!@+M s}4r60|K_Z'-+o1)Χ2[T?*C 55Dnu~si"q<} yb9v<O<ԉ8W.(5*O7iq(O4Zίk*La| q:w~3Cl}7ɵ3 m?bfOuhF5K(ovcn^6InwKyžXWFls~Y}1֝>90[N2ռ^0+(mky9z. +Y0zsYO`ui@a$`\Ke1KAeϫlӉ*s:T9|z||{zB.d[^`?b\>$lܲu{!k{tSGz3,*ek^5S,y |$P\)OBfɼ uP&;LItKÚ\j 6tV5-)bȬ1=[c9S@edӬ5wwlIŰ埶桭uyD'\?fMҽ)ϓrsLYԢ %)L2$ MeΕc' ӭ-c5֚y7vR;iޔ0󫜝^_󩘕Fs{7x9 +xC>eQ5Ϣj/+6--an:z~mfXvٿxuS լ@^p%g3>671꥽1=Թ*1[]M]mm-k[2\uf}ym xr`Կ7uS.ڵl޵t=t<ݺm;Hc3t!$Ot<4ҝMvbOPzY6LO:M[D}M 8ӷ~\1󻲙6´L //xUͅ8]f1׃ޯz9!“0F7 6!~˟ +._09,/{4Yݟ`+-eyi NZ$ +Xb5ҟeiO+8-M +ڀbN6/lV|ߌ(B\ ,qy(߇Uzc/*Ne>]pдIRm]#q2 MIv\N}j@jY˲?;.FMbf:%D|,||\ax̳ב!z,VZU0OcM0Ѭ|$񼪎 U[<-bxS *k֤鼲K4<@}8]zuɵYTFșwM/jڔZ-x?7|wɪGzzR!2e2n~QdNXdOMrE9UTZ3IJ0k4c=ڄLo@&}p)9q\֣t_7eQq0qOdսl8W> =zڰ4]}O͂`<yӵZ?yFy^7 3kʑ<_-Aal3Ѫf}M/,f5\ uS6`ݲz.}W&XǑW;Nӳ[i(h}@7Nڛ즣 }to{B Y*5,elYױ-ñ}̗|a65~_꼶`jYfxųӹurqV0rMzRٿ焤0KԽxC'q>\xEwРyF:˾!lKgr @xz 'h6^L9GX87h5@Nr_sV^t18HCt>=NvX#lEo'snÝY}z5HOҹa:bDp/HKu<>uc=lPMQimjy1nU9U~WDMh{S=uL6^fsofO2AVWSF\RϦV3_O-{C3vn2 prvO;hצ.ڳvoaw^~p.:0[t-p.&s veOV:~=-|Lh)=(KwnrﳂA.OK[zS0{^k ?Wգ%X(^ՌWzư }h@[>mWҗ4Q3\y%X=)|Bf-zs?5[Ӯ_-}FuSϲNYEWaCsgjUz=*xD͵C1 U pk}B7dCi>ڧc|g4V5lQ]z#Čp0׍S[f/G]!zbkt~MBQ1xy_@Mß +3> \^ߌlnM+AQj>d3 ! Xe3H: y5s,/:7ز4ޞu 9wJvSS+]7mH 3*ON.,es}:)~ųŽ2'Opf @.^Tsy6!j0eO0[?hatv +Ĕ3ZyUn1ۼB̚afxOEH:-U.LN9 a&:|ǑVgjezQ㭞N?=`D2ߋLI0ArKDZST:dzM]50h9n{0A| YxFxZ9r9rg])UlDD~,bne|x\u;W/HNjs$ɲ[fbS}%zl?ݑ^'PYVk_:' QQ n0?6ƱM0pZƈxhzGՌ_NzFxO='Tf<1'>yqQ<_ mr9)dFe+He^h9@$.mZY2nU/gGŊ_wcww=m`,#3mVRh" +qdfO8`,rn{ub$!}N[e<]|1b;.S)3٘t?5]ZYsƹ]eUcźe2Ovl4 }Ouñ6ͫh`dFfP_8+縙";)cn$(`xHj%3`Jc }|nahEv0Wbs$WF3kΔ`5yU3z3իWyœ+m @jưD-gxŠ46[t=͑0A^ y#/5G4)y*~afwᮻ d]Ou\ n@3+*.LK_O\qYrW'q;M~Ur͘f 5 gi9i:YSGJpx%*~̗Z\L|B398T~u8Kʿ˳|+Z@^HߖBYǟTz4H}׏\ϣ``X?8}>Źjt^x] Ы iCoxFq>c4ns93˚ j2VKW0{0 ḵg&aFo=Ŭ9fLc6y^ahY+EX*`T29~ykxY9K4-b&c)SOxpƽhlkǹΡF JQP$xُaLN|F`R'#IX-_]]›ڗA~%bU'X.\!-zy*y^Ha_5k'gxR'0Ecc216*98@w[]܃['0֋nA$e !c;q'S8 2]~N0j }{( Kykq(b 0%{TrFs=YX qWF0[+ؕi%MŒ%rJ= s[d2,܏}n,^uQ%.[2Vݶ3sE똷~7˺9{;g sX N\_fy\v' n 2}T=#V2cg| 4 ϮK4̏u}R/\MG' WӾ!jYj[j-5lT·j9s8"C$|g9!y%?]O~RuVFwI ?3Æqњň+ЪWQ6wD /5DLk6>\L-9*f2? [geZ iJ:X˄NnO}V=5lIqY[ B y4z=^a] 1Zoj1CӖOd9M~Gg&;F~S%jW,S=XdFhqE/Y:w9lP2L:DvhpdZ ~̾Azz&c&fڱ3;v W3d 3>/OͽPGv6yd +hc85yު`39#3YOT~u&s4Tk<~ρzʳp.L7^FwBk4R=lÃ̲]WhGShiSQz'- ]o=:A9sEÔ4?b&}!j/O&[gOx+hz1cs~fj&Xq2;H{i}w$G6qZfr?F'Hs;/QT+T=vܼK;TO Ӽd(wb7LpNj?ٟaڷI~a56az\35;F] EjM#fފd^L;{v5 3"fOM|*s5}m +֬/Xއos!7|NjlU54G4yn5q=@7f&Z8VI\4Fw ,0Xj%gVWd>.BXk5[yEk.ٴ9ƥӞ8v~M_nKxK61_A)%7V/eqzx?Aǵx~=1c-xdK{4n)=׺)Dſ&,0]ι~(eR!y stz2:5~R'cQA65=Iuk(z@v/o[{?%ԧRƧ,zpNg?H/b86k̙"Qw7SīZ9N4栴̞r8W$A{cs, (:dCv +oxq{/;K xqmAՏ0_1&u +1]4ŪL>t8vy\R8׃vi25x&ٜ;Z/ci;/$NpK yYԜmgc87.44FkP#.75 E׹h=rFX^$,~y88\.lAY(8]jrMC&2ݟS6`9k=$_$ƾ(Wi ?'DS)rh8>qOx~ ?c-` '>Pf-fY&{y F.="1!zv̞Iݜ%V/J6ȳx>sїvU}6xc<*ڽvj>?[i$ܝxX2(KVl0A0QuOhE] G0k-Xnƽ^\<ٿ;:&FL3nŵ' Ria?p7Y\˯Χ{Z}H6wb,z7hGgM70uc1Rok1*q)\N5̦?Ɠ)Lr8so:s +c?q#H~Y̻I{Y%OekK9֋G|y4=JzD}BRG0P MߞŅg˳t[26g!w[..a4~~ uWyBY,5~mx.R?٣T ,y˥+|)VKD7?"*.':@3k+xM@2S$ L$sُ!Wv +vGp+znN6ܣ}&ܡ fx} ~sf~LqgӴ!܏H|U$yGvQG}Tq 4S|stLV;C`!s@1˕l4zgH@ήYΡH{[L2Ƌ>SOgnSi[bGs'623d~=ISa ˧d[toKDm)f`axݍ0`/I$u%>vx 3 =S=OiTڟ?X'z>?m2aM *]_}v0Li,ky+fe;KݟEz+]~`e}ʉF0ퟥ\iFIls\ Eo~*Gf6y)toJ^g7H=W_/. +ԊFkfiNOec{|ͩT:A]Pk֏dfg4yƿz;GXqC pK '%8&WCt.]/RZ5{1⏶s@wtn%K-osqtS|25ytJ;9%KcoG=TKu8wEǴBT~:bVG$T4]>j'Q(= /d=#k"mfS{ǧ 9o(4Uz\K\gTAib}%F c*̏te*fr-_{<1{5J_w/:bZwYݸzSmK{|>?\C +is9_=WZ\%YW'qGw8uu?OE#s 8{ ?<qFZ_?Ӹp7s:h\O^{Dû܆>GkYMǠK;'YӘ|E,bѭTCy-Fq$? ,ea[QsξxVE 7/z? =?xMgLm`61&>7O2f0v "1~Ef\8pW^/b0t-?:<8G ы^>3qD;.t CxJZ+_JWkYZ5˴ϰ R^X[?Gw_j)4L4h59,c=mH kiGcpv'Ct_FC=kEs k +'x=nvܐyHqh15y)'wã Ҝ3zvyQ#Z}w=ՌE>_ch~'S0O +=7L2=/PyuC-͞MK懗}qh_#kag[aZYfEOMU.Ъg<<ӮC>;sh0:/G +К<==ggO?w zE?k8C9:w$CBLG􇽦&;خ14cd4_=aZvgؗlj9lO۠1:ӰB^=N6 !$SEx&*`I/H{w `lc<k*.mӠxxXZ>!>x~&Oxq>A {oX٦8 ={KƊk|OWK F=K~Y C歸ef7%8Q뵢kEKE2z}=j<,*|nŃ]oC,(CЙj| 4oJ<qX|/Wq]1Ž86A +ψCe s1a8=۬ɒ* `W0D_}!uT:&y&]-}H +ysAt|&kY}^;^e {|s g +3>&gʽ5 ;"P?uHk YC/BXV/fmgOK_q)bsL :e2EJ?yCemaxh;63[z^8$f'Zxm;S_,uc+|#<܏v$tVEaz%[ +7`?νe(Q9ۂY'{¯XWerOPپ;g3Q ưu-s }#Z> :Qz]hUzER\!? u@Ywr9Xs?աh~E4_h:ߑF9f.~܄k/V:q9/7&:oكgd7>!1X>Ogy-b.1g=d8k*^b-ϋI$sXY%akū4}/Y9{ϰRו/)r5G2=Na1{3Sx=u&+?]EgqftE.tt~(zzq1Ȼ@zz$3xmZ\F":F]-aDV%Ict:ԉn)Om-9DߥF1?Dg2ٌ ,dOb=o{OQX5retwU8Utwi2_z f^G%z/E2tL:ZyٙJڑFYL d]'Z@/C_xvfkW( }[mےH {s73ב#Uٴ?Iݿњ F Shx=sM39;}&\2CLe,%Y&!d}í*gy]Y<'T狸,V'>_usvޏ9Ye>!٢႑M1Q,hBhCm 4RLED[*dn#4L:xRH QR2c>1@i|)}ϯy^akeJ %)=ץjo惡.O +OEhoef؟SY7ode!٘!*N&>am _U;W"p?FXmSǟVy=Dn䗘4?a`]thfm CyRC6L-dfmdV,Y0waQa9rNT.-6 ޖ; 'л_,6d{ s< d>o >tl4[<-o*.FI-?<^+9.QBt4 yXsEzNZ>02 ql8\L)lN]txCi|2) +}1c%c\+F2W|ٙFx۳^]Ojw٪]Wٞ;:tqo ѿo8ja,ͥd슞f<952k_o|YY\5vg\6O_K0Qa&Ğkr S~^]vX}*guM(=v̌LaF1r7Vڷ,z9?~2vDו*'Ȫ!=|X_ cQ[Z^_S\JM*!u6 +SIҚd}v%b5Z@lxb` +nRKfoRy #a$'Ttbi\Co34v^T '_{,fa| _,?zU.U=LP#|< 3 V1[XYKfus  \0ت{hhx0WJ05ix*G7!|-yӵ> =4X,0MN6h|pG,J<_ݢOs;G39*H;^%9cIm\eҼve%s;/iKjes}n3:,hXiW<&1`plwX,ͺ=R9%G{љ&h)YEܷT,Zٯ O|2E}Zշ%mwJmWE&g7̸24cE˧9`7={5sO,)nȵ/=B+؝ g0oڀ;"ya ͙YGgx3J>PCʾ)(8 J`#FDŽжqjX"屾'5Xp73?SOb{fҜ!_ s/}4şr- +X1Af1dm#s??Rd}Yϵ>NsXn٨rKGXCM^vD7vuX8'z?fky"GV>gxvyˍSxT2[ѓp gafja0n3k8Y1'XjB4[rmK3|)kqx-"ƓxJ}ZX><_|#,Q Nnf'Fp$VϳFY|udq;hw^BsPpS?qN j~,B|_?W\gq 7-hq\_ph=vGp\;zыh9L;тnΊ𿆛[xCjݤnK{3H;ŜY/`>x`I&x]LWo/וe^e:1,XRSo+_﷪W{QaEˢw +K[șIsԷYL&L`5Go`3.~ g;kG;V/n_:pp;p"G0Cǎ'OHyiZ/]ë^P~{?E}ְRL,}x>? o9K3y17(c4~Qg=cc8zSOF^V" z蘙Gx0ćxBwC{qʓGKkjE a<³eC>awC{q'K%e*iY;{y)gǢ~vrgJSo@;NLC٨y}fW7[T^YUύL_Zﶈ֗Z xfqy;d5%9Ls +můQDm3oߗs:jm?U̧ښ ,|[X }G\;ΝG٦Ϲ:k,0S>G S<0Zk"z] 6s3@M1ɒ!Z?/" O~KK$~^_7#ZN͠-f磼 V PA`0>r.M 1c)x`"q`[:CXi?dZi4Ze=wwz9޽U>IjYYI7Vy?y׋wpo{ k=UϦSS0Bk^OF2*z2Tõ35c\DX9Nj󅼛3B;o$Һ iN۹]Z + ZP<PXZ|̸sqw@4hO޲G4F맹 z[NAi׬zվ{mgpjjG1@ Pf@} M+fPV d)؟{yy5#}9ȪKoPsx{Μ^%L| l8(_|]d{p[AOոZ,ە.uLNp?u.i1+Զ{ˌ|7.ᨰ4FBSS7l7Ѱ0om6-f97j'- kXKtDŽu6=^`|18f1Ei/~?WO[~Mc_̿gx!( F5le5VѹM< vfOB?_FX]SmYLx4}7Y>'3l.K'$\~S@͚n,X+#7yP QC*Gq'ѥy}<^K:OY9xD О$͌},W-T|fYw)'Dj934/xE+u } /L-ko2"d/gY<u?ZT +PIi{(( _d-z#3~8s5hsݷ#U&=M޾d(]_#0hd'#Y=׺7?%eИ9})/PmΓ{QY̢R!ErX&.~|o +!~.L``0P smq+2z㮡54۱Z7YlZU<Xe<20_3KXXmzQ,Maq +Ҷt_Ã+G_Mt_Eor;\(6Kj5rfI1uX;KX%,ƝWba~3UcX>=t 4MȺg1<*FGtDvB;/q9K%r{~6pPZh|΢ي-8fMBrnEb_3?T@DOpW94osh=ބcMhkƵ҆[Wrڏl?тt^MVtѸюQx7,Y'0>y+X[ӼZ?u3*ZǫuXÿNNol «X/^Ǜ-ޔīg4.y VUUp@zCyL'OauCu:b9Gr*:zph.wW~= Yf>ecޞ"d}k.;̙›]^rHӷ(=f{f4o ;o<Eʾ'̚MNEObIlE2kCx_ ڄqS|t@9k Yyc r(a%6by9T9ƟJ'fW Ӌ1WZB\8ý|b]VNnRO[gJ@ ˅}2#^ jUp1мKz|XXc\ %w3V 2[T.J{9s=/tsj|+0s[5C55cT9gƌAM<~Jho`jCL?|hLnbb+k? +s6wUB{{!q[?Kiit s2>Xí*dk]Y~ ~wL{6xLr uG 7thp]WС٧йN5dqDz{4~Əm$h짯ɮ8ɨ5cМRClp3ޑ&'p3YtһKi9̌O{(K[#P# +%;cO2g[LrsKYPSD 3)=̦vrz_<yO -trMǺ{IIglqX|̭ZoxZjA' +wR#MJ6?6gU]A*'[86w-M*;}:}mi,Wc avݷџp}1WἄkMvWpC|h EYwX E|}%11v{\:~\oS&4Ψ}?Aռco9+wнEђ"ٿ\/ֳo%>Ot{cex侗( 0w?Y>ι=}>} /c ϙ2+< U_T}/QM>.? tcƹ#X+{mW΢LdRR8~pBV/=vO";6PU*E'Y($S_[~)e.xj4uӹSyOMsiRI: +>J61a!nl8X"/3%ә_:Ysb",T?t},N +ݧw Ϛg,1BMe gvvJ;;p3z1ۏnzoثFWCZBϠB)EJ~Fi8_!%+*EǷpqEwqy#.`4Yxh޷L,a T=X<=%Z>_9W p~Vw0}qѯ^OeF4Bi0gEc4k~ƾ.*D xтK֣Mh N\DgU k i`D7ptaمw0&SG1?*e,/i<c=˒X_«u.ZdzUZ3|NKV=ſOşտI?˽Wx^ E+xY+WXb!k̤ܽ%L=H>с_} 'nD// WkC+"c:mČa>}|G)xYe+A>ïE }#Ze,/o6kVrE&' }'>h&R1Sc.sg VO5k^a!1F#b9 F#Ev!GD;'c% ƣw[L9j]N \Kp$.83AZ%^d'0k[c}_{\=i[YRh8iߙ!E\po 3Djye27d!#{k 3ҲsGh9}3K[2c`Yf(/s s4m&h4һHJR. 㵳?fP|}hq6xiL.0s=;vǜ'cG0(_?ሡ`wA^νHmix[fN?2\X'lfjؗl̶¥Fap~[>ѱѻ~d2@#tnKD%(SEtzy.]h\ 3O`\zAnPB_hj_3/ZSs4;S,Nq?6綷 Ybavb;^nP(L\c{FyN}cpx-\>dz6a^hTVҧKf%mxX˴!LPs?^/|P't8cͣj n8ٚarF3g-_f~9Yа<-a老aUߔ=/,X?+EDB7*Mb'1XrU]Ϟ1=国+^tPϦ +\M=30w|Fkf_Ow5]͙hf)^]O2|U];؝iFkKYQ63J] LM<ǎԞFw;!>>&I{Ԝ@3@^~PqMnuGuF';7\_Gwa}(OZZB3ch#$Cȴ<^+.؟σOg2ETgŚ  S5lZ,ߩ@2답quh޳*u^~ue7y#C:?y4'8CL JQu+"S=- ٜ;=T=;Ҭk$<隉;$σt=OXrD=qz`EWa}YYOǞeN5Y{bQQ:j.WFS){/ \j4\fz *edw#̺/rps-.;%,4~Hc ("K`WE^8 ݛS߹%,Om~Rfg%~I?sB +G(a~,}&a 9S63Mf_dҾ)thXxk@gi6WR0fg0؎1L c`kY.ٕy,NQSn/ =1蘛h :.`gtrM;4IF".`ΝFw٨gN}9TS9QG˩:MH~9zEdv*l8ֹ.\epdCY8zm?_ǝ~ ?ïC!:э[G:waCԏސ>jJf0 zG)ƚ5<-[S5^Esmy:`1s+/CiچJCh4|^Jh2PV-A9X4k̻/xataZ<0hش'v.Ѩ)*D6B,FhoW|͚944B ءC#pD 4,ͮU4_%" mTy.:YB5i-`POgmNhô 2sNڻlj +hOՐ6oEXu͵R*G9/2BZ#JxU#Ï1Z7}ҮOq?o;>PGl4u՛h*tͻ'-Ooպ<2CR;a}ƿ<ZAdK^ck>Ff-}Efu(cx{MM)aיzv?_o D;fVAu\y=D蚈VfKA7}ۣ֍=t^%DD'8Tޟ|#1a kX#)7zƣtp~Xnsqiә]NDt~10_%hVɣ1tX~t]D]7R)YQٿ7;e>3vT2Iw?FӺ0tC 7r\3tV_>_\'L ǫQ~E]Zq&Gf~nY(HItlc/x})Mn#)z?n35(ٟ̐_nu J>@٧Y-0MXYǙ-̍h<Ί6ҺV~#rӡ +7/np8!^ jst U}/<^N\ +?Lkdso!̒_1SE.^Wq:~ pdl|:<ϕfG5R\U][⪯rK-ǚp^Gge\kgyzZR?.L,VOafetF +/k 9G*K.=2ڢ/zEݐ4qFCGl+. :o:% 9TUӌs`wu 9w>XRcsDY`u,,>£{lCLc,wQWp#t)i?PZ7:\rgՠE*(F=?_f}7Ex4ݳ3h=ysN( G n:ZC5.nv*DL0}3}k\Pj{ӶݵZdL0œ0*DAApPdEAp@Ƕ^tyaEχZIּ"{pFY8YZƴeymFDW=Wd͜7; f.`(Ἵh`Ot&PivQ -LG$+|\OeHTRx站t[axx- ݓL(Mq#Rثq^ؔ^Kmd?T ЌOy#؝5U|1V1?͕Rg]ݓݭUN>fQ?.m߫`z-}K&2њBm5|JqGҿk);$P}3YW dK2NrrXgT~{ٝ5fs5uEIݟ`0Mbᕫ,ͧ^1OSF}Mq>،O?X<$ˤ8baxdkdԡ%?Œuub}bJ}1 =nd-:@wk)1RT^ί)?G NgJc*X ^4ּ)]c=IC *keZFBL1+8S߻~2MeHnԺIbzռ[Yx}ttpƛb)0O/U%#jzĞpO([x g*ei~X+aHعX=Ĺ8O쓖)b%nWL},uWRx:k+ˇ7nGz2>5*wmvF𻙨ߘ#gj6eĽVN@byػ!21=;{H|ۤQ.+y"qzj6zFxx~aRoq),PxboGrZ,άPVJߵth'uN/=bu.x>Y"^Y,|U,\0nJf]uűFymp֊;c{=U*O>_U"|+#D]ԻA<3nsXH/9hl?fwx)G%K$>*p\|sg+ K+S2ܔITAur%Fz?p#_F{gzΌRo &1װ 'Sژ#9G~C5Lbs>j>,R,h&,vQ1:Fz^y9ZBnh?khZF:l퇤 0o%G,'? +{Wחhu sOŵ~Kcŵ(v{pZ+E'Bxҵ˸yW{q%}prΠ+ŲgS;qՁ.hAIg?.g+.gnGh}}S>]8;8f;v1|UЎ0z\m8joAx _XpX<<0o '={ 3q<Y:½_,rW[8ܛX,W}U+q@<>~5j7sbzD1@\~`?btu~G^uX,Cz( {:e)^LZ@wlm.\q9^"~,79d0eV0BA[=@ +<@qCF?[f(3)42/Hzµ>{R(:+ O~0W~䰎PmWLst?H\*=R Fzu|bR4Iz"qTuh#}ZF'F9 kVIY U"x>F2F>b:LEbXTo74ǤsN2}Sl="u7j0awW'[zĔdl8=Ʃt.fig9T[}?_-dut!qHٿa7l9!M3*,V49"X`n +OVs/W8RFWlSxV,ޟ=J8%_$bgDdz-6})꘤F19klJC)5RIYǮ=u,O~uF`phba*3Kgz,|-g E'""=a **ֶY~FZK~@dOfu iFN2l0U5D$#YȊsAkLKKsaD[^:}n P'N"s2b 3\utFKsHcϣz88]u$K<7ha|Q} Z:+Oߧ:s>NҧQLӌ7?5H}Y,bl>3;=dl+qC~ =4]p^4bBA[--OYƤ#_?wll1QJSgj~2󕷕!4rQTǰ m<| =+9.t51/C2Bݱ64{V/Ki!N}Y{Y;41)R+6e_U:E?_ IE+Ǐ|JH_ѵ/[^_!3\B {x)iWytYx'H~#=\"frG̎Y;^385y.ݍrqv]H'oQb~8VbybJZ*ݔZq.9W/=wt߈GSO:?^^1͛P^Gl/1{>1/61@b!&m2_S4<ť4 +>Ub4#~e +AĹMf^ՇMngNZtnb!%/{6rX Ho#K~چO+TѲm/:w60_m$VH}k^;p֎opgW '_Q`\>AT]F|ϖb}\yjp'>!q{X^X_U|t{v4akئ8Jqytt>C5&-d8R~+"g~VggK)ZV3LUĠNv7}-n⾹^xW2{qуs)8؅3?tDŽ.`wNW0և!d#i5uLv f>ċx\S?{9|b?y<)bSK%q #1bUe<.qy5+xT'UXILaws'0Gkc˸"(kn]ǥApq{e7.ۇq3w72oV4n^L8FSџr 1bpI,1̕e<?Ê8gbsu/v/i,Qq|яZdMͳw"gXISx7yw +X({Bq6&rӘOa2cL\A݂Y]gy`9 8^w?ON_Wi&G17żo(.`F^\ a3cb_Xzb[#>`}\8_Ur_xS96yJ`QuPW ih w7_X\pC怤,__(cvXXuR0:zL8 iⲹח]G$c6ĬA`p \#s B1GMgo015COWܐx 1@^_/D,4d`,e +gƐ%r k'2Uz,f|.] >Κ1=n_J-[$ K?-!MZ>2N9x VC꿢׫VɆ\j%lЯE,}2/v[u@bk.wZ:&6cҸDq+O)V%3}!zMr9[ۥ)k1%Q$I1D۵zBRN*ΈBGTs.퓦ǚ9y%)kV:]o78LF' +=5:t5c smx̑܍˳Muhf5q%s1莁 %ĝJ)8:$Te2QF{ {?侼IP6F[ѣJL'oMӾYzd9<.otj 9|ԼN'_:C`|kDvhtT{ҩ91|h/M}1һS.#&Q]_D3t #.$xʷ+3|ʿ>XG:?b0|%hpuj!R c1އp|Nl=-PH|"%!u2#P!y(p'k$l"HX8l[T팊9`'9LpЉԄ4t49'YdỊ3sfs sQ8c[c>&K14n|ki(>tQ3(ݿ>y]NW9YLa +7f4?Yp}܎WƒECRj甝!MC~` 9 R]2P͏ .&!oFcG9YF'e_D {OgQ$SŔelC**-^Jw$ +LɆ4]& ramȤQAtio%P1 3D.8khh9sPZ͑I9gӞzXe(6Ԏy>98Wiר=ß.KP>w۽UхyϺfx\75#.huoI8 f\t4ri/jY + Mh ߖBT lCh+ Ndo9H-ٛh]#gS +B`K[$Gef 'lΦT)*.9w۞-.)γ!TL6/H]n$G(z߇(A'AA{{Qa.,AVNyJCUUu G(?aJtȝ?W"4G<iP|[1.ẫ L`n-Q(ّvѼi>\T~B?qhWĕ@9S5TR_*Ug.К]G}l|4w-S>A)0[<#? gRՑiL;pہu\lC8K}j޻~p7Ũq~?|Wzq2RqіrbphO5()r-8bGBi194#ϛl`0! p{YKb$s㼍~-o`2}m?{ٍ]Mß[϶7u ;/fO`3q]莻kQp37nٮ?=wmZLF1=0G=H?jbs>jjK!*)\)J7咣? E{.l;=D+6(|aJ+Hs!9҂|k+L\>Q:7P|/_N߱*~[Empz7}w5>K{$_uNBq(aˠ4jEe)}U*}ӚJT>%w2}Q\g 8/e{|7y(_;'Y8?}Va*8u뼮~S68n2ȹ}/ȥ;gi h>s."RDq)nF$4,@U:l9NIs]Lsm97Sޔ;r>;'Q z?L籓\n}Y'Ht>s;~vmb$rH1'޵*󤐟,mxR>S?繎XS?Yڍ|IF:'ERsϪqRwꈗ~u--bq.dR*g_aԭj7ʳtd\IX'/ۖ1ZZKrD֪FeX/&kJu'-iT\j.Q"'J:TU%AUxV|F~N> S^՛@ωԗD#D),J2\1Ҥeq26nkyGSHߣ(U=*MMnձWu>rma+צ*:Q~ë6h є/JRj/I1RrX/SNZ[ĥ )Rs{;ܵ:AsrU )GUҘ nAe?XNnW}XyTzngOvCm j66N4?RȥRviI^c2\cԯN!~gDY}߶d ="| M+~0yYIY79^n)kɶ"9J|Gr\>)sMc6J0$x.R#bq>Sde>y.2J]\2EX4OJ|!acp,v 1xG.VۑZ972[ы_5YjBfz[f5iNbI8.mѻ }~ +V4>s?MK33X?AHGX9, S`^|P18#ϡbVawh6~R +=>o3g@,/إBaE>3_~/~~~DifIO4Y/ +l?|S+g%XLwWpDyNV }pƩC5҇q‡xCu<+Ã) a8Sa D={xUo~Ŕ~jըkhoOGqӸP( a0vy1=˖kģ\)(p{W/= ?t4=BczG1ĈgDߤ\30Lg/19Q(S1@n8y7︅ьAL"A>-Wp-܈Nb>o}?ŸucooM/&p= RMeLP݃4=bw8c@XXq;wBh/!rsj7da^ B?;n̥ljB<(ۜB.OS8u',-|0@~[QW,aS:."A38řgfMG8̉3Q?2h̒_1'ԼQފr+~wusy7q4[_[1#gfj&H)2ƚ!sj!?[nɸJ=VKfxZ [om;Z4z2?ooy3rx9%9群㰰@]ٟQf92iw8ny;tY7$X!s$k&mYf|<.r8tawK`~{L%hΧXCvܪ܏ < דv/rBNf(s\`xY6ayq&cl> ӌM38/>cnb%l:,.:9f-Ef٠f]0W16S\}EfCEH=Di*NYVXvt9TLnh$F;~ _XƠncߖcg056e5{j&5Xi1dbߊ~$bVi)hgvN9[EdͩX 3FfT[yG*k"}0Q,WrDWSث g0=Ths?̵6`Q2ΔxNY3cm=(qG K{/z wZ'<*nRڎPE03yuR)76 JكO0(8s}J̀0IEa-`(C7vɝ(HZQ[eKV& +`~];.Y <Ҙy e]+bDc\#%H=Ev6s%ţ0k2qU6xe&h>8I̻bִu!E&MLt ?֐,[Xҍe4tqhټ2/C_xX.>wǥI׋xϬME>c}EyqO'T~oykfW@ 05Ytbc:lˡ}g|hg\a d6y2mA-9fu[sQ-H=2fH)0#Uv`G1/a>kҪ֒?WOj9,&i(kת}_׭#6QWVL+8{13P7xP6H7p(ۘ)TI{+Sc6'qxW9~UQq6>p1~ݔ*rGp"o|m7,aRJ{%ܐ`._`d?NcY 2MbnsMilNv=>*@58zSQZv7J/aw\SBNZ5`JiN> szx[PhS;+u5 ݙvԡ"ǁ/pf4EEw8 +Gpd_.5o;Kz0\|q)Zly1\Lm󸕫%\gw׎ q<=!vΈv ED7VGn vc|3cћw]36Lx|>zstS9q7T!OBr np57DK\ZК@q`<]½A֎a .9ϡ#˸K;-˸㺉!-_TƠw1[xW x]sI< +A}^z1ԇYs'{3QgPtbϋMs*}7gK]+U:+: +ֿ&A>B=ū*\܃œfcOÐ {0>06[ ݘNc!)/%ce<:;p9zSJ '5<$\ϣ}o7yї){'J +|l>L}g?ƈg9|a~|cY#i1Mbu#: o?6Xy=ث7b:q3d)l~?O,f*Y.nDuv֛Lݴ^sc4F3 3c>gU QNm.|P1E\VjKX>.}\lwU۳.q:@Χ| ]ta9 qS/^4m.]GӲXVX4Zx|ЋF0פ92-d<9bL`jF.fPzBRVX_f oEᘱ}:9hz \*.Yϝ23@۵!˔n`wK3_s\2^#0C3Zu&SQQoSw)lQEQXf8^tK!ϹQpM5M,P,JgRsNPj1MX M< cH|+ݺ,^14}V T9 [7יF?{thvv"V]to4$<٣8)c\ >axTEf8W˲hS[h1yF1z~;KٞI[Y%|PqQCcjc.Qhm5&ˊ6勼512Qح8XT(,(Av$ e3t{+9$ }תx\,B Sz(?*'1c0$.v/ ]@6 jg)-_CM%Sz@ib1bptִ"n|y ^sh֌iMg0vdÌlC:#=(ߘ)&m16fj_&$WU +IR,ogb(BM)ǁBRGRJ̢g 2hQuLPm +I4~溼Z]eS?ge2gJiMƜ\ M nL^tcUL]? Vl֣jyR^:0̃_f~l XX) .G8 >^}hm6gmoY3yn<Ɏ]ͧ!S- eǚH~f}|PەusxKp{Şvv&hUA9 6hMo7z\W0pf21Ƴy<)ј³X(ӊyLinY.c8?_/{3+{'y3xU.ג'~m}zk^oG3,Laۙo%OGs<? +OGœ^UcLg ~ 7Uv\G6t=q;7\S{&02BK8Iu݉q5ãG׍SNu]'1cf7vOJE {15ٜY<>Z=a sq'i ?O8ߨ${&15!נhzkF?ݤ>dO_hI }7q3xʹ;Νqq6:10¤{D[m>M &4j+63bu{R00% Ԯ&Eg;7QY|lC<o;]*(} 7 +{}E(X!Gt|+kR4ߪeKV툙x0BfsyJ1cǶŢc=J_`1+td;$ rAUXS<0D}kmiM&vŢo?a_Z.Ycph]UKgfe6T(v ι#Z?4\䢋y1lN͓1k}aA@^DމUg*Qƚ:V(}H4٧0@aJǧ^Oϐ0:UeFްh=5x+ hYEg>'hf%bL"+N&g3X ݠE%孚YǾ՟'f&\Z#(}[/Jxhu?3k?CGiE]* ڎ2A?]3&{sjvgƴݧɔb-âL-MaW<кͥnrhѲ9fϮx)+ofwRf( /痭Jy)h}Er=iZDKZ%v\^ s}PE*hDg\{KOimj֨}/9~fS|buCu1#I[+LHlGip^lse7^ F4kE{IkԾU&8E=Ʃ5>f2@1ffR?nEi0D>R/Q1da;$lʠw<~wd/Or.ޥU{@u:GPX(d8idh8ekl v084Caf#Fix^Yq|NSYzbfLCv%ԟ-~TorSdEQAf*c]߱T6(*h/FfQY/N쬒b\j#Gj9 Gnx +}҇*OB kE.sehxs.it}|"Afw.6 N\|Ny> ahűiDtn3G70_~#y7НنSI~䢜ue|V9b gمҏ8T؞MB epk:os;ݖ4z(]1,)a>_hKh7W$mv#r[h䜿 ߱.Lυz,_89yEį((L2l)~ϋp +6y'478UCswn93чp9 ,O' ;p>yX9Niz +$~[t?J+w;0Y-*Q~@l?:NgWfJ?ظ _ʼ0k? 3ʏY#XMsU354?N =Ee?)ywN=ģ8Aaf|bӷhsMk|ɪ/Qi.h4T=58# RNu΢%wljhK:KueE^LT `.n;q~0T#z8Հoksx5ɹ<4a&18!9络* oC㿂ӸڊV[3ZN娜ؙF{7=<Ⱦ6ttjR+.X[p->]+t0C +EoL'x?ƓQ߂CxV9Ј{!$0Y<-(4y<)x]<8_{?29,𑰿?^o?ǿ):jx'i)ZׅO2/doȽ>,u}5^=@:&3p32z7]Aƹor%z0XN$~w[a'䅌Ӹ};Z9%gۻ`FG㯢VSh Z>ݭ%Ṭٍ۶kX ?!j6F5$:Of߃I<ʻ/:M+@Ed7űhCP8 #n.ȌS;ސf}B%.o=ksU\au JByаޭf|m\:g+`Y#X|kܢc>2 3#\5 0C a}9k\̬ϻ*U Wo-mi/lm i:=#&bj 2'\0=fI\gtW)͠4m9cd.9#.N#h3yi|ϥTv펍z Hv&34hF|v'U6W|03)?C벜S66Ӭ)*g}R"MN1J_| AnCSW(ep䥺D}\ƽ[W]tFa%v ff1}C-g08CghuqBv(%Wyg/.k.嚢4Z9o^Z$6$.U46&v/ Zږ)5'h=fcN ]n`K<[º\=)E|\}drҘ-S@}̗# E˨ʱnKr7 Ċ3X}ŢqsfV -KX Θ٤]k-sW^,cYs h)aGÚ7ϴm߹Ԧ״լp<&c{pI=KxmKto ͚ -q%g:=b;ތty:B's(iD)].k )yy>?ΰ6ϗ[lkWDg:#&9ES',pyy+t٭ݨ̜ئ¬#JR}.m'l2hԶFxq]sos(lVcI3oKddK'ٰܷV ;_LA[-ch۵ךmwy-Rq6XLى5T|C}ZS|'-2gEf~yr~OAbc +ײobg)MW's,sW9L{/k?[$qg0;'sHzɝ)쬡 4tiiTE4VF,匶= +J&ffj :K*hW:@*{eǦsŮWJ mPg.fz4Eg~OSL'u'*6{pr៬= hMM_Կ϶KG!#mkD_% d&;gg*[ҴnhBY6>B\7xq`k՛|vj#zp*TFzQn-ף1sc~XN Ŕ7GQy Oi{(o1kiXL-ۚүM^4_ Tl~3 F4ȃڞ9Ds#{Ib6. 5佚.U4{<+лLf}%Io˶9<"wv/u/O)#=CJ m m).ѥn{+LaM.䰍v!1]oLsXNufə~ e".|эr7Ӗ;rzM`v=#fk2k U|6NT' l8S jW%h)_jq +Ӏ֘#8gKs> =l;.{ X qjA4TOT~¡op2&5mTDZPFuLE4wۼߒPC=v4|VMiu qJf{e|? +|_B~c~9(v6eq3]4sMr +NNg EOm] +XyHգy?UTlNwvLc8oN<x\1_`>4_B}hx%h)/ӘvIh q#='dk+?'ߍdKc)X+s7 +?£)%P9~Sx@va֋[o%wc} w_ثrOA܊7 ޱ9/`6{SCcd8ퟧxq4 +Wax?<xZT/c:{ +J_ك{YN42ap-*}Eԯ_.(}9et܆˻/`ُ:qfb \ &2lNx"{ a !W4ǣf=^(z"zg2 ̧b/ߠp1 /lzbη)ҤlX/@S"CנzK0|a|9޼L>q lWJ8O]vK%"e K {_&ޕQǛ#<]id@muѻ.U ,9[P}fy3$,AqblEk*φ>Эll4c}S$c$S +Nq;fY?)CΈ3Xk 9ް+6KMgD$je1?9\O^ g2aN}a8`f/c6zݏRLd{aL:C&?P8"4t&3mqmnq~|I-o?Nc|z0ا :=᜚3:l89&cN=rfƙM1 }MZx+1MX<*]~]r1%<̮Y]eռPZqr*E[|H7urʹvIKliǛoW}Fጻ< M;1&͠VX1Z&\6cf6ގgg +.j\k c3uMmbf= *d4Qqg .w;E,bKL{>]kFl%Q6&[8#L[u޷Yn-! Ѯq?w<,:xfヲ/Ii%/gu$m\-Z?W2أSϑp(2m5ߩb/+gř҉ =XG*X۶i&fNLOE cZ'Q.]_-[d2+t=)~fjygٶ:$mG.sMChNY;4SP|̅E~'Q;<7_-memޱEb{4X%9 fI~(,vDW&{xC0 +sKӶQ%h fxbnl'쥿c`]M먼;"A$N +:Eg&v@(Fel bn)܊/p?(3@*.NvOtm_Lj$WY[UD*6Nd&Ŏ05nm,A. [ߌmy^x\̇8ߜ黾ֈskQojǜ ˕ +/DTmv4;yys ho*ِ%qEy̿x\gL(Ovu.ay̎/ &2AUϚdTZlr;|pؘe2#;~B]ٿ騤=\Cr*_xq>#l\@yKٖ?Ja7 ,wBznG|GЃ*¿SQοL\x'Vmm 3Q+E#Pssص]r>JNUvQg7=@y7&VIdzYZkssxxOwџyRNE3%BGӷe'zrPQ#Il˒{gYǚٳ1<ގm}O=i,c_L>plHc<@f r [߰ptO"Kld˙!fV@]RWx q[6w}c\w5QGSEC,qjwUkׄ8shnkEG?Qy_A.qy>> 4 ?z:٫UPI"ZbTU_I%4/Ew2[nqJ[qPfaM2,9`$:j=?|QLDB2i{'~i<lU1R#8*y{e +мAIfF>C\ +7Gyq> ,#m\8ۘ>avå=[ԍ~wrf+ў|J-% ӳxr=[sx|} xp|R\˺7p %OlF=ԣy_#NEKt^Iy;p'nV%θKs"NYtZᒳS/}~Lb4O  chS!A|yT}?&]75U+y߇^ ^>*?)?ּKx7T?k&p/{Y#GB7ணL'hƕ_hSK'&R'040>Y>s7ox|Ɍ-K?&Yᯘ>b2ɟ~ͅ0;I}1wΑ?'e_}^M1kTʎGq7;Iw06$|p8eݖ8ŵ܊᮳3{}S#NGgq㸲:..ھ;k1".u2t1['ݬ7|$vݏf0V)j sUo)WdW),Vٟ \׺?ı@[H8\yf\QءG߳[q}%CRG8\\\pMz8?Ck}tJ;g KbVwl4vl',|Z{W*njy{N?olk ӻLeQ;.FyƏ9 "Q1G>C0y"f~Y_H}a6"Q_z]?l_F(~kdu.AiZM}Жž?]90\@v}/hĎg*ĺ,u4OɚHl&oR|OMc|K^ -^>K9$igOZx_ff) NI&k}bp|މM?>rqΞaCl0;9<<~#OogܿbՑO?sޭF(͟1I}?O0Xmi2 m1T?ˌ#l:lfX|/ DS0o@<_)a%r54l R63&F=vm?l8uqGȢ="vZKwɽM_G[ϋj[Diܑ"d~nm$._P0{@xC(ltYii5[¸?׶~Le;K`{;v n԰]dIq3>Ҕc߂ɚA٫ˈ1(qN]WjMEwdݡ)mRhLvmϱ}%NC'sGsͨS]#uKӬ}gҳbU }Ij{JUZ}3Pwh x;-9p0R4t=6-SqgkmOdVmh|ʽˢF=(7}*J7Q-`;i b[Vfx8^s\3x.i} f0fR>YjLǶJ4ca/|X]yǼ[}φմ٭WʉnYJhb#TTL_k2WX>9nJgݟqG (4j>/eʗZ=YW|vq^SO16Ӓ(a]ghdu'SyWZ~ r뻇}?=Q%ջ63Of@25F8+ІI>a2Wxs5s sR< {p,TnƱB2u^`l8-M{7wg~q;7K~=n0#ﳆ-iTOc~͹B%2N=>uݾ*6fI_nb nCS1QG; +r̹X;Vm>WgnO~= f\µ3Ԃ~E \_*prD_ z3ߊw0 +;9cG{l!aZ++~'\5{|߲.@eբwr?9"32+}/[dYh-p mBk+Ǽ0)]`x[9Ct)dȬlWXy(z9ArFePluuh;$w|e_#lw<~x恵; CY) Z |OJ״ +ՔTI> R\GvUJ|]fx24~U} +yueM)o s|YTa]5;8s-gv&6ʕBᘕ;Q#B3^ߕl|0Jwi6X]e8N}n:#kPO*&\lŔtb t})Xy?{u~s'JV{/=~,B ­y]UƚLzҿUd-^Tji6KZrcg9R70K`* IGgpe ӛ".[Z +*d_D'W`h0IA#)Kbe)252ƌe ӖF c}_֊8MZ|+⭬_aR 0Fz^'N8l_:}wx=os%gs(!LQ0D~k_" ,\=쵍e/RtO`OX}(o0EM/T̍5"|r CRlf@rs}õ,DG>+2ί05 ?3?Ư8Lժ 'ٰ@ae9Y943ۅJK?i4Z:O03L?ϰAHp9K#n&oaf\隁:ì_{brگh`7EsJ0z&5Pv7/W ecX> 7c uh+<?쒭u| S,1HD~zΔO?WltfagM< U6]&YǁZ{ϱx[/Hk u hh ? >z:₽KExpPQ5ڵoo\M`)~f4,]ק[Z3T3~d g +qw8j84Dxł=|t3T,Ls ~.fzXh2xɅh6&خjedx k~iOn/F@mE+ݸ^>u1HB1|}q2W'5ΰ}|M-X3Cu=PdCкG+Ks>/ +ӚL/zM`ӤӬac%_Աc3FI(W]F2G3 ,Sy %s +r¤_p?k=f(z%S-Btk1&Vخh\$qk1 fl1s +'j6JZ(˼ӗ*mϟ9 ?f`Z}q6Pq>o[yy0^kޏZgۚ9e.Q2_5L V?k3aՇNJ 5Ch#e2}8IhiY*u5U,%Oj1Z&z|,AƢHJznʙUt?Ԋ6lmhZ6jl0ڵ|}o*=jplk55Dٗ}CQCnݚdT<.sj#%\1coɗx}Zz)M8 ~1z}c*FyO@DKk( qgۦ˒c.~by7[ce84TP%^s2N}~,oӎrߏC-[5x5i&5ձV,oRc~ş}5U}-Hr@ʿ813#*M}Mz=̓=~.V*c,=_ouyQMڶWB4@{gQ~N2xA:׆0Q<,)sTNsZ͗3u2oQMבUxeeG%ʦgJ{գa{Q=cK6+Ez˯G0{N?c8} jAW5(hp*Oc^Lu c_x/H6o/AuoU6z,`qݼ+u3]s QGp"G~&xXrsq?kٷqvG8G{QMa".gݗ܍颇xKBZGnom<>ֿuo$}-_V 'ɝın\Ӥ`/J&b+C%sxWmE8D N~~;ip|!}ӿտ8gOn_Y~)v9׏Qi<oAm| +:SY)yR3A 7~ӭv}o"UmF#g/gm^25ej􃲿گpU~ri]x2)6^c2Cd?+^'3gE`6 py0A^!!"Q\0YY)L$cY<,Z8&>EP/0a<%',HW3:DCab/7_pѓ:OV0J|͊ka|,惱Z_& Kr 3ÿV.3wPWGxz?ac}P:c$@אuaxZgWx<ⅶ[z;s1k;+5kx6sOؗm{sԿ\ЧlͥIJFGbg, ~.@anZKw'F*VtB\.\k K29FkINB?͛TCF>N\&u>p=6S,KۨZ:\U(8'LK5)١\3.F{yaOU^+_U0\۪gBmv]ᣘ6$]-o`~-uƋvdY'.\O+5lK֫K檮럪sfgwGR帖bdy(k9rh/[-:._Dz3b^ZE3Jŵ$Ãk .QESn/ϫɴGi$:5xc%"P'Y~aEGW?뒤 +/gsq߸*C2ND7G/4Rc(X-{h&0Ho-_?8^:Y{SuU.F68P`Cf]|:@éSYs^fMLُu|s[&2k֤JTђ<0e<= tP:eR cfV%_*ڷ\[ʵt\q^y˂u/]%Jā-7$:ƶ*urQN _˙~V`8nխ>EEUgRt|1Rhr}Չmgn}rCao,=Ϗk1#gE2V4 +Wph2s}lM׺%gf}xb0@P MZx_|m\dX{>K+q:Ozyf{7fct(fG1^rM/+Gq9N;TP'NRpгgJpohZ E ؘ51Gp%lJr!]MT;|휧ۘ ,fx.ٴ&Vѿ[뒄5vޯhs +%'8Ó>QHs봕r>fE89FmN>cn-ZzkbHW2rn7ѭZ,ZEvKxok,}ʼn.t^KMrփQ#9揜?\Y +7LKWUe_f ++2 EZ[m_g\'7HotoHEDSQ~OKs|mDj+1WMhi8r{aJR.^?0{ 9"^ӪϿMq%7pԯUy._4|>f8:`4V8)ݒ_Հ}BgQ]6I;dߏsI'p4[ E`QݷU QM2VhSo;Y&DL}TهÜLkArCo3@ͯE14.ZwY@_'tT陹ۏ.'IØz$QKtеm.܈mO+'0WsOj,^`{f~5ޟ{ xWuE?:sGp'*< ~WS+x9>po3y|PJV +^-.GtJ\/Z< 93_]&IX~^O犑mY\_pyf/En d0wpq*zb_d0; >ߠņ/FD9:6DE ;D=^hf\-}EQ ?f9i1@I=L6pԯ8|>7" Ce<W_s7ڹ@0y)}b~ 6Sl~]hVS;hyj'5ϰAˋB\+q<Y/D{U]Cgd^xk>Pا>bZB&_'} ל/ba~mױ{(nGw8=O6pJ㶀dBf7I0Oօ +*,8@sOڿuo,cB6?CkSFPjϟp*'Xx:mfUWUϩT[?qJogz\:[Q5_,bJȦ= pZmhN=^]9f'TzO|ߌO0 ӵ9^>[Wr`~BS/Tׄs)4`_-aYŵZR 6r+0\H6g1:}P7y횩Q,xW,Ռd~ڞLG9KD;JKr6X~H {q17aõ +ȇ'u54zCتq̎`vՀ-Y~0x}}gge}fOr2@{" htF25]|ik}}>z^u/MhmŒ$ Tx/xQ-E|ARg3&72׈rWuH\X`z^6] //슽 Kኋ,f/]rD39<U0Zۗ~\Y9LXfhxb.1gJәvx7I*흩u(Xǧuܢr;+Uܼd#8vQ5ђ)T?сx̆<=cQ:kw /T8gZn#3qgOh J٨^C3}i_ B6gaGg8 S*i[Xaktތ%wRsP5_܍{;3IZb[OVqGj1۹J]M KLk}y L`k 3=Iu~f*f·Dp' +}Uqh>tGݏ.[a9y]ކyx;kup@+rǡyG9ϑS[U:Zi{Ţdd 3?X_ƏcnG?24>`rlC~_oP)YŬD K_sD\Ws-(ȭ<5_R ˵xO,=S:x?5۫ZMhZ<O/i*̑܏BzfRD6bs:wy{pJ~ܵ ?BgY*-ߕ:|uڤ5Ǿh[+hY&Z_m.~(DF\I8Ѓu +>Ku353A@WxQ2c `RT2Kc2[esi>|;vc 0z|[PIӵ..\63kkCI'%_@@ (6F]kDR4;5ۋGNFNoz0{Ty.a\x'tS=WrEg8>pЯEj]Y:ۊӑ}:YCxP4;y%l1 Fؓ8u2u?Y1يCۉ;x9Wynsxs,__uW^x{%޷ěyyWk \scqq+P?gWc %54PP:gQ8%5wxmx7ӘxɤQ<ŋgx-GEAC~ďY,u{wp/blø0{p-d*zɴI<ɚq7n)(ƒh#Af)Vw,gS?怍+dY` Lm_1,̒rWdcY'X[_& ]yqM|E2wUe,Mb3_f2g,N N[b56>^= WU^pf1^!u}YYr> s;>RhمExS'0f]G'bf;bܤ=h5UNbD-InI9OC4aFTݻ`zx)$PX|Hiy5m.:8W߯0ϫ37eLNgs֫o꺄Jg\nF֢Shxbsj6ntOkLyh<= 4L0?k:O(B:<>||9[LjMy5SÁz`aA(xڶ_ ow8Eg>jyS?;G XL&vnuz:0:U?cM39wU0P5^3`ެ>ݼu>\gi1ٴmZ]ߧHO4PYtXynji< ?W{򜲶K smQgRݜ]{iؚbZ%I| WUôDJ/p^7Wj ?<ّCSi](Hq(iKeԜݽ-^jO_7S[Gj=2thnP{Z:N4y!V.*L/@}*&s>NSu#<4#=[$L/MerP=oCHW!7ѰKo>CYGZ8k1w`7X:9v=p zy+#\4NJǚ7f}QqWzQW K"9YkӅ +wI4P YZs:wyK}ULx11e- \/wO1:)e49F,hѸjffwCuH&Lr\DgǜR% /y̟5ύ=X܏5ixY쥜 #-LB2JCLy2LB͚TtmG=@Vm9]_ +8T=-c-P:UhZ_fjUd%Da$+sP.iEHcWNz& +ZJzMrO+Z-ܯZhiW>֤^C}E͕s4BlKSyobiw#7ᵚ$[iTIUSR +4\Y>K!\GbC\t?\(^>xV{ S57qуA]践gn@̫vV"z{ck +7T2cVa 9sQ%/e[Ҿ|?~߲3$K$`\k17[/y7'^Z!9`>K/!^$_D-M@ffW~|K*uj?K ˗z|˾PZ=ֳ5ZkLmQйVWWtx}9%iiXF,=9.ܔ2I'Rၹke<1߫,SQeZ/C(Xu3EgXroQK}WZꏵ~;P%\ףLjĥc2h q_gaWɘD#ƏQ$FGS%2Cip;6FbG0:gxD} ;nJNX8:`T2K> ۯbS8Q >Ap~Q}z}8LKhqd҉?)9'hIՇ3{W?.x&ÝHfW^=boa$.ƓFh7&Y[G#ߦ`1cb})Jh;K_} #/+ ;1c*qyrbaiK$y]ޖ!-J1X~ɋ6dY`$/a9 _&2;\rC~Sh'aM !u&]k&V3eϱ]x籾h^/@i͠b~F˱v]'P=[[Z К5g^3@G=ڄ \d=LD=lYGs25w0'>7#K{}ًx oa~_j}_Z~>S>_ov(JY`~@-0Z&QavW~ ]s^33 TNeן |͉ Y vRx'54rhZzzx{tί;v3u85x̏5ۃ*֦(|!ڿŠx X\٘S|?/أW<̝%#Pj% 7k 4 sŊHD6kHί0fi_Zi|&F{y[z=5OqLY4Dr|\؛~ i跿C_Hyaaz]睲,D-:0f{cBfKrs%\-HEFOtM~BAK8@2}T=bź@]7Ys[j%'"V3X}.t?{%tsr*;b~L["\Ys &Ia'̾)xJdc3h +S c/'og>H%+hx}}ߌʐ/DJkPO.Y k VJFTo̗<0YQIy_qtL!:s,W_Ŋ`4r5>{ &'m/߫EItm\OmXz?qU8:C>c8Ջ̶y(Ƌ̻ˑ}tX`{Z{[ *_\cq,gv0GcL/o]XaCppo#.!fTma}}%_ +Kߘ(UX}E+Ca~ѻ2ƒ%ⴕ2 %"pVҚUo]_}̢2n+"u6(#Z5/oJjÖ"^cō;x]O%Z,w\`f +VΥ7T}LGzݻ&uoV뫾Cw"[u<}/rPA֥\:e2c9jʟgbw%fM`E&?uk:נ+Z54_ppgkEϮۊ{ϫYߍi`!Ks6P}?#W5kgBz8G Tu:;jq"{qԷjHkUqW#>K-N3-ܭ(6[p9hFC`Q\:#L]zɋ1ynO.>Xm+X s:[E~zuۧ s6yGlӈ31VrvŠq<;O,c#n8 }/vjgi8FA´Oi>Ⴁn/9NM_cCA6^bܘ)Z1\kp.'sr)e m]ؓd̑$#E. c 6b_6x>9@ah4gJBŮgH׾h_X1̪gsKwnb1ɠ=߷{(.>~k,/I23:@^:4\/ TŃ*}nC:4 (a"@ qgOx,Cܕ>gdfN?bO5fŜ0>Æxn712O KgscY|υ:}||`ant?6|N1=-~~vsW5yic2d'fl0PM=E{k{c1H9vZߥtw_J3@,Vg-7g>ցj TO-m@tN}$6ذ?圞ν 2ٶ|{;Y:((=bG{=t^E 쭹)0'Q<.Ks@۫nZ$H/=_tʭ~. C.Υy]֋p5Hw+4Ps43,B7R<ʓ撹+|W3K_ f_KJ+kS5wgyYaF VY!0YJgTskݓxfKCޏ)!~2Na]cOX͞btk*M@ɷ`=g=- DL3ą)EZ{٢r:ez%v~pm5f}"{Icˢe%Y,!N2Mk~y[,,Ru51I\&M)M`tSKdq@FgWƔND4* a@)Z7hXKS?z~psĊ(eYX.?+O2_[[E9V 3Ta*.2[G%Fߕ9fu:*fnmrh+gź_p]B#}ٟ:՚)8~ULD4tm*WH߯צiC63pHU*k@Oٿ~'xJlj̥c)$*:Խ3S9iޔ=ὡZlMg?b6tU!^m~̡<~cwxf;96޴m&NBDNw$fDTn.kY?=X̐k~pU 2Vr pW6{_)72c1fN) U_Hfƾϋͱnhc:ɴ=E1@z_}>XƟKE;Dתw/] V~~$`\ǯ;?&/wgu3x'õ7x3'uc h{o*7jdgHe~|ጐy|lvY}s_?5o(>n8.M}f17&5n_x,5 SPtO" 8#Q2#(u_.:@ +iP$0IdOw汥:+mq.R- &.RZxd`w嵥*C<,F{˹%x]ș0%ny~ `셹 `ScOe~aZ~({W[yﯙcxG}5}k>i2*\'Zа2k5Lm$׷y{&0p LM71ڑ!o0Jޏ:ylpD 4}90Ls`}ٔg]k償knd;1̝sc8_M=_ 40<).Mi~M.dև}U6*/93ϓEl14v /&?sxJ}< X`*qxmrD vo\[1Ѕbz ̅=-ݟI- OL?k9^Mh&0< 4n~p@Ӝfi-}u3s󷘡|ax*@O( rm/_Y*/~visxBيY"QLZRKg«)o92 c??\q+s siqWO UcVZ4aVp8W߿%I0/bȬ+Oa]~ȜEeH|^COgB] U5]GU1 0Qljd쟺Dk֑9VRxy> >#5fo4;d_ŚPa#?y03~5ī8D(k:o=/6m Q"jV=vuWzM.2KuV%Ggdf-}9g#wY7<%([O6BY^kk UhY!ڽqtDqAr5YsQ+o¶OV&em硘-'/rcntzɵe`dߣrF9J3~VMG~9g+VU1F J6R1x5{_//}=tMub~];݄38y ?`oN>aطH7q\9]dEZ:wux|YWIs~PSy :7^m/=!syƚ-RPr7&-V;&5Ego&ޒ mݒ-R]SMhG7tPybCcq(۔eh^]}_jg#Z_*жZ%ZΟѻQ1Bڿ _kjE aϽ3;ɔkK`c0bBuWIc6=q&DÏ(c#_Gcmkf^w3Z~Fj=igLKYҽ tXw&0NF;{ aoշ11qLuمx:Xt|z<ģ8uCqCѽXvbXPwa0(N:r)L~(} 8G޳;5 [Ul1ٳ CoW^p#~B׎f :Yw1[og4{s Ky׾|cixwT?xWy$ N,ٿfw^K~laǹxS*k^^<ŻiM8JgW/z}K(y״CKѣ*t#Gt$?R:=}/c8I\]Ȼ}pqu~dCwÿ*`"r_E4?4wwM7WēΚl|;cfeƎb>90?GIO03 { G}8kGwAz'wDߎ^y 7`ۿk}iC~D/8=;oh8 aw"Nu܋A*nG\ѳ>!$ {;Xڊ4~+og +W抗pe}/MA +ǵqVX"&/f-MQ,qYx'oH`0#et]t+|9(Y]B.~ӨX+n4Ntwfr^0/U-V?xiUEӑ8WXh~q0~ڏ?d}!2K]K,apa{J .>q%!q B::Q~_$#&?eHߵE5J1'<]1/] bƨj)6d|(v$DŽk?bA(]e!dn'ca #ɿD&uaÙ,0Y3=S>a>alVּ28lfgs@ݧ +t SZY)-Ln0D\0 pe~.͹RwuN롸wef⦽|oP,\4Q2p`Ȭ/ƒs>IshpZvh>$OqW:Hz^>9 9Vdۭ,()/n]Nqp-ԕE-W?#hؘabA.1 Z<g.EgqB_wf?^l䌸4ss硗ZA/gj}|T@16Wx]cxxM-@dpiQP: Umy`׵.`ndc[f2u:@=XENeEy_ޭ`Mkh<o`DQ2raiFB}0 0fa>Ue~^:'d}f)V׬KYZ*O01eij%t<)G3Kn;ɸ/\ֳfZݻ_gَ1Ll=L^+W.n q[;6ϻQQVڇmؿOZ~(AFm;yˑVF!u}.W!։n], +7$hc!rq>vaE.9]fv\u(ؐM&Niz`2RjqRwpS93x-Dɡ`<}(]qSjm(:)d0{gmozykU/2QC!ͫuAyڕyɺ;acUM 7yi>_/٨ڜihZ%]B*FÛ59 Wx{@ν[Ʊc/+? axK >{x}}Q˝y'N8ˏo\uݸwÕxCC{8.GǠtw1yS¿ lmbhsz 7p=a88n&ty62V \iw/p."΅ȳ7nZM\~ ~8+Oxq_y\9U'ڍ=?tɵIeDUڡw;(^<} wЯql>eGey"{sg#O{gew72]N>k闔ʾș"N+At7LZbNΖgy.c]?jr@"ri(B_%&$G,̚W?rO2=z:>SМG٣+1y娛U/UB96[6g/a)=^ɪ_ 8K#SO3z'_0`riϳ3l/Ka8eg/jrqq2hUoRy:z]5Ii>ϒyxf]X_F#mf4+ma-sXaW!V|7f_u\h3 k8ab14&#xQ)yb\F 4u,3y):,}~#@?jݼs La]!.swɻ%;1 *{mMz,opwsd:,0hu_9s˳Yz{ c#SyfF3CG^76J$yƽ/F(O Wvgyr̃W$L>H(_"e]~QZW"\G&`&0jɡ@[_0?SK )# ,Q^WY)  />lV(N p?JqtՅٺz^%~Pwy#5F|£=ơ2`?w`} }FX6aDuO\o訹QxvPGi38ocJvmkBǘa1a>Fesr|Y]5-[ZfiNjsrzHF<+]Vk4^ a^Os\ 6!Y*yɺ>H1q>R.߬%̒P͖.h7a=* sʽ)q~1r7y|W]x_CR9ʖ)㽠V]sޟS_QS0wΩMc$azfXW#h۞?Fፚ7N$35+:@2qKQA3~]5Y]eAG|0X:M34Ɍ ӥ嚺d[YM43^9Y2`x,kJ\>F}_]x4M7gbjٖ"&fwTyiQ꟎*2?r͉x->e})r䈙*T3oCCLQ -Sjke|m @~^yg7zRuݦۚer_rhd&ţ=b}^8=2Ѯk} 7^Ó *]>/`Ang¥Ecd' +ـZކkq dv/Z43baUc_&@4{jSozr♉,[~o,M4`ÏuAaK椨*>KTW<+%MGsQG\MGǩ#j:_=j`mk:y6dځ,LL/,sPi!4Ć2' Jt̬aذMKdb~JyjK\Vy_T"W ȔJP9ɅK^M vn@WA)G ~źߚVכVnWbwf=۰/v%y oWkyJכɺ|Y98÷g;|V{whͿ=oYߕgd[qZ.̖kp:n` rZUZہmy+{xPrkc!U[xTt[ >x^چG:GbC<=/z>ϫgx^}.\K;fVocix7Uvoku)}x]D5 +Y](7O;b ru ޷cޟ~w=K9c˸!}0=AwHv}݉. ƾ+ऌ<~/b|3Z _x1b./-og{w߅g=?5۪akyWxQJ^=L+1Wp>zCzqBy-m u d i3\QWq7Jp36E1z]_k;$N:?7ץŨx.х?B' X;ڂk ^uT5dwJ?*;1t:32OݭZO>?,.􋸙}~܈iQ!+Uj"˒Lor.'oew\_.riEZb?_y#dݐBu|&gk+{ϖ-O+c/1dZ]oCQH `1Ț$kf*Ӌmd)Ty[F(e&-#BsE58"-SjƉPj9hr<ĪrDQQHt"[j#-Dusdj WqA/]3#VFwE) whbm ?>͟TΕ犓睬5ٜuz-/Z{Q/_>,1?$Z1X-##;#k+C ܏GXfأ H0sAF_Sc0G8`0Nu. Pur##agH73z(;RYa9 u>#8C_m>WlƧ^i9bWץ)޻$֛nkԙ1X UVlj2D K܄<%gHjۦغ{NUFNSv,MSϰi^SV+FdYL6k'ǡwn4wI. UMRĺ5.1RsqT1]?M7ݙIQ2#UygM~ wTof'jVHgYc'q%3yDOP3ٺl|;oF9uӱK)1ZI.xVrxNz&fS|^O)+z.Ь^BA^Ɍt|2ҙr=4M~dF:hWuv^1e32PI>ea~16.i-G}M1]b[VVXrl2lkºk 6.(2ciKLfH՟3?/&uQzZvjexj+4G9ܔȶEf!W1;\ur, ?4`/jݍG+:~A^T=ĻgP8\$({h;p'2$\>lz_^ޗxy Wp=N\x;_^qWE2?Kc gCC~׼ےWӏ71T>Oߖߝ!,n%8zsO +uN6E27[p#"~{ۆ?Up-"NŅn;ߋ\I.\MIgp1) ˼So$euӊDӐsz~8O1N5xӊF$Wky 5싼ˬ)OD@ }r"lЮ+V_fF6ۄ 6ҿJ_>߄4gD.348bK-sf˺qK}^ ++30m\no7KY9̎uU#&Y: b?^eiZGM<{DkV LkaT= 'dzM2 KBX jo *2| c Sp=nvP9! Ϝz~N6Fs%5>e'$&#TOr ׋&Ì5';ZEgb?u!=Kg|1:@*kzz>~. +N8_FC6G}͟a}7#;\0ʩڷ O[{!TMk$5{ }M/0u{[/{r7=r?>}9UVG/Ru~q dyq~C]Op stVcc\^g5+$r?4!/ +:laB%iYWfgz0Ӎ~Nnn(^fܲA:B'#ܲHǷlW2>[n) fk) vsT\>cUղЌַh- t(ɖ7>˭qqsX%>aK]"F2?fEVR?z@^'3<6r?ݫ´e.!WX?FiԨ$G~U6[b1l <.bqy6Yrbr(^e8(~ϛχdnNm?^u87c>骶NMHV]&4kHbݥG ,g|Xe[Z41Nk[[jS?1V;La #d˷E<5c00S.Ga|4T}JǓ܉hmz:givθ'($ډP;-][/6fz|M155gaߗe6w=-3dl>TI\^<>j[&`s%|ҷSk:/'tMI^F3rג hYeػt&TGʹXӯXV"zJ ~$cKlR9%=&x=) ee5Δۊ3MVS[թ!i4U'%\5}MVmM/>[Z0g3d`[lo|;V[v70vE#(=;ݸu}ѝ];qgCϢ? .]D8>g;{?7FrT?psey=:=8Qƍ K8zX2^픻y_}}8r/20CA E]8!l_{ދSOKp6W̻!x&דI :Ǧdkѹd-Nk?oap}8dΩ;x'T1Մ>w9S+Wїpiӓl_EZ~`r:>U}T Xle&l߮+O\"J4[8O=K_nSp: KJ gBY'שJ'?,\T96]P7ȚO0ڿ R|^p+3|iGgrc?6-BFZk"_܏>q%qc=&{BzTChj 1)12{9!dq2I5+2$Ad}zaNӔwq{cL3.q|MZ_$uv>W͸;J'k4o|3>pէhFG֫3"v-xV~2A yb4#Xs|^o&yo6DٚͿ5V3,HNZ53)Uk鑕ō(?VFGWi qTcl'0̝?z9?dtNqϹ>pl.yK^eE2Nh}nF#}R2QGm=kz#[Mi֮,0|#l09^|^[SPCGy\F1 6&о C7[O//??fY~]g[{\)ksF8(て^1Za6_FqP+5EY#Ym=C7;hFr˜n3:7pԺiG4Z `5QVǎ t0<[{sjb 2[}V:WX~{:lahqW=Lt=+}a9et̿HRǠ(!9n<;lcg~AnN?92"" Ca6oO s_HDf*l[(#=)PU^dus_4g(ʵ|N}ز6rԣC=LJ4m u վ# }̶?ds#HѼx:l\~ˋLe5] ڗT|T"}/,A*ez 瓱_n^D`i>K$غŨy}`y6p:!?XAF.WV߉ `WF݌[c=ڌ?Ԩv3+:t҈5?KCl#/l0!q0vvGltPw8n3; {t>Y{gNlY٦5=ÑWfݍ{&Օnw*|#]:1y {W;e>s~μTޝxH@ ?KQ'~q!Χx]?ûgxㅼ~WrA|kx ݽgyo0{Ovs;J[8⠜ΆvfeI4z5\n$Uu\Wq>"/㒧bl;Շsp?>?ԇtKbottbE1p?ߏʵUes\}?/`Â5ha^;6-_vbt6e~ݣuԪ# 9 +weO:䋸J aZ?_\G%}\VW`{v5o^"}OW_.0#+eߔ9M/}L4YmViHM/pr,P`%²[&ʹjZ|(G1\G~H3!E0SZ~eO4~&ãGq?#GS-~fvzG5r<9RzT;>̱Fі>h]oG 9]fD=XS0E5W7Zqי:zB\a䓱 Qgj͍0?!zY2S++}ޔWud}dHHCfU3.]ȫ03ҭHc 5>0DSvyymtkFJY4q:?mavMsaz ogfC>?Y!`G= +7R/jFY9Ydt􄎾w{e~Fp• B~(NK|qoi~<2ʫ4g(Z{}#ͲM#Μvxi7,%(tvV{iOޙG+vΣa}WIgr<] ]rZxߌ\/r$̀qak\-r5zS `M$o昜g)Not~ 4>X@wmv, Osl8藴_ +1)tEȳ̯r}Q ;L%Uc3;iX(OɔDZتaZH)Ej_bkZ.be%Ԑhͽ[M_tXɝVVZֹur +,k< +}cbS4k'ʵIIuSQ;\^`2,Yyz9xkdlfn:Z U2M!ߗBI+S.F=25j䢴2xwh/=\g]1) Mrd\%{vmkȖ9Hy h]9娙y%U v/A%=:|wmajpX_L_%yrzXJ%בױv ^92Y?Y7:gBgϲ +(~>or||f[]hskcg|52п4쾎'[bp5 _~i<ƭSz w'm¡ Ozw'f7ntav[V/*F- 8/_yGy.sS +r>2l:#EQ85^Yv߭ +6cw ,{;5UʹL!͢8dl/ےT'%O> +34\}WI.?+PsٌTi~q)9BfmP"ʶ|^;UQRe3<`+RWo +2V}Ԭ1ߗEXϼok57sPysP>+Ss4˾_a-Sn|܀6qQ)|Se5k, QY᫗'ޏWY>ZU!ף߷|-.G# {JicBj +1U } &XyP|i KUe +k +-IU_S3\ͿawMs+:~l@7U]Ro*h\VomoFFу*J4}]u43 {:5@6OأKRozN>3Gt{O!mǣk[uw*/~eܔ慂8_ww`[@;ΤntžM_ǭs$״{zܭy71/z0x;^Ãx n v=7~'ax9L}v«Gxyw.zl/Nn%Û1ޗ gx_5^݆ȸ1\gOO{(&aosymG_bzou\W=\;~u<μx{דje\@r^ⷸ|dbrDeXRHSO#G=6o}^,6oT?m2ÂRfPޕ(%^l׫ ,,dx9[. C5Bcj:!J&[6۴!>!q|~ispQ:7\EQs}.2p>hMgͣ-V^k#_($#^k: Z1mUd8dh=@ݏ0ϋ^b uWb=#tuy\FHݝѓ5ܾF3Q^V^V2a9uGXU06x߭ws3pDZZ:ne.Vӗ>e-B +yl6sM˕ 8,ɳ­?Wum>.rpʐRYL12MƐYslu5܇P"{nx] 6_[yN3@u|A$űm8{WűҶ'f.֟ѱ뿮Bsqucydf2S7[*g^3[|vjJft<T'>9?YDԌKi,KuܾC><uI!S _>d|f0;#2992BT@ 7M|l\V%h[(;Z9`tigL:zQOQXk u|[h\4j6ze +/ܸѹY9Nb}di՟~A6#[ur[[-l~&X(XPK*F CH? 67?Ε7̯Am[bY`Y5ڿ69Oۢ + %'yfvb4|VYr󟓫dzJu>ҪؚM2N޵_֡uIEd /P =QW=/_5uRZ +my`ƥҏ4fwmFDzz.F-R ˪M 6Ҫu5EX&m5TQXEh ڈAZ?yɤ8{6xnM?^zFk]):7p2]Ɠ}wpu\)Gћ~ghIαs ل+PVkãsfhgGxv!>K^Ë#&;`h{X֝xga ^WcKOErx]7xÕ/mX +ex7nYSR3HW&ev6sd,`2#&S[V892k#S45Gef)'T"eR(FΔ&JQb|RDj3SEZ}傾^7>TW9b1x9opq 9q4Ѷ&W¸xcgpy}x mI,3y/Z5rѾQµErG]3+zO"⭗&ͼpy +f*/ԼZ)N13#Q'ڇ%V1Kc z u8J85s8廛]}:ޙ ףŲt#.RtA6 ՗ˣ\h?'71-? s]:;u|,s;^;lx/G~12:Y0zVq#:#WuGg?w:Nβf}(\kȨ9v÷Oy3o[/?[-}R>ͅ NƯ7=:>Y2DWV0|o}]UZf4o5{ :?=rU1:rcVϨJ[nst,;:no5arM}_fu6>=>͏ V?[zz}.&Y(,L\x]:Jh^k0h4R"jzm Sg*:xbovWY7}LV m9ǽ_ؾ>!KsxZetVGt0#YNnu_7^ff$1s5~A{|CF3L!.T5Cl n969%rWS3-~ӌq8GZT}[.Qoz|}&{ȑjie> 橩hg=JR{|ˣkiYh)4 MJƩh+,N˖e5I1zj_d24TOD|mݬWKOī}Pl]nfok&-]O9E^_viurNj*'(;l%IΫrd2O$,JF Y"Yk]Faq<H}5Z70C WES;hu^b5, +ߍ%505W\MrWcK\g̏._*skmDre6؂jMJ\ަZ?fQWµغ;kn 8L\-K8y{7n%<꼁-dm<&Gna5ܯ5oÆ+I=ke5k ¾J GlWzN$֫xzahC m)|GڎGx!w9xsj5zL-Z :h{_!o ^xu[ o;fy(n|vϲbp`(Oƕswr9N ]sywM&ӯn*_`8[/emx-4x$Y.Ro2K+yYOq=:Nփ_OOp%N֍u7b=8I\z?9Bл zWțw7nnI^}Q~WuqS8r/Jp{E}WWq>z{qc/r׸zݿwaӧ2g7uN#v|U{COqu/{!O/ VG9 >SAGԋAq:8N2gq)ry\IFae <"KN?1Y]}$+Z& eqeSKP*nF j+u5ܿd2u&Onz_=,K󊕅=΋^w(_S+F'z4Kzz_?K-7lB }/ʰ=h囉x1%yE*{ǘ/Ϝk(:6>dS0\,P7/X3@l0lsc}k8Vּs20"}CF W6f?m_+k38> PGgآ^B> j;~8yvut5vzMAOqיU. @Z}0uj?\hlQcLGG* r9YaC Y[0r6_!G@Hsr\>,pz-fZcJy +wR8)5Eh4n+\߯zb-sc-gӬՁɿKz~/d\[/f=mFl̉ +5v|2-Yp@G ]&X49WᄎxW\af|^[u^WK~x-wvf8M 9^fϲ6GH. 4Эhya,1;ݤVh|ۣǵy):PIrDdbrErlw%g 4YyVF]U-1Z(jQCV*d99 RVcٝV\ƫz?4&6qQVl/NyNGWɌdkʛX/:'7i0zdu?\Km۔T2.Vjy%ꯍsuuMӲa|睜f[0%Ccr:{ĩwJrM9{z+e5g+˖Jdqm3/嚊S['?0bmٖ,#4ܲfR*:EôLٖnG5eWJdgNj9V Zך6|T19e:h]:U&}xNZËce>[ƣ%gr&r]6=zNη쐼ώz,e'ڀ&ZR]g|2ҩ [obp- t\@U긋}W~+.j \OݡP&܁S?q$GB;C,)El]ZF9LeRVLME'9M6jJfh ?fTIW6W4%AUΒȩD}%%K٨3Tק^}ISԇ\Ho/K5 $3=Zd\J"Aܲ {JQ>?[VɘU&eKQ/d71%fQI~B`bgS3zhC:9F%WUu@:tlGr/赫A׷2z lnG/mعSY_t,LClQۯۍCCZۏzCp* Χ߁mm*ã;xtռ#˯ <C[;k[i-LAtoEJ +rx3^}'xy^zw^hc4Ss#9&~e}ō6,rAnl]drfs;Gu805}ʰՇ~CZܪZ.UZ]u6VSp_-2: Zns3Z;槾]tP,_Y/d~jF0)L򘫠~oϚ f[f}'ZN׎&_x 2VӸ?(XnsOo.nz3j{Q98oq4S\p7֊4Z>n[mΆ%.}X -.>%okQc$1^Y^[_}%[͠FeMdѕk`=Zl"k)ɚhR'*\}&Ku`4̆40"a>Evc꺌xգoYar)蘙F4d(këbkፅiĔXe66h5Se$4~QOOF$㫥.i;ٞ;ɱ(giԌ/Sӥh5*I*bCV[.xk-=IFH/yd+#%1QWi#-揜̋1{~vӺ@.cF0RIFndo*geF2Fl,, +95qh{Mf1F{:7yOOy˴Rwt8-ZY&cq(kjYdBamGUuzps0zVú'SneDo9÷6m#x0]ò˸lja >ۡgpGCq=ԃoN./VNFZ4,A,j0zO镥V\Ga8#c+f}H Bo/|^׼v3P>;U=jw +}U3H֗nfP:+MTeɁk䚷GTϔ~Qjfgjv =8_%k0UP(O_\վב5*U 5*c Z֔+b/vK2@ب#'l]]MMS[%8<ܺ [(grgs5߸[X<:e%F/P0_'Ӵ>QmѶBv_~7r л˪QHj4h\QՕIEesyW)y~2C2κeź?VV*XW#Ke|*\)V [U_K,cYEe:fDjﺱVtG6tߺIA]ΡkS6V{L7Ta@ Y`\e'h%n !kR'?S`N ց}؇м[q:wU[FTx +]Þn̓u81{p12{%p=$h}GjL#~Sx}!^z~}^~wN‡c/K|/1z Fɲ&o[}lg^^S3|j|O~շ;]zχaF_s3 ˌ86=h,+%`t;| +_W(8կ1z_Ӱ(ʲQ|Ų~;|9F"9<ͧǦ#8)_\ =s{9{ ܭ_0o|?mqcDv܊i/p7\õ~7ox ?j B܌Wb$ȲGx%q5*:amB˼F|ӉEC\ݏUYҁEM]ى]0uG>Ҽ)7 +:?y/d1 ?Qgp'fL[Wq;μ? #}JW +5_}UGM»B^҇>BY9^9Q2:\%2=9r}d~Ū+>d^2,e|E!e,ejR'ƪ7ubN9/gJ?.-Y֡Nl-M9 `r`O,b̬%xFj_=1m8Ot3LѰ_A{٣~0_ VVelT/䍶't Pvbvkq&K$Q[Vul2|me^^%r qJhfELuŤV.R-בMǐoaۅX_ ~]Õ9L_xVkZσN_`ct?9dֵߕ,/ړ0=L^qH,0ue.qcU?دY٦sNI^0 ~0CGu UhF٬XG)$k)]߭..<]7~pW* N<9߯Yt2JטXll +v_6r,]Lf&+||srl;׺fNYY02@ge!_Et_4?ub XjX58%jaj][g5lE6[ŭ8ua/FlS#oqBՕ:e7]+ff<@Gt?eidf]#KQDv {l6<Ʋ 7^X땎9&ZOm+"Zg8Vu٪^_srW7h/js)}d}}Q6팲0X볍quqH{an?~ˋdpZ-K}&ײ:WGk:~,/]:h Nͳed,'s̅X/Md%6_A^6r^5{ӴZVVhWOWj<ٶRX֣#k@O6iMj%G5gA3+Ȃϣf^KFnjg +%;]3s7PhkLKRVs(P=`^@X򒤿>AUSSU쓧koN zf4zwvFiSsieISٽ!-25)W9Dl9T9v ʤM r'JTyh @jZWŒJ>2@͕R>,ueL8 ;\sOf^0ٟamtg=*1Z/BjU$yomVX>0@'s3 Q5+G3YYj YP=ᶞ`yd}߾G_E&F2Nr!ܧ 8gv ~/ύ^Pl |[?ci *g}Ŝh^VN&s21+cYflR|i.NBLJ-d>~ad2wj2+|ReroJ:O\2^򹚖!l/G|.dL߲Q3#(Yװpfzy\8ڨ /dVBiAV _4.5zjWZE&wc oꔑ[P؈Nh~Y7ȖgtG .\WΕ{Tme暰" KܰKXCˊ6q[VWcu6ZM}?wCzlԤwoƎMh_]uuX5g.SdHbuS3z~lB +4s }Ԉ[0Ǣh}eq]ڛ |")Yl 9gq"^Ť##dc@q3^kx\tjn>?P><[iSw5>yw_yٷt }KG{Y0@xd ~< +_Z^3m/F{NAwt, nqH}0ZeNtFXמt-co|x/F⦅3Fm8%>ʱ:gv݁5}n|voN4hCӌV ƭ{x?u܏|IOp'..]ŭ2n;ap~܍;wd;os'ںSRGWŵ[vFZyuFfVkF%|*U u}^;l.MŲ,g2k*˝%a|ҟ(~_rIȟ!0C~3&鼌IIZ#/4/Ay`Δde):%Kڀ ="T?Hg(K{8>r%Fjiݱb}IpIQHbsq`ᄞWLTafN9BEp`m%sݬE(o?ݗ"D23e&$ 5* ^Xc8Ce#cfN1J#8yVkH]g 58edM &M4:L#5vmsh9e_4;$L,7 wnFg^a, 9ecFMOh2jY,3)ypfRG\+sR:Z g`{=FiC,ev;1Q&$ҍcf=&&uLAT$N@¤,_klə{Z3=̴I\<^Zz#tqcC1jk 14”L`ခ]g5AvX ?k?ͩ7mA9`NYv,#.6.vh4zW}Ncq؝S8._a +[ر|a?G&7m:cAѸyY?g6z@rB7y }~Vot]ؘ롹Q<[אtWkݴ4@1 tj@1 +}jc<֏Z٨'QޓMLKVO3dfhWھ$tI?9O$GM OoǬBt̖%\ʼj#xq˹zKSTkaj}ҔS.IsCOl#}sa9,DAf}5x%(9_}Ѫ$9f[ is_YmO3uRZ34QݝvzǮPWp>85ys}~F-:\.f<{Oqm<Ӗ{p:lXN\K;11S+v؆ε\]ئEh:VaF4-E4XU٩#sE3 ϛ>^rR +&n=u'J+UaLGxM9sgeɳe#|vjxߒk3Z:/Ii kd{a)/:94)NRaZnyzz[VW(jйFsz~gɘZ~2f|ݴ-KPPƶ[yuN9.3P#K鱗?RO?әS)7xGO_#>w|Q|<?c[z=.|{5>hފ=[0E9-3;mx׶]ħyWfmkqDMGp<{G,v-ۅ~=%>}}^U+\v{WE.4jBNtDY[;uҿEX؊}vchNXڅޥؾ}+зCQ ?QHHU܈q0%㸙x Wc/^-Iq0r wSo`$]D|S[:Q,| ̖bTzw},aZzz/b{NU>e_ٶe'2jgTK* +L~0]^e{7]uS(C"s_:ʧ {!~ sJ"'k@53JQ7EN#kr&rt~ 3 ye!O$#{vΘ^`ûVQki=i”[:Vc~e7ߝyq$y">a9,T;Ƹ/(b&ݠwycl}Xۗ<ed/kTʼD~r~ 5V5IX͚T-^Ob_my!N~HGG~G]2//du[ͨ:>K SU(AӜ:yfJROPG?^Non$+F.Nҗpyn y2pWII2} yNQ!6xy4hX/dD\QDsLtcc帙[QίY^{Iίɓ _9HR$"K>ɵLgTy7HkI&'cYȚ*c P[MBz#Twij(Fh<+:@&Ȭ4,O6sd2E vt84a!4)sZW[,c~lWu>sYo[\uln>v,\`[W+0a|.h}v?t/ܪ:Ti߸IQmߴc|'39\Zܜos^kN~qq zޞdWpYB"}M?z|_6}bN9/fe8\0Wk$evF?Ep?~Ie:@2w $@f1 ufuM^+s^Jt7YsMaJ'Gʳ<<G3zX }jʢ^nVG$0:,F~c=NC+rD1v8|[]5ۚ}ܧav|w}Zq<[."c˲|$SF/hX_r Q^BNH`>s<7#3^HJokmc˝ht{5P>G_LB׌etͬکqh`}I#q"$s).jQ$33Cs0<=U_XIF}_Εi, }ɱu,;'|yVS!&KU>40: fdJf˴譥P49ZYcv2ȞE̴T7y +&Y*ez9VTHcLm#U0w`v{fjkXې}.Br4ȳw敔RM#}HBͦ,u\\jU蕨>bKGy:IFA R?{D/}7iv“x^/ӊxVz/Koi܌;q*|lj]+,l8ۋUK;kҬh]RoD6/ Q'S9N7=jˡf@qe>5yȝ:$zXeY./nuf4UY9;ճ3ToHn,'g~n~f|TW?# MssddeOWg5msdK fK(?r}[ѱX 5E>y}HT&״D=jkfWeس P8Gp=4mBF͹mXR M蠦mkfazUA| +j</u+eyB催ϧP9O{XCZZK>ߺ=4'bj,UkX ]خW92~_qa1d>[kAeb_رA!mGaEr.3Ѹ]kжZnX`Nun\l뵷wU^ŋ;x7wdz;s/:i?j܏F>%MoK?Jr>*k{9Q5l=';,9yw&;D9nɼ~ٶ%^<ˌGd>=җ#oqZ=|~?S'<|{}MlS+ [.bߋ{ujC6tuL9 6KphA\ +[Y \ K1~\½x]zoK p`z@߷mGNX}w ,Gߒطv|Cs|j>_ڎӁVZ׏І~={0Άa$&.DÝpn-w +n%_H5.*ֺ\SQ4S|Ʒke7+-+^̯@ߓr^<53jT>|fMt#/OI2ƗÜZ :S̔eT?m257N^'ʺi v1uBӬ`Y?m?Z5e`"Tа%C?N7|J`ыRnh3^upYn4fKO9 .4.XZ6# oi8@Pgo1+[L~c͌7X9g~n;vq&G#fa<7'MTJGm'I&/Fg5dʤe}fISh9Θ񏲵# +b-VL uBurHwl^*2Y|17R}Ö9ժ3:pey)-qr΍v7}u2tf~O¤d9S4Ao5Fg9d6s1Joa[[dfyg+e'B-:6'FXW/!Δu|af}۶YW3Yo0eRա^/jВG6Ir]SWjH9+3][\>Wf ;lh20담2y.۱\eN|΍L['$2[j>d|)rLr=^GmRYN0P?e?= PEu0>,ְ7z?6egrcY(]l.js *se4ɹC-w4pS=zId-.^n?G s3ycm.n&yE'Z_5bӎѡraLg"#PSH1W6#P9_Kڿ !\7 XĞV7hd|#&l|h +&E*4 + 5zg(kT>B7=U^#ߴDRWdZWW"g A9dft(o#G\}fcVder1Yg/C~WǕLʻs+\ r$~Q&Y~5byU$F߬bc5I2GB#9(J>3W8X0_Ƭ`WX5m?3WW'&9F\tR-`)}S"UCI}e#Seǚd%*ׄYazFל +=bYzd䡵mє8ݖŢɱ 1pj˾:? 2cٲ^'kE*t5/O rif ;'Z(F]Pͥd?&vg5 _,׸@9YHӼ\;gCw6uYM<7 +\x~#ʳ> م3{pl܃A8chcv܎EhXh]^M-r ljPWHxӕP'ר`kɼDTByϺ|ZGCG}{=73>i򼘎Noy^YUԳ4US3^9YJQ^)Uc\Z`njRɨUhYPY\镤ϥ>(%yYd2r혱ѳkTG.ex=q2r]Ÿ?}cȲM]RQ}2]`:ʤHJV>rsQ9'[} Q1Km]!5\//{#%2nųP}߷{m- j3Ӵ`&tƉMppt~cC5U/o=Jյ@ݢ"R^=hЀwh0i)\J<#W}\kM|wll=+ѳݫcSz[WY-K*UײRkдR<\SeЂroOcг+[kCvc,sBۊeKw-cy5dd(7,fX}b>o>ZNy'7*>. yM5>vmNs]nO0G6 ZCjw4C/e\񿀛qyyY{{V=[`Li>meZ::cV'؇?_.qAxϳ( w j5\Gq8?/p{M]>]>z]3:;bx0xx0v.)p3_Ɲ[s'?Fq/~izwȯq.^ÍKql;p%rbJt&SaǪ}3yY(b樾.]eHL?/S ~F=d~y^yqi6R\0_uddSrr6dvdx3wk+S#XuQ8wr?F\0Ec)VDD_if$)}%v,Fih&'7N9 6˚ 3^_-YN<%S`z^yf(Wfl>'w8Fega_-gxnsJc +|b+p4TzF3Ɉ0#mnGn_͇ m܂m3b9"&ȹ${'&N,}Mk+DG+qM$MVȚ %ؘ:qzɽM#&H&k?#MM@㹓r"ӱ_gU)?W2ƕȝڄ :{KkALB:mЄvYO~KV>erMw|}*U k/vSg\txFj^ }ܑ:jϰ¬Np@:u  `4h儘dzaS&gkgfw8Ȳ`WA7wxROdcS}?K_װM%*F 9g1G=Qn!MkͰf]FLM\NsOgDi^9&X/v2B2'/AfBM[%Z4__=ue]=e/f 򙔹Ehn]/B:vL?g擥)ױ΢q&Ry{Fx +ʧDlr8J&5T]#}ׁ҂i)4(rIz5Ok 3Utԃq0FY l==7'h֎<[ͥtXnkcu|MymQ 'Sx+Wd;c x]8[k0z?]6{olG#IU,FM2ZtLVdtM&H ) 3~Xb!:܊E3:kyMW2*+kSoo }]OyjbQ8)Ju[Ԓ5N3Z$Rꓣ9zg(!9g[~ѧ+,lJ2)(R${%Kߓd9}Ԝ%˲ Lkp"e~-r:9V׌\ffP΃>_r=9擴x)cݾJzdekqqff0}m%~h#C3toÁ_w`խ΢~1Gve=h^(k;/ 5kf^l,YXƙ҇l͗y=%IYΐ(i(!c,E[khXP$OG>O'iھ)Cr\ӄ5h^efSر=+N_ +R;,ҽ߶c3ԃ{~;G#872Πg}OD9_:֢sUzrm΍ر ۱}U}u#zW{u6koee56oc+7ub. ҃#k?No=Qwi :W6u*edж=йFA|JQm^i*.+F׆:Û{Ͽ}?mMzhE:--\hX[MUځC~X}G _Wq+^Wp .j)#y|‹Y~}-ˎwyOac3o O1~~aY~iT!}>—Q܍:w#ػbv.ى=݁Ym>w>W^bh.f{ q8dC^^}oHrsX8Ħ?, Nm8KweK|c⽸^v;fl3oczba\:yޏ]+wYŝn~煏(o\ +=] k7.E8r +'TП y#I״FmN,NuwRoȶ՚+Y,}zt|bz2>{++6Mke"Sg+U`}EW"e2/GQW2PkfNJƎhW#WKV0P%2-u =Ѥ,KTF-z=L֌4|x⵾de鲌6>j3y}cvRϗzp3GZƫG6D2"UL0N}a W_2)n;Nt> yys<⥿EYF9`NjRO01X3%x&#ۋ|2Ye#E?U=3Nu|'.{b>A7 =H}c&_'Yj}\J.7sV/"cJ?)u҇:$O mrlG]țրr2e/S)eTgr>(4`lY `5C4%T}†M a~E <мw6T8ﯣscqL;>Atqs~6j֋\_G,'0oumo _?7hmv(t28=V4ՌWfb+ox!#,Q͟U],p7Ov!.ݟ a1Z6"πlYos24ns.j꒔CLj~ψaƸ4t[U j6gَ29ĚXwuL?ٞǖ֣^*zJ$YrXOs釼AKTՖmc᫵YGW*5bʂy$GqܰNYgx03xTsS+/?[TSnuiJsE>{y1~Qtهُ.nonc8u9\;tq;hn}mR7Q52Skfx^ +uu[zƻmEVa|ڔ @e~{- T& o/dlGl_>gb94r܉FUf|t_9[P+ϰluJ@d4I#응z>9MBd4>ْ&ټRsn ̯CL(Q铣QyԫK^T4S-awJHAZ,7/}W'Y\2)ӳ8Y_lMϐHS ǭR7/jljMCgP}%9i%#4ߗ찜UYKVzr 2@?Sc٠>L,@txnM8zzZL:oR9oG'Y$S6Hޗ"3ɝ#J=*c(5~:qխ؜h͜{_y6TΩHʾZOf*/̐ý+Β5y_/de{³w<kxRtrEM<*IGq'oN~ ƅȃ7t`*N|4-C,] Q17My^7Ou(c4ssU痠:bddu^` o+'k)gmIքiOj嚗 vsr=LlS/蝮 lV3L'$+Jh mMցLFTd\5$'u\WVsmr!xZ~ oG:'vKK3ܴdTϕ|Y͋KQMήj6[fzV!gfn!m\y2LgfgX_䝆oJQ2#C`|ǜv5rпQ1]{4(FǚJ6HѾ-+н= Mr=}}z76v ;Ig0^g]wu7ps;}?Hn\׋ڇ3Ǖ]gQ >QWp;fN7.n ܌Wp5|3 hG|*d&GWɹ(Zz?@QSm|J廿\5%SKT;%GKQ-Ks:)Qg5Iz\j>z|'h*,xoy^BJq6~$iȒ3l^ `2hՍeMNui=dOnHֱf SSAxp[!fx2Bsx o7f8 LL1=\5q1r>&mbd=TuܿT^& +zƩ0Z΁ CF#L9)ZG%t@e~c'7u6Mc.#KGI溘왠$Y}}ieDm~"G,dJGl^ s $f0L oME ,|yRfrnCv^$3p uhHw峘4xهa7aIbt5wp7חwM26KH ZnR&,ʕi|k3$ץJ!oZkCT-uSkϕjFWLdy=!v^~JYZWc"nd?2RTHs44 w5K $8@E<UnˌuC kYmש hXsyVohk8av[]9Zw{<-,qjퟯ. o=z~Fg~[]p;5?ۄXcN0٪u. yZ?7G_SGױ{wwfk^k<{ar_yM2(b,m|[4650}.;כälnQVq1-o4) t@x?rE^lLWxxF+9Njz?@[_Q MF/3ExJr?Cuh[$=geʲd>TfjSh=r?[kx-#ǔ(IRXA(@," ^܏Lbn23KX$Is%mK?UGeCsRGU0FB \~XX1C擩Ff:0Dk\ ӫd9]rŪf6.*{@KkLz|צTYj?6SZ/S\+PVB֥r]~sS{XmHmd˳59s/W5k6.Lк9rp_'<?MoGwx{㻼x?͌Ӹ9+80cp|oj{G֡sK9Z7u}}P#״&]0M3~},Zl8yn>e-J2=wd2U-MGJewa`o*互ɑөP\LM@#KUM bVWXx1C/KLe +޳jlj?V,JUG/E/"LwNP4 ۪ѱ#a&lKSpI/cm';hc%huiՅ5u֕(C$Sc hZUU2_ְ +ʔ yU֑/.GbC8SOԖ[=qbQvL;}c +o\5q+oFW`Bއ׌`z8yLć֏ȳA'q8)lc0wx>ػ1Ō]SqH=ǩ|fJ,7,ˌ|7̾2D\׉7$4jF%cDry'.OkjGŒ2^ 2,}U,J65H6Xg@~TGH`")\JeBGw ױgc.Z|0ޙĪFyf5^ǖ/f(9+\ jS,KV`rg]ԐKLZbdsܧխ9ڵc)y1 JB.]^Y/#$9S,̐hYߝϔ S]@n܍ u?ztzpQМa&礞h"\z|5td4(oGdH90epHxe8bjL4,,皨A^ִsV!ᎱYVI \x1s~eOxΉv[p֖(\`jǫ0;/ \m'w7Ot|}Qn dr|rozy"gabTJ>Aޗ)9үӗHxy3*|O;I_o+J4gzw3Z<s[ m[?f~8-?- 0Is~.#MNlߊ +<•gїKC.xy\C]2@y_2ã #,V}a~d[.\O׏V/kCDW6/@O +I>%-盏V2}%b~!9kZZ0QC !?׳"e};,E6yǡ]Jj ugrWL[Xqf};WVqȴ!P-e?vJhr,~ٟLL6G0o0|Z^ߩּa2C樌~ԅq>b +_g]ƕSp +ge$.LR Nˤ+Zw}G7{xZ?7ɗMU_|fu/\qy4{_Gusw4n_' +/Bu J~i׀9'=Owl9e>}w͞p/.^7˟u\|xS[qc8im? 8(A~ k֌S: ۏC8n G֎o׎['0f#\҇u0c8M8N<#oz2qf)oksߧ=p#*&v|v`hK?Fv`D5~gOpfI 8/c߅2*.8kq;K<̺[7p'K|-$}{ɷMW6koX6*ʔY(QnW+EhYڬ:::e~R栗hoF'7,[\܏̏-W/f{e*W,]TG!9^1KseBod̷,!SY׽8AtX(Ox7%fx&,\p8]C8UR9 +]5N\)ZIԯ1"E^U7(cI QGB .O sY9S3ŝ?R].ϛZ ezrN@a2(YV=6/dcKrɖ)&x<][/fF/reǸ'*uSMв?_r4էE7zo^#^O֌F03]m8ɪiQ${2ctKr15L-[G>[R-`[,fd|[%Ulf iDS}†Ǒ/6`5p{kBs|FWGf(w8[~B+PW%U(}ˊ˾wyw̯ +GW*=P%޺0U^a( ӤǗ% QQjnB}f0P[ԨKZ31k- ûdNHV6/UOao&czwKdݦ>[YWjMGj# 7yk3Ws <8h[oM=Z?)|LEd*KVɰ5@}63*ːSGޚy4׃#ܕq,(F˒_(ue,9(#L##;MjUszھEh[/ΐؾ$Kж8#2i5w뛧[ +nlUe_2iZ֯[osmK#K"˴[?/'e qu[ L* S\ 6Zd&zuY䚴N`2P}wbS7:5bhzɮԗ+˼bU7YދJ Yf GX\Ru!RY?ez<;z&+Wc#ST=?Puy E+QvKh4!(e¡/KuFOZ{'Iҏm< #[9ԲMޟ<4K3֜<.WУ]>\_o?Wjf[q?_joE=|}g!os<ͼprofv`Lׂ4`p[ 7Wrt/Fb)C\)jowNN_㛥6^Y/ܮvevioʗrP,KsOd?j ~χd rPTѻMu҇Ѵ,epte!k\'P0}̅މX2YyU~%hXN2Q+3{}JG8<\|ԿQ EhX65EaM1זmCr%nߵhYU!/@_ 6wkZU痫G=Nm]%zԡoTY77b6b +1tY#*F5߁78+d}f`e±1I?ס\zTy|+ Q%Zw[8>oِ ՈtatoUN׺ +ocEz ؁=| S '8$k&ׄޝ-hZMeZZKUy|ܭ9̝oKl6evG% hs +Ԭ6˺%_)\US)gQ_ X--+ٿUhYWY!s;wbfLDž8*tA|.A96 lEfoZ]{A}ҁ#vg]88PY7t +_ğõӸsg'p.d'?;L8.DLAu^Pwx6~-1gq#4>;џtGe}MɟuS1ŧ3\5NZųPsYeuU__i_ ?|.fsm&p}^e3-%>ăqó8nI??x$/p8I}8f:;bq1{8aëG1~&pt$lƹr9\ [y3#[>{1=8A~G7Ls8imڏù೸rgNZ%|vM9/c|t_D\ŗQp+noe5|s/q7&wwqx砼o'2+S~ነ-]l|q|UWXY `OKHW/i>YxKdE+8y9@ozey/Sg<Ic#̖u +w?WV'bGaT(ϧ 2aof,#I&[?jnݑ%Y$SNf1#dyፓ%(TMeSpwx`윷jfW9X='7>,N;0xY0Suf_gx:}Qf%%Tij d#Ǻ|V;`Grp;3nid2 BS-P=V?K_-s̤OYq&(o#e'*Si_\gfy27$S/5]C]5z:4\3^?Gc!qil4E",ӝQliuqKR_G&x83|2"H_sj]Oc a F7fƫ6U$-Id\+߱Y9R['ʤUwF9_Ԋ%ͨ@ʃr Nzy ې*n7(ρ ?C8$ό}(C,[lT8<#(Dr Ož}HBg[gaEfh 9.#gQ桄'ec49B!Z/Tk0ӒFj&rN' "CyEjrrPkU-W^B-_T>512@kiM @O<lB]f3<7-s_vA\am:ao\>BUgft6tx ~3 OY}:L0]^[#mKOo  S-'ZgO3Q+Q z=֛j cV0jem,:2-ya7/~֌`ݶ)okQeo!VY75 I5<=/C/~ygf(;o k=Q)\(UdZkt9>ꉚdD,@y Lj +[NgRog?:>`ՙisٯ,^9c ݋S\M$׼X/Mt\-Ҳp~n߿;qA~~iί.o<1b\n[G(:"|g_?\`}*o{~ϰO.o,bj*}8WOhGPXw5 o\Vjݤ7Í-H]y^WVWdr@rz7 ,0[aeٚuEYz-zh;Z9[j@ m^:LPZLoʞ%Y\v7Wq֬md^d{}q*e_~yOC5}j2C2~Y6 mKe9+yyhɕ}07]~;_Cˊ㓥cq2{|Z*4V6Ɩ)+֐5د8]5G/k.xF[sB $'(^[_lr>#? ȫc!rm3Fsd^q:r]/V68~L0.%O͚4J:F2A;bxo9'=LuJ* u#;^&Vڵ?Nodt}_Ge÷:eKx^5~L{g .8Q#o7`hk5Yt/A"m\m^eCjǙZ-Uj|RгBsBXK2(7|,OuzrO1'C]o&-n:֕u+^LT/P}fH|?[5M@fD˳H uމ ']K]$ukp6C;[q% j&ӢkkBTUT<5&c|wrUk食-[sjOLrY}}n'_syoq}fR_FYzըr`2kZ,԰H;_km(=zFg5VQiݛj0N#7``[zj{ެE߶z nkm!9f*^YnU|sڏr훨lF2eJ4?dШ,7wkwYc X~؅-Rη4~c)JWezUA,D\r}իL?.멹|u(ۨPAieWJC\Eҷy~]Q(^>ί4nR/s|MW}_'^ƙqH88v5)MJ,_Wҕ-}^9t'#GCp+aO|4.ho㩐Q\CM</on% 9'C<;ON?ifƋɟmgWu/XO3ᯓէkr쏬2@:jl׸_\bi}oݶ[o~W C5/fdC^m)wCo}pm%:;g[xϳe?2%Gn\.c,.zS[89~Sfpd$ޘT8m9?;Ncb$&Maf ]KkW5d3~ 9 fqiE +>\]p^L;x3~ _%~cg6vH;>̈́uBf1{3Gq9|V7c^yw53n-܎:NM܊۸u5;W?kK^b&,YT" +(N6HG:\>+W~dEk|񭑿 +AB/K_W~.or3e2Eg{2$E) 8L(r?ՔUሹ̞Un.ϺSh3M?gqX{)h +oc(nkVFlU/"u=]y5mi-N< VOy!9.g!yVd yg~-nGOoQY~uFAѱjR&Bh]1.ϠoEVvـx#ɳT(Jڷc 5 t=rmv.Yq3\#m+\N2}qrDidm&8+{] /Q.Ji~WF[YkR9<T7#Kys=WIr22?GH]|[,8dz<P1hwzHx325\Z+= c'՞!(Dg0J[{*a7Gm67/Og5bDcNZ&K$ tbMc7u8}F3~E8˻'ޯzC:Z=~fܕy1Ft<˯yM~=EZp>Z>/VLpS^tG ZZ_O?4#M_!P|r*R_j~ezdƋڽXO̜fajЊę wQM^j8LLmxF+Ə aa"o pȿT_sA磟/0,\f.LRFXe`rd~gEiZZ.\tiɗcʓe0_+qdy--:n±Uu>L1gz?jkҫ_mjvk?FZoFg=die`Xw WLq3ǙrĿPdCظ(+Tɾg*AbtK(KN!u}%#cN+^9 Zxk <}o@6yɖ<965L=ű?FzkɓdŞQTA Wjrm]ƚ9rNima4Y^ZM:L|Їs{qC6G ໜ/S=Ϲk'qVefr-hX|ySxn |Ќ~78٭BW<s gp.bgiͩ#7Gq'~̹'[w)+e?ϕw|<;f>Oũ_ {1& ϵFs( |7BviGgmztx%c{gUw-) ._~&|QWpGRJ,G>Jh9[z~Q=KTWT5~{q\KiN)Twxl[qB S8yfS(J,ASr7Loe?!ϮwN _zmFo9<0Cc2#UX9&iV/gZ:'9,NU5:Dgseodc5LHeN](Lcp{Fk :5ٞr/gSS1^Spͯe?R=dYG< gjs>o?$W3Ӿ>5Ij+I\N߆o@O33/n<4Ź%+}r 3S`WjNop&0SMkϑmFbONL,]˗j|/+}MNNG_|z;(U|g>*I۶ ږ¡5#[:Eh\z *}QtXo1:eZ9chY!Z::!yi}Z/"2g-ۊ#ux G:UjAL30N~1Mof*z!PeSڵ^,)F|% S͟Fr>[{+2A刬!zvѠJ}7ZyM)3NlBj,naW.cjY%&ma*Z&r,@=Q.ۍ@r@KCn% ɱ?Z_D[zR/ >6ڿ"je:OlL?Aߋ'cor1į78*]O{M<4ӮN'ՋZqhG=]7,Btߺ"4E"ԯV=`F׶Vاh^_ULEZ[cZÿX3;V^L؃43K7~&dZBWjMZ[h_Y$ϕTm 9-6C__oҖs+5prrLs}1U3kr_4TjHIEK˾Waj F lű7ڵ([O[ҧ'Cq.zzf͆%gjZ_5eWVf4=x>ƒ[ *| +P,߃r<\]hX_uiyh]S!שHiudRYr~/ߏh]WynlW7ƥl:l4,QrǦJtVD&?Gߛo&p`k3.FQM,Wٰx\t_ĝ[c@toS>YB~|exU }y#y&;d eWogkqry吏/ %>(٨^n'Zr/Fr4.A[4+Ejdؼ:2,-2_l?5f_UMf)W]m9 cLVxba\>__©#QҼLk(v)[k#9i.F7Wp!jb^L}>ˑ3|ROl|\£۸83v ӂpw!?_~?㷓FGb K# ${ ^uOvw,ԫkÆTHh+Cf# ?TॗErWf;W?C/ߟbY^%O(!z?IwlP!z$>aZp7~^í/pcuLoc4%ӯbIwdLm: pc5\uW>oԖSeYo4&WObt(N} +>oƹ0}NsWw]ŭo^=\*}v E #K}ǝ)G\ + t`V1<͝8cX3>&?Ù='Ee܋ +oįcƷxXq#2I[}7T 9tgrTw'bH^gVSCYT{b zo~}_I^|gbçEZyK>%&/QZ4}T˧ٿ^e0-Ue^,fxg%kGfjΘ\ۅ2D5W.fy.+Qw ŋ9RZn.{~h!k3^幋vTMaKP;|7*cоb}жE1yNe˲YN~dZϊ<*Q&L2l~r4_%l^<l`jB̡rf)3_.2 ;`4n&$漿̺~Ի/^ # Qngp?3~3qAZsB-ᚁ:}$|].~v1*/s`HcH7@T8s;+'X~i>q9^"ey8 (sn[3x2Wev8Z-$EjM*.,-0+]Zr@]+x_Q}nkc祹Zx#qjV6،_C汥q/]KS-R`Eލ{ݽkQ<Ơca,<6dX\>z;e"z/sVp;##-ө"^t @jy$t7:IϒƑmwxa&xcsx0=Ջq]:h Fgx β f9~QvqnVOhYv>=xbd2h|܂?[^:^8P&0rIn+=Tl {>twqZ4=D9:L8ߛڰD9X湇k|^B*ҡѭU/{>#ыK?I/'e<50SV'k6-- K1%ϲRՁQlUj&Zp/#KK\@NXZ!\^Yӫ1_" Gd#+DO} 1=>‰u8C2:hF.W u^XׄS1X+my}s-Os&9eUBVj\CUfj1Nȹ. ~dyf0Om1=rd 7 i};yѾOQ'"Byfl^,҇?gKgi( s_SUQ +7Ye\©S-:d~d5Ef2 -[(kV40D,Z0B(Q)Ǘ/$e\䶤*d[qG>oY7xRu g_ĽԳ*ᄶGC;pӟta6|2oVgCZm-scвMkзJ ѿ:o,EZ*}SP<hZe9yp!`M>UW,K ^.~\_5h\v DBt,)°+:,4#l\iMr}[>-Ϣ9!}ځXTԬFfGMF˦RQ/'}Zj]!XkCcS5…~mVs,6{h\*2Ti-*p%,f>/q}olo|v&4m(GBxNggkXV"KʩѓzmaVt9h}cR\erԗZ,tTHGexY&*?ecŕr~+*ۺR5|u;W_u巺iܳK >Er/,pu;m+>/CBܺ k佥pM75iqlnq ooA}!5#+=$ɠ#*y7bN䞃8G½{'Cp*^Ow4滂/p=r7"Oל{>~/ZċGHok= ^ĩϨ'xzfߟmq 8.obV=y>n'qc8Y\{~Ӛ'8 ~)~K.f)|vW/sFC~g@Q=u~d]]/* O +Hq=+܊enNMRy]2xT}k}1UF|^R`,>|.sL/C6g~+t:y< 0[Wé/4]9YkY%B4݇Z2+wҬ, LR\+;dq lf 4~]iٚ,pKcO̔uJe6ZOS/ d,e2W_zzdLc5>mrD7N1#z#mFS/UhKVEjfr$Ļg#ɳ+N/zA}^͗BW/S=;Wfx"|ΫXIGW9*|ڐ.̓^7ke603OAzzɽ'JR}`Z2Yky5Hߒ3kTD[$.Bo7|ѿ:=(`_;ѾlDQ;|B1ihY6&m=uѻeEwlqm8[X%JW%ߓ"Rirݫ弚<*35EQ?ߣBL|6W?}-g ujf׾3@ak=TSc W/qðVmrs_Craj Λpqr9B7oetwB_l[N0ϳۛߕ\䯸6a!Vh<]L'åNٞ+c.r 򡽶ƙOyFX2f&a"bS͕wj}'W(3 M D^hQ˨qXf=5~ɸ?Fשm!ƾӃK-|uAfq;$FMFQ|s k CJ*ѱk +mpj3Q,Suߊ:qfmD2 Ӌ[ }Zqsa_]]q׮}[xms*3ph w*T}\钁jz5gASK9I8Ʌ3kg/1%ތP_} 3L?eH{?q}rM }x+5_^I~󾉷?0_7Oj@m;|: _>s;3 rѼ|s;:>&?eJ];L?O /K)M7~)+./p 'ch zئ ;ѳk؏CX7[&pnM{n;8uٮ>zWJ:*9c?ĹvqSS8kz>ƅs{a#l ܉K!q~lD߶?gp-&N)܊WO$pi\c]w F^[xxu+tJe`gZBCMOصX\0Ayy^!-cMac̢ƬOF˦e:dx$;f]8e8O'pǹN6'ɠMHgM^)s߽Rڞ~g։/ϥ KPތVt.=De<8-(roٳ KQʹGѱ0i^òAA;}qм_|nmf\E'-vU껁οΕt%Hw5*< +i^.b8? +c", 櫺tmXjм2mQ5pcnK8:洆s^_??wr8czVϒkbᄖcR{ݟvpT5ve8*=柿4?pbc*#/-oWk19W =zg,Z@s[aADiY$:omUT+v~ySlc~3.c$}-ۥ1dU/Aj ~<)=5qpro"$\DF$1&zjp4Jzb}/i>8Gu:z&g`Z2aX?ҤxZ>2&w38曬q',3IX&Z&~͢{Uy{w7ǚay4Pm-]d /{(RxX, 0z LψwiZݢr^J2obj_UE/P!cP"^(6 IVΨ)t{yd:jb| Ⱦ-/Rc%85d~׋=gеnem;cޗ+,5~۩Ƭ 2qv [ +`uo[̵`b9\/։jDrkNt=CZ[1F?Rc?>/)+ʧ3ϫiݳGϯG)< ^Y&:vpsEedt8}41Nts%Nt Y@>̆cD혳_7.DjI H;#U\IE\4E +da}e? =bd-iլQ<|/܌8Gc?5`d[36e;hYW幨F,>02Wt)EO5hXf֊ʣߔ( fgǹQ$ +P핅҅(wϏKJc^J2gO~-{&t6 39ki)+䑋z/L,lL.\/Ir<]=ӠݸVN=C!1"ip`{ +*Wtq{YOƺDT{|;P(yKP$ [+6UHƥxR:)p!l GPCujԬ)Gw>3#_o([b̮-AjTX,eKreW泯ę(P6L:,/֡6_s +=78 t9v':%= OX+в KP: A7VzԬ>-5d6ZO/&h}_QX%z۳ ۫B]vtވkFwgG=~kq]mDb s}?G2]OzY +]'];\9i9Wr$[X.&#DEsPNZUzQ0=-ҹ^{ۖqjnY =P_9hU5Md[kp|W7hG2^]蠱>{ao`ԧGwZ\=Gid\Մ \Me_;x:ϛazRo0r~E\9x +D3NzrnMS~OMx>1?tn|ox_*ga썿ŧo{[{?2?XN؟ y?1:4. +3d=R +k_ +Dۍ)8m_O qOҸя: ~縺c? R?MkOxAGnK;/bd :۾p+r['pd1 oȆ85'p7~=\*.npI=CfHz\珳=2ď,0>E{-Lys<'0U%: K_0x [5%sHTYsJiz/a/+:Ha@M2{I.i !̋8Pk82/E;qKE'ZX.Ȕ]3j|2Vyx~"3Y'}O&JK|ZSsɹŢE/9jA\_TپmqXseJ`ވӮ1k*í8ysǂ 9?>\f4u5 $z4r"mD FEח~ɲڨ:~vitvd/mSh=i|60.4| O%-m2&9NP3/4cc]}~g/2X~Uhj$}Bg &hBg+jzPцbFE~,^)H+aޏК# è[҆EotTrfd;U93cUoF g_R:"7Z`o i:@0P + y +Wa`i})jz?Ͻ&#YkcپYaGem.@$SҾ1R%*~i9nE[q4.(6ߵH2c<2#J ukɼ}&fv%k$XgP׈*Ӳgä0˳HO+sFS[R(ӾYCXd.:B3}^*hV'5 8]Igk/4`###hqa"{#K*0]+{ڨ .2ia=A ,@G.]GUߢe,}$vOa,1Vj`Ɗ~ 0]0$ bƲך@/BŢ-e4z(pזǡUŕ>ZXs>j i+<٧2;Xg./r.2Snћ?ʿ矧}+QPߙސaXBL/KqP Ghex93l^GW1wW<3fy.^ ܈9{a'q ΅ƍ89Ѷ͛кX;9[uKQ(&oLYGJ*8bz+QkqV\,虯5_<\a6E[:jh[OjҾ P*+sQ+| J +|3:jaq)b^Hb N)2H@#{ZWcm WP]ƥehYlFw9ZVV4)Gӏ훫$Cb~=7`h7Άr)܌?[ۍ1C|q={b.wÓnNhzmSxYwq?ZB}Y[u/ ] W\ϒ>?ǒ+}OGE_ +'5vZ[Q9Qf.ygy=t5>|+~oy\r.i}'|/o1tv^7Ҳo\ ßW|Q<?cGxNcI<~S?{x[Ocd -~Q4~k0 ?ũgpl(ƶ쟗pz}6`p1:L\;M:S?•]Gpr)\y?ܟ0<-_3}xS ,)fiݘ[xLL~jq1,>ēxF>GxU ^e=õpY܈$^u܍AI+d.82 ڿb#r v̤z^27m +;D49ΑX&ιѱ,yߖ%L9`]Af)vgKR,NyzY#dd)`B cpj4YEP1@ Kr8,,aѶ7TQdMa|'.2 ǘZ#D()Bgfz#&”黟{[!=E k| LSG #ds$k42k ˵(SRi?[Śt1IN&A0A.jzPLE>DIݽOĂho.M[l_,_ywSYnj!qvtj:3Kk.=r3wسõut<h_z>I8(,4sl14/nUv*kPf9׳ X҇ch]܊. .BâT,lyDے.a61[{g a0 [ܦ0;A@ۑL]l0p~)-MY f(7zA/8hU{=h|5>`oe}=΢ ^k0s Ѳ;0M~k_zc?;Gd1Cys#j?4g[jlZ@uڔovyyq`atwY-,R'MowaEcQ8Hۯ)34[z?9˗sm%[wc75zH-)ma4aݣXb {7ix-?D='2ϡm5_/5fBR/GLȠ20:Qb zfc =RZzaAtFshE\gB +o0(_F}b=Ps= q΃d:\Ml65lUVH:gw5Қʫe,uDW7{mߜwZ4{5oopS~`˾,ۈpZ J5|ۧ,p{*vOj o) ?߿tx .ņZ pdnJLNgaJ5jC)gas,p#OWGk }H ;hZG 'b>WƼ>삅qcs^ƺ@aLN1U9š%E4}! mM )w??r >>mk|_1>x{p+{{\;S'\}N+5m^q3\Ob3SLHc8q{ѿC0yG7 a`N:!>;/ҼSrӸx 'wbr)\?xwnb&uW.a]܌ka0{w4Ɠx]1/*>}v; +n\EyDzU؈hG\GΡ8Z:bҲ|"J+t)y8az:g yg`Cr  Nf?c-!]&/M^).N +$?%׉MX0* &RWΌcւ6bYQ.WWq$E˾1+qk`YXp͟-̬%[̒%=\ӏsLabjR + }`6L䱰48qFʵ`*-]4O/hb8Mp1̿3Fe'ko6_=]\=Q^*,ڨqX-SML>=5X#ۘE0c +r̢uS4.i˵d +OuUmD)'hU2/O1U_f1jJɲc+ 39cqHMXr-辯lgp1Ѻ^>uҘ;8;g"!V56zu ۹F}I=Dd: MzT*^#\+I?=P֎2f-C>:.jwgq?Zua}Kapa\tVmar z? q~Moٍ#Zv#өƬ^J7"Zm!mqpb_.Opl{#>?tMXǯt_2 h}4ZA_{_N`/D2 ؞ZGXs@B? 2C4x~mpkLY^<*+3(8sA8D5☳%)4]ǹ̉9op b= t@C%h*ڶVHhb(ka߯betN!>+duJBMc#ǼXWw)Q^<b7=6eeaҳg EWg'Ki$$Xz`^2̱ Ek䔔ӹInq1 ϝ^oɗ pGTlczZdIӹW+J 7"O80˵s*O*bry7׉,~GXrߘe.GҺq5 +c.x k!2G9bh:JFGnY,Жg g \$ܜY)tz[+pli5t[};xK|/;E=̶x;qjE a}hZJ Vhh˲`ZEtmf3ME1-Q:-KP2^zGNᡉߍF [BH*ݻ:增ϸn_)Ιȧk]H=y{{z֠c-נ{i9.k k|iK^dNY%Ym/KsPi(@+]~zքҵaDDώ,ZTy+lroǎ߇S8][pV\xvb +gPJ1eE0{jEwq]Ҹry ~4evy}%ZfUVufoudj33{e9g ++φq1W ;,[l*:5ޅ)կB4*F"4.E7eUNm\EJ.KrѶBj6)/mt~Jrf׳CѺZt~c`o<) 'Qꝇhe|,5躗,T\g h|K=L^bwʽ[l@0B"Q{I1y`v?1cjjone<5Y_nO=$?NsG_cK||茦/O?k8<?~ ~/#ͯxY|yO:CK|˧Wܣ5 9D +?/2 }?N4kW|IioʯV %ԗZ?ID`6m>U22>Kmx>7qq%\}všՃ8)>pg}"m/0cc688F~^CaSy\I\BF1La Eh88έ?30(ά;㸸a0~MM}ns4ѵ38Q̈-D]!싩q&H)=nEEEcG硢<Z?FgX(/D+/Dt}~Q ֦E w@ڂ4{|^7X?x7 84aKNYy + ?rDxԾx;ƸOÿ5~{>}7>+aYkyYje& .妴~?T`zpv[z<,3P-?5jhna1ZQZ3n8CsFE&ZOs ;pc%4g60g{f$bfj_op-oIh9"l=$׃ƅm ^ +.PWtR{Zu@s /_S$ZiYc:#AXy\o=v% >m:Kgr0f{*'4Y;ȭ)J gϨ6f-e)=^dj:8i옏s2~2S_,>!y!ksaWC13Kp-7TctM_>,^5~ٯuxW3~D2tn-G24l(DOf4+@ +=LK3QH'\и10VrzkVpEVа@3'\.2D+7A]kj5P +JϐMnTq[뙋;:YI]8/^^0D}M{xX)yrQ$޹[Rzq TsBjFΈe,3@';^ ,*HG,uT5%hZ_C;s-6V`Q Վ[p!lcL LCuz?U%n\UFc a^R-܀RfM+Zw+JQ"X敃5F{[7Vmk5Z6)ضJbLzޣ4n)4p2?3f_KP@4Q$bq.j:zxsHxv ^OQ#4ahk+VPKнGjo8 ۛqkG1s QL=ȹkYpfim۪1u04 OC:ɾ;˸y Oa-ϴ{=s襦glӵB{$LcYN\Ѵ(G\CB _HsjAG ==ϥ{eQl5]j4#3̫yzi`la G!'cԸ M[3˲QFfz#27a$#R$K8;\Sw |1|'1mқʻ7.fE#(}iDڱ-tJną1ϯ~O{Ga6۪'0^ũgi)?Y|ky\p >|2} ^F>˨^]s;_>k|xmo> SEsx"?_1jg<_w?r o/zK'||_08O2~_ssGLŧHۏ|kk򻍫num;?]ƴs̄w0, '0 c~G bpQ6C0iw]18ÅIf +g00&wOz5nU3gr JY [!q% "`޾jI +C Yȧ +W**PV8fӺ)>X$ /1W|E%󲥮A1Bz),fV'̵\#:A tHOÚ,tbg4Y̏4p_xk d^Ȭ5]w#'YEKM?Xt|,79/8^XэܐE+i.Yt| +yUo0? y4/&e؟چ%#@YV1*(A,}@*UW~,{/_\ϒ bBhZ})Z>Tl\8oxY1@MNYI&h`V'0Pqy%CoE)FU)~6i +צKS~W.)F6>Z +0I3B|>Jۦib*7Nr;Pa{bVf&H2Ves5j:64̧e9.qhfZj}쯋8E}s\_MbL/W|כˠT7 <"5]0k=L3< kGm7X~'4i5%VY TFؼ=ZƳvS|f:D9hfy̏=Vc̊5 &6<~KR`~M1#4 b*w;jzV \OגC-Se|pD`Wur? ;{>Tp1cyYjיz;3YQ$x*_s4k9'9Zw=<}pjg0$48VzpIO = 39DI 5 +K\h]t\馣,_\ш+pne.xMhwE' P?Oxvz{p~U+mk@/-g&:V)1K|Ԩx 쁵a`JmZx13/Tƚ_y'ђNh9c]uD鼫~s4mJ@ep/D[˕yf4T@:ߊUcVC2uy.8sXH L-*ʶ uK5/p1g8r^t,ԉ0\qGWsL#f&Wޑ518ׄ=w1}/[e-z;xJ}pSpa߉?0k-:cK7б k Pڀ90/գbQ>fE. jHAW:V/D݊\T/{&R۹~;7v=vd_c7Nv8g~G +t-Gۤ9fl._[ѹ΄tSa}´MՒu~7=Si^t(LGrL9JV,zp,!)(vOG{*0Հr<y%M'o~O>U,.>p.} vƵ= ^>f|wDxbNг.@n;blI6#pnmh,>t8^f_ch l9G0n\C\]pvFi}/ܥNjJ씡΅u4k/ǁy(y-q)hV s=ncXD tϭ{%/FyL0t{Ĝ^QD܏ ob'<'^j| U/]Uc/#~X-Vz?fk@zT,Oj2[*M m%yZ4k mTXa46*RoRYղ%6]X !a:n r3ȯTD-De|i9o=)~8<>tI q,`g\ Cv õ,MUh>qfQ DjC;Zt  9&VsD{#0SL Z/E4qii5R/6Sd@:,[؊.&Je_*cǺ [9m +DgOeQLm ;[}Ĭl(J\ wj>/D~9h\]jozJCŚ|m,_{=ssldjYߺp<`TrOлtݭaڵ%hFѲ 7Ѷ_7Ѻ +_RP/ŮG?g=[<',|[/ Tp\zFM=ծ3R\kD\r>T븗ƣf: ~ۂҀю]G5:h4|mu\Ѻ +;SUnUxK)qU]}M~ĹY\=?bq6j +xYt/b<~EU*$Q<'}yqw +Oo +cߓx6ϚN<z}O%޴>ާX~t}0?x6#/nQiO<{]+m~3EC͋xKO6{o_-~4NǿQc{=&qKtLg#0n cDwwcU~QoQLS0avlf$|=_MΫv9N fd;LL IuHvG]9K^HsXFhat`tBO+͟)XG8V8pen(K#lJ3CYRvX}Q8eg'?a)l?,}s.Ï<,xk|XC5@x2[ X/>5U:L##LPݛpM7#7/Eec^e>/}dI(m,<6X sWr1S^,s?3׮1 Lb's(f1_CXҵ] Q_M;Y=窳 Cˋ6̵U~1̟2l4ѱć7Fn1+15T9%q.=u +˒ϣ JK6Z0^9Rڗ%,Y~V1iWùQ̺$7*OmbҳD!|K7HwLyw &LgQ^Diu*SĔw W5k+$>heTT;1a!usiHFw{96I>넽FF;%"+^Ӓyfs +fƘGKip̓1E|˝؇íHx_[cI9Uo1ihm4 )E☓P47x}s5֗kx4sA恅>_7)=a^0ECk-Z?ǜ2HeEqU)X8%wˆXg^6x\J8;ԅ_Z1cwTgm[ hL+6TCӺ{PrU+MgՙbD:z6Y@ߙ4t;{.Ve^Qh_wԵ~薊r {BsRȹz3PN@96~!M;$ѳ&m6suC9QOԹ͟+kE]|^_-fus,h[*>#2M|a;wJMF|mφNri<qDI 4LRoп}[? L_=]2'Lɻŭ 靃ѵ:нOE[hJsQ^m׆-&oEWf{sao5ޡ3$&=] k\!Lr7mBɓ'J4h\/<]8:3{*xq3"nd]87$bZ?TɠI;7ck,B]<}IuSM^RK~G񾄎|*Kgx[KSzp'Ry??=Ke>RַxWwomM[7x]o.-^%X~Tw^d/ew\.N>\qgMz'/plI}?{.g1, m7vzs +'wq py\9M4pI<Tٚ+?ɖXa/#gbba9&R)68Mrl/26si9v*>!f V|J</.U Kf\xaNtT?dǜ2; + d܏z4*IAcXR7f~l̓_Zzm"efT]k9<}Y4\<7tg0( 2obmbdic6Wٽ6rzEKE̥B>BRiVڗGzPڊ2zAQkgFd8V ǩՉ.8U/ա]2@:TӜ`@[JsSڡmn-CG ֌wQ )/f0(IL}>/pf F׏V;oFC A9]whːkr]zB߷J* (CrLtGM*Bc2ͻpZI>@;,hU@֤/i̢ \΍yٕ"ޝ,Ra?M1&# >i~Oյ +[-l/~>c(OOJ AMyXi,oY?L1?51 +g/Cϸ?DOyx9oMQ; &ʢڧeJf,*ђy@( ݿ-1˚B= +u̹".?6868\~C kuPO̫b5͔:bHǬ72OQ|D0U^K||D[ȾaR8Nq%R)T-٧# l}PjzgF9=}9_ LawTBauhRd 5>zΐn~Ic^q4ck1|<$ˣ֏Ruf KT 0AT)%DOy'ID?y/~'(1aZY3j܁uviBWCxEb!Pc)skZX->u̷RdX1| he:ޞ-apmTr2$ɍb}CD'#1#S:@W(Zc$_hƒETǨpF kDg@)-9v9 ǯZ@ +4?-ZtmٓY+1q-Gt|\=zԣP8\s0!zOra;y堇Jsz]1Jݬs94`nqPa+İG:Pl9M4btP;?vApؽ@0Qӹ1]az$-t-]U3ajM7 bfuɖ9&>zp04whsu?V0 U$‘f,њIYc~R:1.c=c"7+܌Y=1L3DT)NR=f~:0M"\P-ߗrh2cJu8d3a(,0Ɠ 4_9Sc*EJ\xiuS!WBu載WױXy Kxjzw'Wq-NwA<؋_0CvTk [M_qcj?I˩x= ׻8==E,4H L{4>ޤ<ûENx'<>^<‡{79O69;-woԿgo|wKt0K- AˇKxS7ԯ7'p)o K=r^]+ޑ[z*<{௽Wq}-?j*OZBS`P^E%Pcr +;$ݠeߔP}faw 闿l),,OE}?z~Xc|>(J 7xh)>Sjw`Ni~c??˺OK}|uZYyϔPy_gtXZLjac]D+frʯ +: !گ ~r_|ⷪ1@Jk:Ѷd:/5fyO>vײN<7Ad +F:t59z`|c9! udUf'*!(d.'- +>kΘ1aa}T~@1~i!~B?1oR}OW$}!t0>΋'ׯtqqVR&uCZ~;u$Jr:3=qҐ\fʟ.߇bΑK8Z,%Zτ.s>?D^jmDk֊fڪ} ?}  ,M؟mŊnXas@e%|OyDWZs /3?]dkLQNՉmpiqJƀ+tao-:tdufݐh2EF'b 8@3kE^fw#fW˃:&LcQl.Z<6;ƋC{!=QMu cV`|}>=摹a 9KzS1v-˵ r cme>9N6~"N(i_tԯrDiX캅Ŷx^{ 'e-۸Wq)`0 SbZ AwZKe1Z~ 4nkCG:*]R%?!_G f{ItV牯r9s^Rӻўk $_=CHS{PG/me0G0w;)yQ砣:2750ј;H={&ҳzޫܮg+sѵ +գ #j R8qp NԁЈޝ [ T_ [&ѼcrQM>{a^܈:GR` ڎeB1h\7V nwfC?+.s(\Jĕ/+Gi7eteoMZ6WIcWƝ܁!Ԏp.޿v5a /M3ߘxv w!^U^9{4= +p XlCO=O)^a!>³'x5KS/񺗖_É%=o8.xkYɤ6i=Řx9Ҟ}S,pyDmduxKGU\ca-^rwxz7U+-R&⿏Q;+ 2a^JᏱ{;xƇp z vO8Է~gW}`v4zE==10{fq'n_->ē J\c#j=WZU+ٓ%31/e rpmpAq*XGϘ {N~#AS2=Î(6fyIcJM<0k3~-;*gf2cXBә"۲Y}n[]MW~׸%9_38iי V*#ϫSW#dNTVo̬3i=eJmRT.|/,/ߵ&6DHoRM9Siz^#:8W!;Hs0ucKKQAHfTu@A=w(P/ÝC];5G1nk1nJqLms0YZvmԟviԟrJd= +8֊/ޮƤޡiYH}J78U":GBsr00} +_ݯh? a0zcxҶqLb~>#xh|baz$',XzY*}ޡRJ!17 Nrq_⊭J>/h႟?r;)hq}?-,~(~"}>?{~8(~'*)6ZW<Z^p0k?ﳏ,0P O{5)EذqÏ,^k M/(ݏx+q:oN<%\4d{ٞ cZq@G_EkܶI/cV$>>64Z8I(/ ٥P[: D3.ZHu G` GPd`&g0GXU+T8b)7aa^Oyc3 Vy"/<_xuӳ'Ih幜a>0QN{iq <$9B[J^Z>)ͨX|Y O;$|0B.Li$7p7_\8 ҔwFEol M%޹QJqm(xJp@X_kf#P->[w5Wy( hav+|m_}b;5KD4a+S9Q9ƣ^+k8~cnE풉>z'q+וQfDO4aOq/kuwgEKGs.*Pv"5}j1sXLR)߃xxջЁyfhjaB:ENHx! K}hd]/Z():D'ue_9]#k(74B45T`R -<뻁*,d]S_?C߆ ]Έf |]/imңca(DӚ>5l,CFzvfA"/q N +yFtohD4~Yt-ژBF!L:WKu;8&i5Mu҈ %zw4bw;ȤOL4 ߡSUn Ԯg F4eF׵_֠yC\c_= PU5roQ%h]gF4>7Jv`ޚT%{dTfvwD846b^=Ԧ*Pz7'T? THz?o$hPV{0+dk]"Wλ@ l˅VzI^o=֔a £HkWJ`lPm=݅Sz1M+Fho]G1c0K7b!iqJxVxŽchG+71OQ5k=1?8yƧxScQ/g𪍊9ěxNmMҲ9d?bSAW>%ɡ6 e,m1ĒWx{ >xpg݉% Ky/nҞ_xs QA3F팼 +*;.{'Q.]C>x |c)- q7>.č}s?Dž18深 s +'qqSnvŃy*rwBnҾx~9&Gw:Oq=2q~x|gy8<񽓴}|Wݐk~ Gs }q R1,τ*^R.=S1 Nzb 9?`b{;8|9/3D>9 ]Zr˲t)He]qI g'L=!ҥN /Dۖ(cCϳ1[5umnTӍ뾘 ZGhxM s?j K̩ Η&x=$cvl1W<1,5{CUqkb[UL-ޕ[m2;InhYwg8.6Uxxgڨ +i5zv*](Un=9/r.߻{Kg٥Qֹ٫g&:.Q~&Sk˧m6m]7zAP{]Vеdg 0&ޗeck5!@:WB빴E%ƢX OtG0+A!~Zn +W?j.3@M,-p-@=HwO/s>Om} __pW-FwM*/}>=_T1Jk-J< # |X-ڼPϪF~kc{ ^:=;V ܃KD:Koڵ&}9Ev`tI|%0E#?4ڇ Oc~6W/6p܁~#O/W;Q" x+zA_$Z3o0cΓ}Eh!R~et\aO._/3?QlR|.\3D˦|} +s+aN*vVVJ7cX4lV"\ -{[}\ִJx@ӄ~糬 DW1Wx`08ʥiztk[?oq %LTS2R4/DkՖh?4j+^؜%X-{w0` T:(/xj5Θ%z?!R#Dž5hz 0R%_R0a}EtQ N)V>#ra? *}ED î9qa5 ^:9ik.=w+mpgNib:.0Y>\*:xS2:N/ڿ!7mϧse zΌ9)Mb{U {!*1š|Ƅg) +qxҵdK::N*}G[[`9͗&\[2[?Vew~Vѳ43*,&z5S;zG4VKs1-]RDױ;Ob,f~E߷uހGFG,ҁC}e޹\W֭8w'00-&T/BRoietlBϖzaCFJ"!I?di]KzO\S\Χk.vΡ Z:S* +l6 IѸUHJ:_;zj@ +akk0}G+sG.t%9X윉1@msMMX k\ވZbse_ϦzTy֫ KUu쵢굜kO/Fou>\,C?zy|eD7f n܁\+Ȟ.h*"zOt{̣sJ_= QGh֔`d{;vw5+ѳN+ѹY2f^+h\[NTygՉKնc`Wvqۻ13plN̎onBwMƅ9x/at m\䳘ׇ&p'<Sh=,= =g&AySѽÉCcλw'Å(w4`oSØۏ'0;1{ۻ0uv~{2.<ÛxS]~Gq+n_#M<-GxYj5<ī,6Six獏1z+S_M"QԒp&aOx@mċxqCnY5WxDu v ;M'Ρ%q:nd-/g?{<|?ns}.n71?/¾ to&qQ]'0cSTNX~+~RnC.toGVwg0kS?ɟpz1eg܏8u`?by\9+!*ߍ#^Us +rߥ hpz]s)#*wKFfxO2+Դ,͟^X_б-buoV1bփAb)Y8}?JiTy҅ik\'Y{iDH,:r:ڮwz\TDX ,E'l.]x+]r;Hs1{4;L'-<aޭ_1 ++^grBaf62圹vRr1RQz4-G`|2>2iۜ&E,1ˊ%syʜ\5w"tLsP|:%o.qvňCA|=smpL2z6T5ЩA{ޥnFc=BT"Iq?c w {μ:Qk7WJG<QMuh{Gѿzk0Hˁգ>uS_73e1z %}7:zLt*=%&8ƶs }kFMBS@şclf!P?7D^UV.@1Tf} 3 b(qSc:n΢;qPv]ǯŗ/oԵlWuT -%A/XcGV|;I x|M62&$#9o)h@=>;$FG=?߇%_cв(~]_8"=nɡ&|pK6jPe` [>E`\iyPyZp4}jWlp4W?!y +?mY%Bu˖wOt8(qwSwXtvXgCחҚ}.ñn>tBH2* bAu2'H3sxfWϊGY!}(;L Q[܏20a!,1Gc!ZA-TR(AJ?4&ƿKx-bŏCr<}-+G͟ *MৼO1?6Oxee8UOtmlӵ\~J3%OֳeⅩg mXȽT,#|d=ڒOkϒ)Y*>2K!d3s,N~]cm"3i z?֕qܪhd. -)8DZvaR\ѨsCS"-GE^1r/2LϸcwTFK& +1Q~À%}=k>&ݍwgW9JZYTFJhVV`=+ؿ1 NI6Ofx^:w={Uaz$cG^:8gpHѸq,o #kwÄ'Kix* +uyjh?Xo/¡cC}^y i +5Y(}~[h%|z}:h|Osxz˯u<>3AC8~pnLlj~[-8=_kѼ:`Hzw܃ kg";->Y#m >RQ.!q478Wy$b[6bG>ga{Q)c] = =/_+{rLl{UW偸 Xh.݈ȎZ*`Iu??sk~ǜk꘲^1Vc"dmCی*q;*~Lg ' 1L>;ЃL(^0qÏ\$nE?[>(G܈ hR7V7=ՠi(@ G}&cmU:5W-hg*΂5P➍MȶODC +Q:kQBiTѰuobc.j,@Z +s/@f갹 ovkQ& nX:h|y[ PUe{Mԭ"WkgE j?(F&}ލ;[5NCχՌu0JG41"^t]6SyXc,sAը`FS2XgBGzif4q6{K-:ޭ⚖r\%hPf4+2֖T:9RO}AhǾDZ0iFvvctW}2c;0pLЮLӇ=?_".U븝;qv5܈xt~oїq1hǜp;'\=| Ww{#^pc8(3 g}c;;nߩghXS_^u,>GX;xfxR| W+;שuirB˵Yʲ,47kkʹ,1-93-ُSRKۏgkIaIdrVnNM$:D1/iOlkMs6LR'\Esnt8)3چ{sϲ'K?N|SXau;JԺGDRbcyw4#Vyxo$ !GmST4JM:"mM4Dz(pi}U=_L*R5]LHnb[HtFs3OXc=Vͫд/_Չ|-s{L+zGжMkP +Tn4w܇кnk1z7EFXQև\J7ߥP1d0- +Xs\jC!6u 976I mL dʏm3 p g ϕYx`y_Zy!L a9/rGTWfODۅ×Ys!Gs!r+_aT$M|/ {0c %_G܋C)r}_+͕G^#Ҟ[,r-LĽOwВwH ƽW|kĭRok){ζmwOD\o-XƏe^@}ϊuACN~^9؋,u +C?C=W|z`T٧ܯuEw`Qև(<=d$D:xe}DEL4CXI^Oae+cBNGQ|;?"el)@!L+U:́eβv"XÈg#(F(srq+oM6(Adޢ]ɷ2Ѻ/P=tLiVOSO3ݽ֟/g qBBC W°!Ihpa]roaPT1bUYhvNGc bUr%WgcgQx.`^/GXw5=ItMř58j3rqnm1ί-ה{5RX[KpiC3N{NYՄv'M])GQ{4-.u8gY] 0#nYtC;jH8EoU'O;un+pfCWl +\UovuUʝ蒉vk9Oc< T9Ų:m$q2OZf1?6ӳ)hvIA1+JM|pLwfau]0]yf"ZL +ߪ\d`sQO]OnP ؖVq|}Ѱ1^9v+ +v+`z0UtgH/u8 ˰ ೈ{Z,QL#WP']eP=TBJu3/QKgq7"s.g?&\ӋsZ1>{]c[>DtO{V"]b1|#s=5ks,&L J]) <=QAsϹ-UL+mVWzm3QȾl3GمkM$oK,,2e-9а1t(-2FjG' ߋ83c{z0u2Gpk];jѵ{y.׃S8 =Gqcaf}ܠvS+k3Q!|nAE;k/sɳO\KZs +Ω\W?aq&F>mEǻ(r1쒆 cm CVޓ}݈A11AԾYkQF7.åkQU3j虧s^Q-Mo8*c&mUހOa5`rW'k@;5zTysxmDamu>iEߧ-ĵhe|O?}=]ىp!L}>Op1L`va~==~c.Q.Vw} v@<̾ſf%|x}{nnϸw`f~9γ38up|Gֽ}Nscp[#4ý +.٘r%w0 ǟ`qaC,Bm[xPwQ {xV,1woam<.'&i#<5!7҉,xCϰ/J~<^XT.(oi22O8cnx^0bv+O6` OT/ + "j2u +_EK-o_x +/^bBO3̅?ƽ+.^Sx389\{ '>?70FvbI}wű01 Ӈѷ0p<7<^gmF|45B;{{ӟOb2c'>©Ϧ10&3x.{wqÇ*n[?,%Nއ.%9Q +QRj +:$ٔd;d!EcŤ/x6NS X/Sӑn - 3s 5^\OD_m& 8h^* ᐢi³pdj#iD06"e3wdekvQbm%?\9`F + +j 06BV|/Q`eU”9HY^DZ~>v*7 p7IYdm)>#J-\PVd e l#>"s/w^8 37!e0lzr^ɱgͫr.{R"2F*S)_QFeδD1Uy\]uLb= +e.w-}Opde~{)&ر6 2?i.lak16 U|Kg[IچqI$ṳ^$&U_<2Q,9g8 g} A 0:&{$=b(xq'8JX%B` +Xt٤0}a,Dcu016(.͘8ݼv؈t'aHpb_MhZ;׏C|n Ͻ]FtC˺ԮYGF/cn7B}:iWx:Blc1f"& 9wmFu<f +8(V3/rZ$ʐ3>JOea\J/e}dk1 +a{ Xy(0͏l-m ^:,_x%|e3.3?x#2a.gLֱQ~*rC %s`%\Q|S.{]y+ &`~~p{Sh\X׊+Ժ f4[/[YH -0l!h}*Q(kVFlMUOy{TG)0jr A8 }z{ +Q! I'LZ{h+1qZT#FOz>go䰽;?d2?ؖH˖lXR1/yPfj&ړ>}U؆8?)|0|;T9"[%QgYl?]’ILKuCʌDYNcaDZlOR8rz=̣9Y]C\No O! $uP X|0mV.VK=9O^5WyXlέ֏kl2b9aaSDi /1V2OaX/~y`4=,1\DY؟Ε% ,\PF0-㩗!9~&0}m +ˠx+LP,96{3{/! )A(dX`:a!]]ƽ]°Pj|PT2u`:(;D)NhuS7* #ipNFs]SOĤk]RlS"R& }̛]n98וSpnmSN)\Ԧ{ llJ )ÅM]V9%9ĠJc,z\spqS.{fk䜊>,{-]VJH,B{;ƣ1q4&1Vqc(xRhT9&CkiVL]B>Ȓ _1.б0%3(Hۅh9OA~)᜙N1)+ XÌ2_kSO]֔s-u;%%BKNG ox4 <Ⱦ p34d^ +~ďpn|MNzPme~4iB&ԯOG[2J]P1(sKE \S8^TIeZ< +\cQw^Oة̛Kj*/,sN@TTN!L8DND& +\e2e9<p]+mf. JݳP&84S<gBQ`= +ާ"Ni <&p~V9~w?8/aK:7gGoŭpA^x +;0vok{eK9&5 Q>nd.)Rb@[+Q!Wu9}uo22_|][jf)6 m@ِ|4l(AטP*Uo䣓:pԷ}5;~6?B{598?Sh[Kq1oMG&ԭ*RV)vm\ +A&} S -SWF!.-8y 1i'&8S_{[eLѱ ^ǶF mD\1 ;_ du`h'şar1Op|(NR>xp \8+KeOfe%;x<~z%|sg\Ý0&oܑ)\8<_B/NO{3_ a!Xo^pn1sLcfivc|5DžZy<1'ٷ?sϥa'x&ek!eìxq w~Ý8d<³ԇX*zg=xV2'E,yFqc,A[36aL?\8,ӟچ2bԬ}F#?u#vՄޭ֍_Nac㻆y_ s?aQ^9{p{xu﹟̀q?۫oD6JsfF0?:ε-SA& e-9ms4{aIY0;ةz7E0;>Pdڋ}Y.y,_|"]`:اm_ +/QyV2miū͛a&Ibl=5¾bԶNl mbvcm # (bX>:X@ Ѷ$ϰ ~ {0","IVKP~naM=+}XFvQwbC6vnKLT?![HlҔ%) l/S9s\9(:gߒ47;yLK{}2ĆP*ҏ!aŶ.^8ub吪6|)08Ꞣ O F(m3-N.q3u~.übG31~4U\M,+g(e<[tePT]4-6:G j[:鬟hG9/i$$ ;d|~G=Q#i-DqRl +lL¬#606v9gim0,":RXy(F}+`_vI87S)U0;֭Pp ]PJӆ:7y {׏g&6c|1t\݅|nuu0F7Nԭ .tE!$;4PzU fX/F]!B9&jbd I_#:)?kZ쮄 >am3]_ a|?`:,F `pC(6~ +^[\ egp_Ox%u6fma-`R>B8Ħ+}'E{9cSt٧l2i2^}d(0S^ϼȳs#˵FA8RgJm DS |Hߒ.Q+bgp+)o0/_l'(bu +\y{5}o-zH_*oTvXI02eV\ղœk$Gpc}|[c- ,L0eXlY{j_@z#k'O҄H(?"Vqٮ5c hK_"bk) 0NrdKbhg=!6aj& O3.OOX*|0c. V)Va; Qhe~ hg"My^20Qtt39.qJĐ6 LPNazU0*݆j\]_ k1ӫqec &NwG +1jBs:د0VdT8D!hd{5.mƴ{=m*|˜_rP9`"Zb1*cL68C2Rm Ea#$&| GC \s1ʌB5ۉ}X9[i6~.kδ$a~ *ӳيoW&l[043XE}^ׅ=`rXTȼ8%4钇nW3RbԆL$<*Zv!,dFg(żN"/ySO@qt|!ٚ|.Rle>[]2q;sJ$\ɛQϘkGu?QU܊;'1pǥ;qvՄO1Qzޣ.yK.ss>/C٨pKY-^Y̕J*ʘ Eq>]Qq%*+^*wIT@YRx 4s>K\Q΄wJQ#\gqU󽶀gA'u=83c485q%`?Y)ebk7Y+:v֡q+Zu[P䞩uf73uq[$]-_%~i_R JTxN\/IAj?nSs'L;ηk]9oGv{-ϑO_*gk{-㞇fӫOXZV`U2\ TC4]-hT*PFVf5ڷTTlA,F۶*TC&hB28}3qb:߯=ߏkp3{uFq#ƿ㚶ܸt,bW&KE6m-g=82axgvubd:0i'&]S_cx?FyB}Z0ۛ1a_c!ݏӟO`~~֫hDZ1ɠ2O0b(~:kG8.cc>W̍x_˸[~y {~\8a.zNʞ88{xx9,~`[I<긅GK1^5峒ϯ[г=vW`a>ٯqb$:˞gq\^o__f r9Q\x2z +QʹHK,|cLLoO9j\kf2l.P4tocb-u2v…/5M_>qD*3T'vgb70Q|G WM|c^p.PX^䢬}>d;BCĞ+D-Kh7նZP <%pu$&M6Z7\ub]ab%(Fuи%e2/6IYpC(5;b\Xg{\!,>ǰX}##*+62Evo~ 샔IjwH\_d95|/VlQ,g;C`b};UWc Pz),e fz0l =e+P;XK1ʥUY  (eUjc]a:-r?p%MX Ybaee42t)W3)A)2@pn'2/܄Id\V|ϒle;jwoeW׆ +J1lE'[Qa}NjGڔ*>Cp>`W(v{qX6m-ȷKX!*P؇F͎pD|N rIs +&\1ᒮ~.*Ö3nq5) 0rvbsvwwbϱ|ᓜsOVWϹ=P +ĺFZ߆448e%jdQ*-'"vb/;*)1c)FQQ} ӕm)l`_ ojSƗiR8k' :pqOԈ{([V&~*>&u]\/oGW0c!^3x&a8e+ֆq6ď[h{;os[z>(A&O|dQ!Nz4ߡcPr5k3~:Ǣ%Q`>55I˗P` 5P&nvаEg2]?;hۋa~/)tDۥhhF߻5@?.yMg-gM8WEM?3օc.yO!\Wp#"xNb>h{-[аeQL欀g|?rϊVejf l9 oeǢ-а7qk9ŧ}ޅB>sjBLJ5)㍬v^0޾F}v]|ysæL[nVfgOjֻo2tlBRl|7jj4YzoU3+y)\ڐ1=;q$~JGwps +S{{O NjY\~Ӄc{QN|[ok^_ltW?z0q `v׀^=+{fqz?==1eKFvƉ>P)(N3#81Sp$׀uw`nL}1G0mcxW N|>msھ4~}.~ Oѱc\MUij{oO +oI-̋-<$am܊ 9OGp+'E8o2[q;gq*7{x3b1uC~0xuO:beQx>>=GPoxGp?6=b3,T>|oim}V/b1Er ُ* ^>)LXhǒpE%,s,=łYch3/g/;x/48<&L/e˟cZG <~X*$.UxY^d:%YyEhxgqO4)"p7 Y19>bz ƙ/o➞N`x c> ?аo6z4gI-Zш-҆[-C~178}sO>q;U Ct"!N(wWWhVzJJƫKQƼRAhV=M|碂uJF7V6Ⱦns9($;V\#{⹗l`f91-d#̺L/Es=>/*PŶj) HTP&PԌUh\5Z5DK+W} nM];!WgzG1FYf'0i]u#\ہTf;v"ƮQ$J-Jj`kRk`@ke ;%GgeCo`Ywp4f/:o Q_^ ?bg#gY^*2x?zX|c,q }~},uŏ~+->I:j P=-4peyZl- 0@C!=,ϰ\f~G^ +q)k%FV?Ҏr0ګ\-D}j׷~Z^c}PJNl(+*gvB,}G'v(<>2'F|7-Z4,X|}-lq?G ~$⯼,CmU s&1RwT&&±uei֞M3l&q FG)~Xi?Vf7Ǿ_rLJ=nG9?ŷ)J̵T'ml,~ ]72&L} 1l d/S["Ԟֹ:bQ=/o-3+XFKxC,P{QKjz΄j\$F6hu/HO^abk?Jƅ +Wlflo}IQk-Y @-ТSʃAOFZ8߲2??b C8~f~륶~)?qY+3| g[uӵxrݯ¬cP_}-a* +tG|C1F^QJCϏ2=Qrg>1 c% #Ω8f8G0 0)\M8*Wpu]5nh3 0V pbUF]sY'.1B'$/j^]0jfTT;h:݊qa]+T: QcpaY&[9teA Eݻ9:t=$ճMQ +tSUl<,S}@.0dʷRP1˾SkV?nÇX6`sܦN__*'esJT{T蒃! +VZ&LrQz] 09(̰1Am e}VNA2^,#w7_1W,?afp4qEO1PoqG e9WA]kguAǥs{~Ɵ:7M`#%_\9<i2G2/>sy=> ͨݘuYh{=;jѴ[ѱ + Q5wcjo7oqggav_?ƿee={ϻpwy=SG& ށOPVϫqԏA{g~UlP,CR8z ;ZNJ +Mk}oc[-|lfh\F6/9iyq5<ê[+n^?7TfS! \wj3ۄ{Gp="f|ۀI\84u}F>7;0ƾǕ}`&qqIw{V3zwn̮LlG& nb7̨+۸~+G;ckCYv|w;!w0cS;1+h ss'kQVu~Mo4Von}x;xceL; |ʥC ;gT0>B8S'_.dXTva +(y8OyjW\ߊ +2-i[|,dĩ\(Sd;? QE $WUaoIf16OoMk{9av+iQa|Ƶ:a1l f(<*be{?ƥQy 0Ң +;Ev0?V{H[P +S;@R$C`&2Q%Zˉ0B~nP$M}t2e߯ p ewfL "~)zZX` +ӵ|Pӵ}K&6tI+o7!:0>?Y[R1/`oDmP"Cor&OcsXj(yΕg68j5n}곛`p;V9(pj%ԧybX 0DZ_#编iͨrna{ .pmE> o(VnU'׌}n]_7>Itm|-kP6:uqH=c׀(ZLCm2! DuxZ2+#x&5 + Je T2´iwVll|`Xp?-g!zZ8fn+o^caFa^gwŦ1]ǢNJb/~?L}Ϯ}ݞQ^(sl?([7'\nC[4Xk'Зx2~0 # |_MyOkRΰܫWbC>,7bCJ'#Av7bX>׉|faWj,Lx_`~lٟ} +Yt3AAb{!}ؾ8¬Yo!;ΗSu;?͝DUݔ>iZC}l G!>0UWh}3Tx'sH*@o5y,QS ʨ4*T3PY. +@U0g61[op(1]n#zsHǸC*E~KRItL2&\G^1w quO hI8L6gVxJ(Yqvux[#sZ /dM`/X[KD.-e.+h)uqroWqr-]u}^ȺwiC>*Z)sxa [DޖZ?<9 ,#$7C ޟʰ+Tki,_wV4rsA1{ˆ2jM9Ӌ0q=ѵM__Y4B姩4ߗc@#gWhXʹi}E.}i0M|AB9\x_ ߎLzrlG#wW,l"&hZ@:gz2`ȥ|̜hDi(ٝ"z +XS-92ˢ%:#O8U8҈ƹ +Q׈o +U:@ߡzV\ ;сN3.ø:|.~̜ĭSvЯ:UH5ҬZ'I4eZzo#*Q?] +Q㸨dpl]KPArQq>lBJKc]z4YƯKQEmxIC-z6ֳHW%<ӏ'at֣pvtRn+>$9zslu"G;Cǹu_z{-?-EhmUmW +/G?M;֍ˮp?'R'yʯm<ڇ?1F} XwzLʔ.9N4.c]&0x7z4|QOu3zi?8]jTVt}Պpu|w{=E*&x|~KO齦AOU29.bu|KX]FsOR`^sя,.fC`9 ^bCxԗ^f"U"j7^2͚yi^Kxݶyl/`+]XrK,b9^`aB}0xARKX~/`ڊ.`-+K:YZNL Xft)LZF -aD̠>-:7VɱV?SoD\OUl闰]lMnH:!*Q_F6k1lcz#t-'n`p k٤Eu+ǯ-x~ܟ~ς3,-{L?v_u6TӷEGg>*4|ZNiϷ=hmׂ>G 3E\8I9v"ڿ[^~H4[ض@X p쮵Q_3=TY>ÒcCH#2K rpcx'0sE.ubEVٗ0?g2[6 m͠k/ZvQw/XXxj/\b#X`u-/&C4\UK ++C~5P՜o9` ѳ.Zjo2k$6BrE#  "X1[KQYcl,]8]7?9V+n-Sa"o/6 _y/RUMSbt]1H?mfg:K0km>hkifj;Nl*{Ga.*szY;=E"֓Qoq-YR-[5O:IL#w ;q 9<eqJrk`Kg3Go"K/4,0Qb.Y+u<&ҬWTbU{6}b sdJ=-C5&XA>.Z2wΜm'{w8 3I})g쁚GD, ѐuXa'k~ TY#kOqAF5'uM ӅxnkS*Ed}Etq ڳHRbkI=ko';xJu4.5aZukaBo9h6~׫ȾWspUGWY 5W PmT!S%x24毱J.ha.b&ʺы*ѿ,qJ,/_/Q8~}Gxr7]ݷFIl=+%E)܏3^)&̝=cfr}LxOx5OE:_P*14Cn_TshjzyF40ߋuVRc{bCˑ@m"KG7Twew6&8N*d} oF*ٸ7߫Rb}Dwr\}Wޭ oMuB5M0c|ۦP_4Q^گN&8^={ <&S?zTZE -B}؝$2%Z>jڭf VDȊA0/x쇡Q_xY)JjíO0Dב `~;/S\`Bu G}. +b[Š@CTXa4]OЂ2V{ +aђ_9@z$Lz uR$Q=~ߌgC?̜5F]Qf"3yRXj~DGXr&ċ)<b5Cޡ-Y?RK +t|_#hٗ+|ThݗF悟c)Kys,0S9Ri[6X8+wq]`]2Rc+bar AS53[Q&ӣl{Qb<;{Q;YWL)!1/Lh2UmoߑS8$:D4毋1qW默Jz%ǞQrqX= {g6rߓJ4՟xT|JER7.y9@c>8nz^h@Ӿr4|U:c|f7}/~U~Dnf_h 4a&XC}ao >-AyV?*Dn#}woZ>Dh}߰h >U4z6z;9D.{i9a?:d +|lm4%ven\_{puR +{8؅\3:Ҏ'pi<3StbT̩q4}Y}u;֋)aĴе|O\ ;6"^-\+13܊Cr~cStlɭV!Lkg.e:q~'nOӸy<#ۄ +ϱ/ q kXul,acniZya]5j6XKAaklۗzsͲ5te{G2GMh:Lǫj+^Xɽ8:Wx/aE:7L^js[+EɳX[NDS:>nGg 3G7IjZu)J@]WDz l.XkA f'4? 5d^%oo&ޜ{hجX[jV"W"_gp+q&#)m_Z#~ aGG~=wqe4:08^t_WSݍ}h׆;i{o!\q+g.P[S8[Η% <#8yD'ښPlWP9/m*z@1C(|@/I0!=tΏDc0K_0BCbm>ih"חu|$8NΛcU !NfQܲH-{p{qL=M]FȺ@Ρ$qc>s8a$6*zY??F-h%RrDM瓽?yh#L|@"E0"ƔG6"L;R!D9p[Z0NB5z:n6m3ѱH)3@Gi5(osBFT8tҡ[t:fk(Rm߉Z^Ѓ}( +NڵܾeݨՅwQG Gt+ݏ\6d4@tV$ӱRmă$L0]!5yj# 𱈅09@_>̾yqÓzӾz3xRp}|$NXl;<r"̐٫e|B٫E(X3SawM[p KpsY}P|-ܤd};_<[QB-Sx[5g龻IaJf),yeWLMb~հ.崮sQ=3^4GM4ic~{hl6t1۝{0bh9p9t %S +1@vC.:mBcvZw~O9.Qd4Xǡ ;Cc1| h6sÑCMZl}sQԯ>{$lĨ T|$`nb*圃?Ծ\NKeM#> t"uXo.^K1)|َ}|dzdk2@-FI(LjhC-1̷b<|): +Z&ڟy`5{D?8#_tT +ks&RqS5>(/pd납 iUXm'yK9UaG˳dKW fVU=OJCX+1zOwQ\J-n~(@ +t__Cj@Y($_(0 UgklY?1ADȼ/H4NuiquLb[c~ǹx>}DX 646}"o!߯p5ѷn6k#}{stm94Y3[Kv4NY\jEȴU9~2BTTeJ\>s{Y&z\O(jE _|iH%{>ME}%g_Ũu\#@" r75hw_UӳUP~.}0)u`j,9JT}A?ԣZto>ԆCMh?P'?ub@ =WBH < k4t<8Mv;3u]1 1qNbu;t|.anLp='5w+:c8wt߷cTbpS?c(Ǝ O#y׎]OOq!\nnWp2_Zc#63g+ K寰P+0-J%Vcr+sXϛZ֘,bϱ4WؤuKxӺ?E߷,2Bm0f'KEWK/Q9,Sf +#/8NǚX-|+< +t +Ըy,=\x컱%,p^Wɹ-ɠ:ZgXkc|o&6پ*^[&VԲ*e}}=OϜu&occl G6?_08=ópM8u qEׇo:Ѵ_aFqzN9}C?bH?uc *8q*x}[NN@u0B<ەSɷCM\L`}&W^c<9fӈ,) +mKw&a-Six]< jX)âE =my*=MIDnv=f~QjVDj)޺[Q^ ÅŪ gnpy[&x;WŇC#HSēD tS;| c&S<LDwN fG5v13p;4!Rާ˔9#?"Ԡc.Ӆz$KLL^aS8 'j{np>^ۊFix[ìs q A;;:P٣$N|i]0@_cu:3?j֧ I6s,FU)W;WK^ +ZQl׉nZ$LwJmکn'ri>ۺ y6TZT:4̾/ӶiԎѶ܎ /ɪ) He׀JAU B֘A& e]6!t>QF2@E]Xx7HyMX<;p?%K2wb7j^<}>;=Ca.RNjs|{OAcx /alR1C9=xo ;7;N*<"y9n*z@ H[ ;dedY]]aN ]sܢOM_P=Nlc%9ga:J>)|} 0*{TphLsgOXkݤ| +hDJK?dK~6a^:"P(}gM܅ױ/-Y{. +*W.K/MUq_bc/xP- +qV@\#Dt)G|>X)^!U\q +EYmNr)PS?Us +ry녪q!<*tTإLga!83NԶW߶ia!j,o*zN3[T􈊗9븝+_6]r}zp te 7auajkNeD4ES( 7U C3 R#gX>V*oS٣99^"[*ifNdK~ zRRDK ~,EB%~t-:@UQ?kρ>,d':6Qh68ۘZE:6MuCBpB\ߝIL٧ᢽ΄](MlSCc LsȦA[moL^M0LV1G뫥mʹomF:ᨰ + +0j'5t.vz"Kde7D3D}c־ZEc|W!k?%_Ur(X37EdȽrn4~Vs k.8 kdK95/fB.z-9g^ +|;(>Fm0LK"Kfo.3+k{j$ s,~Q)huK(5{fq DrG5r!],qߎ!y +M eF6@;Oy,=B}X̼G7# <+)E`pç03]CGн _Qy&>ICŧ?SPArqI-i) 0P4?=i9=Blhl[Ż7O>zeΣgFfKc\ϱQwCJ), +=[UԯRC2~_CV#q]M 6Hu1w5Fc?xl̸IM2cL?Ǵx?Ȱ}?NgL.2LA=&7w'SX4c^_}/M܀jxtc`;F~hGWA<5ء.\:5̄,{}:}oѵfE=l#>ǫGZadN,?;:5/L46qd 'dӭ[1 H7"TO0NjFchڌkPv.@=f-FmhG5:HK%_t*Ѻ0a&j,E˾:hCF NyyG#;1y_~!{mq=xfD/^&~s'p1nyU k1>p2.Cv ?ڏ1z_? `t a).z~đ!L8spIM'0o/y]^ +Ϝ}ylU.~[,%VK汐 kX+\J,R1U#-a;?az}XeZV2Ɨf6aiajwpUϰPTV_b=oVjK|0%//`al +Ѳ{}̅yygڷ ѷhh]3%͚?~q_ߍEе)[Ûu6OV_jk)>͘cd[k]SrP3=^7uRIkx5hMiy?3ğuk%WW5eԸ'O虹WN#<|^q{?xOM}To1M:hQ4o( b ܏ct|R]r¹øxci;@۸AzMx~Xe"* &kΥn}:悼=:~2PdSD`iu-%O3(94_jW)4+FRǞ!q=T&R}1܏pE0e?0ѻŊK*FVOYR_0RڋO +fwf_p(axc=Zn* PޕiäMW9$/s:b4ar<;¦Ko;X^f͝Z~Mӊyx{$Q}ϊf{@=Gmp=e%6(Xnѱ93S~)R/Р%*@3LDQgHLۙ!ҽϳ2q˓q=}w%( * eg,5IxxxL9V!L#a>3sXc'Xu[r.Kh,3xD>zEuا@X`$ΥbީRIa-}Ԡ̮ mFz+7_=56MHV:HT#g׆WOߗuSIEMn:OiF,> Huq~HDɁEw ƲT<}-5  `#^;|Dǹ|w2Px`}h3^֜2|G{m ++N=T3#rNҵK뱯P?X&ڟsB9+sqɕ_9/c܄fփ\\N9m"1nU4Nr<7STh:@E;&|Mx`>#IMs#x񴬧 _سD=J"SᆈW“`%LZ7 #uk6}41i]Eg>8/JmTc2}ċ9nWx⺋箞^:/h=Qa'Zr>.2&ז䶣5sp*$eYQ4_7dĠXɔ|:@Wg \ +GAi;֗soE@=6q__ki8mwa趉m"McBx ~XG a&y␍c! 4Mi +MEM<ڭc0>oMFh?ldL.CM`/ף1r3klYE2 Mk::2k^{Dz.<-kF\:8_.:{:J99V[;MWޯ{-Q$sJ+L*hֱ)=${c߯ȝ 1cǽ6CD'̍X`m*D%7`rq0R02U6d_UZrP3`,3+kZJlSPn6talkC* Rlɞ!4r*mabpl1k i }Є3|xQY:CHzWo3n<ޏOKiDAMr^4v9ځ'1c+̩QM؍и߶`d_;9ߴ`wo_3JEm7skxz2P^MQA_Jgj.Au;ԆoI9?55iБNL;G9tϞNj\xN˳ӻne{_]+272!^>u{~ yGw0]Íi\z&E?>#xlL F{400Ӹ4.9}=0 :?N`t~xucw,?æq9l,u֣[1KXx9l%.b-Q]J}ė;'XJ+lfR;U ]ěy΢}s,acc3Kq: +6ƖL +c1ʩ\4ϱ sXy +1_~Ǩ_Qϱ79E<|s,ݖmN4Ѻz[6 o[Xz$? Yu. v ?akJ]/)^,chEߛuY(>T@i^&zױJ}[z1W~xSX6?%?QDn` 4߹u΋I\?uk1XXv$c,.b!hxza)bw]nc8ءq{_6Z|Ӄ^Z7}b(58uI\81''p9̜ yn-3taFlhrX 8ߛA,3i g&XiWMgy0ڨvhD}-f dMqe_d2K!1ڨyKuhā9 ׋R_U2z|LYQ ~[ )L|c{5tOx^慡;dʺ?fwkcZ*9bI cME4/Yulck9?Kxdٗ8ޤɽ+G/{aQu+ѯ2Ozj3E(?0t7G} dNXZfcR$8TPB+Q09tt/-.15wsuh;xh($}8n&Ϛc}EoFk]Tj+Y_&-"Attt-mYCW8x_=myd57i6Kc)?f}њ$z3R"i{E+Z#FHz| Id> :^Gj踺lIt +autȴt-KiU4Zgi:YgFmJ- +nh&NlA +Ibzo6mHem }!QH]=b,Oh %&8ͦ6";XH%6Uk#BbNf{_a|;<ӇӶ)^{Ï:@ >ojKy8K~ڡ{Z,Py~"i,MzgT޿\UOaw@}:\9#I`3{s];I1}۹n]uoγH6S@RS~ۚKw^(1Pb39Pxi7]QYwS ft'%7Xo=32 g_ڗiZ7d2h2-h[5nq;2,N".gQmGco/KQaR,SS]3Kv|h:+9^+j,[XkCąY;Dž@Sf"9lY/Le̅Ya0TuFtU;Ofv*0]ʑ0jX(|0Rt{gEgqV8bNWi'Z4oy_\sEe!u,t$18Yfe +LyKF5 *l0P_0]_uJ,#$![%8:Fp.;#Z:k">5l@Mלc/t/WTӱAUErO{&]f{|^t.N&M-Qi'ܯIto? +fSs=K{:ߎe,lMWr< oa96n{ QG_lc?&践 G83 M_daTMBx@&D> E M`UV޾ 9η\rDrGP[QF7|( %{tQ+Y~3l2c\4.2ƢCJ>LEC<+Fh4UhG}C1rG[1| }|QR4q/pϢnU=fWq/^U1\8ُ:z^\C<5Ewuh[ݹt2$!B$&MfHFmR8VYgDחMF*Vzw~ )t}]7е,1MYewA(,Ê.^zvshdcXx/LDLĹ_U3~Qs$i?{4f۝Cmh +5``FztsC#Fa@;7oq"hȡNe{0qUjB92˦ȳ<^za(@܂Wno):Ջuem :.=xqoKmzU>>|s,$?ǣ*qi8n{<yw߼M<r|3Q?m;k>s*zzp\u|W]}0}y?c ,,^b*bfcc9+WX~jgm|b +_lsg2j}Xj\ Z\bW + +9tXfڲs,uvջ :&{n.uתcջ9UN%{ o7fğ[c㊷']?_+X7u,D,`)pXZdžl~~l(ep[lV װEװ-3q)7!t]qg .sOS|bҳut~{.}Պp0zxWN])zO})L9u^)Gcu]ґKvhrhAf^"uhBML75Q$jDŜ&FO +cV%S f}W.^!'^R3xA%:;E#2323_>e[ph.aj_·u܇[hBŃLS1wab(}󆋮c4ҿxɍ]c]xgD+y؋BV=.Z.r0:&F.Y瓅ߦRrG 3H)`gRT䡘Y k?-]w2IS:R3ԙah-S[\rU)lϦPrE4Eԥ̦5v,ZN5qr^tL cΗcaESrI ?0F>8gogQXxcgʑ80 a fْk~W}0bDj^$,DG 1Emg8vx-- Lh]i ?!|'epj+!:D%7cFU;t`]N_x0+mA~MW=}f#aL Q`ׅN%[ҷJ Fui]#@-bͬՈBM#Rh݄(]-",DeWAoLkz"\?x/^Ԧ 팂׎P{d/N_ + ~.ֱ?p0@Z?>p{ǓP;w '2)zZ(n(eΨ PalzResTߙ03JR}'8X>U3x +A4U_k0pXg}Uv/n$`w,_#87C0?\r P E<\CU _dfO:{4'異R_$Eܝ\z69;Sy;4 +{(~_/`ړi( _] z̏=9Єɓľ >Ӈk#8܈ok0x hu1<4nLa.!LN`x_B^OstjiñQɒcoy YTaz4(olmN oJ Oc\/IGݻE`~lC;Qn0\+G~K̞9zWi7P\rB #=Y'46&pm0?/D7hW%jDr]3ȄO1ImMFzϾ8,%4=='Ylr9796M9+@B ȩQsY޻ +ϋ +N:E^wNaUHPޭDz4|NV>B|[ ܆ϫQ%:ڌԢ\>}߶ =.>miۘ |4=93汞@Yok0.”g^>BSҒsMyM95{p}q} ?X5ډ^غy3zq?H'FO'> 1rO<8{O o񙇸jwLnxxb/\ +K21xK +^EX:jqFYKUlǬc=|elK26R4c(^k_V6h_*tnAut=$2*"k0-˺w+XZyb0S)K0e.ҽAj{%xe-a|s< b F-`5c6*z+])o eг5Rq|,6ukM6u^ՅmM̳e0B#vְgtL F:7},xպ7CJxU +v`osy);ے#pv󮳘~ +^[ ]lmU*;Q[0z`gڼ6jC6La&boV=43%v/ sE&@Y` [,kxw­c7qiMs98>c5L>=uWt~#4vN^Or5;emL>'Yw;K4x:?h_]\;je"ϖfN(/AS3}BJ} k0Qt[6RtTX04$ +%.T'HJl.\χ/G} hv!(v5K~J:6^h NX }xZOaS!~oDcΗO%S)2dvq va4 ɢ;#Kf{a.x=U$Iesgiq)/Au8x^J\wb%砿 $ rSq (ZBɡ,Kh7z58brrT_>tϷ|8V8vqyPa·h{0o'Nh;/]|'2W5z{q*L\*&lO,*1ϬT1j.j@%8FvU?+A~zm&Tg{v18.1Q8g6HtӶ~`ؑy[&: vqTXA'=LŐS>FbrM9f|\8`x4q4Jmg2s F>3clkf:#"gaP6SG|FǰPjVꤜv_qHzNrQ;8@(%Xs;fijoP^cF\+O%k ccSXG}1u_(Q{4 JqމZCV|}#ՁcP`-eP)(O|Ԯ$G/WsPK61[A Y;ȅנּ5CO@`rnB1Cd%FmW%b?s'͉?m:cX/f2|+)0;ѓU.}__9dT:-`^cKPaȦ{-xw_H$B_sRǚqZTU4IKow_ѼOheRz1\w k1MA*I1kA̺j1xԊΣ k|n}7s?Ջ#Lm< AcX.~Y?6.,\iq~:LzH%; +EǩCϖ tJh>^ j PD2%`G*}@s u NbNtP8~4h +޻l#Tezd[%!"4Osʠw&D:>4xf-.]lc_hW~7o#xtvF?9l*S6cֱm ,؎XF +M2c#yel%S$/a#eYlڗEl`4tuK0-竲?}zp.#gmOaz{.s)saVoap\Gm >YTظϓuO:%6 Iy6%~8Wͭ*Ss*}1 _dl/ E}8^4Lv;qRJpLKxYEEmb>Ȍ7LѾ +hWj"~cM{Ur wK^yv 9UHSktjmsY)lNm]6d./cRbGӭU}7e<%ޔ5n R`.fb>"^*bV/[NRr1뉯lF7 XmjLur)Coywawg.:Md,v1ծq/Hp9OU+ d^u3ѩ1SxPb[++/$.]+;Xc}nUFf^m:@ɅWLD/ڿTP LC2Fh;&w.mkOR e ]6J8` '1ssң>w']"a0rwwbL)Cc6FzԮrAs6[dC}@m4]?V6;W>*|[ڗ \FJc~|}fffsq>;e^ ?{1AD7.?%FXGP4|[>k3{˵JqrG`@6QxQQ<|vWeW$"1ce-"kM' w̞F>/Gpz&\ v):Xt|-W S6!9,XEܾ!6w<Û˫ؼ8 s3lUl}@Ϻ)ChujK^LhqMlm t^!Xڙ-~\YԆ,͑< +8yss??Rna&c'*Dr6[#Bqi:iNy38T9֠ڞOρPX1 $$kA.)\;ҹTxroM67֓$ 3Fx=C#dGLEfb*0M"⨞HjwAV쓓OS$m!r$_=_-:>=gVS;Zl/NEO96ba\<: ~ |~MT:̱v HkFۂ$Vԋ/Fۄ*z8m3bl9_*w6Y3+Eui?߃Q X|~qG7 ~u_~H1 >uoj@Y7aa뻧:pAJ\0kD#xC sCO9+\Un <: ofz?`޿<-g=Ƨ*m/9tV?{pno1;_71SnUq^r'ͱDK?xS?r\Rr y| z-r~N {S>Tz?0{((JxRr]sޙHsH)'A˳gN}pB-C-L-Se><h]/]WXeD/a_\%w`͓97ű՜ʍW/^ohv _S9sX%>M8^ml8,(5sJ=*9)`Jlc8\Wi_F$fǚ=9hU/[;/Nx](q7rzqxTs~4IHeΧ=%WZ `0SWibhBxyEe +RAn*;[no)=t^\'\X]M(9BbYXb Smw f'ZD+v+mkFm0 +t|6>G˹%tn3%u悜J*]xldZ>%7P|puVj4R'܏9 kxdZ:>}>Xo8&-e\GLxc ȹU|BrR[s/+1;g.+%PN:|?U(g_pLߠTwzlkYDY0=D.hWlCa,;Y7֙+`VsbX'ߞ!<^>0'0zsس9 Չ?α4kFO8._#h8RJϗ74ǭG-Jw|& ͧz:n\O +=oԷIȳKE_a!P!TգB~^'`YZ23Y=4blg@ \2?F^msXZO8.Qt(}_-!<&z_T8:uq7ͼ%;=*Grqϵ:'y 9c10/#O:&]c1~@wT1΃:@W0zze.c}{x% CʰIX/ R{6ȷ+Vueh3E/Z 畢_NʹӹEHf 0KV%ILoӋVxۋuUŨ.Zr}0q NrwlU''1 T҄*8858Qbl}?Αa}^0FnG呮=&q]||y؞qZCւ%myӴKNbl O|)B1-˘3+_ }n;4;_㞶V0K8 -؎5JzhtBc=kPOmNMQEB[p98֡YDO +j~adzA!. k<ўˢgtѰ'rI-yH-86^F$Jm5k rh~1 RG[ܑ.R$3EߗВk;oS:AVpD^ۅK\p 1L +_*V#  +>/!>xk/v/>~g ڏV[//3:O٦pDޮ\nj{]E)?x{,\~܏fXxBbWp~XRk/Tx lֲ047S͙=$RJw 3L`VG=xVM2ECLA^֪̔@mc>٢g7U?̠>ȤKa/4+E?zAtu6^rE'wV3aƸw}:B +sݏe >Uz(@ֺ1Sy\EL5Z#VbqKScD'zzQq$.Glj֑9&:J>TGD3kH@Vن8/r=!usn@%o3fg(u|" vQΆ>F*vqt|66lc| Tq7rΡb:T$sNEȱ8)tL+ab(Ocrl©#U)ҠIc" EMmUx!WU!U޴XgX,sYQFz >Y8?;ǹ~Uٔ T؟$`Y_0*8Y +}!}Pfu|N5_J}hikU1t_bI&QOOd{. _;c=@>!תT+9QD lsͷ[8jI43 +5YW&}%P8_1{ i> s kXp}vѷp +j,Z$ͩY >W3=>AT}h<- Ѩx7Y|@59~;G +8B|;< \Ju,4'͟2,&ڎWqT'. QFtz;L8$R(~4/x)zzt}8Y/{;y9!iQLoǙ.\w~Lsf}߶f\C׭8Gs˘l=<j`mYs%l\ZPM<AZ]²PzD?b(Y48D-_͚CM9ͳ]wS_?=X4*A;'V+y Ko͕4'˴f?$5ZC| &1r ׎`+7Dx}'1K/8cd/{~c_|'yhL8ea|3Sx?c9ԮzJs7OWqn_Ox>" d.)"f38cO SxuZ#6R-͒dV֓,0EM&,&vxW[Xż ܩ=%x)&Ě&f &ElaCx6EX }!6 0X@}PD?7ڵMB~x=9iXe-b3c?{Xa\ +LKԱK:6$OJ E|_0&~'pm2m]}wo)+<և~:nޢW70]}SS(T<>ӵV|7$_ĝ&=й֦8^Kǟ9G{(~-IO86Q=ǫj:/J<:?QVX/N& JNI\u#A +{F6 ?bؕĮ,vQd[Bz6۝$OUHX_}P/H+Dz}V ԌQMϾޡuwű-+vRg*Kd!B5gEͥ{12)lӤ$٤K.K[&ޱ2Hl2}ΐIČ.Jñi±ut/{0\xTU]p =C;m#=?j_`_E>VcֳY?NI*Ǧ'IJ/펦a,3Q R>?V~§^~^j̯0>.{o)Z~9zTЃn+@-/G`PRwR1![?h=e}1vð} z$NC`*kw4j}i||9RQ \"Wy +a"'H4|~O#yR4=QLu<1I򜥈0P,aV쉐KS6J8lsq7^眀q{u~A;/aj^EE&S7;-zLMj#Um{oSW'Zb"*gAM?{zhyuf>!˓Xi9EjPu~ +E{/ZMh:.0vE`IQl9ӵtT[V:*l0X6aR{~u2H<:3xH9F!mci2j2{|,kehO`-:'2+> EG> 1p/tȖx +'oC9怬+yZUeؾvT8^m@mTjzKb.z\MDZ6M?Ҁnj{K}vԷIR$'\&.t0sO6s3Ø5 O1| 7^OhWR`5!F4#sPa +Jסj49q|m JIyO_} +{ h7(٬\4z?^CAsEw$pNGsHB[SgBbgc<ꌢb=%o'ccx2%XaXJ ߫Bhz@byݪ9F+nt0hL<9/{t4^IJȣ9I }\\čWqzLo 9?ѹ thk9O`hS4&69"Vf06៯Z0[^#OzնeTSi~go-P#(qEOR9Gl OE~ tCh_TҷFt|$^#Ejx=/jPz8w*%ZO +3E+%6'x י]Љc_maScxw06FՉq!<&ngޅ_+0&=7h 'C?]/e3Z>G߿.˘r0DGN)e3S|Y'/c-a +t5m*U&S;0`N2ÒiV 6͢xFCDžc#` &ed®΂oce@VV~$%c٨XNJgXbS"ab%,S&ɸ2g5t+آbf*z'έacA36XZKkAj:ψa|$9 k9,tNۆulnĶJgx>9j:\E-Q/’o9*6:c#הKt:vnbgh//ma;UT隵jJڗH}澈5X8[~xfM1ldTw[6ބma>x;Ģ3 '0s Vݖ ή+<;V )fxh +63>x]W%8'QfleP%q <9;9Y9q 9^S1-|u _>x #?\w)]__8=}W|ߋh_ߥ120+ē57.G`KfQStfHlTr>"rm ;Fwq5<~t<ɰB1WlW!)֙trqC3wF1[<"MafAfHI^u4i?4Szy CZ ǡghFk҅1:3mhӨ˵DobGuWΠwLߝ O$aݱO!^(94{3i2e f?`^-/RD!}y}F>yNFm 8nΟIbS}?GJ?o@*)|M}!${zI.@?xy + +S޾V^N@Wm?@ \u}=|~aVA}`1:`nBk8d``f\t6T^<$v8K{= Ukh1a,SQcT6sY9 _J\roO˦X䪳U&z~j:Ut9ŒvlNjE'FQr?IhAwk-(:@WB9Gt1-Z=y݅qc1&A7|{OjԲϯUm\&XLJ3.ƜpUW~J--rsl03c26OKseS{rf+wr+ +o R@8RXkXؤ F},hz1 唅Q'.^_m s `}s.$tDowŞ~SpwJ<>ڄCeuȤc1i^K󛴑`'BfQڪz-3(N2:kEKfc99S>ej9X 2Ca_kÄ 6I NH+MoƟI"D ?S#Se5G.z=߷-Mb06f%TZ*jXV=K`~XjNs+.*q>C_0wŠnc>Ӿ*a~:&OVCĻD9`7b YhM6{s@kB:K:%PS0{kgh;U*Oa̧c3YTo?/1t7Nʿ/E4~K~)ۘc:-]ǵ=>o:h]ӠI7-a=q aϰ;S2iKXIi< |{g.t|֎//` t B_㣘v) <E_b֗>?B `#skXXpF0Ѿ,.9LǙ`1X`ڄERZX͌ l'w22vWV ;& +0ּ籑Jǚ䷀E,W-E 3GL.r1/J=5׋a22i OX*VZjױonqY]X`caZegu6K6 ܹݖ }S֛/e,sLaմ-gv&=DmcoecڼݺMlW{W{c$ݶv&(g$P9sDD@DE9|cT \̧ҬY3Ui͟1?\;1QV"fכc1̸Mh'a{ccM tv<(tsgST}#l 뺜I?68nn/prs?N}si?9/aۓ8U|z>ޏßI7}qG}8IKNߑ;{ϝuΧۨJ9}slOӬ)MP`ər7[f٦. +itmE3k:Qo22}TnLA!CO0O09cJPUg;!m4 'ZAec ,;dߓT\/Fc>aT?%.SYi)AfSjWrR 9}`p,dnj´RCZ|2#}]*u$O6 +-byyVY^1fU(qDTW|+EWOε4E~LbܽWK W{*yo9W3_ Q\Ft6TCXV2 ,ebOβKؾԹ4)߱}>N%l?'[alI3h^C*b~"VPds9.ɚJ %8]YſL!|}E:O}Xͱyᄬs<ˏ0ybbI9K{brX_ayKS mū`]kYJ{Wþ_̺TrU[9r߱1VY\Tei9K9Y=p#l͈!ֆ.d:dv iN6DZDZFYj؎"P1k_('#.a7! x2O=.WӺ V_; ^/=_=g SuC/e|۶){3,|붿MEg|LpNDr6 a6sm,E6qS+pZK&.\{1O>ez1]XvcU_تUX$G(: +d\xOr6ѷ0X~W"2;am5DWl R;bKX(eBlb J\^ٗiKQ"'{o ~U'5nn9iձ\զuaĆ1yvA,g1/,PyŎmY#UWʺ;qmRo?V8%L9a=^xcŏbpNGS1gFsr`R(yn,CS*06{m{׫1S| 71FNc$Gl?~jeCKkOp6t}RKC՛)S*HFZb"ZCԷ_e-hx+C(8(Qx\_Sq.\0}Zs(raF*,D}Jƣ9fQQ(߼Q8k|/6[j2B-8IL'0w +z8*nMӸs?9{{H |#=kFh~\oИ\]oQj!_Cӛ9_m} QAM?`]$.uJ:_A[5{T'p}Pu)TFa^F11.L8FڮPJ:j l$>mũ\{N~uGphsMcWlUY-MOaFԽ]u|Tj܏oq䋽85m+pǣ8$k*qj1>ۻb&w c131T(2G1np9։ lж ~m0c!xň1Lb:eK e;j22yͫ>Y-i"/9< ]E;j[_ YPO`!KZtOv>Ķ1L:9L276bsƣ-`=<1n83Oct(zoXv[9O<帏0켅[.,~&n p}ы#8!|?8]/N8?ߓNoy\v!xQ))7.Ӷ~j>I;J\_[ +uiDƽpESޛn#* G[}2>ay狰E8Qb85Z} +Fq?,ZlYhԄI*Дr4>X>fB5tIYe j۞aIf #u?A١tfxMIDt1j,ODk(b?S YžߵB~K*Q\P\f6+agwSBq[X?hvB+w6Ϭņ+w,5~s.W_)\Xaԣ6ԠwMd 3bq?leg%]xEl+FK[&vǫFi$o#y_K0:mjc5"B'.I3|.Qeny_YL+Sk.'.^4~QFrEr|:rsJ͵,?aQWm(Q{kr F +}iDswLeLj?Ɣh+G4 +uG}v;!ġPcwYbiT(>9*2;ԭ 0i/!R?%fE)FJlO]~`¹!!vck31y3?sg2A,\P 35¸^2ؘ?ٮ? |] ^{1~nm` ݴ4rx([gyU#Ul' V)nb v\O/^&e2??5FC Ӿ[v36Զ̗[ڙj 6{7 ć0 a]d$?5Oajd~/ӥv·rŇgr-kɻ58.4Zº$vr@5 lAtSʩU'=_0p=$V/Iflq?ab(>bYdKGe<'S?/p;/y]}!hL_a?{J[-n1}$vu{b/dOca}E]h<[wFN4|GqEt1G>H}c4G Vx)'X.kQz<*_X2pWU'ůޯqJ6ũmpk +6Es]qWZlsǍ`v|Ѭ/O؟ioTWZ^oc+v@k<'boq<3Mk̓<=+\)ߔԡws SsS颉{GWpc\#xrsEob4xsǮqb>!ǥ2pX7q;6Usd3o\üSw+Ze-okRL]hoW4>ⱏN|@c=kOc-~3oۚa&m>^Lŏ`& '31vqwBeezסzo96v}[a(|խL$^qN㺤>v)({_I3|ʾV*pG-_W;6_uSW/nS|я1?t(4= +tc8օþO:>b{_m8bsS72&0~Mtf%`&)qKK.9Lf '1]0٢)gRv~KKzy,c5t12i̋?8ILx?TPU;7q_,Lc1eerNdaplO)[ιR:q7&ļ{gϩ]k 3gGg0}L条?=VI[9/6sاDZ0Tl5㘌rnb=7 ˱e +}`Rb6*Kq(FEXcpKj%(tُdn:Veb%u_9Jyͬwr oq9?# C@@m/vwŸ׽7]D73akhx_? ^/tu'yV]?#x}^0u ޶% "ۆ/uFz=S'}6x\/=bz*\~6<76DQ? zl#o ( PーdX_͸ە% 6e:6lP|E dy( hZa@4Y#!87_xzs ^o AkZFk tV~h/S TyX?#k_aEqn5|<_;Q"f-ȶU^ݔK,9GMh0y +*deH٨,yH2ى1L(?2if#NxTt5fPtcL#vg^E-s7 ij|aTyjw*9F]86_oUm`ƪX9dN= ,վ͞:_|]:>>Gn)_*ʲe[Pgj_{2BSǘ`*a_2Н#+\PطLv Ux“mWNap0VQ<'c$G8mng ^z\u&G$J xO/^aXP0aё9{#VdqBtjmB?eYLbO+#",cs8咊N[8! L8hѸ&a7.nΝpys.*sNAdCg W>'rbT6׮/^u~csGnR힤|9Aa}c)tQN>z| /vH40,!>0|c97:ъe3E'?V>;Žjt Y?>j[:j_Z>.V]`c䫳*,{SYXt-FS=Xm|ĦײGVa1 +,[0Z}ATޛ>Cs61Cx_\sćZ1"V-h>GDZvR'\A$Z0ׅa̴?ZK1]yS71sk! Im\5!<8kH>=e97Pz_ODk (zFk9\tPQ!R/ U6bX|oVpf9%EEM/uMD˨~-k8q~H_1)%E.|w#d}5_pci rRMŵmt qw5dN:ޭA+hz uua/vUIb7l[׸lC*|gb:1]={x=}g޷[q~xwfĖ3mS;A~t}ԄÛe\{,xTR"+^G:4oag- WOamLXC\~u*E[U([ATRµK)ߕ\k4ND~PNMmz|Ӌ_]Ū4m='p~Inϻ9gq~k?o9!!O̤F1;q\g؁6n(jߨd: ]]рx\>=#x9St4D X6iU|f 0[6i3X,B,j\R#--b!{ ˉPŮ,`)-bʃ9i_Ή]㸿6nG-;y΍{QW~\Ӑ9ay߫hSgHm,ΰɍj{I{ ܏kZ~5Ux,[Oxbc `24.FĨeW?@b&s_bi$jޛK4/RU6xh {`NVpqIM᳒Ukr]ϳst\ +lWlO"[땣dmy׃rG%q]j!zW:}$+g2 =k?7 sXqvn!IH^o^K1>r׆oquG3OؐppL{aHø.y|1b{ ܸ KnJpt|e acc27ś0h:U}Ƌ2#/Qn/`FJT-Qa P[l3v\5 +c,t +)t i0 oL}+i0r a[}ښ +2*XiCaיizy GԳX}(2_%bo*|&L0}#7d?k*Ue'-1_)ZW^]=Nb[8VulCF4X +ַ^b:\{7OqIvkr6.#/aj7cSh9zZAOee؞,&ѭ5smFVo<Zؠj3cuqTbTg3v[-Ncxxi5riObKsUX^zKf?/#r,LDb@(?|q5mu0tWH]:izRLGY_]TϮT;`°)V9Yt KcuV jO:b@b{"h`FaV +o%Spkc >n8%[|YԗE6nՉeg֣*1Nq }f<S2rDި~X^g/x_ضr[&1svzXX8vNؚe_?q|KwV':|^ۣlIʄs-Bc+FV4}⧰T5~hsLƹ|/FGqmm$:m^#8]Wmϟ<_R-A5:(+jeuhu|Iq;sB<6'5vKXoK .XY"Bo[ocs+OTԯL 0yaiD ]8m3ԅKZ4 +&S0x a>*_˫ S}5)=,7|oW41+7Gضpf^F8)(Ġ>VS!Zy,rG$Խ5Gߥ㸺:  <6b;"#T4Ďb"qB͔Oc* +smXBx\3*-`j= X5\)KX*\ +W汚:9b-{K,KzMa +uLD ڞK;۞|/vmqg w0԰}\h1>.ÔhL%ϕYoa>iu:s3b#laeuMai/,cE (:'WrrIc,aݳIB؟+x>Xr4fbկv)V.?kw.Y2 j Ym)_9uk^C5)TƗORŰR0\MT}9sRT8׫jS!P +S#b#dD/~ Ǩ^/9a{뱪!1 io6 P&oWK%05O6[[{s)(=@2ۙ϶KJ4k-{ EL)b/WIfXK.V،ᐄpd)gQo-lx%C7ђO4~?&XWS`9,=s%G۔,_޵b~'-F:^/A.m+g]"VWos[=V_yJYP}GXObVNOͮ +e7A8^ v[P1~cmmy>aPD6^o@~;6 e,;~P.i7Sυ?)}<혣~3}^V' PX6 'x>Nx}O90:|iiok5c+{ (y<_2x/xOlݺ&+gc_Oiwt^fbd><5ޱa#Fyk>fy/4@a{ML{f-_x(?d?2nWS_TirxUcz_[x5}Չ]pUQĆzBq%g#q9{y-}N{0:+/X_u@[US ne;b74ar%\'8\dj bCǕ(cf="XqMX:c:SO`h-\G5l½D&~2 '\FNz7!uɶ75]b__af/1vw(ISv#"C]1v,FcjOʶ Ul 7c{xjKڟ*[tC2ԣ<:mgÃWRpcw5/bxS?7NxN& b=Z}h0^>*9o2bfL ,b0Og>Wi<%q3= }{`MsX2cXQ&ϋU~(Ӿ7BY@axf^ Vf9*O E\8+2v2[_usop@RkkLtѼIEO8sjOt #ӬKN?KsWf:"K`_W"J|Xb\O%AE'oj9f!^ĩCq8, B؉si⽱8q61 .jW,z@Iyϒt1^5h4[b O}$s |nGR- /#D}q[mW$w +$ZF8 W[bS 6ޢۥ[k٭leKU(Il}8H`݆N,_xED.]j6R⻯ԲGmx}b;[c69q2ŭFFF _NU+b0R%*+[XK +y1me~kDM 3;:oK6Y_msd)z\zP8c =]O:bie0u 3\?Tf㹞}ߓ şȷu8Uy`2c1f0 zF_Qf**_K@[h}#JEq0궀u+vF%{= կ ++d]7btܚ^p:V7Qɿ7l ^5zPlZ%~J7xMC9Hoo^GkbG}uoy%&M)~ن7 qNG/.Ћ{ql9ZXH;p-8!=<4Fnb&s#o +SwQ6W%ԋW{elo۝w&;Q&WѼqMeCh{p;2^Gg1o.CZ9|exfZt+wSO07ɞ'zGi5l{ƣ໘=7p3tݛ!3#>ڇ[b2L BS籘2y,YS,,b&ws%)T&bG1:wv3U|veaRXR-`p KTᷚx|` 0Q8vs g-5wkX)Z+xm汀gK?anhwot1-cc?`a2ɟ`ۇm=諻A\y [q8)~,~C7+s ++x_w|>þ1.F<70s`%λ5k8u oa~ӫo|sFgx_hxQ\YHUΔ=o +Oȹ$K?LWW]2e2Sb< -`;N.Y {0evQ?9g愛%(s +T]k _a{Ɩv킵HW{^%+KUR\%* L7k,k\4=ǪJT"zF*6b̶$1o2R?a3!"(-EI3t萬Ocߥr,-GX/w/V|!2e~+N(PX-Rhhv,2:Vɩ N ujDK;[PToaJo:t7vn|K3z7웽' ޸Ư J9.mYw+Wj>JaJs$; +&?Kc>YVi {y g\{rkeg_։ [jo`IEװh^VKz9T#"$`.B/ᄼ7a,(W ;.0#aۣ/.`K>gϗװ]]~K;܌$|MLP|nc,[ֵb%wo>|L~^&#۩<55nܝl ƨdu>)pj +Uh3ix]Xό&o3f7_rS@;mOsSF&"n:?LRWa4Uݟ0(L~9CbO[$>p-ϸ kibrSNQ##hS2β~YX?YWO=Zj}¦]-Y6(6Sa}ΈkjL;Re6^ +y< GKLqia}vLN$1.Ltw(J2|9v*JGZu.:b 8˾9q٣unU5V!`9c9]}DJ,b>z59&fU5>HMv/Xz>Q˔|Ya#]jcl+S犧j޲̸ ͞p)v/9^mh + 4OɪI{OӮ_2GkR5@G[:@K9/b`Y/摧٦={9"X!k2|E/76u)N{+34"~oީ@w=WoG{sڱU^?WԽ]JTSp⧃qcpch{1Ik6Jl٨w*Dc}µl}2גŜ'"}mC{3ZZڷJz|։S[zqab4}.㷠L<ð;6\b?k9ykxV:ߥ017dSޓX \ƶ=Maj ۿenKx궈Gq[~ww>{^y8~ ?/xLO`dm{Q֬w0{7øUq=na.|]qW_!r\󺦼}|?;3[ү0c;.u ڿ)QY2x:+#'%MS6 oJ3}Mo5__@ƠfpTL'|,A)ӋW&1AD (zXW|nîbk /\vj;,qןL1b)Sxc>۲TP4F{Euu/L1EM4i61]{oSa"UbWTlX@z\ZH~ϋ93>_kDT>Ir }Fzޑ]2>0UZ3~jla[>Τ~ϡ~L}%Zg]_K)tXh[m3k٣%:͡C9m/%O>L!ވ&FT*Qf@k :ֶPiFkh%_[%3\F +t7gQɽ ntX~uܛjQN ]{ܭ +TVO5rn"iˊYX2P[їo\Ө2PK?qlOp|@k%GKK2tV=V%hsxx2ΑccEXs: {s#gS;lԾBtrilP3~().,5IO3Njn/Q㠶Q*-FO*%nN}bv9CC&H^FP V[LC* "M_HMhX_-9Gұ6#F[&z0+%:FX*Q _䙍wh!)+__'<NJ>A +/^׃ToH UopEß'PX寴7%|Wxh +}Ws|N?6ϱaafާ$Y.x; $|e*[?Uݡ_~^>_'?C+= r?nSڱRzz|EG9 D[%>^ 0bOك]ͭԊYcO!a/ uhav+n6LU2q}].pCh}(zAhs q7{fIQWƞC 3hs`V2aYtS=뒂exQK :KrB|ŠiiMAU?#} ѸᖀX\uω:1 T/Im(z4r0Qi[,ZaEfȵsxeʬҢz N#/oS%L6ξ_NU=QUt+^kVC{q>uڢD+ {0Ԟ.]8g{08:MiJMu{0lT'Br̷rmpT.{{Q6D[ +N1sH9(}[GFƺJE(-~ȥ[ 6o٬sky"]XgJ;_ŋVQHDE*ည/V=&V4}>Y; -Irn$ϓLYupܿBѹhQ!362jQ7+:lcWJw㴞~y[ 4>$8F#>f+Punh1d)>-t7Y2;fG]k.7]8_>U k~ +F.8T9ІiL-L^t sןD:4q%5USf\:&>}NxyӈΏP)Uf u4Ʃ7f[$/~ˡ!ȓ5oPG?.mD͛&o}MѢs??V|z?׿m\dиs9l4c;+Q痱x~`֋z'f歉(}ՄPFykR0(p\$qg x^Ce(\oG%XT67#SNȁ+t aqUQ٨6랍,z_eј~HbUlqbUWUhQVZy-ԈgA8 & >}mx 輕k$?9J}f6[;4p5-lEѫVU*:C? `*!кY082Gт{8!*01)B~=\Vx)D{ +]itVT[ϛq!?xScXBfM3X-`x E-r}'yKX]\Μ79ٸ:֥a>mF:>g3ch_ `A3[\d4F%Ks ^Ϩz5,(d.:dd-z%|h2f:6WjªV %WH*\U \/^*C Ws?V `(6v#f/kϛEu 7Qr$Zfhޏ k>g KvIEsgzp:>!S|>9NE>l~OSraOo +mgߵkdN58f.[:Lfk2DSh"|,auur[B}> E,fFdϣրߜ6բڵDWk(G:Gkt=Jբѽ5t|+}+6ʭ-kеMZl/ЗP_Ft"QcOzIe;O%j8] +)^&^Z 9j$s?]ֳsĸӘ瀽fRqfE: ُ+=@c+yyLd2[J,-T|ܯښG̦zei=7 3K#jJ_jr:K>]?ݣ U'2Ubڨ^9N.f)9_s.-u&E!ݎk3b%ox#4qq ԅ=V ЙEO}ĥ4|l:%"~C0BRBd0oIΏ3BW|U01/ZN>^Qr|0yKͭ#f]/Sy+ Pmc~aoj\@*[+zg}T23oU+qԸޫ|Pa>f5՘·V~yJyRzrV%Xy8[ T3Q*`Hpqk~1cTĭ%jiN|͜Uv]:9fN=-]7s1 _541JcYu5h^]u&1s}k(EK1OIxPE+$# gk҅P}CPAmQIT%V ߵjmn 81]YH}8Gjڷj|qpsm-֐SsCZ15F&\J窚:pA_azM0&֝c TrpG'Uф)-:yX_YF 1|iͣtXCiW%kY;Hĥ />D +G 7S& kʘbQ+=t]/WqŜ>ӺFjS7]3 +B!LZ+LQmsW)w>',Kq.Օ\ { +Kt_M +ޚ.;Ei% ;Kr;Aו_.XۄWWʉa>zszSuJIݢ,6 d﹟+yں% կg\gk±OKLA՛4lMFΌQ\rhK|pmlDguޒ"4KߚI(b+yh3P12 h`` +3*ˉv4_ 4HC.9#^gpTo9+3`o]xmy~u|w.}k+9%̙߯GG(O4*tjТ@yYFҍvm0cGAe+64]OianK%S ~ىm(Hs;tӉKxw[LLc7>1ϻhڀ׋a7|DHxou nkB +R]tw&T}Z=y^m˒+YW#ǿ@y9и]NanR4_V\iѵwF2 ;J90RJa G6Cb(y{nٽs14^\zZ6f9{hB]-aم38/zϏJo*EZ2}gաvxd#z0:lw >^~E<5/c8lf}3a>{l3Xcq < bȱ'uP]12Nx|K8d}%Oa)kY3 gcƅMa<j6CjO<f}{y,_R"Ѷ'ət?Ii;s,TD23&/CgKmaLԮ˅C/_2(zK;ZXG*tta|yf&*vC :ݛPXNn8R}* T~ \ɱ9Sk(uEro1`+}nkЏPyBQ.F4C[+kр\jk +U\>ZzAޗ)wV$ΓG2: -e2te4 %fC:dz6ڙsV/QCIr2E/: OF5 ˞HT)) o87}KugݟU-{\Im~ƾr#o[ifH\G1̢iav;Oa>f|6. 3acd?h\"cc!ҹ8]iZp\Yy; +Q"J0}\ Q Et1P9P4:'߉ct& As58̺5i? a9 _:6@L%/W?ܾ;r>Oa!9}Yת_ sZCT ,=V~>*?[ɣvKz:n~'?%[s7^Y=SsV}V^P%.Yo-yEmazJ"no;,WįU #3%g}:DsjIdK\6ºZur5wܒh}K_>#vKǐk +_-y~-7o7j1ZZ! C(r>V695vJ\.i{46fjד +2W,Plue!ZZ-|*B˜5pYZSs?ݓ0FmꖌsqH%/5̞,Jnѕ0fIbk;DH8r6L WOnVxK]񨚝}uk99Zե^rvoeΦQ:C:2h^z@8yxui](ITn{'ݫbMd4:ɘb|5 QAs{n`' +eӹk0O3[N`?p33R]ҝi%gSQ±3?kKs&.E# /m՗{@YǺ9[T~5j?1 PX!wg5WΗΫf^9u>*~_ d6Gڒ}Jnrs@;o.y[YdW)>L݌8Iussc5Sx3s˜0g^V ؤs֩^Gts8sB:$FqOaԓít~^\nEGuf/SfyYMǴ1THޡcHuf\} %m'9cjq9L}ʹ9ff0AAgJGq^qʼn'hi虎{c:m|L±eL} ikdyz$.ozk.G!GߵMs+&5K4O,ՋsDrUEJRG[lf{ƈ#TnگAϹ@jjiŢ{Cue@r*o|#~ 47/LmL[nb&vB _0s'F}qã_ՠsg ?ĕ:qûc"fb: +-}$^ޒͩ{ۂ׳ Լsq6~ZNfFЁ\]Sx $3B> +5ad s@-R=Q1{8wLTn>Xbtu(ܘ ͕oѕX(aD,94z>oz vd0{}.:Ώpg tнh~{h{7rlgmxuq^\{>mފ?m,o;[o ᚾ#t:p^oʧyq %l^J9cͦb_N <}86K꣰gq:>Q5W4WE {QAͨ~A%Iܿ.SFϪܔvzlPhgZաJ4R_Vn,z~%[Y4٩K^klozqm.ci'&t}܅Ώ;Q_>Mo,DZ{pf7=SW("'E75, XKE<}U؟KVSYZisZbys9Z0Ì'a)~ 󡋸aL¬}xf_K<[Ext $N~]dNb21FClcL%?t8&zU<ƣd8lҔ)YLq z)>sc6p8Dj:-ox U3XÓj|3, 5,<Ӧ'gϲ {rMx?_֗Oow/1R +3% \Ɵi)^{:> ~/|jǭn`ۘ;&b t_̳X{0{oac /C>FҽΞƲi g07~7]/oa|C<}{_vzW3a뇘}9_ ƶK".}tg?3o@ϖn ⩯ +Ӗ"A[$M☏q>aCATu]L4nsG%>^( ΡbQ4~ 9#B) / 9-V-1p˩UT8N"zԸ}7K&p,CҬ+Qih\*,3___有PtA{s]L +1B/I[F-_.ygBPDRӶ`)D=ȱ, w)}XO؂c :%!)xs&!*)߃«XOu wHXAaULVU< +#gX/_<_Qo&S5e_$kD+e.#|TWb -Xle/hYıC8{6]a5ܒq5ʁ5Dk*e-/e"Lف-چ鷎R9q*c?\x$q?qMλPAbͫ+h?%vW0|.MՆH>_Jm@gM_p|j3ӆX\|j7kxާp]=_[g8O#c (9yRw/a\vXe>wH죭x S<(*i)?Oa̠X&fͯO{m!U s˅Qugz^gJuaFg6\S}"އ򒽑 +W昋f<9d-/*SpyPж)ǹI4g~*![>u쵦%̧g zJ_p3$ļLSi +{S}%N0l/cI0aIN>TS) -YӿQ=VY +q(c98$}m}~zy *:G>r+O}E+pC(WEWw :/z!S ?+1}x~MfOt5ݭO{dQ}oYwLx[=/Q4vT_0\iw`6/1'O/皠k +_.$7#g\3uʹ_ 6گ:)88N˹r>YʾKfǣK@mI]T!M6kc>o+@{-9f&Nס~8$@Kϙc`ar2m< +E"k+Ѿ1R)>T|8ɹ7ZiY*q8~_teTM-a!ݮ9܋f0 ;VfZ]**h Pcp*9սN*fWMwt"u|08fA$.&zO~7±9gX$40#F1C4-`22Ƃ9uLF^] xnz74muy7U>zE4gpNt(B&jih- Gj~Qx߷|mGtt|RNxs +}OC4'EYx ݓ~!Zip9\*^7m,~Tsи%Osn2w{96&ьaxx Ѵ T@RkQ9[(w~X]4dBu8Y7.z-8I }wÿ\㨇XȢ1?EW.\n |az̜X|5hy]t1d -ySªXe%v*qc%7{SS]X$]OC;X{@`,}/vR^Ձso0#d"(Y`荣c<%^8cQt |żc.HYhS yRliOA&jo3ߓ<ɯAf?.ǹ8w/_*9 dk=`[-.:Af&~_jů[c[ﭑY4 7ˣmy(fk"V,15VɇKrD#砶J_ʁ߹Ew)k|Ht%pBiKEzxQI?fhPa2ɢ)\2Id1#ޅ=H'y=/ym`3 xo2yK>xvcx p?^/q쐒-)c!qj~hB-^"iHgŻ^0┆{F/R8M|C[N}T,/<'̕mmPZbcX2m&:{_9)Nђ#%mS@ PA0W4zAWt{J.?գ{PC_ N+]|_V#WsԜ!%>ɻ'y.~S/Ge+~Z_ KżWY?)T/,"1@ѤE;`yCX;Joᘂ5)uhg8Vb */kU +Yg*^堪m3wE̚id)<}e\(X ۶d ޅMf^3/a{s2t>Tာ6*>a; ސ73^tGM>C {-^`3.ל+31;V(bG}S'^paɕz無N)Z@ڶz\M8G!xzVYKmhѲ0\ ch<Ǣu]".yj=#Km8#iFhFx>٢xh.}ǭo&\t %H\tUȜ>Ǚ'.PP* 0T Z;˟9n y=J>_?9J8 ]kӾ$a~8P'|z#pʭy{\m0XUh靕(쯁5pSx嵈/ _.z~g:]SdRFu*mva,sXaq=asY,8hڧTssKl4͓rw7!sL69@\`|чߜuvs!:kp k$>ldըjrLU(t7KcefeiMA3U `ΐsI8a0QNK)r ke_vF0Z4}9^ w +QxLPJ0`D %#Lc}IqFJ.>qqfYP1Q\ʱ6q7=&rgQg.z70#..8~PBx3\|:7{x u3*\PckZ$?+e^E{3 wP"QwH<*}xzKt$uw.9r/vյn-8BӸ,kmm^%@_hۊDW/iY" ms V6O)kcr`*/)!7@Uô\ퟒْxKxp-_g?bW+B1OURAz%|TV V}P9{ec=T}WGv)\Ug(:F_Vr+(}o룲>>痵kﳒX'7QH2S;o}HeBǍ}Q9`0YU/qڵ!R"h&ܭy{&Nf;fn䖋+vuIW&_p5.>3&o.ceMC4}̲q>M zQ~i&SaAN}\4Gt_J|@\|/Hn5iiNlSZzN sf= z"F!7?5*rMXAC;Zk!'1>sH *gZ1mi<Q5j?a'6Γ+_'%5$Ὢ|(L(zD' >h>R=)\" W 3g3?+v13r< ՛9gsfUF~ҟKB6g+B_Tw"=z|:]z?#⧍i7r6zK [+c(|aZո/ӳ@u>Og&Xu՜5po/Pl0 P(-sHL +zK]y{h$֞6]d:k8OF.J\(-BޣOchLGѶYh8@k-X YGϸq,y {Ku0RuD" `W$WtbjÅuyNWq +9!~9.ARl.qǚ8&Frlp>+:;]3ΐ|n&Pq^m2/^8sf^VuRkөRN6#D)|2MFViSxj3aN\bL|},b.:fc< 9L8gpN\O;f_™] ^O+pnmAE]R-,$`6:FF3,^ˢzDŽY(ߚ TcF 3#BsbD{6ݨ϶QZ69ѳC?crӉ7Q!Kbqk>pKߺ10xgΗMc}X41}4båNֿ5c`g3Nَ8QՁJq\݇w*0]}4pALX&oaXR 0W1Ǹqcnb!1b0qƂQ]me/U\,Nu ct ^Ө%\4Sgк/_NO/wd?~M/t/?39E,q|Z@?PkМ\S3O1G9֖8c} Nӏ?Ƹ8&=<9qg-\~Ux%*]p)_Rsx#\y7?;q哋.rqC85~W?|} 77p{{fh=fԮwM8vƁrC)e\Q HiA۶hߞ;0n.38) z~(1 ^Ƶad35?xǜ5~3UΔu0[d>plo}f43?GhӅIz6V-"9֬1Dz[7J֣PZ})*t5r fA6faf6]k*D-l]kvmFn5J[ŽzTA1QJKJaO/g+Lk Pn.Gx{xoԣr8"n'͗޶p]IB~ibɕ' +P43KO1I$<0%I: -k8t +Yi7E8!]u^Xh#q R}؛bo Ѵ]U֛E lw$9J}DS +sl +qQb.Pnja~3<y,)t|Fq?'$ض=͌F#d#`p9a@rYG9,B!YY3Jw}޻[2~_tWWUWWZ^ pdA "sTIo#yEXUN)A~z:MS0@2usln[\L/NK>]8yM:oGV$aLeCTxs.xϗ?Slxrp<socn[6uPI'D*$a"U ATW&6J4qP_Rp '6%._+p msTpBڥz0`Β+Ԝwm+_9^$t.4=%UΚ9N+3-|- q)_!mYS!C#1Hv8ov|:߫&tqAl M\Y*,ql05W&)Ms rp:=S4`chE[f#㄂ccͯW!='/imﶍTb#O;n67P++G!^X#O)5P;TVAg~ cm2N-17I-1X*d,\27\^"Rmk12+Tb豗F&Q2Un-kFKE/18G<W.9s% 袱SxlQ{IT4oׂ\s-n)ti8n7sy)^W|=*YwKcYt6u*0Cc`w_"gA-4a;~} v| o_hp(տĨ=)Z +MƟ>ƯpS:q$\8 x{w{䔔.}!:Z﫬KcS`p!vD؊BM4=G^cKk^(="ed^! 'DI]|q<o`tӘc+yI,Je+l+< +v1# ;R{+\0gJM^ +U]X'q>ڏM*FB \wa34I,Lb) +kGdm_CAƤkOסmlt}^79~g{`r‘#YwI Qф". oXb>v#. pbD!X >J3l_Bi,Zg, ?b38y3FhA2\^̩X٠G~1p ˭0`1N݆%1a%jKE4g^j"VּK,,g`s4iX6Ü=Ya%xM5tMFf* }o/y>8;ax9?y\`+9N2# Ҽ!)4'N6- .Gzmysk2]ktҘM9K!FX7mϤN%skQ+.㽸q4 +GNj߫ia뜈n7 &M: #HB߇3мp&F4{ƺ %92/͠o~f8_0F97y6۞N}Cs90I2)u. ?u)Խ[l,lg\8P:Qn?Dy/Ӹy,^+Xn_r^}3.I*VYǛrKyWn\x qO`]b KX\ĢɌ%,-q#i aync,-`)dQ+g=n kK;^eb/ f=qQqG~ Xw>ŬY,ea1m )yǑ05xa=<<}O’4PۼXi.a-+'~Y_<99i,5eFZdJ̗ + +J _3M/ {3<|f<ǿ~ǟYG:pe|OtAk]hQmղn{:q$V-00qx g^iG}-ju8 7'Xe NXtXՏ \7qI6L{Wqe;|>V[]ǝnKp<&&xq\.|< /ѱ{ !_GWfޓŨ^]uUkPj jj@64oFǝvu~}}NM;*w]8K~7W!gG`|֩%.Uc~xd_)1$zLƗ8&>] GuMMp$}EGn6?1ǜ=Z.@Ms +p4ޢ 8~ +Ȝp$zJRw8B5I^ a$ P"%F?#f\I1ޗźUl.9D \ hoͧkϒwIBˋhIrB٬QձF8]d -ct=e2/EmV?5O>*/bp6Rv ]Zg2G~eF] FѮvu4P`k׍.Moo_ +/I4]p>mc_2Μd= aG#Q*F0 |9?|oB<=? ֳn&#02ڙdS$E:Lq3Phc%e.ZxQ+F^cil%ձ;RgP]eJh] ôF*+4Tg}A 2 <O:hUNy$jeUz6Rx˅&X8 }cC18>`!A8pjijC8rNoM|K>*F0Dw+ `4/_ϯMa.۽4(͗|u٢{6|اsN OU$7_sVq>g- +I=f#柳ۢ,&I=Y +Tq?*t%5eSc +w ISQ :ԡsQqn޿KiĘI)2o<.qL|J 8'K9kEiu9*Bb9B5cM:WzmV2OMoǜ;5X1~\9u0BqΈFҬdK=RFѼ3ZI,@5+Ne3]u+'UƍX"1ƂdKt_F0ʜG?D/B'W쓨?@1^h~clmKT;w\=.B6lˆM oK"_xިҹUZg`qX ?Ǜ83I8 =Nt>r;A[a~2 iC67P3&=)q911Gݓ1O{ E J?P[ORxӒq˭ǃc ؤ̯P#cM0/ 8OϐV:= jiD^ʜgGilFsTg/mSh[,/C1YmHI]~>J +r.66^S|~ZwccrԖ,-9s+q@oR +eʹL{ `Q{k+i_pxxk foq:{#~G> sIuK=ՆJ0·=WR9++56QĚ5!tl >: h2TcM1(o]pc] qf<ЌXmxX+Oa5t +fXŸNtkǯ`۳u_}׎vcPߩBRIMjBْ\mOD!Yȳ`};_7 >ks0?6 f8>IU5(ޕCc#bQۄ_1]j-A4$*o'qYtR]^5ͽ,[.kkQ#z71o *E݌WQF&Mv ӊ橔L?g1?Ўs/*gGiDsZz28U6L2bAjc2\sƾḿӑn{*6#?yh,ВcJ6-iL$%0(- +BiOcc% ,5,,c6qiYB.<3J1Oۊ1W:%<cf3)hjOܢXV |10Oq?,cÜB i.&Q= 3B,q cLɇXƊ>7`.|7;Qi(=I}ʷoJ嶥(-A*TRWjQկס~_#Zwp'kއ/pI|Qs=:qq\=z 7O)nMGcMGUeS0nS~%YjT}4qhU8H1댓Ei^ {cWl0@FnX&z`^Og~`Zz`ooD{8}`5_}2BT``z1.Zi+mwKp1ߌ5Eb%.N8M }ʛmI+渀sgxd̉}_c ?޷8 :bMLy>w)8z +O~?MN*or6pS +(ܿc7.AGTp*'qG݉Od}chUlKW03Z'ǝPwB8] gQbU]Yd }rU\5z_[{ +7N +.(X歝u8)Д]ͧ1a(cyH)I5ODs|3WNFsa}1D߸U7Xs~Nޖ*UhMp[mD\+'/<ܞW%_ AqiN_8ccO>?3ct'6@!HLR;j¸m'1gimzݏ[cҶձ(Rzb6AX$8ۨW;&٨~b juaqbm1:|?mԾ~(]m9覾aT ;XMc_/a94V:hI16@cB8 (r B٢Sv >GsFqTq85o(ۜEpc +h Ow+_KolQ/#"؏OߐML{(;Rou|b"+M-o6Qd`+Ě5z)cz(6F68E04CJ?|Q<</12PLɯxn6E Wj͘hMQ<\42:]} 3}1xBS?}ph?cH:hKe1є'RGV+ObyeTs<]yYWTf 'akRxk9wp+IJsG+0\(nҏ;?S?˯m8{oo)o#s/]8a~݉%*g&g o𼍞PM!QUQs8 InL`.j +%ӜEC4L-G",L󔿞'Gyt@;T#6tlkн5P csR"ҽMj? v{h[&j*6y$"gG +ߩ0pßuq&]nC+&8QAsLz& /I^L{\nHOְoI"O-[+ŨWKRȰc0 [P QJٚ7KQF@ƿ9Q*],-`b"{-X\rcXJ랶$fOe"t\2-`s2,3`93V0l\R)ec!eixV=d׀xLy: +-XO3Dc:eI<>Mxss͛l#D=}ߛHB"pYsx{`.ƧKÂ4,Wn do5t +ϏKhRf*ߓ'xOKY-K~/<7?/-:u?xH|'{q]qľx}Jm9ص3 ]݉0~pZEcp)zĽOr85ߦU%XǛGyө~d[:;QF|?}>ÞemoLӦDaf>G4ˡ+`jS̤s,>5W +;+ǵȥwPp2(2QMѱeQ݌]RmgSlnM|t Kq-$cS;vf T| +ϱkpnZ#-uwhڲWnWϨ/GD<(ϊLI*K]`E&]F9Ԅ#XEh5v&$8/kc|O}\N.I/WQXdx~ +诉 oMe}hqL?/I<|#XM?s$]xnD. j6V8mLG +.-)*#1M1T<<+V(iYLp 2=4)c0N_#z >?ߓE%yZ1ap }] +=s݅&i wWy<CZkC}qѸc. m1lt>t=elf{ퟤƩ^SuRcpMQMe7 /]4)/c9^aU|_Y֒uvyӸp8Em0d*Xh™z +:󹞧9J;Ή1.ցJxȹNj9smC(< ާqryTƀGES-~J'B)Nhө} +G-{|N mhyً s,~ki'ĸ*OK֞_lʝVy +ȱt1ϐ|5ZQi Dc%]ü"䩠E-fK1JϏ)lz0/p.E=Ixg Oj[.@S[Pt̀M<]#.Wqhq?Jc弘7X-88{'ӏ!t? +o/G=Oc1j:JRm > }dIC7+8^aOlDc+H}%ZO6Y+"j]`{\O!I8`>_r8ɹ0VI1TncB@eP4B }%T6,x +qbߏ<]rTTgѣ XizGX/{{xQ7waS0{My\7Íq.zOa\ ́Rt.cx~1Sfmǻ1u .9vҲ +cQ7 ٗ;O*F iz1pDt*1 Y͵O^\`ыʞr3#:"w7gqtlo\v=ҵ N爑֍Yc S?I"J٨|D|St¡)~sQj)ߪB; h9؄*PZ|> &Ktm)3%XzXZ 3`N}9KXL\|S‰[09s-X-x圧X^\fr1[49rl 0Xe×Lc7ȘRԎ{4~Sۗ9f c=V $rlB:UNQ<6Pپe)JRZnQ?Q<&1뜄*h]To7YJp9++>—n6yqMs~AH'Ԙy_*$9I_Lj?'\7♬lpc y|?_z~Q:&}eeK7P:qP}$h7(z ޒďӺҼUpzk/2)UƲxwڎl^9j-)ϲ7'zE/[iq96^ a>KO,</Υ!*XuTOF`u QHP3(T{3?/Y9MN h4j\69jʗ8'E9OJkX_סq 6j%`>[SseS!೙'d#|~@['1$9¿zqv`[ ֧}kKxsKȏG6DwߡU.8rdH{&t=u6u4E#\:&[˱Eq. _9/E{Q://[enmkUn]ΟuCc-=> 1-ߐM_%%n~̾!zpΐAxڦ=Dw1Eϓsy~>ZG!iA}8`+{T[3W0PXd;c}H)L}WJ%|@]JT>s Fz%7[+1+g.X0 +}p13_Nq<˚Y5O} d~_u`q9)_13,х@*cܯ&~G~3ǼJJŴθ]ufѹE +`> +WF5ۤPEJP>K=,^OaVRnb9:nc9b +O} uoX&j$iN?6K?v`ztalS}NiԄ pũMhz߄Rv6: +|UC9|;7Ba"{~/{{8{H!0wK%wp:'5x2FmiŌ%}т뎃CGjQgCX 9k=ywY,Ĵ:a:fN^=qc91,aitfV%ˁq!`Icc)!SfҼEZY,q\<7;9sfaN`4nxv]p>K `N% J,V-T9ʬrɝ_`i,FVdTjB՛(ޚ|{Gc*%!.M8;sPdNϿT +ٖ<{!3& ]="5olGgr:wc Il@ Ѕ#xs*L4^/t~ވh=PbQ,?s ~ÝSS85?2{|Os8S컽EՆChWӎLj7ɠgo +={%iM(=QOuʈTDE1jV2RUtW7+psYoY0~3Vj-t}Xne,w-crE<݂U,b:k94r̰`ݴ5bYJ2{,Üs eM G jhYN64yۛ=Z,tTJ@Cޏwq;% 7==zïb^l|:6&.,B& ZWbhMWNvt۞&ZvbMzf{/ҾqLW>ԇp+|B rӫx@x".} ?{}^Eet^eYAjP5hf-=ϫQU2wC:ϏϡzGL`7CwWW]cWqq +0'gE&5K,(ZfLK3' ~>sӋ#C&hmlc/Lr"%fbd{}-e@ `F qG ^KK _b5d.`x9DN9V +/-e'@Ϭ(אBmPqq/sV|Vj5[+ﰉ::g$?vVMoS؟ r܆a3$):69Vt.jCGՓcC_{]U*[K-<ByTㆎXRx((: .UJ%:흦`*ue͛]t̗k~\,kٿS.ZE )4WGzko +I,pZH4f_΋x}.i\_{cO^{Ⱦ6*qj3w-SbQ=/Ws?Lx}*Xc)X\2{;p[kǮ/w=Ξ %ƭX nM9VeEy^`q!t.) M. Xy|A.Bf,l%c;sDʗ,<*'V|U vGal蹝)y+;ʹ*=/ >S?91];ƾn-t~i-L)~#BeœLy|`%tܱi,r9"*'w}}* (\b>gѳ\DyJQchD5h44ƾ5[Є"jԔRR&%f!L?/ơ+u<~rw>k\ƥp㽫U_*n|1s< {{AǫtCzjVbbFZz^TVԼjnD;nENuK A\ޘ#XB뜄{K֜jIKВ? cc? +/a"zW (!/t~C&v[|rok$шۖ=>;wu̕{t.QZE&t$/ MBfil1XC5S\L*+Cb r& Xx컫3QCq,+q@ޅG`E Q z+0w|>Xz>V~kiɼ?ֽ=~U-uoOe[`A1/ [_ۭ7&ACjF ɢg_HK# l{TǶ-z6nH"d0c1 @s9KjrBH"$J{b9jasTZWcd c4C%Ȍpb9Sj3R6 +X?^˗+>t~-+$f?=w9w4C?xuk ۙc4t $nܚ|Xsz|qyQm$yyv~m(m^ejkC:)?X|Q!?,k,t +دP0(%.c!ep+#Ȣcƛ!XcRqv(q9\Biէºg9.2BpZhK4|70Ӝi}K u}gPve8,+tƴ،tꮡ30 P/Ypԗ.Yxxe 85'3/C4*i#~!d`e1T +O o8m{{Ƶu]m|;t*+ۆeڸ+ +Ć sevz7T܁#v4_Svr-<ƾ=*hoqڼl.p1xqEߢb orG{\lGᘛşMһPu?K\&SJQ4{j3gG|qwGpƯ}\&5aP;BИCpۇѾ ZRGqa1@J?CpUHד5ҲwhT*[:GӼ0 WsX@eQ](=DQ9h`|GoT\E4'O7 X0{c~nc/`}{?ٵSF $cB&0ϱ>'F1w{W 8y))O1IXZ^aA0?%ͽ05b+ϴ~),ta>{ +%Әo`}_g ,`8 o*z K c_R^3I$uS;rLX4a! K%]:逧h}Q욍0nAGk@uX(0[uhĈk?м erLjo0{d5LMJiCn~7ϛ|Tn/ԊgSui2Q&yiWS z=h]-e+\JP- ,3M~۪ѴUX4;j3Ro-tiK2iMue\+ Jah^Xlc>1¸RjӀmhu; N݂ļ{vӁ/Pk%Za5Z0hR&=o\MZ`a|9qsJ)ł-0yXr^Üi>'k3&LSYl\B-\@}[aLu,0L:f1cl4j^1'߄dk?2tݥY\44wVӘKOZ6Sߝ븵kOOǸ wc;봼{_?۟_W0DQӳ,іԩKQjDZ6PCmр=hۆ[i'?aHRWz׿hg߱y&z+GG* hS'6!xӹ3N,cN_f(zIg(SHh E +ƥU^W?/9|*%_\>; +o7}}ߔ K)) LQfc͓su3>IÕ D:)d,)Iq^@Q.}23U4WtQX/W]rb'z9|2(?[yˣ߀Zg,8%CT"xNK㨶 ]ΝԷt(u(rbTj|.x~Rvݳ|δgLҲ厍||d8t(~Q(޶aKkg̈cF%JsYN E?6#g=;۸ԪaUصU 8qCW~?Kqx'M1u`-lof݈s<3K5:3XPGP:U텉Gհ}x.hF 1KߌK6`cEg X`,폑m`1F o|.e/m6cw +ߏ5z}\_dm -\J|oy|̋5t"}<*ުik8GOR%"1@V U\n ή0KZ)xǪtuxϋFy=icR+JR[TP 47ePcNXF/R5i^>Js, \̫)xK-Ɲq9K2Rtu4/  VY$\q5͘qA٣ځT4Ӝ{Oз LtɃe:`uim%9g|j1ڊ1DeX6V>&h޴{ +8A +Q VE/^»+y=uNo.G9C1Kw[`sg)о0T`tsWd37r5/ caϠJ)^SO۵s'cS= Fys1^9hܑ~BdIZ)uQ~p;}x&~TE:<ՌSv`dgS1<҄wV:tDur/GMK tħD_MÛ)3.*=zz6EMr|s6d/CbIb0ˆ5\6Ogf~`YkO@Qd܅+ogv[#qZw?#{#=!tyOѼTp킩*Z`z r{Ƽ 9l\[t1@tASe0ij_ +nM5ՅSZ¨_;)|?1a4\2ir61\4VZcVza^[O1;4q9mrL5^NZs~t4_~b9~ ǁ +F g@ V,q+{SFגQ"``%ta&XC="ʧp+}%%<}f ywup1ǘ^!-DG8dq.u#y/s2:R'U +/0\49$8GJ$j3̱΢<1uHNJ>1iX>Iс1X#Nm ¸G"8׍+Kxd ȱfb{Ҽp=&{b`5:w} ks??k$3dTZKt/`zGb.^܆ a}I3F8sK`Ny sk^H̿{Ei`m%,S> 3McQGY^šCY,tDlm*_T + +*RT6^,rg7|3̢f &,51+I*6aWxjn2:Q*T=rG {ۡVo9%7" Bs48zIY>I;(XIhDG |݅ [m}ޫ@24XI; "dLIju߄wKFgb|҆ܬa{Pb%b%`]xmO q$V~r=+؈ksQ[uVN-I4#Js_3wQ:sвXJѳB'E,S1fT[lXb,EfWX(L-K%ւSDY+fY1ftfs,-0cpEXJ)5.\5*f樮,-k6+z+/Z/\+Ìq3S2ׂ x޵%kQHs2u*c.ms>yS+{y/cџtXZr)/23:KY.,*i;gA7xTPjC=y;aoe8{ǘޣcfi o-bxctk/KU>hwiA495wC7\{۫u%Zs[':o[\;qeelA& f}5!.~kt-^Mwjj[ROUh],uReVBU*qTk;6k>]>qo;n;hX{nct0}47p{]v`>+s(E*f]5j7Չncw4y{;$_G-.wgC?C ߌ`cp~bCt|܅Pu]aH8o3e8Vif.ǹKF6sl +6 76^McD0pVb2N%1Ÿ + {QY\h)+ +_`c {r9|~a/,21~$d 9K=o:Q8{1nƸ肅$X)eITqL%\9ƕbiu˴/\ՑLy3v:\ +hB ,MXs˞8}TF`x(GOSFJZeQԖI̿m8 Vceyy_!Bi< +R:AbS +}PK +\c|~O,1!`nwx{ +>Ǹ ,O!Bׇo'>#t{ vc#\yA J~` DuxJ(Jt}#~"Of?Hd#'Q0[h2FS{ *6uWyp.Ry}N{/y' mOѥ'i x-w'cw~=3M˘c)ƴ9n 1v҆q[+<+d;;eN<'~Vs,qIr=n k|S]N&xp˶H8p^x†1uo[0*N3vM0~L0H;7IvLqo&_ !8I7`'£:#1RxABoy رΕq@Ds|ۓ6ӫ9q6Bs4 9g-Q:?Cx0F7wR>m2rbm,Xӌ+i\Ξ47fCMx_6h_$xPCc9ͫK0UwյKi7c1w;y{*߫` 8q1\Dqzvɶ?1 :yp ô)ˮExBJW@[x jًu/\׆65r(gXKEՋyX;':TyKtT'CFpüɺhZY;a!/\0:}_ktMUj3QMBfXN9հoc~X|JڝoV._jxٴdLT0m:Ny+:\ h~W( +Χcm` .ԫ`\O8f<O) c?OxNpE#,ݕK:+zli> so odo<jߥAcnzA'9׵?VvX܍)AQ$k/|A2w\=mt;[< X%)W2wc u/:NjYKl(U1g HW=v{FP 2k{i{1mxgSk0:Z]A'$/8's~Ǔx^TwF*<2R&B+U0H16(a=,>c/tDsb+^COƷP:7H8s >DS 5 t/盧ga1osF0?k,̔D때Q7~-`knj ;+m/X0Js'qYZTa-/,0_`bVtlQxfVv QWPW۸Q3&C1qF:aGtp!X`rOnk7dPn|`2}Kgڳp.J"u>}^dž" Sv4”$>4 +ۘf v,L&<_CY^? = }-< +{(\(p"ͣRiNO["1-D:kYHwH`*)0lHZ uNG\wA#v*Y0nD +_`^`TOR6 k>=TZ2fK}!c!%zx̘9vV,-j)KYXSS &:\bIGuxXh^\-cb"KYL CSL oa.KYLQ]Jꗌ~k> ++Ji_?ʑ+YJ<<;T&94mрRi/z_ʬX[y,Q]Ư%5"Kޤ.7/c)uV<|ݛ;j48ad~׽jOw~Ǯo2Cq֯gſ<~wZAS5; J# oBvtۅ-Xӆr:^ZirGNtnU؎]h b08܈umhrj@s}7؂6N78T6ݩj#Q6u+]o#}7k.oW1c;1Hp}Uדxzpn |=4oh@˶&tޑ&_R}1JuYgDzjTe{twգqo1]~я#oFqqr;BUd" cLd0c//SlHu sVs /A4IWKq7S#;5J0BEHU0='z!wVwcE;f#Sd|ui WѷC`f8 7S8R5DH ?n/w0E'ܿdoTр& +0YFRb}YHfOtƢi f(`:Yx}pl>irHǓ ʓH9gjEI?Cb2gq=.#ށr +JJ\`KtdRbߴ-Q[ vؗ=Yid\c%2M)~*9 }7"clk6^0[b_Lm6#bI=c~ݾqo\K0: }'<`: 8s5J"DkܦBjSGGFzQ3s-8{_;y\][/@%1Tϟ} E;%s@Sn\?[A}"N*ͷ }1Peq 4q)Cx+\4i)>yψvcq| ~5ޢd P 1/\p@ѼMa%S6蛖c}\!Tb}q-(1c4W{y5yc_M5c|Ît^ɸN̬oRRE_C)Šn*uJ=#{ְ J.`҆c%K4/[ٵɵlM8&K!Lm<圂;Ƹs"8Eô&SNq``hC1DuS}0ug K RSGnWޠ i6 Ҙ2FmÚiʥ e,Fs4 Ҙrӑߵ$*~$pǜc{C*s|͢9ʍB=E\ ܎yEy/$cyA>Ձ3ߐ$ s{OWPWp\'_&% +?y{g0X߯>A,k[؞tRjCC&.;8Fo**ةF6;%_&FpmͤkL_<(q#r @ӱ*gaMc`)!Sb>>̞70{`|Ͼe<?õC5>P)*q9n~׊Fhg@˾"t(U;eE܁)x^ 6}i@aFh^܆Os<FNcx3 bԧG x7OPlbZaf]+1,L֗m٥%!^F +\Ws#X;^a%zajs ,b3L`&|U8fÚIÒ ּ5%Y`ɣTM+ܽi~w9|~񨟁-Ɨ0urL0>aJoaKʷB>Ů~<mĕݸy*J0r`Pu(<3o IC-t/ޢZ\V:Є>-m-0Mީ?I}=~?FjeQ娡k)ޜ4$ehNJFtn.#rd!o-m+|"ƽY(P@}*&d SEkiOs */%<0n0na>m)=W/XZf?`2c*,Y`j5Q]b0>OKYͰb)}VXa)evu/Q9=Vsn \!:j s+-)\:6'R.]ӅpMqӟ<'𯋿%<:W7xtb:;8г.ЅT4oj@j4iD49$_h5zʥۗɀ]XJ(S8~-.M(y i@9o`P7~ +.k܍|C[p2Gqm0qLWwpx}\݇ޝ]Y9>+\-2ڮ@*T-؈ʍ\my^b5iFG߇> ȱ770u6n4;#Tm6 +/46<)M@c/I%#ADyP؀^pTNE>8NDYm-%/Np0yF^` d̎Q L/F +70 ߐpu 3TxpǦ *-TΗJܪ:} a,* UoX`dmhW)JR C7|qUg$yW=kxJ @fZglNM6 moe9m>gl%glVW<; [hu3`Yd}_0_uٷ8_yg0S<@byijg):R ltk hy)4tOPeHmOtHsj=Krd_ }ǩ`ΟgNaa`?x0|*I,<|ct~ n#s#j0iF?W0yE|-;֍O<}߂Y[܃9`s[_>ܻp#o^<7vo6ʹWpۣa{^Q- qjXc>! /09wW9E +,ɏgy +k X'g_b)%.ᅫx}3AaNy#X鼰IX"X:'5/`mqO 1l{1<K^\)^rjO4]/'7`^:Eyd0M"-%[gaBKMVI˭ ϊ7Qw+^ͯrQʄީ;P(q@t~PzxP>%2P6;Qhs<wN\Cׁzl@^Q4v_G;#{u2y(XƽF Ak!ZvWcm.P2Rh H9Y:ri^4?.Y_rU (YSHZot5]:=G-OMXhaK*miLf}VQ^1>O}>f5c1miTF\:'RF 3,} +G嘨^fOtrl ʩt + glfmo .FWLUE(_oܩN08ѱUeQw-};yG#U(UQT}ۊ:T 'ӐgE|^׎-0qc5?S;GÇwO0q OĽ/qsvbh5Q[J%0B]5AcXJ1״ڳ {м-o'`.A\vT7ߏcq>Mb^ D2Ri%N9i軫Ax`i U' `~<(f1xbE+\%h% Ι%X`KsX&Ϙ%(HюK Iqtg쵒K1{p039ľH8{r >Ϙ]*N+}Ծ +rW A^ϧ+*)@2:TвeSAΆh ᘁG@} iT^:d"qXN./G8ٳ6TG5Ȥ6D<6Yhjcbn +Dp ʏAa| qeV8#޸u i^{?X/w"y=%i#_q$9dGGkӽgsS11Mb!BiuÌ{&!1"\tZ#P #X<ڗ/poi| e!THX\Q +LW(~ >v  b ce~vCĹT~]L{moE m'* ;*% W|" +VS,6m|9NN ?W,`m6OsO-pTb5tJS;7>![*x QR Rf7xt{ura `/ieٸ}Qv9:~ZれeP%>`gci|EX"ڿ W kf0 (u_€?Ƶen](`")5e?սHvU3dpY8c1曱fQÞƨaJc +2|7ӯ[ m9xaF_b" HCozokj;r=&y0OQO}hÿ;+lyV4UWZ[F7kp9>%,IoBNWRi?vopO +^6hzU3SY.Xmo.#mQ~e.]  +~H=P,?nGw;qN!d+nX%|UhI݌Ѳ-8O믾^{5qu|~~;GF4.GtUUFW #ۯPѻLkxVd|P㣊q.̟c?]) ̫ `]7U);:8|4$ce\wH^r6byewaaƞ1O?:Ƙ k +|N}4nhSiC)פ_ 60@*(8^?C2[ ]ո\ +Fq=x`%6PK/APNmf_ʇ`%>``~ +ޗOyla 䘁Hq9IjZOe`~ gByf5 Υ+ Wox!ˤ,+d,c;$6|c,fOb1p,5!,n` ch'n|руuyx >}ߴy Fi.׍K|[T8.\Kc;|]'#x0qܿpgzqL_Nj{i0T}LM`)'1ֆ-Ir1S=f4}/gc9u#7c) ^R83vG܅9}3wU1<8SC)NI֜4P9Sg_>u$ܾ)^\HykuV.:׌> m`nꫧ[-x0 c~M3Q -z_-J,s矡o'7נEK>riYk ʘϦFݦRNAZ*{QrqmoZ?6fn2CTh݀GpϗͨZLDTm/E{呿,[8~] B@7o GށTsQ U[KQ蚃 {Pz.eȡ+2?i@L߲8CAet4Gjۚ,w-xzaLN4m ^inFnCxy>B*kX}>BCf,z5WI}G ܿS&X*MQޒYMaf0UOʮThŌތJe<|ܵvy<}g2nIsn0^`p ط-ۛP5ki͡I8 Z0o'70Gm 4pq&l~7jп3G z"b^ڈZjSCG5h[݄[G1}Wbgͷ׏KXք[l[_ijq2ִ֩FZ:frQG&oRXm9.0Pk0X_V&j[ [\Qڀͨv߉ZiPAʈbB$%"$sX*1Û1mvXsL`k{7yd>h4^| 7aރF#._tPT&j'$ߖZlCzԽ߀Q;ze }6+a+~:^m\tݓwQZ$je)[B Ɨ5{TDlq)>֧f2V0@ԱO.}y;˱/Фfq(US8aF681Hn#OE}"(U`u +.>&1R/s!~_je,d|4P&S$_hl /R8C6cGF*E`Ue0ɣ{Z#\\yg G<"y0<ͤtt/Scoĺ L.~dӽM]ۅbKX]qC(8B|`?|u.ӪwG`<8p /t/tQR'!ɥtgjτy^Dב%zm:2o3ǡHc[*NF){ҘK;y~D[Nש_G*Uib?_u!C(H*7@zWP{#kh@:JŒ.9y 0{}4m! ku3/T8~OZ_]#Bi؟0k}BI[@W2ߏ1 + n,.X +v'!#޾gT?o|N|%柂1Ǟ}Ǹ*%% ?d[ȶ5 hsǞh{'yrv &sФhrـmq$t7`{o-C=JRI*UVN^bV۪nwÇ +T~*.K\nXo(xs{\9<9oO +Ʀ~\aw5S˜P1GoA +OU\{6#P$ޟÑy/UGGޥko3D`ق_M28*qOB8v7%cMwg>9v|,~;⣽ZPi>yh>uo~D0qomt}!tt}ju!c Ys8*5U~f}=SGDŽRYtdnaxa#%-zPw'E}?yY?kRL;oG Fx9޵4zɢq͸jA}1NC}9J0>P]'*:ca( c D m\?zv6\Tw{ A].L;X#\M5:ZcT 0J0z :+=c9ԧͯ`\op,EH^=mXb ct!xkqF" e_;lS. %4fqNΤ2)tL*՟FԧQ뜌+N+^>ƇXʻ [ mG]wŜ?ퟆagGOҗ?،O'= k4您\ p 2I5<wCw' *똫\ bҔ jg5U28 +_=6n:ŐƢ4GX2R]ENc^b-< iS)7`o} KGvY,P[$f߲)OGm +7bS1Ae>먎'ҺeKM0Qp;յDiksQ};k3We%tb甞P2/al?xߣo\Y kPBRѶ%Cqn@r#'rC7 loɩSа7kN-x^|=L}w-oLA(uA;m8Fn[ +|Ss5(tΤs`.T+F͖R\z#H;\w0Wp*FkۆK{PH-u0*6 +^ͱ4i2/TMc X4{ e X,ccޟudU8Kg 77<[?X]r;SG)zˬ/yǰZ6ǵ^`\\5e ֊%پ}귘QythLz#GѸ, M88jkPa(MQWRM5P)p9*]Pڀ-cڶѷ~ DϺ.ji􇧸xfTja9m( +Je0i/7ҋKuw>ƣ?Gċ &ţh1QTBcQJi8Sc~.3Fxa:RA6Y% FTN&K~V}4K&RWDYTb`9^`4b5BvPфQ +Fk_N c 󱦗kx81ukD2=td/N> e<4{Y(exX%a.[?Ɠ_y^trե&Y江.ՑSq,HyFyNEﵑc1yoo24ҁt;Ҷ -QGE!ʷз[b(_s=:zεw`r F\r@}ZˌS:敗}+_g,(_>zY+Kq nihC>< lp_{ w@o~Ae:T'}=MD:|m`F7t-Կ%Rݧz3!ʧ2I_EǛiY¨w4@Ú]ƋƖQr cZ251@BBS8+uĈ߮_u\tSB!d/k`T.s{XcCB\ +@C7@i*`~~p`O-1OO𤊵)޷>k\5/RISXѭrNaoȉ5߽ pl͇D8tO*?5ɿ_+==*evyKm{Wk9 ToUώU5~_ūs[-zzጫX 2f->*cy +)_xG*T9~@*6('%Q*4/"H0_e[S84'9pwToR˻@߿=a\>%6k9N;g6xXMi8}'4$\0p޹f_xXZ߉.F )|k;X`*nK5b9mKzDS|ݵ}qBZZ%V]YNSyҷ j :G.9ʹ <-PtKte4w +Y?˄=omC8,=! :Ƈ 6Q[|ǗE}?O1X\9Jyܿ5[Rth +Gwt=|tݫ`5UZo2/K)cc|:{Cph35 +%/YO7^LU1@E,mhTǘf舽DznE| @g{}[N(8)u ^(޿NWTooiqܥA(m~ھ_F-ُ{ptf4}lW|Y\'*P~}*S~pjۗf*tV "ހSXȱ\z#帖ѪW4e_ C;+vcE{}2✋ӆ,ܠ1, |aN`{1cuG Ku3n<>:/2vcm`zK $*0_1BU/\erhʩ/R@ϩQDVb6s ?}p 5W] .u4NcPA}1Ër T&?̑}]cy4n2*70pCmx[)?r3r ۰2:,~s + -3?øu/n0kXF#E&>p#3n4x $tw|%mx; g(2jnQu<(ƣ+P> h~3q^5sLX5&Fq(f|cuaSx< u>Rj>c!h=rbmnMٔ# +-'XT"%g|{<]Xc * +'bcʐϺLUp+9CԖey Wt7vK je O“YtBufҨTI9 _+,ȣ0]QRLh59A[:]C>n4wАEׁP}w̗cEחs|Cѹͯи%i~N#jTfbn#3yW4)i Ѹ݌;аwc%ZqI؃a9Pcѳ+fm$uYI1[-=רX.bqp &-["1h`c†^+0 vH}b'lXcżԙoR AcC<{jb#|k +%,.Zc/a)ފҭevCV¼ًٌ΍4^VQxnm{_ +M%j4u:o Vun q! lǘa.x?Z~_FځV7 J4Eh~@Vk+\%4ֶ–q\y*fgx+^|/0,+o\ck;~1'b棛`g<|7w;ѿsrJзX>}_nhѥWh`A[7~F7tV?:QId/04>o90%\}s +޾wpmLxE^]:0& mc+=x5omli]=]MmmC۫hM^هT88?WU\fWp凫|e8α+Z_$JїD..~F*[,}eRo_(%D$k9E'4Պp{ii.E+Mm%% +/Y;tL&41&)@+BB"i낣4Ǎx-EKThR` +$"݃L]mg9ij# sヵ+S|ldi|Oвp~X["KX/˸S s<Ʊ-kuMcs|R輌swj@s33^Kύ܊:h'[ 04@U}TJG㷾L0CB_S#E-q =lkK}@݅i$]]?/cе$<6s=w|Qn$ߎB^/7RQQ, +~i;/B=c`?Fcd8OTf{|D7{PLIS r* ^GH_t-(PFJ/3!R&ge݇4ZLb#^qq?K76JqNH$ЍPl\0B_'\ m +qB4$QR{_%bF2(]%;ܾpM,Sxzop0Xt7LRKDy; 9{ nHy$!9L f +Wx*/H8P8ru|^V?Tޟ1ѯzN*V7ʋʟ尪uKA*oϥ8VrqǟLLZv9ؙ+xhuV|>^zzxc=U_^#/U|1JWPTUa>S5^j|ţkה%>%e Ĝ"OҺdq?M +g%P)r +z~YNnE9:o۪gBHD]Ub#x jڴAgVI)Zۭ|V8`KZFc,P1Ϗq*S{*#L|U[ ̯Tc8 4㸓QcoGǍصdqJ0j] 1XLcyMcrڙϠ\49 5Q6R}4O̤etmTwhKuqhI.ߏ|-VR˹a/R],%‹X#1q׏Ev S_ҜF o-낻0y~Sxrԧ8Si.Qq߆ų;)5r\9:ގmSQ)Ʌk;Qt1XaEj77 Y#K9D~뷗ns_wp~|Љӟc#}=-z߂w;0a?qg5]Gˡw6PZ&R{+2dJ^.s 5ZCPE Fbעw'>Xxt=(]W(X`k6*79KZqGu30GhGXLj ,BԹףWY Ln&yS籔@?{t[/cax yXS汒L}*Y.MxPIV1Künm؊źX+cJEX;q2ZJ )$ +*R +ql0܍9|FTVbaA>X\-hsmMVM *5U;hFohTc}4>-r4= &6_ąg[ݯ;ס?1 }ðF-O57D9^V]k߳A4ӯ3-fώG~Ã0u#.#-ׅ;{_^ċoW?yOg0$N}onbtEԡ1 stdgֈ*2V8sܿz45J`t&M#4TѶQS6m'}CW׋^-;߬1ӷ-M73Qaxƶ9F`K7N2Ocd .>KoǕ&qw=s{OӸЃC5: KPe0if73]{g7@mhӉ7zf/߃|aq}$ۘ:B+RrвRt E5]_)Z% s{V In*U[D% Z%\'qb/X91NcSL0Em}qMa`<1@x*14єbc.b4{h"i(QX!Y ާ95XcL3 ^*3 +/091es)݃\J?O<#b(Eѱ֕=i|s2D_%zk&ȹ=z# 4.S-pCS{x :F4雦Z0zYVnmd jJr24v#];s9멭8& g n9M~St"{"}h @ėGo?}LW;X2|N_}K7xt}o@xK м~Ν҄bg3WMmf3`vɹUnܰЋxNBz3HԌX]% +FhD5QJMH:l-㨎C78p͂EM D%?XOe5IU<|UD Zao2RcxmDd \Syŋcs?GH ?eo0?BbF;8Lp;Gc/Q ] +'1 '|pI7Ә,x YC\B !YMǟGxt0 EMS0UtqYm0c/ V~ <.jZqVѺ|)"@U_5p{\|{{yO;&~ K|A|ɹ= GWc9(xѵuR'o+Spɗx;Pzߏ;URxe^F|?۴ ."k +V'rWTC>+\B 95iR Q.\Q~mx`Q0Jg9d +ȭ|ň~啄!gƄK9q͂ HStC9 vVT=hί93ǵB&aMlY݄;>`MB4n ,]5&fp?2|t70}71r7}Oqw>6=[wkp}{կ}E4Obuؒj[XMa{Xc(?}=JXkr&#?Uós>Z*KkcOZ%(Z`<_}1etE8^mw/Y~kygm/(^Oed+T1Õ:g*% 7ېIr*D\8eXV־WHE_Ds X^FK_7MPRl6jc!vUa.t3-ѿ}ofC)3ΕI}=R +˫q;1MRIsh.q,dG`pNj-л=EAzWrS i,qG!)S=2ݼdk3id/Tn(As6ԆtiO1WH8s4 wG3_G^31KWJ;[LlRK鴞H?USg ì}óc1a/L}){Y^~F}}6U ,q%]?l6,/bt^!jYVƢ;MfϥEW`-2TO# 7.euL8,zw¨!twK]QAƈFm3>зw152PY3zh`{\{pkMW_ S\zŚ&1W-o#&57r {6{oש[{`O\ ' 'K~>pn\;19t聋(_W8Ǝ+PnGcT"*duTPGKbRߪ1ӷY35M}7Ft#^G+ѬmA ?#}se!U,<&g'5{p17O{y\~wg:'d9Tsk blf mbAvjGǫӋ7 pK[pgחq L|;3}xWp/ԗX_Je<_}( +J\6]JΛ +>$] 1.O&N8Aez +%kLtٟKh95ӄӾJ<@%˹S%f}t|pXLPR>Y]f T0d3DM0sx=A0 ڟC&wP;xR]rBWd}52t!fΠ6W0ly,MlʄXrz~zu z(iɩ +-+A'cwr@TO JԎrz&5(/R葫iW#SI,C=cq|G%f&Eq8='|}Mx㛏]1^ xu=|r +CX`#i)NoB +yHq.ZPzX/aXE*PJ_59!Rc%,@ \:ma܏_*؇WA^bR̳K9Z,'/5N pD_%؛1~\*8ޑ5ğ8SpH%Vq#*v Oz:*?<Ț_yW}}TO7[3wlm<>_RQ +wLO+|AǤ^3\WӪ_03EaXmx]c^X^~^"x(Բje>_B)Gߊ/q8Tp_Zp X:AI,%6V7ͻ["c97\*E{չhϼʼn;gh>ssK)(S/看0Z']xގnN#5qX^7kn-rf.`1m`ɽP\JZ&oċuXZW߷K6nҼ]UC7T +ǺY2/!_gOpIW M]Dܧ|ܳuYXqI/}5"(z 8 KπqFz~ժI#=Ʃ*(H ;O!V`g0MQV,8_03&ժkWKhlk9Fq:cڷh,{pAqNm,#Զstx}DD:J4‘~ȘIpJJ#9%sxhzMP:!x_-(؟7E,B+bKu/dIL@ϵxzߋ"*˜IuY$)1_`yO{R+8NJbrZ…l3.-MؓA ! ۇq bno1ٴ_~[}UGƭ{o(hqc+=l~^Fۈ[th;zm]!@0FhT۫VqJmKl:m^f֖zOwg}'.;Rx~cp6@^cD cԷUg#oP/9C/q X_cT 䘀y36Ao1VO}JJe.Z.z䘇[HCÄ"26Zcmopxc*BWתOBwrlsL`5O/c35~!~ #(~Cj?p:&LõtXe/H:&~(zW:EU"7,~9?O  zyOs8_ 9t=ɂVdYD#r3_{XT2{)X{UؼYydaԊjp\o[A4K{0e=Zv!ƿj O:~SO}ְ˸yl gMٵ`>lwh{x=kXȿ'1W0wyJ0{M|mNV?~K1w`Muce<{'XJ]<ϸg`+T: mVDx 9<^J<[\C)?9O8#6D˱'eK|{c\,wϋOhҺ cO<7`%ұm罴=ϺbJ.+VFJ ^cߒSżxuݯ5"!yNiARTRLG>џ%.7R[,{ji~߉7PIQB&ӱ(yU8I?NG0ޝ<rT_6*F#߮G80FA6XI*߳E!hjZ_н uF!9ߣburQJik2Mi!yT S%.(#!ڛl+ +QTFJ 1o ySj6VA(kty3(>BM=BW9ViIN}}8(y܇l1^XE-R>RDvzg,W`lg^_w-Q:v51<@; d_Ajt/T>+je۱@#[B Vjdg7y&QD%J+12~tl(QiYkAD۵9khnQzwV}<' {{po1y ktu@c Z軩'nOmB[ ][$1|ߌ0ҽ`p*zD_7F_}:s;ut7ԎQn\&޾o1A߮> ҏM33Ԩ:Ի574KW߫}MTo1(.½/0\2&k­8b4(2=> U{9h1&}_drlN]t}ݍr{x:`e=mM?μ:YO{1Nd@Odmo`xQ̾D (`gS8MpȺHFh_`n v_43%s@X,8] cb{šJ)/%SRAe(#-2Nq4j8.a؏!Fϒxc/Mb/ӽP?|۲@W$ϮʕJ)K0| +R~9UAV^:dߐZ:Nb,}G`*UH_-yMg:j{ 0Kb^X<w#P3Ngo^ϟnh8G߃A;KgؾYߴ@~ꊺسSWه=xe߽ ~؈Ɔ븺2m3huGs]G1vcn㸽*`j +ϢyՆ>zok1#VW=s:oESmw ͩ),^$*gl0Ə}O`5 RD#tZA™Hci&K?:`c$EǻqPr̽ R9?Z| ZF +vHDP?X/\$ߪ/''^J hC Rϟ$1$#b*_x~R6H}.z` TTcz ]0`x8s_bYGPc*Scͯƪ2Kt_AJ"%.JWh34?s<_v)UJ]%1>p?'0$s6n9a݄7wW6rʺ3Nܥ2Oןƒ{?fX{+T[lq΅ݭ܌?&}{r