From f64f407460b8838afa531950a1f7cc28068ea579 Mon Sep 17 00:00:00 2001 From: Floris Bos Date: Sat, 13 Mar 2021 21:01:56 +0100 Subject: [PATCH] Initial version --- .gitignore | 2 + .gitmodules | 10 + CMakeLists.txt | 31 + LICENSE | 60 + README.md | 36 +- arch/cc.h | 77 + fs/index.html | 27 + fs/pico.png | Bin 0 -> 144850 bytes fsdata.c | 9203 +++++++++++++++++++++++++++++++++++++++++++++ lwip | 1 + lwipopts.h | 63 + pico-sdk | 1 + regen-fsdata.sh | 11 + tinyusb | 1 + tusb_config.h | 109 + tusb_lwip_glue.c | 248 ++ tusb_lwip_glue.h | 25 + usb_descriptors.c | 238 ++ webserver.c | 55 + 19 files changed, 10197 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 CMakeLists.txt create mode 100644 arch/cc.h create mode 100644 fs/index.html create mode 100644 fs/pico.png create mode 100644 fsdata.c create mode 160000 lwip create mode 100644 lwipopts.h create mode 160000 pico-sdk create mode 100755 regen-fsdata.sh create mode 160000 tinyusb create mode 100644 tusb_config.h create mode 100644 tusb_lwip_glue.c create mode 100644 tusb_lwip_glue.h create mode 100644 usb_descriptors.c create mode 100644 webserver.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d4d0acb --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build +makefsdata diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..c3e4b4f --- /dev/null +++ b/.gitmodules @@ -0,0 +1,10 @@ +[submodule "tinyusb"] + path = tinyusb + url = https://github.com/raspberrypi/tinyusb.git + branch = pico +[submodule "pico-sdk"] + path = pico-sdk + url = https://github.com/raspberrypi/pico-sdk.git +[submodule "lwip"] + path = lwip + url = https://git.savannah.nongnu.org/git/lwip.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..b3f5dbf --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,31 @@ +cmake_minimum_required(VERSION 3.13) + +# We prefer to have all linked submodules at toplevel +set(PICO_TINYUSB_PATH ${CMAKE_CURRENT_SOURCE_DIR}/tinyusb) + +include(pico-sdk/pico_sdk_init.cmake) +project(pico_webserver) +pico_sdk_init() + +# LWIP +set(LWIP_DIR ${CMAKE_CURRENT_SOURCE_DIR}/lwip) +set (LWIP_INCLUDE_DIRS + "${LWIP_DIR}/src/include" + "${CMAKE_CURRENT_SOURCE_DIR}" +) +include(${LWIP_DIR}/src/Filelists.cmake) + +# Extra stuff from TinyUSB, that is not part of tinyusb_device library +set(TINYUSB_LIBNETWORKING_SOURCES + ${PICO_TINYUSB_PATH}/lib/networking/dhserver.c + ${PICO_TINYUSB_PATH}/lib/networking/rndis_reports.c +) + +add_executable(${PROJECT_NAME} webserver.c tusb_lwip_glue.c usb_descriptors.c ${TINYUSB_LIBNETWORKING_SOURCES}) + +pico_enable_stdio_usb(${PROJECT_NAME} 0) +pico_enable_stdio_uart(${PROJECT_NAME} 0) +target_include_directories(${PROJECT_NAME} PRIVATE ${LWIP_INCLUDE_DIRS} ${PICO_TINYUSB_PATH}/src ${PICO_TINYUSB_PATH}/lib/networking) +target_link_libraries(${PROJECT_NAME} pico_stdlib pico_unique_id tinyusb_device lwipallapps lwipcore) +pico_add_extra_outputs(${PROJECT_NAME}) +target_compile_definitions(${PROJECT_NAME} PRIVATE PICO_ENTER_USB_BOOT_ON_EXIT=1) diff --git a/LICENSE b/LICENSE index fdddb29..0567923 100644 --- a/LICENSE +++ b/LICENSE @@ -1,3 +1,62 @@ +Based on TinyUSB example code: + +== + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. +== + +Uses some files from lwip licensed BSD: + +== +Copyright (c) 2001, 2002 Swedish Institute of Computer Science. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. +== + + +Other files, build scripts and packaging, public domain: + +== This is free and unencumbered software released into the public domain. Anyone is free to copy, modify, publish, use, compile, sell, or @@ -22,3 +81,4 @@ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. For more information, please refer to +== diff --git a/README.md b/README.md index 32de915..01f0563 100644 --- a/README.md +++ b/README.md @@ -1 +1,35 @@ -# pico-webserver \ No newline at end of file +# pico-webserver + +Webserver example that came with TinyUSB slightly modified to run on a Raspberry Pi Pico. +Lets the Pico pretend to be a USB Ethernet device. Runs a webinterface at http://192.168.7.1/ + +## Build dependencies + +On Debian: + +``` +sudo apt install git build-essential cmake gcc-arm-none-eabi +``` + +Your Linux distribution does need to provide a recent CMake (3.13+). +If not, compile [CMake from source](https://cmake.org/download/#latest) first. + +## Build instructions + +``` +git clone --depth 1 https://github.com/maxnet/pico-webserver +cd pico-webserver +git submodule update --init --depth 1 +mkdir -p build +cd build +cmake .. +make +``` + +Copy the resulting pico_webserver.uf2 file to the Pico mass storage device manually. +Webserver will be available at http://192.168.7.1/ + +Content it is serving is in /fs +If you change any files there, run ./regen-fsdata.sh + +By default it shows a webpage that led you toggle the Pico's led, and allows you to switch to BOOTSEL mode. diff --git a/arch/cc.h b/arch/cc.h new file mode 100644 index 0000000..d4adf7e --- /dev/null +++ b/arch/cc.h @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2001-2003 Swedish Institute of Computer Science. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the lwIP TCP/IP stack. + * + * Author: Adam Dunkels + * + */ +#ifndef __CC_H__ +#define __CC_H__ + +//#include "cpu.h" + +typedef int sys_prot_t; + + + +/* define compiler specific symbols */ +#if defined (__ICCARM__) + +#define PACK_STRUCT_BEGIN +#define PACK_STRUCT_STRUCT +#define PACK_STRUCT_END +#define PACK_STRUCT_FIELD(x) x +#define PACK_STRUCT_USE_INCLUDES + +#elif defined (__CC_ARM) + +#define PACK_STRUCT_BEGIN __packed +#define PACK_STRUCT_STRUCT +#define PACK_STRUCT_END +#define PACK_STRUCT_FIELD(x) x + +#elif defined (__GNUC__) + +#define PACK_STRUCT_BEGIN +#define PACK_STRUCT_STRUCT __attribute__ ((__packed__)) +#define PACK_STRUCT_END +#define PACK_STRUCT_FIELD(x) x + +#elif defined (__TASKING__) + +#define PACK_STRUCT_BEGIN +#define PACK_STRUCT_STRUCT +#define PACK_STRUCT_END +#define PACK_STRUCT_FIELD(x) x + +#endif + +#ifndef LWIP_PLATFORM_ASSERT +#define LWIP_PLATFORM_ASSERT(x) do { if(!(x)) while(1); } while(0) +#endif + +#endif /* __CC_H__ */ diff --git a/fs/index.html b/fs/index.html new file mode 100644 index 0000000..e9ec696 --- /dev/null +++ b/fs/index.html @@ -0,0 +1,27 @@ + + + + Welcome to your Pico + + + +
+

Welcome to your Pico!

+ + + + + + BOOTSEL + LED + + + +

+You can click the LED and BOOTSEL button on the picture above. + +
+ + diff --git a/fs/pico.png b/fs/pico.png new file mode 100644 index 0000000000000000000000000000000000000000..cc19c10a33ef0091d2c25a5be9fbeae20947d8a5 GIT binary patch literal 144850 zcmZ6xV|1NO+b|qw$7pQZHXE}s+L(3E_vVt}_G#>d?OdnaYSt z2mwI`A@^Ba!z1Tx-92Mn+x6)6a^rbPIhS9Zn?O#hb*;018PE3X5sU#DRUj4BHXJQ^ z3A+8jCrlPzDo;-Y-X;{T5OKaf+W|G`eo5PzI^NVNsk z@$Y6iFki*~|EHMR{O?lu{{vZD&iWs0*#Dk}`+uk89?^ch1>`)Tr?^fM9&e7oJSCK*!&Xgr@nV*RC> zhQ^w5_GrXl%?J+k-@G@wePUyakW0C6B085;{eUBHSyAun7e z{9q_HVo}RW#xRVa?d7wm`62!Ef3y%4U$lDLl~%Svx$eK5)#oaJs-i0hqL@H})Ge3H zDzi!sUbkAgcOBwaY)? z<>1Yo%lnOy8@6r2Q!4Ic|5z8uC1&x(fv$BMu5zv+PwT7}$k4k0C|3P!fx0SW?K{G!li+g3ShgWE7 z?-WJP0&X(_v=cb=B(y21m-BuaEi)r7Ekc?HAOu_&0pO?yT5M9WUzk+J1xMF_k&~K= z86{Rrn)8~>(sHEC(W7CNxZgWmW`4 zO`T`&8E2Lj&C$t=z+w2r>nT;M8NMBL>xE23sG6muLX$|tQ~klm$8VEUcIAtWX@6&& zF^o4OeKB&%k+uH`F&IPlS0zxH>=iv=cIIlOKci4AAR$2)ouRf&KSJH(jxtD)Mi9%3 zl8O4WCl< zNMFdDa;*Pk`%OKqM4gu3g|LGg)MmkD!+aj>u8MNvd4+@M@|#BVAbDS)J8%rzGYgV~ zl>1XqN9xP5SznJb;=K1n8QyHfMPcvcR&x#^;X>43c>v>7gW+H?nDiRr<4`rGu*hZI0ta)v$Qs`@ehvbJRkoJs z;tj$Pweu>{C;96+{zFDj{P4}pa&XuAH1K+AnkkYNeAwPSn$ElNtOpq7H}_E3cofU^&rnZr?c9vU#Q8g8IEJ>Mj^YUK6N-!VxQ4X(8~>H@ zC{}2r9>nu@x25#QH8%!N13m?Yx{V6!rMdOCHxxNCFwdFo-)jAQWF|-OlVh`kT^+rl@5hjd`A3; zh7Jk7Rbufoiox(|x_et;o)cBQCmW6!-oc7jH*6$Yw@8Rc-l5~@qp*ovAH; zFRV|tyI?4!hX?>k;zv2o8k4XA92Jd}t`dhoX=q~vg)dS2413k2izLndZGus5Rk6+-2X$PMJ&y^#Q|tpM8ne^6TA< zBEMwsIUvW3`+L9%!ImTUMTsXMHsC}c|H4A5rmsn0o{q-Fw{MLU65nDh!Ac1XnhnV# zyA|R%FP1w3^ye@8k>F(MyZI-u=7MQ+)LyO$_c-iys#xciR(IvWDvtkr5s)*h9H(Nr zRAGUKqyIqXynsW*FFatdJglvtiktb^HuboITiKe2mV}CKqVy7a4#+D79ZZth7P$V3 zKeW?J8Qlm_Lv_VuBS?Xt!a@`oAV^6uJBRs<tx7C-c`2Dx~{^)BOXpW!#AlOP1CzZlEXE-sQZII047xAqPQ4h0Q4q{Lux= z$qqh^x^KC2>Wb5<u?bKQ$3q?a04plT|>HX$0VjMSr-dhJ16^IWU!xyn&Z^m(K& zR_|ETDnX9_+_0S6vhvXgRR7Grhik2FfF=QCC7WFE-Ynr2jeQ>@TmhC&^prpe@r2E& zkjSTp!7X&N#)9M*NKB!4^OWkyiHAX4(= zG(>F|iUhGyA-?SP0ef*_$vfQAV)Mr~u`Ixln}>27ik6+SVATcCo{ z6l%y2y**bf-y(>o@NLD#k3cu~SmjY6bm$tAaz~yTMI7R)pR+^Sz+@bP@<;e7SSiui zUh=0`!GKDirYTj10YE;CoXjX*HvFA?HpiyiRyAWDP@lJlfI2_p%c14|{M!2!i-6b>TM24m| zTuXm4uF*q1o$-Rw@1bZouI6CXptuDqb^rS2&A%K4UR=hRCN>z(GKnoy28T2AI*#@@ zIP)nL9DM<8^Xkda!ICV@6r+pvgAy4A%<$#BMFTf2>MV)7g(p6|k0vD{@+-|4>VDbS z1SxdLOid~p%4Rrb82IX)*xUq-L2sTn#HDJ_@#~nsdJ4s}MyGM#VpM<}I_IWV1^M!o zpO3(@sqZ4CRPyvug(|9mJoK*Wsq}+3#n%w0kDx9mSu(9jXYIlK?O-GOQBZd>d)byZ zL;ps}u5ugp=QJ*`DFn01P|QkcciS#So2MX0!cu^g@{{Hm%xx}YzwX-Y3|H@u5?Qqx zaxY|SJzC%&W+Gd)bIm`v4L-v*Th}>CDu>I>qTBiYZCuw}}!yMC~ti3luGIY!s@!bFBi6AI>&1yOt+EO{=MtE_kIv!pt{ zx+`XfF^_35ntx&PrI%c!Xei}!sG3iEZ4Ae^nJj8HZr~4$#A-5;&!cM0ifbmLwwy6a z$q=)`3UbmJdJtv^UFf<6UzYd!Q>uBX08%6XDNz--c?!*k6b;kj6219e-ULQE`0wDF*GJUMaaI!2GtS~Gdq10$)Ja9 zWB}SRq_u5qUs6N@+7H8F>Q}vQZyf%c(%f8Q!L0OesfHFA#%k3H9R6}B_ydBqRwD#2 zZ?;8=Rf%7cI95jq`K-@~RojWj(36(V=-Bmls0ERTA_8)9ArOZ3BQ83r!*q~&DYw|a zZqu|tG0`=}YWQFW-wVH)_?z$wRv}qV>qHAX^sq?+0UB!Vv`cD{+L*i%!l8vpghgTHFFk6W#9eOB9I1TD`B95Go$aQm=5xf)~&=gR9C?`Em%@cdD6X#PwebtNp<{B^INSa3zO zC0_x^pUlYO4cY3jGLW?`V(@&Ej%gVbd5piqRGeH=QaSCA_#7WH`QM`tzhU;Oz66Z3`Uyyd!TBm8vE1?hiso+{RV)RdLg08o7XGElfd8cPuy14RwK-Ma!A*dDK+rnwIA$i z_t_w^eVSrqk?uy~#Y0#)l>xe0gkc|0%~=AGYo1aJRqFJa@qEUXnM1$U+31FD0uD~6 z^`2`ap2&D1YvHTw3bmpN@RNs#?oYWSWNH{Sx{@cf_Cl&&pOMr}|DRtub9VVuJV)>@ zR=kiHS9#Swxn`vzsX`wX22qr8E4%GUOGm+DsO?)G&_L!oz6I>>PI(&iY$cAd^>R_? zjc0FshXhsbWqnIisj>U9ar2rH{)Vd;3n9`XEMB3O)w2)ejR)nGie&XeaQ%J6j<>3i zx1~%gh3@*X-Y%rN0n96Xrt^TMvHV*yWsQzb6;!Ud=qwL(5^;V+-D}u*A#|`1(?tbH z=_?2sC(fbM(wnLaW@N7dudb{`|D2X+B+5GyM&Xh+`;P0GIP2=+BKrIH(wXcVvhO5T`-Elgd8gRAS~L2IKGTjzKupH+>TIXk2q zg_Wi%9pL#@6<30Ybg5Mb_m98)f67orcTo>jCH^`uTXeX*{Qk!K7nXm=hGf%fhGMYl z*o8!fkBj`iWfv^k3qXLqY1PL_CYqP$i5+?nok@IctaEc7i$*Y~Xm#z{WmwiBB*7>d z&u05692cA%Ok(Qiu+h!J?b{3$DiK*3nnIU)_S)^v`IP~k(Bqu9XUOv61!@QdD@nZ= z!@&I>bd^P{R}Cu-7e%D^MABVcejRA{&}eFnNHM%%5Zri-{zURcr+_F`w|7Ue#_v8K z6Z_`}qMG*uSsT3l!w%6JEX??!p}B=huS)u?lnT+ey+ua!F4_)JTP|0X+W$xvFPQYS zhcwMBshfglAb!b6>+tY>&gmQUZoLX(G?d7)0BG*XJ?AY{*Qj7(fiv|Z!VFEp4hDGrcs zZtmziK`6pmOY2-8pP!bluuT$Y!P``7M$;uiNI@CvuJR(vjbvF-_qzVw7dlT-icuo6 zcurhLPL~(5*%gph(4J?9#6_*z3gz{QIxh8W2?=Wc9l#?iz?Gbl>unDYVyWr5QF^Z~ z*!a%fZn>&8GJ;fvM_^%Ql|Y9~7bmlrn;74sYm+|%zIcXQ#B239DDOM} z$PgXUOP!`TY&$gwX@so4;#h;NeD-IRgK$QY&HQi zw;mKZWRj3q4C>SCs{Y2uQlz}`ivyv{o>#bo2cn(gr8fdgX2E0=f$2Yg@V>a>TgEd$ zt(P_Hj3QA9L_KZ{QPjT7g#E!w(04m$Yf*o9y0Gc@94 zBF3O=C`fsE+fwCAUWz*^2|PlH?g!wtYj3 z%*d>lWD^uiN)kvhG0O*{z1Es{bb@i}1=Mm_J18LKEmk5adPRguVfgI!UDY>N$iWHa z(#6gsCWXwb(;u60-#j=>bT`rWInBs-eS@YX#i=x$Zt))TtVK#vCa>1g|>y z1kJ+GjMCDFz`{Mjw_kNdFSmIyr#eNdp_9Z9F6uNb&{eV}q+c@w=&wpkbYfKVdyrJWuKrI=9C}$>&ngVw)e=!RW;94t#@Rzmn7YVogHPTJxE8HLvR; zN6#n)j}0%4%Q5xT)v4ri_52Ch>u`j#lTdP`)t{@DZI5G^!oMTuO+t5E0b*2~JRk{_ zUVftan(H)_MB5!TB}xVIa)~X@WrPY~aovV_s-hvuZeIr_MuYP$MdCM~9#nqF7fy)^ zKl`K4TDUoiPS{Gvlg?Vv;3dxzn(Np^YDT^{gIP8_cMmZVw{}dz8((6^9uRy&Q=-J^ zOOOFRf#{H>zpXWXrEf|3#vmiBv!osUO8X+6oP}zmRZFYHrJI&`9Mgve5sit-NHz~w z(x*3(Sjpe>ww}HGI)=)^f9O-w{(|WB%QMoDFqR#M9(EuJxQ=wayn_j;gRXY)uu3OK zj;NaV5Zs!rvlj8B5~u%q!Z)oRuIrN!+PNuXCuXcPuzElEZh#D$Wz7weMJFcJk11H+ z7SdaLiJ=fS=-Wx;_hR*hPMMbY1vQl!Ow@CnTXne^dL&De3{_f4uH{oMWm!QQ=BtXS z5}J_~&(9HzP7D|3C8s_<;PWsQJeLCh+e5&_x-3o$A>~tup@auUnP1AhRt~T;@9jIw zH#fw5!KQH0wr9zqzRF8lfI1+V8Y8(+Up2z`}{7`cIFc_{>cY{Y&&{*hmhd}LeqUF?^ z$heTd0461)R??t-YQEC^>PE=gj^cilbnUBR5!?N*X2uX`N4kzQsoMS__bvXVprb>4 zJcjGb_{kXruj?5NGX!hINz$BA7Xp|;YPjHiqFh}v8(K24yGN{_<~!gNX%HQ9m@0$# zx=}B$w6RMz=)f$XhXN>2c-3RtBT=EI2X0kwK<7#r zjS-th6R$gj7E=gDpv8!(Q!gsG;Wxfnj+`PLvki|>dPNgS_EQWpTD{)_B10(@CkS-5 z_CVLV;fm|N=E)lE49X}O?r_bf)BX-Hro*BTm)+7+ z?c&3q{qvDuj6` zW$PUbe(W7lunIRSJ{{ozo)U-qeJUfTW~${hyx}Voy1W!}j|+Y`m`gQK=Y#7Jeq)Qf zu0UAp8TlEL%*z4fleYUwII69bnN1WZ{6AsH1ESG23S@3_oLLWifiLEM?}7S{`46w0 zyXTcJ$rv-I4_8@A+6~|_aguLB^307n%@&_@%M&dJ1*D`kapoXcFN{{%v(ZGN>PYDF z|A6pYF$6U-m1iatru|_#5~>V)Vj6k#l$*a6sYWgLJbc->u5ovMfcB=>g1 zZ9*hi9*rhBn%;DD)D?8ZgWLLYMTKbQW$C{buO*MReboAcI^`DgXmkA%Y|k2Rv2oE2AONzT&=FPW^9Xq!Ps}EX%q#BQ&=61_p{Rt|D3{%= zBFh&9ZkgBR-L_Us!W{;QUO2?>$z=4h47;p@o)IO-3Ij%bB(w}o%*;cJmL~Qzf~)Ey z>ga`wyFVKYolRm6xLl=!v3_IBsbi(6&`Aohiap%dv1VG@)yJpT@`cBXdf`UKe!($l z-{BB>nA|*AVdTAj&+%kmQdt{ayk<`$)DdlfN}NnCp_dVmDw-ox(ltI+Edt&@FI z>yA{JZdHjd4c^l?h4m@x>Ppi@S8d?gVB5TS@YV&Y!!ia)b_RM7qlLhveD$+0EDp{m zoCAH?PwJ=ffM;*(Y1bpJ^a^AKymKg=9J2eb$`JWO>Sa^4gRVgC%%|82A(8yR( zYwYd;>VxDW&c~Nm;pK)Sc8!f)k1g)b;6A5me34+4vyNnkbtk0WAJg;4+MG?8@x|3p zg7Jzs^+4Y!llITSn9q8j9vQU@q*@0z`${KxX4HxHK%{Sc3X#S?q*w{HYeqp(X()e| z9gU)dz1?E_19QfAR3fjR2ll(|Y2L^ddT}f78iI=i9;|ux;4%qZ{DBv?O zOrLUr&$fA_Q_%}ya`!3=YYUcS2*>X&#^5=J(@{fx8f!fIo~WRy@t7s)$83f`_+OYy z<|oBqW9}KV@R_DqwzXlK3n_|?BmZcutla1bxL~y(ei_PRKMSN(R8eG4lc-)EmDSmb z{-p2O-v`%opTqkDv}XL~2%O6K+Zp4(@=jbM+K_6;>8*<$SLaYUtar}2)|=+n+?Q6* zU*qv4b&FP0hK1E;wO~D2u*@r(=g>J%Z-gHqkDSG@+IkM9X~Z6_+vyZB+m8)^RHN^C zyQ`g7CoEX_o@7B^uq^175R_iGtaz0wQ{CFSifkG0o~?hw&a=W?Z_140-G$|6TizuW zFc~bmY?=zXoT!uHrA!BN|57We7I)c%kfqOG-ewUagkJ0z<`fm#WwHDyL(8=`aRCqQ zU%4*vI+LOI0s8cTEiQ`DG8QBz`fBFGX>xA|FMg_!1BmEJB`X1ThBSaO(7D5J2^-SM zH6+}w$Y0Ya9=nf&T{bj*VZt*gEMph`oi>K9$OXpg%!cxmQX=qnNYN+i@y^RhNRxCeAzv-kZwz~ zx{4=fx%u0s@b>?Plup0YKFZ6vXYJlV|CbFRFT%^VSLd&ws$bS2zuLFfLcTZ0TN=y^ z_CUYJkctFl@d0AJ-r9Bhbjo&UDg#a4$tcThO_qY;+xGk6`7Ec7LqZvVLhoGD!tYQ$ zpz70=AB*NN#(`APmAp(2zK1eLf6#8;+`E%GRaRw9DaV*xlT8 zByosJj`|q}XHOl@R8K)W^6Iy)D+-I!k8N@R=w;Po>(gXmJT^W}T;?4nmabeYZh~jq zIsb(W8rEH(eU}7}RM4(4h-btO0{`r7p3JwQ$c-FSO^(e$;i6)9F2y0zT(l?WIR#Z{ z_C-TN8^gdX%aHWl*KWBWTyAp5BOq>#dWO}w=DjMp7Hmm=zd?4cfY>zT(?S#=Ajndi zD(_Aphl(#ip6akLDhYAmQb3}2>KSfdeNbyC2r-h9bGrTw^(#7vtC33ji!JqS9I;WC zMv*~Go9hYrhR=Po&&jNJWhK-l|KY;R9hh~${~oiIbY+}0$C>`!?Z|-OT$jbrmt_!| z5&(Iwm963r^4hpM?lqMugbs!!3m)pzfaaK*VD)3sZ?%Pnk$5t*p8Sp7T}5OdRXht* z`FPgrhe?ktu2Hs7VOmAQa6hAL{J!k>TPnV}ylOPVhd(Bvh%jZpKGA8bo}uk1Z6kEd z5ZaV^k)R|2&y<80infCkcbyk78q`SbkkTk{nU}tf3cjRG?fbqvvf?K+5?jq52P#p! z#(MP%EEFHdoy#~RzO(+GZD^nLT~@#dvkJSb@SBl_(sht}dhqO6LBQ7*qHH)TPq;E? zbW#2wI(l}1r8!`aj_@?;-cUHnJbKsGrC!(U*oP66`4ZVmLkV21; z$97|&#fH_qQD>*fp(_-4Ho(ECh1q8iP*rt`YNmr#*fAT(FF>s!IkhK0@@} z!f-zSLGY~xV->+qOe{u4B9daBrX02QphbKMfL4v(sN%0F-d<w?Vu*k8LV z{5lPj6jWooy)5-OO$(m)zE$+ffTpQnuO3@gw1Y*0m;`{0T(h*R<)7GkDr;$%Gp&|U z^Ao6JdVzDEFXX?0C%L3q|LQqHl}yAq7TmAU^yw&gZ}se>r)go4f+zr}D-)p=6=}u4 zw%3f$*sU7neC}ZMpH0Zhub)0|f*%b6nsJ0%aocy9BWzhK5oAwL^m37RaF*HP<#iG1 z>;8n98~a6PMUhS1fLzD?Q6MWzvFL4c_G7hA)(g?=2YSLyn(h&G+oLdgYkH$%s+unZ?z5qf>T%ceFiNn053pPB`q$twZv`v8taS zRxL`Aa86@)ejWVQX7&|51fyCj+N6Guf`=WTZH;3MVD3o9y??XPM z1;48~p#n<*v^6^<>BG|3mM}39w+t)Ahn#h>)q>w7awcN>FF`8Bsp5O;qZG&?)=^MZ z3tzeZ=4<0n?U{S`0jg%Zj$Sa|y*7~tK=?Ts<_+^feK*^$?rgcPkHg$5GP9%kA}=WR z9S_QS*1=?Is_1NpXlWdDx0ICVQ!u_B2*lxEJFbyyI zRB{MG0aS9=LTEN1e2|dVA>@itJTMB09$m{QbU1l^t_x=Uo2sN=N?!aRLZao#diu90 zpEG6GO=O*dTq>PijF7i$|6NmmF+@77s1i8|^f1xV+U4YM%k{BbG;N@Kb$?pO z5v&W!bAr_m)N;m{!)d&u;fxN?$jl!eVaBl-(NRo0vbAGtvCJCJq%64>l53R1;RPT{ z!FfrDT-}SBS*;LwF~A}xJ*k~KQd&m{@sUn+#JlE_GS;rz!*}rEFm|AXZT4~<=s>iN zD%^rU{KnP2xL4l>!8x3AUB5ykhRyPKove6>l*2;KSdE(7x4|F(nswgo8bLDPu~^dm zhJI)v(=kiqiB|Smf{>quR@>Yc=1pY_1Wexq@pt5i=EF zHAM@xC2swCpQ`(Ie@kuf;>YHL4bSDIZ$p|~pH??{QLCQqcL)E*hDdHBa-%|-oJ#nN3ze-sbO%H=a}M_g+1G^Fd2mwo7zzqID9cs$Q-{6iNQm(-4qhs_8!A7pW}Zd1IEo7B~Ecjzx4 ze`^~f|McemDJ=3g4gSvbaBINnW%4WH?7AT3&A03IMhB#lk%G9`PS;JmkGM--t_&1y zDjy0k^d7sq4%C;AoTYI{aTb5=o%+w>8lDU>_c$Hmg8fM!aaO(LZTS#+A6oG%b;n4K z-0G1k9>K4BJ@F`%pRMt_@DjbSa4jEq__Hj9*~X`v!t}JH=81VhuvJX;4nzjmMkAr{ z<>2I468B4?0gZ!3XZyHn-GE9Bqd&n>A(ID|haLI|R@N_ikn6U_uM{Qt<8Ol+KVOGz zC@FxuNI*|vR{lr7k)h%t`M_E$MAm#Iw41&d+S$~AdUIdfEIl)ZdrwgB+2Nh`L!Gr9 z8bj2KY>)RLGU>Wd{1W`Vh)oeKYBALmj3WFQAud>IfY42qCwO_#rQ7d46w~O`ZfgPwju$0gyAhiIl+rfq z-Az(trQtkaVBqM%LN&GE#uI8@3Z4zS7P`kzK{h&)^t)$y*Y^r3LhqL+t!mc|dP`Vi}$KKQP7hi!+Bd zUJ4@7c2kP_6he{cQ3#tiTk|{;hA{HzI`Kc_DoAxHj+ro!ajynMk|?9i3=k=fhZh^s7FS$KT%>!1mYIx9X|c!PQo9l~}nN4MzT|V_CrPivB=r?t$v{ep3L?-NQ$iBc+%P;qZAc5RB|nSC!v5`N^@b z>x)~aZMcP5GP9H1DJJY3@+RowF*3U4cf#pMC&*)rq4Q_fyZnf9nw{hQt0G`yr8I4l z=E;V&zj|Fn2RtbK?XTghhhyIfax-u~PL;({0|-G*StJi8&+9-6*xkU_KBMG;o1%4j zmOpBL>-Mg7T6O;RNpFdMMQjv{_@G#77CnCg59)go-JPvR@i2I4@V#BOt_YUnNExS< z``oU3*5Rokc3KzG1_-Ojo1`X|{OabH4u(;vnD6Ei@{I8J@po+qfe8Rq{AAhM! z3t{Q($<@sC`H-~)I~~zwTsp-j^ZP6L`h)Krl{7ujwdZ}aeL|OL)U&9hJA(h#z3Rd8 zQE}8#Wc&uLME7kRdv0y#0e=J6t}>s%ocQ5kEy?8?O1w z3!`OhuXw&>7+INKa#nPMF2hh|(e5Z%NWb=RlBsFg=`#1_q_L({?bzJDaJv7R(pIN8 z5J^QacYorU-+QnUE5)d-HQ(v>z0p0-*lB%#y+qJIf3uiz4>8u3V7VO+_M;BKb}`w%!AAuIxI07$mSMSrt>I+ zV^mZ)g!!f3ukcQ_?`Ibm;|#dhn3f$IZ7MDPnk+TgzN*OhQLurz%(&$I3)iXO02yFU z-ID^TXnBs}XC8=752?_WOi&k{Tg?>xQh%(vvrKM6BnQ1Yrc+BIpG8tN)E2v|=s7?1 znezuUX|pfgy5qwHC$^veV6)F|wg2R>4XfGvBZeFD9cZKZ(CIu%;W7B5NqfsDFIXl% zsn*QX#{}NL=}AJQ@y+gQ!=sCa)Cdpq;*g#-Tepya|70~B9mUwz<7Y&6(n@L3#%hct zyDv`6;*)LRANjOjShU_03g&KEBXFs*T+$|7GG!^!N7v#*rz7^GBa}Z~tfz)FMDe?I zRvl`q7Z9LAgkpf$8Tf>|4fDXg$0MvF)7igxMdgjTBOa8}&A<06*~5 zG-mVdpwP38*7UeCEh=3{?k(8s6iOmhK`xy;WLNVHtTAR zIpt#yF`U-$#h4YI7!bt=nVtycJ~)RZm$KHVO(Vcew__I`x+e&-4s;&bMRfD3X0?7P zVJdD!O&ozR^kJ5f0*STV-)H#`q4!Z@yCpL=4ld5$A^8dr3rqjk*}Zp;DPzf{GY zVoj#4&Z)B*ufN;l{rH}B5=ZEP4T%NuNjE8?^2=G(=kG=laQSj7`beC*vUwSS76|1F zhQFwm$AThqSxp`e#}qBtT@kn|iu6JoXY4Z4+f ztnymD@vUX5Fl$a8f#De)(e#{F1i5>Y6*oJtZyvs}is(OJ`sy)kT9__OvYwG`M{^Bu zKVyhvCBR_hmzfw}x7Yf_+OhTyMPW}Iot;RCnfdU+Mmli#iwD-4e5!_kd|Gt(#84{JvVb7p%M~`S@pNkIbL5O za<#Fo{!Su&xPm0y`V``@)2F;JsT?L+q@~HV>xum_n!J1M*4OIbx1X=o#xvY zb%cO0rQj+IIxjgCnk$V1-8uYHiV!{#pFPktF5{A>L_l;z^mde1QmofUWFO)IaBU%9Cw09=#NT! z#@>rFaInF^U9DJ4*?lX;zvHx+a%Z`Qr}H@g7E5=;?dvX%X7Y;r9)$m0b?@QqC`oy1 zc`|5v9VRH`Cj(v7G z1Wb7J;_+xInqo0B^p==pav@Trh9d8;Yi(~n7n{x@@uFZ?j(w=_@`scT?NL@0!Po7` z+PRK!oczHLKJUr4am+<3dSb&kM<-T0lhndY$Hyg=uZ#4%mV z)H$p4x+1Ko2ACh-5^_P5wxp|}nM?)KDHzV!f4O4g-}Z5JJDl*ttX1hWz9r&L>~-zi zWM;A?vYLAu1Ibjn+fvO;a2j(COi4T97+L%nqe?m~nD}ZCqRF-ZP;uu*{5AN|AzNDa zQW!E2qi$CWh@&H6o?g$%Yt9dY8Vc0Yq7IaH)yx^FWWOVlf|%q|Ca~jBP_L_jenDat z_?=~Rv~soSYp`-2-`rZJd&70njy?pHbimQ}p5*VyQhrA+TJ>EWyS;ifpGFQG3^`yC zS%f;ggwB5MduQOVDJ4+K+(-*W`ZUC>==H=RE7n(eBC#}6 z0~HmrQ89(fLQTF|@fWR`h%f~U&=~QjO%}TLa^626bb@* z_;BH$9iAXx&G> z(Xz(uJgRgo>c)9-jTZio?Zn=`Z}{UIbUde)Vq>>WR*;ULZ--xzgknHm8iYDF={$&k zDP4F&mXA~N?ucl?)i@^y-rtmRI}OKzb|g|6S9kyN;AXg6F;Di#>Nj`eOt?6vf^Hk6 zVVp!KjX}myj4uh@P`Z?{eEF0!hFcdlA`)E7$~`(pk3$$e*SGQf1Zsr|(pSe^d!I$> zpO~W5;oHyO?5t){-*#;BDgQ3UeyKFc#3|F2O8d;B(-AjY@5vD=BS#hm+N+4txu%F$A<)!SR+A|Sv!Gz(Hx(vH%)f&f9W>;faD3% zXTkjuY6*iNmu6$%0!8|E?!NsHo?y20bAdYy1H)|F((A6pG~Y|@F6I?i?LT50_Bj%j zC7Z6@-#)Zad#2QT#GncS7d1JMV8rUy4C-M4hdOx&sgCHIxt= z@rNq~~@y%C6w=w4Y2>przU@#P_q?3nJv9mQ~pXnLz)` zAyQQ;rS12#-G)YBp^$5W=+n(68$Y|!=$u=R+q~$uHaF2knO=2(DLHwAC)n$rNND2NE5`9Rs8y=uYo7b&WDS4T6k!4# zdFwMXpQZ9;fgd3w zKLTuLw^S~lSfHK5uVt|9doI*Y4rqQx}%0Q|C7o z$FZ3h*~4Gm^98 zd+C$AArK%E>mWKc!9%4WwnxEH?Ao%hebp6bA5wRp7=PF#VViO;}=i7Ymx%*k%80U{K`)#(493(wc;Q0ePxbp1v zv%N5Ke5}djAbpH19 zpX2x6aRd9NM>%x(0NI11SSh-n z5!ku!AYc2(+u6GPRR#x!NF=AY`22GT1pKZtoFHPE_9^ofvu5am1BxgTj|6FJTgYT$ zhW3_LF5Y|z=d3%EP%wZ;mEB$QlZtYZh$sm)VVjfXecZnd+r~6?Y^#i86)Ba{goA#3 zfe3<7&(Qw`^(pr{b$(OHBwiz2{t?TA749u4WDMIaao47ZF>TOIj^<2qb44y~6%iZ@ zB!$H8BSgEy;8CHP0;2?;5NHiBHjE`lSsd~3or7~!eKGJ_wLopVfh|#hpw~4|kwoy@ zP%43>xY@X4yJdD!!Y4;?(hAnd9HJjqHFon?m;OHIF4@4?%s6xAG#}n_4O{p2b9BC+ zmy<_X+tS0EmR`a=`yay7tdZ!SBT`Xm4mG1lHrHIZk&Dhg6MjLb{69)}TMPF+yOky( zOfFR-BV^Du0jnyw2Nbgw)oat_ND}0W6lUjnbM}VQFm;1% z`}gp^+rGienNgbKP4sEa{NdZ*&ze?^pS-Y-mv`<(5h|RvdM%D1xaIBIikPWb#G@Jq zhX+tZ4_jZ|!B@WVkLY56rlw9zQ>VZG5Ppxu`ZLy3ER_g`G$cvJG_6w$0;XvoiIUq} zmt>k^Auc#;Bd4!eMPoEp8*~%hJ#|5--72@t{x5NC3sbKk3Idj8V;E&{Tq{?{0nH!% zFF)7cKV-lxIVW49HY7 zC4B7~hSf(d-%Hi(M6wM;tB4>4nLIW};YMFuRUi#$m?e3J`KSm z5EL}@LLRpYAfm`#G$T&w@DxsQo?x>dzu@QocmE}2N8xySm@i*_BMZZ)@zZS&^PxAr zgRKMo%udX*{rGM^`lfdm2cY6^1Qw~I#%T);YL9Dvjvm}8HA079zAW-7Xi!=mJ z1Yzk-c!Hgr93!*MD)!-95K{MGsU9l%3~5JnJ-r11tg8D$Ne06~)MV_G4nA;pkC0DU zupthb50wD+WQk&W7_~vAS?OSQCQmUvOQJZ-(}xDQbL(CF^yNqS%5@)P`GPf!Ob>C_ z`#;B*etI*_4N+RXGC%(4r+MUsmw9o|VVYW7IXZBh8{cvcApA;I#k$(t&<&GPp~xle z%X#R~B-1Unn?>7}t0ylAZV6tIa7>#-T)`0vbf2+~Wd9MeX`Q7@mh*>KeuTe0{sMb z9H(ZhD!S!(*QiCnu`Eo>M)fGCELTsy-VNLqSY~aeKtK{}%5b7YDB4^XmiZ;9_t5Lq z`8DRGA;vEXUdLa#kLGX&MK(YXSsYV|Br`lw34lL_;8Vdd-A}(FV;3zRP1sx(uF@G+ zs0uwOv7S@c7DO4Lc^xMX?xS;|#t&W|=O^BF@R)8keo{NESb?;K*yO=URG}^6>aj;9 zXljFM2y1i(Q7Ccl(q-KBwvY3XO;?l4RY}<6G-yp+v1$uHc=abZA%Wff$NB4b-pHTd zeFxi*KhJl6=TEtA{U(B;06w3W)k}KmA3VXp$Othn-1u8p{>n4BT}OtPO-%FW?|&!n zy7JB3@aDJiQvYGb=4RdYfgrp-LtvV2M(y!ZltjFKAAJo?eCz{%$lI^Ij`Pl1&)0r@ z2gR_49rH0do1n|<=dYi;kFhodmc$^cfa4HSeQ2^5L6UJC5hox+laELsPEV|pRI$in zUFOdBe1h}OT1Qi3jPc0?U%C04-1PEKDMx(t1e*EM^&en~mg3ceLu}o?hs!TIAIakf zLBKE!Y};Yv=qLvd9^%l!eZ(7@X=!a`WM~Le*AWB>!?t3jK7lmY+Dx3yt0eS*7tGV#WbomAzKD3RDS;DbwS3=FKX_l(0drusT zQq?4GN^IV^n$=5JAWABulNpAlC#ZHrDT`HJoF1mw?txApr~;bkLn#E2(gNX%hX{Te z0&%(suCUHMoLpTjHz)vF_CCI zMsBLY@aQ0spodk>y?pD5$5<3@=9&#>6V&3|{_K-nxqdCbb>3Ap1R}ie+$-r0dRf`s zfv9-j5X{}udLlK)EBgTYx{bGKL{Wf5d@8&9^cCY5B`*Y z8s3e+t(DD@g=~o~;Lm>Ny)5WmO#ktt-223n9G*Ce-4wyf>14;pIpeHNc)VUzRi-P} zOgdX)SzjNsb9sga`_YXu9?c6VShkHMNyut|7k3_Hd}4qNtC!Q#+y)59l7u2lt{a;m zAju+%Dj~|^8v?n5<2V?4iDD_sWFf&^aURDq@p(LGS`b;)YC<&icJP0YdO)vJ=hp?t zaX2=7fIqwM%Y1ou4~JtBo|xBpN0Uw53!0L}=Sk!9If#mkYiOcEtQ8_5Pz0Q4JF=$m zCN94Wj4PI`;j@>& z6UQ6oCwsSZ>1iv71zPyj!(T@!14$+a`DMne}hw^A}#tkX2@PvY%PM%$BBJ-qo;{cb#(q*I)Hk zOh@LnAN`PT|L`B!lO4quiSTVXe-85L>WqyDltKr_TR!Qu8z1{M0{l zOX?`2A)gz}Oap9@jZ&4T&hX>69URd?kQBfG)rV8eBFyapaSo?Y0U3nT-U><->%=4< zAMfJF)i`FzWX8(5>uE;S&DLkjP;{W#3qu8HP>^H?JL1LBYDOZKMc5l5T+x_3F^ywq z(Yl(z3R0Yy0i{Y)O9b2YF*h)Q=o5%{#&F6Cb5nE3LW!=nC=Xu!C3X!@bK^aqp|hch z*FN^oT==EWvM;p>(I@wHu2euw!-+|Y7?gROP9A5pkmbm9g73Yym9FzQ zad31OFJ1W+R>%APi_h%;G}%--i$hfM|kbLm7}fI9=-y1RvWE<+*4ehTYhX)1qQj=3I9% z$A+;oh%$Hu$lC}lHk}zC`38k~a;RQE9>P>6G8lydosAN5u$jbco^mONuhB~^)I@S> zo@y~oyfsKri!wDfk6A7f>j)6_#uy))VUaJ)z3=`c5AEB};&=tK zfFQB$#xLMSpf%czXxmKACrM-sCg$?&A5IaJ4bJV=*tqEu6t52i^*@=VyJca=Ht9e7 z8V_!JjjXP5<%UkqI_sjErKo`8SWqp1Ao15*ALCOy?r`S!&@ znA;~u@*q1tm?~iw3J{l|MRQvi2sM$OT02A(`ShZT_}yifQAOe(kL>07v6r~8xra}# zy9!YdIFg;`%IE%u>l%CM9uxWca}Sg1?Vwlk(=|TNTh^`T(hDxbbS%E{-P`&8k8Z+> z1UPMJH@E!#?Kn7$B~sk?{ad->ns-u3<*8Jvu1C78uyf~bh6YCn27>(FyWhcu=bejR z^VZhTWMoAG$3c{8?rf%slyL`O2<;VvoNJ9uEs5 zZEU^t3v~K_{?JtCm!hr|SEtVZX7bb9X!ktB%Am~Md6AM)bu;6N=>~J%fU3?x%L{WU zHn({YOdH!2$s9UBa6uS^99Tu1Y#G7l1v!p0ID+o)rl-|Mccskz2?I$9fhOZ%fNeqs z)UXGuRE1ywoHE&6$Ei9MLTw8XGZKZt2|Ph)?`)!2@iIL+jVB0=UCkI}jnwccg5RLK zyPaZMWM(WuC@#{|*-jxZGBGuSCZ* zwHe*8C>j-PTj13bNh(5|$#fBqtdJ`kG>2@Oq7gJ-(CwoOCqw$b7uelxfs>{BDDd{GfqN2|pLQ;H)wt-wzUCUK++`i{U61ITp*zTmZEP`&nE;Qpf?!n0K zX61N7h$$88#0<7^!)aPj9+{ zaHxsTKYBMeoW6kv_Yd;;vBNwwauhWdW{anj4=g)}PrvW|T(D^qPi@=DC%^Pro<8s# zR>;q#YnM_y+RysUTkr-$RH{{eaO)lPtm#DxcmWI95eWqYoU?unAH3muKK#4avwZO) zG@lp8c90b}n4i>OckiRSPoB@rkVqV5V)h`zi3#@Yn_+O@Bx6i*&*ak_@|M8w1xY3& z+H6e?@b=CPXwomMxnJiE)O+Z4>ilm;u1;Z2?4%{4vc@cNUrEKN=+Euh@6T0_Giqd6R-Zj{TJd(EzLX@c)i*QST)eSP`REZbUHgdp+ zZCBi^GG(JgB+U6T{#X<>9>Uw#2GI`6L$e5#c{+Pzc%=xFBeRsPJZ+1b@XB$f1}8C{ zEV1?|sum|PG>br)u0@T=PKc55c^oTCV^17ejx#fm;GjOiO~;?)M zRj244h)xb9%98sHD~Wj20O$dnu^i5P(lx2+)ZFKI649056-1G^5<;CnXtNdGvT7YyZ&}8%$voYQmmvrek3I4N2X^nJs+S3NG!u{dShJvy zwuTnM0Y8H2>h(LKgyM16(A>VagJWA5)iRZGp6SF<63HXXW+r*<;0!xnonbsN$sXYl zTcvT5Q4jciuCk!2f-Ev^S2$dr0o9qD4HqXD_Q3uSOA?$Ye6)bs0epl1fg3aCyghpu+v??`-}yTp$&4VaUPAkc3D!j0SbP3*HlDqOdwy~cf_;RGuly~tW|3ep z!0gNvyIwiM;r++C;G(l=3Hn&RcnOx_AV?s}B8uV;y}80Lj;pzD=%nYTNax1L=jJ## za)QZ84}$I^CmrMkZ5OGa20oA5hQM~^fMwB@8P@zfQk>>fV-NAQ?yKti=l?_A>)lG#3L=}DIKR&Ln|W z!_*qsJ3Pnu#2h}w!^SgKGL}3_Q&8c$^DjX4$VifeWm{+-4@bu)`K>Q}jCr2}?Fx8n zD_5cbiiD^|5Yqz2U;REpB$lZ)r=6LrtZ>LnPGB7a0%)}V7$A@FViJ>XRGqbcd z1nBMVMNyTX@gsM$@(TIfJk!Ymrc)!Nv*QdV#@M~nq+Fij!MXd{W}l!K4}yxTQ0Udb z<99Q3uLt}Q@cO~yWk)4NlOnLr*Zr&ixc%l**K)5@=YNvv$sv-5zK6Fmg`>42DQ+%p z>Lt?s4-%L6<55JnA8Z+5S2@2?VgKkn$0{;HFovLrZlH2(2zx1n!we^EE^D*Ua@)uc zy@H<4Vigh?(_3-IZ>O=@WMDeSyPv7>m23k=$6;|#BdQW5(Lau376>hfBb2=unH-wW zX2HTn3@OIg@hNZ$Ea_{)Cd$ZU8mv6+oiS`e%ngoX2t^k6HX}NIM#g85%rxyiab&rL zp%XKdvl$fGA{6mq<vPGA~!e1 zK>r@b=Ccr4K)NKd=ja5fREABbufUOWl#5B;e!=-P$0Afsop2zCBuS{UYeMqK!Pj^s zbr5<3t~D%xB%*45aKhMw^ElZYbb8%hxleU1S5F?~1l++tNkc1#$(%@G=X2nbVSxs5 z@9V>MwShasHkm5Uap$`0dC!WA`ToElnfwfYu<}gSw=Uu4!-sg`we3{O6)G~kZ^@Z_ z>7who?oF4m?(|iNg2+wZyO}#)`YEN5O1@fV?fNw|MVpzPm}6r61Rjrus3_prq*Hn3 z?Gj6y8);~0sr~gj=(CV{GyWbJ-~-=Z>*|be3|qnVn+~@Tjz(L`cO62Ot~) z!Epcoy?*co!5093&<*gi0)mAgE4)}9XSF9lpSShD`BV98OTFY?r_TQbnOuq=zkCl5 z9NW(K-qeI5`3 zgm65~OwVL-%2|So<1{K^CZ{u4#U!1bA!IGe@$n40o+REDB;ajhYIGXMPSe~ICFp5l zcx)CbX*ybc_`SUhPv)qWM?tV?j*GN4wK1O&@B~#n0gaMkVcQ0Jwm>F3O=-Tsa=VG^ z-uxCCOq=fRUUp1O5nFdAhFL~dJXlVas!?I{n$x-Uksor&`ZtrzWH~lE$BLd-9IL?G z^b8>_PeAh{iC|eKeASj0^O%$-^CZIuqjv#2- z>k_fpr-tPuM?|qgR3?g;nNbiO=nS}Wxsv1tbG0UAYnWg=G)aEUjKD}T#kw|uR5pv` z4RbhGMCn*w!0Ph-qkS8TS8v={} z$3CmSPSn@d>eTsfL^rBD_Uiq7ecuD@3i_xB3g>7xPp%4}*%p|(`-QJ+AbV^5UIYBi zII;?r5_r4_#W6<5iky2$VnPlgxB4*692gbQt5C9Ftjr&D7Wn3-7=it|lUX^p)MpBUt_E$48{z4tMh+QTL5E~2-43F&+i!?JKh zn{>(MwIltUv-%>A4Gv=21|6-9bT{;KMbSQB+hdNUJ8(syc)<0lx^Es*+QK zBxMf?)z72=h6o5IV9}!bcxmaMvZ$V^|9jN;(CgIs@4#^!4i4<*tIz!tk4RN=A)mX} zn#%9i0U1jDFt zfuf$PS#8>oD#Cn)4|LjWl(XD*!pE~{;5an5#Stx;nXy?sL5I$+PO@c@nei!PzeS`u zifxCPpPEKcbvim*pdc_lo5m+sXlZGpP?ngTp2ZVzSk%!7z7lLED604GogTUBKmZ|hStGZXy5Yp&rYs91etWir<*LiK=IEP1Om`!K# zX?_;8G>|S%Qmy8=>YNL3>klS`Y%TQ2oHw;Pzq+kr8 zs$mW%!74+S7vi2;=4rb-<$|m2jw}>rX(~Z1;>EU23XX({h$t)AB2cYB!~=1~9k{ct*Trs9GRzeK8zCNNi`LHP&$*P- zx)!l@&ryYOET-q?$;@Zjd*~R)$EN5%dW3X3LqIO@mJfZ1bq!vkkuU?PL2}tN zVW9;<_wvN92Y8`)m`udy9w>Y&ctucU8pCncc?_1@8GNFSqI!{41)nM-DI$Wby1MO> zLP_;-R1NW*sB*#vM|4=~jj?UXCy2?R|JKj#uNn1#UZ>9gZ;HhnuWh@Pj~{-Coz1N{ zw&BXGp8TS91dvqzDpKLkSGBlmVMY~Xjr{Tb_|1KY4H2+PfaDHRRnpM+4iIDf-or!O zY(a;>6`R;}g@^<#}4VS}|20a}z0SJJ5QG@oP%=Qoc1?{cvJownd{P7(( zku=Ku?Tt5bX5Vs5TSt~v5JVhAb{-jEVN)xYopo-_((_-AwS!@reC^H$h&Qz&$~uYJ zW4!sSv*>7Q#4xMawu5DvNUDZz=#)wojwZ(V+!MEPR4KZ9`I;ZF5e*N{co8R8fGE(W zfme2?^c`x0coIl5vfx3n0_fxOSm`-e39dtfaLp=J;M9N|qB}+2B!wyECGw-=sDi<= z&L|E6M9GIDf+^V)9fw>wM^dR^X`=i4vI14zeQ(Q#v;v7a0+ztHFL@_#Kl>6?NyM-$ zEXU#LZ7)=Y9fhh8-)6td_@^be2m>{Czj<}1#}YUv>4DN-~_q-WYF7g2(pGON+^oR zUPa?(Agwi;u=gBZ-trDLFyBHHaLEkWTAV=QH@D0v(NA zOr=WXlT&z`{DfkS45N ziDV~dAZWN{XjO(t!|MSI;N+gTP=M+{r9?Zp^JeWAZ|6}jHgDlJL zI?vBJ*FJC3ytI{7S+1?RTk38Zy5$WrNC*i@2nhrXBVl6Dvdk<5gPmXl&mh4JXe6x| z1VTc-ky@@>YOhv%Q{C0&(z|CepTGW`{o}su5;2M$v^%gs=QpCFqD*AIck|u*JHOxW zYm^mI*&Fiym%odXGcyEnh+{fvBtl3oJoOZ>f62>mbCcgue;!9MAHC&H&TpLIvV|F5 zaqY7SA|H)Fh?K!DL>fAib94OM$KS_auilHQ+1y%%yijW(1;!>o$ zaFu{zVoRGmdHQutxU-#3VM-=UXGq=PMB2TN3OPz+n=ZvD!`|8+I`kPEb8$)~n)M;R z@1^_oAWAP?#=$96s7@8xk!_M_I64@OOl=YkiG;NfYq!r|zv_p0(Q{sk=k+M$bL8_` zdc%NQ?zxr4*?H!t=Lmv;opv8(#w3P8Z!q9&tI7Rm@8(6bSJT+;VB32wk=zYvJSyywmbIY7B5~LDsc#92?7WF^u#Y8B*YwAk4I|OCeE)Oh3Mc#4;t3 zVe=>E7+($)Z!cfYN9Nvjpi%$Mh!0rq2ROh#GSt@n7_!B&yo1}^;A?@44wH1OI$DvU zL5B%n>X^K$6fsk(;O+J??F4(`Qj*G>3Ccf+Cyt}T7?T#tw`ukqaxVPws)3Y>$R#Zz z`2B{ zjh8jiQJm_Il}ZcXNJ54*(jsmcX+Z)gOBzYS6PC|bX^3BtU>f+Y!M7f}kCz_4l3XT} zHu^#kCozX=HCz?qW(w)F;@gpg+;sb`EVtHp`^#R+iTMeFI6!I8N)tvAv4(CC@zJk* zfuH;0pYV-n16?ga*2T87xIL3_!$SuF%-OJz11H@RKg~v$0;ECKDUul!XrFJA?6tv; z(~*4D;Ud#rq+PVuhy*O7gx-qiuhz-9nuUdNJl~?RzJooAp4Y;ltMQ#|mLmSK=LO;%w0EDnYXgk&-v6|`v-roD5*F^oq8Y5CqIrma~b!ZUE$TuBREx;uq@Fk0W_wO zArrX_R(8;FpXuo;hzvVhdng$&RjZJfSuX7CVMl#trz<3~%<@hHtv$x3t2kzb?Ugl5 z5in6J<0g65HX7(&li9I6ahwM);vHANgwNh{H|LBFaY8PJE7NqM9fnaiEr5oZvh)Eg2SR_;v5x*MEJzr+$9ZXY+8uCJOY#SAc@H^j z6!9qyk~n6eTw*d;z$(wCQxFt{U6L?nr_;mEIRvp!l8m}>t%#!-FNt~V^f`X_D}Tj9 zt6Ok+2`U9dCW|10*zib(9!zIp+yF)gkkOeWC833s%{+0O!(VF?@9w4^?KL~?%=Zsm zDoNi@7$cG7q(j`#;H~T+teD(vp1fV6zP?K-7jtA`o;b-;%w>sX!nut{C~s#Oj7Mzs zfkb1DPqBDtg7f|+NgSk%ay1&`#|eZEY=lhjcKP&={31fyT)1$WY@vv4Smbjqk3DsP zJ0CvH=K2MEzfU2brPJ$UWwV?vG(knY`@TKrgXUNo_o0Kp)YWc^#o_9D!jCi zI1cfZEd zgs+`=NaNgDp0oHYa<+|*6H3_vQKHCNCblUNLV?!-D?^ZkM2SxjMJTO7gHj<;5_7KJ z;{BihIKTDj53*U#fSrS>9KtRj+9qnFi*`X=Qbv>|=#i${On2nz>o+NhJTwh@=hsn# z0ZeA#unT!-v{p#R>LdvS2@WRJFh^%)NW8vAu4s^(tT1f)^xG}w=ZY9^k@Kr9c6J-A zwwkO*29sk`c+CxT(WM`xlMdy1^b?0dC5IP#7x(!4{zaqf-S^>vhwkM~*S>^mWrm$j zm(C#Ird#f&?|UpQpJ#G%l5?leuzdauQ4~@tl&BhcmdZYlterugZ}G^fN4fd@C;7@$ zNd3g6WHWhwJldj=vB=ma1viUp*%aMzEOQ2FNCw^}T6HmH!bENi*EC3UfFdAc804J{ zhLPIJN;HBPQz)KKkGstRf6+U|3*9*u?1LbeZ-YA6p&#G?{~w^WV(Ij^u)DXCD_%u@ z;RXyhk3bL&8hEQ;Cht6n6mcp!QyMVXY)3r*u>otbOyx{krMu-gO4;uTyt?4=u@_C@ zw1xznL{40X;S>p|i4qm518w6oa8+Z?leB zvY4BiWUv>}+}fs86wK8osSge68yn=y7IU>pT0KE?dy_)Jq&7XvU}&)U)ENq9%($DO zz3US#_ek!20z-pkyS(nDFW^uA_)q!5-FNe;2kz!`%`+I6A3_y;qQQXiI77Z|aKiI= zeO~kIt6#wxyTZSJ>I?X`L)Y9($yAb*%$1Dx$x4liUzB#~hLc)_MoD_D{1|!zSa0!` z$_ak@rEey)x691@JZ^OYKkQPg)-WxL$Q#ld?BT_VFi}XuAkh(8D>_lc$M3q84}9&* zbc6|oEEphXZ7_?dtsZEFIFv)r6e0Fu}K1D~qU(MX=UH5Brc6X&h?K9C0Q_ zU2>uziO9x~rND4AV7Oh!HDe|w3hWIf{oN+cxJ$WQrn47=2st)iWxQBppaWJOJi|zy%v^R53ocR%;xhaNx0^0_B*vN`&D9p3o*H?VCad}44nm39Y_NoXCOgZV`$l=+_K zS>B#(Q_S1sZ5!9JacviA&ysP+X*D0l$r|L`abirou!~A|v5Y>38IiLkwrNtz&0q)< zFYXhM_yq#RDJ^+hTw>fXx%<$2S#S^Bp z^+=AQAyFzOvTV*bVt)JKE+6gNm`T9YrL#0*gK(<@VV~;UBvQESF4vKE$oNbZC9^b^ z8@R&b=*&2Qk>|pC3!yqJ&Ww}T<1DSLB9zCmxe1h6=KNLzt%uBy6`>xpd47ctzvX9% z_dI^%cmA06?hd(Jfh11&@wdN*M=z|9pD6RW)(YOqF~s2#nO#lvz#2bu?F)I?{36W@ zUqjk(DyZ@4#~Mrj% zdL6&~+*h#uK&%gY~xb@zL3Bx`}gY&Cv z>@`=Inpt3d^+~$D0aLX@9GaZQa$?@UdNae>ac~SMW?|tHFb#fs`vI=8eDbbIK4X)& zY%=aFJ_T}ij-v}NCSN>;Y384vYAF@c?LNVF<0f{SpCy|ule0^d^YcVemr#WyLK3S4 zp%dPtC-{0Caid-3YlnXU+Zy{Py!-#zB0ebO2ROiYiQ%xvCvN{Ze{||r9xrE6xe9aV zJ%0IQ38(1cie4&56DH^oFj6Kqrg0{reWlT$g0g+MAv=BIL$D<`?IwTHKNmRc=`Q#r);_JFv) z!&PJR6bnV3ebse5^3-|0{FSfMsIQ@9#9w^&@6ab))U>s?$CQ9N;imF1_fdVT!e zCNs~wfd`*7_{7)m;5k>koZ^*L=+(jRgIP!&(UNdPlq0+^CL)eUs}1(m6#`}qSPJ=@ z`VucXa~IcKb{%op#dR}Wcj-||l?q$+9fpI;IDKIWU4=LEc2<{uiJUV@5_icM zE<#86DnuekbixnN;(}4-oiu50{5Ip${|@QQ{|{gHnTCT7{Qw8}2O>#g?t1X6{MJ2x z!yT@`v+dD?T3~3!UmnrCZJ{tq%-W}=XtZs??kY6Cg-BZHc7T{Y30J=xdYk;tT^sz; zt_uS{ebAZ`{2<*W10<5Xtq2E0;y@vDCbn%*ov6|4gmjuca!x>XeuhEMV0UAc?3hKZ zR-@fk?CsPk7hqy?oZY@bYik3yWOBSVMWd(K*{M^?#T=bK%2rpiwcBRG9I#lMVBOEK zzOezm&zp^-{NyWM#o@z;F{OskGo1f#@^{*sS9!abS!vxc@2^D<$fjjuayFN~%lu0wn z9TU@Xv3ml)5uxG;7P3&wr0#v+t`9d1h(mIAnYabvb{9S9r{*woImnF&jyg&YX<9%O zVqj1)igfBe(bg_mD`K`*Vz&{pyWOCY0VAKMQ;&$lK80$A#K6KW7(q!9Wq-RqnOXq9`tbx!3X~8L;Tr;H_jpW@cub%O>Wy zd$+-Gx&{RNPWMr!vRU$3mz?7=malUB#7|NxU-l2b*Ww@O|zgvzHQ z<&2d+a2XY^C`MEr^v)jBQ}ehvK{wL0mz!uAGCey+oD`^U?I10m@md8Ti|nlJ;4)xw zW(;2!Sz6x$5mKBfFlJA%ys}9KkA>MuLX~4_t&VMYOjIO;o?@>rNWw5JVqwDf7w7ok z&;B~6o;t(teDu$F?Djj^=(XU)Jg%2uZVe$;XswVVDVmg$pLo|hxPJx)8w2`ln>=au z;Y1Op%h2nc33oIiq5nC7V` z9;5x_=b0$j?DhJrwRZUr%(Hy@G~(PQ`l=H2bE#uoK97BTfkZS&l6VvjGrE*QLZD$K z!1Wb>`??=vVeTa5LXJu?&)4s{lVAJHpYzbTIpPk4P|Z@DonWz0!yXQKY>9ce8-DF&cFzOSlfKbOII`tY5XiQ;Z3W+H) zSTaMQcqK;uxsbVzXJAo3V7VXQ0RJ=S*hkmj$JNs@D}BlR!ANEnj0{{74PHQ;#C*9P z@&n^gHep#XSD4$N9n? zUuPp|VbsQ{bS?CD7o8}C5Xf(f)=ZLw$DcgK+1&`MN<|;S{w~?RMbg}yh@%{_^Bj>tV!IvMppEsVk3{$%NZ@>E= z`ThFiEYFQY9AQ*kigV*+r)Myo9Njo%7>7jukWhtSnOrGjW~?+~)j%V(U~1xWOuO=3 z-FHIT*v>q0?`~ohki;R1l!ssngU`o#PUsLrD?nkJd2DA4>0Aaz`DuQ`GYALqsRuZ~ z{|o|!T>A=k240+x`DV*!+28M;6Bzc=F{W1Zh6!I^@ALNKV>l*sR+>~M1xew0yuuHW zOuQ8e&qwV;AYc9f03ZNKL_t)Y$FK~#EeCtz5a+jA+!Pf@HAI3vV!j81)JD|FLVG|G z`j~Ra^n8thZ_->@M`R=B7iI`ThxOGBN>;#$g<0CZ&GOnNwi|O~VTPXXu(q^H(eOBY zbb-KkIDcW4iX3p&;X`Z(8J2qnnY|%DFmpZcyz&(!n;klp9tdG~kc6vSb{oYCU&`%e7psP$^+$^Vne?Z_UGxH0EL+wU7h*VrRWSArJ_1(jwE#(!S6lXf?ss zaM*#$$m&$9(Rf{hipj+=r;CJ}2F)kWyvCd`oe`AJrLHtohX$ERI# zg$b6|dmOck{LFJ-$B(}74gB|;|Cak6eweVi!|YgzGxq?8KzP4=6o2DeWa*}IJPk@K zOxwb>Y;r1Q+Hdl$WeU|pv>T{6CdW!u6Y^D z=g;vaufg5nCLAyGvGu!Q$^bcyuuOz!ptd8tb{jF_BIj}>LZv(J{XO|;-BC0gvO$*S za+^VCBmF;9HcaI%%D)noy4neip#@W-MA8#1pWna^yPTNJ64^!0oNggwk4wi*_5zbr zk8h)0IC`wW&V3Eyvroe1>bYZGz{ac*D{bpX+sbZgq^;zVdba%CG%0r_VlxF;$|SbtxPjrx(=IVjeMi z&l0L83)N0b$9yD)3A@aDj3$9@gRV0+ z^J1{)za#nXUptIn|Mg!#=+F;vfd2;!8cQU5w~?zB5IQ99+PqkLe7tSq+i4EAe)ufO z_6|(vz_mEtN*J^Uy!O%ze$&I6ydG&@43&^hj=q=2an?zM!FwL|=-62p3?b@Mn5a-4 zo1#C6iCQ}pDmK~bB)v{dud&JOxXaY|EGzXPz3nZkGg+pq6D&0ox{Xa{X0yyp%(1>T zWN)|0>|}=NnMIa&e0EnaP_AVVDqwH3N54Hl_XlXD(2mV5yGy*|(yJ)vDztX@_`To% zEt0%T=!Fy>-9)T*QE|e^X%)+{kpki{LI{CU3OVv=SFsv-=4k58Cg)ez*iL+!jShQ* zkjNJ}rAelzr*Pbmr88SB%+4{;9*K%CvfRxyK#k2ZnD3{1Fap&;?o0xb;?0t3ked6M;z)^Z&c_^EVlF$)zJ zNQrKUkwFZCd}1;kl-N1lpu4%lR7o>2mSwvUv9r}e1wQ4xNqcLT#_j;(0HYfs?pQ-T zxq}>rz)jgpE%tf<)r3nEHAfuup4L`3~_RI68DSh;`j zy%!Ew*D1Rqwr+xZPrWVDNJHBr~GGwhW0|+xTvdjUb@^&=Y*}o44`= z4WgAc_LEzvVfy|J!@#j^48ue#jgS(RBnUI@)>WcN;uy=ekW!{ZEWq$$juggt?iH8Q zkM~HzKJA@tcG_+7<27 z}(IEq3h31w{~hc4}NP5ixfTG$rsRF3xa?wL_c zZHz5UYEg!8TT?%Mj;s-J$$XivXR>yoMd*!o)^SY6g~1?1g^KKIpX`|yNk2g8bQi9N zAz@?4ZT33dISCIvahexgc^y#_p_Gplus2LNJ)GmA9YKJLX-ks8 z=g7h#p1iP*r(<-WaojvAi7~qYrUPcCgv?6f*iR=P=uy5voTk4`RUn&VC?uPHk1*(^ z{EsBLxRM|x4Qes^)gOXoaKX&*J!*(MBCjP;$S~;RbF% z{hRdt7EuxtYmG`IVPf+e;W(W*HR;h&%x%sL&nirC)!5b4x9-A7w#eib5k~eO^U?9o z4F^tf2YBW}Yt181+{+(*>4UuPq~Og*O+r6QEEmvb9u@51S}iP>w216KfZ`x607~;O?du%5fSu3WJoNBC$~L*{#z|>(Pbv$ z0ml!`vZ3;3U+qMaU06p3#E2Xd;dqfkv$e1^z zWcJEM8do2qn9EVjz+>yngvw(2lEbuHYhaF3y=0P&!Fu{_rASGFL7285`y*nVfN3GT z5Trn7b6}-~SA-D+0_qyQ*GUWVOdez~BHVpjK@ozybjf=zd#i1N_8ySH;XIUOngAD# z2#RWSSV&@~MG>_ts4us$hAoaw=TKIWv+G^(cA3nZIKpIQyMvB2Qw!sC?p?-O?I6N^ zf}cpOgOMOLQW~gZ1@z@d>EH7pR=1xz$IiGUq2h4S<>%h|R)+0Wn*D$a@e%e0L#ov( zS6}&j#_Wi!Yjginoj?8bM>tjYkXt(xj2zWcnIHYZw{ZOpH}L)M`%Tp1IK6zI*y~^P zm)~dUJ9er%ut%H@kz5R(2?IvV#F5ei3qi#f_9UI|Jpd$}qIxuXbcGq~%w|qVrAEH#w;JE=|G)Tv>Q2@OFT0TP9 zyuD^o6@4Dx3)$2*=S7xS8RTTd6%#ogsV5|1kC}-anbHI+^*&*@!SPxiCtKyrR+q@{ zF+1*(txU39_waYOIWkkm$W&RWcSr_pY7=>;%F~?L=`!5gV!oEcF3+*Hx`ppGQ#(@6 z;n`w>PyF!DbNI*tje3XofAlZ;{OQ|y+-qVC12X4Z7#$xFPmk9#8HZ?;S#DV-o}d1^ zVH&A#N}OOACYEIogu&Au_l9W_M-f`3|?*v4<12AHka}hZQ9S=s5 zLq_BJ^!1f>9<^uESzU+7hpLfUwi=_)03%D)(f2D#8{2njuXagVyUgWc4pquL)zCES zbuc8ki7de__c3+(Wo(;$^m;^oy$`$ni|q3KGlhVsBX9Lcxp&<>K{mtGnRPnNC8nk_ z6bmj#L_3hyt0lZN`#> zn?Le5gODcJ6ACuSR(wl z*O4Eqkr5`jO^;ruOLIaYNv8}tYk?5FpkVPMYL|>5Fifzdi6u>>R%9H5Y$k*26v(Ay z0fMl@z-ywSKC$Y9NYMMd1`SVX$DC85jf1KZY^d`_0?Yp{Cuk5b8Ck}MY1?O%SI2HtIK362A5CQSl`oZ@9g4^f$xS?+%c>KtYVJ;eE4-7 z3T!@q=U4fYFa9mvYMx9l!97<;DTUUWOvc4=Er!E@IEs-n?WWST1SBd(D~*%_X{JFl zVGv?k7I73I4LRDa?>ntYgn(==%WHq)NBQ6bUnM&=Nq)+pzTJmn6*=#qF7%MknMNi3 zw3r$r8J{6X<98!1&Or#boyB$p;dRGBR}gC*G!bIPK~^jh5{O2DFZ-Hu!@|`z*3f0J zyp8gGa23pCp=dIitEUHtB$W}GN-+}`=+u2WtDEG_n4^;=x}IcteHY#DjmGkV{QP0^ zewWU07xRfaa=AZR|7)}sX;ZpCY9C3+()un&+(-la#uH?`nEri_Aw`SXLj`h~ERmLc z&&g}}_5bjH5bSOstsGWn98cu<{Oxz~XSd$OrtZ=36QW^+v<=FuyS(w0FXqN8Z{+&x zUcj$>;KSUy_5f`|Q@(tGc4rA42csC*(G6o7U`fPgANQ_J%zlD2C3?)_d*1sttc@YF zNtSYXia&RsU^i%`hk#+2#>r+gT#+&P@py--k%kkQW*Uo%7U_>e$Dm_`NHC=dQXxcw zQV~*G2-8F-5$6)kuc#W`B=tq0o}}S9I!^D^2?HuQjye{9Iy}#O-sEs?lFZ}_ATtBj zB3S>bV^dF|sDfRns`bNnYMb z_{!cUkw~D^rt;7Z!V6I0x@4enyD84?-|rciECysBZpwEOSIicC0kQAlnqkZ zpfgH%O9Ns=q9~bJoI#exnRSe)!@^`1B{Hn7wuw5O(d!cz_t2I_acEBdC99@ zkCPqa!jq5kyPy3#?p(jXSl(r+-C{?^M7i|6SBx=g1NivQ{U;WWp5&+g=nwc@;~sh! z8km(aiYI2+ZJ$f;1x?zedok8s>$uxKhGij)v~yQcf?IHS>sx<_%THd;Sh>cdd)s_q z?;C6ftNXxe{g=b3EE3XN9b01Z_LR8?8RSn(I;<%aY4ZVO0(z?Bj^i8~=%( zIRC#OJ|M*%;2DAL&V!V_zvN^g=3_&LK@^WVkx`1(_6lPalS*xl*0#@XV-sCf9Gjh>>GQ@)fQOu>DAhAeC-}`KKIkH{dH<=LvAxvhh3US*ZxUdcV z9awN-BF#V7QIPJw_la~uQZVv}x?r%ji`r|aTJpslxN_vBFF?z*DElE@&E86b+*LDV@)I=9ETfZ{jxvab5x3s{FpbUgWO50gUR&Y*&IT{2O<}eo zZhY4BamH#~=&phUU-)EZ#(DM36}F(8npK_=r82N7`)b8@c68(#PQXlY&Adsh2S{p;lT3=wB{jg^N^J% zk_Kh1v6LnX1C&l>j)pMMT7WiCv8JmHZb?l3tDfYxC_|z(bUX+wP!f!YBW91!Olf{= z#^WcCWcZocS>EMFT<#}0Iz&oMoCG9;UF@kJLzsp1Bdm2g4f)q4Z98DOAK;k*JL;eZ zPcm7xd5+iSZ##lGh|`C65Tp-pJ5BI&mwg{Uc=86mcK#HJP#iMy zyylW?=r?y6#!0%4(4bY?RZ1xkMoMt9Y==0Gu&sTYTZLsA#F0X&^jA7k20N2MO9L+m zQH~&9$dF7I(sZ+29x^tf>YxS+#tSeQr2keh(s8$Kep^6`ggC*HF4?|K>+}xc)&^AL zbnorRi~IICW#uC!rZ&-jj$pY@w7m^R1V=Kd_FBk`|6e5#D$E$hWS(S8(OKDnq|3yS zaWYn!vnvg}en0(iMG>jtO-gdhtoF&DX<~%xX@4B0Qr^JRio4NRJtY~Yqjo3jFf%pD z(DP8q$c+#n(nQ;PgmZb~u4LHSBTOVBV-d!hLsuPVc<3bk);2FHj?r3gapJNox$es6 zarUt#x=BJucR?C-gFYWSbsML5FF-hY-4c+Bq|wK;vbeE8eBl)CY7g7Ak)wE6X&C5a z^m9d{h2YUA&TxEwg4)a?kDfk-Xb!ooG|4$@Kp6X}?W{DxPaxLxFgTT1%pCtdnuSaF zMr)aE1lwA&tW8d9hr4u+&nlOX#(C~ba&&_@XSDhN$c#F z$rntHR9vPyExs_c(1C_*7Az=HL6q{ufyZsTn#-J+%SwV_Pm_P%`w)kJ6m#M^n6>9% z9Qr=u(yNgDC)nN&~~!oiS0I_U$>vB8j-84H^T z-;>yxgs`Q^R3&>I#Z=Yi`BTrPJ8bd?4}6Zle)J)(otfvSp8GPszO})FOY8XkEy{<+ zDY)ZoJhj1a*n%+=iNI{RDAU0g4F+RXbesXz12=%c!wN(G{6#;(jYlu#Gv}UyW|P~0 z;Sc%2SHF%ge&zG5Y&NiM8>Ln1ojqbfTedT5G}HaBGz_E^s8JW67V>nAY?vmNn<0uL zkO|(HO?Gd9e*U>Tzwd33SBC5pU}Lk?YfXX*s4 z7P+cHd3=)A_JDSyi57xlNl+-J2b?HYsq8I++>>>rNFDO_Rc>;BjJ)3wj?No)&c<vqsMmPVgaZu0? z@XWy4LpL#5+QhI@qSMt?lkR4VZyMuJn1tpw!Cg-h+a65j(LJ9puE)Hp8ZckZ&XWBbAuwS^(4FSPizRtaSbbb%3}F6|_!#~k~=*?Z4uJI?FA`}a(r)64A* zxVQiTf&|#R*sMZHmK9meY8IU+axA&U@p5d-aU3hLlQ_kZ-`KLOM2?GOOID*~RW^|l zo7hPd0=VGq?cCGL^qD6g<^b@=_gyQZBfr>d%|g4lI5=}=?`QA*FBOaJflr($X=g4{ zu$69G5O@eoe((Bs^6y@AH`iA7akk#X&p14JYMXy~$3Nn$FPz4;H+W)akvHtUi7SgU zJW+pw;`m;g8$CL;P2{*nr8>$e6$U%ojO}{7f9x`Ta^!N3uWZrQL#Rs9b_WuX@Xe*? zxbNgL&#XMhhpxSW)hCYg{Q4rF`rbDnjM34svl${kO6h3GA+t$2Z+w=-k|c>!1C%&E zKblol4JkBS-^VUNd)6kIt3oaZr95OUCML7YT{2HQuo*O3=mi5~yh2nP>ZGeOeJ|q# zq3RTsELvNoe`=d#(1wLvD&}KooOfkYR6w98I<`?EY3T%OEo8d|B@JdYD4OZ`{+xPW zB0*>vp&%0%aW_1Ivn%LkNM*82;Hb2>nn=$BQ)2DOFgrU%AveR^#2AI~Jfqn>x5)#% z^x|_EmI*`eaVb;4UELt+?Aw#$*FXHPc>dTi#%2$5aQ-mY9=?Lj`T#@MaQi;<;}aa2T;R*gkEYXy zbAU{SegT?-cDjZA#1@7dr+WNCAydeuuU%6KeUC&+Ov@tlLSz!5XDn1jA@pM&{@z2} ze9H}JhE2cSqU4)6v7n|ppbLKGz@6N&|Mfh&`wWl#_`hSnImtwElCLel#M#=(wCfIs zm=-Tee~kdcN`--REnRDB*hJO$%voG9iU_qEsv4VX02(Y-R{=(--XViqbU%e(zFIU&*nB_&xMy#9dKPF=$< z-S&3=>(lpB$e8@jop0w)pShRg%^hYkI{)FW_j3Q)r+NDHI?vW#;-jy5H=jFxijyzD zL|jZ#+s-(`JJH73>T{GTA3S`Rci(&m!uMFa_Zzh53k;$VTn~{%;JP%reHPEIGQK~< zlTDXzte@uIrQ^(w&G3`A-^I0a6FhZtakz67=kaI^lYSy4Q4kEfwiGj9SQbJkxM4&n z3aQoA001BWNklu{S-kQ z4)G%A_~Zfx5t)ZKD6IR)B%LIjV=sh$Kq4i&nc@{>k`Q{~g-L@Hgnk4_!YE;F`3&#= ziMv@|Tjx8Ee3$ZAl~tn)Lh_NT-^{kFu-07S{ReNPlO5+@KK2*bQJc5S--MfJY$vT0 zjA+~GGh|ysOv7-RF!XX)^b&WMRIajI+U*9_{dwX+`n<|^fRcpiuH2RMb|Z3?Dkc_< zP8ZEcKxl+vLbtg_aq?9t+W&jyy8p`~xrlDR7(dhzMIrY;`ZfOY;m`7kcke-O-b-ia zTZqgwLeU^trl4=3XH-CgBt|9yBJnXS!Jl3sx&7%~j)xV@iM{wy7fA%!5T-OXR@=Pl zYhC`$<%0LjKa1@iC+q~6nn1U6G&}Io?{|4xlu*YC#5s+0X_|II!i$iqN~9!6RZmC4 zNd!Rxx{YZ-H--aalRUh#$d}K4gU>&o@Sb0|nSJ^FYDR*T8mBDsk@EbVj&cFr)er-)LXpt)2hq6_{^mEIV&wH+pOl{Z$W zxozeWqA28s-A(?Vl_erefo@2@-5^)0f>4p?l-K~z_0dh8FbGl$ST{fpi)gCCmyWq1 zEuz5r6$grf_xx!pcU;EYwXfwLO7+nWQURPKfmkACf~Fg& zriSBoQFW91S6`xWXPINkS&-?Z;{&+Bb3e-1VGo ztn({3y^V#x{&fbjmhLHpdVxA8hHs3bq>tA6CZFBu^G`;m$P}iK2mdvwGia(oG^pX7 z{%g$ICs8b&e%&KKkxqO-kMl=*@Jjol!yB>5f!U!OkI!atbt#`jm|gKEKf5 z_R~7MTcA#uL{R`{0g^uKDN)}U@N-W^{N{53M=}FuiV`3ft<(Y@?WxTP? z^hA+HvqRW*x#q=f9?42Jm%GRtWI$v3Es#F!v0-FnxXKXe{Z$nZ>BJ?AO|q*| z->yTq1EU5^nrQ*kjP&oQLlrbdCoeSeGEZ}@M{{!>D=(QmFixW(X`bCo84Vc~aspup z`a2z>zE3~D$!jX(+&OiCgY%bQt1-DuhHJ062`k#-qumzn3oeQ0(reYoS0>UzC_u(( zmzx+WimDPtVLCOE=L)wVNhAU}r1_mwP)pYuiYm}Flb~MX*ddF(?it>{@M9RdNf@M* z!qs|{kL`Ys&#XT}tSOMQQVNYFJq)QDPYt%X@t%K0 zF;n8Y{2WKJS>AZ)R_^%1AM@Ih#X@zKPy`p8^rD1wHn~EAq8r5LCJZ_}k`&l%H!(z> zkTJ|$6#&i7!^m%tEM1B7(npbo0bzimC`^xMh&L0Q&__{1gwW{LpP{k#1S4}d{(Ype z|Ko9Shkh}B=wf?!o&WTO|H`i&yN5?I3ci`5%AXsk6bQI!)JjkIN}B8u3g{-77Hlme zSN|4vz7Op#;=r9$^A1NkTYRpaC2}IPtU|)y8B1mr$mw`OWu+&1v7_?R0O}}29)x;K z-1kT_HZmhF>?akV;Ze!hgn>s73sjA-{MgU&;alFwPhWE<`;8HvTwQ^J%gT0#@v6nE zCvV`&nR!0?z-JgOS=8z+^2IFQIQBiheD*9}Sm%-DCGOi@Au`;33f&pUUv!+9uyydzr=N zI+soF=bn##jH?dp;j0fkoYKKXT5J>qs-dH(8W0g`3C@U0Jd;JgW*^r40o-1U>eLzC zH%ew~j^(u`LBGl5o+_FABx}pt_@V`~Lp3s0!#465ejaD3O|-oU6FSUgAZu{W3?zMj zRZtbiH5)lFaaIN?dL1|2t&iI&UO`b)1Uf(%Af#l{s-iShc9wRD>bqoSEG#q6_LhrZ z+d)J=Mo}YQ&Y~t3L9K%jg4-7kare}IZe2LS-pL6@?3nqW;#C}8)N9b1O?+C}F(269AhwOnN(p`ul?R_XRGn9o@m6ZFf4cP>q=Q3Ex;pU;1 z3Ao(Kb9n9`36lTy!gqMz6QAI5XC0|3=_KOZbD&6YJP0E6``1wY2-oRTC{^)12PqP= z`7BWw68Iq?2s}RpL<;r%>r4`fZQCfeLO_W`1uvZAW+#k_Aqm^h4dMY5(I*LK1a9Zfu*8qCaR{>-Z{(o z{@1^93G4?K7f0?Fk9S9jDs~FSN*M0C)pVzqvtV>+ zvnf((YR`Mf!BWK57_Z`_{3}8$s<4W zZ+XLKe-)Ipnamg#>+L#j6p>M57Bcf39U14_tvXMwpP?bUs7ZsxO^=z&FQs2Q!|8_~ zBe`l4tun!GyG^~lPE9LNU0tV@v3b?eEBJ+f@=qB6-`qL@nOr)x=!cj}LhMDLCL{>_ zP7jm}YA(kgfA}Nln!yRzp&RwEViVIgk#USf;CVi=jF3|%PD#U@8zr;N%O)vwvq?k&NCi21u zK@pHd=!%6AW@xN+i8|f%{jLg_EvAKh2ue#i>?tKp2o)p9Qd`_5cDgBL(Ka!4mDbrB zgfVtmWh7Syk)hoTaeXQwU13A1sJAHU;HDy1SBJp>Z^Nrk5${XBYb1}Wg$$ud9r zs#*TD(}(Q=fzwCTG^|{iA*}FxVP{y#&;71MAe3~(ETu#dDKIXP3BKbHh9Rn^5mq&j z2{j@3z!RUP9mo9H@-sXfuBU}Ni6MfVmZ#s`f_w@>q>w>d>XHu?oG3xcgl@M^u2iMp zYT*n#4Bcc9Iz)b$Hpz0xXaEeuK-G16ew)aP(9p;jS$rj8FrqRyaw)QqB{3z!RFN`Z zko4)x2tN+NF!=rFzRu6y_&Sa|K3{m@e(pQ<6pQOGp~ew8QZ>K2RPc3+(%1x-l=iXd z*Xf1bbiyJenF~MI^4vHye^Slp`i| zAd$pjLi>@glbbNXYazV>(uone1nH5SIYE>^z@)d!C%aWZ1^XO+%Egy#hx^iYztTM2ZHA;O3db3__n5TQ70n*(X^j?&F>N zZ{w@0FM@D*xz^{O-}FYl^xV_D<-pZ^`klYX;qe1JyY&nkJG(Tzm~wRjlNMX6T@GAw zIl0+MRNW#uwZVHP4pD1$Xa+9Y=qT>u%WODZ6eZz_ofa={ZL&OAOA~)+QXaQxw>`+@ zsOF&4_CYtu7j62jP5#5@KF!~re42@oF>YBnfSt|K>UK%ggnF2kAw`VSs8FXu6qxu7p4+0!3T^p#c{FV5BN>hGpWr z1DsBqI1IS^^>@M4IO_!m%2^c4q?)Vn?6G4kdu^P`(C8!zV68`T)fx z?Ou=ePLs}VmwwyFcVY|*ltl?EGlF51dAh&DpP%_2e}3{iJn_u;=yhv+s1owWSD5_P zA&Xx=TH%9xbgt4o&aCb7V%uRPKZc?z`0>yrNEZYOe4{Bjq767SVv{i(vPPSX>7X0N z1wfqwqMU`%F+?$sP)rI6tnWAoRZS`wVBA+k9v91%Ce8*K=rOif^6yKJ75#N9PanyLbHr zmyGY{kDk1jU;oaR*%k_W$4qKlyR>}4zUf)|&K6r6J=&d+;%b-Qx#=!mGk<_gZH;GM zK0_}SWXeS>(`2LX@U~ljjQPSOCs)^Tiw23*$rm*`Z4b>f8OceS-L#L)7c5@fIKz(P zvXC3+lOOmse(6L1j4yuW>nv`q(l12B^LZw(+>d$ia$2nb*q7ur7IJ2KfEtRmq#QYkp;~B;fxk8& z-rh~o>$5uS$*0p4F}zno;hgzNLCq8IDtL=Eq~Avw5$IC|VpV`6(PKbJ0!K2px6I~x zlje4pJ;e(D{PuTnjXlSe`)2soi%+n!u}aCQ(>U=p)?fM-!db<#G*neZRkZW8Mnx!G zzjuUF+if;>dk{n9`{@$F>S+mQD~l=P8N1Um!la*?3hCecjvQJW+T(#|jp_>))tG-vA#e)WOhrzpnw z$JhP{pFaLwmis&GFU)fH?l2k3IUg#hZhq->fjG$j?1p$nuC|)1s=y=JWf1T##2MWz#ubH!i-%yy#REbY&l1-)k4M!A9?2oI9M9t zsbf#`$up19n$#G%dX~{^uc9t<^f%U+8dWGwPqEP!)N5O0E0R4kvuv*QXmz%cvt~*~ z8ydLe6N`99p?hWpi3{^tsAj;jhlu8LSOgVQ7--Ta-jak(2RbdNh;&z8%m7MyUlcVx zbR`l?7#NPpV5vvEwUr(g#s!tYqTILW=?-*43fVk<-z640(<27E^&YX*IW#-VufOJ9 z{O#Ai&Eob7$J#42y#XaP=C(@@Bf~a95Tr#*2H;#9_dZBZtY3j?;csZj<840ki7~ zwr&xV5GRt%a)(}35>)e08HKS5TAXleW{wZqS1{W%xb@(r{KT7noYApKo;`M)!1oYB z;CT-De4bdQUiPY{VrDFS>C*GM#7UCk38f&|U&6a?oMgsMebWmz6m7`ckkQinTr$$< zXe0v_0}3h_LolQ7Bch1k8{6f*hx7P74{hrKSbG53T}1XyAzBZk9(WUXOk{9(x4FOG zr(l*zl$hvT!PZrxFyd=%jW>_Dj0hb_&2AzuCbTrP>1$Ilr@=BLT@Y<{SGMRnIjoFD zb>Hg||1hX)7Yq8u_#p`?*?RUGrotN4Qlzszo;V;2RVd-5Bcs&5eJ6%LHsY;W$+iWEjhCLn0y zY`1B}76<1_)Eh0FD4^+wv^O?*>+9aZ?D#BSfBqrdV8F7{=UsQbg==Q_@o%5_5?}h{ zpP{`_C*SpOFDViBB9da2eI=V(y^-#3?L3wRerLeFC!Xdr&pyPbm!C(D=}a76Aj(d% zv9d!&b2)N&o;qbV)@rDt%lLskFtAu#ULzVM^&vNhPG?DKzv?}=gWvDMtO?T@(3RBP zawyfRC;~$@nIcQr*KyX`$Zi`{7xvmPo*NppD1XPxTcS&aoXq2`3<%bnV0y4GmrBYC za2MCwQtW1vm6@|53k2n#m`yp}E<()U&#b>|q6(~xUnhi2m7O!@i zqYIZ4xg7#8KvPp%l~4pu5VPDdIMp3xH=bs1xytEYlc3Q@Mlq4^lg$^;kLOh-EkK&4 z5d|*YdV|OtfQ*qc;`MKOBOm_YFR{~gcy9FsCze;3a&t^rB}_X@x7WtBY{J;XG%bqD z4vkSsEC=9w{L1`~@SBHjM>vv0^ZR(+YhK6X^c0n1nL!Y;w7iNJxEO|xGw7ll7P(vz zp(k_)E&M1P((VK@V-Q?FL2^kI%2v9Y&t+52xMiehdUfalo5%~#j6PIH)PSrCd6nBr z3LigW(r)C?x4w%uR)mb2iv201V7kpm5Yv}&XDP>Kqst@pK6ZJ6IChb~J9ObwaHPV0 zEroZCC*&fD3<7pGdz5dv6`@8*Zxi8eK9}%`hm9A0|J0`zxHxeqfP~+=URz z1(fB*>*DpwUjVzCOEgY=13fp1VQ0_(nT$hf&;L2oBP*$ChiW1c7%N*G>}~VKL5?KR zAY-P0HAPR0gCFwjj>IP9HTwhFC!R#=V+cJ1B!s;hgOh*3$asTeYh6D0l1=2hh&@H( zA?Fp6v;du>7U_E0r3VAp@yJw0&=QZp)0i18BpTX^^{LIa7=4Wocle3*JUp(<`TCEOECCjCgCAMod95+DCk5I|R zbk=LM(AhgV#-P{0YY%YE5>q9O)=rbeG}+wku(-CypMCkWxRyyYS^yKCS$m0Z|K*oh z`pV;|j>NQW;)a853cN9ks8(kX+w3iwG1Km{gA*is7~b2%T;!^U84Fj zNB2#k7DqX@+8}6cvuCbAt}w;==}jE13k&(QV>@Ryq9|#i4`OJ!;byxK0f9hfsy5gp6CVAL{nMN?!?7`Yi;rqdHVG}x$*@23mQA^HeMhg^m%sBW$#3e+3Gx&;ZV$FNIGpgyGtZq zm+LOS4!6HcoP4%k^%cKJILps{2HS&&s=VdLa9oUL>Soufj1zN&8Nd8DJfb7 zM%QCDG99Gvu;etDS4O$+@HHgTWbf=Gs-}?7W!N`0hc5(+r_Ulqice_OHi>l@_zqDb zkqKyp99%X{aCHSH@@Yq&w}wb|W5_1p0@mc*dMZhV>U~4*x}M%MTg&s7Qia!zDy*H@ zWc;9ojM^lf8nV?vQ6dl~L<#*DPhrjO=XDj8$9D#t>U$K+(|Exkm4j6jkP!``@mM|N zCuUWQMB=(3xhrl2IgW^?AS^-DBkYFU_dSJ6uDqG)tKN^I>VNO~@Bh$saff~}{{Exa z@9?Kz{6kvXU*(3mMFwZTjoa8EXs;1$KTf>%8A{e^R3m-xNCYAg5P2LNwK29@JP_wW z>R=6Zyb&qt+zEMbEoQ}$+%(ys>^yL7Xx5y;zFoJ+Wq%fi6sOIwcTM=UuWqSQOowlShmZKkgASIC^kXlG+w3C>6J(75r`{#1jACX=xUolf-w2c~^q1R|9@-*l`WU8(rs*jq zNdeaSh^&UExcIF;p;@MqRp>R^xPE{&R>k-GAa(4DMdQpCm4aYq?_SO}18Uow%#{@8 zrlwilaM^8b!Cnih*2qma1i*C+~v5kk|MkOkVC5%tv?vRzNd zDr0?)px5@0pD0-YB-*0ocltD%wXSTP=>4N=x4$){gIMuGQ6Hg+d z0Sj|`x$d&7IJ$q1D-P{vyS~Fi&DE4!?gS}IK!BYu;12rqTg}uNj+jIwjPBh>97%eE z9;-p0C!cweiMT}0%46C#0u{qhG3+c+;4>I>3BrIvseoxxQ$&+Cl=F~Jo%%3! zFov{HLrYDE;s|7dt!K#@c~n$FqV&F>dzJ)5XSP|}X!3IhY@D7$>4v+BN_XRr|1Vh*@kT`XO-St$_FnM@rZ0W<`H9^>khoaTFUH?r#Bs#K&)mnaef1CdpHZEA zBgtDwVLT_X)g8>_G^SWbw59@}A6JBl1 z@rT#`B>(!VxAV?}cksTWui-;CzJ|LG-O6M>&*LYbp%h}-i&T0 z+;jY4v_RvXmt0RgaM^G@#zrRC>YrhCyGARrIWSYE)u`h-9-3XH#L^9P001BWNkl0ppJ3owEUs=4R%4jSrQ^~e!aObN$dwK_7A;QA26NC}?n;dR?2kR;l%Fnz;X_UBIt%1uTploWOfhg{D(0{FU2TL zVT~?eExd_Py$aQTfvtwY$XEq{j1~aJKsvwjqvb4L>IqswH)TmEDbF3#f^3PCxfurQ zHB>Lp?Ebqj?A(QwBXpt28TW*@K5ZZj(lmXrx>!@?B_u@Gt3 zU@4Fhgc8oQ6TZ9d@|`V@C)*J<8PjZcFshTN*@)&^hmp}y91$XA42nh}QuxHt_wwPZ z-^ibyeT3gV`w+i(?5q5bGY|6Fvyaks1Kxl5PTqdx7M^_W1RbGJ&KbA@lF)~&LPc8q z%#}Za>pJ|mH-3QkUv~#zIQtkY+ndx9mBVA>_`O|vodK>{WMMowH+KUraC>1?{$c`S|l&*U_ZWu=Ef+hj;0$VGDgu< zOj9F~3Zd_!Y9=HSZKKa%+(b$RCsa^#Lj^h0MEVhE8d2gSg^i^rIId)BCeQMjIz43o z^O>}JOU203gsBa|h01UgD^fjfYEHWU9@W#XPSMi)og`3mp&h`C0sE?Hq87@KVK7ur zlb~q@w2ndh#5PfH7p8#Od|GG}HBI#AL!L*yr&T&ewmfV%CS$3zdPC3j&}G|Cm>-=$ z$wsvM2}CiW+vnk6z^#{F$I44*(51u7)B@YhO`h6lbMWA`yy?a(**7)G^wbPmro#80 z`VL=t<}sew+2+~p4QgBURC%swAp8g=g1o6?*%{o}7~;3d644*3$!;c20dS zon8q*SF(tPPO?&C+H3QUywBp!4%^*`@sTNdN$0}tFcjznytwP~fy-^!_&$L$j$Rl) z|0POcnyphWGd3DyC^5tyLRBf55jP|be-oDoWRgy73=0ZXF!PM;)+j7CaO*m6c*9Sm zpR50W#Kj%@#p{*5I_(C3a?c;~bB}$72lW6~ADU}KAwlS};j1inJl-;`qcD6BWrEZU zq8A=QS@}GQvW!r>B%zC_J&I5=sI!-HMC|h4pK7tvOc*Waa0rlbly-BPfSd-^9E@gQ zECXZN)N(VY(OYd(otqP($_&4l0Zg)!t=XJyyuczdDqdKd0=~mpZ=Rqu#1DH z4j8l?c6`CX`3ah>8jdFkjS}N!jrQ6Wy%5I7CJ1`l1lvt|B1?5N$6$LKuQi}podz)= zsI?gwS*pDd>)8!5PK>IV2vs8*Qt5PE=fEXGdNxSO#QTd==%w-ZUOcn<_*4pG;Cc@m)9d zK`#so^?7~p1ey_`!v4aAak;7tDQuFg)KPq!XsJuMvH>G91-<3|j)R&u{85Mt;4Crx z9&*T7Xa$rl3mJy=0-3HwgbUrwLn|*Nd_?_2>}Yv_Iez-{5sZ-J;&v9bGXvr z0au{MJr*XWDHbd2blW_3_BfyZ`rqI*o9GhOT!)(J!nm30&>JcukbL4leGI)cO+9dU z?9>Z9z48Ljoq3*VQ6^{PK@}*fN)UPkfsYh1GKvU%pD2pZhNyliLDMt_{SK!pNfy@`P&x%yx@k+zWqogUws_+q`+o!nRQI#+^9Z1@QEa0HgB+h;Bt@1 zlc+kBMzMpK>sFV!snKO5v^X%epX+XT_1}BWdj+qH9s0$1<-+T2(>wiN2;F5q6`4fC z1U=Lfg@FUU%P~hFT%S9}h6y-{X}oY8y>$}3qJXXt?|LYjk1$l&St4u+^r=+ z?t@XLnAdT(x9R&amFYR6dX3x@tJoU@;wT}G6HME{?K{|6n<$FO=1p$B{s=P@qhw8u zAoMxAv_%w#BvFj17^oc&Z#<9808Wfn$r3mE*rhz-z`-o!@w@?gu7HyGc!`!Cl4O!n z{GzJPK8ko9*N3KD3Bl(IJUfkQ0J;ipu9u9Ns49g(F{%`wQt zh*$^LBNQsDq02Sq!f>T)@s5sD8{Zz2zO$;*fv*t^dx0 zTPN^OI|wa7&nm>NkX&gmqG%G~4T&DZ70QtLAygApmPxjKWTVNeGZCM^Im`QwjAAN2 z2!)CvxxK3JR~s%tn4wTC;drf~SdfIO%>%y5EgCG08RSfdj9kZ7*0C&qNM6toQUOax zRHq?VM(PHKvl7cocvw`J-Pz>Mc9Yr2AR0ud9f#Lldo#29kG>MA?f;gzSkN!VD;KJJ zmW=ZqE*Z1Q4P5RWsK_WujTrnP-AfnXg?zWGv0oD$8A(s(wPQ<+%vXqmkp6ZSKd2D& z98A+jsN*a@w?XC7qfAv576wf|*D;CEP%;Wq9SW2fMmpL(r^=PYX%R5(bS&>U3_60b zeIxWXYA8yc-@E>;+_(KQpRYX$La<|-Qg3ufk{COiPm4mRApL+~!UR{MSqkwW#wcopb%)$&9=F*eU(7M+ zv@uI%C|V>W=SSm)nL$&u6a*GWXo^M>4_&mP2sT61u?&fs3_I^sq8Ay%hKDkeM`pzZ z)jcHmF768r!fq4xn6S5;qO6r6|2+27F>o>jF{;`S2O%z8Ns^khAYrXTsch5ig+tJm zGBj_IAQEDyhp*<5Ifa>O7G1M(cDC@`K8xKprZEAVCu!R`;*lJkPMe#qxs^g8$3$#! z>B6{n{EQn(I7%_9R`;1x;XNbdHW3V9;}kWsIt+ z#9@eGnRuQ{97VJnsThpw4={C;FbGgkuq>M-i3r1hI1Z5l;v~khY}7=cZT4BT>a6t| zyzK09Y-@@C`0PD&x-DK?x{`iB#H)5VT$slxOS+5Oi18AM;-%er6b7Cc*4;7WqF1pP4 zb*`MuAXEiGoF2B7bb2GFCJ}pX0NnxS6v6^Adk1@+n9V0&U{)9;kznA*OpJ~53vd50 zSKjasLZAKrOC%TF)-J{?7Kx(L+z1(+HTd}h8BX;F{BcV_q^6_UjGdY}j(v`D?~6DpX$Ppn+poxS(|VsrT0l9MCL+Ow zajT}MNnH-dut}J9lv6p9r8eDdi<$W`HcxDD_51hoS5H5edVQ-phsrZ_JeN0q`*#?q z5ojiKciH&r66W44$&|_StBc%y-7Wn2v9Ghdnqy|J$eIxBHHu^%pXaMDv%Iv*<%cg} z(LKTQ%PkHb+|P*I-LGuj3)+U3gIjRd&G)}M4*l9B2 z+8D={&=Un=XHnw>MO9Pr58p=&MK%$eK z(yl*=ArYw-|2cos;s1wNCDIiLdy1?d;5E_W-PfcwO6U6DlLUpumE8eyTu|KWH7dI!(fcTP2**3V~_2& zJ*G`Vj|VrNaog>!Z7?)o8-av`BqSuXBUCC$wO3~4o{_O{Z-2k}<3&~3XU>_^p6SLz zQ}>)WRVSk=Gvd9-dw=)d?^1jvI&F?x19DNqJ8pe5XU?5vQSYKeAy*%`j;nSZ0MFuc zU;GPLgKuA{5Hy zDpCp*1VQMh_b&EPA_ZMH(pwaQ=MK;mjb7Lx3nh^!)hn4noEciwV4cO3aaOx^nDNOAw{ak(?U9N)3% zte!)&RL~R@P3IGb3;c_s1DXxfJE2^KY&P9xRvminE&tAf^~r~l<mXHyt`b7of_){pcAgim7~|R>yd9^qgCkS3?8}dH;_M=km8V#o;EFwm z$eB43DfsM{?qYs+H>QO5?|ThoGQ{H9;!^PgA)0&@1@Ecl{o3zv+j*XNx&pHfOmU{|!S*Nqgfg zx~8M(=0AEa@?9Fw{|ytfAZ3COplgEHWIX<^E@*`+!pWq2ZDrI^X_D?RWP6};$6gb< z#~5q}XoYDM%|ON>{?>8)?FX3I5rzcb98qE92Z$U7#!-9y))LIkQMnQ(12{_}yE6gl4OY?!hB( z`Bna^@e*FnLRU3jKDGxD2>#<^4>7l6jM~x$x$G3x*(_n!AZ+!?G$Zz8%bXc_?5|{5 zJ98G@nWR*N&T@@*2-D*g{AP`y>k>I7%4LVa+6L-NH8Lk#XrY2oRTNc8jo}Onq)d%7 zOdC~INaC0{^ieg9IF8UwnRb*busL%A+Ppe^yRQ#cQ&oy}Uwt@VJ27*HfV!AD@T2i~Q`3Z>D*^ z$GDQ?<|8j>x;o9(d-pMxD^Mwo(P;F!cK-oh_u5klcFDs(%kVM>xD#Bq%4_Hi;fG}Ay+();gv9=fJu8Wv#~ zp{goD;1fnZuG?pG{XC5^1y6SZ%6LUI34Tw7p;&u&Hy6HX8stlif5`BCpubj3x zx7p#@UQDJqK@^2Z%}KlN*kfoKJg^z@js+D*7z~>p*+YB4x&o3}h{mDcglLVYUv#J^ zRo?r?pW@Ez-$d5>A40zM|4Urnpwqc{4aK`})OPpkI;>-9e zUnkkP55s>9y%6x{M|<4)XoLGV1IDH&u!u=Y%kXs)LleBMh`T~BFm&^ zQ_^h4O&e1vgv6;Xw{D>55uNoeQZsn_p&R+LuYHzt8*8ksHF;`znP$)DS6}`ne)_6g zS?aa<#>z2DhDJ7$eB|((`TXf`^5ltU&@$6ZmSA;p6OoxkxC+>LFX~Vp57*jEH1Fbg1pUV<> zLp0q&ivq$(A#X+uTm>O=Y@Jx)9S08cp4Y#fcH<0B9eak)KY5bPbIUYy1$OS5p+i9E zHmDjFUaL#gRZu1h$k4r{_|}af0H*C!RqO)YEQz5Vfz+Th0yN4Iz)n?11%A}!3vmhj zmL%z8blA}qopCkCaMMMKh)^WyltBs*AmJ=?(AabyvTfPu_nQ ze%4_+o8uJ+53|v((b#Mfgg#*yVmmgPYLFxenxUnlK)Q};+Ju2m7)7|Qd(pMcFinI6 zKX8#G)VEgYcT-!`nTaZ4)~460qv}PRQVuWdvK;sL;^~KZaQzv)MlThN$q1ARY|8OrUo64M;q{_g#r~zW6&OuTR2Eq{VAe_e@#$%J3Vg}-93-0B&=-;tjr`v z?DB>ghsU;uoN_&k;$$jw8x7NmfUeRo9Ufa7q>67+$5n5{9RDFO_d)&$RBi`tH_dK| zx4z|r?3md3olJHAe~v^*DMM0)-OF(~{>kC_E?@k{7x=eN|1D?pS^n}GgFD6*L?j7@ z5fU&=6=7JH_~b%K5w5WYUI&66Up$rY&h;|FvJu4uH}O-u%+QC8HVjohcAdj7TzTOz z;DfI7?X8FpKiTJzmcqoCO|CM<@_K`y-(+E-ik%%pS4=b!5yk$eNg^?Ahhe{mVOpq)LKp-f1e&hlx;}_b$HA$V z2zxECN@T2nb|=-lA8UqOUzz0Am)*dZ?)?nMYjw=(9QB-zH9dCh2CN#{X9+R={Q}CI`w3PxQCRgrKAdlsq}9IQGn2GBoej) zcB};4^S=LuJqx>0N9uS|N|u{-e)+k-<-gR9lE{?)<|GQgbmi>?vBk&k`%}VmZL}Tx z_{r)lH|)HUPki*F4BG>SUI$G#n3$X;31ljY7fbA12E)*a;~3L0NsKNH==@tII0euP+}SwEZ_XBRl~-`xtKa_LHIMxd64B)j{c`-j3MnPu zJo*Ul|LpJb2elVj&)S5F#(mo{x6e3?+gj@Xtf>gaNJr=@kQqypbN$;SODB;|0kP}l zT#?&GS!-}#M@e(3k^T%wz%iiH=fPUSzA>9C$0D|U$*(=`@-t5lSd|Jprzh!1gN>zS z%6Y-`&ILC5l8xqotyZ6nen`Vr2oj4-VVsHaX(lGC%vSP@7j^W+#ci+BYizN;zQNjB zgT9v#MILt_e}R8-;0Ql?<*ht%Zi}Z@YYY^V(8=Mc3dLfETc+puSJ%Fdn|2@K-#qXc z9(nN*hV2H)U`VIcV`gTWcu>RlV%lNI=1VVd!@k{2&E3d+uEM=fJxy_}Oyad@wjySC zE#THyQJ$}%KDU9T7$6jMLnlc{i**u@1Vj|Vz)uZ20v{m+Q4rt`hX~|IPCG@Mr*fWx zFz`v@7@-KFFhVA2$DYJ7mTlq=hM1N~5PGPZff$A)UV@m<<9B*kj!o#gL|z28O8)RT z*K4~uzrMnQCtt#ws^ZF+8wxrfd&TWkLXF3oFJikCf@cI>RcY%s?uL+ zf$qVM3=}iz;ou@YYqU>Sw9)GTp{Qs`L?Y3J%9zaJo%fKPn7Cvil|HvET!T#DOJDm2 zzjE*AxXU}ref~OukSRDbjtPl*sP-a{Y&}bo0U}6ReKy8QyyJ?iu?l0HeDN3xDq-l; zX>2pQV<(`XYbL6aP83p_y+BbF0@uUII1C0|Hn+~>2LYbvVcQw3at_tjIJj#UfBNv> zGcY7*3SJnZm!^rWFg-jm5(4VP>2>b7qvZMoaj9L-6@1!$8LA8bcjv?PtoEeUJRPCeJ@v z=Pf_*c5-9m-^uj$-5QBVlH_uSemVY0vA(&&?|k)-_^uxyod5tJ07*naRL}Jj3^Gpo zMWLigHxcZ~t99k>C-!$tdPU8(hZ+3Y7 z!hYtpBA>nIE*eD(F*U`+&Iz^`7qNy0_Q`b;FGe#{qYrmDMAJ2*FhW(uXr&pWC>lu; zArnayr+jPEc92Pks_Dd0gkcy2et_lJ42MH3)57HeUI5po;OX;a8(Am;REC$qGW#X*V0ls1EzfBf%L7g8`iOVZIE-(b~l@QsjFW!?70ZEvI5MaePUA zPLht`qu>%KPR8keS(?OaKJiu!tE^xYtMpcT$fys~7Ua!KR;?Fw5g;A+hao5i2tmop zVn#Xi#Kf^38tpFIi{~M9A+KWZE)fdBN3w^xwtRr!dGs@Ut2LxJH^=y_#wo9ve!nmn z(dQyA%Af`zoEo61MRv~a;hhsZSU+`=d%tiGLw7(F1*odR{wuD<_ajW*B$1NApo?Xh zI8KHz4rtcb7!HP@s0?~tW)>#cf9>_GoLl0g+oq*?NK=Qrmg?CD3gq(SuG~$ZCK3}G z0d%|A^Ldo@Is;e3C{-wzN|*(eji83_w}H`G!;N6w<(<`lKYwk7q#H7fXG!cmpcv?K z8{I#K=_qL~kQ&5Z3RcxL9$F1}Q!q|H48X}E42M0T>kLme~x12{uwge zcU?r6NA8#7pA^f-{*LXlf6pE30V^=-jP#Ud5~jA8Byd|*NX_A`@7<=kJ)= zZ6S<+By>@d0IVX!8gZCGIrJ*-eRhQ(JU2-`XW|uNf;a?`q{-d$pfvzD!OCSQ7A9$J zG>E+(vokqjy})|QBd%>zwgvmJSOOxa^7z7@}ZkxI{q}TTtM3N{a{H;gI*sen?=bEsHj>xicjK@!1u_FmAUOz zM`*R$tKw`^KFCmHUF3D;Wb_;p-Ofn*&WLW$xlylHBI z-~Z`f;^DhL$?@|q@yvFflkFBOJ13x8#<60=I1FN$(guZuVFaf=xUvdHFrt@@Q0{{O zUh2Y;Sx|yYg8mTF*lROTiabXA61+fbFMN}&7){PZXu9TG0+ zy{994L)R(jS=>fKf2|HgDFQoAz>J}y!9;O%pomf9kll$wRw_Juv-*9_d&Xy1|ZQ?jlKI0)9>_6`1^amW;T4Oo^btuWSLk?t%{M@hqAD7l2 zm*f8_E*JF6@lOaTNzQx}L4yZQ)_CJ$j29&%2d$AB*U%e{?=(KJN8^(>WD&8-V6%aD z`V8giA#v#84vWP80LSQ|=f)V+CBfviL|MVq*Cd(3G&|=?1gfN&_zdC@KMp`jv``~% zxJ0!rDiaR5Oo5GVh}&vm!~+gbP2gJvPIWze*8>FD7P?T$WwK-xNx{^ywHT3vh}dK3 z4jB%HGzTuO9}-B7*;OmMu=t@NExGPCP^YubpvnE zM>n)o{mrt8!Vpc@@I4n*)kuJG-)lhh&nBD3u7da&2XcE)P}H- z9oc`qoZpL{>!(e4IolRo4Xvd$#2q2LBx z&{QT>gK;XHU8*x^w=dGdpXa8YdTbk$7 zU;HeO+;cykHzW#t@?%A&sym5fg5wyp8%uaWK(Fr;hmtS~$nBe;JV8U8b#Fj{o`)g4W5$urot;Wi-aT0blJ1BqHse zV;{;TL^coZkf$3kscO7zT*Ys;kcp1I?`Prg$1$(@FvgYdCn&y#sBs2W4A^ip%@=(V)tlbWo%?QJy*cE|=g+ViYXoW$t31tAsm#LoIJ?J7jAaZ; zSpy^XG5j9%I>>&Hc+kb`wCN1G)Vf{Hw|XoN61II6U(H};%S@Lisa7-e>RSY@9s@Pc zMA4*qZV5G8#j+%Rt4)}3klQ}Fr&q`Z+K84Lqg?m&U2kpIGHSyP8LVCDI`U@jTqV8hM8=dk%Sm^?<#B$KpLsH`9Gi< zrd?u$P&6t^j$|#Qb#?>WcFE37F5D7;Zp5fLue+ zU5{|TeTwokr}(+IzlYZ!xR!4}@ep@jeKqmKIOkT+5PoxmFleDw3ruQx+`7j3#SOy1 zyEImh0{R1&Oreagg~%vO`P>37n$@K4CXi7H&TaAn3FE55O$V+7&0uq7jW7%tbi33W zYv{H@qqaJ}l0QyTFxoI;ch=zR z-#<^u(xAHtOJ9Q1Un4&IG@^ABbN`LJdhZm)tu4N|(Z|#?7&!;u?_K1POE>1eq0TL8 zhn-`&bYPN5NF;vOL(3PTkVnL|bh;rM2=@iX71==GR5p z!k!tO=JrmCulOYt!$}K{qM{dOP$pl+;SR8oNq>gWnVHT>4m&@#%ndk82 zIJ=4&s*WI&1mJdwy&g%YN!ZxNZ8hmMw%Ka8X$~agQzeG$s|4KviBrTeBRZ>_WM}r^ z3r5Od^svN+-u* zgrcbgo{Mf6BhJ4<5{HP9MX6?3BqN~L!rV9#g_V^p{J`b<>#t^ObDL(X&+K#s-889h zH%A6)0x2biVL}w4Z}*6&bks@#=I2Rb4ZIr7`Rd8Qp=BpG_`h|QDdkfIHHip zvopJS@z}R`$J_2?*RK66t*>x6Kf{wjpJ6#5KRb;Xm8max@M^UbZLdHoZU9&ogg&n8 zqnD;g5-%;L7e#f_dyEiZ2vB0elXhFl-}LSX1D(v5+Tg3Fl%fO&tCJye>>tz}AVIeZIOSxnpOB=|W6@tA|nE zi=ycWAwb3io8Q9F&!OgX{P0)noZRly8gA0s+NR&?GZ;i9(!w4ar&6A#(F^EpZX>)V z^Rq}Wu22IMS(Lxd5#FzgcdySUA5y3HE3PKTww8ShZ+N;KqfcIbaj@!Q&SwM zmYFZwR827BkYQ_!u+ziSi%gE$^w-w$BZ*U)gP=$B=qc3W+o(~x|BmAjT{j3kADP5h zj-BShI6?@4qUs|-7=cWZi-kIlBkWAdo7Q!MC<+ilK?sSa>%?)oSBC_dNKD%%n{!6R zS+KA$g%EK1)Oms+pjgaP7%Nb3wDEkOYYy$<%;F{jK@hdW#x$F%Rbax%;P@)tb6tkZtK_CE^wK!(b6xzX1^aWU zo8ARedqn^j(DN$z5x4>LJgTmQx?tl>gXHLGZb&SC`y;=`&iw~Dd-gP;FgbJLD6f6> zYYF_2)^?kjs6;KJ(-;~I>n-TEE;+-=U+J5cdNrGcydM-lZM75Eow}Qh}TS zfltzMIiW(hzKN;C6vj#nn>}*5A~Vwq2ur27XBs`9WyKiD7n>SX4A@_SYCi4A4J~~r zYWms)BgxzZIuS&If44t}?shTdDn{Nw4z`iK8Y1?=v=C;V=;R{m%vHQJpXea=aI9=dDj;|#Yf-pUT)uefJ1-&o7jei zZL5?tgPce(l@LD)@cKP^gC2b^pwaP3a-~$mJq%MoU@TFr95xCCT_YzT6E!*h;t5=A zG7CGfye5ss4fMW-bGn8uRBYQKN!wNIxfrI7qG}_GnSnbPqMIgCLN4!6u2d=H9SUPb*4DO&qma3o3Sk(dDH@utP{=!k zQOLdbJwX)3OwUZRFh9vN-+Ga9rOLHe@8Bz6dIUvNFf5Bg+igk_Vy6J*M@lq3dRWcFw!lE zqDvGvO@|;tX%Dd67_BWC)?DOD9sATe3lkIk?1%mptE-#r-M5>3F2lz^@kyG^8o%

2UHRld`}}xR17`B%1RJUI`)K7 z7ZpJ4LKyP=`60KS9;2)05YriCFi7>YeGfWa*cxE!g10R=+__WdfD@B7GHkg4U*GWf zgJXRbeG_a6QyKWyX=q8rEBB#gODIF|*Vf5s5i_$>Z2KCmu8%expvw*i=gKH%nHRSE zxPu;?rH=Aatwzn6p!aloh2?!P&91h zgGUkl5Jfjo744#{r*0T%n#Qi(Q_N0PdF-)obIr8}dF-3dk|b%e7b4}03spl^B#NRD zMKPKx2%`{XRA3FuL{U_(f7wB{wzgSYt)Xfvnt^E=#7RsN$3!>J zlI+Z}eRd5(6Hv%cXUNPt?2C6Wx#4m5nWyRL8U#Mdxdt=+nE&|~evZH1c$WHfj!d~g zl(?*QC7sn4a<~DLA}y3oHr+cv--m3(^n3{!B(zje+zi9jI!voDVW*z#7r<^}#IKH% z^h2wryml>681DphPImB?S9#YB-%stuWtLaZbLWq~lULnvHD^}0_{Jkouw#CP-3wFP zbg0_K6{n0Mp%eLZrJwGb*FES+ ztQ~u>s?c_~M&0}fX)lyZBltLil@PmfCD)h*7EZjxSguIEROa!O6&?%Lh>|d+bxvC_ zks0yx<4YF77tCnXk-oi@>9immsor%1Xi7dc)90tIpJO|^nWa=84vs?- zg-Cl6iW5xQ3A@{C{9VH$@j%In)V#wm((War6AyfzU+M9gvmu{46Y>Wy^!US5F87{~ zX-6?kXJEPthK)K|p|E!z%_!q-wh--YW@bucOVgZhCk$In_UEQ~;N8E<3!QVE8p4@c zkEqk2q7J!j=YD?dhBxqw4}6|apL~+jy@0JmN6k*smLd0?|2DCfrymXZ<0n4{NgF-( zA@^tw116K{&X0oeBvmA2tq$3vhqw>0`G~_ z=ttMlq>84QC@3TIw+Kzw2m_DZdlncB`piyMD2$cp_4*{jpw-+4p{C+`nu;P)Ww$7b zNa7GpH;AGXd7joV$&MXU1b)Q1b8Cb_gb*6JLXJZRcCvr(0yA?nIGG%ZCTRDDj1_WR zd2lyFH)LX}L}{$Z+Io%s`*&a(D)~Z@B#BcRTN0zHDl$ok!W8snS|!7bkza40a2}m?i4Y{ z@&w@^-Dh9WnNLOqURA)6M9W+BWK6bF;D5UHc0PCd7!UUsQx--+Pgwya2T(>+2^A+- zCht@z8bxwe5mjhJB*=K=Ja|EyUKP;tIN$eq_kIg)xI$#@#mH7JUPIN&;)i8A>qn`~ zrMqn*6EZry5|7Wj218v-O_fXo>>QX`M3gYxXmjF$^UTb>jKhbo{|;xk@42`v{rbHa zaUAi$GhgF(9{OvZFako;P7C%3Rh>^_9=g#7__w5qidks2+gFZ=!i(8 zSNDl(%M{8s>R6F}AN*zu5qgwt!JerJuAYA#Up)3O^==J2>T}h25os4V-ICn*p5Nr$ z_7?B{i(f)0lACtk%rmRU=_X++=V@jTx{je4O7T*Isv!mBkfQLt}P!3K9Fbk;d_t&Z4Q{c|IV~4U0HRo#QfDhi<2jlrf5; zP#rJxs#hN2t}j1|stU5%Ec*}apx>&qxz)hQWN>VYT?~p6$x44E7g1NaVCMU~mH+wvP^b|4oi{7gCs`X z<&d~BvN7V44?XVOeH}l4$J_X;FMOHLe*GQ>y#`*^K+KMF$j72a#I!?ofSCO1L;uNzmHC~ zPw2KropX4JS5E?gp9(e|AEbXqa#ZMbm^GnjjnMv#tY3BLtEll9()E#1jH)R(xhzgT zN7wWi`kSdB4obSp@)B6<^S;SGpL)$Ceov*F97L^LgJx#Yq6Tb!oosfH9srV5hE@cr zPx^g}J>C*e;E_P444O@$=W_MRI(uD(q!aPJA9^P@zT$h%pZq%=mq+g3Ytd?L@$AE& za}zkcz<*Prg9E(?KW-nXFA1L?nqM$ysdgF`=U3 zl#96A0ZHFa`RhfU*XIv19+}*I_uo>pB^0vEIVx8K66wW!;Aj3dg<^r<{?ZpXy?c!M zpoLefA!jmRo9Qlk!$;AwsWy7xL&ixv^f(%I<4QUex?r#p#gw%YNnO%f*#OUFZ()*a z{V|rFeU^Xs+rQ4#5+(Hf`a!TDkO8LOHpra)0I8Pljb8KXih6DGDcIM{Ky zekM;f0|U3uGi`-?yDGg*0c~!EDBeg7QGzh-)SE--gnVqi!!O)24~ak~DoGfkstOVV zAugctRnQWoszDed!iYaPH{hqW9VpUZ=h_+v0-sD|Vsu07LBj9+@^4d_-u)fVci&@i zSH&v!!ZoKnyf2`a2S^bIB^OhnQ| z4m^Tx0B(SySx7IUyVRp})f^AL*x+>Nuw$Z1&NML<1ymKOs3aEdjGL7*TgC?m6J-J;!4k4PI(>h#Q+!%>Y}M{MPLsAdGW- z>G>z1-(f-x*in-Fmy@SCvhOBt-F1lN;gJ9E{L?IkF;=cZxm0C(a*7?5B6CHDA_00d zKnXnJUXx(Z!|SzacUo)?J$$pkL`kK&QKxH-v1=+%bEAe-)bzbX2_&E{)^QpEv6PsW zjX(0&)<&c1n{K?CX1#%7XsH5R60@?l&7eC#(^bx$TVr))joIlE=N4DV! zw_zG2i6o9A6jj5tP4f91*IaXu)s0B40=7HIHJ>YIeg_l6is93224+n<7BgRdjotgqSbRbuzMPz3EJ&pDs*Ez z=(;-U+F}ePA$Row0zXI4>>z|kW;VlQwaj|ggA70>fHv%W&BUSoWIA8+~bALH5f7XSO# zKgU|IO&oivBiKw97II_@MT)uwEsOfGlf)Sx7V`fWdv6}4+g;ZAe)hcgJ5N<_%~fX} zbCR4KLP8i4k^oUahNvJ4BF$A)uti0?ueM%LuVUXzt1Tk!)wV&fuM7eqOi2itNpen3 za_0HeT=mZ5p7;LUKlXcav~RC<*X^}hM9;I=7%)|xz>Xba;t>vGbRiO+yfs3vPo?%ZFm?Uy9Kr%IqVu8qYxX_O2`0%>f z0#ZDnv)HCIRiK}`mwxr#v@>_mwJo%uiRsqG9bP`Rlly=2muSTbUsycPI}g5^ zAKr0@FF*4QwvDIB7AJUq7;>RC;P>u+11B$@LQM~;RHk^Y4J(ZXfA`c^`KzOk@)u8h znf1mZo-?4+>rt~E);ccBPQYfYW2-r=;sj&)5;N5*6V(FcyoF_fZ+95~)_X)92g^z!%L#=^)s*CYBo-G}=?xs#*BcD_UBbGN=X(PWP1Dg;g_j(o`=W#xYHmlP4|^Mltr# zW^QhR>1u^jXBP>A5Zy3|f<*6J2!Sk1?A^TpvP`|+B8~)}pNwcPFRk;!3+HIHdl0(p z-m{f-+N9kX&}{X%e*X?GFKrM;5pn1fMlqV20R0RH2DL7IzlKx@D9nsg&QDTXb!ctW z8F)P;1po1e-^3eVb1x^)FXD9TOK^#M4wz%t|qu(>8TXM*G15-_t_blp7iD9o#b=w4@WD>|RV`iBk ziit!2MWwg|1OZrr_W1@2)AK}{kFERA^sompCW!pxZ)K_o zJLDTZl{-^IrgH|8q9SAk35huLkxGTc4bNW(dlB4A;9TO%$7eXc(gw-E5fMVy__3G2 zfuDZk&yg=peoxN2e}Qo=q5n&Z+VUAv;b}BeWmnb2XbpI9pn#Twat2x*j156hP{9v* zrWrD$s~jvruNjbe`Ja-y?j59O4^r6jQi=!eMNGX0X>gH-3uCh-zPOsgpIl(9l0nVN zgkFzMdz04Y8lBY|_C|-G<6;InL1#dHafN~&FuyQKS7d24285k921Djb8Gh`hyZP?& zIe!0}f5~T`eTW}Aa0}Z?5SDjitpk;z)4Y%MUR-Gf6(1VS09!)uk2Moj#H*6Ge%*OX!Elih^P2Y+0D3 zS#L8K*aUt+DxG4oT3~*53RxC(`X0S*4@r?QOap<$!5jB5H<4#1BX_tORF_NQ8dOYB^=Kqowms3GpsDHq3I^E5NMiA7{!VG_`pXRPf^~r z8`rVeJavh{?j_^r!4Ok5Ie+>B|I6!MPIYz*r%oN`{MsrJW>>MMW4QK<)oJZKV3q|oQel+85x&}6V4(!I2f=(o@%u%#4e3enOs z;?XrCBO)%C2}o=Nt{+ni6jM2dy#ckR%|dmYuIdp9mw2;{Bhuu@inzfbN!;-WBzFa| zAB7_X{OEZiC1~|Q2zJb`O*_2xhAG<59mZ@u4Pp~1?jieaq^JpN&miso0m{KT=T2<$ za6M!^SHe~WLX0GmW$*_f_pi9Tby}fdCjROOLBG?-*nT}o0XVDBT?0))m}x%y*pON* z;aGx$+xGF{H~k{FZoe7%Nx1)y|TgJwPH}lKfmXRb+W-mAP#aUpczU zFJF{cUs_^wv&FCdOl1#Avue(RNYbL`R!C|aMLxR=$9CYelzwUt$tm)B8sjVMfb{Hb(?=Z?I<;^GSRW}7%pq+a7lpo~=8KqS<= ze3}@QM!kck>u9>p#8?*J4_I7UV`_4oVlhLdQeb9!fs8C z-DI;V9NVYa?sDC}o!EXvuhS)tV|?Goc6>a~$1rtv@0{n{g;hixpehn!2tg2_Y6_~N zpsm|XJh)95y0z;+m!9$x4Z<|rEkO76EVqi^`z?gtu z3%nshUjTy>J_x`}`Z4b!gGQ9Mb z>v`hwqaX+IRP9bJQ?M^BM278&%1=$gjC{acuy z9bX);ERAD+39OW%2tbScG3 zV~vL%{1$$VM((wAj$JQTx1QdGi=9S*8RKJ=2;^G8p73xDqv zXO#^Go{JPlm>GkTnj#2P8cm;Yc>`9~nATO^w{I`^P6Q}shI8dR_^H473+j^`uZtSEr^)P3!c!tFSl#M@HSTi!kqk(;CUN%1L*w zj)Z4qb!6=-C$Ft`2yLGi_H?M42Bq;1v9%RX*@XxqXdJSGFLj56u!IK#+I5_KFVU_x2tb-^ZIe0d&2Q11U+;`I4r{PvgrghHXuAKjKG9ykn!DMXwi)>P6N8^er}k)04E zYE;2!v?p2xLiNqFMw=Arui)Q&ldUU!>J&lgi`>eUGv60=M0AfPoX? zdoIO7j<0_0F+A5s*L8v*LQxYr-?!a+Cttb$Q3gX7Sx$KHAR|fe+IwEXNGX@%iiSNO;@WzGxlkpnsTtfc8DY2KvJH_6+h&l=J|gn2 zcIj7C<%A$X@{fGs2N5&_{;E>r-o0gp)+?#J`~xE(TQU_2R-QmT|8Hnq+{B#UORkcI z(Bs^C$nA?+){zq0-<92bjfAc%#SvIKlok+5ia0fcTuf0k z0&a2#e6Fby^!?-j9Ib@Wbx27Bq2P%nmrtJZ_{&9~PoEz0hsSMx=ea&#UkmW!0JapM zQb_!kNeniSB{+H#{p1iQ8)KHn$f^arUW8(I87mus@zkihqdqZmb1$Q23%VaUwvB-7PACr&MK z^G*9mr3@}FZ4iYKk}MO1F%wf0EX@=-b9}$Oyfsc?i4(waN9`sn4nZWY{ zjvhTlDwD?dd_)wZTP6sJQl-GgMvEW_2!jya&{5RHf^~XooXuLB!1tM$tgyb?piytp z8@Md5)M>T`G-^#GRYgK37}4nh&qvc#Ow%Ba0)$X84TCt22yKt_(4`mmz;_VCAuEB4 zVh{NI;YYEnIWRQdfA{UY|Ht0TTB}ce^)h2Qomhc~&tGJ@J7h<3n&YPq;|m80VS*?x zWI#2Mq7YLxNy}NpTEy_g1wx|(^I6E5iF%o&CP}nbBWkyZ6_=n=fmlh#^Ch$0Fw2NT9_v`cX8?D$8RS7!a;OUUWn|6OsID{H=M@jZ`gpt$eX@B^Q}d+bZR z_e&q;KdwJdQ&UDeH^BpI4tI_z%$Vw^;!eItLPBH<#G6ZqQ(s3~e~{?>gUG#gq}{J! zq2yz2)cIyZMnOSXBptjoGMvckU_h+P^lYC^H>L%Irkco3PL-16$Vf-}MOuvlrjDn$ zs8bV2j>W6xE&Ryt>)DW7^rb9o%>hBDjTH^qvvrJYc7ijlm|njNgEn&5r&y6Wytcvr zdgt50iFoMvqofNO)!8b8p2o(?I#D5l={#goN!KQgc)Y55mChu|AdS?-lq;NglJ_-r zM14{qWhM@CQb2FRWp>LngVqLJ2PS4_affw!U7LJq5=$A--RvUr73QZ)_`Zu3s{H7o zJGo(Dnp4Xg47wexltt+KWO8{t&&P9YWJzK;93T{(OiHIx&a$%JX3Mr2HrMOKQOrvY z?IjL<%B2FSOpaEoL$`0^yDqwA0bp4c4?Or?E?izEo3YT$6pf8Knqhz><9i+wuxHN} zHtSu6{Q+?tqp4al##a?~@0h019+I*wD&-6pFRmu`tbvcL$Rm$3fvT#AQE{Xw8tGgX zd+1;o24Rp0?)bik?o~~WOwE)|}LT1qO*f(9~O?SMKV`ols za_JH$mN%G~+DSc*czUo*v}-Ie9x10FZ6vzvaYV+*qxW@sr#A@un=r4zc>XHFTnO+Y zh-4%yi;^!ON|Vr$5>u5K4b#-9_zD#*$K_3rM!kn{2H*^n-FxU$C~9oIej8^mY_ca+ z<|~WG85Fb3Y?)6eicemIr%%Jc=g5&~__crivkY91OdZbH0dBgCU++Lkf^johY2^)A z>_WK;N&qPtT3*86_YK5QL9#XSdV#WLt?|K>B;NfRH)^%+#|Vc9q-dS{TPm~ zBAW$7920a`**N++=BGVWRldq~7qF0r>CGnhWhW87oA?x1WmGq0$A$B}vL{fu=ALoF(7XKr0Eunuu#-(#d`0!uOjbHJqTfRDdQ9durl+T91ZmE1tn%Fp7jgYM{geY*k&O!*_;NoPzm^M$>zl0n zLy-NvK8GqkDI z+vu9g^kjv0r$@Up1PQWfgF>l{YY%z;*mxQ;qlvB>RL4tn`YyiXv$9s_ z#sfPMib1b8Bo+~I6i}V2vUk@UyLWD--t6Ew9#JI76|!vKu|TtuCB+>xhnODd+;->|KK`})IJ0qq?>u{iwML8P#3XBZgTa^udx|iZPju5Y4M~zQ zWDQd;V_)jxE?$O80Mll|tCp3dNE0IQ6!1b6C!$D-pcxY_ZGu;avWfciGTPrhPjGmN z)k=}TwZU_eWG)HteI_O|$X1$5m-?*O4KC@Bp10^ME^|j^8~cWNmX4k#4nxwpJoQ$a z3+KBr?Uil;;zTYM9vEYpS|F-NAb8}7PRgYcxw+4uH28_`xeFA5QQKq>|+T@ zRX{Z%lDU2=OSIPH(ehSMQ%rXI+`P2HLZp%MRD#x!x4iBL$>b~lh$r2(`2QK#+}6I| zqO)-Vwf9LbTyF5{3leR|Bhhdk?bgCLad#4M>r|QtZcAa2bn5G8mnjU+VvTvk{Y}Dl zK!{ALsDM(Y-At2z#T|U?(G7lOv5Y=rp{8X5Bw`>6y{pPp(#Tmv9(g*C4*5h(?Oy>4Ycey^=^P?5BT{*Kgh!;zJZjL*@z4p!w3-t&}xv*DNIa^;Rhxw zogt#%MG`ip=`y)=f%VlPZg(BF<{_6!q&TIKDTO2@<}i$QkCK!aMg(q>=w<1uc!zSO za1jZ(>WY@O7>Rlyz_;OC3oAcGF5|O#X%lsF8#~7g&YZr0D9o{ID#fMKCvaVomBVm= zwb{n&+Wf@MgRC#E@YJ#MsEUdt1it5@n`uNGqiTsgYIUN*%+we!yl|5Ft@C8F8IUBt z`@|6ng&bBU!;LrY+|HrBW=fZnC(%&RDt3`SX{l)wX-hpnt)kQkp=kUEmiFzMj|LdmTOS@nhKiE>rXK+VjnQTQ^6SHy6Fs`o@ucw8=$8FGY3WrZxHj)@fsgG6>(B2Ff}tl zTkc~AospM-2kU)uLgB$%Vs4ty0Da`AU?c@9B=>ZA0W#SH`07g#YlLfy{Hvo4F7zWN zBMB+g3EhygAM>s|-^^`yypb2jeb?fjVuaUdYu{&=?yn-PKgD!4#~!c8=Q?0Vq_|#bs z*;7dc8kTI5S1rb@JY_9~DJS(`EX#>O#1$m2e1$S6qen3lkw&SP;~jH1b4#g8IU0;yB?teZ#{5`-}{A+ z@Yyeaf%Wwb+|b9+O%z2T3PU70VJKXo0 zAro`<>>{2QAmRwu_1U?5E1R25goyEjke43XPf8aYef~7fdXv*-Rr`75ah928@Y~{j*6%Y|&5GDpNen6p=!*M(U&rKdzW#T9%iUQ(TpeQmB zB|y6%K$azBStbkuqDY|XIv}GpdZf2z@S-8T)m2uSHLRk}dtdt|ge`>)1FvD@&$%sB6%9&r4GY-D@jbV8IUy$IZY&u?gcrS&L~ETOqj;K)Wf-S0Za$- zIz}@jcesrl$}bjik_1X5h!-2gW9fwF9R#G2xT|!Kv#lCxwTdQ(ICYy;H)eZJXV3P% zR5BJfA3Vg<&%eN}_uPdyUFPt~XZUvg4DR+ETsM~N^JOI|A~l29fFK(t6uG{P9)^5= zON*Q4^C+bhxH7@z6U67AL(5rgKX^UwsCYbkuF3O*m`XN}Eu3UjE`Y3w*AMu{hR=`8 z=wvc^q*wqZC{}_QDOr%qA^bI@&LtR}fY{@_zlXy|FJj0B&QM@W5qsyi@^9by%k15E z^Y{GhyLSD5Uhy?h-1k{Tz01_jK2ENnv#V;M)H*yArXeKRb6X~PwL+Y=hwO0f=Mq1Zb5V(?nD*d5D;JWNTuoKfV$d?LinH%H$rB%+ITgI>~`rRJgRu|Wc zX?AUjg&gNDtWn#n6Z$^eckhBYVDa)QvZ4^j0$Gufq?j;_iAG(Xs>t|3jA>{DL4=jE zaBL4v*9rUpUDpsoplLdB90L-mOd8L%QDqge)TNj45h$R;S*3Z1sFdd?5kr?(Wp`2Z492Y- zCpK3xOGVs)%@54%;Sb*PL2lZ69p8BRN!IG?Xw@mca{37_iW>ddH0&H0p| zvcWIB_9uDIoj*=CUHBfHbl2j4Ag(3!@3*-0!Xs2ti|D2VQpC%u8W&f)9Fr?xq+sb1 z{^4aJ(}#&XbcQ^%>T&B>p6e$S+Rir8Q`aF$R|RMk&BQn6up5t4u9&>;3+o)~$PD^1 zx>+PwD3hHSBQsIN%EYAf0K2n6Ykh^z#s;00I?jeo)D1{S7QI@ZVQqug>_5b<^Sk-6 zPyGQOfAW5o+I>EJ_gnbx%G1r|$4 zl*%(Kuk`4(R$<0KnjHtjLXk$|DzXNFhZII+%nbe&lMY!%ie-u@l${iLB@b$hC&P=g zSSi6BB$LEZ$FA#FN42U3$k1$1xDcYIbzH+^xM?#nzkt`@q}%ry8=qmUV&L_f^lNKu zY_8DQtkYJIR{ z5YKV2GFcP_ip4y;cP-HD49Vs*?BBnWTw3SZXHL9W&}fE%YujXVSu{<>cU__=MwUU- zH2g3`l4PPFAPfRjMJDirq%)6VqA)-+5_F|&_eo{5*mj>dhzNJh5cv^|n+Q|kiOn-~ zhn?hq;RgwbEtW|4Y>YvK=*djhhuqd~6E~aOeb;Mw>CSzeJaLrN)C_}C4rUDETo&C> zF+Gd+nGO6w4QU~RJf6mqEcCw2VAJ7kH{Qf2f9K!xg|FO4tmxSN9?D3ZMwS$u?vSc( z@$Y{0?d+I806;o|BWDgXlw+uBoLpRG%uu=KC9j~~wfU3J{1uO!JIt_T!v67OSFWka zlt`76`ziF3kC75en&-i0AB4&uZw)AEI>R$Z$V_ICseL27Rre9+B^lq-v(Y~+ZT0;M)7K1^bb4R|6rev_P|FAM{t(_%a{XC_Tf}|!& zQL?0PcM-n6;egAV;}lm2Fn!CIYRH^2)tRI5m?Tqa#EQ>bLn3Mx7_(XfT3 zx|HW8II_IX8~448o2yfN>F|Ac@g{fedL?RlhA*8u41+#u(4jQ0@%Y+0AASA5qTB58 z#JOild&>&1|iWS4ja80Y)R<5wg%k-#1@JaGnpEJJZ-j>zxP+YDLQ zv6XIZiFV&3Fbm{LQn5vFb8OxK)>ts?A=2Vf!`YK<(?>lBmHsw#}_CyNPzUPpOon({Wf^-6Zf5K@mmKlAW}gIJqf`jOz?Rl8^w$^Jz7^ zEUz^PeV_UHX>`*dTPR{!23xkxVQ4YBuG49Ek&$V(x;%gM6d)1!0h+E72O*Lo2*U{1 zb}&*Y0zV*|%Q76=Wb=7k+r~^;sH*y+7kL!Mq*BI6>pj3QRED<0V9>`C5fLHoSPC*x zVm4wJ$=_d7lil^m+B4Pn!BNTe;B{J-?D_`2?<2)APdxb;`?fBy)~I224K55FQsa}v zxlj@=}IDD`I$Q5xLXku7fx6H=p}E9{&0_$&Z&&RRgC#KqeVs z%92dC*M7uRWe zTlm1+f1WoS`aw+H`k!{jU5o!|aSasrPbK0g;=w1r#&@3mJRg3&Mt8-b$4%(vy(qFk z*k?#_ifmq7<(@Ly1xFGW*P7gVyhL3#kSZyJG%~V?BdFJ5#ik<5{NY`BerQHT_aF>4 zWX(g%g*1m6zxkampI8|wKwUqVxJLOwvPTpnZ)QnO#5sl@c!`EIk%FXWFw!Z~msoep1p_dA)Jxq<)i$xm?k#M2bh7D5CZ*=P~xD~zQp zJRP^NZrDe*s8PFIN86W2*CZCO=ngej*E@*rCR=@(cU*TX`COV0f8_V+EpCz>8^_8N zkx&?Rn^R+HF9*{{Cylp9AC8( zzVfjE>JGF+9(#$;{&E%aJIEY(AF`Pg^^s>YJpNzE)c=&uhD%V|LvG)b z)Y+r_?pObm`}!LUiWUCLE{V5KB|hT93z1Yap-xFs;@EV>Rm#kOWF?8ax4{D^JG}9H z5!XyZAp#KqV$=b2U}XpckEyKA?bCU-mmroSPIn?6yyVi36i`CgQ3BIQz;)qBor;mw zq7X?f5eJlF9o-4o2z!akSO{XnPtfF!L#e2-``E|Hl)L^6>{h&cx&x zHCJc3(MALwQrM$3k;k+uY%Dg2yf!QpAd^N`Rf^zS={s>c{py3;sRtiZ-Xu3W^gKLC=PY{GCs)DMi#8F7-hZvTQ zkYu7DVIBxcL6Je#6yhkNI9A4YUHY8?s&3%BiI29TDM+%4Gwfrg5~R9r7({_jEF?5d zy$X2KbzXh-Ez6Mp9%%6eBANks34jp#{jKlNYU~B|1lehdK`dkhF;N^QEQ^t9UZNc#f#bu4Ht(N``NJRFPpvV*`0XFOO0gV;Sh}A} z-~I^mdu~M0)RCTo%*UQsXU;W7-91SsZYeNf zK(Ul`6N>uc9y*bNjFPVvyr?DJe&B_q6MgkgOe>GvkFez$O60I*&lFCa=DCJP6dmWi zfAiP;-W%S+1INFFS*dcg77}*Xkb@!Fl0l}rK)d14Tsoip9@Qz36(nQ~B-9O`m6bjp zyyZ>~OzdU4GD)vrr@R@k>2>hSE^;BJx9A`ZL*^olLs5-a92jG0yp*l8+X$nWFCBTD z-@D7<-Y=YBt^(tr_NO;(cUE5%4|j97Hh9i6RGhIhZ}br?e8x4!k4Y*;2+ zcFdvqKJIXpM$=;{h=@>8^eh=OO|~#baZ*MzRlG1@{mcq~cIGiGC*}`-{dW=dWj^$= zPcj_z$mWU!zKev6q8iCM)G*Oam4*2!PM^MrYU<>QMW$yaSiHPUzYB2~CZllAK~YsE z#tMv$m3iW^BiPOm(@YUZ0kWbJMFECo;yEsQ$|CSQgb>70l-P}HI?BicJMew3z!5aV zAoK&`I6^j3XoiV|z_lF|Rp1QzXoiLm63);;)f6HDzL4;Ph$u=xhu*YGZz_YRW|Qt* zQBcwvvSm>*Or+4_V$CD!^pFNU-m?2u>{*y4(qcaPnNKopSUh$90!@2}Q_K^mR76&1 zN;P=P4Y%{m>9Y((#Hmsj+4C?4A%or!6pN4C{3c$yeK)tgW<)>@>ak`wmc4Y}n3rR5yRo-{#nlJf3=eVZj{yhlK z^LXgHU*}gJ_`f)9$^^QWBvAoqCPc8q?eoMNN|Z&MNK+~*=o-#oNPO&TSXqb24~fGV zO^?8+z)RkT=q+*g=juEh6p&^tgzWu8-Z&&9zbH&-ZV9?6*@mGO%-E@?#lLK^Y6 z<-}wqj-b~|)M3+Q;x!w(ZK`7$R$+p*UV!I?FdU$S1GW{@yz3S3=12G5$gO|+ThtpX zq%(qr=}GFYM*Y$fA{D{5@noDinhHq1i@Mk$SP!u_THN>HkD@t(W0w~B4}bp0Tw12nu=@N z2oX^%7EpAJ$;k?uBC)i%#(@KScWb6bJ%@0GVWiF-gWY#@H+-I8~DCUyV)Y1OyJlKx~|~40lKcz?l=hFMOHOpi8%Fg72PzDLWgWT z&qtOe6g3>d>zYa+f$w>EJ`9WuAvG46_8N3XVvvu9-E2=E#A7H4lZJqI=1$3Q@%q$Om=(8N2I>{e={qNY(UP81Q=za^W<6%t}`Ptung{iqJ zfBF}Hj$s(oYGr&$(7LP-F_Z}tWz-B2_z@!ZM@je6pNT*M3U(RKX@woT=fcSjBVLCmZ&}4?GD)N25@-V`nvUcw5KV^nrzD3| zRUt`8QaCHIEstAw7rC!@H7F_(*WrRfm7Yoq(^62I9-sNp$6398>q~door#w+&S<&6 z)ZyA4_B{4+oZ_Q=$yTuCE?7p&*W=-8Bn!NIu>Z(404S!yFX zZDiphe1R;>v=1IY?O#uiQ{nsN1hNni;q(qq?W$*KD(Kzuq^^gfxfQCGs)c`6q;M3t zBF+&6AOw=6A`zg<3K=s;tQAL}s}hx)43GEGBEfvQjo)rVqfEkZ*{~{4If(MW{(Wp6 zT2FK7I8NLqmKtDkszRe)2=yn2d&28nQEn4HSRKSt9m*Xp-g*&-j~(ROKlvU%-uWa2 zEg;C}A)7+$i4$9>@!mBFF5NJUl)R9!HQUfs6|W0`3xq%*(4u+p>uhaK@x+9K+M6J7 z+;E-YhZ4C`;L{_U#FaGdMu%)J#=Eb$mQKT=KbOJKH5A!IV-g-7m0MsqpTbUeAVHoC8zy2q93E&_uxM!vW+aB|IEWy?4}x$9AA~${$F=|vfglJ1R9zzo1er{VcD;cRK{%w5WP}u2 z@*>N4UbwrJR0YfR34(yYcgZG`eE%z-=dNS>sAU3(MIf7i-X5fMf~c$@m0Su<1$(&$ z%_^$uLL3-RP*j_|Wy4kIzK+wf*)w~BDjkTMsJ4o{cOJFj(rmXW73O&FJKl-wxYUmn z+1qH*Di=W(;Cam9^3wW#?_Jcx z2iEJnF6*MS8f>3yVtXo?WQ5jAr>-av(WqN8PfjlL=JjckhJtB0=xPH!+Pyc`E_g8A zgVeVLVmeYRi5iV?z3TD!f{j_JbMA7PoNORF62h{1^QG5t@fEK`lFuCX|3%{r%Kaq| zr^-OJ^dh5|1m&p;?>XxV-hI*KY%eV^S%+4w1?4g(Emn=?P}2QOE;`h!EktvX z?ejaSMifeAL2>RR!GI3qJz>`)E2k*p_+B{9mjGRYnoYyku$Pvp$sLv)8#D#e4~Vn_ zuJP-st;t^(xRhAnr9W8~N?4xI3n7;l# z1_v@^;u4Bz)2S~~Tq>|UH_PIDndVXp-;ohmjIPS_(bv3#Z{B|&%Zu|kjz=^WM^+V_ zjsAHMy%?P#j9ot3(0>d!7{POVcB@qJcJU67Li7x8faa>%-1|)>=P*fdBqPtrU zaDAUntAnN}oHd;0(k+8LTAbp%bFUzhj_`baI$ZliVi1cES9N69r7^RN@BkSyS;2U$ zhgG8kL?jv4Gq~dyPaw(_9&XQJCF=y9%O76zW=5ne6O$A8zK1L;Ois^WNraNIoeD<_ zhY=Ay^g-86@LZOC3rF?IvLB@}iDs9{ zuUW&ZwvKUCQ0C6*2Bo$jk;!2DF0@-nL1K#m^WXr28P4 zfWkh+gON)qK6?W>9 z$6@L|V#WJ8Y{%Gkex8?ouf%@ar{xHI$pBeLkrdQSl0+s621IoQU-IzrsQNB00zdGO zBn3&92s}Ro26d%VqpFTkb7)R<_~AP~%)QUu$7HR+-5>ljZus(F@zm4-bhk!+C_yxq zWx7Tny+z$9I30I|I zaC&7TNuWniqj93iG!b1PX{zXkiWb<^?IylsV<{S?LnjF)7g3rve|+gx?Ao)J?R$?A zk0lUZD6i^yez@0`6nxKOa3s%Qf0jaF2}xF2JvPXW9WNru3Iq8*)~+65YG#qOYlqmg zYY(-i3xsqy$8rdK57mfZMsys@!t(bx?I3&lf1N zf}$z7wuPdp2qDq#w9$2wLBnCXV{yghm-49(eVkYS@q4J~E|JXxC<8q-Yi*2{#V0R& zJ)5-9YyJQLAOJ~3K~yq>eD?Vt@%&5`GHKAFjF?Rpo;pZuG=UgiMO{fi#{$PeipJQW zDU5bJ-nR8>HjS<3^WXd~_uPFa(RhrDZ@LlJYBE!vWna=ms8XoKA2CBA7hhmTC58ub z)Pp3&#U*IBI4g+ok&Cb9<{NJ2Q{Vh5Pd@TEdkRNjU7pDJAhAha*k?_NKFtEGJ}R$O5O{Kp#zpXNA2C))IJSMAPG| zj}7pco1p6ZxU$cU=Uv8cUvV3mc+dZ|Gw)2iWZ|7LXL*UEvM@<~c00MOj-+T@(p$6DFcq<)H-_A44@`NRo`KXhc%|L`E;?(C#PM za88o%KUd&8_9*e}AU%D(^bBM$6DpG7B3U(>OS5!N7OBoxXwBDgYoOQ)DLFz?j*!u! zfn}& zC|LB3r%A;7nV2b4uPnfL*O^UKLV%qgbg5!mcWMxDV`dvqyy0WKf9uORIx|Dlw`eUp z1eGcSBE}`zHC!d8x%li+4i$L_XTU$jM8d5^!N9Yi0VB5!cpSMbhm?c zh(?q6Xjo>rZm1X|a9!0HuXvOr$$>FkoOc8-|CF zjevnghc|B8%F+O!KwrP%?c{8aXR8f-Ndd#eNcXXJ+iHSbo+YbG(Ub}A71!le4Dy;y z7eT}%m(V(uj)r7(^0zJyu*f^uj8h0*r z2&5>~tB5@(2t*SGav-ZbBTNQc%bY))1*Zc+K+Co<@+lBY&{~9c86oRn^zegcpdg@s zc!1B|^1Hn5+*hCBl>hgMGj41D8BwoQP!t7OQGVs?o@;aX$*-_=y%h?8$SSHPxFK%y z@ADE>PYES2wbKSC7z)mEgNJ8aZriMrGiofIn8obfh@zQ5h<+{a{SiIsBQ#vWEsuJk zhqY6oQe31wSEgBR<2FH8ljykta{awz2QtKS5n`GRtz~M9^E4OBRA?>1I*tR1im8XY^;D*x{WBeI z+g#@U$EJ`oJ|kry1zDtXDELI!#anzNRsxrx-ZV;A6MFkLxeJjD9)F zFZS(Yp;%>EByfomPxdm8q19@msUclWR#bFdC-4J`izV`dJuEIPapcG}f$!tGZn&usfLjeFf1G>r^f`ZM@$z@A5b z&Sht(_D4l1zfiI9QNctZ6Vgt_# zko6>MBO1SVcAS|bON{i&NTNfdAt;wD{8lYwpK3{#4^I&t-o&<%495H-k9sQfekb4Bw~LPBLcM_|xoqe)NhF5&<~u&k;rU5!{_3ZRBm{%`9PN%qVR{~7 zL1=qv8mBy%Lq5A7qRD|SqN=N7D%3*S^Th zw`}0=Z*TI#!7Y%yfai`J!Hk$Fs!AdjLsev&jV5L^f+EY*n;jyij-eX_5*WHkskDUL zwN+i7`~_O$MLs8yUjO#DVOcJkZj#Mr>9m@dkvNXyAWPu6PUwQBY1GR#G($t}ey->W>12XL zEXv&cJk@FgMbp`Q)+UyU%PcLH(6n$juNx+srqHanFie9^r-K=ZV%s*V(yj9)6%n}T zritU)G#V`;rpZ7A%60>_zn{Cl{BOMb6CdKm_7d?`eGIJ`Vs2@Xwrw(U?l^@*N3f+N zJ)>)>6$_-6mbh37_{{r1&GutQ`S6dwLJ-#=lY&@0{JE}udIh6sU__C8kAJ)7O(}P95AhBRd}#EcmAz@zPU!WEGqypO#AiVmvn zQMzrI`fQuQb=&X;UX7YvL*RSVXAe++<{ud~4>K{@Vfe}$h{R*~zQ+e1InEts9%3eV zR_F>Ccp>{ll1V!q9$FW0eou;GDMtUbe|g$W2tWjM%2NbJmRS6Z_WFO*ID>Nkj|kuQ zd3eXq_|SL$f-hB1@Y?YRo6}8<#xDH%hY1#bMv~{r<^p88D00;Rxl4~CV5rw*v{B`r zdJJJXU`nUyV^I@?PodD@UtVZ2S(h-Qf=H}QTU0sLvH8-AKJVLZG1&n6H5g2FHOWQz zGjtsiM)=6YAY($#gp5QWx3HZmt>!X~QkmM^GWC*;)6u#6_P=3mUmrJr`yaUP@LpWk zMrxGl&%(yhK9)qBL*+IHkI!=ZRo8OYvB%I8X--bnXfzjLGy((Z@aMB)NxG6Ky2)LV zy8A)pl&FgrIP6?L#)C6EsS68I3eIAa-Q^PFy?sm_Ut(x*Eic<}6kiMyNer`4D4?hs zj_ct#E~=!U$PzKrKvfkyKR{7c+O0MKiDVkzwFrU$B|1Q0*BEZj@$5nyp{t}kfjE4U zo36W-kG%6eJaErleEIYL48;nGEj{Qx8GIRirf;0w|)fPgMkX0GOjH1c`=bW>VlQRo=Zn);~ zTn|Ol34EWx56}z)+v?!E9-3+5ISz)YA*%|_P6y9%k%f<}Dtzkq-%E0M9goi(;@H96 zOywNf8rYIfE8fe<_$oS`Mangqv2`QVmKJDL$^^PbN0phKDNt>-c=dUg^YGK#si)LX zXvXa-97;j>SfO3IJ{TJJAKpW4VV1k*4p24%R3Z564Yx7cNl+{;BWpU5SPV&4I6gB$ z9hqunkpqRph)5UgV0Vb6Rm|QP-#omJs$_v5Ajc%)BPpWs0Sdz?;I+QLA#Az*QMLCUR_q)h-MFmwuip9bMBpZQ@4t;URD)^?uW5@UM z<}ELyu(-&M$$iA+CL71I$k7Z3ivhJt6}h^A70h$P*6Rs60YBTb1JMJl?dzh~S8lIg zvRV~E2v}N~AarSQAh?mvy`h^I=W)YwEY=!LV&E$o{voBUTd+Tb}L?0uTx|mwi zrP^_jyFk8lEKZ}-rrzoxguwPZY{wy+&QPgVFiZn4@R0)_Awkp6vZ1euyHMhY1D2^1 z>+i#vE%MVJ{+OM64&Vm?LA{0RXw0Nj?3q2mHy(X}$Ef3ETo_A2EQYG-sBS>6?Gx=t z1anQUQDy$-`gbrfHN|XU3aTZP9_U$}Bb6DUGjCIvE7DOreER11@tT`%=ANHFM7>%? zR%A@mAP@rGh;(0;0LKZD`9?HCKHtyU)uVWhg`yj%ibOIIW8=oP4D{zhpK@L0z8^4>AK;U(JD$r6d>A(+g zU%VftcVO?|fz~sMlwZSnsTy)o;*rH9QC&th1di~!`phcy#2~FhQbj}+gyKU+gRwLW zrbBP=6))%&KXAEAOOv|V(S8tKljp&7k=Pt~n!}9)=ke+D--scr9Bh?Hrc>Ci%hbsR zfA!j1*>UJ`jBJXjnoME2fv6UVL_9XG8)9?zJl=c7HQagR8TLeqkd2>qlnPcBv|XW^ zpnH9S)7<;626%XYuZ-Tip5~%U+0j+-n-mTl<&sV3GMgx4m+@191U(UpQ z8LunX+3C7}8HP^VcF;8qRhDsFkBDjDx;C1o(VOd`Qmqn+MwwpLxO}w5;#7l^BA~5F zG+Ql9NuyP%;(Ot!Td#LWrJ|gyE>UYQLSBd7Oel(@$OIxFUH7S-v^ZPKbAzdHc8`J6 zD$$!9VegC2qixJGI5dpoBw3nT#H|)!NFx}Ckaa!2ch3V9%M0Xuhn5?@My9ESG&WU6 zAQJ>Ws;07G!#IO|S$00NkHz9LiCBoXZ#EkA_w{i2&L~?cY=;$!-J9|k^0td#NxnZ%yVK$F3oqdK+$5V`a}$r&Pw@EUbJTic zV46sBKyDz;z`zg%CqiXm5m70j#U$3R$>WfwI6aFe)lpaV5eSL)OqIa0_^mOGA74Gp z`?uw|Olk1L1)CsHNhf2peK#yXGzAoiLPMfhD)WYO22q-aX%&vsE=|!X9>h6u7b*Eg zqRD6%5bA-`M))2H4X%yAkD4m&NCLD7vM(5&o#VWvW%7=WYHM7$^=#I!-}cfUdS~K) z^*EEzf87v5@Z8S(x%b{b=OZ(RsF-GW*a$$mfsRKxCuSOhXj$Rr@q^^IQP zam!sVZ+Qhw)ScZ6PLH@%BkYn3i?}CG@+Yr+KY#zK-{P*B<2=1|7~l7>mjY_X3rsf; zlaBWDiR<6aR~~}*rz} zle4qFFT)u2TxF|)u`87bUGGB#H2Tu z;_R*KIDBXV$F|VTNT|`S${0}-RaLPZ8_)BQ0}mkyZhyxuY`oxV9ystUKi}~v)xI_r zDZtD0;AU5m8Xjl$-~hH=rdqC`rw56rWvcT9+;}hf9-Z0glSH#47;%qwsTS_a4GqsQ zkPaN7w5vojVc`aHw=mK}V4SLkQyb6gYM*zFf?StOI?89>^xJqs<(|hL5(hJYg z+bbjC;nfAc)y-pCoc8o26@P@@!30;Oeg5rGn|dQaP8%T?Tm)fN53u5;yprfw)YT-q z_LGEN!^+5g#q|lg-7n$4?@7UUFLg!dw>DkImv{b{y-NiuhZc~nD!pTA(2_iMY?`aq zor~)=ksD^fk$@jpdLh!2V(dN;IzXXaJvZ=52HWDaJrwL@7TfJ+n?n~t3#zH#Sz-% zF(|hh1T+YgHau5FF(sN+2Q3vPJ)*N(P4Uxbc2FzMq9UP35_qmlJdr>`>WaF6VVYQ$ zO)MH^?fP*{RpQX0V`O@=RBKH@M$>c#^S$);r1-@XyTjK#2x})H0wh^N$TE#q3(K|` z&FA^lJFe%xBZrx4x4Hh}%XsMcGc2eQwM;MO+AMClic_mnYt$(;9oDQGrcp0Ysk`Lz zqxgP}`qDCLc9dK+;N)zPvEen?ehsJIglGbxsL(fr$eGx^g9LUb)F)UGQwhB8y&K-| zvga@|7-!?aI8$aDuk3O3>Af^1hrhk+>r7--NT&gTCb^`?bEGmu%+#U2xQNuLlFKUe z_YF|3D^yNS5M%|$@Bo_JL!(f|XqNfT2EiX)l4fiuij*)xZ4;O#k{M-7Mj~0NvTLD? z$i`8P82*YqsxE`&@Yu4%7P-deq25!)wFIEY5Wax!9eaU5f__zONQWD`D4r>d;%UW%N#W>MLXI@Cl#@iM*Ob_iS86 zLN+24gBp6<=;FPWvX}8;6DMFO)_+RZF+^3#XmwUXjJ4HSPm=mJAE-)gHknk%Vp4)qX zFZ|)h_&@&TE|RG&TzTGJBqxWj4pOX?L#fQJ#i&4_%F3x)#&&%I1VJD|NmCIZsVb&n zuuv%R+O2hZU6Ui(RrHMw6HCRZ%~m*T{Tl8*`W*FU8@=Umtl7Yer4dQO=jYj^;yL^t z4F)4bmL&G?e3p5qg`evo6Ek>oR_6~ce+_G;7~7qBqKO`G+XR^$mXTy&C`Dnq%9E25 zG#Yij@Q0tKzbDJCy$8BAnuO=tq2;P=(QaE9rpd*ZY-3@r!1VM2wMLt0G{W%65c9M1 zjEoM_tk*blWQtDP#`6QrSQOWCFk=y1*QeF$knc;gE^2YO)8c&}_!yEC@W8|i+*c;P$Li)Qhf<#p20ixBG#TKQFROHtk-f;vc*NF!Tn1*DJ_oBz*-r<8xq3yd2q?$ zx|ATFO(TQ^zKf(r2wF8{6HsjMN`SyyY#`O1f z;|!<#O#I)*8QR*f8@{#7p`U(;EoVi+gULdXEBC-0u`t=BB4PI#c+hCVVvFH;jGb>B zC+96Ocid;}=FcNXbHDn1TT3k8^V>8cF;=gMK_GbMNQujKnh=#>RiZ10DnbfR5D<2@ zdT5_2N#WOhKkRN-cF{rCLCifZ?fJQ_Z{yYL&O?y{{^W^ovb{V-akhh6YV!4W{UIY! zmAC)k%S<*b=(LeVgV^dm+#rH`vVyO4Lhx5Sayk*On7H^}xOxzNcnGgpw5^Qb{qCee z?G_>{YXRR6A1eim)ZP0Fxx4QVerehuhqkW8A{?x9uGGWiuH9^0yN$p2z-lh(KTK79 zCr=*>m|H5MclWQdtaKl8H(vyF><}=gNHVG{vwm!ZUikz)@n^|pCBE=uhyQ&~jRj4H zSdu|WBim^5r9b)vo5oi2i>G$*;qU)5Gb1_JmIAv4OGP5P8!!@~lQWQy+ejk7cO91aKX8%kDyzp5oH$rPQ{bX(gil`g0si@W-{z6K z?m|(b$g+m2NccYJx{7Ug&@~O$^F#Ezrl4sCn>VjzIG4 zAi#C~aQWdm1QNXBWtVWv&9CP@U;Im=@i@s5lc{3Rte-aEPuR#)p>QX$iauF6oa-~>RY9lrN03xWXI@EObZ<0whymzs!r1;uTV z8cq?9rzsRH9BT;%Bi({igSjRs2LHNE=dGI(NCdQ7HtpRz=oybANfts1dKkb+Jf#%SO;Dh{_a_ zx(Or$du}`LyH};8>9nE}Z@>ICy!FyIU}$I1>u2KsG0xD|e%+XzIDp>VPBIfk3Luk; zabZy9hxG(58pL8D9Ziu!G&>&ka)W(SOT6{GG>&DU4PK2FiT~<1mNg1l~_RwOA@Lp z@wHdHpMQMvUNUBi-@W)o{`Px6LfA|6kD5Gk2@ikQyAOyx7Jq z77=+JR`+!Iv79z;kyikC-97#a5D@?LHA9!O*L7=yQ@r2s8s*cwbJ6v2M|44a-J-$w zPAB|$3>2F}VIE7eXjGS(nn-f#Mg80T)>0RJjDlp_+^&T z3iSDq&4kx0z;l=JQd-!lrBp=ILvGnzGP0HrzUAE+nkHk}E{18K>pDh6$Fg1QjzzoE!Z0=d;ceG(#1GiLJkO=8R_??X&RErs^L7Q=%Cmw0=o^ih44MF-P6Bkq!1(G`C*~#+W11kmsOxk zb+kGta=<`elx%L8xmJiKr(Plz6O64Hq25#}&Mx97I?x{r3k9`X1lKIIz~}21#xYF; zRD%=GA7{8fK*E96B0+5tqyWiGA}VF9dK05>h#N98|2|n})|MDZrfCK)Lee4C3%W*4 z*LZSrfwzpOFa+2g7tio8dj`SWj3lii2y#gEgB+Y(<`)xi_St9i**AZbt2bSas%ZaV z=hvC|FCAw(^#5~IDkX}C?m;*jt1rD3-7tVq2Ycc8E}RozW30aoiV=34grmVPZC~Jb zJ3|OVhm;!1GY6~99&>PYF&jP@0E+Q>GO2jzA(ZxEyzoW%N zOA4aXfbk^cl3}9s{4jayMmHg@BvKVT8<06CHqPtw>-fyk2MN^f{!v!L>j->eLgp(M zzn?d4I*0uW%Y66QM|kA;!)S>l&!1ezw_G+S2iUf*pJ$hkP^n2&PA)>P0{LX9i@mZ7 zhtpGmQ=|Ui^xktt`3-S;S|D{h@E`~iw2-=BqHaMTLhzjA+9AD3bpP)PxK7YT>-*tr zFMxUz%2jyr2m^&UFWce6UUg3fRoOEsiEl(o7N7~_99G8meA}a)~)HIt@d$ZvVdA! z;GLV!;{7js8@GP&cbGqNlvt(@NeWfnG+jqgWIWd=5{ocCHpF7FM7`ETQB@>K;8-@2 z66)KFAi%aQ;)cR?TYC7>kvYEdXMa!9$Z+eIKS~gZkUxJlrTHR`k{~-eMmkbw;%EVF zWDRTj6prmVf*;9-#hu#TfpX7K92LQ<2b-cO=&lA|x&ho3!`J3Bjk!yN!a4b{;+ zcjcSI%p#Jd^R+7y{N`B-crw0agzApEjfKZklP%u&M4hP)kX2!{dswbe(EM(K6y4TX zTItxk$xxDsNhS}x@}u0n?_qwju%Fx4Ux_3IeErbl6lh}j3TKIp{QGa+&K-~5$M;{n zo4>y0V@wq1dH1*f4%u)?j_1Hpsm<09ngxTgP{HezGF2DYChK8A;kujxFp1zaxXtsz zk1K#CshgNjQPl{Ov+s3%$R#Apc}YeEh)uwB=t)_`ciyKHbhuQN!2S z@?d5P`I+O4IYYeul8yYudjg83C|2T~{Oswcv0Mj5RuBTBhRK%kF|uNkvB5ngdOIxn zSMx95J;Iaw%Dn7lSF(O=6|2Yc?0)_Qo_g*XzEwSj&}_&U;0qW?g~gUcw-5<*r9^NK4j=R0?NjZ5G48!TE42G=GzDm7`>6e7dx+1RhL@4ykfXb<`EVGL)1$;k%E zHS5{Zqf@Jts5ffVEQ@BxMW8~wd#^;}j3*5i3X|B)fS&P3-ZYAoV6pBH)RvL# zHtF6dM!KJBse@HphF%qt<}XdQq^{Ci2n@vaVA)1;1z*_U^ZrZLGO>S_@tgh*Il1c8 zIT3g+%>#E5FZ?Tq56-jsrdNc8wr6wy{sM1U(s0!7`$F!5SflZ-?t{TcoGCtW?kGo2 z_H)7YANtQe*3QI#ukilccj!V0oRlRE z0BQsb6QVhU*Fp*`M72n}RN=ba5q63=q$8lYUDc}qnst~cVX85nc-;UO_IJXODKbAk z)a2uPJZ1uuU`QkILQdJgxE-EKXAQFV|fUiT5Sz~_OP<5(!% zGQNh-KJZPx`t(yI)DAD-b`_t$<#ytDM9nClc;sHbvFqEA=%GGa$8A+%BntiMZb!Vr zd0R=u5K_##-E!cC^djFsEgZ7~idz}IBZpm;BA?#9uM{f2%i9Mp9_$g zU1873Nxr=I5x%pq8%ydw-xaW*w=#b3cKXF4JaiOorpm_QO}zWYaX#>>5(g*7NUeSs zKY8$8Tp_c0?OH}tGX3h)^yN?DCX?KKf0A$CGexXtkk`KIX4Ve(vVQd%?tJJ8o}YM; zuOE93TegrlXYi6SgrarncK+%0z{;9qC24pr%+DZgUqGZ3*f0PE7lZ<7Ev!fUDE)bv z`2`764OlZ2q3LFsS*{>j4R9Qkn2e!Xw3h^0y~f9`xSq4eF5tI+{{uK}2P8=M^db2U zfe-Cwi+D0gtIy)Kd>@yU1H#zMQzzdrGEzWB$V;`0xFhyTIedxuGO zmFK>{wPWR~uIk*=Gd=7~NMu7nA=5-CI{iIqnv+Lq1qu4cR?{w@q}gyO7DrfBRB$^j8kSAF)1lsM z;>#|p0nLo4nhAtzV5D=THI-EK@MXZ{Vg;wwfMyL-^C^uC({2f>3k#5z7=w9o=_0Bk z@Q?(GO4GJ*J%?opVgRcHGYxcKa_@yHF5WcCT+kvI8#B}n%oXHOz3yRc>|pkzp1 zeggz;j_*0b#rpj z>GIxV2N(DDV|aP|LkxEFd~Pnih;Lv2UNl8T2>AM*y^LfNynJju0ROu03EuSRH|c0` zeCyXc@Jp*08pt3@J~I$<+@r~G zVYMMf=(`a>(FlL;w8D0Pu0t*tT~`@aUXE4Cq@>t(5ncFi>Fw;S{I$WL4@~da2=wCgK@LDvgEff`8%O;UZ;Q9f!?cxU> zBO^mxFh0zWo_>FW?88Fc$q;;W5byF7SqRPK`SvlGJw{e zWMayJLLY@bND2qNjDe!3*^(C=Jb4l~Sz^uD zFw;l(;<^T8d(aaGW-3cj(-CSw&Q#DH8^vzWXx3>qI#fLm+w<`PKubi*htb2a!L>*X zWGSVGn4O--w-(U{d&p!82tR}6NdnhJ_yNg8ihRB7`c&ODq{gqqEDR$9A7}9p?$n(Wd)zSK@Fchmkb*$!eBjZOd?hy&QWpz@pz8G0 zTWp+~WYkp=)qqdD{R5nH-b;UjyW45|EwtZGhu-eA_}6>C%cpk#m_td0Kr_HdMP*X~ zj*o6T{B(Pos|Sp3Myw}j)~f`2?j<`YkdA}zYN5!7P>|=o4pr#<{R1a>f2|)(74m90 zfW;>)Etjh>8O;4FAyi?8@EC_-@O z;o}6R!iRT!1J~{F#h1K~v{1Qb&1&|ZI>9YF{+VC3r&v~!^CJMDCqrjBJrDaEy!EV? zaOs+HzVpMM@`aC|&(_qF96e;wGcriuI#_5G`Q~>W?s{yN`T9Hy!2(OBg;a99>$2Cf z_t*h;w#r<%aRa||&iVYyV~?`aX_4F7M7 zsfOXWT$~EnP&7~#m1E6-Cz}B^EkU7w05uC`dojG8t`nl{CzjZt2kdymR{9bKj^*IA zI;aGgNdraKk-|eH(@0?;+6&-GWT4}8TyA=<%3XyqG|OguW}a1zI(a>d+Hg^qn*9A= zf1O;<&~IjgJ8i$M=4oQNFZ$bIf$#C$uRh5I>Krm_5O~qXY&#*)Ey^n0M1nW%Z1TuU z3v9{?q?STxD#z}5h>c?cY6}FuKsp+#t|E;z{^LKx*>Wv!*_z~|ziiNOlbEG6o@(NI zQTe&Q2zeWtZn)9svLUZJE~$%%(iMwTD0&30A$07X7g2jc`PQ`5c<<RJBevD-OS_xSW3-)D2r5MO-L@9~3O4>H!<$AY~XycfNZl?mPQ&8#w zqH=Leg_E+21&B-TGD6w=QK>R+1H>SFPty%L0LwQ3M7 zpMTo*ONRT085k(>slR)cPknHhGcI%Rj8)wAD~E6V_$1TKHuLk7Ovwe@^9B&Tqi}GE zf7tO;)J&Ee&e+Ds-uQc@G>uEnIE$Cw`Y~zXzyhp*0 z64Cm6H(VoIVj8gMDS(R5eF8gN)8gO;8nu1cDHG2RL0l zW}8I4NhV#y^;{D9JiZrl?5$3V|MrfzF|cYCfAmjZ;UDh48(C23WONSK8uXq!Nb977 z$eFl)ICFe(@i>W7DK<4d?wg)NDde%6M#Mk>v=WIm9olvWsiwnqSE1LH3>}{158nJX zHm~2xcW?h82Y+-oY%O4~A7xHa*f`S9p}A>}n<-Y0okJpUN$CoT-N5ZMXfzwttqQHC zkLy7bK||HUbxdaffu7Ej$*iKMpi@)>%IyZ_#RfFzU?ho1WT2_zG?sWpy2D>yKFpSN zeTcLH_~4t&OfK-Zj~wB1iz+mem;(iDw*iV5I`o3h;YE+v{p4BhdHn^Lxim&51$GnA zK`03603M<=il-a2%MH>4MNAp+O=<9|2M&?*L6aJulAvx`Z0#-bzPEpbe9zDdOv-6H zZT~U$TSr?9e2e13oeT^lxCD#a7Gx+5y(~)_Ws`nDN731FvdUXF8kmZPRjuOB&(gDc z057?Tx^@AJVl$rFi|kbKe98V}9oC+^j@zG}Wi~J=8a?zI1yYJmF_9vr8OTHenadKS z%@DD!sZnn@mTD!UqOpQ|9fTREs)c|oRRdMyrlAY@%5`t$)`x$_XLsMpHKQ-)JzFm2 zn|I&A@Q~zzBm24K>bLUdi(bM+xx#1e|7R!#R9ZUIhb9Sn1Z?Pqd?vaJBAS^hx*F^; z1#LO#Sn0Uv_QYj$-0^uVx7}A{?C~F@q~s=e^3AuBOC~tcX!H7e|AB|+pTSZ5ZmD0> zXvsG9PQYZt<+71cUa?^tYSZQZ#UtIeL-d*i0pty6G=eX_In&Tu;TaY_e{Xl^?QYK}{oR2uvfO9)#dE zt7FqK^4MCEpxH#I2G|x>r-dmLHkH=!`Op6^e)jX9QE${yCKm}t3)n)UnMDSZ3gv|v zmaG;FR)=XfV5TFf21)#6j{g2J273ot*Wb_je3FeRjXpIX)v6G5>bSKsoyA!yl``dK zlXkrcy2|SDam-W??Yf1ud~PmSeDB&-3=9@=Yc}?g-KY}}VV^uqVf{ESJLfF6EFR~F zGYuR^CD+q~?OWkB3nd8-G45P#?qv*buo`c9{z+1punm|+!v$XpVTCR`V z_jy!mEf5Bl4Cp96Z@m0EK63LPF*LmHv@<_#zX|&-)N=P74n1}U{R0Vx@;OH8OZ;oc zM51(^DlCgy%y}xO=GwewgATS!$19M#;&0Hl{2}Qruczm%n@DYa6HZ|}EI!SGW3p;} zl7%VBjO*i87pcsiqBcEGZLUhY;SsbX2@LXPo`j;YI+3AAGf@=*LLw1Jp+?xRxL+Lu z$Xr6icvx~j(wb#sat&t{vV8Z!2l&a8Pw?9FE@d!h@XMJ6PL}IDx%VIkm!|piCvM|t zWuD2SWjcNhHs!mNID+MK{&$;=s)QARShf{bl#%0X-3yO1km21FXR8X`j6I&TMhJTP zZ|h#hH5RD{Nvq)@%{0TqBV2s`c5c4z8bc@YTU&WSP6^FU>}DLOjDUz zpxtN?1U`Z5piGpJV?|niKu@+rUbJXd>jahs%?7g5#I>5V+btH_b!KW6PIeqlbbRI# zMS@h3d})M{QXgyk2H05YVK}K%@LTA92d`OWX|7Cju?~$EeX`A6*KNc=rSeNg@KwB1fCbQj}-7+cH0`sT7^s34TNa;z{B%> ztm**KU5>vyOzmTnN8#C`I|R=f@{vc5<@rtBX+UVcG~`* z?6*())ow2_yYFWV^_dW8oIRYOa;m};o)HPDDd0HWaicg^G7Ti%F> z9Y2KQD|<#cwcxX6J?uI*$1M{D>{OA$z#xTE59^1DtST7v>n^!gonUc+#`FyBxhj># zHq9j)%~D8vCcR36yf4WcNlZgS6M&TDe4Rhray{=Dzm#81?#5OEiki-|`=sh}&*>KSBr|o<6|`cYZmV4Zq@b z{h&()3j#XAfjGxQX#}9MZt#p;eVu70g@Lk%+=P9QOoU?8nnbC$^q8j~uk~CFMM;uO3OW^!bdQ14>0oO~%)uMRng-i;+ki_$R+C_zf#Z)*(Hu;tuS>b^n-OJ&W!KuXwhSrRtG%P&VK{pb->Wa&`@xsg4S)ZjMCF}dg z7%S%3(3fK*q0u9J46lW>+BlXK-8TW!cd)HCRjb8Jy~;$b&T-r0xD&7-5_Hl9vOPnr zUA30}-U50`!$=$4I;wEl_%KsDcFew%`TXLvJ-}1imDjFFfz}LEv-X(c3v|W6v@dRY=Ka&(Ybv z%jKcK=sNQ_#___8@xSk_b8gAw$`PN%C%-{v(`!f+`Vj~M-@%^T#Xxd5fw1}D)3E4R zU|Gz!>JcwnMKKc?dVzGIm)-%5RjNl)1-D(pw^~^33av$#iX*Umfuki6NdqIDC7nre z%URd*=5wy#vyc9SK2^i5J5;92ECo~C{PoZ9{dazxSDte@YlnyU@t!?Uu*nav#+vC+ zJvs%$I*bj3lsjb9_g#U~Ue3-%*BSe=TQZLUaq&G9`TggC<6=cGCCcj6u<8(I@Nqv~ z;q1~FiV!?CQ|9ieJ<+I4A}ZRy2?#tQfS}KUJ;zz z(R3~%Kw5M@>rzbb|22;!5`6x}*Ky%R7jgH44{)D7!MBV9_!|sZ-5ain5U{!*r(yH8 zy^k?GIKaeE3TjOlEFv@$Nf0{nSY9_?J3;8|R6PO!63&}5Ro2PP+&SJW)Fka24m#ZpjLSXx#Ym$oNLnhC7VTkgCT+V0tJje( zsGO?Q0eiVJVfGa1adpmJw}top!5=a`J&6ngly;q9+gkS3CpdH4CRU#+@_TRk9WFfY z0`7VC8I;F{|1Qp9{IX=xfQL#HeZ4(mp!had!+k;KIV*TV|}C=_YiMVjI~nyusH8b|2u z7pR$jCLh_!*p;v1Q!g3j*pCnJ{Yro_Fo>Hp!HtL`G`~> z^!+YETNQph`ln##hs-SEqqPmUr%;eok?>3 z@DbeOKgXIqOlRtG5w(Xnk7+YP2`O-|Nq zraMp}fk>984fh>pS zs-zRcTz}RU{_dgs`Kzb?g^oy2Ke~wL*I-i*^yeehwa6jI*>m^<%iuNk*pgvVVG6lNF{M0-F8vl6b z_xaSrck-xp3c0Qq`U)W^Q4ME+0J50!q1%0ilWz1s%_AkCtp%+(tzF zcr|J*czz^h9|cJ2a_R?@4SI@6I`t+#3G^O;wb+7u5}7riTE=^H0=41bl?+HKAUo8` z4&&=bX)Mm;H9O1(2{w-mvQ(SLlTigAVTRW%mxWv&gi0!7Vz(QJWCookR$C*P4QQ4v zN<(?d(>0`YnQK;U@bHYev51~;uoQB+>OrpSFK%1p$Q0z1{PLSpEUNa7^3+&$Cb^?eG(LYgIB zMY`|IbBNM*)@`|h^R`_^!ZXMfuOn?Pj0<(o%3yl-cl-EJbx%w+7uBI=j)!%}QK zWW%Q-XYl=p9%g!G0!H*uaW0_~_O2ru*>YK&E&>~(9&gYU zN{OeYEj#MSk;kQN2wyLzk;Og#<;ic#ik|@lJzk10U-LFxFW_i(iQ7&*8oiEu{s!(# zUNv$aj%_pHRm10~p@gg|bT;SKGv3p~V6um=?Y$pgm66nK%%6{_VwogZHJ;t~90!9X zgFs?vX_AE=oKi$P(<16(5Gjkrdh%LSN{@N@{t9VYKN8Z3*UgQ4 z>x4Sx(>BGvB=wq$3>5r6m0-FJtBT=Vb=O9=s(5)7N~K6rRU=p`)36f^jrCHSn>C_vflLmgHhN~4w7!K`*AXiFItvN85M)qpB zNuB-W<4D^>N#!t2pJpw*SB2`J3zxuln5Ztm+!EW)-_G$vM-ZyOb8H5DLE(%s>YB!> z#u7%L@b2s1z}mqz?D*+}xS2HdbcFa{iOKLi0$|S5IlH&Oe0dH}H>1E(?cO6Y3Jx7B zx<8|ekYPsE63JYr&HL8~@C*{`Z@@?uh^Ou)a($#WzJkS*yCIvT*k6PoKvxA<#1EPIBa+!|3Ys86Fw?cYBeh8~?}m!_$x7%Et=_6nA{@ zFF3L9HiY6cJ+;8_=l}^r!%T;RC={WD^co~2G(;|kv}dTFn8o)c`nq+DWfitIXL)7; z?7_iMltKdqA8ECb%@#NoryRjA%Rc{j)Z-fylJ8F0Jkr!@qCsGXPDzVFVaf^zNK}6I zyBSjF;$S2Cc8fTS@J!DT)FuicJANDQ!`U6G%Subs_dIQf!}U2oE_kbO`G}p zukOUpSmcKbJo?-*UU|+-Fj4^zE0d5*cfo1`hy`EbelBvkN4;F)lz!LQt?bB%sC*tf zut0_ZKn!*hVmY&32E_@5Wr^CT-)?yhZ&~*eO6eqT{`ps!3##4h9+u1NAQ(0KIIlRu zgYyTvrG25&_S-ym@&F&&_A>g@8G@G014~E3^YJ4#KzuBk0);G$q+wM7O2x3JAA|1V zmV)%5Q6ac*AHigWV0AWh=5a-0*_p@L_6o&2-|u1!h#Zg~Bi>h_{DS~$Em#W3tx8jy z?Lan1Lhs;K0$8031Hxn)h6bRw)OBXM4rvYl)EtV@PhVe>+WaEE?_(uP4ELEVEi8hW z4%Ny0U|F+VPY2kQ4!ylSv??`3p-4h_beaKXL8Da%hB7FP2E+9NR?)z3G%=DH0=JDV z6XX{}4}OSOop(8R?0y)pm}1NmV%>vq4W$GT;3!ZPCPO)sO0^zo8;J1y5g{chgj(IM;&cC_hq>;m zt!RD(O7bnFszNG_Gx;3){4OvR(t(7EPcXL=<+8VN!%a1>Z z7&I_CMdlAKKx&bzfA~>EIuUMivDUg0q4;CRBxCwm5Q?${F?cKJX6>%m&6wkCJy2Ly zI}@TCq{I}hXp=VGfFwFaGlTE@RNW?Z%||Kr}aE{5&`i9$FZDgn>s>b@|&}Pw$wMuNh0+##yW&JSQ^=t5Q@>9K>ILCWYZP)yWFgc@t%zmw`1y%+1=M zI$d1=BvSQ2st8?TOM|Q;>C~HOi4;z&y)5by)M}hOb^^BcfdyKxinY{%WEMZ4XL8R@ zPE0?GcXls$DyTmH`qVwVctDc0(Hjwm`27Xi9*=aj%|F7%?R+pR6GJjMU_pgd;W>Ux!3a2zIn7I9k05COhcz;!Hi8f z6hsG2M>P^8(j~IRRrF~J()URD4vyWT+Ud~gSlI0bo}zahpKgLH_|ZE*!x^OkKJnmB zI9{*w&DVd3Kf2?8@$*yrz_xj2`Y3^_WB7G;9N)ob?4=;h|fpnJ7CGZU1wbx^9YLScj3nU8wOOeCZz!%ZIA3&;rFcaW;SW6afJ$n_0 zpIhYH4y-wGj1gDjsTzUfl9T~&c;%}QvCz(GJ8l0zF-^vs{C{$DJ@9-DRajv%s>89V zdHVOKIBP=@I&D19r#4$*XuV0$_OaX~?S_x=Z3-oU=h_^5=t(wRd@ieZPjO7up^!n5 zIkcjJ<9EXTEdneHuU2QtlPt;rUlCv=QBxU`xe}=XlODxD2|Vmh8^d?-8%-M0;n9P8 zSoNX=KY8pn+J?se__@j-UwbomfBEA`Q>W$C_{LK^`R421%kO^gOMLh7pYSKwT+iRX z?gPB-8@Hks6Qp~4n4PKPEH1*30pmkqhO)90u11-v5DU_fTLxNn@Zdsa~}lO%*jrBml%W1gqVC#g6cuISywA764KTZUFGUlT{dV#h%d zf{dBwqOmPpJhml79!u!YCV9=sIXriCvYUm*3UpB^+;MD%a#@T(&=Rn$Wv_(7E~=hp z$?`a>e}J*{2uGah@Nel`twTc zyb0e^i%a-Qw=yFlnx7YeByAtPWYDZOK~1A3Bv#plzHCV7{7QusDcPJxCA~K!(Hrl$L`qO`MJms)1n$BpRA2sV{kuj(~)k z3h6AgT7ZhFI^ar-g2YW(RAvr>qfuNvPTz2z#hE4g&)LF}UmwJ-&R`rgxoXRc*syAp z>f{7&$qz@CmP{x&(T3O387xy*n@A-U-DeT5L(#+acD!iBspN{*6yJF5I7%u5YL1{b zN6@S>Fh0uF+t1-WPd&%$o@jB(686wnP_alWtRRLjy z=W8fXKaMwj0yEu5V%sIWqP&v>PwvAg^kd`EaN3+Tww{l@=Dm!q+7!iaFO2>3w7oFw z1w&g?G!4aEh4c@hXbOphz|ROCe)!#U(&WaP1Bq*P>lrq`u%$ z3shW916@ZqvZV6;q>C!wI(iQmZ+sEozv)AK;jy1`abG|EsT?`aqhYrQgy664{wm^{ zceCriex6Eok(8mbbLt4Wu_9JSP(L&cNe{Lb!m*P=M4&FB?_+>kESt=fH8YL&o zW%wX+P%-69N;WIKeB``Wa^uzuDWp@~Rxr`G0vtCK*+`lu0%&?ZkI&8X@Z@nGTRh0| z)&gz6O-9SIwXlX)jh)RK)~+WL)rM}~atVKV@MrjXJbHD-s8l2g-6Wqh8BFxD)NY35 z^Ed!O@b!H^6JF-NM{NbyjTHI3ZvR@q zGV39BLa_{PjDrx`3hJ64I%iGo1_BBwibCM&BsB%68GxqY8J+!GW^(^2T5^;} zc0I+xw8Oqj^2k;PhEw6%bm}-qj$-zWBikLQ&w>d!Ksps&_vrc}7!xhN{mRYwfl2$R z`_L+T@y!IP-$L^`$gzvr{^ED@bLB~{cyx-29|faIT-NYG6HNIEH{O4Q`>s2aOnjdM zGLU$+S#+ZU(m)1Hv|b(TNe(`ACtrL_B2oo9zKfAI_|P?P=f>@?LD%%()HZh7PTT({ zd%4z!16_&+nA`RHX)jj<9$Y>$U&Y49fTjlVIO0QdOh&k+XBq=LLSGR!6sWAP55lEd(J3egJ`rVk!i70HTdhQXw`WrGSVjdn*E)IQS3| zkWw?k_cgPSl>{{(Db(=ywhKvtbP2O;BZ;B9bfiXFl{i)iAZuCeFwhh}1Ok!LkO+`I zQVL|lMpbk)A5c@sga*DvYT6~)S75fU#q^0|tlO}TnaRW0)m3Ch3w-zB4!(Eb5&X41 z(4U54)JE_;=uJVw#_mjnf!0VeT&JcJ;tCA2TV2sjJ}}aupbPfi^>bF|=TUTt>Mh~9 z9)YRD)K2^d1!tc3TD~(k%?*bFY(EHJThl-Z!azb-*`?^b^H=-%m#a3R+7hWMEKW>Q z8c%?`0CpQ;+sIB0ktlI+T1PW=s>0@_XI{z&UiNnSvZ2V#3uVtdZ7)1~!DQ$|>n^0U z_Z}Mc3X0M}Cm=8-PEz8jJ`X&0ke6S$mbBVpV)uirdC`?D^OgapQDJVO##!6?_{^@O zbP}scyDfSZ9kFo}ma0&ZK2x|%dhKq1+4sWUryt3F3Yh8mpe8Uije$aeyzHUmbZC1v zR^T${dpzeJ;#J@MYku+8kMV_je!>&=8Gh%C?R@(6x6psj9o+ih4-lygN8B=dXXgki zHK;eCM~8vlNH|1>RH~JLEFo8*)g!>$vU*xXM+^KFj-DvX3_#IId4g|W`fhGI>jI>N zeU&<2Kll{CnA*jW>QUUlMydiusARMZ=Oi|8*NyKbtt*r=DX#48<=JVKn&abYQD!V7 zke851MPXm#C~v&yFZkSrZ|8mIUckRx`95yC_iw2g@H|8~Dm{r50C^(^9kuJ=go0*! z-1?H&fPmW$KS?8Ku{=^UE~T%ev3V=d`LXg#oXx8dI$iqD>)|hF;4u{~E`QoO&vv8xC<=aJ9&{}9BZ;#9s1z?n*YP)9gjCU8 zNykV63MoUS?THYfZCj85-;t#IRoX3qh6n8c6bM`g^b}HwXp}@%2;0Ld#A46NW4rPnP4;&~&8F$q3(Nbv&j>e)^MY<6h zT}BuO(}3w3G=q?GC&Iq}WyJ(bGj%k-Lo#2WS#DEaQZa=`HsfHVa#%-p(J;oj_MA2R zUF#(8Ekh8v5oRT-XhZ?*?OKU5o;t>@+s483@N5T>F+sZ=v~|#Q37jWU-RC$u>#(*s z$|r7m2j{KZ#tUViJZ&#*d%=L>gitu++*k3`qsPz_26U<@jwG8mNN0-R2kbpD&xX}m zCZG79?AiAtdd4n9QB6c=7QMEUjjP~SC(Haft5EB8#(R2k^aOLd&yrIQH)bI~PlAx> zo`n$vs8$sz1)iD2QB-_0oT+KMO(xs`q)J{(vOb+BX|-|a&@>bL+B?c0{PIrz`XyKK zrFI~Tx$7joYXX3u7Hy#Bv@lcuADXLL$ z5y10!^6}cRvRdIss&jt#IdT8qkAQ)Q?o>Q4!XyNeP^XtJH8Exj#60y{3y`Q%f|){3 zYS8u|X+~)IsHzZa>$@HpS~p{NBh@)2!)=(z-LqYXw11xeC%L-e>C>db4&1k#rX zO~Gker1~+e^5WhI{3atHq5-Y~0~t8ggk~!Q{Uuan zAPM|{^x!b|`nQt2@@j^GPJNE@o*&Rx{t;@*Gl<$lY7`)8 zEOYWd?f0{K-wEEic@$k&@KbL`D_j&_#}cTkZvcCdYl5fP^r9=!PiwEAw*N#Xq?9k1 zdFV3md1l8KNGMCp&+KP%YJyaLn6;y$m^u{GI(B0Y(Wp}_=1HL-rHztQD0@2JSg3RB ztcq1`v(Ct2_Y^p#`$!p4fE0sXr@`v_35CV9^zUt-ppj@?h8kP*`chWrh z&OfI=o5b-vetGy=?l`=YqxE?-6h68A4ZL*2CSL!8uk*u&hmne)KS=SXFS?O;Zod+N z;5)y5mTLPXtMmPsnohY{Wq);=pPkyvZf_xU9G(|CViA?hVFijmE^WtL^5`TK5wQfK z03Zfa#Xvdewg5c83+fZm?+LTh!$Ccs7oLY@!GS924a0OM=aD@H)Xg=Ct)8V~sJ1#8)NqK`9Q`^o2j z)}_Qcxr6e9pTH}vXKZW$sj7I6NHMs@MD} z#ep^d0lUv>J8l2R&3i#P^uTwiO+A5CpJxBFf6wH}BbeEZy!_hBP&I)FY%I^?j@dc> zr0TF9NP0F6H{hTxsWn{8MT@~i59PretrXz6kVw#HH`zXSfYtUqnilpOy+9HmkODjz z;7N%P3ce?>Y>Dj(X7mgv`ZiKdmqMD849KWSM)f48tOj)vV4(AsE!XjbgLhNMUDl*t z9(aOWMtz5U;9vz1OIhwGhl>z&GfHJeR*ML;#~1;ReEvWaKj7OJzK^$_dp=Y37T4YN zCHA%sJg+T*4A5N34aKc|>av?TV`$`g>o4j0$~aN|wf0chC{2WC#vvTe>8T}M8ZT7I60Jg^%`gb>)CPfAyDJ(o}4cL(>*KF1TCX@Yq2 znNTAM*Z5#{mPckPQMny8Y-gxyw~Y}yGC!(@#8k3at~Qpt_1!MDE#{^Be)xL(7D?pt zKnJUnB0V5!ovMXmH=~It%Qw315I;ia2R_KChpsANKw&wsXOaAPFSVI6q)Oxx64h<9 zL=H3+&Fi469jvxNX-K1dtVwCCz~ad==1>uPp$7Q^tcv>Co)J^Xls$r6aG#%e1olaxZLD4n5z()%NX-%Qyv{`aH z1dbB|7GvsJy9Lt?*7q1Z^E=z{mTautE9gJ#YQ&2B(Q4Is?nfVD+qtVixM9CsQK(j` zyllsDo-Xu-$Ed3zw!zGTTHEX(`Qgk z(x2<$WXYhFRlu`QvPrhjA7=Pi0>%x4N$JwS;~V>a7;Z>0b;^%`Y;kreqta`fEylpN z*x4@+l_3fQ=sNS*QTei)u}4{Xj21u7Si|eKoD0Ci6URB+INGfY_yMD&xq4s=?>qNu zwyhao_G>lU;gRw@`zvKmHfEV?)(8}Z9y7&@2i9}x@F?Ti)bbQjA;8de3|%Lm$}G3G z|E>MoY(HffoHw@N-#u@tW%0oD47(R5In^%HaxFa1<82!*;k6sa`M<8Yng1arUwrgu zeB{|X@if9xwXSy8NcwcO{bPw%uY17p8bkP8U5$F>N*DAO3*#)yl*;hBsiND9M*&ws zN$Yef%`gy99IygNu27bX2ieG#ocvf&M`JkJDhS#BMsEg(F=PDIKp; zM@we$Iu;maC?ntrG+khOQJX-@@Vt;6|VUD|qv%+OleZX3^PB78|BWspy#=}Q+#B_%Uz6U%c#lxjKyIhP|f zkKey{KVN&tJB#E}g8B^2rmMfGp{p8dvLQzkH+)mpI#$HgNsSqly>Ku($fRVk7^R}ML@R}_M z!=tl!jQ^Xx_YRZntnU0j?|Vb#s;FHe6m8))g-~Hp>Th+sY(_`=N`AL1A zr)PS4s_VwO=RM!^J>TzqX`Y7DVQa$Y^?r*_7y=RoTkK)71%XzYlUYSI9}=2OJIPBI z9%75LfSENh3DzDZ8?LKZFkSLr!?O>Im=%@emi@Y z9>-U$aQBsps$I=z4<*UleLQ#UJU)2Q^=vETPP<-H^(J3Gc7(li#~3dRaQXNqo;^0s zV4^43@yn=4o`O&9+sDTb-^u>cJ_6!RnChmXic<8h}s>#AMU*hdO|!M z2ON!=1lJTIopv_Rf9U|CYu43u0;ys);6EC3Uf|W!H5yI52hhcDh0V5Ot{pi z4kBb0Bb6pGv<}NQ2|CLdN1ov7p%fR5CCDZdl-ezRGP}fs%PGuUfsw%?3$lzGFRuD? z;FkIO6CS%BoaS8@ZeT+pKnIVZ{1%2~LciU+hFXE?ft5n13^q*``CrZg&+C}90)vt1 z<7}=qNhyIPlX#T|yUsrAU;J!Yi?#UwLkOkR(*|+}(1Ay@JVmEnWng3-LIhMRM>)Fx zizq7~pKa4@w>UJj$VW4qxnCqmIfBb)0_Jp^ed}#7O@y#`Woa+xI;RlQ!Zwma+sZ@W(RL~P2h)6gghxpVr|ApsnSl1O! z`@MVa;x7(-2@e+nje)`D%x2zk-c9_*uASYg{^tuQA>fg@60f}Dqa10^L_b_rCC6Ip zK|tQj@rUQXnrp|man4YYLkqJ!|LcFk38N9UA66x()kHdCHhjcS5QN|R!K$Q6uYxxd zA*3GYF0(tV*6DE}N;Np<(RXH^%KjC|Wl4=&w2!vo+`(|nN=JQn)9h8{@ihw~(jJ7@ z_rx-0kYacMW*2<06O4|){8SC{MNlv>2&EIt42%s?T`3b7X_9$Cd(oq~KF!LJChRJP zZf-H3;%FIDrbuQLjaeV|^oNT~KU&=QYSj!s^j!FYP*1(>K&1m!6AFX8ycqDY=Z?{z z*9c2OdJ8B`uzZAj56<$|M|}3lJcAxlk=9=V81FcOu?GDKR-g41Ryzu$Iim^s|TZ^Yp z_)i0&f`+X~)WnPk zUcL%{*^HRc@z|4AAsJ2@47e7zzToYgJ<(HlTWGn=Halc&3rqGA`f8%v=MNm<&z|@K z6|dS$gj$@A0K}+3#2l}y7WYgY;D*f?QB2w>4S#aqZ5(UQg~w`2G>URi<~uVFa=6st zx$Ae5Fl4t#jY9}{cwvE0JoW8pL@8#U{~S=SH4ZL6IQ1YYmEw|#?TqL1yk^(4*?;l` zhuTZ4cnYhkV2F4I(K!zMUhMy$Z5WJ+l=OHUD!Rs&?2Ws{Is(ZQC<}a> zORY9vdhrB(qa)yHoCAkYN54<=smDle*v7^kTY2T6!%t4EaIm2$WU_b!Xc^t>hDJ9U z+`i~={dk5^BM8~}DnLkyk|5GRB7o)$bmnMGJx)R`@z89MFF$^YAd#ZwDOzoZv$yQv zPk-&bTzu};NYncN{&}_bwf6Pz_x1E~Tl@LY2%PE^PGgGM6F)%-gXdg%4w5#m^6-2I z-*2$Rt@1!>h`JHrM{}zwJlIXXX2uZ6Y zNV_mQJ$81WdnO_xs@NfVU6>fsp2@ebe;1c-+KdLKYArtev%UP`gJ0z@_I;l_r;hQ0 zjc1WI4MhCD0%~r+JMaH0hw8_B?SSqgB-*Dg+nx}9mj+0vswVB4&x^O61!!(P^aw{f z3q4r5D?uBuuX2Rhir|LLJO3}(T?ohu6X66@t7TT)CMs?@Xw`FTlf84Zcj+naI5N#m zThC`8ljN+yt$cR>kMTq_A1>&95uLMG5llyai0J&sGwQ^%{$6iPEjCs`L#v57-N6zT zK?*22m{tNqxi~t3nGpo7$Th5J_n`ak!eA9dp<>=c_-{j6=!znp5;z@)z(`^l8e0am z0wY|&nF7lSaGQc;I-t`8Iglf$wUF5~e!GL#1`H>A5Wfbd>tu@wI`sxRn?~o2-Z?Uj zRYp4W7A*0-WkljVvrVKh_|{cf#{2Uu-+c$-(6=z!2QhYzI= zpSoj-r|c9}r-Nmi{QeEU!EZnBP4wpmPG2Fe#acW);^~{vg*53j=BSqs(h2fxIqPOJ zxgmUSp2b?3hU+7wPa>!@DJ2gk`$KUJ1Fo(gdESmQ2sC`{ z$Ps??N1x%FGe2g*S)i@koM_EZE(hGWZTD&Cb>C8nKY#2t91-b$uPRi#f5(drW7YpF zKnt1;m$#gIHBtzsmlycq;{FJdj$S9Ctf~T@C>`a3{#|Sz80hBwILEEHKG$tKhc}=5 zTyB~?hk?N2RJ}|^xseK<(My2QjxBWN$r^)fD-N-xSY*A`&o`$YMjNXZCGmWDT#?2V zdv}o)?PGjSV-#bx_PU6YeYuQ!>;yrp3gbmsc1h-wbec_+Zy^dMYPkvhS;($xrNr9s z@%Ul1(vXHh&ag>%HttLl(I`_K%FyV5k{0QVNziQLN*lCB8iGLiC`VzMF0NxCY#&{B zFbgSyRsiV)fv8>J1#q&)4hueb zaAvMwxI44iwi97@2V_cKheDQFJil>m7R76&jkj_Fn!-}2e zp%Zhwd}9_f&}fmM?6~ANPk^++9|S)QwNoHEeDTQ~)6(a;XI{d8|JC=hXXBpGMtLpP z;^`SrAN$l_6xrdkNf);=y30fwCiTT1V5fKB`_o9HK*4BZ8VN4&j&rll@kN=2z~eeu zqAzVArHL&AEMZ_66ZkSotun*LP0#1b%id3+ZwpeMehRhLRBNYr=&{f7=;41Pohs64 z2PCA6Fv5ozz6YHudACYUhJNL~=Z95>A$!$B3}w1e&pRe+S$1UqNz|_;N-R+#kDb+Y zl;lO!XA~hU{@Qg{^OD^mqy3x5PVmkLKFf6bR1Zdu1WvwrVlS=WW>Tx3fl>#kpdD7@ zu>p!7?N?+&875uXOGZJj0*K0A8p%@<{`T=7@q(?} zx(fpVJTSAsyC3)}OF@GTg>{_MzkwU~yok45{&MyneTMDBpm^US zpW@i!G=Kg4SMjQ|FXz(-?%~I^gLLPrV|i5(jfTa7GdescVFl{<#AzaBI4KNN%yWom z(nm%R*X0q?1T%#)eEfvKuZ4>)l`udV5g{%{D57gGqx}d%#<^h_O+Q_hN?Vl?stPRXjfkkp(X_y%|e7=%7QpR$=p|VLGWDwB;n#@*=_fy^JJJ z;p21ihd<(+S8d|VA(KyT)%@zo0PPysseU?v2SEqykXLY*?&r6DI?pGs*n(*LVVB2# z4x}zd6hp?ks!h?^_Z4;w&+}U^eidhKTT^;li)ThW?Z(!AKBN_ib)b-DAInQKtdvU> zi+yCQkQgfs$;;XYDCf`Si1yfNHpogqXr#7C$~~ESfQ5Bf+0}8LRbbG(Pf`^d&9A{X^GqtNnS_W!H24#M%78HE-r! zjXD0u!{6rnD~Iso@;<75AFdwfP`%1I{YBn&_I2F-!+j{zSatkSl}uD2#}&Dh;5t2c z8M;V`>W*}U$03BqFl@4gG;YbKb!ZtW8Wb|4ER}Q7xrz`LD?D7hRc!)4OqPaaU<(6X z6;!8AVd*9tHxy};VS2HHb~@lRDGVjZ7lvqh&2V3xHZmW|tC~q8ob^tcBn@Z>CWdXH z8fBQs6YJK5_m}_~AXEk;SEDmm#~c^|;q^u%V+rAy!y)2(GQK}ONJ>t)VZS|5=tp1j zUNWPXkP(7Gz-`x=`SD*fxbR7ufq+I0Jcpak8RL%{$9Yd%ejdFPu?OXmMv^!INfmn?8{ z_92Au5vom~JcJNHjFK=BTpd@#UN0%c zENSSz_M*ZL-hIh+2mv2? zpGtNS^jm)VT~2i7dR4Pl_}ZuBl-RrYIG;cG6Mj}&=Ej}Z@P;i{aCrV0^Io%?d>5T% zWK(kOrrm5G8s{rdKFl)BRmoiT_zT@}K+$V;{5<~Ot*k|tHJ>$1j21MH)$vZwFgOIc zk#Sba0jgYqw7{?pR0kMIM>4a~#S{`@NRmR53z9Ua8u+ubjE^F5*95N22z4nH3<9X@l-fLsv=4BrwEMj-jqVF8l8+6N@jQtRL~W@skAjO8WD`8Q;5kIV`uxj_mN>G zC~m!irdPmiO*1mq4~B`578kECaO}tok4rOLVAv74)0U9Rfv~xEra|YY^Gr8~x%lF% ze(7g^E!N^06zUm}$a^8Ag_KFOuHlL_0)wQmNg5_uL(-QB=rdg`X<$o}q?9DgfRw2j z-*^)P!{`31x4CiSrJS?tMiOQkw8D@ALkJ8hNE$jEb&736y%_SAJqVbnzZ_32#SdOV zukYyxQB|+QWU8Zt9w#Ss^w3sZHnu(V^l*K?bNr_vA`p9pcTH5nBxz_#A(cAqc(jIh zT>c_%9^M^3Y{jZ7)=Gq?8}YWy9R;|=Fu(cOK3lx_3*8{f(m_E^}85QOML z$nGOHky%|}t+P|~OjF{Qs%~4t3)=jw`V{Yc;BR=-1AouP!R^twArYhA;`_@7c&xmP zA>nOjUE7-+h+NUS$KZLr1(p>t*W-nf3QjkH5dvviq_OemU7Gu5vAt!+ca7j1L(I>$ z@RsH$Z*2kVQ@|IJl(}W^@rK%D3_zfBDYac>OCdx}(v{dJb zl49e=E&uAz0zpZfpP2P^}rHY~!c|?LZ^-3JJgvk^mDe1X2qO0!&;?X^=EL z3WJyYoBMFPcfOdJQ@7J@3JgpH0fvxhq6eVsoyK4e`=+sIM?lv)Gk#IGQiraGIVv=b z@x4_LD&4WMm}s}DFO+LtsMnb5EcLJ%8EtzNlYZD3U|nCXOMWKWtYsQ}=7zVh<*r-# z%cFPFj(g29K}-@ZEF2dMi=uDxt}|}ncQ1btMg+mfr&4Pe>l@%3H@};=efLxR@5M(@ zmeoDhZT1k8#XfwcF=d$iuA1D5Ios7QMl-&y7n7KRJSPYY!9BZE7 zrdvP69WQ+!uRr%nKDzIF>~|u@eazxsJxvf7tsImVXk!pV)i8A# zQ_6_!tdR&L3Lz8%53O22>Ysi8UlevC%Sb-U?1Dz4P|C*;&@$~Fn^{IAEEQ{Yo4sT# zql_BpP#V)Td+g#MQY6!W(~h9exC#={IF;x^?^dK*R_SzT`ke?KkCRqZ?nZw-cXBr= z^B03SnM9IXp7&~Aw{R7o{n=goV0J&pTV?9n1+7UUIJ<8PSBz}qH}+i1hM}R}dPIau zZ!KTpsDPYhQp{xd)J?y|D-Jx&XAb%TZ zk3W8}$WdL5jx9nbVnw#Vi;{fQ+gH#X1rrfzP#A0<-oR)shh<34?AyZr#YMW~fZr-Cbd}#ZZF`jV=-O6ny6}+Bo@Fkq3`%yxJJ%A}R$}eFUCRz&wDs)-Xn!vBoS-hRh z>B}{1GfdAO0(7`Y&>E#YW>S67)%=d3-k6jY&qv3lY&3R;4*T6A=q&^w{J&T@ zCZ6dIbZ;g*swS6PbpXcmd29qN!7AxYiwF+D@)ZB&oNK#B8zb9}(wu6vu?&O0q{Y^e zN&e`0ujT_vQE#?Pa2 zBq;f~CremqkG>s4I8K7n$p+Lbq=pRa@ktuX9+kzD&<||v55;4UgoBMH-U^(YUZBrv zGPH4sl5cbBR4c5q{W^o=IWoCPW|rD`jYVj;$n+-|o*bppwpb}Up>tWQMoI>(pDfZc zi_A0>s?`9mgD_3-G{P1Hu7aXiMQn=}ecF%AYJiRnw&03RnXf!&kW?W9!|TwMCHz{A zGsZ`G*7+uH*#8u-{BfDP7X-s2X#yGG*Z^4&7J9DA?;TFCtytrQoBKhUXdNYT!$2Dr zVt6dPhTchn(lUmwz}Q&~>z!Qug?p%Gi>PFt3O z0*`y||4W+f8h)Vg1BFtWS|FHB4}|?|&xbz!bOz0 zwCJhBNux{ZI2L)GRn%{JK`BLpf<_0TdHE!diabQ%ztN+Jyt-G=sT4N+fY z{bUiDoaESwhwnC_UL{{NDUPmZsb#P@*M`~(3BzS*Q$Nb;=R_qyw`!n#WT(MspUGfx zgd;6zHCv(Xe7i|jI^@LwZ6Wc^XmOY@d(yYv)=Z52D44A?mNdEb+C0gmL4A4(>w&M} zHfjW3fFTW1=U&U$dDrj_`ykK1eUYD@a!5}0fvSi1s*`}xe!RspuX!Zk?mofpVn1L( z#|gQVMjK1#Ksn$yFmeK9AIv?^qtN8Qy;=G001BWNkl2#;p8egQRvN;M+wP{ z=gVct%r~r%Oc&dBYC=UV6+MW%{@$^aY43ek+$I2q6uf5Jr9ATZsgTeWZ&zzxTsV_I zyY^+o#ru!v7Wl7wzrnqW4}{}cM1(XK4jnnbt%o%qdvq(eT>J`tZRf7jMeL&Y_}o*6 zc;~&JWW_I^ew?vnDvFlq@JEk+nz3A-H|{>G+qZwLyhzP!fN8R?eU!g@Kb-Op)wc&++9BBvV+8PKfd(jUIBL zRCr(ck(BOi1*FZJCSho>z`-BwB^w;1Kj$HH62n($70`U_`y@P<;*LxB!sQK~bC<)^ zaufPeaB3R%Ex}o1Ffu^J_j&1~9(P~XVn`}9n$lv6+^$h9+XLl-GY>5vq(!+dX=n>q zYPO88;~m$%o-@~nLPyWk=hj-R#Xl8KJ9CzQQv_{hpL{pC^C%SU&NPP9C>iKko~SJQT3-Zl7CaZku)tF$1U zf<&U%>yAf(Vu;reJvFX)yvd5hJi4};v5*UqDS0d;6Oy(tLaq1b4qn3dUiP2RK-+bB z?brX3+e%LoNJ+|v-`sFDw>;4;kiBNj=cYgRy{_5~o ziM8P`$n4_&*S;rghZ7+Hfx__|K7RLixp4DYeEZOS{9yVi-hRRL+&ldwSFJmb^TsD| zJG*C7bkQnw#J!8`B&0!OL`R`uEGG3X-~JQIP?20=xmPOV_rEruorXm@O?i%syG zm?=$SYyfY?!<{d~pa~B0!`Ewvv5^91uAiA&K+vd%_d>nOfUOuEA7nmAQL1~O z0;KPdPP#NI8g>@Lb1Eb6ccsHwa|N7O0x!)Eu1<3CXrBFd+{w1}ELBWcOW7MmLicpW{eY_mF653^yt&JL>-Zkue&PXU8WpbCcouusZS0cOeFd-l z&S&}h%pFlOrN{Q}q5}~jO#;Fs8Q9$Mk`Hk4*hrW(mFCy~@hg1k_;**iazzoh6=FC$ zp79QRzIWaGxo*p55b!Hs`x|ascpzGoD8~IfN8bEV5;9bcd$=;s1*03tTNXR}GGWm# zpxtpu*og>H4i`!dPcheM^R1)%`QFT9>@7V>%dgP&8u#2)Y<-CkCJ8_{H11R#(ODro zp21A@QCV_O%{I1dQk?9g6=bQ;t$?V(hJHvS5vGYyinK8C9Dz6AfJTM>p%lqnAM+I- zKM0_-OfD}N7$2qHF)3Br(5hqMFfm@BZRc64bV9%-@Da5#Ls^r|-~da$O{3$7rX|fL zS=DCa_yA2K&2-ZZ*MLC)^%|L?1%aaJ+L&8%_$opol-C=7^n93EfsV-!uFY^>K1qH0 z82!6nh(CD)ss8n>EF5F;q0f?^`wFJ&P)(l68Ru?=z~Qq$o#i*{~E?z*0x`5_$FW5>`Cc`M1@g;_EQn*&Qz{AlJeO6_H8ZUtoo z#0q+7A`U?`J8y)%!@LqS=i2y-WwKdCe%lzOmY{aB4ndRjuuUR6L215&UpWb5CJYUM z8KO55L6H=-g%CaDcqyaU@2@|!`0jGgI(T7YGXw(9P z2`MK{+cxoW0IxTHANY{Aq0#1{S;5sC^UT$*W8J0i?T(0z<^~wudI6Pv*VBIBeF(D< zj=^bo&G}juHVLU zHI5(PDTyC|8z^)TE&u{g;&?u%bcSyvx3XyVL8}9eCS)_=Lrz2)REJ||LRcgbv;{p< zRuGBI2%^7NvAIpV`@2YERe~jCEyqby8ca22sk(}OOP;ol=#rf2@%T^HDpb8%WFe}e zN;+cV$Nr*S5f(q%zR9Dd{TwY<*)dSysnQ~g?S&qk?fZmcG&+ReC6NYrL|ltjP%XEG z5a7B2i=CB-4*(!pUl_&|F&H7x5;}ep5PW+7m%Hr>8QBU31PGnX~C z#eK#&52x1SVumn#!+~5O^o-qKX{0;ZFrXqMdhSOO!Iu-TE zeZL2V$B9#`-WXR`!W3${#=-eTE?GB<0NR1ZSDLgbyM||R8($I-1W^Kx8Q-y*oagpN zyJ8>gNcz;H&1|*8j)4NDRvlkQLOHQXOQ0jwwW#WkJ=>-1A`F`{{b3hDfTLsm^pG!b zb;&@O5~Mb|OWhDQTT*z)Fei zSPE4fXKBg9Yg93*liJvaG;-8VRMDyen+lLgM=E;~DJ0UB_$O=7tkOSdlk8i^e8t6W zwxQL)$iUEsJ~}$h;$jo+wy}c-7-tEZYgnePudB4z^V2Tab+v8Uk@m?YldNw=I=|DCgJ}_gA_P7rn*{i;I%LQy18spQ?e-qFB`X4i+TZF8$Xr?@7 zTzf%OEk{k`*u+KXo-cJ|iW2v!wNyM+Uf|O8qtxAi-@5ZV?5j_4X8&g1zUOkz>MwLh zx;GU1=`&NTh-OsP$}kzn#JpH1J_y39j;K;cvrw-98yHEYd;4G*phTF!W6gPtUWFd_ z*8{~R>vjU*c>!(T=`L9Im}9*0f-Az8q50v-r|4GND(FGxU6UDl7PG5Iv|nAY+Et#2S@5A)tFmi(nZ5wpQli^!whgSKIJE9R`eVHo zYw?VTXYAP8KNZp{FtYRA9QoOMv82TdgF3UMX={V3k>@tj+{P%TXplxq?yl__X9v1>kwTp#og)06@sWeDv`O%oTb!ydBjTkIKIkJhk#WP*=h^+sNC z$6wMk=q3JGp0q1J8sp_rKi!Z~audCZ9f)l}`yzezL(9v2=hTlV`(++od4zAx+{Xvc zeI;)^^DJxu6Zsr38r{w379Q%c&|?9bSmT`N=K_el*b{-xnIqv0`>vr;(t%0KjQreV z?f2N3O9gbR<_PsZ(;nxdjT=Ej(zeLkIZ9rKEvmq+FMm79NEY|ug)(=|J>1)`m~Rjt zb62P*YB}hDuD*RlK9o{mX#-W)crzu0TcK~$Fz6f$OC5A=5yN&#?ij^u2^Np7K%xa( z`ormjXwtyKf?9yPP{(MN7#%IpOph?P;-H%~a2oXYr^ppYS?t)fmpf1|V;ceE8wO~r zGzTj#y3+!uh2ggtEhe!CCpgkJXf>RO*j6Exh7FsBY5EBsU1*_|6CQt~Ng#Yv^@-VKuE3q>?b;qvz_p z=g9_JGX^i--bXTTf**kzLPSJ2jToAMTn@^|30fXjahRRiS^ny&DL#D4WYAS8VNe$? z62skveSc5#Ih!TW> zPlB>xQdWSa!S%x`$qPbgz2$=|NhEUU{vr(mwCjXbYM=?Uz><<|HbvX^2?B?tnPDg! z>Zkh(p0{%k?=Srd?|$rSAvCWd*xj^x)w&=`SoFr-VvYB>QZ>zP;?LVjw1&lIox0nI z60D%op5b@y{U}GPujH1?t|1`=|NYw6@aR{j*yk*1EYmJ z0Cg|m5AORK4cY2K>|w;Cdw!(GM$~qoSCy*(q)A#>Xiw5P~4mV}WCGCwHBwFfI+65-NU+Z9|j1_olb8bMlP;xDW7Jti>}h*2dQUiO^bc`(q!W zRJxZ87WX+0pHB?45U4P5`wHA3Owg_ivsGlHgY*SL+4$)qI%R_n*eE<+npa#=kQ4~0 zxB(BZ_jqhd8LE7BU5QQtW3 zFGqdgE~~9uK*y~35HA1PweRC4ySDTFLkGFx2Oq{aRM*EFLLK}6y!~eW+m+8JB?V8+ zPw|4={**c03g1uB>(j>zifHU>l04tI;T@baKH1&$@zNq!efdMo$oi_+ud1p=xNoVz zT)X^bWq5!4@_5UnDy zRWPKDm~-jORmi0r3gbgmn+El2DA}4ANs$>S(kcgZN@XYr7|n-7KEps*1_^26FZ%ei z3z!Ly!Qnv~zD1+nfleFCZ!hVY#6sJsFjy7k`6&TKnRQBkrc)30Mm;OtyVMSEm{_D>~s0h z<%0|rGble`@xh-^lqay#4sJt-el{*7cV2|`tSjjpJkFlmnjA``5#u?OZimJ#zJ^8v zY8|!>WVz?ML57kEPy+3GG#gDa8~YJS1#S(0WdVZ#A>nVnm*U56p0em*rjxw(vR~n4 z7rz8MQUY9ywOEUPw^*A)|L4N-TYUC`_YkyZF*N+pGx(O7p{b%VD=%_G>-hAa3dk#q zs%29{6W~(toBZyu;H_sCDUKGRN?S5c zLd$OuTZwjA@d6TBkj7+1xlyGYL~d<`a>Bk#NL643C#i9@{W$Dif?#x&ZL;W$zZ^G9OsyX|p4aqSzqWK(Eqxmt?; zXD5&G);mAR{jHg3oe`1sqCWT8))*hY@^xIZ{R{$N#qn8cci5cIkciA_G;pL+=ly%X z&sUCo3oT-%eU!)z8R^`M-lE2^An*`KY^_NM1GnMhoNOSyCc|SHbfUoGLJL)`U?u_* z>j&_C8)voxvH_b0du)C?i7*UwJAkPs(y1^yn#HxVl5Z40EO@jMfI z)1_oLZRdv%&vD}unr12k0~Y8=a7Nl8|HBYmYd87E#UrGJfes92OC=`Gp9IlDE!Ppv z3g|Y%R($a5S)L@t?(;9?P1n4Rk-m}t2cO!tSc_+5tR?h+Nt7BV`5*VZivjJ?a22;J z$^B-w2Z1{QXcHWP)w1#3Hd4FXV0E}onR6B?m37iBkd%ayNYGGE}PZ~Pfgc9!Wntpz%S zoQa`o#eI`zn`neN6mq_F#eS<}6HA&l3(5PV1qBvf}m07A4AKhvoTU7>!)1>?I%+@5X z>xWYU?GAaP!^p%SRgq_@=Ae~^b_@I_sgVpSTfkXphl*>15>k=Vo)f?+m&}G7%~K6T zF^wL!!$sNg6;g)HPj49DjKLgecx+`yj%(WnjpcSh86k_Us z^VfIOx%Q?vvTOS}Yc{8Au@?Wav6j&PrSZhveSGStA7)Tm%rzU_Y86-#iAY&XgOXw8 z-S*if6o1m!;RPE7W~zwx9cK4FL?KZpl`;sFqFO3rCsT;rB>88*0PoZk*L|VPPw0nD z39zFXbBLJXv5K0@C|TZf&da#rS(kC=)G_+33{Go?*WCNJVf8LVl)R&nHdFN2-hMz) z4)E}+Z((CD$(Me1Kd-&_Q+O7=iaV~lh2W~<1$^h_Z^0Jb9{~`k0M8G5_zBxW%2f~R zD4G8}&nZ@>4Y_M!C2dF%f&&_EpE}8h_TI{)D^H+w=ydkJ9k1kl*SwGbc*)m4!R-t8 zMR0x8f7dYyFyak#N6H04sgQ19S|Pl?P$eZ=46Yxb+Oa}rcxwf_&!#XwLc8qJSgJtI zhv7V=QXnLzVUU&vtyqn~Eq=5X9hjaIy*cP1E#zn_y`P3cy$fdVOTg zK~FkpzY9$ZYg>-wKnJ#!A@3TpVxt9%9Zs0Y@Z-y77|Xak@{32<{H*sNrk;#UNs>w> zEZ_b`oL{`3hYz(l^U}+amWHs;yKX$f2m2L6{7WKm<%WY^)&tMs!}cm~J7$C<^)j0- z{pe9VhQa%<&`KFS{t!b9@n|Eq-uvG7zMIrIY>5AFOcplLi$d;NzMly`ri zXwL@5G%4{74gI8xPD)&|?KpN#%+Xj~P{kKB1PZ@uZS zd8B*5F#e?lvEo%HKAn@MW{9=s_iz3h)v%sM%?{dcHac=xPnNTkrfj(+ZAG}ZL(*Jj zWF|{)VuF>rLw{urNA}2V8%O2JwB~DsaTn%tFj_W+Oj=;uSfQkUxQnV*85y-Gjg7I^ z5(JGlwCd#ZFu8e*PLyG_5umzV>|TTE$sC!=7>7HOPCtTP4>}D>IYD`5ly*{Jxe=j) z7~(#5ze#?sh%+)xd$CL0t-`bml_I!VsI8&ze*_$5oam&7a22|pz?jFnXTR$J5!JPb zyH*2UI4!V*q+fX&`LRvwpJ^c^h1ru)-WHn6_cObF6GB*sB;wqu4EG$a@{p4;2PRvB zXBm>5A&i=1h#`h}OrVCcwSNbmyZbkIxVo3UEB7#? zEzaw-xWOx+i3&uy0S$o~EL_(pY)Nky}*4WD!|a9T60^1r?1#g6% zrOjNpX*XA$au%DizZ_^&4`bf+qp$O&ecwQ-zR{7#01;d45iUIDco4AW2dsrH)>Gtw z_28MK8$%7AWnqVc&fy;M;xdJ42Y2fX?WUx$=p)*7DzkZToZQ@?d1gVUb!S)bB z;7W;=SolXeM5}eOC6|$H6I8o`#!3&mT`VV}vZV}mf%!&^>a>u3pRtNVVQ!j*o+Mc5 zo2g0A$I@-4wvW+|Gb}H5(8((FVsJBzjR?HyS*mL>;rt<(%E08r1_9Bs;F#lJY7X2Y z)O-kgDBrldIT?=#ZB{0(3nOLl>-_WK4u5`k$eT|eVfCIrp%%QH%C7SfmeJ0K?HbMM zes-U}GnFC=kXbxC;V*UKeP2s{B&`FFET;L)qC7Lp%;J zOk4YR!VlZL{on^mlmGxA07*naR9kPQ*IpqT!M%y#im?o@tR&=Y%NVR!V#D0Ua@q5< zhdK75*J2&>{M7iwKqV2~yFSg4AAOR|r=LKr+2!KfELOshZXA(B+U({Ni7XVbvmPIN z_FH)IsmId`dUS=uH}>Dhm+$&Mmv23ptIocNL~DNcx{veu)w|67M@ee?HXw_oMLtQG za_0Eb^WMg}Gvla4as9ow@rQR@&+YyKfzXCvCoN9T9?MNHeu_|Jv(JdYeCFge)v^Bx9@t?z>O}osFhK| zA3gEqyy~o{VF~#BefMzn4cDRuF|z}So)G3f6T^!a(nhR>sD(B;e5SUHP!F>-8Zorj zu=1MHrcwG$Nw3;~LIM+c$hu&=K%Ga{dlC`?sw9GiNz zZ*tS;%HViuY_3dYjxMwkh=3%-O+rRpXofyL$`mH^SOtrg>Y<~^ygp$BaZIrTf4x2C z1t*OW`4P2tmdGmOh=`osrdY7e#6*~hkPw!+jkwSKhpIfSQ((0?YV`Jg$d;ulbKM>z zGLLR{x%#3P^4u4^;=kbAIK&V`9EITy{Xc^F#$n!e-CN0qF;m?x@4om1JU2AE#UM0n z;8qVUU4(+_Vgr5R+nL;T_P@HVxLf1!m#${(Nd;d0wHklh8!?mKd=`Q-iSBg> zdjUFfIc?MFjAln^BrSH&j`OB-pF=5I3{!j4uK620JNr*S(Y#L-3^NKAO@X_bI z63>#f;)G{>@ejD8ao+}W-x|bzCdfo%J07x?5FBZv`)x{dC9-aY)oNl!;PlANf0GqOq&w{WJwv8if+)&Uv+(dO6RK_!SrBSMlfXELa=uz@wrl!ZK_a)VC1VIlg z_L-W80Lk2!_~{XdGE_TR)uzx@Y{M{wSFnJaf|tgvN9mgCcA*SOF& zZ04lLnm>!Z^JP&-Y|q8 zc)+JzfU!8k9asGk%_!iaFTI!5WNp1OL?vvdz%^&Qh~GN<0um*W68`j#TX@?opEOg3 zI3?{lsl_W$N*p>10eWSPOew)0FBAGU!CDv5Ymk}BlO3thUg;5aS}^ItnArupmW`(& z(H6a0h+eGX=3=HM$7uF!TCD)09(L4bZ1XstRba855Oul``ivG}Vse7To~G3f%=7TO zIB}QpEfWO7qrT8WTV0qaKoTMMMKJB5@(IjG*vD3g4>V!AV90NJ@Y)He#n4Q6y3^xt zFDf!UR)nz$a1<(x5q1ULTH(959OA0`5|+I@_G}(Sh>BAaqiPjad(2Gc`N>7o98<8s z$)dHr9@K)=h)r{l%RzN7bnC`EXL>iCLq4zj@{QCoBZL})Bq7lWSDpP#UUuiSHlk@Ef;usQL+PDnil2EKk#&Xp~Chx_z^ARXL71W*6Uj_4~Ph z{{de8!#~C?R;Wi!{G`J!XPOV3^J13$72bT?7YL;K7mr?;LOifuO*`n3{3b4%I-Td8 za3*I=&akbJ#T7>p+0tu&=b>M4y^^No+v(IJkoIc{W*%eI}yb51&k$wG0x@&D$*N4WYsAEluh>280(*cYZl zUjq)VV#_||*)kzn+Vuq1R*_{vVQPe4+a_9TLM}2zGn)n5#uXMhX_M3y?d2+Nr$Kr1 zB%zg|-APb>57BQiGU8IHjIr!%x_$`VHntTrvt@!PuvumKvH1XdL%(B-Df#wkrrg6N~BdiZ;X$j~~Rt z9r}L)N+tZ==YEepd%w;9^MnjpM&8FVi}gi)IKmBUzgg~t3u+N`#^{NCL) z{&GPOb|aWALNR9wBdjNqiFC|t#fmuY!+|vfqde!FOZm{#ui&yjyN3DEE(PuI+MO43 z)srse&gCjwDkFUHj_dg2z2DvFf+6*RPqpqzD*e*hNRza{k{L?w7$+9C@QPEP#xps7FsFr|pbi<9xi?!PQ!3M~$HdJxmhxe$ z1la;=zK+&`F=Hv^5Yoc3Ej(#KY|&fjpc@UQOEylq!b&TqA1i3BVS5SFvy()L$4VnY zx7Hx?8JR1SDUML9_K3O-=!THZlFMnvrbb!w1>Mz_*@w>-j5oSv87{#fiZ)5$a0B`d z&L~6+eb_y2Ruod0)y+a1k{qAg+2_S)9mn#$Kc^h*!7E#6rHF$NAry!L_EVmZ=p}sh z$47YSUV)#@K?zKJF2*D8w7ol`+78=MT?W)FAT!=27U_Xsqrs3=CdF6{=q z`uZ&OoQqZVc->Q9!ZXi!7M8RaVu&FgR~UBa|5^09O>VyKPdIZXq8oc;rB6Ov#qv7T z=OeONi%dqMrH2p}h=>@?=kH(Ro%i>c@5Eqhn5sa*gr=;U!8k7TK!g@j3p`g4XClIG z8}`<*b2B{UiDz=(t#|VLC!f!6p7RVU8yqXi#0M{%+%}z z?Z9TO6GPBO#vMwdS;EpNK`kWdg%ETpWEJ_Dahfeff29UR4J8W}6`7*TNGZc|O_>C> zxf~Spm_uCpIwz?K4yohc!!<-Ui>3R-^$<>-PKkvYf(Rb2k-=u)vkPRf=^eV0sWDC5 zTPE=Ps7PaHvdBysKgclpLL(3LXeR2p@gHTNHfAQW#K@9?1=6A0&5gkNxO6{`C2;Am>PaxOkWk{^Zldx=SbS zQPaVO-71*MDrK5JhGC1ZS6IDa)*=K_JIrM_ap^JVa^;TGIelu3f+a|l;*r&5ZaVY; zcP#B^#c$J%`edCfJ4U8?(e86Nes(hwfgU)Bu;z-`zC*B7122Tx5yM`$T!dwj zl@h0`X&tCxs~$7sS)xpll@=s^06~+nvd!qk7|VT0tKoy+#j^TLPK**+d1^~dbWn#$ z58VouOTW%u)HcnvA3S}$~ zyl9l#BW<>CPYC2DdW9zwTI2ZDJtT*JK(_Y~K?LsH8EoFUiKy4(wKpvA>3GEK#8uyP z{gyNxyCo4)@i*gLUOH1^b*anPQ=f-5{W5+@0~j(i_p}v4TT|+Hc>R>m z@9cKTx(=`ZL66S|Wthq#vKqbCfJM#R*5moiRqx=zU;KiFPMfzp|GE6tkAKSF{`flH ze)$zV{e)Aw_NUkLiHE;Qh$b0CnCb!hoDG)wU~fO@BnMr06b~%k$l4>EHgzg5JMnz3 zIBq8u*Fp|DZVeiZKo|+NFzf$j9COpc0>4-}#7_?1!^7Qqmi!fjB~dCys{}m=mRV0< zGsZZwqtQp&=ynGtUA$b8xR#LkJxF}4*)qz_p%nXf(*?1#{CSdLqw4Ge&os5c%ZB^Asy(>MMQ1Mjgg%$T^6EOe<=){so;o{~Sh+W$UpspcUERZ%#EU$2mt$Ftu1x}eYzU@et##*1tei(4GF2j@uP7I4xXxN;7@4FO6**AtL9dHb(%56;^y__et7Q_=CW}VHJvbz# zhY)%JJltV&DvxD3EO!Me46%a-TSqfEqmvwHgao}9+BI_7g!1$x&B(=Ht%DoFT*(mI zS{=A)k134DPs5r-98*B=YZ_8x#ZCDN1Fzh{^GmJr(9jOya2K}a;ZV=KpG9lq^^Ov# zHee~?4ad2B>>1M>tRBnuXTJ;aFZS13EAIT%m7ILyD7ItXAFUGh%~!c#pJLI@n%AS4 z1IIBgbGC!*_ITRE``OZW_@npz6~)T*WAW7(Vu&Fg9SjTlqlGVj_G8$|9sF%OHj#WY{c;kh?!T)~lbNJz*Wj^rLPqHa*bM@JmuxrasF8S2&vQS?@_hNKp ziYC%ECMQ`7tC+*~T(l#IJ%vi*)GQ{=RFBi0>_Aq91WO>5z!Mp4D^JeO5+xzN?hz8A zbi9$>t`Z=X(XG4KrCsCT_Jn|rf`uklze9euKui|D9zxd#Cn7&xK}C|@d;_vE%;k*_ zfSpbj&>Qx*iGoH4=0mn@Epm9Vi?%Yjs?SMtISvIb)vksp!buuznHeLn^DNFcNRo~T zX&Ei19e3*5*7J?VyV`@;K}>k)LtWTaO38(!lZN!Nw9RwwTM!9o`{ub!OIVB$TgH&C zCQ{C?Fmd@<$0v^#)(R zZ;^XvM^PiLVYerPfQ!ULXSyzg0ki`ufzO*}1#dVbOL@8kB^SbZ^q%|imle+D6L3%3 z$*x??bsF9@pW~;2h2`eyOj+phh$vB5k>rKvoX4Mh?|XdtmalTbwllcqMK7fhgnaRq z+i9)_*x7NYNVG`Mgjgyf2^G5Qqvjg~kpktI;#ka>5pzC^cEEF8lB&AsKJ7>uK0q9spDJP9CteEZhp-$%HUnh|u5IF8;{*a=r46+Pnb9oX^dz08BB`x` z3UH?KScOTti*4w2Vb+7u(e*6%b;6$zW=$Ydla@$<6a-SCBNJFt&O0ntTU3KQ*cKTp zW@dARrKY62dc?5Ar$$UyJK!3~R5n*ELKwnIA3Pfo#AwGhhYFoeG?W00qJfTrW`gh| zrgfh=Vm9RkaU%JS7DQ_y_DBwqvxwuKQAXGn%oXU*w|VK0m-+GYwzIi(kowKn(4vg( zSmfP4#hf&cfz%aO%hcP)<)U4)eB_>aekZ?`L<=%4pW~Zt#{5163K7H<5)W&bPd>yD z|Lrl{p+8D^*EO%=p4KAmEZj9(rk>A2oThDQ4S@nBvHL#HbtB$=yk_^-F{A^*S_8H6 z5RT}gZADP4A%(!%v=iryr@-neU;S~!uipoHst6T9tRlepwSVk_xAL^PO&}n#vwZEY zpHmhIr%i9daUAx{@8?6`{w#afj({>!Gf~K3XDnpS!*L~Ag+x(=8^=W5K1nYoRuU2$ z92e<0=yC>~F_E5D)*_MG)KV3pW3`ccuF`z=!H&FMhg%Mq!@}v?A(KZafv$$IRKv}H zHC06PEc{La-8N21ksGhzw**nGZY*1;%jQrdILf?69o7A(3VH<`sUbs$%7~!0szKOn zsz~a!I$gUA0!9m(Zm&n6Y^*sCoynkNYQLI#;IEI+r8FJ%-Ue*V)~sP#9f4r@bV+Xnaz|>+)2`pdDC@WK2dj! z#=7Ey3PB~fR*5q=olRak*xe3qKlgb=w#(=4yNyShOI&^8QwaM@T>XPTHu~fshJFNo zWE|=e35i5V4=bO+%DdobgeP!`u=)|IAL095bC*h>g=4z$Y!>Och@wO~4$6f@CL0m1 z3iJGXO(Ui9a?nX&v4d#V7@I8+x&>Ob2>N}b=#ZToBT+8FLKE#oFp-5~c0IQpQkfrY z9GC_yKPk+}{oz%zZXU~t==kPPvbCg`uXah?BE$*PqbAC zlxQbRv3;mTey)VS)IyKsU@mn{8>|zm5j107knQj{mrRkLDZyA7wYW&Uw1OBJ#hIHS zSz6`e-&x?T)f`bFk3H@h*TB9Hz7Gu_BF&4BDe&nFXK{rMTB2U9G#%!oy-S6a~rqz1C(o%sF;lF@|#b-f?vPj*KnO*4$K*1h#~%4A|9r#JxVzL z>A%KptNZ!Zy|+^G9CkDt+&?~vb|l%v=atzuZ$H*$W-^bkEK`%Bn59EiW==YX{1dN6 zdsEoGF5Tq^>FvE9?f;zGp(8}uIVQH|`M^^>9{PsQ_g8Gl*x&&g!lc8Ehi^b8lD~WU zTj*)Uo4@%9UVieqeDA?q`K(kNJ2q!@?v?|dMr0y%DNds|&Fxt2fOx4v-0{|nXWy}n zrrXXyp@8E_5=SFMf(m1jUJvazuo^LuGDQd5F-R=^i)GO(;JezK|!}tmVO*UXk+IE{UA;? z*)bhkkR)PV6mMyTjx=}hq~* z6v%qe-~S-u#(R;njlx17RER^f*cZNt-?;=9u78AU8#b|RL*9d+1x*RLGIX1Kp)NT2 z?kev%eHIb{QG}M7xaH#%C4|cm)Xk(n=Ys0;kN@-|?rd8`HuR%_OHX?euf6zHOjl;j z%Q*ZuV2B}pC14M&8y_7A%i{IF_P^NEdI zj%tY_D~s%&IhHTo@+~sGE*Eb*lMyG&Yi{^6IFx3Jce-%rk|`c1j+qWm2!xi1&;`AQ zOxoCvB#IO|1l^WI!UidcgakJ&_?~S@S7m{AH5n9AfD^|=eve+efnL)jfu<`YL33|By;Wo2a$L#mr={H3$HysIPhfWFgAf=iwV)+o5MzrH z*jY*31w;&%CX5Dt_8L%x80NjOMJk~a8y&fwcI$%zkAPkXjz>6P|K}a^JC0@c>y17{ znwLz*REl}_+;R_N**e)=4jK1|;{;&~gnxwa`(Gz}%DKGn!dVu+SLL%^3v3VC0o->G zwp3vI3?zd0)iRvCQ0KDg3M86-&nI*QWw!@JkoC~jWrUpp$L3HIlDN-ErNUdD_uD+> zgbR_wobn-t_?5$O)cz zOwNoEP&PKGDTEMMZkGH>FJ|T8UoczR3o1edefBgoS`Wfk(*15?I@B&*{_j1v^4jw* zjbcEcR2brO} z*n^}ETU{vUHdydluanp}Eauqg&>`KUvoS93#pZFlpp^tmW4VGjNcGt&Mr1AgFag&? z=hJ<^icN7&(%V#NL09SMy{EtyD3wOUX3QanATkdsj3HK>I^of3#<)&Gd2ED^pHQs} zg0M%)ZIjJsN!m@CckE+k*H-@MyaEsYpw8{RQJC8bm2{Nu8lquf30{66s z{Rpd^hw^!lzYwf(nClSE-+-L|d)8KJyx{z2@q*`E#dv8P!SE12#1OxV81B#?1KfS^ zKHl`#*HDZFmv1R?^>gNswMA2S%SCjq4D*K&eFa#wymQIz{&k#e>8K*5N!knew|$Vp z$O^U9kdObY%17oMIzqzcQOMaF9c4OtmeOOkw3XT1IQwc3vlgyxbf3~@J?1pk!P5v} zxdC>9m?>emAzE#Nr_Am0|>RN&?2qupB_A2V=l^DJ|q_=Y4cnsZ?6T)A9R2MwcY4>%Y^8SQZ-K+hk^J z`tv==<*MUi!BQYxs*JVr8;?`61RDzhMy^D#bz7rvidX2P3^&7N0KIQS*VUWrYL;PxE zNQ!%`@Xeoni;w@~Czy5;etUYJC+x_9$U z;x5)m4&k`ORo}?3raUuF7Sd?Y`=Pm=P?_#G#B{O30n0+>Jyg~uo3Tkmf=fiy4^aJ( zI7ra3Hovcu)cUqy4il?QaDk~@YT0US*wX5hWTsL(SYZ;}NZ9C_2Zet|dcihK89b$+f{yShuihHc^tS3H`+WbMj^Zn1T zk_m|FfTM9_0hSj{#}o;A(49trvV`+Zho3#N*u7}|Ck ztindeYHh@#ZscnZ{Mqf)EJi~&Mz8qjW*0HyA|^&iYJF(0!Kee1<&E?=gt?sY($0M8 zx&Qzm07*naRQpM9Pb;JO4njy0l;4J?rnhW5=um?2GDtgv%sV7G8{tSa5hM;Qw;}Eu z1D9gzY6j_;n~mo&2!4T-y$(33IgUuXb)`%PD=<6uB!)m^mu!-*Z&>`6g(gBNk>;v{ za1=U93{xF8_UG}yuGIo$$}zB@AD9D-E1<0*pHB}Kn1fQHjJ}>WUs|+ydng&>L7IDS zrF`7kzx3H~ij#CRyV*W<$Q&Ak11jc{z8`?Hn zhz%l}tJ9d#bcdhB=D*89@lNUEgQ70w#suPMx4Cr--Ec#$7RC@MMAjk+ZFBuN0AYg~ zc)gQa&RUQktRV&+zxjb}gSKHUfqr_>a2y;Vh!O$W0@Cr&ae&s5d2ccvjCxep5?+6E zhktnbIKh1%W##Z$c$?1wAn7h+uieg;@?oUqpp`@`WrBN>gx@(~ggy5y^XbZrdCZoL z&@i{M#;&yvg-|0cn_PZ$I8q;Ci2vajj@lnX*pAC9UiTq0QdMTGs=BK%|2b6W0hX%` z3Z()<3$P&37B?K~a?OKXepXfJL_@_fnr_=lyV60S8`zCn8$~Ed%pDK*z=QF1CxYb; z+V7e@wdcftOd7PerLRy4lLlj%T zZCgOjH3t(-TA@GFi7*3=xKc-r;4wRYA;?GwqJfkxA&%ms z9=}3%LK3Y_$DgF;G-(b!!ZC%s-DfQ9aq*bTDcP9WIh&jZpQtNtZ1hk)g`D)zwnQa8 zb3hm`L9fR3M>x#D4<}cj%7?sEFoI-b2#dOJzi&W6j=% z;=_l0zAzut?}dgzUCNt1Ihe7pm3HNkWi-)Ik`_q^G6Lagq$5aFY`WeMSnZj(&Vq|9 zWl@b7x*f;~vx|4qM6N-Mr%HFpgM-7MJ05h#kXoXq1vG7J%_v@{Z2lC&$j8tkjq>EE z4mrI}qRoA)#2f}J=P0R|N~L3|ENx&cGnhg^T8xi6fUI_*8dI8cX)Q)zIk-8Hx=+9F zfbC#;8dRU8qhQBq`q;$A{j5aL33=&A#0Sr=Ft@dYD3t*l;x1v`=f($Wyya&t?s6-L zi5xl;LlhX&U%vxKx>!>3H|Njrl5GX_fQc^!!b+zVjt$e}MnYI!fPMmn5vX^#`++rH zbx)m)wve{Ok3%w2@Z6nG;$@fo7LzkuHwctN3^Bz2L=3&$9}m!4A;LD5@hshbpTFGS z=R-@d8fC!h!NiDh0vjxs2fNy?hE|9ZhHSAF$65(CiiLi{!PuseEy75KV$P!7j$pBF z658g<5WA>_CO8qyRve1Emz(GP-FrX0`IMZqb7pooGqd|YGqWc?kp&(DAB|B=Ejz^-$MOA4iHu80 z9#fW=Ota?UilsPmGR-*j@RfF1A|ARs2!n0bS056Lp9Nyb=_G8Ks(7d!kX_%k32WMu z!kodZt_vBo$JB)e3s`z7rFD}gHU@x-$%J1(@h^uo2f)DRJ3jCjp#9TWK5=vc32g#( z$HL5RB|h267b%Qy2cFAMV`?E;wzxbBiS~?a8$7DrBySh4iKidy6wO;*Q%oLbdWlABU$R6EFcRPQ zZCi*`xMO#rnHiBkiUVVU0lV&b*vEY`Jb4^GRX{dDPH68(f1by7C`VU1>j_J?ZTHad ziUE>%J8|3@hYL3aY(_|9lDX-paf;tL+Mw+WavUT~c^j!QPMY<~yH@y{&c5JJEgYs8 z185H2mV3rY)R@$e@<+cD=dZh^I*^5q|1EHIDFuN#2gtzFvWSbo+^CL+YAj}eX2287 z_!j3etc{K~XOaK<{k}3^Zg#5Dq55~>%Bbo32JYoLGYhRtD801igNjA}09BFTaBWyq~>)g?II{fzCFzAj|XdG;7 zP1y{;yfXrUe69%uFuMT*fPkL%cEq%4#T8TACw*u~oOsMIawpgSsa5eeQD-h!d2&iz=P2HXW@ z9MzPFTp5%mbvl;cC&vb8Qn#gzf(iWEB;5a$gTV0@Vdbe>!Gcc-L?z6>-5iz`^>T=BX?gxHq>UC_;ax1%9tkDSSUapl~LaP!R+t) z?k9_R;CGEu0*{0LRG7_-UeA}rxKdYgoz+aW-<-|3EQv$l@{=r+8m+GYV1IyBOObxd z=Y~GlQYb7=Hsi76QbeY?Q3mH}u%WQthVG(6`LOzPg?CT2>$Ol(a=M~r+=HH+t4jSs z2uY-L!?3%q%mU>Xc5N(8+qR#I4M5Bta+Vuu_rJ2Jh{(t;&I%rdIAPP|X(g;};zj9Lx9uHl@ra|L=XjDp6Mxp+^6eii=ZOM*45t%E>29lU!h zikIvxp|&2%d&3>JGQpJpESUciXEY)osu8ih{vQfwWcoiNX=@L_lG3gnaK5Kyk)HQF z=h|D3>$fQ8-A4C%RGNBTk6oz^PcX~4+!n95<@YSyK?*WXeu`k5) z?NTE5K5dh7iGJK;dgyHU zRo?OTZ5t%BXEYQYGzl!O*Qmk4jF({Xon|eQiX111Nj_K0+KP^W=C69q&SHW>UT@^B zqHcF68|#xO=l8UU@+2IA$QVJq9@2qZ02i2sUGVLs=ifKPU>QEd|3(n=1OE57$bY;+ z&Gv>jA&K|j{b%uV3f;u=c-e3>CQ;?4w07paJ@(4HN8vEJ+gPBB5XS1|AQ^484aa(<>vZkt%31Y9Ob&9KMrIGz zsfzeP3Z%tRrp=Ap)%=KSe_Q3io8eor>R~3(>WH(uSa6}|>db3i+bZFrwW zgA8Gh3jyBU2$KE8;diZH>B|8(H6((KiP?^cU#7kF{Y}I3h(9%C!%8Cui_#(GA7QeC zt_ceY_49NtcP*88G2AcGNnZZy5wrlwl>iS2N>{V)5fMdn10wmmy%>E)b;n3^=2+m{aZJ4UL&brA+A^*ikZ%6 zLb4kmg`9Ip@T@Nirc4!aGGWuDm%^lfjwIStqc&ugb#1O(55H)&B+()ozYF|4O-q+x z$>(hwzQl4_Mo}&c<|LFiyT{;6j%_Gy>YLO$^zfKUd%ku2&g82yb0{iP4T)CPO?P3SL<UK5$vLu>|I2 zE2LaT7AM~Usm;%1&QOf5FSrOl|dyIS+9E~n8-gO4t?HP z+o2oWQENyf1a`;fkKme+tdw{)IPub}rBu$DI-|LT(92K-WA}$mcp-BFK{nNngOUO?A4kEoJyj?;#H32cVdiF^ zsSCHQ^cwn8XMS1BxDo${FsKux>;kQ_NWbp{_FPSYAL{}W_3()Nb}j=4)4Tkrk--4_ zO*p-BtV9yAN0>uP5C~QcBC0LSP-F=a%8JVNny1mTj)*f6raG146cl6> zzaT~zBhGNEaZxA+v@hX-Ldjr{e~TED#4qTkm~2*%MmJM~7*c3eYM?n>s)O**JAq{} zLBL~7JFZC9G!@cOc#6w>6tDX+8mU8liAtzsSfsj5?y)-3AJ=`vnNJHJZQTMGjkk=K zg8zh$z!RI7=iPdGc9}GKji``%C=Ky_1g3zDYWrO|UGAq#N0+;M zSAM|sYu@(f+@!m4b~j5~BM=9|dsrl%@7u-z%G))!I*uS;l-)f7g#ZI3RJm3t9TrMt z;d(@2*hYQC`lR6FW_Kc=4m5R*#-6O#$>Q=YnbSX6#un%NY(KxT9&9y|eG{#AWi{uG$`Es{7z@ zdA{ignBYrr{r9<6JTRm4e0X`D*DvY?J8*0l6msVu0WJ1}hRgKjp2uW*0)l(eTv3ZD zQl(iGE$))ru$(OQ_y={Ej%J9*L zB$nO;avOup}Sxd&ZKFAQkzr0s7 zJ@%2!bl$tQrVssk0iL>K6l@vxVl&)g2z{Dk?jT2TlPwnR?vDNKmbfvLd5f}q&-d2W zHTqP~)uKYB69mYZ>|91RRbarWHMikGJ?gE$09CBd^C(NV0J!@+N z6j%fuQFo{%EDK#mw%@ z+qW^8Jwp_UCs9NDGr+ic=MN~?|2}FE`2|`@0X?}|?~^#LAj6zNyn!{U^|^}DY zE9d*|cuPFe`SzSbu6w518dIuWXf!3pilWExAfVsi6~(Ywer%Tp#egdnd$vLn%<*vc zum}NU*HWl+Af@9PXvCbsJY&Ig+}3`xcow~F@TaoHO$}9{+wREmw9T(Lho=ftE%fD~ z;r7F(DO`FAl+>g~&OTrnuq`qNPo7Y2{-p`A!;QCOZAt~U?_lz@+U2e=Bc@jg&AfKe zsXV3(0g*nMotuf+ZR`D~kM{^h1R!7kU{?7Yo9ePUS5EBUJ3Nih#5c*N-*@d#&&ya5 zSI5D8hVNlJNk$OF20Xi|vik6|PyNYP~ChGrd&yIKlXqB2b{Zjn5K^>?@u3g^l2 zJK`##JuHfjAEeZqv8@rMP7!4^eSQqF62!3mdga#%jh=zLujeoK9g%HLyG91qZ5+-= zyv!cow*|64oVBKsL6Vk}!MXQ<{%**_d=yGDwub;$oYD8t$$lnIktuYkgs^;~FnO({ zP*>8xIcOiiqP`v&moA1>uWfh2LSp&PDKNbG9uYniQ#ey8@y00kGx)?Ulg0tz^+>X{ z$3IEqF^uu1d;qIp3n%FX?ngIZ=j-%80i=VSL?^S&*tSM=eXR@L>BqFLRu7;p+j#|# z&|s#e?%T~Z5aSr2X&LZR|OIoMg#5DzN!JB8|L!RYLi31 zpO*oifUV0VdaUz`cgE`Lg{LfGQ6RV~XzgRsig=^(B6*8lphP!paX{;*n!i*NxC-_s zY!4JIDm9{umME6wDEVV>qPYlG*a^%u`!TrtE3Qd9*%VyCm?{M8y-z5Y<|cmNz+O9WM zDQ#p6-VDmI`>R_H-KS{$!%_V4(OH4wHj5$)+{3H?MiS(Uj6c{3oO zH})wxJwkfz>cj(M;jYM!R@D(xUQct9nJ~b~DbpxWDZiu6k6`m%mXWw1@-CJfwp^>C z>vU$N9pc5c-%QowQ&PS-F*NyVrHYItq9<%fJ`993{Ki|;Z>}F~SW#i{VJ%*C&T}1i zKRzO?;cnWDGUKN>@+{J%A`WI>b*`Vh2oT4^5Ln_H;%OLEG2E?6%e%V{>LsR`R4!Ra z^LeN5?16RGj7X-C&D)g55G_S1`_t7zU$<5_|MqJi>)AJ@`qEu=$ z`z#_TT|0z1Xd0hgI7S6;Rk?nx{-@f0$+eB4P?rP_gJw(DQ)QnI^migwgYNtSzX5@! zLXyY#ecoxl-H6@k&jDFStynRnonz~8L7h9<6WcS@ME7oyvF4d-t!7~% zM|%@N_4O&#F$BaNQFe}gDB=C1BEA}a1CVp51}o{FH-vg*yWIgZkA2g{*r5+B9TJ?7 zjCs6Hw>QpGcvp{Wlo=9#D)=g8T+WuPGT~+Hq9)(8Ayd>)4*_QrjXsbK zABzP>kL0&2JcIUlr$wd=^aL<;?4FLTgeNzB|3!dU{@Q-A>X^uU$q2+^R_HI+e{3Q~MlQa-Ef$xvpz$OLdM=cK@5{f` zTMSt~ZfrQ`S%v;S7Z<@mqFDKL!3pGlV4t#%R^28KGvPr*P(KLbs%}E7HI5Fsxhkc; z^BW&xXjSM*iEZ1wc49q*3NEl(c(Ge)d1c*gM=RB~i)xY7`=K|cpgrNTQ^JK}iUlx% z`=ydZWZxZI(?6IjiGS$jQw?A zoccbMdJZ7<$U$4Y9V=_KzArUQe*`nX%5RhYAoA72Em>yhd`w= zznCGD2NE#8omm_%0abLo#hh2(6_bue70(}UL<&_R2__I5*Yz$i-S!hHJeLpr<`>Kn zMAFo%=M~7&S&N~X7`tJL-VQVJg)a)KI^8;gU$+8hZf?*8YCmzU4Ni zGp24RDo7xM-Ct42_3O76<8UTi$d$kh=62(bZUhR|Zvh7Y8uXAN&o&ekPP?pxm_{rP zV8|HrV$y*N1`^sTfaSKH=Hd;m7p3E%e!t5W<1^aD6)z^RFUclN#qh0Pu~JsQTE)&- z)?$&8ma+K}r)Z|NrNHjP2j{@o{VKc`c|p4mOLw@Yfe-k(NOHMqxO-)$coE~LV)8&$ zHMgn=g%geJbqO|6{53Eo&ev-+4irk#5>~U#+Jp9CW-ExKQHP_nLg}0^9 zz_CJ)OIZba3a=W!e+#y&5Cqppt^Q-R#ozRLIL%)1VbS~m+#0>ZIZ~ zI4w@YennL-^!p+TR|h&Uc&*17`vc{QLA6(cazC6peDF{en@s6nn_dH)Nsd+_ zetV+VVdhy?sRhHu{J~B?O^aZCpQ%{xC#aLtSi?i5pE92O;et>3{^L4g zF3m3#l*%P$xsPm7datGA3^yVtv|A^J+`GZG~D0Btg zyQe|5)BQNZ@qPbku?nRY1~LKQ10XCbO#YqM?NLm<$Ot^igT@}u(Ts&(wo%`m zqS4f8lAKg2g$7c2m=)({RmeRXZK25T$Jau&KhXh`mlu#!+(_ZKz--@RwkTq{2HGK_ z&_$%{>sReATBcFj=mr}+rq|*Vz-6t}50a!ua>Pden@STekKpfgmM1)@vHtPMzur5b zM<6Kl=S;f% zH)ssMbMfX9!s0%mQz$Z|#YKqHv$rSRb6wPuVRDu=pUz0s@Z6ez&7Ih(u3dsL@E zV5To-WO=c9FRKLnhofGkoW~k`v8xkGEjcHx8{dp4o4~#yXL83ML0boc6ZbLxBk%ts?2ncA4K)K-m&zrF&e&~b zRYZrSB(PdiE;aYw>Df+w8@z2T?0_Qz`BYkm6`y2Jz^N)%8J`yR6QV}nRz{HFit6w7YXw|r8P*<{8 z9+5k)NXFielIcX6#pgTC+BIO4YZw(|{?brd#bVUP4MZwuUki1_h=USAsEp7gLl%}; zU0YOkR0aQSRAuLoeJAKvr#tcNl87!>A+)+1ula*<8y{)uy--5xaf;F-_8hm2=%D0iYKjQ!gL8|D%Jl zSKbs)8CZt%kPHE|fHD|VpqO;5VYaOV(VJ{(Jg-~BJ}|y{sC|~0UsbpgzTX&==E3vv zVNye{X?5YIETN%D7y){Hc{pzi;wCztVi(y}0-G*6ZAgnA+X0=Si-49xCxB*C;m02D zgw)^K8W#1AH-b$4hgiXXEuLn_$XFz%*Jlrt z!xEgvkRDRJ>BQdC9LqAZI*j4ScwMU$`>(?E2nz*Y* zsw>AF_o<9C+qLW=c2#J;Y|?Id3>x(?ESZ@K&K7{v%K?t99#R!HGtf704U zeAb-g)XKMfvTbTFM%x={MYi?1gsA{y#3llduxSp|`sjSRq|?!=eY3xEXhmxBr+;P7nORDdOLj24 zrG9Opkb%_=N)knL)_0xBwWepiH>Frw;q}+N2AN2vl%T^ z6qg2bM>S13Ftkj&u%Slz7qQbg90O^&ojNm^ump>OQq=fs88duh~6Kw6466Z={rcO1Uo@Lrm4 zwKO0?hvHFCg5>j}ZG%Ot*e{14@VJiPe+bvN+d5L+kPVpkG(JI{6U+t&O>uwsf|bAhI%M8h9;u052LAT$Fu`+6^{I;VPs~!FbUaUHFzib%<%D2 z1~;`N;7-zro<*>K*Wt6J9%q_ub&CXlS>BBELc&DHUgUO^(T@%X>x4c1di}_NV4bGx zbduFaIG;I_u-_7ugS%$cWm&A({ewqt1ohgi3n_rPnBGBfGr@H-8Xr$B8%2!w@fTSo z)}7cO?ggs1!3at%A-<83$3Z{aF)O85d*103#R_6^EyN4K6-$G!*Kdm@h%h!kIfkL} zdPpo$bavsHr%iGl!qnJ1kz*`=)(}b+r)fiJ^VI22oiA^WD`sv>uuc}N<1az9g2eT+ z1U|tG8z)C|>T@^_)jHR!bTk^hQ(B5lmJ-@BwYzZL4fQir*ofE0VWy^+JqcUNH1nL! zinOm|ux6J$j*S!@t&aBrUh6r*;kijJ-AC<&f#T)aFW0aseh(TxrF^5U^@Bj1F8iN{ z^-GqU9&G(uNSq3dAzKDeML}6lcb|m40~6j2VpTKLiUubNd`as%E;N@EtKCP=683o8 zLjwA+Kx&NkMa#lNevhYjy1ortT*S+U(QLSMR*6k!7xXCa>VDjLz1jm4HxU!Vk=lY= z=GzyWGL)r?GKz6SF1Cl%b1+zT9*&lN3fIHYS&_OKZ~`lVj$_a!<`1V#$ukJ(El=kx z?EBu@D5`8loaMc-q9}z58>c2IKm$^j;yEf6;and3od;say=Q!pZMZ?+guOSR+CrnC zH$TE^iUdlzA^BB)f6@h}<$3!ljwW__LuvgvfvFIr)xEDPX|qohGfbG zgBjuXZ-2*pS0A%Io3slm=H?aR(%a2GpT+aP*?dX-3J^@j^)L!iBcOTuPNS_CfBv;MdaX6L=DD2~s6mT)akwSLvKMDmj4SUB)znJ*S zlYk!wV4pGV8KNR--0S#GWAb7IH}7?t2!Q zVK}k(f2+654$*9sILr_~n-mv!ngA71M6vFGEOBYFgZ)agJ6(gHeVA3YOxZ-WoH~s2 zQM%2h^hfF$=z>w)CvAR{b1m!H`T6DgtX8s4!&ZCN!EMUcnpFWAH;3L`J~(H_{1Z)4O^TF zOUeMcu~Z`Ynnlx}3nf3)!2vN&CYvjAZ?m{=|E*fmn2yo0nOZ5sdUfS{^sH=lpdv8@ zM|VM_B|?HTFu1qz;v0%o#*_WphXbFjX<_0-PT$KzHcPHsE^wQCdXvf|Py8e3{@Fu^ z!b&7QNzc!;;sfgYC={foFXv%wLhfOv!Xp|rIp^xijs1?*Qwa-Y!5+k2%|Yjnm?lv_ z6tS~OhL%VcVJYn}^G9f^+OA62yl|HtyK>~l4(bIU3hmo&XNL~8WNoP=EZZg|z9u|1 zIE$%HHIP-R++-z-O_m!eRX35D&)++h=~%AIY!)Y-L+i$ml@b+#QwRtH5TqKvL~KQu z_`R46Tqg|CXAynhrx9@aQ~v!+eZY{9pC|4V#MW*@08LjY_NC%91lbrXxqVx4#P#w` zK{0ZnW~X{7de!m726x~Ro#h(Y~*rWa_~4e z-h#MPl8HjGC~?5LM*l_Yj0@XdGDEae$Ix+CRT;S{9iJv&nMaY)1T^^#mmxI$_l;AA zqlwz2|9Lu+okIxI8Tx8++Z@9bq^vy&ICD=L_~&j?buC$ncr+4TK`v#GI=WBX`TS+E znzW9i?T3#4`+5@g%xi|7vy|0GB3YPB<@DV4v@?m7j=TYd=QIFRC|IyINE@OrQ{|r1 z(P3tcw#4{iBlCk=?1ze22HeN!n74+C=#!bs>J!TlN#lix#zoB`#Kd*)^Sd1tl%)dc zF#OZ$daiqTef-!e@0yC0@ntxcj9VmDIrmD|pNf`0;2D{}pR%n(#vb%PG!<`xRbRGy zW8AfxKBBw4o|ppVy0@w21gkY+f%LeTk8qn3#?0+7koVnzDAO9+dv3nVfdsslDlplDrd+Jd(|JE|E}zL%~xm;nc2Tl zYC3g>fE+dy>mXy8M_kEtJl!^>8>{rHZI?VR&Pdja>-rz3k^j`{Kf9sUhOr6x;+*m6 z3(gV5&+twJO}KbMF63GCx*tP+Cp4k9qyO(FO#kmr2*m#XM?)L~k?KDhv>`sog=x+| z{QsAMe&qjd^8Z-ti~V0d|DPse7xEAiE5dK2oe;)*%rLd$|GNqD|GQHN>EC~R{y&Yl s^Z$}|x#<5k`DA%D@n0YFZd0E>LZVQ<4*$MlgMxfyC6y#mtu = CFG_TUD_NET_MTU; + netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_UP; + netif->state = NULL; + netif->name[0] = 'E'; + netif->name[1] = 'X'; + netif->linkoutput = linkoutput_fn; + netif->output = output_fn; + return ERR_OK; +} + +void init_lwip(void) +{ + struct netif *netif = &netif_data; + + /* Fixup MAC address based on flash serial */ + //pico_unique_board_id_t id; + //pico_get_unique_board_id(&id); + //memcpy( (tud_network_mac_address)+1, id.id, 5); + // Fixing up does not work because tud_network_mac_address is const + + /* Initialize tinyUSB */ + tusb_init(); + + /* Initialize lwip */ + lwip_init(); + + /* the lwip virtual MAC address must be different from the host's; to ensure this, we toggle the LSbit */ + netif->hwaddr_len = sizeof(tud_network_mac_address); + memcpy(netif->hwaddr, tud_network_mac_address, sizeof(tud_network_mac_address)); + netif->hwaddr[5] ^= 0x01; + + netif = netif_add(netif, &ipaddr, &netmask, &gateway, NULL, netif_init_cb, ip_input); + netif_set_default(netif); +} + +void tud_network_init_cb(void) +{ + /* if the network is re-initializing and we have a leftover packet, we must do a cleanup */ + if (received_frame) + { + pbuf_free(received_frame); + received_frame = NULL; + } +} + +bool tud_network_recv_cb(const uint8_t *src, uint16_t size) +{ + /* this shouldn't happen, but if we get another packet before + parsing the previous, we must signal our inability to accept it */ + if (received_frame) return false; + + if (size) + { + struct pbuf *p = pbuf_alloc(PBUF_RAW, size, PBUF_POOL); + + if (p) + { + /* pbuf_alloc() has already initialized struct; all we need to do is copy the data */ + memcpy(p->payload, src, size); + + /* store away the pointer for service_traffic() to later handle */ + received_frame = p; + } + } + + return true; +} + +uint16_t tud_network_xmit_cb(uint8_t *dst, void *ref, uint16_t arg) +{ + struct pbuf *p = (struct pbuf *)ref; + struct pbuf *q; + uint16_t len = 0; + + (void)arg; /* unused for this example */ + + /* traverse the "pbuf chain"; see ./lwip/src/core/pbuf.c for more info */ + for(q = p; q != NULL; q = q->next) + { + memcpy(dst, (char *)q->payload, q->len); + dst += q->len; + len += q->len; + if (q->len == q->tot_len) break; + } + + return len; +} + +void service_traffic(void) +{ + /* handle any packet received by tud_network_recv_cb() */ + if (received_frame) + { + ethernet_input(received_frame, &netif_data); + pbuf_free(received_frame); + received_frame = NULL; + tud_network_recv_renew(); + } + + sys_check_timeouts(); +} + +void dhcpd_init() +{ + while (dhserv_init(&dhcp_config) != ERR_OK); +} + +void wait_for_netif_is_up() +{ + while (!netif_is_up(&netif_data)); +} + + +/* lwip platform specific routines for Pico */ +static mutex_t lwip_mutex; +static int lwip_mutex_count = 0; + +sys_prot_t sys_arch_protect(void) +{ + uint32_t owner; + if (!mutex_try_enter(&lwip_mutex, &owner)) + { + if (owner != get_core_num()) + { + // Wait until other core releases mutex + mutex_enter_blocking(&lwip_mutex); + } + } + + lwip_mutex_count++; + + return 0; +} + +void sys_arch_unprotect(sys_prot_t pval) +{ + (void)pval; + + if (lwip_mutex_count) + { + lwip_mutex_count--; + if (!lwip_mutex_count) + { + mutex_exit(&lwip_mutex); + } + } +} + +uint32_t sys_now(void) +{ + return to_ms_since_boot( get_absolute_time() ); +} diff --git a/tusb_lwip_glue.h b/tusb_lwip_glue.h new file mode 100644 index 0000000..68a12e0 --- /dev/null +++ b/tusb_lwip_glue.h @@ -0,0 +1,25 @@ +#ifndef _TUSB_LWIP_GLUE_H_ +#define _TUSB_LWIP_GLUE_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +#include "tusb.h" +#include "dhserver.h" +#include "dnserver.h" +#include "lwip/init.h" +#include "lwip/timeouts.h" +#include "lwip/apps/httpd.h" + +void init_lwip(); +void wait_for_netif_is_up(); +void dhcpd_init(); +void service_traffic(); + + +#ifdef __cplusplus + } +#endif + +#endif \ No newline at end of file diff --git a/usb_descriptors.c b/usb_descriptors.c new file mode 100644 index 0000000..7ff4a13 --- /dev/null +++ b/usb_descriptors.c @@ -0,0 +1,238 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2019 Ha Thach (tinyusb.org) + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + * + */ + +#include "tusb.h" +#include "pico/unique_id.h" + +/* A combination of interfaces must have a unique product id, since PC will save device driver after the first plug. + * Same VID/PID with different interface e.g MSC (first), then CDC (later) will possibly cause system error on PC. + * + * Auto ProductID layout's Bitmap: + * [MSB] NET | VENDOR | MIDI | HID | MSC | CDC [LSB] + */ +#define _PID_MAP(itf, n) ( (CFG_TUD_##itf) << (n) ) +#define USB_PID (0x4000 | _PID_MAP(CDC, 0) | _PID_MAP(MSC, 1) | _PID_MAP(HID, 2) | \ + _PID_MAP(MIDI, 3) | _PID_MAP(VENDOR, 4) | _PID_MAP(NET, 5) ) + +// String Descriptor Index +enum +{ + STRID_LANGID = 0, + STRID_MANUFACTURER, + STRID_PRODUCT, + STRID_SERIAL, + STRID_INTERFACE, + STRID_MAC +}; + +enum +{ + ITF_NUM_CDC = 0, + ITF_NUM_CDC_DATA, + ITF_NUM_TOTAL +}; + +enum +{ + CONFIG_ID_RNDIS = 0, + CONFIG_ID_ECM = 1, + CONFIG_ID_COUNT +}; + +//--------------------------------------------------------------------+ +// Device Descriptors +//--------------------------------------------------------------------+ +tusb_desc_device_t const desc_device = +{ + .bLength = sizeof(tusb_desc_device_t), + .bDescriptorType = TUSB_DESC_DEVICE, + .bcdUSB = 0x0200, + + // Use Interface Association Descriptor (IAD) device class + .bDeviceClass = TUSB_CLASS_MISC, + .bDeviceSubClass = MISC_SUBCLASS_COMMON, + .bDeviceProtocol = MISC_PROTOCOL_IAD, + + .bMaxPacketSize0 = CFG_TUD_ENDPOINT0_SIZE, + + .idVendor = 0xCafe, + .idProduct = USB_PID, + .bcdDevice = 0x0101, + + .iManufacturer = STRID_MANUFACTURER, + .iProduct = STRID_PRODUCT, + .iSerialNumber = STRID_SERIAL, + + .bNumConfigurations = CONFIG_ID_COUNT // multiple configurations +}; + +// Invoked when received GET DEVICE DESCRIPTOR +// Application return pointer to descriptor +uint8_t const * tud_descriptor_device_cb(void) +{ + return (uint8_t const *) &desc_device; +} + +//--------------------------------------------------------------------+ +// Configuration Descriptor +//--------------------------------------------------------------------+ +#define MAIN_CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_RNDIS_DESC_LEN) +#define ALT_CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + TUD_CDC_ECM_DESC_LEN) + +#if CFG_TUSB_MCU == OPT_MCU_LPC175X_6X || CFG_TUSB_MCU == OPT_MCU_LPC177X_8X || CFG_TUSB_MCU == OPT_MCU_LPC40XX + // LPC 17xx and 40xx endpoint type (bulk/interrupt/iso) are fixed by its number + // 0 control, 1 In, 2 Bulk, 3 Iso, 4 In etc ... + #define EPNUM_NET_NOTIF 0x81 + #define EPNUM_NET_OUT 0x02 + #define EPNUM_NET_IN 0x82 + +#elif CFG_TUSB_MCU == OPT_MCU_SAMG + // SAMG doesn't support a same endpoint number with different direction IN and OUT + // e.g EP1 OUT & EP1 IN cannot exist together + #define EPNUM_NET_NOTIF 0x81 + #define EPNUM_NET_OUT 0x02 + #define EPNUM_NET_IN 0x83 + +#else + #define EPNUM_NET_NOTIF 0x81 + #define EPNUM_NET_OUT 0x02 + #define EPNUM_NET_IN 0x82 +#endif + +static uint8_t const rndis_configuration[] = +{ + // Config number (index+1), interface count, string index, total length, attribute, power in mA + TUD_CONFIG_DESCRIPTOR(CONFIG_ID_RNDIS+1, ITF_NUM_TOTAL, 0, MAIN_CONFIG_TOTAL_LEN, 0, 100), + + // Interface number, string index, EP notification address and size, EP data address (out, in) and size. + TUD_RNDIS_DESCRIPTOR(ITF_NUM_CDC, STRID_INTERFACE, EPNUM_NET_NOTIF, 8, EPNUM_NET_OUT, EPNUM_NET_IN, CFG_TUD_NET_ENDPOINT_SIZE), +}; + +static uint8_t const ecm_configuration[] = +{ + // Config number (index+1), interface count, string index, total length, attribute, power in mA + TUD_CONFIG_DESCRIPTOR(CONFIG_ID_ECM+1, ITF_NUM_TOTAL, 0, ALT_CONFIG_TOTAL_LEN, 0, 100), + + // Interface number, description string index, MAC address string index, EP notification address and size, EP data address (out, in), and size, max segment size. + TUD_CDC_ECM_DESCRIPTOR(ITF_NUM_CDC, STRID_INTERFACE, STRID_MAC, EPNUM_NET_NOTIF, 64, EPNUM_NET_OUT, EPNUM_NET_IN, CFG_TUD_NET_ENDPOINT_SIZE, CFG_TUD_NET_MTU), +}; + +// Configuration array: RNDIS and CDC-ECM +// - Windows only works with RNDIS +// - MacOS only works with CDC-ECM +// - Linux will work on both +// Note index is Num-1x +static uint8_t const * const configuration_arr[2] = +{ + [CONFIG_ID_RNDIS] = rndis_configuration, + [CONFIG_ID_ECM ] = ecm_configuration +}; + +// Invoked when received GET CONFIGURATION DESCRIPTOR +// Application return pointer to descriptor +// Descriptor contents must exist long enough for transfer to complete +uint8_t const * tud_descriptor_configuration_cb(uint8_t index) +{ + return (index < CONFIG_ID_COUNT) ? configuration_arr[index] : NULL; +} + +//--------------------------------------------------------------------+ +// String Descriptors +//--------------------------------------------------------------------+ + +// array of pointer to string descriptors +static char const* string_desc_arr [] = +{ + [STRID_LANGID] = (const char[]) { 0x09, 0x04 }, // supported language is English (0x0409) + [STRID_MANUFACTURER] = "TinyUSB", // Manufacturer + [STRID_PRODUCT] = "Go to http://192.168.7.1/", // Product + //[STRID_SERIAL] = "123456", // Serial + [STRID_INTERFACE] = "TinyUSB Network Interface" // Interface Description + + // STRID_MAC index is handled separately + // STRID_SERIAL index is handled seperately +}; + +static uint16_t _desc_str[32]; + +// Invoked when received GET STRING DESCRIPTOR request +// Application return pointer to descriptor, whose contents must exist long enough for transfer to complete +uint16_t const* tud_descriptor_string_cb(uint8_t index, uint16_t langid) +{ + (void) langid; + + unsigned int chr_count = 0; + + if (STRID_LANGID == index) + { + memcpy(&_desc_str[1], string_desc_arr[STRID_LANGID], 2); + chr_count = 1; + } + else if (STRID_SERIAL == index) + { + pico_unique_board_id_t id; + pico_get_unique_board_id(&id); + + for (unsigned i=0; i> 4) & 0xf]; + _desc_str[1+chr_count++] = "0123456789ABCDEF"[(id.id[i] >> 0) & 0xf]; + } + } + else if (STRID_MAC == index) + { + // Convert MAC address into UTF-16 + + for (unsigned i=0; i> 4) & 0xf]; + _desc_str[1+chr_count++] = "0123456789ABCDEF"[(tud_network_mac_address[i] >> 0) & 0xf]; + } + } + else + { + // Note: the 0xEE index string is a Microsoft OS 1.0 Descriptors. + // https://docs.microsoft.com/en-us/windows-hardware/drivers/usbcon/microsoft-defined-usb-descriptors + + if ( !(index < sizeof(string_desc_arr)/sizeof(string_desc_arr[0])) ) return NULL; + + const char* str = string_desc_arr[index]; + + // Cap at max char + chr_count = strlen(str); + if ( chr_count > (TU_ARRAY_SIZE(_desc_str) - 1)) chr_count = TU_ARRAY_SIZE(_desc_str) - 1; + + // Convert ASCII string into UTF-16 + for (unsigned int i=0; i