From 6d08c0b2bcc09313fe3d992844446ce313747793 Mon Sep 17 00:00:00 2001 From: solohsu Date: Fri, 15 Mar 2019 18:40:57 +0800 Subject: [PATCH] Reuse generated dex and oat files when using compat mode --- .../riru/xposed/dexmaker/DexMakerUtils.java | 17 ++++++ .../riru/xposed/dexmaker/DynamicBridge.java | 7 --- .../riru/xposed/dexmaker/HookerDexMaker.java | 49 ++++++++++++------ Core/build.gradle | 2 +- .../common/util_functions.sh | 2 +- Core/template_override/config.sh | 2 +- Core/template_override/module.prop | 4 +- Core/template_override/riru_module.prop | 4 +- .../system/framework/edconfig.dex | 2 +- .../system/framework/eddexmaker.dex | Bin 75768 -> 75896 bytes .../external/com/android/dx/DexMaker.java | 11 +++- 11 files changed, 66 insertions(+), 34 deletions(-) diff --git a/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/DexMakerUtils.java b/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/DexMakerUtils.java index 47eebdcd..9f99619f 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/DexMakerUtils.java +++ b/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/DexMakerUtils.java @@ -7,6 +7,7 @@ import android.text.TextUtils; import com.elderdrivers.riru.xposed.Main; import com.elderdrivers.riru.xposed.config.ConfigManager; +import java.security.MessageDigest; import java.util.HashMap; import java.util.Map; @@ -226,4 +227,20 @@ public class DexMakerUtils { TypeId boxTypeId; code.returnValue(resultLocals.get(returnType)); } + + public static String getSha1Hex(String text) { + final MessageDigest digest; + try { + digest = MessageDigest.getInstance("SHA-1"); + byte[] result = digest.digest(text.getBytes("UTF-8")); + StringBuilder sb = new StringBuilder(); + for (byte b : result) { + sb.append(String.format("%02x", b)); + } + return sb.toString(); + } catch (Exception e) { + DexLog.e("error hashing target method: " + text, e); + } + return ""; + } } diff --git a/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/DynamicBridge.java b/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/DynamicBridge.java index f9aca719..22039ee3 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/DynamicBridge.java +++ b/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/DynamicBridge.java @@ -1,7 +1,6 @@ package com.elderdrivers.riru.xposed.dexmaker; import com.elderdrivers.riru.xposed.Main; -import com.elderdrivers.riru.xposed.util.FileUtils; import java.io.File; import java.lang.reflect.Constructor; @@ -72,8 +71,6 @@ public final class DynamicBridge { if (!dexPathInited.compareAndSet(false, true)) { return; } - // delete previous compiled dex to prevent potential crashing - // TODO find a way to reuse them in consideration of performance try { // we always choose to use device encrypted storage data on android N and later // in case some app is installing hooks before phone is unlocked @@ -83,10 +80,6 @@ public final class DynamicBridge { dexOptDir = new File(dexDir, "oat"); dexDir.mkdirs(); DexLog.d(Main.appProcessName + " deleting dir: " + dexOptDir.getAbsolutePath()); - try { - FileUtils.delete(dexOptDir); - } catch (Throwable throwable) { - } } catch (Throwable throwable) { DexLog.e("error when init dex path", throwable); } diff --git a/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/HookerDexMaker.java b/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/HookerDexMaker.java index 7b2bcb60..722545dc 100644 --- a/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/HookerDexMaker.java +++ b/Bridge/src/main/java/com/elderdrivers/riru/xposed/dexmaker/HookerDexMaker.java @@ -42,7 +42,7 @@ public class HookerDexMaker { public static final String METHOD_NAME_SETUP = "setup"; public static final TypeId objArrayTypeId = TypeId.get(Object[].class); private static final String CLASS_DESC_PREFIX = "L"; - private static final String CLASS_NAME_PREFIX = "EdHooker"; + private static final String CLASS_NAME_PREFIX = "ed_"; private static final String FIELD_NAME_HOOK_INFO = "additionalHookInfo"; private static final String FIELD_NAME_METHOD = "method"; private static final String PARAMS_FIELD_NAME_METHOD = "method"; @@ -183,26 +183,30 @@ public class HookerDexMaker { @TargetApi(Build.VERSION_CODES.O) private void doMake() throws Exception { + final boolean useInMemoryCl = TextUtils.isEmpty(mDexDirPath); mDexMaker = new DexMaker(); - // Generate a Hooker class. - String className = CLASS_NAME_PREFIX + sClassNameSuffix.getAndIncrement(); - String classDesc = CLASS_DESC_PREFIX + className + ";"; - mHookerTypeId = TypeId.get(classDesc); - mDexMaker.declare(mHookerTypeId, className + ".generated", Modifier.PUBLIC, TypeId.OBJECT); - generateFields(); - generateSetupMethod(); - generateBackupMethod(); - generateHookMethod(); - generateCallBackupMethod(); - ClassLoader loader; - if (TextUtils.isEmpty(mDexDirPath)) { - // in memory dex classloader + // Generate a Hooker class. + String className = CLASS_NAME_PREFIX; + if (!useInMemoryCl) { + // if not using InMemoryDexClassLoader, className is also used as dex file name + // so it should be different from each other + String suffix = DexMakerUtils.getSha1Hex(mMember.toString()); + if (TextUtils.isEmpty(suffix)) { // just in case + suffix = String.valueOf(sClassNameSuffix.getAndIncrement()); + } + className = className + suffix; + if (!new File(mDexDirPath, className).exists()) { + // if file exists, reuse it and skip generating + doGenerate(className); + } + // load dex file from disk + loader = mDexMaker.generateAndLoad(mAppClassLoader, new File(mDexDirPath), className); + } else { + // do everything in memory + doGenerate(className); byte[] dexBytes = mDexMaker.generate(); loader = new InMemoryDexClassLoader(ByteBuffer.wrap(dexBytes), mAppClassLoader); - } else { - // Create the dex file and load it. - loader = mDexMaker.generateAndLoad(mAppClassLoader, new File(mDexDirPath)); } mHookClass = loader.loadClass(className); @@ -216,6 +220,17 @@ public class HookerDexMaker { HookMain.backupAndHook(mMember, mHookMethod, mBackupMethod); } + private void doGenerate(String className) { + String classDesc = CLASS_DESC_PREFIX + className + ";"; + mHookerTypeId = TypeId.get(classDesc); + mDexMaker.declare(mHookerTypeId, className + ".generated", Modifier.PUBLIC, TypeId.OBJECT); + generateFields(); + generateSetupMethod(); + generateBackupMethod(); + generateHookMethod(); + generateCallBackupMethod(); + } + public Method getHookMethod() { return mHookMethod; } diff --git a/Core/build.gradle b/Core/build.gradle index 95f3a3e0..f28d6ac5 100644 --- a/Core/build.gradle +++ b/Core/build.gradle @@ -1,7 +1,7 @@ import org.gradle.internal.os.OperatingSystem; apply plugin: 'com.android.library' -version "v0.3.1.3_beta-SNAPSHOT" +version "v0.3.1.4_beta-SNAPSHOT" extensions["module_name"] = "EdXposed" android { compileSdkVersion 28 diff --git a/Core/template_override/common/util_functions.sh b/Core/template_override/common/util_functions.sh index f5dc0267..67276981 100644 --- a/Core/template_override/common/util_functions.sh +++ b/Core/template_override/common/util_functions.sh @@ -1,6 +1,6 @@ #!/system/bin/sh -EDXP_VERSION="0.3.1.3_beta-SNAPSHOT (3130)" +EDXP_VERSION="0.3.1.4_beta-SNAPSHOT (3140)" ANDROID_SDK=`getprop ro.build.version.sdk` BUILD_DESC=`getprop ro.build.description` PRODUCT=`getprop ro.build.product` diff --git a/Core/template_override/config.sh b/Core/template_override/config.sh index c5547e6f..a0170b1d 100644 --- a/Core/template_override/config.sh +++ b/Core/template_override/config.sh @@ -41,7 +41,7 @@ LATESTARTSERVICE=false print_modname() { ui_print "************************************" - ui_print " Riru - Ed Xposed v0.3.1.3 " + ui_print " Riru - Ed Xposed v0.3.1.4 " ui_print "************************************" } diff --git a/Core/template_override/module.prop b/Core/template_override/module.prop index 2dc811c3..6e139f04 100644 --- a/Core/template_override/module.prop +++ b/Core/template_override/module.prop @@ -1,7 +1,7 @@ id=riru_edxposed name=Riru - Ed Xposed -version=v0.3.1.3_beta-SNAPSHOT -versionCode=3130 +version=v0.3.1.4_beta-SNAPSHOT +versionCode=3140 author=solohsu & MlgmXyysd description=Magisk version of Xposed. Require Riru - Core installed. minMagisk=17000 diff --git a/Core/template_override/riru_module.prop b/Core/template_override/riru_module.prop index d492fd8a..92d58ef7 100644 --- a/Core/template_override/riru_module.prop +++ b/Core/template_override/riru_module.prop @@ -1,5 +1,5 @@ name=Ed Xposed -version=v0.3.1.3_beta-SNAPSHOT -versionCode=3130 +version=v0.3.1.4_beta-SNAPSHOT +versionCode=3140 author=solohsu & MlgmXyysd description=Magisk version of Xposed. Require Riru - Core installed. diff --git a/Core/template_override/system/framework/edconfig.dex b/Core/template_override/system/framework/edconfig.dex index ab51e4ed..b7f9d96d 100644 --- a/Core/template_override/system/framework/edconfig.dex +++ b/Core/template_override/system/framework/edconfig.dex @@ -1,4 +1,4 @@ -version=90.0-0.3.1.3-beta-SNAPSHOT +version=90.0-0.3.1.4-beta-SNAPSHOT arch=arm64 minsdk=23 maxsdk=28 diff --git a/Core/template_override/system/framework/eddexmaker.dex b/Core/template_override/system/framework/eddexmaker.dex index 1410d305b2d01c4dbc7434bd60a5223e44b12628..6d194a637b42f9f1f8f5fe9920e1be5e5d59ab18 100644 GIT binary patch literal 75896 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 z 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�(`|6yb*Pj_mBW-Kpw)U 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 literal 75768 zcmbrn2Vj&%8@4;|mTbxrHk;5wAe&8q1%fVtKtPa4SLrMW1Q9|&P>e~a`k{gXf}(<; zprQsu1shSYqayb5DRxx+RBYH$QL%EaXWn@?OVR&7=PcgdGtbOC)BEhEV#>VKXs2Q| zYSq#cK6v7>zlXjOylBQ7g=@z@_E^uEMeVj9Y-6b^rPRF9or946M34>gC@p^wNo|Hw z$(B;{vy{3E`<{?enJ%Szv{tGu_BXpI<@rXb11Biece7Fhz-i!YFb7-?ZUMJ}E#Oh` z5_kpd1%HBqJCtez+Jhp{74!h5pbr=TP60!}a1aCIz*H~;oD2Q~mV)cSji46X0`34? z!FKR8_%C<|d60+xd1 zU?o@s)`9ilHn0sm3*H4kfChIf6#&gZE;tT!1YJQNFaV4I)4*ErB4~Y&Qe(hmFbgaK zmx8On8gLuf3LXKEgXh4D;5G0W_zkEnN(Dg(v;`eNC(sr20sX-#UsXzzyJLuo2t^?gbBm?O-Q(7Q6^v0q=poL4F-+08_zYupT@Q z4ua6V)H%2SYy>ZXA3&4)XcJ&ESO&I$x4<7DZ>v)Mz!Y!=xF37~yxYh(7zO?VYQb9| z?S7?tfyrPo*aTh$zk%=rlnFQwJPT6jlYr(U?{UYTL=79&mFQCgyj1^!Fcmli%z6P$BmC6Pk zK_5^77JzHO?chnU8+--+0-66+su1)A%@V!PnU?4ab+yov0yFu#f z^aD@~27{^K0&or33?2t>fGD2%3V{pgrge27oicd~hYW13V6% z1uufPz-Qn$;NMMIfdOC?m*&CU^n;>d;-1z-+&*%Z@_ww`3|ImEYKW;K|9b9 zbOR@XzF;623`T%aU>ukLCWAA<3{VYbfq7s)SPz~DUx9}2Gp~a&U_Q74tOpN)|AM{1 zvxoKq3P2lhJSYOaz+g}g=7V+MA@DTV1@?e_-~dn`P!FIfC;(B=0}KSCz&KD2YQTly zDzF~h3!Ve-fKS0M;4jeZe~f>iJ?I67g2`YmSO%^E8^9f)4r~X{f|tQ=@FDmH900!p z*N2odXbVa}A8;xt1La^QxDYG^OTpD(9k?Al44wj?fv>?q;Q5I05wrlUK?hI_O2Ggy z9E=Au!9s8)xB+Yc_kxGO6W}HA8h97%1z!W}W9kiLg8~o*J;6XQ0-OP6fy=-%;BD{` z_!j&LQui|7gXW+u=mbWAnc!-$7OV%igKgk3@Emv@dg(O^DU4z33qK^@ouo(J!NyukZW`YG^8CVH! z0(XK3z*FEg@IKfFegwX6&%c~EH+TR%1>ORmgWrJrJ9LAVAPPj?lZlDwl1Vh0XFb$jwE&xlx%i^c0q_KP z6}%7jf**nVApHnrgM4s2=nndTAs_~(fOEhsun;T(tHABx5%4Pb7<>u70Y3rPZ_Gm= z8-zhOPzw5jfnX3A2BuTg=YaFU#o$VCEw~HZ4ekM3KpnUjYz5oE1K>gM5O^3o0v-k1 z!DHZY@C4Wao&-C=Q{ZXv40ski2c8EnfEU3_;AQY%@CtYpyawI{EYB28U;P16EXE3u z2K=A_NCyo;0Azq5$OKuS5oipWfTo}s$Og?p4rl>df?N;+c_0k(K>=t5S_6)yR0OmI z?Ld1_2s(h{!0{joI)Wn533LXN6$}D{ z!4NPM3j#7!OVdXMl-d5-10gK?Rrsrh+rUG%y{U1%j(a z3wREE2o3_}qAvp%a03rW0?8l+qyj%^0MbE2AZ^?ENE;V5@~Hx1zUvmd-Q!h%F6RGk zW0rp4G3Kj`c^m#$7_)@E+L*UvUTMrvV_s#9um z!Q8`y6}jkK3%3XIk+5R!Yy60LSb}+s@n48sK9Wu`Pejgt+C0tp7r7Hw%uZf9B={F| zmGK`nekc}I1m+=^v~>pZ5p%IN+2$_BENSQpmKy&(68!W`F!wQLDJwCrz(4<~zF;i| z(Ie(s%>1X#n=nY3h`bK7q@f>>kN6jJ0J&q{j+y_o{OJVw%L(!~6Xbi0`BcJ4d%FW3 z1U^N69XuF(gZX-R2snVb79I-z#C#(>0!SMc^GIW^g+~GLvk4vpJY+=DIS%-ZxeT+! zEAsI`>PXTcW=Vs{PY2>3t2R6N5_y)e}aARnyS+}G$7xs%RW;(-rNO3Z^Wh<`DUG3L3L zCt?4G9aHDfS6Y!mo$i3(r}Y8uQNJDzA?dkSAuz4f_Xb;NwfHuvXbx>+Khi`tCs<3tCAiuOL|17n4R_}W~VNeW0sHjk#X5+12PtiACX@ToN`+& za?&8>ApJx>VwOD1N6fWi;3HvcK^FcUvs0cj=1wG?A{X->qmwB0N9L{DjalX|=}Yq2 zYs`|bPmK9f!aC+}Fn?;~2NLA!wt7Fwm_IXqq@R9n%mL)z8*@|4UmLTG;rorbAi+;( z%-A<{6mx89nnbJN_48cJwdD?C4yZ;HNf0z9~UohuI1H z5a#cU{-+b7>cARmU=(J6C{V;-L%ufXiYH6uYjE5STJ!Mq5wldt6o^3|9fJ?k(# z^}Z3aljdy+<{b%sUQUqjNs#Zu?8J2t^Oq)%(x{zs^J8}M)fBUnhERezg83^GHku$W zO)w9{?C9~+{vGqM1bGf}NB@`v`NRaX%ojhHxTYch(U@mpcET=7@L!M+my8vT9~omE z^YR4$GPXEnvKqP5{?{d#Hzk<2VRrQFNH9O2VBUq<$?xt2vy7RJ{3GN}neR*Ra{%+t zCXX_%{$k93CiwAeuGiyFFw5G^Nm~|jS!+Z3^Sd$2c=d-d=ivCKG0PbEw=owa$fb@P zKZOZ$sTW5s!^rP4a`AI_f?4*c@>vhWEOUYQsRQy6 z`Mp5m68U{VJ|dSrtuwZ7!|eFEAG3VKkC-L>5?1!U^6@j1o$VH0tV%tyR=-MhcL^7& zm73S7jmF*y_jGm?+bvng-=%zn&*opb;mL;oV|bJHm#rQ#{Iucc4ZmRcWy9|q{uOSn zYSnn+6+T__>1u-Jwra7Fmym98@27dQ>aV%I8e!!3YaXZ$Xl|!kkp3_wF6j>QZ-HT% zkHs!?vG6*>RF}5jLwX9xcWdG;U>9<)=Edp|dRvi#O6;w0e@L?(e`{9nQ?a+EC0?a@ zgSt<%?XR`!pt11<8;OL?~;{0)Q?UT1g+{@So3xJ&aa^{wU& zstf)jYPdQNe-TrE5mUbrb(%UCeus+_>-gK7_}iQK+ne~?lW(aPaeogkGTwubQG!y>O5AO&0BQ2Md@YIE~5O~ zLO9`j;f~~U68^gJ?^*19`F9ci2C&nqFnq4zYQwVD7Wc~y%bHE>w-H|WcEfdspE3NZ z;nxhmZukv&Aph=zWBhvsKAnG(jtTse@)MTw6PEH5mhuyp@)MTw6PEH5mhuypaub$v z6W(Q5%5M_6%%Q!MoAN7HtJP-8qny!atL7SAkCWMLOs73frrk)pp3H9IP0gEi`>Y`R zBH|TZta*ca4E+_<-xG#+X!fX&HP@&C=&K-}|7hN-=4+m+R%_m%p4EJ{`ctzVZw38i zDDhS>!b!iXARP~Bw$o8bI^RP7xrVC^&oO+y;RS{l8eVGna!UJ7;=9t=uVTEsg!~BK zieBMI4NE+Jwb$Nvs$bO|g!8Kz>T}KI>KDyk%@ftPnom=|Y96f)YPPK3G>=!m8}~mnA5c-P zZPr}Po+f zYt?McMQX0*ZtB09o2q@9bJUNTYn7MsZccvunr~Mbns=zCn(tQ43}s7Jl&8nBN57vB(sxUl7^F}q**w55_hnjBWRhl=cYRx%nrsmb^Le2LZ_Nx1| zy@`5F^DXLq&6le^nr~KLYu=!KGxk3;-=f00K8{zdG!Ih8!#SoNb4>lUF!mP4-qP4x z8hfs>=Nfy+*h9viXY6^#9yaYIY~*3}p>7Z1xOhiJsQ#N0p7g z*6JtKTywI@(HvGSH0P_9nyXZ<=GH2txsA%xe5nc>F3{XgwLyOylkPSuQ(cL?4e7Rd zo8jNp<61sJJ)!w@wL|j^^|a>p>V3_P)B(+xD|-*Kk>9>>YBjMK*(`|-veHR+8Sc~pI*^+x0F5#7!? zleT1B>}cwx6EzXV-kIAi$!BM7%i5EU&fK0AYJOfFr}<%Zyyiz#N4S`ISo{}r)7D1Y z|4?nw(}mkJk$2?=O}K;`Gn=<-f89;I-MNvIa3^rPChk3$Uxj^B%*XZS|rev`4^Y`E6Q*Bko= zW531lM#HxnzRmFM@X6e$N_n2b?W*t~b)qi!!PKDC&k$9rc_=k0_F>$(iofC9vI>t- zy|sL#>Z5rSH7fo_8~4+=nH7IySbvLrtlFdP<4nIDM~yZ{KAv^9@ad*KoKA|w|LN*f z!z*<=m_R#tiFP3Tisl*WJ^OP|egS=&L~E5Y1!NP|efSD9vA~a?OX-6wM>e zdOBv-(?iXAdYF1tyWgmu)O@Ylsd=4xN^_F+rsluZ|1>X9A8M{qdo_QdKGE#6KGmG7 ze%3s~tj|X(ALUWOxq+-pD%3Bkz2>u3cg^F}iJFI)_4_Dwfwm7f>-YE77ux=g+NXJr zYQQ*B!EIxn<{_#dJjIL~Q>Z@~H^eUef2w+2m)BHN?^CIt({LAFX!tJ8qty$VXQ&qq ze{I|gw4U!(IeaF!`qG}xLf=!^&oS|y!%e@)E75y0;VNlyvd)w};xO#h+}cipYlvCa zi#4iDZPz?ry{7p>JwMbaul1I;U!>mF?6cm{?6N-4yim^@HD>;*p+*0o<=?9i>8YW7 z^E7|2S{rU-I0DZiUMcT6tmtnd+#KarH^Xzyyf7ENXX8FsouSizzDiOL<9`v5+0h0NfWDJ&R1Z#m2ta^ozyh zYZvh?Htm10ndg?MPj!4txmo!RJd6rPtjnX+N@_SgGFArTUEY ztfFRKMZTJH+pXCSzuL5u)kcrF%Q|N@FAQWKagExq+8Scan8^^N*L^LK{l>3Y9TU80JRUr&wSO1SIQQq_p^x}KWt39mEy z*U__H!rwY|v0i82XyiB1pDg4zG0x4>e7V{M-)!7#X)n^>Yk6T4(fq5ff05sz?UQwR zv76HAtW_zx-fPh->&#k{zFIX|>#b#E`Bcm8b!Dw`Tlu7OJ@J2pK4ICvZ$SS7&CAqg z&33(Ppha{c{05Vs4JJRgm~;wD`@F@Z=N1#c$R%GQm-XyM(;hZ*3-}fGTh$x7{BI@S zGYBtyj^=&pW$pg8>Q6fFB7J8gzuWK@!*z!Jj7J$j&SK;<6^!T7^2S^aE%-D5N4n3z z{YB%Ru6@;qKNI_1xPOEDl^`3t)mO$3`!fT28u#uYTYp3Bfl}Fj+aGb?gZm2O9>9Jq z_gdpFX*-sCopBHTgZmESp7{^%yNr9*Ke&Hn+#CIa`+noz_#fQ$!z|pI{DXTS&n};) z|KJ`n?#=$eJ!;(LZB1hRNj-c+`IZ{@F!sdynTLHAm-lCe?f7%BOZkdF`H1^++&3Hd z7TAyF{;+Xx`48?d828+NaDUghhyKC+OXHsR5AMGi_k3{&PWwI&vwTwW?fezk*0}ox z*w>N2X2!kMG2FM~-rcyjK8E`q+{=x78{8AiU-W0y@`lj3M~-k`iamyVW`Ui)wnw<% ziG4Zl1C4vTBiuI<>@M7EjC=bd-0#BuP26ua?uAFVzl(d;dhXziySz_IEWh_~--dg6 zD-3+tA0F0z_8{Ja`=!SHINYUuh(Gy=`=7W!YTS=UcBFgO2Hs5?_enaGU4I*Iq1*^x zi2H}ey&QK$@%j_@9=QKu+$Sf57o)h3$Gv%L38fg_53e6_Uxa&a+*dJvxo}^TWvQEh zm^Z`s0SWzr;WrI`X!s|?DUED@#~JQvc(~z7u;@Gst~RpyhA%a|#_$Hi_Zi-4c(>v2 z3@7tARMOVcaFO9&hKC!TYWRG^%MEWZ{HWm%4F77l0S`|_f1%-FhN}#(FnpWg?S|hs z{IlU^O>I4;hDRBmYIvdHb%q}>yvy(hhJS#i46SB%8Hza>b3-8M%r@K#cHFueS)T;i zFe4jp_)Np+8NS@`TEn**e%SEyhW8r&!LZX-emC|&ww4;8@Ik}L&Fy%b8jct)F+9-l7{k*H&ojK#@QsGI8Ggy|=Z60@oStLH zcbwrKhEFy;4%TfSmbTB5MO9-y4_sp0*1$IbsmD7EKMadsaeD^5X5@Pfe`oj*Ec#ot zu#{7_5zM0NM8l^To@jWM;bn%`7~W!dr{T8@?=$>|;q;ca{ybRXJ|32KAm)+;bAQa^ zfuv=M;dzFa7{1N$lZHPq{JCK_W0Qn$Za8B26vJm3o)3E|F-b%0H#tA&9bVuz%f&7y zm05ieug7P&t3tP00nUKCc^uhE9!FM|&r57(gLHOEcG*us&mif*G}z@b=g3z>!Nb|d@hP%tC%g*?}m zlIA-z=##b=V?vZU-I3oLms?uy#=nGk5V_2qv5=IN+}ftHOH;Wq)?Sr?&6dT>|GGd! zblPp?G5pJVAk1#DD)2b|v#mo`WoRdLLz?p>y|y{qY7#eVZJ{T%pKL4Oa{N>Vo<@V8 z6nUuyjOr=$OS+~0EmanDtFlb5D$8;a<2t0D;i)X(p{C{CwwqAAvmuPE;mWzUDDpIh zH^V`A6Pym;0ZXg7fYjdNstT>sEh)^-p{mrULVYqwgRRT@UG|xj$F(k1?nBQU!X;g( zvVCt;i#J(wRGXyO1E;DO2a%PbCpe2pP3o3Jn@YMsg?)CJ_*8cCW?d$iD!;Fid_M?h zCpXaL;mFpA8~OLak|M2{W6sLZ4V={YlPUu%rLDNSxg-Vj0pB)KaI5Wa>nV2M(DFO# z<=1*uZ0ZDBcd>52Va}?{lcvymKU1YiVXHeO_yy%0yVgVPej$F6Y62e{{t{00mH7Os zCh(QWyt&>JNYCe-U`BqZ4DBOiW#D>R2&pUmKow1r{^ru{Z7}5~>%4ABq}EMpJsT+J zTdh8-jXP|OC7ergw6o03(%X{piE`@!z!4Pohqr>X5FJwQ?t`B2OhLIZ%SL?OHC7VI`Z9VK2O(2 zrs8kAb)oVnXQtY5Zz3&~p}VcM`04cCXcf#B8&YgTxosG%g6$*~n+TJg+8Do&h&d@} z<(*Z$K3DZmO(Mlxtrt1xu+8_2+11mXu8Q;h+I@GLTj%5vmp^qd{&!oJ75O;qwfme` zp=om?&J&VSDg#ehUQ*sO&8ITcx)a+I*8Ti{r`1pGPD!yM-$=jnDt~%Ly4RFPmp|-r z&DT5Iy_WImQL8g)DRDPa+D`u6)ODu25ItMPO$C4I6qO#mo!P+e%68{reuPok@6K>b zUPT)D*>0h%=h5$_yek8v1M$cL9pf`WieX25g zxz*e2w}P&qC%^Aj>~C6m9%<7Hq)jVdQRFXacg@gcS?4uRGI}pSZyxfhK#;io^vPvf zyR`qx&?U6HDstep{Ny)-J3qfWuX9h2PX#^wJ#J5ir-3KviTu?7poC9z(eIj>JDUl* zA#GpUh=$-6$7T)gQV)!&qFUTO>x^MZdUM*qI)T`Oex{nZoem- zX4ik3%J%2tYp3;+@}~)(Doj16!BwG#+=0nhnuMQB+M}QO^zlQ|o3qnKxT>PnR)|o3 zW&}xLGWB#mMVgvcl6L1I>FFXbNxSt>P3T+l7^$rZ9F);AIe+QBswVWCwS<zs#thG&awjZxE@Kt5JEKX^mBAQvv*>nZxoelOgR@-Jdq@TI^E+*&?5hJCs2RU^ zu-EMgW)1eaJ=LLmrCl+eHdL+Q$cHk=+cSF(amf5#88}b3s}kvnftkike9YZ4Hjyk{ zUj_J=cbvfi!7jm8!K|P=%y^S+mD3hlsDOJqsb@4m^0HMG%~b)*3wSqNO(e_#vMAi)1^H!!SnK(LVX*$w|NMAsjg0z{IHbfdg`aaTB zq|LQ7gA}K!d^uaRlI5Fx?sDdQ*i%l6fW75bs&G=d)j-%69A1vr!4zw7Qn|}-o2tuQ zL2b%JOSvoEm{Tw}H0D&y8QMIZ9xZc(TmR#}n6lRMRrFfcJn|aVqwCOp*plyua8#oxFzv$;iKZa;$On8 zj)!YRvU&1{e5BK*`$ zm@N}ObMezi#j4xE%ngA>w0K!n%gF)=h|t=ElF zOiaPx_+VetzwNoN3G<@qXVDU7TIpx9CY5EBO?P1HF{kX$$_3+57 zm#63UC#~Va%zn%y><;YxPKlSAK+FHTP-R7p$yqnAjPSC58XVt0Nvg}d{gn8Ke19w- z)%rVFen#aAzV#US;Qw0+!rYt3I%ZNA?@?N!D_=z(q)2FWGA7EHSpa$i`EI3@{}kY? z-G@>a&9KL!C$VC7lN&L~Oljw6CYtRMDl0mPop2Lf4^b8QM(WdE(@#K$oRbHwSPb{T z&$5ev<@-5us?c2TnHY`Tx$d^q-0h@7-EQw7E?JiZ z-6dY$_+^A$eN|pXT~<}-XUed|n?m~Ukrg95u;27fI&X4uG$?O&EY{cBmE0TG-PA*5 zztu7FK?WId&T+mX4%rV@22PNbvkFe?6cD{9P;RNbFq1j0I^BTwd>&r_ozdKgJxUu*Y<*S~P zBuDI3p|1EZNlB6!F*=re;&gPnb>A)g+ip80K1PB`=*f`Xb7Sc@^poByHX=vom(j#s z?qTm2`$<_vqOp;*qj-o$Iz;3Pdr!(6EA-~*wAmwyq@o*f#yZkx0{v{x>Sc4IQdK4+ z0B+7G!_BYGdj)!AZyRQpCu>ehkN(${8V<(o#i0N#_6KQ^>ALwg zgEDZ^bqV^qqAwQBBFy(zDYa3;%Kpf4VM@GBNqai!7^8{gXQa{dEqX*_RcIQi_LCcG zAeyQB(J)r#WoyHnb_N}de zE_*NQTB*q?T6e0^{Y0Yfl}=qAvUSrwL}!Z8O&pxy={UUA(Sxdw*KRlUaU^NoPCMC) z?&c=l<<^<;b|Go44*Vjy{?|07;6vK%pXfOSt_<8M`D4_lt^&Pe6rmpSbXzXBrs?)< z(pRrv+VyPmHEO&{Y}s~M%ptvD`fqHZo%2`?OiQSW_EU{rl&&d(#L}&b{iy5`Wl!^Q z8Z{(!lygYlklHPFiHez$jBT*>RfoFS<4b5BYkAX4&>hruM)~S;<&4NHbr-{K`V4bq z<7B%Z+wqhV&#A-{%;=QeDxU6Yj$q=w?-*$|wRog| zXh$CA8CF68W+ldj5E^qCjjN))INNg8;P&|PtP?KOB4K6ncm2u)xrB3>a8f4Hj^8%< z&||M@ah&GqTsSRF`dYki=(gMa80~h6?q?0?rK0yBdaL1J+Nd4P$cgMm&tctj0X?J* zy?#8>U`lL9Q%1j^k;Ug=R)*=w&{*N!5YlM3>j-QFSR{#p2f`?JyA%_k#a{SHuSzT7%jj}^N1^_rJ^sef1-1XbnOL25~r zl)tPkWo_M@W+ZRFMs;MQWgHB1rl0MaMZ37kk{M8T(X72#monNiqRGvnvqtDl*xrN< zHi}(Mu32ZqZh)$5 zLGA(QRJ?Pv-vhGG>ut{yvL=vuf>V3$1ME3QPO@Z1t(2ctM_$)4@_j>gqjtGohmI2D zv6Ezt{gXAEe6ucLHa>C{vXvQsrzx!`tr5pqh1fcNq3p#Z>uc^6tg@3>37#bDYjN>g zxmH_#h0STtTZwzBknB>QU_Tc0N;86#uENP!wk+m>4{C(Yci z9&v8*Z)tYL(|qI!h`oZVI(p2er5)a<-yl8Cob0Tqs{=`P&gj$eJ~#WH*EG)f@GZJ> z$=l&;r515rW*({^Gyf0sP!cZy>c`#c|Lbwnxl3$9_>QD!R8cct95A*APG+X63Y^IQ z!&XlfE0PnAgVN%e4Zc>g*G!ZZb04DZtZbxr-V)>*p>YEX-X%t}u52Az|(U@`UwW zK!G{aZ>i@B=S;sR`8d{@e&4u!&S7WzLy_BO`e8;!=S*MjT zdpVVwLs^ERm5k;M_(pOiwR4drr&-m3HYj0V`9p|yXuF<^>q6riv0e9uXp^>UHLe#M z*S5Cn8=>eNTr6LecY$uk-PBz0q+UIwTz(Y+ZMUq6v)A4o;SB0WWjq6fe?=oSFY|RTo(Pg;GjUR8L+{>7Q zI$2T94`&?;MQd|g|8zU2(9D%2V6ZPg@v@fJ$o28u6Er#jZVj^GCN z3dWrJQ|t%yj3{%F%t0N6w3W^9(o&mbSEp6W60s-lxPm2h`um(fne`ktaj%x=reqPePS z^rxJiWw@RD=qu4J-$$_X8|FJNRRQ^(uChP}a$RqW^0uo}LS57nPU>P*piq~Wy^`X$ z+>Cs@g&aMO{5~TeYaM6gb~$Y~@>rnA)Tz`0?`Mp>jMbLROOBpb;_{A0ZtK|{*K_<~ zdOnK#N3QkQ{=bU*j~>>RevHdIXt|%7lXH&Wk-r3wsw-qo)|0Zikou@UpZXxaGK_8Q zq}OAzrp|WrI?AjVV_Q2gOCO@QvcsXT*zTMx#@(Ywx!0d@-DHL6OW~xB)X#2Glt~XA zJF!B=>N=^IH6CtHy3QwEoz;l@j#II%MXc_TZ#$m)KSPDRV^!=CLNglN%BjbDqR{1J=3@#cenP{GiLj=Sq_?%Bmp2#%wA%%8w#w_ei(t_k(0Z!_7mA#9)_mRGE2IBYHSWj_GgQ}j92lNN7yyxB?Yxe{dD;~?Wzh$CY>6XQ4Uh9<{m)FIMYF zAMd41`m(+4T*21)Q}0tjUrzEeH8?rR7i?0Ve3LfGtE5&7oi{zb|okbCQT7$>R++ z%1N4Pn_9(X#W_i{Y+1kZBvOFC%Fq(Zj}(kLRthQub1dHe*y(8 zQWAbou4k6=^^V-#fH~(CS)F@AeJ>@Y!zumFlz!e(rO)|5yi|3FBnlkHjR zv^!6*pS&asCgu1jV_idWQ|q{?OOB5+##KsIN<=~(UAL8ix&KhIm4}sNTa~O+YoFhG zNRg!TpKLNF%Xiwj`-ck|C$ENOWV!+Fhy4?H5ccl$GdYRt5BGvy-c{CKYxcdaiTeQ@Y)D!d=L(gH1DWu+S;8xyG`Cf%iKPSmr3#Z1HX?scPr-vMKW#BpH``PMSN{{QCvL-HQ_|DX5dZrrz&q;Muj31*XQS;^|R z)T%&Lm2wWaHlAXgOF7p|qqj)=-b?<*!;&|~B3=k*WW9CqcVCyds1X-6; zIOStj)HR}Ck%(PtMAjA(GbeeJ(52{<*_2k{qE#elv0H@>MXQ*6Sm>K{=wPrqv{Z%I z*DO;D`2Xd6OT0S7t{q(+SVg?Rw~wnsSK`C@4hLr@K8yDz~@6GUrz3KRqGgi(4 z_`g53Tk0o=!d}`y(si80tYdCzL)dFY6Mkl)Bka1B6~URL@;_ET{-5d^K}l_t@1qbR z*)?3{c^8hZjHb9I@m+)lyl1QorMoyI3;6Z_)A+xWg2)rH-;g%6ihRi#Q!J0Nx8yyh zUH05E@?LVRMcG?+*>kRgAMq#aVcD6<__C4k^1b6&9(5A>o0^jo)7Gph*+;-tp(QG6 zyV8DHd*j#H!#qh?DO+wJ0$ubTK~lsSA#%}OW|io*S2DiD{u*+r8`*PsSb6c*Bgv!e z6Z1t#H4ks$y^1|HNX|0ma|MgKpH9pW+Id8(s0;MXre{7()u1jZMeH!716P^>tj-~Y2gF3avfqdJ}i6iSW zecml^tRyETw9Z&j=~3>njDD&n`m5!#BA@7YFuP+N`*F{afzN)Fi4!_S+r@Vo^2m3w zj=hYpUPt)iwT|}H3tuwcN_&+&pG}&5aEv_G1P&mw-}fiuD*Np!++~aiyU{RP{2Y`u z1?#l$ctOKWLxQY$IC~Yblha0w7P;ONdCT*?%JlB$DTBNs+fSPh{uuV~t)4(7?L9VI z%IRkrby&OT)k;zc_m48#A*0u|RU?wvVT8`5*G9gN&88H1<0U*|ge@|=uiw41*73?0CY*F}MWr0j0eV3)H~ z5BmrsXRV^kepk~YUKfs^1Nf0UuNXSI5koA{A6+NMC5OK^5MLQOw~{7LibemHd^mk1 z+v=s~OX(vc@&-`GJ4}D!n?LdXV&9wC{U|FgukSl4v=S+U0QygWopCIgag4Fd$5@su z=}H{SPGu|`%2+l?l?@z%+mYiLH!q=k85QksT-A?igYi4sjB10aji?^gPBG)DUG^uC zjxLAilUM4JpAe~`<&<;J7?yATh$L1%M8)!XgWEaiD(=m9bu70l*2s1prr)7Ne$IB; z`4-@tFAjZIp zNMuy3AJ=b)ha0NpGTuqJ+mXv#%uJ-Qj^vQBT1K^9yzPIFB~Yx0yfJ3WUCat)8JWcK zGJPRYMve&U$mGn?nadv|4&5(8gBZ!j#mg$u&kKk7;rn`~JZ(RAyLij^k(R{?t*Q=m zAq#dsowz>1&vC?E-$(3vJJviRwPw#F*}UCx%yykQ{*TpPq+SI3iEF!#tB{+WdCcFB zQODDHI~!*ISZB)SVUk)TBMy`B zdq1v`he8K1^~elCg(LZbwpPBg;qIK%b2Cm~mmS<;<5}=@W)1s$tE|u&;m0!~$=$Hj^YMf))%vfNd6OMT z8tE9L*OlCvvl=L5?ODmm8S|Yh(|sJjN`5@E=0jGIM^?#Kno#l$%O}y}w<2HGpS5PX zr5!$D$@!_YL2`f&y?(Q0tZ^h)k-d@|NzV|{BWLVVht+`-#g%V8J+4BmEu3*|6n^9! z+`j#gk%ya)=;@3+GBO^$0+gMbtQF2CobXS-+_ZhMC`QdNzt<5zKHTygIA z7U18WTO+LEZ{js)26p?c?X|ec{4Bb{maSvBsv2IWO6lX1&g3pwNGo+ILN-Z_7Xynwi5 z?&CdsKxPD~*)6QfCX)KoRbFrV-E&#TGe}k5NyU7tE{3^3K96|u{G)xxBjc+l%`Ssj zU?O$(z8I`@gq zaLf9dpI-)a- zIhYxAg&A$Lt$S&IujrfZ$+#SkWDAmA`d+JmOya4BT|thGb;mM?wgn*!E}qOW2u*h2;lWOjxOHN!tS4rQeiUvZ}fb zkv(2XKe!4v$y=^#HT`xqBS~*7kJBURmp)32jHsLNa|T>Lj#LI-mGOslmwgvg8F)Ku&_()D6@aM?iI3k=q-W;x3zhg_#Y}*|TuUle2mgd95Y0aF$-6QSUCEp&D z+(>ymNq*|b=(3=kCckFMxK|cfjQMqAz7+Et#=KOI(RTlNh48XA4)Qw|<&5zKN`A$n zoW1j6ez5`#jCuC2STsSl6xmW_&aYTBKz1pzOLbqf{jtl*XvprvUMKBEe+d2dI!RJw z?_+mmG<4Mk?3EH4`NaxZ0oCO>GBnaF9a%%_Tt*!JUJd%BE!q3jvfwf$-!hVK7;!Vn z8E#qDXM#pd}Q4&(ClANUT5KL$KdLimv04%lShvBk1ZhMSj7fMDAd?MbYiS z{sj_GQ6KV>7x~dQF;`7iv60JE%(F~&>eCeSWtcBxKHJY3pZ&@#Hu7?0m*bwSMvYvq zMtPR2qCRgPLc?n^4@sR3CSG}?6yr=ya&GVO(G&QQU9$XcM=bAh?V@egD9+pDEoU$w zJO3cxxUs)eBmMpibTKNZU~1TFuS2|)+$WL)?{x1P_JEFby7wwoF5ng>$5*LW15gEf@A{{{<=YeWIYo8?m>d2772e5K}!-- zw^FCBCh(U|yPWEi2Y%&3|GEX|ZE}yOf8B!FWj*HKDJ$7$+wT{o#%cn894X^8t+yxG zB!BJ}HQ4P-tt@?-Kh5d)lzUg|6cl?RyTUHJgj~c=$s|=$emiJ6{-ko>Fn$r_WLN&? zElNVpSxb6I_lTr&FC~_=Ai?J-d}g|j<&%<3Iyb@RaC{CsrcO#YX<>rT(fAy2Or4Z` z($WNqzv-6RD zC~GTe_q%ATE#aUgz1PJYR6#3Wj1!|(Xr0Or+y}3Qx5C%hJ)7SqV6+ci#~bEVdfc+- zpKsBXjjnQQB|7dT4qkh5UMc$<*?G!$wlX}yjQosyxX&Hzv0RmzgYbx~1qr~zvtw=P#%%MRxC zp}|tSl???JVmJ(GU@ri1N3w%b^YF$+Oe4)88Vec!rb5*0x=440Zg?ZF|VEcRGgNmgU7)ksj*8is-!<>DJ?DFsX!l3>g9F z1+*2(X*?H6wmqKHaAqMj9t9j51XF^(S=KH}IJMY?=C|ndQZLb4?M}P0TZQPL z57g%*I#PY4LsUk`sa@%I*bKrpAuPXDQaX^ZnWWox2`9uF4)Owm7c=}iRdKFym)0C4 zB>p_?1!AQVx}d&I7MM2KhgP-0Du}0~QG(w7#r^_`&4s(&C;Lk~Yh|aP6|y2#9Ua7J zpTDy$lhB<>>j`RC-tK||EAm2l@wj-3Ogl&szhYj%ONzE?+@VbVAdA#YzSIFZ%;cbO zaMR*0nH&WT?j%e)D9)Jv)C;KDEG6a*V6)I)RPuQ3^MZU^fz>RxQrW>(N+8vNPmZ8r~eA# z??Cu?ukUz7n{H2eG8QE>?;M%KsL5f6W8|>C$zd{k!DRB4>>>x8Hza%5o5jlGr7OQ# zHHq9ruCq&sU4cy+NmyzJT3E}k1IxybFpHOdAxG?FqWed`v~UJa_e?ty4{43 zZ?~7z!XpPH1s9X@9cD$A#K+c>6|mA^UaXBd+6`E)>w;gtTfEq&yzJ3Om|UR#px6H zYk>{ZD+AAyht!PBAg!F)+Qq$BCw@O|cY3=1MXMJihZ%FN;TFGU*FeV-+NpNQuXHi- zOB!6bNDEzH`8~G#0CMH`=k4Obs@9pG$|}c~SL@h|eGOIrj0Sx7NJ92ky!Xf$oRR9= z?ej4gCaXr2oQ@+c6AjwexIt>$4k<&AifpYvhdGxo`bj-i1}>GgHTuk5I(z|ct>IY3 zb*#trcicVsePlIbOZ0Cocw_}{-^uYBawkZO}dkeTTS;aFhKP?|4X6tt)+HYBYCeBNUQ@&}l%<@wPd84h)#T8Ro z1A2Kevx_vR`abaa0wulxt4Mz5Db&Xb(MMdIqSl0x_|2r<9*-6IBEfHRH{Y*^9D8-( z9p3S!`nvh#S6FO))q%H-ETBfMxsh9;4-@>qW!&CErq2-g?Zf-YL!EW0{(Zp|^yu>h zU*6mj-%j3u*Qd%&swA!l`K2uvX^Y&)D-H4`FF0s}fy*S1p1gj=BU8C)^0=!?Pq#KV z-|cqu9!kaod0#90*%7q)DR9_(BYXUPtjEJX+vHQRx>f9hQ#mg^-74di=oNbB5c$=X zGXoO~n#?bl5sxP&S^FKJf4A({c!;lJ4@rytnYDmFS=uMBO;buzvhaFD+NQ-F$z$*%CE4CCOzKMZV2ou`atGX?_oqH`y1I z^M*$DDy+NoUPbzpjE2(Bp23flL*>Y!$|{g^J_&27w~@=)bvEgfeh}2BEDabL?O%D* z--EL*rUqpnV#oI#VdQK`_AGKD6ymO>gc8kF^HdvbON?y^wyVXgaL`e*cI>m*i`(hvVnJu?HH(l3Man^O*U9Q}zy&PlR) z*C%<-Pw4yfEwtx(Z0+^E{8)Wn{}Ls-8_sXc-pM{QpM~xd(VgizgYwZQdHN1bBktk#FM3ML)U|n)p{e@UROI&!q^-Er!=z!Zora{?qP4u9ZLh3Yw(l=j zb!eD1OT`wgR(XA6mtLdt=60IJcey+lXcu{rF+}=|OMJ-t)83R|Y|%BCU$ja&l@V># zq3N8EWw@=1$UD}Q$X-m`*1T6`WtvXO4BebUt9ZlMo^qqXov^?t)tCRbp$@9-z zWmO}S{k^oA+)VCw7+sQ8P>pgia=KUZwTq>HdBU93J2K5~c{zrE#QPG-k5fsw|a9(GOA z>8J{olGEzYhpa2BOGjH%ZmLg()Ri4Gdo!n9+A;frP3KtSL{sXlq-#u`>{66^y;1eE z%gJ>;<%%S*?l3=m3y@tOsd8US&sxLZQt|Ukk9?ypI>oAM;BQzRI?MXrF4?GZu`V;^ z*;b7?q{F4(pdvTh`C4a}XM(24`wjeI*A?85*{zY+mA)~$x6Y*X>QFxFm@|B_OG}em z0C~e*C}VyRUYy_TCWN=*MEW(JWvaW+G@otCv` zJ!iYLMa~fpuS~8}d6Rh+Qq+lGW=rBcY$YvUzRz&!8?v{Z-;y$dKSVjX&?Jx*?W8h zcQU*LK8RfwC=y26qkLqIkc?~<9D-#(EAd|gH^sgNj=(p-d?{Q-fvn@CealDMhqQCV zx_#dSmtd)dOW_UhKyltJbD55X~b2Q2OD zd05)lE?C;vK3Lkt5%^g+1j{F} z942DtCzsRtNA$D*8T!2f7Cr;6gD1j&5`Gda`X|F<;3;rlcq&`~p9$x{)8GU6KMNj) zeFi)cJ_i=S{oj1j`}5q2Qy5cBPZ zCm60ZJk{_l!&e)=&#;Uc68|jnFKL^~Kk;kJrfRNtI_Ua zegH_g2$IFH#2qoZghiK>MO)+6mb{AHX?sq*!cM%lSxykdpR`K5jN6fhdyJlT#3pgI zqcupL+Upj5Ph3ZP9r7NnL(ERNLQ*1nB^T1KB%ij~ZpR{(J|gX1{6)1MI}e?)OWL~t ziMtE4k=VNeVOjSI%N!~0J<%j~hHq^@k+>zT{Yb6kOVT9q_hWS=y`bLQ*Z31Te;+u( zUtcvb?j~k&lemTxTEdU!|3%0p?W0-M6~mGSnZLx}SVGu5R_hsu|8e-2`Ap>FSRvSa znhsZCq?!Wpn*&PgyIhuQW!!LVJw z%lM|H#Jd~_%lshWZ{eRaHr<9@!frNcyaTiNz0=6IGUAH6htR^U@hR?AardoSezwT@ z5?ZKy_N-9Nlv%TDDyLM0RPb>7oO7pFs1z-mJ85P}WrixIOr9~RX3EUaIaAIlpHefk zdq_17&7D4LTBvGL&7^at%$iaYnsr_k9+bt~sDjZa4I0&Nq)II~F{C4HgIi(X~$aQv80_$MPn)ENXVH&n+Y|XIV&8l z5c4GOH#jk%G|O(J*hhG;CBh@`-SG53Z@Lf{A|cV1g0 z6`2?5?3^d^RGa~#SS7lW(ZsyzZS$rlg}h403Lz_nS$WANiz|eWAE--30I?WS=K$*P z`mh232eH}V)fGT8DycANEUuVECGc47JX@US8ue6lEJmSOL~?OO3oyCh8cK(oh#Wtii>cD3q)NmR#9Cb&1uka+OAiwqSmd(jfTqBb~|RL76VH?o`^=;dZ6K58#bmebV{m7 z=_4sS9;<7Eu5FHp^Q$^LYoKd2c4ApqGzq;@@QFNF+#!+d>gO7mVY3vtJsxQzPLgE|Y#Rif0fC?uN@zvZ@eUX@I~k8DKw&lbO+{jF zuB)lVvvJjuddR&d+PxyO$?dc}Bv(dK8|%>!Vb-o#8NN+13IXm$1VBCigLP}NXfyS8yD zAPr$5uNB(0HA2=4t$qpq;Lp}q!}&ssH7ZpP8VD#Gm>{9o18gB6AQJV$K)_MV!mMvv zeKSy@hV?BXx1JPBN%g||wn+PCd(%8tJZ{^(+E{CQJc&-OrdgmuTr?cc3Z7dk#N;86 z>S8eM4w0!t{g84F9Atnxy9p0FT--M#m>!aOJ`B^|6LR>s5{EAW1Wz)=-Z+3RNXWOIU+UA;_X$$6$4sAh& zn3lEb47E{VEgTirrK7^SY*bj6j|%IGQDK#j3hT;IVST7VTsWdsX@q3cQL=)=DO<)g zPD2l7S4s~adS_I4=$}#Hp@&9=hdvq=-mtxtX$Kjf>{4^)hYE3NRwQ?Zn0B@WuMn4w zTu2!=kKL~j3r8*$hDScAOm^*X*{cv`S?M}6jhH$T#&9;kA)=h*nIln3`^7Ux##FxC zB_kqcyw+Kx!Bu2KBcm>>s3%u$UV9|AVO}D-zCGHSnpYRwOb!uTp5FachtlxOFHh*Zw@w1H>H$h!6@Ng(?)sfarZ zm66eS78?o8SOD!0Ez4h>} zsiN$5TH(~S4dXJnD8o&qF3v~> zJ%gtf{LNXLmB#dprlH28Cwnz~Z0d(K{}fSITIbqm59v%tWS?2m9H+NDvQKOo++`KC z)iWB*Fk@ynwi%jX?;PYxCHq`K4gxeF`;@N`hI4)t2G0gpW|h8!lyy4D?y0#Yd3$G= ziPORJblgxX19>kSiAfKM>DOXE+gwCEFt@xF=%XuqD>p?a_I> z!%-7mUx)3o3X$EQQ59SO>@P*ZQ4z;(4Vuu#4t|9go_{9p6mSN`Fg{Nr-s#;I%Iu_6 zi0s;wwa{uiX|J=}?NrZj4qevb*yOn)tEA5=)qtas)sgnD=*ozV9tsXyjul`@Bx$!U zX^*#Vsu0=zMylp4bfx*(mr3a&b+Ke@I9(issHkRlT++zw4XwtuDS7yHvGwucR3=?& zWqZVqRVP!5r#T~whYKj|?CPE--xS?ITgi#$&S>j!KJ}0VRMWH1OqoLQ&I&OK-kai` zuBwlsn}7{X8-)rq$GZ}((UsUIB{MVJzCfB|UW(DSsw??X$kHvNgrD7Xa3#sqJa^N4 zM9~m#GPNWgZ;wX6e)ctanli9^Qm{#*LaoLbz=-Ouc&LeY(eiYpzEsGyv96A$==u={ zwZdkj$mpYxTr#y3#}$~zMo=n6+FfW4v-j(fTqqX5Db~={js^ax#K#NL(UDfl&5g|N z)OuKHpeBw=9L*bX=rzhtbXK;bYaO`^BN{4*nef_1tI;VS&s&*@r{WYFZcmL^?Mf0XBQ z?(BBtT<(XPbI!$f7|cFPcBSlgY=WkgRu!tnl^vg_yvm7#(v4lI&aM;&a5Mt%^t^Ol zU1M!`Ym~j{3UPiKoDF>?wzkq#iqq&HN!V}&Xy-JuOFPsW5yyKT1UiYQc~xxzim{%& z^pxe)!TY{yW*YB7qY0=vdSh2K)`~Ifw2E;l2YZafl$V53))FrXb^JN*Y!E9~;2fxP zrNfbws){H$oizlUwPfaT z#D*?9#rIS`^<1oG-0z5bPzF_|&Wmh57x3VCwJSZXdsRct#$}$`8sg1etsB|B@DTFy zqcD^e^`HzQ0)Jp-9HS4mBftHO}3-V7Gy;y~GoPY|jw+v@Mk3a0mqVww6~bheA`kWnQ7VSkCHv zsCv%b2E~H)Ty`>O;YeZwrsd3F@mfx|LU+mI)sl2xyv<&3lU~gqqM}tX=hk6cx(hvZ zIfj(y7rrBNpGmUqPx6jzK#MjsjlV>Ij&2Sk9tDmxR>Di?`0@ zk>th|kxqA_VA>9>;v68HnhN1qb;iWLj6?HsC6GbT>^qL?%n#d&ANr??k%Div@OlIW2l`h+-Y(~M;bs*18YheG74V3O{C7tUStrT-X;!TjMo~ptHx_q zG|{nn9wwP-*Bt@I#pg65GXQvMbA;tMGE9lO+p951Pjh_Lt3Bk>;7SGb%**J2p9{=r?|dDlh~PM0|DpEqZ)Bk3)=#qONfVs|=4b9s|XU01Wz#XM24 zqOqYa+}O0XwjqqGd->_)N9)4EzhYH=xNc?rb;43Cit*}+tJmwJ3GxW(W@p1HT#+kL zIiBkppv_m>+`D~+D(N;;Xbrf4*igHy3Ku`~8)`qY*1f+cbX?;UzJ^9Xmg4ug8|ZRn zs&ymXdBlxnTtJ;nAaV(Dp?bYdSHR&LcMvb@$!`;5DW7gVs(B00M42dtTZc>8499Iq zkeR3;nFg@1nm-II4=eOY})!rD^+W$Tc$#5Y!W#utD34HLo5x)pWdy4AI7!;Nc~G=8+UMwASKg|Ay#D<%vAt!e<`TBlbgd$NE^ zWCrEu4_X(Nco(y(do^5j&S|P$QB~Ja0}k_=YQw9V8rH6Etg8{erd18$x)rrT;(~kg z^17vA-1J=<7I`Y(RJUw-SeVVr8=JzyY7RHm;g+qxdDW6|Q&n|X=;4J|314_QZds!L zOm*EhhaXjRmDEQ~rn|fp;mf;zL=-h0^SUs&@l*LaY{n09ZwOOQb+FoqA{t*_eY!vm zI2SeT|L|qvJe8@MUqA^mt|~chRYP;#vWD6k@IlR0P0V+WKom}KX1Z2)^F_(3ShO2E zuXLApeS2gB6hN*P8tzv6R@XK)*EKdEfeWOoaaYttfUBe0YTP4Tjr*djkuVTY4#Ik2 z@q=?X!9ZXj3m8La zP77UHZ9x(IMzyvEcVE}kiHowIF1t4t;lO1_@?It@%Z|oI2FFt)VDQ>+YIY>mow%AX z5(*Q#FgsTIpsUC^&vU0sF~)nq$Fn0`r*mLTf2(7cf31|k{18BHo0vRQPR2-z zi9_VCz-lwHAu4hsyzrbhfBt+=9KQtYz!%KV#20#S7JA^9dg7OPa4z$}FZaN&@WjhK z@hcI}Q}r&zuuKXa_w$8?psKxH6yjM;vjrNB$pRd<;l4RvXBR~jw-XrBO5CCt0615; z9N!w{l?4|kh;z?hj01*3&YapM8H*OkcB?9t2dr@1Lv*#BNOeWp9f--VAwayBa-O*;ed^2a!L zw&%u^bD>29MLX3C8__oBMmB0nzrq1wrsGM-v9mLZDb$EyFAHc1b$LCS6n?~MR3?#^ zfY>Q7Ss#sUNNp5mgx`tEqb$io@I*`mBq0B7v?(J%@sxb;Nhd_=B&eE ziy|sph1nWu-53>qen1zTSSZ>fa_9|?W_oEu6jLp&QN0YaUAjmlT^rR#Rgkd3XI{YT3~|t)=glV z9!YFDAy37U;=ES!hZ_Q;kkqM((|u~v0D z`~ez|MJY2*gNYyPPNJ1qnt;c66vubM*Gg}lwBie$97#mQI48oJSvaiY4H|I6Z>L0Q zCnyQ-RVo}ulT;LMRj3%fzyc2AF-Rp!Do)t3Ha;aJY#z2GW{(LQ>q%6(+6qRT0Ub{O z$b!UX`cTlh?X1paQx|#NN0*Y5D~dctt4RpNO$sN$N#=%Qq)-K|*a=QW8=^PSZZVpk zbnH%3bUg%@OyL9x@=B(tvyk1DfJ>cHO5&%tNtk$sHS|AMvgRG6nQ#OY;m5>Jzj$nk}wL~Jvjg^T46-5VgD{|YS z$<~D3N&5{tsTB%!SM!)FbYm+)3@;H;4!?9HP{_Sy!cgLIk+=a+9;WUPFPjO|hF2@e z>5pInL?3mvx6!+o?Dbc0pV{=9R5F@Mful0K;8ivQWIFiWCYRm}_l2uYtgx{?-ZM*- zoP#7LwApPRi6ml6GOu(gTabjnRTfP75Z$4-L5{_3d>9*!lcF!NQ&0^BaV!x=Ow@Uq zs>q4B%@lK8Kni+suD8qYuE7F9waD|uPk%c27*ElT&QuRuT_09wbe%=$WX(+oJkbM8 zdSC@6ELc{&;D+2p0*P)I>ZF*E_IDSQ!4D5E$h<!>VfwEX#U30c%;n4`@aNr_vh$<(a*3Jsl*6;cf z&fyrD2T@2ckD=fKuGQttj9C>E2|1HahU1N!qlug7$Vvo|r*y7*eilS?FATL1DmWLWzqpp5&ixhQ2qGJhO&L_qBgOXKA5?USlY#hVS zdhJ12fU=i>r{fb)!&H>I5_-d3*tlL0%MSbDI0IQggF#Jnn2@wL!}1flvz43_KBQPR zau8|kP$YJBCc6qG6;$WYXtQRMV2Pw9kk;1b|{Gh%#nk*3h&EP|02l- zk@PR6RGn3cM56rNI=oVB^TpJ6uVn=9SddyE<5R|xq;p-7CHRj29D=wbC;bWOmFkf=bTkI|8(99EZZ=&u!JvtXJSUr*1}e!0>{ALqA{%+4mbTC!N5cm1BG2yVRQ4Sv zI6s|$z9I{+g?6>U|A(wh8>a-_!p9G&PA6HY;-BvgN5`MK^ZqryXnH> zbc|R7Jmygm`6G5!UN%vRiXf1v*%YJct#E}?irEqfR)f3(q8$feDc_GRa99Y6~`p)MBHhn zpu>(ew{2RDpE$v#4`Fs}YJ)TC>xjduz$4FhBDFLg!HELHCxcDth{FOGP?$cY6cZ?! zo@(m6_9BcMd%ZLwpa{0RT^-j9pNjJcR zBj0OYOWbtEhNV%QDhgZ_Wmb#aq-$7Fw_9dd7SlgpFY37UaZ?=eW={UEPrabUwB#=$Cc;7u=J(tJ%@+e9Z zREbN)vC>Mg5;HJQ#U1C$NzgA;>1eRXLEtE@4^b}RcOv*zCYYflK5>$aMq^7e`i*rv znX3W>RlM&@+m9k2$-0h?E_Q{*I7-1-VEZid_O>_=P{+Wjfv0qgkeji~I9O|Z1SNep zl4Sjg`KM<*8X!v4kI{HRxkdT%zC3jq z_G_&qZ7@$0ATPl8Q}%58EqopV)Up+l9OHB|w3Q6b~B(h`uBqvI*5?a2y_uCSFU<82?K}uaN$xL;UXZ!GRdNF+I*2iPvsEgQq&ze6sKKPKSh|v z_!Rx3%}@eHLFA~;^`+v@E_o`>J16|=k|^+|u%J!F*>H$LM5v+eZh9`#X@@u!r{lt@a8?MaSpVD-;cv~Arz{kgN{P5W{WEC z$Y3cKQRwwGEds#PH0gA7{iHZTiyDGDD4GcmJlTjg90m_ z;ogg}U2wge({Oe2g7c{2u2=_eT#z@$99!5#N}z5D=Vvo7I}7-cb_ji(#F9k8-8F%* z7>-j6`c=MjO_8bglC*C8^n3RL{4K=arTDu{d|zs(tf&3H!ph*zU|%pO@Oe#2hIH{K z*q-CMcBk1Q4b$q@^;1?$i!QgDA6;uoe0fsWK2d5}c5kQ;UksDq@cBwtUNTn~2Ydyu zi)Zn5+d_fQ03yT(OcB1o;R;=d@8Ody`~8KFNkhBC4Bo66`XPU?S0fgJ!EW(!g>qJ& zEXHR{w@K}8Qy4j_bl&sUoWDz7p}n&opFVm}*Z$MEJlHo^*KamI65P2{H*PW4Y|+J& z#)rW5_l*j9evxjzV^!9hW+gtBF278}y$jof^{R3E!SCyKjQgc*lfl6JbQXf*ON|mZosT!54 zQ>l8D`mjocRq8sGx?ZIsD%GY^wo0|D)QeKS3^uim67{r6>F2`Xd6p|eW9y^ zeYY}T?W1Bqll#!-CMa^KFDP#DK@O93d5dLA%MjbGFU#9?8y$7ny2P%pl$t4ZjWTsp zvt*eG6~>nvgkd~w&Hgnk#KUHA2S!M*oL(aC@KKKWxJfzIFMSWo9bl^xs%M$qx^}`> z8|)#?BBg!=1W8{t@G+fq(bB{YOZ#u%=fPa}R;}l{MT@j872>FA{)T>eTNr)}{C`Lz zXP(a>mA8Yn+rIGhTgKH_2V~d0J;$=`dWEd83ehnKD?9;_>d`myL0KZRrLf4+4 zA^mIPK6$6k>C6%F2DA*$I)bV`<<8l9eau2egTqk@VcQ~~lSuEZ{lYeCx##jBp z{{`7z$hNYjw?!PVV6}u(o#8uTP{aMVTC;x-tN~e4uqY(Hqi_ag8aaRWF@pp0yn;pI z^Wa)h`MqQ+er7Zl};25IzdM z0rLHzd%)1SZYD_5t{hNxKC(#sLu$8Lf=xVWM`*72G``uIN%x5p4*5sSS-%8NsO3$N z-)+tQBPb2LiMD@HgG~zEuxPTLbIfPTF-3-tb*^Qy>6@%uhfTA^@c+@ePu`^?)AHH6 z`G_yvGO%X_nT+G&1a$Rm;TbuYblyh|Hr4QTlOzNAD$OD$pjpHOG%Gi)S@{0Uz^E~A zcWMR6w^h4{q?guXqo%cg)R?blqJnqc?%%vbyQ$Qa_gJ!b^CIyJO&*4ssSNd1h86|IA24Yc)*CeTSw+QP z&IX)e>NEmD-3Jy(9S5KjJ7|nqCzRs%?^z`7XSF8<1E&AUL8IpVjP_CH{}^-L^@uTe zgB({J3W-1AQz?dlE@dU_3mF3B|AOm%pD~ONFbS(x{uw2q^LWtcI3<0hYH%FU;&Rs7N5VGZ4X0hK`jZ$d_Ld~rzpEuHhCVuL#nqwRK<-oyUczi|Zr zHjxW0UUZ09TkIIC-ZvNHyG_nqsI7Vc9|+@lZenH@oTz5Oi6|{fRc@J@d8Vt>OqB|% z)O?k~w`-}ul`6GJrLIw_T9sO^Qurz8LNSNE$)I-r9QccyN-aHviA3L<<$2tJyU!u< z40t_+hvy;Z*#p!1J1ELmjjet|hcusuY$|Q|vqAA|Lms86{j@>+oZ|2u2=@uo&>RmE zj%T-c+risz65du0`%JkHUeSQA{nob(UH^<#RaplwsMov{vkN+1bF9df-CKg}K_nK=aXA2g>ku-yJ#2Y`O@OLD@s8!NQpo5XFpe!_Q`dD!QhQ?KiP@qJyw zMSRNF6}%A6;ZKZYuwNDzhvdvLS6@^gMAg~_vZT<|Bt9aBuBL&u+9RBg&2LD!)G`kb>iYn?kRp^&J&R)U#EttKX0QtN&Iz6ZXh zWa+ZBs8?Q)f4QgZR%x5y5fyAt$37{3MWb?xF5WOq+sHZWe?Z==hYa%(xG$g8;a~p2 zI3TC!Iy?>AHvEr~(TCsq8FNOjVg1H>Kz>=b<+vi?OuB}}ngx4B92>cJSqEjG0VUAI?dA+vXs5bj z8-^xSSy|aDeoT@GVXgBu-@?!qQ<4f$Z4a5+-pS;}+v2};?J)Wr{t*1Sqwu(cXmf6@ zsav`GbmN3?gRPCbR{NJyYX07!RNzke1cD^slo zso}gDv~R%hm1BzziL2$imZ340ukeucn|i2g3O)ls>qwNuK*Mj7r{h<6;`nTbTMi!v z$i#6zRj9=)KC!rS5k6}GldGK3-q+u|W}s)FM_dLNzWIULXp~%oY+8WzKC&22i1tID ziS^da{`K%Sbn&Wj$ql9mg%*W+7KzE)TW~GG3e99B2AYqqyc%X`8t0I`AP~NK;9wyh zl>cp|Q^9_GcOji}8U||AwV_P{H{;PDPK#M^T25Jy`AC4|5W52Wl`nV;>Zt4`0n!jW zgiosNvU*x@}vYsO$tzb^0g2S2*llr7yN=13W&(C*{MSo|L*SD>;8wY+`Q(a zLM+Q}u?Bk>9zbOX4Y%pjG=_P|pL`jz*mUb8_@t*StTAa_ZeohxsHVSN(rGr+LarX# zJXw4KWg%6-4D&Ic8hYX;jkHx&%a)(iRNM^JIRzINY!kZ9()X0=1u2(R@hPz6ur2QJ zX58&fOrhEz_p53vd+}9awN%=(7+=;vmGi+ebQZkg`xi*#r3&miVD`U_whCxf)e>Bj ztfCE!IbYPe?h+H!#5^H0`A<--pFqVYsa&enozI}IJk8JW!XDA&7yX9V?_c)=YWO3( z{6o`J@;jRLg7qSgW(LS02FJ4`@nEqo{~Zyr*C(GR7cywuw)nD-T2a~p9r=c@_4R(T z9$%+5s8X7}(3xNPpy4n2-sHY+`;lg7*m!saGQJDW{@qxgRR+5;w7%mr)zbdo{m(If zKm~u#_^>HO;-=)B%dosWJ}+p9FZkOAw0`kRA9op}VglGOS)il9j`pItvD;C!d%9(= zf%OkrU>Lox$a{1{AE4E@VI1*e3cy4mgBD~?bE0WCmZHH{@H)PxWw}RyHxXh z)0ku#{bH}FKa1(;hcq<|EH7g_zekF%nc6$XamYG&gLr~`Q2lo6QMn6Pl?L>LG|N@0 zTNaCZh!NVuf?~uc^Z~4r< z#|Mn*+_U}0W#1zbpVML$<`{FDIo-UhUkmK8##qzj)Z!<429E!B@xW58!F5qbG8{Y7aZTIowvg(vSwRBYXQo?{eLQu zu|T_BUJKZQUSr;8soLW^0i9Au=bHg@ygAXlz$`T|IZBtqO4nzYtaIIc zhQ>PAizV;>7@w2xYfoQ|u2yCft{(en{krjiG08Ua?qk z#-7bCUGBy(#6)}0#J(}$JVbAnz4*p7Ic1-Oy@0JXOdfuQ<(fA5PJ78_zOS|su;)!? zBKNfK0ePQpEpwN=l{_)Cb+L9+1>~DwaclqUTHyn7?3flybkJ6+ zX74rN$)Lg>DL=RMO|u!VEVzUJ|5~f;2Bf7t4!nLve*si*i44IA^%m^8I=p9qLxxAi_s zK-M3Std~H+h7k8Vn6_TG4E^8T9esJi0(KK^dSRu2F1Z=Y3%7IbH)+b6gWmWRZBSzc zHoia{*NwM~=V_b3&%@ow;nD7!bAut+FxeqPe%_e#UlJ>$EtTSrXrW*6Ij8^m6^4eo zU((`+AiaGLAFJO;3PrmwExf$KIz-!08obEToaK(3QY4GVl1@#b^$)LvIQB^_i8unA z|5;5KV;pJNpV5sMeO+=)i6LJ!+Ky;hgT)5kuIiMFjW1{V)MTUhT`T-1O4v*0-c33Zb-FjSps}h2-7bOz zA-J(p`phD$IA|7IC0b|>22`P0VikdOp*Evb=39AFr|9|jng1$Fi_LtFZpN7r#02kx z^jyBjlL9RgekA4l*tm2W78H+2xz{8Qle-;~X%P`6F*VHfKn4*(2(C} zx51{(Z78FS%5Civ71gjlFQb5~NtNQ~Qoe>Q@HD;qr92E*B%Q`tmIoWV;ZOO;7ifO% zLBp8vXDhHx%K>DP9G|b{Qp5@@Dv!zX*CfKg8UzZg1>OxT$wXJFs9C;K1}-X3$nt;; zd|bhNfkMK?->UL%88}Zt3%q2n_acl7JQAo?NCt}jJa9TN-Ju>REMFtb!!j@jRX8Z+ zA4iRWAG)>4K#6M7L~hcw;%okFO;)HHC{1%q?WR&MyQQ?iD}mXAvR(e219dPTu>jJql9urc^AY4HXNZ?EGmYs4ZN%<>wvuy2&#n12}bxA z1woN=Zp*uY1?3-dghF&)R^XQd4x*Xi<->z`zMfivzXk>MJ9y>!a&Sg|;A&EYpRyuc z4~f4LsB`|VRYlXyeHKj`L^LflmE*J~4^?%LC|`ljY$QpjLMs)y0&Z+N=c003p>V`$ zRo-AVIu@t`jaB%oRy5AZuSH%t{;pE_zQ9LSZypO=0_f^x4`PT1k|+sC=b|SxSHS ztaS5P>5rY2UUycSY=Yv;VESYLyy+XyN@G9{%7+3CN<;2W+Tt#zse}x((+Jl}QLl~z zc(851p0HPBz&Wnzpoxu391AqNeLWUuN$D^Ej)XC6I6DKU3H=?Z2B9{-b^JP2 z(&?XT&_7hbDb7qdz2fOX4~Bw5OtT^CLBpAlJV1{6dwpi&D)G;+(Dx0_l z@})#OZD$xXS0UtKln+oYnRyx%9BGiQui#7)JK=o28(2n&Y15KRMS)JU%|+CnwUlse z-7ZBxSD7kReklsq6F)=9y0N?`Eo(h6hWahdVflX2(W}9oCk8Uk0C4KyQCXkXrv+$^ zD+KO=c^R6HSZG*IlQsA5kXFDS$eBEOGS0#@EX>BpF=E?Rn~@LQjNl9f zySGzvyVT@M+u=TIng(S0=le7Y+yebQb&K@N!#jX+x(^P#-?Ap;ZQW|Tuv2Q`vsG(sxgp{QOoq z+P`^yTaA5tqy%@{@0N1wy~h5#!Q>&tb6&bzF5HT{7P#Ow0UW+}x11>U?ZYQ`u|P!n z&^|dy98>91q)+XWlSSX>Ie!Y$4}4yhiKkS0D$=ihUS259sPsih@3{w`(LHz%<4;HW zxqIZr;-pH?KzjQZ@Ri$pzrgvkkbd$D@)GfqO3z06?JwXHx4ZXqeh}#c`|+XMqe$oF z&m2oK$36wiJ{?{TtT*;U#BY2FJ9S&Xj9}MSa3$y1R}edRzch3AKR_A%()zS~qhA(k z4?QUJw5?yo9loPql~>4p4`GLN-`CK^Z&PsW>j?IJ1E(fW9zg7YZz6aO7t!RthXFhN zFk%lKMDQ8{aroPa9e7k~+vJ%?rQ9YD9HQ_w4)@^p+ctR=p?r^m7al{f>v078vC5Ng zQ1HML6rAs_~ zT|97<(;Y}ZbyUX0t12Bw`pi+hTCwLRoPQ(I2Y(_H;yIO0B7O2FxbwRmcPsHZ=TAT} z@5PeYe;8?9)25G+#d6Fif%V2urR*zv;Aiqv^2wi}Nw47=rmpETsppHgNsP}vEO7hE z4*y){PtI1_;R$z0;_VofIf(mrePu^Ee2v319PU0&@P{~jio=&U zJk4R>^YU|2-1|H>l=Pg-a%JunL>=092XS-sm$>qE`j^nJ{lAeIu=l=(&e;Du>csbc zkLZy$0#^S z!PZj<4xYj`ztpeB7qa|LFmX|P{*k^5$t-4?3B4wjhEuDktulNG$g+3 zukssE;J*UrDGJ`EVBgbll*8B*l283Nf|n>b zO~LMeAb5y^U1ty+L?B+E*qJjjUpM_LC&%cb#R*o{p!Pg zEqRcFlN9vbj3aGRMl$2$I931Z%^Hd4;C78H<=oang zQXIJjTb}3|g1m8y_6zjt4h;ZpyWCy&lm_U%JG7^@r^}w)fjVD9o*}hcWQqDWprN-8 z_Gw3Gra=C&oyga;ovs=@qtV#7m05Y=R_!QE0uu6#+caP9guKtliRph6%!zk8_7D>i z>m-NIYG~8JUEHQuKc~suhwjkyo$}Njh#t8U!O1%{Bj?^dh&@Tc>H848^c4iV`$6CU zf}Fkwk$fA0cJiwTwtgMSSHGd@xmyn)cOQb>=MZSSz6nwfeG|!D-$HPbg0~;meyYhc z2f_8eM>S)ceCcrwy>=R*>^rRG!|qY~y~DVa`Q8%%?)ff)1K&mR$agjR20i@;JHh|a zvmR$j?)TsyNBUkM(XBW?GXHfPb}|t^fWKGEgrME{vFM=6i-o`@r%Ry%aPC3;f%{>k0H=Cuz6M;x2|xS}>Oy=UaPA(5@ryXB X61U^@Q6NrreUajzgHX)G3FQ9;c&wJ= diff --git a/dexmaker/src/main/java/external/com/android/dx/DexMaker.java b/dexmaker/src/main/java/external/com/android/dx/DexMaker.java index 411418f8..3f151489 100644 --- a/dexmaker/src/main/java/external/com/android/dx/DexMaker.java +++ b/dexmaker/src/main/java/external/com/android/dx/DexMaker.java @@ -471,6 +471,10 @@ public final class DexMaker { } } + public ClassLoader generateAndLoad(ClassLoader parent, File dexCache) throws IOException { + return generateAndLoad(parent, dexCache, null); + } + /** * Generates a dex file and loads its types into the current process. * @@ -496,8 +500,9 @@ public final class DexMaker { * @param dexCache the destination directory where generated and optimized * dex files will be written. If null, this class will try to guess the * application's private data dir. + * @param fileName the name of dex file */ - public ClassLoader generateAndLoad(ClassLoader parent, File dexCache) throws IOException { + public ClassLoader generateAndLoad(ClassLoader parent, File dexCache, String fileName) throws IOException { if (dexCache == null) { String property = System.getProperty("dexmaker.dexcache"); if (property != null) { @@ -511,7 +516,9 @@ public final class DexMaker { } } - File result = new File(dexCache, generateFileName()); + if (fileName == null || fileName.isEmpty()) + fileName = generateFileName(); + File result = new File(dexCache, fileName); // Check that the file exists. If it does, return a DexClassLoader and skip all // the dex bytecode generation. if (result.exists()) {