From 5cfa4ba5807b63bcab537ca2c604b6015ced4459 Mon Sep 17 00:00:00 2001 From: Zac Pierson Date: Mon, 6 Feb 2017 12:26:41 -0600 Subject: [PATCH 01/37] Added Linux functions throughout the code, but it segfaults. --- .gitignore | 5 ++ build.sh | 6 +++ src/build.c | 82 +++++++++++++++++++++++++++-- src/gb/gb.h | 147 ++++++++++++++++++++++++++++++++++++++-------------- src/main.c | 75 ++++++++++++++++++++++++++- 5 files changed, 270 insertions(+), 45 deletions(-) create mode 100755 build.sh diff --git a/.gitignore b/.gitignore index ff0568ca6..6eabce127 100644 --- a/.gitignore +++ b/.gitignore @@ -251,7 +251,12 @@ paket-files/ # Project Specific + +# - Windows *.sln !misc/llvm-bim/lli.exe !misc/llvm-bim/opt.exe builds + +# - Linux/MacOS +odin diff --git a/build.sh b/build.sh new file mode 100755 index 000000000..059b593c8 --- /dev/null +++ b/build.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +WARNINGS_DISABLE="-Wno-attributes -Wno-implicit-function-declaration -Wno-incompatible-pointer-types" +LIBRARIES="-pthread -ldl -lm" + +gcc src/main.c ${WARNINGS_DISABLE} ${LIBRARIES} -o odin diff --git a/src/build.c b/src/build.c index 3afc05047..6a121708e 100644 --- a/src/build.c +++ b/src/build.c @@ -126,7 +126,64 @@ String odin_root_dir(void) { return path; } #else -#error Implement system + +// NOTE: Linux / Unix is unfinished and not tested very well. +#include + +String odin_root_dir(void) { + String path = global_module_path; + Array(char) path_buf; + isize len, i; + gbTempArenaMemory tmp; + wchar_t *text; + + if (global_module_path_set) { + return global_module_path; + } + + array_init_count(&path_buf, heap_allocator(), 300); + + len = 0; + for (;;) { + // This is not a 100% reliable system, but for the purposes + // of this compiler, it should be _good enough_. + // That said, there's no solid 100% method on Linux to get the program's + // path without checking this link. Sorry. + len = readlink("/proc/self/exe", &path_buf.e[0], path_buf.count); + if(len == 0) { + return make_string(NULL, 0); + } + printf("build.c:155 | Link value: \"%s\"\n", &path_buf.e[0]); + exit(1); + if (len < path_buf.count) { + break; + } + array_resize(&path_buf, 2*path_buf.count + 300); + } + + + tmp = gb_temp_arena_memory_begin(&string_buffer_arena); + text = gb_alloc_array(string_buffer_allocator, u8, len + 1); + gb_memmove(text, &path_buf.e[0], len); + + path = make_string(text, len); + for (i = path.len-1; i >= 0; i--) { + u8 c = path.text[i]; + if (c == '/' || c == '\\') { + break; + } + path.len--; + } + + global_module_path = path; + global_module_path_set = true; + + gb_temp_arena_memory_end(tmp); + + array_free(&path_buf); + + return path; +} #endif @@ -250,18 +307,35 @@ void init_build_context(BuildContext *bc) { bc->ODIN_ARCH = str_lit("amd64"); bc->ODIN_ENDIAN = str_lit("little"); #else -#error Implement system + bc->ODIN_OS = str_lit("linux"); + bc->ODIN_ARCH = str_lit("amd64"); + bc->ODIN_ENDIAN = str_lit("little"); #endif + + + // The linker flags to set the build architecture are different + // across OSs. It doesn't make sense to allocate extra data on the heap + // here, so I just #defined the linker flags to keep things concise. + #if defined(GB_SYSTEM_WINDOWS) + #define linker_flag_x64 "/machine:x64" + #define linker_flag_x86 "/machine:x86" + #elif defined(GB_SYSTEM_OSX) + #error Run "ld -V" to find out what to build programs as. It may be the same as Linux...? + #else + #define linker_flag_x64 "-m elf_x86_64" + #define linker_flag_x86 "-m elf_i386" + #endif + if (str_eq(bc->ODIN_ARCH, str_lit("amd64"))) { bc->word_size = 8; bc->max_align = 16; bc->llc_flags = str_lit("-march=x86-64 "); - bc->link_flags = str_lit("/machine:x64 "); + bc->link_flags = str_lit(linker_flag_x64 " "); } else if (str_eq(bc->ODIN_ARCH, str_lit("x86"))) { bc->word_size = 4; bc->max_align = 8; bc->llc_flags = str_lit("-march=x86 "); - bc->link_flags = str_lit("/machine:x86 "); + bc->link_flags = str_lit(linker_flag_x86 " "); } } diff --git a/src/gb/gb.h b/src/gb/gb.h index 8edd4b92f..5ec844daa 100644 --- a/src/gb/gb.h +++ b/src/gb/gb.h @@ -1,4 +1,4 @@ -/* gb.h - v0.27 - Ginger Bill's C Helper Library - public domain +/* gb.h - v0.26d - Ginger Bill's C Helper Library - public domain - no warranty implied; use at your own risk This is a single header file with a bunch of useful stuff @@ -276,8 +276,6 @@ extern "C" { #include #include - - #if defined(GB_SYSTEM_WINDOWS) #if !defined(GB_NO_WINDOWS_H) #define NOMINMAX 1 @@ -298,9 +296,6 @@ extern "C" { #include #include #include - #ifndef _IOSC11_SOURCE - #define _IOSC11_SOURCE - #endif #include // NOTE(bill): malloc on linux #include #if !defined(GB_SYSTEM_OSX) @@ -314,18 +309,18 @@ extern "C" { #endif #if defined(GB_SYSTEM_OSX) - #include - #include - #include - #include - #include - #include - #include - #include +#include +#include +#include +#include +#include +#include +#include +#include #endif #if defined(GB_SYSTEM_UNIX) - #include +#include #endif @@ -417,20 +412,21 @@ typedef i32 Rune; // NOTE(bill): Unicode codepoint #define GB_RUNE_EOF cast(Rune)(-1) +// NOTE(bill): I think C99 and C++ `bool` is stupid for numerous reasons but there are too many +// to write in this small comment. typedef i8 b8; typedef i16 b16; typedef i32 b32; // NOTE(bill): Prefer this!!! // NOTE(bill): Get true and false #if !defined(__cplusplus) - #if (defined(_MSC_VER) && _MSC_VER <= 1800) || (!defined(_MSC_VER) && !defined(__STDC_VERSION__)) + #if (defined(_MSC_VER) && _MSC_VER <= 1800) || !defined(__STDC_VERSION__) #ifndef true #define true (0 == 0) #endif #ifndef false #define false (0 != 0) #endif - typedef b8 bool; #else #include #endif @@ -619,7 +615,7 @@ extern "C++" { // // NOTE: C++11 (and above) only! // -#if !defined(GB_NO_DEFER) && defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1400) || (__cplusplus >= 201103L)) +#if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1400) || (__cplusplus >= 201103L)) extern "C++" { // NOTE(bill): Stupid fucking templates template struct gbRemoveReference { typedef T Type; }; @@ -1008,7 +1004,12 @@ typedef struct gbAffinity { } gbAffinity; #elif defined(GB_SYSTEM_LINUX) -#error TODO(bill): Implement gbAffinity for linux +typedef struct gbAffinity { + b32 is_accurate; + isize core_count; + isize thread_count; + isize threads_per_core; +} gbAffinity; #else #error TODO(bill): Unknown system #endif @@ -4117,7 +4118,7 @@ gb_inline i64 gb_atomic64_fetch_and(gbAtomic64 volatile *a, i64 operand) { gb_inline i64 gb_atomic64_fetch_or(gbAtomic64 volatile *a, i64 operand) { #if defined(GB_ARCH_64_BIT) - return _InterlockedOr64(cast(i64 volatile *)a, operand); + return _InterlockedAnd64(cast(i64 volatile *)a, operand); #elif GB_CPU_X86 i64 expected = a->value; for (;;) { @@ -4824,15 +4825,18 @@ GB_ALLOCATOR_PROC(gb_heap_allocator_proc) { #else // TODO(bill): *nix version that's decent case gbAllocation_Alloc: { - posix_memalign(&ptr, alignment, size); - - if (flags & gbAllocatorFlag_ClearToZero) { + gbAllocationHeader *header; + isize total_size = size + alignment + gb_size_of(gbAllocationHeader); + ptr = malloc(total_size); + header = cast(gbAllocationHeader *)ptr; + ptr = gb_align_forward(header+1, alignment); + gb_allocation_header_fill(header, ptr, size); + if (flags & gbAllocatorFlag_ClearToZero) gb_zero_size(ptr, size); - } } break; case gbAllocation_Free: { - free(old_memory); + free(gb_allocation_header(old_memory)); } break; case gbAllocation_Resize: { @@ -4929,7 +4933,7 @@ isize gb_affinity_thread_count_for_core(gbAffinity *a, isize core) { void gb_affinity_init(gbAffinity *a) { usize count, count_size = gb_size_of(count); - a->is_accurate = false; + a->is_accurate = false; a->thread_count = 1; a->core_count = 1; a->threads_per_core = 1; @@ -4960,6 +4964,7 @@ void gb_affinity_destroy(gbAffinity *a) { b32 gb_affinity_set(gbAffinity *a, isize core, isize thread_index) { isize index; thread_t thread; + GB_ASSERT(thread < gb_affinity_thread_count thread_affinity_policy_data_t info; kern_return_t result; @@ -4979,7 +4984,81 @@ isize gb_affinity_thread_count_for_core(gbAffinity *a, isize core) { } #elif defined(GB_SYSTEM_LINUX) -#error TODO(bill): Implement gbAffinity for linux +#warning gbAffinity is mostly mostly untested on Linux. All I know is that it compiles and runs. +#warning TODO(bill): gb_affinity_set on Linux is a stub + +// I have to read /proc/cpuinfo to get the number of threads per core. +#include + +void gb_affinity_init(gbAffinity *a) { + usize count, count_size = gb_size_of(count); + + b32 accurate = true; + + a->thread_count = 1; + a->core_count = sysconf(_SC_NPROCESSORS_ONLN); + a->threads_per_core = 1; + + + if(a->core_count <= 0) { + a->core_count = 1; + accurate = false; + } + + // Parsing /proc/cpuinfo to get the number of threads per core. + // NOTE: This calls the CPU's threads "cores", although the wording + // is kind of weird. This should be right, though. + FILE* cpu_info = fopen("/proc/cpuinfo", "r"); + + int threads = 0; + + if(cpu_info) { + while(1) { + // The 'temporary char'. Everything goes into this char, + // so that we can check against EOF at the end of this loop. + char c; + + #define check(letter) ((c = getc(cpu_info)) == letter) + if(check('c') && check('p') && check('u') && check(' ') && + check('c') && check('o') && check('r') && check('e') && check('s')) { + // We're on a CPU info line. + while(!check(EOF)) { + if(c == '\n') break; + else if(c < '0' || c > '9') continue; + threads = threads * 10 + (c - '0'); + } + break; + } else { + while(!check('\n')) {if(c==EOF) break;} + } + if(c == EOF) break; + } + } + + if(threads == 0) { + threads = 1; + accurate = false; + } + + a->threads_per_core = threads; + a->thread_count = a->threads_per_core * a->core_count; + + a->is_accurate = accurate; + +} + +void gb_affinity_destroy(gbAffinity *a) { + gb_unused(a); +} + +b32 gb_affinity_set(gbAffinity *a, isize core, isize thread_index) { + return true; +} + +isize gb_affinity_thread_count_for_core(gbAffinity *a, isize core) { + GB_ASSERT(core >= 0 && core < a->core_count); + return a->threads_per_core; +} #else #error TODO(bill): Unknown system #endif @@ -7760,18 +7839,7 @@ char *gb_path_get_full_name(gbAllocator a, char const *path) { return gb_alloc_str_len(a, buf, len+1); #else // TODO(bill): Make work on *nix, etc. - char* p = realpath(path, 0); - GB_ASSERT(p && "file does not exist"); - - isize len = gb_strlen(p); - - // bill... gb_alloc_str_len refused to work for this... - char* ret = gb_alloc(a, sizeof(char) * len + 1); - gb_memmove(ret, p, len); - ret[len] = 0; - free(p); - - return ret; + return gb_alloc_str_len(a, path, gb_strlen(path)); #endif } @@ -10385,4 +10453,3 @@ GB_COMPARE_PROC(gb_video_mode_dsc_cmp) { #endif #endif // GB_IMPLEMENTATION - diff --git a/src/main.c b/src/main.c index 3ff20ac61..b091a35e2 100644 --- a/src/main.c +++ b/src/main.c @@ -16,6 +16,11 @@ extern "C" { #include "ir_print.c" // #include "vm.c" +#if defined(GB_SYSTEM_UNIX) +// Required for intrinsics on GCC +#include +#endif + #if defined(GB_SYSTEM_WINDOWS) // NOTE(bill): `name` is used in debugging and profiling modes i32 system_exec_command_line_app(char *name, bool is_silent, char *fmt, ...) { @@ -326,7 +331,75 @@ int main(int argc, char **argv) { } #else - #error Implement build stuff for this platform + + // NOTE: Linux / Unix is unfinished and not tested very well. + + + timings_start_section(&timings, str_lit("llvm-llc")); + // For more arguments: http://llvm.org/docs/CommandGuide/llc.html + exit_code = system_exec_command_line_app("llc", false, + "llc \"%.*s.bc\" -filetype=obj -O%d " + "%.*s " + // "-debug-pass=Arguments " + "", + LIT(output), + optimization_level, + LIT(build_context.llc_flags)); + if (exit_code != 0) { + return exit_code; + } + + timings_start_section(&timings, str_lit("ld-link")); + + gbString lib_str = gb_string_make(heap_allocator(), ""); + // defer (gb_string_free(lib_str)); + char lib_str_buf[1024] = {0}; + for_array(i, ir_gen.module.foreign_library_paths) { + String lib = ir_gen.module.foreign_library_paths.e[i]; + // gb_printf_err("Linking lib: %.*s\n", LIT(lib)); + isize len = gb_snprintf(lib_str_buf, gb_size_of(lib_str_buf), + " \"%.*s\"", LIT(lib)); + lib_str = gb_string_appendc(lib_str, lib_str_buf); + } + + // Unlike the Win32 linker code, the output_ext includes the dot, because + // typically executable files on *NIX systems don't have extensions. + char *output_ext = ""; + char *link_settings = ""; + if (build_context.is_dll) { + // Shared libraries are .dylib on MacOS and .so on Linux. + #if defined(GB_SYSTEM_OSX) + output_ext = ".dylib"; + #else + output_ext = ".so"; + #endif + + link_settings = "-shared"; + } else { + // TODO: Do I need anything here? + link_settings = ""; + } + + exit_code = system_exec_command_line_app("msvc-link", true, + "ld \"%.*s\".obj -o \"%.*s.%s\" %s " + "-lc " + " %.*s " + " %s " + "", + LIT(output), LIT(output), output_ext, + lib_str, LIT(build_context.link_flags), + link_settings + ); + if (exit_code != 0) { + return exit_code; + } + + // timings_print_all(&timings); + + if (run_output) { + system_exec_command_line_app("odin run", false, "%.*s", cast(int)base_name_len, output_name); + } + #endif #endif #endif From 6efd400c98cff15347774152481885e2194fbc27 Mon Sep 17 00:00:00 2001 From: Zac Pierson Date: Mon, 6 Feb 2017 15:45:51 -0600 Subject: [PATCH 02/37] Updated build script in an attempt to track down a segfault. It's not helping, though. --- build.sh | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/build.sh b/build.sh index 059b593c8..a143f52a8 100755 --- a/build.sh +++ b/build.sh @@ -1,6 +1,13 @@ -#!/bin/sh +#!/bin/bash -WARNINGS_DISABLE="-Wno-attributes -Wno-implicit-function-declaration -Wno-incompatible-pointer-types" -LIBRARIES="-pthread -ldl -lm" +release_mode=0 -gcc src/main.c ${WARNINGS_DISABLE} ${LIBRARIES} -o odin +warnings_to_disable="-Wno-attributes -Wno-implicit-function-declaration -Wno-incompatible-pointer-types" +libraries="-pthread -ldl -lm" +other_args="" + +if [ "$release_mode" -eq "0" ]; then + other_args="${other_args} -g -fno-inline-functions -fno-inline-small-functions" +fi + +gcc src/main.c ${warnings_to_disable} ${libraries} ${other_args} -o odin From eeeb90c4410365c805eeab9bdc5b71279ce973d5 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Mon, 6 Feb 2017 21:47:58 -0600 Subject: [PATCH 03/37] MacOS is able to run Hello World! --- .gitignore | 1 + README.md | 21 ++++++++++++++++----- build.sh | 17 +++++++++++++---- src/build.c | 13 +++++++++++-- src/gb/gb.h | 7 ++++++- src/main.c | 37 ++++++++++++++++++++++++++++++++----- 6 files changed, 79 insertions(+), 17 deletions(-) diff --git a/.gitignore b/.gitignore index 6eabce127..27a4b9fa7 100644 --- a/.gitignore +++ b/.gitignore @@ -260,3 +260,4 @@ builds # - Linux/MacOS odin +odin.dSYM diff --git a/README.md b/README.md index 7e717e18e..ef99a5e12 100644 --- a/README.md +++ b/README.md @@ -22,11 +22,22 @@ The Odin programming language is fast, concise, readable, pragmatic and open sou ## Requirements to build and run -* Windows -* x86-64 -* MSVC 2015 installed (C99 support) -* Requires MSVC's link.exe as the linker - - run `vcvarsall.bat` to setup the path +- Windows + * x86-64 + * MSVC 2015 installed (C99 support) + * LLVM installed + * Requires MSVC's link.exe as the linker + * run `vcvarsall.bat` to setup the path + +- MacOS + * x86-64 + * LLVM explicitly installed (`brew install llvm`) + * XCode installed (for the linker) + +- GNU/Linux + * x86-64 + * Build tools (ld) + * LLVM installed ## Warnings diff --git a/build.sh b/build.sh index a143f52a8..2c6db80d5 100755 --- a/build.sh +++ b/build.sh @@ -2,12 +2,21 @@ release_mode=0 -warnings_to_disable="-Wno-attributes -Wno-implicit-function-declaration -Wno-incompatible-pointer-types" +warnings_to_disable="-Wno-attributes -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -Wno-switch -Wno-pointer-sign" libraries="-pthread -ldl -lm" -other_args="" +other_args="-x c" +compiler="gcc" if [ "$release_mode" -eq "0" ]; then - other_args="${other_args} -g -fno-inline-functions -fno-inline-small-functions" + other_args="${other_args} -g -fno-inline-functions" +fi +if [[ "$(uname)" == "Darwin" ]]; then + + # Set compiler to clang on MacOS + # MacOS provides a symlink to clang called gcc, but it's nice to be explicit here. + compiler="clang" + + other_args="${other_args} -liconv" fi -gcc src/main.c ${warnings_to_disable} ${libraries} ${other_args} -o odin +${compiler} src/main.c ${warnings_to_disable} ${libraries} ${other_args} -o odin diff --git a/src/build.c b/src/build.c index 6a121708e..1d2747b6f 100644 --- a/src/build.c +++ b/src/build.c @@ -314,15 +314,24 @@ void init_build_context(BuildContext *bc) { - // The linker flags to set the build architecture are different + // NOTE(zangent): The linker flags to set the build architecture are different // across OSs. It doesn't make sense to allocate extra data on the heap // here, so I just #defined the linker flags to keep things concise. #if defined(GB_SYSTEM_WINDOWS) + #define linker_flag_x64 "/machine:x64" #define linker_flag_x86 "/machine:x86" + #elif defined(GB_SYSTEM_OSX) - #error Run "ld -V" to find out what to build programs as. It may be the same as Linux...? + + // NOTE(zangent): MacOS systems are x64 only, so ld doesn't have + // an architecture option. All compilation done on MacOS must be x64. + GB_ASSERT(str_eq(bc->ODIN_ARCH, str_lit("amd64"))); + + #define linker_flag_x64 "" + #define linker_flag_x86 "" #else + // Linux, but also BSDs and the like. #define linker_flag_x64 "-m elf_x86_64" #define linker_flag_x86 "-m elf_i386" #endif diff --git a/src/gb/gb.h b/src/gb/gb.h index 5ec844daa..504053a09 100644 --- a/src/gb/gb.h +++ b/src/gb/gb.h @@ -3627,7 +3627,12 @@ gb_inline void *gb_memcopy(void *dest, void const *source, isize n) { #if defined(_MSC_VER) // TODO(bill): Is this good enough? __movsb(cast(u8 *)dest, cast(u8 *)source, n); +#elif defined(GB_SYSTEM_OSX) + // NOTE(zangent): I assume there's a reason this isn't being used elsewhere, + // but I don't see it and I can't seem to get this working any other way. + memcpy(dest, source, n); #elif defined(GB_CPU_X86) + __asm__ __volatile__("rep movsb" : "+D"(cast(u8 *)dest), "+S"(cast(u8 *)source), "+c"(n) : : "memory"); #else u8 *d = cast(u8 *)dest; @@ -4964,7 +4969,7 @@ void gb_affinity_destroy(gbAffinity *a) { b32 gb_affinity_set(gbAffinity *a, isize core, isize thread_index) { isize index; thread_t thread; - GB_ASSERT(thread < gb_affinity_thread_count + GB_ASSERT(thread < a->thread_count); thread_affinity_policy_data_t info; kern_return_t result; diff --git a/src/main.c b/src/main.c index b091a35e2..5a7c38c1c 100644 --- a/src/main.c +++ b/src/main.c @@ -255,6 +255,8 @@ int main(int argc, char **argv) { optimization_level = gb_clamp(optimization_level, 0, 3); i32 exit_code = 0; + + #if defined(GB_SYSTEM_WINDOWS) // For more passes arguments: http://llvm.org/docs/Passes.html exit_code = system_exec_command_line_app("llvm-opt", false, "\"%.*sbin/opt\" \"%s\" -o \"%.*s\".bc " @@ -270,6 +272,23 @@ int main(int argc, char **argv) { if (exit_code != 0) { return exit_code; } + #else + // NOTE(zangent): This is separate because it seems that LLVM tools are packaged + // with the Windows version, while they will be system-provided on MacOS and GNU/Linux + exit_code = system_exec_command_line_app("llvm-opt", false, + "opt \"%s\" -o \"%.*s\".bc " + "-mem2reg " + "-memcpyopt " + "-die " + // "-dse " + // "-dce " + // "-S " + "", + output_name, LIT(output)); + if (exit_code != 0) { + return exit_code; + } + #endif #if defined(GB_SYSTEM_WINDOWS) timings_start_section(&timings, str_lit("llvm-llc")); @@ -332,7 +351,7 @@ int main(int argc, char **argv) { #else - // NOTE: Linux / Unix is unfinished and not tested very well. + // NOTE(zangent): Linux / Unix is unfinished and not tested very well. timings_start_section(&timings, str_lit("llvm-llc")); @@ -364,7 +383,7 @@ int main(int argc, char **argv) { // Unlike the Win32 linker code, the output_ext includes the dot, because // typically executable files on *NIX systems don't have extensions. - char *output_ext = ""; + char *output_ext = ".bin"; char *link_settings = ""; if (build_context.is_dll) { // Shared libraries are .dylib on MacOS and .so on Linux. @@ -380,12 +399,20 @@ int main(int argc, char **argv) { link_settings = ""; } - exit_code = system_exec_command_line_app("msvc-link", true, - "ld \"%.*s\".obj -o \"%.*s.%s\" %s " + // TODO(zangent): I'm not sure what to do with lib_str. + // I'll have to look at the format that the libraries are listed to determine what to do. + lib_str = ""; + + exit_code = system_exec_command_line_app("ld-link", true, + "ld \"%.*s\".o -o \"%.*s%s\" %s " "-lc " " %.*s " " %s " - "", + #if defined(GB_SYSTEM_OSX) + // This sets a requirement of Mountain Lion and up, but the compiler doesn't work without this limit. + " -macosx_version_min 10.8.0 " + #endif + " -e _main ", LIT(output), LIT(output), output_ext, lib_str, LIT(build_context.link_flags), link_settings From 8becbdc1b2b5166aa1438d702be54b0e7e4035ad Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Tue, 7 Feb 2017 00:28:21 -0600 Subject: [PATCH 04/37] Added a very basic Linux standard library shamelessly stolen from the MacOS one. Made Linux (almost) work. The generated binaries segfault, but it's so close I can almost taste it. --- code/test.odin | 4 +- core/os.odin | 1 + core/os_linux.odin | 231 +++++++++++++++++++++++++++++++++++++++++++++ src/build.c | 2 - src/gb/gb.h | 5 +- src/main.c | 9 +- 6 files changed, 245 insertions(+), 7 deletions(-) create mode 100644 core/os_linux.odin diff --git a/code/test.odin b/code/test.odin index bcd4ddc57..4e2409a8f 100644 --- a/code/test.odin +++ b/code/test.odin @@ -5,10 +5,10 @@ thing :: proc() { }*/ -#import "fmt.odin"; +//#import "fmt.odin"; main :: proc() { - fmt.println("hello, world!"); + //fmt.println("hello, world!"); } diff --git a/core/os.odin b/core/os.odin index 0ce897bd7..0c66fe655 100644 --- a/core/os.odin +++ b/core/os.odin @@ -1,3 +1,4 @@ #include "os_windows.odin" when ODIN_OS == "windows"; #include "os_x.odin" when ODIN_OS == "osx"; +#include "os_linux.odin" when ODIN_OS == "linux"; diff --git a/core/os_linux.odin b/core/os_linux.odin new file mode 100644 index 000000000..96388ed01 --- /dev/null +++ b/core/os_linux.odin @@ -0,0 +1,231 @@ +// #import "fmt.odin"; + +Handle :: i32; +File_Time :: u64; +Errno :: int; + +// INVALID_HANDLE: Handle : -1; + + +O_RDONLY :: 0x00000; +O_WRONLY :: 0x00001; +O_RDWR :: 0x00002; +O_CREAT :: 0x00040; +O_EXCL :: 0x00080; +O_NOCTTY :: 0x00100; +O_TRUNC :: 0x00200; +O_NONBLOCK :: 0x00800; +O_APPEND :: 0x00400; +O_SYNC :: 0x01000; +O_ASYNC :: 0x02000; +O_CLOEXEC :: 0x80000; + +// ERROR_NONE: Errno : 0; +// ERROR_FILE_NOT_FOUND: Errno : 2; +// ERROR_PATH_NOT_FOUND: Errno : 3; +// ERROR_ACCESS_DENIED: Errno : 5; +// ERROR_NO_MORE_FILES: Errno : 18; +// ERROR_HANDLE_EOF: Errno : 38; +// ERROR_NETNAME_DELETED: Errno : 64; +// ERROR_FILE_EXISTS: Errno : 80; +// ERROR_BROKEN_PIPE: Errno : 109; +// ERROR_BUFFER_OVERFLOW: Errno : 111; +// ERROR_INSUFFICIENT_BUFFER: Errno : 122; +// ERROR_MOD_NOT_FOUND: Errno : 126; +// ERROR_PROC_NOT_FOUND: Errno : 127; +// ERROR_DIR_NOT_EMPTY: Errno : 145; +// ERROR_ALREADY_EXISTS: Errno : 183; +// ERROR_ENVVAR_NOT_FOUND: Errno : 203; +// ERROR_MORE_DATA: Errno : 234; +// ERROR_OPERATION_ABORTED: Errno : 995; +// ERROR_IO_PENDING: Errno : 997; +// ERROR_NOT_FOUND: Errno : 1168; +// ERROR_PRIVILEGE_NOT_HELD: Errno : 1314; +// WSAEACCES: Errno : 10013; +// WSAECONNRESET: Errno : 10054; + +// Windows reserves errors >= 1<<29 for application use +// ERROR_FILE_IS_PIPE: Errno : 1<<29 + 0; + +#foreign_system_library libc "c"; + +unix_open :: proc(path: ^u8, mode: int, perm: u32) -> Handle #foreign libc "open"; +unix_close :: proc(handle: Handle) #foreign libc "close"; +unix_read :: proc(handle: Handle, buffer: rawptr, count: int) -> int #foreign libc "read"; +unix_write :: proc(handle: Handle, buffer: rawptr, count: int) -> int #foreign libc "write"; +//unix_gettid :: proc() -> u64 #foreign libc "gettid"; + +unix_malloc :: proc(size: int) -> rawptr #foreign libc "malloc"; +unix_free :: proc(ptr: rawptr) #foreign libc "free"; +unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr #foreign libc "realloc"; + +unix_exit :: proc(status: int) #foreign libc "exit"; + + + + +open :: proc(path: string, mode: int, perm: u32) -> (Handle, Errno) { + return unix_open(path.data, mode, perm), 0; +} + +close :: proc(fd: Handle) { + unix_close(fd); +} + +write :: proc(fd: Handle, data: []byte) -> (int, Errno) { + return unix_write(fd, data.data, data.count), 0; +} + +read :: proc(fd: Handle, data: []byte) -> (int, Errno) { + return unix_read(fd, data.data, data.count), 0; +} + + +seek :: proc(fd: Handle, offset: i64, whence: int) -> (i64, Errno) { + /* + using win32; + w: u32; + match whence { + case 0: w = FILE_BEGIN; + case 1: w = FILE_CURRENT; + case 2: w = FILE_END; + } + hi := cast(i32)(offset>>32); + lo := cast(i32)(offset); + ft := GetFileType(cast(HANDLE)fd); + if ft == FILE_TYPE_PIPE { + return 0, ERROR_FILE_IS_PIPE; + } + dw_ptr := SetFilePointer(cast(HANDLE)fd, lo, ^hi, w); + if dw_ptr == INVALID_SET_FILE_POINTER { + err := GetLastError(); + return 0, cast(Errno)err; + } + return cast(i64)hi<<32 + cast(i64)dw_ptr, ERROR_NONE; + + */ + return 0, 0; +} + + +// NOTE(bill): Uses startup to initialize it +stdin: Handle = 0; // get_std_handle(win32.STD_INPUT_HANDLE); +stdout: Handle = 1; // get_std_handle(win32.STD_OUTPUT_HANDLE); +stderr: Handle = 2; // get_std_handle(win32.STD_ERROR_HANDLE); + + +/* +get_std_handle :: proc(h: int) -> Handle { + fd := win32.GetStdHandle(cast(i32)h); + win32.SetHandleInformation(fd, win32.HANDLE_FLAG_INHERIT, 0); + return cast(Handle)fd; +} + + + + + + +last_write_time :: proc(fd: Handle) -> File_Time { + file_info: win32.BY_HANDLE_FILE_INFORMATION; + win32.GetFileInformationByHandle(cast(win32.HANDLE)fd, ^file_info); + lo := cast(File_Time)file_info.last_write_time.lo; + hi := cast(File_Time)file_info.last_write_time.hi; + return lo | hi << 32; +} + +last_write_time_by_name :: proc(name: string) -> File_Time { + last_write_time: win32.FILETIME; + data: win32.FILE_ATTRIBUTE_DATA; + buf: [1024]byte; + + assert(buf.count > name.count); + + copy(buf[:], cast([]byte)name); + + if win32.GetFileAttributesExA(^buf[0], win32.GetFileExInfoStandard, ^data) != 0 { + last_write_time = data.last_write_time; + } + + l := cast(File_Time)last_write_time.lo; + h := cast(File_Time)last_write_time.hi; + return l | h << 32; +} + + + + + +read_entire_file :: proc(name: string) -> ([]byte, bool) { + buf: [300]byte; + copy(buf[:], cast([]byte)name); + + fd, err := open(name, O_RDONLY, 0); + if err != ERROR_NONE { + return nil, false; + } + defer close(fd); + + length: i64; + file_size_ok := win32.GetFileSizeEx(cast(win32.HANDLE)fd, ^length) != 0; + if !file_size_ok { + return nil, false; + } + + data := new_slice(u8, length); + if data.data == nil { + return nil, false; + } + + single_read_length: i32; + total_read: i64; + + for total_read < length { + remaining := length - total_read; + to_read: u32; + MAX :: 1<<32-1; + if remaining <= MAX { + to_read = cast(u32)remaining; + } else { + to_read = MAX; + } + + win32.ReadFile(cast(win32.HANDLE)fd, ^data[total_read], to_read, ^single_read_length, nil); + if single_read_length <= 0 { + free(data); + return nil, false; + } + + total_read += cast(i64)single_read_length; + } + + return data, true; +} + + +*/ + +heap_alloc :: proc(size: int) -> rawptr { + assert(size > 0); + return unix_malloc(size); +} + +heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr { + return unix_realloc(ptr, new_size); +} + +heap_free :: proc(ptr: rawptr) { + unix_free(ptr); +} + +exit :: proc(code: int) { + unix_exit(code); +} + +current_thread_id :: proc() -> int { + // return cast(int) unix_gettid(); + return 0; +} + + + diff --git a/src/build.c b/src/build.c index 1d2747b6f..2024f7a37 100644 --- a/src/build.c +++ b/src/build.c @@ -153,8 +153,6 @@ String odin_root_dir(void) { if(len == 0) { return make_string(NULL, 0); } - printf("build.c:155 | Link value: \"%s\"\n", &path_buf.e[0]); - exit(1); if (len < path_buf.count) { break; } diff --git a/src/gb/gb.h b/src/gb/gb.h index 504053a09..8ff378ae0 100644 --- a/src/gb/gb.h +++ b/src/gb/gb.h @@ -3627,7 +3627,7 @@ gb_inline void *gb_memcopy(void *dest, void const *source, isize n) { #if defined(_MSC_VER) // TODO(bill): Is this good enough? __movsb(cast(u8 *)dest, cast(u8 *)source, n); -#elif defined(GB_SYSTEM_OSX) +#elif defined(GB_SYSTEM_OSX) || defined(GB_SYSTEM_UNIX) // NOTE(zangent): I assume there's a reason this isn't being used elsewhere, // but I don't see it and I can't seem to get this working any other way. memcpy(dest, source, n); @@ -4676,7 +4676,8 @@ gb_inline u32 gb_thread_current_id(void) { #else thread_id = GetCurrentThreadId(); #endif - +#elif defined(GB_SYSTEM_LINUX) + thread_id = pthread_self(); #elif defined(GB_SYSTEM_OSX) && defined(GB_ARCH_64_BIT) thread_id = pthread_mach_thread_np(pthread_self()); #elif defined(GB_ARCH_32_BIT) && defined(GB_CPU_X86) diff --git a/src/main.c b/src/main.c index 5a7c38c1c..48833225e 100644 --- a/src/main.c +++ b/src/main.c @@ -399,10 +399,14 @@ int main(int argc, char **argv) { link_settings = ""; } + printf("Libs: %s\n", lib_str); + // TODO(zangent): I'm not sure what to do with lib_str. // I'll have to look at the format that the libraries are listed to determine what to do. lib_str = ""; + + exit_code = system_exec_command_line_app("ld-link", true, "ld \"%.*s\".o -o \"%.*s%s\" %s " "-lc " @@ -411,8 +415,11 @@ int main(int argc, char **argv) { #if defined(GB_SYSTEM_OSX) // This sets a requirement of Mountain Lion and up, but the compiler doesn't work without this limit. " -macosx_version_min 10.8.0 " + " -e _main " + #else + " -e main -dynamic-linker /lib64/ld-linux-x86-64.so.2 " #endif - " -e _main ", + , LIT(output), LIT(output), output_ext, lib_str, LIT(build_context.link_flags), link_settings From 90ab448bca855b7b99a9d3c74bc90629e00e95b1 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Tue, 7 Feb 2017 12:26:15 -0600 Subject: [PATCH 05/37] Modified the test program to see where the compiler inserted the code. --- code/test.odin | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/test.odin b/code/test.odin index 4e2409a8f..bcd4ddc57 100644 --- a/code/test.odin +++ b/code/test.odin @@ -5,10 +5,10 @@ thing :: proc() { }*/ -//#import "fmt.odin"; +#import "fmt.odin"; main :: proc() { - //fmt.println("hello, world!"); + fmt.println("hello, world!"); } From 584869730a4ad5fb4021d46a6e1dab21790c9452 Mon Sep 17 00:00:00 2001 From: Zac Pierson Date: Tue, 7 Feb 2017 15:07:20 -0600 Subject: [PATCH 06/37] Linux can build now! Woo! --- src/build.c | 11 +++++++++-- src/main.c | 26 +++++++++++++++++--------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/build.c b/src/build.c index 2024f7a37..b8cbfa7a6 100644 --- a/src/build.c +++ b/src/build.c @@ -330,8 +330,15 @@ void init_build_context(BuildContext *bc) { #define linker_flag_x86 "" #else // Linux, but also BSDs and the like. - #define linker_flag_x64 "-m elf_x86_64" - #define linker_flag_x86 "-m elf_i386" + // NOTE(zangent): When clang is swapped out with ld as the linker, + // the commented flags here should be used. Until then, we'll have + // to use alternative build flags made for clang. + /* + #define linker_flag_x64 "-m elf_x86_64" + #define linker_flag_x86 "-m elf_i386" + */ + #define linker_flag_x64 "-arch x86-64" + #define linker_flag_x86 "-arch x86" #endif if (str_eq(bc->ODIN_ARCH, str_lit("amd64"))) { diff --git a/src/main.c b/src/main.c index 48833225e..679dfaec9 100644 --- a/src/main.c +++ b/src/main.c @@ -383,14 +383,15 @@ int main(int argc, char **argv) { // Unlike the Win32 linker code, the output_ext includes the dot, because // typically executable files on *NIX systems don't have extensions. - char *output_ext = ".bin"; + char *output_ext = ""; char *link_settings = ""; + char *linker; if (build_context.is_dll) { // Shared libraries are .dylib on MacOS and .so on Linux. #if defined(GB_SYSTEM_OSX) - output_ext = ".dylib"; + output_ext = ".dylib"; #else - output_ext = ".so"; + output_ext = ".so"; #endif link_settings = "-shared"; @@ -399,16 +400,26 @@ int main(int argc, char **argv) { link_settings = ""; } + #if defined(GB_SYSTEM_OSX) + linker = "ld"; + #else + // TODO(zangent): Figure out how to make ld work on Linux. + // It probably has to do with including the entire CRT, but + // that's quite a complicated issue to solve while remaining distro-agnostic. + // Clang can figure out linker flags for us, and that's good enough _for now_. + linker = "clang"; + #endif + printf("Libs: %s\n", lib_str); // TODO(zangent): I'm not sure what to do with lib_str. // I'll have to look at the format that the libraries are listed to determine what to do. lib_str = ""; - + exit_code = system_exec_command_line_app("ld-link", true, - "ld \"%.*s\".o -o \"%.*s%s\" %s " + "%s \"%.*s\".o -o \"%.*s%s\" %s " "-lc " " %.*s " " %s " @@ -416,11 +427,8 @@ int main(int argc, char **argv) { // This sets a requirement of Mountain Lion and up, but the compiler doesn't work without this limit. " -macosx_version_min 10.8.0 " " -e _main " - #else - " -e main -dynamic-linker /lib64/ld-linux-x86-64.so.2 " #endif - , - LIT(output), LIT(output), output_ext, + , linker, LIT(output), LIT(output), output_ext, lib_str, LIT(build_context.link_flags), link_settings ); From 73c5c5d5d3315ac956b9846adfda9da8d204e4c8 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Tue, 7 Feb 2017 23:21:52 -0600 Subject: [PATCH 07/37] Linker on MacOS and GNU/Linux now includes foreign_system_libraries. Fixed foreign_system_library not respecting 'when' condition. --- src/checker.c | 16 +++++++++++++--- src/main.c | 11 +---------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/checker.c b/src/checker.c index 12915197a..6b2bac628 100644 --- a/src/checker.c +++ b/src/checker.c @@ -1488,6 +1488,19 @@ void check_collect_entities(Checker *c, AstNodeArray nodes, bool is_file_scope) continue; } + if (fl->cond != NULL) { + Operand operand = {Addressing_Invalid}; + check_expr(c, &operand, fl->cond); + if (operand.mode != Addressing_Constant || !is_type_boolean(operand.type)) { + error_node(fl->cond, "Non-constant boolean `when` condition"); + continue; + } + if (operand.value.kind == ExactValue_Bool && + !operand.value.value_bool) { + continue; + } + } + DelayedDecl di = {c->context.scope, decl}; array_add(&c->delayed_foreign_libraries, di); case_end; @@ -1853,6 +1866,3 @@ void check_parsed_files(Checker *c) { map_scope_destroy(&file_scopes); } - - - diff --git a/src/main.c b/src/main.c index 679dfaec9..734afa50a 100644 --- a/src/main.c +++ b/src/main.c @@ -375,9 +375,8 @@ int main(int argc, char **argv) { char lib_str_buf[1024] = {0}; for_array(i, ir_gen.module.foreign_library_paths) { String lib = ir_gen.module.foreign_library_paths.e[i]; - // gb_printf_err("Linking lib: %.*s\n", LIT(lib)); isize len = gb_snprintf(lib_str_buf, gb_size_of(lib_str_buf), - " \"%.*s\"", LIT(lib)); + " -l%.*s ", LIT(lib)); lib_str = gb_string_appendc(lib_str, lib_str_buf); } @@ -410,14 +409,6 @@ int main(int argc, char **argv) { linker = "clang"; #endif - printf("Libs: %s\n", lib_str); - - // TODO(zangent): I'm not sure what to do with lib_str. - // I'll have to look at the format that the libraries are listed to determine what to do. - lib_str = ""; - - - exit_code = system_exec_command_line_app("ld-link", true, "%s \"%.*s\".o -o \"%.*s%s\" %s " "-lc " From 37f7630a9eab8476199229e26b5b628cf73ff11d Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Tue, 7 Feb 2017 23:33:36 -0600 Subject: [PATCH 08/37] Updated README.md to reflect Linux's dependancy on clang for now. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ef99a5e12..ca363a455 100644 --- a/README.md +++ b/README.md @@ -38,6 +38,7 @@ The Odin programming language is fast, concise, readable, pragmatic and open sou * x86-64 * Build tools (ld) * LLVM installed + * Clang installed (temporary - this is calling the linker for now) ## Warnings From 7f6b83d50c0d9d7e2fefb189f1ce8a199c6bb561 Mon Sep 17 00:00:00 2001 From: Zac Pierson Date: Wed, 8 Feb 2017 11:59:54 -0600 Subject: [PATCH 09/37] Fixed gb.h - the file handle for /proc/cpuinfo is needed to read chars. --- src/gb/gb.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/gb/gb.h b/src/gb/gb.h index 9f9e850fc..1619914d6 100644 --- a/src/gb/gb.h +++ b/src/gb/gb.h @@ -5012,7 +5012,10 @@ void gb_affinity_init(gbAffinity *a) { // Parsing /proc/cpuinfo to get the number of threads per core. // NOTE(zangent): This calls the CPU's threads "cores", although the wording // is kind of weird. This should be right, though. - if (fopen("/proc/cpuinfo", "r") != NULL) { + + FILE* cpu_info = fopen("/proc/cpuinfo", "r"); + + if (cpu_info != NULL) { for (;;) { // The 'temporary char'. Everything goes into this char, // so that we can check against EOF at the end of this loop. @@ -5043,6 +5046,7 @@ void gb_affinity_init(gbAffinity *a) { } #undef AF__CHECK } + fclose(cpu_info); } if (threads == 0) { From 3445a28c4a58fb52db89aeb66ba4356582680e1d Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Thu, 9 Feb 2017 01:40:45 -0600 Subject: [PATCH 10/37] Code quality upkeep. Fixed a broken thread finding assembly instruction in gb.h --- src/build.c | 23 +++++++++++++---------- src/gb/gb.h | 7 +++++-- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/src/build.c b/src/build.c index b8cbfa7a6..24712c626 100644 --- a/src/build.c +++ b/src/build.c @@ -317,8 +317,8 @@ void init_build_context(BuildContext *bc) { // here, so I just #defined the linker flags to keep things concise. #if defined(GB_SYSTEM_WINDOWS) - #define linker_flag_x64 "/machine:x64" - #define linker_flag_x86 "/machine:x86" + #define LINK_FLAG_X64 "/machine:x64" + #define LINK_FLAG_X86 "/machine:x86" #elif defined(GB_SYSTEM_OSX) @@ -326,30 +326,33 @@ void init_build_context(BuildContext *bc) { // an architecture option. All compilation done on MacOS must be x64. GB_ASSERT(str_eq(bc->ODIN_ARCH, str_lit("amd64"))); - #define linker_flag_x64 "" - #define linker_flag_x86 "" + #define LINK_FLAG_X64 "" + #define LINK_FLAG_X86 "" #else // Linux, but also BSDs and the like. // NOTE(zangent): When clang is swapped out with ld as the linker, // the commented flags here should be used. Until then, we'll have // to use alternative build flags made for clang. /* - #define linker_flag_x64 "-m elf_x86_64" - #define linker_flag_x86 "-m elf_i386" + #define LINK_FLAG_X64 "-m elf_x86_64" + #define LINK_FLAG_X86 "-m elf_i386" */ - #define linker_flag_x64 "-arch x86-64" - #define linker_flag_x86 "-arch x86" + #define LINK_FLAG_X64 "-arch x86-64" + #define LINK_FLAG_X86 "-arch x86" #endif if (str_eq(bc->ODIN_ARCH, str_lit("amd64"))) { bc->word_size = 8; bc->max_align = 16; bc->llc_flags = str_lit("-march=x86-64 "); - bc->link_flags = str_lit(linker_flag_x64 " "); + bc->link_flags = str_lit(LINK_FLAG_X64 " "); } else if (str_eq(bc->ODIN_ARCH, str_lit("x86"))) { bc->word_size = 4; bc->max_align = 8; bc->llc_flags = str_lit("-march=x86 "); - bc->link_flags = str_lit(linker_flag_x86 " "); + bc->link_flags = str_lit(LINK_FLAG_X86 " "); } + + #undef LINK_FLAG_X64 + #undef LINK_FLAG_X86 } diff --git a/src/gb/gb.h b/src/gb/gb.h index 1619914d6..0838f52aa 100644 --- a/src/gb/gb.h +++ b/src/gb/gb.h @@ -3630,7 +3630,10 @@ gb_inline void *gb_memcopy(void *dest, void const *source, isize n) { __movsb(cast(u8 *)dest, cast(u8 *)source, n); #elif defined(GB_SYSTEM_OSX) || defined(GB_SYSTEM_UNIX) // NOTE(zangent): I assume there's a reason this isn't being used elsewhere, - // but I don't see it and I can't seem to get this working any other way. + // but casting pointers as arguments to an __asm__ call is considered an + // error on MacOS and (I think) Linux + // TODO(zangent): Figure out how to refactor the asm code so it works on MacOS, + // since this is probably not the way the author intended this to work. memcpy(dest, source, n); #elif defined(GB_CPU_X86) @@ -4684,7 +4687,7 @@ gb_inline u32 gb_thread_current_id(void) { #elif defined(GB_ARCH_32_BIT) && defined(GB_CPU_X86) __asm__("mov %%gs:0x08,%0" : "=r"(thread_id)); #elif defined(GB_ARCH_64_BIT) && defined(GB_CPU_X86) - __asm__("mov %%gs:0x10,%0" : "=r"(thread_id)); + __asm__("mov %%fs:0x10,%0" : "=r"(thread_id)); #else #error Unsupported architecture for gb_thread_current_id() #endif From 3424b2badd347b76ced3f4107d98a12bb50ae49b Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Fri, 10 Feb 2017 23:33:30 -0600 Subject: [PATCH 11/37] Added ability to use -framework on MacOS --- src/main.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main.c b/src/main.c index 734afa50a..e7f656cfa 100644 --- a/src/main.c +++ b/src/main.c @@ -375,8 +375,22 @@ int main(int argc, char **argv) { char lib_str_buf[1024] = {0}; for_array(i, ir_gen.module.foreign_library_paths) { String lib = ir_gen.module.foreign_library_paths.e[i]; - isize len = gb_snprintf(lib_str_buf, gb_size_of(lib_str_buf), - " -l%.*s ", LIT(lib)); + + // NOTE(zangent): Sometimes, you have to use -framework on MacOS. + // This allows you to specify '-f' in a #foreign_system_library, + // without having to implement any new syntax specifically for MacOS. + #if defined(GB_SYSTEM_OSX) + if(lib.len > 2 && lib.text[0] == '-' && lib.text[1] == 'f') { + isize len = gb_snprintf(lib_str_buf, gb_size_of(lib_str_buf), + " -framework %.*s ", (int)(lib.len) - 2, lib.text + 2); + } else { + isize len = gb_snprintf(lib_str_buf, gb_size_of(lib_str_buf), + " -l%.*s ", LIT(lib)); + } + #else + isize len = gb_snprintf(lib_str_buf, gb_size_of(lib_str_buf), + " -l%.*s ", LIT(lib)); + #endif lib_str = gb_string_appendc(lib_str, lib_str_buf); } From 05486f9fa33020ed11a34ece5b06dac3e47336a6 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sat, 11 Feb 2017 00:30:04 -0600 Subject: [PATCH 12/37] I'm not sure what I changed here, to be honest. I've ctrl-z'd everything, but git's still complaining. --- core/math.odin | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/math.odin b/core/math.odin index 6214bf824..1de457222 100644 --- a/core/math.odin +++ b/core/math.odin @@ -46,6 +46,10 @@ bit_reverse :: proc(b: u16) -> u16 #foreign __llvm_core "llvm.bitreverse.i16"; bit_reverse :: proc(b: u32) -> u32 #foreign __llvm_core "llvm.bitreverse.i32"; bit_reverse :: proc(b: u64) -> u64 #foreign __llvm_core "llvm.bitreverse.i64"; +byte_swap :: proc(b: u16) -> u16 #foreign __llvm_core "llvm.bswap.i16"; +byte_swap :: proc(b: u32) -> u32 #foreign __llvm_core "llvm.bswap.i32"; +byte_swap :: proc(b: u64) -> u64 #foreign __llvm_core "llvm.bswap.i64"; + fmuladd :: proc(a, b, c: f32) -> f32 #foreign __llvm_core "llvm.fmuladd.f32"; fmuladd :: proc(a, b, c: f64) -> f64 #foreign __llvm_core "llvm.fmuladd.f64"; @@ -367,6 +371,3 @@ F64_MIN_10_EXP :: -307; // min decimal exponent F64_MIN_EXP :: -1021; // min binary exponent F64_RADIX :: 2; // exponent radix F64_ROUNDS :: 1; // addition rounding: near - - - From afac95e092585c27650c1e53605c2b5401995bd3 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sat, 11 Feb 2017 00:33:12 -0600 Subject: [PATCH 13/37] Oh, I left math.odin open when I merged gingerBill's changes. Oops. Updated to his version. --- core/math.odin | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/math.odin b/core/math.odin index 1de457222..61a33bdeb 100644 --- a/core/math.odin +++ b/core/math.odin @@ -46,10 +46,6 @@ bit_reverse :: proc(b: u16) -> u16 #foreign __llvm_core "llvm.bitreverse.i16"; bit_reverse :: proc(b: u32) -> u32 #foreign __llvm_core "llvm.bitreverse.i32"; bit_reverse :: proc(b: u64) -> u64 #foreign __llvm_core "llvm.bitreverse.i64"; -byte_swap :: proc(b: u16) -> u16 #foreign __llvm_core "llvm.bswap.i16"; -byte_swap :: proc(b: u32) -> u32 #foreign __llvm_core "llvm.bswap.i32"; -byte_swap :: proc(b: u64) -> u64 #foreign __llvm_core "llvm.bswap.i64"; - fmuladd :: proc(a, b, c: f32) -> f32 #foreign __llvm_core "llvm.fmuladd.f32"; fmuladd :: proc(a, b, c: f64) -> f64 #foreign __llvm_core "llvm.fmuladd.f64"; From 99c663d9f309e694575151e655967f621150ec22 Mon Sep 17 00:00:00 2001 From: Zac Pierson Date: Sat, 11 Feb 2017 01:10:03 -0600 Subject: [PATCH 14/37] Questioning whether MacOS libraries should be .dylib or .so --- src/main.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.c b/src/main.c index e7f656cfa..ba05144f7 100644 --- a/src/main.c +++ b/src/main.c @@ -401,6 +401,7 @@ int main(int argc, char **argv) { char *linker; if (build_context.is_dll) { // Shared libraries are .dylib on MacOS and .so on Linux. + // TODO(zangent): Is that statement entirely truthful? #if defined(GB_SYSTEM_OSX) output_ext = ".dylib"; #else From 754b3681403c1e3aab719c2d08fd66d60f718e43 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sat, 11 Feb 2017 15:09:53 -0600 Subject: [PATCH 15/37] Added dynamic library loading to Linux and MacOS's standard libraries. --- core/os_linux.odin | 34 ++++++++++++++++++-- core/os_x.odin | 72 +++++++++++++++++++++++-------------------- core/sys/windows.odin | 1 - 3 files changed, 71 insertions(+), 36 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index 96388ed01..5c3cc8cef 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -20,6 +20,13 @@ O_SYNC :: 0x01000; O_ASYNC :: 0x02000; O_CLOEXEC :: 0x80000; +// NOTE(zangent): These are OS specific! +// Do not mix these up! +RTLD_LAZY :: 0x001; +RTLD_NOW :: 0x002; +RTLD_BINDING_MASK :: 0x3; +RTLD_GLOBAL :: 0x100; + // ERROR_NONE: Errno : 0; // ERROR_FILE_NOT_FOUND: Errno : 2; // ERROR_PATH_NOT_FOUND: Errno : 3; @@ -61,6 +68,11 @@ unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr #foreig unix_exit :: proc(status: int) #foreign libc "exit"; +unix_dlopen :: proc(filename: ^u8, flags: int) -> rawptr #foreign dl "dlopen"; +unix_dlsym :: proc(handle: rawptr, symbol: ^u8) -> (proc() #cc_c) #foreign dl "dlsym"; +unix_dlclose :: proc(handle: rawptr) -> int #foreign dl "dlclose"; +unix_dlerror :: proc() -> ^u8 #foreign dl "dlerror"; + @@ -227,5 +239,23 @@ current_thread_id :: proc() -> int { return 0; } - - +dlopen :: proc(filename: string, flags: int) -> rawptr #inline { + return unix_dlopen(filename.data, flags); +} +dlsym :: proc(handle: rawptr, symbol: string) -> (proc() #cc_c) #inline { + assert(handle != nil); + return unix_dlsym(handle, symbol.data); +} +dlclose :: proc(handle: rawptr) -> bool #inline { + assert(handle != nil); + return unix_dlclose(handle) == 0; +} +dlerror :: proc() -> string { + // TODO(zangent): Should this be split out into a from_c_string()? + c_str := unix_dlerror(); + len := 0; + for s := c_str; s^ != 0; s += 1 { + len += 1; + } + return cast(string)slice_ptr(c_str, len); +} diff --git a/core/os_x.odin b/core/os_x.odin index 7627adece..d4b41e1e2 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -20,33 +20,19 @@ O_SYNC :: 0x01000; O_ASYNC :: 0x02000; O_CLOEXEC :: 0x80000; -// ERROR_NONE: Errno : 0; -// ERROR_FILE_NOT_FOUND: Errno : 2; -// ERROR_PATH_NOT_FOUND: Errno : 3; -// ERROR_ACCESS_DENIED: Errno : 5; -// ERROR_NO_MORE_FILES: Errno : 18; -// ERROR_HANDLE_EOF: Errno : 38; -// ERROR_NETNAME_DELETED: Errno : 64; -// ERROR_FILE_EXISTS: Errno : 80; -// ERROR_BROKEN_PIPE: Errno : 109; -// ERROR_BUFFER_OVERFLOW: Errno : 111; -// ERROR_INSUFFICIENT_BUFFER: Errno : 122; -// ERROR_MOD_NOT_FOUND: Errno : 126; -// ERROR_PROC_NOT_FOUND: Errno : 127; -// ERROR_DIR_NOT_EMPTY: Errno : 145; -// ERROR_ALREADY_EXISTS: Errno : 183; -// ERROR_ENVVAR_NOT_FOUND: Errno : 203; -// ERROR_MORE_DATA: Errno : 234; -// ERROR_OPERATION_ABORTED: Errno : 995; -// ERROR_IO_PENDING: Errno : 997; -// ERROR_NOT_FOUND: Errno : 1168; -// ERROR_PRIVILEGE_NOT_HELD: Errno : 1314; -// WSAEACCES: Errno : 10013; -// WSAECONNRESET: Errno : 10054; +// NOTE(zangent): These are OS specific! +// Do not mix these up! +RTLD_LAZY :: 0x1; +RTLD_NOW :: 0x2; +RTLD_LOCAL :: 0x4; +RTLD_GLOBAL:: 0x8; +RTLD_NODELETE :: 0x80; +RTLD_NOLOAD :: 0x10; +RTLD_FIRST :: 0x100; -// Windows reserves errors >= 1<<29 for application use -// ERROR_FILE_IS_PIPE: Errno : 1<<29 + 0; + +#foreign_system_library dl "dl"; #foreign_system_library libc "c"; unix_open :: proc(path: ^u8, mode: int, perm: u32) -> Handle #foreign libc "open"; @@ -61,8 +47,10 @@ unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr #foreig unix_exit :: proc(status: int) #foreign libc "exit"; - - +unix_dlopen :: proc(filename: ^u8, flags: int) -> rawptr #foreign dl "dlopen"; +unix_dlsym :: proc(handle: rawptr, symbol: ^u8) -> (proc() #cc_c) #foreign dl "dlsym"; +unix_dlclose :: proc(handle: rawptr) -> int #foreign dl "dlclose"; +unix_dlerror :: proc() -> ^u8 #foreign dl "dlerror"; open :: proc(path: string, mode: int, perm: u32) -> (Handle, Errno) { return unix_open(path.data, mode, perm), 0; @@ -204,19 +192,19 @@ read_entire_file :: proc(name: string) -> ([]byte, bool) { */ -heap_alloc :: proc(size: int) -> rawptr { +heap_alloc :: proc(size: int) -> rawptr #inline { assert(size > 0); return unix_malloc(size); } -heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr { +heap_resize :: proc(ptr: rawptr, new_size: int) -> rawptr #inline { return unix_realloc(ptr, new_size); } -heap_free :: proc(ptr: rawptr) { +heap_free :: proc(ptr: rawptr) #inline { unix_free(ptr); } -exit :: proc(code: int) { +exit :: proc(code: int) #inline { unix_exit(code); } @@ -226,5 +214,23 @@ current_thread_id :: proc() -> int { return 0; } - - +dlopen :: proc(filename: string, flags: int) -> rawptr #inline { + return unix_dlopen(filename.data, flags); +} +dlsym :: proc(handle: rawptr, symbol: string) -> (proc() #cc_c) #inline { + assert(handle != nil); + return unix_dlsym(handle, symbol.data); +} +dlclose :: proc(handle: rawptr) -> bool #inline { + assert(handle != nil); + return unix_dlclose(handle) == 0; +} +dlerror :: proc() -> string { + // TODO(zangent): Should this be split out into a from_c_string()? + c_str := unix_dlerror(); + len := 0; + for s := c_str; s^ != 0; s += 1 { + len += 1; + } + return cast(string)slice_ptr(c_str, len); +} diff --git a/core/sys/windows.odin b/core/sys/windows.odin index 4c32cbd3e..06f84cdc9 100644 --- a/core/sys/windows.odin +++ b/core/sys/windows.odin @@ -563,4 +563,3 @@ Key_Code :: enum i32 { PA1 = 0xFD, OEM_CLEAR = 0xFE, } - From fc1a006de1bcc2bf22da88924b1646322c26e543 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sat, 11 Feb 2017 17:24:47 -0600 Subject: [PATCH 16/37] Added support for reading files on MacOS and Linux --- core/os_linux.odin | 249 +++++++++++++++++++-------------------------- core/os_x.odin | 245 ++++++++++++++++++++------------------------ 2 files changed, 218 insertions(+), 276 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index 5c3cc8cef..f7242cd60 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -1,9 +1,12 @@ -// #import "fmt.odin"; +#import "fmt.odin"; Handle :: i32; File_Time :: u64; Errno :: int; +// TODO(zangent): Find out how to make this work on x64 and x32. +AddressSize :: i64; + // INVALID_HANDLE: Handle : -1; @@ -19,6 +22,12 @@ O_APPEND :: 0x00400; O_SYNC :: 0x01000; O_ASYNC :: 0x02000; O_CLOEXEC :: 0x80000; +SEEK_SET :: 0; +SEEK_CUR :: 1; +SEEK_END :: 2; +SEEK_DATA :: 3; +SEEK_HOLE :: 4; +SEEK_MAX :: SEEK_HOLE; // NOTE(zangent): These are OS specific! // Do not mix these up! @@ -27,96 +36,87 @@ RTLD_NOW :: 0x002; RTLD_BINDING_MASK :: 0x3; RTLD_GLOBAL :: 0x100; -// ERROR_NONE: Errno : 0; -// ERROR_FILE_NOT_FOUND: Errno : 2; -// ERROR_PATH_NOT_FOUND: Errno : 3; -// ERROR_ACCESS_DENIED: Errno : 5; -// ERROR_NO_MORE_FILES: Errno : 18; -// ERROR_HANDLE_EOF: Errno : 38; -// ERROR_NETNAME_DELETED: Errno : 64; -// ERROR_FILE_EXISTS: Errno : 80; -// ERROR_BROKEN_PIPE: Errno : 109; -// ERROR_BUFFER_OVERFLOW: Errno : 111; -// ERROR_INSUFFICIENT_BUFFER: Errno : 122; -// ERROR_MOD_NOT_FOUND: Errno : 126; -// ERROR_PROC_NOT_FOUND: Errno : 127; -// ERROR_DIR_NOT_EMPTY: Errno : 145; -// ERROR_ALREADY_EXISTS: Errno : 183; -// ERROR_ENVVAR_NOT_FOUND: Errno : 203; -// ERROR_MORE_DATA: Errno : 234; -// ERROR_OPERATION_ABORTED: Errno : 995; -// ERROR_IO_PENDING: Errno : 997; -// ERROR_NOT_FOUND: Errno : 1168; -// ERROR_PRIVILEGE_NOT_HELD: Errno : 1314; -// WSAEACCES: Errno : 10013; -// WSAECONNRESET: Errno : 10054; - -// Windows reserves errors >= 1<<29 for application use -// ERROR_FILE_IS_PIPE: Errno : 1<<29 + 0; - +#foreign_system_library dl "dl"; #foreign_system_library libc "c"; -unix_open :: proc(path: ^u8, mode: int, perm: u32) -> Handle #foreign libc "open"; -unix_close :: proc(handle: Handle) #foreign libc "close"; -unix_read :: proc(handle: Handle, buffer: rawptr, count: int) -> int #foreign libc "read"; -unix_write :: proc(handle: Handle, buffer: rawptr, count: int) -> int #foreign libc "write"; -//unix_gettid :: proc() -> u64 #foreign libc "gettid"; +unix_open :: proc(path: ^u8, mode: int) -> Handle #foreign libc "open"; +unix_close :: proc(handle: Handle) #foreign libc "close"; +unix_read :: proc(handle: Handle, buffer: rawptr, count: int) -> AddressSize #foreign libc "read"; +unix_write :: proc(handle: Handle, buffer: rawptr, count: int) -> AddressSize #foreign libc "write"; +unix_lseek :: proc(fs: Handle, offset: AddressSize, whence: int) -> AddressSize #foreign libc "lseek"; +unix_gettid :: proc() -> u64 #foreign libc "gettid"; -unix_malloc :: proc(size: int) -> rawptr #foreign libc "malloc"; -unix_free :: proc(ptr: rawptr) #foreign libc "free"; -unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr #foreign libc "realloc"; +unix_malloc :: proc(size: int) -> rawptr #foreign libc "malloc"; +unix_free :: proc(ptr: rawptr) #foreign libc "free"; +unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr #foreign libc "realloc"; -unix_exit :: proc(status: int) #foreign libc "exit"; - -unix_dlopen :: proc(filename: ^u8, flags: int) -> rawptr #foreign dl "dlopen"; -unix_dlsym :: proc(handle: rawptr, symbol: ^u8) -> (proc() #cc_c) #foreign dl "dlsym"; -unix_dlclose :: proc(handle: rawptr) -> int #foreign dl "dlclose"; -unix_dlerror :: proc() -> ^u8 #foreign dl "dlerror"; +unix_exit :: proc(status: int) #foreign libc "exit"; +unix_dlopen :: proc(filename: ^u8, flags: int) -> rawptr #foreign dl "dlopen"; +unix_dlsym :: proc(handle: rawptr, symbol: ^u8) -> (proc() #cc_c) #foreign dl "dlsym"; +unix_dlclose :: proc(handle: rawptr) -> int #foreign dl "dlclose"; +unix_dlerror :: proc() -> ^u8 #foreign dl "dlerror"; +to_c_str :: proc(str: string) -> ^u8 { + cstr := new_slice(byte, str.count+1); + copy(cstr, cast([]byte)str); + cstr[str.count] = 0; + return cstr.data; +} +from_c_str :: proc(c_str: ^u8) -> string { + len := 0; + for s := c_str; s^ != 0; s += 1 { + len += 1; + } + return cast(string)slice_ptr(c_str, len); +} +open :: proc(path: string, mode: int) -> (Handle, Errno) { + + handle := unix_open(to_c_str(path), mode); + if(handle == -1) { + return 0, 1; + } + return handle, 0; +} +// NOTE(zangent): This is here for compatability reasons. Should this be here? open :: proc(path: string, mode: int, perm: u32) -> (Handle, Errno) { - return unix_open(path.data, mode, perm), 0; + return open(path, mode); } close :: proc(fd: Handle) { unix_close(fd); } -write :: proc(fd: Handle, data: []byte) -> (int, Errno) { - return unix_write(fd, data.data, data.count), 0; +write :: proc(fd: Handle, data: []byte) -> (AddressSize, Errno) { + assert(fd != -1); + + bytes_written := unix_write(fd, data.data, data.count); + if(bytes_written == -1) { + return 0, 1; + } + return bytes_written, 0; } -read :: proc(fd: Handle, data: []byte) -> (int, Errno) { - return unix_read(fd, data.data, data.count), 0; +read :: proc(fd: Handle, data: []byte) -> (AddressSize, Errno) { + assert(fd != -1); + + bytes_read := unix_read(fd, data.data, data.count); + if(bytes_read == -1) { + return 0, 1; + } + return bytes_read, 0; } +seek :: proc(fd: Handle, offset: AddressSize, whence: int) -> (AddressSize, Errno) { + assert(fd != -1); -seek :: proc(fd: Handle, offset: i64, whence: int) -> (i64, Errno) { - /* - using win32; - w: u32; - match whence { - case 0: w = FILE_BEGIN; - case 1: w = FILE_CURRENT; - case 2: w = FILE_END; + final_offset := unix_lseek(fd, offset, whence); + if(final_offset == -1) { + return 0, 1; } - hi := cast(i32)(offset>>32); - lo := cast(i32)(offset); - ft := GetFileType(cast(HANDLE)fd); - if ft == FILE_TYPE_PIPE { - return 0, ERROR_FILE_IS_PIPE; - } - dw_ptr := SetFilePointer(cast(HANDLE)fd, lo, ^hi, w); - if dw_ptr == INVALID_SET_FILE_POINTER { - err := GetLastError(); - return 0, cast(Errno)err; - } - return cast(i64)hi<<32 + cast(i64)dw_ptr, ERROR_NONE; - - */ - return 0, 0; + return final_offset, 0; } @@ -125,97 +125,56 @@ stdin: Handle = 0; // get_std_handle(win32.STD_INPUT_HANDLE); stdout: Handle = 1; // get_std_handle(win32.STD_OUTPUT_HANDLE); stderr: Handle = 2; // get_std_handle(win32.STD_ERROR_HANDLE); - -/* -get_std_handle :: proc(h: int) -> Handle { - fd := win32.GetStdHandle(cast(i32)h); - win32.SetHandleInformation(fd, win32.HANDLE_FLAG_INHERIT, 0); - return cast(Handle)fd; -} - - - - - - -last_write_time :: proc(fd: Handle) -> File_Time { - file_info: win32.BY_HANDLE_FILE_INFORMATION; - win32.GetFileInformationByHandle(cast(win32.HANDLE)fd, ^file_info); - lo := cast(File_Time)file_info.last_write_time.lo; - hi := cast(File_Time)file_info.last_write_time.hi; - return lo | hi << 32; -} - -last_write_time_by_name :: proc(name: string) -> File_Time { - last_write_time: win32.FILETIME; - data: win32.FILE_ATTRIBUTE_DATA; - buf: [1024]byte; - - assert(buf.count > name.count); - - copy(buf[:], cast([]byte)name); - - if win32.GetFileAttributesExA(^buf[0], win32.GetFileExInfoStandard, ^data) != 0 { - last_write_time = data.last_write_time; - } - - l := cast(File_Time)last_write_time.lo; - h := cast(File_Time)last_write_time.hi; - return l | h << 32; -} - - - - +/* TODO(zangent): Implement these! +last_write_time :: proc(fd: Handle) -> File_Time {} +last_write_time_by_name :: proc(name: string) -> File_Time {} +*/ read_entire_file :: proc(name: string) -> ([]byte, bool) { - buf: [300]byte; - copy(buf[:], cast([]byte)name); - fd, err := open(name, O_RDONLY, 0); - if err != ERROR_NONE { + handle, err := open(name, O_RDONLY); + if(err != 0) { + fmt.println("Failed to open file."); return nil, false; } - defer close(fd); + defer(close(handle)); - length: i64; - file_size_ok := win32.GetFileSizeEx(cast(win32.HANDLE)fd, ^length) != 0; - if !file_size_ok { + // We have a file! + + size: AddressSize; + size, err = seek(handle, 0, SEEK_END); + if(err != 0) { + fmt.println("Failed to seek to end of file."); return nil, false; } - data := new_slice(u8, length); + _, err = seek(handle, 0, SEEK_SET); + if(err != 0) { + fmt.println("Failed to seek to beginning of file."); + return nil, false; + } + + // We have a file size! + + data := new_slice(u8, size); if data.data == nil { + fmt.println("Failed to allocate file buffer."); return nil, false; } - single_read_length: i32; - total_read: i64; - - for total_read < length { - remaining := length - total_read; - to_read: u32; - MAX :: 1<<32-1; - if remaining <= MAX { - to_read = cast(u32)remaining; - } else { - to_read = MAX; - } - - win32.ReadFile(cast(win32.HANDLE)fd, ^data[total_read], to_read, ^single_read_length, nil); - if single_read_length <= 0 { - free(data); - return nil, false; - } - - total_read += cast(i64)single_read_length; - } + read(handle, data); return data, true; } +read_entire_file_to_string :: proc(name: string) -> (string, bool) { - -*/ + contents, success := read_entire_file(name); + if(!success) { + fmt.println("Failed to seek to end of file."); + return "", false; + } + return from_c_str(^contents[0]), true; +} heap_alloc :: proc(size: int) -> rawptr { assert(size > 0); @@ -240,10 +199,12 @@ current_thread_id :: proc() -> int { } dlopen :: proc(filename: string, flags: int) -> rawptr #inline { + filename += "\x00"; return unix_dlopen(filename.data, flags); } dlsym :: proc(handle: rawptr, symbol: string) -> (proc() #cc_c) #inline { assert(handle != nil); + symbol += "\x00"; return unix_dlsym(handle, symbol.data); } dlclose :: proc(handle: rawptr) -> bool #inline { diff --git a/core/os_x.odin b/core/os_x.odin index d4b41e1e2..851bcefe4 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -4,6 +4,9 @@ Handle :: i32; File_Time :: u64; Errno :: int; +// TODO(zangent): Find out how to make this work on x64 and x32. +AddressSize :: i64; + // INVALID_HANDLE: Handle : -1; @@ -19,79 +22,104 @@ O_APPEND :: 0x00400; O_SYNC :: 0x01000; O_ASYNC :: 0x02000; O_CLOEXEC :: 0x80000; +SEEK_SET :: 0; +SEEK_CUR :: 1; +SEEK_END :: 2; +SEEK_DATA :: 3; +SEEK_HOLE :: 4; +SEEK_MAX :: SEEK_HOLE; // NOTE(zangent): These are OS specific! // Do not mix these up! -RTLD_LAZY :: 0x1; -RTLD_NOW :: 0x2; -RTLD_LOCAL :: 0x4; -RTLD_GLOBAL:: 0x8; +RTLD_LAZY :: 0x1; +RTLD_NOW :: 0x2; +RTLD_LOCAL :: 0x4; +RTLD_GLOBAL :: 0x8; RTLD_NODELETE :: 0x80; -RTLD_NOLOAD :: 0x10; -RTLD_FIRST :: 0x100; - - +RTLD_NOLOAD :: 0x10; +RTLD_FIRST :: 0x100; #foreign_system_library dl "dl"; #foreign_system_library libc "c"; -unix_open :: proc(path: ^u8, mode: int, perm: u32) -> Handle #foreign libc "open"; -unix_close :: proc(handle: Handle) #foreign libc "close"; -unix_read :: proc(handle: Handle, buffer: rawptr, count: int) -> int #foreign libc "read"; -unix_write :: proc(handle: Handle, buffer: rawptr, count: int) -> int #foreign libc "write"; -unix_gettid :: proc() -> u64 #foreign libc "gettid"; +unix_open :: proc(path: ^u8, mode: int) -> Handle #foreign libc "open"; +unix_close :: proc(handle: Handle) #foreign libc "close"; +unix_read :: proc(handle: Handle, buffer: rawptr, count: int) -> AddressSize #foreign libc "read"; +unix_write :: proc(handle: Handle, buffer: rawptr, count: int) -> AddressSize #foreign libc "write"; +unix_lseek :: proc(fs: Handle, offset: AddressSize, whence: int) -> AddressSize #foreign libc "lseek"; +unix_gettid :: proc() -> u64 #foreign libc "gettid"; -unix_malloc :: proc(size: int) -> rawptr #foreign libc "malloc"; -unix_free :: proc(ptr: rawptr) #foreign libc "free"; -unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr #foreign libc "realloc"; +unix_malloc :: proc(size: int) -> rawptr #foreign libc "malloc"; +unix_free :: proc(ptr: rawptr) #foreign libc "free"; +unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr #foreign libc "realloc"; -unix_exit :: proc(status: int) #foreign libc "exit"; +unix_exit :: proc(status: int) #foreign libc "exit"; -unix_dlopen :: proc(filename: ^u8, flags: int) -> rawptr #foreign dl "dlopen"; -unix_dlsym :: proc(handle: rawptr, symbol: ^u8) -> (proc() #cc_c) #foreign dl "dlsym"; -unix_dlclose :: proc(handle: rawptr) -> int #foreign dl "dlclose"; -unix_dlerror :: proc() -> ^u8 #foreign dl "dlerror"; +unix_dlopen :: proc(filename: ^u8, flags: int) -> rawptr #foreign dl "dlopen"; +unix_dlsym :: proc(handle: rawptr, symbol: ^u8) -> (proc() #cc_c) #foreign dl "dlsym"; +unix_dlclose :: proc(handle: rawptr) -> int #foreign dl "dlclose"; +unix_dlerror :: proc() -> ^u8 #foreign dl "dlerror"; +to_c_str :: proc(str: string) -> ^u8 { + cstr := new_slice(byte, str.count+1); + copy(cstr, cast([]byte)str); + cstr[str.count] = 0; + return cstr.data; +} + +from_c_str :: proc(c_str: ^u8) -> string { + len := 0; + for s := c_str; s^ != 0; s += 1 { + len += 1; + } + return cast(string)slice_ptr(c_str, len); +} + +open :: proc(path: string, mode: int) -> (Handle, Errno) { + + handle := unix_open(to_c_str(path), mode); + if(handle == -1) { + return 0, 1; + } + return handle, 0; +} +// NOTE(zangent): This is here for compatability reasons. Should this be here? open :: proc(path: string, mode: int, perm: u32) -> (Handle, Errno) { - return unix_open(path.data, mode, perm), 0; + return open(path, mode); } close :: proc(fd: Handle) { unix_close(fd); } -write :: proc(fd: Handle, data: []byte) -> (int, Errno) { - return unix_write(fd, data.data, data.count), 0; +write :: proc(fd: Handle, data: []byte) -> (AddressSize, Errno) { + assert(fd != -1); + + bytes_written := unix_write(fd, data.data, data.count); + if(bytes_written == -1) { + return 0, 1; + } + return bytes_written, 0; } -read :: proc(fd: Handle, data: []byte) -> (int, Errno) { - return unix_read(fd, data.data, data.count), 0; +read :: proc(fd: Handle, data: []byte) -> (AddressSize, Errno) { + assert(fd != -1); + + bytes_read := unix_read(fd, data.data, data.count); + if(bytes_read == -1) { + return 0, 1; + } + return bytes_read, 0; } -seek :: proc(fd: Handle, offset: i64, whence: int) -> (i64, Errno) { - /* - using win32; - w: u32; - match whence { - case 0: w = FILE_BEGIN; - case 1: w = FILE_CURRENT; - case 2: w = FILE_END; - } - hi := cast(i32)(offset>>32); - lo := cast(i32)(offset); - ft := GetFileType(cast(HANDLE)fd); - if ft == FILE_TYPE_PIPE { - return 0, ERROR_FILE_IS_PIPE; - } - dw_ptr := SetFilePointer(cast(HANDLE)fd, lo, ^hi, w); - if dw_ptr == INVALID_SET_FILE_POINTER { - err := GetLastError(); - return 0, cast(Errno)err; - } - return cast(i64)hi<<32 + cast(i64)dw_ptr, ERROR_NONE; +seek :: proc(fd: Handle, offset: AddressSize, whence: int) -> (AddressSize, Errno) { + assert(fd != -1); - */ - return 0, 0; + final_offset := unix_lseek(fd, offset, whence); + if(final_offset == -1) { + return 0, 1; + } + return final_offset, 0; } @@ -100,97 +128,56 @@ stdin: Handle = 0; // get_std_handle(win32.STD_INPUT_HANDLE); stdout: Handle = 1; // get_std_handle(win32.STD_OUTPUT_HANDLE); stderr: Handle = 2; // get_std_handle(win32.STD_ERROR_HANDLE); - -/* -get_std_handle :: proc(h: int) -> Handle { - fd := win32.GetStdHandle(cast(i32)h); - win32.SetHandleInformation(fd, win32.HANDLE_FLAG_INHERIT, 0); - return cast(Handle)fd; -} - - - - - - -last_write_time :: proc(fd: Handle) -> File_Time { - file_info: win32.BY_HANDLE_FILE_INFORMATION; - win32.GetFileInformationByHandle(cast(win32.HANDLE)fd, ^file_info); - lo := cast(File_Time)file_info.last_write_time.lo; - hi := cast(File_Time)file_info.last_write_time.hi; - return lo | hi << 32; -} - -last_write_time_by_name :: proc(name: string) -> File_Time { - last_write_time: win32.FILETIME; - data: win32.FILE_ATTRIBUTE_DATA; - buf: [1024]byte; - - assert(buf.count > name.count); - - copy(buf[:], cast([]byte)name); - - if win32.GetFileAttributesExA(^buf[0], win32.GetFileExInfoStandard, ^data) != 0 { - last_write_time = data.last_write_time; - } - - l := cast(File_Time)last_write_time.lo; - h := cast(File_Time)last_write_time.hi; - return l | h << 32; -} - - - - +/* TODO(zangent): Implement these! +last_write_time :: proc(fd: Handle) -> File_Time {} +last_write_time_by_name :: proc(name: string) -> File_Time {} +*/ read_entire_file :: proc(name: string) -> ([]byte, bool) { - buf: [300]byte; - copy(buf[:], cast([]byte)name); - fd, err := open(name, O_RDONLY, 0); - if err != ERROR_NONE { + handle, err := open(name, O_RDONLY); + if(err != 0) { + fmt.println("Failed to open file."); return nil, false; } - defer close(fd); + defer(close(handle)); - length: i64; - file_size_ok := win32.GetFileSizeEx(cast(win32.HANDLE)fd, ^length) != 0; - if !file_size_ok { + // We have a file! + + size: AddressSize; + size, err = seek(handle, 0, SEEK_END); + if(err != 0) { + fmt.println("Failed to seek to end of file."); return nil, false; } - data := new_slice(u8, length); + _, err = seek(handle, 0, SEEK_SET); + if(err != 0) { + fmt.println("Failed to seek to beginning of file."); + return nil, false; + } + + // We have a file size! + + data := new_slice(u8, size); if data.data == nil { + fmt.println("Failed to allocate file buffer."); return nil, false; } - single_read_length: i32; - total_read: i64; - - for total_read < length { - remaining := length - total_read; - to_read: u32; - MAX :: 1<<32-1; - if remaining <= MAX { - to_read = cast(u32)remaining; - } else { - to_read = MAX; - } - - win32.ReadFile(cast(win32.HANDLE)fd, ^data[total_read], to_read, ^single_read_length, nil); - if single_read_length <= 0 { - free(data); - return nil, false; - } - - total_read += cast(i64)single_read_length; - } + read(handle, data); return data, true; } +read_entire_file_to_string :: proc(name: string) -> (string, bool) { - -*/ + contents, success := read_entire_file(name); + if(!success) { + fmt.println("Failed to seek to end of file."); + return "", false; + } + return from_c_str(^contents[0]), true; +} heap_alloc :: proc(size: int) -> rawptr #inline { assert(size > 0); @@ -215,22 +202,16 @@ current_thread_id :: proc() -> int { } dlopen :: proc(filename: string, flags: int) -> rawptr #inline { - return unix_dlopen(filename.data, flags); + return unix_dlopen(to_c_str(filename), flags); } dlsym :: proc(handle: rawptr, symbol: string) -> (proc() #cc_c) #inline { assert(handle != nil); - return unix_dlsym(handle, symbol.data); + return unix_dlsym(handle, to_c_str(symbol)); } dlclose :: proc(handle: rawptr) -> bool #inline { assert(handle != nil); return unix_dlclose(handle) == 0; } dlerror :: proc() -> string { - // TODO(zangent): Should this be split out into a from_c_string()? - c_str := unix_dlerror(); - len := 0; - for s := c_str; s^ != 0; s += 1 { - len += 1; - } - return cast(string)slice_ptr(c_str, len); + return from_c_str(unix_dlerror()); } From 3f3122bccc5f30af7dd43df2637fb01548729b0f Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sat, 11 Feb 2017 18:54:54 -0600 Subject: [PATCH 17/37] Temporary fix for an Odin bug. --- core/os_linux.odin | 6 +++--- core/os_x.odin | 12 +++++++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index f7242cd60..9192519b1 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -71,8 +71,8 @@ from_c_str :: proc(c_str: ^u8) -> string { } return cast(string)slice_ptr(c_str, len); } - -open :: proc(path: string, mode: int) -> (Handle, Errno) { +// TODO(zangent): Change this to just `open` when Bill fixes overloading. +open_simple :: proc(path: string, mode: int) -> (Handle, Errno) { handle := unix_open(to_c_str(path), mode); if(handle == -1) { @@ -132,7 +132,7 @@ last_write_time_by_name :: proc(name: string) -> File_Time {} read_entire_file :: proc(name: string) -> ([]byte, bool) { - handle, err := open(name, O_RDONLY); + handle, err := open_simple(name, O_RDONLY); if(err != 0) { fmt.println("Failed to open file."); return nil, false; diff --git a/core/os_x.odin b/core/os_x.odin index 851bcefe4..6cc31e584 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -74,8 +74,8 @@ from_c_str :: proc(c_str: ^u8) -> string { } return cast(string)slice_ptr(c_str, len); } - -open :: proc(path: string, mode: int) -> (Handle, Errno) { +// TODO(zangent): Change this to just `open` when Bill fixes overloading. +open_simple :: proc(path: string, mode: int) -> (Handle, Errno) { handle := unix_open(to_c_str(path), mode); if(handle == -1) { @@ -83,9 +83,10 @@ open :: proc(path: string, mode: int) -> (Handle, Errno) { } return handle, 0; } + // NOTE(zangent): This is here for compatability reasons. Should this be here? open :: proc(path: string, mode: int, perm: u32) -> (Handle, Errno) { - return open(path, mode); + return open_simple(path, mode); } close :: proc(fd: Handle) { @@ -132,10 +133,10 @@ stderr: Handle = 2; // get_std_handle(win32.STD_ERROR_HANDLE); last_write_time :: proc(fd: Handle) -> File_Time {} last_write_time_by_name :: proc(name: string) -> File_Time {} */ - +/* read_entire_file :: proc(name: string) -> ([]byte, bool) { - handle, err := open(name, O_RDONLY); + handle, err := open_simple(name, O_RDONLY); if(err != 0) { fmt.println("Failed to open file."); return nil, false; @@ -178,6 +179,7 @@ read_entire_file_to_string :: proc(name: string) -> (string, bool) { } return from_c_str(^contents[0]), true; } +*/ heap_alloc :: proc(size: int) -> rawptr #inline { assert(size > 0); From 7829421085d607da4fab985893f578c12796d583 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sat, 11 Feb 2017 23:52:56 -0600 Subject: [PATCH 18/37] Fixed Windows (updated gb.h) | Need to test on MacOS and Linux now! --- core/os.odin | 6 ++-- src/gb/gb.h | 78 +++++++++++++++++++++++++++------------------------- 2 files changed, 43 insertions(+), 41 deletions(-) diff --git a/core/os.odin b/core/os.odin index 5800eb457..8d9eadb75 100644 --- a/core/os.odin +++ b/core/os.odin @@ -1,3 +1,3 @@ -#include "os_windows.odin" when ODIN_OS == "windows"; -#include "os_x.odin" when ODIN_OS == "osx"; -#include "os_linux.odin" when ODIN_OS == "linux"; \ No newline at end of file +#load "os_windows.odin" when ODIN_OS == "windows"; +#load "os_x.odin" when ODIN_OS == "osx"; +#load "os_linux.odin" when ODIN_OS == "linux"; \ No newline at end of file diff --git a/src/gb/gb.h b/src/gb/gb.h index 0838f52aa..51ad0d1e4 100644 --- a/src/gb/gb.h +++ b/src/gb/gb.h @@ -1,4 +1,4 @@ -/* gb.h - v0.26d - Ginger Bill's C Helper Library - public domain +/* gb.h - v0.27 - Ginger Bill's C Helper Library - public domain - no warranty implied; use at your own risk This is a single header file with a bunch of useful stuff @@ -277,6 +277,8 @@ extern "C" { #include #include + + #if defined(GB_SYSTEM_WINDOWS) #if !defined(GB_NO_WINDOWS_H) #define NOMINMAX 1 @@ -297,6 +299,9 @@ extern "C" { #include #include #include + #ifndef _IOSC11_SOURCE + #define _IOSC11_SOURCE + #endif #include // NOTE(bill): malloc on linux #include #if !defined(GB_SYSTEM_OSX) @@ -310,18 +315,18 @@ extern "C" { #endif #if defined(GB_SYSTEM_OSX) -#include -#include -#include -#include -#include -#include -#include -#include + #include + #include + #include + #include + #include + #include + #include + #include #endif #if defined(GB_SYSTEM_UNIX) -#include + #include #endif @@ -413,21 +418,20 @@ typedef i32 Rune; // NOTE(bill): Unicode codepoint #define GB_RUNE_EOF cast(Rune)(-1) -// NOTE(bill): I think C99 and C++ `bool` is stupid for numerous reasons but there are too many -// to write in this small comment. typedef i8 b8; typedef i16 b16; typedef i32 b32; // NOTE(bill): Prefer this!!! // NOTE(bill): Get true and false #if !defined(__cplusplus) - #if (defined(_MSC_VER) && _MSC_VER <= 1800) || !defined(__STDC_VERSION__) + #if (defined(_MSC_VER) && _MSC_VER <= 1800) || (!defined(_MSC_VER) && !defined(__STDC_VERSION__)) #ifndef true #define true (0 == 0) #endif #ifndef false #define false (0 != 0) #endif + typedef b8 bool; #else #include #endif @@ -616,7 +620,7 @@ extern "C++" { // // NOTE: C++11 (and above) only! // -#if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1400) || (__cplusplus >= 201103L)) +#if !defined(GB_NO_DEFER) && defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1400) || (__cplusplus >= 201103L)) extern "C++" { // NOTE(bill): Stupid fucking templates template struct gbRemoveReference { typedef T Type; }; @@ -3628,15 +3632,7 @@ gb_inline void *gb_memcopy(void *dest, void const *source, isize n) { #if defined(_MSC_VER) // TODO(bill): Is this good enough? __movsb(cast(u8 *)dest, cast(u8 *)source, n); -#elif defined(GB_SYSTEM_OSX) || defined(GB_SYSTEM_UNIX) - // NOTE(zangent): I assume there's a reason this isn't being used elsewhere, - // but casting pointers as arguments to an __asm__ call is considered an - // error on MacOS and (I think) Linux - // TODO(zangent): Figure out how to refactor the asm code so it works on MacOS, - // since this is probably not the way the author intended this to work. - memcpy(dest, source, n); #elif defined(GB_CPU_X86) - __asm__ __volatile__("rep movsb" : "+D"(cast(u8 *)dest), "+S"(cast(u8 *)source), "+c"(n) : : "memory"); #else u8 *d = cast(u8 *)dest; @@ -4127,7 +4123,7 @@ gb_inline i64 gb_atomic64_fetch_and(gbAtomic64 volatile *a, i64 operand) { gb_inline i64 gb_atomic64_fetch_or(gbAtomic64 volatile *a, i64 operand) { #if defined(GB_ARCH_64_BIT) - return _InterlockedAnd64(cast(i64 volatile *)a, operand); + return _InterlockedOr64(cast(i64 volatile *)a, operand); #elif GB_CPU_X86 i64 expected = a->value; for (;;) { @@ -4680,8 +4676,7 @@ gb_inline u32 gb_thread_current_id(void) { #else thread_id = GetCurrentThreadId(); #endif -#elif defined(GB_SYSTEM_LINUX) - thread_id = pthread_self(); + #elif defined(GB_SYSTEM_OSX) && defined(GB_ARCH_64_BIT) thread_id = pthread_mach_thread_np(pthread_self()); #elif defined(GB_ARCH_32_BIT) && defined(GB_CPU_X86) @@ -4835,18 +4830,15 @@ GB_ALLOCATOR_PROC(gb_heap_allocator_proc) { #else // TODO(bill): *nix version that's decent case gbAllocation_Alloc: { - gbAllocationHeader *header; - isize total_size = size + alignment + gb_size_of(gbAllocationHeader); - ptr = malloc(total_size); - header = cast(gbAllocationHeader *)ptr; - ptr = gb_align_forward(header+1, alignment); - gb_allocation_header_fill(header, ptr, size); - if (flags & gbAllocatorFlag_ClearToZero) + posix_memalign(&ptr, alignment, size); + + if (flags & gbAllocatorFlag_ClearToZero) { gb_zero_size(ptr, size); + } } break; case gbAllocation_Free: { - free(gb_allocation_header(old_memory)); + free(old_memory); } break; case gbAllocation_Resize: { @@ -4943,7 +4935,7 @@ isize gb_affinity_thread_count_for_core(gbAffinity *a, isize core) { void gb_affinity_init(gbAffinity *a) { usize count, count_size = gb_size_of(count); - a->is_accurate = false; + a->is_accurate = false; a->thread_count = 1; a->core_count = 1; a->threads_per_core = 1; @@ -4974,7 +4966,6 @@ void gb_affinity_destroy(gbAffinity *a) { b32 gb_affinity_set(gbAffinity *a, isize core, isize thread_index) { isize index; thread_t thread; - GB_ASSERT(thread < a->thread_count); thread_affinity_policy_data_t info; kern_return_t result; @@ -5049,6 +5040,7 @@ void gb_affinity_init(gbAffinity *a) { } #undef AF__CHECK } + fclose(cpu_info); } @@ -5059,7 +5051,6 @@ void gb_affinity_init(gbAffinity *a) { a->threads_per_core = threads; a->thread_count = a->threads_per_core * a->core_count; - a->is_accurate = accurate; } @@ -5073,7 +5064,6 @@ b32 gb_affinity_set(gbAffinity *a, isize core, isize thread_index) { } isize gb_affinity_thread_count_for_core(gbAffinity *a, isize core) { - GB_ASSERT(0 <= core && core < a->core_count); return a->threads_per_core; } @@ -7857,7 +7847,18 @@ char *gb_path_get_full_name(gbAllocator a, char const *path) { return gb_alloc_str_len(a, buf, len+1); #else // TODO(bill): Make work on *nix, etc. - return gb_alloc_str_len(a, path, gb_strlen(path)); + char* p = realpath(path, 0); + GB_ASSERT(p && "file does not exist"); + + isize len = gb_strlen(p); + + // bill... gb_alloc_str_len refused to work for this... + char* ret = gb_alloc(a, sizeof(char) * len + 1); + gb_memmove(ret, p, len); + ret[len] = 0; + free(p); + + return ret; #endif } @@ -10471,3 +10472,4 @@ GB_COMPARE_PROC(gb_video_mode_dsc_cmp) { #endif #endif // GB_IMPLEMENTATION + From a9398bf30fb3d6b15f490816f23cfca191020c5c Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sun, 12 Feb 2017 00:21:25 -0600 Subject: [PATCH 19/37] Tested MacOS. If a commit doesn't follow in 15 minutes, Linux works too! --- src/gb/gb.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/gb/gb.h b/src/gb/gb.h index 51ad0d1e4..c8b69b3ca 100644 --- a/src/gb/gb.h +++ b/src/gb/gb.h @@ -3632,6 +3632,13 @@ gb_inline void *gb_memcopy(void *dest, void const *source, isize n) { #if defined(_MSC_VER) // TODO(bill): Is this good enough? __movsb(cast(u8 *)dest, cast(u8 *)source, n); +#elif defined(GB_SYSTEM_OSX) || defined(GB_SYSTEM_UNIX) + // NOTE(zangent): I assume there's a reason this isn't being used elsewhere, + // but casting pointers as arguments to an __asm__ call is considered an + // error on MacOS and (I think) Linux + // TODO(zangent): Figure out how to refactor the asm code so it works on MacOS, + // since this is probably not the way the author intended this to work. + memcpy(dest, source, n); #elif defined(GB_CPU_X86) __asm__ __volatile__("rep movsb" : "+D"(cast(u8 *)dest), "+S"(cast(u8 *)source), "+c"(n) : : "memory"); #else From 047f883078d9431c697f01e3884d5c9933031350 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sun, 12 Feb 2017 16:08:09 -0600 Subject: [PATCH 20/37] Updated warning removal list, and made system_exec_command_line_app in main.c return the exit code. --- build.sh | 2 +- src/main.c | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 2c6db80d5..b022e235c 100755 --- a/build.sh +++ b/build.sh @@ -2,7 +2,7 @@ release_mode=0 -warnings_to_disable="-Wno-attributes -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -Wno-switch -Wno-pointer-sign" +warnings_to_disable="-Wno-attributes -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -Wno-switch -Wno-pointer-sign -Wno-tautological-constant-out-of-range-compare -Wno-autological-compare" libraries="-pthread -ldl -lm" other_args="-x c" compiler="gcc" diff --git a/src/main.c b/src/main.c index 1f1793e2c..a8806aa4f 100644 --- a/src/main.c +++ b/src/main.c @@ -106,6 +106,8 @@ i32 system_exec_command_line_app(char *name, bool is_silent, char *fmt, ...) { // } // exit_code = status; + + return exit_code; } #endif From ebb10e55979f6ee5af297b2feb446fff967e9bb4 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sun, 12 Feb 2017 16:09:21 -0600 Subject: [PATCH 21/37] One of the warning flags was misspelled. Oops! --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index b022e235c..cda80781c 100755 --- a/build.sh +++ b/build.sh @@ -2,7 +2,7 @@ release_mode=0 -warnings_to_disable="-Wno-attributes -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -Wno-switch -Wno-pointer-sign -Wno-tautological-constant-out-of-range-compare -Wno-autological-compare" +warnings_to_disable="-Wno-attributes -Wno-implicit-function-declaration -Wno-incompatible-pointer-types -Wno-switch -Wno-pointer-sign -Wno-tautological-constant-out-of-range-compare -Wno-tautological-compare" libraries="-pthread -ldl -lm" other_args="-x c" compiler="gcc" From 8df3175f107d9885f0775f63889b7ca80c917b82 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sun, 12 Feb 2017 17:22:27 -0600 Subject: [PATCH 22/37] Updated Linux standard library to convert c strs --- core/os_linux.odin | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index 9192519b1..1aa4d7ccf 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -199,24 +199,16 @@ current_thread_id :: proc() -> int { } dlopen :: proc(filename: string, flags: int) -> rawptr #inline { - filename += "\x00"; - return unix_dlopen(filename.data, flags); + return unix_dlopen(to_c_str(filename), flags); } dlsym :: proc(handle: rawptr, symbol: string) -> (proc() #cc_c) #inline { assert(handle != nil); - symbol += "\x00"; - return unix_dlsym(handle, symbol.data); + return unix_dlsym(handle, to_c_str(symbol)); } dlclose :: proc(handle: rawptr) -> bool #inline { assert(handle != nil); return unix_dlclose(handle) == 0; } dlerror :: proc() -> string { - // TODO(zangent): Should this be split out into a from_c_string()? - c_str := unix_dlerror(); - len := 0; - for s := c_str; s^ != 0; s += 1 { - len += 1; - } - return cast(string)slice_ptr(c_str, len); + return from_c_str(unix_dlerror()); } From 9d19ee7e4c285d5d881570be3328d81bdff40368 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sun, 12 Feb 2017 18:25:58 -0600 Subject: [PATCH 23/37] Changed standard libraries for MacOS and Linux to be closer to os_windows. --- core/os_linux.odin | 9 --------- core/os_x.odin | 12 +----------- 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index 1aa4d7ccf..f0d9efca1 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -166,15 +166,6 @@ read_entire_file :: proc(name: string) -> ([]byte, bool) { return data, true; } -read_entire_file_to_string :: proc(name: string) -> (string, bool) { - - contents, success := read_entire_file(name); - if(!success) { - fmt.println("Failed to seek to end of file."); - return "", false; - } - return from_c_str(^contents[0]), true; -} heap_alloc :: proc(size: int) -> rawptr { assert(size > 0); diff --git a/core/os_x.odin b/core/os_x.odin index 6cc31e584..80f858a5c 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -133,7 +133,7 @@ stderr: Handle = 2; // get_std_handle(win32.STD_ERROR_HANDLE); last_write_time :: proc(fd: Handle) -> File_Time {} last_write_time_by_name :: proc(name: string) -> File_Time {} */ -/* + read_entire_file :: proc(name: string) -> ([]byte, bool) { handle, err := open_simple(name, O_RDONLY); @@ -170,16 +170,6 @@ read_entire_file :: proc(name: string) -> ([]byte, bool) { return data, true; } -read_entire_file_to_string :: proc(name: string) -> (string, bool) { - - contents, success := read_entire_file(name); - if(!success) { - fmt.println("Failed to seek to end of file."); - return "", false; - } - return from_c_str(^contents[0]), true; -} -*/ heap_alloc :: proc(size: int) -> rawptr #inline { assert(size > 0); From 802b1a70f881968f4e96eb8bbec9f072b4de2892 Mon Sep 17 00:00:00 2001 From: Zac Pierson Date: Wed, 15 Feb 2017 11:20:11 -0600 Subject: [PATCH 24/37] Fixed an error in function naming in os_linux --- core/os_linux.odin | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index f0d9efca1..5d1d6c98d 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -82,7 +82,7 @@ open_simple :: proc(path: string, mode: int) -> (Handle, Errno) { } // NOTE(zangent): This is here for compatability reasons. Should this be here? open :: proc(path: string, mode: int, perm: u32) -> (Handle, Errno) { - return open(path, mode); + return open_simple(path, mode); } close :: proc(fd: Handle) { From 20b9f1ff5989cdd9e09a79c65b2df151b4f9b30f Mon Sep 17 00:00:00 2001 From: Zac Pierson Date: Thu, 23 Feb 2017 15:28:25 -0600 Subject: [PATCH 25/37] Added `getenv` to the *nix stdlib. --- core/os_linux.odin | 9 +++++++++ core/os_x.odin | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/core/os_linux.odin b/core/os_linux.odin index 5d1d6c98d..1ec48d340 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -49,6 +49,7 @@ unix_gettid :: proc() -> u64 unix_malloc :: proc(size: int) -> rawptr #foreign libc "malloc"; unix_free :: proc(ptr: rawptr) #foreign libc "free"; unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr #foreign libc "realloc"; +unix_getenv :: proc(^u8) -> ^u8 #foreign libc "getenv"; unix_exit :: proc(status: int) #foreign libc "exit"; @@ -180,6 +181,14 @@ heap_free :: proc(ptr: rawptr) { unix_free(ptr); } +getenv :: proc(name: string) -> (string, bool) { + cstr: ^u8 = unix_getenv(to_c_str(name)); + if(cstr == nil) { + return "", false; + } + return from_c_str(cstr), true; +} + exit :: proc(code: int) { unix_exit(code); } diff --git a/core/os_x.odin b/core/os_x.odin index 80f858a5c..be86e2252 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -52,6 +52,7 @@ unix_gettid :: proc() -> u64 unix_malloc :: proc(size: int) -> rawptr #foreign libc "malloc"; unix_free :: proc(ptr: rawptr) #foreign libc "free"; unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr #foreign libc "realloc"; +unix_getenv :: proc(^u8) -> ^u8 #foreign libc "getenv"; unix_exit :: proc(status: int) #foreign libc "exit"; @@ -182,6 +183,13 @@ heap_free :: proc(ptr: rawptr) #inline { unix_free(ptr); } +getenv :: proc(name: string) -> (string, bool) { + cstr: ^u8 = unix_getenv(to_c_str(name)); + if(cstr == nil) { + return "", false; + } + return from_c_str(cstr), true; +} exit :: proc(code: int) #inline { unix_exit(code); From f541dd40db3cfe68ff6a6c2e9439328db1f8996c Mon Sep 17 00:00:00 2001 From: Zac Pierson Date: Tue, 21 Mar 2017 14:54:29 -0500 Subject: [PATCH 26/37] Fixed some memory leaks and made os_* use strings.odin --- core/os_linux.odin | 36 ++++++++++++++++-------------------- core/os_x.odin | 38 ++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 40 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index 1ec48d340..7f440545a 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -58,24 +58,12 @@ unix_dlsym :: proc(handle: rawptr, symbol: ^u8) -> (proc() #cc_c) unix_dlclose :: proc(handle: rawptr) -> int #foreign dl "dlclose"; unix_dlerror :: proc() -> ^u8 #foreign dl "dlerror"; -to_c_str :: proc(str: string) -> ^u8 { - cstr := new_slice(byte, str.count+1); - copy(cstr, cast([]byte)str); - cstr[str.count] = 0; - return cstr.data; -} - -from_c_str :: proc(c_str: ^u8) -> string { - len := 0; - for s := c_str; s^ != 0; s += 1 { - len += 1; - } - return cast(string)slice_ptr(c_str, len); -} // TODO(zangent): Change this to just `open` when Bill fixes overloading. open_simple :: proc(path: string, mode: int) -> (Handle, Errno) { - handle := unix_open(to_c_str(path), mode); + cstr := strings.new_c_string(path); + handle := unix_open(cstr, mode); + free(cstr); if(handle == -1) { return 0, 1; } @@ -182,11 +170,13 @@ heap_free :: proc(ptr: rawptr) { } getenv :: proc(name: string) -> (string, bool) { - cstr: ^u8 = unix_getenv(to_c_str(name)); + path_str := strings.new_c_string(name); + cstr: ^u8 = unix_getenv(path_str); + free(path_str); if(cstr == nil) { return "", false; } - return from_c_str(cstr), true; + return strings.to_odin_string(cstr), true; } exit :: proc(code: int) { @@ -199,16 +189,22 @@ current_thread_id :: proc() -> int { } dlopen :: proc(filename: string, flags: int) -> rawptr #inline { - return unix_dlopen(to_c_str(filename), flags); + cstr := strings.new_c_string(filename); + handle := unix_dlopen(cstr, flags); + free(cstr); + return handle; } dlsym :: proc(handle: rawptr, symbol: string) -> (proc() #cc_c) #inline { assert(handle != nil); - return unix_dlsym(handle, to_c_str(symbol)); + cstr := strings.new_c_string(symbol); + handle := unix_dlsym(handle, cstr); + free(cstr); + return handle; } dlclose :: proc(handle: rawptr) -> bool #inline { assert(handle != nil); return unix_dlclose(handle) == 0; } dlerror :: proc() -> string { - return from_c_str(unix_dlerror()); + return strings.to_odin_string(unix_dlerror()); } diff --git a/core/os_x.odin b/core/os_x.odin index be86e2252..bc24cca9e 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -1,4 +1,5 @@ #import "fmt.odin"; +#import "strings.odin"; Handle :: i32; File_Time :: u64; @@ -61,24 +62,12 @@ unix_dlsym :: proc(handle: rawptr, symbol: ^u8) -> (proc() #cc_c) unix_dlclose :: proc(handle: rawptr) -> int #foreign dl "dlclose"; unix_dlerror :: proc() -> ^u8 #foreign dl "dlerror"; -to_c_str :: proc(str: string) -> ^u8 { - cstr := new_slice(byte, str.count+1); - copy(cstr, cast([]byte)str); - cstr[str.count] = 0; - return cstr.data; -} - -from_c_str :: proc(c_str: ^u8) -> string { - len := 0; - for s := c_str; s^ != 0; s += 1 { - len += 1; - } - return cast(string)slice_ptr(c_str, len); -} // TODO(zangent): Change this to just `open` when Bill fixes overloading. open_simple :: proc(path: string, mode: int) -> (Handle, Errno) { - handle := unix_open(to_c_str(path), mode); + cstr := strings.new_c_string(path); + handle := unix_open(cstr, mode); + free(cstr); if(handle == -1) { return 0, 1; } @@ -184,11 +173,13 @@ heap_free :: proc(ptr: rawptr) #inline { } getenv :: proc(name: string) -> (string, bool) { - cstr: ^u8 = unix_getenv(to_c_str(name)); + path_str := strings.new_c_string(name); + cstr: ^u8 = unix_getenv(path_str); + free(path_str); if(cstr == nil) { return "", false; } - return from_c_str(cstr), true; + return strings.to_odin_string(cstr), true; } exit :: proc(code: int) #inline { @@ -202,16 +193,23 @@ current_thread_id :: proc() -> int { } dlopen :: proc(filename: string, flags: int) -> rawptr #inline { - return unix_dlopen(to_c_str(filename), flags); + cstr := strings.new_c_string(filename); + handle := unix_dlopen(cstr, flags); + free(cstr); + return handle; } dlsym :: proc(handle: rawptr, symbol: string) -> (proc() #cc_c) #inline { assert(handle != nil); - return unix_dlsym(handle, to_c_str(symbol)); + cstr := strings.new_c_string(symbol); + handle := unix_dlsym(handle, cstr); + free(cstr); + return handle; } dlclose :: proc(handle: rawptr) -> bool #inline { assert(handle != nil); return unix_dlclose(handle) == 0; } dlerror :: proc() -> string { - return from_c_str(unix_dlerror()); + return strings.to_odin_string(unix_dlerror()); } + From 690c6828476b0714464adf4813fde37a841104d7 Mon Sep 17 00:00:00 2001 From: Zac Pierson Date: Tue, 21 Mar 2017 14:57:09 -0500 Subject: [PATCH 27/37] Remember kids, always test your code. There was a variable name colission in dlsym D: --- core/os_linux.odin | 5 +++-- core/os_x.odin | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index 7f440545a..0fd8287ce 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -1,4 +1,5 @@ #import "fmt.odin"; +#import "strings.odin"; Handle :: i32; File_Time :: u64; @@ -197,9 +198,9 @@ dlopen :: proc(filename: string, flags: int) -> rawptr #inline { dlsym :: proc(handle: rawptr, symbol: string) -> (proc() #cc_c) #inline { assert(handle != nil); cstr := strings.new_c_string(symbol); - handle := unix_dlsym(handle, cstr); + proc_handle := unix_dlsym(handle, cstr); free(cstr); - return handle; + return proc_handle; } dlclose :: proc(handle: rawptr) -> bool #inline { assert(handle != nil); diff --git a/core/os_x.odin b/core/os_x.odin index bc24cca9e..c665b533d 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -201,9 +201,9 @@ dlopen :: proc(filename: string, flags: int) -> rawptr #inline { dlsym :: proc(handle: rawptr, symbol: string) -> (proc() #cc_c) #inline { assert(handle != nil); cstr := strings.new_c_string(symbol); - handle := unix_dlsym(handle, cstr); + proc_handle := unix_dlsym(handle, cstr); free(cstr); - return handle; + return proc_handle; } dlclose :: proc(handle: rawptr) -> bool #inline { assert(handle != nil); From e935f8e2ffc19294573025287a08dcbe9137e282 Mon Sep 17 00:00:00 2001 From: Zac Pierson Date: Tue, 21 Mar 2017 16:00:11 -0500 Subject: [PATCH 28/37] Fixed os_linux and os_x read_entire_file function not null-terminating data. --- core/os_linux.odin | 3 ++- core/os_x.odin | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index 0fd8287ce..52b9dad51 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -146,13 +146,14 @@ read_entire_file :: proc(name: string) -> ([]byte, bool) { // We have a file size! - data := new_slice(u8, size); + data := new_slice(u8, size+1); if data.data == nil { fmt.println("Failed to allocate file buffer."); return nil, false; } read(handle, data); + data[size] = 0; return data, true; } diff --git a/core/os_x.odin b/core/os_x.odin index c665b533d..6133bce7c 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -150,13 +150,14 @@ read_entire_file :: proc(name: string) -> ([]byte, bool) { // We have a file size! - data := new_slice(u8, size); + data := new_slice(u8, size+1); if data.data == nil { fmt.println("Failed to allocate file buffer."); return nil, false; } read(handle, data); + data[size] = 0; return data, true; } From c61015b1fe2a0451fc4e5f6231718f82f0e9df2d Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Tue, 21 Mar 2017 19:17:41 -0500 Subject: [PATCH 29/37] Updated shell.bat for Visual Studio 2017 --- misc/shell.bat | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/misc/shell.bat b/misc/shell.bat index 5d9271622..6694eedb4 100644 --- a/misc/shell.bat +++ b/misc/shell.bat @@ -1,8 +1,8 @@ @echo off -rem call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x64 1> NUL -call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 1> NUL -rem call "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86 1> NUL +rem call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 1> NUL +call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 1> NUL +rem call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x86 1> NUL set _NO_DEBUG_HEAP=1 set path=w:\Odin\misc;%path% From 7a28827602f29f0e9485ca6617daf316635802df Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Tue, 21 Mar 2017 19:30:54 -0500 Subject: [PATCH 30/37] Forgot to include stdio.h since Win32 won't resolve it otherwise. --- odin.exe | Bin 0 -> 1120256 bytes src/types.c | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 odin.exe diff --git a/odin.exe b/odin.exe new file mode 100644 index 0000000000000000000000000000000000000000..48f24a8bd9f953e32f449ced4e3dd0c37823bc19 GIT binary patch literal 1120256 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∓8rg3Mf)p1XED)omT~|J+A{|{mXl0 z9WsDVEO?zfpxKA<PMPRMw zR=}b+H(>8I@LS%}YCMe70@gkXc=KFIY%Zm4}g$K~YprIOSC+|VzIS|J&)8GVU z=tMSpz66}~;D~sr!BuxuhzvRGLjf~%0Op9k_*~JwCMce>$*YR@@?et*Z~C++f1W)= zeOk=cp(R!GCPODVipC1n{DmKE;$*Ci84Y}uj0S?R(Hp=qnJUuzFrFx=yIJg)9L4d*OyRj3CGeJRH8XV0KWb&cIl(UJ-o5XDxqP86L) z(PmemNZuAmM1HLeNDZ6g4pymWDD_O$T$RXQR3dl(P9*X%9%kIWP9iTVXd5vql4UI}J zcHT?-FgDbP`if&igfR{EKqpfo2r2u&2#GP(EE`0iG3woW5F`cF^MKDzJd5`0VrL;T z6TX}VkixyP(M%_tFsfo%Yqp+hb!c4Sx9nOu4`9eGQWC<3`uT5_;eg6;`VeH;y0?=d z{3TRtXTZ%GFe=(jD|9s{{Jlj+WC|5Fd%e+#FiB5aKYpdwcEBUjVtXOrXC?-m>0et(&yXtAynI>dlu8EPjqp;j6WwNu38^0%AXSxR}CXIUnMP!@_dH!bx|eGJ#svk z){bs}#ve$wjdEP_jW1S{#j3m>ql9|?4=BF>xS}AeneI>&=Fz95d$%?cUb5v0Yd$&D zlAzbaX8xD*PiXywHOpLi8pRYw!VLTA0K~!$AR(D0c;VD*5uR`(`kCj~bSy{1ZFUWU zLfR}fKUg2C+T(foCEQ51E(0~t{}w=7{co{q*TNE_XDxI0=kF{zMyfhSeZ-II^jVW6 zT3FFm?4{5|H6S29R#+l3qs-AH+WEzb)gqGy(hiedd!avLa~jGN+53|Hg4}Y-jtmhT z#ZJcMnH_|h;Ps~ssH?MlC#-G&EytH;+(QKv945a_P@)@#{y>%b0~1@!SF)6=TdEDJ@9|97!$rSXw(3=6#B>ZetF29 z@cK5+rU0^q3JsV@%k52rk%>RM`%u ztOc_RfdM5gP%6ZWoo6A^ML-JO*oXQJtZUM5acb(}>|;hVicZ5nQe)VGqRrtNj6zNe z6ecFzn;C0^{Ng^3v{KOdk84=6OY)@gG9V=*C#o_KYi3sBiW>-m6IB`5jCUG7$9c1^ zs@Av1!(Pu%;bBi!DGE2$SwX@qT1H*f&6pKOs$aLudZ^v68NtK+Y?>Q5M!*x})chk) zdPFFknZQgpN+dW*2u7MS;D@?PzBqETG-aH^yZOfrGNLdIjLrlvGgT#LR<&-)w~4J2 z3I`U>B9&5=h{IsDs(`_Ap&&Ik&{!ZNSoNJ*3({TgYV2O+T-5^SN`bGZ;d8mq0XTnz zEQS?}Y82drqN=r`IzdHs?S>+%5AiU$-J_yPMnu&pjEABUlM%{=prk|OvSUKz!Za{O z-_29GcvY>3^KD}5q{8|6MWhNkL)7k&?deL>upUCbnum~I-ObS?5kDbB1bGv;*^3l6LE=IiNJIoh=&HQ@nM8LtTiwg>E&K59B=BP_NjrL6 zFO)_MXv|m|yOhRn?IAQ?hKH$((&*f`2yqXr1LCBv<)|j#TcNK0BKaR+>*~?E9?-hp zWLTKM{bif#?4Mq(FxD zvler=fF*33jtZd^aEcKzx#w(5<6*FyfkI4R1{}Ex%2=mU0!tNM^gw7c=N`*{LCzQe zv7R}XzW?qdHlv-cLbOe5!cWwLLdZe^G);kMAH|-p{N?zkRN;mQA1K^RE8Uw^x~Z>= zbf3h-EdE-c1R^XKE{*6x6_4tHSh^J)53*|`RsnT|-#mY}(}Ow^`!a)UmN3_S;V(En zILK0ZyHa}EK0@iA@i3o$HK3F&g+dX5-Y`-7MUKux&OH1}t(3RuJK#_OI&K0DU`U+_ zuFl>4u#2GKYXM9+3`;U{oSXZcn6PlEOOT*j&U|*KRuPOyH}9(|1j4+GIcpA72*S#( zNm!x3$50Gx4xvp|AhCZ!3V9Jlk;KA?CkNcl^ubnWzgD5m-%o`04?N7{JBLC8H63fB zh6E76G&ut3yr-!5w9RHZg$iAiQQle07p~P)E}Ce;MaSPhku7bF>fe409YU)KHi5-@ zU4A_IlORwDe=CdB_Ylk9@07pul)rKNgTH_6RK#E3+V~@Y8M(`G;+uZ=$fn5N47 zU3f`1YR_yC&jNS1$!}9rx z@|jmY56ytjeRnA0b7)O`J_Ij9JP<;e@#KmlezCIt>h=oE9&+_q%35=EgvlnzB!2~v z=f5Fz6!TOYN$X4>YI%A?dHPU!+KxP((OAUOh?E<{J$ML?qVPm0vkQqY=V`@lU&@KO za$B+m<`D9wp!`oFJ;!-hZaIhLI@41v#da~epcJ1)iXYrQpcr$UA$rtA2g5iljT<`d z(b){)0z>x3e`M{DX%pMzt58yu%oO$_6p1kJZj2&G3kC-t)d#svr*g$5e)VeJizO{P z8zF;Zac2r=0oYHA6Fcz>qPZz^JZ!SwFM>nkEYsOuA8Y#t2d9)dcQNJJ)zATMNI9Qy zY8K6iRQk#(tW;;h=G`RfQgd80St{c05TaTP-$Lt=*>#M(V_X=O#$Cl_gnA&?gNouA z%hVmgAp&yFE)(n-gBa#fgBvV{%|7>H!j8ZL>lnI4$?XOV$>kH|&Nv`K?#`B6=9&G4 z+<5lOKw!~v=@;Z)n3?}rJ*1C$`)PfRuZ)k?yf!}e)4z?69r^0`*c3B9b~oNHe{+0n z)7Qtx9>afI{vCG-;J+{bF+TR%KgY)&eq(&>#(#~E9Sf6vE8t_b;a^qlxbb+K5T>m4 zSA626>UAcsJEdm5gvPX@|Bew4vU{)bIi_~Z26eK2nTqG3|A^VVm>&jy7qkDTWn;m! zo^Lg%T^!TM5|Ko1;0;x9SaA@Lo{>*6`rOg{H`^nV6eRxPNkM+I6%$XkK#ZqdwV}8} zNFqPdY5+_E5XvL7FnyD4(LmzX_UMuQR=&E!RV@^0G@IYdHWTm}QW)Sh9o(AT`B-yN z;Kd4U40+9eryXM~Y3t|H4zKFiX&PpER*q+K=7{xOYLQ>F8Pwj~hRrT2#}Py|W>iHN zsKba2Y()$7pMRe3Tsqo{6jF4vg4U?Fv^9|&O@JeK99fI zKm0HpCPvKi7g`YM)3szoR>33_^vmT8_A8=E3@c=z+0JzAmLYXLTMIUEiEXu7D-f@^o3PmhAqQJZMd3=MBAGCrL}u3SQ*mIAxrA4_ zfwcn}K%m=G`NBVRo(?``18Wz5;ZHWO@`d2sQ^4QYM2lVA_y?;7*td^?qca_Eo5Tf? znBJ+9=CUxhQ`n>J=rhV%kkrO68m44H7FgQ$BS4ZoLAH(f-H6}#3Hz)(@@i8VIQ_b2 zS=xuLn5Ex?Lj44>F$At;>Lj6UEHksIFT_C|p-qgFU9`GcJJok5NO>obPOyt`%?-(g^}D2@y=oo>%VwmcL~MNFpR-CL*oB&=5PTsx1|CSthrTvdrCxIE}Ni5yw7ovTM`aqsA z_)NS3dn^(%tk_pZft&&!q_nr)TBV&Vl{T2jh&Hv$k}@dG*m9$j{;ZjoNe#Nt(G z3#pfSGv5qhUmNwNh3dwsDy!ETr5`83je0C%46qPSLk4K9#tU7;=CJM2rxEeV0@SXt zW$hYUmV$2QLTxtTUnKNM^Z`);uNUiVyh`BkpQ%SPiqi1i9{dnP49>*x6*qa@OAH7L zNC|8q2X!k@uUSO51}|A5BD!@0ZDUClHB^9Mv%Epo@Z2auUFu7f5GIEn(2Jn_pRV#` z{5=*18`Rjz1}OVxu!Ec4ey!RSa~r$^i){C|xE`Q&Fl4*x|v85@;7< z^L{{u%z*B5SRF5*SRSiprS=W3#2){ptEeA~CjcuG4?(sGYauoWy_|GdZZ?{!$IBF* zA^|-Us`5)PuCm%0Aaj>+B@&l}TkOKhMsIL5RP>!`4)(J-9?Lj^k<7Lc2Y!rXe1kMS zNtGQ7y1Zrw;{eS>F)G|O2}m__eBmFYD?bIIUy>{YUkJ_`oD;7#NtbW~zWr>OZHh8a zk@km}V1MMJMuN!_hK*@hw7WL=1luaA^d7tc4l3OuOo>XTQC@o=Ma2*N!v0-rA*>2~ z?@v|*+P35PL_#?}H4%$n*S&?aPa8F3e3D(P$dx*vux=dQky@PY%}m&qoTHsKaZQ0x zVRfKx2i&EKgdp+)PxMe+vGIuoUzazh9A34#9T6|lO!_U6^dG`omh?oI8mLI#f!C`k z7y{eq7#a2o{7Fj-{^%r=ZXvCZWLR0;hg)3Hu1vFgTS=wa=@*WcjUbZ0C7npde;Xos zQ8o3Y{i0TAmUtp49ecgvY>R3u=pdVLwI5lva4Y+ zegF?2lUk?PU+c8i7a(jKDn1$K{{YG21^E>25Po?l^Oj7vAIm=NDZxv2U>g%YLf2W_ zMCjUubZtPoph_!A>Aw9s9wfuI#$wwIH!KwCQ7tFcybYc#1BiuJH- z%tTjDY2JPPwxL_kqtc{=V>mAqhip~~J}nBCnYvs)ILSVhCM+25U{^dd3&tTGDd=Aa zZ+m5A?yl%+KE#FQw3E9J<)2_-%Y&Te5cV2qztE7YO3C~T7x^<|rDV|M_=K)GQj7(a zC;F$joCISV37)9@4#W+eB$LqQm|6^Qcp(oH<(YWu>XrVB6mL-30(2Sys%x?+2J_pKZ)XtU^<=kO~h>-{|LnyXG+F-mr@ z-jAh$n$IW54XWwSBkTOp#&;G7jwQYhT#Jp5Ew;6TkQu={)8pZg>?M9Bh{6~u-{jV; zar)7EMGN3q0T;hG9fNkn3Ro_6?~qfhFe7}I{9VI$=uJe{Aggy)OOKZ-Md=E#GeJB! zuQ}$Z4M7#K)5j42{E-U6;T>^}`H!`Oe2D|qel|X~KmNM{|6Py&ZpVKsBL6*w-_f{? z`yK9I#nvAXCS%07ww(Op_L$D}I=Cr->9Scy>>YHSJt$da4aqfAMQIvGB;xQM9%kBx zfgzzrB%xDJK8tKcK?t7&{6mF)AD_bl1)-_(_afaNFR%~Z8h7k znY~~NPNzJ@bz;BnExbUNnlA?-zudqPf(r{>XeZXXXZSLa`^z;)I!n*b-3WyEPyG3} zfeRL$Rl(1Bo7MyUg|Fsy2bt)a3@r<>P;71w$_q-=YIu+xS!uC#i2h5v#=Tw z!#L`)?m^&R{j70?3-#iHprx+4)wPtI^AY{JGy*>hy7+nmRv9Btaf^fvHsjtZ+VJA+ z2>-vwfUjp=Sgm%vut162cZ0CdD_e@Alx}~2=R5G|807A~o*oM$oKbfLop2}lln64+ zFgI9WM96YS+njG!5v^B@Ht6tU#y^K`vl%`mY8=lWDnq&b2uxyuFCh3T2A^;bI82(& zHbCW|56V(9^Bg6ZTypREJZ1pmzT61F5my@3_aToVp z{E23kF?`j+FIVU9wn_@7v8=$V=+xYshQW^9x2qX$BkDSy{SFrDD9UlSj%wA?jpTA@ zjQ;b18v2yP$lb)t*slJcM7A2L8zp!-SkD)z%Bz{91jwh*&> zc|cmBWfp|4DYCU3nM*IO!n(c1N!Ck?M^M3gE-l`V5`{VRKBR0|Q#t4ZZ(&&_LtRx$ zO9(mU+^QJ2!3MOV;u4VYmqPCVFiJ9ghA8|&HU^h^(n!P9ZT@3avSP&?Qy*6l5AX@; zkyQ-FzM%aR^5RsViic^O;>@=UK`arP`yVU(S#Jychj^G(>pFNb_k_o6uXD5tb3KU0 zIjJ@2H&p-f4~WUtbV3eeyQd1ZXT}7MlXTwTNM6pmAQ*A-06|%rL$Ty(+l`%dC(P^A zMjc9DC22nGwkBN7vtM`Nzv&y=ebQ&m;xJA_a9JFECnWA?|FpzO@HI%Mp+J{G2r7fh zAt`Yz!nq=;r9&BO-IT4(pSE{ea=-CBrj6JqIXYcsk|CkbM z+s*Tx?R6T>Vac5dfKp77r7b%&o{x(OpmHlfdPL>M)Hhjvg+$1!oK?fo;y{1uzx6BS&08WCv-Xc2~%?a(GU_y05u|L>s zdvYzP(ICt!l@Ldy^+HCJ9h+1kwr z=%5`)Oe}>(?DldrAbh7fDQ@}BrP+udAp@0|#K^@Y$FViDmOk5>f!zQjEux3cqP4(m z;dhd@YzeS4ggC%j{JJk*rCbqe2QE{)G4?sf^Y`%>=dP@we~cRZx>Kb+Fu7#86&p#p zdY;Fj1!R+1;h4|+nW$#SbqugsYL|A@X5Qj8Y33{NFk8o+W{;4Tl_Hi^yw^ErkITwZ zJx;(&jy8r_D6760+JLaLy#d`5TV#YB8bWheoWe#-J+WYcq{BlZBn;Xt)-q~228nF* ztQ+bL7_-h$smN_LWjZe%;o8*8+qvH=sZut9~mh zZF#+5#mVuFR+XdVvB8MHl1GB{$nfy=%x;XJ<@4eB?{o{N*qqF#(||3w{}wNOBAclH z3zkNh7-XU)-dmPLlA2FZmAEI!!an`*dg>o%sJ9u;hwq}X^hHCZEi<+)DOHjZ`l>ap zo1su@Jq-o&XCl!Bzb%%3mbF-Tr&G-?A+pt7C&q7kqEo+~1)X|kT%c1x*v=EOyuAgd znGtx!54sQof?d`;b+fPN`2FY<`Q{20r^AZZvu3(WE1vNUsraPXsQBpeir2OEq}n|r(&rMDx)F`4l*kdwuy&25omM2ym<*f6-$HxG1hf0ppX(OT+p#sjmPIgv z-hTvHf}X<%KP#Yn9^5~5mZ7gO#^mp>E7i6)1yF-?l{@Sg!Z<}Yx(SBn>o}Ve6xwz_ zb)!AA_or~j0oP=9#jgS&opBFuHLox3rky-hW^Vz|t!XM&hIc@#wFzM2rYk`jE^h#t zQJWG>zVXA&@8`cmW~drNcuFsB0J?@wvjv78MnoE>Ca&m1bd-_X2DmQ={O2=%`>JW< z3E>GXmQ_7-&WhseOmAoV)(Pw#e%-!$5Mmx4=94c!bB@_SRel##k#A%@mKKLkmCE76 zua?2b!vU9 zdDOwL>E;Q8lS}JEv2Hf2`2;w%N<{j^^VIZv`Q5P`Ydxbvt*~y6%N=d4JzDGEbtmu5 z+{ydz&jK#7K_Dr|5or&tgWPDRAdRdT7;yt5qdE-fCj94#E|OkPvjRw+i@=fLiVJNA zIkj75TEFIcJj_V}DfUJHs-0}gNmhBj4XmIBpi)=M*=-GfncZ?# zDkkU&z}2vpfuk+a6Panw3kvY+knQ0J<@u!yTH$2Ap0DfEX)5ZWGU;-1-N`Z|d#U}p zSqBO;|G>li_|vFdw-ULgLb;}_TvHTFJ7fx`RIaIn|EiU%OBcBUl5*{8=#X6dw9-YZ zXhJAp@nZeDug(;j?#9DZg*35R9ssif-bw_V5rd48p6qEDRsKP~4p?TQc3dX^f$r{VWqb!A{kpRc7JlBv!|eJ=AY<~c zk+Q>D?@1M%RIOrYDGfJj{w!MTq-_NFdG-@wnZ%F2=zN zL)>Y7KU{x8>;Mc&(f>9@+Q0E%4omM()lP_gfal2@D$L7x?pjw2@5=sYqX~%SPbgYP z>n{4}x|0p%CS#^7D{RxcAI8gMgIp|;+#%8RYh*L!t8fqHlgp33^!XZwU$EAFeqPeefIaqxEtmBd>^=jb>_MDa7(IXn(POigx9I4J`y@qaMQx^tqc>hD%eT|DO#E=pEU#a1#CH-J8& zx8S#4={tEjGy*!VR}`i2Llyz_?xJaYmAi|k5rhVF8h17Y7(RoY8bS`WK!|1>6v9at zCFst$Oc3mXd4pVZ=68wQm}bk?(#&LN06Wv0;~p~IvT1kLr3*uh>WnpL$pCl zM^Hi)bgY8)rB0+bM-=RLmJ84VwFOsD0ohL{W8vOlqHSG3H*^jMY7^wlmCHZ%5{)Kw zz^3g$?fS4Thkr5|!oXl;e!klmt7Ta<*uo$Ua1cF+{m~&{TiD!zN|#T?fArV+9bmJ|u-LNm5Yz)8V6n;$>yKGXqL zQ`D*SRF?9ol;}q(J6)_rA{T*0C4mJ&e&~;j!|{y93Pkapc(|fGt{{Fg#&cVr-`*lO zYSjxW^#Aav#+dPW&&sU@Pa>s@y8{dik;-U$pUA5#I4LWMf4b03hH+-7OSbx9X-IA$ zYXl`V}Lf}QgZ)6aZR{7hTl5f@iLJx);npDaiIWTHMkiuwvi zb)riHeeN8{D$c4X0k;Fo#e;q8(|vIulm;&yAl$~0RmfQOVcK}PChk4@bx3I^f9T!5 z>p_}Syu+&-FjR>q>I`mvr6Y_2{Y-}Jv%nz^Q|T#w%AceV(A;_^=z0YA!K1jWPG!;8 zWgo7WnJZ(Dw+!&82nv)~I?TFq-t(hw`*1oTpLuyru4CWen!crbNMmtyNDUty}@^EX|}VIfUA z#rmi5gTn%}ks15&RWkM=2=!*4yzJElOiS#1J9`15mLCwFPNl+U@I&A;`D2g>&Bh`= z?$7L8Rn^MPH;G->#pWBHg@YM*2rr=f!7nGr%-0YT&^4Cl@|&Va&>8k{%9-f86S&!6 zEBVxUd5H!|4qA#m!hCjsY7otGsRl7kFB-f@a-(9Fkj3On_64sE>(1k6xEnTX-Kp@^ z5&oNXCg9r`7`vP@Z|wCtN7@jeOz$1i^h9NR^3ps81}b>M^4gI_ki;XB+?4dL9Z z<^OuSl)q*P%D?$eNCOms(-E^ln{Jhr!bN*eure6~1pi2}7zj?^o<;X_*IpJU&l&QV zRV(!9_1NaVR>eQS#3KB_DUfz(wzeuEy7trv;yzd` zbNbofh#(AG3Nym}-;W%M+Rp_`nXp6cETCR!0S%blRL7t6N|Z+1(yRXpFLNrj25e_h&axdjq7$->Q#v0C zYRh)k>s7W>f*NWkPsH68olZ~9&cH$cB4SQ--6y5(HmUz!WW9w%*H4*_J~Tow{85GZ zn=P1v#^O>eXd8PNQ)CsA9hz$`#7wSe5ZE0=e?NH<6Fch=>nI;Q03HywUrgJkSsL2t@ve*a8vh${pB=I#eg-y$#Yz>9m z?JC(mT&V3wIWE*L!4nqtl3$@$@>L`S7k!)U=%U9@8A3V`3?M!KHD+R@%7E3aA@53f z?kd6a3cis}-g2nN@>cYD7vT+`c9H8R!C%ht$FGxWUwniFj0&Ay!IeGoE}@6;a!nWX zgO0s$it5+^i-E5es~$3?%-WX}bDHc+BYrpIx6>h(qz?7t2^CT~)m#Gp%v%{48_19# zW>b6zKt4JQY3=#@h_pl_fxud@Myg8-8>)pjV1Z3}#bki#g*R=E+ot<3?Z^}E21dWe z$HU~_bRGHmQbj5e)}W=GPpUJjwaUNn`_NVpr8%rz+m;s81}Xd_5B&ZA%fk!L3Ji@@rL>Dte`x={7QMsM<>WdBQZAySJT^g z>h2=Ex`of6X6X5!5l`*@r_=L4dA^%!$yAP#wlOKYIio}BuzT^g#04v~H7O)oTT>J{ z2L-xc2T^mzlW8eaFao+CFAMsrq?cwy24TRoO0M!uj+?hGj9+rXym1Boub(|DLp2mT zaKM{XT^B!Fxh#nabnk-5A=uc9YKG0WxFv-$v9}X2D#MpvNoJxV7Dx$?N9{MCPG#g({p7^OIKj8iGXsQ@wmdnWC97cj^EvakoBGA+W-TdEee%l z=13a`J|HnHkeg>(Xm!P|F^yBVR!-gI&T^URHIQyjc61KdC~Q;%gbs+z=^7atRCMQ_ z5TGOWKJ09g^?^iJ0l;kOvBc1V?Qi%z9sm;l?+Gh}az_p5grMk|pzWEQl1*7Zwm|rL z*8~Y^Cb}+jN!SE|ra{Y^FWX%VgY&96F5b77=4Q@uxwv?N;J>G%gI}oUTfi`E9xf`6 zn5EF*u;T#QYB0YQ(Qbt>BI}rxPol*!8|y6pmLVIZy#IB+)6UMf2-G9)!;cEYZyLlP z0$-sYX>F5m<}4}E69+U27vC%&qK_Y3D#g<1EY(&@_R3_kVm|$Wc?f3Zf%|84Ccwd=$+mF3hWc+#4BXA-?r0`2L! zxaLo~dj@?Z(lax*QFSEr%z{97CW(X!Cl>C|D*qUCy3JW8sWcuPfrqZkc^DFS*!hk? zM5>}{vp8qfrZCAiDSBLc`IucPeu3c|pC1INs0c12d|2XcAthOJoV!Mqj&mw@$^Vx* zbcP1^PSIi{?!mvyG6y7L-cG|_?<0s+%meoovtZ`Z8VwX%Nhr*(DOb>g9cnm-h$$;+ z&3HZ4Qc={_l-L*XRKRLdSoI-N@(XQwJ;mOX(<%$kP#fQ<+kXW(DRR(hF<==?hc< zjE}4%uKcl+;mY6oSLfn9O%Jkz5Gb27Upa@uu#?7|slltYM$#pup>pQ?%Zo&|IjIRa zjpu9d&Z&!{4FsK%#dNH14L#+e&`3*qNS`Sg?-_ZDTns7GvnM)JP|=$z!@L)`i}K)cAGN zw-x<*9}jcT3a4Msd%k#*;)UoSR|{I=cP^Jco_4YSGM9 z(Ja{Bx{++#O+9y+&sP_w6G@Unp(@B?OK|Fi8Wj}1#}*~5IUhyybRk%JNS==G2y0Zv zl;`6MEQCN0;&5a>dYLyULd0@;lbtU120N_#3A5WN+Ghg~vsLcgV0r3s%B>4hm1OW` zq3?2?_s{r;tYpmHBaq`7H%yMH&%@T`8|5?l^%>e*^Y{ze&b3mxY|OS=f;lzG=N|>5 z)bYrUhZH@s6XUWXg4w=)HGu|AYGLFw`h6PNMqnieSdq#lucKnt!3yxl&crJKW34In zAO7r2A7TyZaiq?#TY0c3`Z^vI{rDH1qK||f5llHiHQXp*+P=udvcKer8KTH0f~k0;(f51NahSl zS4@i;z%^Mi!~OG^+0>~PLB_SLK;Dj&`q0Nd2vAs3N#RCLIJc zDWIFp0q9i`P?8xQO?^y(9{?2a9)1>pPYi%{19%AhxB{EA1^AJ306Z-M?2F@D^9ZA2 zMK)d}!(gA!sn{cj=m^q6*>;d&#HTBj!RW#=>MfcpZLutiNu&8S$5bi?L25BE7Qa4N zYink)eywfGO2vZO2xKm?#hTcxS&6tN7Tm<*c$W{dH|x|FwZYc)&T2sje5Xg~MZ@Dx z#^y2}!JzW$!d8+XpP?*?*8)`o2Vp!L^OqGN7x0vnm)mBwO2I0-!6fJ_JH$|UXCO)8 znJR!9N3LKPlbT z9Cv(iFyb}s8~0x?eIvdIeWU&<*Fm3T-yR@Dr=G(Ad72P@?c#Msus2GgL;RKq{_>JXc(!n8m&Tj+ov zD`{@O&l1){AbRI&RQ{#Z?W>!89_EIj=>c`H6V{WFix$}UI)@!9kn=7v$$+e^6}8G$qIO+&VLO%I|6V{F|lAPDFBs5!Wm4^ z9uyJzC?$nKZcQR5jG1|hiag66?IFeL8Fo5~okc-lCO<)F-RxYa)`1(2b;rjr8$q!d`pudc2^vE zlUeRJ9)Tf4PwtRTTM~KWmp=IC`Caz&PsNe9A?9i1Z9vLnml|ssBl0FNsEcULxTjGu zq}z{z{G%L(_~f>80QIqR!PJBZ%SS)Lm}NK66uT`&9O5m8{{I03VayLKhGABZmKRe> zo_Qh)T6el^DqB??HX0D@*c>Yiml$iVnYi-cOJRZl5sR9wu^d9>7!=;=_F)*HI)>KU zk57LZ?G4^itPH|pgah?SgA6f^(&V$)iG(C&mL?$|kak{lG?#L2G)GWMM)QTT^O7{P z{u$KUw0%rJeu%x_WOH&U({o? zoXD_AWLOlPfG9>Jb&Mva=m}spnW3&Ux_VcG;=~G`bzrm6#Lo1-wmYAo#OKiABV~uT69wA76XYKDydCK3Mk%L-cDnpg9CE-Y97Gn#;Cyv z*6SQbkce>kB?C}bOSUa|h5l*}kUJ~3W{R{_Y^gONxBCGQaf)2I z&U*Uxr6F|FOgydd%QTktXVz2&eb5ox41y)lx?l`tdGlJMnqG_=wpz%H^GBVZGPQ$f zdcmU8+hD#Zg8mA;BPiH=L#kj&t6+_I;{Vd2nn)=+l;o94Dr++x(^xdKy(j_3q_Y$u?hUg%u#CCxNyMa&C5n}n zfwG!s_e%T%HxyY2sebd{&`EN>oy=Xioup^#um||SQ_{k=we8JIBdmCH5Ao>>K33uN zS)XmzB40l)Ozz%YG`PeS(Mi`~kIjqVG{vj5(7pIWgL%c~Wu1^2LGz47l{!)`}TJUo4|a1#eSEB;xO00 z2NT>|LlOwN0&5;>$qBh*14IG71@de{o+yxAA_*yhcFfXksRc{?qh8hHHxwtbkwx9- z=92le$Ym|_Y2r2a(cmlhnP3X6W)|Z#r7Kvs6GJjZO!_59kA%lTyxdXG{t& zvds)L(jeU)&-CHcAkb{y{tO-=Ui!$WHd#G>ey|vmN+b`G)+a1XhNh|rR1%f{69CqntK+!}L#MLf80EnIV8z&aXty6q+y&y*< z%(HX14^)?*V!Qh_KjUX&j=9%$0kKj!RYrsZ>HFe9Db~kZ`T3Y*>}Nz$X6ApODEnHw zB`_2+$kY-UzP0No08w=nKMhNg2qPb&xulU=2b*9%eHWNM;I3D{tD%EDAsL7`?GKKP z!v3}+GJ6K(4LuwM2mE6RBRwk&xd!7ffvDHgiR#)V+{&~#7P=9S+fnOpHy5G)2u^5; zpl`)+A3uC&KtZbpSQ&r@@m$wdJVN|X2+51ORa|stCMn6%$te!MTh@zp) zN+DQ`v?@yBV%<-KJVUK(`b0IeNhUv0jRKaO^?C%GlA~Bi4olE>6X+q_JtKt2sO?iG z!$ARr7K`AFRGwqy&#$uGqEh7pYpT4@R!*Rx@^0e%;W}ef4$&`vjiZ^1W_C%)2CXk` zo@2KI(L;QXie6O6W_FZkUaOaNpkxPt%+M3gqn(^TAL}mpouo zD^>Sd?2=bnb^n^Gb|nd94hpK?49a*euUP11XZUvkodL%bSLbgMT=CXvs)3`H7K5i7 z+6QcPl2=O0(3)s*B?)AfJ?_LnT8?CeLd%JyLjm} zmeDoQ;z|<8e6@&{k9muv(DLHjpyioQLCY1a+>bZCp=}f+YP1nUF0PGM+Ug{)l$MyZ zF*Ja9iZkJFxsm`fzj(~ag{JQ_T-B(w%pxrZfEH@o$XJ@s%#}7XL$q3#>yxe|>IBfT zJwc60)wpqabC#A;(AB<>QZ3EQT01wbn3=Mfkx5-xua?AqF90pugY^zhDXLdWja6^c zn(AFCyFml%9c+{$y%f8(#$wx}YyM9)frP#Xc*dI)siOGCeuM=lD>s+RU zjv&H^-HCkT#w30*feWp6FVdRYJZUpi2*{YP-VHYbyrryo=~Kld8;T1Hkci(&db3$a62*1xjFb&GI{j zSX~i^SO<@9Z8=O?4$~112P}tWhKn5bSq`OODTgj|h#bC!t6HfU1C==JUmJ%)L=lII zr;I~lGIORDaoA3!uGATC!CfGcwrepj&>;Cf`DbJ>^!{VX+OzdRfp!!)^%KMpoQV=L)21oj*lib;&As zH-jy3cg+#t?()SUcg_IHF#z0&<{7oC}g;5$WUys>Nu!+`l zp_-Kfip2%C0t`>3Pz_!h*~;J`yrJ;ua?}tmnv}nrY;G&3^AA(Ulb< zkboNt+h!6514<^NFnAN<_g1>~8}L;HI5Ksg9ED1XNtrTi#{V6CR7^M;pTaX&U#tQe zB;TY!PDM<>FpA1_o!M-TMQ4qAq=0$SF_kdifeplAdF)UYM?h{E%!Q)P*^N#)$80@i zjpH49H=_!mmW2VKOSye0ZBKZpS7sgt6GBd+YhP)9M|Cy!&v0jGlT=vEU#eRU05_cq zz)=CfQ3BvKrO-xuBCufb4?L-h?kHR?#YQyy~M<0yCBg94SIND$-G&wRo>Qr%6V zRz0a~C^Cv1AFadeRku@4q7<@rJEgV?_-kE9K)Cgi#{ja?J=Ri#Yu5|Erf!HRJ|JNt z^@1RYfd@O|^VmhdI{%S96Mz^wtc=~7p6I$AEYSL~Pq_QAeylqD>CvLYCqoy^RsBwf z<*FuEBNm_RX7&!^fsAXNjOAG(MJlTRVwIJ0BCxq;E4A~I(K7=m6-c~I^hcdhIEQnM z=z%gxlmpvP^e&?6p7ub!{hVljOnf16jllmBlyldE;irC=rkb=65Mv65iRhS8DW1QG zf&;Q4Jk_kzFCY@8IAcq#acSXDa;FOY>-P?AQj);X1R zqA8jz`~Wd?=!q&c#ZLg!wYADhhJ&c}%mSaao>|+avm~1pu}9-tt=|HINhzs`8v>+5 zqqp192YuXp@VB5VUm@_wcA{X%r?N-($u3nne0Z_Q;o(alhxKoCa*%zpQYajB6o(Ev z)Jq+7_zP4Cc}`o~!$GG#kJU~wX69gNhTR7VEQtW&zWwkezzk>Cm(OLjsDM$>tK#$b9k|Ui_Sv8|(bNSOMtChk* zv8m81sqsa326f9#8^2oJI)uSix}g`Rh8(f;F%q&{7U__$8AzO{yCih;RT4e^Z32;&=u$l$G6sFD6u}W z4IJ7VL?*R>(y3^_&D08tGOa6$k_0lZ-0PxP@%(<)m^coam7yRK5HN&u1s-c~QfhV# zEvdv%>j%nEEsNM0I(`a619--ip#f%tECDN0E^s?!Gqr*ehFnPknaQOLq4dburC}6o zW<^=Kk_0mM3^-ZAvRMTQSRb`^Cp-YiT?3?-!5#7m+xKBNZ6AycfKB!e#CLv1EqYu| zpzFlN>*dBSJG^(J7~Zim3RlzS<3@7y;piZ)OP`g_tH{+UAk_|4Vl!o&nqe1v{v(E{ z?z`8EO}-lsbH??~CO@zHr2N?pN%EVR9BjDdyD`=(i%E^RxTcnH8K$OeYRaXG)L~s@i0;WS7$9=unl=(K9if=;MiF9@ zjQnN}7M2hzvN`yTWqU56;j4YgZfrN=3&HR$cWi&yx%hq-z*KUQmPm6$weX~E)6iF3 z0u*)EJs{%T9@oj4O|Ns}9AOg<1AaLL5OZ&|hQtE8u=7dQdu;-}op6oIw@w_I!{cxh zIXmsHgFrtKvbrf7lbN7GPg0mk44m7FrpHg=)(9B74ibU>NF_rK6w~QxXon+}*eF27 z>Q%k%ah>kFTsN6UlrbSG%2F8kt^3uWb_fEQZ{CLCU>}yrj9G?r2~WS`;MZ-jOiL5o ztdG*6Olv0dbfWD>5utOE0O%NJFm-R@oFm206tnAwU#`ZDTc5;rlb~p58jvCvF%A`3 z*BnTUIBFKbW$_oG)xpyW`1mZJ=$H*@?F-Ax)v~5W?k2Y*rs0E%C)B?VM zbq)QoSsG%XF`oQ^3!zz$SA6!9r-&*k{-N5QH0s-oced0sUt87 zB5hc-HlR1>>7BmJG`pV*&ZK98Vp_wHO;N>UP^_I4GiaP4*#e3~+J7L~5dJ8IpXfSB zxUu>g-4@Z0409c~t$@arfGsA=`KmfH1wIiumV-dJd2mPyS@WFodf}Y*;wI%vj^Iq8a&yxrsvWh$o@lev4xZ)) zZOk$C2+UMwYaYHS!%>j^OBN#J0x>J6s>{HqNTZWq!T6f~W>fuOJzc!8{hV4@bL4Me zOXuD4IlJgFB$6d%ay^dpCvEs4$>!;!0L13C%Ar|wyy`aj<^xP&drPdf*4Blq9N8uX zL<6K%G9KTX6*q6H-5KdSuO8+v;M;kf#1(^-1@7wK88q$RA$Rrve133OfBae=%!Xz) zx8cIDpb6$N)ecq3{PiMEmkHWEzr7ZgzQuh-!4~Xnuf;8nLQMYTNSWobzLEdBBvp_? zJW-K|Pfm{#u|W|+3>PXLtzle?$x)H5fRREuo0xX=X#Fnu?T{`!4=F4F5&kFMO|cX7qbU-}dIe(}B8a`8a>q(8doyo-<^gFHTu# zZ%8yj@gdYUeCWo$v{%mzZ;{*!@ros^3<-U~lYA+QdxeuBHLtmHgD_tVJX431+oQ;I5w z$}}QBj4CjOHQVCh?lZ=zHv9aG)$+Ob|Hs>R$46OZ?+=iH0LBR=5E~8>HCCeNIxdz$ zQ3nMLiW;%S9(!~XjS3hy!9~L;cHCW+wX*70v4dp|He!!!!yesL?`$l%Sg`VYo^$Sf z-}_D`tp4-MM|tPH<+OXwx#!k5bMmu*D#vK|FV0+4G{jDp(zfFV9!p<<&Iv}*7GEZz z61yq@>lETjPX1jFqHM%ikStndn5-L@XMAkTWu!mu`)KC!K(S;{Qg2F|!ppP6m3%PKarL@fK zWy(cYAui_i$^}Y0F0lSZ@2LQK@IVkIv*R_PRsYzc#N870XFkG;wb0Wc8Qu0uk zdMh@I0HGjd1Pvpy6NQ)KMrhyQ(Z6Gc1*9%2Tp9J4W8Ush2gTkLW!npu4a||*=Gj^` z$N7{#%#qK~95vON?kMAs~CPe`cEQBh~(EVL9uSsr?&50Mr$DGPWj51W)vmmv1>P zGeezQ=Tg-E_>og_RPGR&=J3=u_SB9noM6yOJ4xpw~9l$EfMhtv1 z(kB~9%ZB9Tv*9wE$;SSdST|OPjjCSR04`@bP&mAhjaq@xgAGD4KVTHf+Y+@3dKt`kP&e=$rBeeAB>qUUYvLOYHW&=z6c7D z0z*=)8O7vOQx%60Yb9ELK?Z*gNnC;ty~@vFvr3t=PNH=-GIIwCWOy616FOhrfN_$C zveMjthQ>k?GDDgY+Y*zzs1hQ_qyz>Atj3JVxa8RV#+}g^AeX&)BPK4hjKDW$Z-FLB znIF%^*GYJN318FZ-C~Ddu85m_uhn9D$Mm1Sg#N>w<<(dG(XP!37LjiC>v(#Y2(vbL-wM7SC}tDItN_KQ=-3nmKG{k}jt>$9XZvr(IpS``$%u_e*{$h5BNWZ5`Fvi>)SUT zFDi;h-u$VfLhE<9Z?5IDI{JQkGBYdCB^@ih!!4fhi!YMVlDe00p!AOO+*nDD9day# z{djhW`>vKh;bkdb+==q%1?4-b)+~=PGQ2H39;c}#f%_KEbYJh7+}087<-+6>N?GOX zoMR`x?Mjma$J_1iKiT<6$IInBFht7=(8A%HpZeK0PqbbqieNeacbGm~(%oo1{Fz zujZH84P|JJRi>r^As>FF%)as~GQwQ3Ieq<#+0h05W*v>Z%GYlY?NPa zE~C<=+gAQsTltJPq?I4W!(4Ta(+WAjmzJskj;ff%!}pTMKSqPOslFj9T-VdQ6=@F3B|b!ZMdosi@13CG04HLASq#`e#h5N>Jm3F z&(hc_#gs<4*u?C6yaX&c7MsM^YPe`a*Ir0n(#N^D*?%Hqe%?%sv1or8k}eH*-tj8l zG-y#Z3JI|ng~qE$w3ioYUp`@ zhmc-*)@#A+Ii>z*z)9mP0gXFyd4|{(4~zkT87Ov zfD?M;iTD6`!Tld8X^K|476e`(G5a~7XIs`HLlWEZ9~CnK6&5bcLdbbaRh!nCYen2uReX7|>bPkZ%Xx!=OCtrZk4U;2@GhD=_-^)-E0pnPg-dG-%_esMQ?PJ@kjc3c+c*{vB;Y#!HUG#xYOM^%0$Qdpr=sKqPo*H((2Iw|tX|{2N`?ni6Fgf|Yug~`It_w;>5qxpY{}UJ zuz6tb)4U)^%eyG5t|x%&6~L**0^mVB%)k%;oNPUa25epqCAX!N;#EKUlMzbdj4v(Y zkQoyt#0obDHzkTDrNOPF&ZyE-m z5$gLjOeSBpT&2k!t`UjtR|BTiPun;>_x#W$>mZqQ$e5Wp@GK6i-fITKs(g*yq;NUX*AJc8?P;lN_8 zG@Duuf=QhV2YDP^bh~m;Wo|g0o+iS-27;XjdjhJn2-0R&PXs#S7N|?H*&89P4qJkjK~OS{ z->#8~H@n7EPeELAzY3yDWG5j-IezM%_LvA(^jZvGb0$NGEKX-DB_NWzHi;tV5ai%J zCV2-Q{BHjAWBHa}wrTRXK*4Zv#Mv@fu2n>2@|^(;ykk#6!AGyw=( zAO*O;zkEqj7;%=>kYBHz^^TzPLcOG|2Sw0oEG^3n@eH$|Kw6~3tS5(LI2ePiR>v9; zapC2e7#263;-bl8xu@_ClhjP&jT!eMhidRKW19zQRGR+NRl#bgU^Qs}_k0DbyG<3W z#?0bkw#6f2Jp3!y*pngvAE1#!-D(N2769k^3N_LKtTkJC0M&jqLRWhxBk=8&coy>Q z^zuFDv-!PV_}L8VLU0t6_}OB-($DH~I@4fdsuWWeAkQ2fL|I}>yMF@JbWu>HIray~ zDB?NxP~$LBtZJ@Pb45S^K5rf=j(?AGIR4T)*K<5VimHIc9vO-3W924zIlhCvtVfF? zNbJRaRQ5dZu&KoR_y^x)X_O1rWh-PCkCiI=0gCTn_yTzfZ0y2315+z%61d=B5+Bum*E_9(wx=h_y%njsDZ{=1UWeKAH$ZZiizlH^ z88gM1W#d7dbMy%0(MxWV!QM3K?V!*85JZe&)@U|3axCF6C+S|X8(Zn_uE@=l`fDtO zxuXJKs`ciNCZavc!XfT~v@y7Top zsZ}4{LaH|6;wzI5tD>VygW;hKo7!K)YydS{t8KNFRC@ytGcc(3EUcg!nj>~uqjs6b z>&n}iA=VC(lp7rrp^z03MBc=gfY%#8g3^tT|6va--W(UnsbmgKm(B+>6=k228rZpX zzJI<^y;-GMbVQufAOS`26pz|Np)2%rjG{PIU^KUfZC;|6ZokYXP=Jz9#Dr`(dPqqD z!~v1>s{sd`9JCW3#qTS%2;I&g;AYNOlx45DUrOf#c(hlutk~W+c&*2)2 zTa-Ef&d(jg?_r`NJXxCTma7IMnffhc(2=B+;zEa=QdmWF^ZpO$V3f7dz%z@&y-O1Q zoTl8l9oLi zbmZqc&n~dmv#@YUUBAXNC@*}0ykFx9@=IrRWC;TnGa;ymzE2VXPQDiKL-!e%(17TMOA>pyghnY*Wo~u}!u7@hsJSj(3s#zwonLUEPKuVOGLwQ5 zY>c->?Mc-I=oQ4HBwF%3XRp-f1b{cJuw zylv2(Z3+U{$>E&nn>*3oMIjK}{QY`0__TR^I>Q%Eiavl}SmWFZ#DeBc0-E1*`j>w?eb3s0Dq#S^YkG(K+@6Q;18nnDVN)D-A2<#{{(vWS4o85!wJ2_?78x$bYRGiF@g*xFfA+@J=QqI z;qq(Ez`6)U%$JxVv5haA#JjOcz!G$Gw`3wY!A5b~!9Tgi4DkxWMift;)h;a}d zJk6)t1^;G0nom#x{)NLEl*pKw2df2Dn?KlJHReS5rN!+SJR2nq-#>?it0;~l??4hRp+#+b{r=k~%@EO$C>CfZdByD^p+`R0I_2q?WYUV>J*#kfCiQ!%oce182`( zr;z^g$UK2G;~9o>&ue5e=5&c{ZpOomJuC?2u$ylY^%sAcEMy@b#XIDIH0G0ObiE2Y zGK~~P_L3soq+XD1cm|L?acF>y7#0!}m$e!y>g=)`z%msmsu>QCOU$hTO8(q#Ry@a^ zh7FGXl&5;HtY{K8=gK9Z<~5u`bGd2ujwoWYmPl5slxK&;4oohmkq%5QtO1T`YR)y3 zfMnDFpO|wE%o!an7USgG@T6OgobBvGZPK z)P>V+E;mm`PfM1QQLHhZ+nDqy)3HYQSItxVaBs9J$azvF7p-zD2gsB$o6wY<<&M;D z%JXzo4q9i=c3Zz2^Abx?6G0wp4sBT5{u-8;eUmh~VwU0h7Z}v48J;S%N#eB#iZrn% z&`jtMXeL7Zf_IoJt^IC+=|9_UOc#(Ini z+8XKPRJ7(oe0rFTQE&dbzdE=kbGiIdq}pt`soZGcjMrfhGa?51&{QE26;t1yCSlWc~?afwU%$N3#E$Ko1GpdM9V`KwZXP%*^z$; zw2b0mT462w37ivQbXQe;v1w^ zDZWA-5t}yLSisy;$rX1R$+B=oP3!-u(GcPu#xfsM>c*bldCg8HBI@}fpw zUX-5Z`jc150*A3w40f^^J66UPbP5y%#cZzlNs=3#2C%c>EMRH*~nyf?iRsMK6m`Uwf1a{k3Gx%xl>Uu5a`w$uG(FV ziV+i8X_gi!q|89gLbM}+kS#k5f}$OyG>C$VnMULyhKdrYoyyYDC3}) zr2q1^>zW25z@i0=!T+QwP4<9C+kF)m2FsD9D+jeUQ&q;xa3&Tj**HV%i$>l_HdW-(&4(=bT@g&fc(^imnSf*|u99p>G`P?$c@?w>2qfY78I zNXOyR1*qWU*ivv3v?o2$@tzp@LldY#67|{P(p943GQf%-y%U#$#3AUQLCpLD(h8av z^C=GIOq`fG<58^cqilu~=+zW=CMydH&<^Y0OOZ%+$spRX8L#Ge4oM&q1Oxsgah7LT zm~6_hlRz61hs5JI+ykXmibxiINoSsBBLZmIYUVrI=*75ynHrHcr|b<(_*G?&mS6rb z2rbK2inMI6>(R?m5dPpHnB^MYocKUTNLU(e~o7M&ztI2qsd3INA?O?jK`~!-M zSzBY{G=Ei^iIX6wH4!-xM6&n7zPb%aJvb(TZOzr_Qd_!kKW1XKn_`_OqJZvO6)49$ zEgx51Nsb+V*Z+;ytW$zk-)CBy%Ph^oitv?Pj^=acD$P}9Ugm$$EZD$Q3XUI|BIx}w<6&#jzb(0qLEd_l`{L2yZd7BcGGW|dd&UGX) z53_!V2x~zW(Xtq>5m_y#KB!6&rPHMg`8RLXV!p^rEER6@ez88cW&%B_qMj^58S`&` zxQd3MextDnhw_gR-@!|6re(6UZDH1S&84WtHlebK$$i9V3BS++Vv|WN0Q!jlV_^gf zJVAwdzybJXZg-qxXnIG|7_bx4FZ-pTF}O;ElT$KRi_Ow~We2d31{2cjXak~APUdQp zi3gk41$Yb%bu}&1CJrFk{UMpinAs0GC716^gSF-qLpwHKLy%ij7il@8hD3PFLPd6o8?80GNg#fcTRFV9%!j z;93s=HjJf+_~iB^;9t52^r~Nne4*Vs6m+Yiy%e=}S^AwWJCB{5IRySO@ie`#mhApr z!E&=UByFnz1~-b7i(Iqu@4R}{S;3TO{Zojn*tCt;V55`Pk%cmpkP_?Oc}GeLrRm?L zKgIXPp@fwV7aCZu4}-hbGoN&nVrSX1GoPVIpuPZTK0cIoWY2{zo+y*Q7vdue#8`_X z>f%W5uc(Bq?8*-SQF6dG4XCHdoiNj&ZqwF2dtDxNg36bS{k_}=ll;jZaq8YeKW2V% zyJKNe`DARwV}DK1q#%i>`DDoI)ggi!AgB=pH9%0a?%Cx;Py+-n?I;Kia|p(@x2)>Z zP{VzIUb8OV9nFe;fSUAAwDiumFo~Ect+t6Hi)p&};(E!mgJKgFU#Uv794|n!)j3d_ zV<$PS`%CU*d<6n}F>eqgk3Y(2K7RWhQZIbc14~KE=PdBawvy^lplUQS^nhjhHw>mq zFeTQ2MTz*{qd8R6GL4({L;x)x%dZEwt<}f8fql;C*q+*sRAFcUnc59=ptW;AC~3B9 zUgT{zu0b4p0xJoQ8Fm(LdNpBYD7fmzso05WCA(|3l5mp}W>8rxHvG!*HevSmYfI*4$a z0XKI7YVd4wC4(*evGuF)TU);vDcD7U{B~yIkG~m&<3Ib2WWLGWrEXMaF`;dlmB`*_ ztH}%@e_JNX8J;t7(z14TW)!3VYa0%qWmW2tZ&!0G+f)uQr(%eCEVW1=%{YWV+X1le z3|;?%)-T>{QaLpEXE`+lSr2ceL&{g(uK%UFR1Z2e7Br>H@>KWU zZIpWTH4J=o(gP#)w6Hk`yqFw@!5aGxU`C(rlPCendg=ANto?$le<6a8)WT(FwpJ>? z);dAfV{f@yoGwVqwRLIq4(Nq#<@25Z6QFZBIHOYX2|?Zb8kJJzBV&qx{ZTzQ^Ub%r zhzEbFD&%*WXkhMcFG*uRyJZ^q>R7c6Q%S-{%BtA__ErTamQL3aAH+rV7f*KN?tyikcVivlv5KmLsLoaU4Eaz7{5R z8wbDzE*-16gkUbUG_MjZMn{gPdH8w9@P?rOseHM%T_Dcn9D!ryy(~>T59Dt}JIya* z!)gpgae;-o8q)|c%6fe(e~xPrWQ0?XPcpKC2vU zE%a~zDus4+meeQ=)S63z1Yw}oT=%##u);FHCm1*=pMkh#fcd6e8Te$YkO2nSB~Y3L zXciQSb#p$1FZ_dFTEM52xS7B3Cnfm8;=DbJztKk3be#Lcanc~G#UQI;kkpOle5y`A zUv%Se5(0en1cg6kemB|Gj@1<&uojW1!(pjzbm)0WRPz=8%e}E~CX1md-P<*HMcF%*juw#5+hRYL%|3mc6(O-3+Uy*T)D2mL^pZ3ef-X_p-h@<%eno(umCa{&h3F-26=Af6=#y(gfe8$T>%5=?SE}Ky zl5hNx2Y%qd3HW<;8gK}OvCkh@PUtQ z&Rq3f;kgOz1WWpj;%pPne_Z92ay>&6^$l?OG!p{jmEK9x-g`s|TZIB7h)-C`h6aKMLSK+tc0rcK`@Y*3%?&L?HY~|&g zs?O^@Sd6^~%LS6#FfNjlx+1xj&6F)t)T8v&quh$b9|(bE%!?1JJb2=Ri9~G{+eEIN zh-%4G`Gl~B5@P>|;$sq%(Yo_!PTwf_fA}~AeT=97)Mo5TTNms2&`Dv_z8?J~2O_glN z>!d^LWcR#aHg#aG4h18#^^RF=l;2`QtFIq#$~KAj`kEm*csPB_~aC0A2Fb z9hD+$<;^nBjZC?SE^qAl@R2$yp?z>ckrs3waRnCSxUF6@w>DUiW6pCcSlI0H067$n z4LQE6^;dAbqqESJoBYo-{Ps7H_CK*;7p(7?jxhx-DK%gOO`fBY33AGp5dH~}i) zzS3)hJw_zE)-I>M6gt}Z807Q`owLfC6#2*P1+m(fHgz_~P{*OBi+c9_|+3kf7! z@+ltXk2|=Lugoi|`S+KYaUo#PkR)d03;!TR`6(st)HE%@7Zzv7HP7mgl7Y#VGm3-x zV??NH(k=$21cjg!Q&Zp+h1thS8=~uy%1noTn45Va8(xx_Jh2nVDb&TpAn0UbtP!IR zs|}mdDA7vA=wJ$IlOE5^NL0fO&2ZeLe`4F-r4n_Z8icn*S^$k+*P#6s!I|@5i13(` zHqxlN8mJKhhq&*cc>s55ueh1RY3u;+I9B~{vxViWSkG;9nHh7w7H1#A;OA(x*;F1Ac3KGKY) z_(w7XqBG@CJm{wnSgqn2FaaQ|^x~0gdGW|8+eNH`_1ykA4IpiB@$Vlg3YEF@sC!t% zT2R-SWN2Gw;`jc%nrC%($h2`C?Av=(DazUOV3AKV_iLJ#;0ue>RkT|jR8sO?Mdz9{l&*rHoU0%xE|%3v z(8`)n{0{nw8NAR2FExey1QTP8GN!LHeHUq)@CZD)RI*h5NtZCOEh8>L3T4Y~^(8*F zUL?NjDD?z$)DvK19b4*V4C6$9(W-@v;7YwI(YXO4cW!{cC$@$aBfIK(QwI(6c4M^>_X%s9b8ByBo!w;>g56I95ymRia z@Bzm&;O3w!NgA{92S0#v!J5->Rt#dXmKg-GD{S*gUVebX%t8UqH@r+aG)M01bhbG_ zBHF*N9|{NC35sLf9`7R7lJ{}hGq-cGUxB%8S?WYRecde%|r8@Ft;&Awrq5tYJMt*sOZLTwQ0_kv=7iy~!F@Cg)u@lo7$vZ7#~S-L6I%IbM| zX^eJWCHKp9$gtScJPKsj+#rnUl=I%0?btw>O@1QZTFWEB}P zF>3{?T)py_)o>32Nu1vOBQ=-s%pd=*1l3rA_zVcrM0R${4&98fsH?KVp*Wa#eVHA3 zqBxi-f(AVpI3Y2tXvVo%B{4e(zIsvG>(*0MX#z2>NXVrO!p^lt>V<9#{lJCFOr1?6 zYLm8!wUUVSRX*MJ04XV}-k^}MXof@!MYzUi>f$<81lBg!RnSJTEX0?2_Jy@gi+v#o za~58pz!OJM0IugKnLkjyhf7kO&aEFQ1z%!rQ)U)h`SEF1ViHZw46~08BnlsD3pWEV zS>O{a@P4+yxR$y7%B1b>F+$tIGNnzCaGM0Cnu!p)XH@m%cbEOGm$LB9uHDK{#8??9 zZjuZ0Oh{y_2m{)}w-`RB^lZkKDJMBh#lC|MVyi;$2xRT>>-=K~*r7f?vagNB7{;+2 zK}dJiheMCyuazcpNQ3BlZUs|rxI`GA zhPLF>?t0+QUUxl6`E1!SIl@L)eKFt$yB<>gAO-wUz-jzeuUw22-Sx0Sa*+tocmy+x9dS6c)K2+eqDAw9Kgl90}yMw(W+c0COE%*uMyF=%{M*;q^RhvZC(Ot_50LR57&wBT3{v+O9 z>WX*&QKo>gREAO}x5PPek%XkZeuv}w5K2eVrUug4BS_n7fwtrVD+N9wg{!~xq;PGm zN`ZOiPOSODtDFl0;6unJHXyH$2EiNY!`s?yCa{;H(!y5LP8R-=gKC@EtTOPXCMU22Kefz+* zbq@>DboJ?H%q!RmLK-SW)Ma^zR0!4O1x{I^XA`00^n^8O;!@!4X z;PhsoO1Cej zTt`T}9;1QYExd*b3*Bm#Cc=DCzJ<4=0RLF1L$x~+zbOF3Z<1%*_<>I}eq&v+a9l_v zEkFonfE&T7BqVJm;#}ogEL_q~52Pa&E@}JxRi)5wrNAeo(D1b3nVrI?OsrY6?P1}iTy%#SN)_LTDZ?t8Daiax zTDaDP!JyC*>`%t}`1w{Y4G{}hQhT%3Ib@)Rg)0ZW)uD7*=YLqZsB~!IQi}sq5t(iM zO$Uj=GEG~5J+NafTu5WMFJiP6z8xqPMAbxH{v+V9`NfuEEz=ov-(umCw$qJU_=m-+!3IEAL*|Mr{JzZ&=uDZf9=K2w8;Vft_!wVGWNTANu2tA&KS6CD) z2oiYtG-DAg7qZ-Iu2mwJqYxu=K0!xpl}ATEO9%7J2u1yGs+`p>IV3gQbG|&Gsi%#g z){7zOehmrxtEgdmZV6IcUA^)RyD}XExL)YH<#dc)z{Vq-UWQE#(=e(dz4-V|?s5<4 ze-owY^5YX@;}c#P82iJ9uDm2C4vyc1)c+=iV0c3ma@j3A3CRx9y-HdTIqCB5t#zOK zXlz*D@<(o1pTqbdTQ-1qy&~;2gtYgq8-%oaqE0(mAPd>H?IK!zwM>0GKH;N}p0ACP zu|Aqlb1D{Uqy^P8N!lSdxmFb)EorX@Y0=U8|6QX%SAh<;G@l@RlV7}+UZ+Mij(KLw z;i6_F-(mk>_Uh9V;O9K57m5~PWP zm$Z|vRuRSki0Ju*2>Zpj-^~W&Zycl|WS+?l6%jrJGFe{5f#qY?bL4KU%t1cOFo9Cd<^{RS009l zHSMJpLTefyRtPYNu2~*NDB!3znRl$K439A<5x@ zpoUZ>?XP$}CB97ckkftBO5y zPwlVXi51K~Yimfs3T7Ak!dhk*kvyk#b&)y6x-?5qS)526~&UT7sZCYQ4}kBvnci@zJR;( z{i4_t9~8xI?80}iKP-yf@=;OjcmFDi-H-pj`?x4}lPQWF+Ku1%|E({JVvnpWip~5c z{04UK=b6#MRQy$Z$|eLJX|oC80mwe!8}4%FZ6LpF$tK(4nuWK9x}Lo=xHgp)W3V2q ziB)nFK&Fk*S{8ReEn*G4k%*?GR|jR7rUyfrF`2J&r_f{;;SAbjfY^wz)68?Q5hazz z8ny^txm))bJzrSGT1m{iVV!v*PQ|Xq1UH^c-H4Zw&9{J2Br&^9UUWkTs!Uf}+kj^> zB`^>(ZWRlN7fL@5Buy4x+J2anUBu+z8!Gy}T_)jcXFNPqyd8yv4N<6MhK+%e!7n7~ zQ}}^<=%V-xH-@6R>c}OT0=d22>j2e1lgoe1vHag%wZD3 zOo}tblUdzKE0D&KkrK0tS%P8)rc^A^dJTReiE|4eJ%05L-~f`Vm+YCtnT5EFSwG?g zi)3-HM>()TbSW#kVsjk)0dt!sLx^%{yD8H)O|NRBhMA}KrOi#onUS{#!Qgrq3>d1; zJp}v19`(`DwzoG){Z3VK`tK?2l5yjql6#gqm3%3p9&%>H?#BZ!m0-o*@LMT!!AP?5 z!LLMi8&Jyn^T;xYMJAR?+R_<@;>}DvnKjtPE2PMkvW1QN-Ll*DwFgt3DpvfO!knj` z15o_qJTrgOZ8hUb{ZlkRM;X>{>o$C!<~73MXq;YP85z@SQ=dQ99# z9;HaqO~}mb6<^i3)vMVGSO8QiDU-B2pbYEG-HXK&%WtCfBhZNAV9()Q+Mok>l?L5BjRtL8+chY5II+&Ox#$6Gb1o!DAW5E3y1H&Ld#_2=9(WoY zt-3c`HE1}U^69PN;4K}?^EaK0?3PmcY>UsTaxH$chj}_$ykakH@pjZDybe5Fi+3>%aNGIRh%9Vz zW)?;^VH>ZxNmGyJzM5-gy_+sIVKgoTSPp3f7Xo;98}Mi3egJEH_GDKv1r3*?TfE>g zCsq`*2}{MV6^UOP6Q<4@xU7hG=Eb@P;0KKUy!P53E(9nv zJnpolizGPJs+4sUAj}?qq_YQEsYG@)J+T@qD`c|HOu{*KuNF9(T!FhJ;8I}O&8z^` zX{YL(^(r>KK(KR=C_9N1P)llHqV-((LNPW-AEVx(m zPe?+6X22RK*UjWkT$%2#(kS zEXJQ$q#VqSAs-*-bGY3)&NCqZ1 z_+V$2arMoB=YCu*_ZEI6|2`0aIvIFeDY>Bm4Xym`1c&lp$5=09T{NMb@Dj6eKOCIh zZ>8OSaX@LWj?!N3s51LJ`x|Ii@&9JpX-9o>kBZ!WD;J0wamPYTxu}V9Q4?@6yW=-- z(M&?JznP2NdRB$R99r5%LF$6ARNX_`x`%Y8jSl=6I4}5ybRzq{a4+2lw1@pB4d2ER z0`WIDa4khsYeiEF_?~js2BJA>+5ZR8AlzG>d+!JB{rUZCy3ayBKLa07jH_T^7Pwl* zWO?8Sb_RXKKP{;N4FeF-UPoE2AwH{iUtp-5iKA{(8*x7XR*FyoFUjO2cXUsYUv254 zmaetXneQU6*q4?uqp>ofvq%FZv3s*H??74{;8bY{-XJBax(DR&DQTEGx|2-7?j-;F z7MTk^b8Wi-Ooij9L@9N!>?&Tplr0(2g&5~DTq>;BpLWvNSw1olivlQB0CEpfwq*8) z08s4%z<6tN8#K)x5rC_sk2ZgOQMXgFKgYiK#O!ALpsd9~s18?K9hOFcjd42>3e4P+ z^5J_qrUIn>r1Q#0aS>2-KSUOYWEuVk2Kz>>T)=l+xwaT863d;B?#$(KyW4T@MfMJs z@URlvp_U;^Ed=)2M-Z3=V$PS1y9@`f`UO|I{7Q@^5sU*Gp+ZV(Te=FUD)`+)e3aI< zKt6ZRKjcENwOzg5S>(Mii2K`mryVRCcaiW#6 z47D#E!?q|o4AXU`Q&h6X1gFmt^_AEe$H^T4f7iYN|c8a>1R8TP>@QtSskgaGt;r_k+1bG ze_~rPTNCj^*{pxFHCgKZw2lYs&2zjw$5Pk3WL0@~1Fc*VUH~Eq6B5kR_qoH>kkb!m zP==aAr8LLIG3XSb4sKTA+n%0R+hD%lG+g1vB)j%TOiAW#P>p5}qYiRf0uBL8Y?Z$eAGa8LvP?P57ZY=@H=udbph2;b97>nWyZHR-T zHT6w+LEuroMl#{9>7)uew8BU%d{4sw6;=c-h5Dd5K}(@zF+PRSussd56kVSTii?-UIPUD;kdTm%TVn06IJOcq zO?N>#Ns9a?!r*%-0j=bHIU(I)o|&OWR7nVxzLd72c=|QWc`p^aab77OoTRWZM8s)r z16*#mY0sh_TUEe-LTmUsHovDe8K*I$MylU8!X6js?y-<6*l4Xt@g2XzHymES@b%Dx zrBMJar?XwCFb_p>$(jDZ@R9G6&K|?N%=i;MTGwYkAb@J^^YwmlTzGuJd^|G!magu~ zZMhQ!AICpLOt|U*Fd`ffrnRI7Sr786x`8ur86KbxeHw0H_D?^!SSa`YctCpy|KvmC z1cys&Nv&g{y{XW~$#rri+bsjM9YScZt!I%$2TH=sPQS-)(iy~XU;zv(L?@L8cAGjs z^{!%A(joNTi(A>u>puqck|NdMdZuQHmpC zbSIKOS0=aP6>hk54tJTE6+Z+_VnkOdvga8yy04^N9TLFkgh@GtEay-UJ{F^cZ+29k zeAK$Y>Ezqb%J(Zpz4RqP{d-(@W*S4(7}LM}PfDQG9%#TcCn7o#_mvPS#LY*%A!&d0 zmycdCZ9v1WHm$g!qI)7Bo%&t~srx7-yyhpsy~M}8@0Ebhj$iI4csn01$5mky7Ozs; zKj*z+*^)E&2JK6}cVd&xyxOL5ki#Z(a!OLu7)xX^slr84PNv*1oVgnnF?S$2Sxge4 zgqg56oGwHxAR^aO4(Nu8K{K}vzOPTKgKu2O|0wu%Cix^cd`ccXZ3E!r7!f#{SW#g;gRl=(*;VC>(Q`(}|5-xf9gx9Z;a95S3 z%*hE$c%rqR)fnrr=CIlAS9-9&gGWT27yWiS1}Q#n`EY4?#H-aiF+(MMU9g?IqZ-ouTLp3+DGC`}U)?9n>{&%~GE zD#!_ohYTV4Ww-MfYPRH|DKMEgzUjrpbE`3aB89%!>m>hyCHA+LI6}d$J*EU)!SDRptH$(IliLbi2mCpb1f<$80w0I}#oH->>Dv;Ex*A2Zy;Z(;#*h84iq7zP1kc&M`0!Kwubz1cY;zd-gzlpstCp)+{ zIny?;ip)Cc?RE)pyO#$@2nwomj&`^zO*-e?Hgbh$v^6xj8<+e4q($;*8Ct|WC zzr*1bbI(erB%N?NrRa4CJkK`g(_X!7j<+Czcz^=|0sE6_HOZ;uNz!&codcy-J^F}5Rxp(|u?BiadFj&@%9g!i4?~Dh z=8jd{WEpbgS~3a)CNEh9qJ7Bf1QF7luEqu zX#66>@kWf1oqgb4mY^!3c^FtGT@GV`YE;wD6S(be-J|^c1r$-%--nfZXRHz(`bZhv zJChnf+M7oCte+&8lf&OY*hI!>ORA*tl;EYQcw*xb4kS)PWhhzk)Ms^| zp&*=BTsykm|`fX5P2)lzJL;~Gn zeprrXwajj|7Y*8bE11>ATayW0WHZI5QYmE`9skJaof|&t`y^U<*$993ONoaM%JYXx@ERh1$echvw8HlYe^rmTxjyt{JxN_4qCG64{Gs z4x)fuCWgeNN*k7bK=A?qqW16!8XHDH9`D#q=1eo!Z}HRW?yFr9H;PUXt5;1U`5V+c z#{D4XaVH*T*Uuy7q4m=EtXrQ3jYyY2j?D|p{YXKg+RZi~nO4L%6z<+w*3}5(1kHnu+g1hGV zC)Zo?h3{;-b~asr1Oue691di5uBlzQU`|M!2j>yNM)oiz_Ax&aG*`l$ZW;; z8GM%7h9e-e1Bpszxus0VpLKl=H5##@8K*6TKJ&K=m)P$-+(S|r z6k>AdSmME=KD~(MZlADoD?u2p+gUTTXNvlONTmZ8Mx`k}H})2K?z=}LKqVN zG)8wP(%K-p7#$T1r5I1xv}k^p)qKhGhe}jt$+WTtZ*Y5gyq%2$dAZ5>WNGd?8a7}r z2VDNC8{?aGWAfAbD=hnI$wYQ2>-la>%c&dVRtt)RPq;CB2sB$Z&AJYznKw64Hzr*S zyd!kLub+l6s4EI5kM{KzX}gG5w)D){n8npkmu<^KCV17>#C1R?0$c7V(Kp1W^0Yd4 z`d^%h97`IS!M3^MIE~1fEfex|!wIEKH+J&(L^|iFO4v;uSinJNok_y={8pQ27*Ynqne3yV{o_}i+}-m6ueYOOledFr&n zs*~j9tCM6xpd`JZI#uFQ^BitALwCT)3X;^u$s}h&j}fAVc>w*dMl77JWDLp<%9}4B+nN}Zo1$DG_FD%SrBeth1+c5&cPGspM+Wm zSMq$g4v^gQLHcuFu?orN_sa_+s*5Y4d5kGw#PjjYXF&4SjA%}XsEFT$>M5!31}LHh z7STdH%knsqJRcEb?U;WQ>?rK9pRl-u_djII-o*=|_8li7ELr$(7nb}}{2Yvie_U#7 zk{=)mx&ueSj>L}HsSoCeqs53GdO9#7-LcSQcPuo~5l9VeSZGRQ8*Jkd8lo?3H%2%p zp;wdS;KVbY&S%vR0*%mSrkODt!DrpX4w9`Cn*k62Nsq|)^LHdBXZi78J zOK>Hx35?$~*aP~~Xc>nuqUz!=lf?uKe&-Lg$t#USh{PzAt(Jls|JJ2)Q)Twij!OEruf1?l#rj|d4AF~Ex{KSr|02s zdY;@V;`ywsiqW<+W#O@jjmcM0I2zNz@{98XeP->$MbW0dGj`WBu3=!$J{$4;s-7`D zmrBu+SpS=>_wF5ELLuXFkW-U%#MX$`C6kAs!n)bM!_5|z9sC&B1s zBGeofREyS{SbfoCB6Mx!W^UZeG@)P{3xj;FYkjQ>zBV zAZjn4Zq(5@R9R)3soc=sq zZ{-)cx1YEY%`Rd#{zUir!uJdet(0vXAXyb1btFXr)HJ2L^FJF(yC5Xkg^W4~iHtT2 zWL(H)A!ErpX3pfdEPq6{2utnt_*pUQ_omem}t@#WpN;u6%C>Ty3i+hx$M?he^9G3|Y z_abW!4EtTbRb@pWdHG&UGA&BT?I|^{ya4gfIIEWX81a9u4aCsgx*#k5{n{(C*wSQtD!g_pJWTQg!b@A>NnXD2BolCnuvg(7j*XkSH>}47|9V&nS8cjb z4w^|fiL72jIm^e5Boz8vOJ&~p3xsmJi0C|TxfK$WFGepA2>-N|_-1{Y{PcYq6B5}w zSi)~5EvG(hfn;JP1yASGCTys!#56N)UFXxJXiK|9hVz8Nu$ua`Yt*L=Op>9Jd+{*e zyyN*abT0^FOQlr-0Q#TmG307}hrM+CvC-OkowoIs;|ciyE)2=Gp5*1Xo@9bsVB*%+ zJf*sIwJMd)t8g}Kv28-{tkzN{dHIw{rlky+@+eyi zl;ySnG2Q6O(eHp)lc~`m)_f5bTAotRmR(Sx?IYdm{pITCnP-;a;A8I7br@J6qJW3O z2RPM0+&!2W*m0Zyb>pF7bM;2R0CX}2j4XxgT?0(leN7IKBTklerUMl-1g2Gu80BKq zT2cu+2mOGm#zC8kY7D4^YP|hcpc-_~ZjprbC$|Aao`6oi@t4(z6EOgFCa=pKAfz() zN_mLX&Gwa3S^*)0Eg=spAyYOJLVm%+ObrR4daV!!FtsoBX}xJXTShXO%U)y^OJ&Pu zZ|=24GOSrnRKjvaCI+tlhhX zur_8(uy)q+f-+|Pf|T@M6D6kr*_#0+6p_~RrnTlS z;(YN$ZhqBV(3kEZsXcGVx8LvWrIQ3GTUqAAauA>Jadg8L_SZ2DY5VKgMC*$fXWF;p z60LN$xzR8N4m^N8Pwk4D;OMIu2!Jki8}UZm+~brG^CtH!({OBov@e_@Ws)sBdTXkN zS8iaLnkw_n`Z%lXa+iTt5V5soMU0WRD`k$dlm87-glUU#p+(3i5I&oaaQ<*b$b54L z++`lZ$1paf#@EwrLAP~v1sdlFtS1Dy;Ur5iV34}mvI%4J8l-8M z%7^7l8_p0@2rO)7$&0q#GHsoCvby4$6NHEd93hNrD#vEghPviyCBD-V!Y3N46Q8w< zF!|+BC4~8=Z%^FABe(_HQ5})nbcwGQBA~*5 zHge;ejojoXT0mrS45A{~1Jh>8r8_FAbQQ_ak{Y{piCC}Hi(^n*-!Wx6?8{0zTNz*kmL{Yl}ujSL8AE8OvQIRBM@@1~|g< zRxX^NXJ+Ya*^&7zcUnR@V7|HF`5yLgMX66T4DkP;?7B@YYVo%$RbeJALOy};tbBw& zudN7~Z%TV2+$bO6`bRi~a?qmA40Z{5K4*-jpwd#nCn%UaE>Bs{vlKAjT!Nc4T%%YQ zuz-ijgLVSTn;)!NQB8ni-{m%?Mp7_+M^G!LXt64r$V~ITO-$QFW}5F^_tq%;JS6RD zOjN3cMddoBUFDiWMY?o8Dc5|iZYfc@GT$ub8nk7>a`hZ9*n)nM5YrSTK+-1mLcj}; zD*+ix0G}Y>^Lzp-ECI|nJM<)A5(ppzlof*wiYJ3`ocj^Y$m2Q0Kx{6(%J*DAg&uG} z7vmKq#_}5bcb2MJKp|8^W?lf+O{g0qj`eHU}B!AR3cJl~vpn%-X@NBRYEEW;ZR7 z7xz7CKfIwK9|2wpfVnzCwG6m{hC!$0(ppk$Tc-Y~Oikl;AK8)(b_7%A1&=8k(dWmT z({NBS%E(CKT_N)c(NVyP2;NeQw@vXL`+LE=2XFPL_wnjTi^?JmlaGJmLX1QISOD81 zc2_~u4YAnfDYgrD5^N{z3~YTvY%I@ug~oH|U6J2n2ww$55K%1NAFc!^+!stzm(m{5 zOSq%~he%X{y+dIKz^xL+z={8KN|G=9g9*t`nY8428vepmQjlL_5;V zFc)eiTDj5$=(XM|L|xu0M98sj^JCedKbwQ2FPPhy#QQlorO5UJyc#@V{ZJF=A}t>t zK=Sfu5F`_<5e>SoVeN%M${jvF~}qmSu{<3d(WkA8}K$hl6UICw_teKw%0V zf$M}^A>r?dj3yv;+-^y_Au3ij#m~#--McaOP|QB?%e%WtJhvMok3ZV7tYdz19VkB> zVMX0>nCs(kmyk^>dJ^^kVO0Vxy&#{lhTl`plEeeaG4w+oY3*UAZY2}qPJS*V4&*eR z<&;Jo0^VDbTwcv;5r0D+c|psOHO;7sDGIQK&+_FdYHBNm(=1X^WKzf$t`%8(vHBd zu{`S)viOTG&A0fSKsIz_f|>y=PZy)rn9(l9=7D|H1zfj>x`4$fL>zp|aR0AB2DRX$ zPs3RIt6!qkOULoKJyG1|;n*CnC(5M+5;kk&X}-XqRKvNW9S699s|h;HZGi2Q*Z^u7 zX7@Pe^jokGfQ0MT80bDjPq|)H8&j8HYXpVkrew)&0K?tTkAc{rHt}PXRo1ip3Os5e zQ-Kt}neve8XOnGIK0(<_`*@W7y-3x9dFIh}sKvYVFz_mis2)^Bfa;>76&_$+L$ z+lz9y6N5Y`yOt2#O_QD=AJd)y8;Yv$-yc*On=Oreg2w+&A&pK7Fr7Y@PUf58q;osl zlTmm)?I$P1`4Y}OQmJf{z&ERs;V>AJV+}*SlzB|S_vpZOmvsGl8I;b$r`?9MY}p4u`-PL3^i_Np_(MRw%eT3xUDNx(46sS&N%r*^n_mAGb#yaGLlyr}zPiC!H<5~pH zME;Rv1qQPr$@uyL<(k8t=r|jUPLu@VPxf$faA08%o(gANgk+-6{$Qi@+Rn6Q^*)oVl#H5B49BC_zLNg#HT1o zISN(TvV*Htw^+&S{~B})f&J>-Q2w)t#U{~Li!P_Evih%{cDVJlTX5DVTQ+?vft8He zAD;HsCjw7PbOIwkg1h%oU?~Qc+#?i&D`ru}xP!^2g=f*nDyp#u2&xV|%=lk{YUEO& z;;oyx>H?@%*d|i0hFY%1DXQ%b6jYz%VLF!vT#+=^D;VULUmWc~2IYQ4`{Zu2Dq{Q5 zVpGpUNzjo6mH<9^rOEb$UckrDgj^QeSnKJ5=I%_G1K;&DcRK>~LZMNgXrnJ`z>Nhi z@x%tJe-!`8a;EB$qFDC<-D6z|{m34}Cv8AG-Eq;i9G8VYm#2_HnFlxw&f1XIy-5gg zP33S+K{Fn@uMOYd72k3Edrw#-8;%3a+u<4O)3@J5S`iqL1YqZc2Gu=|N02gWk!v~;a?E%zNut`wyY(P<-HCFL`!j46l!M&Rh<^hj8;ny6Ce^(#>61&Xd^KT;f-FfC$6#w@? z3}HVU!vw=Ek45;e4e=9%hhK9X|71DfzX1Lf5&Z6C;p>WjY9H>kEa}@9_&4_OLr1h8 zx><|pAnx^Wh&s8vViidndZJ$DqOI(X=g1eovSnlX36@qo%;S%STtfM~tTThKe+4dr7N=`KdZX0wqHh;SUxz!x{ zoNt*kb^e8)_~=cm!&W#UIZjP|@kSsc?WTp&@}s^dOMi z2`$AfDYrcPl~T83u~7F#LUFRomhIp-$zAtFl?Oz4 zG*@{vLt`5KnhgbNri14A_Ir=pdRdxLN9`Qxsz`IVnB#k8*bEegFT&+G=CCDUb3i~^ z&!cg!hY2+H>GTw?^WKoV+<)wPhVRarBUHE)P!83c~T4O>=Cs-AAc~%~tG#{O+ERF{%yWpyfjOpS8-9|B6!PM&%!~ zaiF?5xBH_%wK!XrSz9>22M_b^Lm}tcvdw)e&d8%eVTK;?tM5W00Cg9??)F~Y+R9mf@zwk|j@qvEj(gKy|h`?>-Oa01(Zf72LhPu7!OW_&J83e{;$(ZLu z+QWyGEqmLqe34f0nXjtC5>B!Z#)`33R<_B z52V@y!b9Rx)nlWR*9n9!{y@L(aIdbb88*Y!Ud>#oU61iqvNX~R6Riw(QyJ8jiwwTP z!~ArQ-wgY&gB%xAU3P~r18gf0m>&J5J{1?sB%beE;8!C$yN9J>FQwwlb%l!i@GxgZ zsOVshqhfF#6$;a%;^MC&QoP&O=a+7evS2HRf}G-2&MmX+FrgsrZY3tPq;|6O@2m75 zy`Ip21s>+XMWGbY%$2xlv!$yq2DA*t>a5HZq19869d2@o8`Nv0zq2 z$~tQMtq7Z;`$7ed>$w%oy03ZWy<-H76G0!#*W-TCweyQ2%EA6I>;C6`8KTS$Dh?fw zb4DGILg)#0w(WPKZNE{{ek<`X-`*9rAH-K3iqE?%7P>9)($#uhti69)hGczS_ZX~M z=(PqNkyb+s;5<%bRQA#rAqU;_a(l}Bf7FILBRuS4c{o#fI4CJRoIM&mZ0qp=q*^cR zrH}DYK`9sc1mAXBlwhsvMHrhzD|h>qPx30~TJ5xDXhN8@j&R^+P0vvdb{ZobY)}CX z>i;in1#qDCLJt1+c_=J!(Em+OS4)TsV${s2ztD56_veQndv6T_OJ;Ap2pHx<{ zO+{As;9(}-8OjQC&mVZQcp)Okvy#Gi=?r%BK&ascxp){e)ArFdx^bk)AUDST7 zA}yM+^152()qkwW>jpf`nYa7$nq1}aHNZmxDR1|#$5;1FKF=5nTD}x-K3^_Z#tr<( z<7Te+roIb3D+FEB< zYn>fDn_x@Vu&=7s>BCxeW*hsk?(|{VI_RTtb8n=h+SnsirVp!pASZZ0auC)d6n62e!Qo;WY~)DtHPh&p=JLkZ7 z>{`?*Ju)795!VV_c2qoe5Y`dSKPDba9~O^2ga4Nuj&+$M;<3@k#$%fuACFBvE*|T1 zLOk{}cM0|BJE~t%eAK8>{YSY~mr;pQy#LR?Aw!3a8eTSHWcfPluDAXMc}p(gdJArS zPEi|@p*AF~HYBMH2tPFTOU|6Y2rn6%#fvP)?oCHC8Mh4o?FOoq3{tc-y57kZsLN?& z7D#?V0i!_ojRc4>QO_HxBlI9tdcw#4E!`9RZzTgJgOJ`!4Z^ukAc7-5ON5CcLYGNiaTRy*FOXHIa zjVFXvv2=JbztaLPF;xMNCjdn(5QM%@#D*6hLP@{e@GlqMv@spitOt%xwkz5RSu$}K6+gsK%Ep8+xkSotRQQVBD z8_T-Sllgmx-N1uPBM{{Y`6Oy!GYb-GDbyzZsty-NcSAO$xu`~@+2;^QbITi@G+))i zXl)?`s|4A5xY@;RRR+2`)EBLku;7(0;;7F+Z0`N!b~J&Dk?<*1a>S3n-RlEt6XqC4 znM-C;%XxXhMSb+sK56bF$zmNvFsMk>)@aaECIDo&rI^$XH*IFVJ$oLkyU5bwBJbVUZ$=F8%T&}W+LDh z@H5?mG?%~mE5kUV8Tg1eg{MUv`AU}L19xiXL76PpwNT3H>^!nsig!enpem(Q=@;e5 zHj7SfYbOcRE7A4NEisOAH#?niROKJu?wD}E%dM)?U*9| zzm5dghZmtQ6$EAN^F?1rUkiPmaYLxDDBKhlenJbMcbycz`Fa%IFIu?X#cWC9X>xCn zAea5YaSHe2?U*TV7=X{FUoJ8UGuGcRv%X}U!wj@8gMZt)-k0@Qf%osBdGTqz%Se+# zhi{aRRmi3KMIG2pk})@|ug(w6%*K{{mh;P;XUn9SoH3tm;k+|GNzP98ogg7DALHRs z8(X&acg~rTAqq3MuWZwTR)oYyR**^j`qCXFvX^+oqZ3xbs-QDU{7364@imV40%iVT z%T$xr8Z$PaRfw-Pqk@Excw6?S?H%z&_{i*l+*DA$2=_fcRp&m%V82&4(f<^KY$B1# z1n91~QuduTe*BaSVa|1_Xvlx?Fk4;c)afM}m2PcHSK`j3h7C~k+b2*oNJn?Q!8_RW zHIx&mS!)~cJ6+|C)nvm~j4tqpS- zUbA}(NWm9nWaF2(ojke$dcxur%Ik4Y3a|a~DFHL#uZ~xAoKg`jrqr9OirD`lQ8xHa zV>EAb4#kHBZE=KR8^<`d#aMa}_^X2@=!bQrV?c~pr{Bmq1?ie`3X5>#^(njy$A<$i z=itzDY4Lhi1e|(>)4*5xat|*q5;zTjGr@;b9Kw;VR*E;VBH%PBoEdzTj2RBj48YmV zhm%w|JZ8|0(n8W;`+|3FGj8Tnjv2J_7yjg!0bdksYXyG;GIUr3ED}qHkmuNqb-8k<>)% z=PVB$W{*S76IlMi1ZFN^CKN$q5{7@lC6<`;a8+5#OvI|S?8!>BUQW;uel5=ZUMOTS z91(SOJ2CXh>E1@!6U@-6rD^>b4@5)P%_bvh0=8=eA?|EH&2Xub zIq)>-#JKxaHf#ov5R(bS;MQ=ynzgq5#R)CZ+MndYM@hlB98f?bE(Yf$sFTma+9X7@ zG*!lCtrwP*RR$_u(uG96`;+U?82CcdYV5}Fbnh%@%kF)ZqMEBm1h4vkCw_r3Rd`9PmKd#}Crn)cdj zk7q4@yx+_l9NL;EMSu0j(usPieSS>74Xq&De5sNZS4$YQd_DPyz*TxJ*S+BdCNL10O~KN#TfxA8CcaT&qbkdr-crXyW=%R` zNdYBaV&T{~PrgF-vp#bCcD6H5ZD(qyLc0pXDsK973Q`cr5mKg%yU;ajU<#D=Sol8924vYB7Y} zkreHdY3`wYx4h)cdDzIQ07^~R4*2HvG}9CpGugfy+>I8LE6v>FKT7r{$*BiA>SDX5x=OM&-^P_0-&Elg| zVyGn}>C&}ykpsc3$?Bh9c>aaS--!x}PpE>L?L9hIYwQk|Hul!g*aJ*YgMQ#)^8@D# zFEv+tmocj)(t}y)y=(_astsp@kre=@8&1p|mf>vtf*Veumf`dTp?Kyr!?8?Q7E#HZ zOWklrMG=OhCx%njD{SbsK>9J|0y)JR4V8RU1&`?iHWMdU=sHl21R!%ZmHP_&sf$H|zX} z*($^sBbgxm!(y!5blx1MrOFNe#UojDLG0KpNLPu<$EQBx@Hfsg_z%qoz9WSn7rTPD z@14$}pKgvRO#7`ll`@3YlgpqxrVDZmKXjgz8(hezvct?x_X3O9EAtH!b+YVuc`%3O z(}UcENH|AEu4jj|q|e1VpLrkzVx!)(XgzxCtt6w8vEPvBXV>CdsGmS)`;_6e_%iXbA874!9v*z zTo_7cMx$YlLvxeMcaVCVbxrjRX$%@#}h9eN1ia=u!0{ zrv)JIO|6)D9m+N$C0Ue=S=6}Nf<-+n?XS46MBX${;qyV$KHYaL9}F%Uo&ooA8BcMs z()s=cr?F7$N!%=#yr&%1YMw%Vk#EO_ka>;6zj=FuKc4&ElHF2x^Av)w_7qCNQ+)Vj zi40HijJ-Q86;B~3c?y^g1>O=0L?cOlv;&7Y5xPuBaC$~X(a$Wg3(*pMAk+l;O?Kxz+s7~i!?zs8`T4Uc(ld9ejW*E^^Q|PbZo)SR zZCxdD-(jvqL&NXsO1r3(o%kp`R$D}RCss{AJzVt_SSV!b&nJ!xeiJiGYGaahK`a(> zXLDFgzR8xgY_SYaMs|ymnReQ?n^gy<|B|hT_-OR}sXO)@tzI>&e9!d1S-x{xa4&`B zd(Bd(KCM~u>VABIhH*MlHJ>kR&YxO0z23NtIIVr!d|Qh;G6b(ocx4>HwUeBhi={;X302inxUMHVa z0!A;7t0U$GIfK=D;ZKrSqi3eosU5Vd8rr_#(&~PGxLqY-Wwqj0_qk3f$T3*uel>g4 zW<4Lc6I&H(a1iQZD+x4Ibw1X>y6g2^n){^hzyA*-ujz-+BD8YDIEV6*+s}%IlK^g*xwBp2%mGja*p zNCuWv9G5H@$;)Jjyi`7w*A`dDhGDHJLk6|m=ZR^$QB%Ix(A2v3D`~%VlMB?>BN4uD z%%OjWs~moJL$KL?^KA7Ir1W6X`u)s%Q7lbP@Q(=hcJOF?i?eIl?9l6ZTWR{BA2z)I zpQxbi(@_NkKe0=y42-nM+X!ZL?Tqh&_N`3}`6R~0e{tzE32m$$Dw6PCb9-QtU)G0e zJF8}i)yRDEwa5?6$`*ZAc9C9fR(6p_OwB86&%%bk8}JK+-W)m_uKx+oCQ)U zXGgs;Ak~*Pr*|J>?nh~x>6<-)(RXw^qpPf(homt2plXOPU%T5G6-;sy3&$|}Bcm@M znPW&6v5M={YV&$tt!)>bAo}{I8AQi{Xlk37wVzJQ#X1hKIy3`)v{t6eb# z$Bv9`kGu~YMjX3Lz|aO>`zM}r-%Hcr)h=vV2U@cA=ucjQ$m|y%Qy}5h`ExHk0y*%h zY`xMVZaV$h7x+Z>`d`+ClhqUzs%Ut+VL=j7nxZ0aRX3T$n>Ox`Qpydd>t?bKu1F1U zayQj64N*%KqSpjOH#?$>!2qHSLbO8$(Qn&lBI0h(6nTH!8v~+S9MP6KAhlF>w^L96%|Hx7AdrhQeb`_x9nJ;$bG`ns!?V85EcJlb!FRy}W;N{BSEE zEOXekayPH4w4O6!{cT&5a-F3xO-V}9-Q_KM1aP$jJwaT4TL$s?cf3U_FZs=xTp07g zfHZ3gBUSQxU69wf%j?H)cX_d`DtYfGQ^8Zym$VHjvTzDDX(CL~nGe!aaZ@DCJ6QGkfmZg)HOgEJ4fh~r`M&ISHy2?^Zv42WRl zi*j#)fkpGJ1u}h#)_{xkSS;1n?fqRJE3|5)gRq7$Sfekn?e3g6}f@Rc+RTQP%(Try4idN@;e> z9)_zl2ppBe14i(bNz9kK5H2!`8a{s*Lg+fHB7_K!`YJ|~-F1ik1 z9vo~;3Y+*kjR(3Cv%%V%_ym(Ybc{DeqdQJ=?xKMYL=EH6)L>i#8i;q^+5!zvUy<(R z6NqMujbB0~qa*NEOpvNY`e4vFN&1(=hHV9H~DQ*9zulzjBEA2eAm)4|5dWa zi(qZ1pH2N3MorQ<@~P`ooh4FQv@Ex4$c!pr)?-prjVVk>(YtblWlZvf#PyV|kf=A? zeHf$e07xau(j0JVr=`-e@Et3Kj%FA0xVz@NdK2)Hq4|W_q=XLs101)S`eI5`pu2mY zs)YmBz+zgkPe!OE8&l<`t7KIAT+{(K<6==opLCzvF%2WTvrn1He7W2fvq{{mP36pJ zKarvS-u5{?wr|pC=XK0_U7_E{Mz*#!#wdXU|!hnm{le@TbO_Q4(nW7^R7UV+Q#o}$c27~x2t^D z?h1Z;wmxO5Ex1h3Dh+#>AO-3SJb1LdOmIziSzZA9a_wf&(R1hyo^1;s`Z~1RY-}WkO}l(A#XuY z-oZ}ZtBx`9UiMDN`(5|!39vBTNBhF=TLnLAaOj<-Ff^>g5z5s13$bzUXbLgyWsynY)uPF4TBKAWlW)COXqbEeAbGGKr_~zB_x`$1RYxh7 zh6elWbsoSJXFOlnE1Co=4VQh0UEMf<0?8z0^!J?*qh^r?~Ap^7P z+r)`j#k0|}=s`ozWqH|28F`3S22_U8w5njFa)vV$Wpq-|biF`RTI5NM)L<@~{($~= z?<&gA*|EyMy4^6T%lBeFAU5b+e|0S^e5M#!hN&o-HKJW&Ag#ac^})zKFNv3%`j<-4 z4U102UOw5C8kyQF`xN@e<|2qjBW{{oyl1`p9mnqH-mFERdZbrp8U4MiyG4f-K#S3C zlBasT@dr?LQlEj+$20zEeGUI4X#5k*Gy9kIPba>~Xa7{*{ga9(OP|U5r?cQx(r{wf z4)u*|z_;)nBAWVM}ks%K^@8$>Y3a!`5O`)C%CUzkggAcDJG1b;oGB7$#!D2m`A$ZiC&{zPiCRZ^MB zAiFb@%`r+Su4Ie)QHo-7ZL&F`O7%9ix7nPbCvd4(G+BW!3SPKV_}d-c>H~f~z9lSS zTeZ{C|KqqS^xvp}8xzy9f8W6)_Os-{aB)JN?9uT23s%+W3?{x%UCY};F;$T~yG6EG z6)z`N*S3WfW9v}h*NX2qKb_Q>kobq{RxI)rL1pI$9`M8uhD4Rk4}9Aa*)=W#&YbjF zo{hmp8Z++?i5o&r=e`@YxEy!jqSDDqUM9DI2I*c@i;Pa$B>44Aj^YAFUw^T01X$Yc zsbe}QgBdg-(@ozGP`DE(m_=z^_00mso@yqGv50Cc!ssU-jCDz_Bt)LzPo8& zYp8!8DvC|R!n&=I93<+oh>2kxjfiklyNTN2*_hw5*Ht8dWam%#pt2CiH#WR$uJBe2 znI?d2rbZ-Ql1U_h(3glv9{cV;bjy7oMCK7CQO62?kRL z)z6eW_F@s0q8JoofP+hXgS-sMIt^0@Cl4T^G;~Cp_6t1rw2w;q0_GY@tHx}A5wo-@ z%&|EK%tc{7Q<#+}+A(7}f12%2b#uQO7q64skte6R1uy)WQ|0$`uPN`oB;0K-&t@PY z$hm%Z_iRFuA9%M66xr*>;pCa8Xz@_;OFlEJD(fxNpJq8Dlz~D$xL`M|LEd5So9EAc zxxiTqQZ}K@H;%QnpwdKLTnh?Yom>ADnp!u9!Ry|z)MrxzyHoGTu=Q~hPOQ~7+HGHl?$lY8I4i8GN%Lh^m8Q`@p^ z0m~A(!QBV}`39AZz@%H{q&G?)R61@|I*efZwK?dJ(4;r83?)H05(WF|`4?Qum{8E3 zHyV^VS`8s^wBXe!Qh$s!);{1?Hyrp}%afX{MGc3shUHBkYpe^IR#9~(+wnrCfRe>5 z+WX?{LbcP;7b|F)NW=$uz8hoTAK(v=ij94-BBMUPayU>~V0)4{b$J-4ZDe_uGOo%H zlH)^2*@Y3Gp(R)HHa{#>Y3-|vL54z-^pCq)N+&4{PE#GXr(G0OF_vt)f$;gVK;L?c z$cTZYHw2~gK82LP&RMAk?**A7>aL$Wv5LX)EA_pn@eOuf7Z@q^#Ur&&M?zWfmq|DuCr@pHpwgJf+FXmH;Z^ zo_H~F+uU2Vgxl0wK&EoZ-H%sGSi!r;6SRZrFdSA|&O8><(P=sK}!Bssh z3JKB~uSE-X8=_VjVDh>@KL5hhCDKoGa1-mPm@7b6+ao|7cUop7w#D}_rG55r&NYCJ zqmdR73ML;^zab1mK4t=Ky3_RDu<0iVgx>Jp7zmBSZD+lBr6?_N`bVIKe9Vn4bK#JXjscDJe(Lr6Z!DL}EhN<6_w z3yJ!R>R@@AeT_bSRd1~=Xw7C4;!(`=+@^jlvdaxupMy>P$9tkpJuJMvl+~X%A-#nr zWIrLwkuz6DGg4ZL2{m96|}jXu$^4)DrITzkSy1JQqx}@~uXU$P$4RrexvAh^IiC ztJ1FCf_Ckv=vR_mrsTl+@=ZY@S?xNsYj?GkAll+7h0UF^ql1hjMj7UIyS0dCSeSTu4-3d~;>A=wtzdu2 z3P$kV!+LXWYgK|Sod6A>O~F?zymc>VQy*(iP|6f&?0W9|ouN~jePt4p3B=T~kKhr1 zEsDeZ!0{$zhQDEGr{v&o+$D<3m^u79Oy%aUx$_(e#*R@HK;W-OK_r17t z)!i&(Smw{7@J<-s7vCo!nB=m3oce+=NDs5sEn{&YdaNw}cR>R|X}2}IRaJ(pw_wQj z6BI@%My&UI+0N8Kx898IPFoB>!e-q#puOkbT6Cr0t2~!+7`jbf83&^IfeU~z12>zb z9T=9Z(y*uw75XT`krc+NeT)W@ii($xN0U>sKLkv%*w2`FDK=gUYPA zqTJyi6V+zAmGN#i=$?A5WloD|JAn|Sm$Vv#5Fw{;Rt-!2R+1IWtcI8Gj=w(1sN&#) zbQ&Az(|0}p!Vr-cR5q&bgX&z+IUx1=x!=O(ak@T`1~G z3?EH4LRpk{LuV$+{Q4+S=4qRvg}(f@0Bj zQ_)}kXi)YP(@VwVkc*fG`^%0_dxVZb&l=M}gbrBn$_q!faPz!>$awh5dGPS7V%z9;9-B2-GpjaOlEZ9zysSEzBLybe z{{xV}Par=aVS9-o>3k6+51;Qy1d}{-3P?6An6{%_*7IzFGcny5TCe40gIh)M$_!C_72d0D$%{!* zx!5Njc|kjUWdN$!(!NU?Gozf$2ni28;^W9xR48)wM6BCi2xY*G2+=+lx~EZIQaX&u z^G9}Yf{Pfh{wgYFp)bTF>#EJARN2z8lh?83=Op!pt9T^WA5}3I1Tjom{druXx8Tn0 zCuBNukCByDiIGDNfggUzNbtC1sl)(kjiU7@l9iUm$OaH-&q*N_fY4NTak@W!k!*yny#V-US=ZM~ zZ_OBawNhh@yehm{j4XILwmv16o7P;MA>nvP@EBP{$P`tj$H)|sku#0feVBMNLq3V_ zezXy--L21S&^3DMR;6W+lKPgbNnOJ7Hak6D$qaeZ4WTkYB~N{phIR3F)PovYnQGIY zOufyg-KxUxqN0_bKkngoL2ZGn1FOPsOGF;Rl-$z^IiMY(BK^7H=q(tI{e+9G;V3O% z{%oC)r#WUg4(*21EF|RXnF+rwIhf0^Y%2re;rHQgF6XW>b1CV1 zVdHNoL`CZeIP@pA$h}Pu+pQGdOmJ#p);pfuY~ivT4O6am84+3HBRTEYae>Tba)Qfb zmoJ%2&bt(u+;Vu7$wP#5J;v`?6~B55{Mt{rG9jJB3NIm@(v~k4ua?T^6GWLqID2q-9B;QwJk)$!Ttn?IW$q+ikDW{*80Gw_8$fnELAG9P|H( z*YoLN6V}u%oYwoyVNqC*s`XiU+Q6tnvnP(A4e+wAGFUC3N*`AYhrr4+vmvU6Cn3|C z(lf_^26`JMB*@hh11SfqSR*$g-wGER=VbT1vrkpBSb2a4yCu<&1l9$2gkEqX;l+Yo zLx$I~V0V}tiPwsin?5VHsmM@XKjh+7UUL6Id}`A!r5T-#tA*SS2xBqd7<=sw_@6s8 zkx3;+zCw(1?31=qj{d~3{qDgJgm^3HPV!b(YWC+(XqJyJS;#yg)Y`&vH<3u=8CJMK zqFktpDZAj%_+nGP=}fz7vw2{{RXt0Jo`odY=2o}OMym&{@vKbW>W%4JO_k`Uq&pq} zZG1RXJ>~kX$N9!OFoG3l4jVZ8$j_@YtJuDtU6W!vXTyT5byQ+&&6J{(2x8)T*D;yE z`cPyyxhMqIrn2uHr(Pxyu$!`vwdGu&$&HaldvJ9gSnnEoYcAYTD_!HQXW?bInk9$C z)-x{cdO6OkY~3CgU0TJ&gvpyWa-)I7oe12W|24Hl$Wfel;tBMf#|n=)30w78gkB*t z3aJm+{=GS2hmzNq*|BpeR}nv4GZw&7QM_p#yE5#IPGAA&Io`I)~t zc*s2@tio$mJ;8abq%zOi^qMPOUV=$>Kc43IKo$pwf*nWai{M!Ib;lu?Wa?eu_*53h z{D@=tMQ}WPmE#ahauqnHY;kR3wjydT_3&fkLGe{?I&*DMy->U#6w;e1M7wzN11&)} zt|NWoiOYB>x7jx+7eR-xHLgc`Ve$f|hAOFkJZZfe9Rgh|eL{e}n}e;~vq;<&h6N5~ zejFcYPM$e2i<6?G@CCt*H`6jva)%lT8r3t`v$I$f4zak-Eoe(4)hkXGip)RoNmcm+ zD~msHl0tJlF>EPRrY_#Ch4PRr%BT3w=H$hooV<{K#C~OT%xUYG(BHOOuX) z(Kp<}Bl*lh70Vt{Aq%#x)ehSX9umoZ&a&y&tApyvO}^Cu1x>1)P^VLZ;Ll?!y@eRV zej0Mk_!D3#Az$V*4cQT&?y1%lB-+e5{|W2?8LtJMP!9_)e|YjUT+h5<5k2phf{Ugl z#80Ak4Os=Z2L(ISGzD8Gf^+BX3Vx+}94a3M-Q*g>>6CEJyXP>dY1cHS(y6<{g_K_Q z6ed-T6nwKlQ-Ax~?Y$cxrmQ%bGxZj;SzdLz-(98Snz!qnU}*q)CJz#S+lqUB;B`tzViPn){kduAEtrP=ME-^#gr7>wmwySk zq~oYP1a)W+K|8EfU$nrV)f&9%2G`(H*&v+hnd@dX*=;1*XCGGty_6}jvxelT+KTHg z83k0LMG2gtY*rKYvQ1}Q>*5uPi}Zbzgzc>nHaTn zR%~4rvFVhH#FkWvO>aSL_A?5{F2r`=8Db;oVvDy5hSh|nL2Ul47TY=3yV$yd*!0Yb z?Vo$O*ccj`*oJG1&5CEmri3UqFWdC?AU2^$PC44ero3d|w;;BAY+?$5*Am;*E^2ra zH7YMRT^;Z$H`x-rlV^m{s7XF-#-ed|2{R(zP$go$1rgg%iP%Uea$|}E=gY@PJInly z2pp?7kj0&)p+$3A-)b|JS32HVt=?(R7mMzqh*bM33}^a?S& z7VP8O)h!#+yc%_Oi@1lOlF+Jzj!Z&93GFdqsMx|Qj+Ti6Bh)bzGYN*FEt6mvVAhK` z1{-h$43##bgs5z%zv+~q6tR(EV#_GFE5FKncZ8EUn%wZIv;{x(iSGko?NMq)|+! z(@cgVN(P`&Wp=pK8G20b_Q=g{Op+K>Yzdd>+lro{Vo+;BVTPW<$%Wr?jr5^L4e-xk z#baxgR6;alJRPK76w<1l&C9R#cCcCmB2qoG&gKF(NJ`|ZLK_&a-3F|9*4Zc_+Mkzg zdIFtD`$CcY{cyKG~G3@;2IT`oA$iHaZCuuP2iY(t%@}VaThEA zt8Ss(7kQ%>Qf|_xLW#)`_0)u4d6UB{H)$9ANPr)%3ICm&17m_O2!2(7pQs6c%`Jfm z!EfM_!>QxVy;$%(o%rIdfp~J0dj*`CPr3be&8P51CYk;LcL=g!>Ne(6-u#x-^e6wy zXM880vB{HcXvzwV*@&n0x9t(4Q@+_GY>jsswnum*PwpSFY4^}NrZDv*aF{uen#Hf4a$*9oqb%iL=@}{p2D09hB-9Hz+ z4A^P72U*EV&*3>^ncYY)<06R3zu4qNwFuT!iD1tl0zOqG5!`>biQvQcAcD#LvLfir zh+t_A5eRJ*fnZY+yltL|;JJHU1RH_~Hu6NjCW5{o0?V5&0%anCmjw}2;r{fA84);R z84=VkLIi&jZd6nmpwO~aZ%FHJds7g>2VDf4>lS|Y`|wD9_vTatf_JCYSA^B{BK}bL zLtgmG`>pVM9-#0y(!%$uuqw^p%w~2rT?d++4!%Np_ryH8iPe^#U2<=xs(5Kv_`VJ> z$!`A^dIdQF#S-AwU#tg5-9IrO$H=FNy=F^!PD)Xwg9|%R_NoUVmK2F5d37(|2~;_G zL;gHq)?4T@>}SA6Pf$=;qO^SZLjtPgSfA+79x#stDtmeAPq0eUzXVH6 z{K`8-Wst0CQ1dK0uQ4Y2`LhpB=q2*gDUS+2BNdsn0p~Nv<5sh~CKG42^VMk!VbWD? z8cV7x7qXPn%D!N6yzGh)7*RwpQm%~2R5e&?Pxk>g*L#MsW;)F710J50UU0UmC=p|u zDrgBW77H3ua$3kJkipM_=0T(>&4Y}ZX*B)rAvH((UusFtEUEu>%aA!3#mHLEu;bT= z2Yyun_(_(aRd~XrkX_eCG!ri-O3BVkMJ=yxQyUR7$?k{ORLia}$WF~zQHxP#_xyU( zjspX-Cr=66cNJvnPaLh%v%j}B*L^^kpR|;rc4Xz+PA<)PP-C$vOj~hX-cWa1xHi~w zFs+t=*d2i0LiP5O+KfsXzuwvM7HEh(IFvX1qWGdRJ!8;1?2dBRhs{ym#3Sirp#QL4 zW6VkjlPW;lO@niAU^o*`;m*;~26{pEHcy_UO<@^Gzt>yk!WDvEvA(Wnk)gdJ31d+R zwl@S^sBFXs5gqqy+F-eEE55lQ^Jom-qM0X?A7~HOrFFDudDRYq>G-f2#gQuT&7MNG zqGqO)7pR8vQQ>_OR8-Z93*Zh#j7n6V4`png2+eawx zCb_>XK#a~g$7h+haT$6s^V)6X%0o46DcOU+08H}GBJYvfsti(ZK@Rqlx}rhqJztLf zRFs87xk0Xyd>}_pold#dSmlKg44W~(8ejPcaToLdp8`s1FUS-Sr4=_9mQM4DRUy@9 zzecox!kvuKVk(nz z!Nmo%=`bBLItcZ@-J^qH)epCN#^yKX&2RZ5*8INkD9vxqo|Wc@*%hHge{Obq3*xq) zRBC7|V@4(C%k3tFO6D@Z2Df_5xYh*1lqOFbGd8Id0`8PeAYccWK4#3l*bPu-IN#ly2& zG3X6G3=M6rLJ4dXj=hxZNxf8y?5f<<^_W||a3+r}WW4j%$v%w={nX>EHId1+nl zm;Arzt97~jWuAA*wR|7<*1Fus@2kt5cz<1Pe+)-u^#4yDt;_xNvC6yBCaL2WKdQ@} zw6-pH+&AiSU*vfY|8K$X--k4%$N%@>_ea5V(<61cc|WYnUH;v=+;91<|BwBCUGA&o z>HjAFKal_9J=O79>%Qu>Xh+%|)zdyg)gYtNYqI}=YDSB~9rridk-S?AF1F zNWf(JNKTfStG7FRtXSMMFk~WpejF^h{B-?3l~$+_jtfz^oeXbzSTH*^2cGP+VAXehS2XBo6C@zoL&!^EOmTvfV#jYDm! z{Lz-!o{WN9>a8&a_9u%>;a!KHE)CJyiND{srB23!UTt%0hYTDCH~#{XHn}Q$?tgM= zsa)|*GKy4=mdr#ZX%a(Af-^);acu~1QphdWXN}po7j&u z5}1wbqn|3|^5>mv6|8{{pEg&kz}CN-XH0A z&g?*{`^IrOoT!7=-167R7>%eIz2DSpB%0a!&58wiY41~UU7>~l3;pK9M2J=W=5zZa zkeXeSHK@I@@ehC z{0p^N6IPi_OCUMKJQuSl#?7SNEOXZMMp9cbg?{K6I+m+u@iA5PyQ$G4TdCR1str=; zt~+_v8NJv(A_88xtD-WkpuSVr6ni?#gI~Lw~+?sYthlJA)mfKhKahxUeW>`IYwF z^NKkGG*;7!X0sn-z=R-&7Jsxxv8 zmKK^8%Gc0X3NY)-pZ67^%;;a(qP3)L&r!HYI%hikVyP@MKWH*K{OyF1x_sM+y2WPD zy8MRuHO2IWXn>HGN()bGVR_s7f!4`)${t=ESIt&2Q@;IAwh$iaLmtewELu<>e>B<; zsNwj73HE&GlVB~Vl2r9g!zj}E3zSi^4tZz`UR;`ul4fJ>>|?}CBUYp`>XG*Y3*YW7 ztK8XYOchDc~?Y;lWUbVM16heme zx#jz%ugi*(MvT|wpf3t>$5wKct0{7*nI;-vJUD-RYXASf=&~d0mu3os(+V$Y#NZqy z>amtb#YWV=3mbbn(o7xe4OgPmZa@Rftp3U95#TTqx9i*tGo)eZx7iHowOOXV1t>3n3cvR^w>sqSX z`-&%R1kJE)DfQ@__1oqa# zjgcwr*95y&HEap-#TnZ#yNs^3-INXQXGc?V_-mq!zQ=CPR{J_&krH8WZ;=QL7p2Hf z6(8yoMjr0{$jXXoT5|{W(=Igavv3P{U1!&XN3CYI z3K`oQXYMaDi&Q&XGSu*qr#H7#8Rqpc_4IGkHWwQ5L z-OvZkS~l5VL?Ezn5j9g_pm1v9|To6k5>Kg8M3Oc&JGK3 zsBgUV0AgpWL(?2y#OAgPkU@x#;==vmrS}`x9z*#KiPCar&_*%3w%c`Kj6W5#aj`y zRQaSB-WVZR`{@&T(ZZ` zIIORrp2_P)Yq@TV6SEFBWgyhBjn$AJSZTl&?=jQyt`mgIbUG`;Ryg>Mb-PDajO?7r zx)#}Q5@C=nh~%sm$R?CPC}v|M?ZN zW(qc#3<|$)Qx@AJ66!CC!t#i!P>0e6Ginu9P8JcAP>5wnS_7>1dPKuaes&8-rdmWk zwk{08#M{D5Zd)vzG4ZzLd~pKkTINkZ83!~NbV+ZV>zkTmSNI(a^j&J9)`-IJX%|>ClAzuWaqn|eLlH%mzLM+sc}^|(upH# z4up{$mpNp7yiT4=MJ2?DeDNDM+Ei48fz%Q(<}+LD2imY<65O?>4m3MEaQ42^GUk*@ zf*ozCwE8#h-o3fWt$*VQtghQCnT_d7Q`eh;WeS=I)5KzFmnc`{EHa>>MZe77nz1q~ zYqYe;3fgn$?C9CkY1vK`Y}dbWHz=4pbw`S$C^>Yg8+Kt-LO#s{?@G(^Xl{ofuPE3J zQC>l&Q*Y#o_;TIv|2^xqrB9XXs3>H5xth}wariuaeXC@s^|?3y|)A*oys5T z>r>cB+v?4iH`eoW89y7BL8?LmWxMkFEzIeO;uD>qf!V#CBLz4GT9CiG^S@(f8(NYojo z3x3QBc`hx<>+tp8c!)zNDChlQUqST%=dXi$RRlV8L=g?-4n<~f<<94+PpOD)U_*06 zw-hi)@3$DauN9th!ylxx21@uD^#dejbXDw4o16>_5)4hb;caMT;mGx_srz{W#}^la zcSQo2n z#Uj;4jSj3t%<`XE$*3{zmru`#pU0I6;qI=!E%9gENh~U;q;1C#cjgCnRw=4k1GxTN z;d%=Sx1XlEaI{7V`SO#3pz-UC#&6RPi#y?EPK%mfm$>2|Q(vh_54P4)hU$|;J|4|< z?$qa$SYne}8#7bO1>Th`i}~HBX{6d^8$oTNFqr=rFL_?!QilwugK}IPbhP@z^Xx9@ zWLe&QWxJH%Q-%eI^f*tTE9X?K#c-kTJ++3aIJ@G_~Wm9 z{>5vOvBHQDC(q+?)tnP5Rad6x42vH70#^1bnS#0nAoS-gv5#M&CE8EA#t<^u7DK$R zlJn)$#3SudZ;f)lA#fVTy_fXKGiVqiZ+4gvK8*^9TI|{H;ZtW!=x^IMgirH*$KPvB z`wds|NIq2`m1*JAxFK5NtL6%y8cFbor9J2hyps1?GGZ?B?xep}?dlUQl`SF5admL- zUF}ydmCV2_3aa4j6iz`>az=~j3YlK9g-Df>eIe7)W-^z6PH5G79RnS40G<#*jhp+% z;kH@?Ee)i5W(KXaqr~Kqs45t+tQmAe_zz_@>81QsfhO)J&wPk7t-jXpA`%qT%* zqY`q5f{pf?{PO!2*(fbUHY%PZ<=ACto#YQ+$AMVAL#u=(*_r*-lRxyxrU-n9Y)bsJ z$mT|EB!!f9FDBnnWe%n08vVL-@8#Gb7|Q45xfk$>SlQb~@iEPF?|+c@;k}Z)nlw-T zGkJ^$B$ihtN@|)2nU1td3E}1&Y7|h?vu*U;2a2^mHGg62UeFnR+mH#m)N8WBVfPsY zO~-%39kz;a{tD4q3?OI}xdx!=^bX5iVl%5VY*6D@ulb&I)VLz2Ttz?~g z+sd%RN;2#yGnr=tjvv~;pPgPT)k+nGO!iw9+Rzz}Q&m$rp=@7=$TB#%LK!|h*`PTG z=?EG5Jgx2%^Y<{kjq=nyg~=0DXqIVk)f!X4fPZ#4rE$9DfQ=HX9r!#0PEL5A)(oW8 z!4<;+OQ)WeHbc{vg{E_;DQTSVq5PP^Pn-7W3J%6I%~uv+mTmB2N>&pgtXb{7J#>^~ zSIJ#`hBH$v)kNJYFbhdhNLH&F6u0$4+Wtq>lh8JMsVKC~s@W`;J@7?qo6Kg70GMK? z)zUV5tJ-D=%b?8MRh4Y3rt&MkNVO!3E_Hs!jXwCXilmVaI14NJVWbmbtl-txNFl+@ zC28};)8_Oix3eW3TvI@AMGH^LguD$UZ~txPWs_l$zLenACDhlUO4H!=m(s;DdNFwD zj1`pTt!Nh%E{AaendaqU0~VuI;t|x4MZQMrj$aa&Bn}lj`X}ZvOw^3FMB_8s9sJPb zxi*25ae`iLs`~_iXlQu?W6ahH3J$Cq3K^(FcJf0gIvvIP^=c^IA5pv?6nh94i>Tej zDD^n&rO(@5b5^M14kFB)v%vwyC(CDYOL^`Xf>*f&R1T1_En12G zQJbh>LO^ry`GH%6CY=)3dbw61R%kPS?6p{3AM(dF&E8pgRy6eflQ(-8CqN~kID9eh4Zz0 z$$1$|8a|C%x<;;@*0&l=`l~%_r+Ggz|84m}rBfZ&=N>2`^c4IkK zISjP^yvkvI1v9dr6*E$GG9xAD%T_UFq_@_{2#fy`35wRVRa`jsXMfwgo+Cuns35e_ zsrzlxUzZe9<)*9V3nCJ}P>mJ^ob24~hEmVVWJ!({!O6h%=UnJ5aA7~Gwp~^W`FhWn zm#J3B*PD@FGII~pZA)dUny2=TJwNa!ftTxE_?{0$HVQqJ=19g*SbMSd1BsTWp+hBl zXPB$<*xS?tEsnaGrS8%Or784||H5l!VN`pjb86j2Vh|$sb8@fj2>?kE# zZH$yIT$h`6`o6|C><0iQ*={pCclbeDoC(qRFX{+EIP!wjYDN1GKfGj+HdXF0@ir&T@hKM%&I;4?Qc|BOcVgA56quqL!T0OLU>iOR$<*z2AFYA zY5Bj)EJ{|;T}l4VoYrgUU8>U`$n8FLgI9alloN+t%DC^cSMOUy%_{2E;_NPA)~{En z_{W`lsl2Fu3$fM_^_d*TO_p@>jD+}yzIjU(=wOn$$>GYO;UK(G;jU_DLq}_;m=8CT z1&=soU82KmhKkzwJwiEt(&$|;wz;xJ_1MH@VG*44E-BX?vInMYC`sr_{=ya3qJh~o zC+(vu0(K3oVZ<8su+gNEKgk_&>Ds-z2EwvgP@iC^E|1Pty>;ki;thi5&XSVjXXhHL|O`CFx63?if)6V~# zw~59Oh`?lDbuL5OGDwa`Kf~FP7Hvk0@UuMy->UrIotK?f zE;M>}Ib#rESJQJGJ;f4j!;J)ze8ydvgj7SMwM2>4_5oc>VlgKQ4Qonv{y#r2`}P0b z^Rlm>gHd2GCD|X&q;vWI(RtaCZ-+tszkXh})#N-7_Ho7YvLA>D|5wk;?j&g}!&J@6 zih8SkUbbzX+EnbR=!+^RT{T}iDxS(ZVHMl^rZ$rp*MzM%Y6i$x111D6$5_FlPR5eU zOE`{vNgV(*A@<9>`f+dD%+Q%6ZvJTK0_4|Ig0LGP;Zo)()WBUQ8JzM^uK?0Eok^ zA<&x^WZ~@hk~zvErf%03ycr(8R%rTS{pAUK{OMonFL$x<`v2B>*-^QeXw5I_ysTNt zsI1(qL{f;Y*u7RZkBQ58UUpi!TK(p|g!onc=8^wI5;G3U){^Hc2-3MN3)_e%hD9Kj z|Nq+avCsSi)?oIfosWI|C7+MQpD~%%0{dn|NL>qmdiTSzL@D_B8!gVhwV-4^XHBrq znAqkd`$)pY6=ml`;b>BNI5uQ5u3nU@Pt67=SbaFw!1{GK*85g#Da_w~GxX7!!?6as ztXMSbaP;oV@cw={Rw#TD$+N3T3&-Uuhhr;1V>HH^R~F1>KaxYiNBD z2>8V{w5HO~OF17~yXdkb>s#e#h4WC|Qu}{=KK3hp%tMwN-pY4^lY4&q_i%e3Yuj-S zL=B$4H-xUC!Owa=b~dsbtH@5z$5y^(2iV2ErNMfIJC?vCN2&7G#am;V z2VkjLZDe`tK`M#Xx?(0~nC7H5fR4Q0cpU3>d;L$p}4yY~U*DFkM z!L!FuFV*~*kA$E0NCV~jO%rZ$>X>d>VU?8qkpt5?xE1lSFFP?8J-!(1&r-#4*q*_NfV9*22L!&)uv}~ zVY^$?A*nU3xKB;J%6(+cvy^nv26o16R2V{NC^w5*_WjS*Izq#VJd(418LjLQ2M-NF zwe|d0OzIM!RY|FaEcFi&P&zWDwLMszKUcr|?`x^}uF8Buq>l?wdb@IApXR6vl$)-t zH~N0UBl+nQRrJwrZI1`HM^+(D=PTqf`=2yFTfm3ng6DI>ZvO?j9^KZ(Z3JqF4;GD~ z(vb49cWYGW!Xw{ z?Z+{*XbUstLYX!yd2h;T<2OLifH7~Q88)d#;jju}5{TJgvM2NBjkr}iOW{w>1 z9GamCK^k+O>~-ITz1|E%W^c+(?Ph3T{i7WfUaT43f9cF-XrRlAUB-x`U%XTkf$cN7 z2(?#{Hn_0MTcq7JG|Tv@Voy>bmf72q>t@>AJNOnZCsn*=z5L>q!G&hF^-5?YJTMj; zbKP4BzEQBFmIYjFQ5pQ!-W8^7)V3e|Nt+zdF51mdX(<(W>>I4jbgNXlM2i%*hpL&j zQIGbp1LZzgY}A{-lzTD1?gfRgj8^S=ya86>SNn-ZlN!t7#?ro}`uutShVQE6GEex( zgbciprWs+u#P*%j(Q;XOt&b$VB+}9R;NM<{5W`97nJ+uj1C)n@+vf%;w zY;Ug8W_iSE?_RJp-5{j&{`=ahy+jRrdoiNlE$>ySMoM%V#uC1$j+YCSq^#7yZyh=G zV{p@$_{hJ`#BBI`)jHS8G%@z}F<^}m?>ww0yVmLH#8kMeV=cFJz~{7y`*X&^P~H~C^@p*s>U`d>^QTU4Q4GM>zy8ccoExI2vsr@9t0Wrn=3O+#boiT zz3ow3X6ZK6@^(!}<-)$AQ-sjrm3GfudTtCbg%AHRe;cgoiJBYEQ*b)K>a zlbFF^DSy|r3g7<{Dtvvm!jo!OSi3qt25PpfeNtlYZ?F3AMcR_B?XMnn&RkNMxt?G_ zVpe~HFQKxXvz4uytujpK>HN!&o+;0#^Y3yF^DSe}VfRa@^bOfcUs1c#Ki919&-unM zC2Qi`^d(fbOSZDF%Z=BtmN5S}tvzUr6x!O2*1N>unD~dTTK&^a&9(Zcv`bQ7blVPr z0$D<`z$ut<3-q+AwVqZ0o^H_Gpw`nGdG+B=BB-?H?!1)|3~p!dvhF8{Oi?`So7-9}C8(P_Rs-e1JXa=!GEn|fJkh)EbC@If9H&)IR5`3sis8eh@v7UazzONYy(Eav~M zN!{WR1~*f;IqZW)xuG1DrX%F){-e6*D5+E@f?vuAV|LROkehCdbEEmXS-sw)wd$FC zueV}fbkoEIHXdY)e)np)B$2 zC|_T6!){Hk{EOLIW}+>yJr9tBuY-sas)_J&2SJ1a zfFCaANq^NQlvo=m?+8g|&aKHc$HW@AHScI2BDN*3JSnCwmH=CmPnR4~QLk;u$Mwpu zqO66%xJAnipD)PX&UPBlzTRjobH`*d^4%yXZp{-RR)F$Q3#;1DdmFnXbFQr0TvQ$D zkfF*zw2Fd|nkiTqoWFp1!|l)Bf`4~8XYSPeb=&~5r!2Z+TxQQP0>n)8iSiRwZ6^~e z^+t)k*~jcn(-%7f^G1zbTRUCRf@4jEY!xG6JsHr(60^ z*qy5>!|XFlW+dsWU@9)P>Pfl_em+U%|A@jUt&1Sh|crdY^vMe zkl$@n8q!G_#l&;p;XVtIhU;%^vBA7yOo*7cYG%+UWLj?HAU5=QPV$zg;L*)BmWity zObIlaX2Rm-+a7{1YVHgYD1gVO6l}rQgrF`P71;-n#*)5AK%PM}N{QsTF`jg6ddmecD9 zTDClbXCG!cWUY9e;Sq(q^5wezDhRc0}{ad&SmZTiG1V#0}p z6T-0Ho}8@V1!5XC8nR-tlo{I^jd%T1X~i|&wf8sH6*4N4C;Q&P?vkSF8>vyvs4@a= zPtM)niABqG%XGo?-4k=Q@4j@7ZrFUv>@iH#JzNxM94`CQ?-N%e=uhU!Xk;_>`Ezej z!IRW}$_?|c|N9F=11r9D_$KUtzWap<34XPh*LgxaR3$OmSMXzG+t<(d<9tGQ1`I& zs56{S7i7&h?l*`?5Vsi>9NUmC6}<Lx{e>*f#*Xy99a*e1CP`F{!jUykCM_+QWA z@O}x;)G))3TJ5u0TaaO~$kS}46}7a^>3+2y`TRf=a@Wts{D6YR$v(P_2=7s4JjUcW zDzW92!dz~8#_r#3D0b47f9bB+%EwEzP1Ttk#An+5(#?Z(`f!!R#$Tx%?O4P1dQvoO z_k1-@-E&jzh?O$g7Rd8EDu9TmuIrO04$^5%LUOqURjsDqB?tqi8qK-AWPe*e>>;>TWR{zL3imX$q4y$$FWfm(2p1mn93!dGEHP~&=3q^f z%}&h0BIc?2m5O7Wk7Y-7GzLnpcS<_nXO!%G5|nI_p`={*Zzq$3_fVW7O$_tgLcfvv zs6E4nGu#C?l7z1+$0LpBnHZCeVa^^3O2y>1qdB;Z%yDr1gKgwjUNF~DjteE7FIkFB z8`BtaAl!Roxu7|M|Lc>{16_MX%_|f+Mf*7`UmN)80Ng3y&YZr0Zo{EXf-KlvB&{s^ zfXU)Y9!c&yQ7exLm?16O7c;g|k~(e=J;N-w+`X36-?mB536-J5 zHcK^>xZmlxgBPsh8`=TWdq<>$p+x`2Io+DwIO$YD|IDGcJk6kgCg_7J(4}%X1dbuQ zY&T}lC5OY5n7%iS?0CRCOUg|kQ?&}ZCobEQfJq!iVaeTtFvH7Q#1P^XIb95ZzFmp2 zZ~vted6^Tr)iQ{@^7fRaC|XonX?8lWm~>izWg!eP?SS7GmsV)3c!f)1CcznfVlcbY zxmQ_+Mv9UtxKvor(oIvdx1Y^nZSq=UskR|~agnYh7)u^)b6w)=b@p}M+pCAIzjLNf zfLruf7Sro)i%c_;%OJNHu0HwG+dvGJ7P&Ht(8ns8U7$cWizJ$2A1M-sN1e4)CtoHg zX>F;rW}qNmFRlG-m1}LnShV=MqBSK(t#Ou@ikgO;fkhvLfj{0F8DQs-H;5{&^-?_f zrmanxPhzV@f8&<|>m3YoV_ob=^d9UJ`OdKxHMt@|9Y=+R2 zdPXJp9kkDn7w34|xTeoafC-R`0?1g>6@q%^DRikukDC3_1DnI$JJs2go9^NT?nYJ; zEgv-!bz|G)+7+ke2h0jl6&@A$bJrW)Wa;5F%9wa-Fxl=mNS*CW$`XS(bbGzn5?#s8 z+)OjML!M@_+{jeXl}xsJ4}H27ptiZek-pn$JL+7c?Jqo%TW*Q8A@_lB>rv|Fn}eHI zD{e<6Gby;`_fT*dW3kESWK2f58C#BUdX~u`!_`p_*LU)7GCc;r)pZMRwa{0!bEX$QP8b(PTK_w|Ag~ zQN1H>JqsNE4nK?CZEmhqWVdV?hJ7ahPJ!sb|6Yp)@u9s&Ijpo*AI zD@#ltb@p!J1snVIdl1u^H>P5mS=-OmI6ob0<3kNSOKi2uS}Ic`dg66jvGJr)Gt0d6 znOL*aR5%?^bg3o(h7+D_HLUK=Y#7ji8|s*o9~h#%e$MOONe@0pA`{flhWx-A2|e|5 z%lyCyA^K#Z^Z)c;<_!BaLQD}s9H0tw2l zXk3JiSJ>>!j2`iau%K^UM8S?W->`MECJXHcb(+z8tzR{-U*(k)g=cTQk)l_MIs-i{#rm`74b5n;xa?rK7| z(tT5yhT~<%BvhumsvAZS>a_X{a4dQ5HVSIq38IuG;&}GA)#X?I)DkK+71X_a@zoYl>G_NkcbSvLyL1&-$$ULgKp;khj0=^?D2yhmsHBR_~EC)qr8gKJ^< z#k63Pp;CcEjU`L(p%n5TlW6cu+la zc6^x&@-HsP58Z?yJFbfj0y`d9pmOG~PQVYHutj%|9*y1G>#EWT=SFS5qOn%)o#ZYV z8Z$ReCH1%6L2YT-zMoL`w%N*lin7w`Y864u>oSs@9&5yT65<^cA;{#YmP&7zv!Y=P z0m@;a#8C7MA%}i8au<9^Ep&IrpT+LwlgiaF!)Q@AXUyDBYRb$F{{b`qg-~b0J&=VP z65RbY;U3Jwog}y~*MxI}4hq;$a6Q0PT40g6qJ<+jNwDRnr+J|Twp@qdyzZK4IFC+l zVohvdL7!Ec(dg#tHSq}yrHBhma$ePRp$lZlB`&b!S36ZCzTU7J1abIJ_71UYe!yK~ zxE>BwtQ8KST7VpCS6w&tiA?S323Baf3Y*J(hbS)fe> zRGbNPcNXYZKLY60GlA~O0^K2?zah)Xb1gZt{G&I;aGi^jD(p@O2zK=hah84-yI((b z@HB$&B|YWp7*+FGs+k6KUlyoUK&JszF@=@iktvM1DXixOQ}__Kk|bMST``4yC?X;& z&d6@9@`V1jErTcezGJ!mPQ$Y7F0lN7!LN7Ccp@8dpzXznUM+DCnitg0 z9f(oblA(q5{uxol3d!#tLlYBJSJA|8sAJ*Cuf5*idA&o|Q155H5oM@u@oEZLl~rE$ zj1A6nV-zX56`ngnZaul8%Aaw4ROC0N^4b3gy6(kO2c`i~bmT{MkdfI1JL~(#u5ePuFJXWxil33^QMle_d|%$(!U3KV=h^t2fCF@c#?^pZ?96Gk5O%8h`Wb zFP)~JHs7#O@MwOJt>=wgD0bWDHqYIL(UQgV5n0K~`&>X9%#@k9vuDU`euzwv zGz01L`{=Z_KiL*rw5k4A<vdN}QH@VN^}0%-h-hPIcp}Wc#A_Q;_H{&CU1Eqn!6P}Pf~Zu+ zE1Oh^Gzj%Tacc{r2=maE6Zp=-)8rX7>a~M&K_LBYy9EZ`;`JW+MXPs*FH!GPUr!m( zbohGe(Vt&BsW)3`3hqq^jUf(ha`B|Hm$RQJO)W`VR%mF8vE=f%_~cO`$Ux8jwm0?I zZK0kR*qCGyXzKjQYhF83fC?Hbn%FTg@(yR@%u9`tv%U-?J7yRm(D8Bs|8X6N>F^rZ zTLNjWp6vqmgB|-xUoq@I=aD>kWhy3Cy*js&VBlNj``h;D(VAiBD>8{O-ZHBuU|EXR zlK1ICWL`A?7DgbI7;{{SX=YW7$w-3CWUrrl3#jL1;Rv1pBo{5vTiQq(iMNDg!jN55 zsVUyWsJj3=wFX0QZ9uVk{Z1mM9jWB1D^mH$ zw-xwUo<0lvdK&_S#;pL|)}r)J|7eF@eakJD63r{MLkGeOggMos5jOk+H}I|;6w4Ut z1W*0BkxuX{7^(fV0z<`uEK~{0+l?Z&DK$$@4#Vmr9ZajKKg=au@pxQ`+*YFm&tpf3 zG0S|Y$ZY&2hWeSwos9sO)M9N!X1CcCNMRX|{B_FYPx&KyX7fqQseb5aG<7+? z$}XYzxtRCY*DT5n*YHS+msiA0dDUM+qg@`jmE!6WRo8=Bf06fs)noihpv#JdM#+1F zY97)=o~GwNnqu(lI+dGz>l_V#X-NW&C%O-?okC$&2@X~ZGZcyA3I``S2NyaA$6o~p z=X|Y-1B0*4!I;r6^2`WPDD{k2v81Ukn9z;2vooRGRNdq$;t>`8g~a+`_WsWO|gB13LdZAc--!2rbeguj-9dtaJdI>Wv2KRCztX-}fm83LY^{6z4Mo^`{Z- zYky8pQHqIe`hLIHb=}YNoRgE*@BP33&*%64-sz_&&;8uXwcpph-_K`)0;|db2m2vm z(hZn`5ib*k2Dx&D2n@g_r;%N;B?tl8^Mpa0$52gnA)jiJAzzcNL;wc)bRV;05dYjY z2sR@DO|~J{+x@r-=j-ge+J|MWa4w3DfNszXRG?^oeBz1Rk|*>kiKzq3NM_I`{g1 zk>veF$Og#li?|&Qr7ohWJZg>aEcL1D-YKoZBY1dQ-w^Vtxx+YL2Hq%F6!qgc7~Tkbdv+dJkuZMoY-T;VBrn0zTZ<7gaU z0kBy<)~U};=5mG?gw@h8@Q*U8LpZZ_Y+xLUw^9Mf!~8+pa=FT(Ke6$4bMA7Uu(T9h`vK&O1V@7yqme?f~PnSg_e^Bz7j zqjICJQ4P|fh^pBoB{e--6lOEoF&Ju5ZjqfsA~Wu2=FL!J;#CDRlEM|^(R0LhoMzC) zwHvz=N%PjhLCfOJ0?CcT#PYQI``I!G2-eqzNWG=wln&5_& zrewEw>oC;`3$jTgORtZq-lBRna-q^0`R-=g5om$`)UEQ()FVN&VW>jqV+#_}gjqDC zjvgC}w1gV)b3RmQcQ|VKGz&z~ERd1T0^11!7RaYrpak(2G%u2g7KoDG=;{m$gp@=X zAgGa`QAY&7H7^ne8X!alLoH!{lfxVe0smAEd^0&nkV+s}h=K3gyf7rqOJlEQMD01c znB6rmTEa}~xnXQxl8?~I!xvOh8X&Zj2=N}{yKhtvsIS~wedQ_|)el#t8I|PEZdBD2 zF#d&&s)pd5k(p7=S))-g)jR%7H7cPp)2Q+cj|!7-CQJ#2jfxQkiCsix>MzBpG+)T5 zHhW)G$^>ibJ7Y!ez65bx|us4f1J)V92i!oqR!s;L|FE z1o0MB2+4#B5kn?#vqO7U2r(oOO0AP9!EY5p;?g@n3RQg5=ZVJndFpPE}MLZ(m&LM_4uc;LI%U52FYwyv@6R*?>f zkl9_`)e@%LLF=*ZrnU>Fj%)AX4lk}7Vt(-+495hRo536tSt)hY2Ag@{I=^SX=xR zZBM|SG9YN{f#8RG6ajlR$gt^SnH0QX8H%MgKvsN$`K9u%nf7)Q4${V9=yt&|AC_l>2A%(YZw_{X+@H|bhS*0VTifUH89lkV_^E-U98 z`As%_*-A(@SoeltRr$4I%WSZgJd_2&X(*q3+U7-r3ToSEwDN3e7PStuC5ndpO)RS4 z6R@Z~E_HTEi;CkcD}@?2i>ksCWyGSEnMFxjrbS7j<9X|slxG}WZHTEwJ@QnhN^J)=vPdFL+4-hKrsIn%N4;8n~5&vWKJO@aHm14wjO#>TCB6Ik|l+RVE`c zaUZ!h>d<@;Vf}72T+&U$C4)+DOI2Wv-;ZJJTuU{%#sJKYZ`CqUS+~Sn7X9-7}X58g!+&guOai9G>jQjZ6zHtXF!@?KnqQ_|N<6e~98?$8??dM*SJTnX0 zd1+|3Hnd|E(6pBX(DwMem$$qn3);_+QqjJ<<}THv+Ea=4aXVZa_>yE`}nz+B%4Dh9NL<+_I+DJJ5B+$ z|5E@R@dnWTaMOs6iCHIvN{TG)`nj zrw(`T=-6YYi_XPV;#BmpAHYPO4PVC4^E{>8XwqEL2rOttqLK4;+wrcHccN(F$Fh^8 z=o83l&V^30@-=v@fME1}UOq?P}+aD@&<9{BFz4iM`Qv0AqT2dc=F63Yfjdz3;nEr2(so*-YI}u zG-eW56hpcLL#T8XF?KXec|q}hX~lo~qbpw9qxji=@#mcyn#$KHn32Gn+w9?6(?CZm zv=s$+CD1}iq`r`kKJ{Dh(YJor)WjYIyEu}iI8r-Tv_tve#s|94Pur-X9byls&GXYj z8hUIwHH0ZW*7}oDqM@Plp`mLp2sE_0942LrYs&KNDQ*hO@GrroO}we5Z)ze*@6kJtru`<0CgKIwu_s%E;Q{W{23&QGNqPD5H{Hasi{Js8dc7aLT>TD9tD8)vneP!=+3wZ7Lr$ zd63JQ8e$>w%rS3U4%VAOcjE;9Ua#5^Yr}E^o=xR_C!@H&w8V0nmgV?!zy~U={nvpF zCh~8>!~3?;(fULjP7Tci_B#qVu9t<+Dr+omMn&g;nVJ2i6`tX3LJv{^)i$Kn=!UdWyp^ko;*R?6eMRm839a+H=muRzLvhljVlU-p@J0-Z~e>&sD;qjKb_K}m#!fIyYx zjo@{nxU&bc2+o7{df!qzfup;;3{S_7j5-oU-NRKMQIK@~G{=rya#F?IGIr$?w9UcO z`(iqEBRiKe4vsFB?7m`TYf`6o@*LGlHHC@WwL}@!CgG~o7%F2KO0ovv5<7iyHGsFj zW2`EGb$_Dw2;CC2YzI*bX0#$zI-EERCK(k(d=i%oG3lFsn_MAoU?vU0;T**7eyPOj zQJa_@wSf<@!ax9F+lzge5mnw%SB!L?i`sQFo{KtFwL29rKsRb5bW9JLYN9NdQNtxC zD6fiAtMM+9sU^K|CjEklE>b`J87eE#slWL)tG}(K*)=#91rwJ`yUmi{ALcqm;-VUo zLrEtrGv@8}vwATwY?;d}23*5*y%9rP*$t?HMv{hvILd%eOt#%e+oM zVmPelexp%ka$Ch==f6dOwpM(55q^k5WHCjp3Bx3rDm4u&{3&PYqQz%{0 zezltC*}I5&4&4~$`QTq&O}|5Kovh7zAy8U-WtSl~V6|=F*r%#;E%i% z-Zc(E{Z8?OG;(T*>8-d5QO*NVA@ycE<*9KBTrCXR5cvG>Y~KWTSlpdm#y8f{s8BlJl?0PfE;u#BbF?5qT$p;Z!vQMe>uK5 z0|YCjKu-ik`yEW@i5<}dKf^Bs@1`4@;#sIFDzZWmR4uQ{6-pl1kGxYL8~^&V)9`F! z4haO!&Xkhc2)-uHXP^3Al)yr%rCA6(=tw1y8N5%wbzBL7(cTKxPt-!p;N9;ECGVwG z2!TJl2CSetlR%u?m{L+_1lIWkmi30K`v}Fw4Bp-jS4s$s^;T$elOQvA>$*b8!9Ice z_4Q4vGed%Ie6R%xt?pAlO`b5RMrLGOzk=oq5Khiw1Qc1-3mGBvVis@4H)>urlE0_Z z74u@EcNBAqd6i;X?BQyNK;AG4$-TpWa{&HK5L{O&*Ap5^ zbI4vWsWJsy)Oni+o_*@8Rq?e(LdgS>O*Is*aJ|F zYXrqqugV8?kaj)MRR}e`eZB%F=VroP&d!TDwUna96Ghjxh_j1LhNIfE&N-_4$up*D zv<3Z2v)0a*tWV+L4fC^NSZzolYj|t*YudLc6p@-ozw8<~>z?D`aT%X8n7+a@MR2N5 zy0W!Ip%Z`HUxsB6(c$DOCqd}VznT^#V0DVpYZ)ezjZjuQ{);VzYijHo2o#dUEpJ6r zag8+LAv~A)cvK2MsuX^@O{6gTc1U5}Gn~MljVEN3=XPIac8GlHUtFR359a69GCx7@ z)GYH#;Xl1E5TS=l6ul3uXqv9N1IRBs-63DX4mDZM(h*{`b%gpTj2}@LFg{)Y7zg+; z{H94dLMlIWglt~EJh?eqQl<3HfYK)^W>oW5Qk;-e8NK#!Han(g4<}bCy7W$=Xel1v zW2gNWx$3Vl_PzMWsFS|cen|}7pFxMf4P|C{gBN0;z954GQ8cEK84bex8#M#0S(+xv8tVRt-9C9$ z2+BMm#3mOcxy~W+=Nu$@Oe?JYZb&UTfua+?c;Zifvl+5JzhhLOGCo;l+({V^J#`Iw z@;gQ$>nl_kyWOLD!oz#@6bHlClXQ%H`TEv(8|$7>y3Q{~Y5i1s1<49Q+Ef!hEeOX| z)u+Bfo_*{8kUEG4+CkxDG0;#u#4O&g%bje9(8PWfOzk9>0@-lu-Ny!Wl2AkTjFho+9B+`85-H)ipkO**-;RX$_9ql|1H z@4u1l^PCWp@~Kf_`y31smF+X)En3geBFlt#pyAB!+vcfQ$oNzK4GPb8RQTiIa;%pKO$LQ!^3;8 z)@7A;Q;>pFRC8=0g5tE@)DzI=3XZrOwLJUn;62uNWYI#0Q+8Z5w1oUuB`5j5kn`~e zAm;#|9Qo+_0;)S$Ows*S(ge$W#hQ#J_-xD&iozxz%XTj&1KWk-Qy(n{j8*fU{W?IS)`ZICZee!f{I{EYet z{7gOBiT7E5g&`%EI+xj6Jw~b~8C(A@D@aH)7DN|IWz_ZWkqk$@EB$)D34OUTWW*+~ zr5AQ|GWQpsYHf&WVedz0-gUvQi%D3)uV_yw3;TX5EL=AiEG$0Bv9N@Tqe?*LIyvkG zM$?0oX~}?;(WP3K0ExC!DQ!)iie`Y2)^(W^; z-{(L(>V5eM>vpI28TJrJ`%8Zl!==KL50MaTpS2PEMhDjq`(+=1RQC!5I&9q#B*>io-z8O+Y^QiTX;NkHuCD+Fv zV{9azBbBj{kkH5wV+~ z7!t;KkC`&o&X6#6A49Dy!Q*Pm*tHDZ!MHgL31b&BB#dESlre^#QIX{C_+yNf;fb4C zcx#Z{)DmK>42&H(Q5h?LSTxq{Gqx>JZ9%X*GW0u!c4KHghW27;07I1w{fePM`@syY zV(4&&k_;Wi(1#2i$Iu%L-OSL74BgMrQw%L&=n;l!PRV;2VuvMpD?`^ZbPYnu6Y$3v z+Y!$lm9ZV6u^mH{q{?ZuEV#*+^1dlS`m3?0Bw2}8oz zMhppK+@q(A^=C*J`vvoH%GkFI31c2Z!q^8431k0cNEmy8Az_T?N|G)3V~myKS+0zg zgR$}uV_1C8zrIQt%UdKG>+~7hjs%}YusbpICx)V0~ zRv8-$#>R#i8w|b|FLi5Y-fhCNRYPGRhb?SSn-3 zG9-*0!cYzK?Z=QX7Gp>l+nFI@Y$QX%*k%j~W5o;!W9uT6d>fq;V=RVeOc{%Tu~>+) z7#LfApfa{p8Jp)bwmk`X3UJzYX6O-yc4vr_h3)$?bSpzu3|+&}p$zdBv-Tqxn!(U9 z44uc&@eKWip<5X`nIX3N$zvG0i=l%V;^K93JVRG9v?oK?GsJt$k`eqd#`qb%amv^@ zFg7m4*f=n@o-r1CL`*S)hiXh1^U#@9#y((382cwfe;_KZPPZS#PzOW8*dm66v3nR2 z#%^Kgc;@4xlQMP*L&8`yL&Df!84||o7!t-#Vn`S}8lmKt_+yN*X^ksmGTZ@U&A`D1 z6^lFhgK4UwOkOG2bCs)2F(!K{nKjTk(oS|Wua= zeAKq@$;a{SWa zpT7Naa{CX+E9m9lz(MN_&R=)Vm&p4s{Q7{Nb?_^~Z&UoX!f!NwyW@8Te&^!%2mFr0 z?;!k6#IFgz--_osU4q{&_;uj-Tk-URedpu10e&O!+Xla#@Y@r=@%SB#-wgaN#qSvW{(|4h_??H} zHTeBjJntdz=lHF}?;GFZ3_d@&<_|3)d z5&WLO?>hYM#P1gT+VFc8zuyQmyfsR~!Tz`KmrJLwD27+%EOrb}yKgeipshf>sUGNb ze4-T|=u&)~)w}#~=YizDNfwkH2ZP?UsVENg2}5GPdqZQZY>}8-d1}6P!}<(8%1D?RD-9ut?+M_;#&MjiE1L^O%Oa=l&7y{lxTr(H{sSfrS__DDkMO$a+#3dX>d7^XjmDL9>9(wUwWs{ZXsDb8;5O2;b>b?Sdf%bZEH zGIxdLC{V`M6Fkq=o75qV2=#USWgr1B?3t(Sb#nVrQ-e^hY;^}mOl)m2UsQ?Hz`Iox z79`$eA;!s+MA6J0A!f(_stc7j>?30@0$UNlrK$K|a@|jt|Nh8K%_}?aBro{3yf0?t zZLz#{TnNA)tTKV8a`568Ss>djn@bu&o?#EBOTA2 z@V-o#0eb>8gH}8X7*5z0OGr)9(l)Wc43;sIgE&^?>z4hUoV!EYUQl9XxWqfJ;YF59Mp5qy9JIsEybz~2Nr<**4J@}?l= z?tFA@G0QWJ4}65+GtkCh0q#;-hZTew^%&qdes%_L!Kbq%oM!{ml#*_9*G-)EIBF@W2s?ucNOO=#;kwp0`8?Aa*9aKzBAKFGGliL>nC3yIg{quQ&=ovS#~7t zAA`5lxg-_Xhfh8O*k`_!7smd#(-b>up={}FE}=Z6M1bAnB^9Wkam7An?bsKgMCxRg zY0xrT%u_s7`g#~Za0;)Cn9BYU%fS#4Smh3&O6*E`uAUg@8ZnGHfh7>5YGTYpiIJ78 zXM(++fz`^?z9(>Pk-Divj(Gy9Mg&()|6bL%8fV&}zV;`fzDbxku&bsawrz2=-M`a7 z9And|%0f9(PwtU=qNPG3wmU~I6ISoMjbi%|ht7d*IgXZl-(xhd*koOS7`UAr4ChHO z&ue;HcVix9n;7D9j6vi_%i59(gh7h|i(vH%YoQf44X&2#DeMSFB8_1S7C-|ic9vNH z`}Cv$)`196Xh+dQXp`13jILX~TD~$LHPf*8qo%;{PPF<`szvcFI39&?MZ3?SE){3Y zkL`=a*(5(#nV$JYWX^_X)p;uaYOY(>Z2!#fZoeKpfgDc97_`shA^vaS{wh^;ZO>;1Sx zW)r`_t5Tp~QR5txn9)(cGiwI>9q5C^$R4UCuK%jbd$d&9gN6`g5u59B#1{2Cr49|D!hD4s{K-UB z4`Ssg8d_THGFlI6*?^0rsKRC5K-@J=;g*ks$4C_Y-cMMGYogOnmxaHVYg@~~Cv_;D z{?#e%iDIf-`eZ>rHt_&6+2`_ri_Tlb+^2q9w*J`Db{MKIgZ=6c<|D`dYEd+|pqZbi zO`e87{LX9@j)AQYO1l=p0Ybx#0PXD!VpGEqdlzr4ak1MXHo22H1+scN`mEZ!{~fCg zszuS>kA|}U8y7#PHgri|IO!84B~!qpLK}u&zCzj_pPB-wRR!x|4G2I>z*;G%@~}ix zbO0`c@rh|A^g1m+&M&_MK0$@@-?BV>9RC0UnsYYeiJ}y*OL6QRO9-Jui?^e}!8dTQ zu!5W;(Cnbze9!^Q`E0yzIjJ%9)K#PiuBT{kwi*uJx@r8*L`&i)t-|HZX*<)^;?nF1 zm7(a;mski0yr)<~uuO{O*g2!qF2PABae9*`B5p|`TDv18PEQ#{_i3pt%#%`TeJ}ao z&h)|IxFRkcQP5nMp2y7(SX7+zoSK`oLYS;C+W$qh=_+q0Da--g@Ah^S2$5si7lF4f zgC@;ehgPbkzlhz5I8|OYb$dV@i0+PZ_X)0gHWF}oGb>J9uKXkCSEGGQE!5N|S%ip8 z!ypvUDqCi@ip?NAuBCAS!-=BfUUf1{5Ne|6+Ls-gDU4`(ChqERAaCi9l!_@g+h7iq z@=M4wpQRjZR~YJ}U}OcO6XLM1vL#;Z!sECMpD3zdsk&yj-Wwpi+4B1G3JOdMwls2{ z7MG;WBYdUa+UciXCFQn3IsFieTbl23>E6zp112bnQ}opUX`-*ThO*irgfqt_qR3N_ zxQV?SqXW@#${hKyM-G6rqNvH-_Bn;8BNT7!&8jBtbWCditBG*>#!LqhH31PdMnnxY z2Ef`{*GwH7KLz;;i5IcsYk|8D#XuiU!uV7QHV6xIaVzTR9l*O!81H<<`n?1OY6Ajl zjR0U!0^$@w?bJWI_ZVp)e(>(xtv<0=WGGIvKN@sxO%8`}j0z&@c6sa%0OHT(^pOsk z-#tl9cNhd?tRV4k+7||+Y%2MWl-4nzn>y-@QaG^?rF8{~@0i!(gj(cKO;s_v%8^j8 zD5nn^@4l%A(4Q<5@C^a@1_R%qWw=imf@qj}gnN&Y52UIf<`607u=tGBk0QGgB?=o8 zFPyxoA7v6y^pgh=Ilj!Dx>!D2E(GmFHw9u%e#6j%O{2Vr@RBJRRMAW0{0jwEFoR1C z(ER;jd${XHYQDLo5o!FVx63plB;0BOQPK3E2aT9|ri+3&wTW|V&tp;WD$g{=AlF-I z37W$=!T0LL62jSgGE>XZ@mDfX10^u4z6CS5IH6QD$$EwBr~Rbu%}4)+3rXakxfo%)Mj$Tr2O$mm&A~+*iK62NgaAdf(3RmrE3OlwJ_^SzMO<=snpHwK z(RquWXD&Tkk~Yi7N`+p6ojTcm8#DvcpJ5}`qa$k_+RP4Y(EiDNFsLSR`hZw`RvtNt z@g*LgHM5G2OH*SwquzkcR6~MycoKZf8#7GKPXP$B(ZMw7pdPvr&>G9kI@TVc*7K|$ z(O<+P`mCe{qgE# zfSez0V$?lXV>Fk@-G@LhATS_@g@DvLAPBI;t|u4*uLBP0QA}{*zT+(*Xc0ZSNsn?X zepBeq1vhr!Gmx+JFL(($HdyU*^dNZD0i!yS4A6T;2^at3iDvmujEJ7JLm7aq5oj`P8z$@jrDeB`72{3P|)KFoEOM{X?xND!Rlj@s;k&!vLr` z?MAr-W-Nio`}c70iI;&`tyN_U~;;F#h;YobM<~=fT_W>xA)T~3bR%? z2~iP8abhLH2y=E>&eEPaQ7@R|#^;nH_OjAQA}omntZtIhd;qaF>m^$dOsfb6y)bYV zTz$N+TH}PH;35+F4S0Az@9wNox?54A-O|uX;k3RPG+D#BGD1g~n>GMaSSn-5FP~L{ zwK|2EUmUY+Oz}?IkoKh=M*k}+yQ2xwTXaXu3^x=`;=#-UDT~fX8Z&=TX0BCc);Su? zY?sbVj3gatBuU{+W?DncEC?}E#gb7gS(7P!pBbij*I=s&nGq_(_c*6B(_zfC88dBZ z%*2(MH_%lMHVvN!*pWj*ZYk5m!7imDx3?0U^Y5S)j2yZ%Dy+FU|olJ+` z+X02e^r@HRVQ!#VnnZdp6zWd9oCW5Igtd9K)~=yJRwGq6BPNK6v3A>K~bX=o2~iNS6tAmw8TyU(4D@x z;z}};_wvMkn4;)Fk5cZJD2rpPQe`+B=dt(}(jUPL#;zLO)IJB%k@KnrULoa#!}nF&iV=Z%*IfrF;8W9}1XA4kY+JZ|F-^a`vc3v4`I zkT{Gr{S=hQX5-Wzi|G@~!O%Ene&jHPe3>EL!2OJ+%qVSnDJ__9HB@yCY+2QhF2!+l zq-e(h5Isk-G-Wro6Y#uvu@)r?3cwOt6p1u`y&)XOLlL>j4F!sVcGYAP3LoguFUpy` zv4r9+=@yFa(!Yc`%QZ}MnI%rkO}@?4MDDYb)Do8R6_&6JPgm8*ja9Sbd~}D#VH(R! z`%)^?G*(I?r>xUc?2cBj$Q<5rI8ddvtuHRg1W<0KqhEnYDfXz}f8g4NONXGOmjWn_ z6zNubLdXe07HaT>TA2=(&#LFt7bM36XL20>>`D3{J?Jm!LSk@WF+un7l01s2Xy+3k zqD1~3czFBm?3#sFN%9;jQn80CC_n)oT_&!cG;E~>i(<8KEycZ?mkfW<`JJ|rp9f&V zvPhMXOiquKN2UdkELWNTQ6Ty)xcJh^hmlIIoA#uV6N|O1dazG?Fi7&u7U6osWMR;4 zpundnXdI9@CGTzd9R{0Cn4xIvgW&-Coc?ei+x-^{SQb@GVDPdEeg@liTWmaz^+5&# z5Z^*+Sssm|z^eIn`X#{Kh-mL9c4#4Qn22b*Sn_gPVtHf=4op!tsEg6m=>%IN2ABpm zE=xZS|9ez0^Akc@WXfq8a6E z%Lj^rT4VUy=;3Gd??sde>rJz6rLo2;(kN6rq49R6tp=*Z zqCF%Aez#KLL!d|oyl-rdpHhnXMBfggv(uPCABTo?&M{CSdW{3>=#EF@c;$ken|%|? zW6136753LAMKCt>cG(Lefu!Sv1|zPST1my$fYu0Vl(e%!YS~l>(_We8zAwS`Bk&dT zI=|&zLvW>^$zM$L2Dz&x>T*Vr9C78C!kGzLrf!DAYoy6f!{Rys)_UhSfFDTdzmwxA za$0i~wdN@5BLWZ6sp5aDXf@IJKXN+Z)K{mv)>Jeg2*nE$zbAdCI4hIHeidTu@CLkx z4A=H4zcJP+XQ&W$eMz}rrz~33i~1Y^P;Y=t2-y`bY1Il)mVqxZjQ|S0g+vQF9yOp+ zFcyDY#)^@t#Z(tqbs*US&KlO4D&{xM<^dooicADb0%{idDs_=)2#J$5E-hZxkS78X z>yx0ym!%`pSChA{J@K`PMKY^rb7!yY;d>X|D#tNt6@a6?%|4HjX3yOBk_dbgjl!3s zMB5GpU@!IlPBGZEYT`|zk*PVjbrF}dIh{3)m6M10L|YKVy4sf|Vw57dqb8YJ9*FXWB%$$Kn= zGSz!e`lhc~AQ-Z@mn+8l7AQgz>Sbkv6L$MqmXqVm;{Z>_uFe_y5YID)l5hh#V+E7buee&@W&Xc5MqT`5Zxf zau<=H7UpMyy#(}8u+p=jR5>Z{M4BVRqPR4`Erao*(k!Gj z3nNnwB{PN6!H7!>yc?iQ#vqI3a0ZS20w)QGJOxjW{M1xlxMaBPE5uq|FU4V8rP-W; zw1?Q>gQXA{0u-?-Ua)nncvV4R{;&@QL{=3X(OFRXl%Eoh6>R_1IRhaaIO0fZ00MYM zT0nEtGsSL)fwm*=Z$^D@pdHRbAz9>@icJ{ydP5U24mwBp0t$SEQx@}} z^U-VfE2}@#>YTlQaVqZMh=U8%i0&SvONn+vOKW}p$BoDTJStniB5VD!u3Ex1KRqSp zQk>BK?;MZcL6M*e{~sEUmw)nqcs%~a#|H4f=XkuhjCIO&ona)wNSZS?9rRW3C9!zo zf7WX@b=o^KjU$o2FK9;H;>0N=4Z-nPKR?o)jHjT!FM4B-Kqm36;`^lamZbTL4SGANv3S)x8xAcO_%_-hC~2AcS0ak%upRe(ceZ#=>9xxdit*bVzwPiFgWov(Cg67(en;XLjQ4fE zu3W$c{4{xeDHJZo4K286b52(oQ(G%j-~E!oR5ZET#7|m_<>n(tZZ!ExC@q?NBY2A! zdke6Jl>B=T6^kVohTfvd+tc1;vdW|rO;d~EO4ccaPP%l ztlec81(x!&OK9e_Y&m)#oIwH0(HXgIHI52?K0NsRGn(B|0 zP$&P7A>S_{9{yG$yb+#*@%uNzyWu$=zr*o64?mZW&kOO}*5XdYvkt$j@N>H2Q|wO+ z9&^DkXI@n)JC|zGc8W9Jc8K!^FibV}tB}(W@8RK{JjA)S*Ew1(BUdmjZo~0E+JY&) zGH>{KKdnyn9o2!l81GpZeR^c;JLDIO)Sqgim1D44uV_P&X$QN6nW8X3IIgpsSxQyX zzm2|{t-Dp36JdI7~$3z#kR<=sO*GXE@S>t*X$6n33c(loZDpgs?Ohu|Da zP8-hG2xI9J&4K@N`}twbjj}(Gi$dJlKW2I%s>9TS97BAA7<*q7Vnxnf3ATfs8<2LV zSNNLsLEn=#q5B;`!6v9$X30b`R)gc12bG!g9^}lL&iuL%RLNBf$OpF3xQudEnsI7p zx`$V#nTdS!X*S!RDhpYqNQo$n+)e}onxUpn@93_cH2c^3^5p20sf zRZV(oy<7PKAQ;$-bM4S9qwBoc_FW+HQDxrl^V}JJczRMka<*oV@wMFBgs%wU^)*6E z+~)F+*ZjX+todP*%>N}{5kmFi76LYT_^8+Y7xLKhxLj(aXvjt4hDOhX8`>`4xuNOY zR#-=QLVKL`UiF;Md5yRJKSiF^Ymz5e59{NsfB5Cgyf<+%;M(*N_D|v^NWAWz!G~OT zA!)*7%xier2OaayBWRZv^#)`4hKr6gysA$HYg$dr(3h+icXL+(mUN19usXQ- z5rngGG#=5z=DYLfvU!bJlNStOISAW3+q3{%wEQPnjOe-CJM?B(T-N0ZQ5>x;mVvR$ zknR?1O^Lc%XMdiI0`z6xMXe6{WToeGtYX}*|ts>iBE7_6jxC&`j&2ifGE5xFt?7x>7-p(|iCdZmKoeVARG3vi28_>=%H zc9v5D3A{#bAZsdWkE zp%uF1t|CVQ@4mtTAB7!m%<0Z1zLp1m6GhwWsgW`sf!St|s{*gv_G^OJ=W+)^=$o@9 z`dnfa>3jU>-st0PxT>zws||QT^9)8p0ByY?;DUoBwiLaVqz;-zSvZG|``tc8VQ95M zIJa#8(aM(mJCKuVX2N1@1r2ok{!4u6@^!vDq?6<)@<>G2nuw4@XP99s-uVO|&LIfY zLNoWzeS-{Y%OR45PRg6(^MAIlwAX{k6MF31}z9l-T@atT@c|+5t5UwmR**$Eav=ie2!(;v$Atg7Mo1C zQC;*Su&^hU@lyx66nv)xQVXX|mbAghmBL}@^t5U68TxW>TPKxz$qWTWQh5XkTLZE{ z=a8$b*igebU%@M0V7@@%m9Ics&*w8z+KWq^olj8Pti04k;DaAo!TZ-Li6fYu0e=O2 zbMj9<{9k?eaNw+1Q~ZeE!%(lnhp-*li+2>3%o)u`6ObI?!@14X$Aab+l8vzD1d(q^ zWV-%VX4RkQo=M(8jjDSuOIbbGkZCufdnS2BR(2)ILLD{mr=oj-1>G}#3Khk3nQKr~ zjjyP^abs>+QMaO|CZn(pRn&Zp>vYfO87jzI6E5Odpg93Mf+Z)u_vt4P{|Wuqi2np1 z|I?l6_%|p1R_-GgL)p=XYWRox1QCBN_N-gZzxp|ezcz1;_|e%gh3}n#|JE1DzmNYr zADtQMDyMvYnI^lT4ieM`{}b0Aarg+o16fSIJ~)Hl8yum!!LAi+DMl|4B>9lDI6TaZf^rMX03a5c$k z*O^rmG>dCZI0GM6o;F1Gl@NgV^>T>O&4nXLqY;KObt9*LmX~b4zp|o#n~q_q@=@j zCP@TSWyX|}mjMR59cN1pZ`Jgl(Xr_WrUH$sckRm?9E3X8#7sJfwM_j*92xw4!&5e= z!`_oyp?9Qa_3}*k81&m8K3{!Jt7y%R8$-qA;@3|FF7@lDBEVajPQ~E>m`EL8#o^a6 z3vbV;nqwSQp75{av0o;MFpV?_yKRAns}^22-ogfUtnUq_YgFcK<40`D zAs1pZ04zt_k=)V;@U!0oFaXQ_h+Y8PNdTX7uqPBO#t>3l4g+xK+5prNz->N&bN&1V zpw@@j3k6#e06%7-6wLGc6sIww%sU*lLPSHTB&H0M7z|k%VV|f@?C!0CjbXy z=|Cn@qnT~%n6tNc`H{LzK6WBoYy(nM_^_wWB)Y_L{DxNkiJo?th|>Do#`P83 zD8;2F5`9|YVJqR9UY9CH`TxOn!q6BAAhAPi(FF-*C{Jei>_PVvfa6yWFeRf@$LY<0 z#Y8mZD5)SZt<)@+-NKnwAwDA44_C?c!?>h~%ObmJhN%_2F|CRy6@Zbx{~+ZnW^}os zE8l%hoQ<1wQ@8ghdmLn+e2=a{lwRYS^n&J;lrEa~K8I9>>7$R7{zjpnrgM`kfX~Q* zE={o9{Rq2}u)$h2iU5!soDZBVdq7DlrrmNU4|Pcx^Otc_raHBQ%~=?<69qRCD0*d) zH&;5+uKJQjg!{O>%Fh|<^geY}$Sx4a&CzgFMek!ggoT=&;VQj@e(tv044+}yxK}m9 zYJ!!)g~%*3i+(kczco4v-X?yTmoVyo>s^W`OvvAOWic5@C;uvn6Pk|Wxer!tGKF>a z3QeyqdZk&W}#BH$&Ld zpWy^n_T`N9`(~O}U}SRVrAVb) z?$iJ_AZEuvlSI(GX9&YVp#)Pl_hLRd`2arsqQGz$KqZac@h17e&I0l_eG;j`1ffj) z32&v!8<^2Z^ymQDd!!FqyrTrF!on23&OZS59F)Pg)ihwYw{1{x(UbUMP<)ccg4vQU zx>vU}PtQ4ffLq!%s+u~aSkCak`yO4k&XT;yY#~~})?^g0-9}4+zRD%4C9r*<_j>6(oa^6u& zo@mHqQ70{mlSPin;ywj-)<*)Yj&Lc$$b@>JRi@Oc3@gBn%V`yV zQ@K5Y7a%=>R`I)4rp$sF{BYywj$~havx?`;9IFE-%eh+LyMjA>3=-s~PX##lXUX1! zcR{6#s+rOFqF87f#XqPzqH9!#tP@ffnyu4Y58wNi?j^hWaBStAgu{n^K`4W!CSE+o zC_bCY2kci7$Jql+FGOhqv&HM0sF zwniG3{=YyLcOA|pRthbhltr?nC@ghZniXRtY~e;T}R1>V=I0B<87UKjIgxvDxkacOM!!wP2d zD_}@Y$$}fxV2 z&k-c*i$eoGbqfiGiD^U?8d2{nQD^=jL~Z^r5H&m?D(o~$sogVIsg=goXrq z6FF+4-4s5|iBI>*pAQxNDZmR=en<2-eeGnjB%4g)l*uVP$~J3rOTzFavxn3F?#t3r;dm%LTt#x{MguS!^CW?SI83J?HRso~)O<^w z1GG1qR?|*^t61s_#$GaoV}$g57KtwBv+wdn#m7xK zSn{Csrear=hT^(`sJTRj$S{3ABU1-c>k`D9+ln(+Gr@AGBk%cpY)j6EvW@88fKqm* zjhbgTQHPfpO0cR@kMUVK=%fckffGjSwwwdem|9Zal6x6&~s^5?Qb9lqRED1erJh|X=bn$J@} z{Pd3DJsXq4HYFs0EjxPB@hh4NAKh9UI_ z@oi{*Egu`!AD_IJGP6>ZY#kvDso!9=j(v;)2b162?$>}&Zb~*&+x~l4_NvODwEIMj zbPRXE++gyJ-cpBh=CB3RC6z7X^JJ39$POG^>+OUbc!O3DnrsHZM^l``IQsG^D9P4%y&aya}pB} z3u)lMA-JXg594JdjZn!nf&$^KS_L^BzP}YDa{0EHY3@pcTr5Da)osnde*YoLgOI3Y zQz2mJg?FFY2bMzLpY4aC5{99!RWN+}Y=uhkJkoT4!%FeOKvs&Ws-N6JqMwV$qf*@Y zsngGrSt;g8`|RAlyD0nu1@!n}0dzn<6kX#35=C2+6~`!G5SeMS%4PB8Y^vJm zHqtwVU`29Ts<-?}^zKmHGecl;oLz9EG=mo7uq{f`88NOU9!GcVWKc!XC}y}CfbbUY zfjQ_9Ig+@#)7GK|3s85!<#_ieb;!|SRN_Dhy?N&Brjvc1x9(}$BF|y(1zxd>1qn?6 zbcYuBjZoJ)Ue;3%t~mHABVVe9(D+m%AR7))VW31RlmBkM6Lk!@3EDgKeh>nt%S;FQ z#H}Kt+woW?iZ>96ix;WRio?7euvpY?F_NS)6{S;;4JG1+A=$8whQK;qd|IbVf>I+4 z80PVUzNZwxipoTMltnt6OXcq^J~>T1lA?Bv32^Axyk*P8V)Qs)2vLzn;;f3O_B_kc z^9*HzyY+z~JgboeuYM{%W+uCWQ%_0H+Nk|QV{U;l$EPtT!7y`l=()AX5U?o4z~UMB z7>h8sME+ixj;beBEsYIC2!=&3ytyRM2WW3p+B?!Xnl+uV%6hJ`&f>|%`{GX=e+VS( z$)jR?u7VG+e%(B+;6G~x|CAN{{AJElWSujZ$F^(#N+6)wNk21V)?6daM@?T2dbS`@ z5ABml)Htq0I*NuFMK>r#eG0|pJcx()<%d2+>}jG9=Ba0w#5rM5@rl;nM(b0c_C}$o z%-RcTF#wW0*x&tKU(8bVFPM=Kl@el8L)7hkyh#aY9U=tWJQM_+>J#u*I9eUCxz5RKa=l4WJbbF)A~3s}UxY_m*g`R>_6xgl94$@)7p(yg_H{ddy1a z5AnoIY{87jcO_s{4kkbdGbx0zAFB{r*CvGAR#Fd9XwFXW?_a3jZKDaIugxbmgB&JU z;LXJ{b>?-i^f+?4!06`_pG6?wC=QkKAo*_|pQe3@c8Q-`qED0fk)NU&y>V}d`8?3Dc0?T^ zL>kWX);C07O;tplhDe`==$lV~XeS~XLS_@W_l(ogLN{A=3{E0gG=T1q1V70-2_;He zW`9}|&5L<=y^`VHP^z6Kkk+iOov*GCUmDKy_Bct~vvw*QRB`M?suX^AxIKeZB@?D$ zkjWdyeb~^tN2n-S_*+Ucleg<(T5_qCjQ*CA%;dFN$z@iuthbW>^bvD-vmQ}H?=U7~ zy%l5SQmQcT!IA~@amAe0`sbzU35Z!axL3Bhq-srIltj#|5=`f<0T|dX78gkgz*NZB zP1xyF+KLWapB);rr@uVMTrd@|%RC}#)_=0^GR>xSAXB$Q>ND9EgApcnre<;<+Ylg; zA&*O0FhY1$+My_|##oTFOe2&;hh~eHdK%$^{|zII^e63Fi#43*JvzyZkbM^jw$7+h z_?bp1nJ|u`U@tvFO{t7fQL^#3lw>CF`y;hv%u3GrEhU-BJMUmEnP(+ie@jVb@;X z6&6Qg;36ai=W;g)xrhV*uB4SCH;I>u0MLB*>HpIUD&x3B&Mgs}cg$5jt`NGVGMieR zOjL%LinWrO$;9%T*AZD=mzf|X zEz|u-qNDQmfAn-ejpFgbs|HSxAj>!K9NAsbDaPs#bW3 z>PkzGSo%`f1WftPhpBlqQDP#7W_G8dkx0mNrO8yK6LOx5r5yvG%;8OLQ{!9)SRt{Y zTQ9(|G(nYT8mCJXWNF4JDT$&*VdH!NYbVJq&~;3T&ww;3K<|ZGUvTY)EKP9xVKSCd zsWzk2r?Gp?J1R1sjWLli=!^8UXEi-9P3nB}v+Tz#p;@qNpHqA_ffmy8Z`k-Nl6qH zhPCoLtXTzH1k;39_6(t;uBHi3cT1Z5^O+?iykqcjXcnmrgqN28{ioCOZ)^FxRd{bc zsKVo`FT6)Xc__TXwF-|pyj$*7;jxRICOk$^c%-q1@LZx$kS07yNfb>Acga40x5OrZ zs$CRfn%!QG={kxckLb|RYD1OhKk_Ape;JNe>aOe}Hl&gd`I#>{H=MEdc$aZg(k&UC zCp;C4&cwn}spEavC!#;2uzMD{^OsPO(8rdy+K3Z|TjwJ+QFISpFfO}!3?>X4y4;|9 zi3|*ZDl&Nh_^w8m5+)ygK($61e696+M%kB0Xibh*!QJ$3^336_xLdUrh0UdDjS=Kt z;E7`3JfxA6ltj_x82fwte2%DrH_sIA#)7S%q35YE&~}h(-O6 zjDt={s7gwpRW|A3GV?-^&dD5Xi_moM{Hp*SO08o}2AZ1Rf`*yA6Aew>TF@}vD>gI@ zKm&8%;XVomOW>w68iO~CmH|>E5~MWtM#|zS*dPbY;r+Tm%{>NKPAy`^jPQ}b++Ct{ z3SFY`9ZE!B8)CGQq&Do{`h^okiBgN8A*n@DEKxL;_T(&K^&_Z2XQAVk{GLQ3T5PJ= z`J;knOf!q*=k&@hwMKTC!&}$bEreFtKP5PyONVv*3&HSMQkgrB;c=P_BobN(I6<2s zKqUp=91nA{6FIqa2l&X4!)r&5iuS{`A{~XEC@NB9Cpf%|UUU^{N%F8QNq=smeFUuB z{6`GWTw}h~n3uFn{~?KvwXYsuz1ndB*8E;+`qWkJ%9g1|YT8dcqh$NuuNH_J3x9 zR&kKJo~>BdfU3(-@#*d8H&Ek(-iISbYSe>p;Vd>&Yu&rnui~q3pkFHeZn-rM;PEafYb}_oh{3}v@9&(qaKPZa0cUqtYCP2G$;yyvbg|N!WzRV^NqaBFUOGT4-NJEN=@`l0XD6Qghslv@v5^kEc=urj zRV{6O>Vt8vN5TTBV`w*w^*;4;{*EBf3}wk4@~xFy(Y7vDqCdn7d~5S4*w!{a(MxDF z9cDDD{*0ahX`o`5$r};_M|kOy5;%@z29wz{V7hnWB`W7-v=E?K_FK>}lefR2S-BQ8 zO!xksP&6LUpdM~;yVgUeUGZZ-wX1d|5}NS96#r2xGc_pTr7#8lOUdaqzHtE-wj#k6 z&a7b>oIC#*QINPCdE*vcOg(8ne%AvHEBOxBFw`84%kz#n5H$o{!prtj6N$m~GcTXK zAFIT@V1Ile0h7vjKdePQMbLax8YNz7WH33-Rv#t)sb$jP(CW%#OlUG_4LwgXVFdvR z-nTbtSE$S9tEs&cVcenxN#%iO3MjRXy)XsKNsPz$5)nC=A^ejZeBnE`f=B`maUVs2 zFLRkh$b2&)OE4^CMieA=W{$9sH6IsdZKQFx&89`Aql&pnJiYbrQ=Jz}Bu3D9LbL@l z9t2IKqdJWaz8M`7gfgTgBKrBo}<Uu+6Fk=#3 zL?X9%Yg9`JpxPR(8azj^R05L;;-Mf-re!u-lIRpY>LK7miKr_f{-+m@#Y|qSRj^JG zJjOEeG`soac9ILCtoDfn@aY#sl~Q}KZ9ehAq?5@Q5SR6anBtN$P^O3tUXq!;59!N7 zvomKH&Ny*GEwzA*|E3ncnOY=mIRVG$>y7_CqP*?&M zB~|vOkXu%uB!ogmK($ge(lSg3xnYA7jm;YOTDR+F$k%S<|8C zIy}Lf*jJ5-S<*7SfFwHXBk#{Xf(vc@xW;C_YN2(f49MFb?1i$PZdnU46-5SF#C!V= zZ9K~81`x@oHy?wk@bu5eLUGY)+Ot}Ohxgj!Y2867cJHqA0BA;Fjd_9u^PXXA-1uoA zK_Vx^SiiNs#+D|SRvmGq?J8hhY&2PEYRLcj%U#UjZ9Y#;vK-V?mC6k|0miB{O~+y! z<7@$_uuw&w#drdGop7YYJ%0;IK&U~9U|~#PB#PcC4H?Z&cfb(t9DzRNeTy%x)RHifLri>l!g6Pk8X{08a7dRBXQD^HY61H_1QgtzS9)&L$(yGd_ zgqF5mOQY&2KqL~YBvFhi3hq|T&jxgGA8*E8I?9XDULaLIy_$t;at$P#HJok)|A?Rg zVYKf!?UaWYoOa5v^;Swg&DJX(g(Ssv1s=p8$Ur3XdZVvWWJE$>k_qxxL`KmxuK8wQ zYU_b%aa4%J;ywW{pKDwIy@-bSfmKA5W{nwuyLtd-r@O<7Gu6AVIjB7#Y_48qi29aE z?2pD-h9~WlDvlb7l9r}oC{Pj|A@?p=tHaso32iPrRM5RP+tGPUL^Q1C0HKhn%rv3Rm;H39wSZn%*OtlT~$+la+$1J7rrX zq1-rACajr!;$8Zf+^?^oUV=&Ew;(|>9Jex#H*qr;YnjI~%G_#Ys)#5RMnLFh&nkMI|K@8*Aha~9qy;!GpXsK!`m5#Kn2hzpxT4K~p@}?)$v3PJS z&O(J9Mu=l4(9pOD=8O3cOBA_>5@pcj5``S8k+4o7T~ZQ7`LsPJ-d0M?*h&sYzciT~ zO!{&Mj3V>k*Xm^(o@geKgq{+)g3u%_vtCM~13&$iZ1pm8si=@M;1_PJK-=gS;EOZ9 zq{4YeotmhjNH8_QXJqm&B&cRcxU4kK9GhaL7LGy^9YKxg?I%mHG)1P{i3&W{iRQ-f zvZK&(<7cnb)HY}w_kB%)(Df>_DRPzB6yA|ECEmh*=57_yg2X=5N)RV|@zd7|Y6TC! zfq+R23FmpMchO#CwKy8g#mEzf(H8BJ-b@}WLND5qdO^P&4{y@_&T~9VkSvN*=kB7O zL$tuYJ4%7K@bE_Y1zvRp@R<`7x%G--cp^n`Ei+t_mWfLe9j>cy%4X?l zr!jIkTL@vdLsYJ^hnu6&p#1HHnzb7?1!w*3Y>)^c^VJvf7VJ*}oJQIc?<*w}=jw5c zr0=u|4i&sZcueF7KiyEV7*Jhgs1%B+W-$fngT@j(IPf068j%=4zCW7dd(DX*yfV$c zl5)#7&CUdGo$aiNH1n7lHje`_j3cfNF(_lld0~}@ijV@)Oh)AiZxd-oU zDJLuwxqFnWy5pwqDm+1ys5@dEAW6$qwMr7BEg0cU9_7QQ*Lal*ZQfQY zf=;V8e0r0{T9vQgJdWB}Q)#Dl90X}Pw@W6*WDo;@EhIxkz9CsBrpc_M}M)-jre zCUg`C2J|r1i=IWY^S_xzrB$*i#;Hk#mfi|~(VmV+@Hw;L3yV1lRX}Do+rC8<7+IPs zM9Rg`Z}JyVkbIki>qPEDd+KCOwV6!~o^X9)Hf7`k6iZsB*+`-@o4;H~^@pUuN-bK- z^Y$67EkP|1x;hKOventeZF)HXvxYS>1XNSl9$0Z8dhsyl^aA45>lMT@fMCBzp9(U) zXZHOqKn`TB&{t+o%9HWVFL>owK$Q2Oo+W2d%($c4EXLH4f3>#KYtFySB&m%@_RO!iQKn#)23mj$#4#y zU<66%VwwykEmMY)==e-XyO_O>AHTiYWDS(&3<`v0tK)Cpqc+K`VHUT$M#Tsj`5=0! z<5%0D21u{(gx^?|{lHNU&fEJ6dtjNM95!+*ShxK0CDk%y7jL%tKlu^ zT|pejX&k22j2P(!4S5V8k*Uj!q7ibDsv=KxnHcY`2wd_6UPx z=zA4qZw&o#c{YabOI|=mVBg(%@}GJUzL_>9C>0f(WB4)^H(Q4o$ANKX?jcbZ9}?=B zX*8hg%Yu~aY+tu8gHK<`9e6>zd|eE3f=uUGyWEQB2o_C%S!P%er)PM*`Fg$HpUcTf*?xcgetA6F&-uJBulxJ;e!Z`s z%ha^^;zvbooB|j!Dx&du`$270@!H@JGdHH)Bm9V$V$nEejlW8iz`2WbKJMmpbT01uupmEbOL> z-Goum=g=|nR||e^T%JE9cM=gSppAI(H~2m3S5mb-%TKDD1ZtA}^hUw_nTOMhXfkGH zqwLS%YAx{e7kCj?^P6%s&op%%deDI;^bfW#CkAbMgXRbg;^`VrJd6TFJP->Dxj&zv zbkvv_wg?@{!Y zlp0R3ZY2VPiEy$sHo=NXQcW~=kNyqlSq*Xr@Rw-IZq?5U?>G@#gUbV&uiBZ{>@SD2z%~1w^_!L?{TwD#N-|HH{bog+cz&s98y)1IRE>a_M0tA5~~|Z66JWFg6GRt=TvBf zbrz*?0sA&3i46hoW<0C$jQoulF{;SlNcro0W+&j5|0k$$)u4N#cOR zK=1V7|9!G!Ng{{3EOW%vlEhQBC5fLNU6OeJXC;YOk1t6)JFO%!@}!c)VJCy8x{|~@ zzbFa5;hbro%FotDKe|nS+R@wws?jp4GH?u-d>oxtedwM7HKJ!S)6jH{w z^pC)ft4jP#we*f)dz7F3U-IYRmRe*aifpJwy^TaW>kiaq&;_?U(ZahqQ1TV<_p0|kGUH6#a;?4npu zBNZ7=;H{;m%o@gPwCsGv3*VB4(Orgyap%>(VZ6u@5h)HGgddQ=Yq+1o2M&Bp?{K4d zhX|S)LE2K|FARKB(X1>NG#ifvn#my=7RIL)*K4dI!e&FLqC$?|=|_w!5q}M|661D- z7)7mM%wN0b6ytjv2*%4QfN|Nc0>+3D-yq+t@l5RXIS8kH^$V@_?vOgj1A0q`tc!NU zZg@o>$@qnYfm3NNd_Dhk9Xl3E3MBDHPZrsYgg*<$2F2!pdh^Cpf%>{l_3~VndGTaL zouN<0f8Hm@P`~#j!vwRRdbj$tuSNYZY78FEI!#K;rZNpTd3-hI(=R(6;z3rmX4SU? zI=Dwxq2hxwb7reaRpT2PbwfYD8~c6+?6e77CinDL1b0FN?w_0%0T##y9XV1m9c}Ep z-1;qwKBXVoZCIaFrQ9V*)-4%hNh_+Mn;@V=+f*1~%D+zqw0yFa7gGX54dZb3f=Hz0 z=BLn_Rz+^<$xr17+u)t~e}sof4i#Ez5{;Ys7bvnaD1{H&tsXqiXW^o$Mu|9;5l&~z z7dWElbS8B-i@7Rf0mee^-g=G{A#PKFk+J*Hptog7Q}GX|OhE;7@!rY(~1s{0lLzd3?0}&h_6=fHHnFbnMFvVANiVIuhf~oYQk?(B~k{{#f z&`Y7W)cB7tWVMqz;HQ{>#=0LKZu*tJne{Pl>jCTh6Uq==2xZ+!1SNc&gim@OL7g3= zQ`ipbV!f4k`h_mpfSsRL2eBOY_h2iAz^E=XbEcY7(asLgc6MB)3K z6IB$`ut)(>JdB6i?Q*Y&P!u~?edbqUJu&l0%;#UMQ7>DNm@SJCvyy@g^y2T_|Ai9s z=MeDLRH|Bg&HnjJ zl+C_VinK}_QA>zdJJ+gZ884vO@R?|UUuu<~;SQk&71zH{6md131aVz(Stu@)4>&yg zdqecsL;dXm|G5UEJ#J4Gh;Yz>tp@9k(fPb;lN2-LM#A+tRDq=WDJf_{B^LGWASVzM z3h1`{sAuLUAxH2+Wx}BO3z9rGMi|U=1t>m`SGS>1nww8_Y*GXHs3s&4_R(kL@frHZ z3sqhlohUBuHe*a0kD0&;ow)Z1GZjm~~S3Wvb`{&JaZ}?8g{x+d1Ao7Ke8g zKaUm2N!^!g>4|4b=|kQ?=`TBcX*n&LG6jBZTc~Ei*xVA^0=B+mX&YJ5wjf23-o&6W~QFK5rY@h6lp zrdOfZei40Za9xDr70Xn-{JdGSG)#O@jfK6-od%~DK!6ez61LY9#e)rNRN^auJ@6NS z7I7hf9QCz3ZJ-Mdr=Ej9jQ4!0|>`=2YkUWP?#cS)P) z6~PK3Ce)Ll)uWqvC$@?8OtVpObF(mdBzg=(L>ejq{R)K? zScy49nv2$w&`i=Z7cjktu2Jh6CCx&KB|;y|sgEC>xki1Qv5Sb}?F&>CH71HQp5>4v z`?{QoLh=elA(`GV?!mn5aH41_S5Y*XDD-KRpL42;qIoz`yq#B3Xsu8b$6^u6?-z{9 zwoxdV8+=G6fjxaLUB5qL92oQAnm2#jWQKFN&rz6-Aqg zLZ2pz>C;sdox_RZ6)XbMDzsK8ieF-1rHMl88o*P863pTfAgrQ_qS)n(HHzY>ow*mk z1)n10P5qsa$fWKi+7t&Vp8S}3?EO}^`lh&S;0HSaJjjZ+>3PP3wrM{b)vJJh`AY%R z(SkPpU;s$kH0w#5epuTsALSURrip-=h5Z(fWx3;5u92tNATZ?Vtyc2%ypr<5Y$4^t zH`)IOq%0daYR92GtpY8c&v3qLnF9LN#RBLIYy@#{VnnaY|H2dN2~XLir(+V~C_MJI zHYFnkgU`I()lNF!R`ADNBH-^Lohan zg&*@e?o#ByBh{Me=kWBC0L^Cll2>T@lIczVcIn)s4pF9LFr8HDX08X*=l+L;cG_L^ zF_3};APh!epmh*XJT_ub!IJK)vd>pz%{?0=%v>9A0Pn;YJS&~v(1L)n)~^K5WNw=T zY-~D4FGE~iG@PpUU^sY5!THA*KR{U(6CslY(#rz^CXh;lDCc0Avcuw!SvskNah4N@ zrdcbT+Xx&0;|m51qoD6Ca_g#Jm~R1vJSAQ={@Lsm0QOW%ABGE9$-z_8*J%2e>;N7x z3RnQ@_!o$8uZ_HfX5%wHVfs1ee<{?Kk}Y(eeB!Qk+~p@dLZ|hAk_}skj(&8{U#Q2( zC?*JTS)aUg2|U{k2n9ICL6;n&aS%@w6b$!<>Te~vuUkRxHDK))v9ty!@)b%!RFf9a zxN$@TZ5p}{)QF-<6o^yibV*kTHG-uP&qpE1g^v+styiO+*xRVG)+Lany^Y3t0QUCT zTe4xC{aUN6bvNK1*t!(BpqLs|;U8r!N@~DdtLlp+F?;aGnU10SS5jhigCYMc$|dqF z)d(g$#9#58VV-5MLqvD-m0mzoDmLwfuhMlsATt{C25=3W>G6~m%2#V{d| z@skWqAU;j>0`MAmw^bBVdTd-VX@+*FRBj^RlibE2Z#x%>D72iJh~|2}sbW~rJ+hzH z?i0|SE=aPLidlWPDyFBHVpxTW5vrgVEo6$B{iKqrRAJ_w;_5nSjfz>a4HWYcniE@0 zVu)h4AnR;Afl%uiC$!Q}tu#zqqgLi^4Xr#Q z5)&H|SDRwRhh|`<3Q#)3X@-=TP%I2XlmuF}Os^}slq+S}eNL|!bWuYa+-im)D3>X& z+LTTGF*~MOCIqTo905Y@#WM4zy-JfwEOVu0mP@8@JHEl)jI|x8_76wKRr|T2>nT)i zf?H5FyIobAE~Z-Ip=zZn#HEEyd$;sNGQoyYY?&X=Cc_B1@x^Pbl)KxGU!ykvxD~Xy zbUf>{#s*m3(40>T_W+#=J!4nF#(9nN@o-0+8xBVD$#XB$IKM54f@rp#c=|ZM&-w?+ zD~$6c(+l)*=||(Sdp~Q(<~8x%f}Z0ca+pOksl}3TJ)ZKTNq(?#FrlTpnePp9zngN_ z$&|n{`e&+nX<|^T4P_DyTT%{Iizz{^JERt{1_fHWJBL(ZN>JrotJ37F6pR|Gsk8Ur zpw2YvEEnUME5{WADF2~+!1g=?&8NFQ$6CE^;Rm_^)o+=6x-CZeN%?&UMbfVOB3jU( z0jfvoq07wBg)x+vz6Df?SC`@k8ZIA*SFeY@?G5qjP4H0mhIq9PZPDJ=!WNdpMWG6b z%%s@1u)n1~(YOg)XAJ$nZ$KsnEcGnWRIJ3oH)@F{h9b?%VJfU;#JPEDpgViHw4Jj8h`syNz$x!zl0}Xo(7}6_F-CJoM`o=&VXst2|z;N`V3&uqqj;0@p52Q$z2ON_L|`Q5!%Ur-(G!9QTKs3W=|og2Q!&Y1)`vZN80Ps z3rPSv8Bstonf-coe`;0gwaT&|7pYR9?x(Cuom80{T!<(1zI=p|u-w!wg}l0ngmf!? z;m1y-=D%UXCO?|5k53LpBi3%aZ0V7u*-oKe(^_iAnvp!CfZo1b0PS@JjO3^Q5a>p*C-wAu$0DwF&euZv zDe!;*d2B63i9RbTvi&XqVk;A5f?w{!cJ3!@=_oo!RvY$O$sqZ&(`E*{`)4ss?wH(mqlqh(X!y z4RjhjOA=NGgn}?BMAC;kFcUsxBPD+T0Uzs}yD2wO@+aEO89$Xxl=J*1N?q>RIpFm5 zca>9a0J-uSw!3%AS+U|<*Q!o1zH!@};&sw9Fdkz-(orj4T`ima5b+41xJzY3*`;>| z?{Lxa8*Tr_o!50E<{^{8&zS%Jv`3b%WlU)JdXYR(6G@66) zIjRK>VW)G|s|nml4|)p1i@{q5dI;FFf)hjwTR~^s$)?SP|!! z@|ahWL~kPAz%n(??Muu(G@lqnD}Rax1rD=7#XsecZ^ohg6q@Yja3+-HD}*#k9S4!f zpOzclOIuutCd&?&Rzr+@XIoQq2Q{xe#@PjIjlzQAWnl^H8?LwcwN+9L(=&MD`}XQX z=8J2@JO`dUv%1-SJ3lk2dzISA&uUU;5yQaa+`~Q>E-BN2Gm375&pun-hDBhJ0u!$M^fTM0 zy}g!rKS)qEM#ELZ)Q|qPu<cEL!s?y(TJzd%? zrx%y$kzl(Zu&C*3iBwRc&NdVVt7fds;b|R5z)}t^RZedm$y;{tl9m8HvMY>cWS@Y> zXpy7PAx&_xowy zVxILR!1ZOQlpb>od=i@nEG}kmhB+wIi%hy0<*mTQtaAivqEMefVqrq!d*EXBI|AP2 z5^U`r*pc2&+8J($N;D=1IBTrl!TReiYb}9^Ktb~*ExNZilZVTrnuFX`k%J$=FJO?# zLhhwk)tTg^2JSO4c!eL&V7{x`7GS|q6YURZ>c0sZ7INSEyP|3S8Z^vzk7K=wXetd& z=Wu8ir`Tw~3QM>@?x~aIwO|3^^ey{nI34R5{}1Ah-7C$)8QkmXV+V}0&|pOf*sMST z3a|3>nL-^hsUmimsm!1HNlVw)u*iJ(+V{gdLFKwxPe*v&tfb^Cj=2R64m63~T|5N@ z1^6JMDiKlg$8dj?*nA6M7vPD>2vO1kFFoeP0$3QXMD#MG2IVZtzEFUAL&3Y+8(QJ= z9VibBScnxaJqJ1QPx}nMS)U<413K;V4P|-EdIaQ4e4*vkCoH$-p-*G@q?5UJfQVc) z5{@e#wZNetmDm6k5WF)f^U}KJG`xUZhe8Cx!fb$i4+y@nV#Z@p}S;DQDs4}mSZUU+jTPkq5TOSj$AaY`93SDUn8|g|x3b`9e zh3<~|ZsPYsXlUlxcwx{YSIRRbU-A2>K;FzC4XvXI3g@4;4!&9Ike|`k!GyB>D=6#f zl-8l;v~^UAVI!jA(!oY?U+& z%z+Ew$cEV0x#)?Ow9*R5)6c}Q7MoX(&|jdDT~2^?e8CVJlfMxY89ENiFt$DER_!NN zN?{48Dgjomh<2HDU=T}%^vGfl|Ps3w?DWE`aBR1;|khwLsl zcKOcWA@GvR?(?yVjf1p=d9=AWK1@+&q?%r-?^f@pi9D@BSbT zRd17tt#G`QqfL#yS#7F3TzC&{N)wCN)SL+*4-}=@!XX$w!}CouRV7!?7nM}s4wXzl zDx#9)5tHeteRVxXD_Ys0Ug6f0eb{Dw%r^OEwkbcOw#kID`~fUs$>JrnoZ4mLF)C>b@h>LQ2(4W?+TEaAQb@4B68=Lnacll2y>yYFpt94-_BDnS-NN_?ZKp zD7Z>xd5OyMAC%>WM|xQ`Cew6!pyEdQ#s-pGuWmebZ!#p>WGgF^hHJxD(AH#3hG zglBAKLMmAYJl}kS6|xSPOA&|(1}UEWm|K4bHU9VruSV&BwVoPXn!;G)%tSUQF=Win z%E6dj%0cGyIc9(4J3409dtru~nUE6!HfHx68*yoBfs742VWQCv4pcL66!Db0zr3n5 z6Pt6aH z{o1gb5IfkW+)-^~k`_>I}bw4j)?8F?pj>9gmJVA7Y=> z-K#p73E@Krr#y^>f)R(A4$5XjhpTai3Aj&jMgOmRtciQv98?PqaKA*^7KvFiOA@s+ zN)o$268~3vYy92kkLf5$yn%mnE-XoGd{IfF9ih-EHo<)EzSwdWPH=FcJO>H$|lIlZV5JF4@dxg-V*=>rOqA5n#Wqg(%Et~C?e-sn7WUn&Z(%PHRK_^SaRXZoFaXGZR_VaX(hPj@w&90FQfo-y+khkt^IlW(5?LYdQ#@Sjk3D%W z4sM{Nbl?Ib_b|pFg`FQV(n zy-aCeq|UBzs_IDB0V5huVNqVzRQ>f=IHAbbT;T);K*5yo3MaC9=(rIe7ZJRe98=1+ zV2V(Y%_&c(KES5P%)@XHG$e7#__SU2G;0Zsy!dS|OP3D0?*)ybmvVvWro}WD%BkeQ za>dwn@19ECcPZ?~9cs$ta(*gm!@9F>It>)!!{tjtIOc^!?6&>yF7yP%1$NL33UHYL zcAJ4OoLCw0z=ety>8t~3P?%IbYwDa@#_{2He3)(ANefDM$|J} zKnkGj%E^?3K1iZ)tMN_V8eTh@nz<**MuQ(hwiN3~S5MJ=Xcb>V=%qjD2T*tIwSasZ zoFv6OL@kk#{a+z` z5DU>WMgqL}=y5SZ1K0ua;NXJDCW0qZPI=@ynooeJc%>r_!L`rg3)6=spb&pC{@Mb( zKim4h0z0Je23znwLyw``T6$e#xoE4^P3 zXiulpAlVGy>2#))FQ``UKKc`?;aArBuyW*laO>i<709}Vt)OZ8u}u4joq6xaY)mSx z)?XMI11HIywS=;a8un0m<5IA&)hv|W)C(I?kO})L26dszJFxMDd4YnF(4`5X93`RS zKrCB*16j&adA{OA+(idjKFBNS?#;wxnRWer|AQ=Z?sis#EMXGj1`A}Fc2(oQi7Z=+ zUI7-1kA`bH7<`)?@wNMy9N~dNAr|vNlX1K?cE1?<8|rj1Y!3!tCtLBcdjTs}itbti zvs7TxV)pGB=*9;D>cK=L`CybYw1xcZsj!78xUvVeg|uaYCXv=|z#2$(*g)3iR7Ad_ zYZFoGr+Bzm_m3$x=hl58R4N>5VFSs4P4G!$emadnM+I5${`~ycG?2r;qe?|&S+s!! z-K)qZkPDWR4%|(fPgRlTQ|PbI=hQ3~&xp2|cF%vhCOzODK`7fd5H@aW8PHgG!z6p1 z@GrD4K_!+XsHPbzQ*uEp9zzucUI0(rslXfe4M+zr0CsK%3aHnWFAa@DxGKU&F@ICH zSQY_cyv@+3yJnRNEloA2z46x2xZ9Y29??ml0qoUoon?M{3g*Iuji1m!guA%T+ph$J zvu)Jw5>ra(OcvqcPMGZNZjshHoZ$0NKm~(4+g^#{t>w*$t6 z`&xXjP&2+8;cDFe~*zKu%e<+D#PfvMuS^0nRWvos!)n|Hc`(*8Jd1o zttudnYob2M+ZLY%{t0u&XiLO;_BY0gPe9$sFRK@It_AQhL2dBI{WtLU8Ww(dKX4Ga zi{sW4L}cWS4~7>XIQ3+Uz}Q1rH;b&G;S4W6^iK$9#i-->u~E<%-RA!lerd)+8?C*P zttv)MfqcgVXzzbt*+yLrq|52k&4$Rg2glJuP0&a~ehMJtsF5*rltKP_d!!`=ovtuJ zk@|WOtf55~_=leyDcZ#3pCHe=SN}7-HvPz`c2O0|>lBn=rRdUu=wfa*xGH-wCJqHh z+BF#t)D_W12`!Kc=ANz6zVS*XVKb&s!o$j!QL?tYPkE0{B=%Qb86=ZvXcm;Hc>cH^ zy+nt_R}tWAFN!b3Kn)rOU?;w`3I=bK><}J3Zazc&@%DkUD#q?QG4zyM0CG*t8ge5g z6mS$deuw%pQ^Ev*AkMnW{~eQaz6p#pjIWK27y&nCE)jl)K*pkkLEdc`$SIU4Fw0CJ zN_NKCz~bUqL#9G`4#8g;;Q#%5#X0+?_#xYRP*W?^ls$+^;I>SzIBCV`ktVybQImGx zk5fYpey=IRVK8{s%T7^EK#tFj1butn_kIY|7=nrzFEwP>gTjRqsTdjjbuG3Ad& z+Us^*wMyn*8eiiKOyj*VTtaY1JI6Adn1{pSSAB~R(>{x|=^V}>n8O*I$YQlPS~9j_ z`|zr=YZfrt{X%881TTo|*2X6oT=Q;TcDVJCs|T1+2s%=0vY|f2|1@#JT$yI*{#rAl zQmWskN-9AQ97JA-UB&rkQfMBD^R*~gF>6B(@1Ye}#x2nCd6G5bJN9^_Fd;r}4vn*!v|eOAD6TX?g+&3ti# z{(SI@13l{mD-Wgog+%$(Mxv1!We-jrKb`{0xm7ci#`F*?hdGOtccDVW z%2BZ5gY{G^)$aSGap=sd3Mppq;Z%0Y0F!Xvp<~S_r38KQzYz3u`IZJ9-8@d+3`0<{ z{t$)}E?Q-cvi^`Vot_bO-tZ1UM`Ay0Z$P=Q-|MhDc*7VB3;tRnXFkq8UDckc3ld7j zqi5RZV7Rs`z7mawwWVJbdXoU_a$wj7ca&bJS-7vX$<)6g?PI(Cq@S>f(1AH!% zx7npT7YFl;iv&R76k{`&`}n6=o^DR#y_D|&L3iis2!fVVd;&S=-W^jo*SLEy8DA}v z@hTPfJkLn!u!l>Kdt?4bdMGsR)1}QlU%XAF)(n6)$BS@2sv^BEQE7Vz3^j)52~K zLWZ!Q+{kP@q14C?H(cHL{dy{|bTBuYiY!_50znXN4r{+nGzRoQh$)~ZzM$#m&-ANM z*gv%Za3Bqo@)yDIa}Cu<`QQ$j>6S`3VA|5Nj`6_7J=;slEjSq56bV5_s|sVd?v1T$ztguAGG1QQ7xH1bUL*{Ta7SXYkQM0P7JNxi&fk zHTUdv30U;fe4<3X>$a12+-Q)&(k&SkX}`ay20z(htMO;xV!#XZ@V@b)hsW?;Y{-Pw zb(2anYPmPBQ`<~aUSecJ$dSYIvQlj=W3RW=JxB|!eky(F2u`cxjfKD}_2NF=0)+sx z3s^{*3NI>P@ZdAEta0^D5Hm`yWR3VH4v>ZtnPBa@ngY;rz3#`KekBWE)$oS2kHCt; z4s2*VK5K!S6a_aGP9Xl#*By|$>+)hW3Z#Ct^*Z49n<`dro$w4=>DWr;JhYv zPgXy0>l!ECWsyg#=W^SsbZ{{ zKd&;ra03H?npwC#qo%=vX}m!)Vjpl8nq8#{NxB;f2j%sx@J7*aGOC|66B^Y4zem?iHv@EGA9H}eFVd9^b z6}9NFsz5r0M;wf8D)FkZO*1oK%;J5Upe8|%1UO(l-^^S{V=^~XHjAw(cTLbxH)^Yf zn8~+5Lzva&w2RJ(q>z(P7~;Subu)#Akm9UJ>fNClYRXI(Y$zamIos#62I7>eO#X*B z&G!Bxg3w9HA(XYxBB83RNmLeChm3LiT;V>?mL;_@GY|B$W_dzG#pFpLO>1_{{Qp{} zOW*$gmrRSrQ+1d{q-xR(17yQ(EHr0o8;ZE}12+6AYdxE@S+LAbR^_>JIm#gW1;a#q zN601)+tnL?vX^+{+}`lUE#rM3BLgK^1cof4Ef{QdqH#hd??X`W4XdI7{#^ZfLf*F1 zZ2c_qFj22kyesm$a8;nAlQOy_bXl7aZ1Er;X7T+b8rB?UKsYXs^0$(S1a$9{Ly%Apo zN~F^w*V&?6GpCQmgK7~$W)L^~%oK3D(c9Zi#{x?b)SxoQI<}p4h%y4ykVA@loO2X( z4*=+>ryup*^_{AoI+k83waXIVVvk*c5f3nxv)&L1kZF88ROky$oMqix z?_z%WP*$xMl#qSQCYh5e4m79}f@DdzK0qSGVCxTkZ`dEotdks7&Wl~nk#E_tHH4#f z#ve7Zh6yCi5CD0C4M!~lT7U>F4nOS+wevLPlm%wkc{Lue^Yaf>JBMzdQ8(=Z+Bu^j zE7{S^f@dA^BS0DNF%pYNNu&di6hetU?XEvghz_9 zfgEWpMHp7UZaY0Gkt-lW!=p?bQAlrR@cc|Ti0>kx8ujODJaLmdF< zm*UcLD)CcWPC|(DnL=Nf*=L#L(1;J)+ycQdL_45MVEQ(fVVff$ZF8*Us`APO+?6-7 zA{4MEg=%Dwukg} zG_T|X@~xh{o||Q2{oid4WKnw~5dkBd1*=<>=r+mDJIkgKem5 z=>e4XS$xlk=Yr8O$sIlhin3elFxPY?(&(9(hl^WbIOgFt-9r6NZpdVl7R6*!vY*fq zL!(Tu`>YBT^mtWPjR3Y%#fd*m&f(}Q5U@w<6GZmCWrA{#bE-!#ij((AZ}Od1G;0Y> zu&BKbw?CQlRjfppnR7qcT$xA@VWNv=I12@eTYAuNW#+Kgz4cwxpcB#YMgu;X%@^eh zV+An|Zhx2lBe+)z)uBcU)U!b5_t_%_Di75yaCU z4tq<3&x1~v;B(X&2tL=^#0Q_t*o9TIG_@%v)Y6@Rei99pL5dB>I?`3rj>!!;AG08d zB_{18YEVHPidtdO?biFYLc$i2Uc&`GOa%bNP?Zji z=WW?OCt3n%$Txad3d4&!;>{6nwY%;GKv(ZC;k%tC%Q>94i9%uWvCCRL2X@S2tK0Z>ppr=o^zKkH3DgB zVk^V~?^#L(iTor%EUqT#ZaHU(`p91u8B&B+z;O^K`eDAotct#>Y0ucpOq(!9^=3LA zFMBZ2vg#PxioeTT-8gX?JyKvoal&EM6AK^i<16jUKvP-d+qo!OS~nV4oG+7V0U zo5~}U`*d*C1T}@LAh@@f@_=LN#MAw96K&J=L)vs8ZgEUB5Fnb$L3*$I;eWIfbBL ztYhQ!qg6q_#YH6WZ~eSF;%^&x1<3{<)WC&--b&HcLII?;jAH>*G7v$NY z_meTm3(XxjXW_-AIfGEp%*4M3TOY%n0097*ofE={Njj($f2EXs`DN}*c`3V8&UjBp z5ft=+d@!#E>3){UPZ(is0WH{pHhcvAVWHRPo~E;Fdq5Utv*$5~u^evHox|U7zd6&? zDte?85;=ac>5_iDx^XjU%LcBcdjZlC7wM6WvsIuk_lZF7`x69u#8@v-xi5hb5KgiZ zJ*np+oNsKrb>I_7b1*sZ0?G_LiT{j~5jwNf%&Pg&YEpP7iT+@%%Eg^F12an(BhPA& zY@EsNY$Z~>Q@cQ^-TBW#Z37UvA7l8j|{Dsc8H2JTrX{(MJ*PYvX0xAdLCH1+9lo01>7SB zc-1Z4VhE--Di zrHf^h%B>>clu=qsO`>r>HZutxQ}Iv+$)H?jJ~&sC_FW*FpT(Ld{5n$f+zaiK~1tWh_5HceVQ*Q#iUSwY6Jhz@~tESgajP;7w-viU&R@q3C|~ zVF|tmGRC)qWpEXoOG(Tar!68~xw;qESTgNG^>w>w{YO5Q`Wt?N`o9S3_sHGo!WBrt zP2}a7j?s^2^4hD>p9-77ZV?Pb5d~VG_vRcMPz>C*mg=tB-54@+F~R0T=L1OMtII(y zLm)908-8uXZx}&cQN|}K;S)X;!Z-U2gfCd{zhHcKt$*tmTK`MbuMg@E&$zh!VHszx z8!(mD6iN@R0@Aa&bKHWN`T+LcfzR=XgfY&?)7{As2~Dn!!s!7#_7a7{v0ehAW(jxX zpE+>tq0s7RX#!{&cCZT|8af(5G;e<(8DKXzunwD^7}^!r6f?APZ)lTLUZcMfdCkPb zrPm!^-sOdcwvX1wR%sgQlX$p9P=AQLOTD4>i3El-H0HYVF7bx8Cr8@COa(S4S*!U3 zWzaZj^AKw-+$gR~*@%x34QKK(vaIzwlo@zNP=%`lg+iydvrpvoqo^A}yimbPsW+6w zKA-9S+HMpMidGY1`a`u^aq<9#qZ=UI%|WG|X$s}TRoclav4A_xSF+_OdXR}%2C`@a zsi7>60r$rw8rJ4xM8j@MTxvKxXRTD?SimJcoNG95JRG(J#DMjj3LU9mbfL=`LYOhH-;c zxLNKkbe8&tK<61-u^pUhAwEIGg(&C1dbuMb$#fLaLAiKY6`G)@37CnWG44m?IQ z96WF-*ztEu3#5AM4Mxyjn};D0Bcm=DIlnoWphh z+x|hve zG#-o(x)}QsOgV*cwG8fi-90U43e4d~Ave=^x%~`&DBde?L3re8tjh z#GikJhpSI|K|DjUv(!(GJLLwm7<|pIQ>aj9)KW8|0lR+u%c#a30xCZF_gC5<;R045 zXL^Fvy};lH{T~wt4`5vq9RSjoQH?(c82w!ch?xPP|1&_En7sJ!YUpXDxEryRIRA#p z#6i?Lr=t^^g^?K=2-eOJ+EnaKII!mhVACBoTZL;tr+J`dt=rLi<&%H99-;#`bgI06 zk;0LKoN&M8D|SM$#o{n}<+QQ5co32LAYrl|+lK{!#p zx(8{vtVz5F7xng-R9=?nv8l<-rul$aV^Ka_qzeTCv+`pNahig%Am7T~RZeB~1@9{; z9^k^~8{sS%$}~X+H0hwoGaPnVR24u(=WP&w3W%KVXcpc=$X9%b7)W;8W4|>dLlE;= z2CD4B(=RLcF)eRrR$?(KR4JJr)5;I1O7Y!>dwWnnDD$;xGJ#=-wo}qW4HvRn~zgE68}nOQ#AL+;pz^W1unWGH)7ke56~KuI{lY=AAvPn)KV$uTIA{UmtD;lho||ln7DFp?dz`Pb&9UAB zu_ex-uc;nOxm&DWeRLcUuQ#b1jtKO{vG%Zb@&aNtqX%L&;-QFT8OEmn)~B&SaCIJT zR3M{yJRFk4JSz?(h7y^=P8SIJNlCsK0x)2cSqq+41ULyI?3`_AzVv4cIS9Yn&RR}2AD4eQ7=-LTc*{$S>-zZT*4*LKW0Gk7$LT={a5 zA{PclYBW0CHY3O&Bi=T2*|+Iio%+^);su@Z#UtQbKmPm^y9XcBQpp+t9qmVc1=Y|3 z+Q9b^QT~ERAxdTzi1K&;f+z>YmZ;JlyxEks&PO6p9sFt$E~*3@XYnBGtjZd1h||hu z-$KcwIZ96nJ4w@%<}V6O~Q^EM6AwM5%kcCewacHfZNc4ozV-w}V&ePMNea02{1Mh}BV z&%MEjNsAya2u$W>DxM}kzI85s+prE%Oy3|o5$S})VM;686n$<%k0a@~SYZe>Ec_n& zy1~d%?(HGLN!?$nRBy)%4CuYpYbD$RpLzqr#ICt80ecs__*qNnl8U;p*nBp+7c?&3 zioc=$YAR1Qt}8#eelUnjX4wN*zNO8+im31(qsR|mQz@j#FnVg)(#?!*rMu=7a!X{I zIaq@9^Y4N>jf-PT6OAQ1_YB-E3RA0VJd7kjFqumCu(je8(WcxDm}C^^U;%HX2E4az zC!+Z)9`4#zUNo}N7ZuZ$*vV)ROWi^L2)N-H%fIDq=>+_^=uGclBFed$P#|Fycwn4>2@g_WEGUE zWHalE!pcx3a7pNk%v7ZEf4I_uDV?Q^Dd@Kz123;9E`-Vx%4Hm}ZgxbAmMCNCDd zin}d|YEc#b0W&$;upkrgcQ!B`XUqUf~lO;R=f7Vvyitzy24sO9r+<_H9%X7h}&Q} zv-8%z&g)Y%toDY5nzEe1;5YJFG%-U^&WUodH%8a0iG0PJebwHG*ggHaGKC?=nCY*V zN}=pxd}#%cjoJxzX-qow^{F89_vkVRIBmXOfR20zlP39O2M}>}&fv^=Qc+=FY_dO| zb-ZO^_5z(d;bllXfLh%y#+*n&vZY-5?CRClO@-8a-#V~bilx@={+dnRMECkt(Cp9@ z>Io138N5SCvo1WKwk1w{8)Z?fCP+CM#o{SR5E9sBM<(Sqz$}DDv>UTzNZlZy4a|mU z2e%(W`5AVcxQSKppApcFDuYKvz?Zrc|4s^e-OPIRwaua{b!6Cn()g{gbh>m9Bm@Q+ z+UfD+t8i=M(DgvBIAUHTM`>m;ON#wc!Vh*e1gFiZ_dNTrF%Ow12==W!RLYiGcx_YA zUl#Z?T`*5>k39;ML0T-^olHuht+W}L=z>cDd)-5^_i3riyYW)6ydCMU;`5J;7b#%0 zrG(q)RfR7aUe1)HrNGn}Xzu#UAZEw4;%JJ=6EN}0&~6n4j~NyQCvsz1zE!6Z@^%qK zY+#(9Yx4}yEYV#0Ce=s`3r|;V zyp*qa_jnMSACm*k?&y`?7h+Nr16fwvjmT}vOf6}yWCS$4W4o%;2%xLMaiZv~S)IkG{nsYOs?94a^#Y7)!Kz_Xd z5a9Vt!T{}h0zBy;dtK?fe9sh;x9=NhryI#3yW~yNRM|3Mg|a!-r7qc~Dxhr1D^zxM zl#pNdQ`z33k;m7Gfafk_JzSP3U&sYdD z?J{}r$x51Uf^WzC;=l&LI(RmvAogDIGHL5|cVqCbNRNynjhWrcpqfa!1-LC3;C+E1 z<&#J?-;i!Vq&H#yV&E7wAPlR>@3^wrhp;&bzdHq}Ph&#Hy@5DVX*niJORRAmY_#+m zEnWaUMhl;$Me~i8HtfV57)M$Zmb5=iPYJTJ)`vvWq~NA7@is}c_Huxy%$nJJ4LO=m zmS%Qf9h%vPDa4 zIsuPER)6ycqYl929lLX+jB7gynDCO73U+2Be^yvQR(6@|{=SgTMyJ1q75ehm)c}^8 zkiBWftmJ+x)F&D+`}OUWi3Cpwh3)kqUM~a^T(OG%R*{*D^~yw3>Nr#z*bCOgt`4jK z)dWn1Oc+}>=Uu$==f-81USU5sDQo>TKrnTavP++`)Nfyy9N_+^VL5*du>@)JHYjc9 z<(IVW{2EcCm{22@X_EW)q6-5NxlGHRA7c|+s*y{WjZaxBd$JrYGbXeP4L%bGs_|du zY0RKQ9?)JhUfrG(RFygAAx6aU`bzMjA7a!*@4CIw;YRNxC9={vN4PJFN3R1cP|He_ zF3}gN1=ke_>q@V>8r;mbfz6Ecs=4kmUCi}0JluZQ8i$ql z=?rsB-qAuap&e+2JY`~z-qM)Jn$%b!OMSP4C7qq=j@jh=qUzeZ zsQRzG@O{pu;QLeO`No%W7=d=bNG>oV%2(X4jv>F=iMI506~rBv35feU0ph^`ge+>+ zxZj+?9=g}%*^~jQnxGK>Gvk=>TJnD|&~14d#kYr1a_p`CcXIyZk=Odb=xH*G+i zN&$6CIMVCV-u*TTGnns-F!RawWM)%k=BXQnnJsPtGv~kS#oxu=76H|i@i}+vZ2_@4 zck=J>0x71Mmv)s#kBRK|1}{U^&*qBb5&%aK^(=907~l~7RJ){+{I3%N{Um?EwvJt? z)z(BXy#)XjXLSjjJMnPOzvF3@EuNS!T2dR|R9ZNn#crwYPb$9@$xpeB1Dz|q-%~uV z+#-1Pz=yNkNdX?AH{-S<2o0Q5t`>LJMGbOm1#mlRg5iUH0{~kE03M@IB`i+6dwvrL zHSNaUEf!F)#c=3&V%7@p*%N4Ve%1wQiqC~=MCE4mkq3|Aas zF9l+2qSzLYkjlG)K`0E>pj>J9K?9AEsCI1GqXQ(d_0oRn8^hj z3tLpc_iri!KH=LC@VjpguOQu67%{n4t^cFVrT&a9Q2)0<{UHh}6~P83*J!d@laOs9RD_eo0QD|z3Y++k5&K|-*nzENz8%pP?yqUwXAO95cBX*wpUQz+WoqDMaVr9A z?E+XaPna$a>swJ+`4AQsf*%uM12X2p=+DrmYRVdp;G?`@4? ztDvQ3-Ll#D;>|BM6qv*T5xN*2L0>Y~*Pd;{h=%Qwc7YN_WI&LD)C)a;zb9E5-0G(L(jhAmH3B& zJ25fE#wTs*8?FCgPzBE;vkakYTd7!%I##f}kB2)k!15=00_+!iQiH0ha3dr(zp}5_ zLv>(5CMeXIRhQ*&HErh54~ZwMR!;_x#wFv1lf5Uy_CO|lV4WYjzF@@o@1=^g77pwo zwxTfWLmu3M9&5GsZ;n*ap*Dft7Wm1N!{xqNIf@hqH`p$=J6@Q*{WyrU>18j{W%M>m zVWF49s<5o>1;mYf&WIaWXm(g7cF6F+TTxJWD_i5M1(5L|I|YMFsrjWwG;GDUkqx^K z9yX-n3fufwJGiU2x&UZjkhh69wjgg|khd`#H+TxNuJKs|d+;zLa*N)4uS+hm@g!uB z+}B3?HI#IXm|hGHO~_Ns`e)ymJ8{3@ged&mG()$2bDB1w^cilMB06u!-|%0CrFGw!`J<|N~>>bTv{IA z_Z8oyiv-`bc(@1t5=bjFAwzjPxBNv=25V{jQ4D{L;m;0(A3+$kb$hGe|K;Vtze^N9 z`biP7;s5@Bi@&=^TNd;xRx;Y;Ji++BM)1CghkN9ufbY1R7ph$r%q|r0D+JcM4Dn&k zAa}URTYOn{OU>v8am>~3-NQ@~aLgxTKs~8@qLOmbjY7&}c(|PcQhGua)YAU5?t4m2 zk@NS(EEL*kOM+c%74+XRsJ_q|9=kT5V{Gke>L$Tq7XYMhQG$}XNSR$_=5QF z{f*$i<2LF)il6&b*u=d4|6Basj~f4n#_fNE?!`)BA4i#)#E(o5cM2&7+yzqZc+rcZ zH*ONLf3dI~#P~ORs4@Im!|(0E@MCrb_{}tyW<%3xy^yAnRgylxUr4%sAxPRNAnAc2 zrm^n7)MME+-tgz4Ig@weBSFjHOx_OYGour6M=I*JM$(oCP?J;;F)MVgRKx3Nuc+xMt@zcqx|Yoa(=LSt%fZJ59R=iGfEtUb>ZpW zvqg{|ybR(4nFZOaWxJa0<{2dB*RcD6m|32fd-056matVZPf*MgieqkAGv=f%nh}v; zJ|T*^Bl-7xNC>cdo#B#72I~Ygf0VYZLS3lhc9&Za*eZrxmIaSnFyEl@c*Rqc zo%9rU$$}~bZ%r+w$+LSDe^ux|EN8mqRFf1mG24-vb@!oHV_J@B;;pjoM(OEnZz{g0 z%8tGzwg~gJ?MtMlGE&QM6B!nv``mI0Ta%Y7<$|O3EH2-jsm6FfKQB{_A6!Yr@OT~A z0Jn{4#sn5Adk{(Zh%?wT_@5pZcTwnU+5MdL(OUF!&*I@8e9n8hXJ}S60#e2&HQ}Wn zM%gqBM|k%~S^gLqqIiON0uHN5nU2xD)Nd6vjfj3^+3X#p9Ns$8qg(n%pg|{x%xevJuCXYVH zR*lO62irHHwrt|UEi-vE*?_yqo$bop;KYGu4lVM@)#&~xO=;~pzbODcADg;#TlpYE48|pO_IZ?(sK{vAT9;d=z8dr)g7&~7H|q=)Z?rBwT?{J zj7QP&Wi!U`QGVgb!O;sw41RmCa;Kib4e@KNl$8C}Gq9RIIC7^R>4(a;NN_&oQvACD z|89%?=KHTKT>>lnub{n4SEY^zJ82*e_v{1elF&kJGjczZKlJ^wo-t+7foH|&IO=*Z zqhf##>}=7kmIC{Yg1Ng0m{tK})6(oIr8VdM93I46xIu)WT;Aptr%zVYwHegt1X(oA zA~i5rvsI~yRzrMemTj-LVM;)F#{mj2M>y4P24C?jN5#whHD^P1O*683eQlag#p8H^ zcDKQXUH8Z{zTw}@S{b(#cB>)L`b?;C5BY?KMtXG$lDPXQnVHuXV7;;w0+j zji`uYTUgc;qQbLpX^N)vD%cJv?Ga51eKq)r%`P3ug}-AD3lAqkK(EdUdp~610QH{` zkiNFirnRY1;&a(U6uww}UQYN%);6bj7>IH~1Pi&%yVba>=}@XOpDbri7s(q^ol&o4 zx{EJUgOW|n(xTHOLTLURcb%}ss^2EfFgo!Al6~r8u!O(^8AZ>#4BNju0R=IPBuKTA z+PDfxLn*S|M)#`RphJ#s=c9u{kG-YbnMzCJwZB56f8i%ACyE9s=`2w}lK?MbHY0*| zq#~ri67Kkkur+cTa41)QUvj4kpqjnsmh6n*7LrNH?-+uhhy2yPDtEL|24Vjy$=qoor8#=oD39qAP)@;=>@#xF5EM zjv-C=(#(8o8tIu3qZf>}4wTW>v5MtDoiK+&`i|Cd2_{6eb?i##)I1E+vW5v^Bip^( zuI5Pk&_L>>fjq3_T6ZiLQ{*d7Q~4i4`LF-Dm;W-fg3pl@X(My5P>>4%61kgUBT^*y z9Lw!wE)1B6*#s!4cuRR$Vi7$n&5~Nf_Q6m&WY0H&i@1Rii9{MCo-(gUV@ckpTrdj*gU>JD$1-iZw=xC4*v<7GYO0Oo+qXe8tP`pS-DWfW5mmrBWRv z?r;z7KUCvI3lOnm@Mj|^v90MyLqNsws8~Q1&L7Lr&i6(1E^YyKJJ2e`)u3xn!B2>t zN&@x6Ql~%-nS40XP9c#8B`r?QSde7NP|ive$RzuyqP*P_ea>@gOLko@$Bc|OJ0uEA zvGYzP%JNULBIu~X(_Cqlxl)*&0q$rnXHSDbqpB<~x9m^HPm!4*9yLqOL&E(c@R0xX zE|WA3R~YNyKz#z%j?}ASR#c1WXpV;0NkWum7RKZl_pQqxCz5riWu-!i zBd!Z%SL&{v{JB_7GXRl6KHZ5&NBVq5iAY2)h;6CatZ{qBL@7!PdJ+b*0BIlIIsZE} zy5ucft)bR9Wh(VHZ`_XcWa1Fi6xQ2E>s{dMu>|a^yPv2VA$yrdG$gyQgF=CtftSQ} zPjiMGjoUy5KHN6l?)Betf4bg;#v14G9vvx=qB0V3o{$Z6D+HV%E`GK zEDMqoGqnBRyl^B1pkzTtL(*B;ynfDYbb*mi5O>VPOUuwNMd$?Ou=K+)2(*Cy)pecum!ine9drJea%`?$M6D{(oNt%Hc!G0 z(iWY%Z(}Ox0on2&UTpgns`g6NfT!TR9J2Z)Yn6O73?PCi4u`Lplb@p}@1E~wEHK9o z{mKkh3i${JAPbROvRV3lixDx^@i!bll#bpHh%Nf$@m%-|0Ast&z`~Wh$c&ZrnAUWr zA|@qcS&=$O#61M1{&%LMoVv=o*M3c85e!UyYBUnz$}+%Xt}J7&EE6jX-<6q(-a!01 z8~3PQe!b&Se!Zh{Tw(fCi5&*-SF{J*uEf>xwa#_Rs~Lwk5?n*SEoVibk7m$8#QL-u zz5L|T^~fOXT9xZ2HGIx#t2D<0X|zr3)ns-{Plc9)+7eVZM5v;J`ogb!&@Ul}CEP~X z9LYNM#3}}amm2);0VVheLsjj_f<+bafKXWVWY9t?5hhGq!f4etY1O;8a0xYwr64(i!j~A;NrAC9oWmYyHPc)Z4Ma(1ro}m`4aYbaAZaS_FX~7zzvxNDaEA@W0^O zZs_tVrdZo*rg&mYIFd4J2^&)+=u%fB{}-FzUL|b!%P>dbp3Qm!&YQ9-1xsN| zOi3zj)Fd*N;!0@A{JET@~XCsDxQj>F!6+nTCEX^VpIOzzEA(? zbCf7y0ei;nhKsX_Jxf3t{;K1ztbJt$f-_^yoBxj3k+Lnzh@h(vq`TUMpbIYxgpUF* zP)@#+Xsyt!hw4Z0z3%VlfD)v4vFZ?PtRXot29>HQ^d~=u*POM4iYQQ9F@34o>D*-t zZb8*!WItS&C@cQWS){Il;TlhmEAB&3k3eoh-3gJLk+ zg=G4A6zg@XX?LO?#28h6I&v>XJo0TpyzM(ceA_)9F^*JBEhvr6St0Bgl)T|8iKrHx>|77dp zf%sf-Y2)T>JUxJ%>1Y^VV<&P6mT7~(80-u;tzJLCm9LBvy4yd6(AEt>=pTOPS(Hy` zrBM@1h-+oYT#i=_nbRRMfB4s zIIZ?l5e6Eoq-pz;FGcx;HUenp^+HynQxhOj@v9i$WZK&VjKr5^t$PzBGMidzb~h9J ziHfOoG-8wdm^1Nk*Wc~MB>JodRMTf{=Q3yvl!?vD4-olu*b2~-fl!<9478_~nnXjX zM!GiP_fy3^Iw`o{#>1ro+<(+s9T-x2T94N98+S=UhJWa8jw2okzwh;{Hk^sxHB7u^ww*wt?)hyzM0Pq{i znZ?)mY18O_N}2zdN5R1gVIQj)?65Nof*tX_3>DwKN85gONZVh)`docVrm0>ue3a>R z=irn*+mg+1==D^DZBrZ&g?7Ap7$b!x;~#BJ{;yR2AH@qSq69l<-6eN=Dc?u2RujZ< zUw4c0C;NeibqUh&bZ1FwCfc{Ym(zSwnGTMw*f=&Hi`@iI%3cEN6AR`e=8I9ozu<|z zCykhl(igw=#H?*Y+|CPUyKBAh^;bOHeRp`i9;F5{;)(=ZVb@9E5VCAzs$tn2n=~pw zWnqA0^Mke&SRZfj!D?)dtYV!qjU56U(B$WguLF2D8Yj*9(j`igKCA{mxrIcxet7S_ ziE=XKOyT5hJe<4TbFz$`EJ)Od*zJ8c?Z#R`VYktvT)}i!5@+5PhhaT6)@`Ke(ZvI> z<>LN&Y`GItRofce#tR$lfG92NgUCE(ouUoI0GgVx*n>Z65lNz)H zH?S00au(T@x@)RAVI^KM(kt((Oievkgp$X@l?O~|uZ-&;bZ=M+gz6Ts6n=1TSW5SX zjpyrNDb&Ur{AIrs2nu)4uVFm59OY?i30AaLvxm~u`AeZ`%NEcy#L9;#m_^#tUrDMoGLu9tl-G0jGZO zN>6;|#q`7(mF3(vk!Aa#=!p`yne5AE=WH$~%jQO6-HVs8!RV*HIL4?#qQ-|JxuTOX zu&V zdv@}Z+)|yn?sK8L*B$-?pErS^CGU01yL!K1cMa16)c4F&Ts4DR*krEF4|v)x^##}- zt4RqaM&L|XIt}f)D6}296pkYB%zjJ+&#_RpKpE$(hivaEO#;1li~FF&3f)KKyvR?E z?5@RTV0Zo#u$*oCsrM$lV~DH661;Z;LW|qX63`f#uu0j)iw+0VIPuR{*xsruWuM-| zkHIu_pPqukP#oU2b$mTLaRZO(Zu6Sk0vWo%JuVP~8b1S#^PXFLW9}O`f;g;_2Q)7k zrnS^;Z-BN}K)cTrK!3o)ofHD%Iy6_b`8SA33VoBYfc-?00#0Ldo2Jb?kOeJOdSYD^ zU$56~y8EZl3dUhZ3!g1DyERs@^=aaq@%13d{by|i3zrVeIV>dFGlHG{0dp-iTNxv} zDI;6zxuDN@F6f4v1Bnp6)-(8T0Pw)}MWD}*iD^rNzK248c9w|gdiYSccL*I)s)YxV zEA7BKLA2ED*to8xqplFlbo8!hKXZjiHup|^Gy?M-usOWs=qA)_T8oGAc8c%tnK0u2 znEi78glI9}c*`8pg}HbEU@X1|KREECLqlPy02%RsNSZ4|Z~RSG{{Dbo0XF$Ce7-yG z*AeNV53eE4*4|39?7 z34EMY^*%nO9Y~=iL0bq*VZeZ45yB=@WSK&dDO8*SN{}sD!C(~wrVy5tl%$%N4g{@O z5FxUC>w-jq5-Ljym4-zK2wFfPpyC~a5Eiu{(EszCbMCuLW=iYt?|j<4?|bjL=br7J zd+zeyH~)by$IY*vpQ3y`R82;fe=nEf6kM^gRbOq#tB=olq$KwfQp zknfO>6P1rgl#fr5kG^BN zgvJ$p{?x2weP7K=m-?keWK#5BOsLGu%!UzGO#vyKnpPu(jU`P`*3Y(E+lg+A_KlAT z#@jB+5!Rj6?al8PS%hCA$wVvW_qWUVB2kAWhMr-V*dKu#EQ4KbfxZ}Y(*jygV7nGu z(8aNin(TNGg|3I!MC&BVLT>RiqrVn^>52ph9MJIG)u-87*^9CYc58N?)`QRntqBlx zGs0{B5NxP;(?=1gnWkx718-Tra?y!ULE&5650AQ2F+K3f;N{i?F8v4-D)T!N!jh#U zQ8*4LO?aE%#GnDfBcl{Ju5SLfH8CfN9W}gS6K3V2J!!(Aqs@#@?SW55hune{DLEHG z9Yo8t%KV53%W`CO03$ILG>6lIZkiv2(ln^p2oe?7EC>IfGR39@AR50ZE&&!*alFfV z#nrPo6vwM6PHshUuy>$YBAGOfVW4xvrxYm;^+*$jRHQx>kosk{Go%4zF-ie*!cZ$QX7m^UX4__jgcxqp40<3fK-v+hmv|H_P0}^o#22!RVbfKp>pdb4rTJW z^>`XJ@5EIONS}#WWSTE0_72!2V$@!Q1fNY^!~C^`S>RF}>^9OxhuKC)MNhzMY&rpn z%yc_kJuXproB%lw?S? zM?@W+jAgqJNXvCC&FC0Vd{ERIa@^gvP+`^>1nTo_4v~niAF|NfK>?aZ=TFpc4NV5S zOo;(~5EW1*GevzR1cG6oPEjGmHarA#d(T#{)JDTXB?ILv0SdoJ(}RlL?bj%=yqL^3~?Y=tuGT5!VrZp z4emwygY^m_*$W0Kfnk%tEtJ5bf%(Y-PKgvt7#7rHn*TRBOozLREpDy1=~}% z0@xkw2dMKgY}kyXiI388`6iw&(ZolkqT(hlkZdi;b>DAN6%I!Pg<%48(u@>T$ct~= zLYK8|R=y!^`;eQoZ7Y3X9{AkhuWQ@(M9Vd3+d>Nn>|xtJz^pUDw}W(iXU!Las*+cR zu$V5HF^PJ+$B+@IQdTUYx^b9< zq80bRDH1@hqP|&}+scX+Yod01T(4r-s%gc|biWRSV4R+Bdi_sd%oW8St&YbZAQmq zifjT_rUEKrBzDb6X+R`{p%5q?L5BOTHX7`@mD%Z?ow#eo*>eFtWVbOf>zQjY=6E&c z8pUHl=+a#!=To zrYh@6#)3PDfTK)_udBB%qfSh+q@zfPFIilpAZw$GE9xj}%~1$o=qOU&QNXq{zG+C@ z9K#VI2~8tcvS~>1|EH!wyzZ4#wP_@*Y3Mc5G}sI@vA7xRxsc7k+njBf`Tb$Q7Zk~~ zWOq%_ammYEGzKuT~Xr{<7g&K;x=?obIVgZM# zC9O-WrP$FW@|u``Gzm*>IL1IKz%0dp`T3Kv(RGkah7Bdw@XGs!Hfuh-TJw?HD6*Ju zkOHW4^>Jf;gJ|pj58qJ8yp2}!%Av{;=hS?+-$)j9k}YLj{?pp!AEsUYYFymAdEez@ z#w__qL;-Zdc#Tzt2=%xkViuEVGLw+J_~-)mCH8M4lCv(2`Q9`!j+&U{+8)f%^|E)` zZLykApCE}wp555XBSC!zLWd#nvITZ1{h56-tf7;33+#2I7tbwf$2Ma4ld}6dnaWR2 zqYrgkMAo zJGns;!Q62d`gx)K*jAVp_zE=I3QQ-vNB#|6;(-W@W|x4OC3OCW^3iDo-erBC(`k){ zS8FtKi>Gk@M}SZVwdbxrwrCn*p4Nka0#pcYoara-zj*$~lfx(ifGTB~|GAO#KPt)D z6el+VWpkB_UZ=1n9n-)#RZtAbeUk)bLEHzZu`kUXdz z3OC*kd&~}bH9M4BJcW^t06}wW(q7_9n%2|bj+vIgmo=>l${4@ElvopMEHbU$4>K(S zxao7%w1n1T)5^t6i%%v}xs93@6Tqjg^SGR9(=hr=RP4AgL_=v&F5<3QsaWx z*nDm;1kazUmQO~9+=6c@Y4f>E3+HncCwJ0f0-Oao#|Mcuz{PPsSJN;%Xaq5Ub|>~~ zL|APNfFidBKuK!@;9b@?fL=bJ2j$fofZXCKYybj8*9Bp@s!xw?0109Np;8~rQR=q_ z;AsHuyp1$~*nF-BgPoTlb(xXMtC1?VF;WG{lX~V+A5N;s??XxT^SR4n3gwe2RBoY` z3K9t(_^fS}chXkt$~u0w053v<`?jhjtgQ~><$tu*$H1<5L5Y8c@r1&>w7V@KV&0AE zsW80e=?E6?LppWr!Z#b$E<7hbM8d0Dlz!``G3C)D@Y*Z%D@L{tmW^nMDf1G2h}9&R z7d#ToD;}-`lOFbK3Jh~4u*dXQ9=`y;Gr$%PvNX_(4yTaFOn32Rn4qrSpJg?8^=t06 zX6YKx?q~t+E>nnb>Yq6EnV-Bj1KQo&LstbHTCOS}cA-tWN=ux24i>B5Z~P@ADQcl%463*$m_8BUZTkQn?O)Vl^|yIF+cZkaBs*HarkQCzOC3@nAf#}6oZK|nNZVeC1{kQjc7cw> zD6ui~gtb%%FlE?MU`N$_4x)ymR59P7__6=@Cs53FmxhV~i6$eN@{_WRW150(0g!eb zF!D!fiv&?y+RQ+n8I+oe{M(0{tPhb1_Nfe|9nBC2cg+V5Bl~e8V8kwpZ3~( zGAA#$pg|?CV=tyv=4%KP=0GRdA0TOw7~)@xROG`#I(#Fp?u%z@;-K-vYb=K7Lx&Jj z!zZIgZc(R{v>1YEVGN--HHJ`VjUgH>hR`%jxEn#@a;k9B1l5_PI)R?Tw-|yl*BC;i z?_-D|LcoZ5wT@YC@f5}o0t9zX4ZFt<9osS25(~suCs(ZgvwrKCB@KZ*$l`6e7{Y_0 z|1Cr68X^a&yc(%;8zWVKJgGZx0I4Fs4<+?Bt_ee+flr{n07p3y^b)&T^E{aE{vcD@ zESf+?%nJBqRv@=tO<GB#cXH9!mEK0dh&CiOV7q}_4bz=pM<;s-hdssK=!fTo-iSV=O4egBFDVYE zC?a5{JNqKG;36vC{wg|+H}+88!$~i+Sd)i#8a38woTa|$^kw3kuE51@a&hRJ^2wHV z?KIk~)9Az%42hdd8Htit+-XRr?=;T&8kmFNgoySQyrl9KtjlJ93fy2o$n>Bev!%}j z`vqj`)x@_P;v17V=XkX$l|sSw`)H9W76r-{Gk+5ZjD;wESPI2ihC++r+&rn>1oDmuwkUDQaVij@mm^=4 zXg-Y1gq$!omK?8-sI5=uM@FF%1+YqH5+7cGNI~z?+DHn~c)^(D5!_jc8&;D7dwAx{ zN{&I*2O00-L)!6%^_+lOxziqIIk+;Bl_gfhEeV1?rg^W@r!=O9Y+)g5dyR% zFM!Q~bF6UHA4CqDF)T3X087?gwSFuRNQHaqeZ{hrszM;tMxvUxmF>qOvq-Car5@S= z3}NFiq04=MFyM8Nc<|$WpWe!SZ{&WNzgNE7I`Q0|-gf?}CJ0H85fp+i0`s-UI!+Aq z+Jnra5IuA77K^^tO9O9XqMi*R9_6bTITprMFma4LuVlp(#&6zJVN}cT2eB!xF7Ym2 z1;Fy08`W0=Dr{`TtIWA9L1`f61qU4K4Wz{9%`3nC8JZ5>qTnNp>{nlswEgL^agz>kMFRm{lRNER!W?$HN%VMDo7K;qY#8offG5& zKw6lH`c=bxZ3hp%6qhWC<3Tmdy={0Hw44;(BFl#AE}~)68t8m7vBL97g-I9kDQ+shPU?Ck%oSM!-)n0Pn z{Je@q7Sf}Z2p#33Nxbn(G?xEPj6@U_V~n5s zcYzomVpR}h)rW|28O3-nKQ3%y>@+d*>N>ulV*L5PRE$&JkBQO4iWrxYABa&Cr@nDq zM2vfVPQ^%SVhtKXYWPqw62d)bg#|TrA$h^y4sUeN(1ojDkX7E9!BId^9&V%Pm~VsHZ(>p@OcR3 zrKnI=ahL_6q)fY74%=jCDc+~Oei|z-N_>uzVM&r0kr2A?(7B60_s+dU_YIuJp-}(n zT`>oj(Zdt=XZ1qeAHFZl2i6nc3=u?6L1~0e zVd)eX?Jl*_Bx6kJHWG#)50p1qf33AdI(%A{^pe;&AV6MI-~T4m8IT}IdJTzIR)j=U z10(|Ek>rRZI;Q9aMXXZ#Z^}gWYkKfGzXrH}=wNiHAU!=O7G(TvsCYopC7{;MCf&<& zAS7Dmu2a?Sv|fWeeg?w-b=5>2A4LyIQ9lCM!$ttp)l?QU&d*Q&4KA+gY;P*u>2%pI zbOg|6BY^(M2%yPE0FqZc0+3A4_a)NrVM&EVNU*;x=~J2_5%x__kfr3UC%`eG@zhE) z3yLAS-#Jn&47zW%89BmZF#74+Kr^Hjn@M^WVFPhyq(%9wumb+|74;Q6nt-V{%+7p|1VW5TDh6)k!jTmOO0?M z;qRrOrbVFqNn_gt41jGGpPvlGm@&SDKM*3kW4ioP9W|6{>+XachuUgxFG167h>R!| zUpi#tNV**=n*vn*k?u{ zMcdfMw95Rw;5L#Y?LeVby`A6@%w155xu-s<%#j4P5yA#u=uAw^&h8$hGhF!e++J&NsQM6cDDvX^73yRfxQcWW`rxfVHrKG~NYwg1D!EsDg| z90eu-tiXTnWC45F`vg2dGeh*{r8NU5?sJ8iNBi|%PErw>9-Tr=9_{s>zfg?$>$hOqzM9T7VB zVdMt(6WmXMURMn?(v``UVcBe9O#Bv{QM{xq!u{4Vb#5?M^Hs=V?q_~pyPTLvUOX6T zU5tL8EJP=6bHcdqa`rSA@;!ASUB41{`YtZ+N0=1wE+n5k=uYII$qZPRGl(k|UBMfg zuXQ<+SKQ@Drq|xY6G^I9l)jkJTXJZmWFm|)&sS?bflqHw`+dPbP}0vLf%(ZhEeGi@ zf6@F$sseY7L5SEB7cq^f^ znqmvyKjx$$q}O0p$E%w(TN9UB8@hx+`9LhbK(d)9@wZ13-7IiHS#0j z!B;hUmAq3x7Z_Sa@?LE4BKSQSl8QkPI)TCVnAYIRAC+LXi+yNq^x$5D^8157@M40{GeR-6siv2EXI;3Rp*^V1QS=!RSA8 zJ)|NZrO@(|r~euvfA3T;@+XM73Dx4CZ3y9$i9~JbZGdA255 z(}6b4?goxiX95Qy9E)mw=8-n(hrn8bEWKj(3eWNSFO1aBphGOf_fP2*TwX7IQjYN7Xp50R#Hk| zw%lKuw>8|4|>NyOTXn?1n|fxPoTxAHgP2jw`EA?FEV&{Q&D&>FDL4z3B|e)Oz1 zs6na};>n^a{-l-8m(vm1Es#BCjU1!qa%4D*7qghdME;@0TyDMhfLIKi0I!Bi!Z=As ze-!0#;%C^Mgh*x?5{iR`yjWsBv12>(j!7Y!gUl(xFex~eP)NvHnr&of#p&C#RFSXw8CJphWdAqVR|uOeJLdrnFR| z7;NT>RL)CG+hS`#=BIw*9&r%A$Hl#Ik~cgYt=Cb**<1dI zPjGNQi;w*^srV!*oF|xY$NV281N+H@Q)JaZqYZ_KWNGbHB%v+v^4aFC?Jn26qutGE z-i@CfhE)*@EP~XGWSEkRrtBRaxVqi_oFSZ|eBFr$IKHp8fUj)>zMd)^ZNdoX_>0oP z%V(RXp?2Qonw#uyPG!eENGMcVIc-9EFe|8X(17-yyp!_+HIeO{Nu1Zgt;llz)+Ap6 zu~W}8wX*Olz%i=``4H+<yoSVPmSl3vsNlP;vl*TTw$9+;HaUKykc~c>Ct@(=;&fPS<)viKbncg z!m~%BWp4^sMNLLqcANNr-?I0$mYvoXFhc6`lb1Yz7O>5UVav`ZpM6m2t}?o-arL86 zGQh?wdBt=~rl+d?s0fMQqN?-BZGNMeQ--+~SHG#E$}me_F=om1n0KcGftu=t<*Az= z5?RZcY;&D0!aB|$5*QOy2BNfuKh3xFS|Jr97Aa(j9}R(HNFJR;t5u-v+%5;T$i&e~ zDoI)>#FJx0@Ws8>tqc3P7?RJ=R2GJ;UsFv*I+ka!&S#`5j8WA(lTz)du>u)SiTm>1 z#nb3Va6bHXX}@u^=!u!der6WOs#z>vC1!CmG==y1qh|5cL#n)twT>*V-kejWJjp9o zo@9FEeeKAIS$rcSX3>J^feNiNvq(qGqRuc&UNL6L^q4<#v&ytV&El=;5wrN0&HZ(n zStyLjba%+qWUcv@zLk)QmKQaP_mF77F(h|vz5!;@M6)<%4?<$3E@&ewQ#oMWH`f%@7 zasCZ)S#7o(e|Q8i)=}^UYPaXXl+K|0=pSsfWFvu{IW3o;`nA_Kqnn%hI?l7L`>eO; z6^f;$+Rr_GOrbx3dk6HTZvc9e02;^Wpw7zWnH0W4g0FLV@-T6h=e8u-xl!S#!t-|0 zvygonj@~LLGghj-C5tHOX5lYDgf5mbCxYYD$C@YdvTO5!BcF>@g^+tT4o@6Y6_POO zqlDhP0dIxnVny091)_nlK;WI&bt938X!I?9yI>z>eeT=B`qB|J{LPN@f_kd>==D%v zIGP#*czoByElaBkG8kRUaTBUZrKfW@VQ=&4I*BO4Giv zl5;&7;-!RTk5~8PGvFD}LRJ88f*CpYk5f3GI}j;!%Hb%~zA9@6;g|Vd!opXp=^3$@ z*#KNXrmGt6PX{S0Ns9v_$&Yjx4r@B$exXm&ei)rSZh}vebfob&vn0AmrpPBB&DS@I; z+A6y3Po|N=Vd}=#~%Q~+hp^xylmRs!pjzw9s8hg;rEE(BTr{iXCuV@?hs`)S9q~(nQs)8xjrcKGn5%qMdCb4AF}`^kqjaD5b(d?q&N}B z1qiSNBl|JR5IEZe%@VtsI4h;NW(Hg~}noG|)})md+K4x&z@ ziMIh4Y0K}F#4z+1xn3+a=y)oiNg<7<3qP+cEkp4coKh7@@+qj{_Y9LG%G%A7ZREs& ze_}B;`w(*$*(%rmq@SJqY{;g97#-(Yxgn!KuayXt)1DB0*t6Yi;2{@C$l{7r+u$;nOk)cb0**BZsM zdxrrxSi&2|$*E)yNNAYr zK2?e6l*A~KufL5P6t0lM;tY68@&#BOOjVf6TjurHPZT8X4LBJ*#$HA4cP7+l>H=#H%bztIWbNuq?Xd?1FYM5f2wHeWtf2q((W~QICXm&!PZCG1bft4;R|4@ zOm|XOX?vXQG(F%M8}QK2rbc+Z&r)jxF=rx{jIck2AH3X zXT5A$Xz_v6GXZ1GoI!*j8X)VG#-9o$W1KV`dwM1u`{q77I&MtNrQc3)wJ1OJcX)u` z?l}s6`-#K7-^P$RD%yvnvlbULfQ(c?#;ww?BebZ8BNw=}CpYb!%x7H^s5 z`(w5UE5%!8Vc;qq{BW4XTW0078L?Hwn$c{~U;JqtY00qUWh|SA6y5Jf(4d?+F*5*Cx6M2pJNDfo6|#x2>m>;ug$Tt!A>(kL6R zw7&}1YTW>5If&XPgj*=4DUqYi!rZL+AabvONclcg3N<1Imo0ZRmT2$TgJ-w+a$1S{ zOLzaCc*u*5Qn{FpjBJ6-n~_SfGq0ov(4Em5BuMfvh`?jpw}%h@+n`p(A1R6URV_tg z2xiP=sti*v^=z0RP<&)9Z}cPOwXz?9+JfpDaKNkBB0hmxTbX~8;Fdfj_n1J-$~FYy z34dUjwXj(rPlq_uh7&=Pz_pPVepWMGnZMd_W_XsY;RGBvyNF8g2WME=9P>AIj=7WT zEcwYNV+F!p`zdcUzaw^hKoG~_q9|G=qx@+fhd8ipYAeZHoteN%g#va=L2`fwOsXq8 zLGB;QRE$GfYTW>erwUjUSy%WwPxWhGRUdv8F`Q~_#K?#y(xD8G5*&Nyk{x67<4iNV1NFFc&0)3^t=C-LmuZp!y_!_|2S5l z1SR5{fp5px7f+POTVG_Pt3=#N4(X4J8#$yGOfNL3X zJ-!mS@W5EeTw4|L-@0i<#=w~4j-CovhAM@6e`d>0U{G1b#L#?PtCFki3vp!BL9UJ|O2WkoW4gemr_s2Z`&?1InrfWa7n*Rbd`N zV2(R=in7{6bRWWM`+%GxqGXv)=^O(#7b%;A%I1&B<_>AE(Z?wGHLNpB(gHRwtSI_~ zw5T(a0znZ5GhE9PMLMEL8h08sM!Cxv7<1f$k1BUUvgZ!VW~NBYWQ=YaBgwN`0a3W^ zhzp{tBO%%yn<58T(sJDQKBBDlGSRcTQ^0D>X1jBESqeKOh<;=`%HbhJu^0FDVf&AK zHb5Z<-O9sI627pJ-l-Aue)EJviH{_sX?=bk(NdeJMg2Ty|M|)&RaOIEpqk0=k)xPbE-T&U|rZ1$NTTcoE-z|dAdXH-# z{!ovb6T~r#n9*O&$`A+UICpW@Kh4`dE8g}e0or-;RblYteSeo&8Q2(15tdfZVs^3y-y%e|CH2-l;JN|L(> z3(i3Gm2#-w#VP0!RBPj?^wCi5BWu?|mj@wYM^0tO2lmp8Sra~TsS#C6NK&T0Jw3yE z@uk|vZg^kX*!CZwjs1Rq-^Q?S7O@6skieu)ZUOs^{ch zui!sS$STzi?hgkaI{k$+9 z(8^?|s}HsC)dwN@a&Ak9bP484>BWWYiM62LOX&}gn6J2;Nw{3i+xFdt2M5LfLZS?ZV zF4?99ybYEwb;frGU{ez_!9WSTz8pc^g(2S8L2q<~f}+-R?%=2s-1U>Az@RncjW~ko z3wr?2Dl50=(O4dku48( zO~GCi-^j;M*tM_|!0M{@r>p9C51cJr#c;U9pu>+hYH7+a4ZI%MQj?fJiGvy#kz0%| z%(B|3?reKM8OG;Uu>>xl%#ga-bO3eqdtn*Uf2cUzEreYuo08uneZ0sX-a4aA$3A;k52Jn!VhP*cNxd$X?SWS~!U?%v! z1IMTU&$!RQ;`B{v;j76tlP`=cibWQqXW^?$HzNZu8@b{((?}~~vthDaR}OEIJ$s;y z!b8?lp%bG)xI1^>a*Zwe#FQgp6btteCwv19R!dW=p~jG!!ocQESMY* zu_)l6TQ?b4A~kWz2(7V?NcWdKJdld~g^lqb(P&Fsi2;@v7cbEgFCh}5r-M~X>8^3C zYltQ9x>Ln4RF;9Hm=!#Rf(*JPho}H}AfLOy$`6+>pJ5ieeE}JCCt7))Fys!h@}uR; zOF5KRkU=-a$|qoV?%#JP{fRJ!tAd&}q!4CMh>mMx2Wb{sJOa%b2%>dQy@%4)B% zIvlM#*~8R;)m@a;d%+`EJ^f;^diEYMR=G*teg9W6Rs~0FKqED-Zd(TA{6$#pLy~8e zTiV<#;sQf;BqYXa8%tV_dmyQ-4l{B6tge<`2yj8YI$6{{IL@1*c1!fsP3V;5n1LJ% zXk3`H*d!OwjW-^;+p5qw8BFEEw`_z@WX{7BYh8AHX9YpJSJI-K)vs5?l`=N!#^kQM z<>6p$Q?`?sbH%|>_sjz^DBNp><%%ksS|^hhc?6!O!skdex~?W6)t0vM$qs0YB`)#V$aIu|r3U5U1o7M=#ni%@;~wf3##8gQt* zjo49GIga)4Hg85I$#HT|7%!`V!H*eLYwLsqmQ_Q9z1Y|*aD(pNH{KU5*Jrzu?`#F( z2QfTu8o;C(Y=aqWLurF;sLa1iiFkLb2HQ|%unAEdUT>DG8f=E5$jBm%Oge7XJc)CU z6Pqt6bPGo2W-1^wS;I*zI1Sn9O%`xdVH)qbVP`rKU|dz5?Pf$aeo&eR0;7@r%4YeD z^q4Z+`mCzrtis!ze8u~q)&eL`wg3*W;nX003;m%6$t!LFJ!Nf$R)AP^>gq{q{)BYr z-K?fo!FqtRSBwFcF48M9f6c@hq%?+>IyL`XDf90uOGRM*tkKM$DAfE}&Ygax($r`C z4wOX}-Sh(D3F!KsRrANRV{_ z3Wx7gy{1;*0;~V1xSZr(rqu>Y7g}w^)oZnhX{bi>inTgiRs>$FCr?nV64G6Jqe`&K zaE=PIXpnp^c50dlhf1e#!``aZo>E#(NVl+Fr^Xsht3;t%WjWV*h0@e-T9t0dhg30F zZCX`8xE_{%?hn*zM@<__)0Oked3^!$y8Zq~Rktb92~jG$MY{EwIqG)*-Bh=IAEsNY z5$aV?oNxFl)obZp$r+O=|KxcLIY=iZ4GnkVx-Dr%yX|2b$dbHb4cC>Gt=I5Q<5a_h zbSr+W(yTU|8DZJJ30SOQ&0JhlPYn<3r5YYef*K7}(jZW~tz20uf_BRqO~XW?8fH0n zOI~RjFn$}#A~OvuAWWX6*FK{f?nG&7m{)38fV_rp-%2&yMAU4PWIrxSSh;03QNwd; zRKr6bu3@PW8dlIjx9Ny#Skk+aU)h54hic2RwF1fOW~sx1a}k!$&Aw7KMsMFy#HO zyD0CY<#`_lW=dO#1n&wu=&pGOyf0j}6zGZv>zG3D>w%m)fR}B`>PQl^FZ+E0Rcca( z#3N~^FiF)l=q80pB!E!w>_u8R@6he16n>e3cmm#7O?OXDJlX7;lxwLNClfOBA7(Lh zY(X&&S&E9u_$bfGk{PjLnMkpovBi3=wv5|6EGFE^n0wIO{ywN5JE0Mq&)|;#_Cq@l zuE0iz&Gs88{6G|G3kou|!3j)68nv6WPS|f?B&cLK#z82fyw9b=zqIOv*;He?sBRFfNW&wlOSJglPz_0}Ys zS??x&UgZ4cO|<8fJDR)hx#P_!1oo!H#@-h$nGG9ECAmzA-=;m z5a0HSZ$g0Yq6oeZHVx=|i?<@AGW5xOUJLi*EQNje{VGrEcsPmkm|+vw;o?r--j9c| z151=@J7Hs8G0if~53O9xW{PM%MXWl!Oj)!Jg_-~8mXR{YmZ{eBx$c#!;z(5;V3#%~ z+3%t2UfzPazfui5)>X3+AURXy-?=!2x)w4;=bK>(wDaiZ7W2RT>1ufSC(!t_dk&M>9G=6WpKL+0RR^fJfz1Z~ zn#%=#R1C*-5L#8Da?t}+a2~xBo=N~(c#ceW|4Z!Gk_ibofxdKspf6;;>((+)kB9l9 zlA+RNv=U~zN3_7ttiW*T0zoCrcUNhdORdaknKBS8h`=UMmidyFIl;>C#oDsmGt-^> zXW@PiD^OLsz^`N)mYFW21ty|^@>e$nsRw@vu@Z^Ew1zo!=+2_BRB5EMAvuMgI(IEw zGGcbtaNVDTq`NkOa1ksFK$HCOzMjnDhv=<|f6kTEeuJ6l zUoCYLosvUN3Olpf0BAzxqN+#&mIgAF%iFdEAU?Ca=$|Z`PfoK#C>ifk3JtjW@JT6< zQrkM2YULv4q%curB{NjT+`YX|Li_g(u*nxK7R z$`Z%=8>FoQUAk|OqU>#_>~(BS_KJWjFHb1b)qT2>*l0{Q;fjB7k0AG?o z?mvhY&G*x)#})QxJOca)2Inxm97A3_kJ4CzdEsjM$NbbhDa}uQ4Hq|Oith)pN@MWd zfu9V%eFZDxq$q#X04=^+b&H22bysiN;*WHixQZ^qU(N6*6 zoo<^VLk?RlR{PSpFgBM*KN3P6!|2W3#M^PwlMtG}yH}_hy*r01x)spMHp!p1aA~31 zq~w+iAT!d!nOvE_gcb>I_*ANeSCd;5)+-Oh;0z0-mZ3O6OpEp|!D4g>i;;~#5k|Kj zWSG!EMghbtnz7nBqK%_P8r;zgc1Ndz-R)red}!c%FB$-+zydqbnGkle7Z2GyzM(Gp zgYKtj+|+xr@E=a7g>`sWfq_2|ftL34g!yHe4 zU4VChMMHI@Y%s*#;&=zs=VOvjngbj;cKo`2ycA3cYkjd*Q_zgLQ`iOgwVmFZRCaJ< ztUZly{;1vIUC1t2NntOHKUG}Vl+m89u#F!FYXh95hdD0dVU9ypz5zZ#+K0-r-7PB8 zW0b0}Yr}2IU4EdLpCTw_6C7=lT}6qxY_pBaf6t{F?6N9X6$?ow8Zt~8-oS1C08TtP ziBl%X8L}#IAJMKAnepuG zDx|#i)1VAQPdGlWB`lul+JoozmJ~K5J;p2#(w$3DG{~nWVN#uwi{t8q!+Xg97bZ2*WR=vQC8(>(xxkRx%AC z-l48g5#LpSxZwRnOkFcltWxfUy+uDa_GE1e&J1x0y>E$c@^bvo5fHETkvh4>li%TH zAD9Ax>>%7Fk6SGNqU;&Dl}?cLRFfX*QXnBw!I-^mo*ambw;Hma2>(UTtr`!E=${{8 zQU&}c>>QhtP1|SYsJicMrK%ekt2%Le#1K>j8WnEP9lPfJbp;L~LW9U)d@~?HSwb}C z-EjuzLTqZy^Hgn~$vdTgJPsGP?_}RRvDFp*s_Ats>0nn8YviXVx1h=51c*kQ0I@Gi zYpD|bgf#7*Hc>H~+n(~8iD7JSsZA_^Is5W{r!#HN`?ir!kW(RmCu%L&u{3yHFfSCc zj~G(K!ev~Rsw%IYj+&HY7B~H%7&=6BoanNN3lEs8K<{P`uxRj!ueN4q^G3r2m>_Yw zlh>%TXfmbg)w4PaeQg#+5kN_PU{W`{rzTZbo@j)qmf1v;%HY&3w#>nBiE*7{ktR^CDK4BW;qY+*JUWFrL+ndub`0BI>SQl|0R zp5APJB?e_^#=9IT0}l`oRqJ#^1QaE{YfZo+Hg+QhVu*? z&f1B-;YeVap$>#T^cmp*d5{OI++Mz41*E=cwcY#Di}VQVC2>WlOm}Q z4AWX0DHz@bf)P$2geDV=UR5x)#u%@RK~YX#62a=busT7%MNE>cV%`?;f~$mALbC0p zZ!z?i7THUmS2_J$<@5=jZ#-1tH}OBs<6B@ec~BuSI-kbqwao;tSJi9U z^vWw@-O5F)P$64@N;;Ebm5_iuPM=ZRdU_=u)e#Z(SpO>kSd?si5BOS=AJ{&}us|OOc1DKs(q&prOJbBKyka$tOlP$oMFqJd(#^!{C?l5d!bU75|V0v!<}1UCE0Ea?EU?>Ey@yd5l14HX~iS z)V0QNHI)Ttj=RUeN2xquZz~DDqE@mI(6Y?ZmjDaW8>~!E=`v_g!UeP4mstk76tcQz zAh6OcVXHF?m89z4(r79S4YS=eLnGuG8r}m9{tB8LCb2Mt-o6j>P%67La9w4KN}-iZzVWY{NoX!;pm=2xE6c3@xaN1(-7N&kDjClHWToB5qnDnr6_oms*{alK zrc}_7U>Hrw4oKa2F^YL{r6M}A%rpnk{gt-TO-{5uhb#`U!6gg44W#7^!nW4XfCFs$J#r3R60WVuUv)utN-~nx{Q(OUp0-B zD$GeN>ep`q0w7DNshfQyJ518>#BVhSX(J6#pwfc2$zJfg6SNo1l<5UI;-QM9Fk(D~ z8+0ok)i|}GJVVf@We!PyYc(~LsVM_RMr%?y^tY_ZQ_#-$Vr`2y(w5Rotj;thGGxt* z+4P<7*DfbqPS+JN_ra=l>--xnvh`B!Z&ro80zE<6w_v7O(KrsR*Qu1Dkn~#Atllvp zEg$1%$&@JBXCfpPXJYkkx;aOYlW+Swnj6k<+n>b4bXb-9={u^V9#}5VN5D*q2C|a7 z!;_ku6)Q{rD4zQPJ|0D>^gzKh1-)Y8o-GFoC(fXveP0JK5;fCm-vPUEz&vL>@>5rH zGRM<(8D1V19AZ2Me(0N22@ppU*YLAl-BX_|&VTe5isoh-B6{?93bHi12{ra{`W-||VPgqk8wiBCa0HVJ4n zNer&$GHbr(gL+Dn;C&FYv0n`+X`|+YdZi5daGec`Z0|sG@|nwMX8)?N9;}oP>ML1w zKs)uGGau9w_#hT?mwrQ;s5d4C$`gcstaLT-K~l{7AYpEd4-x{<45cRTgNV@``!EcF zLJ^Buq7YE@C_TfL3H3p3Ve?8sFTq@}_d!w^LQ}Xw_sP}jgNDm9gpsXf4nZhxiq+Ix zrY7%$d`${B=pK7WeUPM!51Lt%$#(Nk;C;A-;idtYIKtAk?CkK;^H)sKbMmZtH#$4bLK5c&yIK9sn`m>B9K?Ae3rS1@ zC_-ZRWW>mAgcv@zo=IYOSAv)dmSq86@x_QlGd9cGBPLxie4f9vPr#|?60T|)5J>`8 zVUJzme2&IIR~4{?bn(gPlG_Mfd{(-6SAwo;mPG-%hIDDN(4`-aV}hqkGmWmj0=h(} zc5(>pbs0*?nP`%6-mlZejOKg z{5$`$PbodD_DNpQ(EP^~^G)HX8DkN_t|xL5!ri`7+i4>*Wd3{VwxCYQzRTX$Wga&y zr08?_Acy?GmkB#m^PhI5r-z1tGMgV0&~#7T;Ta$WRRnPBE(EK1NC|YY&$f4`nCT8| zQK9r=FhTtCt-X@?pH=(>aMv6D%=+*%(>-HC@5NLa3^Waf_`~fX;cdolX~HR(2Y=em z`D7+6x3EasPwhyf+f(=@W+h_7So13&knW=tPkI%E?UZWugwUZv0Y8KpyRI zAJ*V@u(J}^usZZ|ITAG!^-Dtc)DvI!N_-P%htT%g06+u5o)XrGCsK=xe8QVIm>b{) zpYR^P7hv%TZ$8q_UisI$?v8~nJJCMjolma9$}6$1u|_eBtN#{LPQ;G>k9oz7LNdWw z#+~fmM{tz90b>z{7HzCcGBSTh%K*zcAs3UoDH=-yu_8{-HwBB6Fo-6pYmC96&k%T& zBZT_|7Jo=?p9or{nS)y)8M{2I^65vGEdZfn<}CXgk6QGFhBWc5zr7!vZqAKN0=d8- zi9^npWbuaqS-5)-q~w$D^Ye+Q-COllvV zfR%yCXc!#r;a_583wyvl36fFZd_rKsUw#6?2R>IW*NjdCvv|xxr9Gupis%A|K_k|s zK3mUG57H~JWjqKo-S6&E%@05|tc6ka%LJNaRiW80J1P11VIVkd%jptJJS%Pd4SY`lB9BBLWIR^ zm;1U3Ye-@&Up^-P5T9ST;Nw(E@_V);XsxxNL`C>Q*|0E%b32(=+=3)iT9Es*IGitzsq6{J zJL+(BJu~Ardq!Qunla+YV@sIKV?@QV2KWnuy9v2dtiki+7ZUp5>iy%Wkt=z{o%TmQ6@J3NNm7hYC!nGeA>4sjud!f4N($pWm~Zz7_y!ehZxyVy3Q}b% zP^zm~13}#H`hyyzsMN4GYAEcuD+x(%XPT-uO{H+f7)7|KlS=T}ZRQngN-_oA6)%Zl zrO@HUHFZ8k9O=otVg2GM)f7M667O>kz-~qw7IOkkT?+gZYG%DWi>3(T&Ny2&RRJVp zH1*W5YO0Dg0BNoa(j_%4PB{|7b>9`pQA!HquM9(uzyBD)lAD+uc_0!kz7AJ!@eNW3 zW@$>vQ8ESH(Le`pF#P*sIZ|Jx!~H$KEn5 zN90Hl_rzH$$Fv9n{cD+WSUxgQ5yDm9sS?g0ag6x40AY-znK>ITI%5t;ct62t8z@sp z#6J+k-F}Bwl9fsj_<+s8>DB{2v(IKxYV**HMW(*Y(-&ZWNK{AVEdyHlBRn!^%McjVEG8<7c+fALx zwk50&d;JNuXZ@D*s{?epBtR`-4p{JIsuRsY8H@M#3(Jr$Ei;W}V9^v;nZB@cd9Idv zB#8S2Ow%eR{fcDG^SFCD_WSoSE*xUj=xSRSq0_fTz&5BPmHvvdM>fQ)vUP z-m9hrJr?>)sZ=sWNN+qRD!t~(VwJ8T(_>Zo%jdL3^h05kNu5+PW{BlOOlG_MTs88H zz?R{dneND6D)uI^33TQVp8o&VE@_U-PJXtri&1*xbz@ z)7&=ZqCaZ10AEM$e6o?d+=^WhIi~2CP? zJ0Q*|e&Jm(oND;nh#yLAAmLz2>*0Qu*r>WRTlpng4s11%tv`g;D|n@*r?_$LYT2^O zwn~`-zD+QeF$`w9J#JG8)Pi&IF;T0S#=TV_mzlv#6d%Z~O40lOk4C>fCN?Z&Js2kmsUMSB`w+3_-5fjwat?YA-I zT-Z@2?2<`q#*NmDn{W*}brB8ht5h@YVWu#!#~-8_KmXg}X1o>cU~Dt~J6C5wdOw>O zG~O%Klx@b$cDtRS&A3ls%V>+4?h>5zN9>(uPXp`6&TQ9c*oW4KotbV&!`@@qhs$7x ze&Cj8(ZC4et}+{1YUM`PTkaT^BZxcQ%Js6Gw0ZfwG$#oTKs)A7CJFe!XUdaqIGZn) zCnpIAMbw0F;|=vPp!VIIf9ajA_{e9}--#f-XS@6vj(`H^$Qs24wl-jqiwFLq00TXM zqL>SKdzsBcgyDe?5MbD85%4_*tP-%6u$cg3P+bIkg#nYNz#BjJbm*he)f$Qe9#Svd zDV|OpLYRA&<@S`!U23^YnG18B!JC)a`jHRfJJ3#0@7|RcPE_IDz7Zp z_`xzWgHDYPq7fRsZ$%4mfT%*Y3wsv@kV1OL}X%xdM?j$HjgIa@Ocy|kQ zi=UO<#mVDrGOoqCvo>78t|+oego6E;rMff86s?>xB;DB#tBbp{Bd9K!Gl9<91X;0@ z4VpZ&-MRJJY4r$f8Er7rt-eLIF=RH^yMFA4TBvsZXdg zma4s4|L=*=%?FVC86?pJ2G9z~_`qumfYGuB1II<9L_!;_2|Cs*jkk|$)X3=-lZxiN zVmZsk|49#h}j0t)!kNSjaQd*v41Mo5F}<#XKiR?!v}OkM8~ z@X%fA)w|wv?pNx1%=JocDc3tHLe%1c>m_uN>pfgu?=3$U*L(e~n? zLS4yezg5>Of{43bk6(363UY?uu{d-)Ox7TGm2t7_9WBi`T(6V^C$*OWN8xsRIkc)QBC#nDLkRc64JzX*sK(r` zwi6d9Q*W}8LbZiwNE^H|&FR`{t8a}f=3~C96 zps^N~Rx_QrWz+aSG+q^bUMQ zA-EfvZbz&4)&4-{RR>r^0VtT4AJ(QPpz)^X@vF=T{0x@+$W{gMgYY^M4xY81;-;4= z%@(5`$yr=O2$u_+jo=kdjs;nTi{&Ufgg&Jafe+CI z^KeycD+*`f0WB3u>?i61RstVL{2+XQgo7!qr`Q1um1YYLK+1tFLb%VO z-CEx(c%@w&1F~ZCa57{W7K~*qn3?W|AF7P1A${vRLj(K%DrACOW(IvHA1FpqAKSwajatPg|A$uM*Y2FPDj6k^zFeHg^byyYJa425eY!bm><6ZJH;=4tA1#ng`| zVN`^I*+u3Rdm70Ui7tCkJk7Z)iapI0v;Y~hi21g+H27niexPyXVLz3)avOL%cf*rD zu6$A(T6eBN{b(99r|cZEu#I@IzvF}2u9*`w)w4m4U{IU8gA3zQKfiPUG%nU0iB}p+ z@}*l<5^0k}23IT&i6nSNFJoEBi%Ej|WqIii06|D9U66K9z4n(B3Sa#Fh;_1~tUjOo zvket1thOp#z1*v;HpyFWZG?=}cHdpTwwqx3WHu3UpKWmGV9x!H zlerwZ^-Lfl;d5nv8}P}kbefA8RRqb_E9-%%tpR$7LTK%T=#Z0q5RtHf5Qmh-fvc>v z8%_(NTSm5JCtIU^IffgPNG$eJ;p{lLGeV%A9O}Vp-1W=V;uI;XnMU0MKvLjFQY?@! z6<`wuDqqgrn#a`smraA-^3@iElgYQ!`%8^~L<;WqmN?=O6cGJosj1 zm6H5sO%OK+iwWl4LZZJmK;thh-wY9t*(sPS zSzQ*sRNx^ZLb&nQ1hrAiwCRld;C_e*HOf3vLuo|l6SRS0UWkakaFtqS6)e-w-2^fE zXYSX`wPGGo6Z@Dg)HI@UbH55iI<`hJHUnk`e&CBB&R2l15eLRvxKDveKmdGz0IO3C zsJS1Iw5AGyL~tutR`~t5HK!@0MuC{wX%#RtsNi?^MX3paPbo#sEdVZD#io)^9uKP` z5m|E-xrke85|Lx^nt3rt0rg3ysA)5xLvvYkhnilS*fc494P2K91y|pz+_iuKFTp@4 zKefy@$t;ps-ZDES6Cwv$LCGe|>=C(0o5F@`q43UM1Pj)zR1AW(75QM+LP*B4 zh&*SrZf6|irYBLI$NF*Z8-mm_qQgWEWdUbF2zUN>)qr{pcbm{a@jYg7-ZJE{#d-)n ztCoKHYiyoO7Iwh95q#(QJS+q3ABb}D(G&_tUirz%6hAvVqQd++-=)e=-gjpRv;JW( z%==LZnKMn8eqxhSS<> zOg>qkDYxKg0GW}E?o6)C-_FE&T3R$9P~k@Rlz0~OS90Y>cerq~Azs}S+q$NS0bnfw z2dETiRRBkhQnP{ANc59dJ?{a5J`yVLn=md|R(VfZf0r+k=O_QVAFS^<=q0zRFwI_0 zSr%iMPsXs^qIuSX+cwe)lVe)zr`Twj+F~3iB+LzxM0%H|v+Zk%Z1<#bfx{CMKqBJ2A0nw~2{g)l5u$ zc&_6n{%%*8Wwc*b(s&R&12ZD%k12$_YYgaDQ*!G_6jJrzM7r_V^W9vjI7 z7CSQ(pH$-ksrp4dc~{UMfMDMnXL&d6TXqD(%W?$5oe@;<*fy8gjWb>l1&|B8>yF8I z{UB8-db(y*>oEw&!ukp?h+%ImQ{EU*{^-JurhLQ2U0BTBo*PYh6De;p%A4YpHwBb$^}nQik+qn&(-*h1}vP6IDtuZNv1qOueX^2~w zSgd?}6^}ElJ*IoYK(=ebBjxNX2wFc$Z-H+&tSi)DLZ+~j%*t#mV|~ULuf~|%#uyVI z&)Cw7#xnLH-fzP?duePZ+h{4kSQO8e_I~}w1+T`1+{U;NAkW297yb{qD5pA(e@Zhj z07_|Jycz>?i>J`OnBq;xZME?X)NN4AC2DxeW(YP;4TB^QT<~gK$Ss~iE(FM{;aGf8 zMaFU)-j!~6Cq%DMM^f}V8?jGJTT>LTQ1{<@g(2W3zq}g1a*L;sUjg#`o^ruhemBG` z)cqG;VM|Pi7ADF>^u~IHHO3gP#+cm37!x4R*k$LBWh^ir1A@DY4$adWY>pe>o`yjw zHN&ehAh&o5HN%vkJ*}L-(F|lZn1RA&G8?h6YH%bFT<~gK$Ss~iE(FM{;XlnA&Bgyx z4Wq^Yuf~Af#uyMF&%nVO&%lPO0aI?ArzI4LGMD2;1SNFMziGSgL>q+|j>60fWe*1;^+!`m@ zW@G9M0a@guP1V`e6KW`pku9(gStC=8xNxQoQ<%fZ$WEV7)0*)q+Q=pWg7fDyYbuyg z%UGsjzI^?X#X_JHacpwel);f3@u8dQu^)8WSbAhiFh);84EaOo34uO@9&TQ!z^9<9 zb;@ks0NUehN&=r~XWN`G4lf*THGd*xhI$hto0;(155ZU9H-~#iH-+R1-VuOP_!A6{z%MAzj&gFcn;@OZ0)g;wT&#}XL$SdJQ= zXiUvB%S=gyg=Q-|t}6xa_qcXxarqD#rk5d{wb`x-PnPetXX4X!z+2aPsOdqz;)a^r z2M}TgM}u+a1!SMm{-zlH2)+kE4R9q3*8+BS${Mz^G#fcxox>y>5=!H0f=OF}G)oH^ z>DG@2WFR#pBgbU?5nS2okpcLfejpnAML2K&wch+#X+>CRg;iQXjCH=Hv+=i{=#xC% zfKeUbtg=gBuHKewzhSePx6ulEfWT5P+b)x z55_zd3U--9$GI2T(AL9xv=%fazQtHv6GWss6e~*``H@TGx6o zaWct^6lSA1v&_L;Ga}O5{7RYt0B7TPt2_P!x!y9Cn$;5qS!tn86pRl;x?{NgqJ33k zIr&Grx_aWnG;BYK8z-M^+!xVkOn{9Lpb|QvB8%oIHj+Y_VN|PS-j`)Pn1*}&9WK%i zV0#Wf|M*u)*BW|A<)zbbkmQX1zv33}Z@uww5|_!xJd#YfJAdXE8Xs4h%%!gzB>Roo zu7yM(2h`g>Z~sSOlAHR)+9W7d;^Ma`og8i!h!mh$tQU9gs_-l^UT;xX$Col zqkW*o2X(S?H0bu8XTjVHLfS8hjwEzS8R=ZQNH`SLLZM+I zy}`Sb)e}~dWBHh9y)`%Qf6=r6=_aGu@}TE&jC<;McKaYo1V=xYqY+hT$cT<4U75cE zWk>;&hvZ(UQ>S6piq52;Fd6TWn?K1%j2-BunV~Dj*eJ0KFIUazPeN>Hg*V~>t#HDV zXodSM^Q{mIw_@Vt;bHI)eu1oRTmgqPt}E;*hROVA*NVgO5(s@g??fI5?H0beMhN#` ziouSQ_5ny3UyRVt>$xx8LVEm%^P*p6LVIsOVKz`UmPkm5geI=)OMAmZ1HaIrPG+jI zch5`0-mNc#z1;tK_I}48h$hMxJFCKWM{E2LIz_u(L(dqQzDu z=<&bF7LBf%4(QddNsXZlHhY)OQ-|>3Oo=w=gKH z%pWee*vEuED(HRc=`Dn7X`gSt`dn#d$er{j5jzZcNB?9$vem1^^En>p})znf|R@BO!GK@ z6^?%GkyJ~z4?gR&vd~#vZ7_@bRhoMh|NID!wlIs{Hjk}4BsQ?uwb9dyvAG7BZuCY# zEL=sy4+6{L@g3NzW{U;A6*}3hQQu1QC$o8+=u8MHK1fC2VF7GCTWZ#`Ks>pwY$MR- z)(xOojyy|9fgFfs7HTng`qnIu(&j#_FPmMaKj6 zppMh{e9PRNp{G!DNFj!VQdo7tbVv#%5SwS`P9$YWJ05A19_gOdI6d2lh18(7?*gFIvqz206SYbBUfM^=mL62a_WUXOjnJg1m*=DSPuyu;pzZyic zlU*iM+Etqg#5rLl1X0KKfcKP$78D3%S2jJer6uV&J3aC(twIZ<4NAKL66~e`rqx+4 zs#%YV%4|<%8|&pF5+3(8ESPGS3g8~sY3P-T<2|;r;i<}S%>ZQNCFvHo!DxlRf{gs^6nR=u|s$ZRHs9*xH)X~>IRKxFj z`a?h>vGR(Hfeqv84sRh6e5Q_x{*zxHhhb_gDm!`u76YQXXVqudt;|l(HncW`66nq} zWHt1{CT-%wst2#OXdt(E3JbIkWPCt|-Qbcn=-xlYBCBs z=45>4=Yw?qegB7D7e;~7Gqag7NK8Sd@L9F)#UE0^HYFY!Z3CJfpOD917gaZ+!B?Zw z$V9kR>f;HMAjSmv%<6)jSTctX5LC%cw%cE`)ozc=fH)5-qJwl}Gt0p&xeajc4D8>t2gzo}8n2gw=*I~H6Ae_o@ z;iUdLsKfnuIgsr+oXvOWd+k)G&OAVx`|3D)T_r;%el8ibbkt-~ZbbrrsP8&=>07V_ z6ssjG7^V&~Hpz3v2u_76cN`G~){jQSiqD9WIadC)ls80SQ=4_}Wa4O#Ph)%b9_!TQ zr!?nJGKaQ7BbQ9rZ(!u`%H@!YTX3Pg3pk-~+{h;cq7yu}VK7 z%Nfm^j1Y8_{RYZN^RdTf0z+h|B{LWOv;#Ep46bsM=FOO?C0kbc|A_k@_^ikE|7W$Q zwrV!?WRCE}a)vMpqvDws4`(q%lQ8->q=t>5Kg-s!tcMWd_>=#kLzJu}i%u;k`XfYP z$nlvcOrkmd?Du|O_kDk!`}5ht_k4ZNZ?D(0&*%Pk-Pd*9*LB_3{r95&oXxWc$2d<` z*FxZ>0DdELd(M`jDFKFa&u?Cd!k{6C?8+vWcw(~=PfQ7il@y`+oM^{}XzlWqfdjN) z)hj7Op(qO})<(rMK$M}~=xj7Swivk*(Rju9NwYUh_J$oC{M55nGR2q8EV^FFPy5s>>TNE=bG)pZ06j``7nHpJ%h{tPP$y34+WKD3y-xOg-WQ<-IUNI{93l1&dM0Vxi>-K< zlUu_(d}d?}cj?MNE|yk%qnzp4a+CSSh$)KuH}kXlp=>`H8ur7`upho~@jS6Y*?u75 z3{^Iz#*~ePing$^F=0hYp2e7?=?8A6jfL+1z)HA_3F;&ApZzhaX2}jxq0VZIN2+^&v6F!IU*L0*xXtfjG zWJ0D&_{C0mfeEefvDx0EX+1Sd?qkBgR6@oWD}nxH(;G-o-B~QOk~7Vw*l4CcYo*p< z0@_VIg{ikGpih@rKo4g^1rnOBW~y#lxEL^2xQ$K=n6%Y_ux~(ij$P~5__B1_5x`{7P1wctij9LKQFyOtfQuX*#u_Jyvq z$;coc!-D{jY&wqEpmabug8Z zlbsa+!Cx=Ps-V*@(Xr5t*I7;Q*|)&>2#v8!8QjrbVZ2U&*nS=OWb~DZ&Z)#$&-oDB z2(cZii#PsSaV9!X>EbgH;H+njJdL{&I{SJH%@c@b4YnN6G!hACTj~$ciTXB;*N>L* zLgZ{Z&(41TzNVYabV2-J;?k>MN8JQv=qqIvi#eYPx(X4{mMe^WoPfbpEF*(6`9C&G zXK8T$bw9#jdNCytm)7JN@fVjA32@PL4<5;o#)+lY#r|7Lj=^_6Wlz|+Vr48`{Bf*lySZ+48F_@%pG4h2^`86aY{QA@Lc7 zEy~>O{kcWxToiK&qFJe`PoYB0CR4zGq67nELJAFD2M*0Pu_73BtbqmxW;`5_Yy*XH`YExk#y(NN(u<=^}5x+zfd;ug1t5 zriB!{zzRsLj}_}_38${0cZ}JT^!)=(jN|;x z__S;-P6!C7W}U4`?fue_Pf0hB2N80HXjprYB?YFX1v#AM*cj0ka{L?@;hgRUY#zbp z>=LY`0BiyShQ`y3`fD3AI^2_-LXbgujoN*QEDAV$`T(K3pyEm+P=F~$uetqin4 z0K22n7ynD?t3Wt{5MINSl*^)lhV$vu?qQXtt&a{FyRUY8oGMKky5@5c`<-|=mrOHa zzZ&)A*qE-`21y5!VnM)Hg)AD>d=Q(fbgub_%_MoB0675K-v%@pfSRt6x~tVHW_!>G zs+gI8eFH(gJ5pVTGE;G}*|B(VC~*UaB@M>M*k~3c0Kw%T+R#{NPaBu*@!wJKOWK}T z=n}i&VqZb_jirLF{Sisc5|yCQ*k3_gYD2pm(BRaL7^$3E584w{{)#4x-u^0opZ4;f zi2Rf`iVLvLYPF=TBg!@1oo30z#~E5C(yN~mSy37xpW_u-E8J$)``Q;MU#S{kt)1`` z5~F1vPDnr-?JRDmjkN|k+NOeYu`7O zj(_^S)kgOsf79WDtY&4)FEH#bD|O@}3F+%ChTLMY_8%HZ2{^56BEP=exlEa_$5k7i z@jdX2rRDBK8$MEL+HeiasIu@a&|IbTEJ_u>%33VazWyAjR&lZ@7CP|=j~-3bikH#=kANlQmq8U1qdad^s-K0cEjRDb8^z{}y(w6F~Yb zp5CSRf+BpsABFH&@Nk~Os9FgxR-Is@g_-6+0y~ln-A8k9!Rhq^Ho%`cgB?720jBuy`VFYsDluRhsmQiF93af3(QG^9i{iFMCi68YLVvIyw8AJgt&pLm4u8GMJIWm_(Zn83>JL_ zb2$rJlul$y5o2aJ&r>Y}NQ=|rOV35^a$7R;)5J@;SSYQ7g-aN?FpYWJu=_w5MliPC z?i0S=ia1SMQu;L60*dlt@;DSqzoi4J^9+aP2yE^S>z-r_ZFNuyZ6nhGl27AfzeO5j zp^KA+;l~HT@b4xXhHv;C8(1v%V828qAWs_0O8BM*40{JHDas^SXpT~?3XRA`&(^C7 z!cjMuPdFdLtWi@bRH5k$7XFn%jEqV+fJtb+9>naMYT;D#GajmiAQ$^6X)NMU?K>asmYbnyChfT@{zkJ2y%N-^JAe~x>{(z z@d;S)7o@tXcYd1dHS90(+HfUyC$9q@&I+tF(lJ^`w7t`v37u5B$~`RLOj|4eg(CS$ zT;mEw{Wl)Y%hwx{p{OiaRS{NNS=+_ZgdRluDNg4Yan>KPm`~1LuJ$8k62F;(pJ4|a zxT}2I=$OGd=v)+oX4av&r4F)LS9VG!RpsuLK27!*2wMEu5Aufz9l}$La(W7&SliNK zq9*AOp5pY_6M~5FLP-ZQV5fub3Y$@05iEo9f-FfzrMg4>fu&=i@m+;gox6cmw_j&i zh3&&;+Jw8eG0iM>+1_d*M`48TrZ4(?l9I?4)(?r~(@5mcs?JYP8Jedy4R!A4)+v3_ ze92+zYe|e3sGaqKM0>^(i|%3cQfe-T22BhS1_e?C@x`$D&h00|K|>&0IsloV%LQ`Z zKB~TNb$LA)hRHalj!cHFQeB7ImB5{S)$$2(5}Qp-xJB#odg$d0y}b}uo|5R;0Ic0z zW%|&j9~}Vc;!T9NrBqe(74%tk{X{8pd$6R!+}wZwyAp!dm@ohcKziN7%8_?<;`Tyzbl# z%No4$p;(9=cHGm911}=LTJs{Jc_ETyco9jD)glKyqlmKEFYj)F9z`$-dNN24%7Y$G zO@pRf(sViM5w)E!whj|A1j#FT`*pCq9Ok8$V{&=?4$g5louh2sC3{#XeEdNI1&ae? z>^v_s4=fHBXgC5Z(yQA?SRWcBrgz^$QV-G8KETK+aF&DCm znWUMoO-~JUzd1E<#oI<7ei4?B_1#f2y`cIg+S|*6QO=#m)h+i9qM3 zx9M5IfH>c5A-(Y4s&WI|e~9UEXUMm3OZo>NKeuzBd{5;5S*8b>`!(c_9~O;4H}&dv zsmpOrtg8gKwox1zRJGmE)Mou$CjH6=YrxVevZpq)A2N(~m(FjICPHVMUrW9CdM`4O zYwEp;9aqEe!&eYoQ9lo9lYDG8sK^PFMbta4)v3x&EWL(J&W{#6X6E zi~A~(T89Xy`)1gwG~EL-k4$uB0mm#^?#=?=vr?|bSqj9!wu~AnlUy}(^dwi``l^2^ymtGZe}o{xoAfh4M_aPOV>=t*-V?#FVAGJ!|qB6~OYT%9|& zP3~t@?tMZQ?CW=#yHe%8z|LJDxy8`{6J*B2j}ku9NyWa#E*6qv!A@rqO&_E8R@E#y z&LZKnO)|)T2bW{F$={@vjK+Al?_Ac!oIex#xCwojz&%TSxDCz~JE0OLPx_To^ZD9*+1wNb#z@c@pFxc00*F-> z-IMHF_jp$*RqB>n4AqR6yG1DF{IG-?oIB^sLN-Q;0v6Xw%M;M9G8;L8Nj;}XDt}R*wMZCNGdy!j}G{xEgl`q`o{}^PR{v6hvxd4cYy5#MD2Z| zi5khM5s12_2bG1n3K@luu!g3%xdt-o7-gIe))n(E>+g^wuTI7`vCz5*fX33M0gy9e zyfIR*vpcf4S_)C^EuCa*vss8|Rc@+wvF}tC@a%ihf5y^g;o%(N0!RB{>V@T8qZJFy zDnnMZYXtF5)!Se{?UEQ`zF~hT*hZ0#W-3FBiNCbX7lbT41!X#E+^JkV8bB0~de1W`%k@cnrEOgFd z)(cElxPi#3T*0u^uK2Abec*#u$xM{wutDXUl@*ot)a|g3V1<3|WFAmeiR`KDxf&@7 zLYd1+!Tu=O$s4-HuI9P7fZ)=DG%d1?`KxnPchiGzlo?^fLRXht*jWdjXKEcDnlR;3#^C@dw- zkL9~GC9%-9tE>W#NC6Dz#41VSqD}oJ55tN(N`7LOy!6+q8mFq-{c5YK+;*yhaQImH z>i1IB*LGFEtOqkvd%H~rnL;bE%QyO~S$LSu!UmLLi>Z9RYW@j}1d8U{)!hAS1@2V^ zUbG90kpjw;Yt3kfdCju+Zq`$GCAxwoL^p$?J7lX7-GADm`~5obAt}q{19sr|9m>PS z82`0pMvGnaB^0IJFrRZc+$p{L#3ROwXzXI4Dx1a|QIK3z75KO~O%=G&E^ww4P&FB* zv~A|iJEW=W*IwH8gozgDi|C2$$lF@88c!Tdq(z*-AK z12V%8S;F}@fu$5On+%nKD;UP7^Tt_<%Q*;;8GN=uu|k0zVlyKjU^)M53M!~RF0TDn z@X5Cec16La9tYS>9o0xQwr%SBZBo{~Nw$C#?0x_tm6BcgaZbOl6qkB_rff(=2!V|y zmB+fQ+n;(RX|fG210jOJaatd|tzWh;N#kI?z~Vfcq+H-d<~0IR8|L*_1)_F=&Qid5 zpvpG2m89FYOI3&4CEs|1RRxy~Zm0Fv!wdnn3m>*x|9+LfM_xPmA3}b9+^Ldi$3ov< zX_Xs|a)>+4uKP^HHH`?{Eq64g(myyZXqDULr zdj)pK*DQ5*6;oJRAL>NQ?D|kA`GiRawfdAE+l`FDSbsJP$quoPZLrw}DU`})vooK} zok7cHvMlN>!jpfh8MuC2c7kb=6dbT?WSXvVk{q%p5=>DB+Y6P@&{Q|uXgu_~%bRF~ zte2|&ZFcC_$Q28Xc--RZSSdM6a3ucXFmL!$GTvkx_7jk?so@t%*w6MWdov+tUqc>` zlwC4JNmYvw?a`H6pRg+bVzowFS-EP-jx9-eIwv$L>sCy1ff%38c{@zUus<7H(p>At z;$q$SLMEu{ee!n~Eo&_FH=DLgfCnwSDzGa}+6J!BhzOdo(E3V?k}x1N9oo}o!UYA2 z2>~I%!-VZ~t)ibbkO_LLdXdwVAO%!SMw8mw z;-G5$=k1btQZjfHM|Xay8mwwM;3%2R{*V~xe#MM_R@zX~h&cM_ z`4%xh{KG9&7!6*2*b{RSeT{D(5lwpzbl`Y?_~Gq@fB6Nf3k-3PLQ@ z=XtC48w93KtIAcoaC|7aQJMa0w=))qOu2Vv~~k1 z+7wkl0W84OxnF(mQY2N`WjCw`OF)pUi)ak5zR^Al+v>Fd*%WyM+^%9`}$)1wPW1WX57AAgp zk&|Fgbd+Z3Stl@dzZNiNyD+c{9XcFQu9pA2oC+cA_6bKvWh29O?zPBG7AII}ZP@FU zUTuXG8yT^8Sw+(tJXt53%{lmAhK;AD55wMCs3UN8wm*WFN1#$BqGbI#6WPCglm}Ic zxlE!`e0X++*Djnt$i}ocFpZz5xV-vf!)49(s2ic!UZ+?#b+NGQeLS4e=hDA{z=o_-BUtjIt&<_=Q2QU8w8jS}ic3AH3b z3M0;{Cc{xh&_5JGftQ4!sdzZEiVQ)rQ6xf53K0%KK#fLg(2@AZJ{@|CKuiz!<|`Bc zAP0ZBZ~BaTl8Ltp=BD3zvjmCIO2gsw>Lb{km=n0c0&^3LZ4WNZ$`IC zyPB3Q7FMd)mFH$OLlWpLzlrK-Rtt zWHb;QgNOwmSY}0>gow{xu_BH{#Kd|lB8-Sn?Fephzj=8g2MAtkxAI-f$Txf>omfN0 zWy8k$3sfMS5cmucc)e9x#cSVU2b3L9Q?ElMrZpmfO2Q!zKBYLBwhsHd?c94vZrK$9 zwzVsu4}K!Ww%Mp}etB1we5_FV%Fg|F$!%5AwgWj{Rq~Nt>>3nnnhNTh@`M?bp$^74 zrdPi$Yzy_Qwum2uA|iWA01Cl}LL~r&5P(9QS-`a{a%KVN3)Ai#EJBc(5Q5OTHgmpP z3VSgQEX%mws^cTZo{QKGcI;}#Mi852%k%=q9)j2t?AZGm%YI?L9eWdEn}#W8Xs^Fo z6^=)OQK-IUC!5!PW%vXpc{2V3qv-5`)=adD_BAzinq%E|u8O*1iP1_0g`+?Sw^4_^WEA{U%%W-;acNDR8ZrV#VIX*x`s> zV#i*|*nHAu58}>etkui?xSqXSN17V=J{tfvme%z~Sh(lUHWqF}Q>rUPOFuFkV=EkA zWnqy7$d&{Zfj31}PB)m4BJidtBmJg7vx#6vicrVdgM>Fxi#OwJXbYBr1-Gd-z1&W? zmkAXr;V4^zr!wIpm2jq=P{M?hRYHlKa0U|&Qwck#S)?4pgzhTgwD+xqeVL%o5MFST zm5|JYPgIL7v=icsk+2#G3CCg+j@jqc^-wI|=OaLgrPb7cXk*G#+x)nPPv2LTNonvsv<^!KlSvURGqbyT2ZGc^{uL0NNW((ZD z1Q!bpx8qU~*S^_IrzLcJXz;0h*0$sWDK^P2_Nc#DTSIuHDt4D$>7+U*#Ud`43vd^KEQ*YS}cA2MWJ@WZC2bO#=$Wp7Vy2XI_qQ6+l|QJ z!rz~RHmTB|FJ`P*vt8vdRpmyzy$4B^pg=CSktb*8eD%JuS&-demrOM!v4tiRmme-8 z?Jk4+AFmjE_8W@9m68hQ6VIyLE_(4>R(E2dWm|=_JMnOiI>T^w9a*8uVS|V{{7E>N zcbp3b^G|*6nIYL7Xm+VflVBMRGmlJ5kA-#pv*ju3BZasX5bdAIXfT#fvrDo-HT!CX z-0`0QxjRoc$jL5ADWzABYcvEwOeRxD+1%Rv0_DFtOS1Xd`ys3di6uO2vFKe1B=n^K z2kP^tGDUC~fIzX{vH{=7IK_5w2_kHhH3tAWP-m^Io#8f(+x#AsWzjDJy2S?lXMk=x zDuqQnREXz5A;V7B+@Hap`ZmbDrYujR zjn}Q7lIxFU$p%w-xDAL5Rrwn>hyn{lwsVVsXj}Qos`9?JY1zY5a;UfR>^7BizY-{q z*dW#}0AJtlM83M#$vw+?mSY)&$B+{~@iR?`gOt{>`5^rDcy@=3L}S(JxGH>MNo!~C zM2_^~+Wq}bS%77v79P~C2W)pQ)hv~QDrz{se07!@U(S*2p7CYc$$dJ@ z23eKnvmsBuEu6T;uKOR)Q!9dt4rynkvRdKlvFmptKZTJ9Mr-k?*Ada%MurTMU$ zq{ak?*jU|zTEMHDQLc@Y-M>h9dz793Qpuk-T=FZHVYCu%Q}!FxE}s7WFjd!n?bUUp zs>_rA=lR4f?W=6!=GN6#8}xeo9yXrKQMPFfhuR5k;1=Up=yQs_8KvEeY|K%CJ=D1{ zj%PtH&fTW;qCxA$Iy^B;CVEjwo}(cotsT9PbOZbYD0LhIoM82r3gRXWu@O(ROQ~2x zl(cprO1gnqOEVD*&9y0g_gThO>jOm4w6ZMsR0uZSm1_7rvErP6n^LoYFvhE9AA!vj zXqDy@os%$;gNn!66<>&oAv$OLxgF8DL?QZwo&RtmN?scsbBI!|Mk(A5N;_cwiIPh5 zq4X@LJFsufuHv812ue$(+wkS5eMJ7B?EHU2euI)ISOC4V^Vm$qrARv{U93@3X}&6Y zDwIC9tH@O-9o!yD0~AWVYAuOOk^E^t^d?uqtai2Q4%HkfcEPoO7uxHkpbxRPXyIa^ zfSvzA$)7gUs;I4M9m0x;hSHDnO9AB&8_IdA*3;Un^#WDvpX~ext6KkL)rzj#hwj4l zg6Ap`aP8zxb<;_=cWdV|DGBc zjXTOVJewL=@O*0EaU2+J!msf;>=%7CHSoyOsev~aqy|36FZIRLK;|o{f!c>t1B+fu z4XnU7hi76><5hL3fhzoF;rAGRi||{8-?d9p12Oy_!EZ5sYw`OGzx!W89{kqg_Zfaa z;7ByOL?ihW}JTq@`ONlC4$=&3NCXG8qg8cY18ux%CH_`1Pmw(I8VJvBGJ7|S8o!zVL75*6SHAi<5Rk6G)`QML{6N%!goOAjJU*c!AlNu za0r2=C~mpUR{JPUwX1J@QgJK{hD6)&^Al~@!am3Us-V?Q_X`M1RMM-tM;#qj(P6MY zsJ()IVI}d$AL37(p*pe}29d-mQGncQlSjikHmq$`mm=jo7e8@T|963Hz>f+g%cP!k4fS}$(zW`RGfZPrL4 z>rOjs2Rkc|{3Ncua1}ef`fgB|sJk$SlAVF}a25|miZK@uiX;%SP6uKN8~cl95(VgNWRiS=iBX~qKqF$% zz^sSN6!>i13D|HIf2yf_D{8^rICjl@qGp+HyU>pP`7wo0G=Y!j+Fad`awS!iH&$y^ zmfh#LGq-?j@mt!4A5hgo^rY-4d>3oC?N4wtkIjx#cc$5~{e;baq`I2?3p|{+2U^XJ z^CZr!Y&A_Y?r6z4I6Mn6o^l?gMb2VnfNq)zxs#ep zvVCZks-on*2- zjcmYR;~<4WgT{c0WH1PbO)y*ITN0-xXs#tuDtw5_8w+*GH=qj@=)d0&R)e@r8gwI` zkQm_^O;Z%aNt)N7&(brFB<^Gdx^=Jt{T=v*fyO%rc!+CN*>>P;i{inXDqDI_Pqs}e zThqw~+7r?Wp~6#4#9fSl+7|*%ZHKI@??fmoD~USPzHrjHJl6|T3ohWg=&2Rb=4$UF zn|(HE<<3U%phn)+lM2)!{)kN0NwnKYH~j>KycxW_%B3V37~u$61mXcV0ogTL)`fIl zw2JUC2cT8d2CX?#m)-#*Xo+PKjqVJDo>baXRe>94uy=!rRrMKKi3D2Mx$8S1SV>fh z0ZpS~-3;JGh2NC`D#dM3nX6GzPjX0xg80YVPBbbNa9K+OWr7Oc{it+xQ7K8FVx4C9 zqJk6cr&IrcPDvYd=4*7+Q#II39mglu;DOYGY*UE_F2oppjr?OHN7%@f$cwhhmWf^l z0%gNlh_8u5fAVz|9c7*S%SR@4?k^v5#B+c7>fB${O^7mq$N8c-_a{CKP!Kf=Q}lS8 z+Jx725Gyr;RD6a&Rg+3GG!I-U+y0;B6=-fznvCu1S1y>@X>6V{~ z5xKg@{dk+Yg58AGl}P_tW4^f|r=iasR#$;*`kilvqOlHbgt=db_N4SiW9E1Xdy!(q z@H5z2$)YjHEII(BWJtCAxQTwqVZFXB2I{=t?YMt?^_ZPs)8-KIVzf#HI- zSKwXeFzhg_eFU(bOZt&uT#^B_d^fDn3h0kdV73aGnXizA?(eSxm2CksTA=dGP&=Xb{~SmH^qjWPz;u#`6ODS*fk1?`JTXA+ymRNGJ@}eZAxHWVl;^@N^Mr+}L=&*X-QHCVEmb8YN@QTaWfV5&k zTEhkKtZumF`&PEDfCF;%sE0HtHd<6Ol8MfFeX-bs5)e+xoh6*`apXP$e)C-fRpgUj zyFva4DCS4&B67?#0z(uIOx_KC{WNq+&W_mkt?~CLlZE6HtdRbcU(}g?h+>d12Ki&m zzXJK;WwrUFiTS=xHXUS)Rzfdb)(L!5-zSWPk{%2)bS|hh8M=(?6j)4NI}vged&m)i zJV&We|0_&#FBP%GjmS_Dm*TE(1)%j80kCO;iTH{URraSzT>hvp3E-|uE^6b^VN#ZL zlMdW7xyG_vl5+@ZsUv<(2XS2(8aSUJ{85&eqLi5S9O@kl9``Uz43w~uS&-eq6L-2v z_6&AbXh=!3Wje2}QnJ8H(pgxGGbwv#s}ud``_{#Qz?^{d%eUXRI(wghxE;Cpcf{kk zat1Z9DF4t&6}$HV$rUq-3S5naI&(S#;1 z%|@I|$kB=Q%Kcy3y$@%hBJ^n8{NAta7*)I70JS?%|J3m8U+6Ld_Fm1z)yoz?x zoz!%$R1|#b3B~>ZTLx65;0XXiMMUEwX6`z{51khNoH~$IK>ck& z!W@WH&C&QunwJ=SIZY?dM*-)7gK&vESW!&1(xprAt}I9mVrW6on^9FSE;d8wE{gMy z%gV35Xu;$<|B9AY_+C0o6|=;G`z=t|Ml`ncFpUYCuMv_oKei@Oux;kI?tm?>{**te zI`r%li^L7=b;wT&kVSTjOLj95BH0-I3ig0N z@-Im@-&fMK!8(z)dlxF&3N>v-c$$`|*R)BRpEi>yv~?$KM3z+z+mro9aQ+JlaG6M1j0Sf7?$W$8HnIw=7bSOEu&QJkvDfMh#ig{E$teKrXf+_x)NR z52#a+D>dXAJfWaq6xvNgmNY+PlPHio5iS z3a4e@9ddi|i|{kBBR?%0Jai6(Z;bR&Kx9;)EEQ!(H64xWAQ$zE6_00X9?!OT9FQ#L z-ae1JhPf1-C_H}n0P;Baba#aaUgzQ!RYp)3nUZT0l9M0=zF6=aU5eUE?}*eA#=0J?jfW)4?(~biu z+x+;R8(SB$n(2O2U0Q>hOk%(}7}15&#ps*b7>%}&Xp(6za05-@0;WOlsiTU>%~P-- zf$u@gVGO>_n~A6TG>pVdUBQ|XV`fW!fOZNc5N#A~F&OV6y}6xq`7|lkWSrdI-@_%- zdw{ccBW9sdskDk|F+7}_EVG!hmKqfi)5JF{{WK7RaP&YtaVIGIE_6uQvL#qLGQf`> zDv6S>qsa%pk$HagQ1bys=;hOWhR0>@mss;uJ3-Nk$iuKBUOGU5O}_Oah>CpLK1YlO zgg+bHOlX0e!J^t0@iV@hOTeCKd1=K)TwZtOgNL@?1ya=eVuemFOap-yGY&Sf!Fe2l zMOqW>Xm(5_DO)D$@)-oC(*CN@Nlw`u5O@T zOZ%K7B8sXZjoj%B>xmEehNGfgh{lpj0|UZC{G+Wsuz~s~-8XW0B8h@lK@>vs@Sn&w zd6K|aq%ITvU(*rvD?lT1=CY!cXpAA;MCbi@IKgE4MA}welrN0ph;~`Ogr!W#8o`4? z?ro(Gcf@#4MXicZ@OG&$p7ztK0^9(q%>7`fU7z`gsHHY{W3;UJ$`2hYJka6DN2DdR zDiTgK!m5Ze8tv+Df`4KdpzzY@5$9VyF(1K=$zk>VSystlW}-RJQcCE}#H8EHARefp zw`)#co|KScr4L9_w}PYL zi+Sr#mEHTTS>rApP*dnwW!FH((iGZi=a8ZyeOVxVS+}hI%ggqVM1;|&B=@b4caGx= zwu;Kk*Z6&9_Pi-oEqN2W=(pjMyX&`$C+@D_uAkCbW)b2Y`qo!N<>`n12XOx2f79L32H3h*{YQGmBR1r={6 zTTorLdiY6gPcecP77jw0`!6r=q8KK+N8FJ#T`8pNu~iMg7s%w2Lij@o6J*hsH_>o) z_!Q0Q`fxnRMofr^mH%Ql|Me!n(WwB$>>I5*C zDB{D`mP=*dhVo5I z5NvvZX)&>I;s{!`wug41GYDuat1b)`&AHmG)!>oN7^xSskxe}`Xdy_&&UR^ns)wBm zAYMeHxGneGj3B<)spiO%qK4L~uxz@Pf2_=sMawX&icV%X%6|k7H;@R&yXnv{hBOFc z&ej-z9oXcwhTa^GTB>Xd!*pry?5cqsJHnAmpY|SDr`HE}L;l6NWaZ_n*=zp7&vi`C z?-H(4k@bj7YhonMhE6~>Udmp(eQ_8?zI{}$D6YnSI|BrRk+O{{ouuxL`Q5_cjPWR;y3J1Iu{~I+EgEKyLh+1UpU|hZ zx$Xc{^0N1r>h^70T>-m&JphK2?5P4yfe|E27L~uE27ut-P~`zdc&w^5)U}8NDFJq+ zFEM_m*KSzoMeW8b+HgWp%aiUWF)q;5`%v@w!|Y_)Yv(vs=qhkpi(CYT?ijzDYAJVw z*;3f5Z)2uN zAAm`eVe#Ja{dBDMKg1K#ev(YGKrs^2T!P_V z%8KIm$K?i;?3DpDg;h*C>@t&fm?upFGPvbP@Nn*2sj{!pZclyy8$(g$??Eu&t`Q1a zU4{gFQv<*VNycs>*q7w2^hF?x&h?^H_~6*h>WMmZIX|lhkfc;WPSI4S#2>;0sFI#F z?aX(elfdA+Ob;qKHH8tFYn9vLFScA7Ks3LEXu~G*A14;IZ`(AFll_P-CDz%x8|;q^ z*X-p+n{gAOv#*s+@W`$Ad4!!aAxBN4H5dgvy^6OTD4U(V7`{&+y7L>hJ8;NR(P29p zRp&(eH>6K{7FpX#hwRH;`O+)Qg)wM72a4B!e2XL5;MT>#ZyL zwV2`ix+q+lGI2nnNVGOpn*c!OM22vN0A;2@Ad`hUlpSBH24Nn2uuTyMVty|c^-Txv zl39^!#Cf)OUl;SMaTnhzQ@J>doR?)aBdbY$78Crnym(Zs(2|IleC3 zjNhVpCVSkyJQ5MwMPbF)_^VQyGZ9jm!R2?=yn;Whl;%0gE$dws4KLTBdgp? z>yz*|9Xf_Kj%Y%2n!eF;8WAN`;!dABwC6;<$-lOwf$^z!}Qs?SzBjQ+n`<7_LC{!v2FQOQ@*1vpAvA0f~j zw^wo9FSVYfykzO28=Nj2c~+S*q4+O}beKC@q6Vk?m#wYNE3(2#n_acMTkSfhb(``a zbC}~3S=$BB#QY(=Yy&UXxee~ z!I9NhY1*p#Zs>;qs=>KI;}C&!2Kx@qML4M_gE5eusK0}%-&@OJs+KH$fT@N40nUSe z-HF~}4)&KgUAr1@ai!qLY8qTRP+fR>Gy_P55tj`m##dUz6M_B+lBlo2c_*$I#mE%B z6STpZiP)-^q{-b?u>_$zslJK=7k`nKKsmo?R0+KD>UQ5>aP6;fttPG)buqZEfBpzz zh0_h~Mga-4d^k`p$`fIX%w90TIA0(F{hM!#W_$Gqr2b4*|4Uy9uaa5+N2!VWkmE1`Sb5fCb}?SH7TEwqyg%V+k?@|-&l_G1~y@ zz;@vTKp$>{79-`t*VchUc~)a!Cejfp!&immwo@!56Xwp=PXgr~;!q4!FVo{? z2dei)DNg1tJGZDw*puIam-V~hnX>_`7E|-w0|JuNJ2A>gUxpDy zxqOw|9WyXPhQ=`?zCz_!BajUEYlkk^;^>oS!pn7vpapta5N$yY--V0h6rF~@nFI-= z!S03Q75>n5)t-v)CPyGmQQ9gQcd?SNE!?TPj=7Huq>S^tSerWjtTg8C@bl>gn*zkRkph+ z<~EGd!*F~t(XfOu5M4}1pMQ`&C7h|zo$I3qE{`s*)PD>BzFwc!OUAE=>{1E@q~atd z_AL&?KV#6w$Ov}Z_RfsUJ}1+U3ed!ihVV|Y5?&Kc(BxB1wImozS)4BrL!`#gSM#fj zG;Z0Qfl%X=xRbh6AO@k_UUhY`?zjZulbvf)@dD0?$)ZU?;c0cF1t;Ge<{jlY8etuolDh=hDs|waF=9NiE22-+s%iI_e~b=t7UvF05dI zZhS&SnNd`a(2;J)?AJiP#3H`(BTN?!d~%~z1IOWnZlL^lINc-h)*4D9jH-d>NVH<& z#9m@N|FTt>_$WBzOlbX1Z`^o`y#rPu-Z(K3*d9$k1X9jNS_lBPr(d{yd;0E>y6x#1 zls#L%e{KF#6eTgWc}-$!Gh0p16e_V-Q(UpM;-O>%x~jy~X2L3%sZBi%CPi~NI|lJ{ zr#4}V!9&XsNx+@HoPgy&U~k)8;h&bl6Z210mp2$#MT>$b#+Kb7OqSnx(Cm;+A!lXb9g>|tlD8_#C46oL}U zOy|LNFuVLuQ#m07r@A~tCq$s6(EDp>PDg--N;3(mpgRL)KLbMdM%4)k+?Y4*EScd_r^_7tp66igV)Ni>wkmqCw>2m{C(_@|22QFO8zh6d-RXk z1yARoJ^d=8dX{49Qp=`<(CccyOe8qee~b7BqwsLv{m%FY@YS)>#wjoN0!k^pDw2s} z0R`Adw>Yu77g&x(3#bJ|AM3_;>2(tA4CQ@*5alp>V2%pXrwtPgRfxiUm!3g|vgsly zWG5+PZ`mx!zKe%*h>Pr6g-)yjeTrQrp{$BT+Cw|X!4@|z&$Wwf#CaU|JQ3S$ z7u&OlExZD&s}l|W&-L-B!d=Nr;U8~5K0CR6`TliLxfYCqE17{SiQ(xVhlexo+y9ZM ztcrwF1c(ehTI_aO5|IQ>5*@qNFC3%6ZY3t?{~j@^P>7CwPY|7thtttT^mmKNsz}rz z3(4>zTgfSYii~sfn||52z(w}#Hd6AR%f}_};!y2>%U<_>6P3}PNPncK;*VfpPlP*1-y*&*Rt<~0T9NS`8ee%=w0hM&JdINE!0LY?my?x^DF<0 z{3(Cg<&T-K5hndE{aN>ph~*D>IOFh9Wp#GpcbVGXr$0OY`N!zbpB18|MD(?<4WfUH z{%|H&^yf5S{Q-39kM<{f@6mpL@IUY;PfGqT z>R<53AB}zT=->YU-|a8&N*;3mc>X@Nuzh*>UG`$m2C)~b@o)xgGivw;+6(!jlvW5xpaB5dA~!MZIe;{w9t&RN>N{{1d_Ubj~De|R|Knv9tIf%3d_#UIrFDMU+&=xdHa^be8e2zT44{!b(O zd;34mZ*f&#MtZWHK+PfR`9rnmp*3{=A!=8GIU^4bw!s;XuOG_vgxSOa*9~(z)_Rd= zy`Ron4nMlG5}$X(CeqxAT_vijB76~dqR>~b{RtO|y#p9#e}S>bf)xOu;sPG(lNFVe za{1_YL`_E$Wz0pYOes#zMmdev#Y{lT6(C`_@@85*OJcGZgZUMl-(pr-s+ELnF1E=T zy97xIeQF<{^l3MukZ)6qXZa8Kt9j;ZTokHM4ais!s{|=#y$f`BB71RfV%T|RHSV-o zRu7hAe{n%pFXw(00ghz#ZzxMXsy?0)kIhetcQ~qE;hex%`;(Rr?GC{a2dr8+dMY(e zIF56uF|2bP*7($&+wE|Y>|u+WfvcHs$|ehV!5VCccWF~zgv%gG-sx3Q5gvrBbkE`ZEsBysf5%|kkJ zodYpJf@zO-noy<|B|$Vn>4Xt|t^nH8ie@^Th5Am+;3M}xnrPPZlQz74$^>4|GEO;z zj)1%3Er%SEa%|XUdNR@_UJAjcF!Jl2Qm81-dx#3-$@m{Z?XIwareCXCLwQm`iAZ@YcKXWy z2L2kzCW_6n~@!&A+YR3o8n7hsS;ee?L{`d>zMBhRcQOkOT{k5Cq_;*F)b{L6^&8Uv zt?gIuH70NBCxPZ6vA+dyM@-(zjuKt|bwMpk*P=8ynX%os{bUWTw6hA6E9k9~@rfR1 zA1r<1{cygw;u<3;PS`0#2#gC)Pf(38>d+kU&vsUsxa`*?{31@RIVUM7w*rbKLz2D|I6Lz7Ag^#iK9OFeXnYvDq|Lgb zad%*in-IeRXD=k7C+bx-F#L0;KvH=(m7y6m#*3;3c12{M{IpfU)}N5dMvR3v9w5AV z0S~7hn-$2Gx>lq$^+XP2xI<-_$PD)&!>ZtNl6qf{2& zWToA?#8bMDv&d6=B|^yBC(g#>K?eON?T2k)6p&)%v6@zL$ntR_JKHnc8JNh3aIVvr zVG-=J^;@?t5n!i} z@zkd6SkVb!=_~Z**$`|3KaI(*+0^V zHn15}qHi@A79{$2QqI%}DTf{8zmXAm6TFe9BMQnc`!Ey2%#tFY(qD|=qyT+jtfOTz zKGVc^!VwN|iCgd8;s`UxbnL)_znYBR5m^voG`4FcXO-c&8FtP@x^X8#^eSBHtwOck zvO4Ca;5&nizPb~mv14ngrRholTz;v|Vba@|5;`{0vKpKsdoeI@2+m=Pw|5R>6q(qK z>7uF0pKhp}np-$nmyn%hu$Ah-f)JZYkX@lP0!4N_R=!q0K z?~9M;@pw=#e8)5gmpy_&N=I`v{kh$vh!5MF&BEkHc6l-!*5vpKaap6LVYNPJ{~#NV z26pRqUKzX>K$Dyh)Y_?ZEf_J`+bMO!U2*^K!{|8>?ImXo;fW_)f-BZe1S}Y;&hwL+ znjp2fpP&+tKv{SFmITudn#vMS2Urv%pm{wOvE9 zMBL0#_pK1cPS?edZWUV@9D?{HX|Iz{|>~!T_G$2SJ-&)>>gcdpxlmR+&TtaQX^=}!DAIYucyu>?}w&*)R>g+F) zt%}G1Q}M9Mvv-RkZ}7=wwGoF?*Stok3q0O1IH$e@5T+D~m{^uu+Yf!gma3%gsE0o~ z?4Cm*lE(#4d!MuQ%`qZ4)^UQ7P4S5my@ z|M}KkKnz<+46cDPrJ}4GE&cPKpY`ZJe3+_+WJUM%BnLx!qkN)gOqIid=xHeR$}tq^ zf?sCUz#%WwBWtr$rxtyKJvdVM?2c=V6Zph}KV({A+Q(JF;okxt{$3M%IV?JLTQlt7 zV)`Y{NjNtJiR_BOW&pWr8{Rm0F;9^=v~AH?wHyhD-N9D0bugRiLSh~hZw(y*034)d zqOYNj74o_XIQ%d^(6QD~XQm@Q%1$C0D9hs{LM{=Z%#lGlZ}Xv7=izs=RyXC#WuPn#P1t=?$DXy*3kEOMV@?+jjwy` zN$Z7gXJGIlj4k0N>!~Z)1Q)ptmuUZ70-Hr(WQ6Kp%h?xA6_gR@aT&%(!KJWqjm$A! z6opC0Kg(6fmk4-BnF;Sex~J@_Ik7&b1i6LH2ygME$@xG~--g8IH#Gy*8GN7CO3=kNzKC-8(v6 zHh=ezPHQd0IpDRhy=XA1$0WJ&-rOC^-+eU*t_M>{bVD#_sTXSoh>Gz-E|;Bt{&4%INXsW&?T0 z+JbK3soz{We)Oqbmz&5ADsp_;=y6?_Q@Vjp3agYECp3r}U8UecGcV-4^0E>GL_;1u zzUM2O`x@hpw(e|Fx5hfnR0sb ziga@L8C19`IDL_l$J*dccoPOs#*4w%6bYmN?vysM8Hl|USSPJhhcMUat0pq3{h2tZ z-6>kt(y9F9Rl!~WO50i+++XTRnI7z6)kA`Esv5(9xA&^xju$$~mlJA(+woS_5S|`v z!VByNbTAU_yT-W-!UioYJfHJ3=#M``GA;qv=XGQn6O{#O+v$(l;aWz07w0*}Hlu&T zCmGSb!31&!1H+4e*-mbJ65oD3po7j8eP?Z;s<8!18)m4ORsoPCe!0^Dx5R-`*&bht zjzL_JVm+EfO{G|C+4){{v7_JT8z{m99Hl7V6-|*gyqN{={5knMK1?%xfE4M26x_&cVF#x8$ z%95*+lW5)(@wI6u$+sN}lEWqvCl=Crn@AK~ePc4d=R=>P%Ij;|^i@Rl3P@|{JWh+k z&#FX4_||0$A858hnD+?Y12S74X|1O)z`R5{Od9L+`_c&k$;R&+h7G{|5QLQU1Rp|2N71_vQZ<`TwE(SM?4T$Xg}mU-F-mT&=yofFG^yv-FQ4 z)>!l7t&K)9)iZJqR5~23{lX}I_yWs%tXboxN2d>oMr#M-7pM(PADqSa+97zXbG}F0 z&IE5*beH*S2WJh0!}#bA2xT#OkUW_#8S4(q}U{R}0*Uxt3}r=N%D=K%d2s-L6u zvqC?s^>dbf&ehL_`uVDUZq(1M`uU4~{^=K0|Ka+Xub*e>XNi7J)X!V=^FIBYr=KhJ z)6vfs{p{4L;P=qaKKeO8KZojPiGEJj&+Z-5g)ag9+}c5fSL$cBj(F0L+3?!-e6#dN5&;9hXkA5DnpZWTEx_(a7 z&)fC$Ve{1R-_+qR^s_}jN9pvl^z$_R#Ak~I<^A-ti+;9fdK~@SsGn=}vqtB8Uc)cb z;SY7X;X@>^ON7!}JXk$VeCZM1u!)~@xX!51c(A zF#PJk@Nt3RrGY^s1B1o{23;K(G(lH5=j?Q$hyEG=Hu=Im4^!z-UHOZiqr&1|BW9Z~ zz2~_qoxVN)=IAiySLH8dm`Ycz6bR(%FntgHtx*WzEFEEQJs5rIJW-rn#iola+te+Ry3lg&!E8!UkUc4PN}$>2!l{%Rq1b#uHT7$iwUtRoJv&B%;Em zd^pb=c6{LiUBBUX%^;QE&{v(W!lu3I2dl8DZ|=$7{FSGuu)(h|s=|h!%{px8pW&-N za+=C-@DKdO8!jyHg@>rHf!FK{SDdcW4gNzbz5HHrqc^;z${QXqS%nRMR!s4Rdun(l zeao5N`esyn;jQ_rH$1e)8y?|xIALW^egEwchYn%|BCqhA(}V=7&iib&I$BQeS%YG?i}h57qoLVdo+*e)Dek!b`s2 z8{X(E-{)a(`ZiyB_eZ_yBQ!rv{XdQL*5B_jZ~le8@K3(*eb=e{#$M!(@xpu57w$RM zn_lb-7d+{$zx%V^@Wch)@VZMCJfm-=m#MJPr<}{Z;YMG0qK_XLS9swC#(TqIU%1p4 zZq{K_f6)YQ{WE>xbvkVD50`rL&-R7a`NBC@dhsjPVN-vLFC4kb3%{S1ZzB)ktG)0x z`NBnI-t=|8aBjI5euXbw?+a&Mz}E^rv7GMIBUYoGD z{kq-bg;(bb_q*4d?&z?oZ|>i`^%dOb4R6z7Bac}RdF$_|`#(c}_XoW7-KWE*zHSeC z;kWq0D;`(yjXhlYgg2c3kQaXP!(MoEeBnA@xcL#4-;7Uc9`%Nsec{Zac+yo$G}kebO6l&|w2V<0&t^VqdskhmAj6^0dlt!o~Ac*!a(Lb=ag={N0=0 z;0xzI~ud!>}9 z{DvPrk5pl!PdyJ-VWWTJeCb6KRJwuxs4u-(ryKoV;|rIRddv4a%3J@A!&TVmYo8;$ z;rtwLxXc&cbfro+{F$rA|0bNG$NvWZ9eTcob6EV_sOvZ3oFk9w+wbUOj?FzT@1#Nb zgHJvsdg^I^DHwA48HHz_b@tG6&K*{C-tdbr898e7n6V|7UUvDoE5=VKz4EH7%gV30 zw&J?$BUuV6wq(6B=atF_XTDN-tB$D-$UH{9e$K2?;nHd9iCt3M-5Z$W^VhN_D*8a}@P)Iqzh?56X#dRRr!Rek9uJ!QGkoDkec>&>aMn$#Jx%#pzVIkL zelqFRI&9>vpB}H9@H}65s~(S=^kkpE7SR5h>CXn}bW`6vUwDR=Ka;-07v7}(H#7h9 zQ_M@>QtiLF<#pJ!@2Fc{GbXOdLr6iGyE^s{+h8DEjn!Uf8iW&`Rw}@{U$x% z=fBN+*qgtn&tGfQVPk(D)&81+mpwac+~)K`9?FFafOZ-)LEPbqv|ebN4y z!KYA%4gGU;*wjBj`)j8DLhYZK^cr8dMEhr^Kd9GXgHMYN8~K>4{WT-+OXqpk#9NMHVPwR{+RILjwb&-vOXqUFQ1Z-p;hq~*b+&(&cAzfp%x z{WG<^VBelb-AI=V$7$ zSwBnB{=30vfsY>xec^hY-?T?W`}d~4dL712OZh9({=LcHsKbVy%sQnX+*rfE7ku@V z>U0Btoemp)%vh|-oA$sxJ>o|i_%n6b)L*B=23}x^%5U^FQ-@7@r4Acac;oNrzqh-}cs5;tMzHuv`8eZ+$H~Z2E_F@2YfTPY(6ruWtPQ|M%at^MCsMRpX6B z%X-Tz%(wiR`dY5@@~8VE)&CiJXt-XboBlK3m!5HhN;mDhQ2U?8zZmzT7v2c%f130e zOT6jp^n9|ZKWnmrZ{%x~9*-D*f^^)K)A`yy7w`7fk~359*?Ywmop0T7S?SS_jcj`4 z&QT8>RkL}wN9(p+w_nrSjWzFWxckt8MX4`Od~R~*!|Fc2ZQoaBj>>p(-|gY~mqo8! z{OyN%%c>`BeE(1Jtsh)*<_jBlteW;#)w#3B?O8wf@=@3SaLLcxR*$~zT>8!msL%VYnZ`@+%V zW5si!_ds2T?39||MbE$2ZDm$d*XM4UIN^xh3rdQf-uL3=0}mUs zXlCA)YdT%IIcaHl!|X#c-u`;}wCAqe|Aj@J9^3lLgMByFIS;SyT+#0b+<81V^{&j> zyM6pp+GSG?8+b*^-Qz~xmNa7IzjmB?`Q?{fJg(=aoYB)x4_vbS%R4)byWz2$0Xx2mSQk_!PYeK6q4VBu4F9sZn=(RJBh!`)W*exYR8f@u@NsT;>EesJr>Z|?TP zhZoLX{ocU`%w9Kt;oNsu?KN=0c~jFC9^QY%%P;-imRo$117QAwAw@(&zym!NM zWyhWJ_7~4yyW#%OL7S7SdThCRkFFy>t?oZ+)(Mwgkv4buW!HCIyW7_LTT}1&^D}`i z&ppt2QvMz3%^My`xv6A((tf|Z+Ue2@hF!ArpJPW?UU|&8y+7}C`S@%0+4xK2p>Ite ze*OCyYfk%M?1YaN|M0`t%WfI8?8Uv_zGZ%~^T<2zOul3NLn~h0lzZ0pkIwjJ>`Uv% z4qN*82c2Fx@h`_bAASGOv`q#3bb0ps(>fkge0_4>YhM?Cbk0X(=YD<5_#>}dcInA8 z7F_(#KUIxcI%mU#-p71Wa@L*Kc3ac&l&&u=?$P0ZBMu6lv#kG;e`I%k`T5(2FFZ8) zvIQfaXnpt9BiF8bq4t6I`t1A6hv(0Kb=2Pu+CFmIeUDsL-sO%fIy~7a^}Z92*)2Y8 zZ0D=?92N-Pc-kv>cE7&vlV=Wn?uOib7IpjEEgNo6TlV&6FMhpcVy}-jcip(*t-qf1 z$;NM57JN`LzUuw`-{`Sy>iGvP{{G`@=TErylovDqH9V!J^s@BU*ZX%GGoowK?yV1u zzV*^)E@^qI_411cuN~K;;*&0OzS@xX?$D~_(_dZC@wkf*8vDe~9>wd1oO0=@o39;z z!fBVSe`d?@citP*^`l60|4ql9{mjxQ|M9>}A5K~O{3%VXFXZ&x{_@K=zq;i0oI4hr z{rDpbvx3L0TXILIci%X8*oQ-38T;OWhhINtLEUK=ujsH($py0xop8vp%l;pG?*SIY z((e0qcl8V)D2!tcJtPIS!5KgWGbkXa8G5RwOn0o9W_GM`rL51?H=M(d z``E0uFV?-h|Eovy%2+tVZqxWiPb=hkPjNZawYb?XgWJollMXcmd*)f2WA^*X z9`>oI?0>9}xI&$_YUy5~R_j%3QR~GIa@W`moK%cq3&eOIuAEmyUdZ6jJ^R4bW&#zir{_e_C#YEQ* zFB=Rp`?aXJ!t|I`)!X9py*ss-P{(4@v_F#T=h{0h@<|W)diU71bW`@}$ku!3`HY=; zC4F4rz|vE8lR}4NhOA|F>_2p4+|CG(epkIZ6?AG6^ZwC>*-OiQY2tNgX4cAYU+>HLc`Yb3QlV^-ApvSym~R%W92`jvZ5 zH+Y%4`&s>mzdg9+t8G2zMw6Z$^It4j*W5wjg|0in=Ob-{V!6Y-$fUHr2d_ z?a>F$18-`6ZE)}XhsXEsM!sjsuGUr=FY0o#JNxU8>-O#8$N46`_LLqy@+fv;agap| z%Q{Vez2NvLAhGSNgg=k>-Z%E-m7B{y?;fwaRnK#-g^=N87gF-a^WT&J zyWN^Kwi{IWB4@qw?X+2)8#xUdYMk6}SB&GUo)0cf4&Rg!VNup*cfle3x#n#b_nqzk zd_{?GYO~9kDNefOM=olXG#meAX@_^pDG%zL&7axu-H_#PTW&u0;{EV?@l8DA+1k@X zZg~%$-$}i6R`&rVnwwX$t~j22bz<|JUa<#$HOlCozrU%m-fixnu#I;XExFcZ*6!%} z{_k7f>er>=n6eXxhfS_{ell(8w=uiF{K0-+TgRbqQ{!$kRH?U{MYg;^T8zrMxaZFF zUAg-wy<2#$N3-r>HVp@Ns3C0ji>f=>BWLP@)$hLb-{$0cbfNLl9;-g;Kjf@vu`YP` zk#1(80j~zQ1r+tcws-!l}hA*7xbH}Q_{+A62_cVu}K9Br8x>3yszd4>gvU~dzBG0&x z?=k4aE*fY$b=3y< zkJ;w_n;p6os!l%I6q`LswCZS>;uRCx3tNP^7&G4^HOCA>g`Qdg}tHHh{jrc`(b3C_fbgkRBhu7wYUbi0$i|xbS z?hIVPnG5?PVzvZ!-Rn7OW&F&p<6GpVnoi8ya-!SuI#s{6o7wa7yKiBQZ^oM>tvkHI z?nBF|Ncbs2*y!n^U7UvIV z9O#>U{&P~RslA0e^Nug8zq#*ipB0X6zxZufWK%Eb=-3+5>Ta>zlb-c*Sh#HPxRRhV z*)!($&TuWYUv|~QX3k~b<##V$sXM%Ag?p*mn5|B`THP!%YmcLnk>0=tHS)` zv+=b)bt-&h*Wkpym1L?xX2RLees1gh=u_7Rp)vDrJgpK3B<$$iS#F+n+;!4%&Q@3# zUaMc`^AoRMb}DVMV8+PvNt>qsrXJj{qg~_cr_XwOINY1?z&c^Ws`8b6r`(+!+iJnV zOM5leJI>e|fxwXUaJ^PRB4%jvg)b#5Q@dULz}xUh~fOLn!aH}>A< z)I!yf-wReYa`t)r^+saSMA@od^;~A#J=|8gCp%}?x|}g>6k|%fUY@8leYt0QxES{Q zzDID7E^E~I2J4sKd6=u%`i}JMpj5AZasE?bL+Wz7Q?|M6~Tbb6oFkN02ha4~vI z&05ixMT6zjes>zKIrvPS7;}5+kuTTo4rzWPYtOi@ujWqgJiW*9kGs|ua2q2@@(7Qz z=e^dso3-m~Kf`$PrDg2(k%ONPp4zg{i^1OK`umn)!i0e{fh&**TVZ^0t+g|T;X>|Nmw3Q)n$=ha4RkKHDr(7^HGZ^h0d$IYG zFAL+CcqV~KWRjR_^CsXc!IC-O@!;nnHbdh9UQ$EV&Qm$O9-L524275wr$*%sgSbq4ZP6 z6M3IOS@Impkrz;7@{;jE{4Y?Jyn=G%HPo2AVSZ)&u&=j_KhobpS@Isrkq=NpK0=Mj zZ_FP|DAGScS@Idmkw2lvstn6Jz?oL?Rjhdglz$00oqrQ?tz4z)`_&61FogtR22 zB_Tcy;WUKP5Kcol3;DAVmyNh=#AQoiV^V;)0>l*{t^oOp;1|KVqvcpO4(iUx34tev zXHR7C>`6D|GGY^;-B8X19tY2en8GuHXGUtmGb7!BIhzPou%6hLl1+koVqbOP$>AB1 z`tXe4*^`Fw?BSV_#_-IDH}=|;O@VqNuL_arn+mmKeQ;ha z*fgjQj?@Ys4^K`U;K||Hlh*L;;TfS_j9`5kXT)l!hi3=Rj6}jSBf*G|V)LNEsADud4xSx}g=YuPjKsk+ zBOwSSu=&ssgp%NykrXx*Et19-Ktpl-ba*^GImv`4hgXAS!>a+$lnj7p3eTS8!Lujf zI8p&y2#o}VY?0&{lPabUYE#S>L;IjDhrly}XGVs>Lyfu7>{vF0o4|%~;oKCqoQ>q7 zxS4D}E`dwqQn>|eHkZp4aQ;kVvI1?;n5<&gup_v&>}YNy)_D&_%ofz3F`2|o=60~V z*qK}@dw}iE3}sJ3hoNT;V|(Gsoq_hp9icy7ZNAKTT#f#?H}uDA*Nj|5k2S+}HY1mD zoz2kVX5=c4W`;8~BiFHiGg5}uxXFHjmf>6s@K|_e8bEa5iS7KXPVuFeJOyfKPHJ-5P=AEX;VIDX%!z`_g$5y{ zgr`7znUlI)0W=h$`tTI!cg;ydE)N<48gu#3rd$u4m5NJ+E@f@FW}G|vg&pcdU*~qD z1!`hPZlc9nalb)t00-_P)E_xo9z5iP6XT0W`@ zFz?A)v|kBQHjv%S9N3Ly9&{5~0NqTMLC=#l&>|6# z9;$`|J+X*kk+ZsX#*%kP zieXWXCAU!OD(qF{xJ~Yoa#Bg|lZWInc}kv>m*f?BLynU9PGgu%9lbwyk^q{ZC7<@fOi z_(S|9z8;Qp6!n*r|J{|x$)e-3p3uh1UG#0I(F zptX2-#^fzL8fQx0!!spz2z^8w8k67oR?tsqM`Q9Q|CO)eSs9VZWJWR*nW?O%%v`3B zDP?tK^<@oZjb%+`Dw&ncM%GMbCu<>VC3BFqmc_~9WeKuGS&}SSmLf})rOEos(q$R4 zOj(vJTb3gmAj_5I$?|0dvVpQf*&tbwtXMW!Hbgd5HcU2LHbOR1HcB>HHbyp9HV*q3 zC9{(U%kAVL@*coW9xC^hY(B#I@>9SU+(6tBa242_bTm-|XHXZ^1NA`@U22M3P)^G*&Kz+~zv;y9yVW!@uok6&%m1##)YcSLFmgz~;gQlmz zN%&r7VP=QSZkU~vxCwjI>@0k*nw@KU1FxFlHE-8E3og|xlWb+p-nE=+U8uFKmcG^k zu%ec!xrg~~^Ijkjgn=l~)qJP<0P|dsZ@$fZ1Q=<)9dUg zLnDXA4ow`IItUIb2TKPl2Wtl#2U~|`4t5R>4rLatUC_gG?joUOf0w%x| z)C3C99&`kqK^NcwdTQO7lZ*$`o$+L*;oYhSLqGrYWO^~Z@y_YbSaShP5EH_LGT}@B z7szo<`*QV~)^FOhX|tw5TqqaI#c@eoe{OKoC0r&qw&^l%0GGq%arxXJZWO0yn>3xl zmEdmQjIcr+)C2coBE&;I7#kvkX9G_|jNoa=DcpBWgs0H%$YClZLc1eJO?Wo&G{hX9 z2A&;Jz_WwrK$P$tNNtuObp<7~Hp`Ow@L0UJIFN=y64aAXlg9AW#GaFrra}v-7xu0a zlA+#sFR>C*pgj<>5mKQ&aKvWtY~UFaJ9x(M@LmOve!_Glt>8K0T~kdQgf!?S)VsCt z2HF#7gmlTXAK0RN4h_RQ{7_*aGz|M34$lUkR~a%= zD1?UN{6@oL;Te;$@bJ!uT8xK>vqs*D@N7r~LX(9-&3 z9zc(xemZyzJQK1G9!(`g508-L0!KCqE1(?Cce8+h#^5nzD?A3C3E2+M1Rfzf;n5Ou zvKuAne^oZ56usXDo(b6p&jcPJ2jCHM7RNp$ynvp?v5&xG;F*wP@J!$lasnP9dvNSi zLMhY-@n_KIP2ky(bMS2NNzH~_5V9rDgj|AWLat+)7WtcnmxfaswVsCFB-7 zLe68Kw}lJPj zY)1L#!WQUelz$12foDQq!K0~!yn#pH*^syJY;bKE@*dZgfoDTL!lQ8}jCS5&yGs?CCI_5jFHZ%OrQilOL+J!k-_&M za`+y^NVOCBcOth1aw&iXawxzY#9OH5AVr~SfcV;~hEOGZmehgIlDewh$g>+cERkXb zED>u3EU{-RFc0aLs(Hv^rLsr5wWnE_`NlpA*~^UW6<8<2}*J8JwYk1z9%Tf_4fp&=mDOf6n(%G zl%f}Sf>QJYPk{d;U`L>5c#@H-8qiTHQ|M@w8FY-QCUmT-7Id7-96DZQ3AIEyD_AR7 zYglVo8(14yTUcAzX0Xj*o5MDTwS%SC+a7iXuD&NJQMH85RJDT6Qi;&nDhKEsl_PYn zsx@?;svoo;%EiIP!N$YJ!zREcz$U^b!Y08c!6w5d!=}Kdz^1}3M>~3w6{`Nwm8x{; zDpdw_wJH<3MwJECss#^`U9>Z;PKxa?G47z8L%D*(==n~0_3=iR}D|DKp8Sn zHHj3ezF{BVu#a!p#|h*(f%J1orT_UcWDEXdRDwDPdmx_Xq5E2cocB~~koP{6A;qd` zWUy)l@;z3q#T{%c!Owc(42IzB&Y-SmP=|}K7h%t!{BKC3wiK^Hh73|oAw}r<4DwGW zL*aRn_o^LuLRyD#mc-J+(voo|j?6zdC(9pO8_OS?6=Q`GGSY>i8x3_~e&kX!E=(Jy zEz^#1W!#unOl|8Lw{Y1}#C4Qf;gE zK#x})uHFkhZgseNPxScJ;p)B7deAVfOAGAF5uPLV;fOjrqO2q8?1(assIw#TIwFr+ zQks{ZAyt~6o+VXUhMp-^T8^GARa%xF#Suq~la3iLX@aDQk|s%-ENP0QsgkBi+F#Oi zNi!tPlr&4yY)Nw@9Uy70q(NFXj1H?cvNDLN3#85Fz3>PEBNU@I?CH57g#TYS8Oy`C+9m=JO{lyG1PaG(A z;kt4o#nIwealANDoGeZir;8=xEOCxFPh21_5|@a}#1-NyagC@G*NJ*@qqtezDsC5d zio3;9ai4fVJR}|wkBKM5Q{ox%oOnUJBwi7(i8sVs;%)J+ST0tI_r-_eFXC(Qy%^_k zA${30#?RibtzQ?vNWZauQ~Z|u?e*&tm=u^EI4W>%pg!)JP~?|{B{qaR1V zjs6y$8&e!JJmy2pw;0n{Wo$rfTx?$Ku~_5yw(&jVTPL|BjZd1Fv^uFY>0Z*~q+gSb zQ|wbL)8o^N(zmCdOTV6eH{Cp=PKHZHdQQvSwz(a0yX1Q3M&?H4Zpa;zH!-g)|4Dv> z0#$*1fx2LF!OVhz1BVXWH1N>C*8}esJ}7)&*uH2_(ZQnp;&a8Hit~p2F{JJAz~PgI z9~jP#FdI>Og!72uBPNb`IP%5F_ancIG#k};lxkGgsN7M5M)e+-KCbJ8UK0`~44XK4 z;?;@Fq;^xhri4xzG-b(@#Hl$`w@=kiJ3DRB^exkOPA{3^Q*yH8e94uP!Z{=6G?}|= zZt2`-a|7qa%!{9wHt*cLSM%P_W9P4(e|LW6{J9GjEZDGM?Lx!C%7x7qwO-`3sN6N9QmVRAYYngJH<+2XTe3u0+o4RcAvgONatGfq#2KQ7i zQ1=G@AP@wDP!J9xK@^Avu^;$_(DcA=NfJ5L2I1WyN)8LZCLiJVHtJwby*c-40SOe@` z*t@V=*f-!;@D{uSU%__lg;B7I^$Je0L9tOm6ud&F*rM2~*rwR7*rC{|Xrz!Uj1SA z6uF8#MZTgy(N9rFQCD$FaawU+aZzziaZ7Pq(L_sg`^5eYfH-DT&wq5ZOQkr z?7NkJw?^Ns$#-k|-I{&3wZ2>P@7ChGReZO!P3dvW(1O&OqD{@vzWRTJYJX2*{Al_V zNlhfZ8%AShOMYe`^@-%COMbNEy9d*F;}ojtIaFOTsMA{dS*jE}#wiKpgsX9C~yd zdUPCmaUA+_9C~padT|`uG!FeZ4m~*zeK`)jIZo=&G;X(oky2AiH;Hsct({S8XVlsmwRS1QB%PPD!*(nde0wgv5gD{#Yk&`-9;DNeu{xPUgG zEocW^fg7NoL8#Kaw9SlDdSK*462?hT4U;}qcV||rSL05wR=pngoQ=5OY{lz;C+;() zxW^p8{pASmEhlkDIIBLVKCix@zKHwFRoqVuxQA4zE7kYZ_tg*7kJL}p&(zP=FVrv9 zzo=i~zVa*XDeu%P)mPMCPU$mzE|IYu0-rh9Qho=TVUVgI9l~O*tIzFW~82h z_XTzOf||WY+LwiNuoQlU zxK}vdbL@$F_Yr#?ud`+Pxdwj=&5^ozP2t+iUp zw-fn~Am$!g?*;rVXh9l7^|VxjQuQgMok3Z;@3Uyji_%dqVGqZpma5K6+w8ddGV~YZ zy^hu@mFjt2I?i<*_Zs49d(w6|18)`bo>t#PXt!D?r9Hb)pi1-7*8x?UpT5$l(lYe3I8|DXeio-n%hJ!{ zRI86e%hEdvRa!Qc3BafHMBt8ZOX6X3@qcR=MkCRYN|_SdB;Ahx07IF)7>js^fUij(BR<;k%J_c-HQSct^C;0MwCgiFl?^ z*P6CTH(U=#glRh#VboY0S|b4eO=BdEwDrbb^3kT5APZ!pOa}hr&cxNsL_V654GloK zobSg8K!~0reU_1nXA}cbmw42(t~I@OR5f^?bOO%61+)QeK|A0I+yL#BRB2w?E2+}_ zv{zE4WoWOYO3Tq+NtKqRy^?D6acEiEE2+}5^c|5ZElb}OsnW9aosrgwmZk5GkCRfQ z{^YLhruEc%Ykjo6wf@>bZLl^}8?KGiMrot9vD!Fof;LH;qD|ALYcsVYwWGCTwd1uD zwUf0|wbQjF+F9B;+IiXq+C^F$T{E4Xu7$3Z&Oz5&=d5d^Yo~M5bmqegx@cXjE>4%AOVXw2(sb#%OkK9FST{sh)O5IRq;9ls ztZuw+impUAOE*uqK(|P@M7K=0Lbpn{MyJ!Q(`9f=x$#`Eey47?t~uLIAEaNdT%la4 zT%}yCT%*(~b;`BMb;|Why>f$cqjHmSvvP}at8$xiyK;wer*fBaw{nlNRJm8VPq|-t zKzUGkNO@R!M0r$sOnF>+LU~eoN_kp&MtN3wPI+E=L3vSmNqJd$MR`?uO?h2;LwQqq zOKDKvR^CzGRhB8sl@-cL`*fguT;FkT zraH~bUi5j%ltIIbmJdBMnxA!ZQe^}m+i%FQ5%IZa2OXXA`&>grd|ze%JDKL$t%tT7 z)^qOFpvfc30?!9FDLy##?dXEJBPL&p|2E0Z?`c%+e&h3U3hD>{Ip~o8y4ae2=Q9Q+ zSr0uH923D7`ixmWX>a<3jBoLeM=eiCD%j+g7I-FbWa`r)*`uybx>WKp$Rp&Jm=j6g zvRf8yoYQ~dyrmbHo=h%GkDs0&GXsM<7beoC8dUx49tMT1ez{dNYX29EIe#N4z~L7#&{Ll=ZT2;CmhJu)ORzK?y> z)tK8cX|Wq)4gLJ$jN|&nxx^n&Xp$I|7?#vHB`oD`*10SpM_1S;cXRH5e0f2Kf~Esi z1Md#}FwnQKYvK7pTZ;z|i5l8@c+luKql?D7PaHS#(4=#dUQL=b*>!sEj0GhFXAYTr zcb@6|+KYS*zGc3K?q$6UH!7EOXwcQIYly+8BHVDfEY@(XqT8}*%aSqnHyL;3WZaQ| zc+?-x=Hp(R&*Wn?OFqV{?Dr7L9YUT%I8K>tfPAogn0$o1SUy}{BwsDp%E!n@%g4#b%cshx$fwCC z$mh#T{<=f?3<$LA(F1#$Z~&gbS8k86J;L^KN8ky3fUmqI;#(rVCE{Bmz9r&Y zBEA*kTOr&E;Z_KX$Ri?5)dAKK))Af~d}sL1@SPEIMz{_9Hn43G-xhvb#J5Gb9sG8% zuD}gxZm{iP+rzrUx+C2kdEKS353H};192V*d!Qa32zSGocSGK8i0_8H-Q?YYC-4Ej z2#LS}I08@L1AO6C*PhngQ`&r>zH%?bdm+CU;=K^#h5TNK_eQ)o!rlmbBTQSs7x{dV zkM7ME@ibN~&yj0@53po<$pfLiCH0fkU(x_c1CggWayOSd0WY+_1~>sPw7CX20WY+- z1~>s)BRi-DI00HS4R8Wp*oPzVMtN_P^G2J~bM{7xH?|z)@y0&9aZSACF4&U`Y*#t0 zS64Z$S64Z$S3A_b9rC)ty1}-GZ4c`V>kR7x>jLWlOV3|~rETE|OWUFiY#Z3Nux(*o zkm`b*E=YAjZJj|I&=%Oqd!nZFO3*%6-SenVuLq(GoN#tv8LQNBnWlG(U}T z#Py<Kp1Que zxn(oUI+jYySY|LYl&PbxtF}-p)HT$mYBP0BbuG2II*N&AI$PQ>&6$>r1JjY|%=Be! znPyB^e52YEufd+ueS_XLEEzxP^=ZlYORrE%CO~?PS~B#tO7AQ|ut9PwxwYIzZYytw zSHB(FparfbyG`K%F?o}RD-Kx4*c~*HRHvRs&|!Nm48)0RbW+6Rd7{ERcKXMRd`iI zRb*A4su*SnGmIJAVqA+q@tk6ndJUdStW!V4GnuFOFP}b5Sb%5Hi5iW@N#m?>(X`RD z)wI*NYTPvKH61h^HJvn_HC;4aHSQV@O*c(@H#^siHQ1N2h8CbDXaz*z031PUpavS?1e}2jXam}UcEA<5f%c#S=mqd_hmp3-ktlz#kaEZEy$N1!bTdRDeow58MY2z(eo| zJO)p|Q}7Ht2QR=&@C$eaUV}H_SMV0R1Mk5H@Dcn5eg}VmPvA57vy2!HgCpQ5I0lY` z6W}B`1x|xA;4C-?&Vvi!BDe%DgDc=FxCX9+8{j6m1q|RexC8EjGEfdGKqa^b?t=&5 zA$SBHgD2oAcm|$>7vLrM1-t^U!5i=^cnjW@@rDIpFIe>5uK8{?<-EZTIDNO?mAs)d zpf>Rqj<%Act>kDc zIoe8&wvwZ*>Rqj<%Act>kDcIoe8&wvwZ* zXQum>$bOVA34zyUad)<6w3zzH}57tjW@1?_+`(-je!B>Mv=4q=AwKNg6C^h@_#C zhDjPOX@sPalJJS+>+EZ$YbcbDZfUzh1AKO6Cax3JHsd;IDTYN zaj|j8h%D!V+@M{dy-Vt-#gw}0I%*R?s#7GL7)AZk9ICPuySL zMf@HikF<`AkMuOGt?)FwsQ4waaUZ)rhREbTuiJiUYaG=%%FA%N{8*GB>OH&$l~qyl zzQM60+x6>vxbM`y-iAlz-J-n>Ps+2R)1!w(-;aI}-P-kQw0%scn6#L9*B*w^`Ej@ukp5oZzKI6gXlYy9>2fCOKIS!Jh$FY&1fqZ1w>^tRGE@kGM9 z1jqJiiNg|?Bo-!Sw9iQDWvEg1FzJtEpX7!ej5|DPKQnMnAd|8q{IU6G^BZ@uEeOUtb!X_zvL1$I@J{@ti!q)vye|vEyFrMdVR;DdBtoI8aB`tn*STFo4Nc4Z20esrUJ+_o2u@VI zENboUTkKyPW*AZ)X3$l4<_!NlJQDZsNZbSajfga?EzcRz%Me?6quaI- zWTa{L&LemBi8SacBMmz%dl_bd#g+W1rPI^9myDV`YRRbWL0d;{A9Y~VlTm#P9V?rT zP8hv$w9V)Pqo0lr9({K7`O#&gqj3IFhV=3%ymPejd^_g-n0jOT8qQWGj*T*imC>GY zo>7Lam3{FZlkOQXE@fQWxOL+ujH@;N!8rTz>Ep+ZzvX#duZge6E~4XO7SAISGcs@+UsW z=5C9&nU`qrEKf8vs>t#k=zDKo68h>k-z3A_vKI4`47KbLrFzg?{7EDh@M8n4`=w z<~VbTInA75&NAni^UMY2B6Eqk%v@ovGS`^v%njxyV_`Hbut7A8?o7wH`PAprypZ%RZ!5(K%v!~c|>{<2#dx^cm zUSn^tx7ge4UABU~$39>mu}|1%>PRd8oFk{^oVX6$Fmbr(&UtY?IA5+8=f`D>nPQGO zk{!oRWGAuHS-ox+yFoXbovK@}o5#*&H|gTVjk?8bmbipn#wLndb{)G_w~6h}ZDqHy zp4@JBn{JCPhvbrhphxCzptU+#wa@9(h0>ktgICc|m?5ugNDeocvBcVw9$z0b^crGbV`IJv-;@`46>rH~@z$8#Xv;U_oAY+OJ>PiExX^2_;^{AymyujSYC8~9E97JeJQgWtvP z;rH_U`Gfos{uqCPKgFNn&+!-d!~A9bDu127i5ZA@_%gnNzsEn|AMsBxqwod)3;&w` zm4C;7;D6));6L+U_-{NT<7B){E;E+ZkeSJ9$t+~GWp!lrWDR7EWKCp(%u;48vz0ZM z*~?nWM46*ZBXg2D%Uon_WNl^bWUewdS$kOrSw~qXS!Y=nSy!36%tO{q)?MZ)^OAYX zddPfazOtUOUb5aYKbgNQKo%$qk_F2`WTCP!S&n{yK3AWo&({~|2kHy;gY-rEV*OzK z5dBd7F#T}-2>nR?DE(;t82woNIQ@A21pP$)B>iOl6g`G?>8I;w=u7l7^|SP|^>g%d z_4D-e^$YY1^^5e2^-J_i^~?0j^(*u%^{e!&^=tH6y-vSYzfQkiuh(zTZ`5znZ`Npb3AyG&cQic9PhJZ)oLavZ63={?l z#ljF_m@q;ZC5#cq2@`}#!W3beFhiIr%odglD}~j9R#+>n7d8l+ge}50VTZ6w*dy!} z_6rAv!@^PFxNuT9Eu0n33m1jU!d2nAa8ob{cZ4#bLbxY95FQCnglEDF;TPex@T>4n z_#pfy{2_c6z6jq0W6Uk6fjI?cm`hL#a|jw>CP^bzV^tGXQ_KWufjI!JF!tX8WByxX zCWo7qd<$N2qBjN8vv?N#kl zomQPuomHJv-BI0D{h|7#dZBu$`mFj>H9<8|HAyvDHAOX5HBB{LHD9$rwNSN4wOF-8 zwN$lCwN|xGwO*xHZBT7gZBlJk?NODg_N&gT4656zXR7C_UsPXIPFDS_;;iDW608!f zlB|-gQmj&~(yaPhrCViKWm;ufWm}E5+GV@jc8_hT?Oxk`w)<@l*dDY!WP8~5i0x6^ zW46a_PuQNcJ!N~^_KfXW+jF+(Z7Lo^l5#F}C) z(Ok3;6=H2sDb^9|iuJ_$Vgs?E*hp+FHW8bOf~XQLMJv%-v=ME^W@2;EPP7+Wh%Lod zq9{6uj$%KtJ=d8_5!1wUF;^@QM~I`uG2%FJf;dT>B2E)$h%?36;#_gQxKLayE)|!H zE5+5KR$MEt7dMET#4X}Bafi4|+#~K4_lpO`!{Sl#xOh@LEuIz6ixNWLcAwF5MPR~#CPIyixn0tEmm2qwpe4Kwa{6twOD7d-a>D&!D6GuCX3A$TP(I( zY_r&IvBP4g#V(887JKk>ta~l?S?sqsU~$mmki}t(BNj(3j#(VHIAL+h0zW;f_0V?L zdTD!Tdujc&0oovKh&D_cq3xsXtBuk2)5dEPwaMC4ZGUZsc7%46c8qqMc7k@2c8YeI zc7}GQcD8n|cD{C@)>>z)Yp%1`wbY3^N1c<-Mb}p6s%x+7sOzljs`Jow*LmrB=zMj( zbbh)3U63wB7p9BQ_0jd!#pwF!;&q9-WL>JRzb-?Ur7O}6)(z8*(2dfK(T&qh*3Hn( z)Xmk+*Dcg7)-Ba7*R9m8)@gNXbvtysblY`SRn}EDRkl^ls+w2XRoPdysA^f&s!FVK zsB)}oU8SzlR5?{SSGiQRscKu*uFAE_t*U($Yhduig9RMG&p+T34Qr4AIWPjozy#C) zroar;1hs%UumB2B8z?~?P#4q#^+5yB5HtdfK@-pv2tWlaffcX@Hoz7%1I>XQ*aEhK zZD2dt0d|62U^mzUO2J;R59|jAz(H^b90o_gQE&_#2PeQua0;9TXTVu-4x9%Uz(sHg zTn1ObRY0HQi~u9SC@>m~0b{{9Fdj?*6Tu`f8B76F!89-(%m5`|CYS|ggE?R>ma70`Wc2Rpz{unX)4dq64J3-*Ei-~c!X4wbbx zFnB7#0uB(s0~wG5BVY_nKn-9D%s@?03z!27pa8Xj64U{8K|N3(Gyn}jBhVN$0ZoAb zRKOBgmH+tNMOb_?#7sAQ-eBa65o64lFf|xc#*C@S)MCsT3r4}zW|T}FrY=*Dsn0ZE z8ZwQT#!M5YDI;Lkq$M7YTQfG&WA5g7tW2i^wZzmQ5f8u}@sODgYNW$hs)s%PJ4%O0 z{-3_lsZiB*tRBSKp6P(c{+;mPzY8AvyJLV7eN^N5-xl)1fTzE2J@63d-`oEFvj72@ zkQIc-NA!mQ=;NaZ{47-;CJJ9%L^ClUmg$G#M1TE}u4oLnipJOV(bCo*KgILoC%dX+ z{;t*O^e21%9{;Z)nlJmm$n&pd{-ZG65B=G&>a^T{vj^o#`Sbr9>hYs)1^>yu2L31U zKg#{EKYsLVFur&himzTUe482mm$D=N;?puCnNk0U84Yg?GnN_0jAte=n16w#;HNNC z|B+7f|DXN}`~On?ru~<#Ih~pDU*`Ge8JGO+O8w{&|9f^OGmDx1|H6L%_iFXC^v@Rf z*#bXX;Aac`Y=NIG@UsPew!qI8_}KzKTi|C4{A_`rE%37iezw5R7Wml$KU?5u3;cJt zz#L}o&!@rvKW>44@4LgFx&QBKfqDPtcgO#Co&C?VnMVhI{C%TCL5MUM8^4G;^{`wft-w-4E8)Hm=Q;h0YVO+lz zM)uoaY=1MhIctXz{w*-Z|0dH4%#l4`D+wJK!c0 zj#&cLTLc@4xdKsaUp5-^1!6H{AP#c|5-@8Z3G)V0FmoUca|hBfdmt0@2eL7PU;yS2 z(=V0VMep-`Vz%FDLv5VOy>{5*0U(T+;41`sfgRq9xVjjX;jOAa?>M=E`TdkixcPGChZ+9p4? zQ<%eW1~VAWvF9<1;UeZST*gd>tC-7h9kUs3Vm^ZbGaBw-PD2^i6{}z?F|*-5_V9px z2z>+|W0php-kxH%!%gNnc!AZoZZf~HuQ2oB4g0H<{ucUho`o6JWk{F|h| ze^2{^{e;;Pe`3DG*T3Zc20!F4;p%-<;nw-jz5Qn%OV@D6ybBp-UKnBSg$ZU~)Zk42 zwzbBcjBYgLUpJcbM>@4;Tusc~Fvsi-g%n?#Q(_iJUCiV7Yc9I4*392a{yqIis6OU@ zG{g*$#+U=r6th57n0sQyS#vfBH^H2cCRpLC31)`aVQxr^?;D*Z^22YzwZbNH4wyC4 z8uLap|44D-oZ-80ZKRmCT=mxOAL(@eO*mK1jcbp&CLOs>2vzU3I)(b3r9404TOd?j zizXcXo!_qi(CQNZk-BppTsN*e=ZW_4!m46)++z={E#`~W#d=|VF&d_S;fx>F8VkU> zI6+)6VnaYEN7uH)kMnYUu(n-aE}DzMDmneIPEI_Rz$J1?Seq;bYuzzS8rIE8=Q6Nv zP8OGqRdWVl?YlgzoKwIJ+H)Hn zT29BU<<@cQIX$<5+sJL=Hgj9Jt=u+lJGX<|$?f8Hb9=Z_ZZEfw>&fir4sZv#L)>BX z+#}pk?ihERJHeggPI0HXGu&D39Cx0(z+L1nahJI(+*R%xcb&Vz-Q;d@2JSX@hr7#_ zaphbESIOPu?sE^ghukCXG53Uf%01(rb1%4;+%McK?lt#@`;~jkz2n|r5J%FQsELL+5oh8; z+K{%S9dRXYq&?|CI+9MLGwDLQ5_kM=emBw`zme}n{@HW9i8tv%e26dUNqUjq#E~JiNwP>b z$-%00xmcGjpA=x`Qz02dib(PImE4A5meU9_l8hpw$r$|J|2Q(9Odu1h6*In7j25v$q~&{?=2>;ChZZTrV+;>lI;`*I2>sSIh~2N8V$;_($>^W_A66*tnm1@e>!CbH(8^hH7Uz!!B{vTGsbCXuUW0*Qv1&g|Wung8Mai2vu^kj7M}cE&n-O}MWA!Ag2Qe_Km0fDgoqdbE^3*4d*+{_9^5 z*7y7Ow}0-Tx~xBr@XxrvdUV}Dx&>nkl~xd}f#Kibyg3tr^Y4Uu{e6p+))kE4`(l65 zSZ6Q>TP)_##bFj*0_M@t@V~Pq{VjJg)(ninOuRJA#Y_LbhG7O)5X{0Ff;oR{_3Acm z!41ILg8#bJU~(~s@Bd-%I^d+J-S%?a?)2UV@$M+nq$`4SRFE#c_uhN&z4zXWbm<_{ zK|oLxv4Mbv-lT(wC~{wNAvZI-dvHgw{J-1$-bwQ0$(uLtWM+0}b`oS;r+EFH!ODYO zBfG`tlVWAkxJ{GLM)$}b;61~~>+c2LL#z(gOZ4uE%C5Zwz0m}$xCj{qANeU$1k@V( z>r3*X*7|~X8=FSfc}(#6`T<6NAWt9g(SY|CJW|m09G9RNp%{ZB6t($y&%F53g!g5r zeFMOHmZ70;0!JP?3I|4phNK_w!8N=i1^RYSSPvSn!y<=2r!WG%E$!Ad3cNc#9IWv=)`bp;90t~W9S*iI1RpU79R}XFhNgV1-H+QAzCj`8pH3bX?De|4PaQQy(tSp#NK zfTioeTnc#q!#w(I0P`#0^oL-k1?=g^^?xa7$36COeRm8;2-b!65-P>%k3jk6I1a=i zioA$Y4u(_M!>E4f7V_X{3)sup`!K&1tZofQ;&!mc_0F*Se-|iC_!DmYqrSs$@;EF8 zDMtrtKiv4o9>H;FKf)tV=A+ipxW(;53w8r);f{Y;0{b_^!*tiePas}YJRq`iij(ns z`Bda7*O{FG_tl-iL=1>L{V1SOp+=qw6X3lccMqN|4ciCzdx5~MJMGqstwbE0Lu{v( zR|{gn{-2HS|GCI>z;@U>hl_ad&X&)2J`x2yro;6g+I1oFBG7=t`Wxaf!zL)%YXQIU=sbW7p$TH{w$_ z<5S)vXn5qUMd6n*hnU(H=xs~pN*_G}*3h>N#C-Tp@U$f&u58-bjM;jV} zX!{_3|KY3CfXKh%v4`=g*!Yys@2>Aor+8H2^SS*9(_YV_a%Z1lHbijWo;`N@>rGWo z;ms$Mb9fQ{lzz+tQ*D7>`r~@)oZ$z6d9xz@F^U z`#AV_q@61OJQBP%!MuZomV4PxmwVp&AEz&={c&_XUEiLjmeb~o@i(-|xr!vtLTCxP zgE<3y7j&+XFct3GM>q`XaQc=|yJf+@xKJnv?w`Zo&}C7@N89H!-(od?b$<r~BVE+*RQ2#LhaQ}$7>&Zy}DF0~x82?!R zxVZfI_-l4T9(Wv{&~+)ej+Yl)>dhmr7fW2u8Aaaq{>`~3_3UZ9@jUwbB)dY(pT1SM zuJBsi44iiMHb!uqaEZf!?cf}aaoac_8V56ib>Q-Z<4~P14hgm{d`rmI@MV853N1-Y zi-}{wD?_lh(ET#usm_1!7c9B}glhbI5p?YgZWH~2n&^iixXg3;3i^KK_Lp;QgukyLzKpC!5qd=NujtW`nViFi-MyNk1uzO`}s66Y{RLCTlB_B z>1|TDxRs>T!CYJy#%^EW^pZ!T7(dZ_mKe90xETHy1MN|08$1^!uHN%tp>gCrGx~hv z!96;7{|;`w0gX1ag(dhOFF1xh$P|Hn>W*Ov{ZZyw7|EazsdH4D3$OZ9x zXrcdo|04fl{}TUF|1$q_{|f&H{*^&(V839WyJPHa6yy8i?il}P$nn0r6s1uMu>bfe zgxBK4=A5fKIx+@Ct_1hEpt6@LdjAHn zsxWH(@7g+^K&jw%(FmRqnFpLNa6o4dd?pzN%G?3(A^7|P1-L)ZlPz>Ua<`GtdrQxX zf9T%?)?Q{JHiH$CxB9n%wUT%EcY+m?cY_t0_W*paf1m#o|9<}g|EK=X{0IG?`@irX z@_*?+4AxNo8m!a&Em)(Oi8umQX#O6o(0m-M&iq5%D$hUrPlA=1PlI)z&-%~#&x2K& zFM<`BFN4*XulTR}ulcY0Z}@Ne6Sn>qST*`iT=}n$VTG%YYN3+5{@?uf{J#S$@B9Do z|LK3=|I7c-9}8wsPZ5X+qzps`{DDA#2#^6PKnIur8{h(bKnREdDIf=wfEv&OdcX*n z0kkij^OTb>5@7}4+g0AOXURGH9lk#W|5ceO!VaVgyc9?scsURih<>WoM)L;>1PTTU z1qy@pN{a@Hc~%}R3DzDh9Vinh3sxd7AGZQ=#XzM%p+`8Td;;-`#^_4$3Uk*=RlW0SFlEQ zcd)*8Pq5l{??4~0;&wl<=JtTVK(N;K;J}c$^|prxMg&F%MuAng$AERW#|6fNb+;!5 zCIu!3rUa%2rh#?1X9Q*jW(8&k<^<*j<^|@1l>!$A-Un-TF9xf2FAXdMt8}jjd=OX( z*5zIe*6Usi*6UsmR_)#x_%Hy+!6vZ%D6l!OC2ke(?SUO&74Kbft9kDU><#P#D|qh* z>vew$*6}_F*7N=%a47I);4oOV`|G&1zP|%&dLIpZA2=2`9yk&BA@F11r@+sFlYvu# z(}6RAvw?Gg^MMP2i-Ajl%Yk14R{~c9*8_7Es>5$PrO28ATkn}h|EM5;#C5UpR7bSB0G_T$Vudi%jYIu zBVH%+5N{B9iG0MHM1GTg2PMJ4A7!1o19Wk|;%#Cdv?HiE>1F z;yt1QQIV)bR3@qrRf%du^*DVsh?+z#qBc>7s2i8BN7N@85Dke&L}Q`}(G+0KfHViv z0!T}u715e#L$oE@5$%Z%L`R|%(V6H%bS1hG-H9GVPofvmo9ILICHfKli2=kwVh}Ny z7(xssh7rR-eV=axF_IWXj3&kqV~KIZcwz!Ek(fkGCZ-TmiD|@iVg@mjm_^Jc<`8p< zdBl8T0kM#HpIAgJCYBIOiDkrcVg>O5v65IttR~hFYl(HldSU~yk@%3?+f%4HLL$V|Xwm3#_6o5DWNr4ne$|sRBsgNqEkveIRWx%^cFqotT%4{+f z*uDpr7NC4DfmCWT2Us2gX?U4r!5jHeWHcEAO1z;o$Rl2wpt1G8>tl%t7WPbCJ2p*T~n&Jmec>UNRr~CYhfsKo%qm zkznaSvM5=Md<)ckn|y~XPL?3wB}EO=IjDd)Swfb5C5Ms2$r0p8auhk597B#J$C2a73FJg_5;>WiLQW;8k<-Z;N-!zK?)?n}KYJL(!AKt>m`&T`?Kf|~DV1RkJ-AnEz_mQ7G+7J8510eq?`5D-v8hc3|EDnNr7=d+QIg0m^2g%RL zFUUiWYC!x;@-Se0MSdN}#JXU8RPUQd_+Ii`kot~1LLLS2_vA71_@j~&E^W9y)V{Ob zOa4IqNd5$vKa(fpH6q(ik*CQsI*HAs_FN#KrJvL#=o{ z1#{tB$0ZKm&4ab@QS9i(Ex4IaN~5=&pTv4nxnt$yuQlOHox1K+IA(ZEr8G*X49cV| z%BE6LFHxzfm#HW!nu?*)P-&@jRC?+aDg%{~%0y+RvQV#5S*dJPb}9#zlgdTqre337 zr}9v5P)5$MU|$?P-UrdRC($> zssdG!szg<$s!&y_YE*Tq233=)Mb)P2P<5$#RDG%e)sSjLHKv+SO{r#7bE*Z^l4?b@ zrrJ<#sdiL*ssq)L>O^&>x=>xIZd7-w2i246MfIloP<^R>RDWs!HIN!a4W@=rL#biZ zaB2iKk{U&grp8cXsd3bJY63NpnnX>erchIP;)8wI}VReyS<*A ze$gI4-xIv8gu}dy=b3ZPSm-+d(ha|DJwCY40f;#-{w$Bm-1Q*>^X^)qEO!l@4y}>6 zdbqwfM!ro*XJT-uFEKpK!R+EGG2-~vNhMXQqbpnrw;8T16q`?lVqRoEg@PCTcjp#7 z>J|R}5-xuHneg$YFRJ%@N%$Qcem8>_qZHao6uQR4Z|U$`7UVcreVBuJSc=j}LvX*H z8sSs_j_+g1R{T>Q2p$#i`j8kbn3LFiIQ`zbsC~qPX?Gsx!sop@o}6>^K%K!yO>iFm z-wO&lMx7%LA9*OoN2wbPw#0o5!?IAW!*H~sU)s=SXaTgu&B9u+KI}7h+wd134p@)7 z+?|H)E{r?BxUCCLk2G`)ME2&k~YHAI&mRd)xr#4U< zsSl}5)JN22Y74cM+D2`sc2GO1UDR&sV`>kzm)b{tLhYvxP@httQ3t8dsV}HQ)R)v@ z>MQDN>Kp1?>O1NPb(He?zNd~+$Eg$457dv;Pt?!UN$M1JnmR+BrOr|3sSDIa>JoLC z`h~heU8Sy3*Qp!SP3jhPo4P~&O5LS?qwZ0^Q}?Mqs6VL()L+y?Di%D1NC76vOi4%5 ze%j{?&;(7=6iw3%&C(pr(*iBh5-rmTtu+hB`BD*7clHT^OjMMu*y zbQ(G>osLdVzd~oAGt!yp%ybs|RXQu3jm}QzpmWl>=-l*c^y_pU`VBfSosWK#&QBMh z3(|$?!gLY3C|!(xi+-Dahb~T+px>oS(xvFqbQ!uVU5+kKzeiV~E7Fzd%5)XFDqW4P zPS>Do(zWQ?bRD`bU5~C$H=rBRjp)X76S^tgjBZZ1pj*LE8UImPWPaD(!J>3bRW7e-H+~151 zWs)DJM$jYaQS@kf3_X?}M~|l`&=cuN^kjMpJ(ZqDPp4G$bH^kRAmy_8-?FQ-?~AJ8l5RrG4m#u`^UYva;M{f7qp|KhU*+)EU%qaXjKIGkfA zDZ#59=DfB4{ycsz^t3S?1MrC)dMbx=2*dvjrhF(x`M}daz=vDRhjH+?CCEX6j=(8* z44)?AJWO%qWH1*0nGZfsCM9;x(Cg`>)cfbS8(hbw*Uua259v+xNAzZT3%!-zMsKHg z&^zf}^ltiNdJnyq-ba5z@23yYpVFVv2kFo0FX%(`m-J!!EBb5t8~R)NJNgKHl>VMR zMjxk7&_B>W(m&BZ(vnSjLoECUSd)+FEde0G!w(5VbU_`nDopmOa>++lZna9WMN)qvNGA2 z>`V?OCzFfG&Ai6E&g5ac ziYd*MVahV)nDWefOa-PQQ;Dg}RAH(z)tKr`4W=eji>b}jVd^sVnEFfurXkaaY0NZX znljCp=1dEwCDV#&&9q_KGVPf5Ob4bT(~0TKbYZ$O-I(r752h#6i|NhuVfr%tnEuQF zW*{?&8O#h}hBCvL;mim)8EKL~35_|dXe5JEZx84W_g z$PHw07{e5f%otH9ax62J8SkG3G@~#Mu*WkKn28MhzyD-E{D$W~V@_i5*>o~9g_+7s zW2Q4Rn3>EhW;Qd2naj*$<}(YJh0OcRB4#nOgjvcgW0o^3m=8d`mCPz;HM53U%dCsn zGCXoUvw_*je8_BKK4LaATbQlPHfB4sgW1XKVs^WDxZQ-~kK@?TYkQcz%s%E5W?>>rHY1yf z&CF(DUuCnh+1TuC4mKy7i_Oix#=g$xVc%f$viaCI+5Bt)wjf)GEzA~Si?YSox7fGY zci7@=3HDvKBwLCt&6Z)yvgO$F?0aklwjx`Jt;|+otFqPD>TC_RCR>ZG&DLS-vh~>d zz&lI9EDsIXhHN9YG24V~$~I%0vn|+`Y%8`k+lFn+KAm?QuP1bTCKY!ydQ(rbuN~W- z?Z9?qJF%VFE^Jq}8{3`j!S-Z(vAx+oY+tq?+n*i44rB+hgV`bMP<9wQoE^cAWJj^1 z*)hOBW7%=+cyoyE>(=dg3xdF*_40lScWpIyW*W|y!_ z*=6iG|CiWwCGrNV|%5Gz~vpd+G>@IdU z`!TzR-OKJ{KVkQ?2iQ;9&)9?P=j<2kA@)o5F#8qzHTw?!s%dxkyBo@19ro@Xzx7uiefW%d{L3VW5k#$IP{us7LT>}~cA`zw2w z{f)iH{?6WK|6u=QAFzM157}7og(n3U!KLIPIX@TR2#(|^j^-GSup6ow+VtSFRh^o$JB%N*8^8_Z z262PAA>2@I7&n|7!Hwibaih60+*ocLH=dioP2?tVlesC}RBjqKotweU7)_CT@+o{tB-S7ww;>UI8k^Pf-8lC}ID9tbyno)t^H-GARZ+KIO*nVIZ? z7v+I};`|(XG(XF|@Njj(O||#{-+xTVd$Yj(85j~O$2fkc)g8mK(4K@x8uLx~rhGHL zIp2bB$+zNL^KJOHd^^59-+}MQcj7zqUHGniH@-XHgYU`r;(POb_`ZBUzCS;JAIJ~l z2lGStq5Lp@I6s0P$&cbk^JDn2{5XC*KLLEV#qUOd_f6v8pm0*)QBuT2eiA>KpTbY& zr}5MI8T?Fs7C)Px!_VdC@$>lw{6hYHei6TzU&1ftm+{N_75oSMN`4i;nqR|1P2qg} zPhn`j7w;C@h-QO9+u*%`*MUo19K1RmTxBl1Z!N!$U(avgH}W6yoA{6T&HNUAE5D83 z&hOyi^R}J*E`B%vF~5i3%kSeq;rH_g_)q!I_=EiC{1^No{!9Ka{}ul={|)~w{~dpX zKgxg4ALEbnC-@)uANim7pZSygDgHEnhCj=n24{{xbgye}%uwU*oUyH~5?U zE&euthyRto%m2pT_KbK2^{JT`&YwumoF3CA=i07G4&jglHi~NF$^b z(h2E>SA+~gMj?}sS;!*1DuDOpgls}~A%~Dt$R*?!UIWNK`Kg@Zbs4EJ$ zF2ETBu+MM|-w1b~S8*Db!`L~SC7g2Gh2AnB9yfCbtdDiNV>dr3Y3F@^^!6ESD=GEy ziU5utlo|$RRDiaIer7~I{p__!8*U+Kb|#e#XJ){&F`)Sw@GK20{b-Mb+xmR79=rcx z9Xx{&^c@rb#y_^Na*ELT6J|czC$Q#=xa;rUd$`v)4&8&u($Mn_^bcga$0bff9QzCR zG@;o0s|B8cmV*AHIb#y4^E`1l?*cqB(QFJb+~?i3np(Cg4o zkUI;c!_VR7t_N*+Qr>H)n;klyeDVLc!T-B?x;Ss#_1CG(3i*ULh5SMR5AL-L&`fA9v=CYft%TM>8=KzKBHyd?W2ya&Rg$>Sy2 zFX2599!(xE$$km%f$(VZc=>PpCA{?sqsjX_yl>pUsom+MtxJV#zW5cSa7*KaVZU%d_*D2zI4FEBd?6eXz7!4%UkP6e-w59d-w8*Aqr&&XG2ysyLij=WQTR#t zSvV=25>5+egtNjq;k^m+(-C6?|d}F+xl!Mv8thAQB=eQX(xfA}ewtFAAb4N}?<(qAF^lE*hdK zTB0qc5?>Nii!X~&Vzd||rV-PM>BRKnD`EyQqnJs|EM^g36|;)j#O&fjA%~b#%q8X) zUlU&!^N4SV*M+=dKJiU4zgR#lC>9b6i$%nuVlnY8@on)PvA9@5d{-!>SeQ^=M7Xw)mSH4tS78ehXTrRE#cSeq@rHO)yajByE#47-6=#Td#oxqx;_u>p@elD&@qzf4_)v@$ebP=b zg|thIkWxyKl3xl)GsP_eA;IZaVuh+AEiux5@Z!n=@E3nx5~SH+_(+m0DUvG95j9Dd z49S!%$(D|Ysic>r^kQo1xcIUZB}GdyQX1)JF|D*jOedWbuL|j71T`0xib-!tZ%gmE7{#R$(z{YgsgzV&DkGJZ%1Py=_oNC^MX8chS*jvcm8wbA zr5aLAsg_h*sw35v>Vewzr3O+%sgcweq?-U~Dm4S!=28o=Z7H>qT1#!Dwo*H(z0^VK zD0PxLOI@U{Qa7o))I;hi^^$r^eWbopKdHYoKpH3wk_Jmdq@mIAerOgboiE`1>#lD?D1XMrbV@ocosrH;=cMz}1?i%6NxCfkB3+TLO4p?8(hcdRbW6G|-I0Ek?n=K&_oUyY z`_doMpV9;AFX^EaEBWLUa)g{xj+Fg!K>iC%2~EnBOv{YS%ACy0f-K6CEX#_l%9^ap zhHT1~Y|E+Sm*mv)%W{+)Eyu`d#vcta3IvyPQMLDd&=N z%dg3=%X#EC$TtF@;7m^FhMdYG#G5Ia|ZTTI!xLiVhS1u`+l1s~F;l55L#xu4u$9v}~t2g!rw zA@Wdpm^@q_A&-qGCJYJq4Pn0LgljSM$RC$^_U7jJ&lxNAa+SFyk6cQZL?R(YGe zUEU$@ly}Ly<&Wh(@?LqL{E56@J|KT8eya*luya0SCyS+QgSP=DX%MelsA;TN85m7dMG`WUP^DJ zkJ4A^r@&*gzcN4>s0>mDD?^l_$}nZPGC~=tj8aA`W0bMVIAy#tL7AvbQYI@?l&Q)z zWx6s$nW@ZDW-D`)xyn3czOq1BsJyQ%QWh&ql%>itWx29K`9N8ztWs7hYm~LhI%U1G zLD{H$7}wsD&j*QTY*Ic_HY;0{t;#lKyRt*ssq9jAD<3O+6f_SBTInm{?OtV{@`!K3Bf**y#P&5uSA##jxy<@}+WE`3i)um2Z@9mG6`z%2DNe<(P6@IidWZ z{HXk-{H&Z*PATvoTBnsW%GpQZoC3pn<$`h%w0KFmto))}QLZZ2llp3wZsA<%+YC1K&`ih!C&8TKlGpkwD zSJkX)HZ{ANL(Qq?Qgf@XsjsVf)Hl?;YCiQ%HNRRwEvOb!3#&!cqG~bqE%j~n9ksYx zLVZ^)sg_bpt7X)(YB{yM`kq=rt*BN~E2~x1s%ka0x>`f6sn$|!t98`6YCW~S+CXin zHc}g_P1L4pGqt(eLT#zGQd_HS)V69nwY}Ow?WlHAJF8vPu4*^6yV^tTsrFKPt9{hI zYCpBVIzSz$4pIlJL)4+_Fm<>(0{FuRW={9{MyjLK(drm=tU68|uTD@Ws*}{o>J)XV zI!&Ff&QNEnv((w@9CfZbPo1wWP#3E2tBcgd>JoLSx=dZJu24TvSE{Sj)#@5`t-4NK zuWnE`svoMG)Q{B7>K1jYx=r1#?ofBCyVTw4$Lbz+uewkDMBT3*P(M{aQxB@2t6!*x z)GyV;>R0O5>No1Q>UZi9^{D#2dQ3g8o=|^Ke^h@`e^yVbr_|Hx8TG7sPCc()P%o;N z)XVBG>J{~>dQH8q-cWCM3WH9-?KNs~22Q#DP~HA6EsOS839+Dlq$?PV=Wi`HVaG+J6M zot9pEMa!UN)G}$AwJh4JT2?KamR-xC<SYxe;)>LbzHP>2bEgx}ED|p*Vg8{vJ?_M9x z`>$nK0>A&`|A~4_VVQ%Vf33iL!unvTQwQg3!hcimvzUFL1Y=^4@8l7_IoPhf4l!Q+~z7xDT2Y+1Z@qWz| z(N24sfVDoZ<;0ZX^99xy96wn{=nBOXUH|rea{a_JobRfRmF}}*Qq%BX$Vsh}5Fc9< zTt34!zYgX+&$zwTLF=e>(mHEhw60n=t-IDk>#6n9dTV{OzFI%6zcxS{s14EvYeTf5 z+AwXnHbNVzjnYPIW3;i_IBmQ(L7S*e(k5$Dw5i%OZMrr?o2kvxW@~e_x!OE!zP3PH zsJ*W((iUq=w58fIZMn8W`#@W%tbw5{4UZM(KZ z+o|o+62Et!jT!F9bdL4#rEoul{=fc==il7BwU4zu+Fos+_KCJ%JD`24eWo4MKG(j` z4ryO%hqbS?ueEQqZ?*5VBid2zd+nHZTsxutp#7-*r2VX&)J|!qwKLk;_-}IOwDZ~p z?V@%`yR7}9UD2*;*R<=}4eh3OOS`Sz(SFtLYQJgswBNP++8^4V+5_z`?V%Q{`ScWe zgq~85)ctxuCv-f9p3Q5awXt3t2ao3$mB;OQW9OTV7f;S%4}|VPh&baN9RqN$A!hLY zbJ&=J8E!53dnm#%1IO-C)DA9zF=_#)oSehK^|7s9OM`PxJRJV#Axrhw{AXe9ogd4a#C(KOgkmX zsl<3-a3l;B;{@^t0}sL+4yXj@Fc;;WvWky1Kust(Da@(}G(!|w1=~S+T;s{H&sRPY zEGy^<*b;ZExId^L?k!j!VGF!DjJow;4E4p?dToO_r|iX~uqBU= z;XcKlhjuu2KE9r})TxF0MaAj$vYwoCJW>A9XmF6fJLT+uwAayiN@$D504{Y#1We(6 z4~yuom_y9*^Xsk%>nr=^_IlD|=#BF6d+q7!qYdUdNKVi{cZgny|`XNe^)Q5m(ok?W%ROoIla98o?bz( zs8`Y}>s9osdNsYeUPG^`*V1e2b@aM=J-xo(KyRow(i`hd^rm_hJ^TkCD~ zwt73gz1|_HefKf&_j)_IwPX)GUk`NDJL;W);DFMd0ESbj1mztRF`ln2|3z(Zrij01 z1|0ND-90-Tx!@?~Eia?bY_A`_t%|NN``CHs4#v`xN%MkKPyL z`|17l@o{sH;C>vy(1vN8JTdH9XBe`xN!Rlr_t<9i0$(^Pu(A%!aerJiRpuPPME~h z7#=t3@wi7vz)C;t7w#jB-M=@zR{ecBZ*O2vo!&YrFAL|wmwS(A%zZI296|2$3mjRq zJ@fqFG2@Qi-bLdd&b1V5A!I=e$HCA1XR6G=nXnY<-=lx;&aD9Y6QXi#{j=NgIdAU%};lBxj`+)oGj)OVL`KR~5 zi`wrq|rY@gn=0tUK8Q&)WkN^-20_SYJH8qR$r&D*Ei@J^$+z;`bYX^eT%+T z-==TZcj!CyUHWeQV||alSKp_9qVLxa=%4DJ=?C@C^)K{8`j`4){VV-zJ>2hm{GUuG zPN>)LAN$Flf6@cqyBL2*&fDA2^MCN~w@^mnk#FMf2cfG4ddiHiiNhkl1^3CEZ#`bi zP!3-+-0|b@bKp``AKv$Q7Oz4r*xtm%KA&?HM0}J-TV&I}Y5Od`Nv@mhf&Y&l_%|KD z&uWWzwUGa{oDaO)hC_Hy{eK+4|HeLt-#f|Zi}t{a9Sbko`egmj>VX%#|C6fyS$mUQ zKdBx_>K=M_zSqKM)A#uI@8Ff++uDCG_bmQ_z0CvuZ;e8DUp$Nc#MJdZlf~b~)c837 z@M?q*3AcB`-QV*0oI6`E_4rvQyjD7Gc=3dC4*!2MmH2x(FPa(Nzxbad=sD8!-iB|} zLGc|QxPDUj;Bfz$)U0Pb!@cOenymky@<8Io<3D9xa=U-02NE6&(29ghlS}^BJ&@4% z9_LN&a11zVAnuNX(=d-hI1RxVt{sXa#A(m@S8p)a$vb-u+kh=`Y9o$Q2dA96FojWf z4DqGl{~dWEW<*v1bLheFU;Px1pNk8n;7n7&7@D&S<4%mYFpnhMELE_~8$uDM9JcJu zAq1n2jfmyoPOT@WoLaa&q!-~%8*UW0hcU>7X^i7m5r#@J24hsuox&VPi{nMCHxxm7 z!fz4VTjs{XjZrTf=G<1JG_o|b1l7fSn1e02Tl8voGrc8=&3&gI(V>21(NX<-{g{4S zKcWAi|ET|@|E!~5x~QF#`YHXienvm5pVRSCiev9QrI{k2M(39*EOlE1^`SPAW}J37 zh=F-n6Jp~!ICoyZpkLH4>6i6i^eg&R-O&>2Vbrd}z&aimhug~uV`xUZe|C%fh32D8 z*wW;Z7vX__cF!lZ^-vEi0skfR1~~VmH-y$oMz9C2>21i$_V4Kee`vYU#AD=Iw{`h>E0n^)#&-c&v2aW@u z503-bkKl3O^LfXC&-XOrAh;c8y!m{$AHCi4yxRFY#`WKI{QO<*Jo|C#9oPT-ar&(1 zoy7I0uu&xL=r3v%GkTM68E+f!7{!ee#=AyIqm)tFC}Wg0${FR2_lycgMWd2Y*{EVv zHL4lajT%Nxqn1(IsAJSM>KXNo21Y}pk!)m}Sg1<`{F0dB%LBC%M2_XuNMMG8P+4 zjHSjhW4W=y_yDxI(pY7zHrD)&ZLW=P^MBj7PCwTf>*L1K24kb~p|Q#M$k=RbF}51p zjP1s=U^|SR#x7&G@v*VT*lX-FJ~8$i_zB0~6Bh@+vtal;TElJOc)+9I;5hG%QK|EM z5?%ol{y6qO>EFQ#>-cw+;NPk!cE2y{Epc+tZYKv*DDOu99eqo-;>jMsb8|gDcIJk{ z^L071Zs9q%VC*h+a9rZF0c*Q+n2T}Tp2I<@;1=8{OyhEt!a1)th++w@@901!$S%x6 z`W#O9JVtTs=x`9M5w`+kxUYg|!=rWYovJ7A&!jRA7@r!S83&EejW3Kt#+Sxn<16E9 z;~V2!<2&Psan$(UIA$C-P8dHJKN>$7KN}~FQ^slIjB(aDXPh@K7#EF8#%1FdTgGkUj`6E;*Z9r2XZ&v5H~ujGG#(g#84rzE!)K;2Bg~X$r0F*UCSj5$ zWzwemjN*Pva$sa=zp1` z`(SieLmPetPdG6V2kT#0BNWFEOF)7exJ{4zqfs4zt5Ku)WQAFVmkeY z?R)Eo_WzN=AbQozYGwnPvYR=~oMtXFH%Px`zHa6*-!Su<`OG)X{AK~OpjpT)Y!)$# zn#Ihw%(vsLb#%PARF%jokA1$I)H`sA<>MYDmj5iggjaKUekHg+!SUnmhU_OXo~``x zwY{amw!{28W^uEG`L0>gEM=B9%a~=&a%OoG&Z&ji@0k_Mie@FVvRTEfYF0C=n>Eau zW-YU}S;wqv)-&sy4a|mSBeSvD#B6FdGn<<&%$8;=v$fgAYzsztJF~sn!R%;uGCP}H z%&ulPv%A^D>}mEgdz*dCzGgqOzd67hXbv(5n?uZ@<}h=(Il@fMk2FV_qs=kq3KiB*Dl)H6r?nPMjg^9z9(4JJCxW6zC4T;xw$V36xfIdw~pW|=Dz)Vzk!845o zM>n=4IsWH8;OrGA^<=9YE*vLM=Kr&dvc6{rkckA+|QJrv@TbsB1>2lDoaNSH4BOOi-mL)YHeMznLIKI2j?li6w zY^A#|nB(oE(?h5HMW)%r~fIJg|EKR9;I%rNEkKRlNO_Zf10K5s3k3nAY6xD6O%J#H*Cjag40hw2PP zo?iQtYdSrBGWSI=y#J3+&i%VR@cc)>-`C&pw*P(YC%5#xJplLU^VXTHFWCeCH4lV8 zv;8;FFU`Z|SLWB|H|84gTk|{fhVP2j*YqLo?R&St+atE2R}_`K^FOfN)17Ey|)T#@ZyZ7H9F+C{eIPOR{83 zu~bX5bjz?z%d%`MmGzR9+IrcFvZAdRD~*-bN@u0FUa>M*89~ToWwx?d*M(QDtX4KF zyOqPrY2~tVTie9ftkl1QLC8smi4yvj#b<$VZCc@ z7D`&BtkNKqvC4u_&MI%cXH~E&T9vHIRu!wNRn4ky)v#(>+r?T|ZL5w|*NPSETJ@}* zVtuQD)zE5W?Gon*jjbkDQ>&TP+-hO9v|3rMtu|I$tDV)}>R@%WI$52qE>>5oo7LUw zVeJ-sTD`2^Rv)Xc)z8`^_O}LD1Fb>UU~7mq)EZ`O5eR9xHNqNcjj~2tW2~{(IBTys z-kM-dv?f`(q{-G4YpONPnr_XoW?HkX+14Cut~Jk^Z^a4=tcBM5)*@@MwZvL#Ewh$e zE36N!ePUH{rM1dhZLP7^TI;O!)&`4_Hd-HAo2-wl&DIuctF_HyrR~-ZYp1o#+HHMo z?XmV+`>ao_{ni1Cmp-*VvkqFHTVGg*tS_y@)>qco);A!0Ykg;l(h=*Z^}Th>I&Ph? zez0x{KUzOoKU*iQQ`TwgjHOFwt#j6S>w@;>6E3KW*PH(?r zXRtHcne5DV7W-8@tDVhGDQ35G*g5T7c5eGM`$zG0JCFT_o!8E1ziH>U3)ltiLUv)h zh+Wh!X1`^>ZNFm|w@cXX+WUo)b}75GUB)hJm$Rd#^7ean1-qhM$*ycyv8&qE?CN$6 zyQW>su5H(`>)Q3~`gQ}mp`BiOMQUU>wwu^Z?Phj!yM^7-Ze_Q&+t_XGc6J7-z1_j? zXm_$Z+gKq9%+xVN84lU ztWs8KtUb;iZ%?o%+LP?b_7r=nJ?i-*;qkut-!Cl`ksSV)J@BLvJYGl+|6e`e9viW) zj}NR0059$W5EmRvgS)cfaPko@1@SR12IF9!0H{X}#vkbk;e$5}AU^~LeE6bFupSZE z4>2W3KgO9bxC*dvI3Grj1oT7S1nY-5#AqOHzu|VdFgV1*@!@TAD8YK5es8)=?3<{spixU8Yk}(J;0S2XAkbVkaPzDC^X@EhQ5QH-TgK{wlX8{JKRFItvqnzia|HT)q#DPv9{>l=^Y{ z-S{$qFY`yl+3&`$(6O;s=m{bG<$%B3e=%-+y7?;rzQR8@gdfR(k;~){(Z3S#SNc=M zjT5(?RRCY*uM&c<2KZ|K;Sl|60KUdQB!s^f;A{QcL-2I~U*}ii_OH9$^#EV*?;K+1 z27qty`$GD=5#SsBSwrwm0N>mP( zw#MlRJx`+k!s`nMdToP|j6cv1@Kts1`4;ifI2V1XqA|Nl0P_8D;~7pDfN{i!*R)_g z@O+*M;KA2l7F_SJ{?zgMksfGIxa$|x9S(;WW93`&Z)@qqOgjxGu?C|Nvs zY-}-rLE$|3ThZ?T3`)AV;}q*D9{n!Bpm^IY8C@D+P`r4V=yCvqlA42l#(K&}R{$6k zFTY}RWq?8P;#H!n0St;4uO3|!U{Jhxt>`)cgHp(2e{5`BfI;!{>qR#J7!)twFuF0o zpm^~n(ait`#fvwOZV50bLp=R$72O74Pzrkd+%~#Bz@WV0!DC}P01Qe_58g4lGr*vD z+wBtF4Pa2bc=za@0E6PidqwvF7?ksI=Ow&f`bPH$7!)r*Hg*8Opdj2iPY#TR82rHf zi}Aq#%@l>ijSmHQW`IL+zah!DlHrpD*?69(+9DX9Ie&MP=|@k0t^2C%|$> zm5bZ&*q-SC&joNOZvISw=LQ%QH$EHSuK^5-8=njC*8v8_jn4;o9)RVED(bO67JS|S zI21R3A>ii)7!)_Y2;lhu2E~mp0r;B$gW|@Q0X#pz@<(m*^mhfo3jn-8RB?}=R|32s zzzasb>A_>crx3skMZM<1R|9@wfJ1S&yB6R@00za4uLpQhfI)HN8v$MnV8x>Dc&_7{ z0R9%hp}6_6;PW=Xpt$kPfd3A_pg6aFxFw>ldd~CvqW1$X6tDgRfd4MwLvic>Ec$c6h2rIZ0r({W7mAzzW%O5o3&qR- z8t_X2E)+Na+vp>J3&qPn3izb~7mAyIEcyiCLh zABtQ5wdfmw3&qR73HTKN7mAyIJNj3^h2rJk1^kMD3&qX97kwXap?LX!0DdLFh2rKv zh<*sTP`vzDz^@FrP~7|!F)34kvnLQQKQbmZwhG`vaq|N)B;Z2v@+rWt3b;_*d?tni zTqs^X5BSvp7mAxN#>jvR#miR!zdGPTar41%O~8fX<-@$JB60Ke7!z=zc==XLY;27v zByN7HnACs^#mj#g@M{7-6gNLQCJo?1@$%CGel5U-;^wE1$pE-ey!?!SUmI|txcQl5 zUIiuazJ!+#^XT`Wn=ksZ#pD3Gp}6^?FDKAaCklyMf9{yq0T+s!57v7C{JMY-#m&zf z^CsXz@$&Nnem%g20{Qs*2zmJ9)>AO1Fwg{q<`;{38*rg``R@RJ1Hgyk z=9h>m3Aj+a{8E755OAS5e9>1XrX1ixaq~rAdBAT3xKJFv5A2T$fD6UVhdB5)8HL2n zuNYGqaG`klRbpaen*cr(H@{j;4Zwxs<<|uKrhp5@&95C(7jU6?`SoJJw^+c10{Lja zh`t6f4L}L{xb=XZ0v%A?eAKVzQL(X5-2BEdO#v6mT+jKoSxjtf3&3p=wa|0EZ4uK7 zaG`khw+8%{fDgs3zimu=z=h)FcL4lWfD6UVkB#jFxKO-&m~S10#Le#<(-m-`c=_F8 zz_)q8hvMe!m_?-bCid+Ben7M!p#mk=u_+0=OiklxBy8v*Zc=<5jH42HF zzc6MI;6gd-v43$4_%#Li-J*_r>|YwQ9B`rh=;5yb{O*9?J?f-~zcOYu;6m}*vj*^c z06rAAJ?mmN04@|Se|M5BN~r{O@Cq11=OV{{-L<09+`LkI#oPc+!LJH@@xp-VW;z z1Y9U?{a}0m-B5z@p8y8Mtsk8~2SvrkLhGcF2T!GL)6+y`7J!T28l zgA%G|d{k^K6tA8?0T+rFe-QH!U{K1(`6qrq#(*b)K*xlr{y~0A5drSe0`ckr&pZJJ zB^XZ$FenI**AMa&qmX#*j09XLq5MgJ55>#(11^;Gara@sP<-@UEC4Vlp?W3*9Z;Yi zbYC5v#~>Gey!r{C14^i#DN*1lBM``U_iHM^pg4L&ADM;*I_QXLk8rpYKnn20o&osu zC)xR{Uh_rvG;-vd*Qq9jbqMp=G-6q|6kwx^YZe^VIt~eGgvGb2ZKM6f?=MSqGj+WT|MD&x<687=!cyh(b z_&52V!kp6R)QZzEAFLq8ooar-MOu0%_0e---2 z(Gs`6rs6uZ#P-*tpMjRR{S6g2p(VDz8T}JziQC^=aXVUK`#aFjL`&TMu8Mom65EeM z|0G)C_Tww=M@ww~0Q#rU61RV-;$gJJ_K%>Sg_gMeqZO0U65CHf|1?_S_K#IeM@ww~ zIQnPM61RV%;z_i`_D`Xojh49m(-pJP65BtE{#mrd?Vqcdi!61RV;;uW;S z_Vds`hnBeg{ECHWiS1uQ|2$ga_ODmGftJ{Q3HrHciQ6x&SdNz1eg*m$&=R-DUyPt7 zw&y>;*eQ?Ozg_VTT4MWmEAR>odgAstS3^sD|2`bCbNJ6s;4z2TIUk@U$^PX|>(&vs z|FGg?w4{+a4u4XCTMO+gol4Ac__K;H(2^eJb&N03&qF`2)0XCSjIS%cMN91VtU>=O zdg5-+_Z2^)CAR+w{d}~{}CMV{l{>`_n*KK-+u~6eE%67@%`s; z#P?so5#N6aM|}Sk9P$0vaK!iDz!Ben3rBpv29EgtJ2>L|@8O8=e}E&t{}GP({wFx% z`?YYy_dmlC-~R&lOQ%|M++K&DU*U=0{{~0s@u!A3e{UQ$!ZYRg$Mr4i@1gmB<9hzZ zb^PP{mcq9Zb6N|Z6`p^w9RIkN%fC#He`4?dJz?y5E)lo2ywd?(Mxw@dyN(fl?Qw!bm{*3)ih-19HS;~%$gCwzG-uJh}Vi9U`ak&}ci^ZHe;kydoMflvmzJXW=-*5hJpTA#JIQJKK z|Ev_ga6js9=2VHkb7kSb$j|@&-|ehPt?Y>BIURfaJ10tPe^LGY<;#T6&-p6oc`VEy z4{NbSB>8ypdnded4|qH&^f|O7+5dr-#K#{VhwJJ~*8ZF>_%|du=g&@fr60s|_&Rgf zN|yN_diVL^U!8D90(}2B9P#}>aD+a7A6YlKotxs{kbIwiyojRByzPnCr$^-$Xo;P_ zWxb)z`?&8}*$e-MSig1Uws6Gy?J9SGBi8R&xicKGewWJK;E46RSMCW%@;+YAy()X} zO2;3rPrRM@3qZ7Fj5!~~-{!y(zwZl2eBTd__`W|Jnd8kL07v|OARPI@>-UEveqRGe zsvFtsH3*LQ{Q+>q_my~zB)&foE%E(9aK!fq!`0($&tQ1s_lLld`|IELSGZjcg(H4H z1djOrFgS9xce#hd5x+kIj`)5k9P#~;aO62N|ES7i;E3&ytvnu%+=p;;`i^u5#O(dTitPJvG1E>&4};cL;qgKaprd9K7KQn4#NpO=&9`TM3qf+?225|e*Xus5cspS4#8ttFjKjrRM`QuD! z#5K$R%&)&*@$u&(TyFfs?TP&*p3h(3(&+Hi;i=?0mqvqAgHvjMXn^%0?tJ`Z3$}>3 z*DHVi(hx1N{pDy$vQMEUw!Z=`N%r61HYc_pgO()wBFrYXzY;A;_Gz@l_E(`L$v%UY z*#2s?B-uAYOKg7)T9WJ=qb0V#7A;Bk#b}A`uR}|ceF<7(`|Ht?WZwiWvHe)IB-uAb zOW4Qz;h@x@RPuOO8Xb~4B$Yq@*!~7gZiX48FeksiHHRaG?J13J#Qn&99ui+}|5X1} z{`l|qoO2U;lAPZHvxz(Z=F}}{iR(G%RydNJQ_2};4*T2C5`WI^aK!g_z!B^3th^hJ zSbtCDy>P^O{AB_hvHrfw2jGbH_>Dgt@%=+^#P<{6$ZB)Edbn~T9P#@{;fU`i!4cn2 zh9kb80!OT$S~(4lSUjC3z63}7%Y7M+d|-O~#tn}6{X970 z`&Z$J@8`pj{@!*jfFpjt5RUl%H8|q?MR3ITufvfw-t}4xNBsT`IO6*yaK!g-!jYrA z>$Mb)`28|C;``-r#P=)U$S`mIN;u;8Z^4lvUjH^6@%vS9B=6(rQT*qYIJUJc+o67r z>s!GS|G3>6j`%(cmo00Nn9~NH_u>jX z``@Wtw{8P?;$Ln@xQ=CQ5_2|$Cw{*X9P$0eaK!hW;5wDB=Zu3wG)q&pmO{rm7e;E3yaf7u+4xc)=*Tfh<5v)>Yq_`W9` z@%>hCTa~pk*Xv`Ae+kbP>^65D@^mL&UK(GuIQK}(YTZfJ?^ze7us z{qAUq?Y~D$lKmcNiS2(tOOpMbXo>BAL`#zWUTBH!e?m)={oZJa?bo6u$-XyQV*8)b zl1j5b^S|$dwoh4gy^r^YUn+k?OYHpLEAdyV=!u>GCt6~A{`0Cr zMoW@?U$n&b|DYwwz8_j*`*m!CeSfrsJwL~WYs9(n4?RCQ$Nv5?|NE(UJ@HRPd6L^R z0JDkRo(AYivLA?+*uEiJlI-_KOKhJ)OOpK{w8ZvBXi2g^04=e78ZAlo2cjjm&!8pA z{vfo(_KnbzWPdPPV*AEuNwOb|me{@+ElKu=pe431K}(YTp=gQio1i7heh6A(`=)3~ zvOf$hv3)bNB-tO1me{^IT9WLKKuc`j0xe1QL(vl3m!c)f{z$aM_ASwpWPcP|V*6HT zNwPm0EwO!Tv?SRdgO=Dni#P;pbl4L&&EwO!j zv?SS|fR@<416q>ohodF7-vBL1_9vnxw(p3RSifP_#&E>W=~RXHOk)PIbIQ>Y+w-4K zMoVm8ftDouQ_vFISE41!{#3NY_El&}vLAt#*uFDblI%}IOKe|_mL&Vr(GvFY`4_u0 z;D|e?rYeUS#P)SncyBaX;`Uvux}hbu-xU2>Xo=h7nLJuzd;as;Xo=hRsM-Q8vHg}+ zcyBaX;`VrEj+X46cs_G3+H=eHGS6pvRc(Wo*!kO5;l0u5i93J$svXf1+wX+_e6+;v zcd6P9EwTOX=r2G^+#b&u(GuJ9pGTr4ZogMmZ?wereX8)@Xtc!b_pR!Sme{@@`U}w# zw;xcoKU!k@LFh-JC2o&LaJ2O#)_*kG(Pe|p`X5v^7(KD`55fG4&=Yt5kgCJc65Ahv z{$jMm?T@TF8ZEK?G3YNrOWgjrs$pn}?N2~|DO%$8Csv(|me~Fj^p~L}Za<>xbhO0w zXQ00vEpdC?gU}M&^PjIkOWgkKs&mm2+n-m3-{PPpZjU_>EwMfS`AW3J_9M}fWPcS} zV*CH0CCUD3w8Zuoq9w`x8nndrqtKFMe=S;K`_X7gvcC>3vHeA8NwU8lEwTN@Xi2gk zi~BR&Y=0$MlI(9oOKg7?T9WKQ{O65HR1mL&V}Xo>A_LQC-4tM~lm zKD30saK3yqT9TZ9KU!kv--4DT`v=ex+uw?o`2IFH;``g-i0|)!Bfh^Aj`;pAIO6-e z;fU|=fg`>j2S z@%=M8i0>!C5#LXSBfg&kM|?jOj`;pDIO6+haK!i1;fU`aha9P#}taK!iX;E3;Eg(JS74@Z2z0FD%VY4mK> zvsLc>l-~~$dcRWW^XK{ao{8QIzD}NrJ`uh|_$INN%YvHrP zw-LT=(DQcTd#mExivP>oF@tZU3H_de$Ki0_KG{`LO*$XeHXe)o~TKl66v?H=+OeE&q~`sUZC zG@2j0T}q>c!Y>kjanMK665$KC*GO}FEnROv%Jj?E+n-n8^KpUKxp2Ap{XBF(;_)F9 zRRz~AgBhXq-E0y9}54m@Sh6*x$s{K z|F!3NJBDr-?mr>V{UPL&>y}@iJsiJvH#ZDPS<}Yd|`iRTR%U(U4C$S z_jdV7_@6x=`o1~thy4DU&^mSMWB{?bt;4!u7h@+~1oyJ#UxfI&>7vh3h-b_;Rs5mBM%Se0+Q;%*XRgJRgYHzu?RNU1$GsszPjkrSLP%_SbmZ z6JKubKR?U#UHDo_+mpY(rO~ENUy9o?6CLO6xB17HOf)>`Lyuqa`32vH z-aRq@tl*qXbY9TM+qtbWe7ofT?e|FZ`8j(z zz9AMTf1E6hdOO}de(vLVx8Kk4Zr@M%0gf-siK6|5KS20{gdZ&Yp`MTThr-@A+dK{) z=JesmLF|Xvuj0p-!ko_a_f!0qxt;D^Ey-yaD_e18-i@%_YADSolwb|5W(Tg#TRlFNFV6 z_^*WjTKI2-|5o@l!ha|H_rm`m{Ex!_B>Y<8e-{21;eQqWH{pL5{tw~*6#g&a{}%oq z;nxWtm4}ae4TNtfd`kEt;nTurgl{B#W8wL2hW_IbO^NVLgl{T*GvS*H-$M9O;advd zN_c*|V(9v2g>NH#TjARY-(L6*!fzmaN8vXVek0*G7QU14W&ioY-@S}UkHK>k!t?in zzcPI#9I^hY^i^=g`m57d!x8JRNnZm;tiLvWEgYf8OD>7?ah^Bvd*^v>&)Ylxp)dLG z{3y2hIic6tIG;28^L@@qK973NoX1_)xiCN6zhL^Y>+N4Q{f+DGUp4*B>+Khs{?_&O zubcjMua94kDy%~FD8BBOJa1iMUT?h9nG^1pnf`9CPhRdy^Ey~zdsZ1gPRtqa`Q-Mm zHrsQ**EhoNr?9)2{gBtIaDRCw)f$gF#O~+MrrN*}>*uFB!4d0UOI5%T>ldXe;fVFi zQ(fSQ_1~m+fg{#Gm@darfY8V1DG#L!E9&|Q!apqhBf?J<{!!s42|ro*DZ)<`{xRXF z2|r!<$AzCEJikXF{&ClNrtnV+|CI2vgnwFicaL_r=NZw@7XDe`8$|K7wfkF2_#)x+ z-?*2bKZdpBDaQG3OQG=Lw(xM$5wb#E)zFZ@^6YSH+z9!Y>ehq42K>zexDk zgj*Z5qLyw!OXE`iwl?>n9G?rz*i3Gb(Izq<4L zXo>AVK;IcHar=)te}b0S{!{eTXo=f@-uX+k#P(mIuR%-P{+rHg&=T8!hrSjqar+-S z|Ady(COn|FiSoXo>CrLEi-}ar>ycVFsUP0&JhE#%EKZ zC2pUtZiJTDzA^eu&=R*Vscwpv*uEM1ZfJ?yx2SH3me{@(`c2Uix6f9$MN4eo4*h0m ziQ9Lm?ueGyena%#(Gs`cxVj82v3)uE9%zZ%S5|jMOKe|_esi?M?Q5&+&=T8sLB9oB z;`WFervSE?f0nO3oWtz-srbMOWeLs^}c9{?e{~!En4FC{i+9`CAJ@k zemk_p?FUsKh?dy?AoSa#C2l{s`cSmQ_CwI`fR?!Z;nhRYlHJVrz8#5vN3=VZ?`gjG z?da-b(GolVIP^QAC+_@V)x*&e+neIHt4`}@)FgO<4cgVhtz65BtFeqXf2?I%`GLQ8Bv8U21}iQ7-Do`#m# zemeTTXo=g;sGfG(pH=+~S~ADnzhIGEwTM7^ar9PZvSreduWO6-$#ECTH^K}R)36^*!~mr2cso!|5^1H zXo>B=L_ZiUar>{UzeP)IzXtswXo=f@U;QImV*8)aABvW^{m<3Eq9wNf4gC9`p+5pGar@$$CTNN6o1!0z zmbiWMno_jH_ASvLiI%v1>zX!biS65>KME~z`}Q>(pe45Ni2i7_#O*h#>4cWpz6|{_ zXo=fb)KsA*w(pGoShU3LYie?6iS6sqABUE>eb<_9Xo>ANMSnb6;`ZHZHb+ZrzXkeX zXo=hRtm%c8*nVsDC!i&6zirL-Xo>B2KtCKUar>QWc0o&QzbpC^(Gs`cy=G6e#P)lk zKM5^y``$JCpe4577yZd-3H$i6z<`gU zgKHLKLdRPiF&gEu*Xz)l!{EsyP2KH09Mez1bvmVddcBX&TZh&hg_hXsdo=n}(Gz#w zj;%Q!EwTMD^dry`w;x_}5?W&WlhL1smbm??HK(B^wm%*H>1c`DpILJ@T4MWi(4T>p zxczxG7oa7!ABp}AFM}Ib2;`U=|u0l&}e>M7Z z&=R-5w&r@Y#P(y+pNp2b{f#v@qb0V#1^szwiQC^+a|c>-VKe%8|GyLc`Do8Czo_2F z`_J7qiQ6xzc?~W3+}ys4&|ix7((U30h+3zlr`b^u(RN ztY!sTV*8coFGow<{_UD~&=T9fi~b6<#O>d!`2a1k{fFqspe1hqam}Y_iS0i_e zEphw5YW_h>Y`+fub!ds(H>gcD#^(S7+ZWa1D1(-`eWtcCT4MWR^kdNyw{KG03@x#J zbM!Z$C2n6@+X^kQeQWeLq9tzMrnVhgV*B>!Z$eAleuLT#(GuHlg#Ko<#O*uPmZK%M zuRwnbTH^Lqwbf{e?Q78Aik7&2uC@zWV*9S>Z$nGmzFX~PXo>B+qrV+3ar@0{w?s>9 z-xK{EXo=hRs@(=HvHiB_??g-79?$8}65I2i??Ov#zXMv5?C(ZPY`-H~lI-t6OW4Pc zQ#;k-(Fkr_`LyP)-v$0&_c(yzps3@@q5AF4}X98bH?|E ze*pf0@)wNX2mV3$2g_eJen0q!;2$b~wcf{%r~PUNG{)IG=-9$thk><&;7C8?52!r| zjx02D4z4`}j=XOCp|yv>ktN0-UON(M9Y4DTah`VlQ)SlHC&(gp( zX5G%NJr|CQHU7NX3*d;IGqUzVIAZ;%+Kb?b^%vJ(3PwS3n{~JX zehU1Q@&(3U2|pEnYWZrj&R4@f2LD+32gY9uKMj6b`Nzgz4?i7#diiI@-vIwO{Nv?c z8h;b~4EP!4-_-kf|GcI4w#GOrfpuoxZm+!)j%-otuK!)N_rQ_w%$#wx(jKf4Fuc9Qo7uM{6g;k$>uay#7;a@mW^5UQd({tKZJpKL$S&erEaI z#!rWT5}vsG+YI=p;E3yI!q0*uu73*tX*lBgr{SN0Bd(tfKO2tF$Ll|*_W8zm-484= z>pZviML3df>Gm(xz5++=oO!kL;fVDMYF~pR)-S4E3`eYgqxMZWV*S$Ec;fU+sgP#jWT>k<53vk3;pO0!k zX^h{)f}PE}eOmiD9NFFYFKWMnBX-W$wco-K>(|tN4@a#3q4p;@lK1gCtgT&JONUq7 z%{u%7`y#ge#qyEH|5p3QUise6`5XO9=!v@y>uMY99qNm6cy$;par;cJaj+&kqDneE>b{k!nQ?fd5X=T^fJ*AL7M%Do3iTz_Eh;N1Ig#Px^dhU7kg zBd$L@H#GMl9C7_oxnpu4!4cOVmm8M*7>>Apc=yM_hkn?&jPVaK!bu=5Eh@2}fLiXYTIYS8&Aj<8tG3U&9gC z-=BLh_YEAOkJo=f?h#xkV*SM2BsgOI2SpQ$8%4>5$k8>o`NIR&&oXm zN35Tnn*&GkK3@Ola&vRv;yMxc`o5TZIkyImxPD%4e(pOs;`)WTMY-?ci0c>UmgIhb zBd%YXTb}z7j<|kh?(N)9aK!cR+~;t_`Y&={ z!4d1f&V36ueik7%ORhO;{^^NKp{p-7!<79DNliqG0KW;X!E5)~ill=VHx2$UoN374* zwS^uB;n?)9ok)ui&@Q?L51>aSNkXJc

W}P>y>(Sf2Uh#TvS+`XQ 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

6^uge>sgiu|Cd2MixaCxv>#Z% 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 Date: Thu, 30 Mar 2017 01:21:05 -0500 Subject: [PATCH 31/37] Added checking for params and return values in `main` --- src/check_decl.c | 53 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/src/check_decl.c b/src/check_decl.c index 12ce52142..0be0b6dba 100644 --- a/src/check_decl.c +++ b/src/check_decl.c @@ -5,8 +5,8 @@ void check_stmt_list (Checker *c, AstNodeArray stmts, u32 flags); // NOTE(bill): `content_name` is for debugging and error messages Type *check_init_variable(Checker *c, Entity *e, Operand *operand, String context_name) { if (operand->mode == Addressing_Invalid || - operand->type == t_invalid || - e->type == t_invalid) { + operand->type == t_invalid || + e->type == t_invalid) { if (operand->mode == Addressing_Builtin) { gbString expr_str = expr_to_string(operand->expr); @@ -14,9 +14,9 @@ Type *check_init_variable(Checker *c, Entity *e, Operand *operand, String contex // TODO(bill): is this a good enough error message? // TODO(bill): Actually allow built in procedures to be passed around and thus be created on use error_node(operand->expr, - "Cannot assign builtin procedure `%s` in %.*s", - expr_str, - LIT(context_name)); + "Cannot assign builtin procedure `%s` in %.*s", + expr_str, + LIT(context_name)); operand->mode = Addressing_Invalid; @@ -86,8 +86,8 @@ void check_init_variables(Checker *c, Entity **lhs, isize lhs_count, AstNodeArra void check_init_constant(Checker *c, Entity *e, Operand *operand) { if (operand->mode == Addressing_Invalid || - operand->type == t_invalid || - e->type == t_invalid) { + operand->type == t_invalid || + e->type == t_invalid) { if (e->type == NULL) { e->type = t_invalid; } @@ -182,7 +182,7 @@ void check_const_decl(Checker *c, Entity *e, AstNode *type_expr, AstNode *init, check_init_constant(c, e, &operand); if (operand.mode == Addressing_Invalid || - base_type(operand.type) == t_invalid) { + base_type(operand.type) == t_invalid) { error(e->token, "Invalid declaration type"); } } @@ -249,13 +249,30 @@ void check_proc_lit(Checker *c, Entity *e, DeclInfo *d) { bool is_no_inline = (pd->tags & ProcTag_no_inline) != 0; if ((d->scope->is_file || d->scope->is_global) && - str_eq(e->token.string, str_lit("main"))) { + str_eq(e->token.string, str_lit("main"))) { if (proc_type != NULL) { TypeProc *pt = &proc_type->Proc; - if (pt->param_count != 0 || - pt->result_count != 0) { + + // This is an ugly monstrosity, but I see no other way. + bool valid_param = pt->param_count == 0 || (pt->params->kind == Type_Tuple && + pt->params->Tuple.variable_count == 2 && + pt->params->Tuple.variables[0]->kind == Entity_Variable && + pt->params->Tuple.variables[0]->type->kind == Type_Basic && + pt->params->Tuple.variables[0]->type->Basic.kind == Basic_i32 && + pt->params->Tuple.variables[1]->kind == Entity_Variable && + pt->params->Tuple.variables[1]->type->kind == Type_Slice && + pt->params->Tuple.variables[1]->type->Slice.elem->kind == Type_Pointer && + pt->params->Tuple.variables[1]->type->Slice.elem->Pointer.elem->kind == Type_Basic && + pt->params->Tuple.variables[1]->type->Slice.elem->Pointer.elem->Basic.kind == Basic_u8); + + bool valid_result = pt->result_count == 0 || (pt->results->kind == Type_Tuple && + pt->results->Tuple.variable_count == 1 && + pt->results->Tuple.variables[0]->kind == Entity_Variable && + pt->results->Tuple.variables[0]->type->kind == Type_Basic && + pt->results->Tuple.variables[0]->type->Basic.kind == Basic_i32); + if (!valid_param || !valid_result) { gbString str = type_to_string(proc_type); - error(e->token, "Procedure type of `main` was expected to be `proc()`, got %s", str); + error(e->token, "Procedure type of `main` was expected to be `proc()` or `proc(i32, []^byte) -> i32`, got %s", str); gb_string_free(str); } } @@ -325,9 +342,9 @@ void check_proc_lit(Checker *c, Entity *e, DeclInfo *d) { Type *other_type = base_type(f->type); if (!are_signatures_similar_enough(this_type, other_type)) { error_node(d->proc_lit, - "Redeclaration of #foreign procedure `%.*s` with different type signatures\n" - "\tat %.*s(%td:%td)", - LIT(name), LIT(pos.file), pos.line, pos.column); + "Redeclaration of #foreign procedure `%.*s` with different type signatures\n" + "\tat %.*s(%td:%td)", + LIT(name), LIT(pos.file), pos.line, pos.column); } } else { map_entity_set(fp, key, e); @@ -350,9 +367,9 @@ void check_proc_lit(Checker *c, Entity *e, DeclInfo *d) { TokenPos pos = f->token.pos; // TODO(bill): Better error message? error_node(d->proc_lit, - "Non unique linking name for procedure `%.*s`\n" - "\tother at %.*s(%td:%td)", - LIT(name), LIT(pos.file), pos.line, pos.column); + "Non unique linking name for procedure `%.*s`\n" + "\tother at %.*s(%td:%td)", + LIT(name), LIT(pos.file), pos.line, pos.column); } else { map_entity_set(fp, key, e); } From 3315dc7f25095ddcc35a366ae4314e8463c0818a Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Fri, 31 Mar 2017 05:30:09 -0500 Subject: [PATCH 32/37] Literally just a commit to revert a previous one. --- core/os_linux.odin | 1 - core/os_x.odin | 1 - 2 files changed, 2 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index 52b9dad51..144ea8d04 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -10,7 +10,6 @@ AddressSize :: i64; // INVALID_HANDLE: Handle : -1; - O_RDONLY :: 0x00000; O_WRONLY :: 0x00001; O_RDWR :: 0x00002; diff --git a/core/os_x.odin b/core/os_x.odin index 6133bce7c..8b5e81040 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -10,7 +10,6 @@ AddressSize :: i64; // INVALID_HANDLE: Handle : -1; - O_RDONLY :: 0x00000; O_WRONLY :: 0x00001; O_RDWR :: 0x00002; From 24b33374b7830fae01be1915adb14b4e45ff9550 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Fri, 31 Mar 2017 05:31:45 -0500 Subject: [PATCH 33/37] Reverted the main proc changed, after a chat with Bill about better solutions. --- src/check_decl.c | 25 ++++--------------------- 1 file changed, 4 insertions(+), 21 deletions(-) diff --git a/src/check_decl.c b/src/check_decl.c index 0be0b6dba..7cf4080ce 100644 --- a/src/check_decl.c +++ b/src/check_decl.c @@ -249,30 +249,13 @@ void check_proc_lit(Checker *c, Entity *e, DeclInfo *d) { bool is_no_inline = (pd->tags & ProcTag_no_inline) != 0; if ((d->scope->is_file || d->scope->is_global) && - str_eq(e->token.string, str_lit("main"))) { + str_eq(e->token.string, str_lit("main"))) { if (proc_type != NULL) { TypeProc *pt = &proc_type->Proc; - - // This is an ugly monstrosity, but I see no other way. - bool valid_param = pt->param_count == 0 || (pt->params->kind == Type_Tuple && - pt->params->Tuple.variable_count == 2 && - pt->params->Tuple.variables[0]->kind == Entity_Variable && - pt->params->Tuple.variables[0]->type->kind == Type_Basic && - pt->params->Tuple.variables[0]->type->Basic.kind == Basic_i32 && - pt->params->Tuple.variables[1]->kind == Entity_Variable && - pt->params->Tuple.variables[1]->type->kind == Type_Slice && - pt->params->Tuple.variables[1]->type->Slice.elem->kind == Type_Pointer && - pt->params->Tuple.variables[1]->type->Slice.elem->Pointer.elem->kind == Type_Basic && - pt->params->Tuple.variables[1]->type->Slice.elem->Pointer.elem->Basic.kind == Basic_u8); - - bool valid_result = pt->result_count == 0 || (pt->results->kind == Type_Tuple && - pt->results->Tuple.variable_count == 1 && - pt->results->Tuple.variables[0]->kind == Entity_Variable && - pt->results->Tuple.variables[0]->type->kind == Type_Basic && - pt->results->Tuple.variables[0]->type->Basic.kind == Basic_i32); - if (!valid_param || !valid_result) { + if (pt->param_count != 0 || + pt->result_count != 0) { gbString str = type_to_string(proc_type); - error(e->token, "Procedure type of `main` was expected to be `proc()` or `proc(i32, []^byte) -> i32`, got %s", str); + error(e->token, "Procedure type of `main` was expected to be `proc()`, got %s", str); gb_string_free(str); } } From c9c82da1f3d809b1638daeddf9f1f7dfe9866eb5 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sun, 2 Apr 2017 18:42:58 -0500 Subject: [PATCH 34/37] It's terrible, but I added _some_ form of launch args support for Linux/macOS --- core/os_linux.odin | 2 + core/os_x.odin | 5 +- src/ir_print.c | 139 +++++++++++++++++++++++++++++++++++++++++++++ src/main.c | 6 +- 4 files changed, 147 insertions(+), 5 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index 144ea8d04..f43deb7bd 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -36,6 +36,8 @@ RTLD_NOW :: 0x002; RTLD_BINDING_MASK :: 0x3; RTLD_GLOBAL :: 0x100; +args: [dynamic]string; + #foreign_system_library dl "dl"; #foreign_system_library libc "c"; diff --git a/core/os_x.odin b/core/os_x.odin index 8b5e81040..f65f27c6c 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -39,6 +39,8 @@ RTLD_NODELETE :: 0x80; RTLD_NOLOAD :: 0x10; RTLD_FIRST :: 0x100; +args: [dynamic]string; + #foreign_system_library dl "dl"; #foreign_system_library libc "c"; @@ -211,5 +213,4 @@ dlclose :: proc(handle: rawptr) -> bool #inline { } dlerror :: proc() -> string { return strings.to_odin_string(unix_dlerror()); -} - +} \ No newline at end of file diff --git a/src/ir_print.c b/src/ir_print.c index ab5926bd0..9eec81fe8 100644 --- a/src/ir_print.c +++ b/src/ir_print.c @@ -1385,6 +1385,138 @@ void ir_print_instr(irFileBuffer *f, irModule *m, irValue *value) { void ir_print_proc(irFileBuffer *f, irModule *m, irProcedure *proc) { + +#ifndef GB_SYSTEM_WINDOWS + bool is_main_proc = proc->parent == NULL && str_eq(proc->name, str_lit("main")); + + AstFile fake_file; + gb_arena_init_from_allocator(&fake_file.arena, heap_allocator(), gb_size_of(AstNode) * 4); + + bool uses_args = false; + if(is_main_proc) + for(int i=0;imodule->min_dep_map.entries.count;i++) { + Entity *value = proc->module->min_dep_map.entries.e[i].value; + //printf("using: %.*s\n", LIT(proc->module->min_dep_map.entries.e[i].value->token.string)); + if(value == NULL) continue; + if(str_eq(str_lit("args"), value->token.string)) { + uses_args = true; + break; + } + } + + //bool uses_args = map_entity_get(&proc->module->min_dep_map, hash_pointer(entity_of_ident(proc->module->info, ast_ident(&fake_file, make_token_ident(str_lit("args")))))) == NULL; + //printf("uses_args: %d", (int)uses_args); + + // TODO(zangent): THIS IS AN UGLY HACK + // I _SERIOUSLY_ need to change this system, because this is just disgraceful. + + if(uses_args) { + + + ir_fprintf(f, "%s", "; Hack to give Linux/OSX launch arguments\n" +"define i32 @main(i32 %argc, i8** %argv) {\n" +"decls-0:\n" +" %0 = alloca i32, align 4\n" +" %1 = alloca i8**, align 8\n" +" %2 = alloca i32, align 4\n" +" %3 = alloca i8*, align 8\n" +" %4 = alloca %..string, align 8\n" +" store i32 zeroinitializer, i32* %0\n" +" store i32 %argc, i32* %0\n" +" store i8** zeroinitializer, i8*** %1\n" +" store i8** %argv, i8*** %1\n" +" call void @.__$startup_runtime()\n" +" ; reserve\n" +" ; SelectorExpr\n" +" %5 = load i32, i32* %0, align 4\n" +" %6 = sext i32 %5 to i64\n" +" %7 = bitcast {%..string*, i64, i64,%Allocator}* @.args to %..rawptr\n" +" %8 = call i1 @.__dynamic_array_reserve(%..rawptr %7, i64 16, i64 8, i64 %6)\n" +" ; AssignStmt\n" +" ; SelectorExpr\n" +" ; SelectorExpr\n" +" %9 = getelementptr inbounds {%..string*, i64, i64,%Allocator}, {%..string*, i64, i64,%Allocator}* @.args, i64 0, i32 1\n" +" %10 = load i32, i32* %0, align 4\n" +" ; cast - cast\n" +" %11 = sext i32 %10 to i64\n" +" store i64 %11, i64* %9\n" +" ; i\n" +" store i32 zeroinitializer, i32* %2\n" +" store i32 0, i32* %2\n" +" ; ForStmt\n" +" br label %for.loop-1\n" +"\n" +"for.loop-1:\n" +" %12 = load i32, i32* %2, align 4\n" +" %13 = load i32, i32* %0, align 4\n" +" %14 = icmp slt i32 %12, %13\n" +" br i1 %14, label %for.body-2, label %for.done-6\n" +"\n" +"for.body-2:\n" +" ; cstr\n" +" store i8* zeroinitializer, i8** %3\n" +" %15 = load i8**, i8*** %1, align 8\n" +" %16 = load i32, i32* %2, align 4\n" +" %17 = sext i32 %16 to i64\n" +" %18 = getelementptr inbounds i8*, i8** %15, i64 %17\n" +" %19 = getelementptr inbounds i8*, i8** %18, i64 0\n" +" %20 = load i8*, i8** %19, align 8\n" +" store i8* %20, i8** %3\n" +" ; str\n" +" store %..string zeroinitializer, %..string* %4\n" +" ; AssignStmt\n" +" ; SelectorExpr\n" +" %21 = getelementptr inbounds %..string, %..string* %4, i64 0, i32 0\n" +" %22 = load i8*, i8** %3, align 8\n" +" store i8* %22, i8** %21\n" +" ; ForStmt\n" +" br label %for.loop-3\n" +"\n" +"for.loop-3:\n" +" %23 = load i8*, i8** %3, align 8\n" +" ; SelectorExpr\n" +" %24 = getelementptr inbounds %..string, %..string* %4, i64 0, i32 1\n" +" %25 = load i64, i64* %24, align 8\n" +" %26 = getelementptr inbounds i8, i8* %23, i64 %25\n" +" %27 = getelementptr inbounds i8, i8* %26, i64 0\n" +" %28 = load i8, i8* %27, align 1\n" +" %29 = icmp ne i8 %28, 0\n" +" br i1 %29, label %for.body-4, label %for.done-5\n" +"\n" +"for.body-4:\n" +" ; SelectorExpr\n" +" %30 = getelementptr inbounds %..string, %..string* %4, i64 0, i32 1\n" +" %31 = load i64, i64* %30, align 8\n" +" %32 = add i64 %31, 1\n" +" store i64 %32, i64* %30\n" +" br label %for.loop-3\n" +"\n" +"for.done-5:\n" +" ; AssignStmt\n" +" ; IndexExpr\n" +" ; SelectorExpr\n" +" %33 = load {%..string*, i64, i64,%Allocator}, {%..string*, i64, i64,%Allocator}* @.args, align 8\n" +" %34 = extractvalue {%..string*, i64, i64,%Allocator} %33, 0\n" +" %35 = extractvalue {%..string*, i64, i64,%Allocator} %33, 1\n" +" %36 = load i32, i32* %2, align 4\n" +" %37 = sext i32 %36 to i64\n" +" %38 = getelementptr inbounds %..string, %..string* %34, i64 %37\n" +" %39 = load %..string, %..string* %4, align 8\n" +" store %..string %39, %..string* %38\n" +" ; AssignStmt\n" +" %40 = load i32, i32* %2, align 4\n" +" %41 = add i32 %40, 1\n" +" store i32 %41, i32* %2\n" +" br label %for.loop-1\n" +"\n" +"for.done-6:\n" +" call void @.nix_argpatch_main()\n" +" ret i32 0\n" +"}\n" +); + } +#endif + if (proc->body == NULL) { ir_fprintf(f, "declare "); // if (proc->tags & ProcTag_dll_import) { @@ -1412,7 +1544,14 @@ void ir_print_proc(irFileBuffer *f, irModule *m, irProcedure *proc) { } ir_fprintf(f, " "); + +#ifndef GB_SYSTEM_WINDOWS + if(uses_args) + ir_fprintf(f, "@.nix_argpatch_main"); + else +#endif ir_print_encoded_global(f, proc->name, ir_print_is_proc_global(m, proc)); + ir_fprintf(f, "("); if (proc_type->param_count > 0) { diff --git a/src/main.c b/src/main.c index 6c2167802..17ea379a0 100644 --- a/src/main.c +++ b/src/main.c @@ -278,7 +278,7 @@ int main(int argc, char **argv) { // NOTE(zangent): This is separate because it seems that LLVM tools are packaged // with the Windows version, while they will be system-provided on MacOS and GNU/Linux exit_code = system_exec_command_line_app("llvm-opt", false, - "opt \"%s\" -o \"%.*s\".bc " + "/usr/local/opt/llvm/bin/opt \"%s\" -o \"%.*s\".bc " "-mem2reg " "-memcpyopt " "-die " @@ -365,7 +365,7 @@ int main(int argc, char **argv) { timings_start_section(&timings, str_lit("llvm-llc")); // For more arguments: http://llvm.org/docs/CommandGuide/llc.html exit_code = system_exec_command_line_app("llc", false, - "llc \"%.*s.bc\" -filetype=obj -O%d " + "/usr/local/opt/llvm/bin/llc \"%.*s.bc\" -filetype=obj -O%d " "%.*s " // "-debug-pass=Arguments " "", @@ -424,7 +424,7 @@ int main(int argc, char **argv) { } #if defined(GB_SYSTEM_OSX) - linker = "ld"; + linker = "/usr/bin/ld"; #else // TODO(zangent): Figure out how to make ld work on Linux. // It probably has to do with including the entire CRT, but From 642256f9ba580de65121215ff76b4d8498e18607 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Sun, 2 Apr 2017 18:46:31 -0500 Subject: [PATCH 35/37] I accidentally left debug stuff (like abs paths) in! Whoops! --- src/ir_print.c | 4 ---- src/main.c | 8 ++++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/ir_print.c b/src/ir_print.c index 9eec81fe8..4c696a666 100644 --- a/src/ir_print.c +++ b/src/ir_print.c @@ -1396,7 +1396,6 @@ void ir_print_proc(irFileBuffer *f, irModule *m, irProcedure *proc) { if(is_main_proc) for(int i=0;imodule->min_dep_map.entries.count;i++) { Entity *value = proc->module->min_dep_map.entries.e[i].value; - //printf("using: %.*s\n", LIT(proc->module->min_dep_map.entries.e[i].value->token.string)); if(value == NULL) continue; if(str_eq(str_lit("args"), value->token.string)) { uses_args = true; @@ -1404,9 +1403,6 @@ void ir_print_proc(irFileBuffer *f, irModule *m, irProcedure *proc) { } } - //bool uses_args = map_entity_get(&proc->module->min_dep_map, hash_pointer(entity_of_ident(proc->module->info, ast_ident(&fake_file, make_token_ident(str_lit("args")))))) == NULL; - //printf("uses_args: %d", (int)uses_args); - // TODO(zangent): THIS IS AN UGLY HACK // I _SERIOUSLY_ need to change this system, because this is just disgraceful. diff --git a/src/main.c b/src/main.c index 17ea379a0..ccc2b4c3b 100644 --- a/src/main.c +++ b/src/main.c @@ -261,7 +261,7 @@ int main(int argc, char **argv) { #if defined(GB_SYSTEM_WINDOWS) // For more passes arguments: http://llvm.org/docs/Passes.html exit_code = system_exec_command_line_app("llvm-opt", false, - "\"%.*sbin/opt\" \"%s\" -o \"%.*s.bc\" " + "\"%.*sbin/opt\" \"%s\" -o \"%.*s\".bc " "-mem2reg " "-memcpyopt " "-die " @@ -278,7 +278,7 @@ int main(int argc, char **argv) { // NOTE(zangent): This is separate because it seems that LLVM tools are packaged // with the Windows version, while they will be system-provided on MacOS and GNU/Linux exit_code = system_exec_command_line_app("llvm-opt", false, - "/usr/local/opt/llvm/bin/opt \"%s\" -o \"%.*s\".bc " + "opt \"%s\" -o \"%.*s\".bc " "-mem2reg " "-memcpyopt " "-die " @@ -365,7 +365,7 @@ int main(int argc, char **argv) { timings_start_section(&timings, str_lit("llvm-llc")); // For more arguments: http://llvm.org/docs/CommandGuide/llc.html exit_code = system_exec_command_line_app("llc", false, - "/usr/local/opt/llvm/bin/llc \"%.*s.bc\" -filetype=obj -O%d " + "llc \"%.*s.bc\" -filetype=obj -O%d " "%.*s " // "-debug-pass=Arguments " "", @@ -424,7 +424,7 @@ int main(int argc, char **argv) { } #if defined(GB_SYSTEM_OSX) - linker = "/usr/bin/ld"; + linker = "ld"; #else // TODO(zangent): Figure out how to make ld work on Linux. // It probably has to do with including the entire CRT, but From 63345cd0d8a6d1c906026ed0f4a5f8622ee21e94 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Tue, 4 Apr 2017 18:51:36 -0500 Subject: [PATCH 36/37] Bridged a bugfix from os_windows to other os's. --- core/os_linux.odin | 8 ++++---- core/os_x.odin | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index f43deb7bd..a4ea511bb 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -83,7 +83,7 @@ close :: proc(fd: Handle) { write :: proc(fd: Handle, data: []byte) -> (AddressSize, Errno) { assert(fd != -1); - bytes_written := unix_write(fd, data.data, data.count); + bytes_written := unix_write(fd, ^data[0], len(data)); if(bytes_written == -1) { return 0, 1; } @@ -93,7 +93,7 @@ write :: proc(fd: Handle, data: []byte) -> (AddressSize, Errno) { read :: proc(fd: Handle, data: []byte) -> (AddressSize, Errno) { assert(fd != -1); - bytes_read := unix_read(fd, data.data, data.count); + bytes_read := unix_read(fd, ^data[0], len(data)); if(bytes_read == -1) { return 0, 1; } @@ -147,8 +147,8 @@ read_entire_file :: proc(name: string) -> ([]byte, bool) { // We have a file size! - data := new_slice(u8, size+1); - if data.data == nil { + data := make([]u8, size+1); + if data == nil { fmt.println("Failed to allocate file buffer."); return nil, false; } diff --git a/core/os_x.odin b/core/os_x.odin index f65f27c6c..883175192 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -87,7 +87,7 @@ close :: proc(fd: Handle) { write :: proc(fd: Handle, data: []byte) -> (AddressSize, Errno) { assert(fd != -1); - bytes_written := unix_write(fd, data.data, data.count); + bytes_written := unix_write(fd, ^data[0], len(data)); if(bytes_written == -1) { return 0, 1; } @@ -97,7 +97,7 @@ write :: proc(fd: Handle, data: []byte) -> (AddressSize, Errno) { read :: proc(fd: Handle, data: []byte) -> (AddressSize, Errno) { assert(fd != -1); - bytes_read := unix_read(fd, data.data, data.count); + bytes_read := unix_read(fd, ^data[0], len(data)); if(bytes_read == -1) { return 0, 1; } @@ -151,8 +151,8 @@ read_entire_file :: proc(name: string) -> ([]byte, bool) { // We have a file size! - data := new_slice(u8, size+1); - if data.data == nil { + data := make([]u8, size+1); + if ^data[0] == nil { fmt.println("Failed to allocate file buffer."); return nil, false; } From 6b33b254e92993cd0d468351d09e9386de349c41 Mon Sep 17 00:00:00 2001 From: Zachary Pierson Date: Thu, 6 Apr 2017 18:14:42 -0500 Subject: [PATCH 37/37] Merged from upstream, fixed 'args' name colission --- core/os_linux.odin | 100 +++++++++++++++++++++++++++++++++++++++++++++ core/os_x.odin | 98 +++++++++++++++++++++++++++++++++++++++++++- src/gb/gb.h | 4 +- src/ir.c | 6 +++ 4 files changed, 206 insertions(+), 2 deletions(-) diff --git a/core/os_linux.odin b/core/os_linux.odin index a4ea511bb..731361594 100644 --- a/core/os_linux.odin +++ b/core/os_linux.odin @@ -38,6 +38,90 @@ RTLD_GLOBAL :: 0x100; args: [dynamic]string; +FileTime :: struct #ordered { + seconds: i64, + nanoseconds: i32, + reserved: i32 +} + +// Translated from +// https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/+/jb-dev/sysroot/usr/include/bits/stat.h +// Validity is not guaranteed. + +Stat :: struct #ordered { + device_id : u64, // ID of device containing file + serial : u64, // File serial number + nlink : u32, // Number of hard links + mode : u32, // Mode of the file + uid : u32, // User ID of the file's owner + gid : u32, // Group ID of the file's group + _padding : i32, // 32 bits of padding + rdev : u64, // Device ID, if device + size : i64, // Size of the file, in bytes + block_size : i64, // Optimal bllocksize for I/O + blocks : i64, // Number of 512-byte blocks allocated + + last_access : FileTime, // Time of last access + modified : FileTime, // Time of last modification + status_change : FileTime, // Time of last status change + + _reserve1, + _reserve2, + _reserve3 : i64, + serial : u64, // File serial number...? Maybe. + _reserve4 : i64 +}; + +// File type + +S_IFMT :: 0170000; // Type of file mask +S_IFIFO :: 0010000; // Named pipe (fifo) +S_IFCHR :: 0020000; // Character special +S_IFDIR :: 0040000; // Directory +S_IFBLK :: 0060000; // Block special +S_IFREG :: 0100000; // Regular +S_IFLNK :: 0120000; // Symbolic link +S_IFSOCK :: 0140000; // Socket + +// File mode +// Read, write, execute/search by owner + +S_IRWXU :: 0000700; // RWX mask for owner +S_IRUSR :: 0000400; // R for owner +S_IWUSR :: 0000200; // W for owner +S_IXUSR :: 0000100; // X for owner + +// Read, write, execute/search by group + +S_IRWXG :: 0000070; // RWX mask for group +S_IRGRP :: 0000040; // R for group +S_IWGRP :: 0000020; // W for group +S_IXGRP :: 0000010; // X for group + +// Read, write, execute/search by others + +S_IRWXO :: 0000007; // RWX mask for other +S_IROTH :: 0000004; // R for other +S_IWOTH :: 0000002; // W for other +S_IXOTH :: 0000001; // X for other + +S_ISUID :: 0004000; // Set user id on execution +S_ISGID :: 0002000; // Set group id on execution +S_ISVTX :: 0001000; // Directory restrcted delete + +S_ISLNK :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFLNK; } +S_ISREG :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFREG; } +S_ISDIR :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFDIR; } +S_ISCHR :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFCHR; } +S_ISBLK :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFBLK; } +S_ISFIFO :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFIFO; } +S_ISSOCK :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFSOCK;} + +R_OK :: 4; // Test for read permission +W_OK :: 2; // Test for write permission +X_OK :: 1; // Test for execute permission +F_OK :: 0; // Test for file existance + #foreign_system_library dl "dl"; #foreign_system_library libc "c"; @@ -47,6 +131,8 @@ unix_read :: proc(handle: Handle, buffer: rawptr, count: int) -> AddressSize unix_write :: proc(handle: Handle, buffer: rawptr, count: int) -> AddressSize #foreign libc "write"; unix_lseek :: proc(fs: Handle, offset: AddressSize, whence: int) -> AddressSize #foreign libc "lseek"; unix_gettid :: proc() -> u64 #foreign libc "gettid"; +unix_stat :: proc(path: ^u8, stat: ^Stat) -> int #foreign libc "stat"; +unix_access :: proc(path: ^u8, mask: int) -> int #foreign libc "access"; unix_malloc :: proc(size: int) -> rawptr #foreign libc "malloc"; unix_free :: proc(ptr: rawptr) #foreign libc "free"; @@ -121,6 +207,20 @@ last_write_time :: proc(fd: Handle) -> File_Time {} last_write_time_by_name :: proc(name: string) -> File_Time {} */ +stat :: proc(path: string) -> (Stat, int) #inline { + s: Stat; + cstr := strings.new_c_string(path); + defer free(cstr); + ret_int := unix_stat(cstr, ^s); + return s, ret_int; +} + +access :: proc(path: string, mask: int) -> bool #inline { + cstr := strings.new_c_string(path); + defer free(cstr); + return unix_access(cstr, mask) == 0; +} + read_entire_file :: proc(name: string) -> ([]byte, bool) { handle, err := open_simple(name, O_RDONLY); diff --git a/core/os_x.odin b/core/os_x.odin index 883175192..fc2bcd3d3 100644 --- a/core/os_x.odin +++ b/core/os_x.odin @@ -41,6 +41,85 @@ RTLD_FIRST :: 0x100; args: [dynamic]string; +FileTime :: struct #ordered { + seconds: i64, + nanoseconds: i64 +} + +Stat :: struct #ordered { + device_id : i32, // ID of device containing file + mode : u16, // Mode of the file + nlink : u16, // Number of hard links + serial : u64, // File serial number + uid : u32, // User ID of the file's owner + gid : u32, // Group ID of the file's group + rdev : i32, // Device ID, if device + + last_access : FileTime, // Time of last access + modified : FileTime, // Time of last modification + status_change : FileTime, // Time of last status change + created : FileTime, // Time of creation + + size : i64, // Size of the file, in bytes + blocks : i64, // Number of blocks allocated for the file + block_size: i32, // Optimal blocksize for I/O + flags : u32, // User-defined flags for the file + gen_num : u32, // File generation number ...? + _spare : i32, // RESERVED + _reserve1, + _reserve2 : i64, // RESERVED +}; + +// File type + +S_IFMT :: 0170000; // Type of file mask +S_IFIFO :: 0010000; // Named pipe (fifo) +S_IFCHR :: 0020000; // Character special +S_IFDIR :: 0040000; // Directory +S_IFBLK :: 0060000; // Block special +S_IFREG :: 0100000; // Regular +S_IFLNK :: 0120000; // Symbolic link +S_IFSOCK :: 0140000; // Socket + +// File mode +// Read, write, execute/search by owner + +S_IRWXU :: 0000700; // RWX mask for owner +S_IRUSR :: 0000400; // R for owner +S_IWUSR :: 0000200; // W for owner +S_IXUSR :: 0000100; // X for owner + +// Read, write, execute/search by group + +S_IRWXG :: 0000070; // RWX mask for group +S_IRGRP :: 0000040; // R for group +S_IWGRP :: 0000020; // W for group +S_IXGRP :: 0000010; // X for group + +// Read, write, execute/search by others + +S_IRWXO :: 0000007; // RWX mask for other +S_IROTH :: 0000004; // R for other +S_IWOTH :: 0000002; // W for other +S_IXOTH :: 0000001; // X for other + +S_ISUID :: 0004000; // Set user id on execution +S_ISGID :: 0002000; // Set group id on execution +S_ISVTX :: 0001000; // Directory restrcted delete + +S_ISLNK :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFLNK; } +S_ISREG :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFREG; } +S_ISDIR :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFDIR; } +S_ISCHR :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFCHR; } +S_ISBLK :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFBLK; } +S_ISFIFO :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFIFO; } +S_ISSOCK :: proc(m: u32) -> bool #inline {return ((m) & S_IFMT) == S_IFSOCK;} + +R_OK :: 4; // Test for read permission +W_OK :: 2; // Test for write permission +X_OK :: 1; // Test for execute permission +F_OK :: 0; // Test for file existance + #foreign_system_library dl "dl"; #foreign_system_library libc "c"; @@ -50,6 +129,8 @@ unix_read :: proc(handle: Handle, buffer: rawptr, count: int) -> AddressSize unix_write :: proc(handle: Handle, buffer: rawptr, count: int) -> AddressSize #foreign libc "write"; unix_lseek :: proc(fs: Handle, offset: AddressSize, whence: int) -> AddressSize #foreign libc "lseek"; unix_gettid :: proc() -> u64 #foreign libc "gettid"; +unix_stat :: proc(path: ^u8, stat: ^Stat) -> int #foreign libc "stat"; +unix_access :: proc(path: ^u8, mask: int) -> int #foreign libc "access"; unix_malloc :: proc(size: int) -> rawptr #foreign libc "malloc"; unix_free :: proc(ptr: rawptr) #foreign libc "free"; @@ -63,6 +144,7 @@ unix_dlsym :: proc(handle: rawptr, symbol: ^u8) -> (proc() #cc_c) unix_dlclose :: proc(handle: rawptr) -> int #foreign dl "dlclose"; unix_dlerror :: proc() -> ^u8 #foreign dl "dlerror"; + // TODO(zangent): Change this to just `open` when Bill fixes overloading. open_simple :: proc(path: string, mode: int) -> (Handle, Errno) { @@ -125,6 +207,20 @@ last_write_time :: proc(fd: Handle) -> File_Time {} last_write_time_by_name :: proc(name: string) -> File_Time {} */ +stat :: proc(path: string) -> (Stat, bool) #inline { + s: Stat; + cstr := strings.new_c_string(path); + defer free(cstr); + ret_int := unix_stat(cstr, ^s); + return s, ret_int==0; +} + +access :: proc(path: string, mask: int) -> bool #inline { + cstr := strings.new_c_string(path); + defer free(cstr); + return unix_access(cstr, mask) == 0; +} + read_entire_file :: proc(name: string) -> ([]byte, bool) { handle, err := open_simple(name, O_RDONLY); @@ -152,7 +248,7 @@ read_entire_file :: proc(name: string) -> ([]byte, bool) { // We have a file size! data := make([]u8, size+1); - if ^data[0] == nil { + if data == nil { fmt.println("Failed to allocate file buffer."); return nil, false; } diff --git a/src/gb/gb.h b/src/gb/gb.h index 726d33662..892926a40 100644 --- a/src/gb/gb.h +++ b/src/gb/gb.h @@ -276,7 +276,9 @@ extern "C" { // TODO(bill): How many of these headers do I really need? // #include -// #include +#if !defined(GB_SYSTEM_WINDOWS) + #include +#endif diff --git a/src/ir.c b/src/ir.c index 2ba5e254d..cef5aa9da 100644 --- a/src/ir.c +++ b/src/ir.c @@ -6792,6 +6792,12 @@ void ir_gen_tree(irGen *s) { } else if (e->kind == Entity_Procedure && e->Procedure.link_name.len > 0) { // Handle later } else if (scope->is_init && e->kind == Entity_Procedure && str_eq(name, str_lit("main"))) { + #ifdef GB_SYSTEM_OSX + } else if (str_eq(name, str_lit("args")) && str_eq(e->token.pos.file, get_fullpath_core(heap_allocator(), str_lit("os_x.odin")))) { + #endif + #ifdef GB_SYSTEM_LINUX + } else if (str_eq(name, str_lit("args")) && str_eq(e->token.pos.file, get_fullpath_core(heap_allocator(), str_lit("os_linux.odin")))) { + #endif } else { name = ir_mangle_name(s, e->token.pos.file, e); }