From d747e1d2920637c6cf6f40f4094aafb3b76fa16c Mon Sep 17 00:00:00 2001 From: FuYouJ <1247908487@qq.com> Date: Sat, 29 Jul 2023 21:31:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B5=8B=E8=AF=95,=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=96=87=E6=A1=A3=EF=BC=8C=E4=BF=AE=E6=94=B9PluginLoa?= =?UTF-8?q?derFactory=E5=B7=A5=E7=A8=8B=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加测试,添加文档,修改PluginLoaderFactory工程类 --- .../alibaba/datax/core/util/ConfigParser.java | 1 + .../datax/core/util/container/LoadUtil.java | 11 +--- .../util/container/PluginLoaderFactory.java | 50 +++++++++++++-- datax-example/doc/README.md | 48 ++++++++++++++ datax-example/doc/img/img01.png | Bin 0 -> 73110 bytes datax-example/doc/img/img02.png | Bin 0 -> 62843 bytes datax-example/pom.xml | 18 ++++++ .../java/com/alibaba/datax/example/Main.java | 19 +++--- .../example/util/ExampleConfigParser.java | 3 +- .../alibaba/datax/example/util/PathUtil.java | 25 ++++++++ .../datax/example/DataXExampleTest.java | 24 +++++++ .../datax/example/ExampleTestTemplate.java | 21 ++++++ .../example/util/ExampleConfigParserTest.java | 34 ++++++++++ .../src/test/resources/example/conf/core.json | 60 ++++++++++++++++++ .../resources/job/notExistPluginTest.json | 36 +++++++++++ .../resources/job}/stream2stream.json | 0 16 files changed, 323 insertions(+), 27 deletions(-) create mode 100644 datax-example/doc/README.md create mode 100644 datax-example/doc/img/img01.png create mode 100644 datax-example/doc/img/img02.png create mode 100644 datax-example/src/main/java/com/alibaba/datax/example/util/PathUtil.java create mode 100644 datax-example/src/test/java/com/alibaba/datax/example/DataXExampleTest.java create mode 100644 datax-example/src/test/java/com/alibaba/datax/example/ExampleTestTemplate.java create mode 100644 datax-example/src/test/java/com/alibaba/datax/example/util/com/alibaba/datax/example/util/ExampleConfigParserTest.java create mode 100755 datax-example/src/test/resources/example/conf/core.json create mode 100644 datax-example/src/test/resources/job/notExistPluginTest.json rename datax-example/src/{main/resources => test/resources/job}/stream2stream.json (100%) diff --git a/core/src/main/java/com/alibaba/datax/core/util/ConfigParser.java b/core/src/main/java/com/alibaba/datax/core/util/ConfigParser.java index 20039864..24f43d55 100755 --- a/core/src/main/java/com/alibaba/datax/core/util/ConfigParser.java +++ b/core/src/main/java/com/alibaba/datax/core/util/ConfigParser.java @@ -168,6 +168,7 @@ public final class ConfigParser { boolean isDefaultPath = StringUtils.isBlank(pluginPath); if (isDefaultPath) { configuration.set("path", path); + configuration.set("loadType","jarLoader"); } Configuration result = Configuration.newDefault(); diff --git a/core/src/main/java/com/alibaba/datax/core/util/container/LoadUtil.java b/core/src/main/java/com/alibaba/datax/core/util/container/LoadUtil.java index dc5b22c6..0891e4d6 100755 --- a/core/src/main/java/com/alibaba/datax/core/util/container/LoadUtil.java +++ b/core/src/main/java/com/alibaba/datax/core/util/container/LoadUtil.java @@ -184,16 +184,7 @@ public class LoadUtil { ClassLoader jarLoader = jarLoaderCenter.get(generatePluginKey(pluginType, pluginName)); if (null == jarLoader) { - String pluginPath = pluginConf.getString("path"); -// jarLoader = new JarLoader(new String[]{pluginPath}); - jarLoader = PluginLoaderFactory.create(pluginConf); -// if (StringUtils.isBlank(pluginPath)) { -// throw DataXException.asDataXException( -// FrameworkErrorCode.RUNTIME_ERROR, -// String.format( -// "%s插件[%s]路径非法!", -// pluginType, pluginName)); -// } + jarLoader = PluginLoaderFactory.create(pluginConf,pluginType,pluginName); jarLoaderCenter.put(generatePluginKey(pluginType, pluginName), jarLoader); } diff --git a/core/src/main/java/com/alibaba/datax/core/util/container/PluginLoaderFactory.java b/core/src/main/java/com/alibaba/datax/core/util/container/PluginLoaderFactory.java index 8fe6474e..9fdf49bb 100644 --- a/core/src/main/java/com/alibaba/datax/core/util/container/PluginLoaderFactory.java +++ b/core/src/main/java/com/alibaba/datax/core/util/container/PluginLoaderFactory.java @@ -1,22 +1,60 @@ package com.alibaba.datax.core.util.container; +import com.alibaba.datax.common.constant.PluginType; +import com.alibaba.datax.common.exception.DataXException; import com.alibaba.datax.common.util.Configuration; +import com.alibaba.datax.core.util.FrameworkErrorCode; import org.apache.commons.lang3.StringUtils; -import java.io.File; - /** + * PluginLoader简单工厂 * @author fuyouj */ public class PluginLoaderFactory { - public static ClassLoader create(Configuration configuration) { - String path = configuration.getString("path"); - if (StringUtils.isNotBlank(path) && path.contains(File.separator)) { + private static final String JAR_LOADER = "jarLoader"; + private static final String PLUGIN_LOADER = "pluginLoader"; + + public static ClassLoader create(Configuration pluginDescConf, PluginType pluginType, String pluginName) { + + check(pluginDescConf, pluginType, pluginName); + + String loadType = pluginDescConf.getString("loadType"); + + if (JAR_LOADER.equalsIgnoreCase(loadType)) { + String path = pluginDescConf.getString("path"); return new JarLoader(new String[]{path}); - } else { + } + + if (PLUGIN_LOADER.equalsIgnoreCase(loadType)){ return new PluginClassLoader(); } + throw DataXException.asDataXException( + FrameworkErrorCode.RUNTIME_ERROR, + String.format( + "%s插件[%s]无法加载,不支持的loadType,请检查程序代码", + pluginType, pluginName)); + } + + private static void check(Configuration pluginDescConf, PluginType pluginType, String pluginName) { + + String loadType = pluginDescConf.getString("loadType"); + if (StringUtils.isBlank(loadType)){ + throw DataXException.asDataXException( + FrameworkErrorCode.RUNTIME_ERROR, + String.format( + "%s插件[%s]无法加载,没有指定的loadType!", + pluginType, pluginName)); + } + + String pluginPath = pluginDescConf.getString("path"); + if (StringUtils.isBlank(pluginPath) && JAR_LOADER.equalsIgnoreCase(loadType)) { + throw DataXException.asDataXException( + FrameworkErrorCode.RUNTIME_ERROR, + String.format( + "%s插件[%s]路径非法!", + pluginType, pluginName)); + } } } diff --git a/datax-example/doc/README.md b/datax-example/doc/README.md new file mode 100644 index 00000000..94a5e46d --- /dev/null +++ b/datax-example/doc/README.md @@ -0,0 +1,48 @@ +## [DataX-Example]调试datax插件的模块 + +### 为什么要开发这个模块 + +一般使用DataX启动数据同步任务是从datax.py 脚本开始,获取程序datax包目录设置到系统变量datax.home里,此后系统核心插件的加载,配置初始化均依赖于变量datax.home,这带来了一些麻烦,以一次本地 DeBug streamreader 插件为例。 + +- maven 打包 datax 生成 datax 目录 +- 在 IDE 中 设置系统环境变量 datax.home,或者在Engine启动类中硬编码设置datax.home。 +- 修改插件 streamreader 代码 +- 再次 maven 打包,使JarLoader 能够加载到最新的 streamreader 代码。 +- 调试代码 + +在以上步骤中,打包完全不必要且最耗时,等待打包也最煎熬。 + +所以我编写一个新的模块(datax-example),此模块特用于本地调试和复现 BUG。如果模块顺利编写完成,那么以上流程将被简化至两步。 + +- 修改插件 streamreader 代码。 +- 调试代码 + +img + +### 实现原理 + +- 不修改原有的ConfigParer,使用新的ExampleConfigParser,仅用于example模块。 +- 提供新的PluginLoader 插件加载器,可以从程序运行目录获取插件,与JarLoader各司其职。 + +![img](img/img02.png) + +### 如何使用 + +```java +public class Main { + public static void main(String[] args) { + //1. 在 datax-example pom文件中加入测试插件模块的依赖,默认导入了streamreader/writer + //2. 在此处指定你的测试文件路径 + String path = "/job/stream2stream.json"; + + Configuration configuration = ExampleConfigParser.parse( + PathUtil.getAbsolutePathFromClassPath(path) + ); + + Engine engine = new Engine(); + engine.start(configuration); + } +} +``` +### 注意 +此模块不参与打包 diff --git a/datax-example/doc/img/img01.png b/datax-example/doc/img/img01.png new file mode 100644 index 0000000000000000000000000000000000000000..d0431c1af25a247fb919bad166daa320ec6a42fa GIT binary patch literal 73110 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 literal 0 HcmV?d00001 diff --git a/datax-example/doc/img/img02.png b/datax-example/doc/img/img02.png new file mode 100644 index 0000000000000000000000000000000000000000..5e535a4c4aea70616c0435224f1d98f5d7b76faa GIT binary patch literal 62843 zcmZsDby$>b_bu&EGJrG!0|Q8RNr%!B0#ec_AdPf)r=%hw-61h_jidt79Rr9o4AONT z-tT>XzxO-m{KW;=#XR@@-22{pt+m&lNc9);_&Ag}C@3iSiVAX?C@ARmC@839AS~c7 zupPJ}3JM*HqMWpr2kP$U@J5nvA5S|vEFLlZ%B&n`Py?gs zv3R3U59y`B=uF&(7|;l`U=xg#vLI)YuFI*a-c1#a_Xm!{OK*!Br?$th-oJX~(cIFU z!Ute`@Xox_VW#P`^I;dX;-&b2aCUcd|I3~_TOv2Mk+U2k25to ztvzov?ZIkv+tWWAV9th-u<5`Gl+&91Z;!M0Z_bw8x!TXacyE4oU-;zEzP04BhA-s4 zZ+Ny{R@ID&OA32s$L9=g|qo z)El?RJ^P0QZD+Xs#W!N8MaE(&1qRd9#N#DzVcy6AW?w3+q4j|ezE{5=*cIOViIoUO zhqd0E&f6a$zR@&p45hVbm+3T(NL+n4$DJ~0usu3kNi+6y5_R7%kJ>Do_{@#a*%mc9 zq54;RsIP&fGH) z7~&kmX}pR>&sTyMQ6EsRoX$H)PUkBUHv$iZ-JQqZ9bWmKElwBMt>Yde4Ln)Gk>~z* zz)6_raoQa<9r{VUa$8cT?YAJ9c62cjI!s|M5wvs;As?D76yU_I?yw zr6X{n1@FcSW0x!2FKyg^2ux4dO&fVv;0k?aFa|>DM&Q+J*A%Wi*PW?-PiWyPVCx>5cC^H$QLA%eGk2?ui}2i5H#v9&g4y-G1VJz8ZdY8>&0%fB8dv z-N@NttLV~WO7Crx%ZT_ia6%J`9aax~w?}h>se~PKm_O`HRg^U~_C^@|Saja0{`Z|M zc(yVkdG}|GiRqWhE<`K~zTeHsbX$I)vF}Mr8piF&-L=~1M~)kVDeaO9>!cj|>q}lc9A|Uys+um2H@&xL zG~2eui@XPDl0@^}R)XLUw2_V z#oR&l$;iKQUm&kE%86{gc#;@IQQCDh36j8tR@@f%SaeF6Cb5%#AOx?{sO{cs=)}5D zURwMsrAkrI1>n%Ssm;7G9r|_${F@o16RoSHC~JEU={TinHxOY^zo@Yj|L-%m3_uxv z?r0PEAyRZ7*5mEL9{fg+xRe@I%*u=_+?;9`t&D}jsjRTY+Lz~FsW=A@+*vO^3_X<5 zt+07#iSktdf{7~j5;2NZ#59>41JfQ~tZV;wVpqoktw4xI0?@JWo&-P}~Xs@9lNw#Y=3j*{zngNnjH_ z;}bo|$m7Up$am|7tNIRV#SMpIXxinpI;+?iN1)mjaAh1$yE=8;r}eWjWv)qA5(F;l zZPnc+*IAYS%@FO#$t_XU{^d^9+0oiIPWd72^99yxEd68re-*E-!5%J8 zF_#l@mZ>q7%!0(_Z-&1TPFZDhX)>6k&Yr;@Gjts1-(@nVfshV_B$TJtZ~)VxD%i^K zCa9S{UqDKinR-U6E+pxvjogS|ANGiQDzg?5#RI1cZ+T-U`0vwIA^g42^i^~t`Q`Rv zb1%I;{bNlHytCrX3Zu3;y^Hj4p?)(87nd!i1b#wDXV`+`XF(j_kL5K_i>rS&R7JH1?Lw&s7Y*b zwjRoGC5rBpfBmaW5lCKF%WHp}={O!1wI57o*}py>alcRX?pjAn-Um&Rch@fQ*VpK? zAZ+43IVBmHv_GOy4%T#}%qDdE<=DwlO*Qa3E8(&2x%3JPtw7bQtz3>K<8o_pKhQb8 zz6I*G>j!2vH@o?UlMAZ{GeKMTMNQu5R`2VZ*qx=e7A`WCnrA>&9TBsKV4Xnho8Ll6 zlV`!&igUngB)Dqdo6NuwH-T5kIAjXU|2qvh%dG%t!C}-w56TQhU-rLiYuPINL~XHG z(?{cS(0*0vyXXIxVD!#Gwt$J}FF&Llf+ zg>+%gF*#2~#p%#Jt#&9P)nY9*naehOE&V#X!tzQ6EPY=9sVh&BSJ z`DWKL?~}<_iv?*$+g_);TXZu(n$`}EoS!IpxhVbMvDS3F(w!;1V(cKNe)-=!=9LLh zJOfIE@d4>KxE+vX?Psb@jc$@^d+MAwl-!3!Hem@?5wQDgy5DlpUN+S3d*wD=piJft zJgx=U{KVr|ejsAFJm>YZkCY!^lLFgSv^KJwaQrPYUAiN=kA)bh-oJCh#r$afuWKY# zvJ)zSQmZz5O=EUn1g2X(UCu5xv#-pPCo2qu$kqm&6i78|!-#}fi3lHF&8bIHWvLQ~ ztS5+H>JHqIJC&`sytNbhcj$iy2dL};D?72*R#`}Br4tYKkwSFC@2CkP!y;yYl1ldG zq+{9d%1(`chD}ihDj;4W9K|mX0$T*Ygc1HrU(Ls}r%BBv_>c^ZmNjuAh1Ms206aQk z@sDu{vFT5>D%)n}+Hl$%SCed;F6jPh7-`VqcVjqSsCs7OUO)rDpc41tIlKSLg!I+# zw>0lz%*40F!Ny2>5qk9G@Y3Z!TjRvhntp`rghDs8MsALFEO0g!QMqm#=l;;wddIkNH3;cRr_ZFJQeUHA8 z8EF%FHv%=iA~%u%J$oS zm8espzoApEyPC>nynimtu2&291;C7706lG14!7eQbIZuRipC}6{5?dTA>}mGZHxtw z=T2lE+wduX3@-2&?F6x;8vX*yzoU*nxeN{&O^06zEqV0pY=7Mprls-Qx#Q;Q=s{{p z*r3$7C-hzLRgpXIMY4kP95X*9A3^@Ica+VA*5ok#sTO{;K_U?&z^@4BN>QMB^7 zR0zuVlx+V4=!J(-z5*OSMZxx_n&J`9h7iv=79P2JIHo21JZz)XceQOG*?5}w;3;rR z#hoU3>UnnGX?DnDy4uaP%g58~SNA+r7Jcp17Yox~;3&()GPfGs*3FjiT}XLlv^6Ze zhIf!el6cbffOa?b8G+cLR7amb03T@l)OGP1stTiz3y|iR} zSzXX88Ae_>y>TQJZqIiH8CR{83h^;fWQeBLVtjQKKBGO@@lx+U7-4{S`@tATjCRJZ z`|r^%)pYKzdotr49Q1yL2gG1zq$5Ui6x4B!h~5VxvepZI>l@I21C5P=H ze{8PLkCp^D*&OP^1$ol}P&(gsjT|!4>Z+%PCBSdbklPRZL;}o19$hbuJQwHb5AztLC$`mi_^lU%b7@2ZLRrAV}M_z&E zA+9UU;6^jBke0mOL{%z)p7r-FGX9tkXNvfBKh!Y8eDLM{m?E?1Sq)qhyG=Mn@k0g0 zGbs~*3umb?WXQ3GJ5@9O2SWtTNd;iO==J{&;$+sY;5V!rg0r?i!x{`!+0J%@Xe2Zw-`jL=VZ;J%IZs=W7(Dy?jxb82*iotwjA{)e(^*(maUZ=Uif6(j zet#=Z#WXPk-cpKMbGz6`^Bzdv9)r_-k@1{K`g%mgOBnuWrP&bJS*Yzdt+%ZN*!l{+ z-D^hzHu4IZa({s`9@I3C;3psGL^BYuz-lo8xzQtCrxPqF@$DWvAgcyy$cM<95l}|KbNvgb0*J#frhyURqpCHZ)?b7Y*$f zB$w4n_ie$AAVSC5y|*EfpRG> zYMsMq19kzowYc1upyv;h2>a1KxMjXk@FF$pGejqTu#4y)%DOY>ilVm{Ch5UIt9_tH z7dHP<;9WQUj^C!tLO=QuQ3ejS&TDD^8?bcnZ)xOtcK+HQQI=3>{BddYZJ{0Or|Sfv z2o^c=7C%A1HCqn;0Xo{TY5;UzIz#G;)y($kC;Npn(F$pAuFk61$i9+;Xrb&|MlQzc zk?@hgxh%Jl5X?em;9{O$XzbWV!0}ro6{uuF0oYg)6}3d=RQ7xRl|*b`FWx4D-CW&~ z**VfWqdq?qY*K(<#Om{i{cj0Oiy2J?@w3)rHI$6CFt|=cYb1Y_K7ju5?lbjnmt2de z9XUZWhm_1mMOJxDl3WnLBX|Y?A6}i#lkfGiX4V zO%GsuwxH^yFr3(bZpXG9iuO}dmu%nD*{CfOA}3tMRFJ_;t~w>wR*xUv7$a{OKMs=A z=u;J(qkP0~GaO}jf)loa7T!ycn^g))NrpkN`WPMya#!frBc1Y5NZJgHu;8!=TaFYV zG>|&ZNvG3`Ss=DrDK&pa z%!lDq`QUNL_0gN+EV0R?j%2+%QV9pm?V1m6{*=W>+rlo>1m2q=VW-qbVSf+0`oGDv z`fCuKwd|lYo|bZ$R0(+HqGhjPegTl3+FrFbYu19I19Coi?ABO-)}v9ddSFBi|NEdE#!v&# zpw|Yx7)qg?$0L#l&F%;LYcRsKN=nVH2&(-T86mk-5pCl!6nw3sW9dF52!E&tjN{vl z&%sjL;_2Re*{YG21#LnxeUQBsf(GH%0Kglg(6~(uvU=*5>ce4Ei9;s}LFc0@ap{8K zR+kIp#?rXfZ+oG%+T;gq7j>Iio9UA|GpbdU6~DyKD9=Xz(Q$zriD={@V-M58Y_O;~ zlg~}FC@OSms1nCuQb}K#bj=vIjAqeg`TZyab`RRJ6bQe{K70`2l_jXhF>y5fS=5^; zc9Wi|J(ZFcHJ>R2#Y%x5g&~+5`sVj&t^^Y(EBz5022yV2N3Q|~ZqZ|QnNh4;;}$nN z>4^Ey?n_OtMpa_6NQ}dDnK2kDQbLL=oHyXkhKSDZxMZB{9@()l z66zR-}0Q~ae&l+teOG|&h4UVMh!Y2@3LFsV5T?r=eQjh31dg7c~K~4Qp3^=Sx z#Sctz0r9DnWT=Qb@TanNZ0~0ZRO`F*4jqemWCQ71T^ZDRwcldo{R_~(?A04(-LGeV1Il z8!Xvwj<;`am(RVnQu|=lxVjSe+^+t6nPnpP*Cva#rV!NsLqr4Yd)!9H` zKHNS_tBFTX1+)-_Gw)X2jgAQkAGS{`N>@Kq;q@Kasv>OcAiHdsE)xUZ&R&u-=Mm58 zwzfjX>j^pp78vIBY;h|$oW|yTHz|=6R)jo_C;Y+bVy&feMwemR59uFO?QTj6^VRWd zvjh3`Ftcws?tAsq`>UUEtf^@+v?#Gz0@o;^{xuc4!sNun)o(|#BqXN~4V=&f$iqh- zbx_O*^uLpuUWB`_KCen<6i@>_3HD7F0*Z9h$Ahp9#~gkB8J0~KL5oGbC6)&Cg%cU6)yR3@a3B~^!C>4+*@<`E#~kF zu?VW%QtmG6+1dikl{dA%)34o|*eYS&^}u1|=c|6OYt@y3)-aZy*4fV1*8WCJzB1km zE}Aal0dN6w1pms1D8&5N_l&G^Y4Tqq*$1OV;c#hsroTzMaef3<95-jjwKMJRqn%+Tc7mdaGvQ|+t^dLYfuM!) zgC>_vFEi{H9s%0jVF|Smw?VcTGb-83xF`l+T7Ij9DhEJYrIAfZ8_GIGe3||y{kuXs zW$1alj$e-|%LIo0(Cz*vBnUM!EIJV1{3ALnE8)x6<1$#~Ampjb{f3sQQZWf0>Upjz z;#1c16d`tUVI2LvkTrwK%WBOuwaX{i^R+;}m*Rr1qA4Q$lj(Q8)`Nm_GQzqYCaAt7} zR6OF>Gw>&g882`i7~mr*M-x>5vHizBHlFuf=$26EoLt1U~cK= zb;t=IfgpS9c%+$EL~I6T;7%Nhd$N|=eZq0@hi0**QZo*=*zquB_PdeO5XH z+X?;zd%}g5eZHnm5qeS?rq<$WC)(d^1aC@+Fwh2+eKp5AQE zzDy|yRqc{Iw;PAz;SsTu?BG?3OnNFjb%5HzKrq>^I!3dG~ofAxCysOlv zVcOyu=mZKDQq$6Q0*?VARTVG!uXi!a;D@az6U@?;-GLlwyna`ELR^zFN%^SEt(-Iy z{G&hzq~f8qb~?X@EJlhm#9s4gBB1=;Y#t&)L4vwY>y4%`$`V6=p_XV*?YZg|g$KnW zY%)66UMPZ;SW$tjG|A+99~zaEf<&1`F2)PtL!Q+humd2#&jdf&L8q*8>$Mv>mE6Xa zr}cf`VC%N@H$&_O&(v9en17q?i!){8J2b99MZ%(Xexqs=(C)b^B(|kLh>e}}i)__Z zal<9%UC#ynG0At4^QZke``}F-#{N*LUw7pRu$O$w|zsgdY-&9@jID}yn9XkgP zy2^$a>_tWj$35|QlK97j?@=X~q~%U%!7-RQ_M}9<@~o$e)j)*OP!>UCL`+~an9bjB zeK>_8D?+cg+DW~sJeVg~e4EdE+{9H!B{SeVdF2WqZ?6+woq_J#GGE0Fz67&(DAwi) zI(lIH%(MhK_sH zW?c#PYZ0OKdv_tp&OHA3<$U+kF=UzeHrWM?=0t)&xEsoz^o!qA!td?a!^@2{<5oBa ze@jHw^qteysF4gV^FU2zT~>&B3BT8b+bKw-x>3b|j^J3Q`=B*~>QoHn@H^kggenSO z+miwb_Zic0?QZcW3RHTEof|Afc)QE@ZNNLtqa-puNKj?fE5+GT#%r783IIL-mcu(2e8zWcr9FoyTiW&_5gH^NAIgd*m90%VwD6ht0rpIRk>D zbr)zFj{)uMXpCM96Cwb{%a2BOlK+~vQL|l31p-IvClEN73RXG4bTie0b;>^~EU5_E z123gPlLRYPj-V^ia{~Vg>jC3i+4e98?1fK5T{vdKxas@E8HtBd0Y# zWXvtlr{KXj?f9DnJ?xQ6I%%t`z} z?LIAiQ6FEcI9Mi8v=>^2-0@GDPY@qA22tp6uy7&5nn}DWtUJ@zoM;C1RXv`_HFu*A z4U&b3PNmsD5yWFp2)<;}*-&r!mVvkQaP1F(VK0#z4cW&@6A(|_Hu?cT5_z#iEF(cPa*#G(-4wLpk9b{+n!)aR9HO>KH$0NmJ_La=~{g_ zAQpB(ltq6r%x2vsvP(QIlnmQoa2hJ|)o&eshR|V+r7<1y>kh$w7=JvOgrv6z+Sujp zH+pdx94|k)?apX$oRuxz+%xmmmlQNc6HgMql)r9iSlZZ}+<0c7j7~OQE#`A&oZ#%^66s>E* z_BEz_z66pAPV+7|v;!>L-^ptLviR3sE2hEVE@8>{`q=JLOo|kb@7TJWI^NqbAkQX9 z)YhZd&cv-E0IUvB_S;_PICDixDMMnvBFph?Ik$7pJ{OEihbK(JdqQ>A6tT31!P0e= z+sdxA5kSt8du58>s~G%TtW*6#F!xC~x|gN|l889p`)ogJH{w0QHKpsRR-RUdVzA!= z*A2lDH1*RV-7OA;&Vztry~#aFyZDqbg@9Dyr{md(fUUx?d1f(L33XX`=?4iO?mkp4 z+-D2wDHbZyr8fWQpI%@OK&@>{&I41DT=s5>K4cknfE0@PWS@V2BqqwiwQT!CwC>f# zrJsw~78Tnu=ognh_jBS0GH`dYO=@T&Uwh4WP<#-&WTyAJ< zGCjGdQ`3L?oiII|<)?o)RX|F_C!}D*^Y}S9%^kty`Z4`mL@)HD^>}!GXLU-}XxKX+ zzX?k7hDJ;QPxGl3zUS6?EG5lmHyLLdFBKnwo%u=dDg9~KA)TT$CSi&&lnTDo>B|NU z2#gKS2-ql($@NxE_Uy(#Bw`reEC`9oXEaT9ZtHDnZ`&*geyr z-N*A+jN8=TCH@OIAVw;Jve}Un0j0+T@i-~#=foa^#Nxt_wNuJ?<%IjIo+-tJ!qqKn zHlJG8EC9#cZfAw4R)~6&@GAz)-z_ZdmJq12KXX0TWfx^ zDUu(HM;K^Q3z4>GFeD-EfWXq#DwORNKS}50=B*e$%?%46 zc@>*lwUUR1+<@L|^M@Bt2Rba0rHxVsoFbmScv1a9S=l2Q{?&qm5fMaZY2m68%zLvb zv>m>g=@Qr2Q^u&WJwDBx<pKPALMZRE5jsqI z!)t;jb3dFWO`@MlNl7efu=pJ!Q#|a52RWYKcs%z764FBQRyusOn!Du9`c9 z*^$K=lm8AQpxqaOx6BEL$zq>kIQjtU&rPp@p)y4=6CNdhf7Q~To#~O)>)cmWMi1kk z%6%=e)#?gh%7)jCYkL~9*{)#jm-7!` z;kWAEBn`@Gqp9b-kY4Z@@kr(PM?57!d)@s0$o#5lGt1!cg*1*Fo?NvV@3VrZX}F%m zPUh{snGqK`+aOUoWU6w;s_SVBKZsjW)+$g?50GMkAa$#ra)!Q{or7bDzLcpSWtzK- z1{>jGBk*UxiF3eD0JoJ&D1m^of=vZu1x=0fw_~!(tZ!wu^kwE-VtWQv_kXi~D!U%y2gfLp40n7wr=X_^8iPbV&g0y89E&TYR(OIu5{IF-!uz-{C(6Mt0>(G^aDrwmoh*pOFQ$drIQKXs-4dT>8=*F)yV9tzQaO}Zfl4UevsOjrY94xD9 zZw`M2zcdMXMEZbjBLSzvy%OoH@h#_0vu|ZFLfkL~U1DPjD-)IpaC!TsR?m$o{&#=- zo}^I0o#S-y*rx7M?J^woFC?ZQi{~hP!o>=L@I32ZluF)$0A6bBQlhuDc_+|>`eVaM zufwm6p!P?8Iyb6EI6M_ZC1^W~laVmDI$KLkM3a+*$QlJQkEg;MGhqc3!G!+HaHv07 zl5-7kVV3YU#EpF0i*~(TyPmyOL#9s7oPiOijU6{Xyw`1an=2&#rnCr#L%B+K6Q7W+UY@t>aYv{yBL`5_D0)GDuH-8=6ES5zI528w<`#UtoO9P&J6hXisl;;#*i8{SG_sg=lx} zI5$*nAuV6fh5a=1*=th+s=3=b!KqDQRy+@`AANI{eSkXQSIdFPTM;cE7 z%3hUeV45Uwsu03XbBh+Yz1D=F!`FbHhSTE6@|BJeJa+QP(aeygBU0U1H4=1I)pq(Z zKCxSglt=*j4t6Ae`3>ilIpcP3mm9HEU^tu2-XQ2hhN%ny+(0%(> z(XaF${p~qnCmhrL_jeM|p_uRG`!k^Jo{E9LyP&Jv3z@^^YE@4X)Ge3{>;$0GjnAu( zmSQi}0C%YCdroC80OA3*O6_MvjlED_y+h9aE#_>WvCsau7ZSac1Z-Wc9e1}^LCK#T zAmBz#}R&5dRSh0|84c#04w2@Bzy*`l=Yt;|!2)_Hz zI3~I7*7RM5%GIUJ+_S_EX`k7{7c}RuM(E$ber7r5#jX}M ze3e`cA@=eAO-6N--vKiCEh+4HFx!b4(;4MsGF`667tfIXWf8p{5SY$9g2f-cfsri` z@8ci6o3FE8%l`DPvZ;4j5^9vrxGIU7jRRZhxcK$yb@;=_3xJnnJE0Ddup1}3@94hd zS=6z-aO}vy#J$-c+)F;v&C$4k$bQW~=<&ju0LC|sYOt->{N5Tu`?HpdjSJChqgqMa z<2=xZ`%*PB{Z*@OD?eU!!HcVdjt+(w$|Xttx`mtgwfR2u?7Ob2ZJGz-@eQ5D%s>2ojjq#75Vicmjj!g-m*I8e z{J4XsZZf+N58IeY_PRs@GmJ>Hv0;oBhvjzriDHe1EgOL1KjM42RV3ny(PGcEl)#mU z=hv4XpeUM87YiQ6V!EQo1fzgZU8eRITUuzuy*xA(zUzS$fY!}xz{KJ6B=7d-ss$At z%i~~%J&1t>zB)IWE88abAVxRy&9D@0&1bWpiS0yVShZJhVl`pXiCLgW%p&BrtJ?uI z{D-acXxcq(@7=4m$>PrI3dRH{HM!!?sKW3l5P(s5)c#AX2NLV;T5S)%#fV4i-q6B#jUTzJx{^nx|tI{tSX&!q%1r!`ZhkMC2D zd9Vs>l&d;!y=LD>lEnoUBr96r1f~A@6c|S)nObN0?rZ;RNCXu+xn=`2k}5w5HN{sm zDl&a;a`fzlol@ynp132_Jc44ee~R7{aWt!g9L%HDa9Xbqc|n1XUSIIjbHk4I19ehS^%`^98vX88op!jvQ@V#}KC0&&W#P_)#^gU6CQ(>eI3&zmfXCQKo%AG(g?Dynss zu&t6Q{Bxu}!I_6yN-3BhGm?5cHFb;*vl-v#c4>e+p-jOs}Q<@WoT7pBVEFFs0t>n;Lse9;s(@5QT{(~Uru$85{fIUvHA zbLy~7MIOHen=70rYXwCCLYz)h>{{>+e+6byk8A8TZ5#Q;P|cs zN+4VmC${i&#-@c3rQzVCCq@BE8FC7|gpKLzhmz1Z-^^sPO)fCQM%V9j^AkpULt3SA zI(7OadXqnp@5GH9*T%l;6ixd>p)ganz{Hk+TF<@mCV-XRet)4U%V$*s?BF|7wQ6Dh zEs8`!3-^U^LaphD-&R4IS04oEQvQj~zwh|4CKjtAoVZ^VL1UN4k>!MwFU17uoqCSH z0F7-j3?!5NBmI3%A)TPZPV~LgLg4=FrDSf5Z=9^1Xt0 zFrU62+GWXBh_foS4tDG#>ICj(8Tz*@{unS?1p&wi;1=$y(y1yYb3!k7ZgB01Eh*@g z&H=h5OKrAm6RC#L{W>4vERpO5ghC*4Xgn_;@G1{28SFFit(w3>$iv+H*Gk*6`W@qO zY0+@}?sy?p9Xt2knOytXe^h1^knMcKkG9M0vL#=!{RxPf!ieMB4vPVzM*GF5LY9M% z4#sHZ8D?r~IeAFaUESTT|tFF9TAi-VjP&9|kv4WePcDy;7`DeN;Yu zL9gzB(5YnoK<;I~0OK*HX7?8-l&bhLp-Bv^Q-91MGy0H6iGla&usnWHezM$xOj3c* z?pH#g$;5_Ni+>=I>(XP%@+VA>$D8uos#(Yo&(+n^AHvbIprm8kkSMU&}PN43(%lpEJ5RxSw1Kb z%ROI*GC4V2K`YF%Q+Zgc$W*&^h zY0qwEh}ZC_6Kr*>7wDEiiUb&@f@&OvSt%Ej7f}*yd-9V|} z2r9-DV$UAF_=4VNDAuI3(VB$`OIt*$-0!4*!@{eClADZ5wq6klUG_Tg zu7FC%H8R@x#tLdeb*Fw)|_Y;2s;i%%u!QI!bH>zo|T+u$FYot^=>%2`2T85paY z1{}s_I+m8N2+{DF>`hQTMS;PluccoslhF9rsgLG#U)N5YgL0VT8(9o7)95Yf8J?yw zVXkEaU*{L-B2put0C7E=<)AoT%wV5(iE66#sWv5T=R)O1t)~Foccc|&>QjhOSpMj1 z(gHASB#FKH`e35ugSm5%Y2$w~MJY)jFm~cCgT-UcgZl-`G#DnmLe5ZQYAyz!1s!t_ zO9I0@m_H@HP?Ns-8I(h#9Qq7pW%CIjf4RG{hVD^Tp|N%GnMD2zEkdBRV0 zKsoJ*aS}#>^b5Gzc(~yO8=3d?HU_(d8ivR|b-%sX6wS9)*!}LQ<&?#mpHW;LN5R*t z{37~gbc((m=ur#|6)!mIPw`sh+uS?(>5tk^lndlhxUwe6waF z--5Z_)PVM@J3v29T|NU-cvqNh>HSf9i zwYqYi_f4m4+e~0)!Bs9Up!)0E5x1Ei04oN_at<|Ex80}7y;1F&f8v{l6E!ev)$^5Z zjUqZkVKgBhqS13ALDUG08Z52~)aqg*1JV@x&4B@=1&59so$}K1g$^*CiAX~PyP!-z zAa*p-sXHPHm7KV|fl00l>2T=)lNLC330I=Iz~|28)IowkfML%PNR&SU+R3#Ll&0>7 zd83hv1m+mfxJhd!NJwb_v^GMnIPg9dj85u%{#Ew#>8k-3{yly?*#Dd}MP}$2*dxmz zoyH^3>4s;(ODNLIX*(tSg1W(sdCu`(3aVGwt@w_uRYQ2!fjs&c<14yd!_E&p(OEjj z3a*;MSJJUl+0r`naw3DgPS;eXZGXl*-c^{Y(}mhilYFUGUM~IyH*0-#vq9??1SUfH zd<~HeOZGRf2xXKFAbB1!QENFAH5UdD31C86Nz$a zdJp%A_3O( zyaydpL#&Ad*Z0JGD9Mo`9ihq{XK`8wov#YFgIajhb>@FN(Wf-e$`_P7W{A$O{c!MLIffpoim|( z?CZEhSQO?p;fK(f@ATT*yH(o9=tbK?eG=As8J|yWURc)_3H=cjW)eLZ*9x=Z*%JQ)5`GEKR z=;(0*zM!F?%R~96hCN|_BJkaR*d_;WWBbBq45;FGX4HGe!`{nx%(`TqI&xTQN}Om2 z+2tC=%s}A6(cU@O?%|6&Gu|X-)Dz@T2$KuW3Mg7JA6nX>DVbSVd<4( zy~IX(a86ni(Q~$*|KSC4nbNi?F&Us0+tHoCX&+R=5I6_bSfAegl@`dIhAUm*Ew_8kRZGx=`fJA2c5LAzR2D6@r}~V{Qz$y9kDx>e*db#wBZ_% zEjAa0WdrD6}#fCeyL+EJsw~aDO=5{l^QC?o88--Bdgg!k?n}IL_U}4MqkG ziy!CXmv7O+-Qf|0OD}SHt`ryK`l$}c(iwjKWs=PxJfH5k-EfTS)%|`R7yPiB1Y#$T z3}nKLj*V%I*@_8_sqrw8^X^Q7s6WAY)UgLZjN|CuP}b?e5_=%Nwa;!iqL(;~T4%gJ zhB&U&VIaF~7`LAkzvKjrZDrXeTmhx@SPKeE32%G=T>5Z&U%{*W?$(?3>=$rN|JcN6 znkLWDZ%1irB-@zjp{PHLmAWCWm(eNF!1V&~VH*_33|&L+%Y&vSK;3IwuZwEl*M?&M z#^(vYmJK;#3a4_&vhHVtXTPQ1#1ISq_98)m6qRn)#Nob4cq$k0OwR1fQC7881QsT) z-u)<`v8}1f{iy!+7YbY#cHx>%0YGf2x~O?;eVPqX7sg1ZI$D$~3&k}5S45fLPjE>E zpnMPqQDtq=sVY!vEN{rhgb-@K*4frr{Wi%b*O(re)1;!Hk;uVJ)oOM+J1B^e1U5m9 z$CR$47-g5zjB~@-9u^L!BRnL>PXKJ{Ua@E(Dt&_Dh_B~w2f$W%7`o@{6mUFL4%+|c zxj1MFQvev+WHc&9`KqrL@EUE8Ui-OBpA%EK3XMh|>vOa2s7tO=V-*m<80!O24rpz9 ziqrBcV_AjVS^=SIJBLlHlD1b$MR9^K1#%U#GBh2RV144EBq2L zL~Ajid91BnJRghw%;8ozgL)hXaWVqjmiL2^t;dYJu8{XLdTYYC+TOq(%^3pT+KG{c zW2<6o?eh>06tYJ8GLBRMnc#oE65f0wr8jxbOlHlcFX>*`~l&)EKE82ETe^DAxAgI;n*6(d;UDb^!Lht2KBe zaT~KPHG`=`R0WG*$;|V6r*Q< zm84Nz&6ZGGPZ0H_ueKD5H57ZN2g`tVKe@vA*y1L+fDY@BJnqppZ-{FIjsFJFj!Q(MSreLI&d*_wrX zl7=h^zbsC>?8-VF<(vzDN@G{Z^#>K3wX}MMA7K)3E!-tFH^BPTx6d2mgc8XU`G=Su zO`1R`uEr@Vw$(Pd;+>;*d>)kNkv4&}J8p$8e3T&sUHVztD4od&pBy<+7GJ&^ z*wb(&k5@r~==6F-1WD8!Qu`$P^rzqDa~L=j3(^2RC!E6=aLOgxA7xhkxZYDzUEL*~ zyLhk4;8H0-BeoQ2j}`{Si$**gzERaM%H}K(uH2ZZ$a|HC#4?&=MB}%@;bk`jy;%IP^| z3^iuo^C=@C#NG;EVn^G(bJ{PxJc-nV)S1sBRw5Rp0_YxsNf7i*gd}FaBa5ZH(jV1G z>yHU;1THvon6ate*(7gwXDbV`LHDi~Upt%7< zf9JP(^wF{Zhpe-Vit-J+Js=VyF(91-!_eKG0z;RQ(%m5l(hW*?i4r0pQW7H~-5@1M zhzJ9SB8@c2xkvx+TIW6IgI`>_#3%0OioJiEoIwscK4;4TXWoZ&;hKvRb11q~;FFy^ zxlV|}PsWakT{FP7KjfC*toVg?{LpsHi>opm__{CRY{rbfeWf*xkTH*HrLfBmom8EV zT~WsTqBTf<5+&**qnxhGa|TyqT)GeKY^1zk*r6Q@Za?4Tl1sZ9ko&Xp+z19~ObSw- zxB%m#b+c#dV%X}*7y@4cYWE$gqO15;Z(FAX5KocXVt%`+5sLvhFK;*gVq*X^0c{Ah zV7;AyHN{|quqIYjl(~&h18nZFGX8h5G@X4CW3;($N_TGApTuqw!QvC-))kd=tyt*0 zmY4Jeu>vG}6L19Bp`3G~C0K(Y5qQP2BX-Hg+2YL#DD0w&&j)n!7ECA7w4iiavR$PT zwFJfPQ6LnNsgySzb)z6SKFo)>@VT0eCyu~q`IDzrbA=MVZFdN5@GxWe$s}(iP`j^7 z6HrO3X5vQ_@mog{XFvOlBjtf-NQ%YX$?w5cPt}ceyWYj5P)$8?pSzL&KBzdrNl+kz z`?vMVgkq@;#o7tV zSVu#E&obLY@m|m^RM&4+x+{*{4asY;cf$;x_*L&-wNAHj(LJl_{nT5gRS&Se8loOB zk?F&5y-_9#!>Z;YMb?J=dXsDOv@(wyl|BM9kS+lpzk`qmCn1CM+-m|Bdq?ghvYl%^ z4V8QI=*A@xiI4x~FX%-V6YsB-T_|y;9(Q#W%>U9`vwcH>L*x(Lv5xrj&Qklr+&flb zF~13kL(X6@H#N+(1JG}$W*2uq{a8RsYC=I(=c#;`vOs<-C=~{dW*2hI>BU!|@pzvS zi(QpbA@lYHgpKZ&i1So0@M-bL+F#G|gV)#P^t;(C*h9Z)fXF}aL0i;O5$Yd-&SfLj zi`|+aMj88_I-Qo4QS{@2E!Mi%Hr?S`5arwB+4H3P4SP6w!jpskZ=Tg^V+V}Yc}7o^ z{<+(2%P+%{Do4+U}rg@WE6DhjM)E z)nDYo3q?q$zZ1I5a=_b-MFv^61$aO3tfN@kBl-qPyQ}N=*I_t@>flINp zaW**5AZxHL^giK{kkAqr&%H)ZAR_Fr>ogpyf$sBQqzG9b-j6cL-LrezV#*U8y|MMk zodxg-ns+;n&;!^i63n(+$-weDz-T)|kyS8p$Ve(?V`u#SIdSGO{K9N*lIr$>dNlPu;ZtqDyVl^ez|w06XEZ;-+l`PEe zof2j03Suqdxj6cj1A#&aV2{Q55npoKmc8q85z&?A@n-ogI*`|Z0|3WjmFCds)f#BT zB_4|!Z<@6z$at7~nYa1Uv*ITyS_@)@2V;?sr=0#6h^xl~&t_Q)NA$WX6JRm7gkGJm zVQo2Sp>K1!XNMp9HV;!rfF|@5A<~7ckC4BcHe;$ru||MTLuT&=J>63p)~&Zrfm~8M z7Oo^vMQhG73H0dUbA3>o&z&Q4B$yclD=7!Vh-hT7iiGo2Sz?_)SKRG}+CJqD+in<^ z$;aNLAi{b_lr#Ef_Rg3PUd50@sxM0#NY(Vip9vsanb`UEtw)@OjSBI%3QrArZsYota}+? z626sctFdzygM;QP3nOQ#Ia?$Q>rR#W0WB6bb$>E88-^Oc6fh#yu>oPQ+({L|E3E3s z3}Sq^U0ySsbyz0@$qISDM>W@n*v|4LU7@weIhJx$<(;)>jy8Y(Q+iv)9k{%#dt#Ba ze>KJ88#5DnsvUdX1XsB%8!#}8JSKWsChBZOjfDWOnTBFt@_(W!7;|{*cTfgr2595n zC7IjEXELo8Uj0hy6Rw*DX`^>#{Da$!Vs|e-M6Jm+nm1)#=8bVN9%opy-=c3pf0ix*CaL9Z zr$PWl|82t+&$fM)*{XY7a?RA*vGO$F*q%zQU;XEL6j!J@894kj^ zqj6rSf3wOfCtDU%D5%FIBmOEHW=jJEgh!MpD6wjb=|#R@JGh96iHW#HD|j+7eaw|+5Nrncr(%3^kT_pc*I3QJ<$uOy_KF5rrRW3 zWxmgY4-mOC8f&S&3jE5c%DGI;>X+KBe}DsSPgygtlD3;d{f!|`5X^77&w>Lko$ggh z?~-%i`kcV~J-P#ClU$+AsA{~P`IC#B%+~DHayO!VCu@X?HJti)rgTz0DP^ZSE{4&a`hs(DdBMc zx)r{S9D5z2wqsbdXZS5zqq)J*VXA0|z3i{?xr~LWU;&K5$1;#;@v6+*X9C!N(505l zt^b}?2^I`*mTCENLrqk+77BiJH;p+B79UUAaaZ?Y;)nQrHNq82JX3~+*_gAQZ>`zw zZxfIlDGSB^tPqwo>4R8~v5{*x?>K?wgxNjmCLr?eT(c(hZyfBeALfT#TJ06-pQ)$caGJuL;X>cvu(aWM$AKU3q3j zWq7TPybjVZtu9nv3Ge zAMszK8lj1-s#~lu@41e@pc+#)HrC%#ZhY&#%34>XE9x#O3wOUVn_Ek)c&`(lG_r6T zo!s?@0*y_P z0T@B*!>3Gkhnxvgp@G?>aY!gWOEV1_L*IP^I#D%>fx8%YA1X3;d4fyFg6K^m!Dtk! z*6?18-;N!*7Pk_+8jnG;&QLb1b|{gOlfK$R9>iYo^9`I?V)Ku_`ep?;pBhdcnQmHP znEkF4dmEp4-czZQWe-?`TAN&FA9Ea`eXPI;PtSOma+9>E1I>;^Qxvnfj2_3y0-96h z_;}DI_|{(BC8bcGY6i>CGmP0S;OqQRyCT_7J#5u;C0nfIg!@!}y58X<&F)M8nW}s3 zJAgxZ>QBNPjm&D?1{<>91QNaM!RVoxn92EGKdmPcz^Fd1P~m%~B@)kJ3W>G>42rDE zS{Wjv?VLY35xsOk`&0W<72}Tgor9%^&IGHKqJJE1=^R-YXZ3LY&YuQL%OVw8R+# z&Mb0QDPLauS9GiuTT1eF-#IqxxLd;XSThq1pm;+5>T+QK_Vk)oeX(H%@pV}#jC)2D z3;Aw9ZyfCg{!nW((kGQHc9$aj_*+<5M=|fCQ$Bc@_8#2X53oOI*rbuUcMO_M*#p7fRlYdh{t6Zt zyHV~!u@3QO|igPkdc@?9)Amx87Va)eSkEtPnBCC$9s9tbTxYueN)R7Hu@w@B2f6 zYKF!ZQ@g1o`j+}dd$|W}M+&5hO=j+iCz=z+KU)k7@R%Y1Iv|TpUvqR^VuMa@#j&`Q zBq8R`;?GrSCvaJan(Wn>MQx&QD=hR!;*pBj$S_wb`1HSzu_Jb-KDKX@Qya1fJzJN= zr!EWcV_Xt}*{bzX?WXQ2xgc>iG@*G4Q`mVc^f6XUS&E7`sg<6cmlt^W0ROf>NrC_N zLLio^crsc%$tSI_Rnxl3$)~`=IHz!qXM%;O6_t0-(c4qh* zw9V_)mC)o?OOq;?L_=M|h)ap|86#~!;*9EMu z$7Z_N?SIZ)b@28LpGv}?s=@$26y_=baD{#EJwpEV&P8}HrXmerXW|Eu-!IXVv$5M1JepF1VO5o(gC~U6f1? z826>()v?FrvnQw2Il_xgx{#Kx04Mq8tM{+kzfB9FJcd*{he5gUi|B6iCsl-^loc0D zgpqao)*Hx|Q_SI;$*oUf7M>X{xRh>u9_d#BVmjHqs*;LmUem_GXTW%o z^ffwt*0J}^T1zL*-&06_ohe)i!%VNX@Z#Q+Y}5qidwPwTluj^wT13M>ZPVsU5J%s3 zeSSbilLLBtCkfI+wji!(DCf)f?ja(7wFj7ZdtJ({F z2esUj4xPxwTPDF_<86X}6+?Z_)ybQ&N0)W-H(BH{Tnt(F8y$v7)RZu!?ntkiRC!>> zKZqSrY$G&Xpv4Td<|+H=A{wXM7%6=~^#0N7^c1U{krMN{`x2TZZ9ZB7KYI^hOUkaS z;OEJba{mv{5rMZ{3E6;wJ(8;xV%_^)VMKHh4Z(baIou?sy4HM{Svv#L;`5HS&lQ)H zxXc}St)qd6X5#VWNM@5D!L zRHvX_pUO$ehq=_}r5CO5eHhH_s2`tf5AIJ4{xT5IFOE@~SRy`xW^#BvK)QH{Tm>$@&*{%QTlL}S zjS*QrNv-)Nk0FC$4&H)mWh=yr8wrY1L4W;mpUR@X#3bLbfxDVCLJbdcezvJ;N;ku1 zGE^EndEgH@#Rx~r4%d=K6226D#>vW2USt=Ou4&8bm$GSqI9&oFwLkVeuOTy&{`r%0!uCt%~&ymJ8cn1}Nrc=SJ5o24Jb z3<&EbvAM5YBgl|tf(MmiZ48AKe7#)KmRsM{?DtO{Dj!2mLG7~$s)b)gfLN6HZ2CgC z%2B{}^@;K#O7fE-WGF`^zk9WtpHAtw6x}Qm4l~Fc&($hAMJ}*+X9<7)VIKS@Ic_yK z*`C=$ZT{4s$}v*t4GJ^p5(mJ(GN#q1B7Yj2=Oo8%KmF2m?R@mJor{<4 zMDAx1ThJW& z2jA@wSmE+ki0G9XG~P@)4N=e=^M*->)Eh|13;v?NF-*sVhOE;^%GfmXD?R{cLg+zH zw4nO|wS`f|w~7frps~{JGm)^5$9O8<`w$IK7i!iX_aPOC=j#<>s(Q%nM#4o}f(`Ai zyg4qVou*vKWRoIuoEugHe4yJFVOM@=G`fz3w#51!ovBPp(!Sig)Yu-tg4yyFt*?17 zv}(m_uC|hoo|Kb`4&vMEAJactT={it`>im8x6GOk(2RP336lp94*5MGE7rU2ib^W` zwJH$lo9GRd&|mV}S{0kMd97iA%A2G(&uffX*Na+p3k5td$h0i4NfCH~^hn zV6*49oz+@};r3G$0sZlI=Nq|IYL`o%9u3?l#bKn#s1B1^HWmTR*LVey0CVe>9GcS8*}k#TY!7y zeeONuc>s0p<@r)(`u7^Y@AM4>j^{r-Pgp6%m4Z+A%?u*ua)1f1pr^*f84c))|EM|YTmR*$Y=ej;* z>=BLeWB1gzJoP{imOOxZrTtl|69R@W(Br*>dBUQJmU~v6jmw;v2L#l9tJt1O`QOJR zI|kNV)9=lh*BGqpmeFw9{NOcHtc>JFeARM6;rb~%j?vc%>QfR2m2dWyV=q^f1-K15 zhI*8h?S+P@Mcs0ZdK7O#%0V}EJ_O5Pge$NL{PL(2xS4Ch zuK(;?UvvzUgd^WrcF5Y+{^n+bL?u$Humx@$5$ys?0U@3EgvN%b=MvreLyMCBi=N1v z_&*nbWa;M&W6x-t5iwxtGwiZ#$B@9AD31`s#nS0Z-b=5HH{bX&t1QIX=Je<6<$~{= z*OpZqzWZapH~n}Ia-11$)UK)GQl}=H%l^0|8hnWf)2H{gctEyeViy_hTv$T)0GA_n zIR;-52j6iOa8n-SIM&}!hqRc!`}A4o@2BrpIL5I?U!!+vf^$ZZ7isEmsU#ACcSFKI zD~P%0hYcA~2Em1)<{`s2?oFU1MV0?F(PqZ+wzwL9AN4!N@y?8uA*)`&C#l5gq`UZK ztzh0cVec1|hPfn@)&}$GySaZcD3U6a{HevOK*%w<#r9KB#Up7rg`~C#C*xFK5GCq` ze>$7CIW4K!LB;jjOp|q>H?{M1T$zsTUGwCF2?x=I430_}Yw>X1bw~-1v$JvX=72LI zUZmq41Npsa#|*sI;fNOnzNE$0|5yTGddnmalzpb&L`0Oo9mV&Dnyla$&e7~ezt>D1 zOxuwmnT*;ENNuv`0s7e*W`jL;h*?wwAx9^gu3J!cnIG&dSa#j>G&R-g@cw8j5lM@H zZGZI4!Y-#WMvxI*sGa)$+dK}wUGi~Om{v6A3<5|=RGE1nx1b(r+doy77yVtcX}UgH zbnLvSYccbz+33S??e#tQ?z4EJ_17NBdgWs;KfLmOw|_lNmdzzSweWh?`ooInSe$Ll z0=ea@Kdjp^fr&Tuh260A*kZy<59r}Cj8$CDwHIU-lz(Cu-@Y*B8iIK=`MmlIA+y4} zgMmq>V-;>WS_U3|Rq0Rljl|L!ceL1j^4NR*qBCgDKf+iI%}Ro6@DH62$QV{l4_ugY zVv83Bi^>{)hXp@7c+I;$du<)6RVVCCFiyTHR+ZidKZ$X9on;V)jduZt&3ty;OrfHm z1ckZ=&hU02%7k&W4G%I5O?I{FVIGZ`L&Q_=WsCFa{TxX=h_jy^3m*gj#1$$wBYCA? z{rWV#{>(nHr%!Hnlb*u+(>14RP*%=ESq84b9vQ3W4wXG)1!gh zh!`6=P6pQ;40u_zeoCFf*Nr)Zmg+?b4IJAv_)P_|91RFZvidDg^b;nGKOyHjuAnHv zNyGbQKtU%sk6eLxAFK_v((F>Ud|+IA@OJhLhAKbaC;D~8i|zf%n5mm#p& zqQQ5=m{0i=u}+@VKeS>#X*M zrgS=7F<;loCS5p9olB_w{`Sn#qi)g-acT7}ciiaXE~^!fq%w6S5BB%+5%YE+|IP$cOj z;!!bh|1J5+?Od#C6?11&nz5Hny7fA_ey+~@HC_3MVK;huH+OEpd$BG}3H5qNHV9Rl zmV=O8CxyMg`;?+6K4#Z6mr|d!-@BC2`ZVG+M7ta6+@>e@slP>-xqLN|F`ZLCHu+W7 zD}VU2Sz}1bz2A3NEvNjd3~cibHm_maYv+t~J-NZm6A14`lmItaAHI-aLn!wD&#Gry z7%RYQwe$i|49UrHwS+6Up7RujS4L>6b+01GIM$O+@)Mo(ORs0j>&%->ytC5b{KKWb zB!V|_92(9CSyBR=>DJ@Olowd1vhD!rv_Yd5B153;Mt*Q?SHk|>{p#qds%9-_$;p%tD=*4D^IZ zFX0g*s=C|G-$-}ItX6TgX|GOl)wZF&9l|2XEeal5*xohHS%CUv|CC%%*EbVxu1pLd zMr`~cB_>YHO6~NneYdglVVq+5*)QlLZVK`s1wD73qa~Qf%k~@h|IvBKBQY{4WUJF@``uMfIIC;P!PAV4R@YNRZ7 z$d&4s+N@B5wNKOoy1;o?o7d7?BGhQbAYFz5TuJls`-eXp;w1G0w2DKO=5);z^PSKQ zn)M4q0eY^R^ImO}b0q0}=f$gSpBBW+%e=YUwKwk8J#=4?rF-=7P5+Zd0qu>9;Zc<- zL)H2dCt52{MB%Wh8t55Uc+D99jbli#f|>MuIaF+H(u5T%#s%QyR9(LA;v9&4m_3(V zo2)^{-O+A@k-6nNO@G0oQs@R4;u;%tdC^ARdud7Ft<>$tL65l<2H_2iigsGhU}yP+ zgo45UXoYGo-_N#qlNwud*=>*NHo(00QVVMV<)`tz>_!F_57wA(oc~tl4J6{bZHH}! z6{Mygm063bqsc1WLP#JZ_WBvlKACTdTqILgvpcS~J!hs_e`(yp0#59PU$eEA!zRE; zBus?W^3}gU3K)-{)ZkBve;BfO3TfG*G9mic#7A_H$cqqHnmIkUTBgEM40pVd5}aMd z7y+P&Gls0MuSIi0h`q&qfkqz5s*#-;Vn#42&*BjyKRNtQr=>!|#J?kZv9$^!DJ)rJ znmxWh!PvjTYk&4MT5wj7$MTHX3s7kT-wz$Q7dKT?kaT+APIg8U=Lx?0feVciHDmjC zq3N(H7*V&-gLgjj;`{o2Ea9(^pb7bay0E4nB#bCcmK>JC9_DFT7sP%Ng>f7PCaroO zdy|Dx_X{@$)&GrasvyXfSlYH#Vz+*|Y=K~pQ zK-jnw&*oU^Pa?j9Tn#pFT=?l7_*=Mu5@BjWxWw#xH)w4zO;-4pz?sYc?o!n70B5$J zK6tNdr}GB!L$q0d#XtAug1i+7=Gpmd=IIBxaLp-Sn}IE7;Ro_)iX}XH2IdhYcl#a5 z>kqZVS9nv+no!L*L z=NBao&N|pn5Q~ZknvM+Ad+R7}a>PL|RPWf$ef>I)(ySX(Ghev!Kq^Ct7#IaG((V6C zu^CM41hFE^=$Ig*$b@x2a283~w4;L`c7Pnf4?P!P^RJ#j^K?ROCTku@fxwDc3HUYm zRAjsdes=mUL-Z;?{v%p|9VZD-ZvzVpB=}~(`_Ji(L<>TV);8@RW0jb3Jcu^8U8=01Jo%LMCui;g7fC2qhPf~OA^{*4)g4dsg&%AE-BHYM(IKg;+ z_j<0?e|z(S0REf)o}m{K>|8@G&?!$^prqvAln zj7=%G=netx+C|mtngiOkL|5_tBh6`V+3urhe1(lAFl2GeVC1CWf1U%EuOZ+tjT5F6gW7e0xW%oSd$YN z8M^ozRlnYh#F$jN+Npj!cCa7lB{kNY7T%HBv&nfZf<|ZcC}0gh$u$Mj{#beX0lUn( z??MJ~r4`aUq)l%e#Hg6H=;=)PgDzCcy>QlZp*+c!?b*ZhZ%!<<963)gCc-|VBqt54~klu*i>Ore)q|em>ZVE*2F`tzo#_5 z+UGpD-(sE7-!EhB`n9#GLv@i&jh6N#R&d&5GlnXeN}xLg{JVW&FREkHnb4cNotMc2 zhsD1Ev>|}pnZ-kK?fRHmBPR1 zPcxIn+#mQ8%qYUQ&_Z2wbsNaSAAGte1JAqsD@)&u>kQic&@ylVGvlD3%>?~Fic+O2 z2?<490{vzitnenm`521W6l1yjj6VcC%^raB8EPHXm*l{_ACO5UI zL@YC%^R!H+negt1w3~UvvZtM{6sbAqm0Skuz{Fcq8S4wS0EYxVO{7I2Crm`T=`-%% zW7vfX)9^z0o!vMHmjZoN81|GJ?JhY?=_g>q>`l3pA!jlzKu(NKh3?HFxv+LN*NSCm zS8Q&K{&%!PlS33nFcrRro8@8nEKNJMcN+|vyrM_Lql=Fdwb(gBNu-BwK4OihoqD`U z2OzV=+)1x502c6T+!wro*7M8qOBZ#(U^_qpMbO*))~p3e7LUq_IsE@V5bE+6@9Vs< z$kcH-i?2SbpbdG0$_oJZ05dfP&*fwbijm^69d zxz79nc>Si9&yo)R9v0?35JdDI9h791)I+C$zy z!o&8iY{s5cL^TJW`PA}CJp7@%TY<~1+>ef7nW4@Yyr+4fT%pT#mz)fX&I3$e3XP<) zdWfHH zFzk4{ZIU$7T>Rc+h@`?Fo5>&`bUM0Jmoo_vhOUO{|Bw?z%*h(=!l#6<92h%Z2j9r! zKHRxyptwyWC2~YxAl$Z^%pkMyaOwR`n3};uGcrC1 zL8KDM4sx^P>5G%||)@UbP5^|_b)#cMGsiqB)vTOql?-#mF$;r1*F>AMk1@+~3P zy!R<{5!uPpQ?uS@-SV_wLvAmiSKeq`zVSO{du*2N{ndf@jzxj}^)^F?bzl-$%NYra zozcX)I@q$pPB9(+{Ko7n@Qp}2H@_HTeOyVa%fmJLc&R7k#*^yz!j*2xe|4h|(JwKK zN0yRIjDqFte$1HUlxtO@keWxGXAcG80Q8cNFI_+B&bwh%RI}{>(eBH1ajwmd#^*_EV9uLoJ2acKu29`I^-9DL(;(AGdv_l30~+$o%9py(Wae`Ie@ z+|squ4lbyaYb1)!1Mqb35(lD56!$=;gJA-?^_-yRQtYp2k9{!nLAcH>Rc zx&QN>&8i2UN82?m{_KCT8-k;8-+`d&5gN_>{N~GNB(}iL1=Sd(IarCXQpkiFI6m{s z9!PAr_qL+A;m{8`xQTzmlHxc*`tNSMCqv)m$n0EyThn>J7SWO~?V3zdWWtGH7kE2#XDnl@ zW&5l>_9xow71-_TEGH`1e=&?#(8RIX;-H-T5`&4z+NK*4Cdv|+YObmN_6)hNWwWI) zth`ul{wt$@$5rnJE=A(YO=tpgMu|_XA?bE3lQOrP6D-lTQIxxLxFp5Nkm|G+I3;T> zBPj?YaVG`d;BUI(;S-gOS_xeAKGj6v*(rrP+HH(IBN8%ln4)422H)o*>_g4^<`gfr%gS0~i*LczWYp0W+~ zc}MZN2G;@qi8*&Buko+0DQxT_Z83?q%DyW;9Du9 zP@0&EjEUxLO{NVri5hJTjv*0i3@Fx|Y_Fh1#m*4AzlnpP?h}6~RHcQwwG}eC<~D*b zH@6(>SJF>(DWJMScvk68oJq=aa!qa2D*+nk_JNyxuDhkWT%*&oGmY1UiZ6~KgQ97q ztoGi4rPr@X2phGUM2%H$#1`CiU;Qd#-HrVSe2oG$ppEV;k6ooj)+|9d-#9U5kE#ct zu!KsJgMl%sAgSQS)1Zu;B-=WXDV6r%1lmBJJp}yVK3^}P5kc_!uYb?hhSMtAlo=Ae zckgu$t{g6`l^a_c>y+BYB0-LUM!dk8TzVhRPN?Szi`V{3;XmBp({3xKDIxIiBIF?P zEH=m2gV(n+44qJ0VQiB4ic3!28~F$xO}wnCrxbG)1k~e9 zr~WwnB8IfM{h00&5q6c{1BbQ)edB$tJ6K6d7+(TMBl({hK2c@*vOIy4uu>FJl1@T` zwSJfB%Qfq42|&e6`g()aVjvr7syYWXUhXkZ@VLXR`1IQe8Z0+6@Dgo*vHC~Gn>iO1 z7-lQlDKi{bNXlg;rA;Wl7{%j%tr~5Rt=rk6@RJW4h4Xl28M>1jlo=gP!p?~0^a=In zL>$-o>7jkkEDwz?`zIIyJW@FZuGo-HQbB=*mK2v)%~W+v9X&zbquIxvQ8j+3Si*&m z2~Cy5%Ehf;jQE`H8@fzMzZP?&54b19Ry*~2d9EF`C1T`@@$3pTBO23C2VT7Aavyg! z6J7@GUFefy%_xS8xbACI=YR)>Pln!^%{5t|)8->TE3k$fsD{^#1+#-qU*@G}RafD> zW?eUR2u=uh6A7tg@_O9;DB_s>Og!v8lc#?=_Gv%nr8SGY7dU?|IdLekv*yvuCNKrW zFy;kb=q3SX$>W2N%2(iD(fL5%=!edi(nBq062*j*43c4fj%2YyeBjN1h#7cB$;9Uq z5)qF5xZO@jvfX;DD36zk6Y=9Z|H|?}j#4|jH%;nK?JC{_QB>@7bmstRMCuuuY~@T- zq8}|!gpCfXz3~g3$1CCU`LjKwWnpu?%}lAnEJl2sme>9c)_bN-tV4jUtQ>hEn}-v7 zn}qsyKP#>DLXqI#8^ME>_eZSs+S7Y&6mEd3xyxpQDg&XJrRbo=wI^B%sI{%{IR7!7-gbuD(_gE;U8OR2Qee`FJW1De?#5 z%d!(Ut#3*KbFdo8kY4iDc z*q=a-UL8AX<=o!cH%0o3FUHPgJ}vX^6qyU19z|C!aAH5X8-86MjG*Jt@33T*t|wXy^Sd zzDW&pA`()+0Wg!pNH7N&Qn>BHniYw>0`;s1U@0+dfW);abmY`h@D`9KK19pG2s|6Y zosmBrB=%Qt4BI?c#$08&1k&KlXe1#Oegs+zutpF ztkLDjsMMy2p2elvv0U~`C+}FbpxGar1^XMuc7ktfZH7O6P-G&+>xBsXkt@v?T_6=p zvsnVd`wnE|USn>rv1jCf4qLf@g~ zdb90Wt{Ak(vj9hi%6-XvU{on=Rqj1f<{pze<&Q%QcHGW=crJ50K8%+B^Y%;JPT+I5 zUc;%k9(UutW_en1r*$Yx(8`fMgDP&F6LDs={2LalYois}PuC8GDm<5R34e%V%4$gH z@|fB|jnzL` z6+3&EauGOCM?B&L(qm>XAvbdgg|sPdgN5>2%apeu{83hoHeX?Msh(-&93Urte3Xd; z>G6a!pex<=H$;*pes+S>PIN!!{N=reFmW`l|!H{?z zU<=-bd!vKO-;PO+JOiU2biQ3^um<(-c>qDZL}GS7B`2^I!FlaF@;_PtxGZ=AeSop( zvFGDfkY>Ld>J7k8t-oqJmO6YrTYtjk^q!E9qa!fUx!EZvAmZfLPRDhqr}NvuLx-?Y z&+|y>#qkeqEtR;xII4Zo)P-x>oLhEXZ?Mkr-s#*?g-1FQdy_i-Lg$!w;+S`OobIiJ zj<>%0EhfH7wgiG~zY+f?xN^LrIHn)R3G8CnVtD+cSTn`vYY`uRLjYQ50M3uKl#NR<`ineYIkZLyw0vs`gOl1@NId`y+el@d+ zHTF-x*Vtb8|6xoI8!L{&eTUZmdq}-DB$NZF=SvMPqre!_7SL^vjh73&?nfD@(fDMGAgyWz9p`ZZrl_ai z3J30_h55gZ^9k6OH)oH^!Te4;I7GnS8sJpepVY9Y0gjELj+|yIqWFI9YFra^8mb)D z+IVIz$J$FRwKFfp$a$r1u0y>SL~CVZ6*`612SAi{PT6GLT|{{Tlw@14o13ZHw~{*h z&X5AW)HcrR5ke>W3>=Ioik!HEYXGyjpp-c^fCtHXHL_|B;;xi=oZsQ*?Xmmw3T;T)n*V++{t#)DGCy&PThy>k z{cYT`X=?gR3bXbdN-TtO__a`x-=C9%dK44!b==BzRTI~x<+?a;$~w-<2{rb)ZjTcdCvC3-LyxOA^s z0VYvi^yBkuBR(Bo_mr){SaWphyC7<}Pa>Y9K}lcW-b)^m2ZP)N5Z2?yoJ*C|ArN`& z8piicqz2;fe3y4U>SpeKfj<-2^@Ygrraow|MGLXmAE4#$Y;Kb^g8f}5X&Zmju%bz( z2F1heD<{fhZ7cL;44TZfhZ4S^nOeBJ(swE(tykk1MJN4!P0fqAF7*02fBSs2{dt}q z`3Rt*W@WxYFHZd82zPdg7zI0%=qF|gcRuwT?Mw~%xqVvjbNR9W{vdJK_FmTwa|4I_ ze~!f@+9=MH6}eAejc46r^~l8Svikfa%s8IzClECL?j`89TVT~>4yepOFUS$T@g1xT zE)*D|Y%UyQx%p}Pt0~H&=9w+Nk8bKx0^ZI*py=@WI%T@58pcLNN{$p`G{B}UbhuFs z#*tyE_$QVz;o8MhX3vaYW%dy8{=T=m+N1F_X;qPwkzWAHmc&|{t0Z;CuOfHuXQKbF2l3MPhn|{suOW8r{ zkfFq4nG}`90NGsW<+E-+0d=^R=<#i;)9{%f)HM&?*1keZXqjiXE1hqRIR_^}M;0h| z2N^*@=PJQwdXQ5kC~<~k+Z<;CC;OWsEw&P+d2qEJ)Y&fpvLi&^;yW=@VI1wujL?fZlobfN zy^wN7v9~o0(3zsE?bv$M{cA^|)3vLNDsl~B$; zO_NVIf816G)gqxDZthi$#!pS1%T3JX2?nK5_DsgzKg3Fh$}Ftq&TmKcP%5-e8q>WQ zp{3WIc3uX?!La;#m@iq0uA;kWYB|+)mUSa^@+0=ZVA)xu@|Zke*%^&EKrp zpGJ==qVi;y?ykHYkO?LcaI}Z#*im^W6T8de^H_i2xuoukQJ}w~_{wd$==c79vdlt+ zE`?edx?4JfcDC?dUaugF;>|+Y$)7)Uiq|CJ#EZ z0OBV7cboQ|4C%L7IGi4I+rbhx#)b9F%OgAsgP=kW>o5;`ZcNYIn>zyU`*PLDe))WUdUg?>g5d(B0Twbr2a2pS9Jz6dFqj$;wti(V=eNGV43JrN2K>J|2 zS3L$Aenxv^%pAz$#dF8}QXYtDQQTk~U7(^GU>z$ZjL4NI;?EM!P#(k_Qd2i1qRmwm z;Zxx(>E%&3*JK!u$(?^|cSMa4m{OIMwOR28fq8*G5oa8*)QOY107~`6(OyzVOHG=R zp#>LrL27UDWcWd}^0XSF@oG&7r4r5Cm^LYWU-W1qCpN)4F_x$#K6^qG7*t*;yjUd- z^)N5x#*@)r&^*-*of{aWRJC&^9=~%Ic%R8~kn+tqzhZmcxVXyugyZpHvBbo|z9D*< zI5JUqZtn23*^`32S8|;~nj|7)UsNnJg^JyqTHQPy3f8NQ>POry$I?>&5?!FWgChAEf8-GbMZ-m!~EqzTtTx&mX|%0vR_@V{*gr zDC-*L7bMFXSBpubJMb+`xML#q=CV$fcA_9L?^tCzceGQpUYAiUV}7_^bYTfxv0L_y z(#>os5Wz7MT18C>#_uDU1H*}*9S>AS8ZYyXb9GB91?hf<4N4MiI9+tNE4OQ|v+#Xy zJ{2`J+1h{8XeIQycID_t{fgc8cyyR~kk>T)358zkCeK|F=VcmJcPmnQJjMKxJmtmV zgqqVbD!T-k=opB&1Pt|FCGAHVqm z`m{pNpsaBT#z9OJ#re}dOxqjZy!h#J_#P9z6;^y%+Q&Rh8nrqx5dRB%e7O`uuP5R2 z=+DuI0(5n%h^QGyJ2>a_v|B6^YvU?d6LTwHqNDgYs)>U;K2f?k6-U<$&3l3+a>E44?5^@+KAJxc~~XcjIUU_loBsd9NiAqtM_7Rv`(( z3qiBz^C4SZL~@d9wBvN&eR6eCKRyakyvn-0yD`Vl8I6RDUGPA`$8csk&}nOmVx^@o?rtgChxaCp2@Mn zrn$SgXRj30^}>D_lEJAxr+6S*abn@o8G6;m&9M{rusbyuUERdGRfuu8I z!6bOsjHmtU%wBq^e$ST&(9Uy5&1E7Wi&cHbZK=iiE}Mis7YSKOI^s6&3Z9#Ys#0HI z@?yKZvYKtRC%9f-hAg@XN`x5#EI zi37Ra!_x^0i2l2oYR^V3!1w7g!0I3T*~ekvcQ z(1~3-sDPC9pH?_;e>b_^b8aBED{zk6p&n|s1g45Ks-HhX<)=`6Pv3BebP(f4{-!jW z`afKKcRbba-#^DmWF3?(dxh*B*;_KRva=l>va+-HUMV{vBo2=3>=B{tJ(5I{E&5$= zeee5s-}mG3`J>0j;k?Iny{^}IjwomG1XA>$GfEkjz3VA+l?qR2m&jIS9L%*FjPgUVHG>88e_#5*7O@TiD{%wcg( zRe1ixQLusM4ATJGYo^1-q@b8#i$$oj%tCrv2dDxp9-kc_6?s~p3y2CgR?Ldn^u#^% zM;9s%*ow;EaB{@h+4&Rx;YAI}(x-&8BgjG`qL;`_qS9tUyz01R zwyWvY)C!+X}2E0l4e;&t-vHlGS2&cGKC~Nk>%BBP#}{Ffk;3L-it25qO>&{ME&{I0fYQ#F=J3KR^Fy$xqZ3WzRjySZ61tMnn!1xOmmv z=Al*dc)rh6^tU~>84Wzk#n#HD^$n*Y=y1s3U00lgKT73hlJ!>6-89+#Q$@9N1Tp^|ePy8Cg4G(Gz_Yqiqti4WKhPE%W>R}{_h zSVkz$>1CX)+Gv%*ew<14`Z+B1bN~G8wf?~`$~|1JXLMXpclHi^1?}2=wx{;TVk=0B zp;$dN(rpfq@K>W~JGvTD5PjjYa$Vc`p~UVvqOR`Sv-O@DC4Zy^x`_5BT5SBhcT$9! z7x78?(gj(9CnDuMZm(oChV4HLDYj+C-gMSlXN&kzJ0y4e_soEX;Y*tAEX!Z6s-iRU zP<9a}tBa8Jz||pWFq^3_?lX6DcbTg0(3Z^goG@-OdhwZ-*vahzZ%u0s_!WPjG?DcB zo{W6*S0?#p}&Sehep~2n@2S zk-b$Q%F}F~*qilN@Pui_FtO#WC_%^?Gvc-Ds^8l*O*r1YiB}qwZdPI8v6puXgy4U( zQ%tyyR+ND}yR?f`tdI6<3hnKdu7hu*EDxHtPEUa=;AUtlm^2n4A0tqM^Iwj+_Lkc> z2rGHM3LbwgDC@G-`zjP`eXsf%u}C z87}|H+t>I9`v>}htiw5&<*1<3=-T;(hmve5Xt_DupYxsZk`C25;;6#f>dpRO31eME zf6{?MVW2~QN)37}3bP)`f#abQuL3vGcnEN~&O9sVrHCP+g;WzdouEO{}Oz3Tj zqrr1OgPKVe*dM;xzi+o+xoTXb0<;z7u@dIjZ(}aDwMuVzv8%=gx$LfJ1{?Fz1Q@E1P2;IO6o9@7A}UFtzM`s($JuxGS$fzr zFa@4l<8`T~?qhfEZYdVOS7+Dk-^H=ks4=FNK>|I?qvSugq7%Q9!Ro?fe}DZ*Z`TXj zpiWNDyZyMzjfDy+=6~PR@JlHX-d9>^+`r(K}O26^)urRv>wNcKGcpRKM@M->QlU842d}w{joS z5Q_e)e9ZUD{XQ8?KK~b9HI^7bS)T9L?0CN758hujX2xWe2o`(Q{I5R1%o;p=$=I%_ zbbL2=4S!8?Go?AF(dUQe3Gjy+7`|*281uJ>tAp1G8M4ayD7(QPQDK%u_!5{Y$C41Wh?cvAtF6my;W?#ykI zlGZhUy3rUGWW9r@nK9~-?H~j1Dsa{~a#tMb?N`aq!1$l!hT7heU}#_eq(I^cj22y# z#p51NTMk4~p84Y%t_?O=^r>99aD5-|X^Qed)SIa547o4sYPdcy1?9Rb2dsi9rqLF_ z;K!!1)E<(;-N_n&uufxZi{De;39iWadsk3WUTc;OL2UutRR-3(owA&g4t<9?e_ZBF z%Z!(Sh{AiBfK&Z7Yz+mr5?6vVt^`#%pL;SVwpX)juX`sr17|gxXcA8ppGh+qee&=D zW_popbZWMTOGaFEL=8W4q!7i0FTjnk@Tb}RsWHJwy1^ym2_L*kg&095t z$DJ|?r28*YiKfq~yerg(whscPrfdlaXFJcGt5A^g3nXQk!c%Vhh8ZRiJqxLlQ`RG= zn~iU&(w3ySe9RH~T}$CW$o=vfb+gh{D#EWWxXosYNPxEt?C4crP3bx`={_AyG5v+4XE_Vw5+u9Lt?50<1Fndc-6+8CP*us2jK%dw(-ViE(X*fi z)~y?^o!<7hU+N5rpr=i?$!OLOtpPaKhvmnFwmkO~x^ZkxBn~qQZHcw00$nG(mv3s# z1BIcrI*a%(Msj404cBQJ?$^sF(sH*g8*=-hbD{oOGYhX0zQS!6k8^E>A1ed-H~qxY z{0e(#GD-r_4DG65zzU8oTR7l=N&(vhy}J{%!VdRSl+s-c6d5^CegOSvmU#Q+eDKYO zdaqElO+gk7K&(PSQ#v(?5k)vg6?H?Bn}K+aD(SlOSH}3;#X7$XvDsYriYm=BO~L!OkL;UnRyKY5GkUhQDdwyMdf69E zS!i2klhM}NzpMVcHQrZ$k|d~RMp=-)QzhJ~kZPGM@# zx|otuF)aW>SQU_Ch%{O>FJngPMUp%be~Mgel}6>W+%JufB^E3UZPsj)0wNkES~-S~ z&pu%e0Gn;;%;^^{i(XPK#s+P+G;-jdn%tyID)#$LEI?#G5VfWt6G-JA|E=HWo62RO z=_IfSh~jj~Y!-gobrD~u|BAp9J_@fZzgKLg$-lKF_jv%ju!0rtM1<|v_N_%%N;;OC z;3r?}yMn(@w$b-_xhO(jbZrAQ3lxwKK^2`Isog+H*{xYJya)^74rMogjG~>~Q){Mj z=kkK z0h)Ht;T*vT_S7{FQwc#J|Epoj95;^#t6(pMv=r^}$s9Quoy-74& zV@0-qs&b_jE7l&-CvA|Pt()HNq(4vkos&J~-)A`2l0Cd`laac)(39J?62rY0Xw8Ha zO#ee(WoCQL+V=UaaX~p`oKbhku;*#=9mS{>an?{XlGKx)WRB;35E0Fm1<78N-g%Bv z9J1xv_l+Gu9(-QC0Dx6@&F2vC`eshvH&HMHk(nJ+XMI1&YKD!+?_06agw?K_aRA1i zUXYg~uL=6G1pr456lY@Al^OX~yq5Aqs=PN6%9xO;5rk9QuP6fg!`nPaD=~7iK0$M+ z`UHhRN^fm}ja=Yi=VGwq?h1Ic*Y52FMNy#$q7C+^q73RU_CSS1T+=DAE?-!< z);qBAR5+PZP&tX-6qb)zq2L_})I-u0)NYNo)N$YP6Sj~(mjP-_55ZBpRn}kT=sYJS zCGtVzK2s77Hv5aB#Ui?fZ|*S&qdKQ_8*9Yf@21E`Hl-Ae&+3f8+)2u}12*|y>Gx+u z!>TgL^nYD*HuZINwEKx3|8Lp}iy;A_3ov`)`)1tHOSDM$sx8Vet%6!-**|SQ1SHL!Q(!1BWIwElt{|)0gN|b0 zbEw8p_+$sOT*l}Is?DY5tFQd$e*f}VeMC(R7avBi>)rIF(hPgFGz)y~2Agd+WNe)@ zpJDp-_q5mKpHX=K0UcdmL0cM;9e`5$aK_}XJXet@=r|$xvf({gFpg{DlSV6cN7??< zhZCZt4Q=yrn@rf+qx`R4u`Gd;Ayp*NIB*2|R6C@wqp5C1JOjArc&L{an z#as+EdiRw}uku7pfEu3(TD3#%;w`}EQ1y%k&>4d(WweBlJA4x4C?SvDU5S2R9OyU- z2>EOH(Hx%R5e}xmPk2`jAB^xCRm*m5^NBxU1!;RWX%sEDuotXhsIdH)nH0>hh33Hg z`djFPH0Ta0Wt7Z1NLVF41blCnX zjz`h1vF}i&stD^fs%q)`-B1BmJ2ws=fil8vK3kKG$yDcLWjI_=DUpa4Jhh~bt8(nU zLCXa!pne#L#IlLNxXGP3>Gyw8#BydB`UM`t76qTVnU;>e_Xk8@4#ss3GkUQ3Wt`~S zDDP;O>riljS>8g+9N^)T;~wO#@JmHR+s+Y)KP4tIl^F8BC%y~^G?O;P6+OoSMy--7 zLhfX2D4lFZJ{_Sxhg@;s@nW>jjO=!rTT!LiC>$}BX;YfJ`0n^e9e6aKPvX;qf(l$$ zSTNf45lpnB8~8+z$}REd0O8jNU@#S*G&wa>@BC$qUdsJ3bN}oge3n0!*CkTXEB;I~ zBDf=nChLz(m7%ML7ajp`_HR*eAFfuF04XDjk{19K!L#|M$P$jdJhYwDiOs|c2 zS@2rW3Rs6lneuv9&#=SE!er;VOrCY6az2u^1P+=zkRSsfN#xD82KZ4s-A{H@1YTUq ztB?`{@zmSAt+7^D=IB{aY&4>5dNBa%ZqULPS5Y7m>$j{tl0Fc`n-{_0J%`!}#v$(G zaMs%BS62Q(^SsvK+5Yu%)Sz;jJ88qWTC#IjIM2P?&Q~WLH1-#IE{4BcaN5-!=0x*U z&jJdFQ>CL*B1m=c6&WQnlH5#TQe|Dt^I+nM97y9r_NTBlos?x_Zr#XahF@bwqMd@qAlBPmRTHjxzJdQ}&cBHR6F4KtvjS1p6T|yLFb-FA5v(!*AXDI_klAyDKDU#m45k@6u=1xk0HEtGK)%yoNd1mHvAep zGV#t{ROe2H=X}CVlqGZDY?>8L3;sqJDiQqq=sUB?IA4wbm!LPy15lDD>2V`>kICe)VnZ9tf>ij z20na!@8uj&@5}ldKVV#ocU^N%_L;%_(ayU}=kc0wQ*o5OLH}&UyH2xIc0Y_wV(wQU zw`Eb6@GNYd*`?&+o5R@5SENP@au6cz1L^Vpxb{Q9mjBb6mRPRqPKviU_~kjL#%;+I zP4M$#md5~cApsl6ZZjQQPxoI}$p;<&cXkYS#}B?wbbJ1sT6pQZhAB@H%V2kytqG^S zYnPUo618cXR;+0DUs!-TGF#3B47Ks<(-d6*4V(v9i&WMWTT)orKVlGi{GJCSDP^OE z^~#pH9d5k;(rjC;)|Q#A49ewi!J2Ci=RCCSFOX{KdhQ0qAzz z;P9SE`*nlOjpG7z1Y141y=50=Am05B7;09~IZ-=(cyev_cX3MHeV4-Pq_`H)jsGD% z1_A#e5TQ6fvjZRq^R0}(^8?0e@D=v)6wwevwLAKmV1;ffS^`|b4rn_+0RVpwVBGC0 zNy}6QqyxcY;3~Q4TRdAEAf=+%+pR*UOSg)Q7D9K8Pf*znt! zC0N6gP2IcGfdC_9kgsfzYzvQJM+)zRNqCrT+@qh*-JZda_a<_3`_kU6&O37KRB;A6 z6>2@Aqcs5sUmg&9^aEtw1LC*QJ6!mg*WnQL1JV#_J^4xtRfayW%_z);k?EoJP^{V`o3T8Y2l49Bf%$BcUHuznv@Xqa*CMM(k ztG$GtFK6n#KpObVxvm9h{olYY&EU4$^#z)XXRokxf!nnSvK)k?7l6|9JyI8A#5)ZkB6!s0L##=0O~XgCEm+!Jj2y zY%Iv7V?ZRwgc3{k6uetof3 z;5~F-cC~&1noW{okC$YRfT{tddGJmtHC$bNjxZfk3?;|b{B`Jp`PshL$ldd_8*c;fNqs=S;kHXD`@YttdSX4|B0Kg?x!VSYX;(64Fq{0tL%cHo8c z^ofU`r^|*(ox{%E8owX!BDZGVh31Iaygxe?x^h$C&R|_+GikO5z^ls`;ad$y0{QG6SI{atJ8T1(FXDIvZC3N)jPuPru?3$_6*)K` z#Tl+t#xpDxJ8$F9p8e}OPAb-E5DRo;HKxnK9xXQ2vU zI3X`AH@U~)oi-^DOLRHUUr(=gnjb5T88wW;h+LDL*S`YyX$u?S?sbSy55vMkBj;xl z`5vQm$}QjnU(H3P7dEa+nT~?>DbLq45txD{`zONR1wARcR$r+QNjxk%^SRN(K9RcD1(-)W zP4!V;-0l_-ykSc0eh4bj0(x}(;W+Ye;;!Wtq$SN^@&U;Pp~bE+57)@d@Tm~Mv!WnS z%?Qp2!V{QD&CdQf+Mbef)M~3zY&?tU@q!GAn(xela8cUk4V;t%PlyBcZjK1LkJjRECQ+{m zV%a6#ah(zF9b5yV-`)@`l7NEeF@(+J@K1YZ-F;1ka~6n9etHMTwnfxx3e#leLg3#( zT;QZh!zrWdko}3j;Gz7RFlBsRG8)#2Ed}R&(51&f3enC>pD0Ki zsN7H6YgQp%=3bht`Hm}r=zEZu5MQDn7wyOE2l-|4MJg>0)tWisb_5_&&btrtnkx%i zI($f?{z$b~#8t#w0{T`CUp`f3<0gsbP#|3COd4Hg+946qN(RMeS0n)J%8(CdMp}4o z=_x?)J@se>-ofu7Lf%lcvL|FwO6x0JzTXR8dCMZjxk8)VTqZ!E4Flz!#lJka0|0FB z^jq}t-Lbb2Y;tmFI7e*c=m^yPbAUH`F7$YRR7I)}0qQqS7R@Aq5Fc=a_xY?q6r(|xb4bF z0haR|#PI_DN;a?S-U`9XmFK<_+KW7ZT1t%YTX9(A!UYrxtxPv|unaQAV9Op(@Pv&A zKqnifscLhhGi+N&h5pgyZz|4xuju?@27W6{R+_1OiSk2_OI->=l^Hfx&-U&?3K#jr zEgp?fwZFi)FGG`w&A^xxf#T+FzGe3ByDnRR*`)kLrkKonULo@X|8;N_A8Lp#d&%w! zy*gEp?W(*uHRGj#0hsya)sY2b!FgF-=mv|$u<29plkPTh;L$n1U-quj55kMWe6h%T z)BRtc4U?5eM4dLM&1NJesFhN|mp+)KeCt&|hy?1<=Ld}@Jn+l!2OnpJV>1(z%cZPy zU%$A^^fJX#AnN$fNYKT&ijf^J*ckHQI$BRnD{uVwbwH^a7mSCiYo-JOZ4aInqp8W7 zlEEd2kcrQ;|My@1_ekSq!B+fJgH@qWu5STd=7XR&b^m>tP#=^_8S8^+(1m~R9u@>8 zjWJ~&B~Sw2dcP~p;@_R?hGShQP&8_9HNGm}VyytbBY-ytRS{r%2wCMpC4FLlfnHq< zxV_55iW#=)#MsL%@5O0A#SC)OwplY0-~b$v>_zGp-miS`OU)_vuYJ zETSC8S(mquw>CHLs@(!F_6{tP-YaYMd;;jr9urEMrb0Jh+fc6a?*_17%*dz2DbKLT zal`)fKFL(77YRv9%T;?#2PvhRR$GP~c|h&R%drPP`0y2l654+co{<-?`gVrnjLX}) znz1pzIyR2tkGXP(Nn&hFpN!y;pzkCQxo-di#s-Jc!XApEGu;Sqa|4o^E7!0u7u^M3 z*9nG8R_)@L%ia+Y02Mfo;qts! zdzq2pHlGi*tlJA9x zs#-6}N7Riss3D{MXH({+>R4tW=qyNszlyp{E!hoa=|~ajX;_2Z92>3##Fj1}YX(Ag z5ZfxXz9{3V$h7OSZ!KO*{p9b=A2J$mo`6coo278b%t>8n=$Pb>i=1JM0koHXRp^w z6Sc5YgUhD^n!K|ZR1u`A&|Yc=4 zlp*Sj!S&m5Lc@>2cX@)gWu;RXX@PGC3(tsF8Igox{q%2tLN zH>Jv)I!{#$IrM`xqDvi+%7;x85Ze}%OWu#(s9bqK0-n!ztGCbp^Db54D}9D9CIFm< z!AvxDp!ATKtQ2&l#9j419_LhN$sJ zBXyopKGf5=aP9v-iB==8nx+s#CDk9QE<9o01*$uZfDMF+z5TuqcyHf*8K3kSIvxhE zCEote?j9p$+_TX)r65{m$mDQ&kT%ud#;d5(JB^59Ie(!C*io`er9}yQ9crM)Gmrmn zV4n>gFGB6N%>S*bfmqoW6TIa*u`G7WOEW{9@mK?zHO&Er8n1e#O|LoWX-L1Qsy73& z6-dx4f@JlOpqSbuGavg3txgWbfy;XVLn;-y@ z*ttx8b}oEl7B5@xR|YZf0yUBMfOp#n=&^mjDOKlp-Mwx`H~P&o!e?I)RE;vYAU56hgnOcp3yJp%fXz4d2M zw-@AQ@hv5({oqvLZ46-P|Icp60xvq-aef7N+D@IC&7a1f66-0weZ0^}dVOUALlj)( z9LTpoy|^c!UHk-r#-Ibvyu5)PXwSp3MmP)OO2*P~vIDf@z@nytCEfllQq$r%0{E@2 zNv>_KBf(}6)07d(EE{&0*807nBOLOKpj^$B33%%A<9{B*HTsQJ+$H62?)t9=J>#%OqDTW~b8s6HtaQf7!`jt2Uano7j06GAkC{hl z<-j$z3JgB)t?{xbMmK?L!`x1m{m-=#!gQYXw9`DJkRDl*LSmU~&cAPvK_vOQ2JCx0 zH}wS#hen9jNd!DMoflSSq7Ba^e-LC+7FAO2|67hUA+qe1IX7;o?EH8RQ2{{@jk(%oTJUGnA*f{^-S`E% zD&ByK;0eFg2+Wpf_ka{=Y#>)KRPKMw7J9whOq`MkUi{vfD%pQtJPX*}b_El>>OYPv z|3w^0Sm;#}FZ&m$2olUbB&v5KbBPs*i2X8=9K_z`F=kGnmk#8!+SuUna(!cs z=KS|~;}sayhleJ$E?na~^}L}zQviI|wDT?zgT{vwdjfuUkY+Rj2Er^TMsMywE+HR) zzV~q6Y_o4|4yg1FXj$?1l);{HD^1h+chh6QN~6+r&X>R>rCwCs96ZbK1eY)nQlB-T zAL9-Q@YuZD27gPOA`H?TAOdr7t>?o1&QpD8h-2^cZ1%Yv)b_|B?y&vm~{|@%g z>q;l$7qh69a8j@9CGJ$Z!auo0O-*_+ysq@*YuQh+!QO`YYkc|hz(2hKsFY6G{Q%xa z#2;s$T_O16nQ;~Kqh@dpq&?dSfTcC%_eAjj#Gf?05Wu%ViKS4mx$e1flTL{kX<{ZU zzOfjGY8j;JMqqU)`FKNx(+*f%-q0Kl2#*{iE3*LY2BN67*d@d&mOu@K^8gT0=6T!h zu~LHlv33~GdU?KpgNG6E+B23+jHpio>j@DBslDzS&snGHBE30QO(wu|-ZXlVW61*K zfETo+;_S8oFUeem9Gy`-8Ya!SpuzBfbE?p za4>(}Nis~1{p82l;k9Cm(J=PB%tjIbn{h9coZJFoJ|(2WkO{1)M(d26KwnuY6O+B{)_} zdN1QCSXi(SO%pLko$rNb1Wv_h*DD>bhVbPsV@u*Tpm^?+J@o(8jRclx3BN(BBtfje z_8d|}Yy=I!nfRO1PsM^TVZut*wzA+tarh;9|80u8NUVf2J7&kT9(WF@+waZ+j_VH8 z={f?9pC(|K(f_V~3=-6Z;02I7HwJKcX97;vGk3rTydg)8Gw^%!V2OV#1%0rE-#BFu zb!rDlK)M4hzz8s5pPYkuJr|(m_#SMCZa2tzzTWDv>kw3UJ2fqUPkDP>c|ql-Z`TG# z;=G20;SOk?&E044Y&-q_CeRPa^3c=PFtN;nJYjo10v-ecAVgqnjR$S%O1HnDN?K`W z|EM-oFMO11yFveqYYmh%Upw00ew4pp@L38W9t;J-TPJ_F7Fzty{yG+9+ytR(Z2Uor z{^e1n3#ab$qKqCup#5c5dgsMM?pD6WvNa$QD z37_pEGy93||2||mX|U0(Sp%|2Mrp#5Y|ob2G>|jn zC1(^^A7@uAL7dWU3+7>$hNc{yWfve~KLODi_4m)l-Fc9Y{Dh`&_R$jBG88Y?0|%z7 ztwP_1o<`2sms!V@5fw+=xoDG8NX+Iwo1@(S^(?)X%5cpy-@+UP3|T-@oP;JQ9m{(25i zGe`7en?~7Hf?!~eA|d~myge+MCxiIDWr_Qd{N^Afid(wm*5v__Bo3##^Si??;>L)%UHwH9xJ>jddJjt~CQ~E>cELd~y#>`Q%;4&TH6% zVJ(LrbN1TX)52`9eMtZ zlue;a8OXR6EU5nK^0vB`7Tfdv{{S1(Ov?C-i78J&sPloA8eTCycA@FYkusjgKUz(& zESn0wr@n%n|BI8`h&6l$-B(XQ>61})k%GR=BbpJ6F;pF5pY%ELLrmm?9}(`}Wr>Ra zM_&rwe5>U25+Fj4JbL_dgLTz6p#uNmIh*5U9F`#E=XgSd^pJl=$fdXhS+)+|Ex!LG zng?F~46D^u$ZlxYb9FXi@i(CJmNUoR;w1+6zp^_%fBD5-OtQuN;lB6G8dUSim}RTU zCj3CDA67=3O&>n>M6&Z^vkr%AtL@wg#bylHTJ0 zV=BHo@mFBZncILzurQPn6?3evOT7F`LVI6Hl`&c4Dly$RsNbHMFTR$fKo@A0rj&!y@M=O==1NWs9t3 zd4S^R-~&Jhk<%*h_6yK{&*U^59M$@Q^^U8xzXwb#}b z{uC^y8ASo{%jBUi8QTCcJs<4u>fTAM?&hBHj0-?mI(t(;FOipT>t zSWm4(UHYOb5R9sn@HjVu?T}Kr8UDe@PvONBWK=08%nu6b!|w0>y%ymBV=4q-$jZt6 z0!IbsBYY3v>kKJjpcn%7lS45a!OvMqoxNI0bj^n`y{F4 z>BcR~m{$x_b{;TY#td7=_PEtTrPvgvxZ=|~ai28b&cY*Rw+nkXf)WRB_J#Mpo3g$aH1Myg`K}q-VcunLdWVM{g zP#R7ns<)w3Se6B0*>fWg`|_<=UW6O#+mKzzGC8hhd8qfxW4RKwI%n;3;fJ`h>_QsF zysRc_{#dDCgQZMyr(D8DKjB@%M%~Cl`x8N9Q5g0YBx!$KMC|U3c1iT<%+)z8_y>`r zgTJN3tLcpOxDBnRrG&Nvm9Xz04;eSIgaK6)w7&4!*o(8`$(q?5)w*~crI~#%tJ!$P zC9ozAyDF!GiQ+3-iyKI%2~%(M$#Rj6PDBkK0#s~zp?ErJsO+ogS!h@q;A^ee|5SaZ zzG9d4D|0f|FMO66aO{+_!j9)4fs!*EU~IINULk4!kQph#q>Fp`2qY2hA++R)x)N@t zZ|HfIf{aF3FUgn-Y1@^NPL}3fXP%C%r3ny+i7*DJ$T8-k0 zwmMi^>e{Nrm(MjBueyhb22a@Sm1a6KvgBQ~(4$aJ(n9L(2QQQ(4{6E-<4sHUIAgCM zV@EO37>Pv^9U+x!u|J*m{GWZ?=`uNn@G|Dg>JArJIb70A5H=VAQ)1o)9&f%xU0`yiYpd3@FwB^P?e?Vl z9Herm;rhmA8CyJ`2Ug0DEyDYU)-Kbwnnz5NkXm-PlQCQZS;>TZR1nR){)pLnw8KaL z-VRYTPFtncsNZT}q&t-a4`3vcx&fOdNF1+q{xi0nrBYrvK97-JRNWh+G@ygU{4#lk zKi@TD*NwGUB!s?wYUlM3!u~YOOZwom9^^_R^Ai{y%mYol0E-$dlyCsRdju{&q!@X{ z6D7Ph`CUx2c9|p)lud1KSr}I6(wY9me-TiO5Wyg)KMS81M*+GiQKq_2<=y|iTg6~(7l@|;@Bj~>XK_=EvG;4x4B9cbVtMrd zlwM7Px0{Ck+C}Vvr-S6|ilQZ8Ct;A8BYo!#s)rr0@%O`+oFc5(I9WBX+ZD4}#G8g< zQAe55p`uuP3h3BPTLE*KV|e>`OZIa+{$ey}b#*rcY>vGmDhW&~m_;^y%u^AaShcaS za!~yRdedv4%5{6d*l)c7D3xJ=I4yjX?O z1!yi66s`I+iCx%o`Mm+pZ!BM%4#z)@ar=t>EMW<9xNE#|JTY9$5ZD~sfahtUmCK{& zE@>kY-w8w-ymC369ZWhE{W_TR+LFX#f_#E(5=RX)YzhnC?R{$wh(66S(j8xmi?`ML_cTO^F+;sq^apr%+U4x03E$aHH`E>;?m?SwI8P=sL zKWAN%wI=Y5MC*4P9u=41Gu>+|ULfQ1BeQa?k#yhI+Oq57HP!F;XHjPkO(&RgV5VkO z#7CIafVrT!CN&cZ)wK=KASf`_oQ{8N%t15!S*}JV+LVRB)d8&?rymjE;7;YGY(&s4 zI%A$HF?q9QL{X`9{-bAN)oUDVVI)v;HE?vg$7oc2GSK-7dNMDO2bao6n+jN6S5G>smbOn4<l}|W-zGxSoAsqG%le8 zN!$%cBK!U7rqr0xXR%g}a`}X8D@r#GWKqjl42(P}3VY_q#Htt|%#3CHT*9M-#HmAK z;N98E0D7FiGblZ7fk>*qJ_iX>qWVR=qxli&jo1)}KWy|UREmxJ!@c)ai~ z-b}LyO3x&DmqO1hu8M4po-dT${R6Rn?3$u8d6jL2?rW!7Ie640ClAVb;ZTQSQmvxW zuuQ~JF&Il5r1%$-z1*y_w2Kaz&06PLY|7OcC)UJftC+9rVy41Mzm?w7;^V9732Ptc;KgL! z9nQPEcve&3TdSDUDXQyzJiDiKgij)WAZ_~KG~IMgmHV&b@hL)uWhAGY>yoEnW~ z=hBT3!<`~*{e`+l9=d(s)LI64tRJoz=2vrq=_ZTFR?u>n1-PQQc(DZ|R{@&ulqlz5`Ky<^;t5N8{>_y`&?*rwXQBvZ zj&o9dq7WDf@6_C^0nF>78}h`AN<0khg0Ku1wGbd+by~N`h)uYo2CjN9yo;Nbi+>Nx zkpSPqXJPHyQ6FgrE!mBMfsD8p1v>tqE92dN3Y6M?^8~62JXxtPUV}XRwhkNbDZAn| z`A1zs-$(3BYBY7&qK(w(S+`O(yW)d6D<*M`Z6!iKEqTg}2SCpn?0yU5QUV)Yh0qdhm#!mpS%rGy`wGAqY|B+x= zO5&nyTHf}sM&Z`~N#bFqBI{3*lV~flZC9ndFfj`io{~f=nh}1SjAKPS4&HMK5KLI@ zW2o8Cn2RG^8w(Bx=ntyp6Y-%B&1NGFGTd8`3A=Ni9J7O1*At+DR|OgpGP3wnG|Bjr zD5;C%Rd3VCj~V9t@_1fD@QvC8+CZA)neZ)4xMxoDa_&ZyjKZ1R--!Ox&#JVOg+?f1 ze~)$iLEg2j4WfA3K}$t)pK+Pli-Wg8O10m-pOG?tBYbWS5^qe&d)di^YsXVp)6q^x|NU`OkM84(lu2eV>wf1Plje?gbm1qxi zX}?drwfKqSDT`~=NtC^+E7KK!2Z1x59}Z_SDIpb(qGU~6WR=QO^P^y62?u%tV~|i5 zWZNt7%*Dz&M!E0L*$2eg8pkcpE~1)l;HcF+|Ckvr11!Z=6dF7>?k(PYR$v(@={Ux! zjVUGhEBRe;Oj&u0oF)F^Yaau}nccbAz$xg(dNtBSnqGf{ktDp^8I&nc@TcRq;^UP2 zu^OZZGZvTn%!x|b$8TQH%O?btg1lT5b|alfS#pBDsJ_7e`OdjJ1xhlGJ?D%p?`USJD4&f|+$8zEDc*>;dvnlRx@)aoKIIDx zRuMlCX7hiurX^N?+ZF%77@qel4ZWldNw(dju<>RAhsb?tFuWit$$inONoq~HppmUC zx29hWY7@`!(%|`K{W<;Z2=)Ol- zT6vxVB$PgF2w z&N`K*-?7W?8LFM*QV1=?4fSI{cp>+8`o00&<0(+0uPzwE_3K^rgm8> zA~*vr0MJmuchf^FmP1vAM@!qRZ3cKIrJ>&HB){p&@jL2hw6vUh+E{oyRDmwqAV6F0 zz7~9!+Kz1b8Nuz+5~`-pyesttbf=dohbkYe!oEA$Kn?FR4h&MKN-T786{(@vS)aB0 zR&1ZxEemX{uNw$TKQydOnPL3^j4{Z@l}Q`Ao`l2yRZEdr$vD~cfCh39j71}t(Z<;A zID1`9@TGPKm@j=3DYHU~dvlM%1jS|DP3M3DRL^q>^>%?06^^K^sWMM+r2sQuz6!(XN}D zy`{xG(jjkm01BD1rFc<3e+7@9I>zhn|M~iM`DxK4-kQ>i2Gg~kPno3xy~~oW6!&EG zBzWLA8!%$Ygt7Qsd36OHO0mINyj=lF0S%qjKNl<8$?_Pl*-kOA-EQUS9;M{DkHp`@ zwK|(@yLj{(t<42PG=O?o`qh}m4-@%dHZK6;O3h-A{$J@WP-=J|bBgJ%MA^Zw)M~N# zplls`)?_aasSN@XWyIOQxK)L^)lxF^X1D zwqk_>ld#|nO54LYQD`pM8gSfdM9Zx-7t=kC=SmmNTmM6M4*D*D^_&DiN?l=#N34V) zP;W|mf>o0zS}zh0Y9(sDloS!*1tY!x@n!khA8!5yMeOaW{5wArQuvTU&z>pAD*~Dk zZV0}bCeWKS&hy`kws}|uMmrM$U_jRDPbx;DFd8(bItO7cC&3i4aJCAT5-AH3n|Xjv zP2n)YjrLj0&h|bwA548gw&2`#?_NTrd5fI-%x)db{skX|zt z_efx>p+o(N8z`ssW9?Yu&v>UB9n71CWo~PyVWxw7zmxn-{JKuFwSQ-~9p|!waR5HC$Ya`nRBQKf zrn|Rt?M7*PIa9lbe;28We&vPyt@^*N3pc#zT4%3u#Wou%x1>Gblt~|61dM{eL~ow7 zWPc||4Ti-HU$(fxY?ubm?kbabx+>wlLPc)6CyY34BvL>4+r+X9eZ?7626)=GnRt)e z-<1$Eb*kwI_E=tBu?`#Di60~=YyXiVw*t+6fG#CdZ{aW^3$PWpbrbsOKmf*?#w*^1 zKP8C&CJ0_GvfQ|jvIzbBG_zsG1Bby3-_4JEpTs#Mha1k=E@6@+x69u|&r zUT~~083bi)v)=3jiXq^v@fTuzE=OzO$3C5>WF( zhZYj>IreOOhr8$9CJX)W$hPA$&cH*%PQbSvBOU<_4TyoH5LoNZhv{5)C`P2t)&1 z`P#Fe+>=Cr1TSy6ehJ0^P+*z{APmsulrzAj4)T+yOybLg!o50eVk}5RfhKLJgeFWO zMbVgPI*|LifTHm8Q107?YSND!@fd2RA;qdf){)0ubjb&!ABf@^OI|78 z2LC_V8BsrUwPG@YI#qX@sTxd)o|13PIA@!riNYC?$CMmw;9z*g!5Vql_fUoJqCWI) zg9$r#P4OS3eKiA{j51H$?)?-}>OBvcr`lN@J0_xz@`B1TEOb`qUO`!teaa=Lh3iI5 zKwWMp(AlljAg*Z<)C#Dhh{>Y$`~cRhm@6b9F7C|$tl$k5oerb!bz$=*Fw!o?0nV?U z#VKae@a2&!ezfM?dB)v2%5qc_fIPKicwYQDS;+kOto}ZGNwRX)wJ#WH;1QjRDexUi zFISrTRs;;dHpsLm^`fvkywF(Q*QBa&m3mw<)vAkuL(KoE9@{~me-j*^U(XX_cy7I& zB>)@NE>2aEyLwBxqHt2^JRyaH1xfh5(>Bo9>g3ffieRwzw1PJte5`s!lb>r5k4*-d zk-2*Y^(zd19x3Z9G&8xw5x#&Z;ME^XLfh(MWzOugLXz3vyA4i?{jV=7UOxbIVo>KD zdlGm%#sz+c!$5p*fF`k8Xr*{nF<7&ZfZzY^%I3237i)?reQ0vuZ{)!Jrv!8O`^~%Eh$WCM{gv`eZ*?UB0wrn9=)?+_e$%tfotc=LWp5b?H zeFmT3w?Dk{dO7!f?lZ1)uIqZgueU;iM;*xZ!9ik&RdtcQG7$#EggXH`C^wNl7k+(; z2x+O&qDbHitxW(irAC)%xgSQ+8^?E*hsUms#z&ghPMrmp#Aj`JmYfSnV^U9 zTrR-+OViVlVOiX}FQw@|sLsHvsVOQnQe#pXMinCcCQeKJO@eTtUjK78?W*LeNKOi0n^LYCK%IwTk2sCd5_1>jIA+y= zLhJ;z;NO1T+gdmS2=e6@p2{`fwJbJJ`64nZI+~;A3Y*dZmG51T65GglrUU)&J&L+@ zKHS!O$;irJmOjLye?|HsotZ!y!DmeWHX<5^JJ(A)WV{d`*4A}^#KKU?J&$Z~>JNE` zFoZ@h-g*E8QrCvlyL~8137y_n=4pPvK$cKhV)-USD##4e7w7kIFDs=PCT*COM)xcW zZCP^!a5qO?EMjR_W+G*17U#U8fr|2k9tc2`jy|M!Cf;iENiF%|v>;=4q-*wF+7ql`9x5Ap4Vknc6rZ(13i+~M!DckIa1w;0IKQ=Gb_V$AW-Z?(r~z z_o&t9+nxF~xZ++P!!kz_{3ogH7(Q|G={n6KNB4O&6_^!Gi?QdE z3~FxSi|VF_YkDxTYE%%4H!G-phBW=O>2oJ|uY0lad%J}Jr2*c7G(&%JI2O=^TsXaN zYsW-0o{4V~)7b#bn-+>a$Qh>&q4p<`goBTa8J=}yB+7%wEQf#C>=C%>G! z%8HH=FAH)Q0~MeKunKyFBucKgnqA^F4}Jv;W<3c2;#ELdJ1dCswx75bq5fwq3>?-0 zW(@a(t#yxVsQQzYz{5hhTNoTUK5e1zRHLGSYu-;4CH0qU-bK6$vfpq(50i?`8uJ(b zKtur)y;HLuR7OV?m7d=B!{}sy6qO^0=~zAs`RXo_rjG^M&@_@UXAc8^R{G;^+~x(M zD!YvQ52t~S$Kq&xZ4%uDGw(pP6e4d3-Ic^Wotmpw3sV5asG$V*gyjcEo%gX!xZa?L z9TnyS9S*<;DE^VaI1(XsCS52+Zv!zO3EMb^q0%cv=&^|q8KRk7?!6z;$EK zWpF6~eF^aI?uaH2?;0K)rf|PJ77aW|BRHQ;{jW^)T1fLEje=yo;CBVV&wQKT^ zO7iE25kmN3UFe1hRm3;Cpeu8Y*6b&~AZiLzCe2|5@KSbVnk*dwc);B!ewFY8O zGW~rJq7-62hxy09>JOO@M;F^q5YqQvgV12(V02O>MfawBSAj*c1@KKX-v}H=r~T@OM_9cTj!n7>}GaM^@76`iCL%qxAOg@ev8%G3& z@@h)Abr>s)SoX_~wMFN@ zD1Z$FbhGB$8+TbMT%|qP3*2R?olmrYKx`rtQM|-cv@5H!lK0f+a)QQg+ARFJzf}^_QBs8s7QBK45c}0<`V(vJd0{8;Jo|pz zgb+lE={Dr!Zf^V9r{F1|xKpq3nY_NwN1g&oJVnrEJ@ZBzSsJS<7OZOB`f!TBvV$n! z5Wn;uTac0Lizg}75cFevcC^Cc2hNcKO62rObG)!|R`)Cl}>|Jkwsibd0VTgg3ZCQ|T;Y-0J&gztM8s~wp z{&iFB#Y~{xd1$|NjX7+Ks^3CQZx9w$dmy8!oj+oz<2 zr+No?>W5a~4j#4w{Hl#HC}7kCp{s4CO^i!&x)!AMEc-jvyVX_>@<(q z6OhBj0Iu%_UqhFvA-$g&C~x?H5~C|1(_m?&EN3#_2HArDh64hm^@SoK1~k8Zyf`~) z7(jMS$1na#iJKE4xeP!K>WQm&0>Qlap3juBm!|}AH(Nro@lJe#sYz;r@iAD=?hi38 zpzm2uO?rE_f$-hb5zksHk^qw!>6OaAvc~dp_dCR+fRsLV8xeD{I;h5zBWqf9n#L=? zRk=Sl5%?ODuIYU|nT2r7ki5d~C%U|8kSSPj=UsEI27pVd-@Gsu{8*rA@*eEK&llsk*0ag$yv^mFj1p+Zqi2|b^Tw0ovV70eg zGGg6%-(xjLp(9(#2$_SE;rBNEX%AG=@yMm9envQNsfwG7tmSi0UfkK!h!4m1AlqvxF$n08 z_QLu`Jni~1fFRUr&oCmee&2*p-#gUavf4w3rjvGDXMfr`fAY6;?$|7&7}bW3t7%dN zDLuBp6uJQQr~Thv4hz5TPxdNrX_Ws$NPF5|6QeHrCbO4A?fHBCvf-t5b*SW_BazU0 z3(3*RF<_%xR7Dz_CIsnR6@MIgdbzqq?{$JjdE=I{-$*6?ikv7FCcG1eP14?&%7QDs z`vble{`RnR3r|Lg9+0B(P!_#qAZf&aRcH14vfzdv6(ya(Eknn*7PJ$oixkzodYvGS z&VRQ7RN$fveUBb-8;|`(F@3m(4-l&0mjpvro5u)3Z zA~G&^ydM7A*?b!4jd5;ejQ%^Srypy6#T(p7UF_R|18rnEjr7LUgUZDKvU~)O@+cP| zZ`b26HU9Ca{vOU;TP#S+xY)UwaRXGOm@KRS+OzghbpeQrv7%l0me4joCPnSeKi_jY znd0~iYv2rpNK(}hIRKbC=c?E*DWLe9)z~0(9@gsR`;*YaD|$oB|8nB~c_k*+v8U_q zG08vz(%`q4w>SEQcolK<>VkJ{hV+<^=q9Z5Ie*@at_-TEi88Nx`M!KBV_;Z2)Nsa_ z6FW~Omo;NhXF!wd)#F-i3;upRPX3jeCa295$xIzQJ|8=i0|g1{`MMvMe()V{%!=4g zfUt+s;^N|{D2k{yyVv0xUvtH1t0|d?cp;7r)V! z+2rd=Qt2;P=*f?1*7>UT7G9eqe=rX$6ff zZJPsJ4{wyJW#Fh2+5XcjM23N;qdSXJ6S>usVl19&WiF<)zKf{SMV-pJH67bvD$7S6>cCgvsZJ^u;t$a5f2ga|b#QQKte!EBv)+SI;a16rKO;Z) zhDIdVVqBZaAeZ_@WGh_6Wh*z}$1E!|v$Po-o1I^Pw%D|RfnB0j?V8OI8=I`B$Bq`K z^S&{Ev1WQwt)nas!Ot&oPk(kjPc>T^v$ojq!wn7#8~nY$S(s2A*q}x5lo90uYhOLH zB9PZjLPk0c*>p45t&#V`5WF>|m z9Q9C1Da_&hv&G?3bKM%X6F9tq+=6+y=5XJ9T-cr4wUVFYxyhWg@pB71j|Tc=rFy{R zU{BzcY7QhA0?@~Ci_3mG#VU4m=LW6JD*=}e&pGK=-ceaY!G&C=e^{S;_&eE2 zO~5vziTX0r)=~~EN0o_*NhJF^%0;0a{XZ?A6b}VgdU9xOXlAY)$KNS4dlQhAW6_o+ zD<>=02dbp?Gtf5`%D64R{&ypyVK|aBRPg!9B}K&!1^Kd@NnI`nW)3f2>?z71 z_7&SMpIao)y?LIsu?h%lR~^`7uN>R(^(b498ja@~*%_oiNxd^>(yQa zRl?;|R8$5z4^G5V4i0uX0LUO|(-8A+hMbewh#U7C#s&I`6`zWTf8b=02#Xs2Jb)Ukyq?^$R9O#)ZB4Zgdj(yq&DF!fTK| z$_9Sui%xljgM16x`3;B!9{Y1WyO+;?O?X|biuT4F7#_}DUS5Vf<5t06QJk4!u;|Hh z3kuX;zI-Vzm6TvBuPoQMzxiYCh48@0$Ose9^dJ)f)wvm7g=RQ7G!!3UBQN)$H|B;$ zbW~JE2sxMIX9a}A=Vs}1U8zOZId9Iczr?tSGSs~ZlyQ|iy1NHJ$);K(W>n3r0mHem z)JvCeUk7^rd zz0)ek#>N%~g1>QHemZe?EhW!RKrP-|A={>!+n-|w2f=)`y_4s6?xF}0U|_g!LbP5) z(>tqXWBrMpBr}dx2;ozg@vzBQnK4$))RqM6}=b^IBQA( zh2`zrf;f3O3}#f@kNG^?F#+%yehw&%@17K%jAy@kOEay!T+KJ?4JJM6xXh^-n74|m zs!o(+^b;u3Ob6jUZ41P{p*&(gqlMz!q}3wuHz>-1|U;f>8^La_H)lSc@{ zu(h>Kyaj)|(o|^pQ>|X*QHIvsTwZSOT1b@5W=P1#vwyAc1YJy|BqbNh!o?~T>#k|l zs;|?8tKZaREgs7M@C3IV>sQm%IprF_X&gq@@7t29sC(w}`I3T`v zX~OTqtF+aNJu=oSbIa9i;Z?ji1cR?gSX?Bf5ZgiF$^Y4?pn#2rg2L;J%*+bA&rzRf ztgCjGzpiyDNC_n;@>?Z>^2pzwfn)HKANASgj3`Ao4Z!R{f>ocajHnKzD)wLP055Kakl*(yz+{Q_jPrsM0dVUY!1FM>*rs# zSSLKptOf?1CI^P!Qu_x4&Ms#Jn`={4FRPu)~91MtgMuU!4HZYu6pr(UGHKdh8w z<7!z>O>yoZxLKnA5rc`DSvyW8u~wP6<&(}m@)bL_qNif5yT7=AQ3YFXJ0x_VHz%d9 zec6)q5>>VzLMXJoX9!qZnnN>UczANW;Q2!pFa8&jl$;zKFKmK>8pg)PyehkcI@V@@ zYL^J^q#!*|I6SQBT>oTgTQx^Xr1Tp-DusgI+VA}IE-Wwi18T9Fs_L^=Eo0+%z+EUe z>87+;Uk0(TQe`D?nK%Vu*tIP&be_YzNq5yIV@z9i9~Gx801gzyF( z9^!KkSRg@fDpVeJRz15p#gR_vP2Em6q|ZOVon9QVjeEyB_-wyndpE@q`|#EW=N^!z bjCG9TPabh0wkvN04g8apQj#o^(D(U2WhK~Z literal 0 HcmV?d00001 diff --git a/datax-example/pom.xml b/datax-example/pom.xml index 6d136313..f8285ae8 100644 --- a/datax-example/pom.xml +++ b/datax-example/pom.xml @@ -15,6 +15,7 @@ 8 8 UTF-8 + 4.13.2 @@ -37,6 +38,23 @@ streamreader 0.0.1-SNAPSHOT + + junit + junit + ${junit4.version} + test + + + + + src/main/java + + **/*.properties + + + + + \ No newline at end of file diff --git a/datax-example/src/main/java/com/alibaba/datax/example/Main.java b/datax-example/src/main/java/com/alibaba/datax/example/Main.java index cb6f55b6..1e600753 100644 --- a/datax-example/src/main/java/com/alibaba/datax/example/Main.java +++ b/datax-example/src/main/java/com/alibaba/datax/example/Main.java @@ -4,21 +4,20 @@ package com.alibaba.datax.example; import com.alibaba.datax.common.util.Configuration; import com.alibaba.datax.core.Engine; import com.alibaba.datax.example.util.ExampleConfigParser; - -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.nio.file.Paths; +import com.alibaba.datax.example.util.PathUtil; /** * @author fuyouj */ public class Main { - public static void main(String[] args) throws URISyntaxException { - URL resource = Main.class.getResource("/job/stream2stream.json"); - URI uri = resource.toURI(); - String path = Paths.get(uri).toString(); - Configuration configuration = ExampleConfigParser.parse(path); + public static void main(String[] args) { + //在此处指定你的测试文件路径 + String path = "/job/stream2stream.json"; + + Configuration configuration = ExampleConfigParser.parse( + PathUtil.getAbsolutePathFromClassPath(path) + ); + Engine engine = new Engine(); engine.start(configuration); } diff --git a/datax-example/src/main/java/com/alibaba/datax/example/util/ExampleConfigParser.java b/datax-example/src/main/java/com/alibaba/datax/example/util/ExampleConfigParser.java index c10b8ce5..af4f2c18 100644 --- a/datax-example/src/main/java/com/alibaba/datax/example/util/ExampleConfigParser.java +++ b/datax-example/src/main/java/com/alibaba/datax/example/util/ExampleConfigParser.java @@ -40,7 +40,7 @@ public class ExampleConfigParser { return configuration; } - public static Configuration parsePluginsConfig(Map pluginTypeMap) { + private static Configuration parsePluginsConfig(Map pluginTypeMap) { Configuration configuration = Configuration.newDefault(); @@ -79,6 +79,7 @@ public class ExampleConfigParser { private static Configuration parseOnePlugin(String pluginType, String pluginName, Configuration pluginDesc) { + pluginDesc.set("loadType","pluginLoader"); Configuration pluginConfInJob = Configuration.newDefault(); pluginConfInJob.set( String.format("plugin.%s.%s", pluginType, pluginName), diff --git a/datax-example/src/main/java/com/alibaba/datax/example/util/PathUtil.java b/datax-example/src/main/java/com/alibaba/datax/example/util/PathUtil.java new file mode 100644 index 00000000..7efacd88 --- /dev/null +++ b/datax-example/src/main/java/com/alibaba/datax/example/util/PathUtil.java @@ -0,0 +1,25 @@ +package com.alibaba.datax.example.util; + + +import com.alibaba.datax.common.exception.DataXException; + +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.nio.file.Paths; + +/** + * @author fuyouj + */ +public class PathUtil { + public static String getAbsolutePathFromClassPath(String path) { + URL resource = PathUtil.class.getResource(path); + try { + URI uri = resource.toURI(); + return Paths.get(uri).toString(); + } catch (NullPointerException | URISyntaxException e) { + throw DataXException.asDataXException("path 路径错误"); + } + + } +} diff --git a/datax-example/src/test/java/com/alibaba/datax/example/DataXExampleTest.java b/datax-example/src/test/java/com/alibaba/datax/example/DataXExampleTest.java new file mode 100644 index 00000000..12aac3fe --- /dev/null +++ b/datax-example/src/test/java/com/alibaba/datax/example/DataXExampleTest.java @@ -0,0 +1,24 @@ +package com.alibaba.datax.example; + + +import com.alibaba.datax.common.util.Configuration; +import com.alibaba.datax.core.Engine; +import com.alibaba.datax.example.util.ExampleConfigParser; +import com.alibaba.datax.example.util.PathUtil; +import org.junit.Test; + + +public class DataXExampleTest extends ExampleTestTemplate { + + @Test + public void testStreamReader2StreamWriter() { + + String path = "/job/stream2stream.json"; + Configuration testConfiguration = ExampleConfigParser.parse( + PathUtil.getAbsolutePathFromClassPath(path) + ); + Engine engine = new Engine(); + engine.start(testConfiguration); + } + +} diff --git a/datax-example/src/test/java/com/alibaba/datax/example/ExampleTestTemplate.java b/datax-example/src/test/java/com/alibaba/datax/example/ExampleTestTemplate.java new file mode 100644 index 00000000..bd0f2a20 --- /dev/null +++ b/datax-example/src/test/java/com/alibaba/datax/example/ExampleTestTemplate.java @@ -0,0 +1,21 @@ +package com.alibaba.datax.example; + +import org.junit.Before; + +import java.io.File; + +/** + * {@code Author} FuYouJ + * {@code Date} 2023/7/29 18:23 + */ + +public abstract class ExampleTestTemplate { + + @Before + public void fixWorkingDirectory(){ + String property = System.getProperty("user.dir"); + File file = new File(property); + File parentFile = file.getParentFile(); + System.setProperty("user.dir",parentFile.getAbsolutePath()); + } +} diff --git a/datax-example/src/test/java/com/alibaba/datax/example/util/com/alibaba/datax/example/util/ExampleConfigParserTest.java b/datax-example/src/test/java/com/alibaba/datax/example/util/com/alibaba/datax/example/util/ExampleConfigParserTest.java new file mode 100644 index 00000000..64eab578 --- /dev/null +++ b/datax-example/src/test/java/com/alibaba/datax/example/util/com/alibaba/datax/example/util/ExampleConfigParserTest.java @@ -0,0 +1,34 @@ +package com.alibaba.datax.example.util.com.alibaba.datax.example.util; + +import com.alibaba.datax.common.util.Configuration; +import com.alibaba.datax.example.ExampleTestTemplate; +import com.alibaba.datax.example.util.ExampleConfigParser; +import com.alibaba.datax.example.util.PathUtil; +import org.junit.Assert; +import org.junit.Test; + +import java.io.File; + + +public class ExampleConfigParserTest extends ExampleTestTemplate { + + + @Test + public void testExampleConfigParserShouldLoadDefaultConf() { + + String path = "/job/stream2stream.json"; + Configuration testConfiguration = ExampleConfigParser.parse( + PathUtil.getAbsolutePathFromClassPath(path) + ); + Configuration defaultConf = loadDefaultConf(); + Assert.assertEquals(testConfiguration.get("core"), defaultConf.get("core")); + Assert.assertEquals(testConfiguration.get("common"), defaultConf.get("common")); + } + + private Configuration loadDefaultConf() { + return Configuration.from( + new File(PathUtil.getAbsolutePathFromClassPath("/example/conf/core.json") + ) + ); + } +} diff --git a/datax-example/src/test/resources/example/conf/core.json b/datax-example/src/test/resources/example/conf/core.json new file mode 100755 index 00000000..33281ac0 --- /dev/null +++ b/datax-example/src/test/resources/example/conf/core.json @@ -0,0 +1,60 @@ +{ + "entry": { + "jvm": "-Xms1G -Xmx1G", + "environment": {} + }, + "common": { + "column": { + "datetimeFormat": "yyyy-MM-dd HH:mm:ss", + "timeFormat": "HH:mm:ss", + "dateFormat": "yyyy-MM-dd", + "extraFormats":["yyyyMMdd"], + "timeZone": "GMT+8", + "encoding": "utf-8" + } + }, + "core": { + "dataXServer": { + "address": "http://localhost:7001/api", + "timeout": 10000, + "reportDataxLog": false, + "reportPerfLog": false + }, + "transport": { + "channel": { + "class": "com.alibaba.datax.core.transport.channel.memory.MemoryChannel", + "speed": { + "byte": -1, + "record": -1 + }, + "flowControlInterval": 20, + "capacity": 512, + "byteCapacity": 67108864 + }, + "exchanger": { + "class": "com.alibaba.datax.core.plugin.BufferedRecordExchanger", + "bufferSize": 32 + } + }, + "container": { + "job": { + "reportInterval": 10000 + }, + "taskGroup": { + "channel": 5 + }, + "trace": { + "enable": "false" + } + + }, + "statistics": { + "collector": { + "plugin": { + "taskClass": "com.alibaba.datax.core.statistics.plugin.task.StdoutPluginCollector", + "maxDirtyNumber": 10 + } + } + } + } +} diff --git a/datax-example/src/test/resources/job/notExistPluginTest.json b/datax-example/src/test/resources/job/notExistPluginTest.json new file mode 100644 index 00000000..afefaad3 --- /dev/null +++ b/datax-example/src/test/resources/job/notExistPluginTest.json @@ -0,0 +1,36 @@ +{ + "job": { + "content": [ + { + "reader": { + "name": "notExistReaderPlugin", + "parameter": { + "sliceRecordCount": 10, + "column": [ + { + "type": "long", + "value": "10" + }, + { + "type": "string", + "value": "hello,你好,世界-DataX" + } + ] + } + }, + "writer": { + "name": "streamwriter", + "parameter": { + "encoding": "UTF-8", + "print": true + } + } + } + ], + "setting": { + "speed": { + "channel": 5 + } + } + } +} \ No newline at end of file diff --git a/datax-example/src/main/resources/stream2stream.json b/datax-example/src/test/resources/job/stream2stream.json similarity index 100% rename from datax-example/src/main/resources/stream2stream.json rename to datax-example/src/test/resources/job/stream2stream.json