From 802d6947b3436e34783563414069a239982f99ec Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Mon, 8 Feb 2016 14:18:51 +0100 Subject: [PATCH] [java] fixes JRT indexing; adds support for b193+ layout (IDEA-151222) --- .../openapi/vfs/impl/jrt/JrtFileSystem.java | 18 ++-- .../openapi/vfs/impl/jrt/JrtHandler.java | 31 ++++--- java/java-tests/testData/jrt/image1 | Bin 0 -> 870 bytes java/java-tests/testData/jrt/image2 | Bin 0 -> 1406 bytes java/java-tests/testData/jrt/jrt-fs.jar | Bin 0 -> 99523 bytes .../openapi/vfs/JrtFileSystemTest.java | 82 +++++++++++++----- .../jps/model/java/impl/JavaSdkUtil.java | 8 +- 7 files changed, 91 insertions(+), 48 deletions(-) create mode 100644 java/java-tests/testData/jrt/image1 create mode 100644 java/java-tests/testData/jrt/image2 create mode 100644 java/java-tests/testData/jrt/jrt-fs.jar diff --git a/java/java-impl/src/com/intellij/openapi/vfs/impl/jrt/JrtFileSystem.java b/java/java-impl/src/com/intellij/openapi/vfs/impl/jrt/JrtFileSystem.java index 99dcc6f6da05..0701359cb5c5 100644 --- a/java/java-impl/src/com/intellij/openapi/vfs/impl/jrt/JrtFileSystem.java +++ b/java/java-impl/src/com/intellij/openapi/vfs/impl/jrt/JrtFileSystem.java @@ -63,7 +63,7 @@ public class JrtFileSystem extends ArchiveFileSystem { private static void scheduleConfiguredSdkCheck() { if (isSupported()) return; - final MessageBusConnection connection = ApplicationManager.getApplication().getMessageBus().connect(); + MessageBusConnection connection = ApplicationManager.getApplication().getMessageBus().connect(); connection.subscribe(AppLifecycleListener.TOPIC, new AppLifecycleListener.Adapter() { @Override public void appStarting(Project project) { @@ -111,14 +111,14 @@ public class JrtFileSystem extends ArchiveFileSystem { protected ArchiveHandler getHandler(@NotNull VirtualFile entryFile) { checkSubscription(); - final String homePath = extractLocalPath(extractRootPath(entryFile.getPath())); + String homePath = extractLocalPath(extractRootPath(entryFile.getPath())); ArchiveHandler handler = myHandlers.get(homePath); if (handler == null) { handler = isSupported() ? new JrtHandler(homePath) : new JrtHandlerStub(homePath); myHandlers.put(homePath, handler); ApplicationManager.getApplication().invokeLater(() -> { - VirtualFile dir = LocalFileSystem.getInstance().refreshAndFindFileByPath(homePath + "/lib/modules"); - if (dir != null) dir.getChildren(); + VirtualFile modules = LocalFileSystem.getInstance().refreshAndFindFileByPath(homePath + "/lib/modules"); + if (modules != null && modules.isDirectory()) modules.getChildren(); }, ModalityState.defaultModalityState()); } return handler; @@ -136,9 +136,11 @@ public class JrtFileSystem extends ArchiveFileSystem { for (VFileEvent event : events) { if (event.getFileSystem() instanceof LocalFileSystem && event instanceof VFileContentChangeEvent) { VirtualFile file = event.getFile(); - if (file != null && "jimage".equals(file.getExtension())) { - String homePath = file.getParent().getParent().getParent().getPath(); - if (myHandlers.remove(homePath) != null) { + if (file != null) { + String homePath = null; + if ("modules".equals(file.getName())) homePath = file.getParent().getParent().getPath(); + else if ("jimage".equals(file.getExtension())) homePath = file.getParent().getParent().getParent().getPath(); + if (homePath != null && myHandlers.remove(homePath) != null) { VirtualFile root = findFileByPath(composeRootPath(homePath)); if (root != null) { ((NewVirtualFile)root).markDirtyRecursively(); @@ -183,7 +185,7 @@ public class JrtFileSystem extends ArchiveFileSystem { } public static boolean isModularJdk(@NotNull String homePath) { - return new File(homePath, "lib/modules").isDirectory(); + return new File(homePath, "lib/modules").exists() && new File(homePath, "jrt-fs.jar").isFile(); } public static boolean isRoot(@NotNull VirtualFile file) { diff --git a/java/java-impl/src/com/intellij/openapi/vfs/impl/jrt/JrtHandler.java b/java/java-impl/src/com/intellij/openapi/vfs/impl/jrt/JrtHandler.java index 15a055d9dc59..ebf29fbfcd9a 100644 --- a/java/java-impl/src/com/intellij/openapi/vfs/impl/jrt/JrtHandler.java +++ b/java/java-impl/src/com/intellij/openapi/vfs/impl/jrt/JrtHandler.java @@ -94,20 +94,23 @@ class JrtHandler extends ArchiveHandler { private void process(Path entry, BasicFileAttributes attrs) throws IOException { int pathLength = entry.getNameCount(); - if (pathLength > 2) { - Path relativePath = entry.subpath(2, pathLength); - EntryInfo parent = map.get(pathLength > 3 ? relativePath.getParent().toString() : StringUtilRt.EMPTY_STRING); - if (parent == null) throw new IOException("Out of order: " + entry); - String path = relativePath.toString(), shortName = entry.getFileName().toString(); - long length = attrs.size(); - long modified = attrs.lastModifiedTime().toMillis(); - if (attrs.isDirectory()) { - map.put(path, new EntryInfo(shortName, true, length, modified, parent)); - } - else { - String module = myInterner.intern(entry.getName(1).toString()); - map.put(path, new JrtEntryInfo(shortName, module, length, modified, parent)); - } + if (pathLength <= 2) return; + + Path relativePath = entry.subpath(2, pathLength); + String path = relativePath.toString(), shortName = entry.getFileName().toString(); + if (map.containsKey(path) || "module-info.class".equals(shortName)) return; + + EntryInfo parent = map.get(pathLength > 3 ? relativePath.getParent().toString() : StringUtilRt.EMPTY_STRING); + if (parent == null) throw new IOException("Out of order: " + entry); + + long length = attrs.size(); + long modified = attrs.lastModifiedTime().toMillis(); + if (attrs.isDirectory()) { + map.put(path, new EntryInfo(shortName, true, length, modified, parent)); + } + else { + String module = myInterner.intern(entry.getName(1).toString()); + map.put(path, new JrtEntryInfo(shortName, module, length, modified, parent)); } } }); diff --git a/java/java-tests/testData/jrt/image1 b/java/java-tests/testData/jrt/image1 new file mode 100644 index 0000000000000000000000000000000000000000..194a8c3301d971d613509f0345fc934c23b02a23 GIT binary patch literal 870 zcmb7Czi-n}5dN-B;xuW5I~17#DF}u>q{fPr!Kx}GR4Efb#1CbF$w?lO+a#{y1c|MG zK_~tZCL{)?4ya;aM4cEJSpXqK;k%c_q8ps``ObIeci-K+v$OM4K%i1x;03kfH{}=c zQXoI6e=KZ<@SV2mZ`5B2J)uTiCTxMoygVw*wyXj&|_W$Vbh+qK9oAM-x}W z$R|33k&!Rdl-@ATGE8kYZDN%6XG6Q4jGv|0kDtelZk$;c3l9$lP3&pzGA(l{$Wxl3 z9s-x>tZ;r@hQqjb5D#pIFt>oy^EYoc^7WK+MeQbbUgq|=x-O-d$pAqd5V z8=(uS?!=WpKwJne1i@8*LVtxH8x=`C=gl})P^i!s&dhuFzWY5n+uMUJ5hYv`DcT4?F{u%HE=cjn{(r4^H0UrSh#(=}XDZmHL12y0pa0{pd z9pFCj2zUZK2VMfN0V&M7wzjH40XwJXKG4=wFeC-r(e9a&(rP34K+SFUuC|U+Gwayy zinc1|mOEZj!3Ld_wRMtC9#dHh9C06NYdR=Oq0CEK3GYE$f}?p8&YdgW)Yc(7q8y>` zP=18>CpUtgxSQHqG%lQJ_adC+t|!@)8RR$&u^R0#j-?;P{i>{V7uMR*=~id4D@)1>$mo3Y^j4RfRhgkhH52%Wz)!7XV=2EaJ^B_{CO(o-nXoEe5;d09u(2FAqgcFb zCtHKJ?~vqKbX065qjTN0UL&ft+L01xSGpCZt0aHfRG?%eOCNhCU{Y5yVG2z{nnKrq zePV1z4nICEVQ(CKGsElD=W)WyvdP;r{2$pIWHugKvd74UB;Kxw`%%B2*6;5zi+|TY zK8hBN+A?NK5#2f0>a_Y7lvtB`Udhl*cLC!$aH-XauB@%pqu!0M&Vl_gy|LsoGJ`9k z-RP&24a!TD5Sh-k!%ow?T3?D9eK}#q!~XCu4ZCza$IMw|cR*tTukwr$(CU9pXd?Nn^<*si2*eciuvPoEy6d-Oeb|MiYN z*1N}E&zx)Gna@&`0f)cGREH(|L@CkLh@4LVk)Zia^h|Y-Ef0~C}JOBpAl58YbZQ&6$9Ucu~jc4 zOu@iEU{cujc5Olys$fZq}6t;nhr!Zixs;!D(dUAuU4r3mk8CbabQSks)qc{m|@J zfMe}rVeCrwoXy)cW+@}~<=KGCKLSeCJpXLYl3Q0O=kH%<1qJ!L+5d%1?temt_U{U7 zQyT^=dsj1Odm~#0Yb!e=3o`~`BNrB)^T*_2z6wrk*_(b4s zR@3M;Z{zBtuavtAe-ws7MB<`h7{>u#*|*~_Qq9y~7E1p}rvwipe}M#~-XXD~ZjQ1V zrSw`jyU+R^<$peXj46P~c;<^Bv2bs#?8n2Rd&q4K`Js#PGBU+Pko!^MP~v5>C>o8o zdMcK3U?QY!%IzH3_ov;gBui5Nfea~PxQuas`Go?&8C5S!p1>WFt~6jqQ2FXl+(y7t zW&KH)=9xqIOYAX!72KFvsS3MX`k19Fju8Pu{(~Wx zx$$;UlHAUNBbg2d#(;IDS2Wz(O|X(}(t2f(^?sP9@*{g=uko=Bse@q$b_YdCEygl9 zV-kKa^TeAZS;1(izbA}Z7ycW)7WOJ}eMlT6c+5A#{l*|Nc!k?v{VecPnvIJ67(=$r zjW^P1k&<`)cG7xNS9ChMrVVYWXba~3hnm9(?l=7iEPo0zi#TQJr0EW|dE|!&>@obm zDJ}Akt-M%vlJ$PDeCCr|bO2+H9HNekq*I}BR<4i7>knimLo{=$c5%C^qxzl-Hux}k zOkd6xcZe8_gTBbne{nOn)n*`~#CtH+qvCkm$H%Z=5AIh;$(_k74r-t}(^d^KFRvwWsb<9al0;(oH*Y92K~no$tb+382%nJ8;JkT5vl)&j`;6x zSgQ@|tGc}WrywKCD`f&6HU$zY5(OqvmVNy@1O(bQMDifC(DJqO#Gd|sQ}S8adCO(( zi^Uo3)>_3?`o$_cRI(`1vRbzrdmEkZ&bHP%y;izOk6AwkmXrz7VgFCmYrmHrms!3S z+n3xN-n;80Xi(afl?w>u$Z-)|v$Lbyej$0}IuZ?}YZ5*@sLry9^idMIc=_-MXRG9h zdrAXy@{6OHaxm)0J%8%ttOMI@VHGoAig`A)j8zx32&+gq*}YqG#J;&SiwvVQq-mS) zOj5aQxJy|U#n9Wm8ogW?!sopjm0TLikMvGloE2%8CIl>C%X|o~HfhKRH{G2fXs4;- z=>RIX*ljx8BeT`Hn|A)waQ7T9NeJd*Zq<@>p1PMKb>~)#_B#{@n{>TTL-5M@-`{DL z&wg6WC7(GXv@S+;o@UwlMZ4Jo1E>{tE%CLxpZ~CI_HCUw|CTrVSQytP-7L4V!yxB_ zumv>Pi>a&56)L=ASnXCzP&Dl<}EZAtXBuyLLsiPMYzgfdH zoXsl8l7jJ}SMScRtZjrsxY#g*!jLJO>E?O)1vTWvf{PSt?Lnh%om0xE7ex6rn0NAK zHvs<{+Y+=FpPe`GV;vPRV6VcNZ%VefjLC9H+k2^4N`itcKKOki6Adolc*7vaj(&3N zq?isfSqd-DT%xp_!g|ygb+l$CG7C^=9cOZ(1HaGu%kNII%csgA_iqvU5#f?iyn|9BhD!0DVXUn|7SVnl~Xx z-PY8~`vr$=4QJVMR3$M*1qO*lQGoc8iL++h7752lg~LLTW&U%AU1N4@39sF8Y?l{N zy}|*lJPd4`ha23i#8gpz%!sHn)7srkMzlu`owcVil9tfN3KiO=d~Q|N3GMqCkr}+$ zja-%=Da&YZ<2U(}O@A?o@xEqWJ87_F=?1NeT_m<9f{$5I`{X7_sP{7+ZUR=IJ@;_5 z{QU-Yl;bcWo-6Y9l%nTk;m~VP(C2G$5S~*?P>xef5Z*1M@VY4bQsr(TDDJN_{*d@R zH}DS#kMnWQuB7_0xO3cPtMS5*Gf;4eGa+z;!3;NU>v<1gHx!@fE(_4ed$>^Ij46b$ zf&#%ixzAx985jXYICKa_IQW9#3u(Xxlt2jHbn5S~?U*S9z>g}JUfaBO2??a_t1$P7 zgbSqX&zZe45;8ef81mA&{7mfZcHG1+CLov*Yx&7~i`W3F@w4J_yuZC4_YKpZG#J1L z#Nmhk%qBd{y@$|f5&DU09zfFo2^+AHIWEV^CdDx}x??D*7o38br?oHXtFBSXvBhQ6 zCiJsp*QJe1XZF5EXl~&Fs<$7JupA4~JL=1D9&o0>-D^8va90{sa6koB&vwh|Z#7Tz z+ALHLCs4m|!QE>#pYw=?^Lx49#WR0t2feG@_BTh!m;4__V1e+NoVQFxJK{UmXU>us z`ywYrV^ID#mOh$AoGF)ufcrakk1+)Ah#fXyN4Rg?y{p{RSWI|&85hD#Wv8ng2WxwJ z-svLm+iN@R5q5Ubanl;JCvAwFF|OB}C%eJaoQrkJ16w^2CQ!Sm2-9jr*bXj4Ze~ni zjhGzGO|w2*A@n`7PL8GJYy&}rWm8F_?YtgbL3oJ|cjC@^UxFzd+2HIR0bIur^XUg5} z_i9GHm2h|F2pl`m?WwBBr*Ipvg?K%-ydclQ@|_6Asmb)gfl-2PHNLb162#uSaomZk zn!y1c?hlzfSt%-bX5F&TWG9(HBih!7biIXfua&xNQ;=*^R!E%d@jnuA!=2|+*6il) zkK!SBeH-ENNby28-+kXig^7*Ufw8vHP%q3GJY}Lfwl``0lJxAZrTXtwXlcXl5pD&x zh@sxKyjcwL9=y!C`Nw2VsxuB`=I6~^#%gqZsFl8xXek9b6WiMBbI;k6=;6l>KL!QM z)lda&O1V3G;60#<^Cn~>=`0_*!dpYvXDGnT=-JI`&f7Q=+(ydCbxn9trwOnMV-*&P zt#$eC(&!KhdK+6i^Uw?L&X7wU_~SFZH4S?k(#)uKwG8-$E>W!*6`nKmNEXMoL|Zr5 zd!*1WGI|w-i#k{QM>4hf#h=Evq;~kst^0(=JBv@eba@(MVt*WmQ~eO8e+x7=Ygzf2 z5Py<3#-tx|`KHQ0r&---R46q;1wWdj+(cSV6-c4-H+77gQ)Dp{%!5nQBjXYB4?r z?Y%Sn!Croiu0_zN)gp-{F+u7q-f&E4SJXBRE}}!rQHK+=S+5KmTes8Dg$H4g(xVf- zI|WV&J=`H_s`dt3GgQmQQB`?dvfU>+=rmp@Fn<^1*pLS)txap- z=`4arY$hh(^2G*R{Dr&eHb&efVwDaB^BtvAag+aRCv|HNgUn{)+_l_yG6O_#9EP8N z7V>L&sHpKz#mJUb+LzTY)}8$vC{26wuspJvX2ZGB&B!Tw?{+fl@~kasTA{$lZrg(X zIO@d(I3dQho4zXW+U(uDMg;xb7t=fBTlrMrJVD7|4Keg|Fip_ftRbB0ct&=GaONOTVI;8`0ZasuntjU5wgUUhMd*N4DbAV(hA}ry^rwWr%p>7KA_$B z@f>$HYcu%#T=(8UN^NxoaTS9idC1X6Rg&TkG3#xm!!n>XqyXs4P ztMvVE&OCP*v8(!n)>rdhzgJ!LlK@)v51X&vlgHX;9{X=S_dkffDo?wELPP;oyqUM2 z^t|`9{kq#zCDfcrBYyiRKYAAp*g))1w06Tw0JGhm`Hq=7STBNX`1c!7a*VCI`EE>t zAps!t0mpvxkSka9+_AO+$3~t=#1??)UU30uzzFG|UPokOHCjr zx(4OyoEcyQ69to=xtq)KW6$uTZ#4}-aKz{peJM>{qpZC8Q{;!0h1D|Q=)~{dLO&3A zWRrz$T5Y)~F9zujJ9DOXLo{urz_`q4_UR#Y+WwD57>goQz|jKNZ-zi@+0nDXFqi|h z%Tdg=kh$-}*4IXdoEgg)V?-jn;rzcr0HZM-ks%8sMm?@${2s|MMVdK$34Z)2%>2-D@s~MYXctdOibK%yeM1(lqSzy$Dap09rdN1l z)DTVHKr#;s+sTq|b%A&qTlznz28I@f9*ue|e?YGF~>qivIjTP|6nQwF2n8gmOQD+>{xa5MrLi;CO& ziI}dLKX22?iJ2 zJOqy@?E<3;%z@sELLZ%VLI%>m8kA7r)Zb-0k57C^q z_UB_K-lr%V8-CF*pthABZ@Sa7Ssz@EfXB{ccKr~1dw|7-cW~{6)U=^rdQ%m(7PO3J zi;Wh(o$qXO<^=Nos?$c zrNIub;ObLi9%(BA+42@J;Qq!db9fRmjCvu$%&T(<;w-PM-OM!z^3&qbC!JuA%lyG> zdJNw8p*NDdXE^AFD}CGHjwdGw-pfa6+zJ*-H20w@G>CdckZ7VGDJO^o2m)w$;Ll_R zN;5XG-eqpwa(%6uOkw__N#L7oT7} zK;Kq>S6M9e$JOc`HFsx%e{)dwM&4M5|Mi>8E&E(gzwo$Vkv64jh4Na8{64mdXT(qa zL4Yk>YunzvrpCa>HeDKR(|lVMX|eP7gYP-4N68@ret;|s5!v{>q?d!x0E6M?*;*keEJ_)iBGg@!NkwA|>!=&i&D zO2#p59d1CL3DvklQWydZ@}^ExOZP$U&!32MSFe|#9lsX7uO64J-h^z9afzd&o0`uJ zk94R)+Hfs;%U=rGW2mrKQ9{E{^jlAgp&u7zk(;pWwp!fp3#-OHSi$Y~F1_yLMNf@K zC@dlP#!EL8m{aZE3Nz3jz`K`{LQXeS6pHpP^GrAR3$de$4{{ zP1dVy6>%~s_JFA-VvozYVe-wb#*3^|#g{-_`C!QwT zj7wN0#J^me`0ch5tD0}C(1bF*CGe=-s7;!zmDSTtAmvX3sa6owR~HZix*e;)_@Z$o+{&x>f$YQN=c5UAzl3dK|74yx?igW z3RF9Ws8%F1TQh^MBY3u7?N_Xg6^VTzJ6Rfa$BtO*&^~3pD?WTtbxvE{7%gQPy!su} z(e3FbEmhLi#i7l6ux$3usJ0cL%xYm6&vU6mm4@g}K@^AjoW8DwLzWEW5Nxd1&jwVr9c zU9|;$%{r&X0v8M53(wtjEsZ}M9H2%p2s_i8jhzPnf`G4=)i)(Gy%2x~P1njbsgD12 zSmk<)m3iOz(*Ns$O1AN5@6bzin0JXX3a8$l@WtVW-J{R^)o18S%8ml!!P3i~^^HZ( zs%O2@F4xYScRg2VHCL5a{l4+EPi^+B%nA1j-|=bc&v=$`mDhajNtY?bcyIQ@W6hDz z!eAHdYObgn6j=g|`#Gl(n{>84z{!=K*bC=rKb#0?ByIVg|2unAE1X^DiHDg@bqm{u z^(&ATGi%E>R_l?NJLk{TD$;qO{0EI>_tmnaF`F>o`Gsz@@^n5=!TT=_3cqyjKgj>E zr)d!%K_`Dl5PJ;&kv;v-0}g@zf;}}gGjXtUbT)Hwad2i3`PZYFsj``igPXI7ndHB5 z`~RX;)$LT!H8A|`nm}1`;A;Yl~UcymqOcTK(F@urN_vz%x#!4@Zk+_J+h?O3WnQyCW4bs z512bWRbEofaG^oiU@_uZF)d+t@Zy+xqvjhhjh1m|(Eb{sdnO6tdP+{(>}Yhw^jmGF zu7xFF*(wJ5v^8t~Jn2lhj6R0N_8M#K(Ooumb_-H=Hm+>SZR{K_Ihjt@W5KGO{x~zY z*K}*&Ppf@lBe;a|rDtn22^IKpi?W7>m%BbX82kt&t+kBRL%WGtw7Csambw_C5XbFLzlY+$3zz5>zy!;}WB`pB7%= z;c4K8i(Z%7NW;~K$s?IeYTAxr#_-351Wq$9qpK!oItffx~AN3|k$e1rz7^w^VHXaI@S9-|Xr1Z1pmpK~Nn zkVC#0P(gXb+RiJo0!pg0kB$#Hrugm=8sLTXy(afGlB$%W$U5&A{BV(6Ws$sfJZCI} z_Ai;NLPeipT#Lsi1r+NgurZNv$Lx@MmPa8ZQeJfpsw zAJ98jfZweqf2aH(`=OgoQU6hJccK4Y8hKhG>ah&@jpDY=AWUJ~ z0M*4C>@2S;6*po2farbT;8O9i4A}tn6qsfXq0KW7>|Bk$Z8D9uQ8$WRJ6_Y9?GAbI zr$cUOR92vPPFX{^iMr*k9G{`>OcvL4gF*0v-lN)h>S_IKXr)@iGR4g#`{lk*nYgC zir-~k-4Rqjh^n1Zw|oUONRp7fHVi@$&P_cVOvLKM?OQ zdq^i7V2uwi`2+S(NG;p$V?OyijJk#W??Nj3|Cf*|Wp8TcY3B0pkjYHsb_r6c-N_f=QQ^Ef@|gx)whf97<#`6y3ot&)xb;#)A8KMjoIIn2bSo z;|}>tg0c9Wxt1$@g7ZEJxR$5;e~=~$9S5~Gt?K(+Irv@hEFUJV10??4ff&E~gyFT+VRSIkaX%uOc0)--X0UMVdq z(<;+~bnRi-i${(_%EjjlFeCN15)>SUYnDtKm}3EMR{q8FdX$s!Gk8o?$qe85tRny$%=53t;{xIgPU#=Qtp3F&On& zygVW!PD|o-729Z7u;ip&=uFC&!&W1lZwBVT=~mM*i@m&r z`xZlWrrWXG5bNn)WEiKpm45>_>_+OEi|UBDC7TVeo-KEdebCxmp2pbRyrR~2oB%l< z$kV%~VLd2|S(4$|u!Z|Z)ZanNO}j@Mp%%c)h+}dsS(m7g9bz>hwe8*L$!@m8iiIqh zXy0O((Ld{)KymMNm~Q(kjuEMAAs!qI`c!#!(8@h$4mayo*Lx?EZODwM)Au#)z`iF& zgnPEj3F&kjd*BBi7URh%C;3)Kq|BmhmlFQVgY+PdO$R(K#0Sj zIJ~3K7uzJ0P@^Ja(i}InpGZ=aPOVuQH+7a8IuOL=sInI)xoE=5LfND)s;rq_eO48T zSA-k=CX^!3XJ*~}Yc8FV)p}9AMYt5BR9sc}kgg9r?l%!+kL3a2!ch$rAYe`mDb}5n z^vzqS9;!f)w+*>v(c0ZnfLaS^N0?H%J8$#YSn;Fd6(T;gWE0Ex3ni(LVR5Mm>=;zn z^&Aa@uL{DCX1>IFyri!G4W62Y@%n*MWn0E3Al$#Hs3qMVB-rtLsC7$Gy!K86_-{;c zXr$sC+^Z4dOCxo<)C|Y7HJUH65FqBChAcmKGOc5RR~b$XVBTZNB#Xs&Z0&HGqexfu z_(c(2I%LI(U2D}lO6l{gW)(#C%4sX*0vZ*XwUtUXt3I=iu^d*MUHPA})DgDgFTe!$ zM33TVb~s20Pao*ELrPTl!4P^h|5!=y$TQB5GqX|HI%8~6z|Yn%We(#wsjB$E_(GKA zn?zrs312*#`yBeXA88zudKK;7=d*sNR}%HIXBf?I2&qk*GT?4rKSSyqzr{1382bx1@664l z(Uzvy`9(!O^yEBS3MCT8d%L?dwLg4dH#b6N-kGb$HVLMFP#s1kv+dE=^GOh$RtBQ} zGD$7QCmD6RXA}}=Xc~e=FiO_SI2JKI+(kBvTgzkj;{HBZ?iiP?xFXUcZm~V&S-)1; z(Vue^P`PX7vSap({6~Bh%g#ogN8iZbQjlQVVn-W!8`S|({R|JYoLrdgwNEa_*V_Qj z1olOhNApvdUSx|h++}COo6t&4Mnb=(vW(<7cS-vWXw6h3&hF6eWrL?_T%b-~;pxW#z6#p`Rz+68?g^PXVvs@rXzQgAL|PbB#R{!hdX zk{T+NhXesB`YYM_ueB^J|C5L<`X4Id|5f<@D_keqIy-m3P~x}3r7Z>;wmgXk{~$^w z!aDx`eFtfR7$4y@GzDU0qq?@&T1O{9umFEodn`B==StSXv3$<&T*QDo?@R&sDAfH7 zOT2G<#yCrAQ_%aYZBzeL+q$~*llSuuHL$mXWM2*cz%n&4OoU!_zaf-_liEli8^S8x z5rNLW2tht0{D)3AMB<$-{-`Dw4p#Z0b{`z;wi#L%d0{J>P|PIF!9y zfg};BlFFXZG{PjD-0LL6G1!Qn&Q%$~8WRkU9d6Dh@k>)ShUrIs=}@@6cTV|%b~~na z`&il(`vWqY8ZsNx(bMSi9vRq}dpgN9(`1oLER!UiMzA((T@Dl%$jM%A;K}Fje z8BWM9tUU8I&q4ZhXAy$cNkkTXeq-|3L`OI2QMH~4#pLIV#3*ZZU952jxh(VsKr5{q zwV^1w)1act7+2kdC%nUyC-e=R$<2f(VAaf*2!&F9Rde@;nf|wi$yXE(PX6ROCVnGI zxfs&s#ngEccTkKneEGL?n!imrf65(~{bWZNgQ;&6ERMl`TWtN^O!DV95-j;`!yh{6 z3$mm*a7*P~5o0Zexkble7u)OK4D|7*)Nv(<9F7^(TsJsdkIhr|=cthUdG_i%OSTo;!W@BU_TtRt~aY z+?7V$6Jm#3I=1z}D*Kszu)qscNnn#r){bCR>le3yz6@u9rnI!OU6JJtTOF!w6VLEp z(se+Wu(moYt0ME1Hm32d#8XJNGBtuq&0!wSDs2c@x=L}$R^gcmuCld--Bs^>qM?&` z%t3fzQ_2ipEGm*WyZlr54Znr`qEzLU>&UE{z@_Y$g*`fR{Dp zubfDFQtsNO7LqmUh*e1Kgl}vn++>E)+)+h(`f}uc9<(-gUuw=>vowkHf^4|U2+@u9 zt;$*h+Cb;;s7@?ueq{M-F8OkM%=o&;xnFZBQ(|f78dSt1kIN1aSabTxG7(jI^sTO$ z2-^%*(Gl5TSE{0qidDrGn1Y|uy1}d~^R)0hXLG}TQm$A|?j$*VfrHsN4cT0#h_gf= z&_})w7v51PDG-t*5wsX<-rZ-%>0~X<=6j`X4J15(K_*2S$vh&SC~iM4=~>?DA6_8u znNR_dTUs4Wx9Fq=B2K&m1+DA>->zw2bE6+%?@x%3za7sI{b@{A;fVtS6o?RawhUxc z-+GarD6;;z{h-VjpFm)L*PW)I>WsF*&B0jZeaEySEHl>j#8GG05lSh&F;e*}r5>snb+-bmbOb`KNoVPeVPqK^dM;eh>mp5zI)?r>+& zvmh}bw17$B!N-&6q$YN`fm>A>O4Qxn2ztSrbFYM=x`6ptq#UQL!UoBYex<4q^1E2_ zC=*egdGVVq!eR>)L6j@(5hvL~bQM;85v;3qIUa(FyskSu`2&ySFYw-1ct2Wb@EQb* zHFbnWXG4wHiq^QGwmivJjr4gq@6J&|cgXmA1 zBgz8|B9eo03x6%V&w?UsFPjV6^J88TLES$^AgX`j4*26I1NO)p1R>?>^%w6qp-VvP zmncykkQY{S>jM5wuhujOzKZ|_0#b(X-z6KF|4Fj>Up&iyOgf}0uFh8W7A}g;4(?We zm6iXVg!1I4kU)h{YM$3xV;r3vJ@$<0bMg7mqC#&WP1>8YTFuSO-#DQGdnKXAf`d|k zu4-zv%D$ahED-QtdaAmru=>O6q3RwxI>Yy*V&C0J_3tD192QGpJ;DUj z@PDf~<@vt_?qAtjp<8}P5G5CJl$<>A))GjS9Bxx6oq|=fPCbcN3vbH$eIdd+O-glY^E?;lzgT#^7sl4EY3cpgs&O5yN=lXA zZe#%H4QA|)F9DdsrxqT)8}Oq(kEr(D%%m?!@W*>!J^Pr$M7iH)E^3gZI$l*!gzL{Z zf6j4L!lVS8iE>)k{L~JE5Qcwh0TYgdLD>@0dDUDKbkxAe(+=XZg&!TXn}9Oqz(6m%r$({2%!KXDU$m{}x|yBNJB#XRm+xqmrHs*k7G*bDe#5+1tXHh$3^Ejh#?owIIG0Jqy5IhF&lA4o;ij{#VMlpq zp8Zd8957K%VD{Wj2g+sd8t1u3FQ;1?hfya=rK}M$?%@ZWRLuFxdcc;Uvfu*drDSbEH))XROn3WtqWx~!>MZe24CA(+OC zq1FwSpjjJunpdxwD=sy&^PTeAdx4J;rF`GrG1ogCGQO8&*7Wv!YilYqX|?05jLWAG zo2pDN?G$#04RZWrNqVD+3+=yF6#OfT{onQMf3~F9|E(pJ%^V$Etp2w#%T#s#5p92! z)7f^@dO+NTYlgMys$)Rfg`p%`9vS~w0B$xAOr^SeG<=N%>n0b3T-ShxS89xUKG6%VD*$&VlSYfZAib(q{PNpm{7L&x6hAR

7=AD==oCqzWBm91~vJcQX zabK8*&TolXFH<&JN_8jV&B>TauDLB{gdcRKuA}hXy_;s+=TVzOgO|vSAr3-b$C+Hs zO=&|g$1bjXlnGz!Q9+5$Xc>`iZKChN^6iz)=hx|}ju4|&k+9@{!PoEv#mwNFVc*8q zGhWX|?r4?b<1{Q0@OOaaNQ}R-$utB$i7LH^c9VMwc@7)PB%5W*{`7{3;N~0VJWyn@UY^7^#UTJCW+*?W$RKx?A9RKF} zqzFP9Z&Dwcs*B<3LD}kxCJ1|58q*>_$zKOt4xsFE`m`3c3e%8e<*R%=ixA4)rgqA& z8+!X$)ej+;jg+m7kdeAJ?!H7HOqeZ)S|)V=m}HSiOR|}|4*G!&rCVArpAl%pHj^kQ z5F|QyF*hzg@f;v*YKpZ0<4@Ga`;H#9Fpb4(*L=ko6AUaiB$7#?mp~v?dZndLp+I`Z z^TW;4FVc%e(=T%^Z3Y)7Nfl(WuD}Rg&s`7uHd39kb+Ql+3D)heIq3_8hI&Q`=nWaR z5PdFOsye2LZ)a zkloZ&uE3cvg%FqugMsr81d#2-8Y^jRA8om~%=wYs02mxVo*R-yppNnJQwgSz5=FUW z^0lBJkiOw8p6ttqBG{LV-E?B%ocSQ)WaEmoQFTY>NWzD=3amacT)QkkWsA!!*Ai$> z$Q6EUVJ{d_ejyu;|0+v92_){+>NJ)lfFzjIx0EE4FY%WF%Iw^Sg^-2+j#3r|yzwH~ zg?!}1>7TBoOv2Q5+&q~Uc!aH@UKIvZh+#u*d|18aUMK=v^RnrZZJ?6uV@%FeDklV( zblN6(N0kgI5zTpjWecncJzxv13^0rM0q>b~BN^`zhky(xNbW8x=TYpP?h$|lBOgsv z^|L2}cU)N6wFSYCsC7y$uhNRp++}>cJJpNzTNL`& z-sAsmUicp|)Bnll|8D0p)j0<|F^sQK8=tEub~dX#(;`6`_%$hA3c2%^_>{$t&@Q*! z#8SB>xL>a!}@Q&1ngBJfaTaQJb_ufM)3`GNYMt$>yq^#gsz(tCE^%ux(B*(YbRpSL!Vr zjjmFPlv^*i$AGd)j;_Tr!P#ztCh<|jMv`5(wzra{<1rV@MZd!h36N&MuF_+gSSb6$ zp0`!aw6&!tk#*W-_Ze({EZb|FAsaqH?msT>PgRcBW{zvk)b@j+8j>!(Vmf20++2%{ zrOj?iXo2?*BlAchn_6u;m%Ykm9Ek&%fAnR_8*^%!I|d`-V*)~g*_*j4i$kTGc*iY{ z6CB6QywfjMmt=0pgp=WzMf?_Ua6)Wm8cRGS_zPzY;!iJ?37QIXxs%wa+BDF7 z83t<;I$TA8dKIKp#ZIv~#wFyb7Rvm>iRqihA%C|jIx762ToxC~j=-un^cy-VgJQo zI|_R7clG@bY@v}EjW6{mf0k{WqXG)QJTye8bP&=`oLh?ci_uR6y{$gaHT9pxmQD# zm5j!|?{rYVlO5cB!qmn*14Zg&JgoU_eNwm5bVrN=dRSIRWNve74&4D)q>01Q^S~?p z_b`g;yj{g3j2U#W-W@ZLe_S0O%NNLWUN92cDSpKkPa$3G=@+zEi^{o zFm=a#I)adYhyxbS^s1IBGKc(*ZgEcT$gCU;K@%Dx0ZPLPt``Qt; zm)t-3KBp7N0BooR27C>Km$a2+yNsn_yQ2ddk>O}H&ig+X>m=Glx}0!TP|!xIm$ zM?ONo0tu{p;CDj1(*-0#y_!8V-Sd#3DN^0Kc{q)ROX+mIk(p)NC){tkQ&p=}oZzcI zPT=nMK=E%|My0MGYTLAK)2f&)@7${A zIa(W{mf;4_8I}ZR4ttyS7EbjWWHo||h_`4l%rwrSSGi6Cj)|%-7)vxYYVVw->qEkrle6}P`lJ2fI$x@NZFhoz~-vO&aa#N_0azjW8A6d#yY9t;G zC|j;H4h~JSEras%2Hvh_!Cqd)qp6=mvBC}0`Jp)N_G$rB)4FSU-}ZR9OIGH>r6D2z z>}`{q-2S;GAX`g6$b@v@_kg;1nE~)FNpy=sS(P2Cu!+rQ9Tg-{+phXk(%Fs?- zL7L3jtSD2yk)qx4Ojwfc8gE298`eNDy8`2Mg!Q z)))9`_c|8+uhQth7iBONTpkee)$Z`0t3C526dr((wn}#_J(T-om<)%f)c!#RaH0I{ zZ7QR}VgO}o{l<*K+TU;%)vs*&YDq%sBM!IO(Ypt3us>Dqe0quwkUdqxqH?1J4(O^p zN?s{{>0t&K+XRd@lNh-bR#0U~j%ry1uD<=Hr!$0lqkrCw%GxU5dFa0bZ1?PbtBmlx zVqNf)?e9{5g?Om_&M>=idO+I2viyDIV^BFZ?P?zAIK=z?-1w9FU`;S%;>WJtg%2V< zxi$zB$~(7d<_ky=q^yyX>G$$=8fNs}#d?ocw_|hXpnzJ%6-m zxze_n!fdz%ZxLsS`^fcyGF?3A*rV!hbetzeZ}_2@?i!;COD7)IO#b!CQTRH>hfcUMX$tRiQZ`ZuRo=Py7OFIc%&OE|Hd?51XV;+=KVv&{Sk4f$3J#BDiG=9|=nirG z<;rdZu5*I0KAxqAnYXC7Sges1cTeT|yCkU{O|1WRWbqT+Zu{!!o1Iu&h08U}sUNqV z>SZeaQspA)G$=o=ir#>xpaKvDBHaj=6+hRVg;vp1EQ{NA&IDK$NB0g{lmglG{35lYtnaC z=-zlB12>QXRSt_yAa#G_Y+kA<|A$EBX+ab8_k_O}ayMoQKqK!`wv)xA3aq)-iTv&a z-W{n*{P*=ccwPpVaB}hR^YH+pXGEpr`r~;6`$C=~*S(6|Y%fH<#0dsF6cN%FEsMOW zGede>dW6S_$tSRqUaB2?#790Ur-MHKHbMl>R;InJ)rT_v2%^Tn?AH21)_eM z0(WKFdc0&w;M0f!wFgrs@AR(Ah(_We_2hfqfWMcSE&VwD3O!qo##R#tY4a5gHU6`MH%IAVP*(E-yJbyezXR5<*y;I4s&Ry^)UH z@#XC(z)~|sD4B$$$CFYM%Tkk%Q{&C0$0soMmP>o%`xF>Nk?Bhc4MHI7g&Ew5!+6eg zToU>D0i`#?V?eb#PWFXEa~A#KZ{BtY^XP}PJ@NI2ba1nqoLD!DV-L`4)Vi7sJ)8>D z{p?IJ?;(zTnF;XY%!=@DB!gudV7<3KVG!*QTET-5VV~fv(OC}`>G=J@;22+Vzh@-Q zB+(*)ohBm1rm%PAD(M@+7#D}uC)!Ezin^!aThrFJ5WEP1g@}QR#Q6BhtS=1~LntR< zrgA$WZ(jIKE6aP!Tf|~2;ds7vP;7-zzC2FN8J?{R*;`6*>GKR<+UFz`G(P1@ux3ejhmn*U}lJ& zDE&-NKnkgKM~M-k29V2@p<_@lO=1rmYrj!?(vJvRGZaJERy4PV1p6@=eW6XalV&KP zF-U;d6=u7WEjLud=xZ$X*ig!?qLJ2-Na`j$IDyaXMCmw^Tz{8D+&90Z(Bu=#&2Xa8 zAF=a9Z(mAzK=MY`7egM}eueQscYKbN-Xb~K*H?=95QXtt2o_q9{)R0mvu^~FrUl}R z9=OOJ?@jh7!zqFh_(+Tv9Cl-J2ReQeH;|lRFwUM1vrc~i=B6tJ!oGsiBPdSVEG4hT(Y_nyF0Ojk!xXzHHZ3llJN#fTYT6D z!Jx(CBt%|F! zz7~ZUylUjzc#M>M2G1X}n5cS2)+`RWs_*4HM(%vb` z(goQTuC#62wr$&HrEON)wr$(CZB$y7w)4-uyYGL`IpcPZ9``=1hxN9;@vWEo3=YX3yiqpBSvCiVoHUsMj-@{w`GHaPO-^VZKK~|u z%3BklIw61jNdMmY{nvDu*#A?d{NK5L#eZ=92}kRuddc2T@CxR7Z}Uo$_(|}oBEhr! zjj*iE)8pr>BR%D0dAWGAG2xfh_=17(6WeQ^rqgXdFSly0p5%Uns5j832oH+_-l3ve z4c3_%gc0ac=w>n$PRM+Y;>1)0E3s&ni)I__4XXL=jxV;ZAV7!tE6-yy4c50|D#*Qa z<|&z!2^TH2BfSRyb|=UmTqv{qP}PdSzy4moYA*TBFz;C1_#1Uy9O1z6(Db7(?k~dU znAs$PEl>$>hjWGSnrj^;!2e*1*V9F0L)^j4Ann$|shn5{D5Hx?`O3W&no(+#rQ3%C ze2X4AL=}%zI7lcm-n%8sKMLi0HLxNWvI08D*SW~nob{~fKI?A6Ck35x?KczbNbCKI zm4!MOOx7nJCoq(R<_I}f7;ZbqFhw!=TBt+sxj93Y21zf~s zgb0^mUihA^3&Z;+ISFA&&(vb{k}C|41%;)xzu&ZEQZKUeH{CP+|4#R4n%n&!Iw9pX zStJGYPg$;uM1$C>(4sy6U)JVn{?wX}EEInEhSI+(@^}_0E~J^5L~azk0FY|#i_sal zf647B<$hscO13g!(jEPtcK!UAjES&4{y|z>oQovH7%b#QO;pU^AB%5~0Rh4&8W@jE zOtPpTz$`G|&sv-dw9lA5ni|V62A|0yJ&^VDdStH#qY$N{7h|0bCgIp33CN~r9&X$? zE@E@)6eYgD?%7m=Z@H=72DJ%ig>`ZdIzVy9y+X06Z6BVqxhFH~ijJxAqSfQmOsdAi z$5>{cDl06gKW`tELh-ivl$0ox= zg9-zsYqZH!dSY4EVWfP`z1w4o-EH6o`mkx2r1;!z$5}`jZJVilr6wvIP{oO8lKx|) zmyNdOkNZl!Txro&6y<<*jRwmKxn-fH#$9b?0u#zitij2XER2*Eul-BB^&hegmKIG% z3fpQmVMr!QQ-%^lTqsJ^IEA{v+HjM~QgswXU~lNto~ih}0*;}J0K}ON=!CCDW6+!v zGuMUROMw{6pA(ztg0QX)q|U{4IvTb*Mz~No^N3uwZhcz&Jc8&cI;P<8tl1==%dFfy zdd=8-Rn^W*_PZk+5PWP<;tNoxz(Qy|Y+<~bfb$;WXJpf%V2CC9dg8geh%g?*0Qp_5 z3%^9Md5Rl= zV@jC6=0qAq!$%NT8A4*Eibk_CNwTf)cEI~$N(58y+u$wHarTb_6hMMvqCg|1gi(!s z)|kxz6ZM%6L1qC!Id!{TG{ePo9)RA=4$yCw4B`T7`TV^Cw$VQ!{ueEJ_{|~wYgFX< zPf+oH#L9oiLWPZQCLErpu1RY}s;Oxk4_HAHL`~p2Pb5}TpcG9R@-?|Ruh6DJiuKP$ z#eG@s4%oB8-Z^AZF23X_F;kl3k@V5W{vk{+Y%;ZUNnA@@e`Jsbmc*n+>QC|Pb38SS z`X<<(!{`Z>jW&ACa+ffJ&b_i;JCn0b7!aXy>Lg}Q=rF-L+1c=we6wQGBzA}nm^?c7 zfha=BO`Oo;m4_y9KslyN)b3{?BAsJt&+b{#@Lc6eXHB+fWl^&sof4vsPMXZ+AIltQ zerRXK=)}aB5BJ3Rr~Ptj8jv62rs{ZX{;m>TsFRx?v(pI~=&@dXaSZTU`h;*fK6 z5miIH+T{iz9^!1HQFe_C++Qk$8U>@kj0a-B4pRZedkEc^2CkLx;=;pN=_Obto+#GW zTFowz{$jh~$Iv~^zTq$O-@@O&G6wqFoJ!Ey)YQa5$iT?Ve|>48&-0Qq6PDxnV++#aI!xw@IK{B-WO$; zFs)7-n-?&+K3P7^aE9+aQ}`G6q{r+WXWEXlM~<_*GD75hUtoH1y>|Q~0~ldB$PEb+ z#zw*0clmQ72a;hCYdQVM_D9uyV|GNT1PyI_u(;^)_d~ICu~GUN7_g8BW=$J+ThW8J zm~jvu3k=x_1`GO)rP(mp zJ)OJHQ80uc>ZC=H~{ zM6;BD6j*q_2e4XZNjsSHC41#*jLZ;3SXxb0opLU_-J^^4%h%#7^o1giuG-YL8x$m$kCrNPf$wHK+*?U5dLQ=$QYq+`<>ro3P+4^0LS<7n)4GGU_pLQ^%krv3O0oF_tkL=J2dA@~0wu zo|IYM#!Iw1Z_=g!yY^s3fxLYqAKjYjje2O)0`VA}1)9r0mP!{9$HEZD?@^aeX zi}jS%PUw+U#LOP4kHrI>H_)MXmx>{I)aq>^pD#k*E*LpXkf&W7Gml^SCT=5{QsmgV z?G#ajS`ArxLsPKPBsAZaO+OPQp8;tMn??G)M`;|I!qq9DG&(>w>F=G;`>a;&G>vvmu? z+3etVA4cQB3uAgeqX0bzbbJjnT>fYlqSX;-i(E!g9=qlh=_VdC(-Me)e!*kMEr`#3 znkxdqjY%s^_?@!C5sZo3>r=rSr3Phb<6ye6!tZ|p1DLz@a|Upe%2eYQY|en-QF(c1 zNY#ZPWzAPKFb*rCwhC>3Tk4CHo5OZsi=?zo?~;7daPyqjpHhz(R^Z?l3v3ZyKR3JZ zQCXxN_PQ(r=p=kn_10hlf1CkiH75(xvalP?@O{J@TEBeETS#u>9S=wnC<876?!IKQ zRptKB&c}LW*a6YB=d+Y&z1;`nX*axGNUd{PDFko%nRLp*zU_J+s!(I8Dm-XVF19ek z?97SJ#yug*q-h_a|=Ew?#-cp)nq$UZDURUxB;ne$2sK2nh-{Ldd>3e?v`QPaM|LHbJ z@-Nc!-&p=%#fVWVTCPYc$e+R5q!J;lz+$vAA_yc|fV=sJ^NMCrMShJ*&8Tr&B^S)n z5~TELqW)cF68We*MmtUS}RIIz4N7T07qG%xQSa zPCKUie1_`fvQyE9=JBm-PX6UD1>r=5SHem_PeD&|o!x8VXYPmLw+6gDq7Cl$qUcpa zd<{?y=|w(a386g#GiL+2iI|E;4}uDe3X-g>4oQeKfaXvDnV9KcRbW!Gmlnl`MH8jhSm$WL12s?I~?&W%l)WHgx=*d&ZMr0nv7y|!j0 zaMd}1jk+!Z5DU@~y{kem!Tt-Dl6GqTiDl z%I*B{P)26n46fQGk1kW6vjY=>Az{aSwHFl87|_{Vumc@o&O|{+MMq#Kv(wdw9&yv} zX%JbUFfKt=RY&k$TwPn_D~ZqoX|rcfNHBPRidgy?vTw_gRBpM%gU%%TBwC7-w%x2$ zr0iY1L-xP2SOPnay+mCxkDyt5551wH{1#d4@-UXwKW>>zHYpWn6hv2^Ai;+`W znx3N6xjt{tjo8k~EJg{JC7Zy?X$78Po<%q+8&g>bZUvs{UL3|=C}ug9-l-`VRw!mE z*Lsi@9fv)dUY34Y;)p%y0(~b5Oe1lj^8_BwEtq4*AqNQM;IcSTk38+uokx9F(j&5J!z*4bwnkCl-5UM#XSv@|bVJ}NadHSWIZhA&V1 z!c^rx6n9C5r+7poM^E$8&hK<&Z4;_alq%! z&-nM%iKfW>iPliFN+E0c0>lgHq`(l0(+w8MHW}bm$R^U&4evhNHR481D54DMl~QRA z8+2VTqAht?@cf)SvjS`Vr3rwaW#yCe`7jLZZ<*~~R4L9Go7B!zz%;TIPl5u9pqNns z%?<+uxuzmftuj{oTpAVYqU6v3>#{o4GoHQE=0!KECP{1yDVat^JouSPrKegXLzSTN zZ5t9_N$xk_F+KQ@4cz>Kq*oIALK+pzA|DZKosw**=-PyUpOt$_?*6pb<-O4_Fjrgm zDIw&MH5_oi?Ff4g?_O|@-{SB}5EyWX;g}39FRxyFeX`7f+mI$37v#G8YG&Syx}$yc zn@1K$)?Y7fXEx5B0)6=Aufo2Vo9{L*^y-$bC_a4he=BK@e5hGn+Wv*7Gw>*LAK$Hx z`8N^tuiG86e}|{iwnhd{=C(HfER6rT&{DUYb3srXLr3*?`#aI!L?c_EDBgK$Zb9NLUE|Oa_X5CVcx4 z{*J^>aBoOK*}ia%8elZr=eUfIqx_4Zzb1%(!M`-QO<;47|$M zLrwX+iShrpO$^n4@}j;ycmG!xqo(1Cbd2FMtSK4~rnQ>f+YFsr?*?Vzm&#hHdoYYo zr_Ku8L2YDd1zc}jh%iJ&-)-@_Z z=kW^U;Q)Sl7o|EFcz=}T{`=}B+r8!LqY%#K>mBU}>s~ojRH{RNxRD^SF|p1nj814` zMDl+By9x#wcB)HXSVI4EEl|v;+hP!7ro%47WN6Ds&~v)_XFF7hy=bR*0kYgqrQ2IE zyd30BVq}Rf&K{w5yYalz>pli@`_AjsBerVdML+%)KlIn}B z?Ci5!yv*qA=qDG6_|6N<2r(qiEX7v}1r$^LDW?yic?GxonGDD^$squJ8}e&Ov~naWaA`+uL(13w-e4L4a9?Q?z{< zdRS*&jw;FWx~-1n7imKNQcDlQ#>_>Q5)dRrTqL6sn1)EoYM?QJF|R}nI#Pp+rC;L4 zidnPoTY|y!sZ-E~N#AV_1W!M+vuOO8nKBfU;{f8h7GYgzw@m+fa9mc7%u=hEe-jbz z@`)uq;(~`#LV>2CJpB9=gbbX?hvw4k^OxJVa)+jLi1dD-(DuXznPiIQJbdt^lBzOl zh^z!rGyY%+rjO{%ehDvP@Z(~keK{KwZv`;}OT+>-$jSNKEQZs>jl`%UGKHA^Hsd0) z(Y`Q?Zlp=r*h|x&ObAWI2J0Wf&0`MKkjRive^IrPaYXykn#Cs4oFRS(}m=HCi&IjQIRuVTa zYAEM}w1OUlW5f*#KOidFDGgq_qJI_3LdHWe`V{W4ysP)g(U6kk}ula>69sFV~t1sNMsx9P} zP7ag)*@%YI%B<$mc#V9ckgNwi3?ig5nabq7FCYVx;HWM&m;l(VgpE9*EQtnG^0ti> za%$Q#?$JpTCtosTV+7e6fi&8eiz8JwcTn;?rmpI>Y)llw$x;;7=bW=<*EW$@hKX~} z;a`^biH|`mv}5buY8nqn_&<_6h{@YI>#xd0$nEc${*jvIh=yS+vKl zs3#f2g@9ilu?}iDq@%v=grlf*$CAk0q#bY=Za?FjR_|{|k4-gT<%VY=Cl1DkMKr zLTqzfTv4k%ZQX!13}Y8&l<7x%+!Cl#Z9h>`8A6Nd$A*AC>F146+cf+s&fvhbuobY) ztf(pIi`~e3?6OG>!}K_8iB!k9#Lm!QE{a+x^Xr=z#CFvJ7AA1MdOUNQ|ZX1 zJCu)QcUfVlBX&v$p`=+gEyF5RaURFB4AuJE(vho}Z7otp#sAUEbbzp~&vL?NZ*o7w zs>Hu?FR-4ql;q{ zJK0kRJ?Y)T@V8%?sSOh->B*&+|tlxEz$>g~y<_ps!3?gHg5&n*Mq2m~gMjKN^Jkd{Q2< zb9nwKNV6jft;r3}Ji{9O5PQQIHv+HdCdLdztZG{rDA zmE;=KK5ciwqqVTc>ROjWoN#jKFXx`u$vX}RUj+v_6gw${4{^JC$>zSE3C_4u;WJC- zlDdLJ$CCOf*)*~v8sk8ugDyyWB@}S!@EcR1IVIf2f>ulfykceF-zP)$a!jr|WKBXvCvLTU?_|U7@BQo6KGUu-&F+|i=cGB~qS|f2s7TBjR}L!wGBs!ejl6B2G)n_H^so_H@x@D}0Q~gL0qV{%;#^vk~Y57x}3Xr;R z>pu=q6$|I2yPxSu=PjK*J|kl{p0Zth^pkwIM{lurcXERtX$Bub$L}@gl|2lTJw}jU zy%O&W;A(yssLS-)dS#vQak!!f)$LrX#3|utp9qI>*sQz~6&r#Zu_PH@?2j};MgS*IaH!;p-_+Aj@99zK8lUB5(cWDEbbljj8g z?+Q(de^0$nGKpwUJkU`pO(mHT!aPq{Cuxsa~7XMF+q5b!<`T4-=UG~An{PmYQ1<~crh zrS0(jdKxkMp=Pf)f_@7Du6>X?k08PuZH_}qOTkcJ1elWKB4VzV)H~Qhq=T5YH&e zz)L7*KBqcOY!Q$%4yMH6RuGiDc65F{wjk z1LkzYI)$KK$B-R`v)yHbn&-Ys(bZLLO8SgL)BfY9{-V4!w{K=JQ>e~{HSQ&gW#?wV zdGFdOk%W$9Gqvy3ZNDmmHafT6hpa|Y>Z7w5F1>N&#r%T(iCnxO6lB#eO|n9-b#_Da zJ!7`TON@gkfj>3j*@@dwLw}$?vB?_Dq#mT0DAy$E)&}xr5Z%r(lRBacrs1M)8>)1v zU4Ad#)89H49;Nk^KmEQo9Ws*{-(R4>*$I zR{LWw(_px-o|U&7;M#t9esE~;vAXWI%$6hr!E_y!F)&q-jv!T65p-KC8wvv7AdU33QX?dM&I&p0{5%_VeUg;~x@^+wi2msezhRJ(&va_`@wQ=2?0n@Nn`VQ** zYk+QN7%El4!X$Wi9IEDnMOuvKD!w?6oQ4S&jpKML;V$#o>!QQ={b57t2i~44qWL5` zIVr+G8Ub`a!?jQRg9Z(+c>RnRMdrW=Mdk?Es}lhT775J}wD#h&`^76opVJk24X$_& zy`~P*Z^#lP%9*lq7j;5tnu=h$ep!5o8_kO8@$%@Z^@l(h2;Efy5&YH$&MM%FLh1Qk1batB{un>5tg}9@|A|o7vY`(+=q5 zJ#$UZ<%gA&a-4+5camg@)A?ppPmmj^%`z8?msHi|*eWcFD&3XN=~Rr*ij{6w60Ls7 z1b9AP85msvCoT`rdh^xTG?L4}w_x^Rcc z4jyfkfg{#Gv#ysRlw9!cEJj>~mTt2gCTv~P8TI9Wau6tM9@42U*|cObwQZaM)y}%_ zhMzdH=8#dh`v7-)VYdX~Lp|HcUTZ|4jL_NSj|`u9$YHpx2qK=Kwd?IL)S$JS>|juU zaqKbQQM5`Ww4E!M;o=7U;Ct5piN4BsXJ}O*b0&Fil@{W$t*UgytstUw`lo z(fa{Q>4G$48%$_G<4=2V^C@lqILyI!@dN_u!T%%|#4|}V#ghkwV5Ao%mF|o%(s^e& zntKi-L+{L@o3z4LnD~Na(({5Yc&6W5WEgHjD~ctAB4Un&j?$06AT@)+2q=ivEwouA zs+2I==XBo@h_sTkuYuj4_m6O2z2$L?|Ax65uzwfswEsc4OPkwR z%Gw(LlZok4nz2Rvmd={4)xWQzmi82_=c}VZZVkE(q^e6Nkd6vOhIPT5BZDP_xS~ad zq0#B`Jkee62_RV`$wcaY6hzuS&nX)L>UK_g-W_@We%tO$!{g)g1+l~0fEct>q4{Hf zvPy49Bk0W9#x{#x0)da-Yd*^32O2ckvUYI7xn$LV*rrR{N;6g-U6+eV z-EGiFVGrkWPPv5KVn|oMke?~oV5{Z?FQ6qs`D<1v%$S~3=atux+r-#M%?J%I%Ct56S#OHp{S96^gp0x31J zGM<9bxjTrW+!3S~GakqbC7OJ_qy?Qd3pGv0(Q3 z2AGrC-C9}K0MObi4u4C7(T8>67k}RN#w+&P{dViVa*pJRLW9;lfl&ajY2+u}KzTZV zyVUIBk|MDX7Z$?!55*zH7w~g*&ANApI5;Kn6GyR89Q^5QgP<2-7trJ49WCMF-U_{3 zJ_?(p=sIOOM486-Pq=q@30A>$o{|%H?bJQG1QTPHk1YuwWsy}WP4lybPM!G5xG593 zI2s?}1Fm}^^bT_L(Axnk|?L@p3mhylI?Sq2VBSy*N{#*_+8h)cZ8b=^2 zHdoWE`J#xvr#=oaoX*NW%r=~N8CP1qpBwX=LjBii`rqz={Ifjy-!Yq{DrKdtg8q5w zw9duU4qRNg@b%CWwSetKDk1+aH9*X2U!;IO2M_DZ6os96a=Xoc-l>?ECeV*73F736qOa z6NC^Pst*x-pr$x92kxI1MKH!75v-DmP)$ThjZy~A3>`#Ixw0Q`J3&Y0uh>dZC{>3` zM$ADmrVjk)V2v{~{-80O2_bU`igKC){Nds8l52ixtAzhlRem|G9$T$t6R156Risf~ zA@{=kYICjI+p=d+LYH6Qw0gVxgD0Uf*ME;dNsbfJKbe;hS@{8bLGFY>sU^P7XN9%W zIKuxr)*#&FJKtE2|DYy9N!U!4ZDvSy5vde%jeKUsJFUZZXUoRKU@F@m>E3Di7;e9Giav~)XV-U7=8Yf_ImEeJ1>Z29| zcQr58)fJAWlKE2^y2NpQH2)Pey^Nzjs~>t9FW#S|W#d$;Xp?r}G1oXaNY*mQF zLy;Y~VluV6<{H04F|6^_k=bZnRR+?vB_-1R0p?|%A>`MoE>)-uKa{L=8BJ!QyCA*z zfRkMd8e`Q)ec+b)IJSaCS7JJPG)6L&l@y!NNF)L$;-BP3xf2M3m9Yrqm0oa^a2kfp zNLA5n+KASSdO3Ts9?lp{(|%M`D*OI|M$6Q??~^|!EDu-`QmzZE)?3^_vzn;@TIA&Y zg>zqxIA|C{JY}u45sH1|o*X;?1)<-$4pkT7Twb1bA``(`IRCd%$WSU3^+ad z;Ug>z!%L*YCTez~cd)eM7LNnj0;$5H+H_^>#SMFs@ui9+DAmaKT!L_b^3IY>i3%Ip zhVso_*)`e}Gl105A~AITTR@e3EO*hi-Dfl@7IE$udPz}XsoS9{+EKf6RJAH^xp|Mp zJ%0tF^C|*YtgT0MW$p%C!Tfz$FL=pJxzD@SH&uKano4FNT#sk z2A~+gQUDJJ1r!36(&c-RwI)3bjY`L zem;D89WskP`GHZ8=4Fc9TFuVqF2x(?XR4cz+F1ULYI30KaQP2Pv@ygz-Mx(3U^b(7 z%>6d6w`DO~{A-Tz?^Tf-uEcFYyB*N*D`WPG61)7Ul{{fJJ+Uzrxo6FJi^SOMg9N@{ z5O$HFlCnK$yt4+kL^4N&=NK>%%6`h_GOrnikk^d5z7|6YwIECTd(6d&+o8vUWVcDE zLaduqI30m30C!X!FPyU_YSuk_Ju!yu-0P9Lv5}g5Pen;{ryWeezPlBK@veK)l@>R1 z$K`D2g9#}V1^44kk>ijcnH;@WiG%m|4b%`8_Ym-@C80bWKNUn%ouh zPsLQ;hNwjryhT@zAHPzX57f%1%kKwHC3A$evL`8W4vjB~1UKg5z%=8bJ`!hTt?u$z zx>ZQ#^6iBk>eR$JTD`1T)K0bV(<3@0UzL{^EcCo{$y<7dB|4ybw}`j=vKC40u{18@ zwH%>}fLe0vxW>!JM=-|hl^rlfGO?w{>b#hww@`#Q5UV zOYq|8&X&iY_2>6vwUz;}Cct*A%3W&4uX0KZE4)y{OebZLP%sWrDp5KvmSu}@#N9AH z%N#18X=OO}J3itrakH6zOMMFJ&pwu#FDzPJZ2Mi~-SgzOef-Qf^48tv`+HjF2W$Z# z*DwLK%;2z03r^B1aaTeW`%tv=s?|`Li&dX%;8DlCmt6Xllw&&edv7#pCT$l}p=&WS zpR#>2j-`FG^w+5061&*ROwz79rH@qzQbr}aUN>LdQAxdnA2Zsz!mo(R=QL>A?=kuZ`(q3m+?U>(O zv;J6xF9G3LChcmE)@ZD3hrjG1ply>3a_+zVY2k6XDp$+)SOrDBofqnn)Tobp4j(2k z!IfpiYal`U5p416*Z*8CFQ|(l^&wxooCRj4M{UdKw*1Cg-KmZV^zws=08bY0pwpHY zP1S9vYZ|zK`Zjgz{o`tT@9e>La%o|%cDk*~Lp&Ja4WMUCk=JRbd+6wjt-I)zlWRuVq%9MYvDn89zUq%1hU7EiNfCDryvIBR^|>_UQwH zt&~_*%Y=UQUJQ5B7}}$Vg+I-9C>^@|4VeNVt0s+9AAH`8)MPjk9i~c{fz_G~N{8~h z#?VFJO)xH%Mi+5*;98kDs;IBQNQ);>l@HHwKpaQjHGi#=K?-H2hJs&H-?B~5boL*7 zH&OUBLOv8%dgw9gfrqUr7y=zUX6qzeSeFn@xBhN{7-f%v*Lo$w!0<$VOp5WlkL~Fr zRogysMW`c(dz@3KQ=0S2sla{Fs0)9Avqb%)+8lOapG`*)6Us~C$`{Hp=JIGqm_8R< zsR&$HG-~pFWLNOdr1+nlU~e}C8)?Eh9*wJiV1Cm)Nof8gLBOUIHBgr&|4k}oKxU5E}$GjZ2@n71)ct{NQWZsN;W6lhHz|<_7o2%@jn)-0#9|(A^2=3V> zfbks}z{Kq<2;5^>E!kz@uHJ=s7aB-l7ZAc?HFJaXTy-Dl!wZ~6RhzBaHRmqa)!;7K zbyqk8c~=_fxyDX0(e*<3QoV^EbxV^^bZ|3w1F5le1G2UFHf3bWOzP7o#)fe3uy_#n ztYyhG@AIv<6D$sQ6~1z1!H%&tcZ0jKeExxF@!Y(68+T%W7np+bik@TkjO@wm72Gxd zrageRT4LBUjF}(`S!8ZZ$dreVg3MAMTOOBmL58))q~cJ^TWFpri-BpP7%jSQY~RV; zmN={kYvPGGTWz*IDtgDkY$1xUX++%zY+_AfkV!zZ1JzE&CboKGZM`>`*|&DaPt2Rf zvUzOZei=G*Rc$(^8*tUv6jee%P&GR$%$qC}XIDTsFFT4;=EaIo9MvBUH^i!!%io5Z5<^SDr16GV7n4BH#{=kEHrdKnHRdBbv{+1+4xY~F2Pzd_(I_d;5L zg8yEB+%nwo)-DVghXwdupF63P5sCUn|5^T7Y28?ewX+3!TGT-LU1rP30RGA~%m$Wy^!a@tn!f33c&wt9imc`97>cOC<&N}V@L3JDh9pIm&|(^>T1i%%!OC?_>-hW()(#;Gc!`Wr!a0Yop?gUY1KS@c>B}FNv&v3YM?6l2w&{Ofiq4IoAhIz9z%s4G0=otu@;--wi2+u z{vdD2@sxYwinh4)FfK#v_D#OH;#sw@?bW~`X%q6!C3`Oeqy?j1TCHDHjUb@f)WN51 zh?Q^3()81%)y9uwWFE{pY_7q<*8Ed-^|rZRx{Eu7^v=81U0Qa*W^(e6K(kbFX0gwz zWpf`3yTdg(T~7!~e439L_p;%~efpm60Hs1@CJlfN5SR6UTRW<|6Hf6w40$n@f@l|e zWOG5h&9LN|5YU4W&lV`&g&@yW7Qh{^^dZ{xacWsU0goeJC4B{YNxpyRPiTtw;BX8N zCM=8nD@ulOoy9OF`_DO z0Z?Ub)r&l_GA&;jIDSgv-DaMDb@CoO8I+G4HC_zAu9m~Y>TBY`8u(|PZYBy-@I0Q( zLzj4inNqgmfZ&EmbKulf$%@TaxBe)x{?UL5gRe&ROFP=C`I$id!~pab;b6WXRUjrW zG`n~Ao;Z0{iQWG(H$D5P*A0|xu3=SpW>?VzcVz*}E%7uvAI-=wz8Q}MB6fu&pc8Gy zYxt&SbOwPT(=(raftc0Gg~WYwC?3_(gMLC~Z#_&f7f*x%9sQ?Tn|SBR>4i5M8~i$Gq5q+Z6(nyv-b$_%(# zn-a|eWEeh<>-)0xWVR6!cA9GvxFHL>3|v!T_tyQu!>1H3S*D$FaUpjwjZW zC9bux+a`2fBirsdU3UQ8LU?=3ui!stN7zGn`#|m~Y;tGpkS>PyGe>IX(Gq3e$kh~} zXG{n$peEVu1+Rv}yINz1Jm#<+l_-uI3I{}#GaSuy>Wuj*Rw{8br}11l(DJpbRZSS_ znkSRA<*WHC77|H!`DO}+scB^xnbW}$GelRP3_f9L1+Q00O5w=vbNM|E2S-)F@qyIk zt$;(OPD{5yp;7|kxAP1t*>lM;CnY&6B|+69Na5ve1YW5&7(r9!bu;l=KLTON3;cz=(A^jxDV^zUtqGEp(UK zg!=?JZHSrFBURR{J`K;-kt;ix2%C)!0y;>V5LU5d7-z*wx@rKVzE{Ui(Od=)xK)%Fl`eI$)p14KG<0_@~HmIqEQn{ zQkKCCVT+(2+G-Zqr97h&{+)4h5=QLcA_WSIQs^PW!ZexCP_9rK9te!cXtzm-tUbtw z;TyBPpofkJ4bKwPJw!g*xuGpo4r-w|$WR=`SV*pb9n|w!vnNy3*CzSj7EPEXNu^co z;caK+VKAtl{>`Qu2>fc1>^VK$P)vH9rLOE0j+|q)gn|3dT4U9fy{MJUYqjY;QK(dq z&wmDppWSgLJ+NZ}ytdqvdTQ)t#`;mmkFJ!{Wfyh^O@i5w-{al&qV;Zk8(o=bzv%vI zE;gIavp%7I{0PGScg@9rLQMZJGueM|ep9N}atrdvKD3F>bU2Y}S>f~mTc8DyqZ>a= zguYo;h*AYazQha0h$0qihBGkVfUkbKbhCVTmK(6=g2>}!Kq(*_FZ$QRwyo1U?&D3z z8SBTpl@`1or1Fu3QPRjXqoR5G?1FMcjG`jKQG|Yf{OyFk&p+4$ATio7GGnQx8R$EA z+)6LWq-+$MmTtU8s~(<(_o`G>wzZoaVF)_5mvulf7NZkNwNFh{oAemUt4b$qhzL1i zU($C<*^M-?iq}Z{lsMy z7pdsSSXXsUNO5sxZS&UKU?#tPv`PwV3^r9=a;|5q@GV-FUpq>dY6@CuHM&?g@$h<* z!%}B^GRR{_(EDl#&MtaPy+p3cItF!h54sfKZ0Lhu%Gx&yRcZ572OE%og}Y=)5q7v= z*}UtRnAI$XW-akl(0J-c_?$m1-sfDonP+I07&ewr=blRFibQjNZ5P2D z&WgAtrdTdJH-lc%xR!z3YBS;CxgI-Rg4~!$!W?gEZ4*s=q+Znnh7}}DCcz2RAX8{Q zCHe(}tGnQk!DLIUG;!)eVA>n{XFGpl0CN?>5=GA>8&ir z9}{(vCy)<#H3qyUb2u7!O%5E4-fhsd>D;U~UZy{9q0>mi!r% z#3i!?XcQsXywM>wk+A3Q>GlR=5eeY;*hl-n$xi;KtJJ@ho&1A7{%26BL%1m~p?qFV z5Zf}k$D%I}0uNX)G8yo1io=sAFr)_g!vj=Eo8lVlGbT(+18Z-TH$hgdFH@>pYE{ii zTFXoHE*51dcU*a17(RKosOEjS-CoSA|O$??MMJ+-KY zGI`Erev-H&Fz3~tJR+Lkyb=V%jhz#7<~|W*c-3(OhwHdz;3h0wUf0!lZjBZz`U;eW z6K{~?#Y>pm2fPc6e3W8R_b15X+YuyzJ#(86qJ);ZlhAONq|Zq{!pQSc9Vv10S`V7p zY2f57+2=r$9U>s(y%J=~cHILx?b#VbGnq&^*q@m95@GdK5!FjD&EZ#SmG#oWglqx* z9c!8sZQEX}&TQG=QuyKmVKeM%{N`$M--UQS_*C@b7mauJ92fdwWUh*cArZgD|@rr0hK(t2tsV#B=Z?m%#r zoS-YYs+aWl8+mE4aO@*b7ua_ z%GU>*iL9JYN%yZnT5ZTJkL@1$eciPm3XR0b5G2WnbuL~B#YgEb#FNpf>UB0WAFEa` zb&0%e8*d)%ldB}3)$~8L(X8N7yAZJ&ha2q~sy_BWf+FsIrZ2QXBB_#YdG%1o;j+Prf$*p~a)yROCNXdArj(H~dCZfzMcdh` zGDb9g{HOb9{GN40yrc(YOBVyx!ST%IZ4q$3SF}Dks+{OGJFDE!ZxH65E8TyB{CO94Mke#IsHyJ|4tUbd zYuXucl|FUN5jevb8s zXgzG#wfMT@7&v2Zkd)&%o`01VLA#<#qK(LH$Ygc~%@N%VYujcAb<<+UqjRYjrge`0 zhXByls+B%eGiECw7K$vU()8FFD~>PoHQBqyh#vGiiZ4?wKnlh)*JqxcBy1SWJJJ{9 zY(xvX8^#ywHRPuez8^1;nqh{YWnmjEms96>V5*!ImK#in2I`@Z<;rmW5JG@S5o01L zG+WrVj}t~YKL;??SB09vtC?1VV)oSkQ#|{;HxyeNHxo%unMIN2G(Y3e6Pb{ zz4~O2kPWy{R^d1di-Zj8A~MTTuZ&wrUUAuJaCxtRkV<(12Jae~cpmK)KAUpV50wfG zP?s_#bu-g~HC%$6N3;B4J){Pp_Pk+v7K>u$251&7LX(Je$Hds$&3J-e{gc{+w8l|M zOeE1h+!TvP8Nzq?IBnEq(cLW?<5AL$@V&M-*^G>9*f1gHzl~3IF@N`+gozO4RZQZ` zl?uvOFGn#y22-OWqSHN@HhXy2JO%w?;h@e}j}D^G@>Iof=9wttrNG z@7ajP+jd)Z94XF%7s_c|Dl_R9N7CQI$zKciK69xW2++L2r+zKeb(GcN@!qUR7lqzc zyr1M?k(!&fMRZLlPq75wABGOVS4zl4L=C<)q}e**WeL)Y;5eLM=p}jDq-f;OvJy@g zEvRS>$Y?$oyRRy>>&AwIs<3rawVg%@AVv!{8_|ltC|u#5fJdY&MI3pfWUTUXFhf~s zX`X1h`}DuI?L53Qs~!yS4nuqp;j@@@%=LgB!xbeM@Bk&qr3}{2W12Ho(;V=S%W<<< zXQcYk!(+(wJ=zN+^O+v+H$E*^$?N4VVB|Mw#XdH4Sy2)N>GAHDIUb~~$MOj&B}`{| zQK#qd`AzuLte8U=|{NVP=;8-Sxh*k*F;iBHXD2_QVSIV zA`uf{?DBiosejMFaicdGh0vQd!fQ$v9&3!0>O{7b+c(O!p$B7pfD)fO3;GLB3aOa8 zVK%5MZp_5RK`n?ovFJw?gmz zZu{LHMnnJ0l0MX9g~Gj|u$8i43#!>Nk_Nv%&v}g2Rk7f7Ms3r`15{lk&obM{z82TM zUDab9$^FQ3&kM=+V>frrNDjk6n+>X(U&Bsr;?Vtr$eU#!tI!IZ%Epcp5vzg8x$-*@ zV~~wrD8nuguo^A4GOu2&6ByBOTJy7A0G$%D`9{NHba{x{;dz*VF{|t9o4ge!;T)o& z(z{Tm?yrd#e>%psZz-;%a!#oJPe1u_rm(4VSz{obVf}5%r{qDeqpZN_w>9%JX=75R zUDN_a^l5&-ETc!0DF&0`9&>Otu7){(k9(4=iM zUrGl0$n9*K-oqRxcsyslT@%}tFDMv<1tK^YW{@=(owH4}!oVXaUGN33tCJO&gojj> z=1t9XP6-5!!;7Jdh3L0*q6bI9KUkl-?7hYv8n9Y8`+P!sHvGJpU92MU$({XPex1#WRCBYVL zXTr{^ZU`jB9nEZkZ;p|2)1Dh?MZgyl4tDTS~`}LNni;zA#0=MpTa?K0tR<;7OWj()UMsRrA9`eKfJT zir)iEj=1R0SmI=&0*nwiR_^e(hA)m;KBS;=*8<-)S&oeTs9#MVPMNZ%m4WxsJO89F zs&E(R>3BZ%fpd=6v=C+D8-S4Dj1ber|p!%mZj2uQYO{HY~kZ z`2>>ylSNzdk8~!Blc9(|&<5g4gQE!(PZ@ZF^?5}7p2NKt!`x=B2tl+5 zMX=Yg5O%@EHS>1rf@oPlTWEZ%pikRE*JCYOs0~zl=&>tX@Ox4t(FVk>qJzSaE`at5 z;y91wvLi=5H9^$SvvAwbcL{eR+5!@;WbMWLiz>?XBbMDRaOIhXp&OHjgq3?Y$}#n` z!AZ}u4E!>sI$ov82IZ4*3FR{B?b5^Xy^SbtWpMaj(Cmv$^O;RTwf5aqTIpI&T)nbJ z&K=mAu9Xc{ILV{>Bzex)smJ0KePtmN9`%G-fEvvfqx5icJf;cuKP8M zhO#6yr^#aejOhTU)$4_?{nQN2Xm=8gycKT0^W3{y23&Y9 zn;?^r)#$v~q%uF0Fpq~ew&o%iqS7-wk{Q&(ka{aA%0E#Ve`mNRMK_foOfTIh#$If1 z*r@5~=G_#QlZX7~x;Q|-xj)6W^EC2X z@Ff%=jg|8iVrorV5@Vu$8*Vngj`(4FR1QU^CxWwbBMrMIBn)1a7nMCBzxD&IK=hI0 zc`!Ejy91P)JvQncVngpEz7n+mQpEVq+AHi z<2J1}>CU!42?VYxcgMI80u{XJ^?Kj_R`ic?b?<|{FAEOln6@VKYzjP*QF}z{=vZwg z)IT>T`V+RL^wyLms4z5)!a}?zMXX`4L@XQ3 zjPL)o&*~a929<^$kII56uGU+v22ZD*oy8_FF57O5z>jk|Ei~}6k+3N{+E_)` zGK?lx3@-;RbUg5xA4b43l;2uIO=3f3HG~`f5E}yzy1&fFB(;0%*D%XIvuH025{Jq^ zB&7i{*f5pH(5?&Mi{A5qx@OWGQlLEsE4+mzci`+qb6fN%OCf6Ie2x&7Q9>& zGA^wdbg8UQT;oog^}!oP!&sAg6_Btb)Y+R5XSUt(=+Gw#9v5zc!iL%wLuK54q_FMf zL1o-Ur1%IGOydezr?}{?mL;prrZ4N5)ObG5<4>|!Ic$R%XnKp~w@J!WcGcTxsuxpw z4G$B9{ZPe2&tiMQR9N?j2B>y0vG>OYJpxc4cLHK>DQ4Wq`)Ytv33C+7SHFMuebgVYC=qp8cG`I5==XEXI z&bcFWNZ;{loJq$4?X*hRW5v<{T|&wIbXcNFb8$nPoQdgi6Ph)>+*Llwv{sn-ixXI+Vf)y|4qVpC%2j^&frMeh+K>T{`?$0>Wk^0CD3tj~s{N!%Jm=N|e|p4Y=g2 z`aowL%Bwx;AD^YkA(bv)(Gr8VUsUvK8uWXd4JdnV4|+!}p{b15(8)f~x7$l~E-La=QEiMT`cN$!cniUkm2TE5Pyp$=*nUb2P5{S;&D zUCR3@@O#AKw_3Di^QQQaAGGi0ep!F+4x#c2sJT{`);C@aFokY4oyscdEyCuhD|0cC zl9?}a?#bRZlg0T%r=mUOhLb*W`9x&BMA&LQyVnN5G|=q zMMfR6eHlQKtrnfnuHZ?bLc)#4!c2yQgJDW<~oF5LhsUykz82->}+ zGgT7TWL)b{vl9*S4n0`A>C*5b&j#wGYV@c9-NM=wE=fk(w;>Ym3{7mXjf$rZyNbx{ zex8oPKRw7kNu1utxWe#r!kwklFA$o3QHPvpZBoB6M~*5H?@5l$Ra;DHR9NR1%};#N zUw$1TdU(Z(oaAvPP_9*}uvKh#nyjrseI^ck0_ESbnvL+_5jP4}$%+1Y3Nj`LOqJCe z-ezd-9Vx0jWQPC?+SNc9l^u}fMcUJwrPk#Rx)9khO%cXx^ zbf^DC1NPr9JBojmmHs=|@1M7w$(JM>lo?I*u=-SdQ5@DwrkOb^s}l){?g89^GpG-X zSRB!88-y=0RX=Zwjqre9;MRMc@Y_NvQzW)!&yRA+R7SD-`WuSY1l?N>$lZGirRB%8 zk9u*WlLv43tQDLRC{~AfO`ju^B%hw12MJqmm2R2A%3;XQd#KsV!}sno1~qVD|IB<@ zSVhod1f?S2U&okf+FXH7U%&qlT>tlj{>$|H-w*nq8|P5~D|?lFY~P8E ziRE#ry4FnXB|5qxa!xq(HnAWmXresmpHSw1VJX`whlT4Ryry&6bHz)W7DzD2D;tfn zF3c??$|z*>ezR6)xvtdCx)wJX@qQd3mdH1zZ&06+BhNE|cB~dbfwOlZ*3}jrB&0 z??zt$&6Tv!k{MIJ&Q-h#br?RW(MU}x2$}Xr3B-o}9Sd4)&XCoILGdx6^2%P>eiEJh zc9E6!++54rG--`t=g4S|fuE+IHRwf`{CABU7%@ew=xpr1JZ5t3=q)^`N&`w8_z_yG zETr#hb$}L?Exd*qn8<;u;*0l#b<@=vY(neRH2Hy@z{nm8@dCs9lST^DQuwseybhyE z2RjJ>ASIQ4J&l9(yXRQo12jP`8OGXKsGS_L+e|JGi!p_AMnYIzwoYdTz)kDA`z{t# z^#udcq#hp49rw|7q<@{Jt8hmNqD!s-`7}2u>bSV@k(Og_-v@oPQ9KA>o!4b=IhfZl zABT-q6F*x!zuekq6xNic8YZtAX9IJFUnYKl5K zCpuxtO&Z*caTRlrJ=+#-;bx=wF?lkL(Kk@ei}%RJ#(2rJq+aRi?p)S59@)xCmMKrI zj>Rr#B;i(bTcQN*Y`PXSN9j5>nsL{2Wdd)?1l3!aC5;H@mUrBpDqAvSXk3w?MrBAg zBtFfZhroi?g`a(iv{N z)Gd-;zyO86`Ez8+gnTy*(4Bkr#$anxip7!Hlt zH0TG95aopGsM&jc162K@EbjL|T?f=usy`EiW|d%2yo%gCCktqFJjC&C?sbc1A>J zFl=YA?eHnvz66ck(l)=B?JFyO*q(JiIHbgncM?|IMQ6ni!`LOkVahgU4nsb70zX#z zhwZh2#Z;KjBHgskg|VTd@_ozR0``zy%1)qKq~nX2C=SCKIZV}a;Y-ajuke6vXGn7A z>Phy?*aKEBZtF)j%!}%}%`w^{(B%ijB`%#qYs#O%zb77a=upTkkKlY7bJ!O!9n5O} zq?6sO7b;}tm*8edS|d=uD)C%y-82x(>{(B0@IlV{SVlxx4*^?hVTKUeDcfp^F$PpA zieD2tpa}h*DX`#-lt&=_eFWQ;JroKjAo6e=qqmdgjG2!m8vuuBgv|>*pA@yKK=BM-zX1kX zT@%X@SqCN5C1OU@t+s|7X0l>J^Zey3!r%^XUAc%!$O7g?<1&SMwQbxp3%9+DwMyLE zkkU;i8pji$vim@N52~$FfAQLvZNps9bVNOZI)!;f7VMt!_tSEB-}t2)DCmRewTOXx zL3h#jG6bF)afRALcxcf$$4%-Bd@D*GjOe4xJk>P*Hu#*jNs#&L)Y%>bpd%!t8a^%M z99KrrYvbP1CcpBD1WTcaNe8a&iILYe60EF#*H$w+%R;3wOssJ{e6W$2VF};7RqW+C z$!@6N)Y}sH=I03D;N%nOt{g*h_b<3)Ii$PwjALc2HUBf|?e|N(L-t)zuHP?M^PR@Y zFA6QQ&sP@ts6OapQ1qD354wZe0s3#oV1IQY)WNey=_o^9*9T}{mhB+snbwMAY#%+l zVj4z7gr=j+R%UxiQg2bf&&qhE*+*>=gKxe)4_{!&W~_rrter_{UO%TL0>MH-2Y;mv zFNM=**Ak?ft=pw}%N8~0Ya)vLr}rID&3C&XRWo(mMYIX`i~WF;Hb7`dUbNhv02Efb z)n-?tMjjOERWxmMg>mH9bX`X%9pNeXhr=C5!5jN#=w>Y09~1bGX!bWRfs9M0Ho+R; z=TPP*dC6yA=%*~wrqTYNam&vLa9apI?qZ5?Wfgy_3B36YEiBqPeMZB)OA9>%488T?rKOdA+Z2+eD=>J!NjkdsZv4 z=;p_oX;TzL-`~inu=Pr)cqa-GDtQ1>9Zct@%%|}RUk*7B)E;=E;xQcwO=_2>C=^K- z-|Y5m-XuKhr%V>7qVJ=Ss8Ws6sbu6%rlZz5C8%q9 zfUq}W=Iu|f>$r=h++=(zv4)wf)0<6k-G;yP!Qi)`GcFJM(VX$08y7t7D=IJ5S8ZoD z*|a9C7wHSK?eQ*OCBx%WmxBG@}HcY$(aAWdGzI8 zhx>&i<_y!&X{H#sv^)JyA<%;UQVg{~12qj3*P-A#c-}WoH#PxzQ+?N;Ebs*OQXp-Y zABsbzlj>!Pc$m#=cJP>^7xPWPs8inL47zR7}xloP!sGpk2}g>aE(d9xVcsdg%EQ&z?ON2;%guT`Uoej0(*Z%Nn; z?28W`I(NgL*v8_^*?uM}fPR+vZ3lhTe8kO3ZbO;oIAe-fvogQ@Wf=oiK(?DG*&kz0 z&Y81&t*5IJp3nr9<0IjfOQ|FM`Ch64E^Dp(d4vVNirs?mh=fqQ=T{4W73l)8GeN00 z;@e7}0Jo|}Hp*H_W!t%+Q)DP4QF$gW{JHAkKpQ zTA(Is&XZ3B5!c&;hi+!Zr}joA6Uy$;1>zLH-BO&D!;dPb{ZaR1TLGCY=?lsm=SLFP zxZSpHR*uoZH74f0_g_8hv2Gyb19&5;c=`~^kr1*@Iyg%xS_oZ#{!vhfLohX`d~I(w z|Nk<;`yUbizv8X+5B&5;bh_25nrl6*v&T_Be*<_IwLgrIJ_edt%q|bT(W&)Vw6I_~ zWx>BODNF&QxhV)^nK4ciZdHUi)tBE!mTKbq1A@hHsp*!!91DZdVIcyXD98a(zr>JZ zpq9&Gg>#T*`e)#YXQ6mAnKseln_oIP0E-p)SP{EU>xPKIjigg9>7qbxb2}3q~JYPgL?-L?ISELd~~Z zFr}^WboT8e(T<-?t}*l#UkpDUgG)U)Vc(f&vG!4Zxg}{?*9vO1TV!IqSsQv3F!N{=s0}JGlOOv;V;Y818D_;n%b`LU;tA8rAtF=t zAVJu-W~jRq`&;@P#AEM@;RjW z*J_@d(O2x~|7Gl0{>R(u=xpl5C}im5?D)kDmv(d(x3D%5a{j{d8M-)|IQ=t(!Kyld zRdJ-w2oo7*;4f%!%Gh)a95Bcd3!*;75dhH=s_&jI^+ z;IM^!2ItD`=G5lYVi$Q%hgWJW#nB`@~hx_Yo^|y;HF(ecUQCZ08fOeAN z03>_H&74^aplGm>hC&q<-R)&!ETAevYCKB7Y@h2VB%bSIRN^}?RgiJ1zp(^*HiBH-KO?~ zpmjK0Q8fln0MjsH4TIiTEW4`N!N;aEk@b)X6lwDmTSy zD$iWl_>PIhnnDu%PvW+Es(8rHNGg#LR6#Wnok(nFtamzi{ZywfvB*9CDN-pmX1Yp8 zjq~cd#a$7djZp9ji(?&XQ*(TjEeRr19&c8e`OAp&>varTZ^83w@w<^EaL5#lt$WNV zY!Pb4niA9IV7FRW1f*UnV`**0QwM}|*lJ)#z01m#N6Rh)HT>fKBa-D3QE(Zoc!@ed zxt%Z$?Y<$W0pbCj0gt?SY$Jl+S#9NHaNFRk$nwJSuDA@ZP7LD zzi^`wmZ{o;$4TgMPrrb@vy4NE%ZJ^Ajeo$wz;nur;Tn#=A_vuIUoqGGpf2b0rk9q z>4#Z4I1nrA5mbXG??^zpz_%{4!fy}!Ov00Be41Yo;yd`jysQ(}A{}v-c5-7WJulMn z_lI?>25UDME`P>boSugx=r=2CpTdB@)V6)S`B$)oHiU!#`(t$cV)O<90dX%ryqma) zn4x7g@@B8SCexdJR!6?I?OGmO^=td3-ge#Xa9CF_eFglE6aP*ZrXByqlPwp-Gp9IT z#8xGR_w4WDr(3_i20|k8aRj_#ZXE%L(ab4m10=!_B7>>FiFc)lNh&0QIHd%YUQg%j zS(q@ORZ2-DNIp0V(7m5fd|fl->b&k+&kRWE&R6JcMwKb*`5-mY`FD(7l5e8cg*n$L zr^2P~wiwPo(ca_L3l+R!>hIvwM4(}xvSSHrf^zH${}^EV8AAANgWMV<-IMf-#}->B zpmC2Q#C6+*w}nq>$%dID6Nh5KA%K4lT)r8k+0x$mg&=^7uH8{>`3+EaxvA*Oj004+ z2j}B2-~J67VwRQL7x3kyTl6mlqD=osUpQqCCub9z|2rj7(NI8DLi@1A1ST7}fzXE! z%^-}1;#xX@fI{{din5)|p5K9j?aHz`!S2+5!29_Nq)I}iAGQA(#+uAht0|i1IOccb z-sInWo=AJ$T}-k2R%OKFZyH(JtCvO{8j%pwzn45bz02R-;~U zR>v;}E;Cv~d_~}99elM`It@Ct+TKa1AE^5hap(F)MA|@ep4$KxYIlEno9YH3M=~=# zt^8b9P0sTV zKmnbKtqJ!BC_J&8@PgLihXbTfcGZ;`9sxLszB%tfbNnhwvN6{0atgStJi^xTYCL8` z$we7pUO##}I%n6r-l)KiWBpo%m<4a2jHw<0=Kzn6ts}J$FCei;rMCE^qVE1t6CT9U z8~&&$BoAT^KXm$3NVOzSj$OoDA!%`r*f~A-Q^PsVjdR?VD4c8A*2tZ33~O1Uucaa8 zx5Ka0xFv}kT6Gs$KapbjpVVW}*nwf3LQoW^?7$5u^B9ez@;% zil{vg4hw$Njx-`-S`ZX?*g>_aK;Fkk#oN5WoIiu$`~hswpmSMnvDn7dDYqn&aC(P| zg1aeSP8;%-Y?ZoYvdB`m#a&e)6cOTzq2h|rvN}XZ?K)BqC}^tm9aZ8ADPn>3Zf`(|J5b&g zhahZUa{eR5`16%slm5e)=f6ym|9e63KldO0pHhr}zJUKsFUB=s)$tZxJ`m4XMwxbM zS>iE>{qMD1yJ=;T>A=)LkAj1~)f0h}C5NnosL}DBu4`zt$nPvn6jZJk+RTWSl~c%D z?r%5LW_@F6N^G%NU7C}>2$$; zsH^LFzD)bgwjec9**y>M_39Pn=gvabsZdpAIY{t z|7*m4&F&=GTWchZ|1J6V4`FfmE^Ytnt#b6#e!cL)MKW)l9zCfiAY6)m1IQ*Ck{^9n z7dh*^oy-$1HoUtKTo-BAhg#3(@Dhz_)6OMCy&sa^!EXD`b^JFUu>rxI9J06iNK=rN zUw+85pEP9e*;RcpvgE3={Ss)%ag|Ovr{w!O4^MqzrU@=lCP>CI@(-T5EsUhIiTcF)_w&u z97~ffALwIdI3T*_MrVqL5X}B*y*6d~Lchcj;A4Jub^IRGmd$#iF^>s--1RpRC&CI? zP5W$`8+9$pRyGJnPi5|mB~Hhd&D4-Ud@f+BlO!sKl~*%q*OT%pl7Kuf*~iwia5n$2 z$5bIs;p1D3nr6-W7Ykj&^Myy@Rl@T-uRL<*^N%2Q9Zxdb-^ja#IPy#eCRRV-PW1bL3z9oQpfO^ z<=`L0dg_BP+>}=!P-SO0^(%{x33)K5^2H@%pduiO8~)zqIpwu<3#eaC2wec8s1y2e z{^UUxYrx3B4;Gp_PvDT4F0|f4SmB%+f2k!M>3$9HWWYQZ7z!hX+`lf#&&pcWd(laN z)=s4)Hd(0TkDoCs@9p6gaIJIu&pQ9ihYVme>srqcX=N-EqZ^T8ZM(I`i~)K>?5+=& z!5_6bFrm$Y0tsNr;p0jTIC<5V!t*j<85%I_8bb}k!XiMn-9cuf(Q91uVo$JQaGBZl z?ak8?$t}r-@}7Rss7bHO6$HtR*-%yWzoe-Up{e%rw+Up0zBDc^EB@l|WSpcqnVGn! zj~TR75o>q_s**A#ku-A0s2sE{Wzt1h*m0EB994>8GXxuGR+~aok|tPBW@%CQal!de z>)SbE!U4qk8ZcCiXjsWqG^==s?~pWR0p_e|_6@;A?v9RlaN|%eg!HMnj`*z=oI&{D zMLEzxOGu71%6;T*Y5X`_qDJO2LX*UEfW*F5FP;pYGNe?#@4m@stCir?-y3U8%?;(O zZwtKs_cAm6vdLry z5VRUX-3bwFk01s;VAZ7H%D5HgpQbL~0}R$uy0fCLmf&mjxNHApOKPa{8B|?JigPuf zliRHvVh>?(D~T#E_&t5Dy!gsxU{JG*z$BlNer|Rss>_nsYa&IXokr}hGS-LMw@r~a zT<`=#nkMZ<{WL&-GuGMIW+>ZBzh9`HP!BtFk29qghOSyQ$!j@^g5r&s%}}Cg`F*lo zuZeQG6tzmLH;prjNeyu1p0%R_m~wcRZ<(G%N|03V)abTA+IX8UoS)i7AI1N+(yF%!~T_xwb-V8+pLvh6nQGi9thVIiv zY^~1FM7EMYrM8m%g=r}Ua3Y+BNivDa=byuTE&0>IoqsuQcW4MDx}uahjZ+b=!LY}L zWNh3S+L7R0EXvvK51WHJUs3Z>m?HKY=66;^DIAB{*D&YfMrpHxDo0tn$SFQb&s8YG zuII-hB2qU**pAO~Wcfo!Ez5YPM}W_(Goc#Gh?n3aSS47tkaDD@ZvT*hE}ybpDVVZp z0Oa|+1zXt9Yi1z)idL7+I^X91y|w!kB-}i!i;%5->r5eRARs~AkaMBACe zDD7M#{QU?%b74kZF#cSrA|^gs zj7W!`+9aja<}HXXOGON=b857tvr3*V&p_h%)4{igNpZM)?Sd~q)KP8_9~P80Jy>aH z?K}dWZka4?M)30^=<(EMeoH z1arka;vLOBYPATPW|%tz;a(bcgRQeO14uBnFh&C%*GfXgoNu6TsN(m@t#INf0LuKz#lZ6$)lcABxzO zZMN3V)4rx%4b;mBbHBsjWW&!7)q1OUirH#F&nlY)CP+NYGR z3%SS{{lZL(Zy+Dl4`GP%D=*J^*A{1IIlbFT+8Jl-4>;%wA8A*w0B!Z72wx~ zy=n|KX)@Zi+=XDo0#>-EqeG#SOZl>qY8Dzb-Q2pp!ZqEtpDoWff^eeU6vW+E-AWy7 z(zuKhZ0R!DfJ?h)q0%CRNXt_+5BZb~12Z-<`$T{A^i{!LWaq3Q)a2x4$}9XMm$vQk=9mk%=iw zdR-pgCUmL0RK>g@T6J%}0FP#s9Q)QIAYp&0+B0%=)Q+MF-GR&PfWR)lGH z1hK=0A_?H+f`Yck$CgvwB(hkOk0OO<`^4@&w1+MGh2!d9*eI>*KM%x(vlJ_p<@#kk z$&?b4WH$by=uR{wiV-ab;_aV}klSdX)X{I|juInGh&SSD$<}FOH&gpH%D{)bYuhie zJ=V2{&rp^xGk}{}^$BEx>W3)fQ9PB)-(4SMWJn-gY+s`M<|B~!H7Mld%^TAg=|H>o zmi?E^PvJTxWV7fkng5n3=8=`kBU~Z~Nsx9tsh}ngcc07DfeS3;C>vXRi}NP($$>84 z*_fb7p{Qo`3I2}t4vqxF8B-ap-X(kH&_M6Uvd0{qFwV6$Fpw$crd%P7Z)Pn-(Lcey z_JSt{YqcM|b$vpg5sHUTK_pv5jNz3T7)@*|WM`z>S5XILBC0=TB*!pd(E$sIf-z7q zHZyVgo;_()T{7skKQRNAaY87O;5K`qmNELkMw9ca^G+(|Tug;7KU_}H#|4?4RQ`}} zLAQ}V?WY;645({B)Vk6r!crfDxjw2j5E9y`BKuUwf7Em zUhz>0{iM&#%^DK!C53RzBa0>U;r4!vOVFg@d)NV7Ub ziHtpn>RadVn*gE(NCxZLmjBo!c*wMdwdn&dQv}9ZOsD&|*K0L|nC999!agG3?nFQQ zkt(5hCNKC5@(Mrnr0RTQpHg(b$9f%!Yo}xv&TFluwTovqX-E8Pd0&BF&FU)`+s&a3 zjS=Sh5I9~P+1zV@LYO zHT%>kTIHT*c|*>7$17b^-bcFXW_*5Ds%SlMxwf7)&RnR4j53GdW7bZaWb{r%{I*{% z^Kr6AY_~QvdA;gI(P{e-t6iC+?X%MO_D2>ZVPFkDIOlRd){`*f{#`u+vBqGs-W78S zxViU!jTOC1^2Wy*fat*FyToRRJF<5QcN|-z5I|BZj?#1!vGjAXChJf)_>Od`n$}kwshM~p|iYC7VkiJ+Xqg;Vhk{{4v^xZ zN?CAfViiqjIel5d_EHeqyD@ByzIk(Q7=idkxHa}&HoKQ=9o8I9ct%HgA{5~h%Gz<+ zS-j)fp58C4UZnMIe6f#jAGps1W7rv1K`+c3^?I@~%*wgRzy6~RRrT3$IWycr0PH9C z>T~xsdkk-N8&@EKIlWU7e+1{ZR;33MjAL3n13eS|u7Tsj)2kia7Wgm0BgPX{SCp=I z2zQ=+zw&^!zqDmt)SeHLS``{&Im^gCCfgC=?aju=vl6_-eO#~yLcya3Bq zU`1fWLV-WW9`rje-5qL+aq#Q-0wjZ8-!$?iUz-!eg~3(Kj!|;7oBDEII_EQUJvjbh z?8Pws{TyQ0g)sVainNcaCPLHA;59V!--JwWDyx0BYcForoE~KjRzyb_Pm1pcvmWX> z-P#jle3aSod{){ANoKXF&|2%=a!gEBf6p81?a%?ynQwxtZL!z@X~)HG|}>n&EF~6j`P%pD)meXvH@; zy}D*$Ri9}8sJh3DOX6`5zkP%HB1HX%%Im*Z-T%{8^S@W!iU!W+|IzT$Qb7HO6|Pp> zd7E%0I=UjV)v=hyH83nl5{iPo2+KykOJ&f^XD*`bUiY$Jp zU2w$Rm74t*^qHwE#i93M=B2i&-{|Y(e&~3CTtEspLg#w%^;$6Qw8b=%w$?_qq zP?E~H7hre>4IFwiR;pO}U!*wrQJF6uz4byeoQ&iJ%q&NGmG)iaaX6(;Jxxx_O(``l zBDA0dw2VA+q^Z1NtWP&mwu5D6UbQ*2u4OaLnvboTb^LGmS=wvWVWbgbJ(f%cnff+1 zGX}Ri17xaK)@8$4ZDx1_?ty$0C!?H*QLPCW#4&1lM?$lVeA_WVdIt?OI<1zA!AO(L z-{FE^{8Cz)O-i{cvd1k6pRk-_RSk8suH|pF`}HyeBQ9f{`D|ul^R9d{bB8U~Th(OeTplKPSoj4#e78~pf>%-u|HF~Y;t&E-)V8O<%R_2sHvbo3HT#)vGQ1LG?l zHH+R9`|JugYMAA_B#^(e201C&Cvq`^wk{%VJP97Lc0xvbW4Sa5fpNQ?tfG|+Uxr6u zzQ6N5vqs~WcUa}M&c;E;3s;a|MAU||jmMZ|cPj(Mp$mx5braXb78fLt)M=s6Hr9a_LLtBs(5_j@||z#y%fjLku#nr4JGmf%g;R zx{KPA*2lkQ9?{Z<0;LU;a2|h)cFyb&rV15s{X3lNcSEjqM16p9gybuid4tOvN@p#y ze%^NZSg*8^2k?ji*$4YMB2k#6Ak>1Sp56mz_#4%_rI)KMkg7H8+|_B#=$TwVZjQla z>f@ro%Ta5J13_pJd0_unKf2@TC4gDjEA@k&IugRfXfAN;`QI>Bf)&YbLXRk#{(}#WSd}~h<`lTl6Z^17v2nsc zHsmmf>lb47BOOWj737Vo&m{;;7&O1{G5giwEc4WE^G_y7OH4aL)s`hbJKg-S6_)$> zKpn{9xMS}?c$5~LoZpk$i8;%b-5a&wwl59qry@nqrFh)Xtq=w*a7HL6?}19%nC9LH z=-7T6-+h8U{A`mJp0#{ht4Jy!PsPGH$Hzl4lCy+u%8DLFZ}HdAEz_!>^j+onP+Q?5 z%_fXowt#HZ#FGulGrpfg&1TKD7FZ1X9aHBld>3zaxFl=EdroMc z(p{Xle;nhJPS**vf+^6eXq|iMLu;Lax((AcXX^94d|*O_?ijBh&73ajz4L>r(EW+# ztP?AEgC?p|e({$FJZa`N)sA8GnV9gUA_b!R6ZY9z`7Lx&%mIB)Po3*#ucz8yn(h(q z252?dC;ydG^*$6D^IR#^Qhj_}_a99`9wb#bFOIMT&#=EQRui$`G=KZ}qmXO&nABk? zfp8u>g*(mc&ij6S7Qe)>p7+4TuleWjznp(k{cooO|M*P)^I_@qg!WdMzyEyf;AFKk zy{YT@A&deAgJLS2Pge{41sRDFluMQiQXVw+4U9N20i>^O{-^JXChf-@jG9=*00g@x zG!>LBdgJJ1S!LsV*?f~F=IP7=#Q10C>jqt#ERp5wp~!{TWtY<=|EuFB-|e%=>o?g2 zn9fw;U4Fi&&K4l3BY?OU9Ghm}CJ9c$Yg%k@XkFBUc~~aFBAicc)V@MU@0KJ5^u|6D zj$Johy0OkYU1-+iz}NX>-Y>Aq)GMHY1pE*#Hf#Pc1z2bUfY7OqWEk!4KSzqBx7&AC?l4|OlO z?#!{4?aEQH-RL=m#;u@jn+gF#Lhxo>+9k|m3heM^!XT~j7XSg^X-{wS&?5oBzWW2I zb1oJlHo^|6L!0>d19)m|8Ud#Tad^-2HYLJ26~(ef7PD&HvYdMkxxUj6!NwZleMcH- zoAkVDd~`EI)wV8U;v53!hU1)qnPDCxd)vD%e8XRNqKn;T(!vOvGW}lnG|0k7)GLqe zX}m<s-W@}+a zx3YqffghEHW{b#fa}*h@ra;cM&@iBe)X>igC2qW2H=$UeOn?h@fnJ$KyF${90kodEeL0^N*5=bqnW|xFsvHtX zwX`!Ivmi{L--vM7KyMtU5`4+xs?%d1dJJ79TCn!KZ%l<9F zqXVB^3+n_!`Pc(}a)8ewn(hk0h5Ez>A5zpiCANiG1v}0uA3xmfYHVlDVdlpFYWbDIVA6eGj!$ zf8p`i`$o^Gj6vG^{v?6j$OX2IN`pv?R~9^TVAM8Iz(r-K&XFC-;EA$413?ub<=3bvL-r4f?<)Ll#UHRp<_wg%h8eeLTjlfE=}R#i3Zrye z2|SNf)Dv}vft=L=19l7^W;~OENKsBC(05QbtH>xX>hIWM0G&6Bvc1WXZed#Hs{lOt zN_c#$g@Gj_;Yz$)iich%JGtMaX;jv6g%xR*Q@uf;;)z77o(5CC7*uw+sDHS)b*wC= zjOhOQj!1zS<@G~`l)4I=mJ*rV+j~oCbsz@fz@=5eLi}*Z3qk_+BjzTHfi*l`dXut38gcyr8E_7)1yKi&HgMOL*R$O;*?#2D$V z`AJr9u08QLXgKM@@8}%41(e$>bjDd70u9pA2Z{KpzanOve#66^t-kNR=LrwyN+C6w zcm$lYek53z=pS@WynhbcZdTT-lqxSSV4N6R5iB!)Q@7)?0Vdw^+fJeWj9UUBO9^JP zv!Nr0Q^3*2lGh=t+&mfL;T6E^T9et-H#HsyihAp7+q{iIGNv3zI$0%tb!T$0?h1vz z!+D0=j~Vo67uPwc3x?F{p=m~aHE4TBzk4djFMqkpcnk=~$Z**y8{0IDKaA#CIF=@o zQ`invQZ#LQwt8*!MYRm~xhxqPmXGmA=w-O0c*%L#UGwLa zTMP7pmLQWdH@8Eix3j5^V9;w%KaCUR{a=*5W0z)8u%%n+O53(=+qP}ns;o3BZQJIX zwr$(Cb@QBa@8}-4yU!T?2ll5}vDb>2^O>f5>VWlue!y~WPR0ZD8-GG}k$$}bI1^C< zltq~2^z3~QVR$AFeL$Q!H&I>vQoUTeF!lbDG3vb#{qI|ul{@T-%GVz$2GN@Bd*yFEkwp&oYzC{f$54KZNFHr)If)db+A1L9#w8;zX z6Idu5RRVEPwcGKHp4Bv*L*I2`UCkJbGvaHomnMp z3q;XCfg@R`sQvg2oVw`#+uf&j?Gt})H^PwFN_vY7^?=EBclrbSTf5}-9RFM05{9ML zdb3a_M;V1z%oaIEO0!$Yy3E_3A0tc-*=OX}=GUP!n*I$R={jBEjaM*0*8>@rUA(SiuH zGPu9DN$?6EY+^=_70Ux`g{e-S-!odvbiwQ36*sc+<)(%;rLGLGiB*u-jH4pQ?ePrk13EvwE}r4i4yVZg%5YU!#3Sf=JUwb6abQ2o?V3Ha<<&QlT|+cz+q^ za?au{RkDvA_OEs*33lDssini(!EnfPeZl2V$2QAadFIdLzMAp9_`_T;IJ73mHGXiR zQzYx_nmXA_d1xBwT5fOonizmRMDOUtWv5X2JHT@ktw=5^!u1NN|EDBMO(a<#8qQ7r zU^H5J6nN^FLvt*gDrxG^6l++E*Ro>Ch>>4m9W5_sjTFsg_6J0?HdXJ6N4q0~^SNE= zo5{!q#+-j4+$ckwlVHNN{C0+D@`?@BrV*`i{h@c_2fk0`b^SYB7l$v~WxOkL`8bp> zSP9?|4xU0ac1@&?xpS#Tby%PO3D?kOGd!lSwhp>-!2LcBmk?FA=>6gW@%mUYRhFUY@AioaD?17Mj~qVJ?+qoUmH9Yp z&B;yI`TipW6FU7o;{e;#d@Kb$w2_Nu<#D$5EtfinSXK7e#yZC3PR7leVPyc92;C&> z&aj?g5gQpc%4q*DJ=X4mya2f4A774!24Nk%g2+{fUxJYM8^RCV+~Wu)fb96B4DN$aCjy4kHKQ-=-Gm;emi48ydxHc~x|};1;;uG;MT4x9M*~hH72F zUj#L{K-Yhua_^qSpW9*hc;^s_)#3rM$0&QalJb-u=|&GC_`vo%;)oei4H;tD8HeS~ zczO028bk!pfwUkSaNsz7K$M>A!XypD9&NJ87WtSGaD2k|EM^(>7m=OE(T9exS^R@d zzrGI89`XG(h3C;$#w}Pf_-S+Wg>q286GVoaIPTGg>``sJ%KhpE71=v3QUA1vW*?l; z7KytaOYU-#a93_;6yJ7eTSu(HDQote1X_}E<+{vqkXJa8mvR+yO7HYQz%40ATJK?F zB+1$z2_`cubo309m=|0GzyQh|)q3R`zoN+uYd{SKZwwqM@F~9Q0!`XB!xGgTE>gxU z8AZ%ga{}3*iORf+@4ONdeF5zh2}_>|CF55H2F273yG~}5rA{qQq8Or5Te6B01U=N~ zcgZR^xz&2W89=D6KWLmIJEhPD+5(m2MuOUB9qYr&n-dQB6AnNS1*C%cLqdOQ z+ca(u$>>CA0-{v!aR*Bw#k(94NGHlEE3ZUiWS{8B)&`erWuJaWc3h6oE3&ur=<3YH zgr6>r+m5KxB!XAq>Ynjc6xJtlmb$&*Oa#_H&JmSdIa82jVy3?EF*}l4A6q?Dov)NP z*AMGX!)*NV#6d%=Ri{6UHDG3pNTV<#tN)#GC=kjBi7fp>^|kZd5O;7-#!Hckz4DJx zJ25JYhr1CvI-(Wzt^elHKtnV>0@&0?H|o<3Z5P)D-+isU&Nj;An=jz|hG3dQ!z9>7 z9=`5W>ph!>Z+JQGiLAec$QvF?8!E!haNz4@>Qv7g-g~O^rmk~U@BBQ_5B_Pb4bw0q zub6ytIs$#7$cMFdSEy2$ajc-q!?3l%I>&fa?>X~Nw)$cv4_PjaRSpGFu82w|iA_*_ z0PjVvH|NFWaqRQ&`8$e=gF22lye%jE?)qjO8+%SGcquI?DbIaiu`X<4OLQ^U>D9nl z+5lY+qwah+3TADyYZe*K(fN*fW}a`B?pMs|Po2xY4q6731LBUBwJ;9ciddguQ=R7B z@aMvGy)LiuD`QN3fnGIkX<)~ljz7QNGkdL~-@$;e({nI44xL|gaKIjMy_$BJeWEWh zs$iDQY0^l}edJn|5wKy;&OSSh#f6-hHH>?lC#Iooq`LbgI>Mkjf<|9(kGoPBA-c^C zJBP$RxFCwzYjN!JLHq~AJ|Hu0(CCJ_Bc6!>s~ang4X^en--ihD7A$k4PW~`4>wADS z_ISX1bIzdm!3GrCM=EWlqHj$G@xY2*-5;p0cFI9xZ-)h!Z0_a{ZF>4`-* zn0xgXopyyT)ww+Lg2*)Q_Jw1p2pk=14K}+FV^5gpR%($yJSML?NrJ=iq#t9GbXT(# zoqYRZDrlZQTmSUNDs1GoUOV`n-Asnb%hTDhI(0jzwK-xCqS%B2P8tHB(6jk=i6W5j zwoR#DA-LzfGvoPpMD7VgC%jr}6#9b)&lk9XKWq*tQVVncqP zzMyeBVqyX^H&!Ohe0e<`sZ9+bObbGpPxPkbW0Zlu1o{)rsCIe7c5y(VyjHbflWt>< z<6iI?23|48!ubNVBmUe@)m4^~-z30DZl@(bl%=x1oAj+(r^y1*Dw+8bL+!nKVxyzs zbUYMJYL1VixL$f9AX0hbm+$rM0ZI$8o2EI;pp{n1McP!G_V^4!U&-A zpazD|7ZTQj%iZ6}#hQv~8X>P38xOH_8ZzviF7ed?KmnZT)5fWEqEtT+Y8n4B$nUFs9F_8lVaKmk}9V6 z3T2M&7G#5YFh%EUmga+J3N$bVUYpPAWD5O@C^Dp)3VW>|MMCuhKIYKHoSEM1m_=l> ze_rX(WMl4p5IYzyTLVW&w$V`XzdbD%;(0zmQ&c_yHKUT)5r<{L558l=%2FnDoEg^w#~1>H7cu)2_8 zFKg1IkXjTL;h_H2kQ|>89CswF>KXL$$E;GS#|pTZRv@d7pQ8*dVi}O+dzRRA1LUkX zGh|PSD?f7Gvk~^NikZTfdpWqY4d)cVJfeqcy2-rNyN=y`T{Dc66{A8vz!oj^(`F=g zT^Q*-+2l8;4mJ~vhdBCjc*+SB`el?e08?!jwjwOwHHK%sD!G|e+_?lMHf&8fbjt*l zzJ8Esj4S!F+)xzTBn?~n@woZ#Aj(MYsk?&c_R_uiy3J1N)aef@8HniPm76sJV+CfSlibYquqQ8M2%fSUJLZ<$9t zdtoah;@AU)FGfC63Pfcn(0IJ~ZRN#Y-nT4p;5C#wy^~*vsKxC&UWr&|`p`OEb;qm% zlHXU>(_YqF-8*;*|0LN&=h8Bqgx<`+>Hu$t<+&hpf3ijGwi)2q4y&|*xw>G>6|S$I zUia9vAv>SY(d6R3aBco0*z6zL`iHR@Dt+pw)2n-HcGlaZ)3hnjUYCU@#D1wNba?WC zX)mPY;QyD1E`;;3(;+r%)R^}O6HvU>Q>;fPDPd)D>h7O(;;z0%^~Bt;hO=~E>cLJO zLNdv|9Hlcn6<4i;oLg8g&LlNcU?UU5SQFzM`2-4eD(SXY!jPO@=gmF^9BiWz5_p|6 zSaa#CZ{i$#(K6O;Ux86x#Hl8p)h)u}M`k@S-MPQqCN1jyI>==9Dvcw^+JgG(?VuBx zBfa`JT{pF@yHV}buG>FnUmWA=dAOmZ%+9@_c|C_@BZ6m|X}8-%ly`cdyJz%3{bsgC zGm74br85ZfK|7j)exJh&jC|hO!XVZ20eqRlo=C=DZ34BnmOqeg?s+!$BgPPgl1#tx zvOQ7L1ktd;e_QWa$Jfj9*6lzo@lBeX)qWvu?OD3w=U>pE@{)Z?f7mLibO(7arkB)a zidOF{hx+4B)xT?fW7OMqb}+kZP4}&~GFP{cneGK1Io8zvg|zP*4P^)X4~huN8W}Z8fgl>l=Z;M3NI@uEW7vb7ZMrvGmX& zF*&kM3-9B@r;$x1E*VVxNzhJP%qO3#FlEohqCvwHFL}h%O8;u2kS<59uTE6CO^MZW z)QxM&KB-6NZ~L4al#keqovRPssa{lW`OIdfgsQ<4WtosdMhk?k$}6_bG*(g<$<$K%m!rso1R^6TP<(6dFf6k71%0Sjx%(~eNcT^h5^~u z>jw5_Cp(detOmEkIZIh<#q;!EQgY81783yyk|JC(Fz|*6JTN8_c2$ttzX=YP#YDhdxTX`?@a}_%C<;;C9*>qTC88?xY9FLWilCZ`%TCe z`D)^joj6NX*?Vqq`ShjPdjt@ijsa9$ZGc)1_T|ej zj6oauX4m6!`f{6dx&~|*)5VK6%c4NGlstX8pPf&FC!sL+K_cz6eO1PmQaf_=o(W{p zTq_&CTooi<6=r{9@GaUWL5Sq*JrsL0+7j5U1ilB-K1sN}VA=zBe9x;Bwt9$az}>f)-R3%pjs2 zZDb23W^EWXuU0qSvX5cQYSjdnSt&YGS|!+kHh8Kwpo@J7wol;BEK$RWDNLa+P7Rc2#wUR^DexKF_z2ZeLl_&)MRcP>4 z>CkPu&o{>>HyywK5X#s9L0*hKF6O{DE- zIsBP6M|yT**C^@}ng6lMt6d+H_?nvyYpEq^nHzd_B7O{`)w#=3y-^L90rbPp!GSuE zE7y2Zka#=&p~B?at?$qs5MLwY=EQZO2oG(~z+-40HpyXn|Ykp2{ktKV{&1rC#@VjKrCp=uO)^zO~rQWB@*ctVqdFa!bm>#W}I+FSluw}pVvwhq3>g zVdWFEM^g^5_&b=G#WY!a7$UfrvO6IsZljy$6dx%J_??y43{hF)`_#o>QPyYySo6AF zpv~hwmD#{So_*)Xoe8Xx?h!^q_AWhR6ikRWt5=%YdO|He?w?6c!N@4>Mf|}q(IcdY zcijAled=0@Lhfhs`QH>qF>f%`wTet3J>h>(Txizzxw78Mj!JY~^d_&5Mq#)w)UB~> z63XmJR3GYCg(X(Pemxe>T6XwXsmVOlWDmKly7=~l(%$Vcg*rGMG}dQF6)MrN&4rnK z+5=s zuiib6n1-|WOhx_y#5I0Sy)SI!rWl9HC&sfz`JcC91Vsq7B1(^GWPS`z$YWAqy{%IN z56?l(+n+$r5(ZJW9Wf`uxY38@Gp6W;=|Z*~`xce{_+l)k8Yi`U3 zTI*9m4qA_s;7`!ZehMc|0+2k7v}hv}ew5d!{68TYOoeGt0v-2yzUh2fla(WN^oKBB zYH|I?=^DlxF{*pcmr3qS6hmdaiN%GtqGcj|bT2sbZL!CxTcn<|QsQR|UMZ-Vctcjv z4E6m$IF?y*w$ik0?*m!!w09eZ{Nhh3#k}OWopHXXZ-_H4$sv3psLW{OC;JS__%U9a zF`8arX6MKZ>NS19e%%^5LA89CDJRMf!G1K=b20t@-c)RstsP_dHu==1&JKx$gMVR- zB?Z73J&0r9Si%jHGjNdO3@C!X);l@Brykc1l-)wQU81(UvvMER8kV_CZi*S=XXF6I z@Fl=j^68DTVvOm8DCgN;l-yPtP{TVEn26dO_j8npcH_?$qYZza*qjMga^sB|Tk1DI zfIkJVVw910iN{zYQOVtYT&>j7>#{M|M|Ez}SA}=6erVS&Y}X4z+`&lg zg-55-2ky^HbkUMLDbr%_f9Qfmf*0W5%XOE?NtfLc(K&sG2C&@Y-u*JYu{VtRIqzzB z*#J0;aF3>^qU%A^6>-~?FB(JJGl!9?e*bo3D?-f=0+XcE&cJAaOv}-)=$-h&B7bYg z5<_^SKksDdzG!z4lrfeL(cT|F?EJ`w7Cr9AYnOEs1~F+XAhxZ_*qSn8)ek7g=6ucI z+1wtxR1Z9npd&iujQ~EuuWsmOi~#kX?-J;yrwxr~3ciUDS*wffXpD!&Hs#gL$%PrBRP~7x8Gn%@TJ=BXLC>bBAD6TN++~h?*{NakDH6>cm6=3}R zYOyrkFZ79RvHQ;a2wkVrjWPacpRc?f2K^ulQ0Y$WpD+aof77|0rtCw0LUr^zl7iiN>z=p_T|Rq^o$!;q};bvz=z3C{hnrr`>Xw)*SVpR z>Z^ahO_5wJXv#F!dQ6Vth_!8=HPKJwI>iCX8LC0TPrpjiZZqceP@l+)X~;QJL_CT8 zOX2HL)Ur^pUeUlPoyLQgE`c?;6Djb$J0X|4ruBV3K98gZuHB*$w^nRTag$W>>HU-+ z?dQ9T{VpQiG5>fePFlhQ@uhu;&l`G^(hT59_>><4HZw8Vh_@c5@u8kpqYlu_fj1?^ z*K!Lkh$e2(QyzB8WqP=OtU_23-Z$N82G`>f!UV_`?qV|)%mG^oh%DsDC&(;pASXdG zxixc&Y$p~O^zt7pq@Uu1`>i)vC1W*CAHS4hxE-r79J8?>lR5X{8=>q0JgKA0?5}V3 zYoReZ+5Z*sIY%>2pFsHQ7rpF%r-%Dru@wKQhx;+OiD8oSs#dHxsC^#7B@C8=pE zW1C|5v6aa7%>_9~MG_cT30pu`Er85G30d_bl;>&8Xr&wk(!jPmx+|Bdo+r6poSX!s z-#`F%|CZCLiQSG(y(Hj>`*u%~5&nS--sQf$=i9!|c6;5w&hZCh_#=wHb`ya=Z4g@% z^1?u~_ZQy|=FJfY{q=?lU+ioqT9L1V%xFTs=a!4aL2}@ni0&P60F*xyUxenc3%XrbuDZ-+9QMUnh`TQ2?1jfHkjg! zh+?e$2txV;O|?G^^gYH$D8zI0J1S0`-ptjdWb>+=`1(teqQrb<8T%1aOvT09av59+ z>R}Vim8B7$iUKrVA{p75NF2qcX@3Ni6gA5M^*s-mbb)foshs6z!*?=E%E`#Iv)TQd zrSch0M@NY|wX&jtX`~5DCx&PrdW_`Qq*2Uk{kTi35pI#1+FlzfUDWgy(zmC(csKno6b(r3sTaf;Ojx7F4e$ad4N7+7{t+*Sy zYH5x@K09YMfs(Yars>lf>r)+YXdY88E#8cfMH@i>WILe$7|U8l>To*kXN?a zW{~sDMa&~#5W;%MKG0?9n#IEmjLe*~6%ck#{jKhHe`~bDg*YHP*AC*U)z-u9l?@Xa zuWzwklps_T`ETTqCW|t4P7f;*YbZt*2O$e`5ZBTXUQ=s7ntQH0J!6?OZ>a(vvGER< zVt1(82E}~vh@uyN;z`giT*no4oyBX1b~a1G4^T%~yOPc)K0$fQLvNVwKdeE(>Q77vTOnm$b~*w%< z_+ks1tJvNUigO1GC6zE##Zps=iuPmh<L55>}}>X82w2ARDy>w!dKL&z$k` zH5ko;*3?`@-JnlJ#-5zxydd*IfRz-)4|}_CPhTA>Idmkx&Zv>{p*)L4c+cBWcH=fp zK^Vo%beOFt#wBgIXrn%HzB zih8=w2o+Yfze_pta*XMJvbANI`JIt*?pA@Qo)5M{-TrX}X99B(6 z2+XNI_bW0b$=Y2~$WL4^zU6?F-qWERMkToXCOPz@lw`XSFoDRXs+d%4?)~=C=H2H0 z{c+y14YVQ38E&?rKJIOWIY0Z?5w|l{AqIYdsmvH^9t)4kO-~$&8Eb3V&_Ji(2H2Ua z+CU6)(pp0SK8A&7X*LL+1%-vi>P4Yvgge@W+-Cm1kX)hR>W#W^b@lOXKJ)Np&Q*pR z-ND&dblQC~o`3&MIhht(JDZ+81T^1t9Q6bsau|17qsY-^w2Cr&6ZBqYKtIFTZs%uu zgi{f}UpK*9tD|{GeWljxUer3Pm{j0aZ&1Zm+bpKSbE0PK9qzzK=&9r79>t1<@D;kV>; z@Np!j*cNFvOIA|7lTlRSeAKX`*)IhI?+M}H?H~h{YNKJKA7GRw@@sXGmDcy zf%h0sCv`kMo(i!dK@HBOK_xzWd3JeuI6V^^C6E)$hoZr!a zBh^C!pi1fF?z(J(YJE33WTqR^VH9+A_;P}&9ftS%%vkLXdvH}&3RE595*8Vip4L~c zG3=^iq#af|&EdiQCD2!;Q`C{qIRvlr=g>w|0|giM?8xoZ<2*HVoUHPx3NhOu`H=AZ z%hwgCE#O=#Sa62Y1;AEq08QK+XmGnC2825hr{Lv9iJQz3iE5i9IHD)SgU|2)9OZJ8#j7G4(qWy$_$ zOI&_O1dQ(W=UaT~tYlvU8);%mRO{qw;!06*pf)S6Qo#G8n*+Y%x?gM955GITG zXC=T?wMY=ch%}?vfrUcRH{Ezv^ADW{RsQQg$r}WXIfz(4EeGp|2KIlpAp9TLLO(4> z)WgB%Cr;huf5#R|Qdw78kV4VL1m1_)CGr?75Jz-16X@IZ=#J4rIZ!&(NH$G^Pm>9R zO$(A@M|&an3!v93QXQl8y#e_sRW^5J>T@(v!K<(LeqQsgx#~=)`S$w)-T_9tKN-~L zd@$gN;rp=#v<^rH zGbe))T(k`oNV_G1B>+I1De~foBH|A}sLyOhVNDe5qp`tw#Ci`j&c9TC( zjXVAsYocdkkB#UOjk4Nl>Mr+no>QJ?^xUzh80iedVoLdr_jwq`utvs|`4K5@Gm{I~ z)#}wmyu_))o{Y-dz8J}lQ>bXl-1+#?@HF_4oNwS!p=h76xWYv4aTTQ}*4?sK5{2dF>364G6K@%cuD2QzWUKvPQp_lBE=u7SU;srVvT8j)S6J zzE<3CX$iZus3c8#u|gG2gH+Wg$2|$uJ_XqS1)k34EneUa% zbYd_z7@?WQ;IK_Lcbw|2tiv;y>g5rmjrwS7=N@z~NvV(;&aT0H;^mD5liSK38W!?* zV!!yF*n6ra$=cO%rG?I#u;$FNdM3ZGf7gM(4w$MDC~w4PnOkzNuTZ=ZDy+Eeo8Qak zmkbR}UBe9RyB;!*>WM~$Re z-^jDQypK%Ve%RmtnUz@0 z>&?LUL*f93`0oxR+yC(n@IN2O{}+Yx^DL74Iivq|9Vk+kwMS+|@J+C(KL|8y2nMDs z5&)5EPMidiD~nK|P*PmLQ+n*N%>b13FO_w`S$!iz#FoZ#+4xD2Ll-xsQ;fK2RB{}?KKUSKHPNxg78PFaH|&3y zCR}Zea}It?6RQ8M$AO*5tBP1E zQl)}2MieIMF2@9$07w|gRykCD1GCXU2}cVD`%AmsZyXQ=V3v%G)gUo4+&bl!5UKNMVY@xCG2TZZpMqCR2m91 zhnuBl`~KdA{!)Lqs6t_4Z98ErO)ud-c#>TWHQMs-?TW|ud=5mIhNd3#DZ#Ro1l5FU zXUU)tQQab)#gn5K=B4jAy>NPUUZNn9KZgwgyQQ2@O^nShQ5aS}be^icW|#`&xd8k0 z`m6o?DshO7TUpt!;C|s6)?IG7?X$Mmm9YPUzpSMR90HCBuGnE-5Gn!AX=L32^D3$% zV9U$FM5&}KP#Q2%%ajZi(&3mSv+3n#hS6W}&Gq|jyshA_PKrNJwmVXkFBVsTtpb*a zL~a?SxHq=wg3ky%jglTeFe$~pGgMWNQ|y8^0EXFRI_+=G!VNa-n_MG4_@wd=GBNuM zV^HN4*N8j}KZ`K|{5#y)jHchSjc#Yp;o&0Id~o|?awhl5SEEJJnI-}{SQzCYYFYwk zt}oG7h{*5nf%VGU>B!0FJeeS|0G)<2sx}0QOfSxynSW$0m`p4HbddDG??3Mr*)tsj zct4&UqyM%9ng4G}@PCwFlA5$Kjw;I6)r0`N?ET0uAi+I^FgTDrNg1C25ds4;q!}2a zkQWJN=YWtr>~?R8J>%UzQ8YRo3st3}WN37?)*dR5WRS0jx+WG< zDO|E`x48lVXH&d3t1WqKw(;R4D!s;MTZJtiS&v%JLwuJ0r53rrd|fgf5*CF zvRWq}R}FB;ch}2Zda_^3o&c|YuJtJUWg*(VPlvn*8bvqj?H^Sx)ogR@oJ}&n!j~Xq za6C!54u4WfW=qehrf~BcF^%qMK!P*+Vdy^jS{j_eug~UXVf0!tOqlpV`CM{)(te~< zqMBlY+3>fH>_pC{gnT;~J@vEFf}WzQ0GN3$$Taqe$XbuH1^Y});UA0{2J0Q)3Cx#Y z&nzY|6Z>5P%d-)9f0CrhXS_PxhoCBh9$Fff zbWIJyVgY4E5%aP%VZ{dVcA(gi4%C~&(r9Q#8>SCOt1-!Wpx zsWmpa2Lz*X(|{qd#eu{HC)Yh-P`#Z5$$t#fAtu|(VFz$RqhBSzzvbctGQE9o-;}3Z zW2X5+z0m2BqqsexvQ-d(;yoXeLqj+sQ=?)2mUw0Crs|lDMK(@IlCaeZ$ zuL@R;4Y5UO;I`NzIdg~cQk$FCFl{q(Z!^QjJU2LuKCEf!H> zeX{Zj_S2;^kIlkqec^vXdc-a)66 zOBGI2;zg9gTYgWvTaGxX**DGRDysUp24MC6XHdj3e&VeAe$4L(SWMzH% z=~q|u+;y|Z;a2=-OywdntC{{%Mt{w+Da%c(FaI#9{pG4FgZ>yu*d9?5bWCEiCwfVT~MvI%u|>d{V*S4>#%6TCk_M$T$@6W_uvN~ zW7~E(gvfU;G?GbOv+xJBvxp8w;6xrkfeuB8LnVyN1uY*_H(!ynP4`5w5kY$PJc!Jz zz8?WuwgW-iF;y5{3q17nF9c*XG0rE<6TrreF|pZgT->C)c<3W^p>)rl+!FT_6&c*^ zPcLCcu^q!paTSVD6R{!H7x=0||0GF;d?XB0oV{C_m?~{xOB46pzB;S&EGy^P_0ptp zh<~UZ+v9LST^JH#dLB@}idXQGn5y!mEDYiF#bSK6sA<(aJ`sH5RGUs|`7=_rn38Gg zcDa=l!|ZzAN&6vOKx3&g<4?4zWTT(_BhD>aungx$gK~5UO zdY@ug7zf^&r%wSviJNs*=EP(QuhBq?Hof@dpW-S5O5XxU|Gac*B@zt}H)$X4z1B;33nu&p~Dg`+;Otmz-w? z=NNwjnw?mSnP@oP@JO~f3L0&=`!Hc8p&)>w%i*olr_4dPYsn+5qFydmgvLxAOba<3 zfq#CR8FYO6H;8-CkGlRDdT2t1PiD2wgh}YJjSfDHLDB<}UeW`zM#2L%gQO#5nUdJ- zh+`NVX=^|mNp84(oYbIraWGrYqrkdnZfxtZUC1e#}Q)k zh>4c+;IyS_guWUopm>#YiM!k&C{8&JYOFJ;fJIlgcus&+E_xW1R%rL>z`!zu!nI3c z)^cbrPa{@3i7kZ&Eq^uyC^GOa6Gx+Ip^DO%naNQ2>al8BhF~`>eKe!KGCqBZT&us` zgt+t}(yCfhmyOpJche+siFQ2Bc(l;!G>IFGswIA`C2O=n=1XSP{cZ4aE~(U}TzsJb z1?jr-S263Mg9c+%c~g^%d5gaO-LVwtF`;TCiM*5Xl}hTost6>7IMKWlv1kPcVYCB_ zSy*J2S}@WrKyD>*#3bHCokfbgO{U`^7UaSqQaen{&T(A99vK~0L5JpwGW}Tlx*PUk zs4YoMc7zz$AiTv4gUx>OO!2_ex4+ig*E6Tz5$&~qCua^gWWAI&FmMggN?b9lfntbr zBkaC(;1Uqnj6{|(O3)zV2Y#GF@u+0)j!rV!8nTOW$DC~5cffP^3-Bx2(TmD2;Me3` z&zPclui=UW@1`JSsC60oQsf8}K4=SkZ?-#?G41x7=V<-jpDKsQRJ$n)dPz&}prhS|;6M#NaLaFuh^H7MJjtV&+!bFCR$_;kd=ni5p2)e=+AdO! zZ9~#7`F^c5unM4mB!!zR@(b+}PQfQAWEj7-N>p5laVnk#6-nXU-ZE z2({`f;eKMv`*@66eGZ7yAOm;xP{W)mYX}a7JZ|*l>XO@Jej5W6PSo*T5O>xzj$gma zrwof=-$QnO-{ghoEv6vc>Glb&otuRavOrvPLB0Pj4^>D>u0o~*rM}n)BB#~obM>^$ z?NL`Wprw}>qsrW8H4i)M=Lp%?5RC~)z$jGzl=5=OlzSu==@o_AR%hXt)r&TH*$8@F z_!98>3Pbvc8U)B-sfYFG&xGiYp4po`!`FXs%k9Y5yC%`-kU^_kKI)@=`%+M)34r0? z=tWoI$l~D1K}JGCvFDH-YK+yvMj0<|8+`XH$vG{%SvAkH3qn*Hl!LE^o}_9VrV_N+ zj&76WM7_E}&*(lhX%%Fx7-p$rXX%BYaYg8zz3+U%|HpHVeDt=<>IcqQ4*TDY1^y3! z&i~(>?tcb!R%!l+6MpeKXVhfN@eMFR=F_<&KF z%(P#M)>Z9uT1|GP7FE!6xw#CG1V*1U8qY;)Ro=R5R_9tNL{ih9*QR7?X*~kn_y=9> zna)?M*RAf^UzYF2zvOc9aVUDdF*iD{dj?-B{=(zb?g>Ni^$jz9vO|1D`~O}bhvIYX z3Gg3#=q`Mn2$;SNe&}-9q4uFw*r4g@Hod|I+opP%3b?+-*IcEBy>5Z$H`|l@AnE_y zKqw@HkQybDO=nR{lTH~T6BZ?G2jNW2ixnP9gDQhN6aNGw8V6!GJUBKyG# z%(P1g8ponI7;2HyrR_rfy2pvDABdhdeu&E1d~8E=PCHXl`otnQ*^EeJywDQCG^noG}U+oq)Kl^uK)p!_74U!g}s{M;jLe5=K2_eZ&furTM)Pf!a@t1IL66Y7g*q)99}0twBxm7}NnPWTN$~A~BG2@#x*J{5xUO z_X2<2-HxGlZoL#tdJh!0J@%hwF*b7~ZIx6DG(ay<{{Cfs z{dd}=mWSSg>kweL_=pFjF90CfCwV2}rbKe=Mo%S+xUdVm=%vLv3u`E+v?!~M1_i+j zYbdr9rxbt)<|rc3ffOwrUYTnG-lWjeqQrb-RuYl|g;0@7JHKuX8IZ`Pfr1Xzr}OX1 z0b-MzQKoTmOChyo>Ord35*Fv@v0tl#!6~eAaKjWu5|vIS(^MDH2l)1piXL5UxL>Xd7@7E zVZtwrwU3@C3SPN(!dI)j*MQRi26ByN%McT%WS=ud=Dmv_B_>6A{5+C++^Pnl5J4PXhc5m2Nt)|Ov$XAY@!1=Y(vfS$`% z2%IVvZ-2p`q|ALpR4d&guvK^ff0r0RU#TPJ=~uY0-uFXisI-MtC$(-P+`-$`V5k$_ zx&|qBYF5B4G_yDUHfgj_ssnjOjt+-_5sxXMC>2_UHfJw&A>Jgxt|T={acUw~oK-6d z)&~BUM}xhYDcfQ~>0-@RrF_cPrdzZ}vQl(#KYf&pWAAs!%lfP#aOv z6X6%sT-umKMCCe1tMi1XB;u?W4j(w@RujX_X+A2{P<(XRW|3i2uUmv`v|Mr{o`hGF zMa3(2?C97^vXTFfSVqG0`l>x<#UMp0X8xM-2=V)(jY}Y zCr#BUQ)4opvx2QRS$wbh#@tyvcm5C(;q8b|zK!93ul+YbRcWo_0o^NsfzQ-d#6D7d zV8cR-;pCLT=akk<`{5y)<+}VKo5CEovt~~J6eO7MB6#SOtYiZ}Ii5!MyZix>w_sx9X2(9Sn7md4>9>Uh2Eh zpY-_}a96+H{r)?6KpH;hv=fv}qws^Nv8TDJG#s4A&|yNrls4O-%FV6)$bJUNhcKOH zWs*hSx&{5Q91Akg=x1r26T^70H1w!Y+P~fN^n7nyu4ryq$o*xP>OjfI72Xq4h+36z zb|lCwtBl&YSub+M7riUf`9;Hie$NL5UQG`LuZH!&!O^;A0;8@E|EnV=koxF!$Qa1b z1K7S34?5(jNlYP4#`c2JFqiuj$kzDY)2HJ+H#^vHvi{HpvH(MBBOvd+K@xlaTGm(9 zCZuL0a#D~^E>xw>WVoSXdz2M^+{%1bn%kudoV>z)u$3I=fhb#}kXoiCy=LeFQ}&`V zK(&w0-YM~2z^M)?a>E?w%}%r|#n_ComBI56S-k+M(r(|26feI*yUk%wlU*VdMAYPc#?r3P=Uv$<@urX;@))2w8`W0cZ* zx1Wb1#!Jp!-h)$vBvZ(&p1XdzoKf4tq%Zyoi_kGVc8RL>isTtclM~^T7&&>O11pxD zN1KBnGh&>K5Gfc%-<|>7=b{ZBG;Lr5=g&_+!N0iLuM(Woc~B&f#v6?a#k;Q>&wCZV z6rA)Ba1H9qHsDY>PD(1o8x<_Rfz{HcwI?{eiioH~y-Qr9BV)tOJdWq|z_Oo=FwB|z z_@{GKuHbO>rhbR{I1rD2=|%*o6-8Rp&GC4njjCPoI`!>`K1 z-wu+O)!sG8c~{_NNhuR(Tv=L#Q{y8G4t~CSVqsgaudn^pq9}Bv!dO!tIx!W2XsSxg zi8{#Nmfo&IN`7{0O{n?pH~B66F*JqysU9Eu)gG8Mj~H{2uA^#2+5mepNGPB5K=tg3 zfemqnQ`KLZIq{P`{!JVis?%0j_r|#h!J5;-b2fKSj1s@8`Twx?j?b0<+uLU+=~x}x zw$ZU|+s2M<+h)hM?R0G0ww+AA=gewYCYKK3sco+)G;+ZanT5qX_4_(DA|&Y*ra+PaFDvkuGC)yPaBK&0DfObP2P*fUH~HUb4i-Hh?U> z$Y$I1)}RWZA8C!$@EVtjjnO8n4~0d&0Q_W(%>omR0O9U++WW2WiglXdaQyb=^s~A{ z5qf;!BMtHf+!NYh4*%TqNk4N=h7#z2=Dzr~FoF!HD(^9C1SNoJPp~4xFDCUab#^cm z^q7^@(BIT{B%|^{!XMZO9m80*!f53AOpd{I@7t6nnLyP<>quc*nA8^k&FV zw*ewej6K{%7K;vFI_pE7YfcZpzCdQv#&Y{ePP8~&F;b^Oxgmd@eR>1FGaF<(=vV7d z!qxi`cM(_owjnhnX2Hj8URA3Vpq>Q{aS+VGaE!6hljz%y#g!=pTcIil%z6lze!>!%^ zu89b*D&JTU5uIS~Sbe^^#3a!d;$+>JPrU1Zqtwvk63 z{vYJ4cp$aXO7KUqmr{H?O%?s0WJ5Ms(SqyNgx(_#P(Dk;$%D!-?Qz-N6jQ%{`ztQy z(a^PD>q~`g&r=XlH~07VBP8fll>oI74VWXhZfv z(S^`<&DtP-J3>O8C`c7h(PvZ%;Z*i2w1FMXHnzk9<}0~>EqckVtnxBI{2?fOyi!-> zMyVw$3%xkZbxWpIY-TPJ5c*wT4()7c;b*r$p&qewo{*#!r>?zdU9!um)>u{VXuxm5 zu4w-}RXH1WVAF4IUNW{N#1N7-kOt>S^*YDFe!?mP>0&R@0xdeTfiC%^2mGf&@kGaY z6Fl`9Y<^CJ+Q1Wm3flaQK6Y>=1Q;|T_*G}AamFwMk8j7`kQj(_HuSg3t%HN;5o z7y#N@bxZQy4)HXC73Wzl zyWr5Io-~A}zcxM&h<ZE5MIW!%3{1Ps32+Y``rq(i3DbiPmzKiQY{>&YGi4TFx5m z)I>%}^)5<}Ml}}1_IHZkUl%HmYud>R*&A0POIyqNp=wYx^Lwr(FuL2DXT+hKG4fnh zIsR$`jLu-mV(5AY)p19IYPasr~Mc%&2p2pod|bK$ELCf zL&4VY!H%5aQ7LWQJ;qe@TqMp1nEgvq)8Bp&UA?8R(mX<&eZ=k=6Yp?EbL}O$Pj(z$ zIpv+*$SW+tP>+4t7qLsexJw{=xQ2&i&#SL2$=BcbrT?EELp#C%`q&^9pmg|&r*^nNZZj5lkXME-tz zRt1fd`=$MqpLZ9Hz*=EtIOXOtd6!vz@v--U(!*GUG7yJMPisgRO;3vAU-09$AW(X2 zm|jSgdd*%H1IGF&&)!_EX$)tr0uwFTW0ih!6n2S0cHMetqpqyOamm)L(zPR-S1;6R zo+>lfW~lB3P_J@0*`;0;Z+fCz8ZAUSc*usl%(USECY=xLQ}An?P*4X6vTg4%`=)6W z23kXu0Fu?Fx{O(~uyP9TBx}e(46@D58na26O@_k26Pl{feeU;8-w^$}iXwA6c_1b7 zJ%kwj`1@w@bV;f}vh&h~5G5GH{BH+6Cz$vn)9H5IAIZmP5rSHb+{{quN*v!fGj)f% zelF-EpXe(yE{PC(6uC)9b0A%+U?2cr#NQD*H^(3wYCm))#9Nm^)`oEQ&Hp<0GgK@W z^yE_#l?3`Y+o&gHAKy)zq>H!|HIF}vUrh6kMZIp^GV<9bHsJi=lf?l3?YvzKy53*Jx?1 zQ~bkAo`J{>G-E-9-+v(Zr~7&mCq4)8nzZAbCSK5{r6JzPdjfr#<%JpS!sGRXFmA3S zgQc*>7nxpVWjb^pPG0fy`T(W&)-%_k%jSY3ncweJ1&=VdCal)6NSUWD+RFBO!7^du z5;J5B2!a&hC8{IFjI831`8MvpNl|-5CrV+WYnCTJSzS_*dVbfU9fwM(oq2W!aK&2L_rHZyiyp^rCnDx+g66qYrN_m5+LA zy>OS?*A1KU6SoW73?3!zSt2ZkZC^5>56k$lF+-1TIlgn$(AzP?%7bX0Lv@P^v>`!KO z7)CdIv}%r?Q9SCE3iC>ODzN4sK}qxu4A993Hz^J!EttzF6nwmcm`@Dk&}c2^xoRjA zo06l~QW7)_a`9xT?|1!!###*Yf2q>Im|Lp#LjW{V=S=ThE%c?@U1IZlKRuKME+pQR zpg@qU%_K=m1NX`l?}<@mKmpw#JNV|Xh+3>*sktjZH-Ri&U)E(lE6&*N@o`w-fA@XfsgF(eGg zh#gw^mxI(ys!?GglbbrmZH7?gCoL^2MJW}pd%FKxiw{H?-7kZf0 zh^E&nrd#6@;LsRn*j6Y~q?u802HumdrWgntcITSC*!F>HkZWLZT=WxVGAa7}3$$$D z(j}|-rjv3(|62^u{YN_K{}lr&=Eg4n*ScAv_CF5n!CN$iYjmUG;l3s0C?$A_bn?gu z`$YWY=#tm|Sk3JqS#=vE^_st`rS8E~&2}rpNH@!b3?p~IpYtP+kZZMmfr!6#-APSl zu5ddPb$fp;gVG0%uutxI!hq2Zn9cXP$`6qQ%Oo?887I>w1Cnu*Va8CB%c++fwU*)* z=;J4CMtUd@$DE??m3?oOn`@`jW{|5u3(;tVik)sg3|`bIgY|LXx>-&xY3mJJ8FDeN z$;c)x!E&JyeI)5ZL*}1ndUiZF^Jf4*INq#pgczX59+uHkm>ZR1gfpi-M(g?#uACXy zS6iHPtAt2|?VND{H%30Doy?H@&5KeaQ9m(M5D2o2TrLr7R*FAPr{7zOO}16ZB}AXR z^)2bmXB*YZA*$r$zJ;zZ-{U%Mebk4(V_Buk1U=!Mk5r7~(M{lRaO?8q?;Ue~N^B@L z6>MAJ$r%#Ukc{)WU&d1_{zYCONv)yYdGkO5lilaitdh{bk|rtOB|%9VRa~2=oAn`H zq>L_o)F3ALcz15y{ym$wsZoqm*o}@Hls7{uJPxUmSl4kIoF^TaRox{n#RVI9Hs^qj z<7gu@%{?253c$i82v=m6-jveIj~3}!x|(+O`RnrQweL@x4MYeUFCmxeAcVdbtW%#D zY<{3StYP2`=3mGtkQvBBkR9J#3hvaUA5$IWg>ncYbFVNepW+Dmo&3!Y=7u1o)Rb6-?h*0CjcBGKlGup?mHZw z|0}G={J#+n|C|~Y7y37KoTYT8u%`0sGcbq*3ka$e#hw5tz*vw0wzYw!keyEf5qve2 zanJl~_|^|sG?^(rQxY#nb{gC~E3IfwhVy0P=-9!r&7(qUI1rEEcKqo@^I~PA-Xr?+ zVVu|FIW&NMr;T(suA4^A zXp>=^dX+}bu*D{CQk9{m=dEWD=Qh++1;(As3kAEP5ihisfmv}uk31u?Jy;vcLcO$B zDT;zYN(j}NGaDTr&|*&~aXHL)jkt17VxSvd9K`QSDSS<|LsExzIRYn)n=dCm@g$55 z55tOu>!^9l7rxlTOt>eF0m*wJGQ|=(`kc#t4yrStPVOJMag=4k7VE7Y9K(#xxGC-Z z3*mzkKjzIJHR@$!axXMKG`ZY45orn$;ja>SE6StggH5v*>>p2;TUg^iuKY0>wY!Nt zdaYeE*7DqYO6|)hPU(cJcj+B;f`c2}(={jaYnw>bh^{;OgN5Wf`i=KMK~VCe-7M$moaYhZx~7aDrjE<25}sp%@&DHa4pL zHF%DKly8xW9JApYCK)oM)|JoMC>AYt4PU3U$}u?CnlI&NV~$jGb7Z|5fA+b72I?u$ z6tX4Vcn%CkWkw4V$0+CuI)<%e?bav)qOmE}z_cM0mTs*2?}>G^;J4E z$i7fsl{z2s6c*nDbv|+Wt8==~cn9(cjK0i`j=|9nf+FbRJ|1w6Gy?^nkx6-ol*E}s z!uOB1cyrlEBgZ9E>0%WLtEm|B0$C~sN)QdzN&Y6)z>>&NFz8d-X@oI7_FPpc94QRl zNq8B-bCD&b*EvXN%bn(Bsh-Aj-=dvJ{h?J7yfPfHhIwK*Wv%myY=_N{Q3Uj#?=`H| zj5sETS{;QAvx_I5?ExdOyvM%*uVzGR1qdJOC4&7H7Nnm2Q9XBU!Q6s_x$(r@#0q6z2-y_{gHo$i*v7Rv@35;oI?1vhbkj#?f;oxt`0i^6F>p-xbbh26B z7|xBZ%4DgWIcA+@a*VyNnvnqw%0HcCe}KQqK3YvNIZsMMP!u40CWmCQJ#`#qK0RgM zab9Iy$9#Er{m`TPyzK9k>$uiS6;2eE@;?oL4i7X$6!9$Jxb!;|gcspPzaxmYLv4eX z7IPIRCdt%e%EE&|E&3@bAkim|*Ti?TjT}?Vow|J^jz@Wo?7>B|gMrsnKM2ph4zJEN z#xzy?8VNpi*Os7j-XG(7Spgrjn+bn(WB7Rw9D%0ZF|bR<(-EoqJO_$eUFRA#D2!TN z|6Cf#M%+Px?{eH`fgMRzREoI%2eM_2dhFN?&6X79tc9<}l9?5C#!-^RkpvfmrNYpp zzhQz`Na}lA=0`=O0lpDtElmdu>9G@gUIeA*zk2APUBq>2cXbCaSP(v%q(fn1d znp@KQ5>l)J?pn27dWU^Kep)KwP%zpV0 zGX9kPn8Yi#nE6er#dMM!&7PpAP(fwY?08usPZ62Si85qru(Y;;G_!&H9WlZ za$%BZou^`}NEs>RORLO-a=AYw=>`yKlhk;aKDOpADqQP~If2dPwDTUhB8a1SZZVSvZjytTISP**VMz zH{6huU>DM0DoZmV2}UcZUZXO_07%l59#Z)}CStA^q(%L>RSd$I`~<4BSUE`&Pdo%z zbOR8gjlwbYbp7Jd@cDBC){RN`(v_cA%PGW~-~7FbnW;uU@Q6ElNjmtkY-}e?C^1jB ztBXXWh`=*i@6VYV$&}x66D(>w3{?97O>(9@wkn9B+n7(Xm(FP9i{s7{Ia#EUkRG6? z0c*(tIAX-RWdfa=2$x1^C}8k+&$k(PB3@nJM==-t zD4xunvCxXulTuJ&+gUZ->_WvBXE5O%PSb6OrKujbqFvL#x{Je(tYg$jrL8!>^)N?f2Eh414UxFM-y&;yZ`o@# zbAO~>(B+B&63h^KRSj7K_%T<6iXepVor`MCIaC88+Xa02rhob&z84alX-acc88W;r zE-nU4Vlb0f~yDc5+poEHNP8&G4yvQAM5tv^#yl7E+d6%0&)f!b>3gPqUf~F~?vY;bDnSv2vm;ST8>NT2X)73?CWUOSSdjG!Z;CnGHa7U}{+1=MgqZ~vug_b%;Y9+u={Imj3XU_Ge<&QM z#5|7~A2m=d2)pPD+*Gb}`d<#z2Wm_;p~ISpp^X(gS?3Ni&daPx=2O(ycN)033r%;c zab7q^7Wag0tvrBF1glHh>Y=s&9bB(l%yx&YZBb|e-nP1@kn&q9C36&;ZBm8lIcAc; zC;Tc&@f^j>n7V@2sz`?y;hLvrJy}SETYKG3fZGan-;|-{b0(O zmUoskD*CRZjynDQzLjc)ic3V_*0yj6wOz{9tg|__dc?7<3ui(~*9Abapk=*$x>6rJ z<|kcs>m;tA74-{7Kc8Hs5|=L6=@=?8P`EM$RMT_x&h4@}ZP3Z6q>lTeuWH^h$eKWK zU%?TZ19jHEn!W2UqXg;SJEEadmWZ#P(H)%^_UaE5tFKo2CWp!thcaG&&qWA0Q>14l z{Ka~L$-bxb*YOaF^#UszpIyY1vybb1{Y1fl+f|sv{ozVkj1rw_)m?=|qH^&?ciUjB z%6Qkl29T1_RyL?uMeO-$Ips+jnjKd zHE1|xI?-9(xdSjrbt;qZwW2ZDHcEVi-6{z^tI*HpB^Ff+n$N@Vcib5fUPvdyT1$u< zT%q%6aLp2jNT)1KJ%SCQ71r31EZDquV71qEIpgpxzVDM0(cvL9%J5_}z_2ZFv7;@~ z$I-Grkp$3oYJ8aM+(-zw7zf{^+&c>P|FZs47px&L;EsGQ8qLZv{}j3sa&j1JRq9z| zo((aZoKsYwkt&vXh2O(eM|8v##rp8Ang>#&?2KvR{q;ukvxDD~&7gtQ{Iyt*P{%E# zQe3`H#Po}0!jrXzCv~lJ$shD$=jga;X z0K0Fs?iJ4VL^vTHdjVSL?={>9*%Y4+z|V8pH7wC7C3(-FEO5!U)P^5&F zc5Yvh<)AhHLyMmUax-C>raWO~!@?I5$LwOylqvGwh&+Roa-;_0R({4)|J=pDH=+&u zLx<14tDVOGy2(TO-~T<_92||U|6S%Zs=0Y8EjfKonoTE&z%viy$0FeK`7$Fythpxq zWJT12CiX*!Fpj*4GvNct$8a+V>d)> z^LAUub2VUU+YSD4rvVk|fSMFG^CkzzwDHCtRgvQ{&yV+R`@>Zn>!{(m0-V58#*)tR z0)^&ND`LuW3$1~@dJqlPQ@maGAqPyC^%}+cJ;<;7ew)Qp+0=6)K-g8gy}N3{#_XcH z;c-dht!S~Uu(5k)wYl**I{jLkrmJ{x3-g&1#OJEl!gDJC^}Q#+r-%1+z=!c#5Por2 zRO7uKJZ49?;n54{trqw>Y|;CazY=&k8CDen_Vt&cV7ms7IF=#L1@H=f&hgb7Gr;a^>f@~qP;dlL%WpafySL#r2w>I zMA|%IeS?blS47IOQ4@hOZmYy0I-{x_&#x%bw%`wNe}9qHgfJd_tA*yb9n>i$k-9n}u%qE+kKz5(+_1g`OlSSz>BmtoV{Xd*61)NKD( zj~x?UgXS^m0^aUrI^aBYB_&6&)!#UU;10b9+&>Jb)K`5z_N+KF_9k%G>vJbZ0NIMh ztT))tmGBTxia01dEx!aK%JH3`cQh|qIWAm{9v2o5Zq;5hJb}t2UXS%7PX!=0-3yWr z8Fc|7OtGASh{8c(Mh4xcb&4Vz`0X8T zy+&t7v&d9Rer8_~X8eW%-HgT&>OO1wd-5XEenu=$tsnEr86vXRb{Y=@hrx*F136j* zJ}Mf*6V`*1)?>iBjG-VH!m76`zaM1A)@(Yq{2~CcM!fPZT)-SNsGztvcYB+_<0MVR z3mn9SnRVFNjqtRBOl>aKr;g46{|pK}o2igdVDKhuX1@v9L&4t0*L-(xhDyES*m7qn zoT{4fF1o^_LX43>R^=3QxIfu>PPy&-{i2wipislil@e{-*?z{c%DI3Wqmlv$*H7Z^rnS=@FV&7g11_t zvKySOCbvCHcYwmD*TsY44uwdW$BG~gsrUD@8|)(7q|Fjf6jj78kY@LYN|__HRd%6| zs=invk2j9r)M?LQU0~s0&z@kYZH5u~8@D1Mm6j8-EX1B6FKQ@OrC=%bMis3Wxc=$& zkZM)8oU*7?wlvhROmIe$-OVSJDM>ps>I}-7hTp4YZ_VDs`_C(Y0CKThY<&mu{|2!q^=Dx5q@$QBZG>a3WII=A*G;>?;3%P2aJ z00bXX?Tha-q`IDN1x61=6)%&$NFVq37_lpJVQW*rO1Qma)-87pU01)Wztm@cYt5qd;!kg2Jl4S&*>pzyfDUHb6jw|{dXf?y^A@hTWkR<&o#$h+iQ4xL z2Xa)e9+}$ClTB+7@Dm+B$!ZT9fEEO*t_VEROUXmU4M(f>sTz8pQ3)4Ou13;O#7l|d z+}f>@=4Q=AGx2VzXyih}NO_w+W>a|$qo1@)5nJ_jeGr=B*g+^;C#1C$82JvQ$gXG6 zN=*Cg_DB9FJ3}l>pdLV06Apla@Al+6+zQ zG9GM5KK!v4>Jr&dAuUIrrBzG0nP*gMRr=-UN~M+4%35UHydFPovHHk$c@tBW=h_h} zV`})QpdA_1iw4}Fhr$U+La&^s2Zvydt|3O6h@jyo)w+94VV$UMEm%29rEo#YTw4=0 zg0#Dyv7ZxE#^ppVt=9~Uh-frmtvi4ztUGe@{IqU5=~WcH8i+d)R3EhqkGVZM=CnzD z`jFKTWj#Y;$kLM<>^$p0lJ(-Rzo=oeDBN%?sVpeiUHd(6rktM-sCOr_8Cd5pQYKKk zuPZ(~y0b`#RbEVtdBcUemC|F$gt-9kx+nh%y?T!YpZ5lm>Z5l8{*jtLSJfGqw53N1 zl61pZr^LK!iRE8S#Ce#{le$QAlS%;02CNfPrJXd;rf55K3FD&$*f}moi4VV?U|Ti0 zgx0Ql+xSWo4wy79DwIjZB@^lXmwrMoRJsqk1!i@3<5l3Z7&d>Cwn-1l*io%l#Loe8 zaLkCVO_<+iqXhcSFGJ5tjA`|bfrKIXA;V*fbG|20KHXcbyi~z+G=k{hg&UIr?^J0a zf7N>?BLPpM!28|q9wtD$sWP@lGjZEVu&b1GG;686t0(XwZ|LaO!RvHtI*Hsc^O947 zIFCCzKfttJdGsqK@bKTAkFf%EQx3g;!Kgpb`}F_55Hnfh)U8)rJlmNug?}@!VsQwL z(4BJuo84drTFNf6YXY@Pu9xepLt&a0DRm}Zws){1?e>(iQ(8jbZpqlP^pc)PApZ^W zgfV`t{%3ZMew{A)A;neG`SG<#Zt+T!CG2+Y`gy%r-j1@+9Dzo8O=1QTDMLPLtrlH- zpc!;Y&obC#EgM`7ej7qkxF%M2$0hj6O(|1~M#I7hU^>zqW_TSxKQEqY{((CN-Ckno z5=`6Nb%fnZ6J2alwvE2N@jl66TzNqHoQ6FgRCWTRNB8zv`vgeb!Nqi>+qAGbwB}$c z+#&Ez^FgcWW6CxZ_U&%oYsR6!crVL->4H>xO()&Cc$j(GRCy}HeEMlp>?LPxEggEm zkLdqi>{p;H0tD!MZp$@er?f6*g6|dWP z0wEC1kgLMtL9xSV#L$%%I%i+%|&2%-;opSJYth%Nx zJsGXmdv&%G#!$i&&~^^OEpwDPsy15qwZSgQbxJ*xQ(y;tso3>-nc_uKK%#98Ji$ZY z!P3bXT$f#>nm(1a>zPo{kjN-myZ*ZBOl$lD=(}2Hs*tu@jA(emKHRJ4n*WnOL8tks zoL_KGXtB*$Gu87(0EX)xFwA)4^ z*J4HR(y39JjytMfx^c-(GrLbtQTzf!Ypq<%Tf4mduNQ8iVT)o~2vB?B-^!VJ4nru* zH!?e~2^jmHp8&a@Mx>Uw1<3Vz4Gl#J12Yy+mf-qPG&z-T9E{6+YGN;@#pryuoft=^ zlKH1=RBRU%U01N1YgWaL6LmjZ4e(aM$yOiiGpqVLr%~8dJY)Be<|&K)Gdy*|QqDcF z)-4rvJ&iY#(O#_I(DM4gs_>-UdvCx8m~4vV*Wg(35M+Z)9!*NFPikXK%v^+cUmg6a z0_?(>d-_zqh$Wk4r9D*RqKr(QwhMxK`;%cZuRift;^Ajx;DbYUj&1>DIc-Lb)~o0q zv)-2#`DLRdx6tsyFkS5_+(l9r0 z6!lzcRXyHr%QtG7B0~pgnB+_CA6$JfLk8Jl9 z18*3(E=rd9Q`)Fert+V-s*fnF^68rYh*UqSnS)TgQD55XPnDiaDxmhqawv@;(sqyE zszDa;jHyl)T*i}%CZI5IdP=u-I3O7XMpyK}sH^)fr<~#?fbu;V`(4guO9to&PnScs z1?5yzz`U;X<+y0%yg~WuNKP-I{rtG`&v7yK+brZx0oxFnzWCW0onu1*<6c33yn%YG z4a(>8%h8m_?5a}Am1oCS=lnWee`DRlKISyNfqif@SoYAk6sd(tcKB>IB$vr4D!+HF zzzrYAe(C3<%=Tp_c<{Jzm{R|KGYpv<@7k+qOXyE~(aK#7UXparzH zTo@$n^zju$^%eZ?A74|^h55NOd%HxZi3QUrU6{0CkP1uonC=0ykVPFQWJy8u2Q5U~ zTqg`55o!oEQG?Ao#Lihde5XQ+XfEb{IR&6}jOjjpG`51Qa#50n)7eCqV)gqB`#=S^Nt#t|zggw>L@dTB z)1-B_Q`;QAZeS1x4|e@QKIF&{^9gV=mDi-cn|K;PZ!fOkP7 zT|bYJF31ay2?9OOp`6zMg7j>l#@;y>z3&c8uchGNt+v9Ay{vxpnFqmDb2%WY9Y+>2Io{4+_mArHo^A`Ud#yZ|`r9czG2 z{);n{ZN{_)Nr_j6p6BP^vmq|9r&NgG!|Zs|N1vrX#HQo!vC!=hwss%!}{r9P&H|e@{hWvg%fMOolh~1B^i? zZX}J*qw`<3UNEx>v%%jQ1O5M}G1LEOJR$+Y|I5odnZb_PZYxEw2R#MhK6#r&NN&9c zlq)(-W|rd-h8t&Q>J}dew9^Ca9kZ4LDjeEO&;@1Ts`Ip}Y$#>T<41X_41u5Dx5f?h zi6Suls3O#n4F71{Y8>3RSn6^JQQ8_`b(Kk}9g!(rxD+(?R82TB^`vA=z*QAKKnY24 zk10s=<+AD%dl_`b+<2X3%|<S~G1<6hslc^2q6_x|k)1!O~AJm+sL{ zpjw6MSD~fiW`+%Nm5ccK5YUPO<{>CiHQI$G%w;hAHD0L|%;UBGHvNq9$_*>nH2J_E z;A0}Yf3!JDCA>X<-1pK_IGOypFimIO2Q#4_FA{BBUlh6TG%Z5_8%%p^&+Kkj=dAw; zR#8*4EHKpA+h4>aj_R6MkHviziJ?G0Gs!s+tr^Pe$D2Z0dJoEn3X0Ono|gwMiV|5Gx}6$shn+Gjgq?7k8Q(2CES+*(kO%`x zhLQ?Xi=nyPOD)*_S<_-rsadq`=jM`|D!XYIin>l|dQ7$IpK@v$vEFV-!%=WzuT`#L zOTA^9I{Ssrk*vl#=4Tpl@E)+wsvSDUbe{-PUgthm7DNmsL%}|gqvN5p)7ax2RJ{!& zpK@WW59$=NPW&XqZ8(nDuHk&96EwBP*cF$dgI{=S$h&RX%Ufv!7utm=>$iEvCGWEBF+h;VcMo8B}W5jj^wyDPWDXyrclZxDjoPZV8mQ zuD4kkak>?cG!#!$MxbB+C&4;=vnmTgJ6bFcWh}?F<4_I7qCZE6oYnZx0-q?w z2kh@XCc-B+1ZfgR$a=p?FoO>$YuEv--6AvSg8FEj?EpuRQ`Q3dnhmzm=8Yc=zxMqh3kHF zNJ#h@OxVKy;XuflIZ-I{lJ0*Y!g>evcgf#OWXpeLBLB1L%Kw@N{rig_{5D;|UU2*J znU$!=jIwfzf?xRyVQA>)M7<2=Pb@^N-dE?OUT0(kV$y&qZdvWTpQgU@_s~|%ml*qZ z4$vxJLL$3$!rx$_czHg!0#ZIKcVg~@L{jU7d$Dw8YoyayPaEfk)imu9ODyk3A9tp^ z&9}?5P8(g1w-+=ZtD=~Zl71}j_q0gfAzkEcx*KW8t@vwI#@m}<^v|{*J^|eidshQP zTW{acjoWi{q{odm2K*kLky4mG&Sv6ujJKz($d4^Fs;~Va-iV{_=Nk}SZ}O)1;TRtj z#jnGm?ua9w=Nm(yFC>QdVmw}&0ix$L^iRpYslk1pvGLh2v1eTjLuJ5S$EzL55`)eiA5y6|B8b$+E6105C#*5 zq1K?9W6&rO&OvEV%uu3+(>}~u_&wGE z<4TaUY5j%MAeup8Y#Vf_jKl@%koim7K`@hqSea6*Y1SM*YIHvX#_)4cjy4#IL1|P; znBc}a3B3xnUxdLb-mE^70BBQmDRf7JL5nQ-DRjp@tc;`#p}Ntag&)QVaYKxJ-9&A| zq`V5w42<7AY>+vhp)9?~1Tnlqzw$TYLK}QWGOK{vOq(o@qF`+(F6REp^tlEs|K?(& zgN?(}ruBn%AfJJ$QWR`Z8x0X6)-H~4l>2zYeCk5E$Q~v^H!EUWR?OnQ5MWOlCn`H4!y44@WQd zinMbhET+8Gy)>zFz@A!tXV>!dyx(O%(T6)T;^Fk#A3{Zu2M^>E=(GF~$O#Pnx}D;< z9nN$1+81?nlVECV$${yNC>R*C+TSdl83~pH=PIJ-*CdIi7aqX#Y;QC)aVQp?**-heLQST> zg!(idyjdG)GBv$Gf6{nWW+T+;)if_x<`~Kbu{9Su>(`gs6g^RaLo>H*m(!J7lcGlH zMAA0Wn{=^36-pTKVssh^=@f+1R-kI!<0)dtN{XVz8ln<@?KKF6ttUiHdC*r#|0ovz zV~UmFv)xy_q+$Xr%?sq3W62~)f<1_mG2^l(zaIU%{nZ>$FeEK$#S9>sXI0&Kn3d8W z&h4e5a2-HMXK)#)M4o5UWvA3V8Z!$V>h{|QIeXFI1Qi9AR#*$KHQ6n zQL=BwW$Tm4)g=Hxj(|87=f(&>KkJhGB4_u{_e|JNs1sU4u_$B>TSYnj@drO;vZe5c zOeZnz9pmz^7$J;8fvg6>Jldc(P%dT42BfF!75-<2ggji(p%T^JjTX^dZAT{k3F@+B zGbJpA{D;4Co`De-x42^D2UG$lzEx?33>%a<@|D-Nr7YMClA<{3KQDQLoS_Y<&h{2- z074c0h5BAbN-+$yn|rlNbgKL00j%a==qBVg)>oQM*=Lo6`E-xj5uj ztCOnWD^-tG{Jv?*789d9q2{myl!;&t;)0QZF$QeqYj02At5yMM<^I>uqG_Er;oLRx z1I}R838>5d0H_DWRHyizqP@EMX-G-MWH;Tp+!^vMV=$8^$$R*SKin$5(QMulk6r1IX$jv8OtKR}2vXReX0THRrq~f(RWH*Wa-wr?ivNLbUp23&O z*D#&By+^i6dGMh%9kRV>$KIg21vUN&?77>&+gyT!C(LEXBV(dZg9~A8qu4sU>G|Qw zU9)*g^wN0>wn<)V{HtdIJaIT<2&p_hWniZOipK=*YP}flLcM4A2z`eY7rPeJNd?4& zUB{v8t3`k332G0+?&e8l@jIJZKiY!i_RI1ENwQrt^>;>BUTCf9M@i@ziwe({l9-VS z?MbJW6**s2oakp(-pw@fhCLZwj&?9+glrbd!zDMQRh}5pzQ!2Mc>QXO1Dk7 z5i-@W)C@Kpj6o){AYp)1XZ$LWiR9c=fLT=82y=>&f!h=IU1u1WSeUwm|27VS?V{;3}65FXvxZMjb zS{X7Tjtecv455jMHiC5bT_ae~QO4mc8?&&c839=}GL5N=vS(|7-P;t`c7p$-wCez; zvi<*7ajdL_l)d-fWpnJAjBxBz_OU|B%!-sKdt^j1%Pf0mC7aAhWQ!91&*|-bol}&4 z|8Lj1db+O8=X2lR`@7El+{53r@}&@F*7cXQVq9M0@NieP(|inkh4Mek)q?`S3Ze5MmiRuguhSa_MhY{3-4fQ9S)K zcZFT-)xrv9%x(y8woQ^UCNEdYOY8*XKed#hgRE42+n^QqbbT~HC62eo)?Q@WBxGSR zRJly~X?cy`ZT6aNepi|Yqi46fRpV&oz8O#O>tO&ytwx5PQfS7k1J6tVT9AT7?vwA+qk0b+|o1eex#2r1vMswI^tBsX+bO<;VWuO?WU(wxn!5m=ct zNGdIYzU`>TI{yvF5~%8V+<}z#A=AFF^__XWGGH6y?uU zKyOo>-%$&F%9j7I<^dC9;U0)RL0aGBZnY5QZQj6?U1J~G)_ICd%niQJ+}J5RrT$pF z7xifT3>IaGtC`B$@HmHAd8nvnxTw}&fT)TJy&vuaF&A_J3`qxtZ^f#onGMjhw%_0~ zy<%cd{Z=9(H|GY!tI;!#oAiPge4lF%@=p^nywV<2A>afqF=JqK{Io&xY#}$H#w%xC zX)VBIV9r!8#DS=srL3Y3zuDpP&lV|M@$g!ggPXQ;MJ2&;n3j# znZhXhII9l3PwgDbvyVu5itUI-)YCTu&N=f|UM^pn z4&wC}DkQ8lyaxBT7Gq6_JgtizBAd=`puhc%rPEe>@s7!)qGuGHP27#o{AXtw3~Oj- z@>w}KFNC2Orrjd+L5mb4devIdIz4CSHsK9Q%zK}o!ZtYY`OWL*O}7+wJT-`d3AZBg zhmY5Gc|{}5dDLB*GTlVASai% z#E0T!&}z;QYYjQ+@@f2%e7^Slwa$S8l6=0Ic8POh}T4et!xkbaUwuev`}vr>#}o=lQHLoM}G?&K1IRXrf$Yq0+Y#Vm`i zZa80!a=zK_9rlJB_9%~cP~t_@QeSYWfsO_7`-{(byd(lzF$33(u##%66B`!Ze|6(3 zz`b}nQ|_yi;L_a64*r>IW23polsGh+g<-xIYp6sEu2F(4;(gn|8(tP!8TcJt>jP(2 z6dnnXewNMyHoJrgPnP*&+E1*X7cTUpr+Pneokl9a?^8Ml`x{e^4)Q zIRKe)bFy&JgVnedTn69N1|j_V1$|L$DE|p{{47)7`Ljk3YMD~RFJSAeYD&rr5$(GP zcahGC$Z>2d`P4dm-(Fd1P%FC(yi&1Y|J^GU>LVx85KdT#vQw_pAZgwoxUD*%;#GjD ztqktrh~x6K#*pX^yNeZ`;wj+Tqr&uBed&UMwSH-Owq>Fxm=!&I?b7DL`2(97I3APH&Nnbo(5EKiNDtwcjS$sL9d&A z#jsD_!l37vNMWLRv84`GWke6B2^9$!8QSf{pjv{whcQmW*9LHRjPjo|Ykk#w!e*>o z6ppEsFyF~hFYim?tyc$&Cg(kYzqiPuwizBibseYIK+PcIYL@i?o)6~9p)d!bO|L8R zWQ0Kt8&53gqoxGGP3&eyX}CkZU!v1Sp4q-&Qvjo7_ALT2x+%lD_7|iGaB(Cij zQM@uG#sYQxBKgq?^<#s>2~Z;y@g~kPIm^zpN^PwMQzm*auASV^So6CjD!Bp;29=J;hf>!CY76@@^{H!TtF24s(`h&G&h1mb>%!eTQoe+5Foy z)oywS;~w{FatI^qWc}8t8&!>&iszEoyZpIb;boEC*>`h7s89XO8hM}cnCAt%UV5sK z7mSx+Ka(uVCm1ql8yL)Cg&}MEoc8SIC9J`wizDS$w}VfrxjVOV65gSWljRSyA?#r_ zD-D*Q9hO}@U8pWw8H`W3Q!bN5j!EWB^hhvP(ibA9yZBT?X&2bR;~tDJi5)eZ*Es6TOW$aT zPh2z!+P2G{P3F#~=OJ5Mb&q{;LS)>!{{H1wYL`uJ_FSqEg$H-j%G-6J8g5MQg&|i9 zWy=jU$5OMSAFnOqeJmi+ty{v#=v2=DgBe+FxQjesap`R)zpEpVS*|Pcq?|5fP$OYf z<+SU<2L;CSr=Hit_&apGLMFcu2sn$LS$T*@xWOlEW!U#djQVy7rtJI@&%@IK?2#oK zt6!ii{2DFUPvuK|Zfpy;inPJVcYCe?V3FGUW&9UG>jpU z^bE4(J?zUQgSxwImwE;sv&kQ}!6W%kzPj^900M zut$Gw(hGxn;Ua1q6-LVHYm}!9e7@);UQ7_tQ(>hZM6=2;6z7`pL?zE&?~?p}UtCj> zf^M809g3zhzp3Dv)tuDNCmYnVEJNix3kqd1Pvd(ktC5jS_LE&{3ZuL(aHA!u;$*FS zH1}Y#>~4v1rmlkXd2z)B+&oSLG3cFpV`pR|33sIwk|p2aS-6YZy(2RB!2WE=S6F1E zKM=(iWUB`2s{06YQLXElgjqV>Gc);W)U>e_)b&URWPQ7IMs)3*1hM0G!U-cu4Hliu zMr9_`EfLQ$%#hw9)+?7DM3G-r38H{i*r;@H4EIQ&YGa?VnM>{*6iDO&RW@m=&ey~PB^pl z%$3K5I|*TLm^&`q=HeKS<9w65RcVnqu6to_s$||d83y(&?Y8v(K+vn;?(WUVw56gJ zq4h@9Z2rMKjg?`y(oSDPo-f{l&E0`?g6EFr=xKu(c=1k@hE7DA!nf_pZk^jEz$**C zvQ2X5p)`&?QPaSnze7*Za!*8ZkFQA~RdrAFo)od?*|D-P8J977tCZ?E+kl5SkQc#w z)G^d`Z6AiN1Tv2VO7#bkiQUS26hOalyXhoPgFH{2+9Z}2db%yH!qARK(2a2GApy!P z^BWOkb?b|4RW+~b!xj~)8hq-&pK**K)zc(9IQfM)S41oQdtKtYu&k=UTOT=SsLZ8l zIze(ChRls+8X@ihSB(hzC$6O8FM~F>C2bnyQcuJNx_Q&POodWU=5$A@2ar7jfmE>T z9}=le@a;}H)U0{6K&*mEa^lOEOlkPWf*Q5%CEtvEccv*6hcq78O=uhAR}E=x?|eSU z5lE`sY4`z42A%%y_v>ESHZ`Zd0;i9p|Mt39ro$7-KkF;Nb`Wbz*uSeQ0=2I= zd|zErX%$f5y6C@Jc;^o9u&<(2m1_<^qvU<;MCRdo4`*#5SgdG^8|x>NS{xn4?>D=} z;}TrMxg45*!=<`&wWD-7xf;#G50lf%siP75(m5k{Cv>4JqjhmOm<#xVl(wRSX3R@U z40irBCQr`ukbItgX8O=UiNTn`Kcd^ggNc?tpSZEW=!xKtcgt>YZud=!=BSCB&H@)y z2iLE(1sEn*+clixZIo8b-b_;R&?=UcSns9A$dHF%rOk zigehzDYUls*6liR74+;KYt~>hI^Aup!TV(k6A_qaVkM%TVj%*`xfY9C%z^4U>W0g2 z{P15$jLI}h_0{7qc|EKbueYl9`lxIfcu9P1XZUmYzIERk-N|K1meege`*3dD45w$f z3;T@i1*^%tvI&^J+?htXePow>z{zzv(__K|G8Y2$+X znW`^6Rm{}IvHbaFG-(Z9mZVQZdwnVHjI!HM*l@3J^eA_Cr1w(j%ez_45f5UDY9yDO z;VV!Ro8RwsJzI{Oc$Ox1-|rh%AfeT}$VPr8FB0uI#eKp?rvXvy%hd7py6jeNpmqzK zjdqmM;tL_?iZ;K$erGbLSDFOM553=(A4hDaL$sQIN|3}$P(5NjG9S*700=vokt0ir zoP{P@US5BS4tmU6*(elJXrD4~O^pR(rwTzusoVHgJ7CfgiFbnmc(L{`?t*4|!s zD>M*TLw&CPC2V|W)cwYi*!ouWz#d8gW^9{gXgzHlVZnICr&NU+Lc&vNda?wkt~=_; zVnGNKg&C(%BD}hp((suuHgJN2vt?_}pA;u6nWOO%W|_hlx2?Y|mr$p8;(TrTXGg6X zD5|xrZLL06IX9yjB{3Sw$lBvzmhAHl65X;N6tRSv%rMc=a0$gA*ac*dQ!-oSCEsVV z#Fs2mi3<|oZY9i1oL_>h1TlW$-+E$nc1w<3rl)Ba_koi{jLv)0gvfRU5?!myb9MZ3 zTX&*r2AcCgXr5P6=Bd4`NP1~;7D?<{_&~amt%U_RA1>hr6{*Q-KlR6LRPB(#Wk5x{ zTX;9EwfWwv<`CIL`isIgkbO`wi5RBhd{E|WoxMjB2}gf!vzucf& z5Gok87ne3t-m=%$#=(J!AyHG{Q!-i4eR=+KUx!IUqvA^rLsY=(oE$ zQ_<~kUGEpNB&X>Yr8@NqK`)zUa_wZ_S|_sNW}DyvMNWf)oDKCyFurh1fI;e$P*B%| zKBxG%nOuFK@ zMr-V|r!vi#d2q)H1YXr^xLzLM=;igGWj7@DeEpQYzEamCGIJ}}wvuW>29*lDO_od` zDntaz8)TSB3s7Gr?~&A%ClBDC$MEKy#PMz|_(b}|;X?|qmCJqgoYw*%6UZ`ldb0u( ziwLejL`!r!SfiuHu>P}IFZFs?x2rOLm&BE!bmjzDmI1nm{mt&ZOWhW zpOK-@dnw{~S*4;laR@kCxp=|kks8xk+|$q8K|=*rR!%Nx&Pcr#H|IQb)g+!go8WfT1;wgj*6W@ z==>vdT(3C$jN)5{Z{02hUE9)%4Tu(sN?VF)_RxA>q-cb)U{Vow;&V2kaBFez2QH1C zDBUknhUCzmDfRX3;riHb*fC*MQmE1`4Cc7srSC@bO=&AV8Z=MiJ`f))Rh?5Ne(bQY;QV>9!1#k=~hR$sG4VYiD(H7ssklhS$Im&nf- zr))T@xpDR-_o%Y@Bf3%0sipdN{4Tk4bi{fZ-Yl3ysx4!Kv5^+Bu)8k<7MTOsTjheN zhaZFK=9o*&;uNYfSfVqiDeb=Cyf^MbYvU??OdVvPoxP&O^0Yj7SZ9j>&^(j33jHygi_W~ zB*+Tvs`i^=;B9aX1@;Dr`}-sWCTkdzj7vVh)p^$DwBs!w4I#bjjw>&Ky{F)LgJ-QL z?veITmdn4d?TI<@b}ytt&|OTxq4GOl7oRiQST^ zR``4x7#%%h6-SsM>A_O}To2Q}uRB=>loEqDh|>!R52Y1>>ft|u-x{kbrz6DyR+Hy~ zSvtEx%`IVES0Qc?PJ5^WrxmbllN06$<@|NsLc3CHfBS1TFh`s6>z;O2Rxn%tIxDMF z`)e@XGj>jJ2Oe`9SGx+BV+!s2Y{yC@Qy=`AdKTcLp^S<~fRaGf9u)LhM4yUR-A~{?e3{0LZ zTmbtufESpFK@bW66L~c&6kc0#Nkd>z^Y3MrmL+`6(!aIV&&UsM@A%FFjhX;XjDsJX zcp&LOqCO7tKlvCD7p|_1u~)paKxmREDW|RtSwS^nYf$*RI3o@|1g{6n(k2wy+4#9_@s1AJ` z7dW^m0~ZAae)s2r%+ei$Ll&WTzjgvn5VUb}um(Vt21Zo*03CSJ1_tJ^kwDVezj{I> zqStnDhT2=h{$0*|IPukBx6UnqrXL^{Ln00boZ){W{*?%B6P%FN1p|OY60l@xB%(#Y zsQ)J-d5Af1z{2&z`5LK6XyO5`S->>pkoaBzi=X}{J}pZ}2N?8d%FBV+j|%`QbfBBU zNR$mc$Dq`PTH8ZhT%9d7AkILbJIra}iX`$=NeuuPT7FUFFmUDlA3OFl%Xc!seq3!` z4p*c_M~S;T;LO&)_*W-zvfkhF9nO(cb|0q-8wDi}2u6}fntLL09FFgnu5AN>8$6;9 z9L}cnpoYX1&|oK^K?NkXUfKT-+i&f0q^?~NK4k9!RU(I}m-5FTHGn$)xnl&aWL`Ev z$HD;~cy>9EdGOzJ{I)xFSND=!0N2_BtO7Z8Q~~kpFst~UkEC6#tSp^nAm%nd&PDk- z(smJ??%4%Y1O=>t;h_D%Q?TZ5aDSH|@@{(S=>S^s1GEC4m^hHZOTU3saWIFtKppH4 zx1orUBw4sexDcSAz^jG>@x6QuP#{Aeq5!yizq1Q?76N2nGa%i-OOXSSg8T+p)xpBm z)>0PY0y(_BIt_xw=>XOk@Ih7rjpc7(kFFo!Z5>>bfZYSynvaQs0zY*2K*+8B3@QtC zw){;1AExm-BMl7MIl#)`%T*5q>*}Auk?(y+v@&?ZT_<@5N&!H40VQw%3_NAp9s~P_ zWn6-O&jyDpyqu(Siyat4dHkOpq{i;g6lx9@N7%>c^TotH92As5N)!|zt00K1%kglf zU7@!BEoA>$Gb6ki3~0cR8UePAto77ee}@0J4mn&UIwI*Nra;s6fw~OYxA*=3hJ|aleOz*Kxlp0FG$_*|~WFh?U-iKP!L-_|R3Xa`5!aIwtht zZMIHKY48KGM+RWMKrw_M7oPkK{C(q}lo`y$87L!B_RP?sbVQUK5tfHNZ7G}EVJLLc7dXA)lAJb=xe z1d=SWO~Uu)ouqXk79KiXJf24o@ z@)smW_X6=gFARv7L_1LO9+>{Wn&_H&ohva|4hPV1~RK!aO zkVC-TvqzyG$1o93cSo)+qt71;7x99FpW_SSan!)iSOiI@IX*bzaq&MhARZuzoIlkW zj?Hkm#t~1KL#|EsIerI?a31B)twr2Ek6fEb@ctGO;gGtYF%dUbBWKHesXt@>J8yMV zz(w5Bi;O-m^B3qx|xmp&1^9eRL2(Tvq_3eFW(+ItmS8QQFTPM||N7R8t5-3KX7) zBpk$-%tu)q;tLC8w^OnFBj~S6gqQD#FCCDRFXS5P!P|kqdhem3d;%y>QBY)oKQDp# L_7wmL1?B$$+@hlV literal 0 HcmV?d00001 diff --git a/java/java-tests/testSrc/com/intellij/openapi/vfs/JrtFileSystemTest.java b/java/java-tests/testSrc/com/intellij/openapi/vfs/JrtFileSystemTest.java index cb15694b6c63..b8185dc08456 100644 --- a/java/java-tests/testSrc/com/intellij/openapi/vfs/JrtFileSystemTest.java +++ b/java/java-tests/testSrc/com/intellij/openapi/vfs/JrtFileSystemTest.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,46 +15,84 @@ */ package com.intellij.openapi.vfs; +import com.intellij.JavaTestUtil; import com.intellij.openapi.util.SystemInfo; -import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.impl.jrt.JrtFileSystem; -import com.intellij.testFramework.LightPlatformTestCase; +import com.intellij.testFramework.fixtures.BareTestFixtureTestCase; +import com.intellij.testFramework.rules.TempDirectory; +import org.junit.Before; import org.junit.BeforeClass; +import org.junit.Rule; import org.junit.Test; import java.io.IOException; import java.nio.ByteBuffer; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; -import static org.junit.Assert.*; -import static org.junit.Assume.assumeNotNull; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assume.assumeTrue; -public class JrtFileSystemTest { - private static String ourJdkHome = System.getenv("JDK_19"); +public class JrtFileSystemTest extends BareTestFixtureTestCase { + @Rule public TempDirectory myTempDir = new TempDirectory(); + + private Path myTestData; + private VirtualFile myRoot; @BeforeClass public static void setUpClass() { assumeTrue("skipped: java=" + SystemInfo.JAVA_VERSION, JrtFileSystem.isSupported()); - assumeTrue("skipped: JDK_19=" + ourJdkHome, ourJdkHome != null && JrtFileSystem.isModularJdk(ourJdkHome)); + } - LightPlatformTestCase.initApplication(); + @Before + public void setUp() throws IOException { + myTestData = Paths.get(JavaTestUtil.getJavaTestDataPath(), "jrt"); + Files.copy(myTestData.resolve("jrt-fs.jar"), myTempDir.getRoot().toPath().resolve("jrt-fs.jar")); + Path lib = Files.createDirectory(myTempDir.getRoot().toPath().resolve("lib")); + Files.copy(myTestData.resolve("image1"), lib.resolve("modules")); + + String url = VirtualFileManager.constructUrl(JrtFileSystem.PROTOCOL, myTempDir.getRoot() + JrtFileSystem.SEPARATOR); + myRoot = VirtualFileManager.getInstance().findFileByUrl(url); + assertThat(myRoot).isNotNull(); + assertThat(JrtFileSystem.isRoot(myRoot)).isTrue(); } @Test - public void testBasicOps() throws IOException { - String url = VirtualFileManager.constructUrl(JrtFileSystem.PROTOCOL, FileUtil.toSystemIndependentName(ourJdkHome) + JrtFileSystem.SEPARATOR); - VirtualFile root = VirtualFileManager.getInstance().findFileByUrl(url); - assertNotNull(root); - assertTrue(JrtFileSystem.isRoot(root)); + public void basicOps() throws IOException { + assertThat(myRoot.findChild("test")).isNotNull(); - assumeNotNull(root.findChild("java")); - assumeNotNull(root.findChild("javax")); + List names = Stream.of(myRoot.getChildren()).map(VirtualFile::getName).collect(Collectors.toList()); + assertThat(names).containsOnly("test"); - VirtualFile object = root.findFileByRelativePath("java/lang/Object.class"); - assertNotNull(object); + VirtualFile classFile = myRoot.findFileByRelativePath("test/pkg1/Class1.class"); + assertThat(classFile).isNotNull(); - byte[] bytes = object.contentsToByteArray(); - assertTrue(bytes.length > 10); - assertEquals(0xCAFEBABE, ByteBuffer.wrap(bytes).getInt()); + byte[] bytes = classFile.contentsToByteArray(); + assertThat(bytes.length).isGreaterThan(10); + assertThat(ByteBuffer.wrap(bytes).getInt()).isEqualTo(0xCAFEBABE); } -} + + @Test + public void refresh() throws IOException { + VirtualFile dir = myRoot.findChild("test"); + assertThat(dir).isNotNull(); + + assertThat(dir.isValid()).isTrue(); + assertThat(Stream.of(dir.getChildren()).map(VirtualFile::getName).collect(Collectors.toList())).containsOnly("pkg1"); + assertThat(myRoot.findFileByRelativePath("test/pkg2/Class2.class")).isNull(); + + Files.copy(myTestData.resolve("image2"), myTempDir.getRoot().toPath().resolve("lib/modules"), StandardCopyOption.REPLACE_EXISTING); + VirtualFile local = LocalFileSystem.getInstance().findFileByIoFile(myTempDir.getRoot()); + assertThat(local).isNotNull(); + local.refresh(false, true); + + assertThat(dir.isValid()).isTrue(); + assertThat(Stream.of(dir.getChildren()).map(VirtualFile::getName).collect(Collectors.toList())).containsOnly("pkg1", "pkg2"); + assertThat(myRoot.findFileByRelativePath("test/pkg2/Class2.class")).isNotNull(); + } +} \ No newline at end of file diff --git a/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JavaSdkUtil.java b/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JavaSdkUtil.java index f9363e383135..71c2564bb5f7 100644 --- a/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JavaSdkUtil.java +++ b/jps/model-impl/src/org/jetbrains/jps/model/java/impl/JavaSdkUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -53,12 +53,12 @@ public class JavaSdkUtil { jarDirs = new File[]{libEndorsedDir, libDir, classesDir, libExtDir}; } } - else if (new File(home, "lib/modules").isDirectory()) { + else if (new File(home, "lib/modules").exists()) { File libDir = new File(home, "lib"); jarDirs = new File[]{libDir}; } else { - File libDir = isJre ? new File(home, "lib") : new File(home, "jre/lib"); + File libDir = new File(home, isJre ? "lib" : "jre/lib"); File libExtDir = new File(libDir, "ext"); File libEndorsedDir = new File(libDir, "endorsed"); jarDirs = new File[]{libEndorsedDir, libDir, libExtDir}; @@ -127,4 +127,4 @@ public class JavaSdkUtil { return null; } } -} +} \ No newline at end of file