From 244f69fdd58c9f4bf3dd6d780fe2c05c8f5f61db Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Thu, 5 Dec 2024 07:55:55 +0900 Subject: [PATCH 01/33] x86/um: nommu: elf loader for fdpic As UML supports CONFIG_MMU=n case, it has to use an alternate ELF loader, FDPIC ELF loader. In this commit, we added necessary definitions in the arch, as UML has not been used so far. It also updates Kconfig file to use BINFMT_ELF_FDPIC under !MMU environment. Cc: Eric Biederman Cc: Kees Cook Cc: Alexander Viro Cc: Christian Brauner Cc: Jan Kara Cc: linux-mm@kvack.org Cc: linux-fsdevel@vger.kernel.org Acked-by: Kees Cook Signed-off-by: Hajime Tazaki Signed-off-by: Ricardo Koller --- arch/um/include/asm/mmu.h | 5 +++++ arch/um/include/asm/ptrace-generic.h | 6 ++++++ arch/x86/um/asm/elf.h | 8 ++++++-- fs/Kconfig.binfmt | 2 +- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/arch/um/include/asm/mmu.h b/arch/um/include/asm/mmu.h index 07d48738b402b4..82a919132aff75 100644 --- a/arch/um/include/asm/mmu.h +++ b/arch/um/include/asm/mmu.h @@ -21,6 +21,11 @@ typedef struct mm_context { spinlock_t sync_tlb_lock; unsigned long sync_tlb_range_from; unsigned long sync_tlb_range_to; + +#ifdef CONFIG_BINFMT_ELF_FDPIC + unsigned long exec_fdpic_loadmap; + unsigned long interp_fdpic_loadmap; +#endif } mm_context_t; #define INIT_MM_CONTEXT(mm) \ diff --git a/arch/um/include/asm/ptrace-generic.h b/arch/um/include/asm/ptrace-generic.h index 86d74f9d33cf2d..62e9916078ec6e 100644 --- a/arch/um/include/asm/ptrace-generic.h +++ b/arch/um/include/asm/ptrace-generic.h @@ -29,6 +29,12 @@ struct pt_regs { #define PTRACE_OLDSETOPTIONS 21 +#ifdef CONFIG_BINFMT_ELF_FDPIC +#define PTRACE_GETFDPIC 31 +#define PTRACE_GETFDPIC_EXEC 0 +#define PTRACE_GETFDPIC_INTERP 1 +#endif + struct task_struct; extern long subarch_ptrace(struct task_struct *child, long request, diff --git a/arch/x86/um/asm/elf.h b/arch/x86/um/asm/elf.h index 22d0111b543b34..388fe669886cf6 100644 --- a/arch/x86/um/asm/elf.h +++ b/arch/x86/um/asm/elf.h @@ -9,6 +9,7 @@ #include #define CORE_DUMP_USE_REGSET +#define ELF_FDPIC_CORE_EFLAGS 0 #ifdef CONFIG_X86_32 @@ -158,8 +159,11 @@ extern int arch_setup_additional_pages(struct linux_binprm *bprm, extern unsigned long um_vdso_addr; #define AT_SYSINFO_EHDR 33 -#define ARCH_DLINFO NEW_AUX_ENT(AT_SYSINFO_EHDR, um_vdso_addr) - +#define ARCH_DLINFO \ +do { \ + NEW_AUX_ENT(AT_SYSINFO_EHDR, um_vdso_addr); \ + NEW_AUX_ENT(AT_MINSIGSTKSZ, 0); \ +} while (0) #endif typedef unsigned long elf_greg_t; diff --git a/fs/Kconfig.binfmt b/fs/Kconfig.binfmt index 1949e25c7741b1..0a92bebd5f759d 100644 --- a/fs/Kconfig.binfmt +++ b/fs/Kconfig.binfmt @@ -58,7 +58,7 @@ config ARCH_USE_GNU_PROPERTY config BINFMT_ELF_FDPIC bool "Kernel support for FDPIC ELF binaries" default y if !BINFMT_ELF - depends on ARM || ((M68K || RISCV || SUPERH || XTENSA) && !MMU) + depends on ARM || ((M68K || RISCV || SUPERH || UML || XTENSA) && !MMU) select ELFCORE help ELF FDPIC binaries are based on ELF, but allow the individual load From 5c5ccfb6896b5f33d8c8b141bae405ec2873b0fd Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Wed, 17 Sep 2025 11:03:07 +0900 Subject: [PATCH 02/33] um: decouple MMU specific code from the common part This splits the memory, process related code with common and MMU specific parts in order to avoid ifdefs in .c file and duplication between MMU and !MMU. Signed-off-by: Hajime Tazaki --- arch/um/kernel/Makefile | 5 +- arch/um/kernel/mem-pgtable.c | 55 ++++++++++++++ arch/um/kernel/mem.c | 35 --------- arch/um/kernel/process.c | 38 ++++++++++ arch/um/kernel/skas/process.c | 37 --------- arch/um/os-Linux/Makefile | 3 +- arch/um/os-Linux/process.c | 129 ++++++++++++++++++++++++++++++++ arch/um/os-Linux/skas/process.c | 128 +------------------------------ 8 files changed, 228 insertions(+), 202 deletions(-) create mode 100644 arch/um/kernel/mem-pgtable.c diff --git a/arch/um/kernel/Makefile b/arch/um/kernel/Makefile index be60bc451b3f9b..76d36751973ee4 100644 --- a/arch/um/kernel/Makefile +++ b/arch/um/kernel/Makefile @@ -16,9 +16,10 @@ always-$(KBUILD_BUILTIN) := vmlinux.lds obj-y = config.o exec.o exitcode.o irq.o ksyms.o mem.o \ physmem.o process.o ptrace.o reboot.o sigio.o \ - signal.o sysrq.o time.o tlb.o trap.o \ - um_arch.o umid.o kmsg_dump.o capflags.o skas/ + signal.o sysrq.o time.o \ + um_arch.o umid.o kmsg_dump.o capflags.o obj-y += load_file.o +obj-$(CONFIG_MMU) += mem-pgtable.o tlb.o trap.o skas/ obj-$(CONFIG_BLK_DEV_INITRD) += initrd.o obj-$(CONFIG_GPROF) += gprof_syms.o diff --git a/arch/um/kernel/mem-pgtable.c b/arch/um/kernel/mem-pgtable.c new file mode 100644 index 00000000000000..549da1d3bff083 --- /dev/null +++ b/arch/um/kernel/mem-pgtable.c @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +/* Allocate and free page tables. */ + +pgd_t *pgd_alloc(struct mm_struct *mm) +{ + pgd_t *pgd = (pgd_t *)__get_free_page(GFP_KERNEL); + + if (pgd) { + memset(pgd, 0, USER_PTRS_PER_PGD * sizeof(pgd_t)); + memcpy(pgd + USER_PTRS_PER_PGD, + swapper_pg_dir + USER_PTRS_PER_PGD, + (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t)); + } + return pgd; +} + +static const pgprot_t protection_map[16] = { + [VM_NONE] = PAGE_NONE, + [VM_READ] = PAGE_READONLY, + [VM_WRITE] = PAGE_COPY, + [VM_WRITE | VM_READ] = PAGE_COPY, + [VM_EXEC] = PAGE_READONLY, + [VM_EXEC | VM_READ] = PAGE_READONLY, + [VM_EXEC | VM_WRITE] = PAGE_COPY, + [VM_EXEC | VM_WRITE | VM_READ] = PAGE_COPY, + [VM_SHARED] = PAGE_NONE, + [VM_SHARED | VM_READ] = PAGE_READONLY, + [VM_SHARED | VM_WRITE] = PAGE_SHARED, + [VM_SHARED | VM_WRITE | VM_READ] = PAGE_SHARED, + [VM_SHARED | VM_EXEC] = PAGE_READONLY, + [VM_SHARED | VM_EXEC | VM_READ] = PAGE_READONLY, + [VM_SHARED | VM_EXEC | VM_WRITE] = PAGE_SHARED, + [VM_SHARED | VM_EXEC | VM_WRITE | VM_READ] = PAGE_SHARED +}; +DECLARE_VM_GET_PAGE_PROT diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c index 89c8c8b94a7967..63ab8321741dd2 100644 --- a/arch/um/kernel/mem.c +++ b/arch/um/kernel/mem.c @@ -6,7 +6,6 @@ #include #include #include -#include #include #include #include @@ -107,45 +106,11 @@ void free_initmem(void) { } -/* Allocate and free page tables. */ - -pgd_t *pgd_alloc(struct mm_struct *mm) -{ - pgd_t *pgd = __pgd_alloc(mm, 0); - - if (pgd) - memcpy(pgd + USER_PTRS_PER_PGD, - swapper_pg_dir + USER_PTRS_PER_PGD, - (PTRS_PER_PGD - USER_PTRS_PER_PGD) * sizeof(pgd_t)); - - return pgd; -} - void *uml_kmalloc(int size, int flags) { return kmalloc(size, flags); } -static const pgprot_t protection_map[16] = { - [VM_NONE] = PAGE_NONE, - [VM_READ] = PAGE_READONLY, - [VM_WRITE] = PAGE_COPY, - [VM_WRITE | VM_READ] = PAGE_COPY, - [VM_EXEC] = PAGE_READONLY, - [VM_EXEC | VM_READ] = PAGE_READONLY, - [VM_EXEC | VM_WRITE] = PAGE_COPY, - [VM_EXEC | VM_WRITE | VM_READ] = PAGE_COPY, - [VM_SHARED] = PAGE_NONE, - [VM_SHARED | VM_READ] = PAGE_READONLY, - [VM_SHARED | VM_WRITE] = PAGE_SHARED, - [VM_SHARED | VM_WRITE | VM_READ] = PAGE_SHARED, - [VM_SHARED | VM_EXEC] = PAGE_READONLY, - [VM_SHARED | VM_EXEC | VM_READ] = PAGE_READONLY, - [VM_SHARED | VM_EXEC | VM_WRITE] = PAGE_SHARED, - [VM_SHARED | VM_EXEC | VM_WRITE | VM_READ] = PAGE_SHARED -}; -DECLARE_VM_GET_PAGE_PROT - void mark_rodata_ro(void) { unsigned long rodata_start = PFN_ALIGN(__start_rodata); diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index 63b38a3f73f78d..b07c1f120910e0 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -307,3 +308,40 @@ unsigned long __get_wchan(struct task_struct *p) return 0; } + +extern void start_kernel(void); + +static int __init start_kernel_proc(void *unused) +{ + block_signals_trace(); + + start_kernel(); + return 0; +} + +char cpu_irqstacks[NR_CPUS][THREAD_SIZE] __aligned(THREAD_SIZE); + +int __init start_uml(void) +{ + stack_protections((unsigned long) &cpu_irqstacks[0]); + set_sigstack(cpu_irqstacks[0], THREAD_SIZE); + + init_new_thread_signals(); + + init_task.thread.request.thread.proc = start_kernel_proc; + init_task.thread.request.thread.arg = NULL; + return start_idle_thread(task_stack_page(&init_task), + &init_task.thread.switch_buf); +} + +static DEFINE_SPINLOCK(initial_jmpbuf_spinlock); + +void initial_jmpbuf_lock(void) +{ + spin_lock_irq(&initial_jmpbuf_spinlock); +} + +void initial_jmpbuf_unlock(void) +{ + spin_unlock_irq(&initial_jmpbuf_spinlock); +} diff --git a/arch/um/kernel/skas/process.c b/arch/um/kernel/skas/process.c index 4a7673b0261a88..d643854942bc49 100644 --- a/arch/um/kernel/skas/process.c +++ b/arch/um/kernel/skas/process.c @@ -17,31 +17,6 @@ #include #include -extern void start_kernel(void); - -static int __init start_kernel_proc(void *unused) -{ - block_signals_trace(); - - start_kernel(); - return 0; -} - -char cpu_irqstacks[NR_CPUS][THREAD_SIZE] __aligned(THREAD_SIZE); - -int __init start_uml(void) -{ - stack_protections((unsigned long) &cpu_irqstacks[0]); - set_sigstack(cpu_irqstacks[0], THREAD_SIZE); - - init_new_thread_signals(); - - init_task.thread.request.thread.proc = start_kernel_proc; - init_task.thread.request.thread.arg = NULL; - return start_idle_thread(task_stack_page(&init_task), - &init_task.thread.switch_buf); -} - unsigned long current_stub_stack(void) { if (current->mm == NULL) @@ -65,15 +40,3 @@ void current_mm_sync(void) um_tlb_sync(current->mm); } - -static DEFINE_SPINLOCK(initial_jmpbuf_spinlock); - -void initial_jmpbuf_lock(void) -{ - spin_lock_irq(&initial_jmpbuf_spinlock); -} - -void initial_jmpbuf_unlock(void) -{ - spin_unlock_irq(&initial_jmpbuf_spinlock); -} diff --git a/arch/um/os-Linux/Makefile b/arch/um/os-Linux/Makefile index f8d672d570d9b6..40e3e0eab6a056 100644 --- a/arch/um/os-Linux/Makefile +++ b/arch/um/os-Linux/Makefile @@ -8,7 +8,8 @@ KCOV_INSTRUMENT := n obj-y = elf_aux.o execvp.o file.o helper.o irq.o main.o mem.o process.o \ registers.o sigio.o signal.o start_up.o time.o tty.o \ - umid.o user_syms.o util.o skas/ + umid.o user_syms.o util.o +obj-$(CONFIG_MMU) += skas/ CFLAGS_signal.o += -Wframe-larger-than=4096 diff --git a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c index 3a2a84ab93257d..734d143417c8d5 100644 --- a/arch/um/os-Linux/process.c +++ b/arch/um/os-Linux/process.c @@ -6,6 +6,7 @@ #include #include +#include #include #include #include @@ -17,10 +18,16 @@ #include #include #include +#include #include #include #include #include +#include +#include + +int using_seccomp; +int unscheduled_userspace_iterations; void os_alarm_process(int pid) { @@ -209,3 +216,125 @@ int os_futex_wake(void *uaddr) NULL, NULL, 0)); return r < 0 ? -errno : r; } + +int is_skas_winch(int pid, int fd, void *data) +{ + return pid == getpgrp(); +} + +void new_thread(void *stack, jmp_buf *buf, void (*handler)(void)) +{ + (*buf)[0].JB_IP = (unsigned long) handler; + (*buf)[0].JB_SP = (unsigned long) stack + UM_THREAD_SIZE - + sizeof(void *); +} + +#define INIT_JMP_NEW_THREAD 0 +#define INIT_JMP_CALLBACK 1 +#define INIT_JMP_HALT 2 +#define INIT_JMP_REBOOT 3 + +void switch_threads(jmp_buf *me, jmp_buf *you) +{ + unscheduled_userspace_iterations = 0; + + if (UML_SETJMP(me) == 0) + UML_LONGJMP(you, 1); +} + +static jmp_buf initial_jmpbuf; + +static __thread void (*cb_proc)(void *arg); +static __thread void *cb_arg; +static __thread jmp_buf *cb_back; + +int start_idle_thread(void *stack, jmp_buf *switch_buf) +{ + int n; + + set_handler(SIGWINCH); + + /* + * Can't use UML_SETJMP or UML_LONGJMP here because they save + * and restore signals, with the possible side-effect of + * trying to handle any signals which came when they were + * blocked, which can't be done on this stack. + * Signals must be blocked when jumping back here and restored + * after returning to the jumper. + */ + n = setjmp(initial_jmpbuf); + switch (n) { + case INIT_JMP_NEW_THREAD: + (*switch_buf)[0].JB_IP = (unsigned long) uml_finishsetup; + (*switch_buf)[0].JB_SP = (unsigned long) stack + + UM_THREAD_SIZE - sizeof(void *); + break; + case INIT_JMP_CALLBACK: + (*cb_proc)(cb_arg); + longjmp(*cb_back, 1); + break; + case INIT_JMP_HALT: + kmalloc_ok = 0; + return 0; + case INIT_JMP_REBOOT: + kmalloc_ok = 0; + return 1; + default: + printk(UM_KERN_ERR "Bad sigsetjmp return in %s - %d\n", + __func__, n); + fatal_sigsegv(); + } + longjmp(*switch_buf, 1); + + /* unreachable */ + printk(UM_KERN_ERR "impossible long jump!"); + fatal_sigsegv(); + return 0; +} + +void initial_thread_cb_skas(void (*proc)(void *), void *arg) +{ + jmp_buf here; + + cb_proc = proc; + cb_arg = arg; + cb_back = &here; + + initial_jmpbuf_lock(); + if (UML_SETJMP(&here) == 0) + UML_LONGJMP(&initial_jmpbuf, INIT_JMP_CALLBACK); + initial_jmpbuf_unlock(); + + cb_proc = NULL; + cb_arg = NULL; + cb_back = NULL; +} + +void halt_skas(void) +{ + initial_jmpbuf_lock(); + UML_LONGJMP(&initial_jmpbuf, INIT_JMP_HALT); + /* unreachable */ +} + +static bool noreboot; + +static int __init noreboot_cmd_param(char *str, int *add) +{ + *add = 0; + noreboot = true; + return 0; +} + +__uml_setup("noreboot", noreboot_cmd_param, +"noreboot\n" +" Rather than rebooting, exit always, akin to QEMU's -no-reboot option.\n" +" This is useful if you're using CONFIG_PANIC_TIMEOUT in order to catch\n" +" crashes in CI\n\n"); + +void reboot_skas(void) +{ + initial_jmpbuf_lock(); + UML_LONGJMP(&initial_jmpbuf, noreboot ? INIT_JMP_HALT : INIT_JMP_REBOOT); + /* unreachable */ +} diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c index d6c22f8aa06d1c..0ebde3d488d668 100644 --- a/arch/um/os-Linux/skas/process.c +++ b/arch/um/os-Linux/skas/process.c @@ -18,7 +18,6 @@ #include #include #include -#include #include #include #include @@ -29,16 +28,10 @@ #include #include #include -#include #include #include #include "../internal.h" -int is_skas_winch(int pid, int fd, void *data) -{ - return pid == getpgrp(); -} - static const char *ptrace_reg_name(int idx) { #define R(n) case HOST_##n: return #n @@ -426,8 +419,6 @@ static int __init init_stub_exe_fd(void) } __initcall(init_stub_exe_fd); -int using_seccomp; - /** * start_userspace() - prepare a new userspace process * @mm_id: The corresponding struct mm_id @@ -540,7 +531,7 @@ int start_userspace(struct mm_id *mm_id) return err; } -static int unscheduled_userspace_iterations; +extern int unscheduled_userspace_iterations; extern unsigned long tt_extra_sched_jiffies; void userspace(struct uml_pt_regs *regs) @@ -789,120 +780,3 @@ void userspace(struct uml_pt_regs *regs) } } } - -void new_thread(void *stack, jmp_buf *buf, void (*handler)(void)) -{ - (*buf)[0].JB_IP = (unsigned long) handler; - (*buf)[0].JB_SP = (unsigned long) stack + UM_THREAD_SIZE - - sizeof(void *); -} - -#define INIT_JMP_NEW_THREAD 0 -#define INIT_JMP_CALLBACK 1 -#define INIT_JMP_HALT 2 -#define INIT_JMP_REBOOT 3 - -void switch_threads(jmp_buf *me, jmp_buf *you) -{ - unscheduled_userspace_iterations = 0; - - if (UML_SETJMP(me) == 0) - UML_LONGJMP(you, 1); -} - -static jmp_buf initial_jmpbuf; - -static __thread void (*cb_proc)(void *arg); -static __thread void *cb_arg; -static __thread jmp_buf *cb_back; - -int start_idle_thread(void *stack, jmp_buf *switch_buf) -{ - int n; - - set_handler(SIGWINCH); - - /* - * Can't use UML_SETJMP or UML_LONGJMP here because they save - * and restore signals, with the possible side-effect of - * trying to handle any signals which came when they were - * blocked, which can't be done on this stack. - * Signals must be blocked when jumping back here and restored - * after returning to the jumper. - */ - n = setjmp(initial_jmpbuf); - switch (n) { - case INIT_JMP_NEW_THREAD: - (*switch_buf)[0].JB_IP = (unsigned long) uml_finishsetup; - (*switch_buf)[0].JB_SP = (unsigned long) stack + - UM_THREAD_SIZE - sizeof(void *); - break; - case INIT_JMP_CALLBACK: - (*cb_proc)(cb_arg); - longjmp(*cb_back, 1); - break; - case INIT_JMP_HALT: - kmalloc_ok = 0; - return 0; - case INIT_JMP_REBOOT: - kmalloc_ok = 0; - return 1; - default: - printk(UM_KERN_ERR "Bad sigsetjmp return in %s - %d\n", - __func__, n); - fatal_sigsegv(); - } - longjmp(*switch_buf, 1); - - /* unreachable */ - printk(UM_KERN_ERR "impossible long jump!"); - fatal_sigsegv(); - return 0; -} - -void initial_thread_cb_skas(void (*proc)(void *), void *arg) -{ - jmp_buf here; - - cb_proc = proc; - cb_arg = arg; - cb_back = &here; - - initial_jmpbuf_lock(); - if (UML_SETJMP(&here) == 0) - UML_LONGJMP(&initial_jmpbuf, INIT_JMP_CALLBACK); - initial_jmpbuf_unlock(); - - cb_proc = NULL; - cb_arg = NULL; - cb_back = NULL; -} - -void halt_skas(void) -{ - initial_jmpbuf_lock(); - UML_LONGJMP(&initial_jmpbuf, INIT_JMP_HALT); - /* unreachable */ -} - -static bool noreboot; - -static int __init noreboot_cmd_param(char *str, int *add) -{ - *add = 0; - noreboot = true; - return 0; -} - -__uml_setup("noreboot", noreboot_cmd_param, -"noreboot\n" -" Rather than rebooting, exit always, akin to QEMU's -no-reboot option.\n" -" This is useful if you're using CONFIG_PANIC_TIMEOUT in order to catch\n" -" crashes in CI\n\n"); - -void reboot_skas(void) -{ - initial_jmpbuf_lock(); - UML_LONGJMP(&initial_jmpbuf, noreboot ? INIT_JMP_HALT : INIT_JMP_REBOOT); - /* unreachable */ -} From c9f83267f348a8e9fb861b9452a97115ae69b183 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Sat, 7 Dec 2024 20:01:28 +0900 Subject: [PATCH 03/33] um: nommu: memory handling This commit adds memory operations on UML under !MMU environment. Some part of the original UML code relying on CONFIG_MMU are excluded from compilation when !CONFIG_MMU. Additionally, generic functions such as uaccess, futex, memcpy/strnlen/strncpy can be used as user- and kernel-space share the address space in !CONFIG_MMU mode. Signed-off-by: Hajime Tazaki Signed-off-by: Ricardo Koller --- arch/um/Makefile | 4 ++++ arch/um/include/asm/futex.h | 4 ++++ arch/um/include/asm/mmu.h | 3 +++ arch/um/include/asm/mmu_context.h | 2 ++ arch/um/include/asm/uaccess.h | 7 ++++--- arch/um/kernel/mem.c | 3 ++- arch/um/os-Linux/mem.c | 4 ++++ arch/um/os-Linux/process.c | 4 ++-- 8 files changed, 25 insertions(+), 6 deletions(-) diff --git a/arch/um/Makefile b/arch/um/Makefile index 721b652ffb6584..5e9bf2a8aa6d4a 100644 --- a/arch/um/Makefile +++ b/arch/um/Makefile @@ -46,6 +46,10 @@ ARCH_INCLUDE := -I$(srctree)/$(SHARED_HEADERS) ARCH_INCLUDE += -I$(srctree)/$(HOST_DIR)/um/shared KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/um +ifneq ($(CONFIG_MMU),y) +core-y += $(ARCH_DIR)/nommu/ +endif + # -Dstrrchr=kernel_strrchr (as well as the various in6addr symbols) prevents # anything from referencing # libc symbols with the same name, which can cause a linker error. diff --git a/arch/um/include/asm/futex.h b/arch/um/include/asm/futex.h index 780aa6bfc050c2..785fd6649aa26f 100644 --- a/arch/um/include/asm/futex.h +++ b/arch/um/include/asm/futex.h @@ -7,8 +7,12 @@ #include +#ifdef CONFIG_MMU int arch_futex_atomic_op_inuser(int op, u32 oparg, int *oval, u32 __user *uaddr); int futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, u32 oldval, u32 newval); +#else +#include +#endif #endif diff --git a/arch/um/include/asm/mmu.h b/arch/um/include/asm/mmu.h index 82a919132aff75..c0b9ce3215c431 100644 --- a/arch/um/include/asm/mmu.h +++ b/arch/um/include/asm/mmu.h @@ -22,10 +22,13 @@ typedef struct mm_context { unsigned long sync_tlb_range_from; unsigned long sync_tlb_range_to; +#ifndef CONFIG_MMU + unsigned long end_brk; #ifdef CONFIG_BINFMT_ELF_FDPIC unsigned long exec_fdpic_loadmap; unsigned long interp_fdpic_loadmap; #endif +#endif /* !CONFIG_MMU */ } mm_context_t; #define INIT_MM_CONTEXT(mm) \ diff --git a/arch/um/include/asm/mmu_context.h b/arch/um/include/asm/mmu_context.h index c727e56ba116ce..528b217da285b0 100644 --- a/arch/um/include/asm/mmu_context.h +++ b/arch/um/include/asm/mmu_context.h @@ -18,11 +18,13 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, { } +#ifdef CONFIG_MMU #define init_new_context init_new_context extern int init_new_context(struct task_struct *task, struct mm_struct *mm); #define destroy_context destroy_context extern void destroy_context(struct mm_struct *mm); +#endif #include diff --git a/arch/um/include/asm/uaccess.h b/arch/um/include/asm/uaccess.h index 0df9ea4abda830..031b357800b785 100644 --- a/arch/um/include/asm/uaccess.h +++ b/arch/um/include/asm/uaccess.h @@ -18,6 +18,7 @@ #define __addr_range_nowrap(addr, size) \ ((unsigned long) (addr) <= ((unsigned long) (addr) + (size))) +#ifdef CONFIG_MMU extern unsigned long raw_copy_from_user(void *to, const void __user *from, unsigned long n); extern unsigned long raw_copy_to_user(void __user *to, const void *from, unsigned long n); extern unsigned long __clear_user(void __user *mem, unsigned long len); @@ -29,9 +30,6 @@ static inline int __access_ok(const void __user *ptr, unsigned long size); #define INLINE_COPY_FROM_USER #define INLINE_COPY_TO_USER - -#include - static inline int __access_ok(const void __user *ptr, unsigned long size) { unsigned long addr = (unsigned long)ptr; @@ -63,5 +61,8 @@ do { \ barrier(); \ current->thread.segv_continue = NULL; \ } while (0) +#endif + +#include #endif diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c index 63ab8321741dd2..2c728fe3de0b4d 100644 --- a/arch/um/kernel/mem.c +++ b/arch/um/kernel/mem.c @@ -71,7 +71,8 @@ void __init arch_mm_preinit(void) * to be turned on. */ brk_end = PAGE_ALIGN((unsigned long) sbrk(0)); - map_memory(brk_end, __pa(brk_end), uml_reserved - brk_end, 1, 1, 0); + map_memory(brk_end, __pa(brk_end), uml_reserved - brk_end, 1, 1, + !IS_ENABLED(CONFIG_MMU)); memblock_free((void *)brk_end, uml_reserved - brk_end); uml_reserved = brk_end; min_low_pfn = PFN_UP(__pa(uml_reserved)); diff --git a/arch/um/os-Linux/mem.c b/arch/um/os-Linux/mem.c index 72f302f4d197f8..4f5d9a94f8e200 100644 --- a/arch/um/os-Linux/mem.c +++ b/arch/um/os-Linux/mem.c @@ -213,6 +213,10 @@ int __init create_mem_file(unsigned long long len) { int err, fd; + /* NOMMU kernel uses -1 as a fd for further use (e.g., mmap) */ + if (!IS_ENABLED(CONFIG_MMU)) + return -1; + fd = create_tmp_file(len); err = os_set_exec_close(fd); diff --git a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c index 734d143417c8d5..b338a89ecf1e55 100644 --- a/arch/um/os-Linux/process.c +++ b/arch/um/os-Linux/process.c @@ -100,8 +100,8 @@ int os_map_memory(void *virt, int fd, unsigned long long off, unsigned long len, prot = (r ? PROT_READ : 0) | (w ? PROT_WRITE : 0) | (x ? PROT_EXEC : 0); - loc = mmap64((void *) virt, len, prot, MAP_SHARED | MAP_FIXED, - fd, off); + loc = mmap64((void *) virt, len, prot, MAP_SHARED | MAP_FIXED | + (!IS_ENABLED(CONFIG_MMU) ? MAP_ANONYMOUS : 0), fd, off); if (loc == MAP_FAILED) return -errno; return 0; From ef27e165566771b21460e90388644512806335d3 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Sat, 21 Jun 2025 21:46:15 +0900 Subject: [PATCH 04/33] x86/um: nommu: syscall handling This commit introduces an entry point of syscall interface for !MMU mode. It uses an entry function, __kernel_vsyscall, a kernel-wide global symbol accessible from any locations. Although it isn't in the scope of this commit, it can be also exposed via vdso image which is directly accessible from userspace. A standard library (i.e., libc) can utilize this entry point to implement syscall wrapper; we can also use this by hooking syscall for unmodified userspace applications/libraries, which will be implemented in the subsequent commit. This only supports 64-bit mode of x86 architecture. Signed-off-by: Hajime Tazaki Signed-off-by: Ricardo Koller --- arch/x86/um/Makefile | 4 ++ arch/x86/um/asm/syscall.h | 6 ++ arch/x86/um/nommu/Makefile | 8 +++ arch/x86/um/nommu/do_syscall_64.c | 32 +++++++++ arch/x86/um/nommu/entry_64.S | 112 ++++++++++++++++++++++++++++++ arch/x86/um/nommu/syscalls.h | 16 +++++ 6 files changed, 178 insertions(+) create mode 100644 arch/x86/um/nommu/Makefile create mode 100644 arch/x86/um/nommu/do_syscall_64.c create mode 100644 arch/x86/um/nommu/entry_64.S create mode 100644 arch/x86/um/nommu/syscalls.h diff --git a/arch/x86/um/Makefile b/arch/x86/um/Makefile index f9ea75bf43aca3..39693807755a0c 100644 --- a/arch/x86/um/Makefile +++ b/arch/x86/um/Makefile @@ -31,6 +31,10 @@ obj-y += mem_64.o syscalls_64.o vdso/ subarch-y = ../lib/csum-partial_64.o ../lib/memcpy_64.o \ ../lib/memmove_64.o ../lib/memset_64.o +ifneq ($(CONFIG_MMU),y) +obj-y += nommu/ +endif + endif subarch-$(CONFIG_MODULES) += ../kernel/module.o diff --git a/arch/x86/um/asm/syscall.h b/arch/x86/um/asm/syscall.h index d6208d0fad51a9..bb4f6f01166796 100644 --- a/arch/x86/um/asm/syscall.h +++ b/arch/x86/um/asm/syscall.h @@ -20,4 +20,10 @@ static inline int syscall_get_arch(struct task_struct *task) #endif } +#ifndef CONFIG_MMU +extern void do_syscall_64(struct pt_regs *regs); +extern long __kernel_vsyscall(int64_t a0, int64_t a1, int64_t a2, int64_t a3, + int64_t a4, int64_t a5, int64_t a6); +#endif + #endif /* __UM_ASM_SYSCALL_H */ diff --git a/arch/x86/um/nommu/Makefile b/arch/x86/um/nommu/Makefile new file mode 100644 index 00000000000000..d72c63afffa546 --- /dev/null +++ b/arch/x86/um/nommu/Makefile @@ -0,0 +1,8 @@ +# SPDX-License-Identifier: GPL-2.0 +ifeq ($(CONFIG_X86_32),y) + BITS := 32 +else + BITS := 64 +endif + +obj-y = do_syscall_$(BITS).o entry_$(BITS).o diff --git a/arch/x86/um/nommu/do_syscall_64.c b/arch/x86/um/nommu/do_syscall_64.c new file mode 100644 index 00000000000000..292d7c5786224f --- /dev/null +++ b/arch/x86/um/nommu/do_syscall_64.c @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include + +__visible void do_syscall_64(struct pt_regs *regs) +{ + int syscall; + + syscall = PT_SYSCALL_NR(regs->regs.gp); + UPT_SYSCALL_NR(®s->regs) = syscall; + + if (likely(syscall < NR_syscalls)) { + unsigned long ret; + + ret = (*sys_call_table[syscall])(UPT_SYSCALL_ARG1(®s->regs), + UPT_SYSCALL_ARG2(®s->regs), + UPT_SYSCALL_ARG3(®s->regs), + UPT_SYSCALL_ARG4(®s->regs), + UPT_SYSCALL_ARG5(®s->regs), + UPT_SYSCALL_ARG6(®s->regs)); + PT_REGS_SET_SYSCALL_RETURN(regs, ret); + } + + PT_REGS_SYSCALL_RET(regs) = regs->regs.gp[HOST_AX]; + + /* handle tasks and signals at the end */ + interrupt_end(); +} diff --git a/arch/x86/um/nommu/entry_64.S b/arch/x86/um/nommu/entry_64.S new file mode 100644 index 00000000000000..485c578aae645b --- /dev/null +++ b/arch/x86/um/nommu/entry_64.S @@ -0,0 +1,112 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#include + +#include +#include +#include + +#include "../entry/calling.h" + +#ifdef CONFIG_SMP +#error need to stash these variables somewhere else +#endif + +#define UM_GLOBAL_VAR(x) .data; .align 8; .globl x; x:; .long 0 + +UM_GLOBAL_VAR(current_top_of_stack) +UM_GLOBAL_VAR(current_ptregs) + +.code64 +.section .entry.text, "ax" + +.align 8 +#undef ENTRY +#define ENTRY(x) .text; .globl x; .type x,%function; x: +#undef END +#define END(x) .size x, . - x + +/* + * %rcx has the return address (we set it before entering __kernel_vsyscall). + * + * Registers on entry: + * rax system call number + * rcx return address + * rdi arg0 + * rsi arg1 + * rdx arg2 + * r10 arg3 + * r8 arg4 + * r9 arg5 + * + * (note: we are allowed to mess with r11: r11 is callee-clobbered + * register in C ABI) + */ +ENTRY(__kernel_vsyscall) + + movq %rsp, %r11 + + /* Point rsp to the top of the ptregs array, so we can + just fill it with a bunch of push'es. */ + movq current_ptregs, %rsp + + /* 8 bytes * 20 registers (plus 8 for the push) */ + addq $168, %rsp + + /* Construct struct pt_regs on stack */ + pushq $0 /* pt_regs->ss (index 20) */ + pushq %r11 /* pt_regs->sp */ + pushfq /* pt_regs->flags */ + pushq $0 /* pt_regs->cs */ + pushq %rcx /* pt_regs->ip */ + pushq %rax /* pt_regs->orig_ax */ + + PUSH_AND_CLEAR_REGS rax=$-ENOSYS + + mov %rsp, %rdi + + /* + * Switch to current top of stack, so "current->" points + * to the right task. + */ + movq current_top_of_stack, %rsp + + call do_syscall_64 + + jmp userspace + +END(__kernel_vsyscall) + +/* + * common userspace returning routine + * + * all procedures like syscalls, signal handlers, umh processes, will gate + * this routine to properly configure registers/stacks. + * + * void userspace(struct uml_pt_regs *regs) + */ +ENTRY(userspace) + + /* clear direction flag to meet ABI */ + cld + /* align the stack for x86_64 ABI */ + and $-0x10, %rsp + /* Handle any immediate reschedules or signals */ + call interrupt_end + + movq current_ptregs, %rsp + + POP_REGS + + addq $8, %rsp /* skip orig_ax */ + popq %rcx /* pt_regs->ip */ + addq $8, %rsp /* skip cs */ + addq $8, %rsp /* skip flags */ + popq %rsp + + /* + * not return w/ ret but w/ jmp as the stack is already popped before + * entering __kernel_vsyscall + */ + jmp *%rcx + +END(userspace) diff --git a/arch/x86/um/nommu/syscalls.h b/arch/x86/um/nommu/syscalls.h new file mode 100644 index 00000000000000..a2433756b1fc70 --- /dev/null +++ b/arch/x86/um/nommu/syscalls.h @@ -0,0 +1,16 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#ifndef __UM_NOMMU_SYSCALLS_H +#define __UM_NOMMU_SYSCALLS_H + + +#define task_top_of_stack(task) \ +({ \ + unsigned long __ptr = (unsigned long)task->stack; \ + __ptr += THREAD_SIZE; \ + __ptr; \ +}) + +extern long current_top_of_stack; +extern long current_ptregs; + +#endif From ae93b4246f8383dfe2c598f2f0e8584011aabd3d Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Mon, 9 Jun 2025 10:03:19 +0900 Subject: [PATCH 05/33] um: nommu: seccomp syscalls hook This commit adds syscall hook with seccomp. Using seccomp raises SIGSYS to UML process, which is captured in the (UML) kernel, then jumps to the syscall entry point, __kernel_vsyscall, to hook the original syscall instructions. The SIGSYS signal is raised upon the execution from uml_reserved and high_physmem, which locates userspace memory. It also renames existing static function, sigsys_handler(), in start_up.c to avoid name conflicts between them. Signed-off-by: Hajime Tazaki Signed-off-by: Kenichi Yasukata --- arch/um/include/shared/kern_util.h | 2 + arch/um/include/shared/os.h | 10 +++ arch/um/kernel/um_arch.c | 3 + arch/um/nommu/Makefile | 3 + arch/um/nommu/os-Linux/Makefile | 7 +++ arch/um/nommu/os-Linux/seccomp.c | 87 +++++++++++++++++++++++++++ arch/um/nommu/os-Linux/signal.c | 16 +++++ arch/um/os-Linux/signal.c | 8 +++ arch/um/os-Linux/start_up.c | 4 +- arch/x86/um/nommu/Makefile | 2 +- arch/x86/um/nommu/os-Linux/Makefile | 6 ++ arch/x86/um/nommu/os-Linux/mcontext.c | 15 +++++ arch/x86/um/shared/sysdep/mcontext.h | 4 ++ 13 files changed, 164 insertions(+), 3 deletions(-) create mode 100644 arch/um/nommu/Makefile create mode 100644 arch/um/nommu/os-Linux/Makefile create mode 100644 arch/um/nommu/os-Linux/seccomp.c create mode 100644 arch/um/nommu/os-Linux/signal.c create mode 100644 arch/x86/um/nommu/os-Linux/Makefile create mode 100644 arch/x86/um/nommu/os-Linux/mcontext.c diff --git a/arch/um/include/shared/kern_util.h b/arch/um/include/shared/kern_util.h index 38321188c04c4c..7798f16a467775 100644 --- a/arch/um/include/shared/kern_util.h +++ b/arch/um/include/shared/kern_util.h @@ -63,6 +63,8 @@ extern void segv_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs extern void winch(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs, void *mc); extern void fatal_sigsegv(void) __attribute__ ((noreturn)); +extern void sigsys_handler(int sig, struct siginfo *si, struct uml_pt_regs *regs, + void *mc); void um_idle_sleep(void); diff --git a/arch/um/include/shared/os.h b/arch/um/include/shared/os.h index b26e94292fc14d..5451f9b1f41efe 100644 --- a/arch/um/include/shared/os.h +++ b/arch/um/include/shared/os.h @@ -356,4 +356,14 @@ static inline void os_local_ipi_enable(void) { } static inline void os_local_ipi_disable(void) { } #endif /* CONFIG_SMP */ +/* seccomp.c */ +#ifdef CONFIG_MMU +static inline int os_setup_seccomp(void) +{ + return 0; +} +#else +extern int os_setup_seccomp(void); +#endif + #endif diff --git a/arch/um/kernel/um_arch.c b/arch/um/kernel/um_arch.c index e2b24e1ecfa649..27c13423d9aa80 100644 --- a/arch/um/kernel/um_arch.c +++ b/arch/um/kernel/um_arch.c @@ -423,6 +423,9 @@ void __init setup_arch(char **cmdline_p) add_bootloader_randomness(rng_seed, sizeof(rng_seed)); memzero_explicit(rng_seed, sizeof(rng_seed)); } + + /* install seccomp filter */ + os_setup_seccomp(); } void __init arch_cpu_finalize_init(void) diff --git a/arch/um/nommu/Makefile b/arch/um/nommu/Makefile new file mode 100644 index 00000000000000..baab7c2f57c2d4 --- /dev/null +++ b/arch/um/nommu/Makefile @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-y := os-Linux/ diff --git a/arch/um/nommu/os-Linux/Makefile b/arch/um/nommu/os-Linux/Makefile new file mode 100644 index 00000000000000..805e26ccf63b0a --- /dev/null +++ b/arch/um/nommu/os-Linux/Makefile @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-y := seccomp.o signal.o +USER_OBJS := $(obj-y) + +include $(srctree)/arch/um/scripts/Makefile.rules +USER_CFLAGS+=-I$(srctree)/arch/um/os-Linux diff --git a/arch/um/nommu/os-Linux/seccomp.c b/arch/um/nommu/os-Linux/seccomp.c new file mode 100644 index 00000000000000..d1cfa6e3d63222 --- /dev/null +++ b/arch/um/nommu/os-Linux/seccomp.c @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include +#include +#include /* For SYS_xxx definitions */ +#include +#include +#include +#include +#include + +int __init os_setup_seccomp(void) +{ + int err; + unsigned long __userspace_start = uml_reserved, + __userspace_end = high_physmem; + + struct sock_filter filter[] = { + /* if (IP_high > __userspace_end) allow; */ + BPF_STMT(BPF_LD + BPF_W + BPF_ABS, + offsetof(struct seccomp_data, instruction_pointer) + 4), + BPF_JUMP(BPF_JMP + BPF_JGT + BPF_K, __userspace_end >> 32, + /*true-skip=*/0, /*false-skip=*/1), + BPF_STMT(BPF_RET + BPF_K, SECCOMP_RET_ALLOW), + + /* if (IP_high == __userspace_end && IP_low >= __userspace_end) allow; */ + BPF_STMT(BPF_LD + BPF_W + BPF_ABS, + offsetof(struct seccomp_data, instruction_pointer) + 4), + BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, __userspace_end >> 32, + /*true-skip=*/0, /*false-skip=*/3), + BPF_STMT(BPF_LD + BPF_W + BPF_ABS, + offsetof(struct seccomp_data, instruction_pointer)), + BPF_JUMP(BPF_JMP + BPF_JGE + BPF_K, __userspace_end, + /*true-skip=*/0, /*false-skip=*/1), + BPF_STMT(BPF_RET + BPF_K, SECCOMP_RET_ALLOW), + + /* if (IP_high < __userspace_start) allow; */ + BPF_STMT(BPF_LD + BPF_W + BPF_ABS, + offsetof(struct seccomp_data, instruction_pointer) + 4), + BPF_JUMP(BPF_JMP + BPF_JGE + BPF_K, __userspace_start >> 32, + /*true-skip=*/1, /*false-skip=*/0), + BPF_STMT(BPF_RET + BPF_K, SECCOMP_RET_ALLOW), + + /* if (IP_high == __userspace_start && IP_low < __userspace_start) allow; */ + BPF_STMT(BPF_LD + BPF_W + BPF_ABS, + offsetof(struct seccomp_data, instruction_pointer) + 4), + BPF_JUMP(BPF_JMP + BPF_JEQ + BPF_K, __userspace_start >> 32, + /*true-skip=*/0, /*false-skip=*/3), + BPF_STMT(BPF_LD + BPF_W + BPF_ABS, + offsetof(struct seccomp_data, instruction_pointer)), + BPF_JUMP(BPF_JMP + BPF_JGE + BPF_K, __userspace_start, + /*true-skip=*/1, /*false-skip=*/0), + BPF_STMT(BPF_RET + BPF_K, SECCOMP_RET_ALLOW), + + /* other address; trap */ + BPF_STMT(BPF_RET + BPF_K, SECCOMP_RET_TRAP), + }; + struct sock_fprog prog = { + .len = ARRAY_SIZE(filter), + .filter = filter, + }; + + err = prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0); + if (err) + os_warn("PR_SET_NO_NEW_PRIVS (err=%d, ernro=%d)\n", + err, errno); + + err = syscall(SYS_seccomp, SECCOMP_SET_MODE_FILTER, + SECCOMP_FILTER_FLAG_TSYNC, &prog); + if (err) { + os_warn("SECCOMP_SET_MODE_FILTER (err=%d, ernro=%d)\n", + err, errno); + exit(1); + } + + set_handler(SIGSYS); + + os_info("seccomp: setup filter syscalls in the range: 0x%lx-0x%lx\n", + __userspace_start, __userspace_end); + + return 0; +} + diff --git a/arch/um/nommu/os-Linux/signal.c b/arch/um/nommu/os-Linux/signal.c new file mode 100644 index 00000000000000..19043b9652e223 --- /dev/null +++ b/arch/um/nommu/os-Linux/signal.c @@ -0,0 +1,16 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include + +void sigsys_handler(int sig, struct siginfo *si, + struct uml_pt_regs *regs, void *ptr) +{ + mcontext_t *mc = (mcontext_t *) ptr; + + /* hook syscall via SIGSYS */ + set_mc_sigsys_hook(mc); +} diff --git a/arch/um/os-Linux/signal.c b/arch/um/os-Linux/signal.c index 6c993bc8c78eb2..6538c2d8694cc2 100644 --- a/arch/um/os-Linux/signal.c +++ b/arch/um/os-Linux/signal.c @@ -21,6 +21,7 @@ #include #include #include +#include #include "internal.h" void (*sig_info[NSIG])(int, struct siginfo *, struct uml_pt_regs *, void *mc) = { @@ -32,6 +33,7 @@ void (*sig_info[NSIG])(int, struct siginfo *, struct uml_pt_regs *, void *mc) = [SIGSEGV] = segv_handler, [SIGIO] = sigio_handler, [SIGCHLD] = sigchld_handler, + [SIGSYS] = sigsys_handler, }; static void sig_handler_common(int sig, struct siginfo *si, mcontext_t *mc) @@ -180,6 +182,11 @@ static void sigusr1_handler(int sig, struct siginfo *unused_si, mcontext_t *mc) uml_pm_wake(); } +__weak void sigsys_handler(int sig, struct siginfo *unused_si, + struct uml_pt_regs *regs, void *mc) +{ +} + void register_pm_wake_signal(void) { set_handler(SIGUSR1); @@ -191,6 +198,7 @@ static void (*handlers[_NSIG])(int sig, struct siginfo *si, mcontext_t *mc) = { [SIGILL] = sig_handler, [SIGFPE] = sig_handler, [SIGTRAP] = sig_handler, + [SIGSYS] = sig_handler, [SIGIO] = sig_handler, [SIGWINCH] = sig_handler, diff --git a/arch/um/os-Linux/start_up.c b/arch/um/os-Linux/start_up.c index 054ac03bbf5eeb..33e039d2c1bfdf 100644 --- a/arch/um/os-Linux/start_up.c +++ b/arch/um/os-Linux/start_up.c @@ -239,7 +239,7 @@ extern unsigned long *exec_fp_regs; __initdata static struct stub_data *seccomp_test_stub_data; -static void __init sigsys_handler(int sig, siginfo_t *info, void *p) +static void __init _sigsys_handler(int sig, siginfo_t *info, void *p) { ucontext_t *uc = p; @@ -274,7 +274,7 @@ static int __init seccomp_helper(void *data) sizeof(seccomp_test_stub_data->sigstack)); sa.sa_flags = SA_ONSTACK | SA_NODEFER | SA_SIGINFO; - sa.sa_sigaction = (void *) sigsys_handler; + sa.sa_sigaction = (void *) _sigsys_handler; sa.sa_restorer = NULL; if (sigaction(SIGSYS, &sa, NULL) < 0) exit(2); diff --git a/arch/x86/um/nommu/Makefile b/arch/x86/um/nommu/Makefile index d72c63afffa546..ebe47d4836f48f 100644 --- a/arch/x86/um/nommu/Makefile +++ b/arch/x86/um/nommu/Makefile @@ -5,4 +5,4 @@ else BITS := 64 endif -obj-y = do_syscall_$(BITS).o entry_$(BITS).o +obj-y = do_syscall_$(BITS).o entry_$(BITS).o os-Linux/ diff --git a/arch/x86/um/nommu/os-Linux/Makefile b/arch/x86/um/nommu/os-Linux/Makefile new file mode 100644 index 00000000000000..4571e403a6ffa1 --- /dev/null +++ b/arch/x86/um/nommu/os-Linux/Makefile @@ -0,0 +1,6 @@ +# SPDX-License-Identifier: GPL-2.0 + +obj-y = mcontext.o +USER_OBJS := mcontext.o + +include $(srctree)/arch/um/scripts/Makefile.rules diff --git a/arch/x86/um/nommu/os-Linux/mcontext.c b/arch/x86/um/nommu/os-Linux/mcontext.c new file mode 100644 index 00000000000000..b62a6195096fd3 --- /dev/null +++ b/arch/x86/um/nommu/os-Linux/mcontext.c @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: GPL-2.0 +#include +#define __FRAME_OFFSETS +#include +#include +#include + +extern long __kernel_vsyscall(int64_t a0, int64_t a1, int64_t a2, int64_t a3, + int64_t a4, int64_t a5, int64_t a6); + +void set_mc_sigsys_hook(mcontext_t *mc) +{ + mc->gregs[REG_RCX] = mc->gregs[REG_RIP]; + mc->gregs[REG_RIP] = (unsigned long) __kernel_vsyscall; +} diff --git a/arch/x86/um/shared/sysdep/mcontext.h b/arch/x86/um/shared/sysdep/mcontext.h index 6fe490cc5b98a4..9a0d6087f3578e 100644 --- a/arch/x86/um/shared/sysdep/mcontext.h +++ b/arch/x86/um/shared/sysdep/mcontext.h @@ -17,6 +17,10 @@ extern int get_stub_state(struct uml_pt_regs *regs, struct stub_data *data, extern int set_stub_state(struct uml_pt_regs *regs, struct stub_data *data, int single_stepping); +#ifndef CONFIG_MMU +extern void set_mc_sigsys_hook(mcontext_t *mc); +#endif + #ifdef __i386__ #define GET_FAULTINFO_FROM_MC(fi, mc) \ From d7dd84640ba4cfffdda508f3470c27a168c0aeac Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Thu, 12 Dec 2024 15:39:33 +0900 Subject: [PATCH 06/33] x86/um: nommu: process/thread handling Since ptrace facility isn't used under !MMU of UML, there is different code path to invoke processes/threads; there are no external process used, and need to properly configure some of registers (fs segment register for TLS, etc) on every context switch, etc. Signals aren't delivered in non-ptrace syscall entry/leave so, we also need to handle pending signal by ourselves. ptrace related syscalls are not tested yet so, marked arch_has_single_step() unsupported in !MMU environment. Signed-off-by: Hajime Tazaki Signed-off-by: Ricardo Koller --- arch/um/include/asm/ptrace-generic.h | 2 +- arch/x86/um/nommu/Makefile | 2 +- arch/x86/um/nommu/entry_64.S | 2 ++ arch/x86/um/nommu/syscalls.h | 2 ++ arch/x86/um/nommu/syscalls_64.c | 40 ++++++++++++++++++++++++++++ arch/x86/um/syscalls_64.c | 2 +- 6 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 arch/x86/um/nommu/syscalls_64.c diff --git a/arch/um/include/asm/ptrace-generic.h b/arch/um/include/asm/ptrace-generic.h index 62e9916078ec6e..5aa38fe6b2fbe7 100644 --- a/arch/um/include/asm/ptrace-generic.h +++ b/arch/um/include/asm/ptrace-generic.h @@ -14,7 +14,7 @@ struct pt_regs { struct uml_pt_regs regs; }; -#define arch_has_single_step() (1) +#define arch_has_single_step() (IS_ENABLED(CONFIG_MMU)) #define EMPTY_REGS { .regs = EMPTY_UML_PT_REGS } diff --git a/arch/x86/um/nommu/Makefile b/arch/x86/um/nommu/Makefile index ebe47d4836f48f..4018d9e0aba02e 100644 --- a/arch/x86/um/nommu/Makefile +++ b/arch/x86/um/nommu/Makefile @@ -5,4 +5,4 @@ else BITS := 64 endif -obj-y = do_syscall_$(BITS).o entry_$(BITS).o os-Linux/ +obj-y = do_syscall_$(BITS).o entry_$(BITS).o syscalls_$(BITS).o os-Linux/ diff --git a/arch/x86/um/nommu/entry_64.S b/arch/x86/um/nommu/entry_64.S index 485c578aae645b..a58922fc81e5ef 100644 --- a/arch/x86/um/nommu/entry_64.S +++ b/arch/x86/um/nommu/entry_64.S @@ -86,6 +86,8 @@ END(__kernel_vsyscall) */ ENTRY(userspace) + /* set stack and pt_regs to the current task */ + call arch_set_stack_to_current /* clear direction flag to meet ABI */ cld /* align the stack for x86_64 ABI */ diff --git a/arch/x86/um/nommu/syscalls.h b/arch/x86/um/nommu/syscalls.h index a2433756b1fc70..ce16bf8abd59b2 100644 --- a/arch/x86/um/nommu/syscalls.h +++ b/arch/x86/um/nommu/syscalls.h @@ -13,4 +13,6 @@ extern long current_top_of_stack; extern long current_ptregs; +void arch_set_stack_to_current(void); + #endif diff --git a/arch/x86/um/nommu/syscalls_64.c b/arch/x86/um/nommu/syscalls_64.c new file mode 100644 index 00000000000000..3b16102801105c --- /dev/null +++ b/arch/x86/um/nommu/syscalls_64.c @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2003 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com) + * Copyright 2003 PathScale, Inc. + * + * Licensed under the GPL + */ + +#include +#include +#include +#include +#include /* XXX This should get the constants from libc */ +#include +#include +#include "syscalls.h" + +void arch_set_stack_to_current(void) +{ + current_top_of_stack = task_top_of_stack(current); + current_ptregs = (long)task_pt_regs(current); +} + +void arch_switch_to(struct task_struct *to) +{ + /* + * In !CONFIG_MMU, it doesn't ptrace thus, + * The FS_BASE registers are saved here. + */ + current_top_of_stack = task_top_of_stack(to); + current_ptregs = (long)task_pt_regs(to); + + if ((to->thread.regs.regs.gp[FS_BASE / sizeof(unsigned long)] == 0) || + (to->mm == NULL)) + return; + + /* this changes the FS on every context switch */ + arch_prctl(to, ARCH_SET_FS, + (void __user *) to->thread.regs.regs.gp[FS_BASE / sizeof(unsigned long)]); +} diff --git a/arch/x86/um/syscalls_64.c b/arch/x86/um/syscalls_64.c index 6a00a28c9cca77..9684850603a286 100644 --- a/arch/x86/um/syscalls_64.c +++ b/arch/x86/um/syscalls_64.c @@ -45,7 +45,7 @@ SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2) return arch_prctl(current, option, (unsigned long __user *) arg2); } -void arch_switch_to(struct task_struct *to) +__weak void arch_switch_to(struct task_struct *to) { /* * Nothing needs to be done on x86_64. From 7916151c3717b5a7c4b655f568728eccbb803eb7 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Wed, 4 Feb 2026 10:54:58 +0900 Subject: [PATCH 07/33] um: nommu: configure fs register on host syscall invocation As userspace on UML/!MMU also need to configure %fs register when it is running to correctly access thread structure, host syscalls implemented in os-Linux drivers may be puzzled when they are called. Thus it has to configure %fs register via arch_prctl(SET_FS) on every host syscalls. Signed-off-by: Hajime Tazaki Signed-off-by: Ricardo Koller --- arch/um/include/shared/os.h | 6 ++++ arch/um/os-Linux/process.c | 6 ++++ arch/um/os-Linux/start_up.c | 21 ++++++++++++++ arch/x86/um/nommu/do_syscall_64.c | 11 +++++++ arch/x86/um/nommu/syscalls.h | 1 + arch/x86/um/nommu/syscalls_64.c | 48 ++++++++++++++++++++++++++++++- 6 files changed, 92 insertions(+), 1 deletion(-) diff --git a/arch/um/include/shared/os.h b/arch/um/include/shared/os.h index 5451f9b1f41efe..0ac87507e05eb5 100644 --- a/arch/um/include/shared/os.h +++ b/arch/um/include/shared/os.h @@ -189,6 +189,7 @@ extern void check_host_supports_tls(int *supports_tls, int *tls_min); extern void get_host_cpu_features( void (*flags_helper_func)(char *line), void (*cache_helper_func)(char *line)); +extern int host_has_fsgsbase; /* mem.c */ extern int create_mem_file(unsigned long long len); @@ -213,6 +214,11 @@ extern int os_protect_memory(void *addr, unsigned long len, extern int os_unmap_memory(void *addr, int len); extern int os_drop_memory(void *addr, int length); extern int can_drop_memory(void); +extern int os_arch_prctl(int pid, int option, unsigned long *arg); +#ifndef CONFIG_MMU +extern long long host_fs; +#endif + void os_set_pdeathsig(void); diff --git a/arch/um/os-Linux/process.c b/arch/um/os-Linux/process.c index b338a89ecf1e55..4f30a389c5304d 100644 --- a/arch/um/os-Linux/process.c +++ b/arch/um/os-Linux/process.c @@ -18,6 +18,7 @@ #include #include #include +#include /* For SYS_xxx definitions */ #include #include #include @@ -179,6 +180,11 @@ int __init can_drop_memory(void) return ok; } +int os_arch_prctl(int pid, int option, unsigned long *arg2) +{ + return syscall(SYS_arch_prctl, option, arg2); +} + void init_new_thread_signals(void) { set_handler(SIGSEGV); diff --git a/arch/um/os-Linux/start_up.c b/arch/um/os-Linux/start_up.c index 33e039d2c1bfdf..c0afe5d8b5598d 100644 --- a/arch/um/os-Linux/start_up.c +++ b/arch/um/os-Linux/start_up.c @@ -20,6 +20,8 @@ #include #include #include +#include +#include #include #include #include @@ -37,6 +39,8 @@ #include #include "internal.h" +int host_has_fsgsbase; + static void ptrace_child(void) { int ret; @@ -460,6 +464,20 @@ __uml_setup("seccomp=", uml_seccomp_config, " This is insecure and should only be used with a trusted userspace\n\n" ); +static void __init check_fsgsbase(void) +{ + unsigned long auxv = getauxval(AT_HWCAP2); + + os_info("Checking FSGSBASE instructions..."); + if (auxv & HWCAP2_FSGSBASE) { + host_has_fsgsbase = 1; + os_info("OK\n"); + } else { + host_has_fsgsbase = 0; + os_info("disabled\n"); + } +} + void __init os_early_checks(void) { int pid; @@ -488,6 +506,9 @@ void __init os_early_checks(void) using_seccomp = 0; check_ptrace(); + /* probe fsgsbase instruction */ + check_fsgsbase(); + pid = start_ptraced_child(); if (init_pid_registers(pid)) fatal("Failed to initialize default registers"); diff --git a/arch/x86/um/nommu/do_syscall_64.c b/arch/x86/um/nommu/do_syscall_64.c index 292d7c5786224f..c08ae4e0edec92 100644 --- a/arch/x86/um/nommu/do_syscall_64.c +++ b/arch/x86/um/nommu/do_syscall_64.c @@ -4,7 +4,9 @@ #include #include #include +#include #include +#include "syscalls.h" __visible void do_syscall_64(struct pt_regs *regs) { @@ -13,6 +15,9 @@ __visible void do_syscall_64(struct pt_regs *regs) syscall = PT_SYSCALL_NR(regs->regs.gp); UPT_SYSCALL_NR(®s->regs) = syscall; + /* set fs register to the original host one */ + os_x86_arch_prctl(0, ARCH_SET_FS, (void *)host_fs); + if (likely(syscall < NR_syscalls)) { unsigned long ret; @@ -29,4 +34,10 @@ __visible void do_syscall_64(struct pt_regs *regs) /* handle tasks and signals at the end */ interrupt_end(); + + /* restore back fs register to userspace configured one */ + os_x86_arch_prctl(0, ARCH_SET_FS, + (void *)(current->thread.regs.regs.gp[FS_BASE + / sizeof(unsigned long)])); + } diff --git a/arch/x86/um/nommu/syscalls.h b/arch/x86/um/nommu/syscalls.h index ce16bf8abd59b2..4b9e3c85cf3aa7 100644 --- a/arch/x86/um/nommu/syscalls.h +++ b/arch/x86/um/nommu/syscalls.h @@ -13,6 +13,7 @@ extern long current_top_of_stack; extern long current_ptregs; +int os_x86_arch_prctl(int pid, int option, unsigned long *arg2); void arch_set_stack_to_current(void); #endif diff --git a/arch/x86/um/nommu/syscalls_64.c b/arch/x86/um/nommu/syscalls_64.c index 3b16102801105c..25fb11a8b7a447 100644 --- a/arch/x86/um/nommu/syscalls_64.c +++ b/arch/x86/um/nommu/syscalls_64.c @@ -10,11 +10,48 @@ #include #include #include +#include #include /* XXX This should get the constants from libc */ #include #include #include "syscalls.h" +/* + * The guest libc can change FS, which confuses the host libc. + * In fact, changing FS directly is not supported (check + * man arch_prctl). So, whenever we make a host syscall, + * we should be changing FS to the original FS (not the + * one set by the guest libc). This original FS is stored + * in host_fs. + */ +long long host_fs = -1; + +int os_x86_arch_prctl(int pid, int option, unsigned long *arg2) +{ + if (!host_has_fsgsbase) + return os_arch_prctl(pid, option, arg2); + + switch (option) { + case ARCH_SET_FS: + wrfsbase(*arg2); + break; + case ARCH_SET_GS: + wrgsbase(*arg2); + break; + case ARCH_GET_FS: + *arg2 = rdfsbase(); + break; + case ARCH_GET_GS: + *arg2 = rdgsbase(); + break; + default: + pr_warn("%s: unsupported option: 0x%x", __func__, option); + break; + } + + return 0; +} + void arch_set_stack_to_current(void) { current_top_of_stack = task_top_of_stack(current); @@ -35,6 +72,15 @@ void arch_switch_to(struct task_struct *to) return; /* this changes the FS on every context switch */ - arch_prctl(to, ARCH_SET_FS, + os_x86_arch_prctl(0, ARCH_SET_FS, (void __user *) to->thread.regs.regs.gp[FS_BASE / sizeof(unsigned long)]); } + +static int __init um_nommu_setup_hostfs(void) +{ + /* initialize the host_fs value at boottime */ + os_x86_arch_prctl(0, ARCH_GET_FS, (void *)&host_fs); + + return 0; +} +arch_initcall(um_nommu_setup_hostfs); From a5e8cbf5772a3aa8538e918480378ebd638c1c12 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Thu, 5 Dec 2024 15:09:00 +0900 Subject: [PATCH 08/33] x86/um/vdso: nommu: vdso memory update On !MMU mode, the address of vdso is accessible from userspace. This commit implements the entry point by pointing a block of page address. This commit also add memory permission configuration of vdso page to be executable. Signed-off-by: Hajime Tazaki Signed-off-by: Ricardo Koller --- arch/x86/um/vdso/vma.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/arch/x86/um/vdso/vma.c b/arch/x86/um/vdso/vma.c index 51a2b9f2eca95d..0799b3fe75211c 100644 --- a/arch/x86/um/vdso/vma.c +++ b/arch/x86/um/vdso/vma.c @@ -9,6 +9,7 @@ #include #include #include +#include unsigned long um_vdso_addr; static struct page *um_vdso; @@ -20,18 +21,29 @@ static int __init init_vdso(void) { BUG_ON(vdso_end - vdso_start > PAGE_SIZE); - um_vdso_addr = task_size - PAGE_SIZE; - um_vdso = alloc_page(GFP_KERNEL); if (!um_vdso) panic("Cannot allocate vdso\n"); copy_page(page_address(um_vdso), vdso_start); +#ifdef CONFIG_MMU + um_vdso_addr = task_size - PAGE_SIZE; +#else + /* this is fine with NOMMU as everything is accessible */ + um_vdso_addr = (unsigned long)page_address(um_vdso); + os_protect_memory((void *)um_vdso_addr, vdso_end - vdso_start, 1, 0, 1); +#endif + + pr_info("vdso_start=%lx um_vdso_addr=%lx pg_um_vdso=%lx", + (unsigned long)vdso_start, um_vdso_addr, + (unsigned long)page_address(um_vdso)); + return 0; } subsys_initcall(init_vdso); +#ifdef CONFIG_MMU int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) { struct vm_area_struct *vma; @@ -53,3 +65,4 @@ int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp) return IS_ERR(vma) ? PTR_ERR(vma) : 0; } +#endif From 61e91f5f994997300b2e0fd5bf8ebd33f6aa29d2 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Wed, 17 Sep 2025 16:42:09 +0900 Subject: [PATCH 09/33] x86/um: nommu: signal handling This commit updates the behavior of signal handling under !MMU environment. It adds the alignment code for signal frame as the frame is used in userspace as-is. floating point register is carefully handling upon entry/leave of syscall routine so that signal handlers can read/write the contents of the register. It also adds the follow up routine for SIGSEGV as a signal delivery runs in the same stack frame while we have to avoid endless SIGSEGV. Signed-off-by: Hajime Tazaki --- arch/um/include/shared/kern_util.h | 4 + arch/um/nommu/Makefile | 2 +- arch/um/nommu/os-Linux/signal.c | 8 + arch/um/nommu/trap.c | 201 ++++++++++++++++++++++++++ arch/um/os-Linux/signal.c | 3 +- arch/x86/um/nommu/do_syscall_64.c | 6 + arch/x86/um/nommu/os-Linux/mcontext.c | 11 ++ arch/x86/um/shared/sysdep/mcontext.h | 1 + arch/x86/um/shared/sysdep/ptrace.h | 2 +- 9 files changed, 235 insertions(+), 3 deletions(-) create mode 100644 arch/um/nommu/trap.c diff --git a/arch/um/include/shared/kern_util.h b/arch/um/include/shared/kern_util.h index 7798f16a467775..46c8d6336ca147 100644 --- a/arch/um/include/shared/kern_util.h +++ b/arch/um/include/shared/kern_util.h @@ -70,4 +70,8 @@ void um_idle_sleep(void); void kasan_map_memory(void *start, size_t len); +#ifndef CONFIG_MMU +extern void nommu_relay_signal(void *ptr); +#endif + #endif diff --git a/arch/um/nommu/Makefile b/arch/um/nommu/Makefile index baab7c2f57c2d4..096221590cfdd9 100644 --- a/arch/um/nommu/Makefile +++ b/arch/um/nommu/Makefile @@ -1,3 +1,3 @@ # SPDX-License-Identifier: GPL-2.0 -obj-y := os-Linux/ +obj-y := trap.o os-Linux/ diff --git a/arch/um/nommu/os-Linux/signal.c b/arch/um/nommu/os-Linux/signal.c index 19043b9652e223..6febb178dcdacb 100644 --- a/arch/um/nommu/os-Linux/signal.c +++ b/arch/um/nommu/os-Linux/signal.c @@ -5,6 +5,7 @@ #include #include #include +#include void sigsys_handler(int sig, struct siginfo *si, struct uml_pt_regs *regs, void *ptr) @@ -14,3 +15,10 @@ void sigsys_handler(int sig, struct siginfo *si, /* hook syscall via SIGSYS */ set_mc_sigsys_hook(mc); } + +void nommu_relay_signal(void *ptr) +{ + mcontext_t *mc = (mcontext_t *) ptr; + + set_mc_relay_signal(mc); +} diff --git a/arch/um/nommu/trap.c b/arch/um/nommu/trap.c new file mode 100644 index 00000000000000..430297517455c7 --- /dev/null +++ b/arch/um/nommu/trap.c @@ -0,0 +1,201 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* + * Note this is constrained to return 0, -EFAULT, -EACCES, -ENOMEM by + * segv(). + */ +int handle_page_fault(unsigned long address, unsigned long ip, + int is_write, int is_user, int *code_out) +{ + /* !MMU has no pagefault */ + return -EFAULT; +} + +static void show_segv_info(struct uml_pt_regs *regs) +{ + struct task_struct *tsk = current; + struct faultinfo *fi = UPT_FAULTINFO(regs); + + if (!unhandled_signal(tsk, SIGSEGV)) + return; + + pr_warn_ratelimited("%s%s[%d]: segfault at %lx ip %p sp %p error %x", + task_pid_nr(tsk) > 1 ? KERN_INFO : KERN_EMERG, + tsk->comm, task_pid_nr(tsk), FAULT_ADDRESS(*fi), + (void *)UPT_IP(regs), (void *)UPT_SP(regs), + fi->error_code); +} + +static void bad_segv(struct faultinfo fi, unsigned long ip) +{ + current->thread.arch.faultinfo = fi; + force_sig_fault(SIGSEGV, SEGV_ACCERR, (void __user *) FAULT_ADDRESS(fi)); +} + +void fatal_sigsegv(void) +{ + force_fatal_sig(SIGSEGV); + do_signal(¤t->thread.regs); + /* + * This is to tell gcc that we're not returning - do_signal + * can, in general, return, but in this case, it's not, since + * we just got a fatal SIGSEGV queued. + */ + os_dump_core(); +} + +/** + * segv_handler() - the SIGSEGV handler + * @sig: the signal number + * @unused_si: the signal info struct; unused in this handler + * @regs: the ptrace register information + * + * The handler first extracts the faultinfo from the UML ptrace regs struct. + * If the userfault did not happen in an UML userspace process, bad_segv is called. + * Otherwise the signal did happen in a cloned userspace process, handle it. + */ +void segv_handler(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs, + void *mc) +{ + struct faultinfo *fi = UPT_FAULTINFO(regs); + + /* !MMU specific part; detection of userspace */ + /* mark is_user=1 when the IP is from userspace code. */ + if (UPT_IP(regs) > uml_reserved && UPT_IP(regs) < high_physmem) + regs->is_user = 1; + + if (UPT_IS_USER(regs) && !SEGV_IS_FIXABLE(fi)) { + show_segv_info(regs); + bad_segv(*fi, UPT_IP(regs)); + return; + } + segv(*fi, UPT_IP(regs), UPT_IS_USER(regs), regs, mc); + + /* !MMU specific part; detection of userspace */ + relay_signal(sig, unused_si, regs, mc); +} + +/* + * We give a *copy* of the faultinfo in the regs to segv. + * This must be done, since nesting SEGVs could overwrite + * the info in the regs. A pointer to the info then would + * give us bad data! + */ +unsigned long segv(struct faultinfo fi, unsigned long ip, int is_user, + struct uml_pt_regs *regs, void *mc) +{ + int si_code; + int err; + int is_write = FAULT_WRITE(fi); + unsigned long address = FAULT_ADDRESS(fi); + + if (!is_user && regs) + current->thread.segv_regs = container_of(regs, struct pt_regs, regs); + + if (current->mm == NULL) { + show_regs(container_of(regs, struct pt_regs, regs)); + panic("Segfault with no mm"); + } else if (!is_user && address > PAGE_SIZE && address < TASK_SIZE) { + show_regs(container_of(regs, struct pt_regs, regs)); + panic("Kernel tried to access user memory at addr 0x%lx, ip 0x%lx", + address, ip); + } + + if (SEGV_IS_FIXABLE(&fi)) + err = handle_page_fault(address, ip, is_write, is_user, + &si_code); + else { + err = -EFAULT; + /* + * A thread accessed NULL, we get a fault, but CR2 is invalid. + * This code is used in __do_copy_from_user() of TT mode. + * XXX tt mode is gone, so maybe this isn't needed any more + */ + address = 0; + } + + if (!err) + goto out; + else if (!is_user && arch_fixup(ip, regs)) + goto out; + + if (!is_user) { + show_regs(container_of(regs, struct pt_regs, regs)); + panic("Kernel mode fault at addr 0x%lx, ip 0x%lx", + address, ip); + } + + show_segv_info(regs); + + if (err == -EACCES) { + current->thread.arch.faultinfo = fi; + force_sig_fault(SIGBUS, BUS_ADRERR, (void __user *)address); + } else { + WARN_ON_ONCE(err != -EFAULT); + current->thread.arch.faultinfo = fi; + force_sig_fault(SIGSEGV, si_code, (void __user *) address); + } + +out: + if (regs) + current->thread.segv_regs = NULL; + + return 0; +} + +void relay_signal(int sig, struct siginfo *si, struct uml_pt_regs *regs, + void *mc) +{ + int code, err; + + /* !MMU specific part; detection of userspace */ + /* mark is_user=1 when the IP is from userspace code. */ + if (UPT_IP(regs) > uml_reserved && UPT_IP(regs) < high_physmem) + regs->is_user = 1; + + if (!UPT_IS_USER(regs)) { + if (sig == SIGBUS) + pr_err("Bus error - the host /dev/shm or /tmp mount likely just ran out of space\n"); + panic("Kernel mode signal %d", sig); + } + /* if is_user==1, set return to userspace sig handler to relay signal */ + nommu_relay_signal(mc); + + arch_examine_signal(sig, regs); + + /* Is the signal layout for the signal known? + * Signal data must be scrubbed to prevent information leaks. + */ + code = si->si_code; + err = si->si_errno; + if ((err == 0) && (siginfo_layout(sig, code) == SIL_FAULT)) { + struct faultinfo *fi = UPT_FAULTINFO(regs); + + current->thread.arch.faultinfo = *fi; + force_sig_fault(sig, code, (void __user *)FAULT_ADDRESS(*fi)); + } else { + pr_err("Attempted to relay unknown signal %d (si_code = %d) with errno %d\n", + sig, code, err); + force_sig(sig); + } +} + +void winch(int sig, struct siginfo *unused_si, struct uml_pt_regs *regs, + void *mc) +{ + do_IRQ(WINCH_IRQ, regs); +} diff --git a/arch/um/os-Linux/signal.c b/arch/um/os-Linux/signal.c index 6538c2d8694cc2..52a525b0e47817 100644 --- a/arch/um/os-Linux/signal.c +++ b/arch/um/os-Linux/signal.c @@ -41,9 +41,10 @@ static void sig_handler_common(int sig, struct siginfo *si, mcontext_t *mc) struct uml_pt_regs r; r.is_user = 0; + if (mc) + get_regs_from_mc(&r, mc); if (sig == SIGSEGV) { /* For segfaults, we want the data from the sigcontext. */ - get_regs_from_mc(&r, mc); GET_FAULTINFO_FROM_MC(r.faultinfo, mc); } diff --git a/arch/x86/um/nommu/do_syscall_64.c b/arch/x86/um/nommu/do_syscall_64.c index c08ae4e0edec92..7756c30f183c65 100644 --- a/arch/x86/um/nommu/do_syscall_64.c +++ b/arch/x86/um/nommu/do_syscall_64.c @@ -18,6 +18,9 @@ __visible void do_syscall_64(struct pt_regs *regs) /* set fs register to the original host one */ os_x86_arch_prctl(0, ARCH_SET_FS, (void *)host_fs); + /* save fp registers */ + asm volatile("fxsaveq %0" : "=m"(*(struct _xstate *)regs->regs.fp)); + if (likely(syscall < NR_syscalls)) { unsigned long ret; @@ -35,6 +38,9 @@ __visible void do_syscall_64(struct pt_regs *regs) /* handle tasks and signals at the end */ interrupt_end(); + /* restore fp registers */ + asm volatile("fxrstorq %0" : : "m"((current->thread.regs.regs.fp))); + /* restore back fs register to userspace configured one */ os_x86_arch_prctl(0, ARCH_SET_FS, (void *)(current->thread.regs.regs.gp[FS_BASE diff --git a/arch/x86/um/nommu/os-Linux/mcontext.c b/arch/x86/um/nommu/os-Linux/mcontext.c index b62a6195096fd3..afa20f1e235a83 100644 --- a/arch/x86/um/nommu/os-Linux/mcontext.c +++ b/arch/x86/um/nommu/os-Linux/mcontext.c @@ -4,10 +4,21 @@ #include #include #include +#include +#include "../syscalls.h" extern long __kernel_vsyscall(int64_t a0, int64_t a1, int64_t a2, int64_t a3, int64_t a4, int64_t a5, int64_t a6); +void set_mc_relay_signal(mcontext_t *mc) +{ + /* configure stack and userspace returning routine as + * instruction pointer + */ + mc->gregs[REG_RSP] = (unsigned long) current_top_of_stack; + mc->gregs[REG_RIP] = (unsigned long) userspace; +} + void set_mc_sigsys_hook(mcontext_t *mc) { mc->gregs[REG_RCX] = mc->gregs[REG_RIP]; diff --git a/arch/x86/um/shared/sysdep/mcontext.h b/arch/x86/um/shared/sysdep/mcontext.h index 9a0d6087f3578e..82a5f38b350f50 100644 --- a/arch/x86/um/shared/sysdep/mcontext.h +++ b/arch/x86/um/shared/sysdep/mcontext.h @@ -19,6 +19,7 @@ extern int set_stub_state(struct uml_pt_regs *regs, struct stub_data *data, #ifndef CONFIG_MMU extern void set_mc_sigsys_hook(mcontext_t *mc); +extern void set_mc_relay_signal(mcontext_t *mc); #endif #ifdef __i386__ diff --git a/arch/x86/um/shared/sysdep/ptrace.h b/arch/x86/um/shared/sysdep/ptrace.h index 572ea2d79131c7..6ed6bb1ca50eaa 100644 --- a/arch/x86/um/shared/sysdep/ptrace.h +++ b/arch/x86/um/shared/sysdep/ptrace.h @@ -53,7 +53,7 @@ struct uml_pt_regs { int is_user; /* Dynamically sized FP registers (holds an XSTATE) */ - unsigned long fp[]; + unsigned long fp[] __attribute__((aligned(16))); }; #define EMPTY_UML_PT_REGS { } From bdcaea618087ce8f9dd1908e47cd3e9bcfa311a2 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Tue, 17 Sep 2024 13:58:36 +0900 Subject: [PATCH 10/33] um: change machine name for uname output This commit tries to display MMU/!MMU mode from the output of uname(2) so that users can distinguish which mode of UML is running right now. Signed-off-by: Hajime Tazaki --- arch/um/Makefile | 6 ++++++ arch/um/os-Linux/util.c | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/um/Makefile b/arch/um/Makefile index 5e9bf2a8aa6d4a..3393e02628888b 100644 --- a/arch/um/Makefile +++ b/arch/um/Makefile @@ -151,6 +151,12 @@ export CFLAGS_vmlinux := $(LINK-y) $(LINK_WRAPS) $(LD_FLAGS_CMDLINE) $(CC_FLAGS_ CLEAN_FILES += linux x.i gmon.out MRPROPER_FILES += $(HOST_DIR)/include/generated +ifeq ($(CONFIG_MMU),y) +UTS_MACHINE := "um" +else +UTS_MACHINE := "um\(nommu\)" +endif + archclean: @find . \( -name '*.bb' -o -name '*.bbg' -o -name '*.da' \ -o -name '*.gcov' \) -type f -print | xargs rm -f diff --git a/arch/um/os-Linux/util.c b/arch/um/os-Linux/util.c index e3ad71a0d13c41..5fb26f5dfcb629 100644 --- a/arch/um/os-Linux/util.c +++ b/arch/um/os-Linux/util.c @@ -64,7 +64,8 @@ void setup_machinename(char *machine_out) } # endif #endif - strcpy(machine_out, host.machine); + strcat(machine_out, "/"); + strcat(machine_out, host.machine); } void setup_hostinfo(char *buf, int len) From 4c3a861990215aa2bc48c9c25dd6c25779cba0e4 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Sun, 2 Nov 2025 14:15:35 +0900 Subject: [PATCH 11/33] um: nommu: disable SMP on nommu UML CONFIG_SMP doesn't work with nommu UML since fs register handling of host does conflict with thread local storage (more specifically, the variable signals_enabled). Thus this commit disables the CONFIG option and the TLS variables. Signed-off-by: Hajime Tazaki --- arch/um/os-Linux/internal.h | 8 ++++++++ arch/x86/um/Kconfig | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/arch/um/os-Linux/internal.h b/arch/um/os-Linux/internal.h index bac9fcc8c14c5a..25cb5cc931c143 100644 --- a/arch/um/os-Linux/internal.h +++ b/arch/um/os-Linux/internal.h @@ -6,6 +6,14 @@ #include #include +/* NOMMU doesn't work with thread-local storage used in CONFIG_SMP, + * due to the dependency on host_fs variable switch upon user/kernel + * context so, disable TLS until NOMMU supports SMP. + */ +#ifndef CONFIG_MMU +#define __thread +#endif + /* * elf_aux.c */ diff --git a/arch/x86/um/Kconfig b/arch/x86/um/Kconfig index 44b12e45f9a058..329f75b3df9407 100644 --- a/arch/x86/um/Kconfig +++ b/arch/x86/um/Kconfig @@ -13,7 +13,7 @@ config UML_X86 select ARCH_USE_QUEUED_SPINLOCKS select DCACHE_WORD_ACCESS select HAVE_EFFICIENT_UNALIGNED_ACCESS - select UML_SUBARCH_SUPPORTS_SMP if X86_CX8 + select UML_SUBARCH_SUPPORTS_SMP if X86_CX8 && MMU config 64BIT bool "64-bit kernel" if "$(SUBARCH)" = "x86" From 6acbb6490da1298983c2812156756106c1d046b2 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Fri, 17 Jan 2025 14:21:21 +0900 Subject: [PATCH 12/33] um: nommu: add documentation of nommu UML This commit adds an initial documentation for !MMU mode of UML. Signed-off-by: Hajime Tazaki --- Documentation/virt/uml/nommu-uml.rst | 181 +++++++++++++++++++++++++++ MAINTAINERS | 1 + 2 files changed, 182 insertions(+) create mode 100644 Documentation/virt/uml/nommu-uml.rst diff --git a/Documentation/virt/uml/nommu-uml.rst b/Documentation/virt/uml/nommu-uml.rst new file mode 100644 index 00000000000000..b359af1155bbfd --- /dev/null +++ b/Documentation/virt/uml/nommu-uml.rst @@ -0,0 +1,181 @@ +.. SPDX-License-Identifier: GPL-2.0 + +UML has been built with CONFIG_MMU since day 0. The patchset +introduces the nommu mode on UML in a different angle in order to +cover broader code to be executed over UML. + +.. contents:: :local: + +What is it for ? +================ + +- To exercises nommu code over UML (and over KUnit) +- Reduce syscall latency triggered with the interactions of multiple + processes + + +How it works ? +============== + +To illustrate how this feature works, the below shows how syscalls are +called under nommu/UML environment. + +- boot kernel, install seccomp filter if ``syscall`` instructions are + called from userspace memory based on the address of instruction + pointer +- (userspace starts) +- calls ``vfork``/``execve`` syscalls +- ``SIGSYS`` signal raised, handler calls syscall entry point ``__kernel_vsyscall`` +- call handler function in ``sys_call_table[]`` and follow how UML syscall + works +- return to userspace + + +What are the differences from MMU-full UML ? +============================================ + +The current nommu implementation adds 3 different functions which +MMU-full UML doesn't have: + +- kernel address space can directly be accessible from userspace + - so, ``uaccess()`` always returns 1 + - generic implementation of memcpy/strcpy/futex is also used +- alternate syscall entrypoint +- alternate syscall hook with a different seccomp filter + +With those modifications, it allows us to use unmodified userspace +binaries with nommu UML. + + +History +======= + +This feature was originally introduced by Ricardo Koller at Open +Source Summit NA 2020, then integrated with the syscall translation +functionality with the clean up to the original code. + +Building and run +================ + +:: + + make ARCH=um x86_64_nommu_defconfig + make ARCH=um + +will build UML with ``CONFIG_MMU=n`` applied. + +Kunit tests can run with the following command:: + + ./tools/testing/kunit/kunit.py run --kconfig_add CONFIG_MMU=n --kconfig_add CONFIG_KUNIT_UML_PCI=n + +To run a typical Linux distribution, we need nommu-aware userspace. +We can use a stock version of Alpine Linux with nommu-built version of +busybox and musl-libc, which are available as additional packages. + + +Preparing root filesystem +========================= + +nommu UML requires to use a specific standard library which is aware +of nommu kernel. We have tested custom-build musl-libc and busybox, +both of which have built-in support for nommu kernels. + +There are no available Linux distributions for nommu under x86_64 +architecture, so we need to prepare our own image for the root +filesystem. We use Alpine Linux as a base distribution and replace +busybox and musl-libc on top of that. The following are the step to +prepare the filesystem for the quick start:: + + container_id=$(docker create ghcr.io/thehajime/alpine:3.20.3-um-nommu) + docker start $container_id + docker wait $container_id + docker export $container_id > alpine.tar + docker rm $container_id + + mnt=$(mktemp -d) + dd if=/dev/zero of=alpine.ext4 bs=1 count=0 seek=1G + sudo chmod og+wr "alpine.ext4" + yes 2>/dev/null | mkfs.ext4 "alpine.ext4" || true + sudo mount "alpine.ext4" $mnt + sudo tar -xf alpine.tar -C $mnt + sudo umount $mnt + +This will create a file image, ``alpine.ext4``, which contains busybox +and musl with nommu build on the Alpine Linux root filesystem. The +file can be specified to the argument ``ubd0=`` to the UML command line:: + + ./vmlinux ubd0=./alpine.ext4 rw mem=1024m loglevel=8 init=/sbin/init + +We plan to upstream the apk packages for busybox and musl so that we +can follow the proper procedure to set up the root filesystem. + + +Quick start with docker +======================= + +There is a docker image that you can quickly start with a simple step:: + + docker run -it -v /dev/shm:/dev/shm --rm ghcr.io/thehajime/alpine:3.20.3-um-nommu + +This will launch a UML instance with an pre-configured root filesystem. + +Benchmark +========= + +The below shows an example of performance measurement conducted with +lmbench and (self-crafted) getpid benchmark (with v6.17-rc5 uml/next +tree). + +.. csv-table:: lmbench (usec) + :header: ,native,um,um-mmu(s),um-nommu(s) + + select-10 ,0.5319,36.1214,24.2795,2.9174 + select-100 ,1.6019,34.6049,28.8865,3.8080 + select-1000 ,12.2588,43.6838,48.7438,12.7872 + syscall ,0.1644,35.0321,53.2119,2.5981 + read ,0.3055,31.5509,45.8538,2.7068 + write ,0.2512,31.3609,29.2636,2.6948 + stat ,1.8894,43.8477,49.6121,3.1908 + open/close ,3.2973,77.5123,68.9431,6.2575 + fork+sh ,1110.3000,7359.5000,4618.6667,439.4615 + fork+execve ,510.8182,2834.0000,2461.1667,139.7848 + +.. csv-table:: do_getpid bench (nsec) + :header: ,native,um,um-mmu(s),um-nommu(s) + + getpid , 161 , 34477 , 26242 , 2599 + +(um-nommu(s) is with seccomp syscall hook, um-mmu(s) is SECCOMP mode, +respectively) + +Limitations +=========== + +generic nommu limitations +------------------------- +Since this port is a kernel of nommu architecture, the implementation +inherits the characteristics of other nommu kernels (riscv, arm, etc), +described below. + +- vfork(2) should be used instead of fork(2) +- ELF loader only loads PIE (position independent executable) binaries +- processes share the address space among others +- mmap(2) offers a subset of functionalities (e.g., unsupported + MAP_FIXED) + +Thus, we have limited options to userspace programs. We have tested +Alpine Linux with musl-libc, which has a support nommu kernel. + +supported architecture +---------------------- +The current implementation of nommu UML only works on x86_64 SUBARCH. +We have not tested with 32-bit environment. + + +Further readings about NOMMU UML +================================ + +- NOMMU UML (original code by Ricardo Koller) + - https://static.sched.com/hosted_files/ossna2020/ec/kollerr_linux_um_nommu.pdf +- introduction at FOSDEM 2026 + - https://fosdem.org/2026/schedule/event/HWLQDV-nommu-uml-thehajime/ diff --git a/MAINTAINERS b/MAINTAINERS index 0c01baefb9c315..fc49ac1e01b981 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -27445,6 +27445,7 @@ USER-MODE LINUX (UML) M: Richard Weinberger M: Anton Ivanov M: Johannes Berg +M: Hajime Tazaki L: linux-um@lists.infradead.org S: Maintained W: http://user-mode-linux.sourceforge.net From 8d06930739391c7eb6b2873ee1b2bb7ec990d76b Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Thu, 5 Dec 2024 09:45:37 +0900 Subject: [PATCH 13/33] um: nommu: plug nommu code into build system Add nommu kernel for um build. defconfig is also provided. Signed-off-by: Hajime Tazaki Signed-off-by: Ricardo Koller --- arch/um/Kconfig | 14 ++++++- arch/um/configs/x86_64_nommu_defconfig | 54 ++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 arch/um/configs/x86_64_nommu_defconfig diff --git a/arch/um/Kconfig b/arch/um/Kconfig index 098cda44db2255..67e8dc3d1e0a2f 100644 --- a/arch/um/Kconfig +++ b/arch/um/Kconfig @@ -35,7 +35,7 @@ config UML select ARCH_SUPPORTS_LTO_CLANG_THIN select TRACE_IRQFLAGS_SUPPORT select TTY # Needed for line.c - select HAVE_ARCH_VMAP_STACK + select HAVE_ARCH_VMAP_STACK if MMU select HAVE_RUST select ARCH_HAS_UBSAN select HAVE_ARCH_TRACEHOOK @@ -43,9 +43,12 @@ config UML select THREAD_INFO_IN_TASK select SPARSE_IRQ select MMU_GATHER_RCU_TABLE_FREE + select UACCESS_MEMCPY if !MMU + select GENERIC_STRNLEN_USER if !MMU + select GENERIC_STRNCPY_FROM_USER if !MMU config MMU - bool + bool "MMU-based Paged Memory Management Support" if 64BIT default y config UML_DMA_EMULATION @@ -227,8 +230,15 @@ config MAGIC_SYSRQ The keys are documented in . Don't say Y unless you really know what this hack does. +config ARCH_FORCE_MAX_ORDER + int "Order of maximal physically contiguous allocations" if EXPERT + default "10" if MMU + default "16" if !MMU + config KERNEL_STACK_ORDER int "Kernel stack size order" + default 3 if !MMU + range 3 10 if !MMU default 2 if 64BIT range 2 10 if 64BIT default 1 if !64BIT diff --git a/arch/um/configs/x86_64_nommu_defconfig b/arch/um/configs/x86_64_nommu_defconfig new file mode 100644 index 00000000000000..02cb87091c9f91 --- /dev/null +++ b/arch/um/configs/x86_64_nommu_defconfig @@ -0,0 +1,54 @@ +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +CONFIG_NO_HZ=y +CONFIG_HIGH_RES_TIMERS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_LOG_BUF_SHIFT=14 +CONFIG_CGROUPS=y +CONFIG_BLK_CGROUP=y +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_CPUACCT=y +# CONFIG_PID_NS is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +# CONFIG_MMU is not set +CONFIG_HOSTFS=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_SSL=y +CONFIG_NULL_CHAN=y +CONFIG_PORT_CHAN=y +CONFIG_PTY_CHAN=y +CONFIG_TTY_CHAN=y +CONFIG_CON_CHAN="pts" +CONFIG_SSL_CHAN="pts" +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_IOSCHED_BFQ=m +CONFIG_BINFMT_MISC=m +CONFIG_NET=y +CONFIG_PACKET=y +CONFIG_UNIX=y +CONFIG_INET=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +CONFIG_BLK_DEV_UBD=y +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_NBD=m +CONFIG_DUMMY=m +CONFIG_TUN=m +CONFIG_PPP=m +CONFIG_SLIP=m +CONFIG_LEGACY_PTY_COUNT=32 +CONFIG_UML_RANDOM=y +CONFIG_EXT4_FS=y +CONFIG_QUOTA=y +CONFIG_AUTOFS_FS=m +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_NLS=y +CONFIG_DEBUG_KERNEL=y +CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT=y +CONFIG_FRAME_WARN=1024 +CONFIG_IPV6=y From 91d9cbe718fe611b5d90acb6f9de5a489492a787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:10 +0200 Subject: [PATCH 14/33] kbuild: userprogs: also inherit byte order and ABI from kernel MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Make sure the byte order and ABI of the userprogs matches the one of the kernel, similar to how the bit size is handled. Otherwise the userprogs may not be executable. This happens for example on powerpc little endian, or riscv32. Signed-off-by: Thomas Weißschuh Acked-by: Masahiro Yamada Reviewed-by: Nicolas Schier --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 13107aa0a5fb12..04d9b28e007e4f 100644 --- a/Makefile +++ b/Makefile @@ -1170,8 +1170,8 @@ ifneq ($(CONFIG_ARCH_VMLINUX_NEEDS_RELOCS),) LDFLAGS_vmlinux += --emit-relocs --discard-none endif -# Align the architecture of userspace programs with the kernel -USERFLAGS_FROM_KERNEL := --target=% +# Align the bit size, byte order and architecture of userspace programs with the kernel +USERFLAGS_FROM_KERNEL := -m32 -m64 -mlittle-endian -mbig-endian --target=% -march=% -mabi=% ifdef CONFIG_ARCH_USERFLAGS KBUILD_USERCFLAGS += $(CONFIG_ARCH_USERFLAGS) From 9dc5035b4a06b4a7483766c77de6f6744797b527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:11 +0200 Subject: [PATCH 15/33] kbuild: doc: add label for userprogs section MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some upcoming new documentation should link directly to the userprogs section. Add a label to the section so it can be referenced. Signed-off-by: Thomas Weißschuh Acked-by: Masahiro Yamada Reviewed-by: Nicolas Schier --- Documentation/kbuild/makefiles.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Documentation/kbuild/makefiles.rst b/Documentation/kbuild/makefiles.rst index 24a4708d26e8ef..6e54ad4cfecbf7 100644 --- a/Documentation/kbuild/makefiles.rst +++ b/Documentation/kbuild/makefiles.rst @@ -891,6 +891,8 @@ This is possible in two ways: This will tell kbuild to build lxdialog even if not referenced in any rule. +.. _kbuild_userprogs: + Userspace Program support ========================= From 6685610b17aaaeeb0d9ba2a6a8dd4758bdbb9b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:12 +0200 Subject: [PATCH 16/33] init: re-add CONFIG_CC_CAN_LINK_STATIC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For the kunit UAPI functionality this feature is needed. This reverts commit d1b99cdf22e0 ("init: remove unused CONFIG_CC_CAN_LINK_STATIC") Signed-off-by: Thomas Weißschuh Reviewed-by: Masahiro Yamada Reviewed-by: Nicolas Schier Acked-by: Nicolas Schier --- init/Kconfig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/init/Kconfig b/init/Kconfig index e95d4345785186..94414b9034e229 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -91,6 +91,11 @@ config CC_CAN_LINK default $(cc_can_link_user,$(m64-flag)) if 64BIT default $(cc_can_link_user,$(m32-flag)) +config CC_CAN_LINK_STATIC + bool + default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag) -static) if 64BIT + default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag) -static) + # Fixed in GCC 14, 13.3, 12.4 and 11.5 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113921 config GCC_ASM_GOTO_OUTPUT_BROKEN From 02000dd733f606165440a9af90a5f4a0d460cb16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:13 +0200 Subject: [PATCH 17/33] init: add nolibc build support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Building userspace applications through the kbuild "userprogs" framework requires a libc. Kernel toolchains often do not contain a libc. In this case it is useful to use the nolibc library from the kernel tree. Nolibc does not support all architectures and requires compiler flags. Add a kconfig option, so users can know where it is available and provide a variable for common options. Signed-off-by: Thomas Weißschuh Reviewed-by: Nicolas Schier --- MAINTAINERS | 2 ++ init/Kconfig | 2 ++ init/Kconfig.nolibc | 15 +++++++++++++++ init/Makefile.nolibc | 13 +++++++++++++ 4 files changed, 32 insertions(+) create mode 100644 init/Kconfig.nolibc create mode 100644 init/Makefile.nolibc diff --git a/MAINTAINERS b/MAINTAINERS index fc49ac1e01b981..e60f46ece0eff5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -18764,6 +18764,8 @@ M: Willy Tarreau M: Thomas Weißschuh S: Maintained T: git git://git.kernel.org/pub/scm/linux/kernel/git/nolibc/linux-nolibc.git +F: init/Kconfig.nolibc +F: init/Makefile.nolibc F: tools/include/nolibc/ F: tools/testing/selftests/nolibc/ diff --git a/init/Kconfig b/init/Kconfig index 94414b9034e229..d1bc9d9f6acea9 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -96,6 +96,8 @@ config CC_CAN_LINK_STATIC default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag) -static) if 64BIT default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag) -static) +source "init/Kconfig.nolibc" + # Fixed in GCC 14, 13.3, 12.4 and 11.5 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113921 config GCC_ASM_GOTO_OUTPUT_BROKEN diff --git a/init/Kconfig.nolibc b/init/Kconfig.nolibc new file mode 100644 index 00000000000000..29cbc5437e70cb --- /dev/null +++ b/init/Kconfig.nolibc @@ -0,0 +1,15 @@ +# SPDX-License-Identifier: GPL-2.0 + +config ARCH_HAS_NOLIBC + bool + default y if ARM + default y if ARM64 + default y if LOONGARCH + default y if M68K + default y if MIPS + default y if PPC + default y if RISCV + default y if S390 + default y if SPARC + default y if UML_X86 + default y if X86 diff --git a/init/Makefile.nolibc b/init/Makefile.nolibc new file mode 100644 index 00000000000000..a8a193f78e34e0 --- /dev/null +++ b/init/Makefile.nolibc @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: GPL-2.0 +# Compiler flags, which are necessary to build userspace applications with the +# in-kernel libc "nolibc". + +ifeq ($(and $(CONFIG_ARCH_HAS_NOLIBC),$(CONFIG_HEADERS_INSTALL)),y) + +NOLIBC_USERCFLAGS := -nostdlib -nostdinc -static -ffreestanding \ + -fno-asynchronous-unwind-tables -fno-stack-protector \ + -isystem $(objtree)/usr/include -isystem $(srctree)/tools/include/nolibc/ + +NOLIBC_USERLDFLAGS := -nostdlib -nostdinc -static + +endif # CONFIG_ARCH_HAS_NOLIBC && CONFIG_HEADERS_INSTALL From 2acee31354620dbf3f1cb1cff1a0978e9f5200e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:14 +0200 Subject: [PATCH 18/33] fs,fork,exit: export symbols necessary for KUnit UAPI support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The KUnit UAPI infrastructure starts userspace processes. As it should be able to be built as a module, export the necessary symbols. Signed-off-by: Thomas Weißschuh --- fs/exec.c | 2 ++ fs/file.c | 1 + fs/filesystems.c | 2 ++ fs/fs_struct.c | 1 + fs/pipe.c | 2 ++ kernel/exit.c | 3 +++ kernel/fork.c | 2 ++ 7 files changed, 13 insertions(+) diff --git a/fs/exec.c b/fs/exec.c index 2e3a6593c6fd54..75c8c07e65fbf9 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -68,6 +68,7 @@ #include #include #include +#include #include #include @@ -1891,6 +1892,7 @@ int kernel_execve(const char *kernel_filename, return bprm_execve(bprm); } +EXPORT_SYMBOL_FOR_MODULES(kernel_execve, "kunit-uapi"); void set_binfmt(struct linux_binfmt *new) { diff --git a/fs/file.c b/fs/file.c index 0a4f3bdb2dec62..0add929178595f 100644 --- a/fs/file.c +++ b/fs/file.c @@ -1362,6 +1362,7 @@ int replace_fd(unsigned fd, struct file *file, unsigned flags) spin_unlock(&files->file_lock); return err; } +EXPORT_SYMBOL_FOR_MODULES(replace_fd, "kunit-uapi"); /** * receive_fd() - Install received file into file descriptor table diff --git a/fs/filesystems.c b/fs/filesystems.c index 0c7d2b7ac26c84..a86ac675040477 100644 --- a/fs/filesystems.c +++ b/fs/filesystems.c @@ -17,6 +17,7 @@ #include #include #include +#include /* * Handling of filesystem drivers list. @@ -45,6 +46,7 @@ void put_filesystem(struct file_system_type *fs) { module_put(fs->owner); } +EXPORT_SYMBOL_FOR_MODULES(put_filesystem, "kunit-uapi"); static struct file_system_type **find_filesystem(const char *name, unsigned len) { diff --git a/fs/fs_struct.c b/fs/fs_struct.c index 394875d06fd606..013b11eca7b480 100644 --- a/fs/fs_struct.c +++ b/fs/fs_struct.c @@ -43,6 +43,7 @@ void set_fs_pwd(struct fs_struct *fs, const struct path *path) if (old_pwd.dentry) path_put(&old_pwd); } +EXPORT_SYMBOL_FOR_MODULES(set_fs_pwd, "kunit-uapi"); static inline int replace_path(struct path *p, const struct path *old, const struct path *new) { diff --git a/fs/pipe.c b/fs/pipe.c index 9e6a0147581598..eb176ecbe8c057 100644 --- a/fs/pipe.c +++ b/fs/pipe.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -978,6 +979,7 @@ int create_pipe_files(struct file **res, int flags) file_set_fsnotify_mode(res[1], FMODE_NONOTIFY_PERM); return 0; } +EXPORT_SYMBOL_FOR_MODULES(create_pipe_files, "kunit-uapi"); static int __do_pipe_flags(int *fd, struct file **files, int flags) { diff --git a/kernel/exit.c b/kernel/exit.c index 8a87021211ae72..b44677d6fa73c6 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -71,6 +71,7 @@ #include #include #include +#include #include @@ -1013,6 +1014,7 @@ void __noreturn do_exit(long code) lockdep_free_task(tsk); do_task_dead(); } +EXPORT_SYMBOL_FOR_MODULES(do_exit, "kunit-uapi"); void __noreturn make_task_dead(int signr) { @@ -1895,6 +1897,7 @@ int kernel_wait(pid_t pid, int *stat) put_pid(wo.wo_pid); return ret; } +EXPORT_SYMBOL_FOR_MODULES(kernel_wait, "kunit-uapi"); SYSCALL_DEFINE4(wait4, pid_t, upid, int __user *, stat_addr, int, options, struct rusage __user *, ru) diff --git a/kernel/fork.c b/kernel/fork.c index e832da9d15a434..8edbc4f3f5a401 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -107,6 +107,7 @@ #include #include #include +#include #include #include @@ -2729,6 +2730,7 @@ pid_t user_mode_thread(int (*fn)(void *), void *arg, unsigned long flags) return kernel_clone(&args); } +EXPORT_SYMBOL_FOR_MODULES(user_mode_thread, "kunit-uapi"); #ifdef __ARCH_WANT_SYS_FORK SYSCALL_DEFINE0(fork) From b58bfa6909ce399a67b7498eff12d130452b62d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:16 +0200 Subject: [PATCH 19/33] kunit: tool: Don't overwrite test status based on subtest counts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If a subtest itself reports success, but the outer testcase fails, the whole testcase should be reported as a failure. However the status is recalculated based on the test counts, overwriting the outer test result. Synthesize a failed test in this case to make sure the failure is not swallowed. Signed-off-by: Thomas Weißschuh Reviewed-by: David Gow --- tools/testing/kunit/kunit_parser.py | 5 +++++ tools/testing/kunit/kunit_tool_test.py | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/testing/kunit/kunit_parser.py b/tools/testing/kunit/kunit_parser.py index 5338489dcbe48c..039beed429d6d7 100644 --- a/tools/testing/kunit/kunit_parser.py +++ b/tools/testing/kunit/kunit_parser.py @@ -688,6 +688,11 @@ def bubble_up_test_results(test: Test) -> None: counts.add_status(status) elif test.counts.get_status() == TestStatus.TEST_CRASHED: test.status = TestStatus.TEST_CRASHED + if not test.ok_status(): + for t in subtests: + if not t.ok_status(): + counts.add_status(t.status) + break if status == TestStatus.FAILURE and test.counts.get_status() == TestStatus.SUCCESS: counts.add_status(status) diff --git a/tools/testing/kunit/kunit_tool_test.py b/tools/testing/kunit/kunit_tool_test.py index b67408147c1faa..c73914e2e363a0 100755 --- a/tools/testing/kunit/kunit_tool_test.py +++ b/tools/testing/kunit/kunit_tool_test.py @@ -172,7 +172,7 @@ def test_parse_failed_nested_tests_log(self): with open(nested_log) as file: result = kunit_parser.parse_run_tests(file.readlines(), stdout) self.assertEqual(kunit_parser.TestStatus.FAILURE, result.status) - self.assertEqual(result.counts.failed, 2) + self.assertEqual(result.counts.failed, 3) self.assertEqual(kunit_parser.TestStatus.FAILURE, result.subtests[0].status) self.assertEqual(kunit_parser.TestStatus.SUCCESS, result.subtests[0].subtests[0].status) self.assertEqual(kunit_parser.TestStatus.FAILURE, result.subtests[1].status) From 3cf6ba63990689c3ce41127bdc9c160bdccad7af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:17 +0200 Subject: [PATCH 20/33] kunit: tool: Parse skipped tests from kselftest.h MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Skipped tests reported by kselftest.h use a different format than KTAP, there is no explicit test name. Normally the test name is part of the free-form string after the SKIP keyword: ok 3 # SKIP test: some reason Extend the parser to handle those correctly. Use the free-form string as test name instead. Signed-off-by: Thomas Weißschuh Reviewed-by: David Gow --- tools/testing/kunit/kunit_parser.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/kunit/kunit_parser.py b/tools/testing/kunit/kunit_parser.py index 039beed429d6d7..dd7238e7c6a6c8 100644 --- a/tools/testing/kunit/kunit_parser.py +++ b/tools/testing/kunit/kunit_parser.py @@ -352,9 +352,9 @@ def parse_test_plan(lines: LineStream, test: Test) -> bool: lines.pop() return True -TEST_RESULT = re.compile(r'^\s*(ok|not ok) ([0-9]+) ?(- )?([^#]*)( # .*)?$') +TEST_RESULT = re.compile(r'^\s*(ok|not ok) ([0-9]+)? ?(- )?([^#]*)( # .*)?$') -TEST_RESULT_SKIP = re.compile(r'^\s*(ok|not ok) ([0-9]+) ?(- )?(.*) # SKIP ?(.*)$') +TEST_RESULT_SKIP = re.compile(r'^\s*(ok|not ok) ([0-9]+)? ?(- )?(.*) # SKIP ?(.*)$') def peek_test_name_match(lines: LineStream, test: Test) -> bool: """ From f1212ca7b5effbf7ebca44834c93e5a146b6d717 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:19 +0200 Subject: [PATCH 21/33] kunit: qemu_configs: loongarch: Enable LSX/LSAX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The upcoming kunit UAPI framework will run userspace executables as part of kunit. These may use the LSX or LASX instructions. Make sure the kunit kernel can handle these instructions. Signed-off-by: Thomas Weißschuh Reviewed-by: David Gow --- tools/testing/kunit/qemu_configs/loongarch.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/testing/kunit/qemu_configs/loongarch.py b/tools/testing/kunit/qemu_configs/loongarch.py index a92422967d1da9..1dba755284f11f 100644 --- a/tools/testing/kunit/qemu_configs/loongarch.py +++ b/tools/testing/kunit/qemu_configs/loongarch.py @@ -11,6 +11,8 @@ CONFIG_SERIAL_8250=y CONFIG_SERIAL_8250_CONSOLE=y CONFIG_SERIAL_OF_PLATFORM=y +CONFIG_CPU_HAS_LSX=y +CONFIG_CPU_HAS_LASX=y ''', qemu_arch='loongarch64', kernel_path='arch/loongarch/boot/vmlinux.elf', From f57bc1ff2ea7aa6bcc28171386b988624d2dc1a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:20 +0200 Subject: [PATCH 22/33] kunit: Introduce UAPI testing framework MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enable running UAPI tests as part of kunit. The selftests are embedded into the kernel image and their output is forwarded to kunit for unified reporting. The implementation reuses parts of usermode drivers and usermode helpers. However these frameworks are not used directly as they make it impossible to retrieve a thread's exit code. Signed-off-by: Thomas Weißschuh --- Documentation/dev-tools/kunit/api/index.rst | 5 + Documentation/dev-tools/kunit/api/uapi.rst | 14 + MAINTAINERS | 6 + include/kunit/uapi.h | 77 +++++ lib/kunit/Kconfig | 14 + lib/kunit/Makefile | 2 + lib/kunit/kunit-uapi.c | 300 ++++++++++++++++++++ 7 files changed, 418 insertions(+) create mode 100644 Documentation/dev-tools/kunit/api/uapi.rst create mode 100644 include/kunit/uapi.h create mode 100644 lib/kunit/kunit-uapi.c diff --git a/Documentation/dev-tools/kunit/api/index.rst b/Documentation/dev-tools/kunit/api/index.rst index 5cdb552a0808f2..34d8fee9a97059 100644 --- a/Documentation/dev-tools/kunit/api/index.rst +++ b/Documentation/dev-tools/kunit/api/index.rst @@ -9,6 +9,7 @@ API Reference test resource functionredirection + uapi clk of platformdevice @@ -32,6 +33,10 @@ Documentation/dev-tools/kunit/api/functionredirection.rst - Documents the KUnit Function Redirection API +Documentation/dev-tools/kunit/api/uapi.rst + + - Documents the KUnit Userspace testing API + Driver KUnit API ================ diff --git a/Documentation/dev-tools/kunit/api/uapi.rst b/Documentation/dev-tools/kunit/api/uapi.rst new file mode 100644 index 00000000000000..1f01b5c6c9db42 --- /dev/null +++ b/Documentation/dev-tools/kunit/api/uapi.rst @@ -0,0 +1,14 @@ +.. SPDX-License-Identifier: GPL-2.0 + +================== +Userspace Test API +================== + +This file documents all of the userspace testing API. +Userspace tests are built as :ref:`kbuild userprogs `, +linked statically and without any external dependencies. + +For the widest platform compatibility they should use nolibc, as provided by `init/Makefile.nolibc`. + +.. kernel-doc:: include/kunit/uapi.h + :internal: diff --git a/MAINTAINERS b/MAINTAINERS index e60f46ece0eff5..d4515f7e578c7d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14276,6 +14276,12 @@ S: Maintained F: Documentation/devicetree/bindings/leds/backlight/kinetic,ktz8866.yaml F: drivers/video/backlight/ktz8866.c +KUNIT UAPI TESTING FRAMEWORK (in addition to KERNEL UNIT TESTING FRAMEWORK) +M: Thomas Weißschuh +S: Maintained +F: include/kunit/uapi.h +F: lib/kunit/kunit-uapi.c + KVM PARAVIRT (KVM/paravirt) M: Paolo Bonzini R: Vitaly Kuznetsov diff --git a/include/kunit/uapi.h b/include/kunit/uapi.h new file mode 100644 index 00000000000000..a5c923f5d82a91 --- /dev/null +++ b/include/kunit/uapi.h @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * KUnit Userspace testing API. + * + * Copyright (C) 2025, Linutronix GmbH. + * Author: Thomas Weißschuh + */ + +#ifndef _KUNIT_UAPI_H +#define _KUNIT_UAPI_H + +#include + +struct kunit; + +/** + * struct kunit_uapi_blob - Blob embedded build artifact + * @path: Path of the embedded artifact. + * @data: Start of the embedded data in memory. + * @end: End of the embedded data in memory. + */ +struct kunit_uapi_blob { + const char *const path; + const u8 *data; + const u8 *end; +}; + +#if IS_ENABLED(CONFIG_KUNIT_UAPI) + +/** + * KUNIT_UAPI_EMBED_BLOB() - Embed another build artifact into the kernel + * @_name: The name of symbol under which the artifact is embedded. + * @_path: Path to the artifact on disk. + * + * Embeds a build artifact like a userspace executable into the kernel or current module. + * The build artifact is read from disk and needs to be already built. + */ +#define KUNIT_UAPI_EMBED_BLOB(_name, _path) \ + asm ( \ + " .pushsection .rodata, \"a\" \n" \ + " .global " __stringify(CONCATENATE(_name, _data)) " \n" \ + __stringify(CONCATENATE(_name, _data)) ": \n" \ + " .incbin " __stringify(_path) " \n" \ + " .size " __stringify(CONCATENATE(_name, _data)) ", " \ + ". - " __stringify(CONCATENATE(_name, _data)) " \n" \ + " .global " __stringify(CONCATENATE(_name, _end)) " \n" \ + __stringify(CONCATENATE(_name, _end)) ": \n" \ + " .popsection \n" \ + ); \ + \ + extern const char CONCATENATE(_name, _data)[]; \ + extern const char CONCATENATE(_name, _end)[]; \ + \ + static const struct kunit_uapi_blob _name = { \ + .path = _path, \ + .data = CONCATENATE(_name, _data), \ + .end = CONCATENATE(_name, _end), \ + } \ + +#else /* !CONFIG_KUNIT_UAPI */ + +/* Unresolved external reference, to be optimized away */ +#define KUNIT_UAPI_EMBED_BLOB(_name, _path) \ + extern const struct kunit_uapi_blob _name + +#endif /* CONFIG_KUNIT_UAPI */ + +/** + * kunit_uapi_run_kselftest() - Run a userspace kselftest as part of kunit + * @test: The test context object. + * @executable: kselftest executable to run + * + * Runs the kselftest and forwards its TAP output and exit status to kunit. + */ +void kunit_uapi_run_kselftest(struct kunit *test, const struct kunit_uapi_blob *executable); + +#endif /* _KUNIT_UAPI_H */ diff --git a/lib/kunit/Kconfig b/lib/kunit/Kconfig index 498cc51e493dc9..24db2c00238225 100644 --- a/lib/kunit/Kconfig +++ b/lib/kunit/Kconfig @@ -141,4 +141,18 @@ config KUNIT_UML_PCI If unsure, say N. +config KUNIT_UAPI + tristate "KUnit UAPI testing framework" + depends on KUNIT + depends on CC_CAN_LINK_STATIC || ARCH_HAS_NOLIBC + depends on !LTO_CLANG # https://github.com/llvm/llvm-project/issues/112920 + select HEADERS_INSTALL + default KUNIT + help + Enables support for building and running userspace selftests as part of kunit. + These tests should be statically linked and use kselftest.h or kselftest_harness.h + for status reporting. + + In most cases this should be left as Y. + endif # KUNIT diff --git a/lib/kunit/Makefile b/lib/kunit/Makefile index 656f1fa35abcc6..6059621a2d32c8 100644 --- a/lib/kunit/Makefile +++ b/lib/kunit/Makefile @@ -12,6 +12,8 @@ kunit-objs += test.o \ device.o \ platform.o +obj-$(CONFIG_KUNIT_UAPI) += kunit-uapi.o + ifeq ($(CONFIG_KUNIT_DEBUGFS),y) kunit-objs += debugfs.o endif diff --git a/lib/kunit/kunit-uapi.c b/lib/kunit/kunit-uapi.c new file mode 100644 index 00000000000000..cfe8440e16fde9 --- /dev/null +++ b/lib/kunit/kunit-uapi.c @@ -0,0 +1,300 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * KUnit Userspace testing API. + * + * Copyright (C) 2025, Linutronix GmbH. + * Author: Thomas Weißschuh + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#define KSFT_PASS 0 +#define KSFT_FAIL 1 +#define KSFT_XFAIL 2 +#define KSFT_XPASS 3 +#define KSFT_SKIP 4 + +static struct vfsmount *kunit_uapi_mount_ramfs(void) +{ + struct file_system_type *type; + struct vfsmount *mnt; + + type = get_fs_type("ramfs"); + if (!type) + return ERR_PTR(-ENODEV); + + /* FIXME + * The mount setup is supposed to look like this: + * kunit_uapi_mount_ramfs() sets up a private mount, + * with nothing visible except the new tmpfs. + * Then each executable execution gets a new namespace on top of that + * on which it can mount whatever it needs. + * However I didn't manage to set this up, so keep everything simple + * for now and let somebody familiar with the VFS figure this out. + */ + + mnt = kern_mount(type); + put_filesystem(type); + + return mnt; +} + +static int kunit_uapi_write_file(struct vfsmount *mnt, const char *name, mode_t mode, + const u8 *data, size_t size) +{ + struct file *file; + ssize_t written; + + file = file_open_root_mnt(mnt, name, O_CREAT | O_WRONLY, mode); + if (IS_ERR(file)) + return PTR_ERR(file); + + written = kernel_write(file, data, size, NULL); + filp_close(file, NULL); + if (written != size) { + if (written >= 0) + return -ENOMEM; + return written; + } + + /* Flush delayed fput so exec can open the file read-only */ + flush_delayed_fput(); + + return 0; +} + +static int kunit_uapi_write_executable(struct vfsmount *mnt, + const struct kunit_uapi_blob *executable) +{ + return kunit_uapi_write_file(mnt, kbasename(executable->path), 0755, + executable->data, executable->end - executable->data); +} + +struct kunit_uapi_user_mode_thread_ctx { + const char *executable; + + /* Signals mnt, out, pwd and tgid */ + struct completion setup_done; + struct vfsmount *mnt; + struct file *out; + struct path pwd; + pid_t tgid; + + /* Valid after wait(tgid) */ + int exec_err; +}; + +static int kunit_uapi_user_mode_thread_init(void *data) +{ + struct kunit_uapi_user_mode_thread_ctx *ctx = data; + const char *const argv[] = { + ctx->executable, + NULL + }; + struct file *out[2]; + int err; + + err = create_pipe_files(out, 0); + if (err) + return err; + + /* stdin, use the *write* end to the pipe to have an unreadable input */ + err = replace_fd(0, out[1], 0); + if (err < 0) { + fput(out[0]); + fput(out[1]); + return err; + } + + /* stdout */ + err = replace_fd(1, out[1], 0); + if (err < 0) { + replace_fd(0, NULL, 0); + fput(out[0]); + fput(out[1]); + return err; + } + + /* stderr */ + err = replace_fd(2, out[1], 0); + if (err < 0) { + replace_fd(0, NULL, 0); + replace_fd(1, NULL, 0); + fput(out[0]); + fput(out[1]); + return err; + } + + fput(out[1]); + + ctx->out = out[0]; + ctx->tgid = current->tgid; + + set_fs_pwd(current->fs, &ctx->pwd); + kernel_sigaction(SIGKILL, SIG_DFL); + kernel_sigaction(SIGABRT, SIG_DFL); + + complete(&ctx->setup_done); + ctx->exec_err = kernel_execve(ctx->executable, argv, NULL); + if (!ctx->exec_err) + return 0; + do_exit(0); +} + +static size_t kunit_uapi_printk_subtest_lines(struct kunit *test, char *buf, size_t s) +{ + const char *ptr = buf, *newline; + size_t n; + + while (s) { + newline = strnchr(ptr, s, '\n'); + if (!newline) + break; + + n = newline - ptr + 1; + + kunit_log(KERN_INFO, test, KUNIT_SUBSUBTEST_INDENT "%.*s", (int)n, ptr); + ptr += n; + s -= n; + } + + memmove(buf, ptr, s); + + return s; +} + +static int kunit_uapi_forward_to_printk(struct kunit *test, struct file *output) +{ + /* + * printk() automatically adds a newline after each message. + * Therefore only fully accumulated lines can be forwarded. + * Each line needs to fit into the buffer below. + */ + char buf[512]; + size_t s = 0; + ssize_t n; + + while (1) { + n = kernel_read(output, buf + s, sizeof(buf) - s, NULL); + if (n <= 0) + return n; + s = kunit_uapi_printk_subtest_lines(test, buf, s + n); + } +} + +static void kunit_uapi_kill_pid(pid_t pid) +{ + struct pid *p; + + p = find_get_pid(pid); + kill_pid(p, SIGKILL, 1); + put_pid(p); +} + +static int kunit_uapi_run_executable_in_mount(struct kunit *test, const char *executable, + struct vfsmount *mnt) +{ + struct kunit_uapi_user_mode_thread_ctx ctx = { + .setup_done = COMPLETION_INITIALIZER_ONSTACK(ctx.setup_done), + .executable = executable, + .pwd = { + .mnt = mnt, + .dentry = mnt->mnt_root, + }, + }; + int forward_err, wait_err, ret; + pid_t pid; + + /* If SIGCHLD is ignored do_wait won't populate the status. */ + kernel_sigaction(SIGCHLD, SIG_DFL); + pid = user_mode_thread(kunit_uapi_user_mode_thread_init, &ctx, SIGCHLD); + if (pid < 0) { + kernel_sigaction(SIGCHLD, SIG_IGN); + return pid; + } + + wait_for_completion(&ctx.setup_done); + + forward_err = kunit_uapi_forward_to_printk(test, ctx.out); + if (forward_err) + kunit_uapi_kill_pid(ctx.tgid); + + wait_err = kernel_wait(ctx.tgid, &ret); + + /* Restore default kernel sig handler */ + kernel_sigaction(SIGCHLD, SIG_IGN); + + if (ctx.exec_err) + return ctx.exec_err; + if (forward_err) + return forward_err; + if (wait_err < 0) + return wait_err; + return ret; +} + +static int kunit_uapi_run_executable(struct kunit *test, + const struct kunit_uapi_blob *executable) +{ + const char *exe_name = kbasename(executable->path); + struct vfsmount *mnt; + int err; + + mnt = kunit_uapi_mount_ramfs(); + if (IS_ERR(mnt)) + return PTR_ERR(mnt); + + err = kunit_uapi_write_executable(mnt, executable); + + if (!err) + err = kunit_uapi_run_executable_in_mount(test, exe_name, mnt); + + kern_unmount(mnt); + + return err; +} + +void kunit_uapi_run_kselftest(struct kunit *test, const struct kunit_uapi_blob *executable) +{ + u8 exit_code, exit_signal; + int err; + + err = kunit_uapi_run_executable(test, executable); + if (err < 0) + KUNIT_FAIL_AND_ABORT(test, "Could not run test executable: %pe\n", ERR_PTR(err)); + + exit_code = err >> 8; + exit_signal = err & 0xff; + + if (exit_signal) + KUNIT_FAIL_AND_ABORT(test, "kselftest exited with signal: %d\n", exit_signal); + else if (exit_code == KSFT_PASS) + ; /* Noop */ + else if (exit_code == KSFT_FAIL) + KUNIT_FAIL_AND_ABORT(test, "kselftest exited with code KSFT_FAIL\n"); + else if (exit_code == KSFT_XPASS) + KUNIT_FAIL_AND_ABORT(test, "kselftest exited with code KSFT_XPASS\n"); + else if (exit_code == KSFT_XFAIL) + ; /* Noop */ + else if (exit_code == KSFT_SKIP) + kunit_mark_skipped(test, "kselftest exited with code KSFT_SKIP\n"); + else + KUNIT_FAIL_AND_ABORT(test, "kselftest exited with unknown exit code: %d\n", + exit_code); +} +EXPORT_SYMBOL_GPL(kunit_uapi_run_kselftest); + +MODULE_DESCRIPTION("KUnit UAPI testing framework"); +MODULE_AUTHOR("Thomas Weißschuh Date: Thu, 26 Jun 2025 08:10:21 +0200 Subject: [PATCH 23/33] kunit: uapi: Add example for UAPI tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extend the example to show how to run a userspace executable. Signed-off-by: Thomas Weißschuh Reviewed-by: David Gow --- MAINTAINERS | 1 + lib/kunit/Makefile | 9 +++++++++ lib/kunit/kunit-example-test.c | 15 +++++++++++++++ lib/kunit/kunit-example-uapi.c | 22 ++++++++++++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 lib/kunit/kunit-example-uapi.c diff --git a/MAINTAINERS b/MAINTAINERS index d4515f7e578c7d..000070de8a49e1 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14280,6 +14280,7 @@ KUNIT UAPI TESTING FRAMEWORK (in addition to KERNEL UNIT TESTING FRAMEWORK) M: Thomas Weißschuh S: Maintained F: include/kunit/uapi.h +F: lib/kunit/kunit-example-uapi.c F: lib/kunit/kunit-uapi.c KVM PARAVIRT (KVM/paravirt) diff --git a/lib/kunit/Makefile b/lib/kunit/Makefile index 6059621a2d32c8..1bba7965613e36 100644 --- a/lib/kunit/Makefile +++ b/lib/kunit/Makefile @@ -1,3 +1,5 @@ +include $(srctree)/init/Makefile.nolibc + obj-$(CONFIG_KUNIT) += kunit.o kunit-objs += test.o \ @@ -31,3 +33,10 @@ obj-$(CONFIG_KUNIT_TEST) += assert_test.o endif obj-$(CONFIG_KUNIT_EXAMPLE_TEST) += kunit-example-test.o + +userprogs += kunit-example-uapi +kunit-example-uapi-userccflags := -static $(NOLIBC_USERCFLAGS) + +ifdef CONFIG_KUNIT_UAPI +$(obj)/kunit-example-test.o: $(obj)/kunit-example-uapi +endif diff --git a/lib/kunit/kunit-example-test.c b/lib/kunit/kunit-example-test.c index 9452b163956f3e..3c0146fd9059ff 100644 --- a/lib/kunit/kunit-example-test.c +++ b/lib/kunit/kunit-example-test.c @@ -8,6 +8,7 @@ #include #include +#include /* * This is the most fundamental element of KUnit, the test case. A test case @@ -489,6 +490,19 @@ static void example_params_test_with_init_dynamic_arr(struct kunit *test) KUNIT_EXPECT_EQ(test, param_val - param_val, 0); } +/* + * This test shows the usage of UAPI tests. + */ +static void example_uapi_test(struct kunit *test) +{ + KUNIT_UAPI_EMBED_BLOB(kunit_example_uapi, "kunit-example-uapi"); + + if (IS_ENABLED(CONFIG_KUNIT_UAPI)) + kunit_uapi_run_kselftest(test, &kunit_example_uapi); + else + kunit_skip(test, "CONFIG_KUNIT_UAPI is not enabled"); +} + /* * Here we make a list of all the test cases we want to add to the test suite * below. @@ -514,6 +528,7 @@ static struct kunit_case example_test_cases[] = { kunit_array_gen_params, example_param_init_dynamic_arr, example_param_exit_dynamic_arr), KUNIT_CASE_SLOW(example_slow_test), + KUNIT_CASE(example_uapi_test), {} }; diff --git a/lib/kunit/kunit-example-uapi.c b/lib/kunit/kunit-example-uapi.c new file mode 100644 index 00000000000000..4ce657050dd4a5 --- /dev/null +++ b/lib/kunit/kunit-example-uapi.c @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * KUnit Userspace example test. + * + * Copyright (C) 2025, Linutronix GmbH. + * Author: Thomas Weißschuh + * + * This is *userspace* code. + */ + +#include "../../tools/testing/selftests/kselftest.h" + +int main(void) +{ + ksft_print_header(); + ksft_set_plan(4); + ksft_test_result_pass("userspace test 1\n"); + ksft_test_result_pass("userspace test 2\n"); + ksft_test_result_skip("userspace test 3: some reason\n"); + ksft_test_result_pass("userspace test 4\n"); + ksft_finished(); +} From d63de0aaa783c0197fb09f9d425e0078ae8a3def Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:22 +0200 Subject: [PATCH 24/33] kunit: uapi: Introduce preinit executable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UAPI selftests may expect a "normal" userspace environment. For example the normal kernel API pseudo-filesystems should be mounted. This could be done from kernel code but it is non-idiomatic. Add a preinit userspace executable which performs these setup steps before running the final test executable. This preinit executable is only ever run from the kernel. Give it access to autoconf.h and kconfig.h to adapt itself to the tested kernel. Signed-off-by: Thomas Weißschuh Reviewed-by: David Gow --- MAINTAINERS | 1 + lib/kunit/Makefile | 6 ++++ lib/kunit/kunit-uapi.c | 9 ++++-- lib/kunit/uapi-preinit.c | 63 ++++++++++++++++++++++++++++++++++++++++ 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 lib/kunit/uapi-preinit.c diff --git a/MAINTAINERS b/MAINTAINERS index 000070de8a49e1..b568689011e38f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14282,6 +14282,7 @@ S: Maintained F: include/kunit/uapi.h F: lib/kunit/kunit-example-uapi.c F: lib/kunit/kunit-uapi.c +F: lib/kunit/uapi-preinit.c KVM PARAVIRT (KVM/paravirt) M: Paolo Bonzini diff --git a/lib/kunit/Makefile b/lib/kunit/Makefile index 1bba7965613e36..b50f3bc8bc7f3a 100644 --- a/lib/kunit/Makefile +++ b/lib/kunit/Makefile @@ -14,8 +14,14 @@ kunit-objs += test.o \ device.o \ platform.o +userprogs += uapi-preinit +uapi-preinit-userccflags += -static $(NOLIBC_USERCFLAGS) \ + -include include/generated/autoconf.h \ + -include $(srctree)/tools/include/linux/kconfig.h obj-$(CONFIG_KUNIT_UAPI) += kunit-uapi.o +$(obj)/kunit-uapi.o: $(obj)/uapi-preinit + ifeq ($(CONFIG_KUNIT_DEBUGFS),y) kunit-objs += debugfs.o endif diff --git a/lib/kunit/kunit-uapi.c b/lib/kunit/kunit-uapi.c index cfe8440e16fde9..7c87605b9ded9d 100644 --- a/lib/kunit/kunit-uapi.c +++ b/lib/kunit/kunit-uapi.c @@ -25,6 +25,8 @@ #define KSFT_XPASS 3 #define KSFT_SKIP 4 +KUNIT_UAPI_EMBED_BLOB(kunit_uapi_preinit, "uapi-preinit"); + static struct vfsmount *kunit_uapi_mount_ramfs(void) { struct file_system_type *type; @@ -146,7 +148,7 @@ static int kunit_uapi_user_mode_thread_init(void *data) kernel_sigaction(SIGABRT, SIG_DFL); complete(&ctx->setup_done); - ctx->exec_err = kernel_execve(ctx->executable, argv, NULL); + ctx->exec_err = kernel_execve(kbasename(kunit_uapi_preinit.path), argv, NULL); if (!ctx->exec_err) return 0; do_exit(0); @@ -255,7 +257,10 @@ static int kunit_uapi_run_executable(struct kunit *test, if (IS_ERR(mnt)) return PTR_ERR(mnt); - err = kunit_uapi_write_executable(mnt, executable); + err = kunit_uapi_write_executable(mnt, &kunit_uapi_preinit); + + if (!err) + err = kunit_uapi_write_executable(mnt, executable); if (!err) err = kunit_uapi_run_executable_in_mount(test, exe_name, mnt); diff --git a/lib/kunit/uapi-preinit.c b/lib/kunit/uapi-preinit.c new file mode 100644 index 00000000000000..81182039965a8c --- /dev/null +++ b/lib/kunit/uapi-preinit.c @@ -0,0 +1,63 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * KUnit Userspace environment setup. + * + * Copyright (C) 2025, Linutronix GmbH. + * Author: Thomas Weißschuh + * + * This is *userspace* code. + */ + +#include +#include + +#include "../../tools/testing/selftests/kselftest.h" + +static int setup_api_mount(const char *target, const char *fstype) +{ + int ret; + + ret = mkdir(target, 0755); + if (ret && errno != EEXIST) + return -errno; + + ret = mount("none", target, fstype, 0, NULL); + if (ret && errno != EBUSY) + return -errno; + + return 0; +} + +static void exit_failure(const char *stage, int err) +{ + /* If preinit fails synthesize a failed test report. */ + ksft_print_header(); + ksft_set_plan(1); + ksft_test_result_fail("Failed during test setup: %s: %s\n", stage, strerror(-err)); + ksft_finished(); +} + +int main(int argc, char **argv, char **envp) +{ + int ret; + + ret = setup_api_mount("/proc", "proc"); + if (ret) + exit_failure("mount /proc", ret); + + ret = setup_api_mount("/sys", "sysfs"); + if (ret) + exit_failure("mount /sys", ret); + + if (IS_ENABLED(CONFIG_DEVTMPFS)) { + ret = setup_api_mount("/dev", "devtmpfs"); + if (ret) + exit_failure("mount /dev", ret); + } + + ret = execve(argv[0], argv, envp); + if (ret) + exit_failure("execve", ret); + + return 0; +} From ddfcea14e2903ff60fda8c01e847e72d03db14e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Date: Thu, 26 Jun 2025 08:10:23 +0200 Subject: [PATCH 25/33] kunit: uapi: Validate usability of /proc MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Show that the selftests are executed from a fairly "normal" userspace context. Signed-off-by: Thomas Weißschuh --- MAINTAINERS | 1 + lib/kunit/Makefile | 8 ++++++ lib/kunit/kunit-test-uapi.c | 51 +++++++++++++++++++++++++++++++++++++ lib/kunit/kunit-test.c | 23 ++++++++++++++++- 4 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 lib/kunit/kunit-test-uapi.c diff --git a/MAINTAINERS b/MAINTAINERS index b568689011e38f..d2e46f23da0df3 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -14281,6 +14281,7 @@ M: Thomas Weißschuh S: Maintained F: include/kunit/uapi.h F: lib/kunit/kunit-example-uapi.c +F: lib/kunit/kunit-test-uapi.c F: lib/kunit/kunit-uapi.c F: lib/kunit/uapi-preinit.c diff --git a/lib/kunit/Makefile b/lib/kunit/Makefile index b50f3bc8bc7f3a..25384e5c3c4cd1 100644 --- a/lib/kunit/Makefile +++ b/lib/kunit/Makefile @@ -30,6 +30,14 @@ endif obj-$(if $(CONFIG_KUNIT),y) += hooks.o obj-$(CONFIG_KUNIT_TEST) += kunit-test.o + +userprogs += kunit-test-uapi +kunit-test-uapi-userccflags := -static $(NOLIBC_USERCFLAGS) + +ifdef CONFIG_KUNIT_UAPI +$(obj)/kunit-test.o: $(obj)/kunit-test-uapi +endif + obj-$(CONFIG_KUNIT_TEST) += platform-test.o # string-stream-test compiles built-in only. diff --git a/lib/kunit/kunit-test-uapi.c b/lib/kunit/kunit-test-uapi.c new file mode 100644 index 00000000000000..ec5395d809ee2a --- /dev/null +++ b/lib/kunit/kunit-test-uapi.c @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * KUnit Userspace selftest. + * + * Copyright (C) 2025, Linutronix GmbH. + * Author: Thomas Weißschuh + * + * This is *userspace* code. + */ + +#include +#include +#include + +#include "../../tools/testing/selftests/kselftest.h" + +static void test_procfs(void) +{ + char buf[256]; + ssize_t r; + int fd; + + fd = open("/proc/self/comm", O_RDONLY); + if (fd == -1) { + ksft_test_result_fail("procfs: open() failed: %s\n", strerror(errno)); + return; + } + + r = read(fd, buf, sizeof(buf)); + close(fd); + + if (r == -1) { + ksft_test_result_fail("procfs: read() failed: %s\n", strerror(errno)); + return; + } + + if (r != 16 || strncmp("kunit-test-uapi\n", buf, 16) != 0) { + ksft_test_result_fail("procfs: incorrect comm\n"); + return; + } + + ksft_test_result_pass("procfs\n"); +} + +int main(void) +{ + ksft_print_header(); + ksft_set_plan(1); + test_procfs(); + ksft_finished(); +} diff --git a/lib/kunit/kunit-test.c b/lib/kunit/kunit-test.c index 63130a48e23712..5ffc1a33349737 100644 --- a/lib/kunit/kunit-test.c +++ b/lib/kunit/kunit-test.c @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -915,10 +916,30 @@ static struct kunit_suite kunit_stub_test_suite = { .test_cases = kunit_stub_test_cases, }; +static void kunit_uapi_test(struct kunit *test) +{ + KUNIT_UAPI_EMBED_BLOB(kunit_test_uapi, "kunit-test-uapi"); + + if (IS_ENABLED(CONFIG_KUNIT_UAPI)) + kunit_uapi_run_kselftest(test, &kunit_test_uapi); + else + kunit_skip(test, "CONFIG_KUNIT_UAPI is not enabled"); +} + +static struct kunit_case kunit_uapi_test_cases[] = { + KUNIT_CASE(kunit_uapi_test), + {} +}; + +static struct kunit_suite kunit_uapi_test_suite = { + .name = "kunit_uapi", + .test_cases = kunit_uapi_test_cases, +}; + kunit_test_suites(&kunit_try_catch_test_suite, &kunit_resource_test_suite, &kunit_log_test_suite, &kunit_status_test_suite, &kunit_current_test_suite, &kunit_device_test_suite, - &kunit_fault_test_suite, &kunit_stub_test_suite); + &kunit_fault_test_suite, &kunit_stub_test_suite, &kunit_uapi_test_suite); MODULE_DESCRIPTION("KUnit test for core test infrastructure"); MODULE_LICENSE("GPL v2"); From 3c0d3fcca65e66c7a36fe34e6c2f1ef17913f726 Mon Sep 17 00:00:00 2001 From: Benjamin Berg Date: Thu, 26 Jun 2025 21:57:13 +0200 Subject: [PATCH 26/33] tools/nolibc: add sigaction() In preparation to add tests that use it. Signed-off-by: Benjamin Berg --- tools/include/nolibc/nolibc.h | 3 +++ tools/include/nolibc/signal.h | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+) diff --git a/tools/include/nolibc/nolibc.h b/tools/include/nolibc/nolibc.h index 9c7f43b9218b3c..a31dd6b84ce190 100644 --- a/tools/include/nolibc/nolibc.h +++ b/tools/include/nolibc/nolibc.h @@ -92,6 +92,9 @@ #ifndef _NOLIBC_H #define _NOLIBC_H +/* So that we do not get compatibility types/defines */ +#define __KERNEL__ + #include "std.h" #include "arch.h" #include "types.h" diff --git a/tools/include/nolibc/signal.h b/tools/include/nolibc/signal.h index ac13e53ac31d7c..fa52119e577f84 100644 --- a/tools/include/nolibc/signal.h +++ b/tools/include/nolibc/signal.h @@ -14,6 +14,7 @@ #include "arch.h" #include "types.h" #include "sys.h" +#include /* This one is not marked static as it's needed by libgcc for divide by zero */ int raise(int signal); @@ -23,4 +24,37 @@ int raise(int signal) return sys_kill(sys_getpid(), signal); } +/* + * sigaction(int signum, const struct sigaction *act, struct sigaction *oldact) + */ + +#ifdef SA_RESTORER +__attribute__((naked)) +static void my_sa_restorer(void) +{ + my_syscall0(__NR_rt_sigreturn); +} +#endif + +static __attribute__((unused)) +int sys_sigaction(int signum, const struct sigaction *act, struct sigaction *oldact) +{ + struct sigaction real_act = *act; +#ifdef SA_RESTORER + if (!(real_act.sa_flags & SA_RESTORER)) { + real_act.sa_flags |= SA_RESTORER; + real_act.sa_restorer = my_sa_restorer; + } +#endif + + return my_syscall4(__NR_rt_sigaction, signum, &real_act, oldact, + sizeof(act->sa_mask)); +} + +static __attribute__((unused)) +int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact) +{ + return __sysret(sys_sigaction(signum, act, oldact)); +} + #endif /* _NOLIBC_SIGNAL_H */ From fbd885d6375f8dd8ca3cfe27216e5b340fc7e916 Mon Sep 17 00:00:00 2001 From: Benjamin Berg Date: Thu, 26 Jun 2025 21:57:14 +0200 Subject: [PATCH 27/33] um: add a mcontext FP register handling test This tests checks whether floating point registers are properly saved into the signal context and restored again. The test works by having a known value at the top of the FP register stack and in the first xmm register. Then SIGUSR1 is triggered and both of these registers are modified by changing the values in the mcontext. Signed-off-by: Benjamin Berg --- arch/x86/um/Makefile | 2 + arch/x86/um/tests/Makefile | 12 +++ arch/x86/um/tests/registers.c | 22 +++++ arch/x86/um/tests/test-fp-save-restore.c | 118 +++++++++++++++++++++++ 4 files changed, 154 insertions(+) create mode 100644 arch/x86/um/tests/Makefile create mode 100644 arch/x86/um/tests/registers.c create mode 100644 arch/x86/um/tests/test-fp-save-restore.c diff --git a/arch/x86/um/Makefile b/arch/x86/um/Makefile index 39693807755a0c..8b4780968ec58d 100644 --- a/arch/x86/um/Makefile +++ b/arch/x86/um/Makefile @@ -15,6 +15,8 @@ obj-y = bugs_$(BITS).o delay.o fault.o \ sys_call_table_$(BITS).o sysrq_$(BITS).o tls_$(BITS).o \ subarch.o os-Linux/ +obj-y += tests/ + ifeq ($(CONFIG_X86_32),y) obj-y += syscalls_32.o diff --git a/arch/x86/um/tests/Makefile b/arch/x86/um/tests/Makefile new file mode 100644 index 00000000000000..c3a868b078f3b0 --- /dev/null +++ b/arch/x86/um/tests/Makefile @@ -0,0 +1,12 @@ +include $(srctree)/init/Makefile.nolibc + +ccflags-y := -I$(obj) + +um-tests-y += registers.o + +userprogs += test-fp-save-restore +test-fp-save-restore-userccflags := -static $(NOLIBC_USERCFLAGS) -msse + +obj-$(CONFIG_KUNIT_UAPI) += um-tests.o + +$(obj)/registers.o: $(obj)/test-fp-save-restore diff --git a/arch/x86/um/tests/registers.c b/arch/x86/um/tests/registers.c new file mode 100644 index 00000000000000..2c4e55da043c0f --- /dev/null +++ b/arch/x86/um/tests/registers.c @@ -0,0 +1,22 @@ +#include +#include +#include + +static void test_mcontext(struct kunit *test) +{ + KUNIT_UAPI_EMBED_BLOB(test_fp_save_restore, "test-fp-save-restore"); + + kunit_uapi_run_kselftest(test, &test_fp_save_restore); +} + +static struct kunit_case register_test_cases[] = { + KUNIT_CASE(test_mcontext), + {} +}; + +static struct kunit_suite register_test_suite = { + .name = "um_registers", + .test_cases = register_test_cases, +}; + +kunit_test_suites(®ister_test_suite); diff --git a/arch/x86/um/tests/test-fp-save-restore.c b/arch/x86/um/tests/test-fp-save-restore.c new file mode 100644 index 00000000000000..28a32ca374fe64 --- /dev/null +++ b/arch/x86/um/tests/test-fp-save-restore.c @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Test FP register handling in userspace mcontext. + * + * Copyright (C) 2025 Intel Corporation + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "../../../tools/testing/selftests/kselftest.h" + +#define ST0_EXP_ADD 10 + +static void sighandler(int sig, siginfo_t *info, void *p) +{ + struct ucontext *uc = p; + struct _fpstate *fpstate = (void *)uc->uc_mcontext.fpstate; + + ksft_print_msg("sighandler: extended_size: %d, xstate_size: %d\n", + fpstate->sw_reserved.extended_size, + fpstate->sw_reserved.xstate_size); + +#ifdef __i386__ + fpstate->_st[0].exponent += ST0_EXP_ADD; + fpstate->_xmm[1].element[0] |= 0x01010101; + fpstate->_xmm[1].element[1] |= 0x01010101; + fpstate->_xmm[1].element[2] |= 0x01010101; + fpstate->_xmm[1].element[3] |= 0x01010101; +#else + /* Hacky way of modifying the exponent without breaking aliasing */ + fpstate->st_space[2] += ST0_EXP_ADD; + fpstate->xmm_space[4] |= 0x01010101; + fpstate->xmm_space[5] |= 0x01010101; + fpstate->xmm_space[6] |= 0x01010101; + fpstate->xmm_space[7] |= 0x01010101; +#endif +} + +static int test_mcontext(int xmm_should_change) +{ + double num = 0.5; + uint32_t sse[4] = {0x11223344, 0x55667788, 0x99aabbcc, 0xddeeff00 }; + long ret; + int xmm_manipulated; + + ksft_print_msg("pre-signal: %d / 100, %08x %08x %08x %08x\n", (int) (100*num), sse[0], sse[1], sse[2], sse[3]); + /* + * This does kill(getpid(), SIGUSR1); with "num" being passed in AND + * out of the floating point stack. We can therefore modify num by + * changing st[0] when handling the signal. + */ +#ifdef __i386__ + asm volatile ( + "movups %1, %%xmm1;" + "int $0x80;" + "movups %%xmm1, %1;" + : "=t" (num), "=m" (sse), "=a" (ret) + : "0" (num), "2" (__NR_kill), "b" (getpid()), "c" (SIGUSR1) : + "xmm1", "memory"); +#else + asm volatile ( + "movups %1, %%xmm1;" + "syscall;" + "movups %%xmm1, %1;" + : "=t" (num), "=m"(sse), "=a" (ret) + : "0" (num), "2" (__NR_kill), "D" (getpid()), "S" (SIGUSR1) + : "r11", "rcx", "xmm1", "memory"); +#endif + if (sse[0] == 0x11223344 || sse[1] == 0x55667788 || sse[2] == 0x99aabbcc || sse[3] == 0xddeeff00) + xmm_manipulated = 0; + else if (sse[0] == 0x11233345 || sse[1] == 0x55677789 || sse[2] == 0x99abbbcd || sse[3] == 0xddefff01) + xmm_manipulated = 1; + else + xmm_manipulated = 2; + + ksft_print_msg("post-signal: %d / 100, %08x %08x %08x %08x (should change: %d, changed: %d)\n", + (int) (100 * num), sse[0], sse[1], sse[2], sse[3], xmm_should_change, xmm_manipulated); + + if (num != (1 << (ST0_EXP_ADD - 1))) { + ksft_print_msg("floating point register was not manipulated\n"); + return 1; + } + + if (xmm_manipulated != xmm_should_change) { + ksft_print_msg("xmm/sse had unexpected value!\n"); + return 1; + } + + return 0; +} + +int main(void) +{ + struct sigaction sa = { + .sa_flags = SA_SIGINFO, + .sa_handler = (void (*)(int))sighandler, + }; + + ksft_print_header(); + ksft_set_plan(1); + + if (sys_sigaction(SIGUSR1, &sa, NULL) < 0) + ksft_exit_fail_msg("Failed to register sigaction: %d\n", errno); + + if (!test_mcontext(1)) + ksft_test_result_pass("mcontext\n"); + else + ksft_test_result_fail("mcontext failed!\n"); + + ksft_finished(); +} From 8aeab4875a07e4df30d09ce9e42832533032cda9 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Mon, 15 Sep 2025 21:07:43 +0900 Subject: [PATCH 28/33] kunit: uapi: use ccflag/ldflag -static-pie for nommu build --- arch/x86/um/tests/Makefile | 2 +- init/Makefile.nolibc | 10 ++++++++-- lib/kunit/Makefile | 6 +++--- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/arch/x86/um/tests/Makefile b/arch/x86/um/tests/Makefile index c3a868b078f3b0..743a0ff129df55 100644 --- a/arch/x86/um/tests/Makefile +++ b/arch/x86/um/tests/Makefile @@ -5,7 +5,7 @@ ccflags-y := -I$(obj) um-tests-y += registers.o userprogs += test-fp-save-restore -test-fp-save-restore-userccflags := -static $(NOLIBC_USERCFLAGS) -msse +test-fp-save-restore-userccflags := $(NOLIBC_USERCFLAGS) -msse obj-$(CONFIG_KUNIT_UAPI) += um-tests.o diff --git a/init/Makefile.nolibc b/init/Makefile.nolibc index a8a193f78e34e0..69450f89bd620f 100644 --- a/init/Makefile.nolibc +++ b/init/Makefile.nolibc @@ -2,12 +2,18 @@ # Compiler flags, which are necessary to build userspace applications with the # in-kernel libc "nolibc". +ifeq ($(CONFIG_MMU),y) + NOLIBC_STATIC_FLAG := -static +else + NOLIBC_STATIC_FLAG := -static-pie +endif + ifeq ($(and $(CONFIG_ARCH_HAS_NOLIBC),$(CONFIG_HEADERS_INSTALL)),y) -NOLIBC_USERCFLAGS := -nostdlib -nostdinc -static -ffreestanding \ +NOLIBC_USERCFLAGS := -nostdlib -nostdinc $(NOLIBC_STATIC_FLAG) -ffreestanding \ -fno-asynchronous-unwind-tables -fno-stack-protector \ -isystem $(objtree)/usr/include -isystem $(srctree)/tools/include/nolibc/ -NOLIBC_USERLDFLAGS := -nostdlib -nostdinc -static +NOLIBC_USERLDFLAGS := -nostdlib -nostdinc $(NOLIBC_STATIC_FLAG) endif # CONFIG_ARCH_HAS_NOLIBC && CONFIG_HEADERS_INSTALL diff --git a/lib/kunit/Makefile b/lib/kunit/Makefile index 25384e5c3c4cd1..ac7b476c437a5f 100644 --- a/lib/kunit/Makefile +++ b/lib/kunit/Makefile @@ -15,7 +15,7 @@ kunit-objs += test.o \ platform.o userprogs += uapi-preinit -uapi-preinit-userccflags += -static $(NOLIBC_USERCFLAGS) \ +uapi-preinit-userccflags += $(NOLIBC_USERCFLAGS) \ -include include/generated/autoconf.h \ -include $(srctree)/tools/include/linux/kconfig.h obj-$(CONFIG_KUNIT_UAPI) += kunit-uapi.o @@ -32,7 +32,7 @@ obj-$(if $(CONFIG_KUNIT),y) += hooks.o obj-$(CONFIG_KUNIT_TEST) += kunit-test.o userprogs += kunit-test-uapi -kunit-test-uapi-userccflags := -static $(NOLIBC_USERCFLAGS) +kunit-test-uapi-userccflags := $(NOLIBC_USERCFLAGS) ifdef CONFIG_KUNIT_UAPI $(obj)/kunit-test.o: $(obj)/kunit-test-uapi @@ -49,7 +49,7 @@ endif obj-$(CONFIG_KUNIT_EXAMPLE_TEST) += kunit-example-test.o userprogs += kunit-example-uapi -kunit-example-uapi-userccflags := -static $(NOLIBC_USERCFLAGS) +kunit-example-uapi-userccflags := $(NOLIBC_USERCFLAGS) ifdef CONFIG_KUNIT_UAPI $(obj)/kunit-example-test.o: $(obj)/kunit-example-uapi From b1ce788b08e189eb075513dbfd764f00d8641024 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Sat, 14 Sep 2024 10:06:33 +0900 Subject: [PATCH 29/33] fs: binfmt_elf_efpic: add architecture hook elf_arch_finalize_exec FDPIC ELF loader adds an architecture hook at the end of loading binaries to finalize the mapped memory before moving toward exec function. The hook is used by UML under !MMU when translating syscall/sysenter instructions before calling execve. Cc: Alexander Viro Cc: Christian Brauner Cc: Jan Kara Cc: Eric Biederman Cc: Kees Cook Cc: linux-fsdevel@vger.kernel.org Cc: linux-mm@kvack.org Signed-off-by: Hajime Tazaki --- fs/binfmt_elf_fdpic.c | 10 ++++++++++ include/linux/elf-fdpic.h | 3 +++ 2 files changed, 13 insertions(+) diff --git a/fs/binfmt_elf_fdpic.c b/fs/binfmt_elf_fdpic.c index 48fd2de3bca052..17bd590f2fcdec 100644 --- a/fs/binfmt_elf_fdpic.c +++ b/fs/binfmt_elf_fdpic.c @@ -175,6 +175,12 @@ static int elf_fdpic_fetch_phdrs(struct elf_fdpic_params *params, return 0; } +int __weak elf_arch_finalize_exec(struct elf_fdpic_params *exec_params, + struct elf_fdpic_params *interp_params) +{ + return 0; +} + /*****************************************************************************/ /* * load an fdpic binary into various bits of memory @@ -458,6 +464,10 @@ static int load_elf_fdpic_binary(struct linux_binprm *bprm) dynaddr); #endif + retval = elf_arch_finalize_exec(&exec_params, &interp_params); + if (retval) + goto error; + finalize_exec(bprm); /* everything is now ready... get the userspace context ready to roll */ entryaddr = interp_params.entry_addr ?: exec_params.entry_addr; diff --git a/include/linux/elf-fdpic.h b/include/linux/elf-fdpic.h index e533f45131945f..e7fd85a1d10f6f 100644 --- a/include/linux/elf-fdpic.h +++ b/include/linux/elf-fdpic.h @@ -56,4 +56,7 @@ extern void elf_fdpic_arch_lay_out_mm(struct elf_fdpic_params *exec_params, unsigned long *start_brk); #endif +extern int elf_arch_finalize_exec(struct elf_fdpic_params *exec_params, + struct elf_fdpic_params *interp_params); + #endif /* _LINUX_ELF_FDPIC_H */ From 82ab5a161b11362d8a036765261c2eeed6ab2232 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Thu, 5 Dec 2024 19:17:23 +0900 Subject: [PATCH 30/33] x86/um: nommu: syscall translation by zpoline This commit adds a mechanism to hook syscalls for unmodified userspace programs used under UML in !MMU mode. The mechanism, called zpoline, translates syscall/sysenter instructions with `call *%rax`, which can be processed by a trampoline code also installed upon an initcall during boot. The translation is triggered by elf_arch_finalize_exec(), an arch hook introduced by another commit. All syscalls issued by userspace thus redirected to a specific function, __kernel_vsyscall, introduced as a syscall entry point for !MMU UML. This totally changes the code path to hook syscall with ptrace(2) used by MMU-full UML. Signed-off-by: Hajime Tazaki --- Documentation/virt/uml/nommu-uml.rst | 30 ++-- arch/um/Makefile | 1 + arch/um/include/shared/os.h | 3 + arch/x86/um/asm/elf.h | 3 + arch/x86/um/nommu/Makefile | 14 ++ arch/x86/um/nommu/zpoline.c | 238 +++++++++++++++++++++++++++ arch/x86/um/vdso/um_vdso.c | 37 +++-- 7 files changed, 297 insertions(+), 29 deletions(-) create mode 100644 arch/x86/um/nommu/zpoline.c diff --git a/Documentation/virt/uml/nommu-uml.rst b/Documentation/virt/uml/nommu-uml.rst index b359af1155bbfd..e9f238a5e5806d 100644 --- a/Documentation/virt/uml/nommu-uml.rst +++ b/Documentation/virt/uml/nommu-uml.rst @@ -127,26 +127,26 @@ lmbench and (self-crafted) getpid benchmark (with v6.17-rc5 uml/next tree). .. csv-table:: lmbench (usec) - :header: ,native,um,um-mmu(s),um-nommu(s) - - select-10 ,0.5319,36.1214,24.2795,2.9174 - select-100 ,1.6019,34.6049,28.8865,3.8080 - select-1000 ,12.2588,43.6838,48.7438,12.7872 - syscall ,0.1644,35.0321,53.2119,2.5981 - read ,0.3055,31.5509,45.8538,2.7068 - write ,0.2512,31.3609,29.2636,2.6948 - stat ,1.8894,43.8477,49.6121,3.1908 - open/close ,3.2973,77.5123,68.9431,6.2575 - fork+sh ,1110.3000,7359.5000,4618.6667,439.4615 - fork+execve ,510.8182,2834.0000,2461.1667,139.7848 + :header: ,native,um,um-mmu(s),um-nommu(s),um-nommu(z) + + select-10 ,0.5319,36.1214,24.2795,2.9174,0.3585 + select-100 ,1.6019,34.6049,28.8865,3.8080,1.2597 + select-1000 ,12.2588,43.6838,48.7438,12.7872,10.2857 + syscall ,0.1644,35.0321,53.2119,2.5981,0.1568 + read ,0.3055,31.5509,45.8538,2.7068,0.2228 + write ,0.2512,31.3609,29.2636,2.6948,0.2106 + stat ,1.8894,43.8477,49.6121,3.1908,0.5278 + open/close ,3.2973,77.5123,68.9431,6.2575,0.9021 + fork+sh ,1110.3000,7359.5000,4618.6667,439.4615,19016.0000 + fork+execve ,510.8182,2834.0000,2461.1667,139.7848,4849.3333 .. csv-table:: do_getpid bench (nsec) - :header: ,native,um,um-mmu(s),um-nommu(s) + :header: ,native,um,um-mmu(s),um-nommu(s),um-nommu(z) - getpid , 161 , 34477 , 26242 , 2599 + getpid , 161 , 34477 , 26242 , 2599, 163 (um-nommu(s) is with seccomp syscall hook, um-mmu(s) is SECCOMP mode, -respectively) +um-nommu(z) is nommu with zpoline syscall hook, respectively) Limitations =========== diff --git a/arch/um/Makefile b/arch/um/Makefile index 3393e02628888b..e0bd7983381d21 100644 --- a/arch/um/Makefile +++ b/arch/um/Makefile @@ -48,6 +48,7 @@ KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/um ifneq ($(CONFIG_MMU),y) core-y += $(ARCH_DIR)/nommu/ +KBUILD_CPPFLAGS += -I$(srctree)/$(HOST_DIR)/um/nommu endif # -Dstrrchr=kernel_strrchr (as well as the various in6addr symbols) prevents diff --git a/arch/um/include/shared/os.h b/arch/um/include/shared/os.h index 0ac87507e05eb5..be1a527f0228ce 100644 --- a/arch/um/include/shared/os.h +++ b/arch/um/include/shared/os.h @@ -370,6 +370,9 @@ static inline int os_setup_seccomp(void) } #else extern int os_setup_seccomp(void); + +/* zpoline.c */ +extern int um_zpoline_enabled; #endif #endif diff --git a/arch/x86/um/asm/elf.h b/arch/x86/um/asm/elf.h index 388fe669886cf6..ca389d5213234b 100644 --- a/arch/x86/um/asm/elf.h +++ b/arch/x86/um/asm/elf.h @@ -156,6 +156,9 @@ struct linux_binprm; extern int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp); +struct elf_fdpic_params; +extern int elf_arch_finalize_exec(struct elf_fdpic_params *exec_params, + struct elf_fdpic_params *interp_params); extern unsigned long um_vdso_addr; #define AT_SYSINFO_EHDR 33 diff --git a/arch/x86/um/nommu/Makefile b/arch/x86/um/nommu/Makefile index 4018d9e0aba02e..98b719d354bb3b 100644 --- a/arch/x86/um/nommu/Makefile +++ b/arch/x86/um/nommu/Makefile @@ -6,3 +6,17 @@ else endif obj-y = do_syscall_$(BITS).o entry_$(BITS).o syscalls_$(BITS).o os-Linux/ +obj-y += zpoline.o + +# used by zpoline.c to translate syscall/sysenter instructions +# note: only in x86_64 w/ !CONFIG_MMU +inat_tables_script = $(srctree)/arch/x86/tools/gen-insn-attr-x86.awk +inat_tables_maps = $(srctree)/arch/x86/lib/x86-opcode-map.txt +quiet_cmd_inat_tables = GEN $@ + cmd_inat_tables = $(AWK) -f $(inat_tables_script) $(inat_tables_maps) > $@ +$(obj)/inat-tables.c: $(inat_tables_script) $(inat_tables_maps) + $(call cmd,inat_tables) + +targets += inat-tables.c +$(obj)/../../lib/inat.o: $(obj)/inat-tables.c +obj-y += ../../lib/insn.o ../../lib/inat.o diff --git a/arch/x86/um/nommu/zpoline.c b/arch/x86/um/nommu/zpoline.c new file mode 100644 index 00000000000000..761a96b7c5c899 --- /dev/null +++ b/arch/x86/um/nommu/zpoline.c @@ -0,0 +1,238 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * zpoline.c + * + * Replace syscall/sysenter instructions to `call *%rax` to hook syscalls. + * + */ +//#define DEBUG +#include +#include +#include +#include +#include +#include +#include + +int um_zpoline_enabled; +/* start of trampoline code area */ +static char *__zpoline_start; + +static int __zpoline_translate_syscalls(struct elf_fdpic_params *params) +{ + int count = 0, loop; + struct insn insn; + unsigned long addr; + struct elf_fdpic_loadseg *seg; + struct elf_phdr *phdr; + struct elfhdr *ehdr = (struct elfhdr *)params->elfhdr_addr; + + if (!ehdr) + return 0; + + seg = params->loadmap->segs; + phdr = params->phdrs; + for (loop = 0; loop < params->hdr.e_phnum; loop++, phdr++) { + if (phdr->p_type != PT_LOAD) + continue; + addr = seg->addr; + /* skip translation of trampoline code */ + if (addr <= (unsigned long)(&__zpoline_start[0] + 0x1000 + 0x0100)) { + pr_warn("%lx: address is in the range of trampoline", addr); + return -EINVAL; + } + + /* translate only segment with Executable flag */ + if (!(phdr->p_flags & PF_X)) { + seg++; + continue; + } + + pr_debug("translation 0x%lx-0x%llx", addr, + seg->addr + seg->p_memsz); + /* now ready to translate */ + while (addr < (seg->addr + seg->p_memsz)) { + insn_init(&insn, (void *)addr, MAX_INSN_SIZE, 1); + insn_get_length(&insn); + + insn_get_opcode(&insn); + + switch (insn.opcode.bytes[0]) { + case 0xf: + switch (insn.opcode.bytes[1]) { + case 0x05: /* syscall */ + case 0x34: /* sysenter */ + pr_debug("%lx: found syscall/sysenter", addr); + *(char *)addr = 0xff; // callq + *((char *)addr + 1) = 0xd0; // *%rax + count++; + break; + } + default: + break; + } + + addr += insn.length; + if (insn.length == 0) { + pr_debug("%lx: length zero with byte %x. skip ?", + addr, insn.opcode.bytes[0]); + addr += 1; + } + } + seg++; + } + return count; +} + +/** + * elf_arch_finalize_exec() - architecture hook to translate syscall/sysenter + * + * translate syscall/sysenter instruction upon loading ELF binary file + * on execve(2)&co syscall. + * + * suppose we have those instructions: + * + * mov $sysnr, %rax + * syscall 0f 05 + * + * this will translate it with: + * + * mov $sysnr, %rax (<= untouched) + * call *(%rax) ff d0 + * + * this will finally called hook function guided by trampoline code installed + * at setup_zpoline_trampoline(). + * + * @exec_params: ELF meta data for executable file + * @interp_params: ELF meta data for the interpreter file + */ +int elf_arch_finalize_exec(struct elf_fdpic_params *exec_params, + struct elf_fdpic_params *interp_params) +{ + int err = 0, count = 0; + struct mm_struct *mm = current->mm; + + /* zpoline disabled */ + if (!um_zpoline_enabled) + return 0; + + if (down_write_killable(&mm->mmap_lock)) + return -EINTR; + + /* translate for the executable */ + err = __zpoline_translate_syscalls(exec_params); + if (err < 0) { + pr_info("zpoline: xlate error %d", err); + goto out; + } + count += err; + pr_debug("zpoline: rewritten (exec) %d syscalls\n", count); + + /* translate for the interpreter */ + err = __zpoline_translate_syscalls(interp_params); + if (err < 0) { + pr_info("zpoline: xlate error %d", err); + goto out; + } + count += err; + + err = 0; + pr_debug("zpoline: rewritten (exec+interp) %d syscalls\n", count); + +out: + up_write(&mm->mmap_lock); + return err; +} + +/** + * setup_zpoline_trampoline() - install trampoline code for zpoline + * + * setup trampoline code for syscall hooks + * + * the trampoline code guides to call hooked function, __kernel_vsyscall + * in this case, via nop slides at the memory address zero (thus, zpoline). + * + * loaded binary by exec(2) is translated to call the function. + */ +static int __init setup_zpoline_trampoline(void) +{ + int i, ret; + int ptr; + + if (!um_zpoline_enabled) + return 0; + + /* zpoline: map area of trampoline code started from addr 0x0 */ + __zpoline_start = 0x0; + + ret = os_map_memory((void *) 0, -1, 0, PAGE_SIZE, 1, 1, 1); + if (ret) + panic("map failed\n NOTE: /proc/sys/vm/mmap_min_addr should be set 0\n"); + + /* fill nop instructions until the trampoline code */ + for (i = 0; i < NR_syscalls; i++) + __zpoline_start[i] = 0x90; + + /* optimization to skip old syscalls */ + /* short jmp */ + __zpoline_start[214 /* __NR_epoll_ctl_old */] = 0xeb; + /* range of a short jmp : -128 ~ +127 */ + __zpoline_start[215 /* __NR_epoll_wait_old */] = 127; + + /** + * FIXME: shift red zone area to properly handle the case + */ + + /** + * put code for jumping to __kernel_vsyscall. + * + * here we embed the following code. + * + * movabs [$addr],%r11 + * jmpq *%r11 + * + */ + ptr = NR_syscalls; + /* 49 bb [64-bit addr (8-byte)] movabs [64-bit addr (8-byte)],%r11 */ + __zpoline_start[ptr++] = 0x49; + __zpoline_start[ptr++] = 0xbb; + __zpoline_start[ptr++] = ((uint64_t) __kernel_vsyscall >> (8 * 0)); + __zpoline_start[ptr++] = ((uint64_t) __kernel_vsyscall >> (8 * 1)); + __zpoline_start[ptr++] = ((uint64_t) __kernel_vsyscall >> (8 * 2)); + __zpoline_start[ptr++] = ((uint64_t) __kernel_vsyscall >> (8 * 3)); + __zpoline_start[ptr++] = ((uint64_t) __kernel_vsyscall >> (8 * 4)); + __zpoline_start[ptr++] = ((uint64_t) __kernel_vsyscall >> (8 * 5)); + __zpoline_start[ptr++] = ((uint64_t) __kernel_vsyscall >> (8 * 6)); + __zpoline_start[ptr++] = ((uint64_t) __kernel_vsyscall >> (8 * 7)); + + /* + * pretending to be syscall instruction by putting return + * address in %rcx. + */ + /* 59 pop %rcx */ + __zpoline_start[ptr++] = 0x59; + + /* 41 ff e3 jmp *%r11 */ + __zpoline_start[ptr++] = 0x41; + __zpoline_start[ptr++] = 0xff; + __zpoline_start[ptr++] = 0xe3; + + /* permission: XOM (PROT_EXEC only) */ + ret = os_protect_memory(0, PAGE_SIZE, 0, 0, 1); + if (ret) + panic("failed: can't configure permission on trampoline code"); + + pr_info("zpoline: setting up trampoline code done\n"); + return 0; +} +arch_initcall(setup_zpoline_trampoline); + +static int __init zpoline_set(char *str) +{ + int val = 0; + + get_option(&str, &val); + um_zpoline_enabled = val; + return 1; +} +__setup("zpoline=", zpoline_set); diff --git a/arch/x86/um/vdso/um_vdso.c b/arch/x86/um/vdso/um_vdso.c index ca1468865b1400..61f529e5f26279 100644 --- a/arch/x86/um/vdso/um_vdso.c +++ b/arch/x86/um/vdso/um_vdso.c @@ -13,15 +13,31 @@ #include #include +/* XXX: FIXME, always trap SIGSYS on nommu, cannot use zpoline path as + * we don't know how to retrieve um_zpoline_enabled from vdso object ??? + */ +#define __VDSO_SYSCALL1(sysnr, ret, a0) { \ + do { \ + asm("syscall" \ + : "=a" (ret) \ + : "0" (sysnr), "D" (a0) \ + : "rcx", "r11", "memory"); \ + } while (0); \ + } +#define __VDSO_SYSCALL2(sysnr, ret, a0, a1) { \ + do { \ + asm("syscall" \ + : "=a" (ret) \ + : "0" (sysnr), "D" (a0), "S" (a1) \ + : "rcx", "r11", "memory"); \ + } while (0); \ + } + int __vdso_clock_gettime(clockid_t clock, struct __kernel_timespec *ts) { long ret; - asm("syscall" - : "=a" (ret) - : "0" (__NR_clock_gettime), "D" (clock), "S" (ts) - : "rcx", "r11", "memory"); - + __VDSO_SYSCALL2(__NR_clock_gettime, ret, clock, ts); return ret; } int clock_gettime(clockid_t, struct __kernel_timespec *) @@ -31,11 +47,7 @@ int __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz) { long ret; - asm("syscall" - : "=a" (ret) - : "0" (__NR_gettimeofday), "D" (tv), "S" (tz) - : "rcx", "r11", "memory"); - + __VDSO_SYSCALL2(__NR_gettimeofday, ret, tv, tz); return ret; } int gettimeofday(struct __kernel_old_timeval *, struct timezone *) @@ -45,10 +57,7 @@ __kernel_old_time_t __vdso_time(__kernel_old_time_t *t) { long secs; - asm volatile("syscall" - : "=a" (secs) - : "0" (__NR_time), "D" (t) : "cc", "r11", "cx", "memory"); - + __VDSO_SYSCALL1(__NR_time, secs, t); return secs; } __kernel_old_time_t time(__kernel_old_time_t *t) __attribute__((weak, alias("__vdso_time"))); From 71c89e9392a68d8670b688390cd69249e2bbf957 Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Wed, 4 Feb 2026 10:55:25 +0900 Subject: [PATCH 31/33] um: nommu: set fs register in signal handler sometimes fs register is referenced before __kernel_vsyscall, resulitng an invalid access as it's on different value. this commit fixes this issue. Signed-off-by: Hajime Tazaki --- arch/x86/um/nommu/os-Linux/mcontext.c | 1 + arch/x86/um/nommu/syscalls.h | 1 + arch/x86/um/nommu/syscalls_64.c | 8 ++++++++ 3 files changed, 10 insertions(+) diff --git a/arch/x86/um/nommu/os-Linux/mcontext.c b/arch/x86/um/nommu/os-Linux/mcontext.c index afa20f1e235a83..1f24990ad8abdb 100644 --- a/arch/x86/um/nommu/os-Linux/mcontext.c +++ b/arch/x86/um/nommu/os-Linux/mcontext.c @@ -21,6 +21,7 @@ void set_mc_relay_signal(mcontext_t *mc) void set_mc_sigsys_hook(mcontext_t *mc) { + os_x86_set_hostfs(); mc->gregs[REG_RCX] = mc->gregs[REG_RIP]; mc->gregs[REG_RIP] = (unsigned long) __kernel_vsyscall; } diff --git a/arch/x86/um/nommu/syscalls.h b/arch/x86/um/nommu/syscalls.h index 4b9e3c85cf3aa7..89c47ddfdada13 100644 --- a/arch/x86/um/nommu/syscalls.h +++ b/arch/x86/um/nommu/syscalls.h @@ -15,5 +15,6 @@ extern long current_ptregs; int os_x86_arch_prctl(int pid, int option, unsigned long *arg2); void arch_set_stack_to_current(void); +void os_x86_set_hostfs(void); #endif diff --git a/arch/x86/um/nommu/syscalls_64.c b/arch/x86/um/nommu/syscalls_64.c index 25fb11a8b7a447..9a8d45acb1cc77 100644 --- a/arch/x86/um/nommu/syscalls_64.c +++ b/arch/x86/um/nommu/syscalls_64.c @@ -84,3 +84,11 @@ static int __init um_nommu_setup_hostfs(void) return 0; } arch_initcall(um_nommu_setup_hostfs); + +void os_x86_set_hostfs(void) +{ + if (host_fs == -1) + um_nommu_setup_hostfs(); + + os_x86_arch_prctl(0, ARCH_SET_FS, (void *)host_fs); +} From 210e35b150613684d165fd82273c136c919bbbab Mon Sep 17 00:00:00 2001 From: Hajime Tazaki Date: Sun, 2 Nov 2025 15:13:57 +0900 Subject: [PATCH 32/33] gh action Signed-off-by: Hajime Tazaki --- .github/workflows/Dockerfile | 41 +++ .github/workflows/Makefile | 35 ++ .github/workflows/bench.sh | 19 ++ .github/workflows/ci.yml | 401 +++++++++++++++++++++++ .github/workflows/clone.c | 85 +++++ .github/workflows/ctest.c | 259 +++++++++++++++ .github/workflows/do_getpid.c | 73 +++++ .github/workflows/entropy.c | 52 +++ .github/workflows/exit.c | 13 + .github/workflows/futex.c | 55 ++++ .github/workflows/gdbinit | 221 +++++++++++++ .github/workflows/init_array.c | 19 ++ .github/workflows/inittab | 13 + .github/workflows/iperf3.sh | 23 ++ .github/workflows/iperf3.static | Bin 0 -> 1362920 bytes .github/workflows/lmbench_run.sh | 26 ++ .github/workflows/locale.c | 11 + .github/workflows/netperf-bench.sh | 21 ++ .github/workflows/netperf-plot.sh | 98 ++++++ .github/workflows/noop.c | 38 +++ .github/workflows/nullptr.c | 416 ++++++++++++++++++++++++ .github/workflows/pthread.c | 84 +++++ .github/workflows/rcS | 16 + .github/workflows/stackp.c | 15 + .github/workflows/test-signal-restore.c | 386 ++++++++++++++++++++++ .github/workflows/um-nommu-bench.sh | 28 ++ .github/workflows/um-nommu-plot.sh | 126 +++++++ .github/workflows/vdso_test.c | 54 +++ 28 files changed, 2628 insertions(+) create mode 100644 .github/workflows/Dockerfile create mode 100644 .github/workflows/Makefile create mode 100755 .github/workflows/bench.sh create mode 100644 .github/workflows/ci.yml create mode 100644 .github/workflows/clone.c create mode 100644 .github/workflows/ctest.c create mode 100644 .github/workflows/do_getpid.c create mode 100644 .github/workflows/entropy.c create mode 100644 .github/workflows/exit.c create mode 100644 .github/workflows/futex.c create mode 100644 .github/workflows/gdbinit create mode 100644 .github/workflows/init_array.c create mode 100644 .github/workflows/inittab create mode 100755 .github/workflows/iperf3.sh create mode 100755 .github/workflows/iperf3.static create mode 100644 .github/workflows/lmbench_run.sh create mode 100644 .github/workflows/locale.c create mode 100644 .github/workflows/netperf-bench.sh create mode 100644 .github/workflows/netperf-plot.sh create mode 100644 .github/workflows/noop.c create mode 100644 .github/workflows/nullptr.c create mode 100644 .github/workflows/pthread.c create mode 100755 .github/workflows/rcS create mode 100644 .github/workflows/stackp.c create mode 100644 .github/workflows/test-signal-restore.c create mode 100755 .github/workflows/um-nommu-bench.sh create mode 100755 .github/workflows/um-nommu-plot.sh create mode 100644 .github/workflows/vdso_test.c diff --git a/.github/workflows/Dockerfile b/.github/workflows/Dockerfile new file mode 100644 index 00000000000000..af45a890927af0 --- /dev/null +++ b/.github/workflows/Dockerfile @@ -0,0 +1,41 @@ +FROM alpine:3.20.3 + +ARG MODE= +ADD vmlinux /root/. +ADD inittab /etc/inittab +RUN mkdir /etc/init.d +ADD rcS /etc/init.d/. +RUN sed "s/\'/\"/g" /etc/profile > /.profile + +ADD bench.sh / +ADD iperf3.sh /root/ +ADD netperf-bench.sh /root/ +ADD iperf3.static /root/ +ADD do_getpid /root/. +ADD clone /root/. +ADD futex /root/. +ADD nullptr /root/. +ADD ctest /root/. +ADD stackp /root/. +ADD init_array /root/. +ADD entropy /root/. +ADD locale /root/. +ADD vdso_test /root/. +ADD pthread /root/. +ADD test-signal-restore /root/. +ADD Makefile /root/. +ADD lmbench2/ /lmbench2 +ADD lmbench_run.sh /lmbench2/bin/x86_64-linux-gnulibc1/ +ADD netperf /root/. + + +RUN apk update && apk add utmps-libs libtirpc curl make iperf3 + +RUN if [[ ${MODE} == "um-nommu" ]]; then mkdir -p setup && cd setup && curl -L -o output.zip \ + 'https://gitlab.alpinelinux.org/thehajime/aports/-/jobs/1641821/artifacts/download?file_type=archive' \ + && unzip output.zip ; fi +RUN if [[ ${MODE} == "um-nommu" ]]; then apk add --allow-untrusted \ + setup/packages/main/x86_64/busybox-nommu-1.36.1-r29.apk \ + setup/packages/main/x86_64/musl-nommu-1.2.5-r0.apk && rm -rf setup; fi + +ENTRYPOINT ["/root/vmlinux", "vec0:transport=tap,ifname=tap100,depth=128,gro=1", "root=/dev/root", "rootflags=/", "rootfstype=hostfs", "rw", "mem=1024m", "loglevel=0", "init=/sbin/init"] diff --git a/.github/workflows/Makefile b/.github/workflows/Makefile new file mode 100644 index 00000000000000..c4305989198bbb --- /dev/null +++ b/.github/workflows/Makefile @@ -0,0 +1,35 @@ +SRCS := clone.c futex.c nullptr.c ctest.c stackp.c do_getpid.c init_array.c entropy.c locale.c vdso_test.c pthread.c test-signal-restore.c +BKUP := exit.c noop.c +TARGETS := $(SRCS:.c=) + +MASTER_CC ?= docker run -it --rm -v /dev/shm:/dev/shm -v /home:/home -v /tmp:/tmp --user tazaki -w `pwd` alpine-local:3.20.3 cc +CC=${MASTER_CC} + +CFLAGS_exit = -nostdlib -pie -fPIE -fomit-frame-pointer +CFLAGS += -g -O0 -static-pie +all: ${TARGETS} + +tests: ${TARGETS} + set +x + ./clone host + ./futex + ./nullptr 1 0 || RET=$$? ; echo "code="$$RET && if [ "$$RET" -ne "139" ] ; then false ; fi + ./nullptr 1 1 || RET=$$? ; echo "code="$$RET && if [ "$$RET" -ne "11" -a "$$RET" -ne "139" ] ; then false ; fi + ./nullptr 0 0 || RET=$$? ; echo "code="$$RET && if [ "$$RET" -ne "139" ] ; then false ; fi + ./nullptr 0 1 || RET=$$? ; echo "code="$$RET && if [ "$$RET" -ne "11" -a "$$RET" -ne "139" ] ; then false ; fi + ./nullptr 2 0 || RET=$$? ; echo "code="$$RET && if [ "$$RET" -ne "136" ] ; then false ; fi + ./nullptr 2 1 || RET=$$? ; echo "code="$$RET && if [ "$$RET" -ne "11" -a "$$RET" -ne "136" ] ; then false ; fi + ./nullptr + echo "test" | ./ctest + ./stackp + ./entropy 10000 + ./locale + ./vdso_test -c 10000 + ./test-signal-restore + ./pthread + ./pthread 100 + ./pthread 100 1 + set -x + +clean: + rm -f ${TARGETS} diff --git a/.github/workflows/bench.sh b/.github/workflows/bench.sh new file mode 100755 index 00000000000000..7ecfc88e471b2f --- /dev/null +++ b/.github/workflows/bench.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +mount proc /proc -t proc +export PATH=/home:/sbin:/usr/sbin:/bin:/usr/bin + + +cd /lmbench2/bin/x86_64-linux-gnulibc1 +sh lmbench_run.sh + +/root/do_getpid -c 10000 + +# test umh (usermode helper) to exec `modprobe` +ifconfig eth10 + +make -C /root tests +RET=$? +echo $RET +echo $RET > /proc/exitcode +halt -f diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000000000..c8bd507a46ea4f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,401 @@ +on: + push: + branches: + - '**' + #pull_request: + # branches: + # - master + workflow_dispatch: + inputs: + debug_enabled: + description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)' + required: false + default: true + +jobs: + tests: + runs-on: ${{ matrix.runs_on }} + strategy: + fail-fast: false + matrix: + include: + - displayTargetName: ubuntu-22.04 + os: unix + runs_on: ubuntu-22.04 + shell: bash + defconfig: defconfig + add_configs: CONFIG_UML_NET_VECTOR=y CFLAGS+="-DCONFIG_UML_NET_VECTOR" + kunit_opts: --kconfig_add CONFIG_KUNIT_UML_PCI=n ### XXX + testname: um-mmu + - displayTargetName: ubuntu-22.04 (time-travel) + os: unix + runs_on: ubuntu-22.04 + shell: bash + defconfig: defconfig + add_configs: CONFIG_UML_NET_VECTOR=y CFLAGS+="-DCONFIG_UML_NET_VECTOR" CFLAGS+="-DCONFIG_UML_TIME_TRAVEL_SUPPORT" CFLAGS+="-DCONFIG_UML_MAX_USERSPACE_ITERATIONS=100000" + kunit_opts: --kconfig_add CONFIG_KUNIT_UML_PCI=n ### XXX + testname: um-mmu-tt + - displayTargetName: ubuntu-22.04 (nommu) + os: unix + runs_on: ubuntu-22.04 + shell: bash + defconfig: x86_64_nommu_defconfig + add_configs: CONFIG_UML_NET_VECTOR=y CFLAGS+="-DCONFIG_UML_NET_VECTOR" + kunit_opts: --kconfig_add CONFIG_MMU=n --kconfig_add CONFIG_KUNIT_UML_PCI=n + testname: um-nommu + name: UML-${{ matrix.displayTargetName }} + timeout-minutes: 100 + env: + CCACHE_DIR: ${{ github.workspace }}/.ccache + USE_CCACHE: 1 + + defaults: + run: + shell: ${{ matrix.shell }} + + steps: + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled }} + with: + detached: true + - name: Set env + shell: bash + run: | + echo "/usr/lib/ccache/bin:/usr/lib/ccache:${{ github.workspace }}/bin" >> $GITHUB_PATH + echo "export PATH=/usr/lib/ccache/bin:/usr/lib/ccache:${{ github.workspace }}/bin:$PATH" >> $HOME/.bashrc + - name: Checkout + uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: ${{ env.CCACHE_DIR }} + key: ${{ runner.os }}-${{ matrix.testname }}-ccache-build-${{ github.sha }} + restore-keys: ${{ runner.os }}-${{ matrix.testname }}-ccache-build- + - name: Install packages + run: | + sudo apt update -y + sudo apt install -y ccache iperf3 netperf gdb + - name: Setup latest Alpine Linux + uses: jirutka/setup-alpine@v1 + with: + branch: v3.20 + packages: > + alpine-sdk + doas + libtirpc-dev + linux-headers + autoconf + automake + - name: build bench tools + run: | + git clone https://github.com/ricarkol/lmbench2.git + git clone https://github.com/HewlettPackard/netperf + cd lmbench2 + touch src/Makefile + touch Makefile + make + cd .. + cd netperf + sh autogen.sh + ./configure; make CFLAGS="-fcommon" || true + cd .. + make -C .github/workflows/ MASTER_CC=gcc + shell: alpine.sh {0} + # --root {0} + - name: Setup faketty + uses: Yuri6037/Action-FakeTTY@v1.1 + - name: setup tap interface + run: | + set -x + sudo ip tuntap add dev tap100 mode tap user ${USER} + sudo ip add add 192.168.122.1/24 dev tap100 + sudo ip link set up dev tap100 + cp .github/workflows/gdbinit ~/.gdbinit + iperf3 -s & + - name: build-0 (static) + run: | + make ARCH=um ${{ matrix.defconfig }} O=build + cat build/.config | sed "s/.*CONFIG_STATIC_LINK.*/CONFIG_STATIC_LINK=y/" > /tmp/a; mv /tmp/a build/.config + make -j8 ARCH=um O=build ${{ matrix.add_configs }} + - name: prep for docker build + if: matrix.testname != 'um-mmu-tt' + run: | + cp build/vmlinux .github/workflows/ + cp -rpf lmbench2 .github/workflows/ + cp netperf/src/netperf .github/workflows/ + - name: Build and push Docker image (no push) + if: matrix.testname != 'um-mmu-tt' + uses: docker/build-push-action@v6 + env: + DOCKER_BUILD_SUMMARY: false + with: + context: .github/workflows + build-args: "MODE=${{ matrix.testname }}" + push: false + tags: | + ghcr.io/thehajime/alpine:3.20.3-${{ matrix.testname }} + - name: image for test + if: matrix.testname != 'um-mmu-tt' + run: | + docker create --name alpine-nommu ghcr.io/thehajime/alpine:3.20.3-${{ matrix.testname }} + docker start alpine-nommu + docker wait alpine-nommu + docker logs alpine-nommu + docker export alpine-nommu > alpine.tar + docker rm alpine-nommu + mnt=$(mktemp -d) + dd if=/dev/zero of=alpine.ext4 bs=1 count=0 seek=1G + sudo chmod og+wr "alpine.ext4" + yes 2>/dev/null | mkfs.ext4 "alpine.ext4" || true + sudo mount "alpine.ext4" $mnt + sudo tar -xf alpine.tar -C $mnt + sudo umount $mnt + mkdir -p rootfs + sudo tar -xf alpine.tar -C rootfs + sudo chown -R ${USER} rootfs + - name: test-0 (static) + if: matrix.testname != 'um-mmu-tt' + run: | + sudo sh -c "echo 0 > /proc/sys/vm/mmap_min_addr" + faketty ./build/vmlinux vec0:transport=tap,ifname=tap100,depth=128,gro=1 ubd0=./alpine.ext4 rw mem=1024m loglevel=8 console=tty init=/sbin/init 2>&1 | tee /tmp/log.txt & + sleep 10 && pkill vmlinux + echo "=========" + cat /tmp/log.txt + - name: kunit test + if: matrix.testname != 'um-mmu-tt' + run: | + for config in `find ./ -name .kunitconfig | grep -v -E "kfence|sunrpc|handshake|kcsan|gpu|damon|rust|android|sound|hid|firewire|iommu" `; do \ + echo "==" $config "==" ; \ + ./tools/testing/kunit/kunit.py run --kunitconfig=$config ${{ matrix.kunit_opts }} + done + - name: build-1 + run: | + make ARCH=um ${{ matrix.defconfig }} + make -j8 ARCH=um ${{ matrix.add_configs }} + - name: test-1 + if: matrix.testname != 'um-mmu-tt' + run: | + faketty ./vmlinux vec0:transport=tap,ifname=tap100,depth=128,gro=1 ubd0=./alpine.ext4 rw mem=1024m loglevel=8 init=/sbin/init 2>&1 | tee /tmp/log.txt & + sleep 10 && pkill vmlinux + echo "=========" + cat /tmp/log.txt + - name: benchmark-0 + if: matrix.testname == 'um-nommu' + run: | + mkdir -p output + ## disable zpoline test for a while + faketty ./vmlinux ubd0=./alpine.ext4 rw mem=1024m loglevel=8 console=tty zpoline=1 init=/bench.sh \ + | tee output/${{ matrix.testname }}-zpoline.dat + faketty ./vmlinux ubd0=./alpine.ext4 rw mem=1024m loglevel=8 console=tty zpoline=0 init=/bench.sh \ + | tee output/${{ matrix.testname }}-seccomp.dat + - name: benchmark-1 + if: matrix.testname == 'um-mmu' + run: | + mkdir -p output + faketty ./vmlinux ubd0=./alpine.ext4 rw mem=1024m loglevel=0 console=tty init=/bench.sh \ + | tee output/${{ matrix.testname }}.dat + faketty ./vmlinux ubd0=./alpine.ext4 rw mem=1024m loglevel=0 console=tty seccomp=on init=/bench.sh \ + | tee output/${{ matrix.testname }}-seccomp.dat + - name: benchmark-2-iperf3 + if: matrix.testname != 'um-mmu-tt' + run: | + mkdir -p output + if [ "${{ matrix.testname }}" == "um-nommu" ] ; then + ## dynamic build failed at iperf -R + echo "===========================non-static build may fail...===========================" + #faketty ./vmlinux vec0:transport=tap,ifname=tap100,depth=128,gro=1 mem=1024m \ + # root=/dev/root rootflags=`pwd`/rootfs rootfstype=hostfs rw \ + # loglevel=0 console=tty init=/root/iperf3.sh \ + # | tee output/${{ matrix.testname }}-seccomp-iperf3.dat + # faketty ./vmlinux vec0:transport=tap,ifname=tap100,depth=128,gro=1 mem=1024m \ + # root=/dev/root rootflags=`pwd`/rootfs rootfstype=hostfs rw \ + # loglevel=0 console=tty zpoline=1 init=/root/iperf3.sh \ + # | tee output/${{ matrix.testname }}-zpoline-iperf3.dat + faketty ./build/vmlinux vec0:transport=tap,ifname=tap100,depth=128,gro=1 mem=1024m \ + root=/dev/root rootflags=`pwd`/rootfs rootfstype=hostfs rw \ + loglevel=0 console=tty init=/root/iperf3.sh \ + | tee output/${{ matrix.testname }}-seccomp-iperf3.dat + faketty ./build/vmlinux vec0:transport=tap,ifname=tap100,depth=128,gro=1 mem=1024m \ + root=/dev/root rootflags=`pwd`/rootfs rootfstype=hostfs rw \ + loglevel=0 console=tty zpoline=1 init=/root/iperf3.sh \ + | tee output/${{ matrix.testname }}-zpoline-iperf3.dat + else + faketty ./build/vmlinux vec0:transport=tap,ifname=tap100,depth=128,gro=1 mem=1024m \ + root=/dev/root rootflags=`pwd`/rootfs rootfstype=hostfs rw \ + loglevel=0 console=tty init=/root/iperf3.sh \ + | tee output/${{ matrix.testname }}-iperf3.dat + faketty ./build/vmlinux vec0:transport=tap,ifname=tap100,depth=128,gro=1 mem=1024m \ + root=/dev/root rootflags=`pwd`/rootfs rootfstype=hostfs rw \ + loglevel=0 console=tty seccomp=on init=/root/iperf3.sh \ + | tee output/${{ matrix.testname }}-seccomp-iperf3.dat + fi + - name: Set up Docker Buildx + if: matrix.testname != 'um-mmu-tt' + uses: docker/setup-buildx-action@v3 + with: + driver-opts: network=host + - name: Log in to the ghcr.io + if: matrix.testname != 'um-mmu-tt' + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Build and push Docker image + if: matrix.testname != 'um-mmu-tt' + uses: docker/build-push-action@v6 + env: + DOCKER_BUILD_SUMMARY: false + with: + context: .github/workflows + build-args: "MODE=${{ matrix.testname }}" + push: true + tags: | + ghcr.io/thehajime/alpine:3.20.3-${{ matrix.testname }} + - uses: actions/upload-artifact@v4 + if: matrix.testname != 'um-mmu-tt' + with: + name: bench-result-${{ matrix.testname }} + path: output/${{ matrix.testname }}* + + checkpatch: + runs-on: ubuntu-22.04 + name: checkpatch and co + env: + CCACHE_DIR: ${{ github.workspace }}/.ccache + USE_CCACHE: 1 + steps: + - name: Set env + shell: bash + run: | + echo "/usr/lib/ccache/bin:/usr/lib/ccache:${{ github.workspace }}/bin" >> $GITHUB_PATH + echo "export PATH=/usr/lib/ccache/bin:/usr/lib/ccache:${{ github.workspace }}/bin:$PATH" >> $HOME/.bashrc + - name: Checkout + with: + fetch-depth: 0 + uses: actions/checkout@v4 + - uses: actions/cache@v4 + with: + path: ${{ env.CCACHE_DIR }} + key: ${{ runner.os }}-checkpatch-ccache-build-${{ github.sha }} + restore-keys: ${{ runner.os }}-checkpatch-ccache-build- + - name: Install packages + run: | + sudo pip install ply GitPython mypy + sudo apt update -y + sudo apt install -y aspell ccache sparse + git clone https://github.com/daxtens/smart-sparse-diff + #- name: Setup tmate session + # uses: mxschmitt/action-tmate@v3 + # with: + # detached: true + - name: checkout trees + run: | + #git remote add linus git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git + #git fetch linus + #git format-patch -o p1 linus/master..HEAD~1 + git remote add uml git://git.kernel.org/pub/scm/linux/kernel/git/uml/linux.git + git fetch uml + git checkout uml/next + git checkout zpoline-nommu-v6.10 + #- name: build (sparse) + # run: | + # make ARCH=um W=1 C=2 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited -fmax-warnings=unlimited' defconfig O=build-sparse + # make ARCH=um W=1 C=2 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited -fmax-warnings=unlimited' O=build-sparse clean + # make ARCH=um W=1 C=2 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited -fmax-warnings=unlimited' O=build-sparse -j8 2> old-sparse.log 1> /dev/null + # git checkout zpoline-nommu-v6.10 + # git checkout HEAD~1 + # make ARCH=um W=1 C=2 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__ -fmax-errors=unlimited -fmax-warnings=unlimited' O=build-sparse -j8 2> new-sparse.log 1> /dev/null + # ./smart-sparse-diff/smart-sparse-diff.py old-sparse.log new-sparse.log + - name: check coding style + continue-on-error: true + run: | + git format-patch -o p1 uml/next..HEAD~19 + ./scripts/checkpatch.pl --summary-file --ignore FILE_PATH_CHANGES \ + --ignore AVOID_EXTERNS p1/*.patch + - name: check spells on commit message + run: | + git log uml/next..HEAD~19 |grep -v -E "^commit" > /tmp/a + aspell list /tmp/a + + bench-result: + runs-on: ubuntu-22.04 + name: bench-result + needs: tests + steps: + - uses: actions/checkout@v4 + - uses: actions/download-artifact@v4 + with: + path: output + pattern: bench-result-* + merge-multiple: true + - name: Display structure of downloaded files + run: ls -R output + - name: Install packages + run: | + sudo apt update -y + sudo apt install -y gnuplot lmbench iperf3 netperf + - name: benchmark-host + run: | + mkdir -p output + sudo ln -s /usr/include/x86_64-linux-gnu/sys /usr/include/sys + sudo mkdir -p /var/tmp/lmbench/ + sudo chown ${USER} /var/tmp/lmbench/ + sh .github/workflows/lmbench_run.sh |& tee output/native.dat + gcc -o do_getpid .github/workflows/do_getpid.c + ./do_getpid -c 100 | tee -a output/native.dat + iperf3 -s & + iperf3 -c localhost -fm | tee output/native-iperf3.dat + iperf3 -c localhost -fm -R | tee -a output/native-iperf3.dat + bash .github/workflows/netperf-bench.sh localhost netperf | tee -a output/native-iperf3.dat + - name: bench data parse/out + run: | + bash .github/workflows/um-nommu-plot.sh output |& tee um-nommu.log + bash .github/workflows/netperf-plot.sh output |& tee -a um-nommu.log + export TMP_OUTPUT=$(cat um-nommu.log) + echo "TMP_OUTPUT<> $GITHUB_ENV + echo "$TMP_OUTPUT" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + echo ${{env.TMP_OUTPUT}} + - uses: actions/upload-artifact@v4 + with: + name: bench-result-all + path: output/out/* + - name: publish to imgur + uses: devicons/public-upload-to-imgur@v2.2.2 + id: lmbench-imgur + with: + path: "output/out/lmbench.png" + client_id: ${{secrets.IMGUR_CLIENT_ID}} + - name: publish to imgur-iperf + uses: devicons/public-upload-to-imgur@v2.2.2 + id: iperf3-imgur + with: + path: "output/out/iperf3.png" + client_id: ${{secrets.IMGUR_CLIENT_ID}} + - name: publish to imgur-netperf + uses: devicons/public-upload-to-imgur@v2.2.2 + id: netperf-imgur + with: + path: "output/out/tcp-stream.png" + client_id: ${{secrets.IMGUR_CLIENT_ID}} + - name: prepare action post + run: | + export SCRIPT_OUTPUT="${{ join(fromJSON(steps.lmbench-imgur.outputs.markdown_urls)) }} ${{ join(fromJSON(steps.iperf3-imgur.outputs.markdown_urls)) }} ${{ join(fromJSON(steps.netperf-imgur.outputs.markdown_urls)) }}" + echo "SCRIPT_OUTPUT<> $GITHUB_ENV + echo "$TMP_OUTPUT" >> $GITHUB_ENV + echo "" >> $GITHUB_ENV + echo "$SCRIPT_OUTPUT" >> $GITHUB_ENV + echo "EOF" >> $GITHUB_ENV + echo ${{env.SCRIPT_OUTPUT}} + - uses: actions/github-script@v7 + env: + COMMENT_BODY: ${{env.SCRIPT_OUTPUT}} + with: + script: | + github.rest.issues.createComment({ + issue_number: 1, + owner: context.repo.owner, + repo: context.repo.repo, + body: process.env.COMMENT_BODY + }) diff --git a/.github/workflows/clone.c b/.github/workflows/clone.c new file mode 100644 index 00000000000000..811b61f6b105f6 --- /dev/null +++ b/.github/workflows/clone.c @@ -0,0 +1,85 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include + +#define errExit(msg) do { perror(msg); exit(EXIT_FAILURE); \ +} while (0) + + static int /* Start function for cloned child */ +childFunc(void *arg) +{ + struct utsname uts; + + printf("arg=%lx\n", (unsigned long)arg); + + /* Change hostname in UTS namespace of child */ + + if (sethostname(arg, strlen(arg)) == -1) + errExit("sethostname"); + + /* Retrieve and display hostname */ + + if (uname(&uts) == -1) + errExit("uname"); + printf("uts.nodename in child: %s\n", uts.nodename); + + /* Keep the namespace open for a while, by sleeping. + This allows some experimentation--for example, another + process might join the namespace. */ + + return 0; /* Child terminates now */ +} + +#define STACK_SIZE (1024 * 1024) /* Stack size for cloned child */ + + int +main(int argc, char *argv[]) +{ + char *stack; /* Start of stack buffer */ + char *stackTop; /* End of stack buffer */ + pid_t pid; + struct utsname uts; + + if (argc < 2) { + fprintf(stderr, "Usage: %s \n", argv[0]); + exit(EXIT_SUCCESS); + } + + /* Allocate stack for child */ + + stack = malloc(STACK_SIZE); + if (stack == NULL) + errExit("malloc"); + stackTop = stack + STACK_SIZE; /* Assume stack grows downward */ + + /* Create child that has its own UTS namespace; + child commences execution in childFunc() */ + + printf("arg=%lx\n", (unsigned long)argv[1]); + pid = clone(childFunc, stackTop, CLONE_NEWUTS | SIGCHLD, argv[1]); + if (pid == -1) + errExit("clone"); + sleep(1); + printf("clone() returned %ld\n", (long) pid); + + /* Parent falls through to here */ + + /* Display hostname in parent's UTS namespace. This will be + different from hostname in child's UTS namespace. */ + + if (uname(&uts) == -1) + errExit("uname"); + printf("uts.nodename in parent: %s\n", uts.nodename); + + if (waitpid(pid, NULL, 0) == -1) /* Wait for child */ + errExit("waitpid"); + printf("child has terminated\n"); + + exit(EXIT_SUCCESS); +} + diff --git a/.github/workflows/ctest.c b/.github/workflows/ctest.c new file mode 100644 index 00000000000000..791c27a6869938 --- /dev/null +++ b/.github/workflows/ctest.c @@ -0,0 +1,259 @@ +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + + + +static void __kill(int pid, int sig) { + register int syscall_no asm("rax") = 62; + register int arg1 asm("rdi") = pid; + register int arg2 asm("rsi") = sig; + asm("syscall"); +} + +static void exit_host(int r){ + __kill(0, 9); + return; +} + +int vfork1() +{ + int a = 0; + int ret = 0xfafafafa; + ret = vfork(); + return ret; +} + +int vfork2() +{ + return vfork(); +} + +void test_files(); + +char *argv[3] = {"/ctest", "noop", NULL}; +char *env[2] = {"PATH=/", NULL}; + +int test_vfork() +{ + int i, ret; + int status; + + ret = vfork(); + if (ret == 0) { + printf("child: ret=%d\r\n", ret); + //printf("got %c\n", getchar()); + ret = execve("./ctest", argv, env); + if (ret != 0) { + printf("child: exec ret=%d\r\n", ret); + while(1); + _exit(0); + } + + // should not be here + test_files(); + _exit(0); + } else if (ret < 0) { + printf("error %d\r\n", ret); + while(1); + _exit(0); + } else { + wait(&status); + //while(1); + printf("parent (%s): fork status=%d child_pid=%d\r\n", __FUNCTION__, status, ret); + } + return ret; +} + +void test_files() +{ + printf("opening\r\n"); + char *tmpname = "/files/mifile"; + char buf[128]; + int fd = open("/files/mifile2", O_RDONLY, 0); + if (fd < 1) { + printf("could not open %d\n", fd); + return; + } + //write(fd, "_*_", 3); + fsync(fd); + close(fd); + printf("opening\r\n"); + fd = open("/files/mifile2", O_RDONLY, 0); + if (fd < 1) { + printf("could not open %d\n", fd); + return; + } + + memset(buf, 0, 128); + read(fd, buf, 64); + printf("%s\r\n", buf); +} + +int test_vfork_only() +{ + int i, ret; + int status; + + ret = vfork1(); + if (ret == 0) { + printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"); + printf("child %s\n", __FUNCTION__); + printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"); + sleep(1); + _exit(0); + } else if (ret < 0) { + printf("error %d\r\n", ret); + while(1); + _exit(0); + } else { + sleep(1); + printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"); + printf("parent (%s): fork status=%d child_pid=%d\r\n", __FUNCTION__, status, ret); + printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"); + } + return ret; +} + + + +int test_vfork_sleeping() +{ + int i, ret; + int status; + + ret = vfork(); + if (ret == 0) { + ret = execve("./ctest", argv, env); + _exit(0); + } else if (ret < 0) { + printf("error %d\r\n", ret); + while(1); + _exit(0); + } else { + printf("parent (%s): fork status=%d child_pid=%d\r\n", __FUNCTION__, status, ret); + } + return ret; +} + + +int test_vfork_in_vfork() +{ + int i, ret; + int status; + + ret = vfork(); + if (ret == 0) { + printf("child 1\n"); + ret = vfork(); + if (ret == 0) { + printf("child 2\n"); + _exit(0); + } else if (ret < 0) { + printf("error %d\r\n", ret); + while(1); + _exit(0); + } else { + printf("parent: fork status=%d child_pid=%d\r\n", status, ret); + } + _exit(0); + } else if (ret < 0) { + printf("error %d\r\n", ret); + while(1); + _exit(0); + } else { + printf("parent (%s): fork status=%d child_pid=%d\r\n", __FUNCTION__, status, ret); + } + return ret; +} + +int test_exec_with_vfork_in_vfork() +{ + int i, ret; + int status; + + char *argv[3] = {"/ctest", "fork", NULL}; + char *env[2] = {"PATH=/", NULL}; + + ret = vfork(); + if (ret == 0) { + printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"); + printf("child %s\n", __FUNCTION__); + printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"); + ret = execve("./ctest", argv, env); + while(1); // should not be reached + } else if (ret < 0) { + printf("error %d\r\n", ret); + while(1); + _exit(0); + } else { + printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"); + printf("parent (%s): fork status=%d child_pid=%d\r\n", __FUNCTION__, status, ret); + printf("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\n"); + } + return ret; +} + + +int main(int argc, char **argv) +{ + int i, ret; + int iterations; + + if (argc < 2) { + iterations = 10; + } else if (strcmp(argv[1], "files") == 0) { + test_files(); + exit(0); + } else if (strcmp(argv[1], "loop") == 0) { + printf("looping forever\n"); + //printf("got %c\n", getchar()); + while(1); + exit(0); + } else if (strcmp(argv[1], "fork") == 0) { + //test_vfork_only(); + test_vfork(); + exit(0); + } else if (strcmp(argv[1], "exec") == 0) { + test_exec_with_vfork_in_vfork(); + test_files(); + exit(0); + } else if (strcmp(argv[1], "noop") == 0) { + printf("noop\n"); + exit(0); + } else if (strcmp(argv[1], "exit") == 0) { + printf("exit"); + exit_host(0); + } else if (strcmp(argv[1], "time") == 0) { + struct timeval current_time; + gettimeofday(¤t_time, NULL); + printf("seconds : %ld\nmicro seconds : %ld\n", + current_time.tv_sec, current_time.tv_usec); + exit(0); + } else { + printf("default arg\n"); + } + + test_exec_with_vfork_in_vfork(); + + test_vfork(); + test_vfork(); + test_vfork(); + test_vfork(); + test_vfork_sleeping(); + + test_files(); + + printf("got %c\n", getchar()); + + //while(1); + exit(0); +} diff --git a/.github/workflows/do_getpid.c b/.github/workflows/do_getpid.c new file mode 100644 index 00000000000000..9a1171ded536ed --- /dev/null +++ b/.github/workflows/do_getpid.c @@ -0,0 +1,73 @@ +#include +#include +#include +#include +#include +#include + + +#ifndef BENCH_LDPRELOAD +extern pid_t do_getpid(void); + +void __do_getpid(void) +{ + asm volatile (".globl do_getpid"); + asm volatile ("do_getpid:"); + asm volatile ("movq $39, %rax"); + asm volatile ("syscall"); + asm volatile ("ret"); +} +#else +pid_t do_getpid(void) +{ + return getpid(); +} +#endif + +int main(int argc, char* const* argv) +{ + int ch; + unsigned long loopcnt = 0; + + while ((ch = getopt(argc, argv, "c:")) != -1) { + switch (ch) { + case 'c': + loopcnt = atol(optarg); + break; + + default: + printf("unknown option\n"); + exit(1); + } + } + + if (!loopcnt) { + printf("please specify loop count by -c\n"); + exit(0); + } + + { + pid_t my_pid = getpid(); + { + unsigned long t; + { + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + t = ts.tv_sec * 1000000000UL + ts.tv_nsec; + } + { + unsigned long i; + for (i = 0; i < loopcnt; i++) + assert(my_pid == do_getpid()); + } + { + struct timespec ts; + clock_gettime(CLOCK_REALTIME, &ts); + t = ts.tv_sec * 1000000000UL + ts.tv_nsec - t; + } + printf("average %5lu nsec\n", t / loopcnt); + } + } + + return 0; +} diff --git a/.github/workflows/entropy.c b/.github/workflows/entropy.c new file mode 100644 index 00000000000000..59ae1da93239c9 --- /dev/null +++ b/.github/workflows/entropy.c @@ -0,0 +1,52 @@ +#include +#include +#include +#include +#include +#include + +#define BUFSIZE 256 + +struct rand_pool_info { + int entropy_count; + int buf_size; + unsigned int buf[256]; +}; + +uint8_t prng(void) { + static uint8_t seed=19; + seed = 311 * seed + 17; + return seed; +} + +#define BUF_SIZE 256 +#define MAX_ITERS 10000 + +#define RNDADDENTROPY 0x40085203 + +int main(int argc, char **argv) +{ + struct rand_pool_info *output; + int max_iters = MAX_ITERS; + int iters = 0, ret; + int fd = open("/dev/random", O_WRONLY); + + if (argc == 2) + max_iters = atoi(argv[1]); + + printf("generating \"entropy\"..."); + output = (struct rand_pool_info *)malloc(sizeof(struct rand_pool_info) + + BUF_SIZE); + do { + int i; + output->entropy_count = BUF_SIZE * 8; + output->buf_size = BUF_SIZE; + for (i=0; i< BUF_SIZE; i++) + output->buf[i] = prng(); + ret = ioctl(fd, RNDADDENTROPY, &output); + iters++; + } while((ret >= 0) && (iters < max_iters)); + + printf("for %d iters\n", iters); +} + diff --git a/.github/workflows/exit.c b/.github/workflows/exit.c new file mode 100644 index 00000000000000..b60675e1e7d381 --- /dev/null +++ b/.github/workflows/exit.c @@ -0,0 +1,13 @@ + +static void kill(int pid, int sig) { + register int syscall_no asm("rax") = 62; + register int arg1 asm("rdi") = pid; + register int arg2 asm("rsi") = sig; + asm("syscall"); +} + +void _start() +{ + kill(0, 9); + return; +} diff --git a/.github/workflows/futex.c b/.github/workflows/futex.c new file mode 100644 index 00000000000000..566e61c8773bee --- /dev/null +++ b/.github/workflows/futex.c @@ -0,0 +1,55 @@ +#include +#include + +/* this function is run by the second thread */ +void *inc_x(void *x_void_ptr) +{ + + /* increment x to 100 */ + int *x_ptr = (int *)x_void_ptr; + while(++(*x_ptr) < 100); + + printf("x increment finished\n"); + + /* the function must return something - NULL will do */ + return NULL; + +} + +int main() +{ + + int x = 0, y = 0; + + /* show the initial values of x and y */ + printf("x: %d, y: %d\n", x, y); + + /* this variable is our reference to the second thread */ + pthread_t inc_x_thread; + + /* create a second thread which executes inc_x(&x) */ + if(pthread_create(&inc_x_thread, NULL, inc_x, &x)) { + + fprintf(stderr, "Error creating thread\n"); + return 1; + + } + /* increment y to 100 in the first thread */ + while(++y < 100); + + printf("y increment finished\n"); + + /* wait for the second thread to finish */ + if(pthread_join(inc_x_thread, NULL)) { + + fprintf(stderr, "Error joining thread\n"); + return 2; + + } + + /* show the results - x is now 100 thanks to the second thread */ + printf("x: %d, y: %d\n", x, y); + + return 0; + +} diff --git a/.github/workflows/gdbinit b/.github/workflows/gdbinit new file mode 100644 index 00000000000000..24006df73d18da --- /dev/null +++ b/.github/workflows/gdbinit @@ -0,0 +1,221 @@ +#add-auto-load-safe-path /home/tazaki/gitworks/osv/scripts/loader.py + +handle SIGUSR1 nostop +#set annotate 1 +set history save on +set history size 10000 +set history filename ~/.gdb_history +set print pretty on +set print static-members off +set charset ASCII +set print thread-events off +directory /home/tazaki/work/nabla-linux/tests/busybox.git:/home/tazaki/work/nabla-linux/tests/musl-git/:/home/tazaki/work/deb-src/glibc-2.39/ + +define ntoa + set $ipv4 = $arg0 + echo IPV4 =. + p $ipv4 + set $val1 = ($ipv4 >> 24) & 0xff + set $val2 = ($ipv4 >> 16) & 0xff + set $val3 = ($ipv4 >> 8) & 0xff + set $val4 = ($ipv4 >> 0) & 0xff + printf "IPV4=%u=0x%02x.%02x.%02x.%02x =%d.%d.%d.%d\n", $ipv4, $val1, $val2, $val3, $val4, $val1, $val2, $val3, $val4 + end + +# change prompt +#source /home/tazaki/gdb-prompt.py + +define walk_list + set $temp = $arg0 + while ($temp) + printf "(%d,0x%X)-->",((sll*)$temp)->data,((sll*)$temp)->next + set $temp = ((sll*)$temp)->next + end + printf "Done\n" +end + +define walk_tailq + set $temp = $arg0->tqh_first + while ($temp) + printf "(%s,0x%lx,runnable=%d)-->", ((struct thread *)$temp)->name,(struct thread *)$temp, is_runnable((struct thread *)$temp) + set $temp = ((struct thread *)$temp)->thread_list->tqe_next + end + printf "Done\n" +end + +define lkl_hijack + set environment LD_LIBRARY_PATH=../openssl:tools/lkl/lib/hijack/:lib/hijack/ + set exec-wrapper env 'LD_PRELOAD=liblkl-hijack.so' +end + +define zpoline + set exec-wrapper env 'LD_PRELOAD=./libzpoline.so' + set environment LIBZPHOOK=libzphook_basic.so + set environment LD_LIBRARY_PATH=/home/tazaki/work/zpoline/zpoline/apps/basic/ +end + +define zpoline_lkl + set environment LKL_HIJACK_ZPOLINE=1 + set environment LIBZPHOOK=liblkl-zpoline.so + set environment LD_LIBRARY_PATH=../openssl:tools/lkl/lib/hijack/:lib/hijack/:/home/tazaki/work/zpoline/zpoline + set exec-wrapper env 'LD_PRELOAD=libzpoline.so' +end + +define zpoline_rsocket + set environment LIBZPHOOK=librszpoline.so + set environment LD_LIBRARY_PATH=./build/lib/:/home/tazaki/work/zpoline/zpoline + set exec-wrapper env 'LD_PRELOAD=libzpoline.so' +end + +define rsocket + set environment LD_LIBRARY_PATH=./build/lib/ + set exec-wrapper env 'LD_PRELOAD=librspreload.so' +end + +define upregs + set $regs = 0 + if $argc == 0 + set $regs = (((struct pt_regs *)current_ptregs)->regs->gp) + else + set $regs = ((struct uml_pt_regs *)$arg0)->gp + end + + printf "rax=0x%08lx\t\tAX[10]=0x%08lx\t\tO_AX[15]=0x%lx\n", $rax, $regs[10], $regs[15] + printf "rbx=0x%08lx\t\tBX[5]=0x%08lx\n", $rbx, $regs[5] + printf "rcx=0x%08lx\t\tCX[11]=0x%08lx\n", $rcx,$regs[11] + printf "rdx=0x%08lx\t\tDX[12]=0x%08lx\n", $rdx,$regs[12] + printf "rsi=0x%08lx\t\tSI[13]=0x%08lx\n", $rsi, $regs[13] + printf "rdi=0x%08lx\t\tDI[14]=0x%08lx\n", $rdi, $regs[14] + printf "rbp=0x%08lx\t\tBP[4]=0x%08lx\n", $rbp, $regs[4] + printf "rsp=0x%08lx\t\tSP[19]=0x%08lx\n", $rsp, $regs[19] + printf " r8=0x%08lx\t\tR8[9]=0x%08lx\n", $r8,$regs[9] + printf " r9=0x%08lx\t\tR9[8]=0x%08lx\n", $r9,$regs[8] + printf "r10=0x%08lx\t\tR10[7]=0x%08lx\n", $r10,$regs[7] + printf "r11=0x%08lx\t\tR11[6]=0x%08lx\n", $r11,$regs[6] + printf "r12=0x%08lx\t\tR12[3]=0x%08lx\n", $r12,$regs[3] + printf "r13=0x%08lx\t\tR13[2]=0x%08lx\n", $r13,$regs[2] + printf "r14=0x%08lx\t\tR14[1]=0x%08lx\n", $r14,$regs[1] + printf "r15=0x%08lx\t\tR15[0]=0x%08lx\n", $r15,$regs[0] + printf "rip=0x%08lx\t\tIP[16]=0x%08lx\n", $rip,$regs[16] + printf "eflags=0x%08lx\t\tEFLAGS[18]=0x%lx\n", $eflags,$regs[18] + printf "CS[17]=0x%lx, ", $regs[17] + printf "SS[20]=0x%lx\n", $regs[20] +end + +define pregs + if $argc == 1 + print $arg0 *(struct pt_regs *)current_ptregs + else + print *(struct pt_regs *)current_ptregs + end + printf "pregs=0x%x, AX[10]=%ld, CX[11]=0x%lx, DX[12]=0x%lx, ORIG_AX[15]=%ld, IP[16]=0x%x, SP[19]=0x%x HOST_FS[25]=0x%x, FS[21]=0x%x, FP=0x%x\n", \ + current_ptregs, ((struct pt_regs *)current_ptregs)->regs.gp[10], \ + ((struct pt_regs *)current_ptregs)->regs.gp[11], ((struct pt_regs *)current_ptregs)->regs.gp[12],\ + ((struct pt_regs *)current_ptregs)->regs.gp[15], ((struct pt_regs *)current_ptregs)->regs.gp[16],\ + ((struct pt_regs *)current_ptregs)->regs.gp[19], ((struct pt_regs *)current_ptregs)->regs.gp[25],\ + ((struct pt_regs *)current_ptregs)->regs.gp[21], ((struct pt_regs *)current_ptregs)->regs.fp +end + +## source /home/tazaki/.gdbinit_defs +## +## define syscall +## printf "syscall/rax\t = %d(%s)\n", ((struct pt_regs *)current_ptregs)->regs.gp[15], \ +## $syscall_tbl[((struct pt_regs *)current_ptregs)->regs.gp[15]] +## printf "ret/rax\t\t\t = %d\n", $rax +## printf "retp/rcx\t\t = 0x%x\n", $rcx +## printf "arg0/rdi\t\t = 0x%x\n", $rdi +## printf "arg1/rsi\t\t = 0x%x\n", $rsi +## printf "arg2/rdx\t\t = 0x%x\n", $rdx +## printf "arg3/r10\t\t = 0x%x\n", $r10 +## printf "arg4/r8\t\t\t = 0x%x\n", $r8 +## printf "arg5/r9\t\t\t = 0x%x\n", $r9 +## end + +source /home/tazaki/work/mino/mino/gdbinit-minoc + +python +import subprocess +import re + +def relocatesections(filename, addr): + p = subprocess.Popen(["readelf", "-S", filename], stdout = subprocess.PIPE) + + sections = [] + textaddr = '0' + for line in p.stdout.readlines(): + line = line.decode("utf-8").strip() + if not line.startswith('[') or line.startswith('[Nr]'): + continue + + line = re.sub(r' +', ' ', line) + line = re.sub(r'\[ *(\d+)\]', r"\g<1>", line) + fieldsvalue = line.split(' ') + fieldsname = ['number', 'name', 'type', 'addr', 'offset', 'size', 'entsize', 'flags', 'link', 'info', 'addralign'] + sec = dict(zip(fieldsname, fieldsvalue)) + + if sec['number'] == '0': + continue + + sections.append(sec) + + if sec['name'] == '.text': + textaddr = sec['addr'] + + return (textaddr, sections) + + +class AddSymbolFileAll(gdb.Command): + """The right version for add-symbol-file""" + + def __init__(self): + super(AddSymbolFileAll, self).__init__("add-symbol-file-all", gdb.COMMAND_USER) + self.dont_repeat() + + def invoke(self, arg, from_tty): + argv = gdb.string_to_argv(arg) + filename = argv[0] + + if len(argv) > 1: + offset = int(str(gdb.parse_and_eval(argv[1])), 0) + else: + offset = 0 + + (textaddr, sections) = relocatesections(filename, offset) + + cmd = "add-symbol-file %s 0x%08x" % (filename, int(textaddr, 16) + offset) + + for s in sections: + addr = int(s['addr'], 16) + if s['name'] == '.text' or addr == 0: + continue + + cmd += " -s %s 0x%08x" % (s['name'], addr + offset) + + gdb.execute(cmd) + +class RemoveSymbolFileAll(gdb.Command): + """The right version for remove-symbol-file""" + + def __init__(self): + super(RemoveSymbolFileAll, self).__init__("remove-symbol-file-all", gdb.COMMAND_USER) + self.dont_repeat() + + def invoke(self, arg, from_tty): + argv = gdb.string_to_argv(arg) + filename = argv[0] + + if len(argv) > 1: + offset = int(str(gdb.parse_and_eval(argv[1])), 0) + else: + offset = 0 + + (textaddr, _) = relocatesections(filename, offset) + + cmd = "remove-symbol-file -a 0x%08x" % (int(textaddr, 16) + offset) + gdb.execute(cmd) + + +AddSymbolFileAll() +RemoveSymbolFileAll() +end +#source /home/tazaki/work/gdb-symbols.py diff --git a/.github/workflows/init_array.c b/.github/workflows/init_array.c new file mode 100644 index 00000000000000..8faf546c978cb6 --- /dev/null +++ b/.github/workflows/init_array.c @@ -0,0 +1,19 @@ +#include + +static void init(int argc, char **argv, char **envp) { + printf("> l:%s\n", __FUNCTION__); +} + +static void fini(void) { + printf("< l:%s\n", __FUNCTION__); +} + + +__attribute__((section(".init_array"), used)) static typeof(init) *init_p = init; +__attribute__((section(".fini_array"), used)) static typeof(fini) *fini_p = fini; + +int main (int argc, char *argv[]) +{ + return 0; +} + diff --git a/.github/workflows/inittab b/.github/workflows/inittab new file mode 100644 index 00000000000000..81eef106465f99 --- /dev/null +++ b/.github/workflows/inittab @@ -0,0 +1,13 @@ +# /etc/inittab + +::sysinit:/etc/init.d/rcS + +::respawn:-/bin/sh + +# Stuff to do when restarting the init process +::restart:/sbin/init + +# Stuff to do before rebooting +::ctrlaltdel:/sbin/reboot +::shutdown:/bin/umount -a -r +::shutdown:/sbin/swapoff -a diff --git a/.github/workflows/iperf3.sh b/.github/workflows/iperf3.sh new file mode 100755 index 00000000000000..5053573fd47e2f --- /dev/null +++ b/.github/workflows/iperf3.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +NIC=vec0 +mount proc /proc -t proc +echo "nameserver 8.8.8.8" > /etc/resolv.conf +/sbin/ifconfig lo 127.0.0.1 up +/sbin/ifconfig $NIC 192.168.122.2 up + +/sbin/sysctl -w net.ipv4.tcp_wmem="40960 873800 1677721600" +/sbin/sysctl -w net.ipv4.tcp_rmem="40960 873800 1677721600" + +sleep 5 +IPERF=/root/iperf3.static +IPERF=iperf3 + +echo "===iperf3 forward===" +$IPERF -c 192.168.122.1 -fm +echo "===iperf3 reverse===" +$IPERF -c 192.168.122.1 -R -fm + +sh /root/netperf-bench.sh + +/sbin/halt -f diff --git a/.github/workflows/iperf3.static b/.github/workflows/iperf3.static new file mode 100755 index 0000000000000000000000000000000000000000..79155612c05c8a7694a86e6548c6745a64adc58b GIT binary patch literal 1362920 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

+$<7dKO@*^B+ z5N%<9yCJD>-Nv^>8lo5BRF<1KOG72{?H7sSd3=nr{OfzI78sQbR%(A!<8o!p2YS#$;UEl zJ`G*LN*0a!Z0(9{{spx7OD3k3N{Yr+7Q?-k4B-2zGP+ZQvLyo-^=m~`g2S=zPE=$d{H9++&`J0GCr7aLz<_%sl@($!&f zP6}bN5Pl5;zD|5+&3ABh)!)|Dmb&zZ=)|e{KJX)Y5$F-+PpW7>;wVDBmaCf7brx z?ZPLP=Y{vTezo%b!+AVmTx=<_=hyy+04+5c_nj>-ikG}-?TonMWivc3!|lNaq393l zHLQgq1^(5kQ~S$i2-V)RioOJQb8FP6YD38Ql>D}deM7Y`s?UvTn^+L4ofaC!QDwV$ z=Z2!jjTO#at)po6MwD3F#L;aNYZf8BIn}i;(@}mR_565k*XncjOz+5YdRM<+BdO{= zgK>2xy>fL|a$|dPeYMiPN5hZ~Iop)MX(i_pLD9Wcyt4jRQ_0c`XP6pZar@N`VUb&+ z9KI-cuFl)Rf5os=!ytaapESux+{P!cdvQa~Q&+&%3C;r4Nc;*Sm{Q*lo?F`N6X=3& z@w$`SsG_smRKYpHb6tDKf%(QYpy(Sr?l(&CIB?RYgq_!nB!VZzbpW&g4z5)iJU9iV z*!!L!rr=8_uoduPcw^Lu~EMDzPlNxk`fw4}-W zE-0CAexEOSg5NABnl4JhzbH@3zo}dI4lSt-F8xyKe+#v$3H^3(bhlYC2N1pBnHn-4 z28;oL3j~gSPDjo!AP2vlHF1s?k*S;vX2|x06l+ec#KUZM~>(>SMmg6~fnZqvDBQw#x}mWcywC0Iob?c=5LP z$MtHF?1$_4Fs(EER0i4WEM3l5sgCtIuT4GtbMIb0uivf;-^jQXLxUB!V*D0x`~wtN zx=}fY?8zp=0Aw%MJ`P=_n+rW3SWps9G{x7%9o0pjLC!29^<4x=W`(G!h zlrQ6FS$XFBrF_5iOYbPdL66q~$NK>EdaU9+U_X8?Ey2yS)c;Ef{>$DHES>b-F)HRD&fArpJ*`|LR%hV2EUKI_OPX$<^2p>1Zb#i(k@$}8voFc z{{JVnhhJ=@w&M(2ndeeecuuxjo`hWYQAQhHa@`Qmrj(ljgKLM2>72HW3*Bcr>Y zEr!9;W)n&o>+$Xnrju&y)4fi+`_NKTaoKflsbtA+ZKyVHb|`mM+h&_Ty6y#yM;H|+ zsGBsaIX}{%qSicj@0Jn*4*xnS9z0+2paC@RHjuz%YB-v|TE+pON zk)m5!-RmRoOn_SJAt=~ag?#l`B+qhS^vVQ2op4G2mbS=9uOU4?QPmVHY|aMtQM`TmXp5Y@mXu zqUfgJ^QtSa<8PB{^9O2{bk*5F61{zv+d8vX5V?Ii?Us|kY0xo~s>QX8H>$-I-o|Yb zYp&?pRNad$_A9-1*J^?K8)+=OG#m7oK(AuvQRCZiAZ4&|hd@tR&{NspGCloX3#!isja9B0 z7BnmyG*BP~XYj4s>~9?_&=3onpDhrb1X6?wx%y>;zEY<$%Y(7PFS0>z2{hQ|dORDX z<6d3~O*Ilx5og>h-7L=2n>tumO zSkMxtDH%0?us~%NG$$Lh2cscw&i{xNK3kBL>tli1+gw{PfHMfL66jP5dMUeH{}$*K zJDa#G8+5xs+KooJF3ko_73eby+JFx_<69RBbfZr&8x$1i5(_#v8+437XZi&9&my>= zK-T?S_^lkbM)MiHvz-yjo=+bujAiF~Q=sqg^}+nz*|`=A^sWV!XXkoApcgHuB0E=u zKo42am$;EL*tkLwZH)PG$AbE1gWeG6Tl_zi z>pPrs8Q*$Vpm!|jKiQx^3$)b|JT@B?5$JUbdJlJ02EhpeEwZ4V`(=TK33Rpn)>j>~ zKqm@xt_A&2k_GA}&`lPUpWR+Ro&@Mh3)-u_J`^a|g1*jfuayGHZ$)jKlMVWpKrdNP zb)PIYngnXIpxkUwoj{*h&|}#>I>A*=SBq5FAJte}A$W2&Xq-T=S{Lge=dDmJ7|9uW~|M(}P-d zNYTr2dJ(UB>7f^uLN5ipaG5dFy3f4+Q#C;fpV%50x3yi)ePGDNBC07DOWjqtSM+Tz zz#SXB5FcVaFFB<b=`a3&g+D8{dckFN=%@ z?S|*;79%?U7{>G>)^F5Lni|MC6N=(nnQ!NJc7BldKPJzHC5|z&C6v)vgfh`p6h8DO zth#eo@qtSB@@a&#;aR=qc@nt?O}kIJD{`z@H_ozN5Z^%=JqdNMPk7E#U3w19L;_}a_VNR(~h7h->4zdU|5C)kNt04PX@=Mvg)RuwC2QpskX~irg~KxkaHs=0MOq z=1IX=S5CqmHO*XI@B_0Wj*8|a!bZiP<}MW^{wa^9zsj$$U?e?wG8yIX=1{xXfOP@m z$Xn41z*PX!0_MHLGG}yCrCUryr&kc+*0AVh>;kAsw9B~(CKiEh9Q*xK`-tj}rO`un zQW(6*TnSb|??`YaM!!+|P@8w=7f8r*?@(xG2(yVp(0TjoPLLpbc&=DvK?s8SGc zs!{(!IDTXItmRFr_Qe_=Lajq43dAuSk&kwTBA@T7jy$N-f`w-6-QEH*~T%^+M0zpRSvF=8*R+n@NniZSHqL37aPI~cr zbY&8~0)c3}QMmqo21CHD2;Fp_{sd5K=)E+T@;8^t(-H*am6$=3Qg=71X$*f&Pb%$D&LsW&+ zPz6tw(F&5C#&dZlaptUKjfC30Blt%eOqq|4FR-$<$DxuM#;SeZ)camTD)qs!-$(cVyP)`L`+ zej^_M#43e~1FTYzC14vVev0W~IZ@LN@#~ZQE#wXz$4w}sIjO^L2DXAw?G6pO{oRVI zYTQ9L)_4mq<(uYa;b`kcL9Ovd6>8iXh=1NL=W;%>MBOYtgg>nn`3nNl98QA@6RFsre>8eJUyBVhLhb`0bv*)CS=c|s>UVc~cW*a7*<`pN3#(fgP1^3#*j+!P zB4<_~cgY66!H&ZNks;$Q%CHZ-C1g%;bcyf3dO^BW!_k8+8uP+Sje_BtK2F9m3^Kmt zi^b3F_YHqs>FMT~J&al~$@lfd8OVFaCDDWZJzU(;Y`T#50bi!3Z^;#&-IhKz#6>R^ zk>+;g2TZ*hDO-ti$645n&vFhIE#R|cf7YxDZ{N{W&I`jUU}^*wCj!c928^A<-mt{I zM$ejkT$@Iv@UF_lI~Kguho;=4dTtHu`LtcmH5A?!_(UN zAz4n%+`V~~@K~$lf{nEP7J8AX%4vUx)wK*T=>iX|OK?JG#vK_2c{$ z8DD!!ep&+y$w9Oj9zSZSN&M`ZAW?GW{gnjxk#vouWt2oeW?`ZMbQv}b07+w(y#ezm z8#v~^dnN{v8s5P&_i;MEe~>)rZ~h72*NGWKAfYQ(R}6G=ynk4Vs!2n!nUW+P_2o(YY{w6< z7e9d%KUdn^)(nN8#pI4(2~)PetMTp~X&Y}Osi9i8o^PiZYc=&sT{8;y+oTDM&((pJ zuIk@#)hN0Lrsxvkd2n-N^G}iHiP6B+k65D%8!uzOzY)QS#d7C|s+J1?m}(gX(7W(a zY|>Gw6EIkP=DQiHsG(#L3BESEi9H0N$cq|KsqY`coxRz$wgubr5rU_hNLNp6JaS)N z|CL8hMQfeN8@Ia3d^e{IKB}N88v6~u`HzAu?A~k3uoH=939OSt7igHlHyp+S!0)DH@zM0%%SlJ$D&W4J%wr`wk_v8QJ1^gLP z%%9r6{JFA%Ka*>MPOtrWm_Cj_gC_EJUIBkDD(27lzWlkSfT;g)6z8Z9{b@XRcflQE)9xpD|-^+DLh#s!3(BG*w zPOo7K(YbckIQ<|7Yw$$xWz0$$E+Y^tQ%hCR z=DPhtk@6C%?pP{{usT_Ggi=Mn;IuGZ0s0dbCS5f;9})J-{z=RC&vP12pb`FSztna$>$31K)p&gXCr9C9>{)RwX8-c2?a?O&w! zr@0z`V@OphXM&rvWG@g7aOiFfgvKxH_D@_La{s-7jJ$;}aqBqrtM1Fz!3CsXLCnba zE*`F;g*!xcwRakyMfR1->ggX?uuP?YNV-2@PkG!O$vMDV=@N{;uic45j8XPUAIHt%4{>&6?IwPTNuq$Dk(F zj6c}c|%)Cyrm1>Pm3gv#{1idZSZ+L#BZT~eZ7c4G>n2l1Yg%B&1`lKSmpGpBs|adeWk5I0W3C(plof( zIcKT9&K*VM(rjT|yvZp0dMHcmkTD%M zeinTC{6KJ`uVae5hI5R>HeQYfsp7ap*w*BGigsABvxI2dQ1mKY9ra4$06%}K8Hspd zgIGwndll|a@D))Z-cDw)Vr!;4NMs39t(*(~F z8fT8S2@Z4rrqXh%Zr#E0xzO~-!C~%0=E5TY;mJW*D8a=3B1m5{ouNvBXWnmWGNgVf zWK1&M;rE0;q`Jdb0Fp(T^00zLRSggCFx5b>cy_8{_EVp$yG`SHGJ`YsIAw1&txYwe zLYCZ1LA*hOC1~4%ZFi01^#v-*)M}@N9D!$rqCqDNR=P)5ZB%$fBA!e3reS5DIgz(n zK#2D~9a$j0rq3zc%^Z&AJ0qwGitN9m;fXFtTK69qUz=gLTY{zO&ZK*b&ZJdjQ`4=N zQh;4k46-+W8D!fqP>tVWlQ+N4^k1{PBsF3-yb6MP_kY5+ch83{LhID|&F+xL1dk1P zimAT0mDvx0A@isLI0$bOqf5Q~d6fSo!$hn1QWnY~-&vGTY07vQN~SN~P32TZkFI!^ zxj<6s4LAl=uIQOwMD4`-RP%$+XzY5> zr!iYJdK((DCoPTpp^;RhH)*}z=-WNOX_$*?fQ$k(o&nsK?@G6%Bsr-X12)xjgy=s? zL}$_mSx0=%CT~qkax?23R{Y!nyElOLxA#Ta?p%)b>uw}ysn-@Yg5m94ibZMTHfgrN zw?@9C|7r5X?WSJokI>2JkE5N)M59y97%0=j_>oSp8STtDgXP-zxzb&n*L>IJtbFw2 zLV-^LEV*O%^Eb(!bur(IH!ELy|4yu5Q3`&B;P;a|4UguPATq6i0=P3xc>P})n!1)m z3)}%YD*3aL6{|2AeL;Q5o)%vl1J-$%S^lrdYNI$JT)p&WY``mO_+U-)( z<10*O>Nnx*WD`^?^)^yl1AU;aA|kuq9e?qKtUHNb>qb*Xud6?IRwqBn^7i9f@b(N< z+8X$hM-@%^hbQyDN1`{^=3kqc|C={W*`8N^-4$v|^aqvbQr=Kge-&gb&lGJf0)^H5 zB6;HV6!;g0;E;^c$p;}PNpm&BWU8ud+yH61h;hTY4a=XrymmoAu-^4IOc(p%UNqEjln~zJ`j5?DY_7VkR&D zkJe9qg$hlrpM23iWBufPy}%n{^trc|m*o1%E^K<~t=2&CoBwy~CpSXDte>3C!!NC$ zY&=iZ{6DXsJTqE2X8q(5LbNkn&P{f`33u`|@y|b&Uan+OY{I;t~(W5AR!cv`U}7dofL#x=XI^E$jaB-UQrgq=qKfmR((hI=*S|^{@Z^ zdd>wG{hzJp954o9`Nj2|T^C5U8ccD2VLj&^qKxPxb3ab@>1o%ZR_FV6na_AKe`@~g zS6Pu8D0`j!w&Ji9I+@5tjd~1*cN0{^VEByrIXZ7EuD^ql_Fj5l`eKk<2Nh7g(3zg^ zoi#**S8K)qxPHB_Jx~9W^h$qsz;aT&YtfVDL}lHGiB8$HPE9dg6Nu4FEV60bLJp%j zcd{|u(5M%U;|&c4QJ=(d z;@%dFcH#TUdG6=DxRGM$h{g4M%)LXO48@+SAu;+6S#gB%sDE1j;zG~0ypr1Nr}p|j z6!~md=5iRTWzn5rNW4tG*7S1NSF>9*@wdxi+}jR^%$`n=ur4))XMc_n*Uv&77MOzv z%kGfdV#YpE^DBL)1@dLBfrDOS+m2ytdHy2F8L6q0R2#}jFsqePrH?&vH{^^LD{m#4N?NMOTDx6lQzt zpH|U1t>&#^LYy|xjYtcrlI4d&44m=C{NWxpeJR65uo^fn0n%v?PrK@4qUh}^Q`9c-B^ML(#gVsmr{%&b5-X!-5wVkan-5B+ll^GkX>cug zdew3a?mF6OR6$&K1E8c8avQr4utLmYNK)7Mr$(Ocs_~p#HL-c2gUHbuT^`XWT6eXc zSD5E%m$*+cJ(AzDZf1IQ!D)C0y9Ttjwei<@GUH{&VyV{AqTB3B+KwHjWYKb3xizr+ zWxF7iZg1-RzTa}WI$#b-HpJ@5&O)U)j9*N$>BnNK>2hOnHB2HgvCsv0%k%H_d{1j&2G2L>+4bg7aGPK8CFw;ZXD$@Vz`P z(X-dm&(wR{9Wwi>-3NU?LYQSx=I=NNx+h1C)yJzP88vjfd2-aqTlVuoqoy_&k3`xP z@T?liEaJSNum@G*@qag!*mxH_=-sU`@ADdYe_?+gX&)bHqL9)nR2@Zbt!WQG8m7rH z7c!ELMKNtZvp!k1hU3c$ETz`KzAv@Qxmv|Nl2xO`Dzm=!a5+_F*VppMqugeFZQFQ+ zU?z>2mJhSeHZ_f3or(V<__&L&%C^|l6LYue>Z)t5(~Y>K*)MXl6|Rwq7c6z~%t z;g-02HHJmH1%8wMepWjKkNZDthgFyC)egz}@VZ|?5noKpxqRSH7_t3eb;kN&{LcoZ zg7u-5q)((6iO-B&q|bjcffQ2aSsGHVO$z3(M6e98`z+hQAJNZ)9NYjYvktMC_rdPt z)^EZ}#3cFg-Nz-TT9_CFSod(>$6OC3H19s%<@v;kXBHOny{}G3VjRc`t#X34$=>rz zOA;JGQc)l$X%VqMi2AVD!y3AhOBr&BL4>11KI5^g9{DZye@pb6xSY<~pr;(<4Yeoh zEp{R2MqCXKa>e35)UuT~7D<8Ih5`G^({+!gc7)mJ$NEA)Lc)dDPx<(bolT*|pVJ_J z_+a;ee8|g>)ObKAnY0g;%;&4a%D$b<6_*X>w1}#*mCl_0JvFPGtLn!kHn~Gp*>Y#j zQ6y?j;2{0Eh=qhlO$NP8MS?pGb)}tc78A~!==8Ej!8^SkDrr`E zdp%mR*8DCg*=&BFFWGK>?GZVmA=O`1wn7|2kQeT5cjnxEEHYi@X{qBLjqO#soPIWm zc#wJ+b=!vwyu9uZR^?zMVC1Z?2^GrIjeVWxLWIV4QQ@R-}VOi zwretc+wcC&w=IF1)0=D(g&N;4MHrQs!-B7hZqQxMUuZ?;U!3M@Tx?GCIotu>C-efd zs4`~1UzU>&BC9P~o8&HuoQ~YRX`ZI%=Qs_Ed9+f~xQ0ioug$SxOdku>9r`_Cd(D7= z?H(&0)6AvK`#0O9*+~_7QNwCmxRcVVE@^Aqx#8gE5LU-t3lmky;4dvqRLD)h84L`B zh_`Wc)mBU->6Ra*2I*^@-|in>7Jr|lRR8hO(|&Fi3PFr7^7YNnJI&-nLT| zAta~(MW)>%vQ@QnH&c)dKgoQ(;wPDWjVh=ki;nasmGY<^wnmQ1qbb~5l`UzgY~dWd zpSerGS*31^*F-cqNu#%p`Qh_j%>imUw_kNI9D4Ze;6%31FL2__QTMmpn7gJx{luWQ zn6VV+jy?d>t0s?6g%=hCO>oz|FzmCvi~{_}I3k>Rmy%M6>iAFZq)atjP7?fzYO+j4 zzf`7VVNh5FWyCl-joO;TTUXvnxMGgCWFTY1xfC!-ZOu`cHN>e{#t2wib;O;mQl;ML zF}n5I2*R-1$5n6D&f^mbf~}^cNQn&@tZP3kmy1v;jfh8-^nck>*_VLou`}qaRh$I(tUIk_ovDKQ_4Rag7W!_8lBG z5A+v5{MKnWgMu@e>7On?x~6N=GKoJx)%*2g>UXfI-{@bd@Az4^UuFzaJI4tmoF0YY;)n{lwsSl|p?Xqt+&A2*p9XRP1O*DyrC9K+~z@A0Pm;8{1< z1`_q%`bVHT0X@q1%=-m~kA_o7(!0*vkRER{TcMKmWo@!^C(>hXiGvxcUE{~hgvwf+ zTi+sy{#!s(47Rb$v5C3C=rblky-a7zi~83I`;`lr!XsS`mr~*BBYB+0cfdoF3^?5I zN7EQx9j~S7O#SSkBWk`GKLQq0D2IX)KM6{tjex zv@Si2$}rA5=32F!8<=v^?OdNywuzA`Wy?8`<4`-Bp$PBj?op#T5AsH%NjZ1{T|TVCLq?GY%WkzY8jP9;U#G{9P07FFtC|QlxA9fg z(cNecy3o^~C*!^L8%RY(jp8*n!sBFZ4a{ER2R1!qM7$y=*nVz3ToYGiX~aT3A@iz7 z`K>n`AcvW(PKH-42pX~)5)9cBAe(r2e3SUe`8hu$Q~XS~8Ra}w#s+P&PV4Z7a_C6; zJ#>N{PJW|mti3ghH(#;ST+$Yc;W5e8VV1acN1}!EpcdaB5-Isg**g`wf37p4=Z5kW z`TWK%P=E3@<~}D&0>el8*!BSFsy(*fx}hQz_~hqO{mz4f*1)fxZ z#(QIG>J0eK*pP67f2d_ouj&{i6!q29Y&XE9NbN~z`P5d1vTD{bpI=3Agp!y{myLTx z)>u!}R7f)@@5pCtHhkvlD^IAtaJB}#alhvYheA*955x}pXYcx36ilqoQ`DQ?Dey4L ziqhWqJq7y{sr2I#c@_-`P@V1oT(>a^gl>01{5u{CBS?|)lpV$)r%aqve z0BN|DMvi~T*JYP`-#0K$6hwBns~Zj7!9PNG7f$&2Ltu%$Lk)YE5J@kmW&CFHfp@ft zTJY}NMN*qM_O0yLfLb8##EI0=Q~^8E_^=c0%4QxG6unp3+9k5fKcntQr0(*gT_`^v zxJe&4o)37xg(-5mJ(&u5_xV|FBTMx7*1((3S|?dN2h>IMo1FNE-;n8q%uM6`Oc(l@ z=99_Le+jw%nZa)E7xiwAaK5;4X{Ej8LwbhXsUde(_fTz3zPINT6xIqnquoMod*_8| z6&3Yu?ZQLddQCC$4R(>ASHbfv&chA=yp7Vnu>o~&7>$^ZOg_znoUm>q?N59~#IqpZ!u1>_ryIMr%Lyn2fJh`kOSo7fuz0#PgZ_ z4(f|rJ~qH5#;w{Mm^7%TJG6$oRVZW_?`Afg;E1Z|kFs=)ccz&d`UNlcB9b$`*gCCf zK553A9pYH#fAgY$bnU!)euco4HOCtYM5f*0lp(sT%55kylRvkD3tgJ)E>&2k@T}kR zXrAO++v*+T8|y!kQWbl?MAoX=ks{z(N6Lh)BmSR&RuD3_Ol;zn`DZgf_E3#w(h@CO z+nc>vp~$X%r`#MQn=c-GA8`*Z$_IZj3Z1W;q0rmD*{~hO>QV2yY(2ej(y!=+LrF0H z#Jzp=o4gZ|MI`Ys4AJX}kcp3#TF0ImQ2M=5QM(w&6SsH=&zAi4t0s}vX}5q@S@pC$ zjje&37q-iJ2`Y zzZqUO6mDrVPNKT5A*&ZSO{+rTyA9vbU1$GfmruGKL}6=J5ZGqp02rw4v`v1Off(Ip z9mTtU7z$-5F=tk%VG@4OY6|$ggv)Lxkw78$qvaGS(4S)c>FY`s8mjoFzimeGgwd@i zqOO=O2u~4WA|X=y5ZV7IEfU!CG^c?uRu<)nJUXj%y|q`S<$056a69iE1C&iBDt=Y; zQwO|7|31%r6TlX#40&Ws)&vH8=N|q64A7&3ukPX2aB* zA6SWg-eiTH$h5qUbpw;(%?IpU${5{NS6bTKxIRV5xvP2cA<%lEmmwIEK|gdLaRA%EtI)U6o5Zivj@_M=(@`~Sx-H^u*8i8oODzt9(${ImYI(Mr_73>ivxss>%v zlV&SJg1kTY*;=y*TdB2*cdC!^H!%Dvj*k)dA5G8T{@@h%*F5ZVU-M+UoHb;MZ$t>Z z1)10hTu!Ehy}_Xpi02YcQznjPGqyguCn@fEqFqkCu%lpGSPrn(z^4GrrzVO_RVJDG z6qz^w?lblb*yf`H!EOya;%BBK4+lBkTQmZhG|E#nZcEabOeRpcHAq$QHj9F(hTK1e zU7N%n4E8)>uNC$XurmUTf+I~uXABx4=7b?8f_sk_{!n3e25Kdx!0Zhqs$iP8;}|64 z{NM#>%y|zoul6->bcIp86-IB_RpFH4jgXjDypQUQIY(ZJl}KN~aMF`C&7eRllwM)6ICx07?)*o@17 zSVgtwYbj)Zg$VRD>mau?AJjU?{sI;Obmq(=DY&SZ?`crdFH0XR!Z3WA5yk0MT~h3w zzQK0NMit1ozCX0xFuHB=5#%wbzG?{a^*pbGpF=)rzqk2!?S+SiqHiS)r=n0~_r6og zlA!}mW1C;MMVY3P9VWe}-?m(QBOGfDWRI}B#lC`qy@CpLEGm$hg&q97i4Q9G^@ZNo zQzcbBInyo}`DwD#*weI&wkb>p#g8U1W+SDO;b{EZlE(!GGkdW4T4{R?HVtGVHR@N= z;>;+3?QfYvL@!tGyc||i{q4_{R#6mq-~83@;cq_b?^^A~eBgBUKsvX)Z2J2105paz z(U=vVz@PC=sR)jSU8q@xj{6AmW_)?~3p%Xb6X7oWMX+y1cXx#j^9#97}NC{pm(a_0e6vNM>JgX;Ns&7!?ah=2a4onFMRLON6P;b=HRe410) z3dv>$&7J@7$FEb=7sg~_-=4z$oX9zYy&CLU)N?#v*nKjwf1AR7Hi>;-68l{$%4_4y z?NmQI1#ClcDmYh&;zHqU%)~h$Me*_^#VWAPNI6f~L%~j0ovG*GC>#%n>Uo(Hr;vOK zS>s=SP2-bZhI<+9G|QN2y$loaGVEy=9-Q(r94{rN^Ct4lo^Pko?2wLdQ!Ji`bc~=s zZyfOCaw9k1XEgo_-H20-U!|5OGwIK8Gq~;DdEHH~8N}`+jSwvRyGkfq>dd)aeKj^Q zk3nN{hfvwq&YTPKrBOzdbanficP&YUVw~?>_LeZ#5C!046ji#)NJ@9%l&y2-;3mRf zFfQM__c^uYP918(DeA2Z6a`hz%ie5~tE0ayDbj3Bmp2vjP?B~~ICC!%DR^XtbuC#;*oogSk)ABdM-81-NXietC)3EO2}j|Q{rDyNGpP<))R#ie=X z^BRgoey{C6fD78-s0R*yxVyGG zcXKG$lsc}B`@SBIg$g7PkzI7$cmdx`rqfEHvag)TTLSD1NOc%J$G*%^*{e?Ek4oQ^ znch`<1S2{=GR``h#jg@7tHN#Z1tg_ArA#zSN9*(Pdy@D{w{#v<`m9vCIlp2+k2})s zQrSYgT>L)mGLuhw=UtoG=`*`IUDUN*)cB#*#U+sl;pgszd~aPhTG4GEiVPZ;OQjaO z_3C^YIZoi$yAL@bnQC3(-O96nl14~!oELIdn=bby%|~}rTE5>aS8^myW%M|@H>fwz z>vm4=Tpb&jU#+m5e*g@X?UDVb5wL70aWEuB2jj2DThPH{J`#!#*NvGDuXqpa4N)j1Toa$K(L>>-lE|Jl#z%-yXbpwN0|C^Y6< zvY+}V6$wVkXp2tT|G}2F*5VJN;j_rgH2AJ#li{YbG$SM=s35&$g4VW9z^$=e_7fkhW4~; z($k78y39{3;f8-esS-7N%X}VM1LOZ5M zUjTY?U!l`*o;Z#5xeo7Q(&K|8yJ;AVO24#$4EW+~@O4RWvjv}>4L;WgH-3*yW!Qr_ zRE>F==hfFBaT|d$FY)b0_he3681UqCNi(}v!&zU0(!f{5hAnemy3BZb{j$Eh83bzJ z@@|y*FqJvOU&iEpKsZIXqX?g12-l15<o7y7?S%j)F{@zn`ID*FGyWjSk*)48aUv zhKXZ4uXMG!NI0$NXKyJ+0^G+x;j>wtN#13eP$e`6sT<++Fvp|Yn3U($gYP~0A1m>S zuW^amCuW8MzjLQeB_6_`yH;Xfs%P9NVY73S@P7VM?L?Di?yS$6M{{#W_B{GwA<{>( zmLU9j^wq2EC+|ytAbTGDF6_Fl3Ym<$x@gayHrrB!%xL$AA4-&p!PeNRjXTzpkBVfo zh;`HS_a+}q(IO&eBLHO6_)Gu$KvzrupPGuMzO*hto#mCBa%%sw>JE>Zg#kCBPyj~$ z>XxW^^d_8wxT}&JQ-%iP-p?3S@{~M#xmqjPPlFfve&F;xnf|4D^5o6NYW~kggaKm! znW=|Yt$zJYa!|<#Zu%(wb=rqQ)lng`^@6ik;& zPk>qj|0HbfKn)k#()ZPWbF>1npN%B`p6)=boVWC%vc1mwHE{8i;BK`8HH+*GU8}X0n2sI9Q zMdZHW?p9DrCbchdm%knryY zJUQWm)55ib%eFZ&jgy9|qJ4Kj+B@+v3Km_a4O+yl1GbgJNdK&i`N7d$gQIa3D>mTE z4Rp=sVt@P*@s1kL#kIXN1N!RdjTo_Z?APDm@;-Brv`RYhLT8*S}}_-J-W);&7NC z>4S|X>2FGE0ga>>_^Ri+N|JuC#+TL1@3@K$cFCy zn*E)>euq@I^9)iGPco4V^Wc4nKH%bsHLyzKmQhK6v$Srau1XblIpdEEb2~1jY5RM< zU{?`cv3^4g*zP$QBaAmJ#=c;Xnpl`IpW^t`1EoYf98gd+YJzf7ZaZ%S&JA~aN}Eep ztNmj&eIvU%%YZ@sDd&My_JoLoaYy+rxl zc5c7zN{TGaJ7T-D@Y_nxr>ly76NSFhVMpL!HgJjq9)9-@EY=#o2do z?u6-P^&@?Q5zF?Yx_tVOxLM|XHBK5^`rkcASBy4?7HvFv;oEaQICM~GXFSyM{TZQ_ z-3NqvtqHa7rdt7*Qv3Df1pgp-F6&muAx~#AI~kI1KbC}x7H*Bg3mI&9UaibS^7Yr@ zCcmY4H(HX(XX7Ec$aqBrK1hxa93cjbn`G5gbAK4Fl7M$WyPPC_-%Oglr9X9(Rh>Oa zfHkdbOy!YPbXwiaG}LPs2}>l=8WE5Wi;RXK$g3 zu~8gu@XK~|Jz7PD;Q#dk5FQXZzRy4ikn*Kc2r|=8;VBQ`VX4^U+UC(4?Y&ddcR>o~RkAAT%{fey$3RaKeop^TpFa9w=bv;`ru|TS*6E_A4S4WB7j2nR@$K+{J*HHXk{^ZG!71CCyh=2n(iLy57~ zVuc4WN2}4h^lOcbteZ=2=TXsqzws91y$VIQh*yzJ*F|S|)mP0`H_N=I#-{9@;0Uzf zYmYO*(#J}hM=ntxM$2v`O>7@}mtotx$k5*8E&EAizM$04fFbUBE%kmdiJQE?TcAu- z3;4(f#8SCF`d2E~3LiLe?_7`ifKjPjfeoo#xB9@-_RclM2ON>g)hEs2`93gj?_3o= zAn{|eT!F_@-#W?%zG{K#a&`0pPp5Ldna=g4N!;Y!yLYZPe88+!uE)~3p7DW~?w#w; zKA_6aC4uO7n=(@KvrVG8zz7kq$jO|Bg-nYtFiKQch|Nb(LeZOzaZ=4Ccuz=hc$Zm{ zyacbAXYI&hQ04c|lFjD#et!>{y|Y$3x@53vN0%lK+R@dQ-z;^8ZbF>A8<{1uh-jwS zHQ-2gC-Q5I6)e7d^cqazP!*(!7nWG{UgRunFN?4*Ne#_)#fiaI-$&msFAncBFEnfBw#<*sh52Khg~M~pj}D(xep=l|Zn9$yC=IRq2&1q8LVQYngWpu&a2l@{TeFv| zwyL9>Q|iLv*Y6(BIfZ1HHMoBFrB1{BJl602t$UV)QaF)p-)4iDaFA6;ryE50CJ-}2> zT%NvEc?Oq$67NYuvV1=2sk5@#f$E7qACDM5!0R;NaXvrwYGD>68SjK{ZRee7am}4) z)}GekvNREnKebg{E_#3b%}Td3!%Ee2R{D*3+$7qd3eVEZ#S`!y3Pwc~$Ag()Ao7vS~hXc}M%>d!-`WcQ9fidoO`!ce6*9 zVN|`(MW)dWLAnpNNR^wnoGn}%CVxyVuSv$5S)(&H;H!UP%#2)^^0e9x$~VYPFfY#~5A&_2n%##|6vYjRmHWi@xg1V=ORculLn# zR>*{}f|<53p)1zEKI~Fr0>3yWIy_H;#Cgt16L234>f$lW zyzS?qchGlfyU#r*FO>ULXy=DyJRr9lRLseSz1Bs~$xHjo-F@9rdFkU%m$^go)K&T4 zn0n3bzL+I}i|}E}GGN_nbW7%uJWXylcYibSDqAz@@I|PMoU(P34uYn8c3v`l-_mAQ z^lopaQt*rH>+T3S1K(F!fJ2w_~SGVE_K zNph#=RrYF$=CcgZB@)k_y;Mbu=37XwuWcNL$r1zAoCKH$x*;0_zR60Q$Zd-4%FVHf!$PYOkr6>u$qE|NGx#%S@k@*mWF8fy6zA7x<8ly)f2p81L6)PAMw z5dvY=f6Z*ZzPuzS%yMqmlKRtf>W(B}_>8IDTQ;*Mi(I6IKoQ^tW;$r+z?;1fM@Ssd zJEhH$wjh1)D!$?j;+&H}H*v<{dVYU%QDKp#_(ht-`<0zmw=Fr(qA;T|b)w(D5Ku8S z$QFKxgV4JSQ%iOetqJ|$c~#LJ8f1g$rs$i)P4M~81UvG*AD=|5Eap^>H*6$Mk362D zo1)ynu%fiN{?&Z%R8r06RQf=UInI@+oG)kb%xZUCWoa`PLHN16{gSu|v4{Frr^xgD z3m+twE#-q`@dN(f=FS+6KsF;Dq zwI7W9*cQGkK1IV#YChrX`}iY$8jQw^2Ksj@aUM*|z!x#~1dz(wZXY>c8%?D>-Q z`Wjc~{ZZZ$6X_!g#UZ{`36+vGQ5vJC_rof+tTZ6Y1UN~>N|E=_OsXa@4f;4}8h?ac z)B4d5O4qxDU~hX8@G|*sz5}F%`{S*TO`{b)-Sc5+2c2hr47n4E zy!Yl%+0nu65;rINqv|hJW2&22q4Ni9H(O76C8f=#8T`srTbOz@S8}JT&ud0|N^O|4 z9a2?y1$;*X1LoSQ)08Qz>J~hath(iZs5+;yMNSrVE^S$F=#12{>=)V9EKb>J=-8Vp=ft0Tx}RuBYjMophez0JS8@JC)B9% z{hM0G_h7zY8uPgn-jh7(_Ljr~m>ldQ6nTFn+54JBpVpj9;2?3g_bD$aO5Ib4*ZKM5 z*Qs}21k(5>fBwO(=^0&-UarA@b8--=p@u^>USHO5E;t`&`eh-vw|0%;zl$z&M-qo$ zSLA807@>$=yvre+4n?fvV%KfnjvH)MYEZCB(A+Xpl$5_^lxT8y&EvLtYrs_mmZ`AB zYVT>z@JQ9CJ+BUBQW~LDObZeUAO}%=-jzd5509PL}MX+$q3Hih8<4BzUoQ3R-e*RHQ1kiX6T-Q0`-{L?-eKhzP{viEJMj`F-W9@R&uaql^` z5$7mECL$I7?u<=l&l*xw@0Bv~Ov&toLvoFzk8iTQ<|1<0{^xbb#H#>Ly(HheYntCT zUbXLyyeF1=*H_cp>Cq5*A7vb)X1zyK7PE~@notWKPMaifL`hGr>T+<#whSps4o^~I z6&jNIs`xm7g30|r2NLU08I4!ft_T_nx+?munYq0Fc`!C3SB_LfMfMXj#2c666@n0_ z#iK6?DL{pJpK4v>UgHPU3il#?z-f4azo7`5J9+-6o;e4bIGk`v|3uaJCatp+eP?V{b_G{`b&3_DLe`fHO>;YEPC?}rVePYYr_Mpa+imC zEemrW*G}&fb|^xqudI>27&~)Cw*L$D%T^N-M(~eH(APWcTd8ASO%!J7MsRxe+91cU zKLm9(22kB`{_tZb??$$~zC#&{F=_I`t0TMi3okc2-4n~ah0LzgEht0cP2cF{TATIZ zi_ihwzE1B?bjFSeUlht+A+FCfCkAcRdQpKb()AyEFGEY4MfVGLHI`^(_Z4Bsd?>Oz zuP#9N1KdVZHzI5P$6Goo0(+TvlhyY-m?=eu{htn$dyhq@8B9xwRQ@(&N@=H+fk7_ZB%jHLM~1JZ0!zBfD&QA5Dd9N6KH?7!thAto}6ecz2OQC}lK0?YeJ1hCX8ydu&tvjE4fd~G$57zToli362BmONh}24de}1R^ zoc`Ih*x~)c7>~?korVX=P#wFxdnmG!^IkvqzS$-vIql+Vw@(c?Rqj}})NZUhGJYqB zY5k&jHeHIs2;6`*$~TvBP@tjkq@i&A`&H4axiaMHo}nltqF45`60W#q>MP_1zPbq( zS_k(eH`)7qq}S+RP$y)f`u$C&NGLjB2}n*Cc0!xpVrX#yHq^;BwkOogXp;d=%7Z_@ zHA>OWu3nMT?H3eJTbOu9rUN~y3`2P(6hAyomFpVC~NZGI9fm7Iyp7q26guaZbi4#Z+~wrSmZgag3g4o0<%_Oqqj5kVTh`KgmYf_?z%=b&Bi+B5*0Zw zR!}=$5yP`;m;q&W;-B72l{7`VErh4S{A{{zoEm>r^->@P9vVI{-B521_p@OX=mFSg z*>zfXuP2ph63TWlK!W})5Jdkm|07f(N&?A zUH+;iSA?tzUGcT`Uu{qPN%;L*6>}{mXn9 zdu-NgbWq>;8Pq^Be>AX;WDbfvydGB63@yByTPsaDVR{-T(Zm%1Su^wKLeWe8XeNt%30u9UK4A7CjV}adxb}5 zJ=Dr$$Q?tM?JY{VI;{BNZA-6Q11ol z_rH6`R*1#UBX;KIEFNpv?bjU^8IF61(`Nx^G~xgE@_u*+R2DNs+pE0K{oj{&8Z*Ys z^7c%>oAMT?-%WWd((ixwPCdhxmu=yTHAK@Sy@~wH^=9{EVGA%Z* zvv}7Ti6zoM!ta~HPu#8dg7o`MdM`@7n_GCjuD>=_bOa8)#mvT4MI9&=Rn$?1`#a#2 zelX{UI16{*(3EZ$LRO{J?#o1KMSo!F$c?1Jks^{`lF0mb>geVFm3CAVdBUIui^N3lsSf)(4kc z6zkoEdwbj|SVsv?2V;OH&6r=g!M2gbRmR2(|B*#qC-Mz! z4~xE29V>kMYnFPt+i{B(sH)g+a)U$)2uYj8tD@_O3CMx+hl&j-ztFi!-inBKY59Ru zk5Swl_qtZ=URU!$kL9O;b1Tz>412zstH9ev_B5x^i~gbxfX#*<+rFXPR}!uPbWQ>i z3G?1D^}f-(cS^m#WZv^r@6S~kUe&LLJmW8XTb@jFX4-_u^!=+aE8b9LBz zWwd$rM~WnRR>f@D-0|p~ADx^IYhz5+IK6$lK5V*s${cD?Tt z`TUH?YxTi-GjoIWUT)oI9ky5Ju8He@LvA(>Mt04b>hOhU_kp%q;7@E0ah~_SL^E_V ziHn-e2h`V$gFW#l!Eu63J;cH{8@T$~V$-3u(qvEyxW}LfRD)&?Ys?spj9jhe7vRC53c|NBgu@!oy z>$$l&Jw<6UX3G!oWqeXNMBFn-3gaOk#H?g!fu=TuWsN9Btk+IH-yKv;!jMp_3e1L? zk^^9@+6iq2zrSqqA-LgmN$?6@oCYo20>PB8g`?v`xn_f`u@_mEeuPWexA}Gt;SG6? z0&e|xRAn1xzo8T6w4Ff|oT*(6Y<$Owzp=_ff^=6-8X|{#=zV?V^tR!B6Ss%TwoXn! z>mY8w3Hv|+_kh}UEN#3m3bu>Itxc~z}Af=x%In` zoI1RI_rA_e|AbC#;I8sRoVgE}Pf0D^RGquMZ8P!`3w>MveXeuUK$;tRbLq@&X484H z-AbGNh!m^m>vvyRHzqi5L`g0S_T=A-uf_@Fm)tHoQtWdqMUULnkZ2UPPgj~Z#6_sc zUf$tq%dzpPFYQr$c)!=88opJ@-m*t&!dytA4DEPgm%nu#X0k3X04!?MXX!>rPC77T z?p%#k_CSQ#Rd_gbt+UnJ^DZ6K=WIle-1sHrT|5a+lO>AxR?2u%;_QiPTYQb4v~0IH ztS1efi!araHfgDxmY=&dK{dhRPQw}?lwu!B;obiRs5%lm#sAO7!}R^W@ ztkz0W<@~93r|QnW8N&#GsH$?Wp&x#U)4S}a@T6hUpArWc`5fHvNw~I3VG{gLK=urd z`~1-hmrAx~u%PQ*!DHF7@Y}=OQy^6L3?>UR^6eQOZbPTaodW$G;ci-sTJpMFpyB=e zJRc|4G*v}r_RpzXI=FO)wMV5)rZbTHuGa6!5sFPfC2eaf9CwN4k1bLgAr9r8bP{3r z+Ps-}yiR_d6J4!#AsUNgW?%Da-ytVFkzveO{1wUhVl1zxvb`0*0Cel$)>6ePa|U3= z&+QAXm_)YJWX<7NUlX5`&31qt;VYemL+}~>6xmfg>u{JG!^70`uHcRpB%| zgJKv^PgB(O<*349(K^=asG_pq6&uF^!=HI~u)OGtKw~$IHeb&9GOin~Tv?|sCz25l zLP2X(^XPB)S{pSXKgT(u0Yht6=8RztSb@rK1Wx;ui6lYGa)1nOvKxrNJ<7-ZbMU#b za5la&%CRn27UjmZc$OXjq*58y@yX;==hliy_<2*~+q`wirIfhrQ@LU()q&M+Z9#SJ z=UyK|4Om`5uNQ1&*!izy}lw#`b#ec0dv_ne-(1DAseDoc(FIg7WSp<^8)Cm}m#S2`;Thrk$Ob`*Tb z`8DQYjKy8___tAKp<3+2pAL5B{+)p<6suEZd%xc0SMAfnpzXSs60mOKhMa|+y3XrF z>nuf&zFD`8v3DgIbFVBg2cISNWn?DJhK&7k(|xehr#}+qKe;mb$&b*PD|1e(<<9pd6mFGOwTmb`^b5?XqSP?J~3=zS4?xrRuM)STmKWXT|b(;K+a{RnO6n zyh}A!?1rFeUx}I#8-)!LboZ-OH(XeE0osHx&^bicOOzx--Tvmw&>iv+`Z9FW^R!C* z_~neJ)M`gc5I+$POh07*{B3;u7>35l^Wyu0Jg~=o@~rGzwp*a&2)S1r2W+sZqhM#@#oNUz<e+PWgJDZO zsPP4%Hi7C+FEJ_-Wrlq_2=*qLp7gC&ekD&=3TbEw4Th*sFUk$~(8ejOF`A9mWzK6% z?$~*pNhw-EvFTq7nzvkD3a_K zMkDQ1lGeyLOS7%8^aAPW!qfO+@7^6zGw;FsQLqN^Y`E|jh8{oBhuMMt(4&+X}B0VN2?5k>X<~69tD+&kM7fr6Fg?+ECdy zlY3zVV5Y5{gf7|SO+Y0Z^p$z-c_=SwE9?WM_%-TsWgkr5Xzl%Flh?=3C!or!Je~$P zhbP(%UeKRnQ|6NVN5PRYM_!lHN|UN+9UiZ(tTzF72Nn@98Jzt}4(e>j@^*Cx zvp9jx!>xekRN1z|Cpc)wUh3lxCT(*6%IKAJaqbz#?`#(J_X|bYQ#c%BWpqCEW9P=y z&{+Ht%dLAtM-;2SN5?{9Ouj!KNvuoSzr-vwOO3Dz7s{&;Rm0V%ZR)z0QF5#2_qG>J zd1c4Tw*7>kCPI@csD!+xb-Qu^K47K6!C`6}L&H?G0Qr zfQ?;d%kKvMBEMSu!0r4j!yl%a?ovOisKA`9TUrgrx#uZsk&CYg=Y;iollMlw^hu&>CJ ztqNlUH=#ZQ&BJ()1s;clb5P&_!(HG&keptDA4ftkLkFqe()KtTS3>Tg?%<;6(jCil z32Sj@&?(x&j`s!!w5YKXSN`$;xN{T+H>vE(5n zJ>MAN^{O2ExtJ%U74=SV_L}nLLCdL_Y4>U{F$_2Wm_hf4UKihq1TSdc7q&1vC!K3 z?>jg*aTrWac^{|Y1O1Lc{{SnW?ljy&zGVMRoT_?IF#;50(i5f#K3`wlz{k!qAFI2k zb#M`67)hsFeWHoOgp7&9%`yxl%co^b*~T}KN#d#Xd}U6w`2C1<6)5p!Qr~EBo4x0A zXgG5(mtu{b$-p?MsQ$F+PUCqb$g@E2k;(6kXW6#eonA1E4epWm`M{w1@?X#3o)WTG zMYiQ)aS@m;PUBioK#Od2x)h-|P$HwHKl=VJ(%uC;s_JU|o(VHB!QcrPG%Cud!I!8g zQD_MS$-o58z(k{m${#%#DG z7w*dBM0WH^?Z^xJ(vFDt3+Vvsz&MZ9z9>p}d>@73ZpFK#H zETj7h;0utFhq)tZgf?X7~Z9SgwV5UM`rQdIm@u5 z^WpuF@pd|wFFlwy>#B_Rnx`1srO>4OTReAwjCbM>GTv$ z6uXU*4+58n2$FS})DK%9MzJ$h?8v^XxHR43oqP=(#d(~Ree4#a)zW^B(6jMv$aqJs zEyw|&^wxfxWYJ7{KT>OF88P49RI;8T4*`C-3b~sZ_=3tH!myT*^~RBpC|Xu@m_)^* zc%nGHV%|^omnM1kd9-_12yoEo5N40!cFooSr71^eRbam<#o`<7r(|8dm!~LX&^_=q zs>g)fBsIiW=~QAi~>hw{W5KC(I~^PI^ob^bf(j(6aRliqTs(FgK_|=@%)1eA!b1QTv-4 z(vPURss%<|2LS(4u0hPg*_IADFAjZY^|vG15Rag>A+Xe{q zW6LDDRmksBNl1CGR_UUyi7JLp06GPz&gCvhJWd7&f>0`+bq?$l7nl@LwKqghI^2*L zI{_+jjEIV_8!efE?Nb=ddi!1L)RQ~q59a#}A>zYk7WU91^<~3?fS7*E1mb6?3W#5j z9|I*WBIoKv`}7I0f<$g8>j`UIoQ-;ke1Dj|GbVwJW;9t3o+KvGazsa&IjQN0p&OzD zB=-QdBx2zHD$5rR8}DS>f)RS8O^ThRw#Pu}5P{O~jGvxjwy?=Z^3f!BoxkhkFC`n& zk1-d??2ND4-b>%(Bn4%v?dAxC6_feOq<^>`aD8mu0!y_F4Gj~}LqZWg)aYx){!7#F zJvQWM5qY{xAH-+tQpC&IK4m?jxYJ%I9J(<-E7cinZMTStQWODK$=Y=3=RM$4l0^D+ zCkglz+otnBM!~i+B%{pHuEIiUs=^{HWHMUm+9+BnA{HSIjqwf?_%n6tVsQhk$Y4=`sIi(|Ub6Pe^nGl#s&V9t@bgYQb@o#> z_PPD^bA%*wz9XNY@B;6XS=3JJad|kJz67hueFMRTwNBslEHZ*Pbj?H_9S0OD%G#-Z&hIUG)OSRIO4! z67q4l^ggYB?@s7}+f4N)W{*md`4wYd!m}yu*4~mR&D@oL#13 z$Jub+PWe66wO)GFdWiutJxNJ()u2G+awLddUHPdmDEuZ{=eW)~kFk$+`0^3zvqbW9 z$f6~EBQ!7TTqgZfo~Zky9^{KXPfmRuw7$lHMqG$z3LY+3jwu+xz#Eo>6nHpR#D(*8 zV~)ZNldapISgnENl66n;Gd17-pnHDn#%(_P_3n3B4|@Rc;8Z0L2nchsAY3UR%;*GR z@Zlf~KMVx=CC~xd;q8Ca-JWXyt?u{lwV&<(79rd%42C6_dtc5DX}SbD?*ZS2?kpnD zsw_v7rAKcB&-IMhPqL$RG0sGQ*A|_Oc%UWXj4#&8?~WVypCdO(ug9~2c}u-^Y&pD{ zE4Ptta5XwjmkmLFMSPx~{Vt~V69ps3>Zt%yNqw}1vLcb_ z#zj7RIrJr8J0#ziQcO24MkrBgo&C7T_s~NJ!jAS(18{NDtGV3wId>;g(^S3mK=e{Y zjVTQSwWjs&E8t9#sv!WJq~7Lyoq$X3TxmBx+7&%tW}Mc)kF^yMRV|4^n_0Var`+O5 zZL+`NRKwK(s+!m`1@~)R^M}xvr6C_@6H)}Dh8{svzWqec`SSlh|N8v!{1ar|sE!b! zEHRSPB~FI1v2FbE%07FC+PJ_z`^`9EYkRGmJ`zH5e6`N3i4@9qf>P^uBIQ2tp}Zhx z?Sy)oMawdosfr#hSAISsFZP@sYCNKM_Gll&%n{pPm~DTzYQky%yu;d86V1x|9teE_ zp?iL0;poEW_uzpStt^L-GXveyBm?~)#7bwNyKARE-Q^q3|9<)Jh>8EPe9aNce@E>5 zet80XWWgVwEq+S;pj+Wa$Ta?bMuZBZ3S%lVg(Jot7C#aDjj9022?;AR@Zead7d=F- z+WY^z$aS2)45E{Ni&>0@0%&2ETvhl$R<1fhuLINauNuv!GgGxBD2pSs?<96(xLfph zq|__2;7xLtz5gIJ{qF~ga+TDi?)g*;dDr@gT;a$5fjsd^501xvP!~c!#}p#;aI!Ps zo&7Hn&lnUo>iiByhku9vcb9+hyX7fc?vzDx?Kv9V-R;@_ZAU0Cnlf$waQW}z>#S@g z-^Z7ry$2Z9-S7W5eC^x*eSGz#|1saEfB)f)e4l=Ml&?8L`SSl(-ieP8m==!gV4D_V z=6JqV`x(WE&?U-tVjIudDKc1EP_m(xkZ2p-1M6aJ{G@bF5#>oKo{pUN$2G06i+==^ z!3U1WUdE2OH(VH5__9(*#Pihj){V|_+WI1(o$)qPiY=lHD`tIkItm6a-7Pv(k!D4E z2^$NBG8PojF;}-m9}C5sQN6`=^m-o+&3T05TuLxFUY0)lm@arkKAwTRjjJM4u1g8% zif?jc{G1ILb>in#p0oJLly>9iD3ZIOJtBT~W$}Yw@5ogYwFlyluR;Mh_}Qt&pC`+g z6Hwk(NM$U=t5s89YCmcHQWy^5-1-+31v1EESV$j`+@k5_k$El3-g0W|W-N}52kq<3 zJ$?AxLF66sJC%ik@~>JuXX{+=m+W3}*d>2ZQ5LqO~&lA(+AP@wxQuRR>6Li6C%p~tx=k$K?H@HN%NTrK~qDYV|%5?XsW zK804n=M6`~=gG~8@U5O3VIH^rD92Tqx^|BUrY>WvRS0e(ip7TUV4yjNZXIdBd z6dd9n`yd*F#Ga_-7p@}{`nw*r_yd6%!MY0Bts*OA(J>yFJDJ<3UFbM$blIS1c-h8d zd%pV9Lzr>&RE5lp3FsjchKjB^z`BF2eBPuBTH@DK)VXWlx2@v%oaj8=xN{UtHhK*{ zpmc(5*;+DX+2UU7a-jwlP*YCj-V8_>3PHr_T{%jHH0b!3g?w5cs}`J6bt!LP#Z4Vi6X58_--NJa3Rg#T8HINxtl{2*+s!>Lb% zeW$%Zv-?!se>rY+p*qh)#$)XdyBG8@{>sJ|iTdc;uo)oN9CvL_*k~aFHeUYYwI#Q6 z%*W`6Z6+w=sj&^sw*siKLBXH?7=mjRWaVYbJ zd)uVKUKrQ^Q~jR*R9-xR{>%6L|MK1cU%sPi{zv$#kNCYSo{HFguo{Yv7GV=MbqkC8 z!IITA+cS)EtO_fxwxl(FpnUPo&waxU3d{QEyTopoZxSe7d%9sRURv#1;t9w-e!#Ci zAbu?IjzRN}$3y5WrefD|%B)qOI<72oA1DSp6RuKi|p_m>B24pd9~8&vJ% zsI+s>wmy`So4^2fiM8oz7Op+XdQh<1{QF@aPow8czoi16(=K~WLq zVr!iFsg|B}H6NV!%#b@cHq^~OGDGI@ZeF<3IACOelJVr+9=x7{vq>;!+`P3h`!;sKan7NPf;Pc$B#r5MsC)1;@OpkyY{=6ueC+sW^u2_F4Z2 z6^M%!#P?Ys^A6X)+)tgvOpi3HtmeW-hHN$GV%bjIXvrQp_L^+SX73*bKn8CO^i;p zPl>x65m}Yrjel(HgUM#l@3!CWh9O=*0ua34V(F;Kh#_)*e?0;=2fogZr}j$09RxJy z)bCI+e1>o_=q{Q1=W}FFucY$j7NI*O+=E}} zPPnzC6vhvEqNC!6`a~~{AIjB|B60gwyZI>{9_>NU=)?}}anQf}rR=^TVsPwdq8 z&GyNmnsu&fh}AB3<0^(DJHTnnHrEyBqxpm3!x;7R3u%W3_2%+BfmAu;Rq9^X-}@EGf7Y%W>b z-imS=aB=*BIXklxqeN*0&rEMg^~)1J_`7|^`*a^re(tJ%t9qqOZ#fGd*GsoTZ~b< zbKI2zg-yWD-1-p&e}k$K;=1J`Ign_H2aH5UT`-`ejS=|6Iu#%6G zPa(54Onr+kw|6Qjnu$4Ar7YN>>f}A*yf;ee|FMd$l+`{HT?)aRX|+1v{%ZBhCjWut zg3Bca<=(Z7Z7UBus%18@Gz?9D z#0Si)&W^4!F2j5F>Fqmbj|pr4;D)4~Rv|MnyE%7m%6mQhgB9bfP|Y{oh3=Yn=VY_& zv=t)8FeN#jO`1L4^5N6g;>x2HY;{Bq++sa>ygEk6#C7&>_4qC{w*%q`HMv7SYVyA5 z9>h{EsL+cWboV;F_&qM%`O6=&-00t(%@I6psSG8q2sZQ%=h;%yrhJ7KkvF}EF;~uR zYKfluDziXlHM}ds^0b#b$Zx@MuoJTM7QX9l4vgA!i2;64o5#94q*<(QaU0!lr`1NK zc)W6->*Ug7Cm5UNJ+f+B(*Q*O$Ci`ZdaDW zMXkCv;Vr!;tx`(&&-HSsXwFUIP3m)U9XZG3PQX(A8pXKgrj3T!2))<9SLHP|_BCa4 z8~B3r^LzDkF#VK*!TW%`a;Pn#Lpove1pzozvt6JK8(h4%OE0#FmflMpe0zp6sgctt zvQ&{sYTyhhe&)c-_%S|TpWe8YP#$!*I88t2E(oE^`{IX=nny(J)lB_>np4Y8rJ9nA zI#o{qDeF$&)oRLY85JUwqR|pIh8@C=r@Oyp*l=yz&x`drAj^F2vamH_p)*FV=9~Sb z3~wtL(&FP;A}p^*V_i+<)0C>Q$$DDVb}$qBo4TGV{p$e~zMntkZ7o{V{gt+4`nTFE z^A81#*7&x;f%w+J)!fMu?avzN{wg)U!wD9!*!`8UkBAy{ySRmo)O{$S`}9&hU)7-d z;~x($U4It^^unO11oAW}`y_};jXhubS@W?XkJ3^p_R0dkv42)Wx_A8Jan<|Jng1hL z&;n?mSM8O&3j@ZQAc67%rTZ4;lUes?v&uKoGyk!^^ozxLc5eH7v)Wtgr7L>P0>6yw zJj6WRuSeePY_B1Wj7hM8()9q=BzAY>bJ+)U!otqdZmQq7gZY-vg;5iTXgJAFfWg$% zLgL`g;(mk*qcQhAI=EbTd3@`*joX4|-uVHrh2}!+`sh{3Of1ah7mM6qg-!1zV%dze zhDxt!t>S1!{7%?Bu*JtXKaG7uDNifXnwHo_h1e_*N%-ld4&+E^1EX+X?%YA#inReM zAWRlx;*UNaPEFx#+Bw<-dw>G-p+B)Urt38aq{G@hVq(rtK0r8^g;6&r?*ohq?G;Z| zfRU?=)Q3wO<_@WpJLQN8#K}(YU$FG0y~0g8>k;vWQsL6qqbHETAcGW0Y$YB4_SUMj zSoz{sA3om1$9Tu!dB>;^p%%XK&6U1~Kl-DA>epPe;lYu4TLb1~H`hRN6skT{nrLmM zK?36JKW0(0@EnZ^Sy>uxta^KJx5U(ZH0EHOP{FK8^c9hnC3Mx;(Qu3qrXo*&mb%P$J*!#s9?lPWuGmcNo zCD?efBae?*lRgu4paiy7A;M~jVZ5a#N>DoJ3p1Y*Hp1owgR~{OZ{yCOIX%<9C3Wc_ zWB)1ZjaKeDdoh>5p`Qg#*$^}?ElhtVh&Bg)E%a(m_S;8cZ9=oiX&#?}Rj!Nea~%2x z(hA7uyr0A{eA`;ZQp73!+Xy}ZCzy~Q-!VArnP>e`e8RO`Jw+<+fYu+HKIu|yh3WI? z1g{}uP-}XybV$sKv!Mg=0otE+q4rrfbXVQPy=`AJ>Ehc5x0U+`<1*SgxxrhxUmv0v zN!-e}Pn1!mA7fuZ|8@o!njf#2m9}I(!8TjL8B3<+di9 z$&K21fqP$RM^x9AcwZg?rQ{upDQ+Zq*It}52)ws4n^Ce<#J@5xMN*hg2n#iz2JblN z(h@g==&#aZ%{HbC;KNrWAwL{|Iq4#DYKcGa zMbu>>jKkJ9i3ttC54@Wb=j<-su-eh{&|K_OIL&wh6Jf8TC&rt7)>oVjAoC?;Mxlco zJSV_T@nea193R_bzt!S>mroEExu^okrIGja6cCG0B;O=^F&&U}or^%ovXV!o%9|Lc z4exWj0;amQF`OFmJg;Jb2@pAQ1<#@QZg=}?#d?!lXh*P4E!I)arXLKz@< zZ=wL97BcCV6-dM05bJsT+f4L)WzznZR0I+!tRx)#^E59fY_!Bg%G3B+l;;4!FDXVB zV27V-$*Af~zvKCY2vD-2BolZ|2GkJ-LK{C_cB)j1S8BtKJj;CofFPu6iG-T-&q-q; zv=&^QyziVV<^p5bc7Ex39Y5KwC5F%nUBv{OloDZM$WuzZn&L~`ZE$`{OfoHi0oQyDXsfeAc_4W@jJu0yi z83~U6g3B)%hW&b^n3BK_@|Kn)BzO<;=UnPw!Ay<4g-p&!aM>fo<5Hb zS*IfN#Ydg4C1z4XdXBIoW7vBod>*T?Doe2UNqN6ezO{HC;935q$MGJR9yZ6`MoQq) zaHJh?A6S@qLEpf%N}PvfTX<+FRq!@uC@t}zPaW9>LCI!@GBqB#WR6epB?31L{cUZ@ z1^%T{Ib3?t_zuge0?ky z1Z2Ob8IWMM0;IeE^Ljtx%9TtskxZhTzjNB zp#7%No)$7WGOp^JpQmKqSA{ZdlO_Y|x*Yo%1mq2Y;x7X61G$T7Xf83y4n_jYf5T`7 zvd+s_1)X{MwNyQ`9yUZkd4?>d<_oaQBb8t>erFxZJHCm_4I*1OkzEg~F> zoSIvaAdtsD$QC~c>1_;Xzpn=$o3M8kt{zusJO!A6Y0lo^lllrdBBrWWu|U zFdE#SQQV<2Vx#F(pw5ryONOzTae}%$p3MSmN^CN$4{PIFl`ow(esfy3f-(AS#v;yn zaX%%a{hCRN*XJ~sXI%DYDrb5q%>b@;cO?($i}=GBGq`e3${nGa{jO@%k;MU(SuGN; zf_zu{+-$M>BWiDP>db;pKhiz0hMbyLh~!=z8raWy7~^*((x$Kh!Q`Z|pZ3bt9IKB_k03RCFz)A^yqWK*OiK(YD}`ultQl3OVH+ z%>AUemHLc|LE?1DN!iML=CHQpA|Devx3v}z&sQq^vk(+>o7jz>WnAeeJ8@KeE~BCl z`OAq8x3K26ZPZdAa%a#EV6=aQ{6_@w z-g>696ef?R6Ue}WICMuiLe?EVq$P|evUAA1El+RQ>tR41r1-pkzB~Aq~Hn152Dk&&Y8dY*xQv>IwBJC;f-_8)7YGHd7g-6V8*x`wP z<}rx(ACA1$HVN_jX1!*yqgzM9sp*~L9l{!B-=M^%?_=ajsuV%Xe`Itj3QK=*Kxqs` zVCy=;)=&!BpJI<-5hC{Cj&by^V0NHk8~W=8s58t4ACfy_d)S=#jUM?Np72Gb(GWt# z51G;P@~anp>$nqzsUkYX!6AvlPqIu%CTXlDH^Tcled!K&h zr2L>nE~&lXTLj8{ZYFN9Jd)X16UH81{CTkWU(w@@HSL?>#?2l$^M23bF$My_#BUpR zdLdjcJIHf))K2_Xuer|AJNYE5)S7w{xkj&P;b5c)Iuv%N?au?ohr`frXFRsc>faZNGKYEPrKWLhQ`3du6`1zbufmgM|N+AC+xwgwYkMvNhA z0u9@-G_S@SvbHj^M=Q>gLx9d%WmvUuO6oo}L&fx*Pc?5o&+f+q#n2TI2Ij#l?<0Y& z5N%1JS>UW@imht#a`I?PX1KqTEJaDqN&9)wmmcEi1^*Uzx{)bis!%WO(C(hZ^kJU| zd$^sU(R)MkZcakIY{X{g(Z{m==-_(y;3&O#08=BZPo@o@;)=`DrVN)-WZ_db%}S~=_1^Z zbTP|WeUh>X9yW(v^grU%v+%B{ZtHXZ`(%*$|8@ysS^o_5b>p2YV28IwHEx|W-2 z^axMM`hc-Ys}=Q?nl@FXPI_Blj9BTrNV1CXtjt=H>(jr7+l9@a6?B;qOAcfDJFJ#| zf_XL{uvtQ^-VcVT?)GPzqA}h;N?S3yZk4-?z?`)M)4W)3aRMvr!gRYhkU9|;#KL7J zk3k}LboW5ZB)KBYrT5#)GQpc7PjP5Uc~1slbB5bEX&?`2mR*=xC!8P5V%b~!!u!& zdZmAteNc#=_-^`P-qlFl=j1MQq(CjPkoRH{|E_-4?Mj_=9q0)dlL}>`_YeicTHRSW zmBwxX>KK3uD4xn@M3$$X8iJ>G+RlZio^5<#KPtJm17=#H1;Cea^)d%er=2bd3l z0kuZz4Qa2QyPsW3_+w5ux50Vx@N^1$G(;qRdv1R50aoGci{gnJq623cRfilnn#+YL zwlKIX%B*ZLoGGERkIkCaUB_gyyp5;$6`bjP>pR(j#k|Jx4PsJd2Br^@x`< zzis%~%gR4E;C{m?+If&)Nzlfn-z*cZ*F5o{OXapV{%1S(0A^Huf~ww5G-xJ>xT^4?=I|N$e!D6$R@rMvS*F6sUnS_2Z%ny~URc5k@U1qW}v4Nw-F<(vt7BK^7p_cV4o)&{8g6ppuv?Xh8 zuIq73=kpbhLZfL)AH!x4>%t<$u~t^I5kn-X@Yr)b-2aS+_s}({xC_SNCv(!@u2v2* z>$xCyDXAI^c%%jsJr>ILD0wzu(S)CgWuv1#7GT(k; z1skhkjzg7u7Ajq(B}d9P1)Ni54+tkydFP5MSNb`T z3pR?Kf_3WQJmI7RFDQa-r7FNu>{j8gygJ940xcEFkk$g6*%+4r8od8_S%f03*yc9T zNlejVJE%T?SaekNm|;%HMFbUvj(|wfrng;YjWJvlVxzSizNS=PtowiE1nZJZ-J%Dr zq@C&m!?HF-)BB2)iwI-{g!4YnTZ@87X;cVcav4ma3V>u?j5f?BJaU>=dpFgDB4U0D zuNGcJ*_%~O!`Xu@5s6K<(vf65ZV|9A;v4sQK3ZMocE$R^9$TPw5NBM1Xw{1if3;M} z&2WR_)|v6G-xBmazEOO8?LhS+Ood4q9=a^OUCv`BJ%B$HEc`a3e1F6#&XpGb<$${d zvt%LOLxY?EQlUt@>Hrj=yFap0G|jy;n*+FD((R389wb70X{(kLH9CG^w3c{|hfw70 z>awFoYe^@j=-7vpbB{MEKMwrW3y*S-)+56O6Iw#dkESjG?N-yXO3>0rH0PH{20a&0 z%o*lD=^L7M^62k0zUzC}Sxi^JRUBv;~xyFeBk24{p0uG4j_lnAd>H z-G_*v_NhjrI-W`XuTRNV!^XMkJyA+aT;RUT$5Cr~rXS^?`T>NR(F=1W||RZD6UQBe7(N7B)1Tx`}%dKjC{&`9T@)*#rpM$CS%oB%8c> zeRN{A1V@G4?&wZ&b(SyDe%0f^N^kJVQQwV%5*}rE(lfzScf|s2dK;C4+GAw=fl~S& zHio9TlYR?=Oa&>Q*LNX4etFVOqMa43EVp%fwA?z)|+oFcLfkz&n}x8efGhPgEe zod|mQ3UJaVkyWHTbL@*JLu#pljk=+t?jMEhD}%kLN2|Xei^7?-dM_OSlD|+(d=#DA z2!>RnzQY=QA6Ip0^v@lt(Z$l}b7}}~&#^vS09}{^e@-Is6%UiSiT`3lD3Svx;u$wg z(%3kZ5hapN#XjpQr=lNGM(}qjbp@6R2TAA1Tu)7F!em2PXufpy!o4BmM>xO-OV{4z z3*nw;bl7QJ%`1$)c5lZL#j>FX4duiqk=O%Qvnl?uo9K4}B$H`4HcI7}7KZ*uiPgg& zD&8N2n%T_3?=383V6m)WzY@nd{uJtusv#AI z8b0*~i~*JIZvxeKxyA-4?ISQ4S>nW>Py7@hD&d8_DvUz*rHk?__=E2bv!H-k&-L;+ zfT?&{Y%gjF30EH{1M~uwDi{ND6G*(pucv;jR?~NcSwO@2N|#4DOP?S+qoO`yOX5)k z9PydDh6MIZ@SJP?m!xtwSU#!gAbTk-*3!;&oTb$6M4-Jv45zWH(71twe~ZQc<_4TN zjn~^6@?$qaYT?L6EXnFZ5B3gKO`-zEP7-(G!uTiLR?vdkfX$J5sUd#Q&#-sM;(j?N zbAz;Lz4or?na2tNlAO)R*Cy+a>Wggp*q_S4;AbHh{)$}@e&VwRJ?soqVGukPFg%PG z>58Sv0qdHb&fc$}fJyPvaOsb_QCP3pp*|HKaytL&<}6a0vU1Ns!H)InL*ze7Ad_S3 zpE-FS$mYcjR#X(@5Xb(>;)pk5C#EQaiin~dFtAwXDfg^khqk0Q9M2F&hO=7U5LGH= z$P%r`OBr!?Q(eOv`4jIrSG)J`l5Y0<`yb`ABbpyAD9(8@G!5Vvq@= zjvMP|!~PSD#`<0C7i@5^N0G{17eCNv{*CeaYTP<{2XpIhuS9sti8ofq4~&~Xm9*T( z+b2-C7g-3`H^01LTW<^>eH*|MOwjeq6Q6iPSiwEI*_Q%F? z%5&1*Z0&nT#u7==wN!@NZpQZxbTD2l!Rs*~b~<_@X{|hyY}VZi=_KS=`koqrLPeI! zN42741JePTURol3R784=lS>h=RQkO-&yYIL&epjd`ca_cH{dwT*?r{Hlk!L4o=1eH zeY&=CQk5tJW^l*Z zE_5#q(JD+gNEjG4YPXV8yE0 z{T!P_dM+#vk5Mf#5*13USqLdYPAO7uFf_RHzjvie^$#I<9&jEt3Sq*QZ75of!&d5;Mm zlwAcK7Hj{6Ww!uJRwlh4B9x=4q4=R3Cn{;s*cac2Q7)LeDKVphJ0!Ns{(j-|{(x7P z!(Q0u1cw!L{-sG!bPmi$gbga-?d7MI2LBMF1Nz8^l z1+FNXNuHpwU!ugBuPNkG!pethg(F+lA>wj!QlTHgAUTHT3RD5Y!fXHdCWxL=Ze4a8 z2WJI76xvXPpu7duVY93%gztUB&R!V4`?#&WOj1GiD7Err$SsEv6!aBr_mzuSS`aq> zR&>35Qs~Dox##>4%uO~u+ohvK|veh^$)knOvq)bgngq+yOPDt7b4^Jr$*gv_vC~&8mR$S0Os~ zS|*B?Y$ycccXi~<3TU@fcFfXlX5mCT89T`Qpr6Z%3 zOY`_}Ivt_#H`1PN-4J7<6jM^#gOc_k2M&^O<-8(Ptd17)K(ND`iV8!4 zV6T=0m`28aRi4`9=|x%f5Er^x?+C%BV!e;9SIpFr8xG5JURR!I&pgUuo5Kd;vn^cw z$4)jxkjl<%Mu)bh$>^BXQ18pyX+$r316ByjtJz&k38cTGcqS)05RMkDvL4_tQ;X}T zd{9z5ZkW9UW^KvQNc{Pyu~Hg4s$`Dkm((M_Ps!oW1h=&*=yF|lRgi$Qabk=@)Oeo# zi3i7{#2mQ}OA+(Pir*x}GuNXnnaX*`qolC6VTZ3_8!g<~tKnlGvz7Wd!v+LyEMgOm zmR2-&m)YuoitsJk?Q7WT3%b`prW5kyYrpRIzVd!l_q$KtbGzSr%X=T^eWIDyo89`+ zb=T5X72WG|s$4Ag#pe+Cto1g$HPyZY;3LA&SM)ms5Ok(_R!gf##TL`Ygq*42j zf!KlmAiBA1bo3p2XCVGLPL&jO=IIO2;l~6(t`YyKR^t4FV z%SWRu1dHuZz(vmEmi9hmS`4t#KZc3g>7eX_p=U3*mKr4qrkaT-R2WxeCy~Ad?+q}Is zp2?jjQdvS`J;b>mqK|#F5{;_QXF2~DiMY@5S9{=1{_2m8ubtKpdMoIi*bqCKIPcsw z$N|js|MF1|`c@w}TT4DIIn8Kq(6`^?T$UsrzxLhCDcc5}ps}B${1D{yw^BReVA*JP zV!^k)yZTrCjXSRE6t-vXmN|v!L0%kYRx9_DXJR7B_v^F*1dvy~3?0^*Gox=G0z)s8%Pq z4S77AE@kB-6Y;eFmR6?uu?HfVLU$ha&Y>? z9IIjR8gtr!99VzF(U3hPXT5kUY^4wIm(&-(&(2+RNc@0nQ4x1_20A6@W5976uX&UB z6Xk3)@Rc?$#`?P>ElQtE*iOFLDFZuhYYr>!2UUV?A1;~4;WQKVS06YOJuR3Ty!2?= zMOM<1zvLm9n$AMDA$l|UCV^s&U%Uv`#JAR$RY#`;QyMm(*pGs#No1>!4NJ}UvHYK2 zy*SSmJF$9kKUZvE_2Q#BBUimxb4O34kr)ocoi#`tQIKQ?>%C1%4`@=YH*vKewH~8t zIa<}?lUkz7o0^*NJUeqzpN12Bro;Jy!HDaQjS@HogDz4*+qS*r_bF}Ds37cFlIa+6hv|Cn- zlrx)3MVM`rZ&kt4>#)csrJ?w09OXWY?UAE!FxzQGL%FnaS^WS$;d6>HI9gOL<05yx zTh?E3aQVq)5K1kwF+4C`vY~XNcK`d-6kqtTiyhnm>6q1ef%Y=k%DKFj^>U0@kRqop z8>DVnVarl<_)Pj(sVAb;&Qzs`xqZFx8W9f&sa;=^sl4GmNpLm}+;ATttok__IN*%7 zFv5Bt$s=r@H2gldYrGMBO@~1IXyPJ$iqKpbJ!`xXer?qF=0t%A>@GO)0M7a+3aWV- z?VvlVF|*S95FM~XBuK|5pT!6#huR40GzI=VS~xde8-A&DNWMaJMz;1WWO%MsKel_*A+gpKV}ZC^mNyZGt?1VHBgXJRPli0KQg zpb+@BP-GM9kLTo5E3gk1{3>J?JT%&KLTugTunFaE&0VWg>x4n05LzG2;upJqv#vptpyL{9t;S4;Cz{q{I!WCdaav|yc;w0jXoSXa47>JmT3x|V19L+zTeI`d ztlsaBp04ANBv|_BdZ)-AwYsWISDv@X6Z^N_QfcfAXmx$U#sLX@^W2uGFK*?En|rz$ zGbv|sM7TjE-y|Kvkqsg)U{3}g^&Qsv^@88%owCOE7EQsHkj;aHf@H?<>1aU^@Vo3w zrFzEwIF4+eq1CbWNh|Zx)d&1h%t{Ar)v900UlxQtb}zmFhq7H`_p?5Q6qN-K zs|Yp6hW5nR#pgI3y)Y0zG(38G808Joi1WP6q;T;85pKwTNZPTkzJU){1E}orO~+ml zgjEd!>On&2P(=?ymnp%y>n)e>R}(jypIF3gYb zKWFi6rSl77H^mPjtUkw=_#rlt{vlaRj|d;Kba51hw;H)sFCwQ*xSO>5o5}r|#=9-$ zA_7n^_n)SE$*zi7w%RG)VoX7gDqD(4!)F-`wUX2X9Az2XUK!z#ZOasM1Y4o_g`!Kl ztjgD9+!k$;{nKB;_ZX@OO_OD zwvZEpY_0hj7bP|M5T)YZBK=*=SI$v8K_Nt%ePe|{t|bC|(C)9`FK5r(n})Ej84_eH0~_fy4tyi$enKACXc)sh@LQ5q{@8e6dLV=I{CTZ|gP9S3>w{W-D8 zV&wT96wpjc#LLm_OHda1rxWxc%%wxp*;& zaLzw z<~|f#DXaR?Sx7o271{YMeWWp`A&}vc@X+^PL>U+_3I)^m3oRMoJ=?P!_H60Z>cxAt zL=E|c*XoYF#JtLfCC55*k)$S66bB`4q!%y)zSm&|T$t(ogTSSq;A0X5K= zejY~B*5rvEr>yGCc_G>!b3UlN0J1t%Gn+dSiX=L4(I!Pm-P9&FG%+&G){&34(wF5j z!woH$u8(4cGL}aL3~Zdez5FpR-=&cJFL3yMy$V{0t9+1bzjjN)WLhO z0C(s)NXhHwo{rRgc5_12?wGe_FKR;d!h%C*v%|}C2=}9bojJPG1x_?e_ z*m%o+i44&wAD4E0Y!y%XJU+5M{Di9P2XzCt`Lc7w3X9?#mR%v#d+SdT@GD9uOM{FL zJlhXz2)p+;dx~M>Y3nq&GfX1+0Sl4r9~DY3^8vQM{iKL;>^D-T=Lk2$6!)+}La7J- zN+~U|9r{Si9}f1I)$mC6JBwFyMLHsj!?;b)9y$mEU&m2ogqYuy>OOM~RFcTkxpcYho_H%1IiLVJjgXd$lJ0ZH#7j3b(LF>?U8L%%$)omDhT}x$=I}WqA^kH z7RY9;-#YXKt38`^tSv6r%+fXTQy$QQ^;|M%ZDuI6CE=oRs-DsMG11FQ+E!MRg_9Yd zbACJiaUUV}1?MITEJ;1UjM#X9Lo;R2T+JcL8GC1$i(mU3VH4AIR`mp_jt|MBKNSTF zFqFwdZrUTxk^MMTf6S`!wgT{UmSoinG|{CPab3%itYAeTx_Db4zRF$P(Xcf?S0tOl zhHVA8t-)OG`7$Pa6)fGZ-G4pPIpv*ps~F$+)(2B}cC;jlzM=y8C+f>=!}z+IHopOG)^7{z*`xv)qlOv7;t zK$(@U!hE`vL2;!g^2FAS>3tf1{VqWydxb$zV%ya0Ug`w_fHah?-{={v7tx7q0!3uo zHo2QxQ1LK%Xo1>Gb80W_rB?ei(vb_<1yQ;;t_@@gtYGbu1BJ2k0&<^5Z@0b4$Xn}QuM~~J~4;H-j076raX^Yl2`U;8mkNeV^I#PnRMH*daP$a z^uLZQvymtY9vVn)rBVR{6XkI0&oczNhl-w3P`*_3PhjlSdM@iHT92p5I(M*xOhP{~ za3bll(sR;>bHywpb=4$@`F7oD{7R0WQCUR-ZYp|^QeoutS<}^Lacv#>;9W|E$#S+4 zS2$n(DK|(SbC|l~6?H{tyS4~T$0zHJ&rx>fpBFN=*rTj(Udd!uh*+LgwIncnx2hGl zcwN!K=k!NHXsAZE>1ZT%eR?Q8yMvm=zThCzMKc*scQYxm|+gUpAa;ZnMFNVOro zHb;(U&)M1~T@z-A*6DY~>3wM~vbs)2hy_5n{w%{c%b1Nf2K8j;r8qg5BYR05&r%1- zOa6g^GX7dZVuNKZt@+D^6nfTEm6M(?->J-J-G35g_h=6skkzXnu&&@!CT;WD)5s6e zW6ekdIBd|_7LK&99L8(lA`WMSBMq`mY&2RoUL`qJ6(Y=}PhKXoty7q1w^Z!Q8Fkdy zcyp@KrgdPmh6xS`A%VDbYM^>ypUl}J@JBUAfe)HL9iTl@j|VIMWb<&OdQD~yI*XB4 z6fAwF=s~JjI15?m8e?;=HCDuf`P0$owD}i>BCCXP`3Zk%G>WlcR% zfax3gWUMLPhv^~SasK>`=ERJ#uJ{Z6QS&x;?KF=c$N%bu9=|JE2;<|jE9o*qEz-+c z492ltb|beQVy1Ysy!IxK-<*gyeUw3dwDt;*-}+NbfEBl+)N4hxz|UTluH1I>B{mh4 zNj76<(LulU@=pZ3Rf1b~n0riVwzpN(G9__fsT>{8WESQ|@rBr@d2PFCs*0B;qd_))^D=HddYI>nf^tbwaadGBUK6gkM(+lB>^a+1L4~ALJPo)_X8^vl_-L>MRoCww9TleY4!#;T|Ud2a~Z{Rtpt76HaDi7z` z;DDU{aU3umjNxz{G|UlBNv(hKHC5tI`Az~nJeSQJsr^s>Y?AS(HB2!pb{jM3hKiYj z*OufylIRjo*OE91%B?Dt-jsTE;3n$f*FuAHoJC zZ(dJ6#iv(}qy}q>T&0pysj~=ipp3sfd=ppAA+t9OVtp8tQm=tA71QSaBoJT3xx?pm z^L9^m-S4XRLioQ^@0a*tXX|zPAY=}2N+3Dq<5oQnpfxvrc8OBWvE6lyD#_+i2o-^sfQ(d zYK44O>vB?IyY1gfC#XFGs7va_e2@t880Q4n{o{BDwDb`c;)o-XNspK^*zmJXHK7oykWOq*S;`V*hJU3mFBtE(< z6ADT_EbZv2mleHqo9FOFAMLDsmU=$imSYk|Dlf9U=&2PtIU%SzWUZ8%e2=xS zkeO$w+c()feG_R?kGw2#npzZC(re-BM$#e;0a%Zyf}9S74YdjYhUrY#sjamq`ajR z_aRM$7#NLwiKw2oBxP7=AI+c$F0YuQGl~R1;#{Ix=wQ9tDWh1Uk*t+BGpQ1dq>C)p z(|;8dD3%7Swbh8B?9OWUOE3?o{c!4K7v)eC$XCTvu=E8XWi27${1`7ugRZaV2W3E5 zm^C-7x}Nw05Q>s)zurauPF-#A_f2ZNid%WSCtI~lgl7Cyzg%<)Sdsx5pBnK`cGs+M z>Q7QKT>2+zE{cCu(#Hb~VkSS8#@1!7av`PRyvbym94YuGd1mlBIW=OR^)HkzyTSCZ z>GFaMr;*&u-?X^f)4`$qbhkY?TTq;aC#O97v?ab#ePbVMOUm7&#=B#iD~N6HX78Q=^txE0v^5^~l3ABbe4tQ9hI!K{Vbcp5ZZUn9r%7ZOC$po^uHdJd=5mvBnu3#L@5U`o}ar`&DjIhg#~l767{Yl-uzB+%mKg&C=qT;U`n z(wqRmBCQ%Y{pZqv8WaBQ-Q&r(ZLjCRtn)xmDP%G|UbrXaXgW0X<|6D3QwKAq(YF@d8C;8H*Zm(pYFGQ2M- zB+m?pd_gcj<2#vF{^h%w;-ltj$tR`i>{9%l62G`!U~yVEbU)W;gS02{~oJ)lP{TEJm8G zHcyS3qt*qv)Nc#(cE|=eq?e@!g$uu|OG(b%rwZy&IQ|Ve$w$USvTWv1f{b2DEhpHW zS!8B<(vwMB?kacr5i(^69i%F>XOX%YgfLVJN zkb{LTJqxtFgW+1bh19Kt0(jvk+WqYmpU@WE+1nGf;Z{BhAT$e=G8+WdVN(ek>>KF_ zex%E|Oo@1&C7Yt@7PWe)X=JFiLr!d|MP^omgcZ(KmK1`RWjx%$60+H&zIq)?oFsw`5>0A_h(tsKnA-a5`kJYS48@zMO=ZV zW@@V7p5%txcV)ST{jtc=*KOt$f^&+5h}Y9AAaY8eAD zXyxOJq5{H}k$}!yB2FVXh~OJhVeFrZv1CxCIKzKt{S4@d^7}pKwxwVsgI}C-Pver2 z&e*jzy9-5YPI=8Dgz`x*gPZoVCbhDZcMBn|9A*hx9?Vx9LVa4qfv^R;gK)!jd)Q3X^PCK*e?8(dc_@LSNeS+U2|mXe#x=L`atIwzMqdxjkqksi3g@D+0ZE<752KI%-7#8sBBs%>%%!YaFiRsJ{ z@t62i`AfXlLlQ07fYz0CS;t{vVtAD|8>dO_aty`MG0Wj*GDa7%TOecf_X#Rj@@8h0&?vjZjsj9n$H_545kh4?{Zp@L-vsMUj{jD)HTXspv#L z$tIEZz$Ii({{tq`+0~n~wKa`bT}=#>3~JOA)_ZpXGjA_7Mu}XH-w@s>R$uaq=~wAV zD&8noTF6Y?2H5|a#7Za8#&lYjKG`qHthn1J9vhk1afF#ONA7QvHDs@I2bGn4f^WuM z)0D4-%;z3vHRr~7qSV7qW+I>|JN`BXg`K)f{ru_8{|m5iO&qQj&dBCm^Iv6f(sk{i`yBXt9(tlhp)O%xf6XC@+iU^5Ht%Ty_v`L0shpPaWEU2o&3gdO+DGRQ zLwsw8iupX7IM{D#@u<+ayV2fYz5W#Iiwd5dJ?v#CxWRn7e8(nSVXT$YLXq~sMJuI4 zhna<^2^+|oh5G=t>X|{%iB3Orqn<7<{SoCfb=qy)A0-p6l3ZATBf7-CpUQ4H{^ejn zvMQ?w_|d$0a}ds+nD$S{e%jvTLIRIoW_;A;3SYA$)83wO@<-YTEojus&isNPc_l!5 z0f+0@o`P8dqvNNid8>E&q6Hx$%S)O%ceq@IVgt5st%+IK#9aoj_#g9X?`>kGSqUmK zJx&EZN?{A*7~&C@T=7Pk3FQz{W!_ddrkus6S?>y2u>-c+y5&hE-8~rbQmm*Ct%fo@ zY2o@SDGr^URNjcC{}G;5LfE{sN;f{V?&(ah7V>0$!9d%&j!)#b99`waznMY_KU`ICVpzH35)-=cC^XJcBGmcHlj^XTeFV#e(X?x34nR4Scp& zvUBeVuoq?jONb6SS}KM#sEi4;5QN?244-n8hpjg03BiaaM`Zmca)q? z#Pa7vj5S9-{!{Ki$S5~v&3o9FJHGSfkW)rwE!m*Vz*52?3^>iw^PM3F;WK}qr491} zP63abe{B3SKPT1Z9j)w*IsxKy5mZ%K>&4#*XFQg&O5$?H)FEZbQnOq3Vu;*TQojr% zH*5H7MbF8v@lw%K>UW#0MDobK1*h$B7#K|y=r1i)X*^XQS1i0d49a+~%HV`|U*nyPRlGP+o-$FUV zoLnJanF5Zm`mVjS#P8z+kYFI0P{qeXPCf)$bw`G%R&o*hm#GINBWs9f z2)`H}%7=5E1WOcWxQININT_lLbaSQT+ZWVcyjvauHG+k5mWH3=3%+(mHE&a2UB_R0 zfSOz&$XG*E?c*?voE+qll6{B~QXk!FtmBRv3b!}NU(B!(agqZtaY^&y+Wmg)EfNGp zo7vNBRP_l<5XDe|aj$~mc~$(xz*4DA;i;~MCk_WWwM5-ba!^Q!j)QJ$mZugkuu%Qb zw7V{xflZYDHaoiMTKS2wNB=?)(ffZMj?Jh(sgz56o0&D!2sf zrUtHG^u>lD?%RW$Iv%4AdpU@~alB*$n~?E(e{L^0l%I_UB{S;k>Z}Qzl**eTQ7HXxU=jwS)ZW=K$w^!trri= zB^Nwy5|WL{g3ONW77LLnW9{%!Z))oG;`WPKb;@krm^_<=*_{d3lW@IWS{OaidROIr z^*JiG{w^q|l4tp~Yg7Rv-~Kn#0}&in?m!H<{ZoS*Y)||Xwl-J!gm#;(5J0A`bUDeO zeY*($AChQ)pn}vRD$VKYv0OW+8H)N-+!|gwVQ6%qLt9%iQ#q({=TMiHu%)kr?=cBYLysGxE5d(x$y0p;FkfCC^bTN2!6`rhSQ{8tBEyikH||$6XW`Q z-Yn%%fR)7i4zge8mo*{>UIhAbS6hEVLf`@{d$?fZ)^CtKja7i*K-yOlMQhDnEdv1g zY_Yx~kDj_51b-0qr_?kDO$}XTK2ez%rQFr_d)75npZ2P5Xc}dk8-Rog9G(mo&(KDLD-4XqE+D_ZrzPNm^0XtWAU=oufJ1N-0tfI zB#!`xIrv7ziJf}!*LvwDYzL@`yQ~LG1$PsC_+g%Pe1T%Tiv<>a%mhNKB;`pw z=ee~(TjHw4jcP9kX|8dX^^H!EaA6ab2fW;+T>4)0O1=1iQl_oq5~-Q{93t<@pw;Nb z@MoN+t|zctXY(QVZtG})zJ^+M=5(bf}H(-%HM{mfi-Ek1*4TCx=a$S?nl-; z0x2NQr<@aA-g@%k|BtzM0gtLW7yf6G8IoXN2Stb|GT2}~^0trD20R<8f2&lM+%^gj`E%X1q zYtJMBd(Qv+p67r5&!-QWz4yAkYpr*^>s{}9FHj)jAu`HG7++(3$mpusVsY&3?&@W29Dd&G)6YCTVD_EW{Mu@v|Bqc|OfIq3HYp zXRDO7)Y<{h)S>1Y21P_D#ln`Bic+tR?bVG+2~y6`s6)zL?X~x5&1-Mdn)i1FKc%?l zwe`|8?;8aTQeE8Eyi^P&2kundG!(T&&(6b_+#<@{FtEZisbRTVbN1$Q zx&O6uHy?)F4)n(^7QW&>T!qMy9+`&u{a*0+WyL`4F;~1Gykvv*XJPkcgRRS9fu94%dO z6HT@zu8>v`mVTnhs`(n@5;FDzq7ui-d>YN>20;`bgcX}Y|NSW9a?Vj2UyRn>IIKK{ zSXsz`(y$cQbnq|A$x3%f3z)GQ89D~t#ScUHNHF%ItYkeF0m)A*TA;`7%H!TxzWTPa z;=IRMOCjH>pf+QN;wH`38>EErmCn1egU)w#?>pAzh!M>%!~HUmF6-Aq<4^Jiq4YKf zo$G}BO_h&l=p<7&0&xg>(tJtYRSKR)I;hVDtJo5PXWy!OJAyqbg7Tn638UvCr<*lv zeJFLkBn=$1$=;_*%xrH+G5pzs`Zwcz83~NHm%tAX`~9$nG6x~UqTdx2V)BL>)?xGH zWKMI=u$Ue7D`PSrJCsWs+Ph2q4|%M=+$X=fn9HgFj43O)WS1CQ(z`!YKRz}&RL560 zmXQYW>Zt!?e{yz#&U8KeOWL!+aqbFwcUw`Ix##_JWYW}xF>@R-73cXjo%mGksz|kP z0VLCI&l_;FGB?6mnpxl#^85X#n>qacV{bSySyW66U1VQRru2>BLL-M_}fDxZDhe}9o( zE+8tmQ_bdez-9eT2<Lj0s7Oe(mbHu;_KT5k3SK6!Q7bpalAr_G zVvb^sxxf6v-*R200-r?nJbeulNVY!E{BL-IejQUsj5{{|fG|1NNb4FV^6I0t?;+BZU5 z{(vw$@nJVsfRdFX|4cB@!LxqaB}w9d zocbe^y+n04PmRhf*DmMIspk#~cMEEW(2U-96#g?0{xf^$Rb=zu<=t4St?9-|K;=GV z9jQ2}fbjviDwmdi-@8HW_IH)PkR#?;wu#tXguAY>L~O`xb$Mz|iw4T#OW>Fi>AO#u z4)aU!7LxZ}II`i8WU0;Gd72R`5+ja?;780Gg#+0;=px^5yvtr(bFgqM^@nj~$mLx? z4hdj(DGfQ2e=GO~X{jG`!Q%jV-+dyUUq|ZB-xbUwm0kZY?+#9`P# z(R2;(Jw^@p`0qt-qdnUwxlzY0J+GNtXhylX{7OfIe{KMIYN?;_DV>Kq+jb^)b!tz~ zqaCg8UjF){r@xBAV20dqeyFV|cJqlN&scpygYVf7icx4EPeKR^tG$TdDx~-v1Z^1c z%SZ(P-`jZ}@UWnH-RrWox~W1WyRcQfcq@4r7!N`vw~k8)p+JR+ain)MT%K^Ge=H_8 zl9gK5@WU;$cAF`jEsXcb_}ok%;eh^QT@Up;JlON$J?6vk96w47p72+t)#^_?zjiQ+ zTHS_WbgA}3t!^z3QrhTTLlHOvJaNMmqm%0_Ca?4H zf?E&(2nVsS(|tXkMK2_uYhhgrHZiRmCF+9FtgQ+Z+*18^u9$n2bT)K8R8X>~q=27W zxK?xNF;{_6c1EO^u7W++6zooPv~@PwDDmi)$mU%g@_)HORC%I~1ncj-_uqedU46ij zcu7Ey9>yi5_)Ni3S)rOUWRIRs_y78$KvR~(q&B0nrsmZjJu`gC1Z5%F>3)z50dJR; z(b0wl%%YPb3NNfKo)|88ziIb@fPn%Ya`ND7|9IQ}uV**fVt!5McDLJ_)VZ;1EJ;T9dqVLgeJf^Qg46(~Ml5HC47avwHbc3Ip`2Y%l6acJ zEi;luve;%?zwB(b^!|`aIfWesYxM@h^NDSY0B);R*p>AY|kgn4>5vX4Oa` zWQs&|uVJu#L)n12;J{mS&g|At&Hi5;$DU=p{{qyHxPW|Ct!;srH&#HAB) z*twni9S~S}h+t0_PZ#J5nj9N{d^4zQ5cb`7WYK1%-@}Z%h!lFrCF*Vb^X*!c6c9~zB5rxGV9v zX^cyjo=#!}`rqmEvo@_NoOVVVT*mgm_@;LbJNt|s#=y`h{6=*7k>udGrBcC#m~U$jao@Cfkfz;^QXE`Ywqu~N zV5@9;jVH$e{dlj$K8cUq>TM6k|Mr{Gr@I3wAe?pc%YF*{`E#QY*+ z7j4+m>&JP)m;e`Cq?Je-j>f6R*Bm+0X<9=%-JjzlSnUBlhW69aaUG4cOyH_LiCrC! zUK+W?K=!AvUWHdjp0^ibcnO&mSo$HZ(fY(^{}gTIwu@Z$ai?r zN3G>&)U%)+zS{m@2VUCYoZpY1WoO`_jxrfv4|}0)cIX1(L5P!u%A1XTjfXS+(KZhR z*{Qtakx?ZCv_O~NcSd`5D=3rsd=&v~=gj;)VGvr8BE1S2|ucVv`bZ3ju(W(Ga{7Uwelk>yNjFa|Wwz_{W>qKK# z(>LRAFYyN|mW}|@L1#jUieOI**n^;H($=11Oz0u@yu^(pP3l&-h6K@j)Q0q2FzfCi z6Nh8}>xgWsY^VahJ=${~0T&m<&b~U_hR>(XfOh*)>+$pQDpx!@a$>giV9&mD_R_{^ zW6_G?Vz@PI1*fw9(r9X>qzW`uT67(LQ%5KdQ`z> zIC< zw;C$qGYO$L?QDg2OE5kMHT1n_h^bW%?%-&8+6Ec+C zFem8Sy$I&`!(~2yjO&VU!9CV*mHT=EX0R8oW5_Bu*r*%wwaCB;GZHTuqB98dOe|jMDnQ_VkLMKD`b8R;{%W&Pe4}eknG|FkIDw_ zK+e8!jDs=?4};1vy@hYfjtuK#UP*D)TPdZ=Q!a5QOI+Ap!8VR1EH)HIVFZqu-TQ@+ z<3r*m^2oSf7(I1i)lK%C&JavXpWq_)3cppjc)pLs>ahap*g83C56Fa@mEKhUY`sS$ zLF+HVDuO&XmX@jZ_L)^QYyGT$MSBFXjU(poB=^f00!-QoBOHnkdzT0fj3 zB|&JT1m!XYNxD)b9WR9M(@Akyb8%II7QuQal*&~y0r&HUWg-4s&&TGB>YFFfjmMl5 z!US6;bmgZ3Z?BA-1mIe)J@*zOVmXxg4NGo<+})gFujkU2+qK=Py`?t*9ew6!WQ0u; zN{`>wa_1f~_x+1#{TrWJb*KSz?S}p%Q6=)t?<y7$Nqs4({nKM4C-Dm~T zmjF~oLHJU-kx#9N+HvJN>BH4Vq0^z(uvJL*O!}NpQl|7)R<_YGeCK{_hXPvet z(`b$BUD1={mOQGxvhm>$N~@Ds5l2dz;;PX0Nt?-^*N?D_k6o1Xz4i7&)yA<$UzzuK=P*~9RMspmP=3$&O63vob20MJEFpP`~u>)hZc`_Ji*A33>O8h|8ZR5BS zNBNBdt+n4vkB7yLHm7T}hDxXuyAm!VGjK?;=A!5U!chCP<)dH%VcJmw7i@a)*i9kl zCT->9QSrNx%x5irN4xXbmvoE<{!sQSh^ls`^^AdT16`$~MNK_2HG5LFF&ZH+y z2oGY1c}m-XIn6h#*;$!K4#=Ex5_d6nkgvog)Fvc&ULp=NPe@TD8}h2haSS5;#gM5K z7mEP%KESXgCQkDi^GbF0mX>Kls)f--PXS_rK8}3xNLqH#*P=y#NY$|jLBv5q9t9V` zvGp$Vns3UDxway%RF8z@zXSn_N<$dAOPuWc$scsKSbvH3W@*bW0BXd7SE*rfJ&n>D zchmwxz$i`}hN)FAoac%YUFo;LisFRCF_K&Tc@hkP07%Wes}KQ-&0D>c9{GJu0c~2l zKl*ldLdBBD2L|k`_~wZ2)wl}2O!McQC|_~8+~}iVJLTT>j2GRN5h_-?)BnQSB(g@f zRx5+2&|iDv{l1vwQ-Rxw<}r{)o6x%Qq{(#kwyx zf54Ay3j~&EVMv#LJy?nIOOM$%3^a)k(+PV#_N<2m16@q}W5u%%6^pR@D1|}5$TfuTN23FLnUt2z_01%;?+D#HOWUWJt z<^}+4E}!qG1az#QQ1K}npppqu8VJ^qofG@=FhAwKPeoddmB=yeC)9^$K(-N~&Z%Q1 zy@Se$>j>%yA&^-h1Sda6;Jxsd1&d(f8j#-b&7Ac$HLxqM7ZQF{cYYf59e&uS#}slz zn(W+0lbQcMBNrd`Ecs9vQImT>&8#^Mri_%Zq&#&lPDHYBY>M-zi)g->@Ctsd0u{RE zL@#P5Lf_A+=M*zZJ=aJ*n+GqaYUw*3(uq17F!lzF!}1b9;7CvM%v)*x9?E@!=;+H5 zCAwKNUZVa)P>ry?;)MdLr3ltYzdg)aX@fo9#fevBbCQ{nDG>B1Wsgt%LcYe`mypdS zpn^azseMdP8=2I5Db!Ye0HGo_l3!0h1cgHqQ>YZk?gcW1^@$Zynu`{8H|QGtkW9Yv zA($%rm-nQse4_#>dwGA^d(LfHgub$JzyhYxZn++_D=AnkRS1vVh1|_<`3wD}x2glh zpi)n&Qc_83W&Vazi3?Q$xf4?C_n`d4Q!w`De^l}x0ZZ-uejyN`%&gUxDKY@-VT)yP zy{ya#3h^#d4JH=IR+kq<#%RV+pqJzz_PLRrw)LS^C`s}qd|1$zVy zYEj*>*7hGh(b`pa+o9MW)e$td1VS*gFc>Sxpo@^Jil@?zw~+33h^Ez5L<0_L)7Noy z5kBMQmMpf)^0~TE&JrpwL|Hct61sNpnZM127o#4j4|`8hWHfj)%Cpgm7G&-=SERFe zza&{C9fe73*6CnSeEMw^`3BDSy2DvPP(s)pa0OjfbsOPtQ8r7qy|aAhRs~9NDZQ5y zG-v5R!8c^a5i|x0mZH-0+=qg9wFSRp%q4*=wFULOn6o*jFtpM#(9`tsHB?iTkoc&g zRk|akTsaBN05xiQ{KpP5%cTSgcA?lR8AEoiig>~0=Feo0W|46B(u@UT$a?~NLwbxv z0Oip=K_@b+_e?{buJHvY@k+i1PX9v9L-ZWwH-@8^n(2P3*Shhs7!AeU_AGxaU1btj zAy{t7sSSwfKk+W4U;c-Hq-LE|(LAX;ahPAZ=xN1lJWI}jIpWsdHejBFE5NJ6Ly38$_5wi8dokR)=2D=|*O=XZ-Ntr1Dl0cUq( z7PbVkX9|J9)X#S`@&Pu@^5w_rFX1oh_0H6Pp~_7}pcy$re?8e}|A+eW2Dxy3y*l-u zGHG{ipcXF4Z=)q{ppmd|ADDN187aofo4Kblr}K!YJB;Lm0DQ%Eg0bGbmZ$rS zCKU*U>Ju-s0PZwSm?Gqww6!?@K2h3kR#u;Md>wvk9 zM76RzFzOvNzK#0Y^w0)hOOGjo+@QxU5={(Zo#{PWLz7zc@$GWo?d;=KAAelWX%E$H zh!Do9Ih%V48nN5_iEl&XnDx@628q)wQM8J;5T=tMMakkI!<(tCY@{oqBWm7;9u&0s zzUBd4=xYT`v8I7Wjr=+&1d$&pTEu8?VRC{*^1d%6{_G|b-w6I9;a+=%;5Im4%?jsm zhKZcudZjs7pYD~uCfzGNmUnABH$%a{QLj558A7pa%anu9TT+9iRQtu0VH@zBF#nU` z4mrDU99C!zU6Dc=q*T84FkQQVpjQXjAyfM@`;gcnf)>SsC-}1E8cZU&NpP<4g!0;k zQtidoKyd@c^^Jk?oAC+n*IsOtr4gvz9N7}^HVFFl(mKWh7`rK3P_{nv@4})QO`>*E z*T8rwO?|pg=RrGRv>0t~prAwkn7EvMpn93ejAe_#5C6*HMD;?0gxd%~TmseU@9g9F zt>?^M*I{)@$8X9D;}!x-NXGJnd;sk!bkNw?a9{|LYvEwu?a<#jK+uawm$gl@?ZOr$ z&3UH%;V7~5U6T%pHl2GSMg=Hgtuckh9t{-5+f))7p1s>MyD!* z^(3&1v?ml_>_k+z2nRDInC+u1gHEC-ZNbBcjSO{OWb)4Q^W&Nbi-8nl8r=&6G}D#i;N?tek#4_1moV*eFwBB zB~CX+9M+|ZS&-;bBXp-!fjtOpC*6GbO>U8|#zQjLC9@g}tn=van6Em+D9M5e#{sV zS~7!-;V)<_m-2vQc?(~W+&jW^tCwbS5@}TLE}ov2F}2B1;tb1DTa~A+`htw@{Kgi% zG&f~i!?cw+Q{1PhMb1WOi&k4hsrkO+k&guO1Ok?%gsGIKHg3F3?-uCtr~z#P+lkpB%031F2W*ZKeY&>FkF`_9)*8 z;oP6=$&L1N1l`;%dSfErnh@hNTK|QQC^W37)5m zLtI!xq_{T_e^RP2wpe@aw08q+?HjXf%S1nD^?Ef`T9^6b-;;XC&TF;Nt}ODgk@7W# zaaY)cV$LHU1S{LIyk{2y`!W6$Q~V7=Fg9SJxc0v0SQb)kXS1BStB%sf6lpkoIM_+$+a*E^M17;?ZcY?a3!?6(|3vOG8V4LauaxJGk?Q$3@*KZd ztcjcNwB-$_vCb%>7g%FUM5a9c5nlqRV(x{@K~rM$x+~Q~S+*(Xb%`Gb%l3dCyJmuv zyE7E~*{l4<%1a=q?B3<2CC+e(uC4wJ_o|4ISC;!RdB!9CL{5lj0E$EV!x)9RFTsb3 zJkQW8pD3!AgVdVw{L$R9d0`0l7b<l5mcC4XCAVID_F*CG`zyDKB+eztN+clji5- zcpG=ON}r9Wz+=4zh%N;pw5wFeB)@)`s@#^+QueL}Ihr-kQpG<+Dr~b<;xcP{f9Duh zS@zN}ox32~>kNNKkDks9FF?}hVdE&#jblu(a{C{|0lkQmTg_2`A^u=`&xrLh*}q_q z&h1hWqci<{(BL@~Xa$2n6OsYFP*dH(RLeYjK%S2k#Mc8ceSo4St!@3)#b%YTjDc5m z*a^3z9w3XVdbd=c>hduL*X}a$+GYOS>s}Tsy6{BB1{q}~N29p~4s*vvG=whSLYNE5 z2c1*X1Xp==u3(bLKeBB{F2+a50aj;AuDE-LY&?>-1{k45t^%Y1D@b!W9Qo#As3%G) z#^JRx=Vt9}E@#}g00Ce*5|2=Vu)d|tGMy=t+0IS1Z?mv6=hu-Hk_Ta#lbzTA0^Bt~ zsLf5hb6VGIqjd4`z+iIOW)CWUwBi##`3aU+{X-}79GhE2oOl)qdWU18?(Jl7TI0nd z$zfK~nV({>`02yaXNb($L%c$08X|jAmB!q^qyQhjXt>)+RO5%AL-jH28ML&i?2lwf zuV^6-;R~AC>I`=!xy9E8t2uV@(_})W(h2h)ANvF^fD*r-!Px8af$sCvoQ_i@$ z?>>ANib`N>nIbxpdR$WV3#Ekebl{hRbg3RwFEp&x{x7LVG`qjgLrgbg3%gk4B23cb zOFtBV4dwG7U~F7I>qEU&C6UV5Ep@Rq{IzGhfAvP*6`(cyt9cAz7_-TlBFxY8riRN} zfizTy0l5VPG@~OxMNwHa#{;~;DiL!GyZ38Wg1|}h5%??fc`}->g74-l{E1Hd#rHv+ z@csDWKr~#IH(!N#)gEF>rZKpDG-l-^QOzS}ba?8d2BWN4;mV*XTvMZ9#4b4Pfu%yZ zdxXC;+93ibTijD=Bx(J-0yw-{CZq@T3qAV!_bBQJ53e7=`k0hlBWx}Gj4hhQTF}iR zV6|dt{IGs)(*QyK8AM$P>w5eClAC7kE0(Xd+RaT0sC;Ub1poJF_(+; zBj(oc&_cT&UzD#LOQk5dU(p2ty9tkfZdnCt|dE`~6EG6A9 zm7~@ytyUX?-=0uxvRV?=Q$F}NRrZ8ddr+t>X5%cQv)c04pee}wFW}#udHlK0!|YO# zDBW-@m?zE`sPg`TS!Pt-a7e^mm~D`G*srKlA@h4wqP)Fc{17~eD0fp7j4*@IkKo)l za$%o|9^#^5gj7jp0qj%%N(sHDDG8gT*X(nkpwDp|l7t?+U&-tzC11OOZmlMt!*oMC zrAm*S+W>t z6sJLs>>OS~lNvC>z|jKlM@4eJP)1cW?_33D)?aa&nXQ_7yntJf!{#3m1qZd&;euX| znLH`%jT0zEmn0uXooJ{RAA62V(ySKu$NX}JIL#<-sxVHjc4*u@#NGcQ*czYm4-qYB z0fn^{@fk(3|Bcr**i zB&&p#I7xy zQL*nm1H9-k9BQqWC;89XYtB{~-7o!+K_uJIbhf37xYW4n@$17Z{Z9nfO#e-i+?yH)G9I59^iHRj&=19sT%pcgMM4+%~m33~q_C;W|EpJ5VE z0lwANO4h609dYq5z+S`J03s@DO|+<5xC`!In4$Pj)vArTtEoDOIs}V16n`OGzN$4F zbRG!WYr4YNc3b?KE4ZZNI4zW0m?Jir8zMBwPI$v@fOdD%{udfbhf0x?D+%3u$Ku&(Q+xnAfgeYm{o1xP@N-3qtk-F z7YIAZ{`FFrOLfES>9F9DF8+zC5f(i)d_uj%AV|hOQ3d~?`ex7RR~Mz`R3*cg+t!VztWhnb&o_P#nCW|FkEfX`uE1>2AP4=Xnq4>9oEy8+%EngtPI%J<+aZn=% z&?9E!e27DHEK&sZS?GtM&)0>OS&R#YfNt`H&g|d-9_9-q* z<))KMRjBI_J@$ky-cxgMNi)m*5uHHf7+se)Aa3Nip12u?DK?`RIu<5oYvLMSm8x2^ z+$*J6^ice_!W<&?T)|J!Ab|D9X7TR@J&u@#ERxuLMfh!*q!UWM@>6v-#ItR4&ra1H zSw!S7AwSb3HKZYEj-K_`bNFTHZGqsw>s!Z`g0Fz<+&d_UM7h}&;iAh7-iXNCjw}-`$RWovF8ndmk@Kf`p;3PRFN*Rm6CdqCLy>@@>o}xf(^aRRHmDof-r@bliqScB_TsCDHY-m?_h`+nZ z6|UlMb$D7Z`kG?UBbNtTYvc)~prqo}6{jAIza|K+xns9x8y#>Ij_NuNeYb)Hh9H4f z-k~&%8fy0PR+`gE7jJd><#hB@K2WFRlK=cY*aq&)jbz29$&4*iixAmOcT+YaJ98u= zGQyZ_iSErLw5O&bPQ-2m5;s8tk-B)UUQFKy+XAN3Y$tt#!@DnJnZ~&a)3C34SXLN&`u%psHy*K(1YPRq25hIqRBPh>2eua5l zM^sF{A|3uR`fS{t+JmbGRcrz3o+UNd`c!(B%~8-5>+#r(kzib{NXlh@n=#T_pvPgI zIRL>itK6mtxnwWLgMpwN|B{GQ)he~VzkG&E%zj^NLWMr39Vwfa!yK*CCbw`cjr+4W zE)Uw<72T1YH>@j?nx9_6a^n>Lj>~v&`5e2(hQ>qqU=f&w2%7-0wM9QFd1Sk_%+M&!B%Kv>LL^kcd0jG(FBX7xMvP8~LUp zv{r^qR))ncvZ;y?mxHqWZ%^f$7RzLv9zua+tD5kt$X=r*MM9Eggq-^G7qGa@hKLAT zw#Q$6wA%dsJVi}hikgJ~EZYj=y4Yx=U1&m;(1NP)=qa+2!lQ5~hnQIVv*v4xybsX! zj;IzJ78*0NEp}k#+m1PAA?;<>JhbD-3*JN{kd^2EEsT}L;z=&~MI!?L?U z%4<$m(-(V!WWpFsd(Kk)QRf3}Q`ru=nVME= z3@KglXeq7qC*fvt$(8AJqUw_FCs08DJ{zE=)IO^!MmeiHJhZ=!EAgak^ZY69zNaH1 zIu7Asx(Jx7;L(!$_@T`pOX3QP3mB1p&5XgY#UJF}`e3$|XI}%_moAlGffr(8<>p3B z!O^69Jh{b{*d_cbL`TH#&gDfUxX$L7+r=|8{%H!MrP*`2)yR7T1J;vqR2<|=$k@Rhv69Vl9av#>>e2mJ3LOSfhHGvnNSk!%EB@pbqm=?Bn)?$a_K$Fy zr6?!w9UL)L1sfHgD-vF~&->BPMwUMXdk3LeN`8VnTvIqE>YT0Dci-FoSY@`X=G+3b zHmdweWaeKkFl|EjPK&Jrnux+bd1*1a1T zHFT0%InS})j>|Ga#(4XSNcMp;KII;s6!&!eTA^UXDROs^lPl6cUp(zQOp2N~MjqBy z7=a{l8rEgkzegUH!(H~hyi~ve>q3DNr8(K2vkIDAs zufX!}NMUyThHWdjR3Rf?ykd;?3G>r0$viC`*IMS0&kUG3jB#o$D^#yW8K+KEILxPS z5p7j;g;*@s5eEIObWQdlxO&<#p=xLK)sDx;_9bigIb{!H9H)u}fUgP5SDcr|Z!gs2 zcXJwR2*qzNf{%aXo3t5wtWa)UGf|G2Z-X;bdZsi3n$0{~p0v|$+xplzW^9k&F~oaJ zE-)5soe+E;CFTa~Jw4v`EvB=*(aeaCTraSDn~bCJKYtfWg6;**?DYlRk~=;-4`s+L z{blhsaM&|Yo*OamaVptzzHdWVlzZZM?-i#%~xLAw!-k{a~i0{qVHV;{H zH15Yz70(0>Qa_h4ji$%jL$p1W z4%?@}=e-*jY(?7R@b0K-eUL){W~rHx7Z)VG_dnO9sxVG9Zp^4TRe1k%8QOBWd}!S4 zn$%E}ykN&G4(<7dXv5^@_@5V1gIxF6ofe=Dd%VZb@0Ir$@MyJ@sU&(bGdx6b6wUD; z7WF2RHA!5TR%tU&#eevaoVGsBjC3v7Dp1rk&8olLZER_5%cwbNgCTd%jT>aCSEA@j7=K2!0OM0Lb?hjY}cq$??>(lbrWCBMHVfL=)dwT(GwhsLw@L{{~BXX0uy zhT@BeLcRvcUt6L&^)Am}#b1v&&`NL5T0)nX3uem5b?ah)=+H&C( zU%SLnido+)jf>`2i2KFgN{w=^7GYbq9AZ6kEmS0gF5ip`Qv%B_+{?G+S%eKCF@Hr< z2X(mkv~91R#U*Jpfd<3fwjvo&c*JtmH9R46f)!cysd7}APR-QnZlI1}{L3hlUSv1g z-=1pT96PAJJ_^fM4@Y(!aO&}EpobXIY+S?)#=n-Ds_ycw#rP`LqHZz8M@;Yy)rmb zuW1z0Lzr^b&rk_f9&GF#67+5ufcVz{n|P2`&+W+b^7(Ok6RNytWbBU181jmERMD|h z8C8p7-^JF11s<$v77`mW5X1irL3=3XDp0N`V7)4|a_IZ1uWNM@j%@%i)poFlNq1$4 z(j5@tie{?ZQN&%<>R)45M$p@!Ml?qNc}qHZ>KpuB_WMCie=FVe=RebQpxKJjqwIl> zHqgg}Xne?LOt!SzN2xj(?akGm{Su#pQFG8lJ}S9zI~j6RZmL8&Dk!NGGng`v$tJI})`4G#sCqTd2U#J*o?Bvuy zHjq8>q_kV<902M!e6_wa08yRPJj!lmp*$Z`CH(pIjI~2m$XO($1?);6l;TAU5%IIG z_UAL3HcOG_2Ljk5`r!r!8uZz9UoUlkjuDA{_p(?pAC5%ym+ZpE2JfbH1?Ms(@!6xY z;O?v+fsqOiatmUQj5G_ye2|W-Rzj&cY6o8HMJ78x1vSg_4f$5H_9}aXQ#&ZAJLXD; z1=O`SEu(481JY{-{xOJ^3_Qd%k|{E9*k=@4mCDM0vC=@`p`uCh&(T`<60Ckhu%{!0 zvzx?6Lgy;|Bbn0S$d7_G4YIlGWnyA(7RKPV-=sg29 zniQA+!JmZ=jQSNJE9-ihsEU zTl0nsW=*cv>x~umf1-XxX1Sz1DVg1(H6G9X3+;ZLcCDvkeh<1&BlXsD00Qjz1fB1R z4x!n`X7j^Jg};fLWiRPR`CTYAC;mUpU~v!$**WCLNqP8&h262 zulsu_T9<1Jh3-v~r>o`Z^U`$u;#ZNsBqUO4|Cu)ws}`Oq@!M`R#8K}P^-jW0an90D zP(-F433Mh3P|UEzb%OOa=Q8&4P(O>J90(2k|KC7vIW(Zkrt-Z1WBG6}8x9Jl{F~@( zATy{uDxMG>=DnPY?wz#t9wfG6pUjyhD_vg7;0TGs@#^tpRrmbS-lJi@^qPC&CsiwU zu4H{hKL9Q1q~xOA&s7fT9B0lg>gY3xeO|!hKxejes=B#@ZcRL5 zXU(o(m@aM3PuDL^*U#zye*2*BgR52y!a(ic7*zYE6fx{LJkbrFsQJ}s?bh#o0I znw`wie$Zr~vcHpAzfP&mIx%nVXGy? zr_6lw4St1q@#5p z%F0fiy4)XrG_Mw#9lKOiKey5R|9GZuGO1s9I!zl!)mVzr|0BYlp|Bv@S=9+p{F+NwK> zwN;ONkt?N1-AtS{5y2wD#W{uOPIxQ}6@$s}hLRs0=uP_73-hc@v1}I$433MO(tWY) z=*f)mHvBb*KdL!-$4B7@B3-zhEeynl)qVw7d~J)`Mf;{2ZJRc%!rF{s5Aof4UG0ri zA=ANFsVA68D8%^KFF#5NiI`yAa37Dl;l5veDJ?>Yb^Su7Mh4k%->nkIzRVYK02tSk zde3fs{3iACy*(<^4PKS$hU?`AM+r+VrjAQ^5gcCqF@F>`D+hw^uSreuDVM9f`?=h_ z;WqhF(>IG27mxR^zJmPVpK^yZDH*gS8|wDWUa=k_35E(11pb3%+y*_=pwR28+ZB3! zSJ3Nygcawb*GU>pqt~aT|F`J%02$Kgm7*cBi>E#Utg#yk)sNf9k0SY>Si4xZ_0rXp zW{q0^mPjv(*AC&c>6$1^fqCKcKp&s72uRGnckM95a;VC~@t=zQB|0s6^}{G)3)$q| zgG(aKJwW?7a8)j~buKlxlEO(9*=p&^op!cI0rJV(9BKLKYtX~2lBc;Kd;j@U-Q_7S z|I6!13{TV1q_7?R=f}&oMZ3;M!pd~><~o&rjid*SyU^&%i%)Ckys%^f8))?OM7{Do zY&_Okv&?^73er?|SZn2?uYniBpuH2s9}^8AQU3zFuBbm?zloSz{)zRb{wAsNUv=UL zf8%AU?kwt_bjZ3q7=5!r5|?&JIq?T|#GG$8lgfEj&DpnbV^eiSJn(x*{Gqb;!BE43 zrlHQaHU-!Ge#YKMNB#l-5|xLn;ZoO_bLzSatNN-*=%f4|Bt5Sxw6O=O+AL*vkD-Un zDKN$iZg%hByu17R;0{K=l`ZEZJXmmZfMJVyA8#pZ52OP)!Q*<8&*<+eK4K#|^A{yl|mTvfc zhy)F*FhkZ3C5E*O+SY1+NHcOk_SYoOWWfvF4$yc+Dc8zz3GrcgVk}fU&re8kyK)>2 z#&c&H>f4!|$YehzD|QN?TN8}O$*j8We?tbq;;ytPJUseL!7L9xU;Xv(&p5YJ*P?9* zT#w0s#Fw_qj`fsSyaHO}8hpdl^+K-jO=UxjF47*(?l{I~+v?7Tt(6zp3ah!UJE#Q? zt4ogCY1wGRTVwR(*R)zUZy-26z+Z0wBF9p68y?JdaRC^kkMBWuM%$rtHcLo_(-r4 zZyxP_4#o?1Do>)lcoIE5-rF2^?F<<2c)1;wLoA*f;&@DsU)+2GDyMg-rW87f&;hHM zm*Ci+Ot6E?SQRmTYV4ljwpPYXXJ=CXRpa=C2tLmBi4UOUa<(i|?4qcrS{E@;#!`^O zyxJ?`RZ#{|0%Wrob@R@{))=n-+vNKHxONp{isRZn8;)xuatn6RLd`l^D}&@@GKQj1 zCVr#atUWtX7FEc%L8z2HQyUfB|ef7=PYVU>BokJJ8WQ%>;pw0muqVB&c?r_MzwkH8;r#JfPr zprtwQ7W8?I&>Qo(1*2XJ*b05S!vTyn@H)i@y|OPxs@}MFEapS-Z?>b^#ckGa$#+?N zS<(gwj>u*7S%RN|_^nAE*8||)h?xW;ZfmK_@7opryk7Z^5qN=VIyGk54E|oq{dOE_ zUcLD1ebd3;#0Q`;b?B9+{KhuyM=2T$KQr%w@Eh|CeyulD;o*8^a}??_V#(U_cm+B_ zn{e4U7J0IQJ5k112Yi-RyB$m?Yii(Pj8tmQIuGw|EcX$9Z3{W3#R6~4>lk)Dinpoc zcv;2-X?i#AcTBBzqbwK-cMKa&o^qCGX~5_c-?MX51;DP^yBobNyW0Z3ZtWS-?8QD$ za0?}hsoHbf_)uTUtJ>x9?Hcg*80)c0clW*mxd<2BzY~G2`LAO^cTt)nmLqEhE5*(R z67u*rZx?T}0-nCi;gEuBrQi`#FtAwXF+WdHRV0s$c~XHY_)x(-swgSorO3=j>6AAb z*u9Uxv*^I%QuzI*cv+_EFx?H`BVC=6eBd8rwdGd=H^=Z1@iJF`dIA2@Gdj~Nob}5J zcYA-HZvK6mmvq%#dMa1>&xtXGHJpM&@ff_(a>-xR$Dk=|6H$uOo?0T>>j8#sv40W`3#A0shE{uRw zz5Pvl)huMU{B+FX%ctb<6B(bzN|~ggHK2d;qg$_9GE^3lR-3C%@uv!u*K5CV*#A06 z>(E|q4B#odT$_26_@pa2khaBhMZMACcfOstL}(Jjry7m2jXM*Se5&hSs)4;Km(iWL ziJDWdZc;UPuvL5C@_ki%nbED_we_-BK0Bk=*b2jNrXz0Nkt zwe~;H$@QjG-Uiy1cD4yNvqnk<**i_a>j9h&2y+MygUc!qg*d7PxAO$c`B$nv{WLY9 zDkSxpyPE~`5;f_{J%U|S{Xn`xk9ly6!|~;>bh@?eES5H^oxSH+f0dp^x5@IK8eN|m z@SRTJMu_BnOf!qPNbTVxy+F+}eIt?oOpZs+8byRSj5 zMK=-c`rBIFbu9XG@(H(fe!lryUDo;et~)26Bi(M}`R$H8Ctn&uTHXf1Kd0rB%NRS=`gpBp=p2b3af%*5&g&$bASV(UP9MFl@aH&o^zq~l zU#Z6*##VOPSwdU6IAXPk#z8_Z*_1SeBT?e0{etIGUW5%52=Zt$u~3@fB~xBvgW60n z^XB(~a4=u`Q{$jsyEZfYH`B4u4-bm*Bjp3-`-3$ zZla=9#2||6#W3Nd~JaH3IkT@u?4mz`*bMEZ6yp#+`sl}91 zB`nc(Ri7%;pVV>fGpFB}bD0(zzeL9V?2Ic&(>`x~%2Y$t+Br%wR9 zD|%!O!>i5Q5sW6Ys_t#v>vC?vZMI$4U^tfzss8Gx zr|!D{kiN>XV??GH?VPk5wEjl@c~zr2+d78*Y%@!GWB~zLI0`kfwLXWqF~;U}KbmUM zPWOD$Wz@i0N5{t9jmn~5HqTV|?~@zjS$rtsw@{qdsj+Hcw_vPfuN3EXvT2rb+QXEA z+-jiiQ_S?PPV~!&y0EoE3vBj_Q~6=4?~l-T>A8A&sBv#LFBulwWj`vT@L!gVqml3! z)xrCPYU3+F*1I*9?~#1*NrR+GRE|Uq$rR7JvSmUHZ5|VX`1asKWa98C7IJc7_@e$+ z>{C24+nbffT3`jdvh=u6cm;!Nx?dl}JU|AAX_w9w($hTr6;D;2EE4xA*TSuI2_yQ{=q*WSsR^gJCE;r@8Nx&jpzw? z>{S!r$>55{dS!R8a+^{zYa+0zxq3E@AG=B!0`&mr?3@E(x? zF_U>|HVXsmZ28A|!E?tQ!l7J8n($IoF)lSoMOD|Nc%06LJqOY}PWaO9MrY)*U7c_( zjZSMc(l9H|(O+@+yE?#6m;8m>kxSC|H>%TpN8|3M-HCLtutzV7jF2|>=MUnF6gQ@X z03QGftbXQ6hOTq%wRA${Kf<>SAeXk{b>345rq%vkUZU9c$zCEXY26`|EE=p!>bX-w zwuy&uYLhD&Bp7wAJg0Va_WlofQ!Ce}L~~lL1cw~7deye@Rjuyd&d;~#pX8&y1?haY zs86fiJ1AduaiLZxAA)a!KXO>jw0Wzo1My+KNua01C^unWxUf zDRm_!ixiEDz5;Fe8Y)0A={LHKZ9(JhXdk-NzmabPbR4B2`7l7`;! z&1eFRX>~V|SX$kOT<@5(~i5WsPpbQr>GB%vr^4YYNxSBtb zaFQYkS&M^uI1r>4VIt}?8$HoeONqja`{*ejb=fdwDVY95M{I3_HIN=hskXAOUz>AW zLX8t`yht0?s=*E1GHCczwa=!jrH9($`}=!0PD&wLAD^atiO;71FO^E01vM|`%lVX0 zlra;cHYA5F8E&apTP{*Kbw%x8!y-8sUesX|5_`xV`?FmBF!m**2^|~o^=Q!;MG;60 z4gVf$mYj4bPv2JHenieJ~jz?M2bJD9VHi~ zP_{wkIVaLRpokt?wrml9QwIuO*dkQjC8#~fuq_G-*-2(C@xSwtfR%GL4ON34U&zk2 zND1)Y8eG}e&#w$X!7DWhg1X9wQ3JE5+jZ(WpQbCVA6zNk7xtKAq%!GkKSYH!XIs8| zS=JKVRQ(aRL}l5|eweUe8em-r0d!0`GF7@NTV(*w@0}K1CoG=ackEp_Nq4q9e2qQ! z{Q%L+ff^M+hE!w&B;$kk|A9-5J%e+<=U)TIrBKw`W}d!K7WEZ;P%Q1}{sm%h-`vtB zL<#M@&tlhbn_Ucbwt}QmGLQ<0CdZ=65Bd%+8e_iPU$<0qG1ZvQ@X2aH=n@il%x1`I zCeAXEq;s{CIL;$i#5MmW5%`94P26i7Tm8Uw?AD@A178n}a-YRRbSIN5uHy26@6LU$pzVL*IfT zix`dijuG^vopiZH8gNv{ZMI!SY`Ln!_=oP@rf2?9)q+6Q&Gp2xZwf+PkD#7gkh}F* zOy!I%LSVSwKB&P3jTFUWZz3qlVI@O@;skwWk8b=`n&YY+7>_A8L2&vpRk?5b!%T|fb-s5J$4(Ko*T)a3bjV19YsvyuB*@wkYe@nZf#7*f$tNI0KDCCsTMuRo%^ts zJGdD~iLfC9i-|^DD2?Z$9--SIrAbgY_&gkYyfItsCRv|zJOORh4D3tsX3noqfoG#JUj6br(LWVBb;6;`+D&J%W5uWtprZ%sLY!4GHHj-l5l=#*p$m;n6%` zazOx-z!qyWJF-Pw%{FU2N=XDs;zsEO{(guHzU&QJ-8ew55YZ7kAg%_t`eTo{Ui&=5 zMPtp@w_?-9NyNRZ)9&dR&d5=1)pXaS-ub^yRz*IHP0z)Jh7dILr8xY=CJzxNI6LI* zGm}{13ge5{T2fSn=&Hi==SPMG`9!bH#4lufpgqyS<&cT3*l8{LtbCNil*?#|?$@+e zjxE~LV7k@}0oS!xS{7}c@5ibB5J$Mp&ryOq*8u=%SOH+x{MW5Nr&J#vp|gH%RSCGY zJ#mG+7`@u6&Hl#Tyl8TGxUdFp31iJ0IoG__+1xu^>xX=FZ7x{1nDV>$#6DRK8!Y^y(56PdQI=X>(Y$vQvDNZ3j{m zAa0FKMjSI@kZzP7`_rq;X+pOBv;kev_(b78xWpyn`y}i2eZo_TQ3)YTo?IYg*Eo%C zy%u)jH?Higw(8D4qlF{o{&CTd$5lUe#u2`dgQ4>iz4Fdpv1;N9*ZB#AgKNsYE~3SW zHA?IoM-jvv)o-rIQ`J;>qI<{rHZOC25-ZQwUOBo*9xk&VWM7Eg@Gh6A`UK?{!&f9_ zR#kY64f7k#ACD$zp@`H87uy!zFRqk}A?vIVWrYG{qSnf$>lLVZjsg%dBu*N|w z^6{`Wu!XNxsY{?Ws*NP25`J@qIXFaM0H1^=~mzzYOFw zaET|1nEg+#{-e9S+BW2Jij{vl`7yQAT$;(BiBUJ1sxCLY3_^ zv{fVT2>MPf%H{*6#tj*u79U-HVt+;3WsB|hwJe(<3Y6Skv7xUQ66OhdcZuS?DBHpb!~d1QhdLZ zN?<3i)1F$%Q?TZY$ZEev9oYDLbmIv;?H|E?EFSl3x+LeMtrG;#LpeZS?zuI7&5a>v zvclVgtMzj4$Kgx46tX8Fi@U_6OM6a2GZGWGaUWArepcq8eMR}%#PxjcA4#%XFjdW$MZ&YPP@d7K8nP} z6#Y#Ry%b52Vxx&$7X&oqqSdPq`9QL&aC*6F>--6h>Y4+6QvqpM-&84|FA^IAo^f4a zv&axsK+@rnT-$b4>a;$Pza7IKeS^*^jmF0*g@|D}$SLL!`O)i^&b`-qqlN=FTJ1&1 zNQN29MI3TZV@?uhcR{WzMc?-9Tm57FBWU^HQ-SP;sc&`a2M30}lOMRvusOY!C_24^}%I z@3&1+A4kTQXH+MXyW3XFD{d!eHd#Y4PG$Ve{^8x-hK?*yQq2=xJ12gL zirjI^QJea9=^i(2Ru=CV@BkfQ02DzOTZLc^Y7nt6iHe5rDk(jmT>z*J=3O-`xR#( zo?$^ltfb9a_%opm^AsbZ$7>6!B|BnGaEc6qPetN+s1(^|p-0mAQf$QlCSRP!A-z&+ zb>;^?nR79-gbS40Z$dDb+7$IM8w_s7J+D@K0mKH~3GLYo9_st3FNh(VAx_(T4Z?mN z4;t@qU)tcG9rA8oBOS*)@E=fG6usUGq8Qp{eMf!1&p4Xa2&?7BPXxF@V;8YP!xyxa zJFeAMVtMo}Hid_YZn{n4bNkFEuozw+@*a}M*F`^S_;hXM16Mf9S3EEgSGEU(gvG$a z?z)J1Tl}F3j@#lRuY^m@Al&A%XQ;1a>f#qe@qcwz`1WbFOMwi@<-a-`yO5qXWlV4| z%OR9Na=HlT{*tC2Cs2__>~F|ee5BJ_Db_&%CV3FU=*N{05ygO?CqUAXGAkYZXx|0e zvzF@D+3p#cnpOw1TR<^m2!Cc~;XfATCGC`RyLFW?L?}Lo zya%xLdg20DB$Q&cuBVP-GQc@aM<|?Q#OtFt$s@)n7On|B$aW0A@Ja(%A5i}a$O47q)Y#Zc|1Rghf@Ef7{0|l-S z>g;1mcW5{@*Alom&ZX+|qKb|XbKcGld77u2|%B3?W<+Enz ztI6cFmcV3>Be8@G{l=*}8R$Hc^|_m5 zj3PgQ`;w z4r0Nk>ikbZ3lHBa!z#-9GA9VEA`so*2{Mj?33q<(7J1?)E5x?=!g5i7-kEy_@#N>e zJ@*xK4T-l^y;H;7$3^*2zMZ_V2zki`WV^S{W$ehkgAb`h8AWRC;lBIxh7bFxz`*>+ ziI6yzFUjArb&~28!{H`RIjo-`10)l$_}&Q=zUsZj>H`Q6 zS-wC-xu;OPJQpQ4epk8<JcQ-CR8<&7OL-D}F^z-GR!t;Y$aQ((m^=#da(IT& z5`E$#F4QuX8#6tCq9r{ZN-$k4zuRilsa^;gXx5w;*Zq$1FUFr;Qq z(%SXei#H$;&=AR1eUJ(eqQV%GLeDI z(-%jc+9++IVzB}pP4F>;|8Fw*11HXFO{IG0KYKZEf+TjyAI_KMzC}19ta>npy#6t$ zUd5VerDXI4t327jeH&7f4phdSwkN)U{)DCWFqlkCAEf$S(Ch3YsVKK$4UeOm9@R=J zdM{~ND+b-ULhTjxK9a+xlk5=MNML_F96ApW_>~>U*eip5I;bT=F@ka4)nyHh-|AF84$Y%9Sb&CC~-YX|lGsFH>V8 z%$hD?&X;V-N={Gwo^EC&u&`ETCLhftK%3z z56-#3(_4ihkDGZ?e8v8lRz#uEAo}@P%~SOl~43>9tYo)&n3xqSe0Dq>tD78 zZCW+t*xn=uP=XqJ8E`Q`DGSaV2L&QpL7qN02dI3Q0i<|jI>eGypF>Wh_Dz;k7qENr<&aWM?kvf{76 zu-3cR1ft*nr$g%_ctix^N}A)mItfQ#LT(fh6c*7WLmOC`cAKP;UIkJp1~t z&oi{uX~e~BZS=J}J?`6gqZf-<*?p5ln+J9GUGa-!5P@7!jYWs+$xy6O?n}J?ny@cU z?LAoR-Xz;IjI-wXF1zUt5}*b}fQZF>@eLwto4d`usZ8SZ-8;y4PI379I`Ul9XUm0b zI7Oa%B0hA8R2b7=j@gv>c@w1b1H+3ML@74}k3=_M^8$iAck?Heyjv>hLpnIHO4(k> zhe^00*?Z88zNV{NOLcwyS8{vt*QAP3ZW&xcf~8as<(7vAy!+soZFot<>Ay)=lfBv- zL?YGXD_8omzqX5%KG!dO15K{sU21vUmngF`PTpOMDzT#%qFkdQhnuccr(?9Zo)I;p z&%1ALV4L~AKG{r@-guQ3!1mjh*uxW@I{dKAWa-e!i&oMqU-nJ9=m(O0^Dd6gao@go z;7Ued&y&l4$O|H*v^r*+rGe+^)Hvo{vSFH!OKu6)cfP2%0#GvB}JM{FG z$5rmla#DuVOaP~99He!^rP`OC?W&nvjZAW31^D8889C2c^9q%UBiEq63quWo&-L5z zY@;DkJ)v&YD9E-}9wd;*6hN`ri!bjqO1{CXxi)Kfh81X~)Pd(&f#fEmGJF#6tTpoj z(aYy`$bA=sc3;T&4WGeh4J{b^{y?A$z^{#$44=u19g}>LdG-rhacV2Udtrb=s@+R> z4?j=E>}+0qA7ygt3dbK2mHXz$d8fhc&IYSus<)I3s~dBqOfEPt8UBt$l{b0$Ixlvw zCw9H$0IA{a%!Bl&AM;5KfnfJODl&WzbtjiXHDG;v-s;;QaBuz`bya88?i2;uduewn zk@F994#OPT0ZWh5swx}Lz(Ozvd_2BP0g~7;pn1;x5k}nRZ9uUgCeg|w0<$c>&Aqvw zF&JI};YY7rBVA919mbALlWvq3nTX}*^N{?Jr}qZer=xR31#$X&swS#VkX+@74Yz>J z-M62iDg#TgoJ%gF6MGM?j$Vvf{V=+5tRFkG6zC_nbE*@r7E;fhuD-plEt@8NQ409g z5y7HcmAtR_!0KoYcdcDix#ednCIRlvUy=T{DaFHi<8UpvV^clY%Lm0MizE9x5XbyKAkRM_=f@}YJ3Hw zNhh01$?_fQC|uK((yP>GCGT`BoKp#f8iAqeSXeMkq!QSR3rB}RY#=-DExp&}tYP{6 zlYB>b46({7j4h4i0i&oU=qi?hSdORf5iZzKDOF~}?;}|T_*H`wx4pm%*7$9bG6eFemv% zt0`vU)!*u-n8~jS44Bf9QtRZW)2-cRMG^b_>AIkK!90|aTDYZpyrvp785YItuMH!H zTnq zvF43h?X{BO+^5`|A3)&}_%9Kb)fdP=Q|D-bUEkzdc`~Vaa<%<546jyh;?eh}DxE#4 zTGg+lYF`vW45TMu!Vvo=Z&>MdJ?7rDlENsUuv6>jNnWS{F|(FQyW?jluo7x6P0D#V z6)^mhKanZH7_ksaNAAUYU3KdghRUM<(kZwAO~$Y_KGwI})VDD|eN}z(j`d9$o#tfi z6tRoGkHvlM!_vwTCA&9md{1Vp-J+Z5fxh=$(FuL;XGPD(pxx#wI_%l=hbLN-y6Cq| zGyD1ZIm5zl88zTg(e{G*AMdhey(N>E;nYL;KD{Dc9z^wS_%)2rsKeO5mFYTu$DU61Gw0hK9zJF@x?vuKB;Is@}}-^thoX8xQT zOH;3@I{Y081SJhec~G~8YbcSTE<9#Ymy#g)W$+<_f?v~8MK})k)3fkUqdlH0nbE%Z zdzP7%+JQ;GQXFDoe0t-1d~uGHVHW_qDgBpmk7?rVt<=zk1-I>awR2yIz3MCd16P(r z&3hz)uYa}=svZMwzPW!ug#dNBHxl=ef?HN^ykBD28?5b0UZVDm$lno}sN??))iCI8 z{Jq>DCG3zAS%%8RNC_CU$R{dGqL{=VQ$k?uGjK_`IvO?@cu%MQkIXl+)nWfA$tOzu652E* z<8n%-ebejA2f0h4sBgGZU|8*}d{6yBj{P8# zK^fTBcL+)x=IPv%^Onj4$x|+v^swZk(#J)3r}HO>FAR@-*m#4Flh{k+ z*Zr>2>%RNJ_%0Up%@^CVmY`jILzVGeeO$l1=@Nn!DJ_K;-C0SFqAR!$?Tx2i#}L<3 zfABuV1rU7m1qtSeV`0^_rRs z>a4EE;zSC7Lta%5e=F0|wd}a#yEz&}Lxc{WA``_-{5?&Sv6v&IHq0%x^z8P!zw_MX z9KDAT@f6BRFoPa;aSb)?S1hHxv2v;*r%WasDaK&^=dJSRz@K8j?;ZHm*)Fg9N4pou z1f5gsV%~m=p5PdL-}fXc*8uO^{e5NFGAD=g@q{)Kc?PaIT!RL2t@}rBT<(1$iA_v841DVCdna2C zE!CC2>&<_vHvWe9i8u5ZC^9i1?BJ&>Jy%`h5+c^ox3y>um+nklruKjdk!Pu~9C~vB zSCt=@ECABiz4?1N-zZas@%3`qlbsV}SSvZH)cXDFXs2ga@Imj4@@uG7-rx?vw-}veWsTWgsweY#J_ffRU-%2bvS2$C5 z_OkYhxc>FTSFvjd7M{c!87)X`<-}~?oRgzZt30jjPGkvCj4*qEwkOsRPs@ywuX?Vm z4L~n=8f)VB>uwZ5i|ozdHNZ^Wn3sC+A0ZYVcHb2>id+eCKe`#$pquvc z_}ci}3As)7(@n6LxCNo6@8Ac~&c1_RiZ*fl{9xame<$gxx1qKnCTJAL-PXxzbw8bZ z!&eDJ-Ic?IVtFii6VomEc`1dQMW-99;}mAsAaMa@#kZ}zI{9@eXuQ6h8Z zu&)ln?7>EA@@t+eYvMbEu6k7Dluuh1?pU&UdWqk8T`u{M3JLOnXt(LZ?lix3>Vw%3y~JdM7< z6P~-J=T_V!e;cMh&p>^3`_L=ny@BWZ$5(UZ{RM)vrGfVCxCvn@?%{637bU;DlK(AU z4*BH?Kx~(}^CwHlk;foFm2<(vr$6L^hlN(W+13RQA9kt3z4QWC#8{U)+{3U@IvQGc zfr@X!ot*&z*VQtfhC!{>HT%p)G0xp(lTG;0r$; zI)rJcH%#ofAIvL#LxeACLmhhK%XGXeA*YO`5jC5i7Yoz?%~yu1^Pj~u$o%Q_!9Z=^ zWz_?>JVsnBWx|Yn7K6{6@N%(Pp7156B}(M%WX`?tKj<&luep6{6PZ;Hd|h=WI@!ab zIy-QqG7>Iznsg#+_MkIqm#ZqKN&GbE$M(9z1w zAg0sn2*6u}$0U#ckppX|io|#B(DiR|=gz_W>&Fi)c^5rf*PY|N!Nu#JoaZS;4XY-8a_JM~l>;a%3~P!0_9{XWZ5l9X|9Y<9ykSD$p%b{d zJMaLDcWCh6fB3_ThYm7e`!6WnJusni=;f@^U-qggV}Tg%!BW z>p<<&-IeZp_erGcfknGLVzm6Xp$Em(t;)JWYn2P5vSwF&*LJ{apz+GxlEb~_vbD^xu+oj^D!xjVAigCE^{DGOb4@A3mCtr2Fo&15fe>~Xh z9rwLPd|coDx@c|R{w2{9cgmv5hUE+z#3`Wh!oz}pl7u8bL+sbpdUw0;6?v&^pmR6J zvNpUPr+@p;xWhaLu&J09y&+yD#%V<|D`}JCtyH8RE8+1(gPb{@XobU3pj)a&SqU-A zKHMn*{U;%npU!$Tm!X;$L-e?j7?&sItdt9D!Q(ygA@}Vk%Z1#%2QTM_X6TOYS3FxL z&<&R-pM!Th-nHpT%x*l6jZ;O?%yY#LazfU9?~{FR`1=l?*{##O?AbDpG$$pWB}YW% za&v?tD7bya>#p0T&b!$fl9n~Z02V&b6kvysmDC-H=TD&X;}7(6qf=dU9=DFkpj;Sw zQUR?Hvw1ZG zt*F7jp7{7_GAH(W@3{K37eXI<>)K1bF4U>MXe`PV8|+>vIl8P@Y8zn!_Q)|0z5cN&j)UOdH=C%4}eqZ~LR8<0YoXfe6Tsge0E z7TgUdQ}CC+Zy5JL&)cQXzaOh8-noa|eg7qa{qygZcdZw>0tkE|@$c6oCcLZyTRIW} zS+R)GMFpXVt!Q6j>O7bGW>MMeo&WNgc<#+-^OwRo^ieN$c?8j;t<0rl{{6G&5bo_e zJbA-KN~xBZw@g)O5~&Tk`Enrzjd4pv+7UqaZCHyy&TUXp>AK-TSPw zN_>t)z4Ol{jKI}-?#)Be^#i#x38{{s=EB=4t!6lcPjY)v@4+eVP2&L}*%^|`-gq#< z?`3GD=)`?7Y62K{zG0D`|r~}xPWZ?Px}L2?{%l93SzTp;Hm8U*>ojby*;ji z*gJZeVWtj0M%OTRrzm6bq<(>9!&B*N#Lg8I!f~}L@C4Pci2|d|;%#ScifHolX%Nuo za@?g^N$y2LJ$w!;%{Vw-ktMx7IYu<;?YlP5h`oUdf38RAGD0AI|1eCU(Lk_5nc?YJr}0Kkp<|(=<`DPb$lN>76sh zz4@t3tm~bz&L`IJ?R>PE&~ZU}7^9o1^aM zNq(|ke1ch9+g~XpiZB2*i=UElI`pdC^VVP|uFe z`^1||2XaoAvvNQ@|NzalWBf9`ESy5NS-lMElOeC6i%%sP^&uG>1-1?>aS4+?3V%x*eP%_ zvGlp*Bv1beXC1jKF8Q*@eS0nQqVJ7yn;w+&#IP=6N$NB{U5y88OCRP~^mWUKiZUrn zfDb7mnr_~?&$|1*M0r%d_H-B3mvwIKy@2`=FRvb9(%VfeFh8t~-SzIP4devl-+5 z9kv5clIomOJ#)^v%)P0Vsmf!;v7i0)x4vDLld3f6k=% z3H_%i_PF~Yvhv1H*41?FP;lvum&@_=O>%ZYcQ=jm^ygGDY`2IYX?Ui58OSX=kDI^I zvUP8IQD)K|u|v#+or&WOfJ^Jk}%S$Un*pZn%HI(I9h_j#3^6)Qdt^YeaWVe^X# z&8&>WRjlhMSe$#3L3s-Z)wUDN=bbi3xf${cMOXdP1 z&4gj!qNs7%j2~22fep<361#5pao(ZVa(vjujqm8`h;2}!5ReR#`1ON+R1ZU`-We~s zs$IKEcUKEuu=l(Jo8}l_?U=KD;HtZa4rZxq=PqQsAT;tgegBCj+6NZj$u5~JSZ8lh z*JZx0cZSIqQ4;nH+_shexbd*8UDwaN@$h8cu0OYW;HIY`w>-b_5LyA{o33Gk zB`@OR93DKsDCcAHrM|;~>kHZOe#7$%Vag!8huWTEhE{iC;BX#PK z_5N`HHc$GU3y9s-2m8;EYB!0ZP$4EDF!=DGAl(`ef*`YgvfcFH#^x4;Sj9XuYF~mv z*DK%38;1qi^&PmR8;CvaTbxnhZi@a1pZ9?qV|5&y-6(I-Hymp}51hZkNH~*oHXToyi8afK%D?xooLw-FR=3Q5) zwvb9-#;CT1VONa^iGxXXxsn^@?EoBk_zdz2-7x2MIck;q9J9@rQ zO`?eL1xZ1*HdXULd2)H|;p^QuUrz08bx35Toocsr>!y9g&Hza%TZ_ND1>VxkFLG$y72l^va42<_>v6^~{{Ta{ z;as@}xA!tbpR7q-h8nR3mSIqxs_SqE4|*KCU*rrt2Rvf=)G2FNj8%|xmh}-zb9=VB z+{=CY3@K46E~nt>o19j62c&W2F#fZx?q+Ta>3EEH&gXUfiuZ@)WCSYtdpRDKv*DB@ zn)~BS@82XAt}?BhPb~YxY|qevvzS+dHNwSP&FQ{ak%JdO4oC;T*BsmpJz!yLY_t)%J8sJ~8ytxcs+! zbf0{aj7gWJ({=CSn{-S5+ryg`DY@E6{wwO*@wcg+hFTZAkD~mC6wF>n(*Qo{ynQOefqd=8sq^6coNFIa^W0tPPNRh{Qkz*6$AA;J)ei^2U4u+6yhT64z*D zt`V)g@vzv~-mnaYib>BNNS)8yDnemcZ)hMCWgIci;x;z4C(e2>-31z(Bu^RmVlV0X z4&2cF(v~cRNTmO^$KS?e$k2gteY<-59vs}VSX&#|;!eH#44T@vQt80 zgLxMbPELQG-ku|h0Y$Rg<@{>(Br|!o``#5s-y7wkgwKlI;9_e7^sa+Z@su(+GzC$c z$aCIGRJ1Una3G4j@thZgAj{)Od6Xj+d8E0c_rTQXPtiT>7Ar;jM6aq;^s3I~MB_q> zoP*_+U~@?Y)b-a!vQR#lNfi7c6x}};mKd4KGj#1xf<+(6uO#3M5{u6cFLoN}lkQvK zDQc!8$0K5|+QVxdUQ%cAmo(VtMczj`IfLU@bG&n_N}>fy*-4+eQd&qb0q5?Bo{3;Z zc1HbG^@;>omD-aS$KEr!gA=$7iAi&5djCW!3|;ikvRw7A>XgHpD67oxD1tcLq5|g^ zpt71^>raIFZY8c}6orc6h_UldvY*`~k)<=Uh35P0xD56WEGgHl^dh;K zO*ZP!#fMPG6vnJr%X_H^yGSs;JzKcAVD7=#%Zxq!M-iSzWko{-Yxf#k@&K?Kf4`NU z(`T|eIP(FZ1?5ccYj7qK|8g;0jKC{wP#244Ou4#44DA)QKUV#b*z)FK7#*+6B1C1W zSB+r-AILF9|J``M6u>&EfKPoRzB?D)hgZ0`7qV^#8a(|uTUj+vW=l4(RamjuiQn`f z=F7JOn=3`c!!>CTa%*JdDFjfFS5uxQs?&|a8j*QHOSnAkJ3C>a_1(Xc>9W^5{V+Xy zpzpQu(Fq8PhrcG(Q41i@-+JJ0J@B_4_+Qck!Jbew)UnnGbOrsL6VO5ekeY4a=6AE&izAYzua*jjl7p8-iV}ZQ*WXkw4TH zY%!x@ll)uEOvFg&+Mp5Wj5Wogp|+-IIO=c9yv8EIuFP9xVlt+UXCh z50XbD>hFp+MMLdDgF^HJRiF_~;aIdY7HzsF67HY|&Y){2A)0C%3FhJ_!78OiCQIB=u zNK{AY40p*>i(N9UVJHoMAQ0@7?zSpK?+_!rJ`^;ffzGD(NW}J=T7s>9hR$FBWFVVE z3~V%Lw0@>Z`KJ2O3uawIgOpTY91&!eSecZjKdQ{kg*r2mwZ#gIVxvQnnNw2F1`UM zk>H4Uv}E)rNi`~XRdJ-OII`Mk2}RboGEt0%6?JL24_)h5aK#V@RDl})r3W)mXIK^M zY8n+D5jY+ZRkgb-uwks=f(8ZJdVXq$Mx%p{YHkY$ z)(65ddZ#1Y5^VEtRJfz9E!bwL{s1_E1!j78sG|k!0Jboi{T(gcp_b@623?IglTyJE zz}ICo$GRd>Lr_VZznN^Jp(x$N%W9D(RDJxo7!U_hbHL_W9(0{4)qbhp>%t)nyq0*I%2L520PP%hG63+g`f<+xBH_8 z$fGRW+GnSdvzcWtkpJD%bj%vIu=kYz-@FG|SSX$!7;3l}Tk-O*C#) zZ)9$STH1o?7iLBJnTeBrZV5KW)*9=AZH$LtT3J8F9%Y4x1t|(@(d(qq99|oXm|)>p zP=?klE0bl&h;{g7Jzz-;cLqDmvPGuqhf%?Fj}9lhhN{MTGZO2RK{EXtSW+biM@H7- z?N2Y?3TjN5nIV6hg-Fa+wHE77{#bNfxNFpxOci8d^sf!FXsdQP4 zwlUe$MXn2)dTyC4-w+sG?V%3vJgW*{^pKDKlBo<}X|e=NQ{BKiFrqe?Z>~2RmmL|n zVYVq~!_;`Avnw182f}SEz09zVFa%Cd2+T6Fl&bm_W*VbqJ~ame;r5{Ehr|iCgBLPi zMs&P21v6jM{ZAVeRpLyk;nDt}zpFm*cQ9~3O{m2TwK!9NT5JkUfpn&zSSJ$^kQx=- z-4!CV-d8;u!lXy_3^J`5l*!9#lE!4t;{6?gV4HbF_%-2BhaCzglPS^>o)1m1G|WIp zq6Or!z9Zb-VN|7QCDY%w7U+wvYd1p?HEDcnI|zUn>IioLVv(SXxGefYU63%^#n@SM z7}RWiDKHv>QAI;RB$;aYF@>;{$tARcrW~6>9j#%bQK4pYQ8iyo-AH11+UzDpGJzwa zMxx=)&LB}6)cR{RHNwDI;mb8?&~@Y&XXfeXwK7uHbeTdf@;aY7K?oEWE7G{($RTQ2 zTD@?^BGqBBDS&UMtfoRfLfkB`y7H*sWT2axW37tf2D|at1%JJV=)~T0zvlXa~fk!fktHLy#6OH+=#?Y8zvI2Fe z)xn%*UK{LU!gg*{ir^NpRF=krzWNO_g^>O@SjJw*>z6h7R@&o0jVjDl#_9s2 zQ8qMGAsB^tZfI;;zGCT8-_phUrDkchQMJ5=BVA1mjres9Mnlc=D{GcFHP$Sz^DX6r zQB~`!S=#6bs99O%^(0oqqS#*DPPuRK09zjh$P~^5x5x zGr(#tm<=-ShQD?CbfdhdxcrhHdA>yc%;3)@)8&u6ULvnErS`qb&O z*7Ats@lw3dRQ2DO25?O4h_$sD(~Jr;*1`M=uk8R6w6MquAOdq0)}zcIe|vLiZ7duE zLX6^`in0EW72Yzn*!pi&lpE86(ZDp>3`O*#tYbhZZ;&l)*`ShC6d*6$wqYvRtJTo8 zfy8PFM~C4w!yC~Gg63EU3nkP6%4a2| zNv7Vtn|{_8HlxzcW|oFnhcH&GYFPE?WNjQ>X={I>=+ZI2Tbm4>lR`LVV4WX+MTJH` zf_U{x$=YLI{5F2R&^g7#wcwb+p2GR7lv@jkKf}q~~&`~gigw3~2EbrOwLsxQ4p=P_Lb^x&0-|l2VGgQg5aA(g^_Grf_RhxJ$RXh0#cN zfPx0b4^D*6%c4zXD1Z%XHu1zD2_H&vzpPTNkdY~563QY*oCx`T)UYtB>VIwiqq6(! z>-$%Z)&JY-Ga6I`OK5gIPU=@&DSsO(Hp*cSl>163}mOn)(f3$ev2s}9oN6KpkKW4BYPaFI)Vlu7UqcQzt z2}yWq9zE(GF@8TrNgwGtG6F3gqfo~4BQ5u@!~y0ps;cLO1Nz#7Eg|6{DACrjAWvr1 z{{TKdR%Jhm@{ZCMe=Xj(SRAsVG6{}S$VXBC{~=hg8Jg4|NgdJ`WCZMm6p28Cn%mZA zR&HsXZf8pj&bZnRORJq^7&PB{t1~QlmQDe~-+CA!p;KW>rlX#;=te!-D3KSoc@`cY zgKuu*Wwn1142&Rp)V8e2v4hcYf0TGqdCHPsz~3RyQxaHnr@^(GI&P$vWLy-3nF6 zs4%M^U_Ky5u*5Ybc6rUgXm=2bp&1Qt|eU9*iql2A5608e2k zB9U&W?kOsDryqc%+J0*|mp6FK&RBC>D1gY%2ADDO8#7&3XoFyV5~{p)slvi;fksE@ zqgnpx`5+>BcJH>>hyIgV!Y~o3v;3NAzqL8G`?$+2(Qv23HQ*^`zsPK&=BoAWYok}x zEpA**SEy07fN*r@O;=T%J!{qsNB8OJAsP;fnST@@O#@$a9rKIvNy~3+KClqX=~fs9 z(vuIHrGg(q?VW8wk^RyW8{rEZHqa=6Gn@rvj$=(1gs*KIO(d{NwjtYF2N$BGEIP$3 z>%gto+kGd%TJ6mUTGR>#KLzEM4yKYw2${>GzyX40=cIp`_|`{(APdiw*$={ySm)m$ zVkRY&u$f4L$Yhcrxe6%`8jX^Hn!>nu1-n5LV68|DNQIRt#s;`4DlLJ~S{#l#Y3`cF zRgQQv0K^jYj!fMg->u!D9mS96Ng?IY?bFgKS|>6=8mmM;nk*YpFU9dw%&M^>j!dWo zYH&MI&4DYdWhTKE!Or%c70~31X3E=XVZcU2`dNY?3eknBId_pzOHh!!&9$S|3X)_2 zD|NKj>JMFiJF7C)?}~F|El+7V?iAHvM;S*OO~)uX$0^gl|C2>#;6k-8qXFR<^O5jl z*UJ%AjhY2OdiV_)Lkpbg+vZqgV;Xq#uEEH;YFWjP7&nn6!}VlSh*nDgiU9O|WW27Rno<@&RG5!YAA&;E&)HAuasg`O znq_K@vUs~=#?xvsYE`w%wR_Q$4_NDyfMJJXkt1Yhk}E*$Fj0zIYca6ZDE%3UEV{|w z5UYg&+#&RhD4-b@i88u6R79^43NJE5I)Wr?M+IoaI0z@mB1+O|&(Z%DzOf|X7PbQw zj_%hqp0Hw$=zd3j89Xso#1UafM-z_xEI4bbT87}Sq0zT&DSUKTCRu+#HhtgI49U9OygVfp9UKNX!X@!IlJk~*~^yJUOlROQGsYe*63MSThp{? zxo2@5a>)kip^@;U;`x^P8f9l7M4?t8(FCF5h#xs46c9=A7F=l>b`(8r?G4m|K2oL2 z0$9c90SZ17V}(I1V{3N_=2S$e$jQOE)|^jsq$BG^^As69e3!Niz2^sSM&R+YwrS$R zDn{w=D1`@jn~LPs8mg2cy`4_P+;Eo4iWlytTIpgP{jZdvqN4gFQarQ**98OXh3knT ztk8`cS0k5rehkw%UjY_wf8U+YN1MbWij21~AOHB6ww z3NnR=G)qFAR`#WmeFlz7WK&~zG+emCm<%NV& zvbh#3cL2kYnthkz*qcm8(ZZp!wyvQSqBONB=cw_No{k+WP5(f19y>=1;g1z>M2>+r zBrLJcCR)-Yie^Wv;<4g6GqmH`w87CDeDrwE+_2*z`-dZ@VlddQ=$DL6$!rn2>3zLu zm>6Y$`A^|l3pg~HF8~Dk2N+A#{{Euk7Lnn}Pb=qXVhUjJR8`e9G&EJ$EcMk?OQ<4K z(IW^25WuSS#@Z<;6kst6B!5(U1Y1h}l5ZrYc7Cmh|2KkkfzFR6>toD^Dy2nBKOSp7 zDB4{|6qP_HaSq|72zHCSx7sO<;Wu&~SG8}XYdo0riX17CArM$qcu`MWssp1x zLx7}vxSKEOq6Bv`kT77>2%_zF{3)bBON&>LNtcN>q9}7swV;7^YNRr76ihVfvB@mwbQo~wkVlJ-tsrV!xO^;Wv%*VJ=`XFPA<5v1p#Q3n zsyyqGv=Bzd*;4FdUUZdxCKjZb7RdrrUphe$q>|VuuoyjmEPe;f5TVW#s#bdo3t&hr zh}<4AveOuuEtaS+D*l)r3cDUCX)yQn%HXJhh>X;aMbBKe$XvF(x@I|`FVs2gr?nQF z88D#@qV}PB3zEg&i;nyvy9q_4(LFj}S;rJDZy^X`EUjs5YFM@i^)xifrs^8c7wtj$ zsVP3XpB;U>Pyjht9`>55!9-t>e*loeU+sL zYj2c^(V+HI^nkR;{yt*frDLE#c`dr8Q)Fj1zqn_L8B%Ye8-SdzsoNhy%RekfG&v%HbQ6t0n8 zc4%l@5$iq6J#|gCJ|S__6VJ3zKz;fEf?3m}i3HMW1w*?4X{h8cNNHplBe8v%ohgf< z%m>!RKxZheT7fR9nGWD2K>8hlq0%!&k14_wQaU%f2c_H065Tz*|F_q(w6>i^p~5}v zfOEYzCQLV{HeQ;c7xk})Q#B$I?cCpfD0N2Lq12k@L#ZF)dT=-6E?jdc^#Hzne;WU7 z+yw#sE@8I&JYj2apT&I__W&-5yR}8fc^Lm2t%p)`akaQTyuV|8v-9|CeKVM;&!yJ0 z&k^=v`L81GAnpR{_XRFvmH6Mbe0jc|=f|w~-{PCs&}LjW?pB<{*^O_mCmbj5J(hp7 zhUqlueE&nzLGRi+#$-ENSft1 z`{<3H4twv@{+=rAP^h03zCimED#f>PF7|zlfBXme{lfabv{G!;h||A8kM_+eE$vN1e%vD5WLy#MPeX@N&*ARFeFqoEb>JFsb8zS4vT&~t9!foe`w8xAxXOM_u{^d+k$JyEyrDoI|t{&$+*0B@1fMgxZ7}F#a)YQ!d2r+aVOy<-aGdk zNgRbuZL!X2e%b%}7yO3gZ?#b~(){E=v> z*-&B;f{{}5N}fgipp;#sh}{Y@3s<_b$EaT)s9++4^1y5x86LCQTwsmKVp0&y|pV9iOJ}Oq|3MUY8VRy!0m9d z0o%-GOKowBXUG8@2CIDPEHVXHTOt{jg6frJfHsNE8jKcjnD~hD99^d#)8(&73o0x| ztpJQeU^TkpRz_o_R~s%7+1ql8uRIozr9W4;oCqwj>c&a&85vz)4w5&GMrJxio zJP9OsaM78aYdO4a@AdqxNDtYfP*x~t_sgjCEvVVZ+_AQsaMQ-fZ_JEFciiaq*NgT? zUE>O~Iur?reToB}ngu3B0>pIt78DVrJ^8oiv~^U6C1C`Y`nSn8>|qDDvMNuty)YiLwaYZ{k( zmNv-aBJ0!gM(c}W|FGQf(W(&e6c@UM<}3iP+AMX-Z$I*V*46C|Ely- zzOax0{y(>LtU{{!b^Ph=h8ns=Lo0W40FjemcAK2OoCIBg2^i}ry08gYDRA9eJtBwKyx;#lQG9pQ&^0BFz5`pYG&&r0H#iJyT z7?WAnu;3`UW@@SPSHmNm9HqtuWLtDj&^j2E`Qq#=$wl>-4454GEYk-+S$Q~v!y%+} z_u2Rq>31xO@rp8a6h-n<<&T-((fdbFZj`|?`?LO84Jffxe$$93(+w@S=Ny3JuHUHfx5w{z(;sd8SDC)* z)vK0=+k&f2pM7>Q6S-0Bbcv?0{1$41OzE$U>g-~*MW&6OIadEm{{JI6JM#Yv>%T-9 z7nA1HqO~z?%;u>6`LpYPJURdM^K-web5=Q9?J$J6h@qv7MM{RPB*j0*cH;-L)pxDVu&>{MKN;oKWdv} zN%b=2jeb)2PoIF6nrr$etzSXCg!PdQw=K+7DRt)$&78tKmMuJ+qJm|j#nBL`c4>Co zM%PW=muus4inkzpJ~@f44qZyEM5RT`QIDDhy|fNu))rk`Vo!D2ozsJ{t_~`OUNe-a z?84RF2%Ep7{4d`c~thL@4?~1;Ygfz`!g^)l_#w$w^R7Sc^^bTn0(GlSP$I7?+ zLd~fUZ9JoSl|!;@v8gm4QQ4~y&Y33s)Y`ACOKMeZ`WFa6;Q>X^D5xWCq;V94I9QId zu~B*|4mJhwFNPPbaa04G-c%@<2k%%aBx+zYTMlbREWtdLq)xMF&9zv-=}Z&Vwth$E zdt+m*n)Dhb7IOMX($gNjNzxc1jn5kMtb0q!C)!WL-q>I&Q2y>(q*IE7wIZ45>RACa$FjtjDt}6>D zG_cxSrCGv})dkifl8&_Qy0S8{x<{O{4Ln;6>(vEmbCg|{oMm6Wpt6f zCNaa+=|A;J22h=~LGx;w)t!v0q;Hk8R3a7 zBRsKY6p@TVl2MvbYdR}Ji7n_{SjWlqI>#9Ur#_WpMyPyzszKUNqSnN>nl#d)n-sZ7 z)m@mWN?SPHbhC%`6n*l*2F0Ya&vb$2i7N>`lF&AGXLhWb(!N?J7RKNR`&{UQ+uGOC z6&)xq!uC_4@*sj~4$QzegjdJ{QcCW}_?75UXIZyETPZHLvx%3?G`M~oV{DE>WvNm6 zn?eXk_GJsD@=Aevo+wOTzRFUOUTvyCYAKnik!baUggD3%4#+WSi=QE1?TM#zIA*0Y zbyj-brf9b#T@fY`MXk|Q5yf#+>w&8}s`_ODGhO1WqKz#wRaHxK!?LD@zNOWToMySw zS5+fTzEYaZL=cmonY?&X6ddMww54Tjr$!PikpyBuVMJ_RbQB@}l-*km&bmr&`ETf(#h9O4$WT~~wrN^)nZJD=J#ZrSnP?-Q7k;qy=)CWPq zRxOy2LK9ggco+tiha!iS$}>&>z5FwX*UI zg6NRBar9pX5H6g5q2kEtvP6<0RYb7G)Rs3)JGTc*W|V4Ba2ObMUdfCjW zX0;Z23e7tcWFco4EuBGKuMO7xki!`x29N_K-L}XRpw|N?k%XZt)QR-!I!P@{&WNPE zsMHGiSfyo>Sxc*hS_5h+qW>5nz3hz03bS4^wv@9I_4 z)WGVxf{V5KC^0!;28FFAe+D$m(UwJJR)q?L9{rb@JrM+S>r_u>&aFeFi^y3UR8fgXzrV~`sVo*JIoK}CGlgC!G)>`0JpDS_UMGToKW)*5qaq+A>^QYPx2`=IAG3;?;j9(Q;h?g%jjCWdTCX}wHz-3}3t&lg z?cNaL&$=B#^_ru1B#vG!Iuw8@PJra6@t!Nj(p@RJTVOrs0BGII5JB)%3Ic{YmDZh{M&!P{>kNY%5bsbZwDY>U66!BkS49Z^YqO#hsga%#N?pT_ZGyqj1$h zR=J8olT6CGr7ac{gi4W=4r?s3e?0mRaN}AEOiZZ5V9akBBnP`i zjYpLf4`#8?3eA&44l?9Yyd-dZvoU$*97Ktpx6;r>SVdjfP@S2>b&@l=$Snipmzl#> z&f3JgZKNg=RJSu|fwz*EmzgumHUCakbg5)#Usm93^oZxJ$hg`aSretTa8fH4PQz%l_JUJ04F=sns&OTbq*%GrsVhW3KsWTeSQbob?oUm1T zh|Fh!3r-$SG0V#^G;?flY9whaf(>uB-@(>UPY_cs%-wK6tbt13uM76b(N3{#BuIbC zF~K4<6|!m8C6qjSrb=DjGlK_6Y)z$D3x*s=X1^6f6hPC;|C)L^ifJ%W=kIw{s~zhuWvtRyjW|Xu)1VQT3P4iHnd{7nY-nr+{0cZfDY@B3%$or9n5TKF? zh^6DO0k(9HWc(TxXv%#mvR`%7P(zfp$#(3FK@?)ZNFAhA+g$|(>Mj;_5y;4F6hUrn zi$T+P zAh}%vc6>STM2!^N^AZI#WpXb~`X&=cb^?NeeMAz6#rqMb@e2ynu8pi(M9c#!&}1AN zw{>D|$G$kkykc72w8gw*-K0kW%=%DUxQtWq!L@!oCgs`?PXz@QBX%7&&pO2rjvvX( zx@fdBQZa2>B-|S1@~_}jR4CzI=_{zF6=+o|Xp*(EU&ID4KRd}<;3n3L0rd81!ALrd zX3!rOf4C8D&l;;zdYk@nRe#0$a%|}{BFbKy2YsIXVEL9*cu~ zx7G6H*><<`d>d{Mw;Q(yw-;xSt_U|GW9!A=9Dp`kyDoIi`nGm%#rh2QEyXr;_iViO zk{L5+&A!x5GY#(MG^_^-7)#js{P3D^FBWjYc@~am&PDY~*aE{C#P!O1UCH{6rM%z3 zv$*-V&+hH*?IoU3dBWk8>2USd^BPB(^SeBE9^>2SxF7ajIV!K?Ex(6!D;;i&^?ZvX z%=ulOzkiHxqvL+qd(Wu6j<@_l(rtCPqC)+?*AeFYF3*M)XLR^q^8S~W-*Y1UO+B10 zZ*-XTzHW55BV7sKzQOz5w9Dxp85Q<{_5Pz#;m$O_=bPMx(d3VYLjuhF?DtlEfnDZZ ze?H3Jy$e40!P`&PHP=FG8vdzowU ztGE2yF4ylxmftDqk2t@WKL2Q)hs27XI^Sp*yP3E0E4TcumA|Fmwm96Qj%R1M{d~`; z??1NQzk=U^d*hVDsXe$~;k>vx8V+vc8-3xvX=ur)L+t-ZoYl3$v$XrHubH z8eBD5jae;OU&(qYE0y&LBa*c=`&na=E9hFCopMb!<`_3*Kc3Z={ap5EU3YVU_MPmL zax(dk{d7UjtenL;S6cDHmcKdYgz<*)m7KdsbnA#bPP4MPC+DG@*K-c!Ow65@yC`=} zZb$AHa`(FaJNMz-=X2l6Jz?D6yUrUoXI$+#|2V_=zUyw+kN;`*KWE!tNBc{y+vK3`gy2`lD-0j@UDvYNQu+|KX$hlR zT^FMbL8CXJtQzUFEKv09ETZbxIE*=oJd8_!>eI%o*h7h(3@&Z5PIW0=a$XRgA?A~- zyiojEr$y0_iJFHH?%J6CVhMqbMIwn-SF1&gE7i?+8N;5kK~=i~brkA=ruy zJK4vn`<<2{31c(dj;0g&(~NLT)JT-I0-s0+M9Dp@xdZP-?X+#9GV&)5Wzt^o!hAgcMTM)MMEd zWM4o6V_{c#JyM%ah+o4uZJ9N=_IOxrpkFOvwxP{+SmCyDu=FTdU93SMGl)JVU9wwi zG_s}B9ickCrU(6Y4SQDcc5m9|91M?T*MZ)od1}OA9~lkS7GHHTBHwVQf)AyrkdD;I zaW+mAVN_LaLzMnk+cZ7AQgbyV82buzg*u~QHgTC@T_{Ft1>!QFB?Sj1QFgaMQX<*i zvq&PRA(G2etg;0PB9c_|YBMFI;jaY{k&k9~I7a45hte`eWStk2GhJ#3>)|zqxLe9( zjFFDCjGS58-WH&+DAu7&y(;K(*rSzd*s?|@0!?FN&_k5FiG0esFZPecZd*GgwiwkK zj-?WCVwLe2$w5uDOgpStmJr6UCYjAf1(ek+ix}`P)+=j>&0_U9B7%0xsJCxVRMt@p z=~1hOdctSAU-q-jd=^$ikb0;}DgHkd<=7LqJ}S|x1?6c7twV!EcAA;7NtfB(1uSVM znP3ntO~_P9H9S4h)2Spl&6zPQgE5NJHu8&9F%vJHycKRZ=wM`Adv1>PQ6U1Wn+!Xm zB+rb&QcE+;p8oc`bNY`!85VwF$1ECUPILm-s>?#mHt$#A(oA7iizy3^kaa7x6(+UH z1XgK->B4z3^}$Bn!$`hkQH7>5tAc%hHG|yQ6!3E8H(B@GfmA+Et3YvD%I5t z68l69^?x~At?nq&P~Q^5TxBaFvlinjHSBV`0YM7*>*SR6y0EBls9Vzj%;mP7NwI@H zvbV1wL=GBbXi4UeVZSTDW`=@Sb)dHDb&a~sN=DIQ!`ch6>x`^(C!U&p-q~lKFd;AJ z#Pd%-=ajPw#uuJ;a{joYT=z-mOq^iaQN=&+yz|a?yC)PBobMigX5qNg3UW`$%i;N) zlhOo$Gdlc$EF;^;M@#&{!-`_&4JLc?vGVoWg3G|o3B85bLuu$}fAjYg|+gYhNf zhsGmD%9!M8bp3-Xow~#kMQ3wD>Y^M|GI0D{sq?bT zbS?FV>{M><2aY)E@o@Huqk{~i#O363r7KHB_*XZ4U^B7s@A>KB)RX^pICTIg&$c_C z=f$`V+}9l8_IKO=9p6s++2Pcij~!0Udi-$ei;rqw-fbu0$LnT3cx2oY#t0jopIyF- zxX(Y7DccU0FlU-)A32=*9&sat?{nnuv+Cdca3;Q#|KhI0sqy&Ye$Vqk+;clKVfGl5 zPuG02IdeS=tEy`jooSq4oO$M%@;O(>$rtYg{cJGD3kvw2T`=Boot=NeM8n7*$HxRP&Pn7Qrf0mIi!TItr{oRh2_6yTbhH)$=|VmBfhK78#`V)bVB;cFwT%? z^(S8k^Vj*^5tYZ&9j|J`r~c&YVE*#|vFudp%US==x!)c>oH{dgICUxR8$3(db8}Lu zExcDTn?H$j*603F@AB;|7x8etxF6xpBP@Zx3V#^)?PIj*KFWL_S4^4T$NvoFN}f`_ zgsW#qncw62dF%a6%b!Ntk5OJb?h80cvl#a!(*G-d73Hr77d`fVDz*JSjjfmn#w=W= zV@Sq&6g=00OR$43`Z&Axn_NcaLbuWTwOb71r9b5wuB@E#+2gFacVrF@RCs)kWSE_k zJ8pblz7@aVgu)X~au=O^%Bd4hJN=A_XP$NTIp>~tzInlg7wHHe_Wk&Z{U3`pb!4A> zdez3OR~w&R)vB@cpY2SKod;Q2w2-XPd) z5EM2DJ{)9z4YI-vf?WsC#zDIbo{K|XHh4acy8RULV>{(Rk2l)s(wpQ8Njl)s(jruwjExzXzX;45qGToB@a7)`TmXhsnic}KgZ3&t(vR-Z&g8O;hx34 zi~Ex0%lMyv9{=&_1)Ov*rIL$aRK(3avXjqfRcy*vkRfI@p~>}#PM&P1POw_AHN8HUNMV2{wDkh_+mC@ayp>0-*H|eUREk+j<`%Ki+S}_u}7%|0(>=M?Xm2BH@ow zKECnv2dQ&tzwzt`sdf0}_*?Odp8p{A8~io+A4vFbKS-4W`1SbJ_*?N?@NdKK!5_r` z0{(9NTk-ec{|tXG{w{pu1@gl$!rzN;;tPpYjz1B<5`PMQJ$@zr8vI85PW*NFz4+JR zZ^hq=e=GiX@NdJv1Ah?z5&Yfwd+_(*zl*;YKTl}47ilMc5q>$oiC>Lhj=vJW62A?< z9={iV4gOc~JMq7d--~}Y{#N|m__yN!4*xd%{rH3Ug&?Ed_$K}y{F(TB@xA!Q9{L}@ z2)`5G#NUKpj(-b&CH{}_>+uDtt-*g9zY{-!-;4hN{#N`V5Z){;P>K}<8Q^U#=jMR zCH@}#HvGN#z4*q<^cQ{+{`c`s{JZhX@pt1_;{Oi69)Can8vH^Kb|=1x--|yJe=EKh z|5p4@;Sb{X;P1x&0{$NSTk-ee{|w)F1^B`*!v78aApX1fd+>``42<6aSNL1;tMPBe zUx|MkejENEelPxB{9EyjSIHN@2!9uTIsWhP>+yv)UV}dYzZ1U%zZZWV{;l{c@#|ls z-|^SrZ^7^Uzudihd=ypIHd?!?E9p*$?hZ*vXo5CZ0|sdnHEPfV0tAQ<6(uTaRMg-^ zh=2-;5(ObDU{n-F8I6jH4r+X56fff&M+V~zDmtjBs8Ml5MMcFKR6@@4>`T*W(s}3o z&UgMf_4{?Nde(aO+V@?%s#ZFXt0C(kn;;t?H$pZ-Zi8%w+yl7<(#uW!ml&szb&$h( z5rdozxf`+;GO`onhVpBS6UZvaR!Hj`%qOg0QOI1#I>=(k&@S*HYrn-jp&oKGWCLU? z48wC-1oH^|U_v>RkC59xE=?q4c))YRKKa z+S)flHulDEC_+~Bfu0xfzHRO6A-6!b5EsJ^Sy$55UW9df%S8N+Fl5Cf#EL*hE85!A zanY|h6~D0vS$iR51nD3vAd4@;?=3=F{GDIw@ms?AeIT#I?>IuXLN0|2U4`Foge-M{Kl|3 zGP(~AlHY=EqUY=W$T+yYq#8A{#Xz8-QnWD8`ScYpg{$R@-=R2>670fL)Jq^7#9Iq3%LWb6*BKQ%qzrAOonWRTuO|%h;5M39N3Qs53&Zb zAs6ifY4zOSz6Y`vvfu>N6S5exI1E3KjgYmFkzR;}Acky$Y=+znxf^mPWK-V$_I;4G zz4y207Qqf#09kwp@`Kz0xehXP=>GPNkQI>IAsZm~&<+_If%Fm7AF>s)3Nq4XfBSsM zD#%rkjgadhLwymO0$BmM7qS78ku**H&<~KI0sGt6KvoUh-@Y5N?lAPzNwDYdZ=VYp z8I1OUEQV}^tb$w*SqIqy*$BBEvKf+*JFSqOVzk%cs2^kmvH-FevKX=oax&!*n0?fi&fyMZn$sGWH3sN^>joTkebwM3#9* z2J)A>C4uPTl#)QEI7s z?GI^V{;HhuqEmNeeq6S!7vZbn@8}<#TPXEn8@;g5L0gmI z;|kcP!v01ld5sNJ*!Q4~k-N%qj2bJ8kY+FLnXq-02lH74o#)Mc?OcX9eohJGRt6&D zkc%1{8({AbJIl+1<7G2+QRq^oM(J9iD@f4ofi6Em=XI37__TS@MG|;X=<=XTkISPJ zy4(a^C3IQPb&KQGKo^3JV}S?DTnAlxLfRG3c@ubRp<{c*=lddbR)TH|boDaY@%2r|nB1M9i$J$4!QXJ`c0$L#;6Z<7(CtXzO@*!%I-g`IUM+On z6LgE9+Xh{HSyn-}H9@xyx-HPf=i3b3<^~f=*ppMf-b&%RnV*3z(8Z7EV(7{fbd#YggU+-m*QjdfN}-e2L%D9A7F){}X?}dYS80B{ZXI;R@PSKy ztnZtlWBZuAIM%m9$M%U&yAwLLPdslQbZnn^UI-1%_KDZ^hmP$NpSBP>wom*VD~FEl z6R)d+j_nhlb`ErGA7me^M?G|GpLpGB=vZH)V>>oMR|H*W?YKFC&$ejQdBL5V zb+B!QZ6VXy)1*I^aTWBXSldnAsapqKae|Hy@r$4{>jAHwTcIn2ZUD|zStjBdUE-gN z63P0*UY6j;o2K$J{myddLC5?$t5c!oC)((LGHi+dt2IBqKJ&GIGd7rK19YrUV*k>% zPV*ndxn<8sTcKKd577eK)`U83hi(gW#y`up8@kO2Iu8gf3A$Y9HbNI^RN-ADlhl3?v6fe|&173;knX z`&cSu9nXf}Qa`;<^pBDC$%knLc!l7}IRV~cdz{|a+NY@9D)K4y%l71ptL2X$*sD5= zZMhHK2K^%Vm>k=O9@y(+i*0X=-|J&{&i+crW~~X&>`k9j7lCdabY_0Be8Ztz3*BDq zBUz8db_L5<9;kI*!}gz>TiFoBFjs*)|2^zebvfic)H2>bEag4aV%|S2Oc@(!b?m)q z^0omT61#0Ek^B5L@KL#KU;Fj&r}D#H%0dTsIQEP{E;h%=jpf=5UNd+*W92gU1J2Vd zmts!xle-t(MR@-(7W+WuGsZo^F;##mickLl>ihA&_U~|>c>jR5ygGhMKOWrt{hv(V-=%*qO;vEU+ZyEGicuxH)_0qrnf*jl!*36&pSvJDHoc6J}Q?zU3oT6oVnn_+WfZGyoO-zIYWj1M%}_J5;EMs;kGk^VCH*a07_zS`G5 zlm2D99`GT@;3&2$rdEgM9OGZmQK9OON%10lZKp3;Ps|6LmO;M=&&$u}#b4fAqYd>v zW_e(X?G)ioHUb^e;3Ja1*%<<23o62x|%q2%YD=0^rMm&>Wqx(vi=fJ)FfoBC6 z0Ul?%(`k7y8`Qn_YWQ2f)~s!fo`tE4QWAmESf3Kd5!MYS z&5a*MV;S&f@m<^UM@&0KW6vw1u(i@(6#qjF=c*27otuuSjVDf6JIDL4GNyRFkSabN?D{9|_X2mFlH!v`wC-|qy=@L`m83U46!B^g}w)V_}*W`(q z5&Bv&*1r$jrQn8+!ZUI7s~XS9cRANT{cNa=&xYi99vf(IoX4HODm=Yvbjkv2G3uL~ zDb%(JXvaZ2Sy~$$`#GFUfZ{BzaBd}K1~g-la3m6r3~Yd-W~T-Y>?>g`g%QI9$(rB? zUK^OC7TOxfk)&OwY4kA`w6m!EOQ$2c#Bc8an}s?BvINX4Aj^QKK++x8R=$Ibj>7+@ z!?`sr5aAutG@P!1z8d<=InL#pQx(WPD-bE;lgH@jK;bEY;_-p9QGtpJ1EI69bdLA) z$>Ibu*ubYjb-EvO15X<990~n3K9GBgu`)A^5q#3Iv8yX>YnT62QTF?R`6T;&d|`~(9 z??jBVyAsA(iQgHUSOUH0+6;fir?<8DfIA+X*R9Z%L)S-Ylx`1n)p0t`6E6}if^H9a zD9chlOVsN(*9v<+=G~|R%Qw^T-E74fZS9XRja(n(zJ!}WZ0YoN<7EFFGs??Bt3{g4 zNRy%4NIy?KFvbt8k)?q;;e3d?cCu#6HIjP<1|+Sn#QPV$=Ej#BI|bofgGK*9!At%2 z`GFQu8rUKxLXHGO?GN~Vxcou0hBOPah;R<~hppx8w)VSm9=C>I_S+}Nrtk#6obMIj z7EQ(bBwhz)o5=MBJ@0foFyANm*%tG`ZK!IKu_J1}W4y)B_XBM)Hc;nrKI!~=ft`uE zUTlWHn;$TBsOxaO;8@rNdtFV(vB1sI>Np+yH4C~8(EX=lfo)WVG>b07|478Sbq24O zu|4WJrvFF1vPrJ-bHLpR?teONc&%HDG}C6_e^_=oZc5d2_zLH&&M);7{CV)ThraGN z?NkweS(SU4te)5})wZ>7((BD)8|#RCu8uztMTe`aMu{JH)wyHzULQ-8RgQFlm|wLq zVB1WCK6h4I`=uSP0pl_F?3Hl?h&~#?-P~x(hH;491=p6f(3j4^dtzPx_;KzWt49_t zLnAR5P(5oK_={tH4m`u>xZ4BUTD)^F=Agh_zm?awF2>y#osYZNKBY8_@fXXhf71};29y)baKy(6=^+& zR);rUa{XtUGxnm#eWvf~#6owmXQ{KyW}8>TwsATB&veZ9*p6#GX1MrWpdL$8gO~t0 zlB-`+VqUzxlKr~@{?^@la9*4%TVbob6aT9QH5xOJ0jt!Pfttw)SDV z4)K0*le5qrk0snGr{nlt7`LMGUUD1L-`m#ynl9IJ-W%xqCV4HEdr>&CohRTV@y1E^ zDO^|)?0v__%DBZ|n6lVi>RIM2hhO%2G3-kl+tf2z++br@$wwg8RM@7%)&yIm%YKk+ z*4V&qacN*LdcV$|067xac^w5ycJ1R@@gn@!KG@by_vYYwvlaSk=r>V0E_N+PJ1z9! zkr}r{@~fi9R56qq7IL=wf~-Z$ZNJ- zpH9K1c0M-7iSn~&kGb{^N0;HHdfeFAOU)u z?YSF%^41{^iDkwS!N-HI+{dvG!MWF!Ta8Nflg8D%BBo#QK_$-ZJK0Tq=dAVjE*n{$x>j5m;(3s&X z$6YhhY(|>1k=~leF?l|Rq*aX1_6YKN5_>V-KLw_N%qjc_pA?}eQ7pPSg&k}e6;(AyK?lf@ECs(eA=tx`{ zSiU*1ZGg>`kGgv3*2n3X-)iWZpnDeQD!-GNA1CMdSccdUFntTSrO&l>cwe*~x?f#<?wr06r92r+S-p4 z07>Swy*8oDSYINb*CA~Y;zw8FT>0m=_7deE9QN57a5jKbLJkg&uMN=cflgkZWx1+l zJ9E#n6*ljm+tmA+GI^cG(<<*+zG7k8J+Rlqz60lot&!E?dohCR&TR#-MgP04 zJ%{yVI(o&slPF*rY{Q$|+P~9nu$1eEj_tyLb^2nxz_8%`60SsJibhOQ&loA*s?aYwJ)?) zJ_oHYm=6n6oG_Y!%XzHiWBhZV!3q}BAp5;C``6!qEB5Ca_ecYIkiO7a2V%0$@;^Vy>Bt}RnTvTzspkqP`3E{*3v+2$7}jXzq6X-BzBQ6llKX0;N$Jv zO#N%kqZv8wnqk}bMjQS%)cD7BWHI(^=$j&o}=?*R|&LHOPZ`}+uXhss|GuSW;&BFFgcV)oqYNE*RsDttA=*B^0ijhFKf z0~f2t*?61!3dRf6jQ{?%!PE`g7w9%rI@#8z zb-Z`i&u)wH#;wC;W4wPxf(9Fmj=L?q;@SLqA^hhbj{A4`|6Y%?Wj01Z{IgmNX2;Lj z9lt#pBj2@7L)y9TW3L83*bA7rS9w2n#w!?1o3QR|R%>$uxJ$w9M=siYp*{H(cAo5i z*chYlqYVdj&CsoeE=_8bjf}6>^F*$LoQDs_Pdn^ZIgau$ z2%`8KfTc`R8mO{wkXsm;FaIuJ4Q#TUFtaS>&^1GM0{J+otAcJ9bfzrS&4F$wbf(N4 zm;Aee9ni_KjaB9pRGQpIo&Fr0^Pp}$bcG*w^w|R4aOjNB2zc9}i$ZrM&ec4)78Mxj z$3li^2JorJO-T(n6L>DixOr|l8AE*hD}m6cP2AN%s~-E6y|Rhv3XyIR(p}1QvOU4j z>yBNlW(O{GWBe1%VxjV@MYI?l_I` zsI`Me-e;7G7@{9p3Nehm%9{UrSTZ~K*hx8nKuf0vG9xen=ykWSuHFn@ejK(`jU zu{h_!xwsa(9nhUd1@?4T1iYsPK<55nBW(Gf;BRJVlk5FljPSAk*_cDL?|{9&gB{WK zxD3%w-<~MuBkXuIpwpkhB}dvKuyl1&M z5VA)Fyi-t6@@rtLz~2g)dKE!e2i;QWWc}sZD6hA2ZM4hNusW9N)p5KZ7R*7+s*zZg zk(TM3k$yAMFT}Z8TjSDCicdf3K>G12eHPOULmPgk*Ji9cGf+F~bD=NoL?4B|CPB}7 zmqEV*`eW!*_JMpfCiemS8>0=d-9;N}#s{ugfN%{(9K^{gcBdYk;h*DOzD}=Wp1{VM zrMF$U{K+<65AIxWIbKy>vts?V1-8{mY`b78b+$d_TDFezJ_$=s}vXZ>Mz^cdnfaC;MqxOpu!Q!d=;Wx4e(X86Yn6julW74{cY^JQtF=? zJLe+@Ilnd|Z4`e4$Gya?t&iyf3t8<2n(4dsXTm z1I_rj+bg^vW4r8yzxBI1K7&a=8ug9S=_dRCm5B6L)#2a8^0@XR-f>_)%WuoNNns4h$0muPpqs9@fXwkS>*&`dYd``)_tx9frSIKl! znut2-rg6z8HJ;2pYSSMTzn8X~dgJx1JT_=M_bEJ#{pbBET+vd=E#6Y{DAbsb6L>^4 zHv4|P^u>N4EmzSjguHY(%>78QPH*yMye|)Pk7d%E`)k9)Pfg7v5BW*eFB&hU^8bTl zukN2j*SiO*8YkK>y-n$xBT5#hDj7?!UjXgyp?N+fxAar8RR(0@dZe*Qw>zlpzbseM zYSIm82njOvT{RvwJ7$f||93jKU#yv{lGvwf`;hll`j}&V!hHvir*(RT4t!%PB##%8 z*w4`R!`|xL|9EYGB}sZSp0kqJi{zK)j zVN9H=&wfnOKUvy-WfK2aY5U$JwJ7o z()NGq^&xS5j?wl}N$THS+fUc_#8ULo_KYO{OSJvTB=wuD?H4C$pHbRg^*`7zPhuaZ z)6Yv{H}$z*+ciBV%=K|;61!RT?@eMi`8I^RZ)CMO`5)xty8M@Xta7N) z@^US&)H0cydTqZ(%j>mVqUACzO?tDhFxUU(@((1`Zy2+W%)Zg^%{peVk2&-<_b!ga_9oT*24)w@{*O%&y-!Yb@PDiRMYndWzt_~?OtgfIJ8NCm z-^`l?`u}Tq=Xl-X5xTN1DR9=R?-$078g+amzoe#iI{vr#u%nJR@`z#Q;s3fF89j1% z^r+}@gS0MU6!gM_&-j#Qwev3OBh}V!UBQBW3TvT2+_y^aM>pu5dqf#c` zt;1CQ{Cim*(TEg!%&GJEZ`B_UTyE00%AgO+dNRoXQv4IHF#Lw$ir6a&UzKm=T*GfV zS`mk(t5O^pQBn`T_@c>km0!yWlYV!JN`Ft1{1m_Sal>yIrHD@^S-2Gc^Jfjec%0&Y zm!!i~efr@~YSajiPE`Cej#EV+9#JxjOG{hT8loqq8WmEH{hl^Q20uAUDiLrwbC z3F#mIAJWf9iEIl2EIR-H(tK44++QZ(^%~!=38&wrPVgE|9ye%=$ItRupMbSGCRF|B z9c%Lcr{fb&i41c-icilhF;4zBo-_@E=KRjAA zHusB4d*EB;H+zCf|B>boK0xVkRt{ua+sX|;^%hls-Q1Q}-m7l4f z@nfXoKN{ngX#RRbNRW!3J=OUCS@X^PX#!oo!?mr?&oTUN`ZCL{>c6<4zs_CXl$NO z=wif#Du2pT#^2$Z-}Uhbm9nUk(2w&DY!NgVHE|bBp0S@(;o+>xhGx zN}>26yme9KAExUW@G=D^w{A1oS{J&{_gIPcm(y8){|IqNydO@{M{{)_a zitqcx@UQ!i_${9q{sWqSm~ogOmH$@!X_>0;Ynq>Iy-@sDzBK$dG~Ya5N^r05KiYLzRm#0_Q@SoTGuGiz2dKvy-HNWfm zJL6Ep|4H-pwkEMS`g*&rui@9dqv{*c%tnpR)p)s|Q^y&8+SiJoZ2ztJ z=bUW#!!>_x6947U+gA8A!{4s?ruZKv;Ey%F-w+b~a-P^$AN;hW8t@BtDWbVP->tE^ zUs_ zqcMJ;?^JmXPr@&U-nJ@Z{Bq4V&(kkXz;zlY+pnnnkNce|?<&nV@52*|q4-N{4F4I; z@4CHLUS{~;YJRfkN6P;>GYtRVntyg;K{QtUduJK`sWO0DhW&P$Lh*0D!tfVp{)!~y zQSlqDHT=vU6w$mtO3Xy@Q|b(VfaWKe{<{CayutAEH9y&WD?*00_30AB-=g`C>VnME z&)rWHpp(|F3r&zInc%r!;=N%lyuHz@$HSk4jnGCI8-s4F6uuA7?U5NT=#Q@-f5z@@GX{-X;IF zCk+3Je=FiM34RS!{)^Td{^5HS|5igtkg7lb{3pYIUi0tMyfc4M>8B*5Gf?;Ef1C78 zns4q$4bMo$fAKGd|Apq`0d}W{D&L@24gd3BRe7G*>_7bWpVY5(vq@jDPw|)Q^v`R2 zQm46_=jGM!nDoDBexBxM%O6lg%zBdas=ogBP5M5XKUx*zpj3)K4Y#LigkQX05$`>S zsT8VxzWv1TJ^I(sP5(Wpao7EK$yX-*ubSVOBtKQYsoxs@-B?X{n0Sc9WQu<+9{;NP zJfZpK?=?E-FZsdn{X+S_IgzNb^563(!@pDWlZ|)9zj=@0_qUb*WPJ9sZT;}G;U^YD z+0XtZnY~7)--Mr%R`q{c=Ql_9|6v}L{}S!^360+jD#f)~%KmG*!dLZCSU)z>sSXG= z9;Wqib$-5nir=Uyk7|6wfg~NyRQp^u(4;@Sze=xPpLF07sQg|(%fvV5Are<8r$j{ zHR)?Kf0kx`tg+cY?bW!qwr3AiIVIb#%$NQ%jyC=e)%I8*%PBMkpj%}@4xr3k5Q>%0>UKXs5Q-&F1O zLXAy%J7fl+^84{5lfGK>yWT&w6dV54n!h5^vBt{(c_R%!Fj$o@(k1`f82<>(H}?~X z$&~*WM;ZS`n$LFW>`?qeM;rcJ%|E#_GIWaHV~pYd^*{3Oj5U05xT^2iF8zNP;(wI9C5dCYtn*3{`wHKN6Fu z_Bv^j;YaunD{z?iZJqNkiSbX>{I2iEZjJG;()^8yjx|>0*%0HOFie%l#6Kk_Q|)zK zg(-ij=0B&2Z5p4Dm{4Pt{+lT#ec_QRKeK+Fs&TUUSPnn7_4ZjN{S?hl*Zwa|z%vtY zVzE^H*G)D4uF-sRKhZh=({l{}I?ZRjIy-8hw5>DFGyLZ@|6xt8l0T4wI7W?c)%XRC z#}8NSQ>gI`8vjM(M4{T}w=r^Y6paj3>-{VmaWYf55EC_ELy zwl>~r%AZ}V{G0aZq47&P`Bsh1_5VYSO?eV?QRAl>{|ZB0-*;<%*U#7f>wd#OzeJVC zJRj=Zf6jx3KVS0?O(bfp%5%>e!@o!K&3+&;nc~0yu;Fjee0^J-NZ0$ViBB2+W2030 z&GWDcqZKyuInja2@1M__^cQKqevF++*VmVk&4xc3`8akBcC!>?`4{>Y@y*L)M-P^q!%UCXM{czlxb zsP^gosqy!i=4W)tA06Yrp!vsj$-gYd-=q2F`jVJTmFLbFzu)+-$B$~yn?EzD}d_pf4~;Xk4IU9XSpV*F<{KiTtmH9p>IGydPye6wD^t?`H??WOvAIDY3{^+&K$ z)j!$&o#HREQZ)Z)&F}hpx?LE4h31?2n^-L6|2f<6D>c9C{y4&8_?KyZviBjn{I21z z()?uYtN6F17=F`##D6x`@LM$hh{TF&topB)&+z}H`4MgJai;2zWc%|x@NDb*SbCi- zCd#G#sx;%jm-ctPW~|nDfyTYgQu*n}+A%-oM777sJ&eELRK@T5`dyu4_yaWmcH=NX zs`~g2G5iFxjyHQeW`9=uTdn8!Y3Hi)+@mj;-&HI8uOt&r)#vRYCchoC6u&4*gDd`` zqYOVXSMhI2EU3n+e+z~i{vS2pTyMY7xH(CBmEVG6P5OuCsr-5#%XF_btj_vihj@o_T}u_k`wmeLu1`#^0d%UBB-fbc^vnW|=C_(#|Re zohr|0{A)?)NhJTy>yR3^e|6dv> zxt!?x`@lUW{coB-QKui*pxPr@det83_nPz*HNWfol_T#r{3V*7Y`>@KH*SsLKd$+= z>hcxcrpotxk_CJ!c(yg+DU<$R_bR@5{xs)4g+J8(CN(PDswdpg2NXWdY-lyl2vz^R zFB<=$J@UMAT`G49F5~OOc=Uz7aBOX!wd|jV2 z)+$_?kj_ArpR>uNe?s%GH-rS42W(qE;oqIA`H*1N^W~1$jD6^%D*tN|i5jc?SG{id zk7<5Rm;4ED8ve_gpX~ji@;^Jqe@pY9QpGwb7sY?|E#vw$xqO0gQkwl@63 z@cZL0nRxt7ep}Xe8t>Hj-6xd2LF0>`RCuuNuZAXtOZD^4t=^zbntx%;W5*Nae@m+2U$6OQ{p`p#*SFn% z!w>ycm8V}KQDf!*;dH}4O7laI9fKsD41RItia)YF?(`XREYIs0s?L$Qd|=^tQ^#ZD;&@#)uOm{b;J~rn zt0;u`T!~Vjfz8AHjI*%kZ1Oy*laR{8R~AlvPdf7OcGDB=&Qa%K1hprt`_(*O&+}Y$ z&PN!YUh=$0p{LyTagMoSI@9~W4jd!cnN4KaE;WgEW2 zj5|)1Uov7fp20}f)s{*rSHI1FEtlK#cQQMk2{Ez{_?z6 z-YhKIuFGojbrpW4@->{=Ua7eVnpF8kd+HU0S9kcbQZ5DVO*5@tD4r@aVvxdu+pYmIX<>v3qH@| z6FUEjxmG$oIJY%l6Ph+}h80F&64AA3vo5N!a?_ap5PTT^Z4W@2+#o&t74TWAShd`q zR57lMv3~Y@_zI`6vGP!nFh2HwL)FX2w&UC6!>M`-_Cuumvj8ipdJL@FrRs9POQ_;g z*v0_I1?~*G)6SmB zvCO;PpZ9 zuEob3{3*6HwKNv6AJf$OnE4U7#iHjps1AKU6?(N04)La`xfq$E$ef;OYF?(Yz>&-G zb;Mhls7P_vl{g=&mg4LsI8SAwR3^zh5q+B>@*bt)349&81SL#o30}dc8&85(nk^S( zly7u~wti}?sj$k$yT?yZrO>^V%AFVr$fezfB3Sm!p2tX)T;F|M*zJWqCqm_87uoea znUU{lcy|u%&cUDA0~Mbsx|5SR75X_Mmn90Fgajea<-$7;Eaxh)JhMcAYoO(918vHQlC|h&g_=>6I?t8D`xhoH$L`N_l}Y+EY@WFyl_uNSk87J}o(Qp2n67m6 zwsCZY70tI7i0+(xea<^?x^)Q8hRuOHsK*?F0SI-ib+wE_NN0ltpp%90S?SAx$-g#Fro4Z&Xw9Kmk%UU4*FbXE0FAW22 zq-@o2T}lrh@6yEpbZ1IV=xMSo-&S0QQ*xa-umt{`gI_{O4SBm^6`~4aRl;7?U6}mxdLx$tkfLu9mp~w&Lqgq z><&x5l{yjZR4y#3wE7SuWqGr6{LuRFJje3(>LEwPZVYwrp@aVhPFl!)1bvDSb595D<3Y68$BDnA zXlbop7R@Ub;Nf)IrxK)#+gXCoBnXM2@Rs(u1X%(v0j;zzB*+ybndYAo7hNUV=hVMh8DiP$aU@ z)M-CSP%O5y3VS3d73p;Fvjk;g7#;jef^zYfAi%#Rs1WbcvR8u1B24g$1eM|&*7P?C zriuU_Pp9pZph`5L-O~0;FwJ=p11SwFy;IWSKrVsYvDTvjp)++GxX;`o6))3zkp43=Jq;bi%d<#&* z^q~%Y`O4An>Bk1%!+DP{@s+~VDLk`MISB(Nq9DcT$A>OJB5^wQqUlBQ+!BYODbq(} zGl5qYBmKl~?MN3AyD_%YPmi{|emYxUa$KdZ#KG>Q9$fL7IW0FqeZYvdU`UpAmu6krAiFOVQ4@ch#XUKqRI5TA9Rf>Vwj07*w=GLgnKLZUhPY$aJ;eQol>1qiog`d^EMuIBg{|=V?1rpQ?|H&v$odgZSN~OD0woRJHb0PXN@F^NE z6kO@9V|$&2>49_AtS#^lpqe%CFwolILhno9i&PBe;ElRnTiHR2CGd*pFwBBWBnXKM zG0KAV66A{8NV`dbi1-(2H_KAxi#5#k773!_J&gI_QV9yhHa7n<35vxAHsx{&%EVq; zZk0`0A=aVwf(_DA$>0Mkc$)-O;(Xk92XB|%TrFPc18|1~wPHAiNpOV(bH!@9zEcj@ zI`JTf(_IqOi(g4wIeZbaYY;sS2UsPWywM6&q7HSz)!rXaVsUR2rh9`+&>NOmhy8l+ zJ_$Uc9=qINqXb@YI3|AZ{>+}}g^=jUA@qO*xuTFIeK3xD~kDgFNJ?!chJEylS>u~Ymvk+>Qq3cj3s zIL3t4eNOc(>yHjT z#5ZiIze{z0aV`hn8+lP=kuRR+D1WQZ(Ew3#8jJpR=y-raQ91>1On?<8mz{_~N~4-&Kpe_vGL zM+vqF|4ql?j_^=Ugl)plS@Lf=Nm{Ysu)Bvhqa|9LU_^M?ug(s91^bF@?%OSAU0e~a%`teSLW`UnmgOkrv)-A+jvKCQ4NjRtJ(r+lE1ai^3Kese z6Jp7ZQ>f9I#i4M#LTjC&w4I<(lf!?=6f9C`gR_JqXoNz|&Jr$jCn?n8{LE4pi{RzR zZ;O+|Qjb(++2&Lp0yIjY?GB$r1WOfab;c8oR%nNFH;33*g?2itS?W_1+U4M{`K{oo z3hj0_9tCuoLVKJU1ArzgwATst1Ug-zeV$K-;(w(pU*LHh_aleP)K+#!2CU1^!fo6%MzXyxOJPVY`Mb2fBAlnLV3b-6e#B^6cL^g z7&Yf9)L(ec0kcY>eBpWXYRfubp#tG?FqSS*%^4M*jf3#7GZZQmp3Bh^7b|A5@Jvj_ zlOhr1?PZzp+zM2!P>b+fgVFjs#VoTuIcS#}At!T%?fC#p?qv#9+8zfv%n%tbz;%`F zse^5%Le;h>RE&Q@B;*2BYkR)A#Ii0|Xs+$y3OP%JmY}2SY)=u|Wwx@_+ny1a0do{; zuswgnXuVRTHzS8tw&xX~s}yRoJq75ad8(W(wujgDYlOULZ?Qcau{O_FXq)ZfCg3`S zT5V4m@>`(LPTO-uhGktZP_E;dUuapkh~PWOA$$*KLN5OK&S6;KgF>OG^FkQN7Lr-$u(45~UZ)|`Vw4&}mYO-F z$V+_c&(P(Bf?nZ9p>*WN9^h;M%aJ>Kpei8zN3>%wI&y<4!b_`DUj*l=s`)IZJ4PJ5 z^zlh*DxIa02HyeUE@cAg8(<@V_6_tJ5PY8k5efQ*msUqMOS<;m_x$Nru$$O?4V1g|jm zkyyBejn`|IZGVY=b?i;3qQ@?T(PM@D7~>&aj$DppM{dpmRPp8R97q@cdNiXqxJ!wC?kN{Uxg}>tvA>pT#hDX1W*GblnrAjxJI~5u}lC|`^!v#RQvbflBBzhWVuD= zr0#}IsbyQK+)c_yf?pVAf2#-QmL8#0r~ZoC`Zl0FLL%oaqzmBJ7Oa+x^w0?yp(2E@ zjBe?_f@z5}z{&{7XN|>T8E6?n`Mj>o@;y&e$QcWIdJ4X#;3JEHmntt+TV6Pns%S7I!?_EvORirolKs{JDR!)xCN zjn94yt(s=+iVU{=*$jaKhwUjSynej1vf{S8Nj{W1n)hP@Xp+ue?UpJ|W4QkG>u ziBf0V_(z;p4|_K9%CWb>L#~ZKFt&Qym!Q&N`+Mkn*=6|7v*#gIZ=2C3huEiJtQ=|| z3Vy_{hW|cxJ<8nIu7f61_zUa@(E@dLBXYUk zeh_JIu$Lg!LVG@}i|oIEd87S%8R7iGTH_MoN>_AdCj%^r(#-fq{S7I)bDz+Yjnh4n7GFPJOsb;x&>-51}# zw~vB{yX^;|zsEiT%oh7A?x)iF2(O_6z-QXdyn_dbkc>V77l7*qEA2zj1{R|_#s5OD=o=G7|oRR`2F(Jq;@ zlzRCA^(|CaEA>MM)K{ZbGHaCj#hAJ`_kdYXvIy@|$rJg7=O8F^b|2yW2`XMum5s>C ze+nHlPB^$os0#KT&n6kj)VWl$S*)HxWLYLs22&%`^_+5m;>%^ap!nhlb9?x7LFgoc%<#a= zQrtlw!rR?j<=rl0Q1HXER#Eyu#TcN3bvm9V44!qNwVH15)27xGe6n&ii(TT1)5S1X zOy;}U5$Az*2{w&PBA*A;f_^bR-fr3>`+NzUBAI<1^oMCZ$I^Xq`k`9Sf%ohIea2Z@ z&nEF+s=*lmpT$Thj6EOL>$H`l?>A+2ZYx9hN`p3Vv}U2SD2p;YtPLzofil>$;pqvj zXJJYY=(Eny?Z6JxPLR3Jv9{=jw!GK$S1rjAwpb z4ew|JQU>2GXA9vvbW6GVr#8Bz>+OC#I%@qlx`c&-lq<*(309fU#}^H z?OkGJE$g%sI0CE_kHNGP^}@6_mJNA`)rGkGJZbjyOJL37(EdHf=$#ze4{2|^aluAw z9aunBt6Rm4pb&*>T1Aw*O-f)|eSqg}hw!z3p`6HkecXi4A$;v$n8TTlpL?`Ez^8^024Q16nGybIYvY%QsU_YIxNFpkG$!mHk;~((}zKlyy8}r(+Uo(D;PmzLM zJP%IX2Rf$cXY%moXc8OsIbDw9t&BXa=D5!qr~wye4(?%ylll;A@LTxcwtDLOP+P)_ zKiaY`_zs-j9?Z-Kk@LS(WC7$CAD|3YZ|MiCm;Hm)d;Sa6+xZ*@N~Ijhe@treKZ;s8 z-wlPLB#0Y7E9a#M&L0Tzyhz6dT!Zsd85dA=5Aqx%dM$eV77wNN*HCRO)T;d%{%U~6DkiV1XDk>;{ zFwR3W@s)201RC(G`_u60Jt@oOIinD~#qvDFbVCn=HlJUi?+N(^IiFu+PNEZj<(!B7 zQ%;w4&7TBQ&Phi=@oqO72Q^``hf==qu7JV)5p_%XB21Fyt{qNr0h`Ec zrcjzMz_#gr4C<1WmM&}j@(A>1TDrH9CFgBhS~r=_a?9a9Eg;={-3p9{v|#E(V1-6p zd43IEf~g`|`R7t6oAzin$j{x`_eDDVg8`YLSMhZ!!#^S%EsVI4!zO4AR^cBQu?+th ztinCU?gPP*trz+Mr#YL@o+-adw;`5)C}RO~{>jN zBeLT%B=j+|!;i?0V*n7ifQM9;~6GpWQQM-9V#g! zJN$_3pvm?zvcr$a4pwola>P&_>F5fM?kW^L=VpART-sAM7m`~kGkeMz*u+8jha4u( zslbIk^!yZrm$3e)$?y`MUCQthsK=~SYJ``p!I0FQeyv&l+h60a2*4)GQ~vXN4) z(?h{rn{U}B9FOkq>6fQpBY8MI9epw34Ge`|>3KL+NvV`cgI0tEr$xJpuIX1Dwu;BS z0q%kWyE6x`>thWMla^d-kPPw(g}mvhaK|8@P=;I(ESEt(q3#lRTn71sGW8JgVgKB3&q9^^0%9_}=CpE8E*e3}QV7t%Qle9Fwukwc$>Pno@X$eG2!r_4hK ze~zjSR)J50Rp3(&1D~?`_B;Vj2JxZR?(BEHH{$NhW#Cixd#OWVuv`W{Wp9%}xD0&C zeqRFHW#Cix2NF0g1D~=#l)&RM@F{z{1a6rMe4;Z?v`hs)Nie)j1wIjo!ZH>3L|`B1 zGVm$8)ytxJT?Rg7e=0$`%fP4X&m;)B41CJ|T!Ji@flt|ANRaC?@G1MB66CoIe9Hb( zf{4q&r|g{)^miHfl>LP;4<(j`&$X3E(4#kzms6N%fP4X?glAzdS;8XS<2})fCK4t$bL7B@qgzSGwQ0_ADDf{0NRJaU$%HAu%WS4uWXwpNJZK(}@uHM6|-kz^7~k zJ`t_*G4LrHfloxMeGGicM&J{3X!J4gDI0-LL~DHve9A`P6H$|oflt{8d?MQ5W8hOZ z0-xxm+1HoNh`=YJjlK`*6M;`;w)hzMl#ReAqAflKK4l~DiOg+2o9PhvM6}(<^)nlR zPeiRg20mpY@QG-LkAY9w2z(;i>0{tiHUgiBc3FdD;8Tx?_i>CGmw`_``UJT6T5jJ` zfW8uVtkb z)DF+A5GUav8TgcQeCP@c9hZSmIYsi^avAuPGa{P_ys{WMCw6-ui&w~H;8V^?GTU62 zfloQbIdqoiGVm#xd|VvBB62^3DtAlz*E`O zjD!kL%qhkQ$!X^Kq(g=w+4xX+zB`Y_=SvNouf))^T)r;>SPkH{&d`xiG`Wm~3Rm?U zha{HENT~4nvPHcvBcZ|~jD!l$kgZwiG7>6$dG=+K!q22Kg5uC`Svq>qi)bv_RL}l zye>na!b>CwxeS2{*GrJ=G6X7olLQf$AyDC)Wli&4hCqdHks#_a1S-5#fAyDD_B=ETP*kptoCGffofePQBIfBjaG6X98fCRZNL!iPBW^(LAT!uh} z*JRRLzRM7(@Iygvfuk-%pu!JJZ-p*Hpu&$xP&9%eP~o)_6pvsKRQOQ|N=GmZD*TuP zWiA7u!he*Y++`qCcwKiEr^00*RQPcTDqRLbg`WuSL!fS|b<;6@DeiKgaaCe9<4?C^HGU42256DnXXZP^fT=1i9|EVu05q$Qyw- zzTv;g^N7n}sPNw<=AJ?S}I%yLxtayV6yue2k15lD%Fzlv0MwPTn0mhKarr? zWiV8@Rf1ZV!BF8(C77#Lme1tMQs*)lD*U+w^=g^fA!!XRgQ3D-NU%z+IscTP(Pc1H z_)7`ax(tR2@025|$z?E9`0L)hZ{849!B9Le#9|_Yp{_s^Y!D}_U?_rS5mmuZ1T7+} zf}seuh^PvN;*{7XqAD1Q)1?(_4!gXj87R7Tf7Cf}uF- z@_h`33L_Zm-`KJj_!tZoMlclTMAXM%s4#+|h=%+4dOwU{sGeXJ`WOrqMlcj_;ER0> zh6*DXikGW0AA_O72!Us`6dHE<-TXxG*fDL z^)VPKj9@6D`920ig%J!zROjQfyfA{Hh!*)63>8K&6n)nF7z`CgFcfVKJ_bVp$;SyR zd<=#PBN&RzRXzqog%J!z)aYX{R2acfL~DHvh6*DXim1uQV5l&Hp@=s47z`CgFceX< zkHJu31Va(E_!tZoE*1!0;6{tVP+a1SkHJu31Va(E`WOrqMlcl7 z4j+S|!U%>U+UetqurPw5h<5oH3>8K&6wz)UgQ3C*h9cVIV=z=0!B9kdeGG;QBN&Qk zUr+}_5m+LqgQ18#BB+C*h`b`GgQ1Ah1#WI-FccAjvvn|37#)@+5Zx++p=iq$K^+W5 zlqZ5Z7>Xz&f;t$A2xCtNLlNbRpbmy2!Z^{vP;5^0z7B>WLci%?C^FH;Iv9!%I?6;) z2SX9Hh@cLJBD2g6>R>3Y`xSOj2SX86+Cd!*wF5P(vV%Gpim2KShKgk{6c?ykJE()9 zi00Zs9Sp@B>g=EnhN7+B4(ebiq6RytgQ32H&sBC%2SX7x*+Cr)MK3LOkXLyGLvata z#SZFVD57n4klO(SLlL#w!7>O0LlNz?gE|X#%3F=@dqFg7agQ4~#hdd{!gQ4aCl{rBj48`TX z0s)z*5rU!kRJ_s&>R_mzxO7)JK^+Vw+u8~0U?`$mq{HI?1Va(cb%Ht=>JX%>bAmb; zil`notZoQ~B5H7gIv9#*l@rv#P(+PRPzOVCEUk5d=}3oQDB7Bwpbmz50{P*6PACLp zh`X>5w``#WSj(rdmAC*q@=_YQ7^fxPFyf!?z?n~8W&yZ7V#gQ4&O2y zDvWR_T77)39!5Bn^gS8jP+^2a@sXC-$8adPJcKWmLsp2MLrhaC!=czK8G`GPHy=Y> zcx5=$Whxx1Qiel)07{PFHO4E$p}aC2$}7X6yfPfhtHPmCJ)&4RQAl3e3 zIsA3EksRTY#c8b{euX%xBfO9YFp8zJzcrS#OOH{iL%a#h=P;kau%%vgLcZ3Rnd5tf7dS%#>SB5QlW!REehAnwz*pgRmE5nw&GHl5!!@KHc}u z+%&^PV1^kcF)$!GXBdJAhzbY_l7k3JlB6ifjEW1GKphn`Mlj1_Kt;s_xC$6o%$QlT z;_COlb*lUJ-BEwL|F55??mbnfs!p98`*c)}Ek)(nQdEvDMdjF1RE{l0<=9eGjx9yy z*iuxEEk)(nQdEvDMdjF1RE{l0Z$vSj8kJ*9Q8~60m19d$Ikps)V@pvvwiK0POHnzt z6qRF3Q8~60m19d$Ikpttht}ZKXcQ?rFDl2DqH=60D#wq0|*Ra&O%g{(PEVJ%6TfyDN zx<9~>wqaZAu8%=h!*%NR}9Aw?k zQU74;-h`H|;gQz;7HvMty1${#M_c!}mT(_q-ItPosCDmX3imMUUPGP3t@{u<(}u@d z_vp58kFf3#^^dgf*D#Q5c${^g#xy_Py3b@-qpZ6-`A1uK6Q=nX>t4e&pK9Gh$$z4C zx9kM>H0!5m?>%Nj8d$?luvb4&!-EFnmmW9LqXj%d1Av9P(?y!e zz6C$=u23AEFDjk`H58|Rk}2K`Mrc&xvyjdOFVtsyUqL4BaGNgYq7+t4iBKY*hyJu=kEj_$4pBq%&3qn2D_Z8H zPbQti1rcv+TJR`Z5ssp+k(0D7cs{QL=kvHteV4}_B4%1_ zEyX7A1&##&vhRocbFi*!H6X!T)2GGoj$pmivbrd45@_H@Xxtq$*%|O|O?*MG5DH^x zu8YCc@$hNm%e@CoQp@zZm@!-TGr}Otu|A6^WP+ObldTc6Mq=e``X{BkeuAVeZJd5y zDmi}c$tZFaB5?z~nDAn3TN5uCi_^3VB2=0Z6OoD|Ag*u+p zWPIauAy7F?ycT-`A-YU<5wfi{o$*`iV~yWxy^c(>P%mrry`Do9!b^AJmq9&7U#TN3 z`E5t?BIgMH$AcV>92Q zAE%I}>z4Xp=#u^|DI64=_`NWyNl(!cL$hE9iSeaiXwq1yrKHMmH2ynEN0XL9?UQtu>mY*n3wdQ+0RnbaOa z-ICO>7`3#jn^1QpsW+mGS2YppM@i}`#I5n|LOnz(e@r$HZN%S3f7SS8@hU=^hhAVh zmBD4Q2f)8IiSaVTxA6nQR81yP!tBG%6;!=Rym;8ts_vDG4#8c_0~ONh(Zesdwjqfx zLhcmoZ%~qn9X|TA)s-L9r2!&b@UpbS@v<_wzY_OWpUu|X64cRxyTofRz2rx%$}WV~ zro`jjP>c)ikd^8mJSG$0f}XbEN)gRK&!$bmJd8tfM@UmsMd|=VP_4ZfUQILO+?4A{ zFWH@oJII4(w%wXcDg(EbOhj!8?Ld|k+#_KvCDU6pqZ$?1#7Ci%FSxEA)95mK(PGnL zCQVK_^_U`?NN&WW5s5CX$6%u@E1f5$;yI9Rnh={_A)B@7DI{J!TaG^=RT`3`dF;9f z=dN+gA*FYUAGQb`r_KMy^qUAK#4=P+6HlLnpFHtuM=!BM zTw+XT(wOQdyDdV<-oOlq4nZf;H1Zy(!|6|pO?)%bp;=SWG@VpiSZAVvY*Z$V>`GF_ zSiZ9)A(?m=G)l##l6u!Ar8b}&FD?`614-)3DEKW}O6Ro8qpF&|R8wAuliQCxFVnRt z)Z~s#|B)10YZmf=exo+oF{F!1o`-T1oh4>-t}JG^HC=9G5nWxxNOXAz30~ShQ`}`3 zaFuoxcf2P8ZPY-lJi!w+@gqpBFAC=-sdLaAH?`@!#tYmg#s`vmCnB9%bdb2+Nq@iD zFuk~C=61`$FXOP2zI22FLysk8khW?6l^3SOMDwNy)wo5cC^IUIfNb8hn2Y2osADT! zW0L&}7diw^6JN{PUnkD}{qFRq!^HoI7OZK$B*8>drN~6kS6icHbQNER_O)4+q{1SP z$+TzyuEa_^JX`0HL&=d``~_CaZer-8^p|9i8X*OT8v`br=RsT3JMN&C#k$Mz_ieJj zUq%CWV$K)q9OV(yZ%E~j$tK$MUKmhtTYd};m~C{Au3#cGb@GczV!E36^9#_n&lKC+ zkt&^S*R>FhE=%uEiY?nke&8eFE!Wgr&pl;$*ES_=1jqU@bNP!>NQg}1bGlwo{Fe};oHy%#ZP zR%z|621{2Nio}Ztp>Pb4qF0XgLnD`s%2wJ>&Wm*>mAf|RR#26qvqi~e0YF2acqDW%3`639-qlyjy5I7Mz;-y@qE&le0ZFiQ_-48 zbaV2{8QnJ#kADF27QptL{PxVOI%!}9v@NQGdX$%+xdM1-?TTfY^Gv>t{uFp01IV1$ z1|&Hu%=NX+fU4PZPBV4$Gg#t7YkyjrITHt|>*Z&^Q--yE_#dFylm(`KzO0>=BXjBl z7M+I-bf)Kr-cXxc4u;V)Q800L&rOP~4=J53n z1kEynzzZv%MsJ}EL6@Y2nUr6YhcRk;dvGm)u6Y3CZqh7bJ!%eb#&JIA?3}Z65!vjngcuXI@qE*VhQoV0OByP3d5|LpN5%+fWX3&oZf__Zt ztf=o;dMvcjOfTCq+g+9x}*<;q^{mU|En9uX1LA(vV*8=LUdjapqslt%yjAHU-UK*ze z=}*9CH&}K8((ecI9vtryxeds-aC{9Yp-9GypkyGBH~uEoMeuYF^@i({jA@B|yLzu7-T?=ZB761^>XO&GmWgi-{^e&x32-;vY4vdObcKY@ceITAl+u6NYs~%DD%3!xJAK~?_`V+WjfD!m3KjlJ znKH^DVeYcwP+uIz*cuIeu}}+7B2h2E6kyozF_@MGh)dH>XrksXm}hG8@;Gn%0P%PS z5I&%3!a1J%t0HXvXKR2oJ)u@{+;x6{UaoXDIoJ6HB72n1rsXlA!{nA;2kRcC-fR~3 z1jNQEox_hW1N0UeMONSpL4E5$Bg?n*;m#6N9_a(1{ zgx3Ul?+frQ_IUUDybr544NANb;1!+8QkT!S%!g@vinr8V{$2iCz3uyTra`zEf6^WE(85y zK-J`h(@a5LgtG41q3u_yWdp5Jv$G4t=HgsiSze5b{5hF?|~XR-Rpr&;qT95RHqSid{?d-)i5vKw<}u3suzrT z2F5%MNG}4i4~|!fWC8gajxPZj?ScFT$FG3IFRC>Y>4_YI&FBCeq<&qFwz{ijXy?$# z_RDjhVmKUOaUVYeAS0|Ma8wfE2#c@Yb^w%6M21;>hoK+94zmtdo!&4@`eD3S%RyF? ze`v)+_>Vtt%t$|czIoC=FTE}DCH-UiK;N-|^f!S_g<~?2oj~TpaVnsMA{pO+ayGCP zfW!%^u8l;NqaPb(q@&A=)A?`>|0sk4A9jhukXvq%%F%C@^$W%Oxa=z9D;yI(O#QjL z;vS_4C+e39vn>hJl+JbcJCr^jC3;VQZo=;=CVi7^SM3F_?rfcQFJj^Rli=Qx3e7n*IPy3(r}RK#95`u)BfXit?@lz|dviI);hdTex+i&@nzlVL8p7T5 zdvhzf@cufC_y+*fyw`JOoc9Z`?*LNV8>_ry?uYz4x$!cHOK~quAVvTw?)~BDON7OJ zBpf_6TS5^j?$dxx1tdDCI$PX_MHiW9S!J{g4Zb<1)Cp3=ebm|X_y-y0@djkf{U-)+y}sHQNw3srotPgN75j! zdKj;@J{<{VW5;d;Ic8($_6{&_3o^UWW=yqcKeBU?gNflz53qk3WDn@}n8VAI*`^#f zo7d$yEN5#pNzXyy;p5c&3q@8+-MSp~%ERyD(xWHVUBaQi+z&Ij1>)6Fv6%>C_$(Yx0VIa+!toBk#_(NL{l_u% zR;+420s%J0tbddZns3(@0 z+~G>+jOYC%Jv>Y4yFqu?D{=#nx+vlZ*H)DF9Lr&d!%yhA-zgWzv4;!Sh`iYEZI*Cc z(56{a$JEQiuoef2bzD0_(~8Gk+zE=XlbCCRK&J)crNR4LeL0~Ce;-8Bv|#W|O}MTi z90Z43D8e%*;f{)kg5Ckd{dWNQzz^7j^K?iiwLWJ)8mF^!wjF6x_$>Q}3V-(i+w+{A zBR$Wl$fp^A%o+3Mnsak1c_`!>;8y@5XTZdBa}FczA>a=H!uwUD7Pn`*xolYr#TyS_P&`p1K5t0KaAcWGiMlA znJSiGWR;Z@Cws;DtuX3T_Xq@#qwXDW=c>DVCp2a`@!8;SHGhH0&yiQ`TA|s>&tWfP zDjFfv>gLF6Vy&1i^=!ISwCI4H1Iu2~q%qy~$#0L*QJ>69N-e(3!{es;8O2xu&vw>< zB;$!6vRg1lW^82xtmxF)zl2&arEO^coto0I+AQy>BMYSakn~S8OHP4luh)?y`Q0$z zZ38H(-x9kjb)?00#uOPO!JBpJqEs4ZbmV7@Zr`$g^T2yDAo2}#yi-T^Lhb=xL)tX( zy;G-%OI?kSz*&IE53NaSP1;SsFDC8AwivKleI4^LIt8@kEgj#U0MB%!PhnOzbLD(^ zOa(+DhmNUK8bHne=l6=Hk~h%7)_Hq2^Az9=YYi$tds!M1DCSvL8uNnN^Sb^<7|C1t78*CRJutkoE%bRiyC^md2K^O(`M@hzvsL zjkB7Nk0%3{lQs!Tn`C9P^u@|?CbJAQzE;{KtC+N9aB`L!DM6|>$!bB`Ktw(l5Mjw} zlGTee-qSG!5aElbRaW0hB<5s5gzukLWi=w-N{CDb6tQMB%_`z+;Gwnamqu74npwFU z5!7U6BI{anFFDpMkGzdsY>_1|S8uPvYBr$#>ILqI+FA&hAl z8nno2B>j6?4SORno|!2CME0U!y_eONw3WbF#N2;tq~1doY_TTWT{bsbCS$-p#vQ!M zn#^6}&nyoDUy8tog%_>h|8S8RmA2@>lFP%!?SG{epwb4gMywS^?CwDAq;xP!%rVGB z01K3#0UYV^|8W4XO8{F{fC+uM6^MnRAA1SSI|pez`@&HPG0IM}(di}@QH9RB6R)VE zT4{RTt6rM6?|8M1%~<2Xiu&FoBu+6N(a2ZT>l z#-*q+?h-|4LS0A%LP*zzdX1lZuCj8QqNTFVhrTsRmxXxQTkWY79E7O6UKRJ)AXX)8)BwA4?#;U%GBMM8z@SRNSA!8-TqW!839k?t^xNo0p^ zT0z#^romQ_&jZ{iT5hd*euX;73T50!mnZdJ_J8V4UtzhKQO?jnMrj3N1plC z8Zsrdal_!&ai#`ouq_Z;X-a6wakoTsm9}*DeU1A_fIilzOJynbcYP+Dos7us0j6QN z*z~`S!szg#pUzA-?p3Ocd9zQI{dwMe5a4!(NgDoV-bh{=x8FHQBL`Scsd#^8oG9muew2?oKViJT_S)-VEHhdzH?UmJg_D zpohOW-`b}5;eVJGDGmQU0sfvI|3T^2 zypBRTLhP$vl+--SDz{sikj}7G_iqB%g7|1Tr~ZG0gD=LaCgyt+Ox)3EENaZf;=SeIbV1|1lr1bB7|>m|FO;JBp$dUbIH6O!XVZ6|V+r z4=uf3>=_|lz{-G~iBW%LXYIraFWSi9{xG>#{zr0g)$8hj4UHr$xhC9wHDJSq)&`s! z@yGSGlk87TK^3c&WE^v{ihUFa{f0p3XI+sj&7a%Qb)NITHf?VOG<6&;Y59L?`opHp zxM!|QmY%DuroV1-{)Z{0*W|3#Fjyk)_pN2wov=QcBClH?+vEf*+l|V^$~NExiEJ!1 z@h>v1mWh5j&$YEYwOzy{6T>pk*atK;8arM>v&Hw@fEC+4EB>nJ{I6C>(Mh|?CI~}+ zI~jW7Wu?nNTIS|U(=mLiSZdkjM9&~aC|fm#>4c%#EB+bQVd1s=Ir?mRZZge#TQ;;s z#+?2$*+OE#LZACqsO=mT#MY@19z|w*-8@t>yc8z&8i; zXSRKunv2ch9qKEq#be9cVmmE!;$7C3vK;&G)Qq2@>yTe%w&aTChnR`+z8S7@9n7>F zKUg5*#nZBa{I5(|LFQX9g8{N$^i8I$q=wcWSQ`1ZJ(dbHW%-gXRecMd2-kAIvov0Q z(hm^flI9PYvZVPp;Jm0f!iCKrGG$@&cHp;=#^uc)E#E(ZZzHXLJ6!5wX)~Z^0w6NI z96xs1@><|m0a_l0LUPkM(3_QDu31N3BH9X%2LW#B-8Kn0Rv!T-Cf?F06K`oYn=+2u ztCWZ1_L<5<`e3DV+xl-x=c%4a>1%(Iel)R6IkTGEQFZEY0Xnqym!*-1(l8CLBa4myYKcc|rAo4}tUjSG+yt-e!G#)bi80diuU3Z#zt5%|AI<09dtIU2b1oagP>HgDPw0*2%elDztmC)hIJm6i@8VdqykkO=@w{aj_2IZ3qL%#OWMFkgRtc8{ zcuuxF;k7F{`|%b*v~0VVDJN^rMZ!5EyjF&-@<|5w8ue$bxluz~0xKR2$ZfN7?sBPX z^nENK^?E>R#AYK8+y1OcT2B!Jycxh0L6y@nKXffKjvsH{IXRCZM;~sH;Qr&Sr z{ZG^x_flm)2PrpK*lk>KcsZcxihv^YI{pT%+x>EEd*QRc; zZ#M2RD$XT=udH}@?GE&P?tb-Qsx+MZf20b|`aP7iW2|M5g_?f$-`epn6{j7Gthm~d z^RQLSH&m|)*nw2&qR}+&Xk}t5yy=C$=D!Yonu;^@?@~g4GN8Eq6iEdvRDbS@O~JD9 z$H}`hp!g^&uFaF2%&FE#d)DN-{YlEhEVxg3c+{X)!JMqU0w*)9bzTv@W{VAk z3ibsQq?DlTe@`;~`e#fvk0zPQ(Ns!bhTjxTj|G?p{29}m0j5*_jOoV!)0#hFO0;|| zY11FsqpjvjEn4;^rRjAtho7je=JRL;p94s%`2ig70!rjnCaxj>3hWnvw3=C+(P9#= ze8`5HY&Dm84H%}df4zwOpRMMJ_gY;n1ZTr4#6sJ-)E1GW1@5!l65zkfD2p@ z`7lc9ET(wrWew5>?dN7)2-V1q3Zp54(W5!kFz&8EF+c0i<&B%A#hFdPtpP?9!p&MG z@j_ytIPVKE)v^YaWFs583j+etlafXIj|3i}K+#qkUp6*Vtw1bP_GO?=(Ds7~;KaJ6>gF8de5*UWcANB(l4!2hnH zq>6FpYmwk6_Iy& z@~TE_G(3#~oHEU^Q>K%EP9h0sOXg|{g?uE^-)104~dDAHx_U&N0 z4Ip7}f#YE!40{J0&jLy)B4O_Xwg(_#e+tJZL>TrjaQsAsVaK{6TL2pN-KX2I9diQ| zU7Q&!MQM_F7l5fAK*DYcM-w6pyDJ=>0VNcXum=Jg0FbaxfMXO9hCK_88AKTN`EZ;I zKq2tLM5u|ixlBv#OYY{u63DyVonw<;RXweR?;96Bex!5T!_T07}CGMHZ!-!oAe-?I|idZm6oTI+1g7g6mV|cZj zS@NP439a3@#DpJFZW~E{aP--X>SJu+M}+LZQ?qxDM)KK=#$34xcQfWU#sHDpks&KL zjX`Pzz+1M@XUJMh2Vm_;Szx+n7V`!80l@kKTHc9HYW{3^@uN?fnQ|q`^mUt4NQQ~jFS5czwuIn)Y)tH3w@FE%eLh#$eG}`$1ESiYSwARooF9h?wwub=nzU=dGJV%7@%f11}K0paY z!=9NKf0q8ISP})tLNA}mVF-w zZxwN?mJd0@t%JzW0FoFLKy2y3NyoO3%b63!DTa)pLqrR%I=25#&0X`f1a!}+loHS# zZ4aUsSzm!;92s&;d3(^>0$3_~*;3ILXf;W=dg2mWERF|y3`q;jEg4cQmH|5h(0+#o zt1&d2=Ys9@$tRj)G8*zy*ek(wDIoljGQP(|{7MnVIq^dP@nY8g^`mVxO6{Nd#M8UU z>b(m(@1Wj~m63XF32LSk2j5o4iS>+F@u^yZwnAVFg?cE9l%VjLYJg<+6#;9)HwBS< zgUAy>q}fr{O3A`*LFC9FGB$|J3L?vb$m$@nK@llb_Xd%tg2<~u8NCV|*IDu^ryBI^T)yCHy#Q(YM2g`-*xsB3(^0CJ9Hl4HH$#_GYVM-uH7 z;Va58DHf{s-|o!kCx9PM$g3V3j<6~FlV7U8UVu_P5p%A`6OCA^cOyS{05TU$nQOKs zq*VU~{3p^DP9?3l5CyTM2Ugtx@_zkcgREM|{0qIpH;J?fND^r;I)kMnK-!Cea10>A z_F@zq#{o(xBJIV=z@`JBG`bK=wyM;{SISY-5{Vz6w1n=A`tUvzoQnZsz#`v(3i#if zNZaoja1mH|i?kSU4IEbyp#gWoaXX-dB4WVbfjt61dQMY?yq|LolYu0Jtm2`O%EUyE^tk2>2lnBi_1jo;S5{igf@tz0= z0JEO?BeM#bhx{xLAJ=!G8IvcT5!=IH58Y6<~~waU&S<~0(DawW1|wdEQ^0ko;6 z`LjkmzB%m{>!kO zw^Ly!72|~4U7!fpA}5OueKk!6v7;&AUZp&Y=qekIyh|LK|LA{2^j76$L~pj764C8S zmw~Ok>&;1nyi?KAj60__PP`@_M=m-woK%!zDBdU0ery3=8|#Ir07_?{cp7NO^M#eZ zz`FosLftPR+mfdPp9_#_-mMtg@o~&+&^aKHb`g}yRO@E2TnCV;)~j&5OoUUdpW)z} zrX>`Ssa9!kG*AGUY8?&7Kq8!KErDYJ5l*%4fa690S~4$OZK*@?_0TnF59aKZ337Y^ zGvpK`DD0{miJx;*2g3;A$zHKk7b@|p0J+==zBV{?DIHz zR#Y)atUo}O4_*aF8kgdphtK2kv4#Bz@gIQ543woWZi10qA(;o7aZ*mXDXn*eMi{}q=;@_nFh0t$yd zj|qv|=lHH-W1q}K!>`Ujs*eFzS|3zMK%zlY>)E*_OD;DNk{kH3(CJ43I^bB0HiuL}R}8;bCT)8DL+ypA7TCdfK=SRMQ8wCiL)qg10SCU?H`KY zQ)nqz{9cJmlX)ys=SV;v%gihBB9_^uz!w9gNWN-|>2QZIYlP657}6h2uq`OoC;uk1XA|3K1=@Is~AWX(sQIg+fKH5*2x z*>rVkTA!;^y_|R%+l*LWjLU3d%a@{#1%3=^CkvmvQnd*9$)w#X zd@afM81VZ^t7w8(mE!Uu6^*fE@s=>1c&w*Xw?w2rnx; z2E5iJ>28*KEw%e|fN4Q0(<+}Sf##DBHC>g;bhXdaFu?S9D$^Z4(+vTp4^o-DGi*3O zp-lUcmxq*ztv1hW@!1M`(b*CqoOW9#8;{H2|9e1rwe^>^UG%TlzTsL~HwR55AI9ax zRHiq4Gv!@DWx6Pp=|P{Vb3oIkRHk=*rXvGPucb15$;LMR4$HO=_%71;<;6Q~0KWqNg*3KNcg3WQ${vJ?06^NP zyDeV_;B5f1V|GtW&mnGJF2~$9#iYGE8vcVR$M)%oyT0M8d< z@d3ckhQ|^BRzqKoHQ*xo-N3E~M2>EXekB&;%XuFGe-}_#{Q?$hF}&e}uTQEAGZcCD z#3DbRhX!dnxZJ@Y0n*0;$$=w_$WS0$=qLqbECA95j#hwrD}dCy7(a;;)p{HX6w9vc z;Ikn$;ZLy~!iQrVH>7+VDmFs2q;2!2_)XMPIC+SY4_}=eqnxr6le|iib4QF;T#nuN zaI`pISwT#=cF%;a@uev`;NF~ zG?{KlWlHuPRRN}FQ<;)|N3Q_W=c!D|zT<=dQ}%^6LDZ&X-?1pb)G?JQ*>|iCFrARf zl(0|k=f3GC6=t2{=Q{Y1|G5DFhXMX~1N{G1I+M80 zMJaLi`X)KdvthZMFv`(Jf$ZH<*}Yy0?4et5COTZ9ysR=|e*1)vl)Qb4%!SWl)uQ#s zzwnZyh_4CB$h(nq`k0a@ng8@D_b^%G zI65Y`v0}lbF?xe{qMT)BU96hkiON0~G`$;@FraCFRQew)-8PoNrWwbJ*JG0OY*e-w zIA-T_g#E)LbsZGSok-6{<>HYO2cz%<++&oLv)FN9VuQh2z+pZgPQw-^>EROt^u(zF zVHGrszp8|m3#}oo)8MXIc(n$8VYC&eaKu5V1PC|YXjR&a0SiCC`oR6Zgy+gpo;k71cNpR!a9siE%K+(L1Gxo`n*gS8#lzT* zyxud@bH!D`g|YOKOCYlzTzr}TK0x{^Alu=PU9`e|58;|6UxDZH6kHrjpFjm)gNqw& zuTa4UKt6!uJ%E|;6jH711{NoxhDshzDs55;s>)bz*M+8B|Y-J5w!bYfT>q1(?DO-{s7aIRHh+5Q%H+26K`cI z)8^Mb!y5;f?oMSo-q+MG!1Rw)rU^dNqyW>8sZ8VjcQNk?Fcq&!NrLIVrdI<@eNveg z`Apvjn5LyNE%lk|UzaRD7pF3vD{ODfa#KGO{W zrqZ=3N$`xHEl&rS`lmA8;%oXSz%(P3$-f~x{H-#{j4Y;Y3X23^{D~a- znW;=4`Aj_3!-t8mA(iQ>x4nAtWq|3KRHh$&O>H)aBEwPYJ3f++uhW?;CbBetC}2hJvyj|qOoJyPi}w@uT04Tq+bqXARN_z5^`nS1S}ErY^^4Lp5Dp^C2u<6U}_#Dj2sPK1aYX-kefGkBl!s zxd_-9fQ%o2d;rHDzyxzK;(IGn3r`#SXTC;sGaPu755>$J;69=p>=z$|udOD=eM#x; z7vHq>Sg80v`o-5greMD~QZ1Kx-nD_^QGSJ|UTR^oM|m#5G$55J*;#xWU^*q0DcM<+ z-e@Dr(zqs-DcM#_)T@sb`UU%(8DlWB( z&xG%3fNs2vmQQ1-usx=6Z%`VKT=!J^+KHyydrBXc1Yy%3SWK81?+sJdq!t{9Kx_6A?kFbr`3FyN(#+)_9U*pYz9 zS53)PMy^G`XOhM|dO0FX{TqSb43PBQ8PW8uj(m*{dRIi&T%LsY6M(`DWK&5$HOqH- z`TuPs@;fF~>5ag(2kg55=>u+)9}Z*dox-2f_;U__R`cf? z{3QBoXpg+?Who2y+G;gsfp3iG^0LT8Ggl$m#F)@<2m{2JTsX1;{}0C8_=m!t{#XFlA@adqnB5+?^4i?^ZgLbo)-}A0~B#TWU#>BAK(jBbG-Zh9Tm)-7g@_ z7pXHhMPzlW8RAz8$ZLiH#7&W2yk~Sg@Z$iHP7Sfn63IaJnu~#7Kw8iC*i4VqNlQaU z1K&zoWqrIE6OnzGH-Wzfz|Q?fTO>lq;zfT@3fo}-&EtA}9N%Seyk8N?+=9tddOvVY zg2)7baZfqT`g3IaA-rvZ$!K7We~8V#yLP#<@)g4X+cuv~?xHu%M^|D!FXFJV!iy1y<0E~4Nnq>0Q8Qd7Zp(KC)8GV~1{I9^7#sJB9u+w58Ie8siX)Ihb60%zLU-R z(~-in0g2m`bt{6Gq`k&lA2IoJ;@AfZOKVd$&8m7m%lBy_r;Re)$_b@lZ3r}R|nOH*%OM7ziNGw4D zBD+vL&$G1ifv+HKWhu^=SlZpdZz8R2dz4d4`v~|ur1dEztzK{F?sy!ECLof9kS_=~ zBJDlkys0X33iMqN=C$bN5b&Q#d!++uJxR+v9##S(x1t1H5I!czS9BfptqjXixX{{_ z%OV|HV^U=CD#$dZ+(jq?t1PV=cn3h$Tyu#hwPsn>+_pgF$_w1DyG-7s_*=M;Z&EA* z^E@h9jGC}IEOl}X@KvPkFUMTNM*1G$w*p#r52M^-22q7eu767Rt}9;F@+i>zgB~ew zgI(102CVRJLSQc-aqmLJ6A!0cs6(;PBk#MGViL>eTNl5yj8cME5tpG-^BmvY>DI^b zUBxQYI1+mZVaZv$ZxFyi2C_=o|M(o=0Y5}p8D4m@r`vPosP18DIX_Z2SBB%GaONB! zE5i-oC;*tcnOiY|KgCmUDvH<6w44?F>QBQB4#TV~eImFTLQ4_A)MfDd ze3=gr{Ac01Gs(x`TY%>5`3l<*L({NpNH$-Lk&!VArKf$4NQVD zaEzvguY(#2r=w1l&arknzN@1eK0iI=-iop`A6$tM%4X}*u(XVAIGZfzII-S?Z!O?8 zgV9(avU@ozPW5z#!Wb#1g{DJ~?B&db5z}cE_i{GCu^u3MIoJ6zrI7LVa$bV>c0jnJ zHW<2>vkW%frFF;gUD{um)6#QpLWqg2%E50cbBxA@MH-S_zNqK&8j_Zg*zYu!2ZFyr zzy|?|&z1d;8WBsS(Y)g3=Qse<34_n#r+Sm13oz^CteUjD9&*+7F zD8diNhmY4bbT1m?aK;SF#^N7tuLxz_6^ig3`}!NjINX-%wXor9)mv1)p~&!NRH@A_ z%?x)6BEuA6VD1fyFaoDr{Wx5fjKI_C-~TYE$FQ$NIX_7C3>abWyQdk!SD3nEiH}4YCX>?IAST8!d4E%6fdw)obK^P53w@qZqy>?e6)6Maey#}n^r}0w3>e)b;@c-oCVQ8}H_G}W%<5%X zS!RDz@=97eMq3>6OiuEgq-4qIM--9L^UomilOhtEqPaHW!ZukEDOYP0VS(UhLuI_- z6^QWb>MKebX#*w5kO1PostA?jAzMG(0rG8D6Fc zzclaO;fdXkmpxR>?xtcd)N2QigU+?qQ(paHbLT#ztr1gkqk1B!H?`G~Ib7Lz7snLf zDeu5^Gx_E)4BPBj+?;5wZ-7BHAE&1HZXJt9!ZKrMidKwYPR)CuF{L{4=)(x$M*~Xd zg3^~G@x{PS6-rx>hLCg{(CYz39owKS4A*Uu&KIIKFLyg?m}_9h)Vri0@gO~0@TG{- z5drVBtT*pNwVo5zb1r1BS5It7pjK{PZrmr;m$SU>)>l@gu#fYjw~ym~9bo!2m8rmM z(cElpQK_j8QiQFso~``c(-dx?Om?Q+ptCXGhc-9SgtUK1(18$_6{_z;lAz8=lfy4z z+!l>sNquN7(S}C zG;%mhyFXM&OUl4f0*Kt(5+k-ygMWe64tN`Yd_eBOkbFQcwDy6eg}g&**kp+ZX62qM zZVBeqQ2N+=&^NvfuKp133rOD$WCR?;0mj`n(em>1`1&|XM9fbXEay+Ms+pU+l$Et-K!E;9fIc-qPupa3pY_pxq;8e^ z@>RG>>l+KT_ezC(qk8isT|eAr{xDNJ!v_snD-u!ep|!6Oa&O1 ztj$aa#ASpZm#yl}O{0#U_jL7UjON$iwBS$5#qEX>9+$tb>NcHXGl$;uJ?|_1Fb1eM zZC)?lm`>*UVc1QevC2d{ANF)K^K~p!Z|477R)_RfUIH#c+H45${1W7`k=PmVE=97k zL69ao7TW2D(`ah4ob^v-y3S|ntxU|**_O$^;kb7Df8^;P<&-?VT@fbJ)gp$hnB!~R z5%AvPd7tKcf1=(@fq$l2cCW`2{+BXIdzQUC4I`i<(lNk)6HP)*h|3gR?&D$?&e+z3 zO4$)qtm=SSR!EjBDtJZF^|o;tRT61ifGj%X#X}{Ju@Rkr+4ldxd+|o3VYuO0%~d z|D)1*H`7O!&c$#k)yZ#o=RaY?rgWlP0I_+F=nO)zXM}d6O7THD$>Y@UEE8AF&j=mH zwZMB3le+=E_b4ad{)Q4=fIm=xHK~v+iDmb(D(3mBc=MyA%(RfKnZE=*I{s;N>2iRs9avfb!qe2-PP+0pVP<$- z$SFi#?XR|mpxu|pscG|o_F~6bdz_ICXvuNb5@&?iFv{9+G?Whkn4H_&VW1G&U2U}_ z>>u*|WN521179RPIwWtWIwR}Mnm->{8^#MS)#dyh9o)dsW|ge#OKyi`DJ2JnI`LrR zB!n{tP&#D_NPSo+&jPv>ka$$3ITW0ik8?x8iFQeUw1gBqFcA^9E~1gFlP2G)*VWFCULj-eH`B7PoGr$AXpUe)lY$xBTH*Qms;`A=u{_T&G7IL+2diIXCc^T}&|H;F z#+k=5MKUuaTNNm}ox)_5b!Fsi^U3W{i9!z7+a%5rTeix-s84!t(bzl#h!b+Swk1rC zO~LZ1Xz83#Pe#o&ABQq>$aMyIOov>_*z!k9Nbe&|InSUx?sBu$&d++~TQ!-t8!vb9sHzdx^%JFA_~F^BT*=)o zz&ijEzxK3pDFwIrE1hsK#dSFQmhdlgrD~Rc+lci3HtRc<8nfIjQw2Bq;q$n&gumRC zj__E7a||Hwt_ljYV*!{0{1kvR?Y(mON%$NQ4ahoC%+avd(uOFoUVDc*3=q?w?19xV0v+%il{T!#z)!Zh6Nz!)@KFb(9x zZC!uA1G+iaY3K0_aiz^G-*pD*oo!`&u@LM0?i#f-SrcYLO6(lq+c^%Ecz~_MtO<8E z#HNG0qL$>Xo@BLO6IvjUYQHAr%qzjxt~*yHlfCYKPqLfaPV?igBC>Y(YTxgu9v$3? zDv3r?9;c?kqiSsjKg_R%)vJ9u-O&oRa);KE9N|f}a%FE3Ir;alWR)*KGoC$>j7{BY zl}uXuH&3#utMldt$F?PFJI~s_=*cVGHY%BHM|XIV6|QV2BFwaIWbMM;W`@}tCAQct zt0n0^rtvKH!{jyi#cpR$ayz13&&^iJq_sUf$$GZMN0{BPMp4i8`|<~iF`jl!tuT34 zs+5Fm-`Xaqmf1;bS0J8o_h5IM8_6&?dy;Xtzvkyybmnn)xM%IJNZYWxStX@JLWxsz z(31?i-K=C@7nm1z2U7B}acGhOCg&{-BYtx>sC+Vo4|`l~{>|yCA@3H}BfOB$Mppgg ztf?hA)sy_mk%kWG#Ifv8PA5 zyx1Brw3fxAJ%Po^9H~NIGv5kS*RuE`Phh@RJxzyqkifGffp3McB=9VoUnYMg%EL+4 z+%i>$R!ttKhWpu48Bg+~-{C&QZ;}*;Z#`v`Z1S7@t5M&^IL-lztFmO)S3a%E#w4@; zJXkhTEUSjEST@quUX#Ba&B!q}n)}fU@=0dQsh+Z9e9Q9pqNEP80=sJo+~^4m@ml;<|OqRtIEPQ&Cq0D=P7IK zTb92W-Das3m{?0-mnTr_HBKh~Xk=BP6&PA8?&cXax6o^QO^5F)(BC-hX^P=1anEyP zWN13@I)+S1moA=PrmYbszhNOV+6GisE1(%(K#^orqK#1@9fz%awhAPBg{wUQ$Lmi_ z<%=k$hsbVfvF`wTV@~A{X&+)LuSFhy-y6&ayHF(9UjE>5f3JO&sr(oj@ii9p&3@%h zmZ-{SRrlB0%b3c=rMT9Sx_8&oJ>28|R43x5(ja9%Aon)qPS%GN9`^?_TS2>0ITM}2 zJLKM6i~Amr`yF5RwaBe~thgJLI}L6=PR-jM_dXqkn9BaBo3Bv!np$?ppVL^r;_cv6 z4nzz0B8Mz1lsnldbn&=f)X}G@jKc0`$UV0f_cV|D8DDpEf@Op>J z`Y82VsC#HF-A{SkTYO87Lf3FVbywHYebD2+Uq_RsvKdO%-7HmYlsgk{K2A-^4o#E0 zbp(kUj4H7jOH0aXSu(`qzRl0e9T)H~6{J237SM+HI6OLN^|#W~0Y_ zjb8=_A?L3k_rcD>6li7ldfZp|x>uk!tS0yVTHN91HI}P=yB#oHNbcRWxOp;FYTAW5 z{xM7TAm^QPq*-u=!n>Fi(K$y(IcDOyu=9-c>7;X2-8rLyOf4sVUtr7vho@kQrx|BK zE-Rl|`gvdIn&mjl4kF9b+N6iJkYU1vX+Vl-5#00P?nZh$-lm<_E;ayklid{Q-0A0X z?D4HDJ|2YMJ;~6zCcb27-2fK`LCb6tTHlP4q9t^-)zZmDZxotaL>pb&M;U0lq8*E*|UD)6qv#dde`U};=wfqO=CUxB+s6jYB#ty^lH zlhM^I&63!4I;;w64=-Zauls5b@2s}qRK?-dY9rJhJ|wC32(>E*h05(#Oo2u(iY>6K zTUS*uA1}=H_EW~~ek2uCuR>Dww6-{yX7y54jc7|#v4x*6pR}R@=B#4Mq*ZV>>zP#4 zOj1Y`HBTyPAxD=8$_PbsFTvDPTDXkp3OmE`j3$A_sun1;-tL5{hJGfOjjf zEr5*rKwg651wi5i)qUq-sOa7XqdT8XUBU~O_v&~XQ6|w*C3gB$+0611279n+kXIKnCtwB&=-3)Q*lJ&%!Ph66gVGp~!Ph8`gyRSz z#{xMGj#B~hT17{`R)Lo#GWcf2m7rb<$T$bcJ#gGXWHpe_;5a~pZ(RHg$BzJagIdVz zN|wSlM8zHqvHR{D)tk4RTp`}}-h&I!8uDok`hAuzw*Q;7JbM{^il6 zUPvWAvh`WOhPPTNdDa8TmAwl?>tmJ7Gl!;tE%!vF=pPuTgE4(Ryy6q#03`Tb7C!bA zplkpl_&+^mS-_rRgUX;QkjJUHpL%(6v1+0*<$&Igr0B&SXy7VSyUSR>K53h>CHu_1 zP}PL5NMKY|z_DzbTEo(x$%O=G!Oee3CYI*at!z_ zIQ9W#r=qnAIhdCwPyQZ)_qTxXGWE7Q6$RV_Gra+Lk_oyB!8GAzD~KB}U}4<25m%<1 z$++#KK|I%9HVGTn06B7A4Mz_^qJ;{i#*G_)GD1M0NmUiELYl{`$3gOVs^Y=xrEn~! zsv&=2aR|rCV7-I8PipOKSbn6M&vDcT>_yCDEO7~$UVQ( zC7HgKy|FK~jZ*BA?uNwe0O^u;z_A_hzrR4&uW?_in?ndwz?=M69APP0exSb~(0cs1 zLhse;$Mc))WTOMo2jT3dDd5Kj)~Ii?b?dSR79N7v2e9s4K<_J*hbMCFnS+s#=DR>; zqild<{BSRXbQA8Vqf`vw--wK1`1=)legR~R0g^QZy)hu;L?A8TkmFJXT(Pd6U^UJ0 z71rMibJCu`HWC=C0dgP2bT}ph!V6VEu7Ef%fP4T$7~Q2P);B7hr(f(iLq-&VJ0QTu zgTB0@Yc%^kDMWa3Iic%p9AzLXqTs>ho+Zb3%58KSP^~`VufYGck{fj5hYp#ypi3p&^FJ@6f8r{^S-BdxSvN&-#|`W1h0>g z*8c?5CEtd}l)-$Mj+cS5odzCT#)&wr3~=vJmeR4vBlse?(Aw$gruU=ju?~7XBF;Yq z*iHZO4G>4bSQNK|GmBB|(+q<-x@o83uWvYQ#_R>AQ3l*O9E6AG6dom9(ec6+c?ej}g>Z+@DWrKh?7G7% z3;WQ0KMaYK=JtYjgL+7TIZiHl8jJ;ffm6^N^upc{$c~=sM6UuCJq=vZc}|_lKuq*C z@I~i45qh~MpE2Rf&yqZurf?f9T7j$aqwiC62ntd3G*9$?_(e~5BJ^^jzhSr>UF^sS zztgRvZ#+c{O~GUJF;b0XN2epBLkTp3v7B^9*@T|U0Fo<6IP?mUJVBzNhw1^z7bGL} zGR%(E%{UG+*`Zb_53zcAR8|oBn%e3|X8|b-jV4l%cN&nUrp|0|*I}G0=v#*dlk0|XXDh$@Rzg?*1xPZG2UJ)x&P;ZO%j7fexo}CKF_WJMoIHv* zqF;U={E%IUVbiDz?m7eT)2Ii24zFZ@v59bYm@r`>gSpZ+hz*`Y#aixMdj!04V*ejs zUjko6b^Skg=FQ8zHS_OH@=ASyYr*T;dKYij^vL zjjgTxS}CY)rHY!WwWvj?TXBy&RT13(-|snhCJ*aB`FzgH`QCf(x#!+{=FYtLX1*_t zv)y>f92_?LW4#OeW0JBJUHWo58W3Q%duK_kttHTV4O)O^WubpB(xxmdISvb3xDL&7 zeY#$Sn#!$M_pSMtf{keDJ&E@e`AsE@P~mtVVixk71sHE0YyK_3^}4}V{$&B4_XEKz z0utVSaG!rwfZuO_#QK_6)bzUvTg7WV=s7X6->)(IuS<=o?Kc%>uMcF6JH~qkq2;#( z3@z{$r2yU#koB%-1aArmy()E1-wBnKkbTsPZc4piMwu z?*c~szJO{kWSfr!4DnWBBJv*#sPQV18u?EIjP%~*;64>l>($f2X9C7~<(TUH=K|`y zS2=_)1WfRZ^a;|G zg+q|1h0*yBpb!2UFFCf(QFHQ_;rLGU*5gEXya8DH!d?|@5J(t> zy>pf5DfG7DSS;)#-Bx0y8aTbz{5=tSKS_hn}Z2t59jR@pfMLa%fI zz-$}RR?KkO+>D-uwjq|X`4V}xH=H%+WwF#wjmIByD_baL2I?W; zZjNV_NAmabhOV_Ts1ML*`H3=tfj0y@PWed!LhlAdTRy#%TScXJHG(NWwUjGRSl%e0#@nMW!07^NJ^naG`5C1gZk_iLww3ZTrKa9{hyBbDFv*NP^1h_ml@e98cNcrTNhXT z#~TmJ?-6gc9`BhfzgNJx9(>56g)QoOoD05(`>0On!TaccL$%)fgz5WRu|CA(t&ipR zmobn@9`B$m|DAwo9&bx8|9xpI0%`CTb7CHlHYaUgwhGmjE^+|tVbR>`xY z)8pL6+0NtZaIqP9)fb?Ay>tW2F$fLJaK&7|24&d(sdi220;ylfdhoWX(%bGs%0AV3U9;-kVIz%>t(Be(}0&1P$KlH2aT$MsEk#Ws88B-caVm z8v+*Sw(_QID^1=4M*Wt6X5C}n7PBSZ+uU&85wKi0oOcDR^j_mMzbBx@n@-Rsd9=!V zlSl9eyYPL_+KMHp`B3y)>?G6YIUg5J#1yPGL*|@)vh#_6b*AD(^z&Z58pecM0mvsSe z%r75gN@a-x-soRGSka{5Z-}pah@xr1&7**JQ`8Wg#3dVQb{hfTjREgwE+3}-EeNh3 z092!BVZi$)%ZDp!3V8oz`Rqo_65#;EH|Dc_lI2zbwC z`FM?Gb1$ z@*@>}5%2+x@+pdT1boh@e5#^vQ@jiGX9^sX;u9Z7DN2|WpB$N{C@`rx7{k$uvL@9Z zu^gi)G^vx2U&os62_}O{@nM;tYh9&D@fn}v6!kEv5g7aNimFVCYT6QGKfggy zwMp?V{}UArF)0tZbdpYIjY+K^h{qZf)tb~S%*3f`S!Ys*A$v|UrFS<&ve)^A_)p9rWIM94W ztK1ZyH#kq@Y;{vSw_jl7q`kpSt;gQHP|;>L#fyN86m4-+_2_SrqBb`*7pKjOjhs=o zx~ZFRviXJS^cMQt;igUmTC8=Bm--%O)=NwoqYk{(V$@w`BP*mxq7S@7(&Xl&HhaO&v+tD><;PF89UW(iOwMMr4NnWZ7BU)nm zaXF@Wsl$71NK^OK?W4az;^FM<}xDHed+Bd+tfTh^C< z9T4)w_zhb--o@wPxcOF2Wr5cl*;W2sp$kkxZ!xB({CfeF-c`Ip_(4Eb@L+EM$H?Yi z9Sp$9queN}2_ESNka6(RyN8(O=`2q(_|6;uc9x27fK33_ zH_)rBa=IRY*s99$gV3xEWLmP;_sA1Zcgl07Ge2Mpg1cv-qrBBwg$2Xb)^py9W|6{~Fc7bAIs@@tIG#17s?q7dlyRo7{-4a%1opV_39 z0Gb$GD^MAh-(~#A<4yo{{-qNjo&UkylI*h4xO^x^!h>2qt8<+^uO{W=)E!Y_UuQ6n zEt{b%&gWp%od-^BR~)qEPa95I?Oz-5@qLr%2bCl^MHLsDeiKg7z1{@;*41%C%7qs*^@eJ6h}>^|lG16a8Ve?R!??9V}8UHr}PQ0WgqFJ1l9 zuu$FnPf_08ug7Z-|2(wX#eW!ndiqCTd3*W2U|;1o!hdhS88P?q8&STie+NoV_V0%M zDgGeDaH@X=^wa#l7;mHh4ZNN1Pk`ka{!Oqv)Bg%F%n@&oic+iyns9RC^2)w%vIh;Xhy5;4s4mtxnNFB!AIpNvS(^KXaG^ZlDK8yEP` zqGX}}2TGSD8JPo3d>gief0ZxeDQy}hB0Tt&k!?aJgRpy&e$@fWZ#r`*E*bS z@F#h^4*4g^J>5BYB(l}?Pp(2y%B!{w)CY4Q}5;PXUeX!oHo+asVq-k~U7oI}r>jjEdP`nciH-LPmCXBpYE?qjj+$V1P; z8dS{I;&pLx7v3LValJU>gGp+<+kSm9n2EekkX?Vz3K?%am>kRG7pI&qe?J#T&J5|V zYj;@k#mP5d!n=$ehy(a+sT#|wciJc8u%+lZc~SBZmUBihLOMEAtWSy^4c%oJ4&GAJ znVZXE7U!VknmF@(ak@M`56AmhnV1&V|0vSmq0Gtiv&=rM?y@)D;+BrfwnC@m{vq}9 zv0^ippbI~dD;*v13zat3^To*%9zGH)WtJMQ)Q0sa#osq5;-6XZ)REX04#x^Fm9Ipe zI2BoNisKC14MjH;Sc@+|Z9+|&amv|_xlyi&9JA*^Fu74y8F$e-SDc00I`(IgINCf5 z*9wr*wa2t~n{;MiK+F9{aUJPyLB+AigQFqtzX0(5+Bub=6<`jOS&%eaBtJsQWk8oe zuzh|77(PK2Lx{CXEx^--$-^*PZtr6;1T=*tOFAbe^KZm}IiDbuSvfla@o``VxEQbDFjDRz4il0fiSD@zK@cTT( zy$~QV2SyN=Bvu2V^n;|?B)JSFhXEY~Dfu-($^CfA9&R1Ki(`EQe8vH#yg9FGBu--S zliD|pe#!vT#USU$L9RrPIX86<-gHTjr=!#95DD@sC|3|L$YoG&fTY<(f@}f02htv7 zVo_0$QU6Ey!4C@^thBDzHP*y9k%o;={vI$nKF=fTwHki^2$A(_h4Lf;*J~q`7a_7< zZBX8Y=z860UH|lYJreyYtj2M797m)@as1Zg7UAk3>pTK?cbnYeD1y202pV3Epc%?#1dL!Alp7#vHjxNgfbM~4 z1fO&m!Hyj^VQo%qjU$M(Xf1wia+%)flgIFCc>g0ra{|hf1dP6zHuCp z7R7O+$=w;nF&EC~KqQW4D3=jPmO!}yq6q@!9*D+qREKe#9jB=5SAVs}SaPIWshjGx zD|+Cjx&{va2$B8jA5fkl;C{6U%0@_K{ zv}g{lGr4;i2iIad{BDED9Hi&rVjm)N&;?2bMCM=+lxm31!GAlPgNB{g;>$RWNb8JD z<=>SiH;h+2jAJyMkAg@X2SKSP;9497WhzACI0H%}MB~UlrH+337?~Weg&ZRVYi#h1 zm^SOI|C~!rZcP-&d^n#AkvOh|(oDcOZicc9B60i%N()5e7|>xHBjY$^*BTPX@q7vH zhBL`A{m=vFU=19uhDhH}Lun;o-z?=XO-Z+G6c4z$*;6KS38 zOgL`tZ&5Vc;e8uKGh;q71EQG$r2?Xv0i_zEfgIOiAgkg)WJON0#>R=XD2}g8ZeoA* zCYb@}qad0YQ0fUJGoVa`Xl6iZglHTKI*eo5&T(8A#}R2!9NSFp`6!P0a6T8JnE|Dl zKr#c$GKgjdlop7_aYKi3jJ8)|_H42|jw8~dIR0yLM-M=6k|l7y8lqVOrIkRk1jL84U;P}g}6 z?p`y=v+xd2vjHAgLo^$pv=T@*K-maMvx%kzP#Z)e=w^NX^yXRjqX>G%5qt)B@0#SN zQ3TuJaT`SQ0Po@gh~@#53P_qwG#P-ZAsWG`4kHNTMbN9gv2g_7!QERXIcpI5kqm&x zQ4q}lDD?!A0Z^tw(rlt>0MrQ42qtwH!PXzm!PGc{AaIRK04lU-XD;P6_slqgPH?w9ckWD!I3H;M(KLWk0ZFro zrU6hjL?ifhhY{@fDxLy4Y1|V>5NXk-@RUhjGz5K0O2GRlh^7RTdICuaC{rPt4Nw{( z8pxkJ4CKT3G%j)c%^Djg(xNyXH@W0)HjeplJ{O{i0i~Hh5(COIh~@;87Kp~Nslzy0 z;|Y;CUXA03v?z{8P43z#jx}(;8lw3DrIkSP1Ik8-rUsNYh{o|*hjFajIgagd9FZ2q z@rX%w#)oLKF5BUJ8$`3@0%Qq9vjj>7L=yx`HALgc{ap`&pWdmOc8;UW8XG6lqBz!= z+-*@Dqv3oMMDqhmJpt$AC@51QnjcUaAsR<@hjF|R=Z73AyTx$~3~;G$a#i?1P3B-e z9L|MkPC#iUVBa@GSq4e7i6#b63q%9pbBO%=>4~U{Cqh3csJGUx6KT;*;L89~6Y0(Y z@2er28BkgY7|kXq8zGt*P}(3G$nhNp(k-3|$VgU)8zgT^*tI6M?o|jpwts^4vvB{ z6_REXO$nezhz7u4t^NP6$a`@Bx+1q&YuAaiXeLfGxv}_|Tk`|n=R!0;pfnROnwz04 zgJ^0%X@O`U4|EvFg6+{v$cj7|&qSm}aZES4$D%ma!1-#3W(Jg20?7<08zGt*P}(3G z$I~6gF=^*G{u##+X;B;}nA}0Tqc`s5+u?j0L^I<;WClbt14;!%GXqLBMB{j;!#Jwr zI3zPZh~wA?%lvbbdp7EOG#rkCXl6jECy>m5G8K|$6U_{uMu-OBJl#=d{QXCn;ah9h ziL_`YrkUK75$KaMF(2ONLNqg=G!sZ>Kv@RS%z)AY(LlO)7>EtS~8Bp3F8pj?T#_?c0Ari-)aU78r#WBg`P9BNgBs1WA z8$>hXB4h?cGXqKmL^A_QHALe$qQf{gf4S3<^0PRONQ>e)#NNt*rkoNnV+?P?`Yv6D-L~{a4D}m$$l#P%yn`mMHwLvt1J30)Y zDGordK<~BIuEU#o$D7=OJ0P*4Jg$RjbmVkarECgj-hcJkru@<%;dU_L2q1_(QrNrqFDl^oUL)!1-#3<_DBk0?7|38zGt>P}(3G$N3$`QN42< zi{dyUEsA4TTm?pPY=`r05Y3N^kslDv4=5E7%?~Km5RGG5hjFakw$s_IF3k*;`kwV);{P= z(gVInK{P#})DuX0K$!~B^nlU`(J-1j3}fZzu4b_#VO$f35ou8vU+2Dv!k7==b0L}? zP?`xOJD@CsXm&tpfoK?ab{NLYox^B}!-%vfjL&ly)S)v;4)|UT(d2;AN+8JrWg|qB z14iIbK?@^21IiMN(Dr714=bS!}xcH zVLTFtAs+|79*1!;w#2{Z7e`%>hQCn|%?Bv;1drb5zep-BPM2+{t(=&=7S|Ba?W zxACv6wd?Rfzw=GbACG>x2J_)@E<{rSN;83^0+eNtG@EEX0JT6gg3^C zEVtI69tJ(UgEv4beFE?=X()ctT`84vOQ5v?z|*Cikl- zj?r*F3ZnS|rJg|Y1Ikp0rUsNoh{n;-VH_*t`H)MDQ{p&o#xid*$zBuCgJcFA&V^`Z zKxrnB%z&~Cl4cXl44@W>20#Kq{{8fMb?w)2W=I50*4lOWF#5kt^4C!WYv6G;M6&@( zD}iJKl#P%yn`lY^wLvt3n>vi3`9~4l8b|OuxO?6tcikWTNFKoBHi+iIWyk}F<^hxn zNSaMF8Gx!G8o~c{7{R3W2xNo!Qyjrsxcg`Ft|)-fa5xI02>_*@KoS7TR7jdFGz)+l zAsWE59R^VU+0Kjbd>p{zaQB=^_CEmqNE*Q7T!^Ltlx6}+11QTNX*SU`0BV6~1n+ei zLDi3@;G;N#=iu(yXMY(qh%g4}-t;19C=|Yd!*qORA#-)e|v1(a3-$qFbNA!)YItN?0*X#ekY z*ndrYEvuREK|Bxr;qJ}c#Dmd|WC9#+gJ>pPflPpCCP1lxq}f6<0jL_H0r>yyaBH#w z@Xl}iR6R`P+CFU?xlW`->+yPSLlo0!^f3ye$pNLFK#~K>REXvUltze#Q`KQOvv*#P ze%9DH!&9Ky%^h(FI*?R=zqt@i1t`q~k_u3kLDFoY`2f@c(f;@Bu>TD|+NtZ}c^C(G zn{zKj0jz<;)eubxD6IsN5KuNk(rlp#0n`T30DjhC0LR7?pb2qo9KeBaw=s9*q3A{u z0uHx9G$F1;LO?Vjpj1H8Y@rDOR1MJpW_1`q%a3MYUL3$=xO*Y@N)*6oI2;Ah)rV3~ zAgd2$DkRMongT$L5Dj2yhXFL%03;*vBL{YmyeW?3ICx!?JO42BCaD0wb0L}vP?`xO z6`(AGq}f7K0jLF{aXi{#9F6gYePZUWp}{Y2;on317;_S#9#e;L7hjN;f1 zzuO?1FIOR7Aet{wDj;dL(0l=^hG-l=bQp(I97kOoM`DA{kn3CoufNX~CZRVj*J$`1 z1<|yDQcoah17#{C%@&$AK#dTMqnCC0)7Sc~r2E4k(#8#%pvZ>aHxAGSp%h+K(YqPGDw;&G;4rbAQ}c)nfdqAVJvSC!_PJyVQ49lOo$`75q?{8J&r(s zoRBr}yc(hj0;QEe5(LUdNSZA)L4evI8p$yoM$%v-i2^tw4&ZjUyF2%*D1hy7xDBG2 zaWygnqL~4u0+MD6%?zMwhz2mX!vLy(6u|j$0Kb8|J90fIqZ>&HI2;Ahlz>uCASnT5 zDkRMoni4>b5Dj2ShXL&PB!1^1ORy{sU^U#`p1VB?U_Knqg=jKBX(o_lfU*pdW(!RQ zpcaS*@Y@ap*zltOR>c9VgS!>Esw2^j8g4C&pv0qb9{CoJbO!*%o{KRq-!UHd?N80G`<)zVEVaEgU|>(3-o75>47+M zx7nD$&W+yA^mm<#MY{kM-LA!hk`VVCfc>HDMKB%UR46AA90jl#$_0=#nz6P!Uro{J;SbDD;YAv$Y3FgH<6xY`mFsnCXv=B*|JcE6ugBGr&ve!!SmCCf zYIDRA-ew0_qx;~lL5%pcppzYD%lUxof}-*^Y{mo9W#eAytUTcnT;aC|9~IGc8fLgVDznR%-HU;<$ScY`_E(=QeIPZ^kvuC z>K9NwLaRx>oNcw`e?a-cMdkdhFaGiA-08NQ-Mnkd7sLK?TTVjfDQ<8w&pY(_owZ>o z_oz+EYl%ZCw~NK$uiweVJT$JhwVZ@cZ7o;&C#IstnsO>ikjY$m&hJuN&Ux>t<@k|? z?1Q$LVeO^GMPVhLD5{31qRG=E@(eVYjE|C?_dMswH*)B1kcoJ8AB_)5K94Df#a-eh4Cmth41zrp(bA z5|5?Lww!5HBjrDlK%ZG79u)PqF%$S}Th4=`p{TrI$He5nDDF&?-^q@)wG3s&PPII6 z4z{%n=qXz(PayyAA%3JaWnTZsnsThC*>WcE_gbFv8sg(>VNvxiNJB~D>ge>BeZ^LD z21jZ&kBaY$S{?a6t!hf`E`0m34la90I^dnxgU_7v0q{=zl_BrEF~rd4KtG5n4jn%M zb^hQ{Xj8=>lJXX&sE^YhU=me-fQhP8%^zU$_V3PfA-~*HxBHJKhCUs2by*X+-T#nw zw+D(_ruFn8}_nY(A9Xc(Eh^UAM%cu;`@1gx||vR!qFw$O&c2u}WTXOi+~_h(Q6Z7LqX zONK1Z$*Cc&cd=~E&(q>1ybL2-bGPTlf)XNmoC$ZJDEUAoUXC+^_W(eX4X8ZM9QX?K zD%OvyJzstfaS)lE&o@2!>rQ)-+xdKR04b?aJ_q{DW1%}CV>tktj6dguzX7I|#r;_) zlXPZOm~;lzCeJsiOHfclGG~CRQvitN9xTH7<_6kUu|Dq#B{*iBWX^e|5f50CxfNk2 zkC9Ph+8S7NC0>$ebY(~xtfG@Vrz;Q@G|xfCXx{zIS#2jivxzIZueKy?yq)u%w!0fMdiWyFR7TDIy# zPzBasvYuy1T3s@}D>f4+a|K7RSoJa#B%8Z3lR9_CyoAXu!FsfFKf?i^+|u+~4g`Nf#I-^|RgiOjQsE~P?>tx8j zovG+Diyb$>O{RNi87JAdGrb0_KxcVn-_9%hcIT~dzcu?(a2u>$GHz!#mC&Q(l5sn` zS%7iLxSjpC0N3q?smi`Az;nsCoqa_>!rc$yWnUHG4_3x)I!n|HR>o}sBL^$vHi4-f ztc=?P?iiPh+u1Ea15n^D!h4?r> zaLKrxeNRA@OUCVNn}EJ98Mm|V3#fMa(RKDC0YltXn27Ah0&3jKEWjrMM!IiuaGwgO zb;-D${Y=0(myFxl&jr-EWZcevAz*@=rGsq(>fPaV@TGu5TrzHFw+oo$zQmdx0;ag# z2)+_9%_ZY@_8S2|ck>kh-wJ4OmmrU`-wQZ7NyhCgcGDS{xW*(Ix3gf}CYqV#H9F!Fonp2HCyx+JvD z?<3t-x}?v^*L9(@9xe&3^ZRza1J0^l5?bfS3#f5PXr13r+SEEh5(dElykuTN&gCa~ z)bmPc-I=V?b)~0=HJDCuQaYm(bw}Kno+Th~NoZYqj)2f5p>^qO8`4(9QaU%ovuTyP z4J}LOOXSt=aMqlcy%{w%E(xtm7m67|dYI9$>(UE7(ftw7FUxUq^Ga@=A-Q!pvHx%s zWk_yaIIPQi+zZ!HKfLD@bTvFIEc90}a`Mzce;7x<hHFtqUj0WCrdK9NdMI1cdGlh`cbpbUm6>x>v)vaB3-6qsl!DMTOG@RJ$a%E;I_L zaY=4nI9))kOLFVN8KoS0olA1-!kJQ2@4mx+W(b(%lH9s*woK$Sm*m!kSrwNdXB#>x zxiwR4lIf)6)&$c`C*ItCfh1pp>GTOQZsEWMC~7pFl-!z$y1S~dC+xQ$!rIp)7n|ctqY3-ANlE$*RpV_ zo!2c~pvwdVF3GJ6mkS78l3N#=1ys5uw=P^EpvwJ{W>-px)h@}c3s(uKaW}z#;c5Z3 z?q*K^H3I6~wVcXp1=PDcSaY3BVth=0=y~)`c4c z%yda^UAR%e0+;00g=LbuP41mcr<(*cyCkV)1xZcVk` zCAoFsw_<&W`zOxQ{bdYfl1p;y!tVr3b4hMp_~Qt%+QI z99Z~Ut<}_i^=~5>W2G$fLJaK&8964&d(sdh{l_HOF4% zlH9uRj1>2E$#zfQ@RHO_a>*B4*d$V z+`1QrJ0wYR>jKEFxr#N(dE7!kZcQ{YNxIeo$gM}Cv^M!U_ZpB}KZ1R`E=h9h0?4gp ziIN+zZ5BXoO*APjKEF+24XB$*l_@ zwx-m&|>jKEF zX}LTZGBS``6Rk|nW-5T(ny4j7a_a)ft%+78Np4*Lxi!(+B+0D{Ah#x3mn6A$0p!+1 ztx1ww7wSyuZ9p56B)2Yr+?ug$PLkZZ0CH=hSCb^SE`Z#cXiJjh)&-DT6TO}MB~uLK z))8vp&>jw(CHBqf8vErIIz zwN%nx6YzLgIi+Bt%(}llCTc%3XE(} zGu;wPZq4m#fm^~I66DtGp~)?=&akXsYAxh0m|nx~hoZplqJ*?`=-H+tCN zmRNFY*5PL|EV(uN3%n9bZcUW+N-Vkc0?c6Ol{|<|ALQ0VQx0bo~N-ViG(M+@(E#%fj z3%ruAaD;>0`T(FNuf&pD6E&j_9f91MXo**1$*qZ&dnK0KnrNk0V#%$UOD$fBCAVhX zDzC(nTk{eg3o`6laMWuqUU{;4-KKf&%!g`ME<YRXaNz|9z;*sImZZYt|-7Ze0MmHK)%>lH3|zdQTG5fX>7WzQJJqA{&Tr zfDGo;`UVPt;9JP83m~^C9aM|;IxD1_uo~6w&{+3-( z0h@h<=9=?cFx;0C)i^dxLTIk1oLx$q>wSdgdLB%=815knp}9^7&2>U(t`kCYolu(V zZbEa76O+%JPReCEfDS~i(}Cx6JyCxqKNA>7sp;kHf) zw{_xfTsWMP5N_*)a9byY+d3iK)`d#0Bw{_wxjAcebxUCa!qx|f|EX>R~3E{R* z2)A`2K%&h~2)A`YxUCbyZJiKq>x6JyCtk(MFGx(r3H`i;a9byY+d3iK)(PRZP6)Sk zLb$CH!fl;ci8;AAA>7sp;kHf)w{=3etrNm+oe*y8#HH}xoDgp7gm7CYgxfkH+|~)< zwoVAQbwaqU6T)qs_y}*hmL`PTIw9QF3E{R*2)A`YxUCcSV+NKd`r!4Jgm7CYgxfkX z6o*u6Lb$CH!fl-pZtKLC*d(7#2)A`&Frs=cA>7sp;kK?*ZtJ@7*vY|d9bSbjdmZ_9 zlvBmD+oK8_V-*YbsK!;`-lCm{U9gT?jy%ex;8AAw_Q6$+cQ6$1PAsOpI5{#zmw_Rg z89jyuvfHIe;97p9lulvk6R7s63H^nWBPntjK7!}IGm{2v57Nk5G&@O}T^2QShO9wp zeoAgROXO3h^dVzlcazxto~6IR#jum!o1IRQ(id5}nJ;hh9PMz?)&_`gmIE~3X8(VX;IC@g)t3yZ&CJ*%9Yvj-f{QpXv* z!B@w*5&cj+SBnQk#ky>{SMg@O>tB((GnoRBMam3e%Sr818?AU4w+x?wDgs>JBy*r?r7 z%-f-8(s0Op%yZ`f$sgE=dFc#UKL#^@RIW2VDbVHQIma3O4&F{oF#}kt*}gCB4lHHu z5wR^l4AoCc`4O89?y-@W;eHa_X_2Kf-h;!$Ocxg-li~kLR!CgTM41sMebrE$LUU<; zp1YFu^1*J}ph-m^arZ>rim~fF>bQ6n+zb~HLJ%`L(x%g$5dDN(VkVKr{TAAxZ83mD}Y ztdo4m-L@;5^faA${=O=1BC{Z)NM8z{m1oIN?_fRG5#D-CbeygS$Ud?*Dt2B%>pBit-^ zNZbl{VNbs89N~7h_@X|%HEyIUpTK!bTNifex<58`SGLeKXn!xHa?VU=54Rhqv~UA< zd%B&7c^Vxx+pw@_PlQt&;mr$s9*g=hZaKGOZ|RnWU3Q>;tSg@(UI-tjLAtb|Y)@Cd z9(WJ<9hSX-vT<7WCGZz4dk$rLX<3&WaXkk)`ZM@9d+S(_`3pg<=WTfh^M=3f0nU>L zASHTk!WR2iSH1xEmTq0>fBmLf@Qn3f6Q#&@*Fofq)t7v9DK z2K`CTs{wBVn};aQwhedyr_mSh0+L(BQr`P7W7z!jS6CySg!`(I_E-Af_tb>Vi<un{C4L6 z%enmgOI5U~!b3OJ&w``rb&Lf(_&%`B?HxTWyq|-AspE>9pHTg$H^q^q z-dA@ruw5+Rz#cDdm-2Q*(WUmZMlvrGi<*}nSJXW262D*ay{mmV-S@@9J-w?gT%9N1 zVttK4ea3-}ez$#KsmT^dCk+-zj594@j16!Vcf_&z7uZ@($b6~ggrsgNc6V2?y9bNh zJ+PCzi*POTyseE=QI^VGgg|%QfKBS&*X_WZ`>j{$KQmnB_Ou%CI8XBUFT^y zI?Ht*i~4>NM(ZKc_a-PC3E20$P~L|0WfSRp2hf)g={tqfcnL)M?hmDsfPMc0%DE8i zWGBMUcXpxMwLuz;^GDYUab1_?rO#i`;1NjnOn_&hJPj!<26zR^zafraYG;rafYoTI ztLgZM*z#&Pt}7}()|T_)|$L9rv*1mv+Ms zqZO6c+j3rZub1*ExV1FC>zK(j)tWFj{Xbbi|L+(1`KvAGyAIP|2gZJv*h8}q%K4Rg zG~kuCoEPN7i^|`!<@8SuaN5()ceb2w8fL}iIR0hah&Qox3CCahrXzoR%W;+3*_z+k zO^{Q0m)3X}F87^&Yiz|@>z2pWdRxYe@r`jgx0{iUpLs|7;8F6qt<)oB9-8i2RNHSr zG-5POd80Py&LC%z;aluBk*c;W_%6h+EowfgxVfBa>TE5itud~3{7JT)?>Cx?%Fnjt ze0#FIy*zcjE$7=Bzr}*T0<0G!#9F>F3h#Hen&G8Z7dL#SsNr`}!`GtomY;Y}=ZRM? z71hy9IDTha&Oz+fUY;6k%Vpo&*8+pYIa-X0ZkBcYiME<~HLKl+f1)kt+T0YE%k2L= zI@S5l7a2WbjqC|~P;B(4w)R!tva_dWU$ArIKUZYrW0>*o+`ib3|8|klpq-7z$K5Tp zdkpva!_>&sNZiN76Z(m@@o_uo~rn_`lW%tn*}^# zO3({uLT+a_bxvu$t>oZP@#BFx`(28dZ#8$q-_{gNR&3qP#(Ash!#GbtK!-y5oHO%W z{OF@x?0QSrU(|;`>2#YZ<=X{Zv|iM6(gnDji|U`fsCzOE_FaTi$r~^4*6aTl;plk? z%1&Y#J9`KC4T#gd2U@%nwYW!Hm|Jjx616}XTNF@M3UT(Y+obb=LixLAFaqUsC;u{K z+fe8&-EdKD%^2+L*3gSJOqTp@G`Xc{l|2epyTWO2NcLcWJ)w*t*azS+C*G5gPhXo){Y+-s2v7SX$z6%@^>2E70UoTH?z|K zB16}Sv}geM(W=R4B?DN1sOCXr085};OTYo#3FUT(4B*dD9){=uM*L_1x}n+uZ2s0B za8Bu-KN`RsM7-2=aR4q3hHnA-(yA~8C4*4X zR}K;XFB{bdKlgYF&Fu{NAKUVBCJOINy}-E0AX}3g*B(lrMW#o$+I^J<6eT`Gv@3nUSMYdJ(o6UCL7#`>CQyZ!4EW{`pOkp#J zHxD&kZp9Z9kiM)qU@=NKyzB7aueaTBc)y9m!u@tX-TkB&emt}q6!hEoWi9^5dYA*x z6Kxq!_X${W5G-F{%lWBSkM{C@*VuA$fJe4>*|N(<;%!7x`IEMs7jGwOxi^OwZ!g-4 zxkbipw(M0HUsF_`vGc{x{~nO?DRPQB!i>~|Gu7Q%@DoITOp*EPKWRR($UHU40=Z0H zU;#e>43VPI`1-x7^Ty8$tBcAHwdEZ5{&Be+s!r(%MV0D^6^LlpB}n`W>@j7WeX-bk z;%Al7KD!1r!*0c~1jHl_gHj}JE3{?U~WZ|pYu~PlnmvDav(p}${YDu>%i$JJEcZ$rgiFnK(nu- z^uAX+#gzy5jUEF!qpq4a-Cm73xdhVVye=rJ=hqbv1O6T&PrrRDH=z9&@I#0{?*(`NXsWQJpbI8EcoipWxv=6|ZESTe* zDPKh&3osSZi$~g7Vsjqge6gA7oFku@UI}y=jaDO^Sz>et;BAoZn{d?|Ads=Vp1nG! zm$NGtjh%j?b4|bqy`?J`4aCQP*H$p1zo5-S5dU>M99~T<8HF%q&*kL9jgKZ(#gYBcTmc49e{37I% z*f+*6=iwvdGqUtX9W!^77Pa}G9i?DxWJi(v5uSvlT)>1*LzX*Ct+^0>qR)Q6P@mW^ zc%YuqTsO6I%5klV^`bqG|JD6%emV7IQ}g~mCZX<;$q~UqRP8>s@&c2|6nWm zHOEt0DHEiZuDnkC!dg56i?^%=t|8^a*Y9i{zg796s5RQ9D(o)CFJk;L7Vs;ZzL+$d z9H|MmT;~4Zt(f;3e&|*%&oI_>XTC$9a~lhKl&XG)vI%)W6KiJ5zI5mA0N%no7~(p_SSJJ|70gz%}keKuc3dD zPC6 zb=*s7$-9cvhQ%0AvE`$YWmm`LgNTOr80QR&@fCx$G(#}T(01fRh2J60PPTAM-=Yz9 z!bwkh@8-B3baOZ?I~x|`SF)|8Ibbhjy=}g-xcTI$d8y-$XY+-7<2;Eo44W^BnqPyE zdfCFJ;^s@E<|*7w$mS=b_dbTjDX+2E@{!2$K*#+pEpI_c{S1pS_F~I-BFj@8mmgS~ zm+{W5+OQaFv}@7WOQFly8y%MqU7EN0;J7p_hEHp0x*#iu+QOB6w7EF}+wC4U&ZemF z@G2bhHfxZvc42v<$V#_Zh%YKggE-jB3gsU{e;*{4=Y*~f(;4&cv#|@#I`(Rmb zSe)`|iY zd^@77<7S~7-mrCyVKLUI*z$nLvet2VSE>0uMs%EEG1jP;j>zmlel|qQ5fzr9`Nl@@Ay>>4wGVy=T#UeiB*k>$tDe zaxAvB8HUA}C2MJ}+MUlPYhhJXcy)i?4z35+x?PHVj!)WInu_x+baMmt^SOq_$faV- z8Ik3&j{9?3K82ZIU|5U{DYm>RvOK_XFQerHI450TSd2{WQPlgo$np?Jp4T;tks%iu z7GpK7rFo?aw;S3C!5!U_VCJ)axEi#D>$(^DSV10o@#jPqi*LEXFKZOLIL! zx-!~riklx9H6QP|$2VkASYJFVD~PcF!al8$>9EqBA!@RNqcDX+m= znmci&`IId@y0|&-_?PB^7BxTLap$plFUx6gN*~Z1D3P_X{>Z1{w0L zVKI8|WP2ZhLdVriUTF)Zcizn{W3O@C5zx&XWU}Y77|T&?c~)dO!EukH<*OJ`(q%Dn zKI&)&I!d{E6t62Qnq=OvEFB%{xGUIvEShIs7Na9;X?}&~p{p}r6&03Y?44XaYi}(S z`2tEv++|jvj;MP$6bOGT1`t=-a5HYaRC^=;nPiAMUakaptwTb0LPww?(gGzdu~w7V+GB zCp_PWH%!sryLgL~BLhuh_eva%PN;8}CaLaEM^VH;GZp$cGSGzj4(W)X@{wV{^MCgr=tRy~IN!W0KIyxkBG}pz1rs~lW8iF3NLI^xq=jPjrv zFXPCkvlke09tId_8FHxaZ5eW2)^cIU`44nFIF6U6q1j;+t_7x*#r;@UV5FZ$g-NG> zZ2}BAfs6OkZ7zVWvHT30 z^qs`Z0X8XQ;wU& zmffZS1Ws2WGfIHWXaEd_%m`pGft|119C4u*wL>0~yQ7=)u#I+@J^lu9S_ zZvjfBlX+QyQt4z~5uj8$nO6n)gZ9U=zNQs5gOo~#o)aSnDU}X^sU4(LIs}$VC$lBU z0V$PE<_!T#rIUG6fKusX-V&fxI+=F_D3wm;T>(m^lX*{oQt4#c1SpkG=6wN5rIYzc zfKusXJ{F)gi0s#y#S@s$zbd6iiuMyoeZdSh?Ghv11cRN zrP9fON{6UPsB|)*(&2T z22?uiL8){ypwb~yDxD0dbcmEnCxcypNU3x(pwgk2bwZ_+0hJDsQt4zsr9(@l(#e2I zhe)Y(GN96-rBdl+K&3;ZR5}?@=@4xZDxD0dbcmEnCj%-SBBj#FfJ%qxBg>tWtqSJw zxZsU`+1~l5arh{APPUJLgfk_`4N5JCjd16jh_^Bi7-?V{4BZ$ieWc+&Q_i;hq6HBX>@2oal~l=j8UPU<2jO$?cuvXL8D&liMeC zIh-hWPOh#Cohf%tZr`qTaHiZjx$y#&J14iFv;k4gU3B^cUUGauGB?4a9u{-w(BJLc5m^+7n+&P@R zfO8WTbLWIN`%5`rd?**XPAeam1<+|#?woLOa3?POg*zv_)XwV`F3@EHlshN9T!3=t zgv|n!J14wCK$URkgjdQjrQA8;RRWYdC%jsKa_5BC2&fb8obXx!%AFHlCsV21IpGqi zQSO{@selII&IzxVWmfK-@CE_OofF}xpTrhJ28c- zggYm^s}sE`cTRYBDX&kIJ14wHyeW51c&~tQRl=Ra7Ijs^okMj(m2l@!RqmYdw_>f_ zIpO_f3`Dte!ruu{?ws)VrHyFQAa8}j2c(U1=Y*>SD0fb{Mu2kXglh#TcTV_F8Lw89 zJ12Ztry1Ni;WqzcP8T2ShyM3GjGTQecMg$o=Y)T&43Sh$m2l_G$C0SqIpKQgLb-Fo zrvxZ>PS`3yxpTt53+Pb=ih!p%cID0qpOIqa&IzCEQGqU$J12a;cQ*j#&Iw-#djTkS zPWYm*NV#)DaOV&ycTNcI93th;3BjG?<6NQKIU%@n*q?Ie zgy7C0Qtq4(+&M(bofCpPhe)||LU8BMr*h|n;Lc&4a_0bbB~tF35ZpPmRPLM*+&M%m zg*zt%cMg$q=Y-(SAyV#~5ZpOLYlS-}1a}V6I^oUIYjN;Ikc>cxpVk_vzP1D5VdpX5VdpXJd7UNxpQiO+PQPM-B0o&?wmtW*Up`@5vU>N&XKu}xpRnSq8+~b zxXBcV+PQOH25O4AbBNlxbBLD2+&M(;+&M%mW9}U0Qag7J>sH0wIcET^1$WMKI5*0* zSHKIkV1G>BD9#c$U{6k?L0_o-gAjB%HETUN#Ro4#?H`69$RX{F@Y@j70XV{)L$p88|6}h>!>cILu;H%L-6!XqoV^p0 zkU$c`5+FcWgn%qT76BFFATziJWe_)HRg^7?BCZ3j=->$MySU>vqN1YCDDI4Fa6wdX zMa6OZ?)$0ga~g;1`rbe9zc<%aCv{gnRZn$Qbyaoub64S2knEk4#@;!MmA!M)*gJ>S zr}xf*X!V!KFQWIb5i#VQR4(_Y(Rl;hn$H{PE}ggRos-7iIgFLPbJEy5NAl+0Ice;j z!?!hh?;K>=ejMbmcMfxwG>x)j4r?`|I2yUNSU)RQcFg&+-Z7_9cFf_zs6=swab?FG zS9Z*CWyc)%S-kdfT)ksXne3Q@>BwbImd$Jkbn#_%4rGddriWsru}Ka)wrq++px0Mr zvSUsfo8+)J=|}+GG0J4eoHVw@xjd%?K-a%00n+u~m!01<8-+6*uy|9;+c)f(!&_Qj zY7~Ouu3x6Eaw=!sdZ(u9Jd&dIz0 zu56a$%4RvPY?kA)JO!?7mgAm-+al`9W;w2GmgCB1Ij(G$;~oRaq$``{xUyM}E1TuG zvRRH>g=a9&mCbTo*(}GE&2n7XEXS42a$MOg$Cb@;T-hwgmCbTo*(}GE&2n7XEXS42 za$MOg$Cb@;T-hwgmCbTo*(}GE&2rrH@GO0tE1TuGvRRHRo8`E&S&l24<+!q0jw_qx zxUyM}E1TuGvRRHBK_8p#%4Rw4i>Rx)u56a$%4RvPY?kB7W;w2GmgCB1Ij(G$yH zMt?ihs%5v^Pd3Y8z<#n>4t>=-s_+8h2)#QE=T1vDzwsuz?6>zp!sf$?O`jFviZ{v4 zZ!*~Yh6BgT6riNu{Kh**l6~SQv#K`^MD~A4{K60}k!{h@UGG5>PPRpe43gdFbm!Wm zu!-_l-e~#rntqu+ z(mMBHRqdo4J$gSL?{dkE=WS>eN$ysX!EPliVOs`ET_m|%NoKqb?wt?*M-76p$q1|G zPkyjefoTHnCQ>w78fH40Abhg1QDTDl z-((t{C%4Fncal7J z1#LcITHW;?FX4xC!7K?X+iZa&_dnxAT6Q-otr3m87%G*?6gG~)?EKgx9?^#z20L0Y`8EpZ z2I6Ky8Ehsbxxx%dmsHnecW#$)pb8f=oI%zI?$^^c6}|@k*#3>UkZMVJ044IJlWLV8 zhFM8&yMujSMf4bo$_Sd|wmTVYyF;PVbHTFhj(4<#UY5(38uhk2Ub95q{fDS9295G< z67_N}>UH|w$Bz{m!CQne5q^~{{SSPy?N0fBB+YM>WT3gdx$RE*TM|`NWumMjF2Inj zVj;y6-;LKQYV|`H3rk24iQ)SuMv=q*foB}J6gSz4hvfC>O~4nzb(n(?`8r*GE$(c% z)WTsH?6uSq;Nuv!Q^KmKBfbWY@Cc|i(3duV|>;|;3hTHfQ z`*{7r8gAp$#>X2LrnnnWNvN3P&LpHC2v@_ceM&<`9FV|YSeV+4G-V-q#rZDcpMpz~ zklj`n_tfjb&4NpDyPxuqe9`zF_(z6uyPpaj*5w9#7Kcl{gs^rxY$R}hxbg+4^nE(u z0>}h!4Ygz4aJwRBwyWTU;e31WGpo^XpqU7%Uz0{OD|XXD&D4!{3u|e1d}n|G95t$t zw@zvm4Kv}-p$9N*39>K01O+_dBhCu(PTi?RT9$4;?gc7nZyWStJPkF^TzY8LNO zl=~t$r^V4qIT5bS=^>9I$JR01S&#y}(28DV5^yect~Y=a?LrbOd9@1|hvn$pN7zMt zPO0IpOK001BOz8w>%zA04Te4NFQ^mzDT`YV?{Amgi>xcYLrmeP__-G~wGOVBvGLy# z@+8m`aOg_<9%r!8BkKetFxOW!d+++Ib{HkOYl8);)t=4wpwcDI`!L(d-+^|!(~xz(DX&9e z*1$ik|U{ zmgi0DJZb<}8e2Qb<$-_XY%;-|w|~>Y(o|r;Th0~}$z^XFe6ePg;0|}LH5JT6eRJWw zOZ!;P{U(wN>jO;WA|%>n!nt~1Xu=oDrePd|uxZ$eT#L%tkxs>Ly7-)^*9Nr&HVt!z z86iF?JRHz=s0ru5^hz$VW+XQmwErV!lAf`3$b27ND>l zetrk~8LpV3@nHxly9x6gTzo7*cX+xIOazz+&%SU2jt0QZNL}-HYh59$6&V~7iaz4& zdIgd%!xd83hw!u#Q0F)Bd<9p`B%;&08Ql{hqB8@Kf)kww!c#>+omIDB=7)oB-iUQS zYu)(8{r+I6IMfvyIF6nMp?PpJo?ZaYxp2jlk~{HwptW%3hPKRo0Bn4n7>B>%c5#!R z=lw`%y?*{9(|? z&c}x+UU&FaT4Ta_FI5M^2bgfa{TLVsZ)dt*`vD;BTWHX|HIqmKge`=!HBAktp7=cHYtI`XbzXv;^Gnp=qftGPy$$JIwv4IfvlFqpQ1<3r$MN*)3y1O5pv z#l2IXQ1S$OCh!8d^7D~PD_&di0p>|1)?@1seiK}@VW%Ef_|i2x(EwIgbczA%5#!7< zfH&Q#$cn>^>;=YCtDS`=b`?Y~l33ZZ^2%U#HwLqNAduZNdt`??D|*$$^2W?7T8M(m zELrlUF0!)zjthHNC91HJ%`Z{k#bvz-SIk(MfSlVf86(8ZXTweUkmdUdbcWV@Dlr3j z$&A|*iR$2FK5K+$D4b+B0iJ{4tmr`|CoZa@rv$y8HWoY8#Iu}1Y|&*{l`1lK8fN6_=wsn+#M zY$>h%uSAEtSozNgSf0qATFs}k5^l|Lv8tuj-|Aeg@7Ny+dckm-V+IGqxv(*BK_9ul1ia;h3Y3S{?|0TZhZ`DMjl|gn!wxdqjRL z1|_y0*DzHsdm^3#<+7)$Zn?{zmcQ)d^kw&WA3bEczFB(IHj;-aH%^a1@SmXl)|gSq z_E6>$L74|C|MB$9 zT$wrdO3njS4RgK-(&xcR&I8p5=6nnAb#RjNzNR^WpMm3uGgyx}p8|dY7k&Q=oxMC+ zY%_o#VOBwzY3}H+0U@iQ8O8hjTqHXv4w2PdbI4vdpVzasenYOi;Kp*pupQDO4R_!} z4qPSl@00;=D$o&d{L8}tU$!Ya57vRw98z+bq+-1Dl?&9aJX0t zxohEyC6+HI)&boGXNHSYP5O}K`%p>pmr$8&ke3V>Pa?q+a57xH2G1*SGF*HJPb-`* z%^TmF#MZTO?xB`>Z;#S^2f=UPiWw`(Lw6zponDOpX3~c&-{+U6yUOs?aw(061Q|Ff zO(%G2;3T_#@brPRoL=U-_<%hU3DH!t0awQc6ERr_%3Aa+6UIjFxXOUj^8(I|CXA2R zSLDLEARl5m512@POt>o-X*n+h61|uUXQH82$B#_p2e}B#S@k_DLVtePt;2PhZ!{5c z^aOv1dBlWq&gz{DmxbbAx8U^^|Dv%Uw1*c~)X@MwRp?w;mPS<8d*5j>eiv9EdFA)f z(mRbg1p#$y_Ea}Nw~A1pb)e~yP8OT9C3yl!13;@pk&l;@Ux2^8c0zzE07{r zdQk6uX{(_emvR;FI}5!_t>)vF+;>-1^S(O>-C_h>@SF2tPLZh*7L9u;{-J34&9=V>Wl^({=2L;m)pE}K zh8KzZ34t**Bzh`q9OY#@Sk7%G{$+Hgz7lV)o~;Hc+31ol&7L-byaTvDsVOWX^PUb>%qH(oJ8OuAn`fSz#0 z6q4@O40ISAMwZLJ;y*-IqP8A0fX^Q5ke6S{ADeK#iF;1MP%#5)Z(4X^WvQc<;82GB7SU5 z7gTj^Ia|u6zJprY!tiha@j=|$s_PJbkValJEW7JCrWr3gTZvD0wxSP3m}=QQgn$V@ zcCYH0T!nCJs=pc4UvH`g=?xAA9?%Q#<17^^t-=G75U~58!LNsSL5hj=-~G2?%pw8X z)dcK9O~4+;4p^u+t*U&_p>1&4Bn0&$0lQEWup1+7c>#r*fZb-gPH~j{69RUd1@K44 z;%B&KVOL+s01CEcxskG2;h*MV$21CTlN{G3!hB5>#E_;VTdaJA$ ziMg&O=Eky2t%WY8K(3g5*42}N= zua$TVKMa)eq^tzfGe&TMmG}@iiKUfb+e$6PY9JjciF8F+s7Ez)Ryg-DCo9!sA9R>V zhX_yc3|#@uk(#VrNa!0p4n#U;S=>7q>IFqT9rew z0LZ8co&gm(4?n%gK;N&{U81s&0QTlw(Vo5$WS}E>H1|40@J#EBui>?Y(lO4*}U z;!sU#e!zNOae;q5eDVY+^bzwTvN-=V-3o~I} zgXUZpW(8=@b)hFfbFK@E1Zd86VX?fR(wytUHr^-5OmnUaOCr2os)Tc0Sn7R+m|CmN z3HTRjkEUr$(FkFToa=aT3GbWO#76i_rMJhLQPXkFzmAcA9k1+G5BWmPzb@4L>)7AW z?-L!$;?Ck@_9(}C3pE;jSr z=)A)`!NsQJCZ`D9KM5{2(Pn2KrUMt7l3Sb*(}9ak^sciLze#YhiCUc|)&#iNL?1g{ zF(@R##U|SBoJmP=v59u*?L*q|rfAEb)KuIikyKUWA^@Rgr>c`5;x5tD>{JH6h;opq%~7*sq-Ljk*~}|OYIb@+@&)+2zKtK3sa^W4$Y1fB z8jA8XrU#`bq3lA-o#5$zY)a>*yQLCxh>BbUfrm5NK;bn&* zGfmA-V^jpt)a>*KNdq4AKbh$V_=%ArkREB%U#O|sDe|KmGsma5vq*flw4D@GeK&0W}%3oNV6dqqw35eoBlRC z@l&Wd*)ejmvzn6~BPZJ%U-DlRC`L}UH=(^7#j-2yEp!ipM>yH=pNRIigp&<06Ch&s zHJofl2`AfYE^CJ*nv?BKky_N8Z0{HWnv?Avo0^9tnv?BKOR*WMgp=(ZCqQ$uz3Bop zC)+z-faYX-K~A=JqQq!Uws(>M&B^v=NDXREwl}MooufHD18sA<@Q9lf$fo#MBw(_V zjk_WmYSsX5tRkdy5NIoaMN z(#)EZ?OiHBbF#h51ZYmS7vyAnK~A=JWj`JupgGx|&&f_r#%_m7lb zOWaY88o5@0=45+o1ZYmSx7N#`6*MQ?yH0@SWP3qQws(UkgHEV3);ZpdDXx(M8 za?_k_?`8pmD}bUz)tqeac9GVcZ10XN3!*vM-kkz8C)*2hvc0<{ zjpk%~>jY>{w)c<#&B^xG3(%ZwFUZOE9?{i|)7HK3UD{s=Cma5EF?--mi{WGw2`Afo zva|-B%Bm1fHW#~^lkII36`GUnJtshOvb{|LG$-48UO+_!IoZ5+&B^v&lwi%t_Fk%} zg$m8d_Fk#(0iZeA-mB?80GgBSy(VcIg_G^QEdMWT3-s-pwd$? zl6)gzlS+5MF#fH8%_@B!-dTNL$s1vdO1J5bFV8YAwPL_wbC2RDl1;W(r6O!s=VJ~t z;AG1th|V1yfP7B2qfP_@C;M64U3JbqH9+8GvlZ)|Q<2yMC!46BLzbZjPWE=Tmh&AJ zFdjJB*CDRa`Htzp$(AN^He=ZIz{w_Ra-Kx_JaDp!COcQ+k;(%no2c121_kxN$u33S z(;emv9yr;I zTj7k+sEp_`hs<*ioNP+2a?&grIN3yNoY@_Lz{w`M#p%U3aI%TkIkiOKWD~7-&c%)6 zfs;+N!8x}Y2%K!9P0sf$b))7%Z+1#pYH+fteT&1_wjMayMDIEiFcW#;WD~VIX98cpwklTEbUS;vWdQSHuePqC!1)OGoup_IN3zIofICRJ#ey# za-3`eE62$u%5$=b@|ShT%MCnl;>mo# zI`f=tqC6*?l8re|HlIQBoNS^zC!3OE{*O4>_n`|m=Q!C!({r3`4p1|5oNS^zCz~2t za-3|&EzfbXiB{w|+3S&Ko|8?qF2~7cE}KFHhLg<&)aD!~n<&r8CTh)bvWd3mIN6+D zzRq#7H$g+5lg&6Q$H}I?JSUqd&&lRa*XbN5n<&r8CdzZN{|ya!PWA|(JSUsOeN&E; z-HfcOb)Dm66V1$VvWfDX?43X@IZifFo|8?qBFD)l%5$=b*5o+Z>`Qr0 zHsjXiIN6JU$jRP{TU^#&5iZmsM`PjKkF~^cT2G^q0q}N+c%WfVh0o!(Cj=ZG@em@M zZ12AjLQaf7Gqok0Z0{GD$}}h2`!(|mL^LPc`%Qr6WP860sB-S-0Anc`{A-;q)B{d7 zOH%JVig%|gqevL@=hxEY$lMr0UiS|c>_Hu z2}*>M?SYfcScg<~51eetyAL?o9yr;2n-g(voP{WGvX6uuIN8iu((EIgY}RTLX;6eudhmklkI_q&EBLV0d&VG5l*&ugK}@lDFM*+FG_%P{dZ;O zH_b-j1m7C-rj{3Q;AHcbmba$w`GFm+uDrKQ4`pzK&wOpz$@`Zzpp-8tR#|_Nw2NBA zzrW^a7lEUF4kip+ING*wwCz!tpF{Q%WMSLF(YA%7Z3{=+7LK+p9Bo@T+O}}CZQ*F! z!qK*cqiqXE+ZK+tEgWrIING*wwCyU+Xtr>)ZQ*F!!qK*cqiqXE+ZK+tEgWrIING*w zv~A&N+rrVdg`;f?N81*Twk;fOdpd6B8e2Hpws5p<;b_~!(YA%7Z3{=+7LK+p9Bo@T z+O}}CZQ*F!vryls*uv4ag`;gp(C22`!qK*cqiqXE+ZK+tEgWt8U3AX*ws5p<;b_~! z(YA%7Z3{=+Eu3&b5W3Z3{=+ z7LK+p9Bo@T+O}}CZQ*F!!qK*cqiqXE+uk4D_!7GXS8=H=9Bo@T+O}}CZQ*F!9niV2 zviqV3U2O|T+ZK+tEgWrIING*wv~A&N+rrVdg`;f?N828Qw3`QLj`je<(M}yb9P5JO z{UbaHJ@j=WzCn(Wm*!SzEy37mA6#8JGy!78_bFNWE4GCW)qfnnY&7OpUq(C9R3`RyT^+B#2b)-nO7R|d8JbFxrg!0 zUjOionJYgMmiJN4if|-sOYfLx@ZG_lt$1JyC0m)zHOvMjw%lf9)6vS#+y}~%O741v zXJhwU6iZ6uo&_;0OCEFqc+kwEjsp3Ti0@ctMzdt>iJ_pHGTEhdNVHTZB8@Ab$jaW{ zh`2L#+?-rozFNmVT!L314dHVb$E&fjTbN{_PI6N&Nv z?aO$2tOiY39qA{qvVTGy7l230=u><-LHb9+beEco=mWCVjYx2|PH;so!RIKyuIbF~ zYV?j8Nlosx&L&qdfjGewxs-Gg(3%rs8T57NOE{+=D&=Gm`jJAqDl()mmyeJyCW&?k zz7EMSdDbDv4kFx#p^_QrVcn$&tpnE~M>Su`d@&27sakzOM|`2>7jy)7W`*~_8$8(Y zSnWP(&sqw_7ab5 z(?vSbA@|_D3S7IVk?&$1X5(0~cDn_a>O3x7QvN;4#gE0_5M;=C7EA>n0k-Z}_> zqQmY5zKda1ko#PRy$JjqTzFd%ihw`f+I^9k{_1Xp-Qs-s0fF$UK=`qN@H0&~Z_ovS z@U?;POY`BSF9*VnPOF^HnI~1Dq=%uT|5fFz^G{LA58&FBAna$AU4bwXKRs^=9`aO| zHNfTfqFv#Ia8rQl3Dt=c7!vY|FG9u1{#JO-iSok*;DSRmGF(Xr4bg6sfYpNXNY&oF?a$Wgh( zR&>4z=QwDUzmmkqSj4vDYsKnN;g<-sSFTzTo)pl1e=fP0he%O-iRx9Ny1@#M_B#l) zy{5&Z_A0|{vr3OJ(HydH)lvK6cS6v_zw(bzgxYF!hwj60n}$+{A+Y!TpqasyUg+sd z;%FiXt85O>{0k3C>o~HBh9LtfoE5&?1aoScA;G@Q8ca|QRs*Eq7qZ}_u!MgLh+p%+ z;^1|likIiaTTH!FL+PVNJZDxEzSP8W)$m#_Gb_57y22%zHmY=sTCb+!lfh+2lBr$C&Wq(*!t!2e>Rx^ zYk~Y<$R)L+?*;RZnXyY|shYr*>iqRd&wl>lkpbyGdq_(wvRTAjX|n2Pg{K9CkN#g_ zHhErnwGn2QTC9bm_HBND3~vlXU*ktVn~Q$O^ki1$136Vz^b-@#s*Jk98!;QW5kC#2 zs0iGM(Z0bHje!(p7%=rXVMWIUQ~WKMVs#+J0f7|v1%);Qgk}bWUNGTO^sNT;?uA=S zj85bcj^nmG*Hu~(K87`&UWansDl_hTe6n4=1C#q8&bYUB;(R+Fckg((PIIi=Wp+LA z0a$dvb?5AQdv0zm;@o;iZfZT4Q>(gDQalCe`{9b7Zp4%*LA(=-b`zS3b;XkM@1XwH zt`PeG;g4l$PQi)2`|Q8Yu^wy7)tsdI8)6?XU@1c@_bWdPgU&U48_7W@tYpwp4`RxK zzS13WW$|w>gH9c(QFctn+g4j-^TbEUCti#2&d8uWT)YBc3Ot9xRZ*s_A3`n$S`KGf zbsq!vH@PTl03@E8(isU0QS0j=@*rINcL;5U=Ou#g09xUBAFhfC%1R;o70^z&KXn8s zonUh0TbJD2B6nBR?)++qn)z49Io6jAS^Fcir|+kBPO-luw_o98icLR+R)>=*whEs1 za8*noQ*0lgdN}lW|6+Jsgx8pIaNWEO8FR%zt6_2m&2VakpE5#RbBDT!5bbFXh8Jl&jzrf_%hzVx80=9QS=WoK(4>m z7s?IAdtU#nfbbD}2_2#U@-*^bUei28hBx1(H|d{`PC?h(L<)l7P_2fY5otoURB69Ul-{ z6UZt0P%y>DK#IQyQoIyMVTHGwZo-wuTRAB^C0*M9#^~2okwki;PwIBUe zF8YB$^uvDiuYPp&?O^MF8t5w?g1I{JyJLYZJ>ZuteVGPk%^kL&QzF^>-f_|U^& zY^)*wFu}Mz%mgz}9_Yqm;292w3Fb60JUkuX6u2U?E9T3WKYQi%i;EUwMmat4?>3wV z)-CByvc(x@zPVv>5y=({cYDO)KJh_*}CbzGZQ^ZB&NT zL-nLurki5wTEg?l9hG?YVma2x+Y+oAa^>JsfaMs-a+Iyd>mWFkV_zvpGr*tV z!cUomY_M%P)zR-wFkgX`CjMBCS^iCBO{B?ssB_pJ4t2$1{sQzcKdghRMYlH3fppbi%2C1Bj9ESoj-FCOFi2)PcAKbtcaK+Vs6AP2Zhb%5$+Y zIB)nqSR20c4H9xfYHj#FBxm?O1QU%_XL5wr9`a5HMVwAVV9^0a67XL|VMNN0INB-e-|olVAaq%$+H4)Lw%t=>>f)A{~bk&PD9`H`rK>mf5W zLrMMjAbLlfrt<~bbUvv~=l91QZ^gevaSDc~#>1b~X7nA689l3_H_hmi+Khfor21q^ zX*2rrxjMyB@=wg@g`Y4R(*CJ4i=%X;A z*Xe0QAB7P;qqGryG-pIF8QtS&G!Hwt;8~(zQks_+=K*O2hl#(Vu|fw(~z)zP^_&KPS3ZuuvJA}6A09VLKYgWhSlCY^$*EAt2PFwWYe$o)=O0-4S zCyW)eMtFvn`nESp*jmQRw$wnr+ivagI6wq1@e#BEGNM0a^=T<=6Mc(mI^l8)OVUga z4YXM=EVU^aHGrSqs4(o8~0>(O=XGkZtb$Bv(I#=S&NDoM>XYsit@m9e{%vgN^ zEr~4xlsc6${}B*UZPB9=Zws*1?*#7%aMXwhz`Fw6uG%7;nK|`cwMDpqeqFUiIDu;D zsx86^LIc%{sGvk^gcN{?S`r1=Dj=>dVF^AIkXF4C03Qh`QXjeip9m;b`!UTn0TpTs zV?Gs7rDzeJ*e;->TEJ3&CZJZOnP!K8I<*cJk=QAqUX{iHz7)_;PRmSuC7?l#VFup{ z7%bSvx-nI8Z&60{BrtlX{aey9FGg+7kREV6ysx zSNgMnBUG{&;1>bSY6W^$;x_@>B0Pb??PpY+wg^waBAiHDgePDTPNXfu6R-#;(iY(f zScJ2}wMBRW7U4wNA{=v%AZ-zzfJHdtv_*IV7U4wNB0K?$a3XCHo`6L-HE4_Q1T4ad zv_*IV7U4wNB0K?$a3XCHo`6L-bI}&z30Q;^X^Zd#EW#fLv`mnClpmZG)DIV698Z3TGaodR0kYcKfNHJ1F6R#p& zT78YKo*E`~G!0hla!AJ>#7~?S z;i-`}{mI~AUFqY~Pq0YLBz=-cza`nHPZkhShwqP=Qv{?{YCgbhQzTl1r{@)NMypb^ z2v46TC9hSz8FRYqzh1A-8wapZ#89NM&=99ZczTgdfB8oIB(+6&oEG63Z4n-)MR<06 z2{*TiZ=iod`*$JQC!JmBc7!rT;|};aR9K33BLMpYM6994BAij`+8&5$F588)miiou zvs0uNBdQK}b@mtmX>}=zoIN&mAd-}-3z2_zT8hn3rN$#Ddz^q;#qR{!=>qCif4niv z9xtFlb?6Lmf}B3msCHmn$(|@NW7H?qbCQ52bry>=Luzoc;(27*S;agzxH+pW!r8Z) zR90Jr6HHcF(g+qvuWMFWZ4r*E#B80_7UArn^VL4uBAjVjR90Jr6D(I*Z4piYi|`n0 zFUGn_22bhAUg<7iebMLyeqF6J2LaI4s!!?4E{$A-%2ovqqRuh(+R6r6CLp37MqkUG zD-|PyBnXG=njFDX_pjl19DmHtGH1l-D_xagN1c|F^SpB0OQU6HYg(yqi zf#;*_wE`Tq98Vb8H3A}vuOqW-z3nJ)TJha)_BsKjs(~fFUJmA}Qb+U!xWQv?wTh3b z*&9<_@YSn9-2iTq+#1xx-T*fX7~DZD!kMD6gII*qJFN`B{WFHc6k~)Gh>jlhI zkFW(F&Q3!HbJd@CXFQ^-+3FL?e($n@70uP)=VroS!5WKjBE?tC*(Xc?i<`*mAQs`z zb1kK6F`Q>Nii)(lm977rfFku8@7_%UO4XJ|fae8Nbb#U83%vF!^#yC{MG5Yxj$-F~ zse;R%T1BPVSE?QK!Fn~3MSnFN1!zzsdjPy9X&TiX96VkZFjBQU7~qXG2fs1ue8#*f zF-__2v#{NLz$wVG&N$A{OCUScDU4i|{Ng!kMSG2+zVIoN?MB9H@*) zTZCs}5l%^M5uSxbIFYsp&%z>{NLz$wVG&NGEyA;~2q)4O;aOOO6K!zLUEQ|^>5qRF{ax-P^0-kh@tCz_tK2x6HDP3GZZO&PQ6K%uEHWgts=5g%S9^@QFn@0f$FC zgos6W_P-HAPK-Y@wWVnKoc%?nGMH000{ohJ4I*hpgS+f+0!q~dg8+UPP$d@OSxaT8 zTU&%@VG&NGEyA;~2xlJJA{=EX?*PGQf+ zzZu1GDQFwsq;13Xd0kv0l_<_N|39|j6=EBXiOFT37Ta(FeIc?=2Qn8Tw&7WrgR_f^ z`8R=HX;p}Acoyd1>{mJxKzES}u?^3{0Q|h15&+#2q6A2{L_gjJrU5BjbS|!hx3|3L z3RyAU-10K;pMGFRs~_(&(^nZB z!yx<*hjw*4YdCI*PNcW&hu*goJ}V_Cu@{IoiXSJl9mCGVuuv|HaCdjcL^pgy?t?p7ySh2wC;HoV{8rNnFSxC2-(7eiLtu&3`T zVf>Gb=XR(PZ^brqpkUx3G=wg~(LF_N5y^5|ooG!Sg*7=<4`VPrfgh=M?FAC9PWoRbtoh%|BF_fvgTbaVnmX+)k;eh%RgXKM9hDT~8yNhrcUM@&z z{>REZh0KzjB)*p)Z)FB`g^C#xdH_TDZPV55k-4BJ=AMKUY6|0Yp=gd>+(A+-W2n^S zBTSaRo;p$iP7E>X>&|F?{NWvz{Ndanr24ZMW}g_U;jN)2S#^`Jw%?_gU~`R5P-RlU zt_-h7dN9E*)tT~Z*Msi?S2D-?LCO1_*MOdrkTVb@b42W6+y-!^$IP2%{ix(!gS~R~ z;?lXNT0g0xM)Sb}Y~kxOUGEr|Gif+X8$BT-ivx z_L+b;9Hn#S&bCsaEKAAH^zH7$^`%47_-i3}EnMY$eJ$%aQxobCq|AiE6-XR*(JJd8 zaTi?pCrE9A=UIZC0Pn!_7F>!+B3a0O1N0SK`}P2d879js%kW(V_6Upcdq^nK65`1k zO^&X?5G;}Au4#Z(z8+>Joi zTlD6Rx|w)CU19QC$aJbVw8I=is|~5is=u zdp5S?i?QyZ)HIYJ{0M&F5_bjim4tcY;Qj+pf#scaDV6WR&>?@LLeZtjG<-CKIw7YT zxbQ@P0r2!C*dL$?p7C&z69JBf=Sa9jy~&gVIIBx88(Vnex)oZb|L1+My|tUN-#2CN|&jYGl6M z8?ET$MwspXuojMjIp%jvZWtI+htfDI+BMLWJhx1mbN(KpR@xs;x}%=;>hTwd%93)4 zRd+Bd>wOtSR+vF#m}zdc`Y%;x5P4s9;vn(_>hMuG3?i-iZhsr-O}NAZCh`7qSFysZ zzZBJAoSLO1^O<;OtyZ({WK^1^Gu(}&U&7T~jKN}#lJ{oz$_7Zsrs!(-J_T(;ZUYimAu*=1vHQ$7^Y6sLQ4S`!IfFKF*aA50qAOF z2A~ak0Q$R<0q8miu7Q&Q=(7&yW=JFDY89rfy9_}0K;mvV8GxRL=Q#onKySmd1un%T zG5~!B^eLPkfOeTI{Q-zK!CnU-v@qKE7rz8;F$_RE`|V=Xc*fMYKLEk1MQoICl~(P8T;hInNz7Lg=0~8)bI@~ArkH9Oaydt(cwSie6+~1% zhT#b={0zV#c={7O4A2D6c!E0tn&CN$U@gFGcxDh>4zL`aWpF9x9N{^ZR{~uQmnia; znt8z=&}D>@u>rLrv&Et8f@qq`Dx}|Nl39-<$0wD$gk|lIh?|k=jd0;^0FT1+5L}8< zk^K`aNX^rNOPLJqySS7F_wD@n^^0r5C`x;O2zqSsfQm|8Adag1`=OH=RtBm9y{_4? zxIfo0zF^4rl`zW1ue>YDN!fQlY;?Pzrq+ zN^%LD6#5Q$ZX;l!pMd94xD=B}$+rN#38zcm+vxU7u6veQgjJad4CP7;G=iq+7_BhA zjYp1ccxHU*Q3J2zTI?nfT+QT_Nt6J%@ZnVRnCxZ3|H=iv!|={#Tp@;oaej z+vZ|8k{_zY17_9HBLdO${pg%ob^0C?E%*9Y%(kAF$Bfwk)8Gc$XJGSGrn&`a4V+#(ZyM9U4e86$#y5>|Ry4%~K3-Qz!UW4#Aq2yJ# z@MQqI;Q5kZIY65Yc%2KEVv5Ke2&o6EgNv*O7!S`l0&eef0zA_QHUlh!rv(nY4Qifc zH0M01I{AC25LY6FxOoF+7dR=z!|*&nz(TwV&t^E$zZISj2&n&Cc)li}{?L;a<}0J$ zgD1rRx$v8O^+RzP?}pCtb=EO26Rv2ZD-5XFZ9O@>5>Wkl@SFpu)wlZUeNVkn|Jl)~O}YB(AiM@n)ZYuwIs&SH5}qgE zMEz!XULv6St?+z6K=t3i^A!QrTTg=%0AQt$G^(X#j}L;m0boT_rqTH-=2{erLlwuQ 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

sJ(%T@IqKzmjXIVU&&3nUT4ytbZv+u_}V9M z=Rg_LWM`=gBONV#+a(>2r7Akh;kuXRAUZ>y6D4=5mqdZg?qkKBMn zxm{bL7T+LEQ&F1sh1E`&F4Mt>kyjRSESRT#oLGfXdNcFsQO?>50-pF(Ym-(-AyM z$*Qa`rZ>5}u?4=Y`}Ocr{EZt!rMvqszcAwOyGzT4QVyT$4cdjR_gDpBaQ|MQqOrTPEBuMP==LGo#iq7t?Oi^pI}L%u1qbWOb^aAmI^JUI6|wv ztO90JDCPt)KLh!{e}a~kQ>cMdLK!NQHz!!^Ma58-aPP`bMsao8)WP=OEV7PV+lZ>d&+E9Wu})jw*H!ye-n->zi2~HQ8VANcbuNnPDW)) z+HWJyjX+vyuJ<(`enPa$(ji1Nr^A01fhPg84&ohfGDQ`*0zGIDIj?tslIerjma5s>yBBXf;$Y2rD zybs9UKt|E6`q@yk0Iz>wL4THR*t6ojg8n6l91B?eCxV;+beDds_k5^xfsCS6sOEf) zP4xQ00+REk(vs0`mTetZ5%EgE>b?!+dm^O!QIJPO$o5}>{1UKce*p3x5Tv&fbV$MK zMv`x>JXe};gZ~#K{s5TkAgX8Kn}CdjD(;6v2_ENTs=gCAyv!%w@Y@Sbt$-Ao+MsMm zRBL!ov~>rp;ln_Nh>+oWW9U92WcYlLxqvl%4ao5TM;3evO1kI!o{&?ROdQ#go|<4N zWAsY5_Dr|-PO!W`D#3%6?FnsFl|Z- ztF)Vv)(!P;!3~AETCpRd=ZevDgNmZ1Ry0^jca#6Vm3eyBj+LtP5@H@i=@zb=#g zB=E<<*}gSx2G_;6T`8wbU&^&s*kx4wW+2l--g+v=15kGXRn_J=oS$mM?^{t`5H*> z4^eVB?h9zpwp(%>Kh02$g1Hbu)B9ef$|w&f=82M_vDcDp+==FUWYk>TRn!BC_%{l{eG9YpW{LA?^e~!$p_?8sTpM`GH=e7y5>(FLbj&ogv z(h1JyM_^|Ti6FWJyj%;w`3u03_EcHfN1%46yu3!JJ5!cVPX|q>bfl~zqfEIIWff(@ z-GQ=-YT@oYSw)j@?&!Aim$b*ps&yj6o+hhFv5y6=!(_DIyHAuP~LU5)fI+NW!z&m~+NS-Oi$Opa$% zaK|bJp(M8YcD^nhIjO=@5D z{KdZ2)?lM^((ieTuGqz*v#{ttPO@{FWXEoj?eG7-J;g4}Z|BOS>EvdyrqpE{R+F!J z`SZZTY5WAKW%%@23QK&m1ZH1xZvk9zVyX&afS5lnFnx%8Yt&sKZz{z8h$;{A>0|j% zOj6VtVtrW<2r4>Q48S9cJJA=5MgU!=BRzpAd4(;c+>TV)&4klMoXerk2P)5?d@3lt zDtX|no$Ngg|1qF?-FVbwbCUlY`h6fi+9xCXg|Z%%iJo~I4P1t|K@AP!6<$UezsD@Y!z#4hiDhcL{v|TY;#3&j((H+HZ=1LFThv_?SadROSVq`CAAL7}n00 zyq!Vv5g)9oOFribO@5QV*d-+MXHTpr1P$2FdL>D#_3uVmx)q8r>01AtyR@|j_Mour zmRkJ?BKc+)e?FL+D&O03Y~P3s^zR6|OMdHR%37iFFr7g%Unt(xZ zMm?%vW4!{nOvj0`a5?7H5;y2K+XTIV#IbO?i?b)xM4)8lF;q+3F8R68M@nis?q{qz zo^*2Fjm+FtdYv>BS&iEA&&5-k;yfBgsbCz1Egt$oMKG)cEQU##e_h zzB*)hu#b?W2HKt~zU1m5?LjZ`cwi}ZwRyymsJ7EP9Rk#N_w+8cxz7Yv6R5hvjc!hO z$-ka7v#0Od!5O*+w%~7dp3v!z3(Zn>wl=#ija`3R4pM>8W zy;A+gZ;mRkc!F&&6c$ggDWrIUO+@ho+gHSIEu3HzQ9Qw>awwi)6Hz?Dwj82(f=xv6 z1Y3qg-LZ>gpEeN_%k1W;-YJ(4%k1W;@Xix#)1Znc*i<6L6Kq#P6i=`zqDpvnE^fL9GPp6u^K28fvfA4{UC8)V4ymij-8@ z`Ew9G%q<%f2>0V8nw8UapBt8 zRrfdPXbxT0&det#ou@KAtz!Gr#A`1KXR7S*GXb`pR{zH}+(dDY{QqGEw>+IcliEtG ztx|(c>Sa4omoq`{0zx5nmCr8kakgVW8fTlhPbp*wKS70Ng2_zjOW-Lfsa!pXYtxDVtmp!Nl?`cl%2 z?4*WXc93VPC>|g!ouQ+5)t}?}DuaeAJ@Kj+V5ZXe*MHa6G@V(bX|m__3k{bhZ7*KQ ziY?7#x~b_*IBW-Y*-oLFRJlsUEF?6$DrmL;D}sJvwrrI^rhIqst}_EuGIRo1Zq+L0 zmXgaY;nqolL23!4zikYzfT0HWE39$T{Q17Y_1LAsZJJcPFLje~H|IC@pk#bADTfuM zhe(xvXcnn9#$XdA3mNb1cN~J{*)fT|MmfI>Wd7kxXEMxU-whUGhb&t-m+7qS3TwS( zn|HD7O)P711FtPgH}KX^MAd&Bd7VqN;bn(P$PbUl2>;fK`?pVkm%1t3RK&Wb{j|*w z-sSdOT=vHVRq3cyu8UAs=zhVEphngtg5(?g*~h5LUIi<6H@w3Qg{L!3SdUNDq_)Ei zLU+R}oE;nzth4+u)U#9db@Jw98Tkf#s}_g%z-i1%O*+(rQ%%;ue5mK9nlsLjZo;dC zw}$S9*BTN&jm|Dsraja%Q!Nd*A~Tw!;QZCfz_?eJ-B6tz0;B9hu-f0#j1r|iJ_Wa5 zYAd0c+M>e&egm_v*O4r7)`*>n(m!*ZrP~*Tn4UG<@801!^&d*lRHS054Z1fIEtM@( ziJl;?kXUxaa!$MaTnx!4V-SzeEk^GlZHK*=)uY(>LSI4+>EkXTVk!#}X2 zw^S7R&#|Pg%XEB>NvP=EOLmMVdOJ`tfAw)e)uC{BZ@s_uuUN2dHQN%F7x*HrShQkc z(8ck-@^W?el33r$bFJV)C9doOmkVEWIL>>VW|Ag~Xke>j3B$cTn_%~3m1DPHW zpM!h?v<-v^x8TwG%FtF{ex`sF4c#+qjhuNj?^Fb=kqbcP0oKShAjbnVhE{K(`cHa) zPpH@Z8pC|SG?)B`!s`E1ngCm`>XJtGWLGX@v7)L??J&Dy(Fx$Agy-ZFO-P?6@aHeR-vNFzcraICk_VxhT1p z9JU$ zZluYt?oP{VI7b{eK`#}a*URuvYq%b?^fD`*dQfbw5^icxCiB=FoY$b#hosBw_>;`O z0c8gu9_0NPTuSY^?5tau&HWXYphEFDfg7Q3sBSV#{{f@Sjz`I|1#kRIBxg$xfmy7f#N$i)z{*{Xfc77T1*Mbut9^wqldTi0Y&OjyZz^;=-E2IX zpUU!q8mWd~Dxs>plqV)st(r%3uTBjmC}Vz7MNmzCl174{^k}J3)HYM!2FpHHW*VFt zTUDl^RyxyF@|vbGf1o0oV>QY&*(qba8LHHpnl#)t*Nr8l8HO5u-JTF#M3{uBy8}Y! zWP>E9*?tbvRmAWTZa8$*KB1qSDo3{2qDb-%e`qDyb0P=_$Yt-zD5^Kzx4|}lqs~l^ zoL#ka_V%pqARuk}A!T~maW!xHi|Ac;9U=8W>7o23^pjJXcY`?fBmRWgj>z;)Yya9j zOYxe1Uia-7YX(_$X;ZI|!MQ^*sl@Cr-R-u>^5#j24Y5SM*)C$JZP2V^Si;SwOk|0n zu8CBO7-r2LZC;YLVZD@x3FaXY!z=Xg!&LK^Hi!}BGHphS!Ge()4IwXala1J@?4t^Z zTFR--Q4JziMZMNAGLFukjGdQ8y);PgRzhNY6(Pu}Ru$it^xz;TTNJB6E7H#jbXT6I zl`Z31R9a3amDpo0kCOq(5#%d6&YC;~|$zOlw=w%ADq(7eSvZv3bju@eNyTLkv`zL>s_N#Mo=|HjVQRCUU;EL* zAa#BP&8%q9^OQogv}8UiqpJux3sq+-*}k8b(OSG*Sj2YsHXK*^9Yy&kLf=Jvi=w2; z%Q;C~RQ(&NUJ>4!=C2_e%tEAE+;rtQmQ^1z#DMc-vm`mAwFSHWp z6(u?`FLA4rxVR|MiFt|dJBi;HB|0%LaYJNN`D;<46Y~-`If>YpG;0waqfOb%+)Rf~ zO`|T$eMlI5qcXW9e4R3Bp6|KU30Fs_5GyqW@gYT(CA|^f!k01;-_3L78dRkc@0axU zO{D<4BBg*65$^AW)qBNTW9xrCQTl(X=03Gfy=L)cu3>G$P+g{@l=^HqmhjLp3pF0-GN8p%LE2{d6eg=_RNOJ{jTNqnZ)QLGo zW?g9e`B7eibLk!{^mDTz6RDrKqO3(q)!&DJ3>2aMz8{GH+MiABNnbadS}S7S?AcMO zh8V9D`9JMRcIU*G=lJVS$WiDz9B68Vu-e`%%64Mj_UW!KyjPUy#Jt4*VV4mo`m>j) zacp`m%o9jv4S>Tq95U;aLI@9JMv^|e$DtlUegxG?SQ(iXmY8V+n7{zFWjREKU^|M?FT*Ix3e&qC8=52=qR|SA#n=ODrWjvINP8u z1k$S^J_LCmNWBViwb#HavZSFldLMhbyi3R#zOiuL$X)|}3zJ+t#@`Q$u{J7JT~t!a z-%knoGm8HR1gT%sQr{}dT`IZm;YP{5Pe}S0ToceuZRX>m*!75+RiSM!-3e|1YD_u5|*FCBTC1wPP)&*_F9= zrts>sCnI*9%XZ=-V)yUGM8}-btQ-_pymYsz%XFMhbujlcXN*zotEiMKfTR{L%~`f6 z?uWityi*hK&bGYgpq~&=(=c;kt+ad&{gHU~W@>YdOmF734~;-lp9VKu8qY$m9l9T2 zoz^C-Hevq7(BHmpO^1 zqATyjyu?U&lB(0eeF8_ zrgqm`DZ-^S2O|;=(yX1FgoFC%{wn5$`hy19zB}%Cg@-P`k_epyCj~<*5%ccnaDKgg*p+U1s@5$}odqYiR&2LMl@p`Ztx@eznD)pj-D4oNZjI_*aoh@6E!p== zRrPkEDxG~BPIv8;q;otU2@%vj-l_vKQ$Z)DhkVQ*=BUf%z7X!#uS%+52=WtQCitQ$ z_#~}g{Rer8!GAY8sR~#9hG!GEw${#JW9_S?Yf`c^h*7K2O&3zY@XvRZqKqB|__0xt*Ai)lZ3P%Gx$jfyM7gQzeo0J z{VM8_`+-88y*;ZRl)bUmuOh#G6>I$}>Rt9jLh9LhrXP$^ zr}e9-pVzJRtH`fk#ah3L2IuZ2(UMr}S5dnyvV5%dt7wQN>SL{6MSlG%*7{X6)U98| zTEB{hy7jAA>sQe*Yxd|^>sQgRUdqFSSnF5O@QSfmIW^Y$RWzbprp@T*)~}ucf64T7 z>sPNTfO~Kn!l(ujtD<3U{YoC<(rB1lzfz&IepRAcReam%1_yS}MzIRCB7In(y9Pb9 zeie;tQE3fVW6hdOwDUzMF5610@S#3(E&|_6CniiuUVIM0PWPg8mSgr&@cW zKIo-A&0Mxjy2t%{xD|3gZ!4*hc8zbk1ogwGPQ|oqeA?}I%u!RQ)6ECp`k)|+K5nih_*WsIw2kMRuHX7Rww?JJ4l+NYWqYym|?&zx{R8p+ed@qLJ`Ae({Ij%M=zJ!dN~s4rr& znTE6}ta=vly^8#uq#B)FrZ@V9uM_eUlspSKO|y$~otW2jZe-IswkXkwd5QC##KxjT zC*~zC3ayUKMTt(#OI++Et|&@$VqW4BC$Xa_(TRD9OP$0+MTt(#OI+q8-Y-gYVqRja z%S-0gLdkYwUSgY*7*Lex#JmJkyP(e=l<_z(!7Xom?MlGg*%9Kg|w~W+pM+|?}T~;DE&oK5M1Y@n_vk=vzv+j znPEY-r`LWET~jBFPD62N-v$mR6~#|Ne2j^vlH6#8Y=-`8m*HT;d}K=4UPdq9e~$#; z0JvJ7C*A2@C@f<1PkW6s@g|g(9pWYATnaYqcBM~W9_c}(2r%s&j$-|g_lTKck==t`ux7gc$=A#^3htj!T={DS)l=8JW8#xH3MP%R`6`t;<4|jz(nKQ>DbnduxB6%pZ zj4*h#jXPbF9Ksqg3;k?j5j5yVS3j&5dh9Hp(F06srxfUu3bzya zX25KKcn;(lpk^$-WzS;#Uyx|@Nm;lb+_wmR1?V#iVwo3-f_D)~?qf>A#jyWL_}_v4 z;&PR~PPyOfWy9cq;2vngN+$4K6|&414d+2TR#+|xr&O06?|Hknh@f;6)_&qc!l027 zJlSMcvA8inU+f5P2AQpkl6Y)C4MvzlP z{1#$6$Tkt5Lp%&}FHofpUa%n!Mxrx%rt)!eW&8Lmi2MR@?sfewh05r}Tx~=zgbiP# zb}!<0Ap_=b5dTBOj{)m6?V zCRVFV_&O2G3I(-mr?UMqUo^dd6{4;&Q56obtlmrP8ntYaZ|`!E^rys@M^E1xt4pmX z;r-shtC|+~&C{E&a=AJz<4iIgwY9iaTw#l8>Id&y^0E!+ty4NJrnh|UYtT;v){C|} z&)U9%5(MzSJ)HlY3AHa!`Y{^s_vz3_db2`pst(RmU|$n*79tyg3I&)1?%*w`X8}_V zvF}P=;tQB2h~*&jfU24Fj3>7{)5GAeig|L}m-T>fDIwP*at#n34e<=f69BK;M?;>e z*BsA`iPWku~LW>bUM)Cgv zaRSIX5m_ua2jnckw%5J9E^<}GoU&+LSaS<)Yq{q$N@8rZArt-#?srgdIS@VpaWlyE zA|8hLG02Yq-^lh3K^gUksSF5X(Roir5IT1LP_Zn;~8R zc@}8665=EhJh_s61p5KbTj6{~&__Vk3zWg$R~Pd99a;8j#mWloe~XYwYxxcg5KIs8 zKzA$jwWx#80j1Dm8Vbxtkh#dsl59|=A^2BbX&5}KXs<^f5X}zGzlL^$bH_C->k8O#FaEc9A2JnoN9a#P_ybV04&vToj891_S`~&D!j0BZ zG(fl!q7ozz;7V?~*6G(MUKqjSEq9-u{9nfKpy5FZ@NZ~dPBoi{AoMY@Ho!aqu>j;S z5ideq4sr=ls?qmDZx&ZO?G#wd-LwaDiIJ916} z86!d?=jk9Pi_i#qCCFBwLhVIXas!&W5HLj4@jRjS7PurKW} zI18DSi3iD5s0IH6v9AH!f}iqYl&n(rEx2|Ahdu$@f(L>01G;>N$gg{OTAaPi6)mhmWGR*&;> z8epad`8#X0%wjYECm7ProxL=qCp46sJKINsC$-RN?zRgLX?BC|vG+e|ZDW~x>^l&2 zEdO4+2E?-%=01B*pVVaBJYZubuTn}6I^3RId&ue-E9a0rPl2!64XdPXf6OQL_9v)r zUCNTEu>q~R%VLSn5$rl;O#7<-pu*n_FN+b0Ql!2A z=`tM}j%J*&c%?#BY5l3!9ze~F)P6yn+cZsmvL?I>?qLKU0Hhv;IL>QiC)i`$)YvOL zqOwYN7VC==N1-H~U3w8o+Ix;OeF$$p^q962baBry?qbjL_Z*$eaD;c&O=LkJEMmpz zN2bPI<)ixv>$jo@gS4d?xh+ghRl3n?A??B1V0?zcsxcaXEx*R}R>=h8>)@x2##+ly zn?B-Kw`%z@!jW4kK1(3of7LBxHBCJ#YQt^px=|TB^l6tDE+tvi~Js+ zCf&-#DWjB3P_8|`Xifbs;E@K81Q}m5To$?0KkIE5Piv1aT5lah(5OAWX!$@dy}ZAq z`HZ(RbBxQ3ZXyP2r|+0i-iJhsZ6^;JwG|l6mUp)Tv-??pL#ngKTRn~11&pStFIs_V zZ3Tg8V8+l^4*&!ddE<3H9l4mTS39!!aj3xM{BbW;A_t1b_QAX|FJx z+VuOi{7pIVQH2et|AF$JX(q?o7YGO0eF3%OaIk&!hrH={dz`DCDoIV2Xm7DQ;;t8v z#O{cDTF*hp{)qdaW#~#yuntCZ{%#vY^-?(pgZ`wjz=mDu!vYs}&o})c1=zdEAs_<*uB!hc%GbpxTa?z&{4YtXLio%t z2<9n@G2ifiodW+3as+V?2g(Lq={&yn2DId5-?*>O8c=Y``T`%`iS?kX=we{%t5Pt^ z{Tg&F0s5*Gx}3$&l|JIwtzW5cgnAO;;3L0r5WE-vH)%i2f(@PBEZL z4K4hx)4-~itlu-;(E_t4AqOBb4G0?{mVhh*Dy-CCIA=qh0dV&$Jzse}VG(1=!(Mxo ze_T+x1NmzJt5TnSyc00ewiD!WASgTHDrbdv@yW{w=+`y-+A!s%;DU3RPFMW?0a+%-d;K z8%g^qKs)r?j^p1xuQ)8lrWIW01)O>7S%OZw9eVq}CQ@loIdaTU~i+(Nh<%qg)l#DC9FT{}B-Rr)g8CfCIV9eUt+b;tfc8 zD9ybCX(o(w0p(-tG6HQrruuxmf$jhDfU!F?!1IJBU_{|PlJ1zmw_gky>Y?JbW6&LL z#rAc=qC@qQiJtQte9>I!I1@eP>3}r=Ysz_;lCXy!c-O5h(&_yW^;Zik+lAL3efvd8 z-?Gk^y7^DmMch|&NI|7*;&{OZ%(??ByW4jOrcQ=!r*$SDk7P+C^OQZo!9e|=?9)rmoPbEU@WAUK6QsR3NKoYk~9iB)pCFZD$d_18oex69q}5>02n z{XK#5$6Eu=bBraR(KYrawoYjH_MxcsNc=&xu?+n|d;&jNVg8!}SuxThha+)Di6W)v z&lO&6@w+YFZ1J4%hpkNcD)4Nn*v*A^#Qqc_uXn_L6xZneZlT^%7T4xx!wd$z1zE0>1nBU5s9A z9}SMXm5W%F;r%^v_oTA9A>5!edsyO>aEFMVDHZs}Q14!gd)bil!d^#0^e#Vykj~>-HN0@!-Z~5by9}wfK0Dyge6`$X*DZ zS>Qh2rH>n`RoP=o{u2`M@}-n@gc!vh4`O_GcPcPRX@YsWt1Ui8Zb+u&q^1D^fOsSV8t=j#`W5MQVkS?P&3;Lg+2U zP>Z?HQ843+B{CURYE({vs7P%jh&AOdod=fX{a>$pw_3UhMlO+wN**SdtMn2vc!yZJ zz}PNELniu_k5cn8b=XZhGto;0US=*+3CH`H=XJdW5pL#FJqb(ilThda7F43e`l%&3 zpR@Z2$SI`t3?$=GrKd~4mPzWGr6e=o#=S~hDe*z;ClfT=`q&>SNUtxk8r{z|D$`Wc zAo4rX3cVsBRa}so(@4~%R_hnyT4P*@QHCi8E_1+ul;xmlJ9|fXXGj zdR~$Cf!GtMT@YkdNYR#uPp@4Vlsf#;(<_e)TCLy`gpO9sWkG93F}Fi(1L`hEc{kg6 zAAr0INKCoinX2z+eL-e;5?6{1^Qz%NB6mk;XftN&Io;FvotZnGFEQ$6oqVp+%f9Gk zFF;O914!{^xul9%#DOud*-i4Sb#BXzETy^FLHD{lT?&e2WBjuCGO_<0BZya{ug9Kq zktWAX0^M-)Lk33VYe7lc=7fSrn^VKmPFY;A4L-c^V zQu|~Vk>7a{Jp(^eBKq1_LGT+dsIC_?=95b^rjVDUZ`?AV*#+t#LZZR*WxyUq{&4-*LRa=P}`tW%XVOEzw@4<8KAiH{03x zeI#`kU`^lLCewco`Mg*%ee)QZ{xReSV#)N)vt@d`5mCUJzIlmE?+V!j)D#Nr|A*=A zIK0gU1TsAv_r z=Mf%jS4R^|f^iPf%Ktcf)G+the9mZ$N7{RXiT zOv-B{V9URLh%)##uV0`H-v)UNV9URLwKD!SQw@Xd!1fRxe#@5oZb`W zYlOZGG>n007|c(bLK`)lM6>z%8-ZT}(ISYtv$zKXxa!rYAMiyT2Imo}e>y#x`kIEo zI3PV5;s%flMGST;xki%}Q#*`h}A2 z)-OB_zhnR<5Y(<&y@2D^LKE}W2W1(FCe|)r6_lrK2VWAnfhov}41PxQ(V#nqc~{O3 zx|&{S&>g$Wp!b(N701~jYb)40gNd`F ziCGx7-JdSAsno~dW-PZloX;4)JO&MHO?GccqRD`fTPsAysvyxWpilMIITWiGqKh?y zM0+86Tfe1PgAjwQ;Uqc;G0M7~M57RUSZ~r!Mr9Z7T&VzPA?iOxbyv&NC=BE%8a z{&b+L5DTm`NOTionbkm|yAZ3bH%Rml;&f{*9q1Wn+|E-z1CNoWl9r-K$vYZeRf_Bj z!ItJ&Wj=%hmhUaLQJL=m8^3D#GD*k{xy?{a>_n9G69D0&rK8~N(?Kq0Uy{aN5S_u}&g?7RkW zHi7svkdH}h0FhjW-DyB6t&}|sPA#Zv0NSh3CKil3-XHPiqG^n;0UkdYg64*GNgVnv ziQ}lsS0}(MSH{F~T-<6!#Km4mPmSO*SRygGW4%Py(Xc)OA6TC6T8#Ee%JYk+JkKa7 z&&NT9CRn;Fl(#G=9mt*ywt6wx(SJ-WX%(MO!JWymU`uH~$R za53?*$b<{=e>Nb-�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 z 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%0Dr%?Z=lok3wUBG<4f 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 j|gc)bTOHG6>K=*T)p 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