From d172c24d84998c00aa8140f01942e3d67056eab8 Mon Sep 17 00:00:00 2001 From: yuchengen Date: Tue, 2 Jun 2026 14:35:15 +0800 Subject: [PATCH 1/3] feat: add TensorRT-LLM 1.3.0rc6 version for OC9 --- frameworks/tensorrt-llm/1.3.0/Dockerfile | 37 ++++++++++ frameworks/tensorrt-llm/1.3.0/README.md | 93 ++++++++++++++++++++++++ frameworks/tensorrt-llm/1.3.0/build.conf | 5 ++ frameworks/tensorrt-llm/1.3.0/test.sh | 39 ++++++++++ 4 files changed, 174 insertions(+) create mode 100644 frameworks/tensorrt-llm/1.3.0/Dockerfile create mode 100644 frameworks/tensorrt-llm/1.3.0/README.md create mode 100644 frameworks/tensorrt-llm/1.3.0/build.conf create mode 100644 frameworks/tensorrt-llm/1.3.0/test.sh diff --git a/frameworks/tensorrt-llm/1.3.0/Dockerfile b/frameworks/tensorrt-llm/1.3.0/Dockerfile new file mode 100644 index 00000000..5cb6ee9e --- /dev/null +++ b/frameworks/tensorrt-llm/1.3.0/Dockerfile @@ -0,0 +1,37 @@ +FROM opencloudos/opencloudos9-minimal:latest + +LABEL maintainer="stronking 363133710@qq.com" +LABEL org.opencontainers.image.source="https://gitee.com/OpenCloudOS/ai-agent-container" +LABEL org.opencontainers.image.description="TensorRT-LLM on OpenCloudOS 9 with Python 3.12, CUDA 13.1" +ENV NVIDIA_VISIBLE_DEVICES=all +ARG TENSORRTLLM_VERSION=1.3.0rc6 +RUN dnf install -y epol-release \ + && dnf makecache \ + && dnf upgrade -y \ + && dnf clean all + +RUN dnf install -y \ + cuda-toolkit-13-1 \ + cuda-devel-13-1 \ + libcudnn9-cuda-13 \ + libcudnn9-devel-cuda-13 \ + libcudnn9-headers-cuda-13 \ + libcudnn9-static-cuda-13 \ + && dnf clean all \ + && rm -rf /var/cache/yum/* + + +RUN dnf install -y python3.12 python3.12-devel openmpi openmpi-devel +RUN python3.12 -m ensurepip && \ + python3.12 -m venv /home/python3.12 && \ + /home/python3.12/bin/pip install --upgrade pip setuptools wheel packaging build +RUN /home/python3.12/bin/pip install tensorrt-llm==$TENSORRTLLM_VERSION --extra-index-url https://pypi.nvidia.com +ENV LD_LIBRARY_PATH=/usr/lib64/openmpi/lib:$LD_LIBRARY_PATH +ENV PATH=/usr/local/cuda/bin:$PATH +ENV PYTHONUNBUFFERED=1 +RUN printf 'import platform as _p\n_o=_p.python_version\n_p.python_version=lambda:_o().rstrip("+")\n' > /home/python3.12/lib/python3.12/site-packages/sitecustomize.py +RUN echo 'source /home/python3.12/bin/activate' >> /root/.bashrc + +RUN date +"%Y/%m/%d" > /etc/buildinfo + +CMD ["/home/python3.12/bin/python"] \ No newline at end of file diff --git a/frameworks/tensorrt-llm/1.3.0/README.md b/frameworks/tensorrt-llm/1.3.0/README.md new file mode 100644 index 00000000..d933ecad --- /dev/null +++ b/frameworks/tensorrt-llm/1.3.0/README.md @@ -0,0 +1,93 @@ +# TensorRT-LLM 1.3.0rc6 on OpenCloudOS 9 + +## 基本信息 + +- **框架版本**:TensorRT-LLM v1.3.0rc6 +- **基础镜像**:opencloudos/opencloudos9-minimal:latest +- **Python 版本**:Python 3.12 +- **CUDA 版本**:CUDA 13.1 +- **GPU 支持**:需要 NVIDIA GPU 与 NVIDIA Container Toolkit +- **MPI 支持**:已集成 OpenMPI / mpi4py +- **主要用途**: + - TensorRT-LLM Python 环境验证 + - CUDA / PyTorch GPU 功能测试 + - TensorRT-LLM 推理环境基础镜像 + - 后续模型构建、Engine 转换与推理测试 + +## 构建 + +在 Dockerfile 所在目录执行: + +```bash +docker build -t oc9-tensorrt-llm:1.3.0rc6 . +``` + +## 镜像启动命令 + +#### 后台启动容器: +```bash +docker run -d \ + --gpus all \ + --name oc9-tensorrt-llm \ + oc9-tensorrt-llm:1.3.0rc6 \ + sleep infinity +``` +#### 进入容器 +```bash +docker exec -it oc9-tensorrt-llm bash +``` + +## 测试镜像 + +#### 在容器内执行基础验证 +```bash +docker run --rm --gpus all oc9-tensorrt-llm:1.3.0rc6 bash -lc " +nvidia-smi && +python -c 'import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))' && +python -c 'import tensorrt_llm; print(tensorrt_llm.__version__)' && +python -c 'from mpi4py import MPI; print(MPI.Get_version())' +" +``` + +## 常见问题 + + + +## 验证内容 + +## 注意事项 + +1. 启动容器时必须添加: + +```bash +--gpus all +``` + +否则容器内无法访问 NVIDIA GPU。 + +2. 宿主机需要安装 NVIDIA Container Toolkit。 + +3. 当前测试只验证基础运行环境,不包含完整模型推理流程。 + +4. TensorRT-LLM 真正推理通常需要额外步骤: + +```text +下载模型 → 转换 checkpoint → 构建 TensorRT engine → 运行推理脚本 +``` + + +## 常见问题 + +### 1. ModuleNotFoundError: No module named 'torch' + +通常是 Python 虚拟环境没有进入默认 PATH。需要确认镜像中包含: + +```dockerfile +ENV VIRTUAL_ENV=/home/python3.12 +ENV PATH=/home/python3.12/bin:$PATH +``` +或者需要确认虚拟环境是否被激活 +```bash +source /home/python3.12/bin/activate +``` + diff --git a/frameworks/tensorrt-llm/1.3.0/build.conf b/frameworks/tensorrt-llm/1.3.0/build.conf new file mode 100644 index 00000000..5eaab65e --- /dev/null +++ b/frameworks/tensorrt-llm/1.3.0/build.conf @@ -0,0 +1,5 @@ +# TnesorRT-LLM 1.2.0 on OpenCloudOS 9 (GPU) +IMAGE_NAME=oc9-tensorrt-llm + +IMAGE_TAG=1.2.0 +GPU_TEST=false \ No newline at end of file diff --git a/frameworks/tensorrt-llm/1.3.0/test.sh b/frameworks/tensorrt-llm/1.3.0/test.sh new file mode 100644 index 00000000..82c3a1bc --- /dev/null +++ b/frameworks/tensorrt-llm/1.3.0/test.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +IMAGE="${1:?用法: bash test.sh }" + +echo "=== TensorRT-LLM GPU 镜像功能测试 ===" + +echo -n "检查 NVIDIA GPU 驱动 & CUDA... " +docker run --rm --gpus all "$IMAGE" bash -lc ' +nvidia-smi >/dev/null +nvcc --version >/dev/null +/home/python3.12/bin/python -c "import torch; assert torch.cuda.is_available(); print(\"GPU:\", torch.cuda.get_device_name(0))" +' +echo "✓ 通过" + +echo -n "检查 tensorrt_llm import... " +docker run --rm --gpus all "$IMAGE" bash -lc ' +/home/python3.12/bin/python -c "import tensorrt_llm; print(\"tensorrt_llm version:\", tensorrt_llm.__version__)" +' +echo "✓ 通过" + +echo -n "检查 torch CUDA 张量计算... " +docker run --rm --gpus all "$IMAGE" bash -lc ' +/home/python3.12/bin/python - < Date: Tue, 2 Jun 2026 14:58:40 +0800 Subject: [PATCH 2/3] feat: add TensorRT-LLM 1.3.0rc6 version for OC9 --- frameworks/tensorrt-llm/1.3.0/build.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/tensorrt-llm/1.3.0/build.conf b/frameworks/tensorrt-llm/1.3.0/build.conf index 5eaab65e..2e21058b 100644 --- a/frameworks/tensorrt-llm/1.3.0/build.conf +++ b/frameworks/tensorrt-llm/1.3.0/build.conf @@ -1,5 +1,5 @@ -# TnesorRT-LLM 1.2.0 on OpenCloudOS 9 (GPU) +# TnesorRT-LLM 1.3.0rc6 on OpenCloudOS 9 (GPU) IMAGE_NAME=oc9-tensorrt-llm -IMAGE_TAG=1.2.0 +IMAGE_TAG=1.3.0rc6 GPU_TEST=false \ No newline at end of file -- Gitee From a2cee19cad768d3b7e317b7d405cce55eddeb6d5 Mon Sep 17 00:00:00 2001 From: yuchengen Date: Thu, 4 Jun 2026 15:47:13 +0800 Subject: [PATCH 3/3] feat: add TensorRT-LLM 1.3.0rc6 version for OC9 --- frameworks/tensorrt-llm/1.3.0/test.sh | 36 +++++++++++------- frameworks/tensorrt-llm/1.3.0/test_result.png | Bin 0 -> 48895 bytes 2 files changed, 22 insertions(+), 14 deletions(-) create mode 100644 frameworks/tensorrt-llm/1.3.0/test_result.png diff --git a/frameworks/tensorrt-llm/1.3.0/test.sh b/frameworks/tensorrt-llm/1.3.0/test.sh index 82c3a1bc..e91c922d 100644 --- a/frameworks/tensorrt-llm/1.3.0/test.sh +++ b/frameworks/tensorrt-llm/1.3.0/test.sh @@ -1,25 +1,36 @@ #!/bin/bash +set -u + IMAGE="${1:?用法: bash test.sh }" echo "=== TensorRT-LLM GPU 镜像功能测试 ===" -echo -n "检查 NVIDIA GPU 驱动 & CUDA... " -docker run --rm --gpus all "$IMAGE" bash -lc ' -nvidia-smi >/dev/null -nvcc --version >/dev/null +run_test() { + local name="$1" + local cmd="$2" + + echo -n "$name... " + + if docker run --rm --gpus all "$IMAGE" bash -lc "$cmd"; then + echo "✓ 通过" + else + echo "✗ 失败" + exit 1 + fi +} + +run_test "检查 NVIDIA GPU 驱动 & CUDA" ' +nvidia-smi >/dev/null && +nvcc --version >/dev/null && /home/python3.12/bin/python -c "import torch; assert torch.cuda.is_available(); print(\"GPU:\", torch.cuda.get_device_name(0))" ' -echo "✓ 通过" -echo -n "检查 tensorrt_llm import... " -docker run --rm --gpus all "$IMAGE" bash -lc ' +run_test "检查 tensorrt_llm import" ' /home/python3.12/bin/python -c "import tensorrt_llm; print(\"tensorrt_llm version:\", tensorrt_llm.__version__)" ' -echo "✓ 通过" -echo -n "检查 torch CUDA 张量计算... " -docker run --rm --gpus all "$IMAGE" bash -lc ' +run_test "检查 torch CUDA 张量计算" ' /home/python3.12/bin/python - <-bL-bVv8zbt36^z zq&A5l<{Rzp{*C8-p5u6rO+sRAlR4?P($cqw3<)XDUy>o}SriRAp1X8E|mx0 zlH}*OPUE)hPkrH$Rs)d*Zl%ZE8)w>6*Sa4?-U|D%xt}U=O>v5A*y1@HWPL zYwWcWX>_yJG0)uG@fn0^G>z%amI1D2%6?`duFM|f(X-+u_I#++=a*$2^+w{2?&g77 zoMa?a@cgFnAa#Z=Zo5>v!y{?O`@D{q@gwvDeuv(55O*%9u(hy47J}sG<_w}4DYeirR|ynF2hl)XUr^B>mdeQ6GxQc&F{SImAM+|V*G4fcbOK@!^|${j zSpNvpj4x3mUJ}=jrDeIp9!c$XO%Y(vkfsAE=6>Zm-5(XtihN8LAJnjEF6SjSPN4{} zzMG^|QG9RN%Q^en_t~M9JUQ8sFld&KcIvQwbj&FYcV_E+ zq#~|oVApLrtgkFoEEYd^L}s|JHl@|B0kPxupbYml~*y*3j4vR+5k&l$s?mF2(Mu3I{~j-r|DmOWt%ucP0+Ps zG1`-Y{5;-_{mwIDv_NLdct}(Z=n~R#h`OAv=`RSxZUxjz@Fj#79Th zQLrz2y4%jiGiWneI$WLssBu_woPe-%b9HLIPC&2?#BLGOM^d{KuN^T0d%ItbovKbf z&i8fGCjX0+?bB9)`r;Eyw$OW0$zw^5t?kFsEucJJF@xx(n+zULUuv1JXojV`;8v!p z8V_gRD0;njHewbVBtLC3?B6?73oB!AystSSQCHw~)bm5HJa6JBk+jGPmaHSA<2bA; zW>{$M&KR65QxExRLw@L6TEk$I*?O^NBcojE&TFXPl#V+;j|k?A-R@fF#$%*&0DjkJ zv&qvHKTgbtwh@#K7c`Ow&=o;?%H(LT%r$hkMk#_(9t^$0NDGQ zqF+5n5rWc>k@z+4cK$d-sKWkSr0AxrsTK;3Kd)!nuUhy@%zg@jAN23I{$$$V3LN8J ziG2SZ)-U8uFK|_B+eIkGLeF=aOrB%x`YYbau)vj)sYZ6@`dreN%|Z|~C!jYG)nXq> zD_dx!vB~ynbzL_4*?v$h&t>|f!pUd?W?z^L?3$^grS(a>afx$&N>*%oA62CK%&Ad+ z^R^ZIXd^EjbM8sHcqb`p5Hai4mCbO1jIa+&Mo_}AN9`(_b zY01~%c5TT^WE|7WQYJ8%fBw!Lw;lO(a2LAIMsL%;_@%Qxs6{_$s9D9jTQn#B)tZ1$ zUmf32EW}ylcrWh~i_@m-0NvOa%s{{RC(p)Z`e0AuB;DuJ=N2@t3UF!sjJO5r>@?NK{k znCDNr2;a+b9o3jKnog>pT0E&<4rT%#gL0;RNGTI_BBt7H>0_2d$H4&}%xllEjkq(!*QV?{wIwhrOF~bX)y?JcZzfCD0c$ zmN)X!`ik){mo{$*nW_%i3p0v?aLY2YzQ4rUaP`Xv^qcneRTz<8{edO%FPQ%9$G~Hk z_EN2U`b#zRzHq=_V?1Y0YCDag*&~3{gU=gmhl-GNFK^Wqg$<1sMxaJL8UzyooT$PW ze7!GEWB+0qs3F9Ms-SDaSF8$1pdv)Rt8>n>KE`S8*@h124UXZq&_(r?u0&)XBKb!R zz1DX2SReP^7|Lq+i*Kn-x~rb$9gT_VQ%LKnl;^K5FA2;VnNK*+#~he8XQZDFdS()f zqHVY3oWGLNG!ABU%mj-6s8vJvT-);o2}o?WRq_=Gvt1;onJD zZre!KIC{U_9|Nx-m7By?NLnNGZG;lM3Mt6$+JR^9u!lOVGrHH?%FHD&Z_sIOJA+)T zJZCKQj(@(UXDemTJV35OJiZBb64BT=bQ^W zz6XjI3vR4`9IssK_hZ#A^^>5~Ql>Cj!$-&hg94z~d-B-51zJp7c+6*lY!8jxxpbi$ zLbPTUk*H};^SAbZm>YZ<5}0)72Z>WL>udUleL|*kG;kG$^H|z}QH%<6RMyIbb=(+m z4P2^9pq-uWl88!6d4n_RAJbkxczG@O7VqNAqRoAt`IoU&DQaTIY2F6T{Q6!7hn68c0W0PGF$ubiYI_b7AwK#(; zejf{Si>{*w3q%XMbI$`;YT};<91QMaUocDY^=o(?z&L#LFtGP&0PxX@N5(3)27e;z zQ$z9wR0LB~F_M+yHHL$pLl<`T78P00(={+)9roMd^z> zL-Terrc|);R#ImNnL{hCoJNrVPJLW0A|?Jb4-p|Hx#W3OLwxQE-tRLC&gY5hNZ8<< zpEow`kNm)4JLp%)RHkFUZ;Z#&`@R%+&e^n7ia21xlqXRZ^1{nYmpf{4GOF*sa-z|G zcbG%!N18--^Zq*7J&82aHI4|m@%0mQ!Ga3PLMo_>rZ>IPkuo0sHjE6R-{(SG&DUSa zl0hH(`7C+#XA%dr=v7&=pYb~jBXH00;adhaaac@N{dULT$YzhB0{+mVM%Pxy<4ldc zOwps+_jfwNiL@h^Assp)R5t<(j4SMYtBRXAW5N9clFNsibSqH{8P{l&*-nML6}g~D zw%0U_y+_Hu(^x=U>3wi@bOTKLTb#|wPyAiiWNPDGdO{UC*D!35SH1exV)4~!tgRCN(j_nyx z*~u0ob+&@$Em1{UEoq;)a-Gic-??@7Kb74M_A*ZX;Wh)nEc9kI9T)FO!<3#+9UaCl zi-UA627S?&bm7_Y|2UF#oa-!5b-d#buhKuM~)nDK76i!a39Log4CY z3hd{dg&rsHT1s|<-XRME6GPG48_<&_6!TzzwC}*aMu40qwsFH<)MRdF)8=vpwy(py-7FvgkF-%7Bem&5^0A4*H50f z=Q=Eh>S$>+X^2o4;2pV2vF@VN7s)NP))m?(l4pa62vNYvDU5+nvdweb^&Er}a4Wa) z{k4232j2$r75I&iL~{X@#ZEuS>3@&MzJzYn#SEHeh`E>?@*;BYo;~qnsM-+F*-`^D~@V27wL}+n_ zr^*q!C_X8r2Oo6}JkLyxdLuC$smAX@6d6+L?diMlGh2&_qHVzN+|oY7I6!)epFs1y zw1Z$rgFMfZ4cbKB`KoB00Tz6oqr`?%l@8PWn*N?5m=n4DQxh25Autn;P$>Mmo$%@N zyBa^^uO~~)NNM!`*8^4WgsgY};7w;ln3r?1HWU|SGH#F91&mn_BgxHju)aIw1jIke^{pUF0bl9CxZbvIz zQlsPHOqz}zmxF=fvl9{ zrQKNOo*>R0b89`Mf4Wz5GrHn!eag=+s9)C2dBs-|krB=f>s$v8MTP3u%KNGC@jsI* zsA$HwtJJ|{XvV!NU8}SZ_2ounh@A+FvKRHGh+|LU_261Z(Oi6PqnZ~F2QYu;a|h@~qs?Iz#g)QS#RmQ2YCxM# zK>a1%tBO=dv{XHdNR&IO`mLPXMz!T9DVb;$zt_p2)4q;;O=K3)Y`5gt(MW+OvflHg>oV{Y< z0>F`aHA<`+l6^i7VSkkGqUfU>GJz?1+K%lycSEEbs6Bi{opj^WZ?ViZf==L5C@slN zYVUnS#2qFhiS%%10YO}kTbs^g_$M&*f)!Y62kNx!V2A6$BD-jX*NZwzbWx8t>LDbTi0OJP6b zWYc6tzB+4cp@+}z?ja ziY;BsY`s>_`4=?WskNIYT~A5_jN{2GSeL~d8?TI&T~#vMW;FhYgw!J6!Lm~le_ zxEV`i#QM+IZ>(5qbtq@ARWd?DEXtDG!1wH5T(dy>-gYQJTvfV${#b-9 zqnp$84nBJsIzChdOae*Frt{GGpm$S${YaDx-XfI4pJWvCX#c_L_dyh(gE3Xj(yBu& z%@v$4^&m$b@v16FTsa@1^E84;3}|wc|L-xa4aLTWhi8N$cJEE*S%1B@dGTqzT;@A* zxD(S^SiAvg&90}o{*-_eW}DP{A1M6__0(!%qnj$|o1gL9pEx1S{WI9zbyS%!WW@6! zDk{lMCIy!{M)L;nCW1)7PUFJyeEW#>lc%+dQ3 zc7EgBs0iL3`x&=Htx9472M;*yQS>arxc(}SMVT%RTSt7t+P3^!sUV?5xk0E#aLD!4 zM8|OqsFEw>#Y-k-w{d(O*11?Sw%OhGIU$4>u~dCI*7*arMD&3{v@6;OVLq&*9ggw4KG?LV78j4x1>M64 z45=y4c^l(V`lnmN`7KN`cpAq3o-L1fh6H%oZvP9;vRUIs?55%oa%p8p>k1^$uFH!u z@vOB9U9Y#tz)^DCWb0CkGcv0e+}hOrAv<7-`{>3X)$h|=9D=CnfXv1<01>ijf2pyx z^*8krjSHv;NCnC@Fj9AN{Wi=u1t<5tzEwYB-8e{`N~1YvlhAIpMPAkgCj-0R?kib= zXXZQHXRh(3LT?aF2#UQ%zTUWoo7wr9P*qh)G25%1%64ed^x@|h<HDQM7bEY>eeNSEJW|wP)e4sM6F3&Q zN*~#qQs@cGFmZ}2=b|qdJ=Eo)L5aA1kCM#*{${$|GR<*xgL%rUaL zv{GNFLVdW3_Ga9Y)(RDjd^einJT>ZD zcP7zly6>Hl_nsw`wtqL9L~W}wr|SI9SV}&fJK4~2aB9-PAF_SDzn4pU;vQ2HUl z=YiNtY7`%cP3H2Q33F3JetTHa&018p6rNk_2-3kbSm#_-%k#_hM3I_%_N9_g_A@$r zKT%|BvGlg|D>#yJOY((>UG$gOcEg14%ICPozPx1E`w zx8`=3QQ*EzY;&fYNN1bh>zwxH6GeEG-1U?i@ym=|`5t_NtT9q^SzJoa$3?O5;H1Oe zN*O2nuKwX{yvybMi@Pb)*4?Zfl9>+nKvAH4UTMrn-i|Yvd>TWfWQ`+knVUNOF zzUlN3Yqw{gfJ#-r+~Q?RrU+egyN6<@&8zHE{6`(3J0ggj!ADs17!xHLg`(%SNUXej zSkiDpDTW7|L%>Dv?Mxz%4=+=1DlYav0S_iauVJtSBb3{J_$W^3BOq(5H;=O0Ob-p? zC=aOur~RqPTZp$nY4Htcy%+kkfRsJM6^E(yV)_CJRdcHbTJncICi@!&vg16XCQX?? zmqJRSvXw&1zGctd{yL1qs=>�fPYTzkW2Agv=ImyCDM_tQPw4oD_$-MCe*ZPNS)N zpM@T7Lhatxuy_TG!9`EFR@$F2>P4_QjX2uIuHoiJ*g^3o*1yYwKfJL~=hS3S1e(j( z>owBsE%n0*$keS$+?HaWHc=K|CO89z&fp>9lXE~oy;`fD0Q6mbaHtqgr!VPCKOrbg ziDBQCn15NFek^_;p6Kk=T|X3OI;Wh^H1|kC6j}5^3ZHCuB4UI~XkhP!ey1qE=_ix= zPvgoD8V6MD>RZLpFr@y+x1hC(CLhRX~RTKleM-z@}sBOq_m9FMM1 z8=U$*PmEQOGm8@%i$l#xHqPrv8M1Bd{t^n$>3cHV(QTodc9eRZ+_2eTrg>U)6(`aQ z{7poad=kPFQ8J^7@l>5mLYeeuaFrrmw9^;iEw#2aT3_$ZJ*txja20H-0`1OJzQ0Iw zo^t?#_p_J5;g5*lZvLzD@1#atqlK@@6>aUc&`+g!9Ovxjj8tlN|3ZDo`@q3Om=Ot4 z`8Lv@G0-5>ChfmXyV?nH5;hJQguFaX)j>f;p!#R95_*+^PhjEtVY zDVTG~NhBHKsVP&Ga%9}6I*u-0F`%2jhl z{ccI*MB(wu<_{m(PydN)?#W;dMDdhVuu_o3~L2<6(rk=bM6q&o7w# zzv+4J8afY}%}y*!Cfz0g3u?4bHXd&5EJE<~i>1fH%*SKa+E3TcuO%P=>mU2E{`nRE zvxWDs`K$lD^SVMP_s^RNfvdvj)w|363mzfF1{px?!pw#M%PCAeaB}bEkR(ul3<@gO+RJLs_1PrRi zrkKCKod0+{kUn{`nk+fJuLJocm+NEU?SQ5j-PW0&{TCO5+ForSp?@CHX7y$9N!Obh zIFNC4e(d=(t zZ(_X%53&aEC^bUfpkn)oVOhw@@zWzAkKgU@^xM)zJTh3Fc+R4BK5=h$WT z_?6q}vW!Tkm-N#OWM9ab>Tm%FXRI!-_nFoA-E=#f&*6g}p-NC4w3(Meyi?hn5<%K>HYEw|qcee&EX$5D)9x`ic{5nKn~ ztKU2A?aA!qo+;Xd*v0iB9^wlIO{oh*J=8G)i|LXt>CUK z@%)51X`+6^>!XUqd>;wOr1%K5d0T?*Vosgqgs|SDO5HWh#P|m!uF)l7*O&6u*UWBv ztvOX&c0siuDsTf}2<32q-&E^UTOf9?^@kb_zLr>BciMnbd61jhFl_&%iY6}=sYuvBWC-Jh z(DgQr2E|UvBmUk+x-EdoS_gcU$!Ddv&u*mBWBS{;vTb#$>F^9u1n9{}x{oxi#d8hh z!iS6p(WrPqJq|`XZcdBNnfB599$noVF+#y7X4d3eMlTO_`o4 z9}^rg@ur?%@UvTySzAGmYvaiD9U&;YqyG1Ct-EYFB)^HWe##n(v&l6DE#iO|{(<=M z+Emj9Dy;k=wP3C%nc0OJSMciQ3|w|BAR4K zoaktqd0pc2e60n`Jf?*&MHG97tExs#-cE@Khk z{Hwtwu@BKf=|D~%I(k3HWR|X`xm29}ThFB&h%I8IAw(me%!|rlDMuYggFdJwb92+8 z{|S5jRZe*iC@9s?*Y~%ZBOov+CzM-_Q}G>+Eq~uwB-aIANkLG z{`ML-EXWUWLksseS+L!fz;Hg+??J};;jccqToDb%9~s`u^w~_h)Hr&F7z0_Y8`=$L zj`|DimtRpuBeGaOx}txd`zcJza(qP{e}h4{&|7p(o~_{E96H~(E>QwfC*qNZ-Le<` z+k9F8AFd0l)p#E!pC1v1!n>2+n)9`(+CB$wjdqzq$)v)v7W__;*Q7Mrg~9f-$3;K2 zBj7xvJxX=G&5jl5Xe+tmAMwUZTNNAMK<6ttM<}CcS=^bTp%dr&0~KdmCnxmlwYfRxzeni@ zyiDhCEIIKsO>|>+dg>({7j4<4?JJQwyI#jFaXFAwn2~pFHp%KtK!QU)IteIL%V*#w z%_-+@(fisMEIYMxUVQFV!DJ=)AeWFZ;N6LP^~f>KoYbmHhBc>R53%xZ{?CU#R@SY6 zN$5xM&NXLntd(jCVZP}Ks5_LwlX?03%YCfH0ec`}b$F$bCE$|@#-Zz@9pglA$#Dre z`nsK&N4*@Q6)i5X@iGwYG?#fx;@&_X#l;~d-BW2%rMa1;Gj!mAcal~K9+`a#LY+jH8OvoZ>eDn420_WIYtaJ5vfmxi>GgOFfo@_x#rM z4a7Li#l~h@orcG$R-BQWIY2@r)D~)qB1W7kd zkRsO-F%#O_+>_HuH7Qtzqv5Xv=m(edG6pzdh%VOo0~3vd|A`{=VaN3rkEPrS(Eb_g!mnX6ww2`))QbL1kx)+mb3HY}#zJB*I{cjL*{^`4c{|_%Vb5Xg28wsY^gvvi`4E2F{3~O-R%;^65?O|02aC?11$5CT zpq?X)VXN!xu#yMPCl+Ls=3kiJP7Pm1_c{zCqci$BKOJYzhXTfGihsBv#C6-L;ta<4 zA6J{`KIz^6r9kx|+u6K{4sM1(JB**KTU00T?yj|aSn6gM1D$t!=psSUHF{|!WuY;x zW~>3J^;1uZg?#ks*Em&fV7%kAmFu?mTWY^Uj1soMdeo&~hVoCpU|6=Tk1rPH9TSFi zp54|f+_061m^G`Z95iUepR8=6VMGu+@#rPkeTG*_cB~b{elT9Brd|WMUZ9I5#da<%) zr5wcc64F{W;-SbWC6P+8g}Bumsaqvr1D}-aI1+lIilp7Z<>n$wJp&f^6o28jC8O-2JH1nU5K__jfUJske%>(q7!Ks9>`GF z<#@`^(!@gNY@tAQ#hm`kvSsiI037ijM@F?Z+?C@+=|s&0^#_4-MT+Uq39Ok0V}fF{ zSi^{hDmK_B?<(EX7!t@ik&IV;gy2{e8){~O!yVRN)=70VXP6Xz++w_kCyd=K!XO6F zsU(1%I$`ZZfePHd2QQzir0c^(Rwjzy*J_J9iSO&OtE7vWhFr%lz-yP<#<|AwSy#Ba>8pC{lW=!BqGC8i$;R}~Ff3(dp|7+^?Rrk7z@(CO9 z5rFZ7pODqKS?nO@4Hgw7W86PP%*1EGu zoP4nR`3MYMMov#xu76CMT#A@UdaTmO-aqotTvI%C`q-IATLCXF=?z66$i+C{tLbB{ zUMw~2K1jZCar)*$eF^1o9R_f`wxmt(!~*WxfE8XJ;=+fW1G^NP_{Q91^i5r$Y0CNR z{Hft*n#;1foC5k#>CS=l!AI6M1CsOHnoic8=+h7AfvbVp@ipX1JaEn155=r1Sm{^r zUNa4vX={RKpelrCTmbuzlAlr1N$f@e31NQohzC4B1UkZzT@*DcOxMZ7jSu zTz-hd>xWE2zOZ3qIl+rqPtXGWuGsQV7D&+I_TS0&#exv*kzb1V=S`XUO^0)t=~18iT4FkCU^d9JPqdGo_Nvg9%ITLqQcLl1a8^P|57pM~waG08v(FeM)H=8rPd z=85FZ?(%*iGy0nb4`-5GW1{g(>J1X@Oyt3x)*?@Ej||1OR&qud<PHVtf1>Eq+u4>!EN9V4ce5E?YMYOQw?Zz}#Rc z9L!Lc`Y?x#Fy3vHV<+jp(rO*ujCIHCss(c@>92zxgZ@AGAR{l;FRNfaU*1<}G>Rt^ zZxml;i?nEN#ojEH&p$1bI29h4Enp?d7Ob60bp79f!P9UGnXAIh&^WWwLFQ$L&*o`c z!4|%qQExLm{-z{Cl)|sme1I~uF|H~xmC!>_s-_Z2)s4cw2^{LYiyAW%Xtaavj4lzK zLsk4E5f?U|5hsAMr@L~`YWIBfhp=6Qh*16Q<~=>-?dhIyQNT$ z8B4pfm5UxHw?AtfnIaGmn8oFYonMfU=`7m>Hm^zQ4VwdC2ZtL6de2?IiqGG1 zuRT7gnJst=(oKb%B^QZtz!k4jgikBPW_QB#`|Tdzb@pXnroBI#G$O@O$XHdq6zJaA z{zF{gdCP-; z(1`O3%65R(x#N>h%PwC>PB_Qg-{5(iF8&vVFzMh^bvaO3S*n4Mt*tm~1Ai3NQ)g@Q zKYBPCOrd{**}ym|U?G41cFvkg9ke~OLoQWEsB%I#y--QRbw(fX{12SN2ii zKl%dhP9a2UX7A#qzYJP8reF^LB{wtr$|H>1i?Ljk*~#Bs>P0W_^eyNP#l~thQ5T%t zGQbBdpGH@+>V{$$&+0*sI(8o6*C8(}2w`O(azhK%hu35gi$Q^l!s9-Z$Gd-Pu*5SS zY^Bx+s!Kb;$IPcfvn1^IbH>=J)9?Zk3V()%3A;!8nq*o&7tErc82@};{kGXm{exf4 z^bfynUDmtwoC>46JPuoJd&ENX6LeK0fW+$rDgBcdr_G-@hVVQCkZ45SX$ zxpL_EnC7 z3;`DvYsWV6KdWPRo>PJsaA-)~R)MoXgGz#5R+H_2>#3@vU&ddG_*>I+c+)|H_&SD+|fNPP8!Fb*Ww3t#F;WI(M zU%oAT>OxYkQiIKunune1v?#WqMXcAYBa)l>rkiD+1rZfOP;b z%YH$aS`3O|mVTIIJHu!qo-OcEGJkKrOixU5quuoO8%b{|!^giI8_xn+?IjeU3kisn z(j|77=S{R5P-*x+P0d{!TU4XL$_1sf&4f>~v*QP2pO0-q^|XXZ3FF(A4t~9y9N17L zWbhTa6hT-nbmg{gkG)D~cQCHde$B;F z=G?V-y{c;XBmInbMe()@3V6~26|e6e|HjRuMJ8aAhf#@&eg zVkc?wQU^xPA-w3oPw}_tfVO7F7h@-9Gn%_m)9TO@=a^)qM zEoAiv>{b>!El?r#(3|jvl1oQv>Nf zKg$EhqSc=PHC$vWzGQ|yOFLJEW%XBPevVr*yocsVNomV&b#Q$Xpa?H_J)`L!TXdX{ zJRF>b-eLfZ($4Ax+A+~U{!AY~{A&Wgl@yG3FQ)&r1>X|zpFB@u`m$W`iiV$Ttf&2~ z_>fLQlMUzXl7De;}mr5Hhx z%1jp{r#xBGWHqc>-k#X3>7|G$VnDBeFY2lmknv@c#3A(k8ah{}Qkr$Kjf^K$ERLKZ zpj9Tm-0170|5?80$dk(s!c)X0U0Rf z*7&nsZ=FM(A)e7mH3FTR3>>HQ-^6{7W8W8N==O%AE>`&*?p$ge>d_6%iL>P*i)MH- zx#*M6Df*OksnmilQMiDD;7rf(Z++mZ92}ziljlEi_gJ`X ze6zxe9WWzRI%LC_%PET|HnF5<@c<`q&n$dna_D31#^ahm?kxcOSs1IYw+3NG{)6!J zjg`W{L?H^&NYRqDZ+Oj)P1h4ZRe(G}3q{nX<#MSxzhISN*MMsAN8tTk^5&EErZiZHN22!d#N` zPduUm{98e+jO+hzSiY{^GFV@}F}2-dwl~oZyWm&}2qsW_-1B$l8QEiCOp_@#f~CP1 z8%a=h=5fyFysivxe%;)t`h9cnVzdN)O#QkoJ3s5j089!-3C{Pt6syMxSd!<~c>i@Z z1qVL#q9k+&q3j{suTTy$*YwM!T|f4zG_^nc=SD53F#Mq;`S2lo zt(K^Ev$!pmx$TK_(ev+@U-~EW7S+_rNBmQshYk);m)dCqMTwH?>d$Ag30V~@u*Z}zW$ZJ}{6DNjT;xZ803`jhoco)NUMvjyA*+rM_<3a&tu2(X9)P8>%NVCS*fcDf)Bp*6^GF|?4FRyX_*Ba z|MP{ibV@>){*KV=UzA_}l`*By;JHlXxPT)F(*V)7q50R>2R5|-EgvKJKMSG%T=jqD zW{3y#7Bdr??)feIDP^?M|LOs}xO!V3|H#49IDS{!h!0w0_%zAp5R7mVQ^EJc$<3b- zSMTr6kPg`DjZn-=E+?J>FdqLvfqALcNWZMAjVI3R1Ite;bJHLAA)UnVZB{!;-wx&& zeL)o5YAaHA(_#N4Kc}pnep#^gV4J0=9_;OgjP-YuBp%@(POVjk8kjlS>)&@hNFIDN z^Cp?r<>}Oeg;mr>ybza;oKj&2GE(UQ=vhSOB?PbJ$}m8?IWfHFq?jg{)11f9G8>;@ z_CR8BT@i2*%Kn0CY-r(swDaJ*GVnblU+bQ9>YsjFytT+(44kGNPb0;nkeJbO9+pe&y44-p?U zPVU=c-hP+zkWWT^(m2&Z)OM~cG+6Yn#%$%{WbO6hfzg}?X9km!wq8CQvePnGQ+UW9 z$E7K#^c8OjfHycrSaO1vrREa0iX@|Az75`fqGW^BY!6*o-95r|EG)N@Z|tP#ZjrBT z1O#QDPt4ls#BCs5L0QZ#ch1U!>-F%8vlvbJdl}B(4ETxKFc z76_waCFr(DQ)uluukw1L?m8^RvxdRX<@LIUL_ZXIL_qMZ9m)f-e;X-=(P5X%sME|$ zJ;veETkXhQ_-%Zr_Ne_?U3~Mo3BX>Xv-kV8ccv0U$vV8Bgf>L&X2PBI7do#C zU%6aB@xT;Cqov=p?`YA!m-DJVX`se0i9Gh7Md^B)K|6KO9nSoxu!OA%hBp#2`93H&2OZ98vN%INBqxV~sgyPsv8y2m2qF28 z>N9@NDFnK57r*Z3j{pj3&Y5j|8Cc&}IF`00; z&?y55br1ThZ_fWEvT*1x4!+0L-*zzg#C`M;X8GBIDvU}a56@$==QrY_4JXlkjS$h} z)y=Nw{jEQS6m$dEkwy5{E1C>6mqNPh!c^p>thKm7P_$@{6&(b_d=F4+0a~rVd@JlU5oDB z@)DC-YJ5F`_6;6j@;zDK_yYtEJn)3%e`#r`i6T}z{oR$+j_o6%4n!Z8XvKjZ9KJOP zfMf6>>||;Ua4hw5Xhszt-=GZ(5DCGz{|c;A0#R#T)hMO|x%b6ewtvRriI?xBgZ`oK z^!0Q1BA468v32m{w7qu*;Qu)i$awX>xxsB2vlTO!8kb6ZL8QA600;Dol`syC0ZJfg zaE_OF5?SIe_p!BjVz`^Ra=$6C+CT#v4r}%h%Z8*ZUy6$zy0IvQ= zi*Fv$=2pdjcCpqqZ&Pik5_jl(59IOq~oEox7QTp1+4Z951r_r9fRigd$zD~ zgO85tP7Kq#9%=Y)s-eO_)hHd=&)c{8woJgjbtL^?te`gDjnuq082H^^XN|8B>syES z(drvZjFF@m>0O{N@6?`uiLY^Io5-G^YLWf?&!QqUGZ6L*i;IQHQIToB=MN~?;8+5LGsw8bS(wY9Dx2Xz`CIKz~-R;;-aaAMtKYC9g zP0iG-Uhy>OWV=z}iO;#CIjKI|o~|?4fOHF$|EWFl_A`R68&?R9`|cm-FI73Y9To>d zE>)}H)O^oe_x9J4`SVZy-knsi@2v2&UP6XMn$udUVN=s~S>bHJ`;H;?mHaxaPe-Z# z13BtL#cn%Yh+VNRR9mQ7+dsS*I~nMl?TI_dgg@`6O`rR{RmB6JQ*L8glf~-ThN3Gu zfxVNWq1ot<(e^5d4-Kf(6;%4U?HT9jn`0m5Y+Z(EOa%dZsf5&|V|wKCQ~6XR0iuZ| z5~XX}Wx_-erzO5t^auDp_$GWDxhG}N)tgT@d1qLED9(kaMDj@AJv70M9}1nm5J5$? z3PMxC17uJ7!6ho9QiIB;J9&=)cv*h;oPD}f=BLH@!gIg>E!B}-0eRND_9v&u%Z08B z@7-qTwbeVQAJNV{EuJhZ^vfdhA=7mj6x$=)#)F9!({nHp>WG6`$rjbyz!dw!L733Y zr#ZLxkLN`DgF@h|(}Kxzetwn%3sPQgcID*fm?r8(kiHbS$5)Q;9|WR5{?xCGfil&)Ol>sm-?iv_jh0AFzQdc8c3{ zTp{!Jb}mzE(tzgexhDctz%{TQZ@vkfV{Z@Po421aoW*~-1s7fabaJwM+kI}nnl`rd z$wh=n_dDBWxb2O(nL6?ib~ecB@E+WeBjJ|k?>55PQ0xE$Nd@rI+_hqwRfB<7 zxb?=fi2(}$Tcmb+ z5?p6IB01g#&=5p#VLbbsq~w}P%KI+|*2ZHc{5wL|XI5k5OGkjDsM}`eJ(?O`jlHz# zOdC7=Kys^Qjf|w+!;#e<3iUfCzUg6v5I{S5Bh)hj&r8+80 zI?kwVY#ruyykC!R*~fN})l!qXRo=oV<7;X^!J&`RbpNhITh)qxG#5KbqqRyo(N8x( z3v6hJGkRb$8`Bce`5tV`imm6v%*8HiH#2#2p0VlS|F6vX3wqVAWpIbp;)4%^!{chb zo28~s(=4?4?g8<0zyqR7qyH)XTCTN{ZCQ&)CDa;s=N=Xc_cwY5qkRsgHw`3bfFVqT zlK+~jVaFJmQM1OR$}Uh!LO9*?)m#67;zB&7NwQ^Xt#-Qp7UFVSPHf1B3nqD^!Y>QB zhHoUz1m2n(r@QOGyqwy*1;{u#SHuN(?F>e(mo9rihUYw(VUu&%l?PJ8%CSQ`oyoLF zY;TN8pBNwTmO;}CoMf@k0QzKJ9VfNm`6mfKkU3y<2y33MnQ_uSOa)+>ipN$C)y0V0 z=S(hr$UIgCLg#~l)E+el!NN$UzeQ!)%6~*<9=Ncj%PSL$F1AAIiTA&mU>@B3%tmChB05$+v4y9K1i!6v=r5$AiVA@e~=R5x~6#()% zX9e#xd%x(WN*Oi+#Q|pPb?3_ROvf@~Y=*C`WIQktxi%gM5ev;O z-17&0#+$(Sxe5G=Z`;SpUeWvH!G;mL%n%ZORTUf-*=BoECJtZOYW#d2H+H|ITjnla ztj$3GQ6%2$PGEUPkGwAq#yEaWG#-q;N?m!_^=rq0 z)QoMirNMvere4j zVA(I`BKy+EW8Q*e5363itlO%`KLkxuK_|V|Jfa+#L)NM3W^knrHFkQr6DJEtrbS5g z$Em;vuaJM+CBNrXk8-N@;T`b`Vd}K;=jaDnDB@LkDGC?cu3v6M@So{qD^JT=-yEBd zYTf#pV3$^R?`#}ubx`()t9^z=3I2iJ<sx&+^l4yiw3qG9pCF;>ETkl4)m>0g2%>6 zf0FgGhj6yn*s3(ZgFkh7n}v?qg4#7jaB`V4k&?U?o6UuHcbU|WB5s}J}*Gqe3K z83rUPb?FV8zFH*jGR}KPC=)4+I{(pOvT|X(-ODu1zbbn6r!J#sdGsNb?h6P+7)3CK z!fX1Gt=fsByQMGzrmdihBnxc5?xZC*?%O_giSIYcWWTQd^!&CS{R&{2?dL=9_84zb zSBRRPAKyB3-(RTduKV*_?A0x*+ixS^yzmEFP=oS*81fDBlJBz`@!HV*ncMp4;{fe;E1_tZ@$OH5N zj^qz>*!lRca^SE3B6mg|P)|No4 zvuwx*{yg{>WVX_#y;b8gJ+s+@cn}1Jj1Wcm^KNi|nMxgKso*o_HanLMRtAk9!(xiZ!{! zOv8d`q15I%L6`x-kl`LcZtkAHis6JJ*`33^ONo<~w_@DYG3aEcNa8>k1p#FJ)fo}I?)RFb)9f|_ndj4@& zWp#yhU}DJ`8EyHznu27Xy?nn$bwT1@{}5PU^sWFycUG)j+2cb1+4fXFO!8*%Ie-Ep z>@cH8(=%!UeHzk!_%!bv024}P5G3wgOI+XgFFf%x-SW15_xMUc)3>bb&L-@|Ip? z1i1SEuq)*OT@3&y*y(BzWBDt+g=R<-`49Nz3P#b@IU-W6(a14tP+3&wkaD-b$U1Iz zQ~TXc6eWC6oeAb#Af1Q~!Ov3iA$H9dsB<<~%3S#O3o1{pK{|hOd)_<%Xs7|Z&Rwi? zZ=r1Iz3+F(P5Br*kSZJa!C@NT)!s6Def)&xCu%OR<6#Lr26_#tQ<2f_$2BY7%J#$~kPNZ<>lJ-H0jHy^3z-{;rPH@Fb)3Pl6z(O_cGLfisZm+Z^|N_fykQ*Z>>h$7xR|zahB9JG#^MXiaf2R% zksilv>|8=BPFv!nN{)+Ci2CprO_p;5+N77xQHZVe z8NXlYAi9=sXXHvzixR1+>g#JsceLdR3^e5I)tlg-<8aInvX8ifrvahbn&rHMuDxQh z39@1`Ui-@9uSAf1>K~fmA=v*}Jl*1#Q|qUk8|(nPM>9sdrcgAWvpjkENnbt!03`^oJs ziRD)BLtKI{ExE$NHO5cK`f;zLoEFNg(B#<)L_<|*;$2X=r7?_r9CS&3yA`?saFB9r0PlobpmS(((kfMvxQ#;GDSMn4+m2Dr2;3tLLWY zjHjQjA>rLLsK$y6ZFfb!5)Vt8r?!-POi$Okl`J36oZv=xh$mq9K@#l7m@`5Bhz%oO zutT#hG);Rnt0i<4)4! z)K2HNEEDZN2wR?^VaY#p3<~xF7koM@6#{?Q@NM{E94cP7cHo@Z$^p@GDHcGEh&YUOn$koyIQ2QX`xnNp>`2dFu6ui)QnA{>Di z2qze(4@yF*8yh!iXWfs?T`XD=pHiSGnDG03u=H5$WaH}C9D>WSv$JaY&7s7(_%;GZ zsAo$t;C7(aE7;Pq)cK50%lqOFk{5#Cn^`=kkH>`xQWE7PFGES65I6Kn@R{g~X_9 zhOAI;{b|dmTFoW@JT74@?ADH2JGs8C$(Qtq7e3x09*U$ zK8uwe1)HdqkYvnj>ja~SHF&`-p35srQ(V#F^9wdyknYP+)nL`6reF?=AI|JoD+ z-Z3SBPj#`Nt z$nYe6*i(&~ss{TXW8qzoEi0am8dRoHR6m4FK0^aN8cEY`(WXoQY_A&#G9sTApMdf- z36AUEsG^kxb-PlpyhL%{eHsa&92#89f6b~(<=3{=5=RFcH`E@4u z`PnVcMkgNn@DexKHMl;sj}{r(ra$jjRavv4-+iVDe6-_b((|E%&*P$W_Zg7$MF;97 z)KF6|%fWe{5?8Vm#W!miqBDjLJx{tHBrOM+jow3vMlMA)Xd3lXw6f$wtgX%Yq4Wid zw{|YQcrQA3@VPVa7KS)HF2Ukli!4$ya2cbf{#)WlFCK#6&+Akmvi3(vzJ|T-a0fk( z{{CT5+l^;L(6-jTx)1m~GebM5WKFu?@ZiEpO{Ml1OYy$cMP9%1mAK6+ox3G(&wf>x?E{oqqwv5Cj?~}UOP*_Om6dEPbXSD z0D#58l3}Bh#pbbBMfn#0TK$GXeezD6ZHi2oH>PT?R5dB4jbC*9Mw%Q)U-vD+XM2qe z`E?4%vE#qeA9`D~(h-ZO;-6d8uCF4j=xdGiFMUuTn6iBjSM1*k=meipxtejyB3r&& z#iuHcB=4I|*t<)7Snx+(^SKdzyCK@=`jO8Dp5eqk>)MyHi>u@SBl8N1@>5jxwO8W1 zsy_enIDzNSgg-<1rfDk7U?+6#)_AtH|K>$pleAOlH{HN&YolLc8&P0E6S$%SFn@j-(ODsi%csX$AD zY>nf=X(+^p3QO>$px=CH4QXog31OdR0>^Is<}XHgzW5J=%*i_N${-8nM1luu|MWpH z_TyaC7%om%A+2iMBk_z8n+I&l=zQuR^;(H_vZi2O>H*aOW)<~=@?4kYc<7fHB`Mm# zkQMx-U#B*xTPdC;rEWwAQ89D>e>Z9(3+BZBG3k|_F(QNc=1VxoFK__Kn4y8xPNolu%qj z()U{CYka zcLmar0@!y7t3j}L)0g9zr!lJRRp!jk{tp;ck!B!Oj@ct{n+$6mYk`!blZ+(LJvcEC z_NU!b)d3jlk*DsPq*#9<{XK(tD3YQneELkavrds zS;~CkX7@XO>~~(iu7V93@f%&>Py0&KXhT^=ljyfzlAGiKjG(n(PA}!gu`gA_d^&vW z9aG|bs)zNHRZ+VzlTr3;-8_X9BD^~4s zgchq(u~QKHR~?Usy=%VvHR4gL?&v#?AC%OHRy|4YR(%uD^YaF!tMt$pdrTN%o|_8a z-Rao2iqDL^`1JSduR9>@n%5r%)^F2Mq884_4kz9RC@^Br0}?4v^Jmr63exiJy$ev@l_eZ+y*tX z!OYcg2(LfH@)a-W{RR;o7SWxD4IK}z%q*(=OshGH74qcgS#5Rkp}*|NT*VD4$n&6w zr#tz0l-Pq-c%;H9=KC@x7LOz4TniWO*B~9jM#c=%J{eLWI*xY+x;Fdg@|sa4d|dF{ zrrZ;ah!@9CryDCX=H30e&!5!c@>oS&TtF;=B4*W@Ih0`qw9#DEmo$z8Mc>ObRf(U< zBa4R|nn@is*1ObU3is$40*AKEliEdaCTE9@>q3|jz~*V%*HDCSNsnewBc z>W%gSy6GHcuA8#*O+RPh#Z*^xj3=R>Cj$`}f(x*TRV}l!Rl7wvjRk40(3cqIr3rrSBM=9beJGMe;PvDxWB3?L;YaE zj3644H)W*3iF)8PL5V2t!sWCat>SpvfU9fwclOdw##ee4wo{`&Yg73?OrdG(;2or# zl!zB5B4ApVtm$r%fNgb0s!lFI-W6jnzj`TOXQ?9tu`4uX1V4=!g(c#HR%nl}cFE_4 zyiZvc9}s-c??=G8Gs7NddOaj!NxR0fI=8eo!otDh`nmkOIUT(wWQNXFq7KvNFJMm@ zbzcSU9`bfhkx03W_cKkv-f1yd!{fK zTzoa8Vp-$n!a~FR^CvS+l#L~5V`X9Rlzq26p{>@YN_zek`QhkOzfX}BDYptSN~aGB zdWdG2M7qKUtcQ;IN*2`DejbV{O1iU@r#B?lWOc?VxuUjOpng7Z9y~BF?u0d5^_6t@ z;Ypk67^q}HabS)ypk!5R4>Q-+k7){lf>FlkrX20SE-sMNU2C(@ur={F?qpvi$ z*JF-MfRR0rvv}yK&EhpTtCKn59e4RMlEV7GJ3V`+Ip{aC7k&t zPeNaRMy!hQagREFz;SI((`LpZ@>1>~Y4V#E@5whqR-d%RE49-UF9ag)igZ=1ObHA>0`yro7sH#;zM9V_rOp%?BV@SFow)Z5_|Ed6Z(f4>Z z7sMHMdS2E$jWYAltyXHyz%-b#Y0$iedu0be0}bOF{m?FV^f(~{XM{d9QI8dqg@rSW z#6Q@rspEIlsua!mT&Zv5z!8jFgsg3?@@qoVI$h@E zz(soK5;%&JWyI^)w94Zbd*pf|uzSiU4Q6KobNmg_f8_G#s)Z{3bgZbKjuivBN5pLA zgzG41Oz_Kv)CSpBKEq|>Z=RWLZi#G$^-_ki+BGZ2yqc0b%Jh$!o|LT`8f29==Upwh zk!y)>=U6)+wKyJ(=n^$5Aa#*)Y)hAdu(%>GelDd>67)>O;R!Ld0anzF*=EZoY1i$C zQOxT08Al@TAt!))g04#M>tZMm>ARE+%{RxD`2wou1fQn^jx_$EtFekUss>-nODtk% z9zIPIVOQC{{I)YhT=kwJ8eg(DdXm_j78LR2kK6^9NG>KX^ey-FYAhufvq6f#d-i-s zWYRTi4CBTaQx+|{p)t84*`@})A_2}auNK|O@@%5$SD(CMN{6DN@Tg;LKF>o(jTt^O z1z%F-hnm^ScY{pIBBy$3K{miDWNAYm|u58BIaVqD4+6hN?JHG3MW7h|>20KCs37-x;6TeBd zM_D2L8?x-OA?ajc&KmGaY^UQ0J=y??4u6{U8Y}8&Q35rR*!`xLNh*em_Y;f?`S&lW zr;J*+Zgr-K&odGQ&vR(IF%099n7-*EDm4yu;$cijnPO`$e3fdwamZ5D=}|w7fBx3B z4dkd*E>fLlGKFa~x=l>U$-1Es{o;U;mk$O5n}vIx3l&zrblv%nF{k?$un&gzvC7P|o{v#j=9GVt z&M)EKzqy+e<|Pn=*0%*u7n3#rC}nmM4cVzdiK^g{e01GJ@1yU%6P5UaYrugH&`U$9 zvuohfS}^}tj8#I2#1#P6nT!yjzw36)-Y&rkU56`6>$fsm;cP*CiFob##`^A}^zgqu zWkR)EUL>22aGtcA=U5jZMmi%U0B<0LIioExRcx%99ws`s`)Dm@11l)m5n}8JP>36Y z+k9uVcD%*8PGyjBbz^7ET@~3NX_uQHC(Snz9*?eOdwJCvtK?vJ4X~Ra)%ln?5TbjuwSStaIuMRv^p@dRiG9GvCl zU$hO8VMw?I45dT5L@Ml*Pl?^ubE~xQUD+R|t&k*1YgTS4Jct^P3imCGi><+@F;MZ{M+~tGm8BB;n=LP-`hY?+OtXO#ZCRY-!AJDBKn^%W+i3_ zx@s!gqQpiaLBToO{Sa)}$2pE~Fz28gs3Boq8bH9jnQ_YX)w1>LbbEqcE>gbCx}@-2 zrft&(BRApl=31aA@$n0e6R--^ZvC0F1>fR3<-6*N#sr(SUy~mz>7TkW{ZSKhCdN0r z%3zXBoz@m`LjW8>4@Zv*?pvq((bXJapi*G`I7$D*Vp3K5c8^>@rCJ^8q(7b1WQ4|+ zrtj2XISNLt+f7jMn2j(c>|Vz1+`mLeiOYy#0zmBzPF?AmSV%P z-~lym{Sk;`r=U=pJ>Q=KR5fl+R`kLPn~r+~R&=hhX2hY`sJ7HoKjxl~ zLxHKN*HzY{)LTd11t?@xj%S^+b^Vx37sn|V>s8I}C%kyBdO_ceJL|<{K^F=TICw!= zgn!wmkh_h8Aiw#ITC3A;?O*>4vU&InfB9OIb@bgz3cj!J93iV}Td^yzVvmr|+xa8#r%^@& z5cyG3e0S}I;$Rrw47>c=Q)C;&CFt}s7+((gqje*!TF?N`1vz%1C0cx3szePyUEPg# z@{(J02-04yqY&{k;I_Wv39%UMSRp)9f_{or;xs)>Wm80ENY9@sEH6S8`m22N)Zz?* zy{9{k_kX8*7N(3AMfhR_taH_TFqG5zTf%^n76U}t144{iK|O`hHvUP>32XLo{Y*P2 zl9C-hVDh7RBd@Cbo+htffwi>>d7VLfcKVb$zY|k*uX|nU7QB+|FRqe&F+}3eXsH|b z(!{@tKyJ07BZZv)PCc3kv6v|Te7eD@N!ZY;5s=mgL61nuEqq#kNu4+rnpvrH+aly* zugMt;Nuk#pVdw=gx8ngzWZkcr8on*_|FOtF?SENhbEHL4Ll^OoEmL$1NI#yc3~gyt z?3m=6MGl~(fnX<$;@`p}A`h_n9#R9$ar;_}^_7j-2acc^1ta3^EBOfVaqF4wo>xCY zs%!f6JPsT0i8Gb6Bpvo#2mGZ=m#WPr=bWV!@~=;E9p{`uZ=0N2WW^PS=OeVWLuRu?lrNoQug#|RKfWxp z)>}oO&+B1$^2(-pF1JSNXBI_OWnA^x^jNu%(M{G9-^l-!L)=Jx18pZ`Ph|=A6rnmH z7V0umDjIw8?#-K(|R`Q3BwldYxHUi}QEr^yV{InfnkU^}FTJ0rtOA4$XcT708PIV3~t z{rw6@sQaRpqo^XpJMMM)+rZVKukBIsyrA_ek-7|^R=tG=N~{>HWXp^G=cKLqh61U6 z#?@{|r_KNX>1CNDy+XKDP1>BGU36V&#p>0x(UY8aQtBljrT$irZL#YTbedF{Asf=u zr+e%~_<$T5ND$m3i(J7Y!5}#g9o4p~39Nr{Y1q)YL=NNNYzmiskACfO^keNqdC!wX z-aVt@MOIGStU+#z4J;ihVoUL`zE@!0GRJ^DZlkV?_BrgfrodN8Z%F^pUDvg#pQ zkZ7TQMAi(V%_{NSei`=us#{~%-%e{3B80u`PhVL^*;9WvdZ=?djh?$H^ZgJF-`WR- z#7NiQ34^A(0Mb%1vgRC_W={%x1s>3UpIUe0SDLWMxJv$=Cj5VF8uT=PmNl9+eO7tp z)z-D9*jIa+jV7~%?l%xNo)+UPuUELFsvB!=31;y*w<^VYZco$Q#{*q%|7ohH_vio7 z^Pmy56G>74dqCXDu33=Vm%=&7RY@I^KlFU)gcS9;4<3hH6>IiR#9o-%+>KcV-vKY( zXI73B2IUY~N0&$SU0gs6FNL>zXZ=oEKxtOoN87|d5=Rj}cts1KIq7J3uea}Pqs4r= zKLF(M2sl&02W8n+OrTk9Yck+yYjp}sy~LR(<|$M{ck!pAg(^y~J5E68)+b#bhL360 zN4LJ;j31b4anXtxeWmH)lUygiRrBKLJ8?U#-206sK%^3QA9g|N$=8N7d`<;##K}k{ zwLE7}@7ksOVYMI&|5pmF%RD;jv?xpe`VBnLNOsG=bhe0rPoZnN#T9e+;kb&{W6O)R zn!C8nugwyIs~e4S8WsGLZ?;YT)n_>j*vE%^=vX!P!^AJEPbk9mtgHy6 zZ%-ngF0$Qdx2$PQRZjsrFZ`OeHLctIfjOW(&OqnoY6aN+?VN16RjyhTXP98aaFGN0 zrIOT$z+Err%GXM1htc{a{D!rpbenWVw9*PfBFI$7ZKOf#csc4dF)=}$GXr^>Cw|+@ zDqdrlO%>Rk0Kn(nwEk;lu#EuA?mqLu+iI#kU&X}kg9R_-*Wd6~5WHpO z-kWSLrCk_pUv@23e5Y!Je7J=NKI(bGDY3-Y3eXrTXH+q`orLtUYPSmk84-cY_~)3L zZCmg)s4BSJhYXOP(sx1(!w8buI^YPPF0gFkiTCxisvFT*y-uzYa0#~Iq~`k&+xn3p zoRZYu|8*(NRF4aXsi5)t%;1K*V9;6VDX%Vc`M|dE)B_EEM|gZMLVfkztig$L;I3ue>d65>PJ&9O@Cz(bK{ zKf;+n@vD*p$(rNf)R$pDsvm-UVaAHC%9ZZB41L}4Vi7(nh^o6VVwLuZs^Cq2_OW}8 zLVFGx-2U0Ls_`pm&#$b_cJlAKXSOwLe0cUEwHobH#0UafZu(aC_Zt_cxBXU%F-2_4 zC@NNixwx$+E}J*eeg63QPa{Q=qHTJWHzauvHUe(ciZ(<@yk8h=BC!C#bJb+ML5? zkY*SenNr(3cal~DQv{sPiEr}Qs&NsU5Mhiz@dGUW3&h z$co~faBqohOaKEAE?$(X)iRl!==l&x;T7wvA%};dJuAFV9wU%=CD^xH3cNn zUp8vbfuhed=1h2Z{@wU_4fC6^aOL3i_C=Y6yFJSMC$fFBiF*&6U=eaZn#-@`zP!3m zh%uug5`}Dnio9Nl@}fJYA=b?%JDOP?RYc${kz7OFUL+=u6Rb($F36|1~{ z1<={m?hTR~=I^ zQOrM-=LC-myfZu_)z9mgretYb2h%*CcC->3++Xo>9NCoQLd=7Hkwx73tOJL>o2x(iXO5jR%I zmo;exPmH&&08QbzSbH=M>~FCh=|5BT$1WC4GKKZK4RdkpIT1LJiPx!tkR46Eszmqi zrhK|gUe#APbsW(s%ER2_%h>9L2M}uvP-`nrgRCu*TTIcgY<`tP$TzBOtCVtF4%@m-l4;wUUM z8*`EfHw+haD07eCS$$=!j{l%`y^#Mlvrf2ZfCQ3Ct}o)<*wfW49ZW^DffXzV?d3eh z)gMTlA?cwh`8M9y<;Upfm6sD5M+Z2bCq(SZO?kZF_^^3x?uJ&CS=W58c3nM5g~?f5 z_wTL~S$+Q<>-#n7-TmEAr=UTP{zE2?R;ww}`Q!;jVKG}8*MX$xnL8YfHgcHL74r3P zhW}Rc>;NpyqT=|&KFhchr-NEz$JK(;S|dNmr)I~rSidbuoOpnmF`k^u;)2gq`F9i! zjQ~ueYqP~x6XM$YeeXLP=8MAQc#~y=tAP^V=s_Ohws{BJSQa9ZSC$^RICZlgBR!RU zGe1c>I43+h+2bLG)-%46a_3@#*u(_L>Fd~$09OFaE<^}ee*(LDv1$fwO|W~Q?g^lO zy-)a2-v-E(_q8itw!wius3~((2J50N^>eu_Ge-@q#fu26bb;j6tfj9-TmR`t(Cfti z;Ux6*4pOL(J&&2250jr)_CO9i=pV)KaE*mz7z}!?VxyN56nwObD7>)SQ>W2Y+fXN6 z9NReeq9d1`(M_waJ4(c>enZ_i_qN8#-lD&PDHM-ep2^ovG_EP>jgb_Q3CEL^tx?X$ z^Siz}b4h_iWNU2n?SYJ;LVHOEpFf2yNH5Ec?ke8KjW!f!3?O)_qJp`QoxIO^y}KXi zXQ}#UjXmh#9DTQq<+YY8?Ke#=)D5q@)qBY;z*{xgPx4ij0lsveRTZuxG}XG(U`Pu( z-|0u3^NU>zPZ$|hNAH6vO|=RjREKanaZG3;+j2AP`NKXBkKEcu<_fZ&_rqH(&|n_= zXICVodVTyEaHy~A!;opK6yPiwfJbx=E8#dO&g@b}WY-x^*4&HH2V|m-MZl}b1t0AZ z<>PQf-4p!Z_wdcPITkoUr)3)K)Z0vc>@t5%>)F~RLXLaJ*}mc@GMlLvqfZ+l8(h&7 z%rdbc<~5HE{DjgHmM4833u58AaK!M1-2s^3*nr^=$h&`B|3t*D5wHCKc!7_-zC*=4 z@y1M!ULZMkmQ`qE!e~}_a;zwuGE~1Pc?@ALCrWat+*#peS2q=8(p0bX7ty-p)spJw z0^GQJ2j^f1DIi1oDNL7yzUyA7&z)>C$!iUZ!?{_r3A-CpONh_p;OdIfJtk8YGUxIF zy8DepL@M4lyn(YZ9yS`-id7>ROSy9P;hvm%Hh=t!VzhYi)d8w%f zOA_Db;~K=Nr0pgy#^dpdXCKy=vBd>bniU-zt`=0S?y>M*ePxfA&t{UAZldFZ8=_ZG zH%hD~80hGx0r@-6vLZc_&nv?L8?PRi4=Rpv;O85Ko(|&sMRZX(ISf!sJ>EkqZ7!{z zBZyD+!{@$~Rjc+CKM{HNQ8VO4urizuzB63uDgzIpeH}D5kB@!pNJNh(oJAl`$Wfr{^F;OdB$vS_%@qFj+999 z0$}Xb)8~p~8bzNQIvkT!D4!{cAYDkOpfzP-i@w65%K?8{QM9ac*kON}N@v=9o zrYzzC)%}vM1Esp~Mz6kv`)GR`KEA`Y+*>XPW2n1nEpi9cGY+x;zO*@^J7f4s8ZvY@ z63&W#9M*QVdZ6u;v{S3^18V3p3TT<7OMEheLqXeNEh zvb?-!{0Q&)AW@!y`el`9xbPi4^rZPEf}i>k_ypqQL(8q^5RaEv`^?486{?+Fl$a^9 zN}m=R(cnaQ@&%{l!fU=2Rz92ytu}tW5eu9YG28Fn@J(qYNQAGA@lpggTdfQ~Xc4j$ zza&67&=sOkM!$O6?{AY}zcjTFjKetqNW`-S0n*t{Uo$#~p?C)Jz_Gkks0xZ9<5-!R zuQ#Nw(OOX7HI*#>ta1klG7R4_N^3#asqwzkpLln&Brwn5{XTd23iUl z;{vqp)x6>)`+XWL61#S(ebQ3DVjTJ@xVEm`yG$t&l(qBZ-~I=7S~R}0^M=3qJ@-{2 zK2sNvUkL(uhd-WNx&^VsG5eMaZcI}xw{8_c*K(^p=DY%Jz&`pF{Moy{i1G3KVre$2 zJ_|dYy+h-?cDiNBuzzsq+hYs((_H;%m#_imf9w5acNa%z$06{f?u+@t3kTSyZ^Hjo z^J7*T%@lq!M~_xcwCR3Vg zy>Ov0g_c{_1{0t4@vQpc2F**aQm$t+C}JvU=DbeTUQ(wo&8`kE7EC0wbJW~xigdR2 zO}l|M@O*Xz-c`f$Mck+ivf0LWB2wA zQ6?_s*D8k1-Q$Au&tBJUblKn7j?R2?Mw%K=dk96>F5Y0yywVAI;i{a^pgwqU61=zp zFlKf%d4j2I4_zf?N^KrO=*mOgxZP9LC;nLw#(3N6ahqf0N@^XZ2hXWlnpRl6SQgie z8>_Fk6Ucek8f`F^_s_C#*keEh*Wr%Xn`mb6lZ~mnC`RHQU>RC7gVj`RZ?V%%F@lO(I!zICtYIP1dFkN z)kOp4sFJ+bWWhp>%?G*Q?ufO0#wD z6RD|hE#Np$n*KlQnQ@_=^ICWQz~E1H6-J9xMp^uDjmX8Yxd_-ZiaNaY>v)I2xX*b7 zo!}D9vgNLI*m)SieIXq+Hm~b8@+IcL&)?p)rg^!66ADTY*BsoM*9Pc^s~Yr%nyfqG zaIJH{e&n;@)b}IsU;o&(YYlznf654z{r^MATstoE_elev?Vy{_K3Gqua@6S#HCl8q z*=V*Us~0y^b$ldQet(-n3GhR9mjfGnr@uEE70#mS-o9}}ZfyGvG!woQ{-l!b{4C!c zR8Ru}+zzgB2*B#vlvQs0#r1q7y!`eE96+r(;?RKs$nz(L6aS+Btj($&x>?sJt>!Xp z@vX}j+`+CaCiT9+>aLq4$Q5aI$-Q$!J~Qmx*7`yTNSXhC32Pxu+b0Ul=eqd2Z(Q$R z$!*)V`VT#eb#@|pXla`Vp*uNrX#4Tp^zl$!g~Il}F^5^?CNv~htb6e932Lj;z)j}T zHakGQb+sUdYtzGlF5Y{h3PsRj_O}lv_(+b_TPPwD z%qf^#uTzdAt;RhlgK@B{*{eK9_%jBZFaoc|`0kM6AaSy|Sms=scE455s^x_d;JW`! zQG2_Jsr$x6&)Ys|i!c0rvdgaT;mX<1J`DXMLm6lZ5(g*ax~D+`Dw%7W#g<(N3rDkT zU2ZFvJcN$rzF-->saSeo$aKW>pf1t5ZEc|~rS`JS9cBfeX*$4X&{Zf|(tHCQ4KNoG z`NPCislt^N{gpR_ynR3rbt+B}RxLD(a5cSI_pSc#;Y}VhpO3)5WYqP^L9|Fnmv#4$ zK$zUxHZCHon5OxwnOjz8GcoaTd7+wZf3?@jAa+g%Lin}+>k}&l=C@^+))H7XZ-=W3*2)sw%aSEQ4y^VNZ zQ4eP~ZtvgJ&9Rm{Xe_puA1q)xSp3n6c?kU<1blgA^y#|tA!VF!9IZ&|0DEAKf*McK zu|poEyDg6WoZkXGy~5JYz5F}KHm|=Wns|u4+W!HP{vkixeNmIkdxyi{nG6Rw{H^__ z{{M)!z&yjK%xprep2v25JuoL~`&;$puyX2eIFs+w!_Q;Q%9&^B4-)Zb;M0cLzn6U% zDiW!uAU3FzyoF9*Ug|DU&EINO{9nLmz4EHyoj=+()$$8;U^Hc`^}m3V&jzGER?SJS zXlaa{A)op(;qCl2ENCJ$b;FNZnhy;V1V68TfHo0! zy}zR{5LJyB+5f{|=R5z8Nc#Hkx$e87P9K3M@=ptAY35ywad@O_@>NtVD`?sG&5Y6S z=X(U+746vxbxZSyNQ>$5pI8#Uvws-AFYJ!+G4qKUMT5-v-~%YGzuE1-P2{t{!ZYlG zUAdjsUEIo zcdeeSP{P`Ytu#pl^lf{QomFyd5@pK|wT>;pG)BZCxI_+;0r;F7p3r$*e)EgmFA1xp<; zprkXE$y0s9Q2=`L7RiFkZXxP(zOj(Y9O5v&T{nO~H?_cXxNs`$+F#V~qICF&M`f7< zabG?y%SL4Nt@ua=>oRfo2hYtrd1x!+Tv1(wfq80(o4Ie6~6z%Pb$beMEio-P<&rUOJpLWWy5pUom$P9 zE?F!Zd>E;Z z)ApAcA)+M_wMm@#e5xfycC^olV`A~rsMpm{695nTH$79m&Hc%80yD?O z?Gvef?41`qUHa!LrFCtZ8sX69xh@*YeMY>;R8u_FRYZMKn!qW;D^f=*uKxsJx*Y2P zn#`DXv+mUIz134s!H|&N63X*tsQ6QB${kqNW{ok~_>5^W!?}9zpKEb_ zrr^(8pGYnd?xK9yn|Eti_TTUP^kqqw5u=~_Co7sO!1DRj3vVf43l0|YIJ8n*EoG%} z!apasTtzqAE)s9sQ`hu;m&rzXO9b-}`0D}4?aBkl=gY>cRAddze(O4vHh&qJG2OG$)l9&x@BVBaP6*&sfHaT7{2D z{}W+o_|sgu^BH?wQ*mWc|83C8$z$I73L~QUtOo59Cv8^kA2zu^iAenOLwoh!5j5_P zipt)-i7ZFpC@qzv%-;e=gt796VdwNYu9IT%yUC_3qPT`MtK(--k0wT zspS-{HL-HVB;-|}GPPd+dfdBb@@lu`sG|T(+vm#1wM%C{WYVuF`Dy#?Ko!jr1^(24 zpQM)*fr8)L9IO_pudw~!3c8_DK3iSqzq-rY55j`Zp#NEfivZ8&3SJtV$G>CItBcu) z^{o!ED^zTRI#}pDe7nYX@cvdBYY9?UK`1Q&IjN-J^@pM)Yy5Z_U|wq1k|{EN||G>Lv{U>y>7nv ztnzXmSOn|s_t49C`4>+|Gr9K-qm@TD072T=KWCcATd%Vy`AZzxjH_-{fAybi z%Ut<~s%Ov_I6`Nv!|16io{N<;i~RHebod z+Q3P`C{Hb9w7XePN=F$h=^FU{2ra<2GEp3Rdt2O*5;aT^L5F&))Hrp&$Duk#<1CuS z1%2+U*6>mHyrusxrrBRoQabYkl}qn^T)2;_cq5`bzPl%Pl^aMVlw>|kTJ!;vzI}aq zDE?djud%O=YpQ+Y<}n{cLMf2}f(S|s5rt8kw6wIef`D{`v?z##Lj*>%2kDk>hA17Q zksL5WT1Ji$?@_=f-{1T0uYGoQ?sM+`ey{6$U3a5?F5zxoQKRF5mwxT=0Nv_DpGSV< z+(q4UW9m(>P%mBBPtFk_3Q&UBc+WA`^6Jdkg;6!DQai0FbMaP${RzQ#lmQ5KaB0db zKP(9fK(OUUcG1hGlSG6P^OK#9$mcT4Up#6P(EmG}`=4yuhsQh66}rK%Pww~^(tP=i zpYfLEI)Kztw!(^5y$$~23d5^V|4+olocLj-{;@2BnXl{(?(4lkJXXEJAh!KBlk8d7 zGc&cijM;%&m57t6QkTD$&IcH|Zy7amyZ=+ou2LBpR5EgKBhmyO4DzZW8;J;;oS&wB8%;x7-F zinS9l*!i@EyW3fpK#^2xsAsT0*J2VZCNQQEbIC#B8B66-n^M#M)NFpE#;XHt@ZN(F zYKwnSZ|mHD1eob+0sQ&z&?!}+LJww=!E}+AGPnoFS5jm+oVZEvEYTk`C~S5yyT-M1 z=K+0jFyPJy-6E#N?CQB^4wfa-ihqLBdsJ0_`-zuyg;X!ilv}unwAfFA&^EC}-*#75 zu4~cj_KZefnw*Qo8JQabIPh2eSx;#E4H%FLH<87L&@ys8O+c!4&yoXb(5j|o0fWzT zWmn=8hdoO^H-rFU8yHj}f}ZVU5J4X25zGAYB)LsBNG+0Ne}88@DpR|r!6)z4KR@jE zmE?wXFG67OGhV9v%fR2lh4v^tD>#5)Xng00*}bbJ{M!v*Tnx>r3|HcIo{rxhjdqmw z5L*5uJSMHHl=0ERdb4MEv@V&mrGPkw`n0LOe5vRfD|b5KmVE4^lvZ?K=T+#qoLu(R zAy76dk9$c+$IDG@cp`5nfO2HazrOTlxP_J`5E#==OD(YF(rvG{<8Mc6+&IekPu!Gg zKYWHQwd@_UGw0+LgRYXjWi=_e7ou$na<+PLHB6kf8Z)Rec6i{xG!g48SElmpuT#anJxaPe1J~R9NgFCxF zBN$jxK4&-wcjXcC>WhOcf3t7b<18)cf+W7+|^p(G=&oW$`XkfoocV1_q|~5jS`}?i zxvvBSMKlbV?E>=c3z{!Sx%+dVl*COR3q#@8qt#K*-l5Jip0pm>8Gt1(M6lwNB15fe z+G%XZHc3UPDQTKfX_s}y7E(6UK21#>$zcmhuudc&52PxeYO|{g26QWHt8D87YayPT z6;$JOq8%+7Bb15CKWKP64Cb(5k*yC4V!sDwQ3jG3{*dXKdBg`t-l=-Bf_-~)GWUm% zQ?KJ}#qRrn#%PZN8t_8IR!kE{RiA>ZnzS{;+~-~Am@0!qwyk4<9Ot+L!+0G8BFg6iYxCtifRzum<9HY!(Dk}zfe5_mujP? zLcVf!tMUM_8VD#`kw!MH&xA>>a%X>jJNW)`30>&;0>6i?v^?V2zE1Swv<%QU*ZJtB zfipAX1YFzmNp{k?Ijhyz@T7)-LgCl}Ftus_)Tr%WSsrrj5B*-IF^eblwUb6Az|5+ZoyDJn*~|mEWc{B82^?`tG}(^~ng?Dar7|+Hw|{4j=f@sJJ3@ zx5-ZSb)ve^UBLV9r7Stjgl2IlKYQimCL*#PAMjtGOThU*Eu%#LF!2A)EcG`W(`ZaA zvpx&o_a`woiIUpV{$&Xxl8J8u+^C&_;!S(W#c9REiT=NyY`3utsAHhBoZO@2_%?cz zy|1c&Ui-Es2RUcTAL`vq9u?7>Ql`Edb3bAL+CW=me+ZkB%r&_;m z%KYaay>k4LBc~$x!H;xw8Tls54>>{0k$-!xG%LvGO;w7D~ zxbHL+l>pcCkrnI^SXqD}o178UW1i^s(VPAc8C`vx=K84(li;Q9<|TsRJ{=`!>r4}Q z7~kI1tYD^JPan(J-h*e-{^H~!n^}VFWarm_ z?yW>e8N@qtkwZL+OrGl4YHLR?E-OG%Pysa%2VHmY=dgc`wSY7hsCigc7 zCCF|T-)eCOm$IutAl0_bQ8z+%0cXU8{A~qpLCuk(Le4Fw9>z%*ak2Hs4qj6l-tT`T z_%U%s|POFTyfEh5SrAp`Amx)4laH%Ht?RFrim>;ao_E?Jj2q)LTbwG&Xh#(pnW5O6v7&nquouZM?A<+F zLd?7s@b4Z6&xAn!LK>6;Q7_~>vMUeL>2$0;-Az^tXRO0+)BHwfP0xw6vVz<`Wdg^nFs&v!aU6}@7s&4sLgN-?$W|Zt+*Q-^faZ+TU|BM2dSslk8CC_-yX>v@GRT6=Vry$a^A{P63(s{$nJa<=J3Lk^>*s`0g@G{NA!!<9rq$qL}WL;0o- zzNYhe-h_L+VsyG)dS1&B--VK$<(DP_x24Vgi^bLWU6?u}ySHRWaHP*TVKXxp5^(tv z;7aM|5&fJ8l`OQK~I3Nc^d9?S=T$Mex z%7bK|)~h^5Jf&x7)0YF0=o`o{R(*#uX2Jv2qBeq1il)?z4k3i*|HxbLVL%a56)daLxQBg@SYOen@u3aRN|B$R8799oHB<6a!V~G554utAEF`VUfAEVRl2{2 z^`BpOD*MU`UP0^;SRC8N;!*3u1!%B}(mcES*`5yDZ7mL6nZX%L)td4&_wbRCf4*!IK`k1<&Qb{!FC&xfgHR_(bG* z6a)6#AJO2i{Dh9U#*UDl_$QZCfWrQi-{o1lPE~wCu%vfD9)UhU5L*r=-@VH%Us-|e zN0il5ou6`y&?eDDXu4$2`U>{hKS3)y)-3xn9$BpMUxIo)8e&PnC7}r@GBdkI`WYuqLnAb0?ja_Q}{(wO{XB6Psl4PWArs^wE`7i=4_d zQrDJ74o8e2JII>K-W96Lws=^$kGOdc93SBh1nqe`WD6x5{a&FX*L;$uD22E4oKYgcqkjy4H8+hP*E>ES4n0lFvuP zHoO%YVVYKPZEV-~zi?0@p(;ChY*$wJdSumok4T_YR%$DB0~bW9!(dyijl1=zi4JMQ zJd~6E#h!BF8$AxQEPa+SQYp5nDby)9&M!R#f@EQ?3bV_kzCXgHAGAb?^TMQA1_Vs;RNoYowEy>+M~M+^C?qbU1mn zv2U1c#SQeh@)f5|bES&gEPx93`Q0ZwI>}>iPYZ%I=R~9J)Dt`)<-A)W9fn-QwS5`7 zJKtFsN9nAGmrHLMD;G36Un+ZUQBz3Vv?6|DqVgsOW_0X$AqvsL8*?KH)uL|tc#pXT z9Ur;jcqVYTz%p{;&`j%c-lRj?twfs~eF6Flf_?vbX0_ap!=u?Yf&IhvD z3@H)}v|D?CfqTXlM{T=FT534?pj`lSU(rI^z?aKa zQ|xa6up(vp~iACgXRq`&V{5#D9t^DByQb%LG!fyNTaukPj=D z%lVdB$+^dzTW!)atg~XENq$zZOd)T~%`B(9$2o1(vF+(K-xXv|+`#qYe<&s|sRfK?zANkt7Ak${A(Hn-Ax%S$cnBadj%D;~qH zN#)S=j>E8qa|JAci`7ok+X6JvXP@zp|aqENJNw6cPBW1`{$nh2skM zSZAPRqp|7Fc}v+v(9Kop|Jc$F{z8@bQ-V32FEf z4Skc%J|XK=SWC@0s`*R5t<|3iDdggK}7%y~VR5hZ@j0fk>BmCnuWL1l+Q1kY0DK!P@bt=fSx+5G7z&3w_gZKz>azz;(=4|G7~+X7(Mw|)5wcN zcEVz`7jh8wBy&5V@R^jj^`NcN>O`dFSi-lQCiSs+deMX#M!vkQ?x{AlTHCge2F%jQ^1Y4s_2Y&=-#?X`J=DDZVe6p1>NZs1>zbvCfy?}491|2~9>I7j zdDB~d9J6kcvi?xaG)=H9YrenLu2;!Co(MBnc`7=6z_Ylq`@=n-A+;=HpK_tC?IPns z-DiW0SFx)l&K&FA!}$aDBn#WGS_yn5Nlj3EO6G?;dlB+dQXfVe4g_P6k%F`I*Uo^( z>KcQEkRm>QVLnY`x27cp%#gTN-SRsNhZ^#G=wP*tQ0ws00F6K#zAEDke68{B;Mw=i z`n`y}t8)$SGxMsj0jVx7Rz3C80ix7jA`*dTwtMVDi*V z`SZw!t6JCXLcrxhg?(COh>)NAQoY_|-(=4xUMU)-7Zt&K*!GVr_sS0`6q_xdEix4h zn?Y+=g*0X>Y*pwkJip?wrRT$IRe;uEV>HYcsA9UFO@A}v&h(PCH@@?p61t?)35|V5 zd4bI3BE0jfSsK*I@TRiMws4cH(#XMf`%YZx^@bI6J!dt)=^|G+8LK;;e%5(-SQ;|#VqSHXPMSjj`;R$vjSEi= zaX%EDXLDJgJRbmUu*s%5Le9S`yLLF>@#7hF((9Lipdx9I#yu5n~RGatr1h+4ocD=<_c$;uc&ncjUJx- z#rsDQ_pe+Bm}&DN4MbDuS2I@oQYWIDa1ALS1IcW;=K_(wRCjqAQ#_ zh{Omrz)|q4=s@3OW)2}u9e&O6gkmSH=!lVLYiHmr1=_WNo?-MN>jr4O?j?v$EBLkK3>w zsWb77B0Lgle7R~f^BnxZaPph^!2A&^BBJQLd#dS=GgqlNPRSkLfT?70DeCHe*eF^<)ZKPqsuSeF`t+oDDIp&xktQFW}>{hFl${k;4tCq@AhZe z-I2x1@+t!;|MKO2cAdmTZnc5IK>UQE01t@cc0*A1QE3zo%p@R&?2W*<=dxBy+Pl?V zKH!c5kk-gO>$10cEiQSjkb_~-`j;I-U0wxT4cDvzTv_C~S9{&Om3Q#-_8n!W%Wb-8 zY=#LPssn=w1sgb$?9J}fR~2lT?;YKn7rk(gQL>}0Fyh&ove&a(QRzCatqbQIX97FB z=gD1t6djSrmXjPL(J2{oZ3C4Xw(CQC8b-#UxhUK3GrlR&-*Bk$t=i|DBsfNfHdz6) zSVvCft@fcr#_+thVENVu0&}26eTG_{$wyTty#j&ZwNY-b)BP6U^9=+79}9{Gd%4V1 zh%8t_42zXrY?Fxj#K2@M+pC-HJmJ|Z5$rng&4|M?G2Y{Vz;ALa<77^wgS7Gpg&VYL z1)jd88At+U<=^_cibO%&(+AXtMFu=e-4tl1$1)Y|%1jcOblhrrx{IEOkL~w=;;U%w z9zeUJ`LLsPtrKCnD^cCBu|gf&1BzvLx+t~5J=}irm?^%?tCrsYvtxy9CO=Dt2t z+8nJ6!6w4i86ymeDcyF*OmFnSNcb0vwqA`GkM0}hmxDy2z!+z70}0*3H~mn)wc5oc zo8+pM-C89kD<3|XWf9aiS2>*R`jGk?cPcl-f6i1$BKtWeUcBqM2)bc3d^4YuLnkT4D6;ZP zV`5~JM{8_=Fj$|iQrBSMPUh9=)CBhu+`=COo6%^Zm(>rox7}tFy|!mQ9XuU$uv#mL ziGeRXn=524Gk02;PsQz3FENEWd4I%U$~1;q4}1DXcZy)%+%28iBHLC&Ju23A1K8{X zotSbDD>Gm}N0n}lMWxI1rg{%jN5zbUimsD^NYB!;Tb&lLxUlZJ1YK_~{HlGu;}hP? z%X6sbq3Szb?@aVoW|eo_;Lz2@mG(UF#YFVRF3nxRG>gRyn#D`H^p)wb8i-bGIU?vB zm|wM(x8zh)GsE2LLwq({c^muDIyu2pQ>Vg6Rhb_cuD_lk*PVu0YM`4I%^g!8$F22l zjJba%7vK_qM@xsQ$+9+DvkvDP$HAIO!Zwj+2MsOwDuQ0p6S3X^<%IsgJokajPcyS6 z=X0Z#$#_QdB5f2pQFlxF#wHd*1M_OjzOQ_+M70DYdhb^^e}fo%#%m4G=n|TR?VLgm zQ;XQf`2u3-sq;+cwoCYxmR3p|S`L>Hp_FvtS2$6#Dq802drg)mMxrcp%^l~_iEqKW z2KpQd6a(iZ`Ro)3%QFl6um6BuyL>dsz1J8ZyKz_Ytfz`TbOP1M#!w-(eDII$RVB5n zG-#%|hfrK#AML{YVQEH&_Q+EZSt2omXE}!=*MsBOt@L3HUnH$y0_6Y{5Prc~bEl%R zcnO4Qsjc)pyq}Yeag%rUNcC6`SqN|P34;ndj2xu*%CFlZw_Qs0g$=@KS8HgQfl8sC zdvSLuz}8$UJbXeNhZb8E^S#cloX@ROxg73Tc_@!jDJo>77^_<|6bU;PGI@7j1f~A* zkdf9M;e1DO4JVyo%F}sGc`GSkT+9HyCbGV@v_TcVIBQe^jKHp)bL%0)V^%S!tyj!5 zWxfrGjgqc48?DoxBZ;8(t$VtPiJYK&;`cw#wigCfCO7en&Laz8Uy&S!Rm{G|EzWUM zr)2#TqH=q=dmD0>VuL%Ghuh=ja;ml z!N#n*F^~x3)?r#6)q-0V?_OUm#G$~*5FN!HAbRTwFbvRTSz~1)^zVyG)60wa-cocu z1B1~z1d5g;%Fs;jSEu48Us6&sTC#NA?&3GZ!ZG0YscO(H3xUBRz%?Ob&c^n8t)Ww| zf9tvkk_Y?fRj8~q-8yQjI@E;L#5e8l>~>Uv)*PqEaeCyi7QulkAtEzZx1!up%fjV;m$NxZiCQLzkdbaBQBSYf8Cy?>_=dER4n_RC4U z+O0L&!3PD_JzF0a7C%=p^w1NaZ=I1`Z5?g-wOd9ud7E<+VDS)vvqLx&viY7}Vv z;jHp(F7rlhspS)Ax9`Tv`(S?8~^T!@CSvw5KP=Ijj8}ql|#v=<$-ea!;8-B}N80(zF6n zaFvd?=^o*TV}yGb4{;mY3c(|C#>BzAdp&sb%yj#3NQ7$VJafbLW`^l<%-}CHIqPhH z>|hx11t^&-9QzYaHXX_Y-eC8bGlh!4;yH6vCqpjn*HY{2J7|o&=!br-W^Y*4MI9|s z6nB|?uYV-FTo!qEX&5|kme->SK@->JiSf((tX{l5w={k8WFgVkMg7)d6G%_qHZ8Nv%t_AHw1&&^bh~o9e>89x* zUB2)#%eSqS7nJ3`wOnX8TVQAz`RJr*vJb{n7hn68?o|}l{lKldkGagCkiL3S?a+VnUg@YMDB=9Ks2jj@T?;>WvLL6I z{Ak2JmXK`va^r^erC#Yk<47ml5(~W-dGARh>#$7yjbXG<}d%KV$CA zht6jXgQqy~uFNh$*3e@}eg6?2dP*iC%BTpMt2oU=ZCLW=)#7$r+2uv(*^?ploqK=q zRMY*D=?)#k{mCLVMmhI4)`t$qVIhx=&oV%03_*m#axTYoC`WXqZBTg!l1Qn2-YGWK zJ0U+vsUTxG^V{~_H%ElyW|vT>@4(TZdGYuR1BC5LuVed&iE4;gzn2=T)2?rVx|V*b zTHj$-Wnl5dP?SY_HKvz~9Uu%pMq7zF!`%JFqXxZy`z09&#UQntcD3twhcKId`Z>`|_i1AzORIJAdByMF|ZSP?l0*(YKo7SXqZQ?h>f=tm3JU+}%|Iqd#zKI%YCP+U~~6a%d5V6#+Z zeJEr9b*p=akDG}GOP(rl`sAToBX#^YubxsKDeZt-TgTBoSm>cOC}6^`%|3WYRc{bF zeuxqsVgow>>(Tv3B(Li19b3ZS2VpVFrSmOj3F#L?3i8|=*9PJEm4gt~?wQLU~h zXH=~!QH~}iJb15Z%>f-26oGCJ@oye%wcJUr!U)3WbY7(F*OV5_zKo83GbUg*^9oWU z^4P)p{X@GyydDGF7Jlak$j3ue=T7L?AZnBH!dBU4sKSUDH>Gkc{T(B({*t-;QbTPo zZZ4H%8c>@h4Wf-jJIgB%p z0il1_jW}Yy4%-jVK=CoDLy>cG_M?41E5+X6QN&=OI38W-AXCp4#LpD>3~4B4DC z_Oa;S{~%)X7xEa?A=i1R)Z!x}`qlQbd$lzf+QYl^2~V&qCWxEJ6<0APIO6b2m;r4< zj5SnjCsM+@wml z^XKMtT!rVD&%*Z=P3C76%Ba*LifnFLCl=J$#eukozqNQ ziYXEmP4f_iCw<3FkH&4qeyCoW^6IdKk|uWa<}bDzTB8gX>G1t#1RB#y`pXHMeXkh_ zPghe7fuxEN`vZbF{IdUt2k0Clx%_G-!6;guc1`8h?m_u{v=!yTZ(aKmyg-i<1fX_( zF(`Ch_v2Q(+HLQ0q3QkeA2szmJy1YiF5e!~J5FfhKdR^QHyzVA9oHgRz#CzVS=|`P zxxLp_?-KKgfC=WD8Q;_n8~++`aC2;OPg`CQeuQ!2rQ*bWLeZT!||0-{(QRY-|c2hzhu~c^F_awNg41qcxb#aL9o1DkNaj z+27LTRVGa#yoys<#sC)4SR2rW)$*n){ULs+m-@pOd-xmON=jtTlWrT}7b00HCCNPT H$1nd6&RdQ) literal 0 HcmV?d00001 -- Gitee