From 97193ca11d113c91ae4913f91aa499d5ad87fb53 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sun, 18 Dec 2022 18:10:21 +0530 Subject: [PATCH] feat: use attribute handlers to apply attributes in IViewAdapter --- .../ViewAdapterAnnotationProcessor.kt | 51 ++++- .../assets/data/common/tooling-api-all.jar | Bin 16112178 -> 16112243 bytes .../androidide/projects/api/AndroidModule.kt | 28 ++- tests/test-home/.androidide/init/model.jar | Bin 65261 -> 65261 bytes .../uidesigner/fragments/ViewInfoFragment.kt | 14 +- .../uidesigner/models/UiAttribute.kt | 3 +- .../uidesigner/models/UiViewGroup.kt | 1 + .../inflater/AttributeHandlerScope.kt | 36 +++ .../androidide/inflater/IViewAdapter.kt | 96 +++++++- .../adapters/AbsListViewAttrAdapter.kt | 38 ++-- .../adapters/AbsSeekBarAttrAdapter.kt | 35 +-- .../adapters/AbsSpinnerAttrAdapter.kt | 40 +--- .../adapters/AbsoluteLayoutAttrAdapter.kt | 2 +- .../adapters/AdapterViewAttrAdapter.kt | 2 +- .../AutoCompleteTextViewAttrAdapter.kt | 39 +--- .../internal/adapters/ButtonAttrAdapter.kt | 2 +- .../internal/adapters/CheckBoxAttrAdapter.kt | 2 +- .../adapters/CheckedTextViewAttrAdapter.kt | 26 +-- .../adapters/CompoundButtonAttrAdapter.kt | 38 +--- .../internal/adapters/EditTextAttrAdapter.kt | 2 +- .../adapters/FrameLayoutAttrAdapter.kt | 31 +-- .../adapters/GestureOverlayViewAttrAdapter.kt | 53 ++--- .../adapters/GridLayoutAttrAdapter.kt | 44 +--- .../adapters/ImageButtonAttrAdapter.kt | 3 +- .../internal/adapters/ImageViewAttrAdapter.kt | 50 ++-- .../adapters/LinearLayoutAttrAdapter.kt | 43 ++-- .../internal/adapters/ListViewAttrAdapter.kt | 46 ++-- .../adapters/ProgressBarAttrAdapter.kt | 93 ++++---- .../adapters/RadioButtonAttrAdapter.kt | 3 +- .../adapters/RelativeLayoutAttrAdapter.kt | 35 +-- .../internal/adapters/SeekBarAttrAdapter.kt | 22 +- .../internal/adapters/SpinnerAttrAdapter.kt | 43 +--- .../adapters/SurfaceViewAttrAdapter.kt | 3 +- .../internal/adapters/SwitchAttrAdapter.kt | 60 ++--- .../internal/adapters/TextViewAttrAdapter.kt | 171 +++++++------- .../adapters/TextureViewAttrAdapter.kt | 2 +- .../adapters/ToggleButtonAttrAdapter.kt | 37 +-- .../internal/adapters/ViewAttrAdapter.kt | 213 +++++++----------- .../internal/adapters/ViewGroupAttrAdapter.kt | 38 +--- .../internal/adapters/WebViewAttrAdapter.kt | 2 +- 40 files changed, 627 insertions(+), 820 deletions(-) create mode 100644 xml-inflater/src/main/java/com/itsaky/androidide/inflater/AttributeHandlerScope.kt diff --git a/annotation-processors/src/main/java/com/itsaky/androidide/annotations/inflater/ViewAdapterAnnotationProcessor.kt b/annotation-processors/src/main/java/com/itsaky/androidide/annotations/inflater/ViewAdapterAnnotationProcessor.kt index 5769f376e..c77bdf356 100644 --- a/annotation-processors/src/main/java/com/itsaky/androidide/annotations/inflater/ViewAdapterAnnotationProcessor.kt +++ b/annotation-processors/src/main/java/com/itsaky/androidide/annotations/inflater/ViewAdapterAnnotationProcessor.kt @@ -48,7 +48,15 @@ import javax.tools.Diagnostic.Kind.ERROR class ViewAdapterAnnotationProcessor : AbstractProcessor() { private val adapterElement by lazy { - processingEnv.elementUtils.getTypeElement(ADAPTER_BASE_CLASS) + processingEnv.typeUtils.erasure( + processingEnv.elementUtils.getTypeElement(ADAPTER_BASE_CLASS).asType() + ) + } + + private val viewElement by lazy { + processingEnv.typeUtils.erasure( + processingEnv.elementUtils.getTypeElement("android.view.View").asType() + ) } private val indexClassBuilder = @@ -143,11 +151,31 @@ class ViewAdapterAnnotationProcessor : AbstractProcessor() { return } - if (!processingEnv.typeUtils.isSubtype(element.asType(), adapterElement.asType())) { + if ( + !processingEnv.typeUtils.isAssignable( + processingEnv.typeUtils.erasure(element.asType()), + adapterElement + ) + ) { processingEnv.messager.printMessage(ERROR, "Class must be a subtype of $ADAPTER_BASE_CLASS") return } + if (element.typeParameters.size != 1) { + processingEnv.messager.printMessage( + ERROR, + "A view adapter must have exactly one type parameter" + ) + } + + val typeParam = element.typeParameters[0] + if (!processingEnv.typeUtils.isAssignable(typeParam.asType(), viewElement)) { + processingEnv.messager.printMessage( + ERROR, + "The type parameter of view adapter must be assignable from android.view.View" + ) + } + val annotation = element.getAnnotation(ViewAdapter::class.java) ?: throw IllegalStateException() val viewName = getViewName(annotation) @@ -157,9 +185,13 @@ class ViewAdapterAnnotationProcessor : AbstractProcessor() { for (superclass in superclasses) { block.addStatement("superclasses.add(\$S)", superclass) } + + val adapterType = ClassName.get(element) + val paramType = getViewTypeName(annotation) + block.add("\n") - block.addStatement("final var adapter = new \$T()", TypeName.get(element.asType())) + block.addStatement("final var adapter = new \$T()", ParameterizedTypeName.get(adapterType, paramType)) block.addStatement("adapter.\$L(superclasses)", METHOD_SET_SUPERCLASS_HIERARCHY) block.addStatement("adapter.\$L(\$S)", METHOD_SET_MODULE, annotation.moduleNamespace) block.addStatement("\$L.put(\$S, adapter)", INDEX_MAP_FIELD, viewName) @@ -181,7 +213,7 @@ class ViewAdapterAnnotationProcessor : AbstractProcessor() { ) indexClassBuilder.addField( FieldSpec.builder(type, INDEX_MAP_FIELD, PRIVATE, STATIC, FINAL) - .initializer("new \$T<>();", HashMap::class.java) + .initializer("new \$T<>()", HashMap::class.java) .build() ) @@ -210,6 +242,15 @@ class ViewAdapterAnnotationProcessor : AbstractProcessor() { .build() ) } + + private fun getViewTypeName(annotation: ViewAdapter) : TypeName { + return try { + ClassName.get(annotation.forView.java) + ?: throw IllegalStateException("Cannot find type of $annotation") + } catch (err: MirroredTypeException) { + (processingEnv.typeUtils.asElement(err.typeMirror) as TypeElement).let { ClassName.get(it) } + } + } private fun getViewName(annotation: ViewAdapter): String { return try { @@ -232,7 +273,7 @@ class ViewAdapterAnnotationProcessor : AbstractProcessor() { } catch (err: MirroredTypeException) { val typeElement = processingEnv.typeUtils.asElement(err.typeMirror) as TypeElement result.add(typeElement.qualifiedName.toString()) - + var superclass = typeElement.superclass while (superclass != null) { val superType = processingEnv.typeUtils.asElement(superclass) as? TypeElement? diff --git a/app/src/main/assets/data/common/tooling-api-all.jar b/app/src/main/assets/data/common/tooling-api-all.jar index 47e24cb5d88d0425176b2a88f46c427d097ffdd2..dfdbb9d5b0ed61c8740cca0f0525b0ddc43f1813 100644 GIT binary patch delta 168921 zcmZrY2|Sg}*Ys|F#Z8h_49XIs6j3xK9R$H=N zuF8_4Lf_nZ>h10QfBk-wnKNgfGiTNV$QRQO#SS=o4)n7Fu@RD4cW@{3+% zMSo8zUnDdBUJJSyE61pS6B3=`;G!+N2oMrr7C$Bbm=E{sJ>Ik#6Wn6f2N71xJg`Nd zIYNX1f|gdy4p%Yp@hN620R-}3LjPD8|1p8eF*aE+KEo`Rp{U3QNBT0*=(&V2)?~a;;^QN z?F!ZdZW&`6h-P#^*I;%_NsO}LQJXj{-OqlP7>4jO?1U!SXV@2Fgo*g);y~jLy99W5 zjfD@gpJo5K8h6OsacF~p33g6s@`3%40EP+gtiZ_pP~`_Znb43S0mPCxR51o}fgGqO zai}m_kVfJ#(!n*v%}fH<{QWq1t1<32QBI5o#<#f2fO1hz0^zYJr#2f#_#(-viz^eS ztW}`B6z3%#+?-b8)L>Mgk}@Yd%Wn)R5TnW|09{l$bvZF?VW*!I$kgE!#VsU63VhSy z$6OMy-UPGYDh4LFshFkH%>lW>^%gsT)>Z_imn;7dCF z8}8%8smzY?6WloU85MZVjWde*H%JC_P7iQHr!}0X2=abU!U7PXf+AuaHy0n!U&o2( z1i(RpKteEZ9p_9h=H_R@rKW_rRY>;8f_EFZxZoupuGecY?Ac7_D8ULrohVFMC#D|t4+g_@iHt!pc3_tw zB?PCN#9U2qCw6niS8;Z@lSAAj7{i{S2@jn1b#MWpd2wDqo*v|ey<5eV>~Sx$S{Wb; zA#62u<#lnm^16fsF+mt1K#i}FfblhwZ?gZ9kP#%s4iCCZc@hK97#o1bhVy!mlpIbF zRHO$~$dFz|!ZgUo${?a!nj4;}ls>zc0fQ)#-Vw9q_gD&mcvl%VaKcW88?LgJu_pqD zF{%(nRRe*HS>+!=DCa|DBy2Ey!A3Q4z*R0I3khE# zCVj)qBEpqqf&M6o>r^N+9}qgG&IY4}}?S!sBOL)HZ|fWpGERm5uaTNqL-b%+ywQ>)`wOqM+^-#ue8A$P!?ODa>fB~hl3-4hRR5Jnj z+vT|6%dK)?`EQsp*jFLP3o9VnIVx#^A((1-x)o{DKrBqeN~( zn~P=s3WC>fFW@Hv3C&q?AZV&62;#?)Imin_a1D!m3Kv!axpo(^qW#fxyMnw7JSi>D zFZn+qq6s!A$ZLR#xgj>#Wgu@sEPO~4T~HAy&jZ)G%6}npJwsQJ87Qv-lilT?6Y*Oa zfnX#r1*D3!ya?z$EYA+l9F`BnqYP0XEWVBHM4nXvPG&S-&{eG_1U8$|gdo*NVI#3( zpjBTSli%$gx;>#1jQR5Z|J}UXt9PK)4z))&?#jEbQRUYlWZKJm2xr2S zPYS}&dqg3cn0pMVaBNiJ3Jz>|?u!C1;fsIqn@9YbBsz&H182S|G^zb1(f|j7prYdN zuWW<@2BLu3_OF3F5~Cmi;$vwd@b)srw?u}_bW+4g2cUhLLdH&IZaD6ws7EM*5?mWr z1Wx%V%9&t!c!AeUS0tn`vIY!DSJWW%Weh4rgPL{#(rd!S$U3|-g5OLzLGuozR9gX!4NB}(8j<*)St1N9k1C0QVUufoz~HFT z2ty}`1hx>i{$?ZuTy80GL75Xuym-F{eosN%Aq@SBmEwM_HHwahx(%b1|CfFP}erb^6HY+W5TdJUjYqk z7&oonMLZFprobtT5`Io2t{T_I)@rKY;RmQ@4caV`{xj4bKDa$hvu6|L@@M$RZIw8I z%WF*z5Zk6nsLn{65CzvUVgY7YlCeyS5BPWfLilZn6v$tt#S5NfSrUXO?iiRd|1|_e ze%B#`fVoz7V6d{454fnRv4JP{Xs|=NG)3L8();za*onOhMn18pLYVr}NDCEh_|iy6 z#2V|3%+&=Eu{v@f^-&vo0*%$tqu>ri8w6(wqw#%9x)cW-!X$vhedUbECCbW$k|R4q|!bqM56+T4Wsqi)iNeab<>P zKFO%SkHhAV+4)h;L++ql+#rdGsS@1%WUfZx-nTxenoJ8mxh$vadgyaq-x5;ut3!HX zp$>{pY9Ff%?LVk!>e|&fg`YfkD$5|IShe@St@@qQW}13};wiivCHXHtDbTo3lW^+} zZE}6C20ixE#&ctoJFy{7RtHn%>zd|1&E5H&GdJ5Bv%PM%t3+OHLcz zjST|p?2GBy9WKvwXs*{%Gxu?%pSrsyAxKzzk50$-Ac^pcSsQX3^>dCs%I0~scyw{< zMXl*7)vU#jtz4H47T#F1p^c?G+arq`^?C)bYg@Q`F50Ujb1m_5LdN`>#lqCWZH10e z9pP=~r<9644!8S!|DoF%?)1RDVWp1R(S;l$CNir!x9C+-EblB>mb!lXmy**4i^d^ZwXIJwbUbena4%{}>M zlVO28o$l=}NA7V^w0B0mIC}84)3@8E%fvM<1nhiMoNmfbFOXE0u6Mj&!9IIsosXW} zTZ4@*u<2{DNQR79a=V3a83#k*bk*Ot7ISXy6Y9`$}Pv+b4hKxS&uv&7YlB3>M`-hOpu zuBTK~@)P&LCkOK#&Mfql(XZt>5UsMlwP|BT?#}=vIr+^~&%-jWL$8Cyo0ZH} z;$&8DbvWkj%r_HeYI&sn^1@KR_PC}{rOwX?Eu$@Cl+9aA<7Rgk zo;>ebL|@IfF1kNri^_Gq+$Y%_BxQ}~4KED11lDODqIPQ(+`gOdGh$rKzp<_S&^FuD z2bYg*eL42RRk+b1I_u*5Bg1g&}|St_<#r7Yp%rqjt{Ws
XNzEw7d0!Gi7`08oQu3^(k|&E(}{r%w4klX*0Gdd-Tw)Fy`X( z-zJ`$on0lnL{U8Y`3PG(z3ZC7B<+N>s7;wpkbZ4)sFUE1UX6WRUMgYx9xuJ>Wy)<^ zbFfEQ^?U8AUF~ecd^)GweWMOKkFmaH-#h-CGt=+#(?b-oj<3_och5ZWD_53_JVd!R zr)kKYDtX1#=G~^_Hgn+>9rMj8z_@3aTBd6#o$TFU^HyN@`xP1@TW-~)Z=stAO+Ke) zWoR$sRs}Wvxp9Vrb>1ScZB^alE^Al@pZs==`?;gMZSFA%9J>{2Fc13z>7q{J}?+^*zCo zT=X-(!@u6UIB4SyrSk6M7PB|L?lIBK6fmd6tt7u1QRkRj^Pnu}i$n4AIF-sGp_wd8 zvS*OTbDs)@yeIwsGE?u|*0Q_QXk~~{>*sbc7w3f9%9~lQCQbPyNSkhs%2Y0Ond`~_ zdG2RW_NnuYQO~O8eY(tzcpJzvQ|jLh*Ee5x+m=z}VEN5L***C6*S#ZGT%3PI)igE- zSX1`DO&uQNFkA7{LWwQr>3+Yn*Pp-1KbQYVL6GH<+Qgfb@77YWP(WPEP3n>C1+DZT2f9E$>R%Tc=YOUClES z-5XV5eBqj4Y4gZKkv&I094brCtl%SYv<5Av@KVkWC-r(Yxvlm{%#u?qiQaMeF0WKe z^;4N7rH5R#Et`VbXO?YN>o3(aZpw~myX#B-Iw9-Frr!6kZ|OB|QlzZkmWb+s>cg(f z`j;FHZ;W*3QUAQ-py!dRk^}3aZ=4>y#OJ5mNE^yv6>7L?#Bn8kskhSTRUg`>(=SK) zdlW9w1}SCEk2m`D9BFIqYKXrSXSiT>(X6cwMRsS=)cM51>+d91GQ~%6zII3=>+HR- zq$Xhrvz>#1W$Z%Q<@|Mp^t9(zr|wFA4(8&1Ap<7KZMk+gwSkk-;cG58Ka}jgbhmRx zWU2a_m7j8hcbp^b{^nNf+kO9lL15*BNOr-?r^yS4A>|s!j-cyv%0royH_L-9w`zY{ z;z17O-~DY-u^emYVJ;@I>m##L}h`UUB-s>}QO8Ib6g73D*Mo@S%WVhLZ!(PYLPuk8E^B-*xZj$>PQsGqy zt}wN;7&c|*P-+ZbRU~)4Y}B>8rCTxoM7U-Je}o`pnKm$eDSp_@TDWOL)di-Jwur5J zQ&wH6U;faxUsGGtNJhF{tSkM{huEz06!qhQiSEU!i&s**3uLmCc*MAd=#6Bll!Rm1 zXOExDJ*apiN1{rUbn1un{8sj${Hyyn=Y(8YMCGhnA-iZPMMpKb^1z}B#bN%cV>YpJ zGf91|IUF&St3pS3zE(#k-fD~bB#?NZoBG}AuH6!*r!U*18f4#x=fv`T8a#NIX1Rq$ z=TQ8r;tvO(y%^{FIKDw&{@!&FmIl5s>GdC`Ctt2gnO6>+Uzopub7_d>_7`h&JMyHM zc}{-iH0PZC*bm05DW=oX`{d3@7w;&Ex_(ySO-t6}#OzBUE1%q0yH;e&gGSa>KZ4nl zeTRP76ns6BMVHULPHo>K)Sv?Q*ead;Bp;sYUCB&SIZWmKUb0oYZ*cV4!J%Cy!)qdA zALI?&zI^cJOaC#RZM%ee$G|D3v;h8Y)E+fe@q+)! zgZ64uqln zXmaLbzB@_VZM<#8*ph|b9X)WsWv1%JS$~_l*WU&=yM$ybKYqE|QMUGZujj<2XNA@5 zH(ATN_n&Jqi)G>bZt8t6;SMFjKqP!5+`2eGEZHxv?CzER*M&YO3bzg@9HA`;_jEFA z%!td`ZZu?JhwNmMmiLxO}?bEZii8b@z8efzIJ~qSpJ} zmc-1w4zGA^d`ZKx@jzGeqaAUEW@Vp!0^V;7(9C+jjiWB-T|xxu^oKkx({+?x{gff5 zro6#H%9*nJOIf&22+$t;pL<-tejoL&`i%4VajA-JQ&&ZNKW;7^u#1p+m^A-x+j#6u zEz_%tb>*R&Z0lNM3?9Zv&zeu%J*rdDYAW=Zlkbj?#d9U5#m~Gp)G79SQ9Stg+x=DA z%$L4*_*k9m)-C(-Ln(o^_UNX}6btPc3{}qGJ1SE+K>UTtKfyA?53NEjifE)67>Ks8kKc5{~cf zvv2$$FL7%o=xS7kxG9CjewaOp)*pNEUSml@RZchO>1k^5?xSpj>iqMk#jc4@=2AAL zrg!AnJxR*gd6wzu8y%ye!5{Gx*BAR8Grn1UO;;%46YIyjmxQw1b0l}y7`>13s14Rh z;hUE(=B2Yu#zX}>$&8%3FCWKMThD7^e%gJ&OfH9$W!wH+2j#ZiJ#MCVu9eyTcH3vU z`rrta$8C4ls+Vy)sVuRc;9cdTZx>0wAwaop)+I_8h(63>trM3P+Q_Rfc%=DwuFD1e z7oS}A$d(NrHcFIW(axXryWlO*X?U@t(LbMnOs`#t5+5(&wE7ar>4aO(&U?L zC^dcS@-o&hy~??vy*+I|r^se)#aYgxH*YITME#z7&g@;8yU4B@vaJ~ZdQs4*X8SX} z!=er@RlLvXFElsrdre;L3pRh`ksap9^{u&b9-hClr0vDfASRcs`@ib-v)SmDYe=H0gf-;|x$kiQ6wXa{#}qisD(*E`YU z_u#>0$xoSyFTM10lQ*Hb+Isxvj;188L_6k#hP9iY{;2XgrEB;j$8gin!+sq1bwBiZ zer(L6QLLAp+QWQu+0VS2Gr2zFlq7ex^c@Ow;CcJT49}RCUz@Ic8Ir6$eb6WPjJ~>+yjpnQ zB?Y{HG-B_pd^fufkGq$gE*d8HpcQlyt{P>F^3F{Y?dqTCBS zJ189~qa`_}A9oC2F%3R0D{b&vl9B)y_@0glp)}2Tw@A9`FYTlh>NPdA+ZVcU3|p+u zxaw}dbMe;miK47uXBU;dEU6A<_6=K7WhN8f-XSacY^L&o>m|*i=*K)e4GQNb(`KJ} zPM(jHG$DO3>StZpXfvaJyx8_L``Pc!7I&=@On!E)2x+AG`z-r%aUEI2$*WnsO4R%9 znDQ&D#Ap*~ac|CE%VtWG{5|GQ_WnrikzDl=nR`L^FN+m~r8PYcH*~fx*rnDU96uAr zR1BWEw3_Wa1bH&gfdQJvBiS(CoKSN0jGW~UeK`|@M7 zYq{wP?I+s)2^*TXN6;?S(C%*Eue#c$Vg9Clw&=~gp#?Wnhp40K7fJ)$y-I^kEeH9} zsD*x+`9@xRc8ytE`^>GQl&IMhcWKoNXKgMX4QJ}K_g-QA(k+{kT(V2S--a|3GaGyC zX+!JJ`#*X6JuTzO{;8#pGE=Lg;}7W>JPyU))NIfV)vGOF^w$Qgw<$sCj1Op^J%MTPLome0*=}`NHT; z&mQ`@m$R~YkC!UvUz^m=N|*WW9Ao}TllhW;ti&0*%&X=?5l`p(Eju>7a8T%%@g99T z!?fvivwk_*5iB%YRsH^E;!TGP&LcM`ej^{s4jnMJwo0SOhY zN?UY=W_RV!@9nDNU){sB?H!Lg{aKr_aWVytQ9GjW}GJZZ=q#oNnfobZhC4 z4_DrXP<9@EVSndmcv-adJ(oLKk5&kWYOfO=av1$ocxkofEgp)w^;k}CpTNUZ%KKH% zZ+FPf?ltnysF(S|*6PsGR$cOn?oZ5|d$*^{HsrF4d5R zR}ZX0hG#-e<1)f+*0NDEzfDGZpYOjqNl7-`a za(Co~N$1T&-GU}+=oik~W}^+9R)>cdzgf!qZcb&@jONm(`whBPjGlYlJoKrgaoDhm zH@w|JP$_WvD#h3-(YvHd58 z?o*hDEI%Bp%<=ks?OH(e`I5r}ChG63$GoE#R31EITD#4B@i&{jr$!&-?aEoo7c_Tk zK(_Vb)9Dp)d}F~pFK=aCFz@e|Z~FeFrvJ74#oOwmZ~JL^mv4LS*{xRe+Ddw5YP;-r zp6hcm2gXTH+*Z4g%J+2Vx5N?~eULn#Z+?X%&&P2<0 zeh-J=r=>eoqi>2=7Cz|X4@XbVX58Vc$2>0@ulXq@ogSh#;{HBz@}*~PR{oFsTyHt8 zADpk*y)x;IE0t~b!l8+8{sDd$CLPBQJsx#FAgJ%l{n>2D0m=#3PX%_(X^K2*?M)$< z3{E-P%~7;VOG*N!{M!eoNSD9Ktu^DnNOAlzJnhiud*s{sH3c4_ymv=ck0_^X2hk_e6$Vkd|4wkKXu0byRYs2V(#zvXTIgV zFk_h;8-HQu_R+E_^i5fMhvf~qEn7X+sV3^N9IJma`?WCBmM5=^70@zYtt+I~8A@pRbt@lks<5iAQtLH4wy2aHrPbR^1-UJ+?9&@Py2~UZdCOBrRo_{5 z&G!@Qi?h{TADoXkwrH|47pOH>dvt6`XU%IWzH~oRcX_9D`s_AJH(O4p*N$&2H-kU` z^K8#!nUz<*_U<^~2!Wnf?Ww1aE}riwoPvdyZ#KQ`-FriXB0hOmZf~`D!=Scb;Y7~j z5^sO=hR=^%DS}}&M?+_4N7irsRLoP+$9ijUao(U$`HiY0v}ZEq`5b;0XKtLl9w~0U zThaGn@`Y5%Qx6?CX9Bkamoyt1PiMxux+|@@_^sNgW=sCsZMyYqG}(@C8Lj$~xiF8T zil3#%Wy|r+lJ6Z3Qtn-OY24>TI8iQB_Ua9 zjnTrFeH&;`crR_+msk~YV)MSqP!M*NRB^uORP`>=+YtxASp|8qt9;VkH!3F&ZLZpS za<1fRPu048!1F+h)`gXKO1*j0FSqU$x}fQ5@2goUw)6a&tMyD{l*x2&Vsg$utTwj{gf~Bu|2A5I$7>%zv&mb(~?qQ3LmYRNWY-lsJ1&sob#$j@zLoEb(S%y z%P-V#t2)UVfAHg)#@NXN70zKUOq8ryAO0m=`X1beWmne!$odLCEN_;hyieqeN#8oH zGkJL*SvPFmz}u^ZRpmFM4hWvjcWZ5Vy?giUtUh>W-+6VpAA5^X?T^wKgZTsZRQz{l zq#6uHcIm%N8yb@@nVj>G-L-?tq7!B2LtoOeqCB)ySna`&Pyy=2v&#ZnoJ;%l*n&7$ z$(;Mx<>cG7;&tEa0Y90(QHw!}mg&)VOY7L~zO{Y)rpfBD(G$xv0Ud5DA6I)TmltW) z*o0Y)-P^1jm7nx7ymFo6_dO4SHJe&)MlW2kC;6w%c}mH)Tf44%r%CL})M??CB+EuQ zt#ysbNM(uZa=ICEcDd^GruJ1?%V`PA1J^9gH@Z^exzy!lit@Ie^bZ-u&EsuLDXK?> zVrs%q2C8q~E}m-YqFQ%$@j&nHS1TJvDxQjZoYi8|F0Jkpes1EtQ}Mmcg7a(dBy^bA zD>?@m*4uc$w~D-|`|#?a&zqQCOw`Ln9G(ujc^2skjbvQ5gIpO8$6oQR+ZM5@^Tgm> zW({Bs;8lIH@RL{`>D;4*OP@6FDeW;mOsOr~^I^lNu2=cc6KZR?!gWjIw3f^P(uywz zA03TM?b$yv)d`%bGuPLa=~z4HwZI~4TZif!KC$YLGS)K!x{9#V7K^Fv0*BscK( zQEs)h)TRzi{7CaOk3YL(iPme*5s_Kr&r~KR^OMc7=`V_WOKa^aJ4<~NwWIW(#IkVh z$T?*gW*hxVz|+Ui>U`+4Z_VXTvxT|f#K-b@SI?l&D!z4}Tcq#x_V3|2L))R?dCwzm z%((UK>;2c2eKsyuCdn*IlMnAZlPq(^0X{YO5Z47;LEcu{lUWXsjyywZjtnAvj4>+ z|MRu8lwF73iAJ5MbMpKg)BWgC?C}hiaubW@YsEzmJl)=(>Nobh*Brj_dCn>7*=em^ zZH=D~tc+PLc)O!~Ys#_<4^+0CwD}tMz31GInf{RBGt-}IYfSeflGi;fQTx^;edpn4 zCR>5@H4`fb_+kdOYPY!Wf!3M5GlcnH!ck*(A!+-~QnozIDlYE}w zmFP=W=Eoc^Zy^t|VGi~WMSYx@nV9TYK$)>2A46*1_-0=WdemVF_S- zi)?|1uKQJ)r44fUDh?(lEnvB>LIUL6B1==8k~!T7X@m~JfhR{PBg zp(7sJjmNKE4N@`TK0QB8zyI}VOK>c``SVb%bZ9Qe{l|_E`$f}_Chg7Y3c03IY$R-Q zsWE6Wu+E`QEmh+{ikPiK)YdoE-fEm>XV{s<&7Yax=U3y*=Jq=9ahg9f#L(yALP^Po z9F(u$_O-O+$&GC=zQtK*JeniCc4<)c^BT3qNquiLB%a<4v#f}I{5|B>j6{FI4#DE% zAZw{*S}3b_n)`gazw8YaHsz*D8J*Cwv~P0>>Yj*yJ?D74k~evzR%D{OVPC74$=$aso4W`CD~qqat2^v$61jz*K~XAAuL?L> z>=(7|4CR!ttK{Xas;_baR}>3PzC8ANef#You0(?YyAH04o>ptu6($CD1|K@SN!P2o z{ZVu6gF^)@JA>%XZ7vr2hoFgv;tWUOt!3j6zU6A=$W3ssXj2b=4nJu=OI2l+nmXLu zZ6bYU+35V0^k6~r=*o9BtLsV*Ty~t3E*mtEaqx~+^ft zbv8_LUo;7@PV@H;ydwDcw42oE<8{;mcu!Auv_8FU@2*|1nAR*gOTQm(VhMB7I(>eG zSv>RqE0uY;oshK#e0RuOg_>&qb%j9{UGc!D&~xsPWms`5n{5HG=qL04bxwxSgHPUY z*O9Lt!HD?$B5F!x1Xyr`qSx_4;Cl!i9Yam9KXPyu)F_C3KJ#ED245oo3FMzFKv z5C`Agt@yzB2`g@}y2%P3sp5mZ)mHWg87NT4WJPiuM&9T2Ru)j$R*F(b;0ibbS5^=v zqU#jDxVtc0v%#l7R%&Ts(rHy|-9SvLo@8x_L19VO2YGM}U64Shd>P(-oMWv{fO4!Y zGH`A2Vw;2PxbvoojT#2^o7hZNVGz2oAOj~q*`%-tBl5paMvH;UvNe)_&V5qhgbgaT z5Kh?LD96+WuUw_5$@%uEIH2N)$|_WxU~;~5_d6^qEPi!#4n{^b6;Pq?f*zR`xIp0r zu3f7z2D+JH7KUqx9WM#j&~=N4QkV+CWS|0%+e|p_AnkGUVZ*gO``wgGFiP%qH$z-O zo#;-(u~B}kG(@MR$yfx{jny5xv95_AT=`IUjg}cEKz@?~$&qUWs8V5Tpj4QLr2PN5 zK^81L;UN$Gk9t_~W5GqhBaj8xc(OgRvA%%e2v}F`;kzC4Wn4X>E>T?zm#BLBV|Bp< zx?utHi%L^MgpM6 z$cE?Aga#qOYE&22jnIWP(6ShV1Ybp|f&9yX(u@O@eDK}HKq(JGx2(fzP~m6bX(GA= zOXJjlP~s*jP$P=25hYH25Cc-lJJ4~*#7(l`?bHW;s=MJP=x!Kf&W!1?UP5bvB;m8g zK_Bq^hV{FH29gNwzbq#_gY31yV63>%`%n?Mo;CQG6NX{Q5wahppr&iEDjq_rYe+CE zA<#8sa~Cns4dyq04aWGWZ!zet2xWsCfBY3=uS`0tchE5W?A>_p%pgxoX%GHOe z5HREjQy6zQRD(z*ltG~QMYh~p|TZ~ZK#B! zvK^HOxP>e7_0S*9g~&Uks0YR(;eoLoj~`(8L|Q5uvgVz#@OahE-K7}TRTpIn;sc`u zp__lyGwVNi3iqO9;pX#EkvOs;!ZRRzfE0#;uXZKdW8571XdHR)jePW_6Bv|O5p9es z!a{j6p!t2YG?5wRE25X^;11*}RUl*^BT9|vj)oE4F>FMvw`3hw1t$b{OHi-&#h|hq zl|Ark-(DV91|7A|Fc#Js?t8fbb3vk2Gg$U>f(wi*SByN2bYMV!oz`YR>bWUK=xpYG zc8J1PQV(Nc7xzBhCkN0q9zJlQC!Y=0KG^pOJBeDJv>%oy#rffN2cjS-_s6mkCs@xN zuU(CKAPdw$TT8qMRI7_OA(AF?uMsGJ8_y5Xf;vjfRTNl8AYVU$4K~il!$X*MJ~okn zQSTf~K;;0ubMW8-b1Vf#FMN0R(1+KI7DWDN+k|NlA7X4UaRgT)FFK}qIF^{#Sn!F_ zPy7Jg`{9FMG!r8hU@B~V{-H#6SYVgvg(nn546O785chvAJD_qPMh3LqNK~XIT}p&W zm#E*pFau;hQZ>AY8$Mt^lDiedkcvhiKst#FAk&3FsoGyCdkjOWqM3bbOcq8Mr1!P| zfwjeD$Wj4Y1_W%NlL$$iAT0tjCBcgxHX*R38;u|JWV#~A9|F9m$2q~R?lD2Cm=1tq zI+-t)VP0s;ECRi4nZi`P&6!YdbC$a^h9j*OffLN*Y}A|Av*69^+52TN93@;eYCwB7 z3}`>oiFbg2m@&3zMZlK%&FBRE>=_aVvC3U`TIY92!>L>*5haSaWOFtL81#ZLz8WzG}AdZjSu z5wqYvbDpCBMny?#C0^$N@-8_sF2|hEs*INN z6XygOHwcBGWZ=2)c&bCOi|0ykUW9kb&uJ6-$Sp6B0cQ8k2{7)53PF{7=d5fnzfi7% zQX*IpiV8H9E9k{J0HS8OJVrsQegGG)p+MV9>}|@o7X))+HBe0s><8mK&^)GKiU>9Q zbWyKZh^{`KD&TmTdWHSD;U4Q!0*i4SEi5x7Ha!SJg3r~;&4}S- zG=X1WIVW5kSbnXG!Hr5MUx9RTg$=Pzpq~>|z=?Gg9Kd&71@4`sX^ri zDmPKNh01MIYEij^N*yZosN6;69xC@yd4S48R34%7xP)uZlTfS#dVIS?#OV!klPLA{&UfXY*NH?dKJ*f1hnRH#DvjZi4RiLVy3K%g)jsnnEB%`jzC%kFoW z4a01F0|cTQAXh(OSa?hKFGr2rx3NJ!!#1~5j1DS#(1RNuJxjTXTgZGk5#N4g-ycR5 z-*tp>U&mZKwPWrDDlbuah01H#G501ETLJzEsL!2ZgWFcVeT8Qh(c$~-Eic&S^p+S~ z^w61e97{kK%4OlwuD5TA8HZ<$=D^#o0Njgj>dIMn^l9QIzPiO_&>;r3w|DRmk$^7D zh(mN0c^2=)0HevcnJfm%%ci&>%7&Wmm=@nC7BuMK2ST(C4v^B4%LfOBI(l#j!-vA1 zPuLiE5PcwGD=V)3l*3^EfTtMqz3|CP5pg2kKr72t@IQzVHr3XH#>PiYxytT zQ6B>$SVFqeDTozbaHo@u{eh5eh^;&_Mh}cPbPD{BA`I&wvMz?;|3`O&{{IIXs~z#N zlNbK%?ew?A;x;IC5&Lg+nNl2h^LC?)!=IEL}UPe z>U4?xqp}{z|1tHyj>1ksJv{LE@-87_)kSv|@xv6rW(9b52>>*1Lf{4S7a{QEZKoVW zFg6@IjC+lGfXw@a8|3c&B^y&AkN_On+m*qAjleH< z-mUW63j`S1t`727cXI$i!!H8YCAwXSd9`LiwAPoBRuqVLHDhH z3|0pg%fASN4;tOXfFnyWNCGa^?5-u&^xrTpkZalfKU#v{@g%}vg>gg)K^f%kB*IQK zy1(@7weIEtUe>>)p&|YQ7bK$Nl?5X@-gQY}!yqD{;|&17*KTXjlBnhVHtq@b1e$X zf%HLW(lBUkw}=wzp^PIWdO#*ike!DhLUK}8h0^uEz z1KnP$Fe9`y7~%?AL1bZlOLq?51OoJB9dWR`t$P9JecR0obKiCs5*cXaOgA2Xm^9P< zl}LkV#g_%SbKRnt5o6hhZFAkbiKe4)4_>|DG2tFXVj`jMlNexB^ic*`_*1gy!FJq4 zPS&E1Q+wbz_1!~L0)+I2&G+7o@4`)N8TuLq`rd&*dKL%()$E~&>ZT0_pN_I1NXKo4G=k2TzTLe;S98i z5QiS-h(95P^p z`8K;C(oG=)Q^fto{8yhyFgk3Yl4$1LMpCV}52O;DaPMT~fEsa46E}^c2ik~UjI6R} zfR&)V+>2OQ?;ChXG+otbB&ZQTaGx+>AHz*a4scB! zSb`DGT^%5S;?w~Z+!B(QAi?3(fz7|vI)^L@KRKYm=*&1gN`h4<2Wp59Pvk%NK!Qi} z2UrQz$~Q=hO9ca=L=!VwbbjC+b~z^1FB_1@8bjBL0Z{@CsX+nw855EE-H5!fls}BRp*c15-(Cdq_}BpH52o|jz)sx4nD530_TbiCPr59K86O}%1%>5Z9UnM|`z$Sx z1osK#BBVE9j0!w4F<|sBH}!x1WH*oD`p{`AR$iK&4&+{f?~Ncl3L z^bb?e{AD2KpFX(p>p%k`0$D-4*TkkC`1Z?GtVsR0fz$Zg6o8>6+#x!sOI#Lam;h_# z2RHosYLM=r8Roq~chCw~@IcEU z1CINK_Tv`ALttp%5dNSDzzJ{h{-G*D5j+kY@k8Bzf~bT!37zs_%rfjG`J+SWghklZ z&r^q%V^>4rQ$sJY<=8g1?4ggu&|)gVyrBSML>QS4q!bJh#{=-tzAhLlBfe@-`EZH^ z3(AIe6W`9k&7}{Af(UJJ^H%eaDiKi$Pf$jk?;5fqRL8x3?}n}sx9J%R6Vx9Wk|jnC zM`P&t(61oIaq(tyXpEr6Y7BlE`t>2UyY6VkFqj)cPi_pm8Js~b7p)n$u-GJS+HxWv z;gvg(danumrGB%^h5zfP*7imu8AS7aa(k*C*h+x5Kc!@3T4iMx7 zd#pRdpFqTgmWBK9n%dw(yGwW%qh9c!o%t2-jKyt(7p;hB2DpBa1uDL@j6bArd}-*7 z0mCdj^xrqq1PKK(C-qIV9IPN7#J*tKU7{09y}OwfNH~|#1Xep}O9@6LXmQTmK}-JQ zYGApSb`f`CcX7qi>Ir>uqz_SOM5Ncboan^2wME=-6jXmQaU zzDUeTLE~XDqNZj(>`PE3l85VvsmJgn2(%g2!lZa!Ua}d!K`4roR#c-C8*iMHBGu^0gxYu?E~86FuR&)85~{^O~`-l#TDc}#N{{GK|9~i8n>tW&zs}QlOAQ>&- z!jVqQ9!3gcUIm<-=<-1LS)SinCr)AOorbSrvV(Xpj#J z5>FaAHi=Fv^75i%Z+{8$S0aODN@Q)YF98Wcj6j4lVw?qzInx*7c0Hqg26Q>owQ!qz zHL{ysj||@Hl9j=#umOV1ivga{Cxd2vvMvE;goYy8%&@QZ=G&`B(}EdS{e z1T8y$v1+q!NbW<20KNE`n3Vrwb;*{2FAwxx=_2wB&!(BtvOQRtm@*h=2LD2B0RgUb z6D;biD-spvhV2B+u5=}=@SpRYOib#3kzRKvP|=A`aj<;jFRhkR&#bOMQB#e?>HLK+ zwU)r&?M7F_0?)Z2fgy&!e&?6k`PiDieAINkmh$1 zOviVk2sUUNB}UI_kMGA<$halQxWAq8CYpgS4m#G*6|ll{YmjQ6cN0*354tKAD82jA z8+9~Z!pJome+lf^PgvaJfzHBZdeB8Mmog8;#Wwk$E=>&OS&N`vssBKEfc09sBJK)h zbV;2gy0X{OHLx?@?vC;~i^M%ZWx-!!4}te<>AILy*b|Yi2L!1jAgcj^1{z^^`!v^M z#(C2(X!6PaMX#4d;LBx^dBCN}31X(BCr=V{73lV)%VE}YsLk4!M+SHD$Qt0g7oC{X zgKH-zc#-=ZkUI_jVq2Y025I@^g+TAyFflnR)*%)Gg&3>}vRH=*2l06!uxdF2&gNJFozanvmQM~*;)Q`YUbn}8( zcF+SZ3(GC=)CYNrk!%<{2IhqzcRgKJ@ZY(H(Z^Ven71(c)cz+~|8*+(FISc^2u!#b zX#gMQe7Bx1!LsZQ$Xid>1PZ=%;(ZPy$+6zPLk4$e(Jb2Hi+sU&lfqcsSw9hA(q9TO zdKn6_Xw(50f4VAQ^`mRCg#BvFO_Mo+k00HD<=H)=`>G$^n5Dc4RQS_%(Wm|BOIY~Z z7(IT>1>lN5J%r``TLRH6fWDliu!m^m2hdlrtnDWnJR1Zwi?8X^RrC8^&q(1H%`c#1D+4t{AsUm6Bl>LqF9!IM}u4zwXZ z5B$&7Mr7X@d|ZW|^@6qbjdcP})TTFF)5wn_lX_zq)z#RWP=?keH4|wb#tB5;1`6i! zoG_0Mtd8T=H)d4q3q!7FR5HXklS%au><4q{LH*ShG`cSwUOtv1B45Dm#ur# z7uNL{uamZO4Snp6FtCUt_IfNBENxb#Oc z-b~bK4;MV9=*f6Z2{fm2CUbNugIR4_P{;r@tRK^5fKUn5Xx{*gxy(mw1t{3g=B(np zKvR zhOFcXE?EZ|P+k^H-=RT##$j52m!)nZ7_QZm2_J;Y%U!33To{YV=;$DIDLCM$!-)f9AKUXf zuNaKV3O=k8u%yn1(PX;}K?b*u=wO6IWt@eo*=drS|`tQ}-cTSlsFsPj;063^@L z%FhQn((B>qj|Um=(q%m!(p95~{iu&FBOu^A3<49c{jb1`Vd^$Q-Yq@2e3&{~Q9(h& z)dPj)@AMeAhO65NcfaW&D7%ep+QOtD{U$N#Qr~cGH?^2q5RF+Ki5k zMB?TS+=$i=LC)L-%}1#n6sstDlzN2F&5d*A%Idry9YOX|gW8o;cdgB(;LG}yKN>Z* zr@juUMkV!w?8s^iV1e0gWR!qd5&_siU z+z?J|T^Z;=QRCD;itdy-bV=9t4|I&E1IekeEvLNpPPc+?Z{&<++NrNh$fH42-ykDOtyXSDr}|g&#Fzd& zg*;hcME4hr22#uf44y^<(atVz!dP8CL0yHKPe1{K@F{f+=NCsa5f_?0C&-vCPC)bd zJcc7)6V+{nedD=?edAHb*E#_6SzVAFHfZ)c(236_XBsC9kVMm=+$`%LxM&)78`HdTPW=@JF zlr$$YF}wSD3qsR!u?M&s~MGXAgkofwNKeDN|7P ze`)0ub)2%^22BF9sp=qQ#b%kRNj;}x015byX?CU-|Dh~DkG1_!py5tj&W59#C-}s%Jq!dy07&RGa+fpls&? zNs*8GJQ&#CnpRfDQ6ZcE*rB3g79F0W4o0owk0b8!)P9O?v}3Niy8JqZ{2bolwGXTO zg1IQaeSCZFl8bZEgEtoB<8*?ll2@}?6qBzGQLJZwoaoX*`0*SBgsk3Vy%@@6#Na+u z%L@1RZLdG5zU<4Ta^_*e`Hl^sF3GzkFEmL!2Ubd=8px%Jm#M4Lp_BMr?0|votJA@b z+BPxsPxvt}TTj=GKj98>2uJG8SGN{gj?iN-m=E@~(G;{&U5{SQM{9G**UO`q=|EtenSr`3q1(pO@?O*pcZ%=;^wOBPfwGtuX9hPE!xOL+vqdE?$WAv__XCOt4$e ziMhrQ%>N4|3NJwZ9X4^;Z&Ul4bm-b+O$#|tfb`2Y>m^ya8LyJk9bRYzYzYE?Z`EaB zOT}9uFp$u6innuk_xAR7G_dbWO_Dn-N#sAASA7whEvs5~NKBg+VI<52B-rj|{HAn& z5gNb-vRbU}C2TlGgO{jV)1hO`##0!!m>h_8h%3h)#EF3T4dB{aI zEmZpn!~Wxl+(bqe!g-gkaOBLD_O^7l5ILW}s+a2G)%H%5(G$a@oK^Z#WOd~x7dU&f zy&IoBikGTgge!Mhb-L4~yJ#C;s}R)awhVAsnO>IY^u9vrBaWaswG^VCa{`s;L_W(= z*lE;lxw@yY@HJ;xsykZJnecK=g&M73{(i5gv-myyty%%g4}Iit=Xw>I&UA`NkNl+5 zWJMM$)xL`M6u1)05*vZ6|I&7tKi8uleOd|mKdR`#A*;}{W*c%u+rny6;TG*+eSH;@ zEH>r>@N{(=dI;pifSn6$! zW|P%lmoG2^L3Tk+$af9)dLC=Byp3zA z$Ifhtyg$9c!5wRh?21g0Nu_JmofXU3A9o5^rw$Xgwx(4ZK&1bT4GPvtHgsVfO8>S! zgWc%j-{^p*9pD0Xrp8-L_<9Je>%s&Y)3z=hs?y^1s4Amap5$)d4)Us0Q@dsxm~>ap zD?W-29I-(ir^us~8`PPCvKM0@&~PKl^02Q?gFS8Ejd6L)MkHP}K$qBv$~R&a{M#Ug zG^V6YsLA}noGqLBGv={oz`MT*Nym(?oYasSZpO$^I*X^Dz8UF#<}$*Qo^4jQ7ye$r z6C5$=SdEGoplq@o!?r+KcjCOFE$ViP0aU&POR!}WvlYc?xQ(&A=)qPLW9Cks4(^%wyC`Z-@Tk@w6}vT{oDo@&OObL#`I$pItUi_8W)b+j@$z;acQ}jIV(Dv z>($8fYn2+M<8`jazX-*9af=hniqy@7&i5JNMSqWfqj8hn4(MKkxt-PaipL!quuX%e zqGvN+ zL<>P5c>)wBNvQbD2{fE)^y4#p9>MB9;ajCbP5;KEyy(C`P}cf4vOWw)IqpIU@pb}) z8=+n-X}ceclIyHs7pym|$_4K;!Q&=e5S44s^6(H$%^9L8T>2Ia7e{s@mAM5^WwZyW z4q0)cFC$vjWP}%;+XE|l*>Pf!UB{~QDMmYZci0OR6P*~(jdJ#?e-~0PCNKiUbz-|7 zA4Lqs>_fXLYQY$dscawAMYiTd;C>KW+VUhThIOpTwtf!0@15L_g~|+iuwOkypa>>{ zSjh-vKl1>J6B5Ibs2Ct3L(ax?ogEKC=aLkz6CK}%e9q&4AA5AvAI&^^a)F-*(G?E$ z;YqU(Au0NxT!N(oI@aQQ7J2g6oZV4>-*%6z4x>}7p}~hSw|yAJ6`(cS@+xV31fDS- z&)`O6HNK-E+v{o?+bqUwGK=xN=;{&Vslpn8c@3?~f)*9M)%1plVhE}Wx$cFjQt&Ut9_;67 zx-p{bVNM)l#KdE=6ixn9yTbB24!f$HWUw3kJkilcuO}5U-o*2ar&-L+J>SuYo^M4v zSDXNEA?9_)ljo7J6Ue}}lq1@i-k7$WKv@r5=J3}O7zax+5wld$C)MG?rzf1yF6n{< zdo@R()Rx-r(XMaWpF)QJNSvpg|14DHbk$rB!Ee5L5jOTA?}m?in23Z8Hl-dA<{4TG&|(0=VAj(uQ%uVBp)irl4RE)KQ8N zWL2t8RnBe^%(j&cD8EH;Rmz(CR?|+ll)`=ATLrTXR4o!qG1pQ%vM$9jddPohz1y${ z)VRWsmH@%->B4{5Z~BJNgv%I^0xx53{X)5y)e%CY7%I7}?x}1LugOex1q;0;lz&AX zCln;{1YfVH1BAXQdTP5~MMi7Vd9HgI@g#%GRzFZ-N5vEmvGkD(?-as2XZ_m1h_;ceGqC8~Sz)n;)0)Tq!pCCS*T8xEgtxYPSQUufvDY zIb2}NbyQ@%sd^T|6?Wuw10#87YIy@!D6CPiP#I;{8NuW`9DyK3H`ONp?=FE|&ns8x ziCB`!O*FUXdQf%xumjIHhTT-VD6jqbOIxV2`}|-URIREbrOZc9x<5g)Fl12_Lfr)v zeG7*XsSAQhu>fZoZnrV440`pr0lmD1qT4L~g*TSX#ofFU4Y;j2FJU1!Lfz%G_O`l> z0te)`)yY^IwZ5ZHz|BGa9d*25w1wu~!4P147t4^%I~n0bT|p?GQvO}EtnE~GSKUe2 zdz2pB#kuT;qiFHB^RXRuoAk5_b-xFXRzJ;o<@eOawDca%iR`ZEkPu-Q&Ma8cA}QF2 z8mtm+sQ-PWDwcFG7L@nVAJS6^{V8g+T8bX>&r`UvXIGB=d5Q-?zw{7W z>h}yPs%J99k>03rPILAd>ZxaUhPYBj_YnLZ+cmho?sK^EG6g=zv2!fVd#;WZ?)76r zcJ%!@O5{C|YmI$@dTcd_6CQ(*y!9hYtX&6(=#SKMsO*J0Mp!tM$=Oi28j1e;gA;{n z_yjl6GDodu7LVaXTM=T*#&Ke<2yd0;aH5P6J`*|ND`8k2H<=SZr-sy^KP9j&rs zCT(d?zJjyn(SujmQI;2SZq#d3P0Qt+D0~frX07Ce^cn^JxSA7f%27tuT1}d@A?CEC z996V+Jx7+W52;SC8DhAJBOfdzTzr(tGAX&Y~mSi=S zYVWa(oADmCFybPUvZH<%(f&8K!;qBkf;l9qG(`XEaYm`8B&8uH)c6DP8-0Z%#UIp$ zH2eel#KUVk#7}5>lM@YYLapmZB$#=dBV%rdRO3aS^btjVfKwRO3U+~P|f%miX6)QicQhc&otpHPA<&8!N)!D>($@YHVYF%U8wLh`u@akFnhj& zq4u=rn>tcxVZaC%@-_%HXKNwcKO2VXH?ed>E->ahW|jWi?wkdE7twwWy!1cSGWPrZbh%=@lr%(%8>H;f1F=1a9JzmqFSS3d`S~x+p zrFM-%@hPC6XoG8hLN3=Es25!d3pJ$T`4wghL>J+(FEH2-GbM3)OdP2@Mv+WWl}* zH`6U6)OukTs5e$3UH2G0bUPCFX6VECUns#AUm+k_578Q9MXpsKeWI(5SB=^Qp?I*% zL-5Yf!MIER0XMYnUa3L`b|+sW(Vol<#5RIc4^CM1fOE4Akp5&(j_mIVB-I1y+w`uK z9;e@OdLu)zwcyy76PA5LEop!uOW#kEz8@OIVTSY{z>$mrT8-{iVZTilhfT6Vt$0S~ z237Ll51Ln1j1x8t=5jx)qPqH!kC7N7Od7{9HyS?ZjiQE%n6&g7UdCP6(Bm@;$su+tgIMr=xB6e2Hr5qEnlk(BJ zP&%?M)RDGCpxQs0Kw-U&RNYkUp!{n~DCKMkwdd;*qwSUa)Mh&^Hx*+QkyK$SMk!nF z3Z)%wCH#iAnb<_>vtL7Hn`7o#ZzlRE|2pyuGNxrmLR*lRx#*$Xa{L$Wr?^3z%*Bq1 zXY|@!j8fdCb`~(P$*oYbxP^ktowVMaN^VS{5(_az*m##NT8J2QEyVz(&EwF5@=$z+ z!BT9Y?E8!p7cAl6F7(4vj8mGwUti&~ub~auwT%@eRfF)V zAE7kvM<{-in?YL`^!&Fl%I*kn-K!?HR;DU7luvb-ID)!W7vr#O+f`lcC>UDP*Xm+h z#S!wWAqEOxs*_ty6f?hu*j|Xn=)#CVn=n&eeeWH@^arN~h^DD2hAQ{Egwc**$(g3r z6up)1wZiDTdsuBMo&e*eny7J)I%H%c1|b%wlZ}{&vx!wUVkB0QuWir_l-^-<-z%&h zMU>+@LvDBdZBdB12vGrUL(6SZ2;a70WZo81^5Qi#xRN2*#N^mv9LNrarFWB%?Yf9C z{o&*$jkgoK;DX|Uo!CyXg3RsV%YPEX=xCVKm}c6G-hycg9k3VMDtD;DC{GpUNdC*U z=4{HWqzqG+gNSI8?ljv$Oc6TuVt*Z|U9Yg3_#J0tUe6H~mQO*BVxm$pIE?OQhdJ=1#LMktW#*95oGff>NIwy=8<%Btr z%LPml36m-rG@YWH#Xv_R66 ztj6z?qPAF_((l8H{94E(;4w!o)qRi7t4E;mRk=!s+O;aC`ETIKj{uze9rj0}sI_N3-Dch{k$O8&gPTi=XhHpe+MR)C0ChA6wnj&3Wa~j-CM7TwwWJ-BWG3=RGain+E7Y_8TDGHcgog@Cu#HKoE^e8uhx~0^j@zWX=LU4fPqY_| zXY287TSL0)JRK4sSQc=?s-Tl8dG&+Q6|IrE8Uv;OX}5k4%*tcY}jl)61eb&EP2@vZ~pMKsdM z)BVs6Fs=fhjR-_5-rGU+7i=3*afsNIwl#v|0y~1;-J2uX-biZIA4OUR7}qjKJEAfl zHRs%}!SGEjKTi1gK{R|9I^2z5Xz1q8;X(d@y+UBls&*XN-VO+Yk8qOl=$Qen4H50J zm^~5##dSisNJ^;atLz!xnS#PQH|EXqY$%itY)IWYVdxycE8U7r!_c7$8*xOnJKco_ zG2~Mdj$GQ4ZceivKCemF!;rLg3kKsW&Z*d1y0wTjpxiwumPa^vv3`u_N)djMHWXli z8koi4EPn>qqI;1@cb_4(0~q2>jRPVzE1%#_aLW_Q>?95qnsi}YUoP*|8S?jgFr*IM z>k;Wh7R?Z;E7yQ$pGf`sRrS$HnbKnmWcGq3{(BII$Nmv%Oa}(RG*bB<{bBAT(u1C851LehHo2 z0Zl#~Q4tHGVY*@$XYGotK^Mb;eqw0fVA_#{T5lMG#mho0ei@N@EZu@;$DqPjMQD)3 zE(oHI5t|9wi8{oBd}7%mO2v`#Q|ZPuIu@zydUB*V7DH^uKAgC8F5QTn;xJN9@25jd zDJu>M9`x5CCUiIs{(3W94{?b{N1|yQ`I#Z%hqM2Kvhndq>YS&8%_;H73wu(>qg>bX zb+9$H-S^s>cZl{07y&0P$N+SnId)-nprV956Y}aHy|km{sH?`3Tm{CBQ*aQy*2d9Y%LiH%lxSNKS)D|zhn3auVqZ;u3+BY2rvX@pG*pBXa zO6bt(Vh5p0cO7g=byTpaCdL9L*k2_!R}|1H6%G}GvuITYeAce7WJ!)0@Wq8c7*d-C zWgtn@k&FoWbuYMrqBAj?)y)(=6t~&G`wABk;F>AAkZN_5Db@QO3y2??Fe_-b9?V|* zaG$1h1Fz?59j`i-kAg#X16K5;(r)7KLZ|JVTXYZ#GrFVdo9)&^TJ1(1$Okf$4_5Nx zo`X868u&ICDyhl8I>eNw{4TZ>HlNZ%wx5c!qjE)duQ`F@l*Q7)n4 z%rB!w9c41Z-s+T?kU>v0`Z1sNknx|R%xF+go6v=xP>TRT-`?mI zdA&p<25XkE(@mrGoAUuvom8;U*g{8`($8MlN@bHzZ&7}6Am7*ub}lrbFREc8<7gbP9xqZcK!LB)Dw4mFq(KZ75 zq0A9c48a7{A8R#vGT+YN6|s7-c1HIQJ|yVDmWj~_US`*iFc4kcdF-0Wn6@bsz-44bp?( z)|c$))<7mbR1dy56w;%&;!;%Z>)}}t$Q_{*s6m^v;GyU-Is}!F!->{8G1aJW5HgxK zkt53|##l4NiX5_`r(z0&ThIX5hOo93*F`^X}4aUgcxPTLZ z1yCEYLp%C}4S}XHOSq=lOTb(H1sNP<@S5cuwit@^-m4km%iQ847#A_34z(VJmqqu7 zVy0cQUxx$;^NuhA-{2pB3ad_D&34yc5%ezO+F< zvKxVI-|qV|iBJg&`1R6dK5YEDUL7KoB}(HA>9Hnd#tB81kllVfX+!@6i~iFaF@fp&!WGWSMqRyLL1Rhw$ss*yP=+LPtj<@7FU_Rq0}tScL5L$5~yd zVXS`F9c`$SvZQ7LzN(hr8poT9#$fiXZ^U`ggE7}`y!lT4VkCc}+}eaDOc3#j^06q` z01a`^BG!(w$71YyZNb?<-02>Z@vFfQ9PW*SX(w!S1Wo~LU|OInDst~Q)M0NY9nXS3 zjl&pp#Z3=M9*@<}t2#QwoDPgfTRQE-k@9&eQ?kf`Z<{yO$mF82v}qcPn?QCnn3sb* zmbB92t!x!*LiciD<8N(raIkPBfD=UlD8lkwu%-4KDa%Dw=R`1~F6BhTVtvOn_nZLV z2T|?>v7c}zj&U2&r8tz$Wg-&SLYM`UA2bo$*OFvTlqAQR(UK=vX+N0=vv5|Vn1of# z+-{6rhvswxTRwWENnn5M$>17vewbuKcPF8YllpU{)@010n+I}Yc6KaQ?vvrTW!X9e zZ-@$c$i4jND{2(y1dNKs{o@qaH%EhvpMv9MIgEk@A8j4S5DfgUpH zixp*-jl+o3`(aHIj{$%gR1+A^f+ScI1n8 z{~IhK`^#t#MAo2?5oE)vNaFOtre#^QFuDmhOCa` zjwAXNc6`SlndVpi$MiQmLd#S1L;xQRWpCL~bK( z?o|@ax~CIuD~x?069xG=Le9ZT6=lJ{t5Z%srsr8ylrIht)UO%tN#(E6SJLL8BqQH3 zq!tB!i8ZG2@6eR@F}TAQ9gK)CH(1%=Pc+Zm@3LMR`#rWMS;nGK&t$OGPY#>?5@CL?jh0wnHW8Aq;`aZcp15CVqQag;Jzaw)Jz z4x<^Os2)dmtHrs~X+~Mpj3d)Ak_WjKU@Xq0r~91ZFi*N``l)8TRY8;q}XehF^6K9g%97Vo7o;8Vzf|{OBE}SS<-S0<-KwKwE~yD*^^O8V=rmXTAR;|)1RgK%;ZvSR$#;F zIhPZgR-l8~Eo4MLVI;A?jVYJn@WIrTXr|MbGsK?8E=Ps@()?~E8fEWQjAzG!n|zek zo8su@#yBk2Rv}sZR#NJV%xS0h1- z%M6JV%C51$HR;l|I9Hna7i1US(jj)V>{c93rx^U?o({$f@yy4Xy+_y@SXuQe^;m;T zh<>zrjhLWFBgI;=li~nHti_ee-?WTT&*}MEF;;0}7f<7lsBG!GZM+estwZ&Xw~wb( z`}o?tMh>onLhNfyYQ5M}S=%d~+>2Fi zlq$>#1g=e={;(|1!m_OFa3URXI}GCUo6Yvf2#glVam3 zBR1ZVMt9OGpRyTVSW7E6!;^MN@pNDkv|4OIpKO{!?Y4+v%GzDy>1S$uQ#!N-mDX5A zFSg(sC7oJsMg1(I@mo<9`{>M8TyF&ThTD2WzvniHw(3hs+r;{^b6JF-0>59d4J~i< zJ1hdT?VeYm2L0ppJ7!nLj}hz!QfU!3UQg;g!*3;QN9DcE;>fG4_^PyJJ9Muf%#lyq zG35;!#)-~FARsH?6B|VLGZ;+7<6+kN1FYO0dC}cPE2D&1LDLjM!dkQPnNLp zKhW}ZDJOCm(O?B9YDc}pr7(*!dHxTw?XyY)?}E(!zc?|R5%us6ovCtL2OCOuF{j`O zIz#MtgB`G$6a5)+9mjHe(F`wajmOXGgrW7{+YRM}gE$7~?Leoau47{9Kta; zYY$d?Hv2eXwlBU0ml2uF?SmYywHLS9t8gBTlcLn)40EEZd$A6-I>QN%eV8Uzp5p|a zi?<^4NaTOwVx|7_=^|J6>LM&DJNX*1zyj_9zV5?f;oxP?+j%)2=Md~-D1JXI$i2>B z8#;0m<&{ zK-NK_*u1$vH=&Y47+2;vYM>m)1V^4(*kSbU4X(d%L&`mj8^%9tYoM!#VfNm-bm<7T z|C{P2XpBrf0wXUpU zhJGFun<_U4YM`ZoTHA*ngT`YWH2B(MVvurUs7yJL!M`}kdetd`R&@=vp|Va1c)G%J zE1LSkfM)&+za~Y?Oj|niFUFi7i5fMp6BDYD=W&!_a*75TcpL&t(==3GT7n%fcYJ0g zqo-wRBt~YURsv2yMNxMRgut70W$T{5C^!1%j#lS+5=Hpj_ZMzc&@X|-QZ?d#WW$w4WBvy+ zrdOv#{(%koi9j!MJuQag<1hH*N`*5MsB3JB+$L(3AHHl0_xO#l}y>w{0m}p<<*@Dv}0$21MPdO zcg>FDQmYaSCFVHGEWx_fZ$JC%Lgz~0p~;6C;Y@WdV!0FdFIkshFW2uPIImA};@&AV zvAdVhX%?SP&|eRnM=)p!7DWfoCpfe3T;WvUB2SWi36T;*X~!i5uT;B|K(8(*c+%%m zs0c1aSAIj8rD7jp%Wdjbigk9;Z8S1)J(U05OQ3D{AS;JCe=4h#o#z7@_a81Me|tvf z{u7gx$uAP<&QoOVU5d7wav2S;TuPwxQbJuSybNu=6$u6J!1t&~u;wQchF2g|=N*Hw z$6!mGL?DVJ8hiyS2@j)0FtEtGg7B~*R*B?23+o1#t5|FFqb^r585Fxv)KyFdwJRR; z<|u!xDvsV=72DvGQ9jq;-N6mW_Zphz=4){1HE&K_@=nCBL9jW>;X2yJm8J}?K`X9f z{S|c`&Ys;uhcs874oIZevn6->bRCtOU9TkWmxL)r+=F$eZo)ys5)@B3}*F%O}Xl@x=gu`t>L;Gu_?w6sl zeacGIA5%RCCDJNohAp`af;n<^pF|=S|92ak+Q*~F_bxkBxPv`G=~zw_k4?0ufsffu zCtFG!yaP`fOxE#mIz372Wts-99@j+^Txa;)#Tm@xnM@8p%W)SwqV0INjYT~zqSCvV zfBf&E0!HKUFC*sOL-^B>RXPGbzK0}nu*QmG*%|mwG=NpxHjc#(@oHFFtfsT}+l|Oo#NP}M_+R^o=T1Uk` zfOi+ZkZ~8vdw{0C=1n5yzDe}vp8U)N&b*f)xgp|1I1d4N{LnzZ9JLlWuJMZ>V%Inw zXNMpuilO%J>XphHrxnbxS zBc5Pm@|fm5fo(Q^Oa#w?pU9Qr^Hl64WOrnkJuQ5S6IAC=E?^m&WJ<4}V)HST9G;0u z%A8I~h*S4~UX180c=RPV2@-C7p)@j$ZTDEW zG3j4PY1{rxDoMCGfJ{0hVr z6|aQ9a>r^nT8lPTN^_2)-k|Ny+Dy@JFj5x1!5yCcHcotfgS|<>UQTp*izV`e{haXH zn}iqlZ!s8F9MU0%bUg_@wf;M}_HzlXe1}H-D`0b0X{CJe(Y|+LGr9A!s|>{p@_mm1 z*6=+l(BURkd_?~(L!XhflO2a$S4h?rZl_iIiSe%DMw4X;UN!Rjf>VU=wK$Tq0=FD_Utn)S107;b zub7NcBaYl#fxDmsH87cf^hwqq06ctk0{E!gN3?}8&6D+qlWkP`70aFREt#AnZH>&Z zqA`0Qm+=i&HO1`(gYU;=7?OAUWCPl2hKf5LQYn*NVp{$t_N2go@|MO zJcLJA6ObfotR62_kXj4blXZwGZSzghc=bAyJ~NN;Jg8(|vI{S7XC>f27IJvZ!emog zszjFQe=(#ny;n+IgjVZ05x71X4ENn#dmcO?$MBuoSINUa_UWVy$!tFgpK6VX zqNpCG-@S&=zVeVPP*7F!6TFUU|BVpWs_^{2<2?1Hs!|{p(bh&%mf|ht8cF>G=Swu$ z6vz6m#*)8ae}xnI#z=JcIw!>IsCv2c+L^%KQMWnV+XOPb?sMXT2~rD>IAQe&Ex_X% z9AxsWQX$$tV*-N|_#~gH)KmEJid$v)8V+&Trrp#ZsHl|aRRx#2V;_4t!3oPUp>0U*{Ecv>HZ${P)R@bntVs3HeySAH^nm@P%qAh%d8{@HLHUm0?G{ z2L6X*iWPP4`qV_&=*XqYb|pK|7)z;@VD74i)O1a$M*T0pHN&jvA{?!y$BML)nhPE3 z=^@V6SQ8(zg5%EN3tr4pSu5bS!g^mFVy|nk9xMz%7PMTAAl_dC-e+r6#VpeC%=pL@ zUJdY~AotgweshBZ^k z%_X&tUKPbTAd8Na^-*4&@bO7CrVy`GD}L`C2+T+g>;2xbjuDL_c@ z=R~eEl;TsyGN-6rswKY)H*kTz>Y)sd76QA_Q8!rX)dktfyS^o{srr-N1v=^?r3g5% zljXc!G5Re?;Y5xr2H?^(P8>;thI_6kly@daoZY0(!XG_2G0shDFPIHvL8jwfY;`2}f>o&wl(AlWk>*(&tYP>d8(5UR2D~Hx;&kcp`c(aOfb9k@ zaIrSVo;F(;5hEnwD=I9XadqI+H^+5^C5d$~#027dNcGSa1M0HT^_q^r0skoMPWRVE z#^rZ8oK_D@ny+_LHKD!k^}s6=b-WG;PFYz`N)$ZZ=|Ll8ncuLh2|3n>s}t*RB)h&8 zDJ*TMW7npy_2I)*Z;k{ufZq+9>IeraZh)a^M+;p7W7^iDD}FY%7G`|UhR9!uZ~Zoc zQ+|%=Do=@4G>O3{rZKoSy;Dlf=_5n_p2d+C9#WJr1J@CZy~zW0+X&YYjPRJ>6?*{| zklV}?36A1og26|qt2K}JsbAPt-`%N&Iss!Av)Eer4VM&}Br;-5Rx7$zWs3tV>d^=~ zgK$H^1ls-86*Cr#COZLGF@?$+N%06WYTj6if)}SWmLd>rm`0X`8FnN!mb{gX?bB$` zW(0vH*TS`UXD=u-t4F=Pq^`;Uk2EUV0@T|htuFoal5pSc{R_e*=Yy~ilcs6qXD4>}X ztAKnnDFUxT?=?enusluP&7~N{9h%S_4YbyO_<2bwPTA^e8to{8MgA>N`pehpXbZIJ zQ`gfpC)8_OKs{orT1ef5@edfc76rFNaZWvEgdNRgg#9x*+EVI-TL-gNQn)g>B8@#% zYD`|O;qzH<)AYxz!&KA?HTv~)8u_kJ)gbY6nmrfn?1##E_$7@Fe@Sb|p;dqog?!Kt zvrrw&^a9KDx{Tq0$C)Xur8q=yY;7$i3#QIgwGBr2AEau7k|RW=jTEo+a!V%@xAa<+ zI|ZG(jlX1%=9l0Px$d;ZAB)L`wdouCi^q}?ZKdwWXnR`>ryc84QCqmgEdb+18=SZ@ zLVou;DgZs;w5JX+p{KDJSl$JovZ{EIRXZt6ah_7zNs)Lox4s>wwFf@w^21fjKunWo zo1_<5;b0^yQ1VkwZN@oxvD!g7ss$rz(TEo5mUPJmq zn9iQI;&-Y8wb?2~usWWnbxHC|vxVoWs!CE<~r3r9H|wB@D~VsIvwtojxSm=4bM8mWk$b~GC~T+HF#tMR0Q=(C+A*T6=x&ZsM8x} z_D*-^iE2b5kz0TAi9|t)XnZ6VVc+Ruq|{j%oSjbY*;>mThNbI|X_3Ryso^kf*3?C| zZD$uLO6fi_oxYFIy1z*jI1?x`3O3~tMWK~D=F+n$dF*W&jcm?LOsCR%aN7`nR6%hx zdBmU$IWy9!>x^{#d^aoQrWlmLa&|h2v(N|gQ_!Qn$4K@{RbD!^&O=Gd zI|Awy3uwa}6kt+#W4hBGns>&cq=ETV5(^J6A-6bGLEZW3q?n)HoU1+%2i0{K09ue< zpF@`MfVLH+(?t)=(Dne0Xu4P#zV8YJACzv(47}MNlq9J?2*HLKw*Z;yZ z6QQKm+W&=LC1O9(WPN4Wgc6d_NI!1S!AA6Y1K$4?Cn3xHO&reMq^;m5n=2V_w}lG? zwh-|mB^jEiNSDNbW*4Q`;Qrgcvr@X3_?9FqOIZt?TeziQ5Sz1$BX~vS%4!qk-OUla zqSEv_i&QwY4Bwh$N%54*sUQPYJRlVt-TnBi3PYEsN+H6+eVkai5pR(4_n|a$i?Kgg z$%cr7Iw^BpJ84IjDP7U<@G0c3l1j+NIxZdar9&E)EX#4b#)y$=aPP|#ocJ#dPW|mP zBa(zNylR(CJEQGYTaZ9Fbe7yzxNdopF11#ak()|N6$X`X(TtLGTW;N66+|cEYnV*K z3zZZk`2EKT?ZX|7;J^$BuD-0}nbV5P+9H-P-pMOEUMJzrRZif|POxwmYfYy9AS2Rm za3bSd5NIm~1hlh2;)?~+RPW;D+p;(f#)OhR@B6PV&F+DIOx4Wk;>w)e_ z{rx_N2d&0in~ZX;QyqQ>&)|WMSB+G^qp<`&;>h;jrEuZ+V@_E0klNu5d2|mcT{w+* z6fBqgp18a^BC)Jip~^q^K$WMK>v%QvvQqU#R$VJ}yjVecOF_M$A$JS zJu9jXb?J*q`y)aiyLoo1LCgDM*0ye^p+5D+#E*|O^^=m6(-Jk{_I^^3;yP9IlTwwF zhHAi}LshQ4_InOj=@0CShO1~*HqN9k_Qy&gV5Cf8lRf|wLnI9zAoWrvjn;sO{*O?m zkI_((V^o?sH)kM5P5<#4yl5aM$Nsr0%BhHPCC4n7KV*W6x=c_tgP@_$R26Oh5z~MMOjT)CD%RPk-JR4ZTS`;@ zHUs5E^gO+vuF@a7UBw}iO7W8}4UxLCKm#anBcG-S({4LooA1b>$oKIA&bz-r zh2K+Wo$eZg{fNO>)I}iFIAe)6NsD3N87=0#+-`{EwOFjpcq!v`UBY;B5PFpG`%+HC zE>+d$vtQ5QD9=C3IE+Yi>?G%D(;pv>^a(3CFKeZ$7B#M;ZFMdFK%sId<_~F@um_i^ zEDJg493kd4=*u5)$LH0RVPi@kA%zJ~*XUq7dbviM*_#niIGD^wN*ZLwI}*o^Cn;hSR$;d`t60czEjl|2Rcp0X#iE66QQOF{-Zn}eEhXdIGCM|NS+97|%7vlnV zz&PX(x=+R8cwOk^IJC7k2UILx*Ml052QT)ZipA^Jp*&EEgLG;<+W5J{DpIdSr;wM4 zi8)Zbng-`!1rc0~Zdt7I=9Oxg3(g91&&5W^=3g3;i+xW|I+BaNgHKIPz!G}fNfisK zbfFC=wN6?!0j<0Al!^sa)}Sf5FuekhQ11+xPlT@!nmJKQRQ`8PMcdA)5Pij(&+Cau zWPCxzf+%h1>v^rRph>{nmmrh)cz4Q~gfeWQeUsp$M`SS>27fD6(T!3Se(iy&Su~l6 zUsh4>R&|H!Cc5a>`MJsFE!V}h=h`BJh#q;Ii zFY<|9Pl}u>wNcK$4L9D_W^-gJ%42?)Zcmj0<;yJjX9Dn4Vj4E0X|6aN?lldbTgQN& z!lyE7GYyv{ugVZKDx2vw9cD&6R8i((M27U44#Pe?Qjzz+3AiMAq%HdcND1wp(D&(5 zCT_=7GqC)2c&?(TQbhjTpCN@PJzvOFU5cCu6}{9dIdWwAOtgYe5+}-MO8!`fH=c!! zn`woLqOamIcEv16EP11%d)E*Yac4eyxx;LjH0YfS)u)wnQETHEwEMk^ikjl)f75%` zof9y;T%L^`UkJUNjcMokXL>aoy#P@mrZgZA4SecX9U@1DSkNT~Kl{dE#DN&ny>Hqw zhRi`820v6R)C0>_HY;wNgSBq2pE4xJd$dEdb(xC|L+qS>oCmX6TRqoeeYS!K6eN>XOgKVI!H+6tFZOsk<4=P<4tn&cJevwW50SP~XG1&y7xHtlA(y;}yocg<+P%`{zzmgHHV>MukqxaW~U(LP8*3t{eU zPZ-}K2_KgC)G9D3fC9(H8oX_R6rkMirJ*cCajm?h0Ih8nJ}`!e1_vrPCN%quPf>P5a8mYdEu~ZS8RQ63%4b!11E@0(EQx~BkI?}2|QUYcr z{Bfj>gp})>S4w%SIZ{gK@E4nFQ_ftB>`Gf`@Z!bj!euQpDCRY;erqg&!5)4Y>>A&d z1~F=EYnj3zF)PWK&Mv_UcQF|hN(sstZIS8?rVHGW8_@W++VU(cglR-Yh3Me;slOeC zI8Vmqvu1Ofx)cuo9;k!mJ85J37N||Wj|ntv&joNrZH9*ssOuWb0Qc;`Vcbev(~_m= zi9;D2gU@}iTyQ_F*&$zM@Fcw8XK>peh+wc0VTZW~Jb<3IZ?i;X9pT+#YLsUT9o~{u#_@TD1!O{vUjEfC=N8C|EGY zr|?#zCk|XKwMW}1S}kQLhT*3gq`tz@uK0lkxGU%16l2Qkto5}zEkl2&>YUECnWkrG zPBEO-df6zEh|Df;uRTW@)JUn{c)@Vs-`v z)q?-$Y{Fc;nNDwl{Y?uq*m<*N1diQ|uJM2dZpLK4kB)AZdf^tM!4@e_SiFtyZ^3MV z(`LjV?m&b0EUHxDn0~fM8G_SJYPS`qRsMgY^Q}*-N!z!=tp5&bsDFmyw6yj%IB3{0 z8M3F8Z4fy0uS_}8KmTgoSjwbgPGI!fo#sMj+fm?^Ofw~OWTXE3aVOywsAepmX)csvil_sm9<0i zS4RDpK^CoWqPwmG+f=a`?#T{JpdaYx4(x;2tH_|8k|UNi={qGSnU=rpc@x*w`>FO4%YGw7Fulr9H_Ez-M@nJNK^Cy9D*PG8w+UZ z2IDoRD*vDt8QkK8`K^rVH0vLnQ`E%OH)A{B26D#axmm$psR~uyh4$=zhqI!0VdU_< z%ZYuvaHkb=j}u+)p|g3dD(8th?M9+V+@3Ri3HNcEX>MD=SqB-bcNu35D$A%r`?qVd zYPbiikq1Ny1rj(g~hqm0UWCIe$BD`15!)Dtb!9S4j}W$H#)+UVh)16;T=ad z9mI`ZA9`?5Y9&{+yuu8jR)-{KnU;U7bl6AC&mS}JNQBk#vO|)Ka+?;qc?c;ReAWnf zAC{UbmweGsxre0|O6zYL%II5$x%?wyaw+{$ljf%1GPyA~7*G3zSMiOki={@q4D7S#enKYsRL%6@HZLfK%@aA~MdydVx1=|K zu=2M)id8Gql6q8fw6iwK{H~q{sEwtRB!?XUMg#5rhgUXId?y^2P zm>se5$FO{28suM^JlQ2`7gc_Vr86(AI4;Ggc*lr!M6Xh zfw`^@aiCW;m&bWCp*}C#ad1brhAGG{kgSwqU-_1P%3peW{MV^^XRQ`%hDa|wWXEv;$ zWo>dgNa4qPPNHX=Zmok&=m0~!Lv=`iFh5a8n9$r)Xuwgp%Vt)|dNSi*8PYcfPsFV@ zgYQ4@VM4QeWSYpIv6Ic7a2iF-?aBGMJu{8z{ArkdULUD<2H_>Wv-D)Lvoft|#Tf|x zIhe!cXE3PTAFe0!e0U~)|KKcSHjdVV&z^-rug2&hAICu1xU=}7+Qf6{vQ5_M@m8M0 z6{6Q}Jp@@BkjZ&=nU1&)Rw~)*Z-=2|%z5N?shGo;is9_@?eIIVpUy+AZHb<=TS=w` zMPJZVD62aB%5v!i$&=Pyz+2^E(}1B3zZ zblhrq@qqDREUmhT*rmfpH1Cq+PvMuO5d0EB{v~OgaKW5m9^_Yw6Z4-ooY+{3L%xUh zoOov64G|a^@c1uo`uzu+uQ+gC&VN|mO?KhL43}>BiO*8}l&kY)$dr0;*lk(2Ds;=E zn=OsM3@;e_aM;49TMhcQ1kQco(@nq0Ir&yjhqxNwZWumKLhwglGQF;kmzet4Yfa;Q0>! zS<-9ZMfcPtv8JqRn4qlsas)Y6qxyZjS>cnA$ky;W2LB>*zb*|FmJa43`>&%FbsWlx z@S)vYu#ZKljYe<;4wIurH9v#8=LYiIGn4ba-@xhds=1sPbQ4FC-D$^7RH)-Jj=_`s z$K1KG18yO4;7QI4J_%mtEcTNx{ZaO7w@~&bXQ|>A7O^$%GMQ$qrL+*9Jmm@0Pf?7e z%poV=Rr3GmcU<7dI~2D6MO4t}JIHA7CkEH019xz)Zzxb{83@%nl3lRaaP!UkrV~cw2!mHN~)N3nZw_EocU6;>4 zWKYbQGiT1^GjnEz6+M0oGkLUU%&tnxiZt{Icp8mnOxMvv%_*TWtUf$-sJ^>UDl@31 zQa5T-h$R2p!I<=>E6i!P5tNC$GE{#Ju!9N;QDvW%%x9w-iWfwMXnKm|`)sL7aY+ru zj-iOp^%Q3Va_h+m%B?rdixyN9@}7b3dC%W`;fAHI^hRL!Ox9w}>G0%XHk7&$7F;=f zn7+>W(^=xxg~JfSRZFisPQPJGrcMn zqK`1T!ArQwpyLdzdWo^?L>>bd^M+Z_f^nDw%B`i!E2P5JDmm*xr-zx7nHj7&7ijET zu6tE7N;0{?)TXZ?)BTbFnvmZm6se_n)kEH3KlH^d#z9Y4 zQoTXZV(u{}{vI-mdx_UtWC_FGLW1;=X}jOT*{q*1;8=nR9PyNan5RhPmJgTDem=~O zF1;+Vkj_76+M^Q8b;FApXsv{Zg|8UcqQvm#rDVWIsTJ|3x?Gjw=`-032`b3x@lF6W z=&lN1PL922K(6d|YJA@9|AjF})SA|lb6e#h`Tb(7S1Aq|P167&@6cb&E=3=-$%-a? zhfEpsx7F}U{Dit^8H(P;MvoR*h6ZZuq{CR#LxFkZuET^&P6$$}6ISpJ1^iiAhjF8B z@8Oa|YcM9!QVB17k2&X+dW?}vQsD#k)Wp2VV42!OLck~p^cUB~ahJTl0P54d4<$i3 zd0_t$W6y?WjLZEf>>R>CWXNz_O8kT*3tLkUQ)NS1@Ck))(w@nspWu6wJ2NooGX|)N zJs9xrG2D{AEPr7~?>?ja?|KS!5VideTF&doJlXw*<0aewApFKa#?<geQDO!rqZgM&9^{8#%lJb+&_pn}0)|r|{;n;O_SgNjJnW zaQ+*5f5TW#)fg(_dEJ=r=xer37q}p@GgTUs#}AnIej;-v{Xi@ANnzlP06gbXm7g%# z_W6v=`-vPXEn>j$7p6Sj(*+PjUdx7?)0SV5HbfyX{uHSgj%%V#(OW#A;rd;U%`#mQ zTyGPln6{!E!}b-Nfr){#fn>6pfoKC|Lutxd2JRUs>r3C)F(8|yi=+&Ys_hVEZ%&6L zWkZ8#DwUMcIJy*JsGKS_`G=XUjFf>=$x#Nr9))>l8Y#V{4ky@ZkByWqq*dpb9A>O+ zEv>!Gz|PCVZOC^hf|SVZ{NA;4DqCF_TtVb{eK`6P6G+^Bn|0Z20>y%`#?;unr2*bM zGF8S(`B)4JT;bE<7>CV}AMczyw^h&?Wd&nvd;bQ_X9{Vs313o|3GT{UpbRg3XUAH5`FECP&d- z$fokPhTfyQGA(?-2wXk0hD|(inL%(DS}R*3(1e$bGD_-&dkX@0%tqN=GQxKe0ayLfcVCreFpI8jX}WpnA=-vVer%bZY~HityIXer{X+pU|PrXzdAYMhgUO$4SoNrVG5!=!Q<1CAr+tG7fhIW6fL4=znX38|9qC z820u~xhnCz%M7*dj&P*D)ld@4$K@D;9}9-z(ytO`G*iOpX6~@=<1)s)EQ7tH-Ie^U zO5QnmAdSSKwb35`KiZVM8a8yoYp$SHFTdC{>jR^-wl8tXfM$ zbFQeYrW-#DEBDYy!Ve3YUs368IIbLON{^8UJ%=q6-E`A%&L}xeZF#=AeAGz&Z#0*g z){J&nQZ_W4x=!Y7hRzA|w5Fa)cf;+EG^qI06_#T1X-7K+ev%8G=2%j6bu^?=n9|o$ z`jB6nF{V^lUD-;CH)afY+-arp7});~n&|u*aK|hJhV@o9qbD_#^>B{Tz9yR3K^q;v zEE8hp;Sru2HNn5sO-J)0n+w{BTc=u}wX3Ad8IfRXDFYC}qo9^DQcCdUO!EF(YD!^K zwDZOE+DPP4PnXCR3&b&~h1ziCs)!3K^a}WqV@e^mu<-ag;Lb)kX@Ndd2LsWC#+>wO z<1zN!l;$-Xqu*s5rU-A8=Vl8|R1jI}LREYq#x{ggdOT9$B}9QKz+3e~aKRxLQ&Rar zgW7F$ieZ)i9=9ds{&+%NaQ|x0+!-Sw@rl4R?4;wCt!_o#I*q|#<_k%8vGNx+qOBt{ zn(UnYJzO$rGZFNn9B?(2@Wl*G<#<9LP>=#T1ZnJgU7U~k3u#-u7}B~uj!OTQ;}Tq zm=uwRDzRw*=7`@Iyp~u?^Kh1sY%q-s8Y=72omNo1xBHZRGtKuq5X=^t^8Qx!ETEPs+i)*B8BF(tTnB4Z`?P$?W6ua|S z&`g8CUEvYa0+N;X)GtWcUh;g(n2f0y>K+9l{h`+yo`>V@sas=ZAlhwmW94XRu_aAt zj)ARm6BrlAyk#KDajYZdG=Y|*D#;i{Q;dN(eVF>(XDmLwjYRfYO_BW)Ozwq*7fq2* zi*5{b={DAi1~-F*O}Hs9$S0a%kSiT3fQE`;W8D;{aE{*1A;1_D?dF)CMNekVnUlv_ z(mb&r*{}snnL%MK&>%OjV(R-Akn?IM1A~JxUo_jxz};YFGs)?a02)%KmH-0r%|qmU zL;w%)l|TS>Lr@koY}X55jR2;r7_bWk+c#{z3rb8$j4|218*43MBWoPY_dDWo>UnPun1EL@TAIT=&VX(6;)R32YPL9e8F>23k_9*655}+?cYvH6~FR z?hM#;ABU%J+o0w;wt;m<_F(jyHp)=!Hx;%~PM6Zh>R3%^Wm{zf93d`fi%Dl$EE9|; zMWXe0L=RYJdZd2uHV{GkmD8kwNo3ze*_0-=$E@BE*HMIiE(;^==*UOZtJDD*CuRwB zdm7OJnl{|UJRNsMBDT~R1U-;j+$S(1Z~KnQbi^53*HIZS-9E;gZ;nMeQRUu{Hlq`y zt;l2auDr-9jFvhBed3fRlg`Mb>;dx_KZN!L7U;Vy-$v>iJov3pdx{iN%Bc#vU|{`X zK8})0#xp*{grPbk{$QruFz7!eQUIMOAQvgNr<4U>>8&r&8xr1>CXZ@_R1X15$;|YVtD7D-&)ww zmdAM6SFVfWJz>wJgRGCL%_Plyp-C^GeXcRO>$P!a6#qBMJfOH-7K@8DLd|<4i;X2R z)Q-JjeQ%UKwN6ZKTB zHV!nEjB89mwWI8rYf500emS=W${fupyst9IFd#(3f3+{Bjw9P@WQFyEEc*c(+OdAh z28OGKYoOfWQ3$mwJh)?j%EF}fn>G@bdSI$?`|swB6+MV<1YDnrn-*bhcG zZR<-0L(zI?4@S399k&(*<-=fQ8!4wT1G^iKcPH;zFvRlU@%k<3axgPI2p(@uwZqWF zjEA5J=aSbDWenEInM0K04fZL9DwCyxNM?N!307Iw&7p9mIoRVA`Bfi=dE>M=251;G zsW_j3wNsS{TRR-xbZ8D^!g9vr8o+S0mq`dUBT|)D|73FA1IfImzG-d>bkCWS( zT(Et-2ib|y@9w^G`dj|P4DSDo$8<3s40q0yW3V{O48fPin3GRZDFTy?gx1E`iWK<< zjKW0b=?w--Z(uOpH418-xyu-v(NH1)dx^4+H^!S#+lSzhOTS?>ngE)sX;#$AWi*2?Nmsqm3zdEOrj&V-hRK9+4Qso(3{d z8W?TQL;F9GsFzGCh*XY~r~^|sb%?g(?cf!EMC(`Ul|Pu_;UCd>U0v(|Sw%tH$-Njo zFiIIBMGRyB8fZRjy%#(~v7i=ev>uOHzZLe=1#o0Me9jw_F9G;Q14voIz}je7=qQfV z3W`k(N;Z8n1MxAaaho>`RC*I#i5?9XmqzVW#^f|X=_Z}3MnhteYWM^=i*sWJYBY{P zObs!YSs5CmU!;6Yt_3&RoEdeWh}q_LJl-HMhr7qvaFv|zRW8Xl90e5&7QMkR{(yGl zsBJ7Pd7C0)F+d)}D=&h@(-(E?FbPt-#4sj70Lj>V5af*b7#I3E37&!3slX_fO)w|x z`7xHfy8gVNT*lrDIa!m1F|L}BK<;Y9M4XILpIyqdPE+7{ckpaWEL!gIDKMPhI;ON( z7vo4Rry{doe=!CvsF`#fuebO6d2_+SaVr11L1K< zI0S3_SY;4hi^G_-=qpoJevL7wyX)Z@e@sWM5C6$%xtYxP3ECwK)IooX3Ho)AWLl%@#H5iDQ0S9?jlYu8QpnEm~Aqgp66R0EIf@kh%MynH*AvmWWkfat7iF;KW`LRHo%_cAt<_aB^~e_P_!LFW2= zaDpRwU&Sdvc@X<^F7!4(%QV-s6Y!9!=pyn3`uKT9d(K0ap%)nlyNGh1@Ia6WIsMjo zV06OsZNerPju2Dj+5`u#p#=}h)zGmA%yszzG?1J1viV3{>y1GB(3AP_6gRxvCVun^0dmw4=BAq3@xO>`p*tBHu+upLDXimBS>Vl><7wznry>lVAp0-IlIvv<1Dh9vvb8w_9@(+hl-GQs ziHMS?F=n%LNcL>W47FQMtjJ%@_qCp=-|}9zW`-Z>Fxco03?L(0nwEiXc11_VJjqbD zldg4PAlf(9hPtdn^^D7eZ|)CcG)z#L3uUncSAM1b@%O)&7PDOGNc{;lzx=39k|~W?i$&L6f)JlFMmH?e>OJLM zIlZ^ynL$zP^kvGHQpqm{el0`Y2N_Z5a%>-;G7*0R=!!|KJw4f{{cLK!0^*OD3z|Qj zF^_c-Z<}ep+s{}59m{N)_RTgH@8}9zzyY-Mw}Pg2WSU%e>LgURY7JB#v=TBCJeY>o zVom#3qHN>qFlJhvSiJfu957^+(o-7Y%jon~aFVa}82Gsg{keY#1CgsSBPnaez?0R= zw$jda3>;_&rF^$TR6#c=HGK_~YTQH6>QQ_)yz@s=tQkF8qYRa@5vx{|vHM!MXw^vq z2q51{vF==tWox0c|73w~L)|9B4zh+xKQL}?n-;6zt38~?l8`wz8FMgl7A7%9YX^V! zyo7a-d2JTc9?XhG7dH_vaJ~}gm6-w^KwhgSn$ph9SVYDZ4n1l;X!hBh1kJSuAES`F zy_bUKx}0f&8_;Vft<(v@d}Sq+mW4do0LHAf%(!MP@*Px1x5@bzXel{Nll5Kk7rf-c zMuBNVUK>#f%eDysj~Z-5+g-X5Rkvq{4ihS=cQG(%6A~8eVc^mx^w+olW*}g*X1}4w zX6!d4?b9TFh`Ly}89nJWJ&a-t`Z13K%o6q@77@C(DC0vHx6>?7LFwWF=8&Vlw&|%DI$2MhGY4~M5jNf()i>fPnnD19&ZK=|IYz7S| zh}B<)FUDsE%?tDc2Oh@i_m^)T>bN|4C*5Ty4BzPmqfyR^;&CEx z=~OXeLV_mYX}6uwI9sVp>MR!ffl}HBT`DKKu?yCjjoXl-h9C!b3O~h~km?_8iyp8W z84V4fvVWAJgna;9B@vjWL5%Uu#a!PsSOyfc$5~QtF4VZ*hN-{T>FqjC(l31+h3!#J zl>X{UJ@zP@EB?mDIA$n+!ywNG3RHc%|F@El_a-)c;~}-cQDuSMy;q6t^1a9+`!}Yw zR1l#@_S>gyWq@ze`;_yfczns$rOSw#2qsZ-(IFZc(;o*4M;2&iOWgO6a0TjN8uZ|}VC)Vuk4E;&TQHaiz0jyPSPtpvhZ;Hyvs8lStCrOvpoT}DwOb8czW+3mZ z(wcIPqlU-Pwd2Ydsd{5N`7dPqH=Yb{&&47tHw(S(suN-e2w_^wlS&7&4xMaIGgGwR zMm+LR2~KU8!K=+=E8ay-5$H*HbVJCznumrg;pC+NAf$~{8;2?dfCNT#=p;4-UrrI2 zX4LH**5${h;;A{gKkRf0a;k09(X43aDG2MlgVR?!t?Vqd!vTFEEV1Wg+}J!c*^F{e z!$5703UoaRJ385ocE+LoPQ5r;-`%%SkAJcAaE zf5qavpT)4NdaFmia8}ttD#Fo7jp8k&O{L6x>>QNzeb0dJdGtT^4aoj7#?6>4Y*FT3 zoD2tPJQ=ZZ&SS=L+fI*`@foh-ziqMwJqlTGO70hw&ayX()4|d;Jg9P6S&5=9XlAfI zYQFT4th@xaCY`u|Vu#5cPTTTTRO#wR{@q+!IPNHJW1J8G!qiJ#>Xh8=(oyM3QoLMF~x%J z4Jzi(vEr_xbU0U#@On_ksm5epptZ<`A`j{PZxWX6XK+SgL;PVuED;0HJGp)=z@+unqoyI6|v|2{2Gchu~3h@_I0$k zmrof3?n*@0;pnZ4^f14!Lx(Oeb(n6F;M%05 zErl$?cG!+PkaV|pc^aammH*7@dKX;IJ~}QF8gv(}Bch28qtW2^x7N2J$+c!W2JC6v zgJP9C>M)ul_zsKOx(DuVon@Nh&{Pu|_ynEJpw9S(Sgo41Qm3v{_5ClQD~l?81m?>Rx5JxWi$ z^Fxf=1^CdS5smi%1g3JF4r5FY9%7<9Dnkz=*NXf-c+exLc5KQ2r^#P`?>|Cr@9=#^ zr*`GXm~vmhDnp#_N+` z&TfP9bt&*>RUw)}(mjn_Vadh!rsA#Ar%?9|f=%iah_b$rB_4v(g~{yu>rA6eXv zsOHabilF^7r2MD>0$xowroWykn;~vx;WOn>>2|T;@})(A(~Wx#%p-wW z`j#;(-cEI(L$C0)EvY7!0sUTJyvr+LTFwh}|BuQTFe-wzp1)(@&AX{q6yFS$m{|m~ z7Jp#0^21bndQ$}PT$jpss1pa9{-^*b}!K_%rs=+gzGdD zN+`t%$mEwWa}85QSFVE{&DSq6s!XtAOz&6d1=eD5@&hGJ_fc6;$m{8*bm0}M(8Qj3 ztnH`a>+T0M+Fq}b;i(D&9Y|LzOf#jeuc4;GQDA&&jpH;+vVH^1L03)+J)SXs=N=hL9oF8NI{ifjpm=c&4^#sP3wklEZEA=_|oVPGn z1r;XHqZ%!+A+FInV36tVj#B+9ob0C zt3`cBbwvXCTXWz$B*^T}=;`m2jS%f-&pXV^?who%X%~VzusD{ z-}XZdr&U#1NS^&!TiGIBA7GIKn6!)hl0HBaT!EJh^J5U~DSNKLM`Ye`2=g=_G7a}? z#8<4MsA>BBpX+#Ls5~ASfdOWn$dY8A^ZW$ctj^M8B!Ei_CO`iK_qABgly;xt;tf{{ zz?WLA)T;3BXQ(iFHS<{gr)+I7fWrR6kum=q#y$HFs%NcZVC6dK81@A!?AgG1Z2bbU zA)ATwD{nz@@x?0pp~_vl{D84?cUZ?j)mXankfmf8sOn2!5hX}yS!SSW zAk{|v9|8D3MX|yq6;2)_{*S;6d_E1^BH}C9LkU8cz2&^&RW>y3E6}YCfeutLx7;md z7^+YTg!vKazZfE~CwN?00R4?r*ya9@MVvBHHIk}gMk-o;-LI$xbU}91${6xKed7fF z^;EXB+*lPLb+D(W_9|ZrvyU@Vm_Wfv4wPx3s!Q<>ahlI`E1l!?JvHB%Q(QKIiN3iq zcU@Ce1A`AV#8fp@Dy>QrY$5WUDOB{X#SA^oV2-{B$tg06s1s*K$IX!2Y#+Mjrt+gS zpEx!#H8Y2vm^;f#*!jiTP{(Ab9~4qfiLvN2M7p=;svs#LREQ0v1)*`+Llwpw*&$AU z1+ttnEL3A9n;xuK9ZOY1=|nHiVv(gPL?S#bB?`T!FC>^-K{2~<#<+yXRmOQ-U=Vgl z=DBNylK4e1(9{~K_u=G=DDcst&{pnn&RL@nFGezttqm%qW+Vf?k#Sa(Xajj8qG*Bx ziZDJ3#*noxvq7r&(aiWY8jO9*P?-2hn44UACs@u4cQ|{athrkQYFrO8sPeO2ks2(^KVcfW1La)ktZEIjsvoez!eg^8J>SSsRIuSx&d0(LZ6HUX_Kn z;=W*Q@T{&34eU|Z0{A6>;0hwOKMnH&P~a#4KN>s>lflQ180=-&4RV>T-$#sf;SA-9 zF6oHHQI{&n!=Wl?jiMryU)AZ>JoC9*wOnG$YRvVk3bYNW!N9PpXmx#RX)>>cq;kG5 zszR)~4)fHlh7K~JE(6)splwb7>+!i7Qm+bRO26u8vn%T}AkQ**F6lh->SQ{GrO&PVJK`^cqiY#EI7E+sd20F(>9oY#t)IqwK z1kSCb4l=5XHZFwx=?#O8Nah6NlBYYeCp_^+f|#ob9P?N(h?ODP9IA9Z!VYnit0O;?tyzNRZV{Wf0|8~LBnQlX!D=^;HyOT{_s`1U7TW*Ke7+WWmeMww8s~F8F;&Q zx}}(>+0mQ;q?=4R0kE3UA*Q0EYb)(K%)t73Xf3#(BAdr75bjZSlEurOIU^9=rPFEV zt$2F66{!MI;WIBYPy6~%VLQSW3V%QXd3K9aB|VY#t@_A%E|u0tPk`uya)n*FIUQdO z-YV^BTLYDwwDc~cSKNiZ-y1-1`hCVI?oZc@t%(g$Hz#q8Q&jl5hOn6G3FqhC2*a!U zGo~zP1edM#oB_Y*a0Pjou@6G(o<%wZEogWUT%Znm6d?~Y6g(rl2U~~{H?hZ95(K6E zUh8pVC1XvwX5#D7J*;~MHU>jKW3q3K#1Y2vpf!fpIHN6N%$mR)$ITfS(?k_2{m+_# zyMl7ikpZ*}GdkxOZ!7ko5W(G<(Oa6L3WHo32zHIv90RS{40aqzq0L~&O%<8CvtqpF zlFmm#T~Bt+RS^cba@1VamXBVFE9CF%)5(_bXrmU$rDX#K2DMPNkuKtHyP#ZefoajF zFa{zf$D2{>U|2Y~w;pD9Fbo!oYwaR|%u}f)Fx{}3Eiixfhbr<-&y6ji3O+=)RE?Le z57FZv83G@BhK*Liespau05c3fhL(33QmtZB?zL4rg^3bLxKt(){*N zboDpA#HH=w`iB1_gFhhKrWJVlcThDnSVI{dFvhO1q09~_hHppc`^%95Gp88{3fd8d z`cRQE5#3bQWKn5`CFR>;mt9t4VYM0hY8 z#+V|q?9~~)AY4rbpu81b?F?u6Ut?WTGYam4;tXh|<7s7p{g^K3*bF;r6cdh^*cE-z z@~#?;P<40L8MYiez_}Zo4Mz12gt!Gda1jo zz>Ihb88e_B(Cvic4@?iYED{|4wBipGkg-dVO zYNa_*%(|K86!EdBI)7rB(Hk{+5(5hB;e_+y3AQw|tcdsh<)i#-{?(E_saYR*Q>h-p zE6Pc8L+i-Ja(<+`_&ZgAWde><{RywIyR5|qk^dqmQ);2seuX;tCkoQ;ik9Apy!ygv zY$XaErShS~KUGy}ZC{9}VyVG2POzuOmiX`J4pc%z`viSA9&NA3m1v)U#d}?Ra^2Jq zRfWE$pK7{P(n60VuD`0av<&9~L}oC87vGg}8vvzFcVu+L097|>c25Q#3{Z8Ej0Z5F zwW<+a{8*&*uo1=$b z`>x1A?%*S8z4Ac(%4>trk(FeiF#87~heitoZzCGK#2JT+79`Xm%LSly8Vp+BMNBKO zEUrxfgWnj_g~6!rV!U`JlDJ1;<#RVf06~=hqo^k3+$cq`qX_UcUMkQ{$Zm+Lr*s*| z07QbEBMIho)eNty$vwyMA;`mUi=efn{KHPRG~ETWfW||C4%p9077T@5cj8;SMn^2u9|oTEBRa8u)buYT-6zoN@Qqz?E4w>;P{w$0*BcJB^HrS?Ji>Z4p&IQT4qJ`9 z&gjSt=ZY-5#Rzc!xXI}B5vovZ7hfBpnj$^MH*--Yk3&xQve86)Vj=Z$InO!zm{X## zh_gCMRnOopg^W^7mAvqkTw?_biZm<6R>f%a_hUaY`th$KSDHB*wHj?eq2p12B!ii5 z+$GtLflAhfjMmnaDft=BG~o^Gd4j>tof+huRbx~grH9oR6FnA#PD*pV^sAfCtgI-8 zZC>=4sqgnLe+Z@^dLp!06sc;1&?na-Rdb~6e{yPn6K(Y^7*HJ%ov z!T3c%sZ9}#PKv@LV#r(u?0yy1U>~S49z3S00v#uv#hH`wXg}zJaGG>H=A0w57!wnX zPU)F~fme!|9*P*$T^Wv$2!1)#&VU&7#$(rM_}9(ElZEFrkzvG9IUIBwGC>tUjV7qP zaYY8dCrF!jQoUFd)^k9yDdqJqcB8x+aNvN6aNv0uEMn0UTPC?9ZuCUtR`VER0**m; zVPEY>Tio&p@3M`BoUZfD;oV<<_jbG8jF%%E!4?yBxT`D8|o$wX-%C3nmF?( zvN13-oK8{uAitld&6w_p~O%6JM7y&TEP)1R-yROi{&4@4qunE=`5{wbpv7LQ0>?8oaqpHIfxlL z-%PY8>lVco$u0zwX193MfLl|hl`h3(rC9^C7uk-TnwQf*p*i(f0F^Jq!@qK{1upVy zIs;St>n$0$+cMEbd=&JSI<;or;Q1;i@<~8bd(%aeM;GMZy_vSaTN9vLXY6AOVWkNe zy0`UVAh%DV2SvulU}*;{KTov;rI1vK^BlXU_y(C0UaDEKK5d zQrIk2s`O$C7w_$q#7g`Xv_T3Irz9|XMvAJvGC>szO*Yf(UwYP!){nD$l05&PehQLwQ!;lb0D}8-mIIWiji`#J1w;HoQrj{H#Vk4 zeaxQ=f2xUB>E@`KDCS`<*yj*)!JI}oivoM&;0)d%o(D-&jx!Bk1I;Kc2n|uL>QA5{ z4y^rr)hsD0pIP$eqg!ZulL5Gm3&j-R6L!B;h>3X3=$uqlXQ}f$23!|lDPi?nBh3ZiLxl@fVN$Ri1L2Dx;-fPI-<;vTj~Brb`$8FWWfi`L z2B%><(X|6(po$H`&tTe?(wQ--os;ko@&QzB+r?0>A=>F;?BqVfSrU<5>0(&x-6#h7 zrK9s26r-VZNi?CcF-aD5H63}*!s!x`VE&XOM7yew!nVnPym<)6CD3WplMq!qLoi~= zBQS8V3bd-FwxM}ug1cnCp6tj>c=QOYi3B&Aun|QsLeZXo+aG}WtOUVZq7?1_OJARmf zt63@z7$=`lsCt4z6{ zir$3%;k-HXjcCnvcN~ma0Y$%I8X~g%bv3C1`H#~!z)dTVZ@p_wd%FT|)BzI{!Pw<` z65cFYiKJ6*2#gQSxRHc!%fcp4Rw7mLEk?ss=H$OhH z4(2|(BtJ(NV+pdDeEP!yKGvEZL=iGTZ<)~)idU^dj=B^ z&VeGsa41pZ3oz%uMW*C?$lZo3wlD|Id7y|HjupXF@*1wwI^?(kuQ#p5kiY9?5~fMR zge!+5vz_bEXJ@?TBxldMJLtKH^LnIf@Rn)e>oKIvRxyyj9;>;2Y5~+C-wmjszi?h^ zEj(#^DH`DSArS8+7Pm(>K>YJEPW8GB8rl7YLiE9jNKuG^pTPawCl~&O42|(ZgrLF2 z@IKl|?F8$cpxJ$4T9b{~5g$h}8&#vExNnS0{06u6?+Gg=xuRePzbEM*1Ag;eaLHcC zX9DHehG&0@hFFsdHmUq1n_mp%_$M2Y_h#fUn}%%0OiW=!_J2d8nHI^W2zQIpelwwD zff?07%=1O9=4^p__ynhAbW?0aIdS9|h(JoRNw%Z$0&}5)z~D<}g=9xs+)Q|UJZ4#M zx57?c+-S&7l{W=!LucrMlU^ce&NlekT7L#?wj=Ywfy_1;0N$h6vmJdvSrARwk74Rd zkWQ@7YV;0h^{y%N@7jU>J#nCrRG+$rYBe_-l&s%eo8fJTo!A#B9?YrU4u&^1!g^Djuk|MT==gUtS+R?%*D*WWxgKImt2est8rUOkO%F-tmaAv7dzvy%7&tU zzR;|tKJG#9*oN%>Rz>4=t)#!Pp?2dct6X?B*@1G;U>rJsD_MW4`i&y?s%A(Z?=qj= zJ{ZdsVSt2HW${VPiZm^F!#)&tAMWG|J<`Xg;7sNR6rjP3Iev^!L$%hQx{ zTNi1xd;1TPcgGhPA^Oix$@cW?Ii9bT-Kh6|(Coho+9>I7KU#MXS;QQGKOgm*WlyCw z(Xa~Vz+rq2z+vi))iHFGdc-l%CvFyQ@rm`h?Li28oXzM2i)1qjKd5SjIYiDuOv*#? zh?0;VatL;|#xA-H3`)i;b%)TpA0rGKFpAqq=9!pcMs*IuBKFv;7JO-kF(WvMw{!$> z_WCSm9^1W-AV)Qx$`R<8BXCw%6$9{TBYJQIv-X!{cNB%Q#WwFzZKFEgUTd5)M^Sa7 zsqiQ!@jC(qi#N?X24l``&A`IeDRNV?BZuS2%(0W67^sMN`~v;DH*>3cr&M5Lyp+-X z1v-%61*Y_)e+p)OCs1qs2Q&BJ!713zUWtj=g%c1GIRwFRQAe>uQoLx_Vfaj|JfLky zF!%gC49yG1GXOVm)7yXXI0?ovF-()oKH?-sOuKl2ksCFv(NbGzrQo(tWEza^!2!y~ zB&Fzk=qgG+1;fpl&04vfRy8re!I0CK$xWoZ)7UVZjV~O+V5yX1L!SGfaO}U3d}bp{ zMlWPScQ>MpVW$x7QFgdDf}!nJ7TI+xY#SY{ZRkxa!(qW|xtK7SZE8T0~Xcozl=MP>bfXP042v zrUs|aBVAaqj@C``2^D}p4Njho4D5?F{n(KUVEl#qQ9_7C6|6nwP`hKh&DI}GR&^5$ z^=M1C+4!*GpdIzoE+R2*&B}>q_L}WX%8M{WKJFdrbn15r3&wuoj5&Wv)d90O`^#82 z^v0bjS)r)eHk5Z6>3ZX?phiVU^1lL1^ei35N^f&)#}(x3ypd&A-Z&d)HP6G`PWfm` zxY3r6kGs`R(>nacsU-WWs@YPdOUw)tn$d~tn3$zm6}z%WSYDZ}UrWJP^jLGOTwFM; zZDaxR>~WiEF}EQm@3xC4*V0=-YyOmJ0daG1Y|yh9rg!+U${fJZU56Xx#3|_&NH` zNJV8guwhv%PREQd+&3}e+TluqCR0nYy@d|0D5X3GPT$fM@5F_;noyV1*e~9D3neXB ztm87HAGfe5HO|yw%*i%$ju(Y_YR)3dhaaUCf?k)btD~#=avL(bXfWDPckToD-G8+10Xn8gvU>=<=H6va z`5^5LamMM?eU^rJNUfx~4>e>>C?q@D{;D(1i*_VW8gKm+^qLf7HrEITVl|%{ zVCR zoHAajrb$Wo)Fx!5SDb4nl6y;45HVU{0z6ST-0Ad|yebQfH`S;-*MUNoX-|JQdJQkc zCev#y=T_oWh+xU73YKo2wEeZ^8>nK1;~#=HxYk@timJcVj0ShsZn@N|RnBDnanek~ z>MCz}|6W@@zyT3KDy#!j1iyt^brHi_#?+r{K~FlnyODo4ZN}%`BIAkp0D`~37I9q+1DWlIT??DyA8lF+SKv-WVRS5D0ih=Q#X?AEQgD);M617X8eDy4-K zg<~o@207=^w%TQur3(2xz|j>AgDZK4L2daK>~s~Jt_&Y11?_|ill*!?3^WQtZP?bu zNZV75^tR0yy<81Xn$m)S_!e_L_!S6w;!(F0jE{nu<`j&*iSRjC0?4!_f)*0Ow7aF) z#Ms=H0pyAhXJwk;WAc9Pst%O=2@}Z;Ww3gY26)>63Sp^-kXTiFk*hWcd^w z;7X!zYhjl=PqICogLVm*=`t%P+9?)|-sEx}&HfB~8Ev z@aNle^`}X7?l42tj-pDOMWe6C0-vkpoW1s9^CIIb770xr3rth$_IR!hPcLeGL+g#E zkZ)LiuW3&9Kd}vLv0p33?K{NWYe}KsP=Fj;I|oYq4uxKaGGq7cz;yXXYh%kF;NI7k zx$}Nu9dfblJUcox5M#nDLA%yo&>GY2ADB_!BDpLZZ3`?xwp`n*v5mJ5idS$AvLXsiMF z?&AZZ$SL1I-BN0Xk3K?f*GzPy^5)H02|Ug40a25kF}>VYq}ly{Bxp{!e=KMLhUzBL z`Bg&65ZZ32ZY=f95kN52+N)i;h8iKkZY&3WV%T18qz;f;-r!Ol-)m<_iA%LDu(mN6 z10S$vi;UGBr0a#8jkSrop>**j16HEyW#?IGf&|;KkMxaO2(I97(rymenS$057iD#{ zVW#RJshvba%+)>=^AS4)KUS3DWj?{!+lbM*lQJ!-U;w;xy3u?q`o2KT-}L2B4~LBf zlRu95s=Xys69Kd)UvqUJ-ZhReS5J|g>>1}_p$?Q*IWw?C0M#loU~Y+m``QY&l=M2w-NyM z&s)vMXK5PIIY4hyhC__v7n-sJ7rktQ_3QC*+%9blvbGSGnh9Mz$C_C3Z? zJx&}W1p|h9SGBD|r9BA{9E|h3}Y^y-;v(u%prUJWE6FgW0bt*c8hIfCE zB#5G&)d2?ED92eHD{b-8@nbL5E7ghyxj>l`gfAD;kGsGsjlFd|q0%3|0;o?BzNy;X zJJEBl3{1t@C|9+Gl#gKMf??5JM+dzDt+^XCc;AR6p^Uclv%t|rv;QX~>=6vV)1cpIww&JkbF`(n+Gt4$`f)m`l>Wp&a?Lo@+3cJt&7*FXUNUv5C$3zL1`XGYx~R8;i>u)#iPTStDuA0h%O9I z#j%QiwX8;?%drNHX4a6=sm^5OjQ;gTC6udL45QPn7g*7n;T7;eqbJP#ziEt4d^g{L zc6g%DcNZ{5HE}*-Tp!g|d5g*r;723@6s7y*<`;r#P`Og;z(#&$VVQSh@nO$wmd7 zuMU}o4va4N54~Ka8fs1GR?HtH4Casu1YZ!0daV;jTyJSBTi zMuW$Ml2%u+=DY9m@y>5Gp#vU{mnBBmfDVIeL98FHc!@kh>MwAlOLwqtF0Q3^H`qc3 zwbfD5T*R6Z)bYD3Sm}kwOKq~CoEJ6`TrJ77j=GVQ9L!15>Zn^8?52V`>KMF`80w8C z-5Vz~1Yf{a?U?7_0}H%EKwM!yc%~_NT+(j5%@nj7cqc^A9*%~3t1H83B?7&3JflAk zt|0HHBFa)MW8exVlv@`=*w)#Mkqvun_5urvLfiPgEQrNsbv-o1g}yMuzYD2KeRWgH zxUE&q)(`n)XEM(qKMdJ1SY)R^^Hfig>gfX1cOdfb@tM(20@WdSQ{1aQQhcF|`bd##Oqumr8#!+`4v{&m z0m``+tJV52v)quLnA@AuF|&nukF^0r{`Vt|T69DkqOnsDRBMWh zHzHlkghfuYH3)-V7A`|*B-v0zbw@`EX$!|_))?Go<~S#;ZcZW3(do)(WR5q6-*0Nj z=wl5RxiEM0Cg9#2EYK~ew6MsIt_CkMVcHQvOC6=7!7H1p+rpefnyQnerFaKIWD(%+ zh%;WzV4*{k7*jB5kv;8rq75H%pc%wmPhwh9sY4^Za2vgwqmgA&OmlUj!7M6muAU}! zTq!u4Q25G4?tEw~cRA`lzXkNKhYnUK8WN&*CA-2R9NH5jlXvbS{dO3h%XwM9EULx~ zPlKVt#)F&~rL4>7u`Pi%KEm7;kHE091z!qu<|$oP9i+1b0%$__3l`yfrS1^M=j-M2 z^}Zpv+S0?PTE#9rD#!30{j^*wt<@HEtezttHx?UAfNv# z=`c2w`&^q@SX(HxtFa!<=a8d28|Of9n!c^y1T&XSyEJP>%QQ23dqz7{gtmi}z)Jd$|USBUKxgypv zLh_R9QJrGBpLLtE(wmUqh2Ye6k~{g zZ)h;#n=T#RnfW`JMO@XyiFdvj7xllchgwWV)gs zOuQfl72mcmhO$jMEFRVBB?JNW%Z1W&@kQLe4{ zz;wI|(;u_coq<|9F6et(+i)~bX#k42wyBn6NoKLyBLj(obflSf^hUmO~X+&g`EV04<&`Gdr7Cl z7{G3T5nT>TcfecZnjLp}o%|Cgwnw8OO&o;GJ7Jqe0G9`;TS@lVR}nz)V65W$;9#}@ z24|#W*wQ|RBdeq#_4|0SwBp32qTF49YKl+qE)XqL8VRu}@? ztXr?gV7uPBg1pp|8@l|RVEiUQuSW$#klis2u)A%B30>WkZbENHBhQXQAt-1oGX@l) z|vBFVK`JwI?0$tCy}ILG_>n`x?C;`aRyBkC~lE<(KTuWRGf$7VgfyC zo>uc40$q$_Ujpql67$u+aga*@86(x5rTI9KB>U2V(Eqsm9Xu5MS%~y|=-jpy)Sp5uBs=Y`%Bzy&nG_I6sk+abp3Qe$| z5i^@Tj3~$YBZ65MXJ%MZL<~BH?!y_g`d=Fyx|^?6qbvq$VDnYZ zIcao;EA?B94-F$Hpr-$#H@QSqPn&8Hj#lEvB+iC zTn6MyTss%85uAmriX`tUFm2&fRMaIG2L4Ma5;3q}7?JNZ z@Dx^N^n!b6*tH{3|H}n>QZ+^=RLiuZ!RcD%4dXzY;LWtIaaiu=`7#i)HQkXO`DWta zWgHB1J%G{OcczDzu0r;gNHP_g`fvgr35^2 z-5onjb>flgpo|To8S(1Y274(l9y9D}t(h~Rb!KHAgdeoY)Ngn;Z3P3KwriV-lk;Mf zu9^T@MR;CVs<&CZd`O9+#Qm$?C#M7iFUQl4hbz=fjxs@l5oXDulli zA}%Eq;rOU9r$?W1S$D(rPQfssPo^i8CL;a5zKrRX1P9zWfPpayTBmuNgj}Ns3$!1N znW1e?J(Gc+IF!+=lkq_SH&4$%FaG>(>;uzKZWnsJ0QtSd#Z$qp{03V_FN7t!{b0=R zFC60s;8R%1LQH}8;1H_d)|$8qrA25PWXd9BU~fbQOHq+m7Qs9Ia1j6kyZ=IN{nC&= z3QsR*BK`g}kXu$~-a4a-G?xfkEry7ku8dx^Scn+Q3Gl@fw{J@IAV$D^_J=sFeAG`D9X>JOK{&^ z+|2v3Vu^kiP|HKe|KeTEEwT&k_Z;CW6c_HK(r2kb{4c4&y};?%K+^x(qpd zo28?<>Eij}dcd5e`ex}nhq>%lEw!hyps|DRTMh}ENRJlhiu+yi1svZMpxLg{(R}I2 zFs&c%5VSwm>T-7FQ$iJ23UPnw(6~URI~WupHt*6`qBe~-Gef~jbth>uBDHD?>!$bc z+Qe0mWWPtpXisNWVMoRDq8=vT;!-Q}9f5l5yBgekF6l`sypMp07X|v$6&>1Kk-xMW zWlTqk4r@Si!V|$FZx{tv4clukh#VBO2{_KNPVGV&%ha_w`k(h&pl|r-qjiUsRtZ{f zoZHYPkt)(`!t)2F?&OE_z4`(ezIxT}KHSeG~vY}W9dTkuB zC{GV*SIqB2<*a+@fkj`&I*tEi+M4wAK_Ejk4FFmfIlXMVwBmH=W*wjr&RozgfC(M|X%*Cfn6> zq)WIKugSk7XS8q!GCDd}hqfoLvTR3cfAGDguW_26g(q8fVkO@J{VNj7`3~5LrGHO! zu8i=b;+^=6-ylPas6(;4(3#I)%7Wz*sCH+Y(Z~&$OUknx)7{AVD=xHa6tY+B$-)JZ z$Jzx-_TDW0Zsz>n-<*`c7nS+@NY6bXYWM!%nP1tT62vKFBRmub&FeBS8vn$yTGH}-XwW}koI zKS&c%!Zf?H7$Z_kvarXx4NL3))a6{=yOg;K@2b72V<~c#W5D-+U(S$e@3r~Yp|weP zFw^b;>eBMF7TcEFl6*V#+?R40eEGr|zcGh+WQF1&+a}XYuFHw(EIIqz1 zdbT-zHB#76;aQYiVVd=rQ7|1-2z>W7(#1VBzc|4Q1SB3@%q7Mx|hF!q#N6^Cd{>IqS`GD*i{JI7mg?JO3 zrOkQU7oi6JYtj$?W^{ZTGGHTpYr1F;1ZZl8VIdvOpBhKQAI=z1m9qq11B6mM(e;$j8 zdpJZZCuNvBr3?}vjPF0E`X;74peJA0z4NmQ*tlUm9Yv9x~SRJ6y9K% zYNVj#``I`sX{0ctV;9xlhWGVQwYf}PE~(uOC9B`8?zHogx}{-1I}Ix4272f?JFV;X zxD5V(9Dnmypev3F2lkLFf_TpLH_@IRyDBi}6R%^)4$}DwINny)<4|11w#n5@1zMh$ zHj}G@Yjw5XT((prUmak0v-fY59W4>4$1{JU>>;bIVPQ&nj4^p0g7n|5Z}(M5KQZtB zb6FLrLk+Jj&_mP00(FRCuf=*OS=*S!3b{#m8}7~g|1^|Du6M-!yoPM9Wa%-`i!6oa zC5ookK@3@@PyBP4!j;WD3GkmyRFSV?f)lHPZboc*9 zXWYcc<0o|Orh2xabm;$6VH}OZXKx|ffMYU4YwCVXq4|#3`8M!7^JKg)?axEu<(~9_ zz+0Tr@S|=SU2tV&zAI@CNJl?F9s@iW9pOQm7j3Qy^vFt#j;usB{6I>> zhv-k%;d82bvUJ{ysaL${|2+gRZS|olg=p;kA3>3iG7zAsONbZz3M0b(N06P>gju|P zq5rP?e{6ksKom*y_Ax6t8;}epR6qr@2m)qB5%tUo%vsDC;XOUGqMj5+(iuU(jDm`H z=7`}uBjA|;6=&CY#_#Fr*A+?yyRt@ zjA>fYYZvPF7)pG}~oP9cNwVpAbuU&B|O+CC20Bm?P%Rg<7)^0l4CCaxOTqr>rY1J96;cuc9xtGF3ui8stiYY~( zHW%Y}5UEEoO6OZCI_+Qka%62^DjZePiri*&b=$5`6`4x_K_uONP^9Ecs8=t7e^!?N{X zBO_%~IS=3}wCXkHE*{V4h&UgNw&jT0Vj)MSl*4(Q;&`C29DN-Q1W74KvFmlfP4si$ zKxpww75wlGgudONLVS9{kEe-Xtg(&5e%lf~c*lQid!pJiUu{>#vq?&n9(=)>JS`$8 z>{e)%>6ew|4)lV-EA}few$bfJ`ARRn({TgAmyWBrUL6P5RUNYGcZS2kXA&KFWB2@m zK|H66oT1*uL>oScKK&Mn*1pbR`*)a1`KN#f7QB1Y1Q&v4zk|cBddD$XwJK%3Ls{i# zp$rzjM`Ww-oObm+R+mEsn)(ri79nhMpdKHf6P}fq5Xs1gd%(!|KOk1?YAQJBBaCe6 z!I1gFs2VCt_yf^|f_l8h0~MbT>jJiKeuUq_QLEGWy=C%V_lu0?f!&;pRMaZ2q%MtIY{+B`Xc~G5A48=;LfcJFsxu@x?F?ePY^Nk=P4hm#X>K%~_J4jeS*X{W zYJ9<1d2AofAXP-CDbM9Kq(@(%&-bC6R`)BuQE`c%lr}017N_QJG9lM@Xp=9^H%RZ> ze3dwx1)I#t>KjaGyO6_<3z0MFB1i8ygLp&YB!=Haye{?)MTmDirPQDn)_}ibi|j^< z`;M8k*QEUpwe7Jvh*?6a;t4-c6}+$!2*__@EorRJCK`ksTzmWR4JKKP#7Y~-i{8Sw z3cz9Gb+NH9_oBj4jWVx{G2uSd(@4Y##s>;5ObB=_1rh`ihroZLbsDi1`P6_fY!SfP z--sik0GT;BaKy+%GzhrjjE+W}AT(*k!4{RoX2JqYdN7XofX!xj)%eH+ zA|~N-QYJZk>~J$$$Ru|)1^i?mhm%Yp>{LDvSec1@ru2sAdlz9co@KEV8_*;(NIxb8 z+R(At`ja{H?rv85=Dxd(y9J%PyIJo0Ebni&qw(gVh0x|cqcx&MGoQB)-AW*uheC!nLS=mf{qn z97?u?!L@HVQ-GD&MsWSCq-4z}2d`K`&}2My#{}IQ;v)4_xQxsiusurC2C&^DWT0Zs zQ0fUy;CG1%w}#oLJEg#w)EQUvPX7{OkVdK}(l zE4C2K{Zu^CgrRfeE$U9EJB8YbON4#RRD9C;MOS<1Y}=B|L}Iail$Fiz#-&=% z=g<~Mu@!3sB>E3WWNRAMJ;0pcE1J`y+FPsAsa5Pji+1qb^-iLb(6laRZdrFL?q@7V zv+CuuRbBQ2$j(_DDSYwgd`Zq?pm3}?51eSe)tc?ewxe1uFw=Eh&B+vd^k!>yTI3>j z6Ds4plCy{l^j*;O{0QXa0j^>fA*T%w{P5puLWw>iOzA2%7lyRsaHyNuPAKfe16gip zf-d&pfvY{B=u7qnslPkY+}M-Dn|f}oOs&V@&6Y$4$M<3|4#jwg*emD`C-2gqGfD~e z_JC;;2P!;x%6bqd+ciaPDjl>HOD~=x-@YuhNOy-&jT$J?<(_DfY7ON9zdE8Nz4k;i zW*WtiDMpz2s(}{Z`Y6ueQ&S8Pc8}qK>@hfelU)<>W5;pCyp|X&^qIf|k}%7fXxBH_ zLJk^WNrWXR!6DI5=(roIhf-5enPyKRGq;-2gxU~0Z=M2M()HRU%hTU)EpWp54E6CBTWStj87D*c$3b!FD!9u{ zAj@)*EX!^Y@Wg9qbXqh8{_|p)e?e0*Kx33Bhl~?pQR!HVMKf@DZIbaG&BPX(otbh- z-%{CAdWyc^dc*iT@0U1y@p$Am`7yNnc?LGOJ|WB4)LabFgr4IeeLHJPooAOhkar8n zx^rIUoYF$ey(6OqlXvoJ8*Yc+6Jt;0cv7-#yj~q@Ha-RJLo?|yh1f-J5*Pan;s0dw25jq zaqm0%h}CmOtTb6gL{1zi^91@`X&g5=1PryN$PAL@(?j5uT^7rbT`20PV()`TB)ADJ z427wUk4m976ud`o%}=3_7kpgi3O~Lbd#F~T3XW|HJnE#3N1xnoL-jvkY<>qg_R?tE ziW4=n&&uTMyWjDz7q%5i6MId9apP)xd_tPFN5TavsDtLv12sc-5zKS-0sa(Z>$NiK zfYj59{=nA5cmXo|*slX1y3tvZVQq-5xUS1z8v872KR zK59;Mqv^S^jULi*VYAQo4$c6>Gmev!A*MA0^a- zmaW8?(rzC5`I?>3MmH50vj-KM;r7QSLQ-YQ{uPbOVn%z8cYkG?2NiZgL+@$L5ohZp z7uvd6KcUawXY63dNozZcjRc&kmSPrl#&Fjc?|3jV!FEW(r)rXeYTZ`rB&&*a*s`|KDjWt7!;P-8pW1ZUC8;WLFhS?e8Ye7l!ub%#->iNjtJJConKc zJrKz6kJ&;?EecUp=WJKp;+`FTjO8k4`38@?@zGMDP4V;lkz2?4~r6 zzGxjjQH{RhaKZNmr=n`$^wSME+S*p~PljT+JZ}+4S`QPwq>5Vn7*9bL zQS300UtYF$)_WI?+45x4u1Ky*SBIg|Z>g{6*$+mF z{N9kz5J=rhrI9e`spl9!)OKh4;On2 zZLlITQmmnxm^nEdT-UR?1aUa3=j;QF$CFQ~j2i*+qNAJ~eKc8pugHEz^FPKV{%1<1 zUT(6w;Twca;z)kY3C=7{h3p%N==rBOB29W2jRI1D!!~l(Fs(BRA5-Jca%9liWZZ5z z3XT_cPT?`7(ovWsn2V#PEMpZ@9tqbB3i~3KV;BQ=P5BFbZ}9l}+3?vOHVPtFxi6KZz20@zhD61a@#<5_-)P=d^=gb4OKS=Icbi!N|l@}oQ!TW z_n|?&@`s9ac$ogcNR0;1Tre~GW2{(>z21Ne#o@c<%!iL8Q<3zL;B2(N0&EmXq zQ1kM03C$meE^+lM${vro5a}u1;PKESS(K<##^amV{~M$B5yt(HFqa8veUDpG)FcS? z{D#^o6;1pEMC)q9;rt13is5!VP<p9x3WN-QR<8dC>rm6wF;tgnd`w zA`B%VY5Q7-Nyu6bMNSg?3%hGGst4VhB-W9tkfq$@}CR=yX8RiWX!`& zqwLA>DNGpepNhx&r2Ga=f#Q{$Fr+GugCWBMTCxCcY5SIJit8`XJPiskP;*THPhden zN=?38(j^)~{%x%YF(a{c3g$oAeRq4>8AN{Aj!T!U_L{{T*O4QVLx*)X;Ew6clY;tK zv6?FSVX&Az6{T^wACDy2By<|Y6c1pmHEGc_G%&3qm3Vl9ATq^~@^ef0m>}f<#$OI2 zX#aGy2ENl_qpniGi$B=BaXMrPqZzrMunDVG)A7h~!L$@(iXWQ-_nLtST_*C_3ujt|wOp>UcK)sk^u{aYt2w#V~U*#*XXv4Avm(E?8=l*hkTof zR(Zh+6*tny9rLp={csiwTP%uHLdmnB(YMtck*sPy8ws_D=ZIw0;SA}4k0y0y@F}+* zhKXgfofjDcHi!R*L3+HwW)2bv-eO3zp_s`q%=|fshi@}U9hF}v8jxq+rK-S^3J54D+U?OVLw%9;u82o zk9lbBHewlMA?p63JQUNmd9YBuO!{k{*hq>Rm-*5~&}HJd0u*jN9|O_4bZS1@miPr2 zD*QSh_1P2eJIxmd3PJ2p1GpL;Ou^2}`EdOq3!rVU;~YkWP>f=4E)c_nwRuXK_Pme% z`-DNJElx6qo5eQK`4kPY#6r!I~$A%>I*;D+Wu~ zV$flsxd{5LJj-E>`mmO_2=SB8aRlSZYLxt5W5QpAd(F7h&T|@_ zhY)FK5gH5l>;(=#nv5#}Vq%e6)+LTW343x)#LA|~7@uC|@ZHNu?S~tN5z;MF9g!WQ zXA~KSdgF18vAC1twG^zA3n7Nd-82yFjF=v-5PMakdSX6tGLfU^)Fer^eifaK0uSJarl@hhr*hc7(f5|wO4Zc9Z!&6uB3X=+AF zRq``VHQ6{MRlX_hrBSMSe$8FLEtCJC-kw~F$*~aQia01}eTOIwpSGFdxZ}uFwCc;) zH?uyJZ0B$Wq4wEfq)_BX*Dyq@scq@anw^_+-tF2P4C}^zyx`P?Z(I>s2 zwadkxxcThya*UpqlK%=!x(}{G@yjtXN?IX*IWy}5M-o;c zpB4=&V%Vu1qUUOqX}d;T*EWq({nD1*a zS=O+5stHAh;UiyqcBo#fRP_$)fmr)w)&Z-J)Kp2<=@}>qu7)#TVgt=GeJDE~(;tfh zVfgMj`m-(RA*t&2vXCCH6$fj2wv`3+i5J^xrnZwq5D=)T+OZ;JLY5s<9cA^{PTj`q zkgs-~C61~DN3o{pb+Bp-rL4mY-OT|q#df{CyqtXIm5W9gEWr*mZarGuKz*p;;MD3W z9~m&rz?D`FlOx3p16xIo8gGCKkt5`UB1XU+*=}XYI?~4aQIxVl>|lhi+6|~z!f%*p zwHqt3J5hfYDx8=~$0wo)i?#AB0Go#~`UiJzqP>0p8(K$4tY>T#dkOodvR_Q( z-&trddK0|DV;Ohh#?+dWzX1(H_HS6^oVW!ue~S}RDKa6|iB0?1 z(SESvoBqlceA?f~2@SEnWCYgQ2!G?IpKa)DCT~SHEH?8%)>g5#P32JF4|agJ*# zq6NjIh)vmsJ1Gv308Lz0DhqUyfNPNfUksWrIyE~KK^<{wDK zeI4-i2bRcc^)x`HhtNOdq1tpx!&k4_VOo+VcE-o-wKTD-=JZjC=t#3Kp*QdHI~2Q1 zBYzkBXnN&JlIrn&iY9pmMr)Nvc00u0nrbJc=(WkOvVOi{^A58a7BX(9d_G*c{JrK8rKxn;Pzd2bEz* zHIw!5EE@0%?j7e4d2=Sl*LTlxhD+yCF-yuuA(FTkyCCl3c}~kckAjHVjomZ>yD^%+ zjaT8B%!#{UnUC0;%>tztQyo~6xD;hKqH6J2JcFJ0phEq0g#{e(LyS|cp!H#CPW5ehc}~iy9p()XCjfN=}5#BPXjUd-&@F> zl=ku41_pmEGZfuMJZb#&h{f~$o5!=ufC|0t^1x^o$hyY^c^Rm1C-2K_`=H!2yjsuF z`ul-CE$>GLu8k?seHivc^o*2j+PZ3$D%-+v9pX)P>LZo~?%0f0go^#kP8)mh9!2`DYQDZM#J+q*CyWq?9 zOAHJ$xP)_smp}(e(!*>>nv2Jjm?DVWPWV>F18_gQ8@V4&q7>$oegNK{MMeiI(9y?O-3 zUy0q*N0A4Qqi~ypMm!)TzSk%X7w{|9YU5D|HpPXAN5#IvOX(N)y5xwhjml_nju?hT zyxln%?^U;;4>@9Y^bYNhVS(|PHSTM%#xB*|zx5UL@G(fjGm1Bki5-oGlH+kzCxVMT zQ;wtXXC24r{UiH7Ojul%qK>0QpHVeUK9o^67ZRG`?obBz&&8_rPu0`tp+lOR>R{7Z z##9wo@#KoVjXqGbJh79}Wm=dgcGDboPNQ|sX)d%a7dvXDRwK+MO+ChraY>_rE@|>b z^>bX))ICVLD--HL9)G~#i6_wHK5rY}O)xKsLy{?f~hr&*w9+{tlydprkH93THIkk9t+mDx<(AHC8 zWvS1VzK4IOtEW&wZ`Y=t=U|J-;51|M%15vAwGKyK)k(9VMfn&j-}XwQY_BvQYI%k= zb@{MPNnOt5cp5Rb)#riL_0w$0YMj1#|KDja#(6VZ6`JCmW<}xb9geFE9`3_n2OO$_ z4t@=Je9wky_VhUp7uH7qA-cmm*8YKh?{Xtf{r-p8%*c;o|HNFAyFWb4oIR#F>Q7cy zjVbO=%({PS%vlTngnzbdN=|36L#Jso4$eITKXnY^0V%r$XRz=v08i>M1Gt_=jfuvS zda^Yf_^0KDvoNZ0Xc|2ZNvp{Xa5>bVOuvWnIOU;fmAUqK_R^S|pF=4=p@?&0xM0 zE~1h|kds?4sE+CXHr~Nvpv>qmEob3%H4HTtS^* zO>S2qzs)2XcU5eUYpyb{qUsN&uUEzXnxCejPEJk3>vH;K8aDBUdz_Q6VRF=bCZ3vr z?|hz-hLBLM-zSrYhesIzZhn(c#vo0QiJlNrJSqqHkR+L z3(yUJz=|1*_vrUDb39|0X33u5!@eFYk}(*JxOF`-4R?-C!#=ID0wg|o3#a9uLKTqa zMni7^{vTG#uAz;baRcRoP2D%(&#!)0q*qs67u)$J_>1;%{`oi2`(8h#$gEDW6OiZ! z@ZcpK`&;Njitye%)284Gn#h7VtckoOx(lDLarosmG=V((^ z7xUjiJ!()Q;SS_cl4hZ5Df%;_e`y+7m!gtMT4yi8H{~wi!jUox{Tp9BZvu8yrisESWDTx5VLDAIgNd?&^ohT|4{?WZ<%z7X6LtTNQzerh0QL;yaDEwlIwb6O+;v=z zq+T&vSuak@)}~n{^ad&7A-pkZGDjud^ByAEZ?icPSxJlHO~sAkex>N)dpv@Si1{k+ z^he;Hv4kU1iUA*>NXJ5$brwYxVk4#z?)qSMuqgtocC*4-i3;BAup#R$P-EXmXt<*Y zk^Z3kB5{^*88>*ayg>nby7UwxHx`5Xj$FGQX68OETM2(SWPER^<#0v?z~Z-ymzw6QuJO zuJT|y!whoXB*kae*`aon-MBvbIk<|8(fNG)o0ZyAME>lfz*2@=2p+gB`Z@gWeXxnBY)lf@v#zPwn6o0Wn9rN1;uu0Y6oQUXEx2QF6(_-fF?G71& z=h&0YPVh?}dQc1gB^he|Eg2w6PJZc#L7Lx=sMCzmLF_(UFsCmAbNc)@8mle$3?f~- zrFkV{5 z7#s1TFJ8ur4{yPK1g%#*j}re8ds^4xnQX==H6+;yV0^@?bKoa1_Sni(JJs&@YBXgl zXp%);(srRbe!{1JI7T^2PW4WLr{eeQQrGuV+|eg%H+WaIF^#4uN9iF;CcU1qQS_HJR`Fi`gawI`@u8m zfVnJvjJJ&TmjkCsJ|!|MqNaNbA6%)YpzS~f-(Y0CjE;cZ$e=e15CXd^606gY?xq! z;`3P!y(KTKtAUJ^4J?;ZD~YX_8f^=q%>h-uE8Kp0k%8zu@~fnsFTBJYgP@gL>(`YK z{U3bIGqZ{1yWM&F`Lg;Rb@tpH>9m;^4U~x%GxUyoZ0I2ySbQ*sHZ@&2EyP3{B2>b~ zY%*hr(R$LFAS(iHWm6*WFx9paK6t4Rle&8 zpuE66(ne!!zqQs@qBO)6Mu&1*u>}&p(UAwPcHD!TEG@M-an*$*36?13rC~f!Zi#GN z>A?eCt+Z{0+P!$dv)3Mb%C|zqeSJA%ZLJLz)=lJr)f4yNYD#O6Q=>VuJ$erwF<{6) z(>PK%Z4VB$Y{lA8C zgMMUNM2(hOVf1oRo;-9tEvYxis7A70FnzIbB)3z3p*6_fVHOQS+9wu%j z{=0UtA0Ca9QmJMSo3z0uB9>&p2IOIZJ#yuR{h0U0z@sU+w|IbMV z`Zh>bSX&D*hgrah7FULK7a!w+ImckW*Oei5^l^?1Jif=4HZ^`FYqUGhK;nZu&UHNx zc8afpc#pA7hlvgTYmXT{ssbMl`%6Jw$tmQ$HO;uYr;1g@hW)*F6$b1utqL!>^-w`f z>DogS#E+_wo&A)#S{!JGG5mwB3ycQ4bew52FK= zORyn&@3mdupp=H2<-4r8n?@P>EBCx z>rjCo99W_c@IQ`C|sgIhTPNCD&J!$AvtsPCO4K1(ElpySOt1Y{qv?|qZE){!e ztI_M)@Vr@apkW`Ip>q6$kRgC6AJEp?P zbGN1AtG1rjLQ}p?&P4IHbSv6B1(_RH51ETfN~fvQwT`sCp0+twTmGsC%ds8i(tfYZ zH1cl;Av%%g^|g(K_q%u?&>Mk) z={&HW1;*mtbtXBv1=M`wt@X#XW;J}Y5kmMu&b848T(gfTT-E4F+m~{ZX1>U1>@m)` z@K`!_)%v0kba|Y+I4|9q78J0ymMM6YagRH%NOGV_=hIDTvo~x|r2%LH9z10#|F{B4 z0~$b*({+yQY5*mk-Q#Yg%&7c|uEQMxBp=m?%YmOAo_{->?=1Ac~Qz=>v`raHGI<=HEtV;u1 zfYvQk);A&)B2Tn{$Q@lWD6UIJO|oi<(5}8R!}PU!|DMwlx!(Q@FGa^@mGQ87g=@}=Gcf#~I9X&x z>bZ*zILa4Gf@;#y0Ay$0GAZOjCasaki6mL~gE2a}qReRx-FxkjxT;e|Yi)DQpj~n( zd{+i$YRzpub0&$J4Gq|6&~hR22=`_u2px<}uEexH1x-^%+L>Mrmky$R6{ z*ED}BXKPj{gj_C>6FymzVL_KeQLGY6x$9pZC_Q6Tx*BC;Wlui_Gr5YcV%Ez3hTO0J_;x0XnA|o<*ogA zg!AoDbDIp}0lz_zC)M|69V81!bbv?w7Rjj>JAk#tNFMO$h(N2+Ot<nHqFKAZQ0mW1!%?hk=gN z@i5MyOZIr#1^U=!a$f69sL=U0{b1%pwn19;_j9gAT_JJwVHT)L=ULzo_A4?|pxQZ5 zKo}(cf~|%OSrmqX>p=U%V9KVqczo|}h>~@O2Vz;E7{_Df4C4y!ZYaeIPdK?ocaW=M zNttD3HVYgr&S>r9HX&a6X4hxECB%edOv>mx>hE7m!ax8gC*nfTHSM|pN|%~X5) z96A+&idEG!ll+@Q<(54WExcAHZ=%=q)bd?Gte-b}N%=jI2VA9b8aPGv(wdP=FEp{X zZ4{(~a5z{Am{Ue@CMK(T!ABxOIc(co+ex_EQN=T(H-_`$JFAdOz0upv!E825#_4Aa zdunx4Vw+MWFO-^dpG>u1b?>7vpymA;-&7**-e&QUpcy&zK^a}{#}O!AnI`wqHq%58 z$fRxqGTl@yh|53&`-D?@A8lKWbyOx!ab)5dPyG%@$s))`U-(o)UwjH<;=Hf6yKra> zr9^5QQE)%xA!j_D9*tqv=6)Cu*Th+@NR08FCudfpFJn*^d!`!X;o(%y5YZp%H=4nt zX7oqY^|Lso(g1A};lUhE=|2D|xMRU861lWm0AH}H4WSPQz@0xVUbJ&{CSJL7FOi$s z{_6}BUx~9|Oy<6XOmn(C2p-Y)H-@;8cpBwjcQ7VJP9-QjxaDjxJfibvj`XOMRh1qO zM$Xo6V>xrDmD^yUEjM4hg7I)Hx!Y5cd8=$ z?nHhkF! zRf)uLTHM(&4g*#jlPn4~&vGX-6U3f84B47H4h`Zca|v(Ab2`&9OWpeIrZ?lXg9PkQ z={6o;p!wbsZ!O9nkFt;Q<>EaiU_j*22+t+2h7-(~plxQb5<25TC&l;cPR@o6H4AGZUt$i5$@{t5%K)D>#>B&d2jNaC+Umqx$ln=GWy zEB6qpF&#$#J_!l*kOM)Jwe5r!Z8>G=FIlFvbu!8%y#q(`uR;8m$*92_a1q~he1Nu} zf-LRC=Mxhpk+)5OuLO1Dh)=hy>Iuls_G_ zET`z(bS=MpW?eE)O5w1nrnQ+@+%x}+xtiaLPxH54TJ~2nlLZvVt zqrljuwEvy0B#rIG5jtSo?;LH_|1$~eZ-FPDW=lkz?wgJBIV=aVr)OKxTwe@)Q)i<} zw5QXvwL>wTS+mfv3AG2{oGl|&#$#l3hr35dd#iA6-E^#E+&8ITOuffh|DSE4G2C7YDhgs0h zO}+-hcPm86NL(G_FzRoI^DgLGu2Oy+rT_!)(P_r{#?u$O^#8|7^&v-+{|6)7$3{w~ zKjo;sN!iCE5Hi05Lh1r^UKsmv2A`US>lh)s|(EmXK&rUZ;> z^$O21XVkVhJXK-E}f~yss(QF7!5`!T~T?!4eqa3N|D%#_Uxk zc!rEwKj>E^IO7wCV}3>F_5b zGAbD}I8x|q%E_xb`P!+9%5fQZTH$KJrP|u$5~I)WWCky<$zV6ywG7GE#_~PnVcu*% zdc!*Vcp?R+`R$2qv=XwTOHmJ|J7A1LGkZ=9{W_0-wS}=+A zA`{chmoxlWj={j}h6=Yi4PBvaFRX8(LgJh3$2;q+QcLmQu0Z^(mMVsQE%)OV6NO>G zN-(qyqIzg60?!j*9L>r8)7EWsNI zhmgTWtHFDyH-~fPlsIr@7BRTbKn{o0_Q9ZHHTt8rgH%ZTv=Y3Tvxd3m5JR{g7m~aN zLf#Em(Tdl=ui{3j5V3EGGv^+%7To#c6&iN1#KAU_mIoQl7ORL%`O>wRb3HJPdag&I z_lt*f2F_%G24wZMtTK=AFdh-|W-+)4`K-e%bHjx^khBiHR5F@NMzLEDiVfPw_1Y;$ zhw1cs?FgaCY8I?bT{obKIJ}kz_OU=qw1(@UfM;uOYqIU7SI+A<10Naio5F?r4}L>D zYqXCno?kv3#$n7`Tp+{z?%r?E@x7W>eIu5iCZeTOxEE~10*~_!6;gf2erIYh9EnRp ztP&u^YOji+YXZzOGE0RVNr2e9XhRjTE(Ec<$6#qc`MfWbNu z46XAO1{-=b67$(o&f?tAmob>6?($ldGI|vS2?(?wip0T%yODF!QqbFHQ*G3_l-sSH(5C6b+>`9WRMF zzZqiQ7by&QOl_%;iHgB-3u7qd4AD`r@PIAoxeCh^qytx|oG~7MrNA!KW-I!~>*Wf9 zmnK%CHs)_d>)7{S1-7IXQvplW-FX{?yv3`uEXO^zG55l&v@GEJ1I<&=RHUE34e^Wd zNO&sXi0x?8%e(lPk>z$6tF^HL2MAqFm4F%T+m2C87d(2G3ZH9ZeE>Jru!8GIM--?1psGktBzEg9*btgaxq zv@IF_WQrH@WFAv0NQM#~c;+q@LpAplw1!=qu|Q2~v_x-$^(l~CgqOloQQh7wEy0W? zYjaB(e6b~mLw+f7=WrNg3+sXy?1h){(A7xXhXLchwt`gcY~dr`yh}y3UXX@nW^)+D z{f-{RdPIpUXZ@N630EUH9Q3=kElwTA{;nM(48{|9Ob6>7Xd9jk<$)>VPS|-hs>y9-+XsC~_xCDRY#9*wMEs-lmkh6O2FMi906w$Cv}v$a5DEkBJELdfqQDmPsJ~v%bVgg3#%aaraHP1MDzR-cV8%P?Dr8#* z%I#CO3h^xP#-zeNBwhc20-I6tJftCYFVpuSjpuosc0cccD?KW}K&@aO3O4&Jhlgcq z&1v7+1DF@jgd|);E@c96D`8>*4@4Fmu%>)Q{_&6_`FFj|XiaytGq$Wjk;-y+p@HQe z6e_G1bg%G$hl=&ZQv+7#XDZf$EacO&?$P&#Oz1NIRUxJOQ4Yd)1+hr@4hN1rfSms%(CK6N;7mS% z*~XcsJP>bj(3V!8fi1odMLPKh;L5zLgJ>5|JM%!c z^Fe!Zu8YF~C^UEB4EEZvgzO%B8&j7<80782<{E|+KgV!?`yn(y&9Q+-Mw}~V|JWy> z@IO3zs6=mf7^9d!)X0$r2Oa4_Jih*RwmevsE@!>95FWKuMJYe5RXy1BmZl!jx=_a> zuz*hhW5X~Z;Gh>f@E|w6xor-rD_l9IU1cs?GCc|}4i8Zf>~IP>XhL~PM+qMWvR^OidK|Ld@va~O3Aw2EyN;t*?1C9i4s;Q2 z&(i;IO!sFUbfs^(sMKC_4e~o+ZUxh@xiF~*W3tXeibrEANGD6r9)U|F@!fCtw>hogHoOt>Ft>M?BMIl=0GaoBz^?3|C1u_} zXqs>yEQOC$XyGGNqInI=WxI?$52-DR6$b3DIFC;Urza}J`3daPeE~+nQoRejfGDS) zD-6|f00$Mv1sm2`-jTMult98oG-eH7D=6OTyNG#^D2ltNog}PyFA)-)58>{J_h?10 z??wMBCD7^;5}5m`g1+by`l4!ID*!|=qgR)ZDtmzvsp`dGmE{NW_wUnEef};()));= zaA3rgd=<4^ihJZT;>MZ$7hYp>$dm>+qlGCr4OT0QL+X18+F1OTKlTd5yv2Qk2GSF3 zAm!B+SpJH=A<2}wT!qhAIxBFHFy2)O7}FHjL*@w|^)oInY8+Cxtj;w#r*q9i7;8Vk zXM|*~CD)KeGjB$VWZ&udtw%oB(eOWO$RjMdj&Ew?rabWeIwnkiYt944O%GM0lNYga zwWa`4!b3Tnd;__^T>y`2-BCd>*L@Dle#35n@knO{4iQ{>@_B4T6afVFX1+3f8%ib zJpbPW7u3PR)%RBbp8H|k>$hRt^h0{onCkrnvu?^^fDa|*9Ku<&3lP2YFX(|r>o4s@ zq1kCpZGHNXC8y531L|9fzoQ*547I%GjV?!o07-b2(s zv2ek77Ttq?f5CbL3l!bMCr8=~9_V}@gN-9EdBFVvMrx;C>h1REK9b2TS7_aY&!Q4A zqfHMW=cjiPlJE{5V|AWw^LU6#*#n12krYsz|9S`m5C5zOEXbrK)*+>QlsrTNiFnSS z2xD{4N7}B!3}YU!dxH8G{|Gh@#>)joY-4J`;Y!#%a@d4kKSItH;|&8Dw&p`4X*}Am z5E6R_Dl`+?T!`d*<55SM+k}F5zO7GgMPS?#qQJ&9tO#vKHpLfVgA#551iy1aF><)0 zoAf^oErz8!;}u5`$nzg;l{{Mv(FGAI#N)Bn-)I!|e2hWDXFLO=u-*beSldTI@Qfnf zbdK0KZ%6-mxh*k#=;PAh+k%JKXCJOC zEf`Dl>+A*+K|62Q%X`1*5=BxRNw^f8n4(qF)YjE~|ZwDpSF2 zG&b$Zp#8|>9L`@=ii5VZumMWSSvsRV!gLQ4EYV))A?x$w_5H)rQwGwHV;Wsyee@EW zm#4ghk^7!CgxldHYK>Rg3BtY`D#D2yhs|m2JH6-#ZnnyW+pi#&PS1+|YjkmqH8GqUQUFOV&@4Yat1 zD+ZXFV8tC)Z(-Bs-g>z><1yc^?X&ieZL((oOW2*EoDQgrXeHWcscZ%(Tf zhO&+ZDY@a51ckNxA~+|O7mUg1Jrqt2Q_)Vu`nmIs$dWM@y+=AF5ekDfU4IX)Y=$yq zuwaE{s*hSUM(b{`?4=U5J}o>PkH5;hez6R^?G6#o%D z@=G))A5lwVKb9I(=Gr*Qni;$Q5)n2R1l;=gDnPOM>Bs7(!wo7s@Zd-#{sKYZM91kV}7;%!)5 z$g}^mcC;{p*sm7_e?b?C?*|0xP|_ESXO^Y#fbCc8UI_hN30Tvx*?1CGGGOLcW@rc(d<27a?#(tg8G%H$;DsZR^O!{+xd zFooUd@^^IS7FT(|^DfkV)Us5bZRzm?vFqJcXpJeN9FnD+U1GG(_c<-({t+x#Vr6n; zZ5_V99x15B#xXj7;Z$)2K+o=D`jCm(co)2pPgJBBBb_-JN9b^UpAl#?o*U8v1Uoze z&Xh)axL3zWhck^vIzK_ws$fi)Hy7r=S0M}EAF-uuLFX;Fd{)73pO2W6yAzgET{TE; z=QkB?m{OSiwh&Xw$pbQW|%gM_+Q=ZIw`T?fI*NhUiT#dGM1dY@Td3Bt-;IL-5Y zD_bh4grxmFIO1rmYbzY6%>p=Z+OO1;n{%5nVx6t4z*aQBmVSxk6QlL<=d|wrNAXnZ z3w_P)Zvxu*CXD7zo=Gk6SXI7XEh-qPA97z}3~?5VZO2Zn(Y8v`?W;igu#b%9P5r9q{51C*b4a`Os2iOUkD60<6D zAE8cXg9!aQ|0hBh&8o2fK-T2qfLz?@tHz@pbU~WlQ8HBith6St31dbX$lpAwf&)vJ z_ut61u3L4Tvu5fPnOHbG$C@slFU4Fet4-;Q7&t>s?0T%!n-e`9L3}p5f(VI@7{e`O zc zgL{PE>Dv%+B13=-mH$TmL5RvN;Kp{RY2oOMo`pMR5S-Y&X!nvDrk zs0HuHrSzBWF|bzd9*M)9CKmYNSld#l@8XIyiZW!p$Fk;jG|?1;v;sdgEpu~n)DMBB z(>hmOFU`kXDYLF*`>7GG$Z*qnYd)Wlp)5CaPD9*uO|Xk@ottiu#`m&JDe6;-ms~IB zn3JnJVywMUfqU>#$1-=Q5`9<3L%yN7q{*~7<|Ddv_7$(I(OWko#d&TCZxULteJ118oEVU z@ZcH{d{M_~yKA69t@VKg8j)>HogZ#O2&t)?EQ~Ut(3-ktG_(cUS81g3y(Z$Fv0|_n zh1Ak@6!L79fEmrTM%y8cv98ntqmv_};b2~EoeljcZDdMYs-q@J4Bl)^Veh13sP1&k zf&M-J)GA>FwoWD1M*I7>n?es0e$-R~HdHVbO{tg*#&LDPxUL?jdEPI@wZwJM6WqmN z_?qbEBkeG{m%L@P-!XN&y2+0-#QPm{rpPyNmQnr&42k{CBg!Lx)AoJAxWWf!dHo;M)iis z+HhQwsn8~GK88>5hKMo+_gyORm4>=tp&70>l@WYvHbRmf`xL~Qehh47PuWdi;p2@U zcIp9zW`^rXO7YYr8xwf=fp!zO9LSQ)C_AJS7eV^znhHJg4B-Ymir|kZck&HsxB<)` z!?P!63}H($_tW96S{CKpRTV9wZK(}i+0leI&5|mu8iQ$7fguylNHR6IG1>`SwV|<3bn+1&K@=T#Q(v_x={p$+_v7_hr^$X7d&A^>g%4u1p$Lg!L6{Ry;_g6|h8yav* zKQc0H4%)2moEFg}(1HR+vR9j!4JI<$b`ACH1kWk{r&QkPb&bK{mK;VDH$Jr?McHk0 zT-`D~uu-@y=%EdsD~N4@JY-klaAYf;CADdZp6EdfIQPJ6hH#+ZQ{50Tqx6=j{y#bW z7q)E$xWHL~+X{!>cp$$OnmfxnN&xHkb&lgI!fyDk>KuTaY^ld-u>t4HlyBO_bh(fcZH`M~MAZ8=4Nny~XTQJ1U z7^0%Z3^{I2$-yYgBcm1AfxZXBh8J;?Ocvrw@wfDuT@wN!+oy1vaH2}OfbjQLcB_9B!yO^kxz!=|k+REUaIA^B~Q+p=F3 zWQ1UfZOO8T8sxG3ICg>B!WV9~gL-dPC^W3Q%tk}vv);g=hhpO%iyYlv*G^cQs06Ce zz>Fg{y!AW0)gVd@2bfP0hP=ik}q%I9Taom=>mK1fxAIH^Ok55oUCtZJG zB&Jn6VZ2k&2~FpC>_cXO*jvZVs6}T~lhb%VOF?#Y#`n^xRzAzhJVf9yPF$j+{)z{%KH%mPMXx|Tw7 z%(t?DrZT#R>_eEoiwQ&5dZwJgb?9UmG9P42j|akTkta(lkzF^$dTL{cn9;;Fy2f6|;CVaYd&r2@krk)~|PWDBRYS!F4EdJcdY{yQ334?Jgk+;qcw9H96I; zpjj1)4o9i3@lg=$3T%dNj{+n8IO1hE1h#9aFc?##hx%r?QxDK81*vGOd%!x;AsmSg z$#tf+&tPKL2rw?dT`Ei~z(_X&Wm&zGf>fsB2n>9mlYLKoyw>W?3CTTCS7HY9K+ND= zOTNA=`HE{VmUyJhI3>3dwcS^W{e0{bYyqSFP}5#Umf~(|MtjX@8%C(&6`sU+N3vd6 zZx(NYLNmqQ@E|i9?1)bmi6Naae4eOcI99I|E5^+9u0Mm8JVl|QJ=MXA(j3n`Mq4#WdzUB(ifIX~C>4`kUous?ysaJ+iN63D)n>rP)x@!X~)r1c#G_n&-6#T9=i7w2~m>+{)dAOvUJQy6MfKw~{^ zMPaUCqf$H&F6QuzG1sFtpY?;0WrHB&#t#mQmU+f>ikeoV@BJ`Tl|08}u+AArXKD=A z%@^X0DQ*~|OMHbwo{6dzdkj9IiMhgHPQm7RcwTk_YQn%FpuM(KXzrBN28u>@#UT9Z z5VRDZ>^RMCC<jM`6ClVwldoLv7GjOY@Rh`MZv5;N9Uc3+eQ+9Y&681#xhz1$}WLxNbrNT2I6hv zIfKiMR(QfmnY_QV&Vb8&Jxv{p96Vx^^-DJLK%23cqI*iwV|Am2-68gBwuv+9oD6X$!nV^1kJa*7zuCCxRBzR6pBP#^4jjIh@s|u?by`Mw9h$6|9nT z(mLrupRUNjCOTL6Sn$|m%ai|s57{R{HEz<3tzARFb#7{!DIdZA6r)) zP*w8%my2|xk`g9@QYt1QcCCuKwj!=;2iUE!t}8a`!m&{77VHAWLK-YYK*7dF-eYa~ zedf-6m;3hn^A8{AbIzRUGjY$%z-+UX=7;HscjrJ_KL`7-Kc1Ch*ZKx#3ZI52DYr1( zM=*iLW| zoal2s$%^{)MQmb9Pt1i{9EK1Dzs$u~pUhlNh?``|YgKx*;JH>g9(~RQ5>7R-rQ&&L z$R)VJW;&Xt&;0VXLVh_XN?s@7P*-`9WDdk3{nC8I=K7fnxPDGDp=?Xcx*Zk(4%MTN zOR%}Ny;%!u%Cu`@NK+O-x4EGV<0RrVq+48UJz_x)nQ@+%<0U+px)A25qlJtZ(yWE( zlHQgI#M|nBL0=WIMTu;kcoHaaDqGX zw(6C}YTaWz++u^+1_|3R%&=I)!ZB^Wgu#UoAKq$`@FX0v8(K+vBHCj1<%-FMnCdnW z;5GHp8<{=ii7h^qRi`1+hIf zqooLN5l=WUcwHNR?3649{BqLq_!|WuxENMj>;N9ew9+;Lmvk(_8Yp}P+~Izdu#B-iiEb+pcuc&^8z|_XlnG4k zH~H!FkHTVE*Io(fc8RipHNEZH(ujgQ(E3nL&ce481uuIg`pO!NYErz`6zc_Pv5zLq zfF%oBg;M=`i>9qXuX*>-58FpSVbxEqLM*rMGuWFdSE1wvk?-pAi9)p}3~NDS79bCA zS3|1JOOCW#1FKd}VQb1K3m4Q3^CHu=tPSc@-;L#UC}b@f1s+{zM9f-zpI>#cndBlN z=IrNMXw$c3d@r)FylhB8>rf{>u?5ADL+fC;dSjc35w=lSi`zSL;{2y3_k$8ua5iTaaj#Ty!60>ClNBpD9JL%v=W_0;zq01i}(~rT#v=N?}WI?iH z@Rei5Cmc@}ZTE&4WOVFAnb%d=Iawym>CoiMxUEurs(~%u#uCQ-TNFW<4ey!3<#t^5 z#oZ*bNP|rf$*1<4uzF~=n2Q9)x4>Jj;g>C`*J4!C8a))V7`x79#Qq{&TMF*89x72l zkEU-%W2?Pf7O1BPoWDY=OifnGQnjen7Br)5o$y?7AW`(t#Vb!mZfIr9Nzd zxoo_jKE{^2P*hTLS9A)B+c-Z9}ygV5S<2Sx@>lME>SHBU;kW^Ox#v7kbA==A zCbYmU17n~}bk53)Ew_hZDvK?jC7i#>HC*~pipIgBy0{%tRi<-zvQuk2a@hf0y|OqG z|DY9K1>J#Oel>?9q1pHlF9tP?L(s8zIUHQGwbC>COQBX7G%g~Yo#kyQCk~zXWXw*i z7W_+iz{>Y zw{bF_ZDTIb3wJ{WZYcxYlzd7{^(c2YIxqJ3s*o(pWXyl>q8_5Hla-w<)moN<_eu_? zkeBzMRXN%)xD}N}yt1IE9?53py%)vQt(FW+XN_LFXsL5@l?9CH@b^-CUUYu@(C(K| z(7y5rVK*$pzVhyrd<46UP4*-0>tGf3m3N|Jo`@&pl%`e0GhUI8q|hfBCrJ(<4I5g> z2zIlNLCJvw5Ojc{5L4`vY(zQXm}-mV>()^#eM37kspd2ZFuBB|^r84UEU{Z)hf7lMg|ED0ZFqp)n>m!-jKUL@VrB?nUr7jA!3hn`c3l5t>13 z^kE2e8K5m-Ov#5)mzRe~a5SX1*G;zOI!7EqkVzp5-o+#3emY0#bjBhrzBzZ- z-_2OhaN1i^%!1lc&{b4ZSS&ul*GfQp@n6dM$828Jnm*I{KipJst zgZJX9vwbimJ9eS2wmip7MdWon4qnH-oVWNm=AWheIr07TE9q4IJ0|nw5QoFoY2fik zwW@jRQ7*9P1eCN%;KY!|?3*O>NqlnxN(!*`%o0&DQ3JO-3HbhL4$nV{p(O1bCqn0X z8&P+*RV0Rg$pi_$zASv#Gn(*iP61wcg~PK?A^h!YoY;P^g%KI`XLrJ}_@6St{wbX2 zd>VpkY)La^?^Dst*PKQ(zn{aA9k-KBs3<2HYYOJ`B8E3OgYbKA%K}z(IT>xyq(G|> z0t&dm_A}*y!tP>DRGumCCHOtzg!hwVtYzah+1hXxYHQ=kE|wDSbI|zkEG+LKY&=Uy zd!Z@3ekHuOp7ewBLjJ<^x5r8R zCuXDYJmMSh3q4N6)FJdQ&Aw6K1;B8f7U4LnE7)GVfa%Es69w|~0$bc;%bNw&$QV-M z3!Eqrb+5b#C1fQFSdxV`@(FhXXF)3p{Yg;#0=wNTW(Zhd8SB9wPXgdhht@8U2HU(N3tF4n?7&9>5!O!z{0nXm zXRv2H`d#u>%s?k4qdN}7)!_^_jr6u-Z3Fk(50;QCSUJxb$%$l7>}7~er^X*z3GMm^ z7s$PWf{z(5OY767@mFkl=NA(({3;UBcrx|9hOy`HRg~xInVe{M6<+iBP$m_d-!<5w z{SqQ@8g9BHc^LH!xHFxsQq9PNEceh`JtT8gQe~o96m-Fa_l^x`=k( zgn6G@bj5(3U-1zBc*v2^hga|bg1mb$=;;;Z;%p_w-Nfc&0uINp;1}OtF{k~G=sJIw zX~~_ZuvCmNC102vTy)aVb5`T2GSs+Bb!wl6ozu@3U?j!eqjza2Rd+bnq+u0N_QuzM zJkv2{o9@C9*YkcBv??84(-{6VOh!arGh}}~1#+z3RV-68kQom*1^jboGh6_{;Qj6j z_?Y`u++QJ{u{MKU_s&E^+TBQMbTkT4L$@whm3?wSmnz8-l~~q0^wmhFb=Q*o-n~k4 z)om;{MRoDHNKlJjB8y69zQQ9%Y%$Q_7MdQMTW(?M*L5K0qL$!3B4@?qHbPnqk$ITO z8NGJr!LJX~iux10dgOZkIqa&k8s0NC!bnjd=Da`JKZ`+}{Pes7*6=YrEZPxVFIzUV zA^;@0L#x z+RWjpS$@?5=jF;<;z_bm_pszKgcA>|x8+yyC6*nian6JOywwW*A$hO>Bk+zc%WlY1 ze_P7RLw$zgF2f~JW<)ecg#LG2I6ObB|00bA^J#<EqRK?+6H!%5V>Fc z4F`=xS&L_oUEZ0)4Qn-XpqyuD2@4qP#?BN%I_VikvD)lRA$Gi6pQGjdN`0TB%hbni zdog_9!=7V<=;L#g==+HZq;ldl*tP)d2#9+=GhRSv4Q#^8LG&kJN&Sk!Tc*n}9*zyd z!4=VMukTCb`_K7|SBvJ&zlH|+6CS^O=J68Y1})*dxbFVASmq_ZhNVVuB(M~F=XT2_ zb}0t)F{?RIS&HoZ62pnIYOisGb1$~I3kA(GV8ttFj>OhJi&Z1wOpB(YU_LS4saOTC z#q08(!k{>g#J$Gq{Oxg0oImbk$M4?}^Y8oyLC>A!y!ewWGi=vU)K6$*i*59oDY zKFf$3FN&6Bh^pCl8LmNr->*sE4-Yb4NAz(img>~I66q9OuElaR`3Ql(&1k(EAA#1G z!IOC8NA##Y)*M-)f{Sy~N5s3Yx{R37h3eN)Q8Q6keajKPy{$G6cL4{WZHN(MGJ!xx zg+P@vO$!xxTk6QXo`OexnUMTS#3@vDH3UyL<-EkE*Nw5lN41I(%mNQ@^F^t#Cbn)( z5f$j#ffe}dm`~vq_?!sm6J!qW9{!80xcrL=bIXo0(p(tbg%RFVJi=R_ZxoA8;AWo? zV>}M?s_}g^>r=S_T^e-VmX_>CwBesHZEZ4C=HZ>ev5aU;1uL<76vOxYjPQC>Ib8V} zQD5GQkCvh{)>+0IHCN`f5;jJ1BJL|{e@EnXL+)}e=5Og2NN-%B5Xk+4K2xwpfwcLG zadvH#jQ9x)(HqsUG&k44-%%VqUA{rjI(%|t@OyK(WsCM~A%lN8z+fl(y#IQ2%4~-l zTEwXH8E*)d=if1*T{mCzRl)B&N<4^yzQbC+JjS?KDpjbZ1>78b1dR2T~Ia#b#!llBVUe}|5 z1Zgyg?x%v6;8U4}*Q;xz`?L6?4}oR%lC#WSUN?#^Q+WtpZ#XdWd`sNZz_t~FbX3m5 zPTV%6qw=I!9aR&QR<4dJSa^>+gIFP$|AeQN=nfbrK=c4Ua_a%^rPta);c8eYAi9GF zoVTb0%IKKE4e4O2SRAc%A#mPU7Qk9g1#2(zVi_;fg7e-RzLtEFbgKcLWzFHhYO2

2B2Ay}u1@CBC}N+bG?eDqX9g=2M@oEs(7y`fJN+rloS z=^^-^IB3W6wb<>3GtZZgKCR!jfQhNVnW`*r&_cQ@->~zk99$Pxk5TDr`u{4F|7xP3S zCP$OHXj2ut@-4wsHAVQggfUx_WjLzBQWq^()EjCBEunw0q`1+sF-VFyOrWYC+L=ystGm5e?rJf zPE0v@qq^u^AXf6cb6V~12<2L-Mhn+qT&z^}sN^-$I?`I@t8;tqcnhW1xd?dtz4hdKjnAt(&dE8ni!a6C& zG{{cntNU07o0--(YQ@x0nb9dbm7lJ+o&u?9uWG7$%S?fU)=a^zMrJ8id`_^{Uge;> z)AGLpM=VqLsRc2oEo!DH4GB7ngKCs+sJ$Z8F$YykUFTXdVoE9P-bvF6H%G)#zcJ@g zh$AFJysIcf0)-O@Pc;Rb>YJiGSoqCXDZ5}j%$qoW4y>iJ*S+0bVkY!UF`y;2P$YF* zE1{&vt;{GqN7DvWwUCxR0ZNIW)9BT$om3vW*V-#_&m@El%Fu+|?}U&aI!h8IPRPZC z?p2f_wR2WA*WKDnsiK{eW*mMIq?IT8zDlt+dtae}F#lE;7esQdUlr4tN?cUf(*lkQ z?034TCg@fhSj9FVA6Hdp-CctuC}a~35r~>nU7;y$m{N4hXiOwTW~16*HV>|1VkD@o z^3ipkFG1lKyiMswZIot>1yzs}z3B*RB&z6E2P!UvS1}vV_eiXCa?4Mb)KVahe3IsRz-S8>=F+ zqeu17{)cW>LJMXzv!sN+8099`hy3!LO6I~~jnDDn{aP*j5q+$$nxuR1h*J8(S$y*l zQ+c!jR9!r!Wd3ZR^4EQPUV@T0_`}iP7zRD?U(6C$xuK<2Uaw-}EYyt@+_spY$@dpG zXk3uW69qwqQliw(z zA32(0aPxo)^#_R=;-MO>yRBTJf*#|WVws1kiSEUJl~CrtDJbElNWlC?2z};z6|*TX zuGheYw>q@mSA`|#C|?J1vBAQ$(i0Bu;v`5c)S-yjA=zNF8jwFCj6plCbY5P&^;e~l& z>Vq4$z^hH~8s0RaL@%g&;lU9jZy4=LFHUUtQ5n-%Z;XPUu!q3{h{zA`n|1k1T4hVH z$??S-mj9riLZF=wM&rh~T1g7hT3p`vVr>86gMoN!H^!+;o4eh#rVLxnRB@IsQmxaA z@j`?_L3E{wsu{U^s-&HpfF@wi>(Ak}O`xasKt_xaehy~8O=(zDr2X_LMl_^zqi$NU z<%=cdHHCp0O&^=8eixD_@u)9Ny6G&A<|q!_oY+idkH^rjG=s9qxK6|uvxFXgP}U%v z5l-YB4rSs4B(9?%f6)&){;-Pkx~+Ouk1w_ynXrG;vk(BLR%I3GoV+EwDy`|y^K z$DwXfP4?59rqs|KS87bScvCqg+;&kR5O)!cs7yS9-3pE2b+Ur@J{i1_R%j7zQWS8z z6u^lL?v<*5Ei-N!lVfYtg=vO1Y{f6>6Py30)=1*zENuZJdeIssJo=Ub9(M~ZzjqtN zlJ``G@yO>!&1vzgZJ_Dn3z=uaPZo<)%Ub^6seYlI?NsjMF;+7voy*|m1{_ZESG5%e znQ~&7X=-%}et|OV))q3>mJIfz&23dpg{?I>QKiQr05XT|7~F*x1|Z7|aq}G`Vr!*} z+hrcY5?7AIxdQp(i?-)bKUF!s=mm48nk!I4CfAup2BHMKv7ZpA`a`g7$H0c<(q84G z^EU;xM|IEZM}6BPJB#|Inv?woj5X@^NXABd`DbucNA%A=v6^l_qyu<)IEyCnYSEIF zsdzB9Gs4|wyc;7Fygpsf2zzz}eD8M|{#7W!*M1g0KG)xY2led)nSW=oWOlU-B-!Z}DwKD9CGg&Cr?i*zU zH#>~gzcF|z8W@}MPMG3`D{$GfV6;SXoo zO*LHDbcVBH&!oaL;1C*<7|iH=s0JQXT1MFH~>fOU4lqV_ZX% ziucTW1OE6%0VniU1qkiRIpY60)r11ekqv~mq{e-agD#(CUL#uD2jO>olM!ng?EX?( z3;$r!K035>hzi?RI%$o_^%|5+2m)LtaJWQB!=pXDG<(xYjHiQ(Fj)}ra9f{Vnh~{0 zU=!}XFmASn3SPgy=-S6j6v$zdG%VoRoxEb>P45eJ*ea@02LU7cdJ8Xli2`nHSEhA! zg+SMMw2*{VmjS{OI!4_=8Q z=jA%4)u5acm_do*mNQ;cXU_9^iNd|qA7y^WO@Y||rsCHgyS9JfD7=G#8G>PD=5HwN zhVGnjbx(7oiD8s@b7B>ShC zP{{!Flbb#q@foPg+oMmKVHw0S_c0C!xnLLN8 zx(IcHWWs>94217ah%8F_!KNxVw zBbP$Qvm8D)8pTyfC8J@g7bh~zo$MB?Y-rIRkn+cS5-hfhf2e*HHso+(T@K2w?HK6p zjU#%D4a9_E#-J8_@?^xACeBw$8;K@kp={4X#&e*}57Wf*@(`$mBXRH3>?wXM?1K{? zL}xN05*&%GFRyV3YK(`_B^VbZkHco_I66KKdpn2U%M4fAl7YgzS*}%hU(00ydpbED zQ4Ic9fjCY8vg3;aIr;_Vv~mJ+_x1;eb0?^J2#>JLn1ZajR7=OnlZnV`9efm(5D&_p zhyV}uWyF>IC#jn05KWt;nl50TuMxE(yUEyU+Kx4c6c|ndqfkzwg^Qhx%=U2Qyu!(< z?!q^G8DWAT;MlhW6*FrJX4LqIItBA(eIFVXiXq~=cX|z)ya?Iv)+}8)=UG5~r>ces z8O@noZOWR8&E7+;IN=eh^3zGBkWke`VR=WcD6~^LE_eU>QkwP~hao-lI>|hHN(@6J z6B#_AJBLShPj_T6Tr_&if+jJ2()G!)HiQoiNLSjlhXbmFC~RoD5rs}e6NGEdG<50E zq1s$~>M@-)w2|7dAB!T0@|l6=d}%7jlBTBPSkrur zTB3ZjnOf-?HL0=3UJ>bbG;Ay0 zMHJPxo(10Hr83Wm7SDpl-jNKcO+6w}L*fI-qIBv?t!ny4ma|cvI%}D56Ea_m!i%4c zj8|XJ5Fc`052R=ginDpNR`MrAGl51F8l7%N&WjSVc8Xq_{>vv6QMd9lq|r2zWSxiv!EDToV*mnZC-$Ij&Ee18M(ee`RurjYpul@;L9?tLUQ=XM8^vD zD)!rmTvU)2-w_ad-Gzlv_wWD8&)BG~r<-(gYkj4});busD$R$2@Sqz3h#hw5v& z1cHMtIXrcVsso;2I=)0TLI|(HF^_PJ?SVF&_%%XhL7T&2`4PXUNkqPct6JdAU*8BU zZCrh2h9NomW{Ay1x@_xy1lHaW^f5v;Qt-sv3oI9t|HKfzuRABUcF(X=T)$HOClWUr z&)EKjzNY>QCaL>UAkn=z(xw}xV`7oUG59v#USNVHOJOdj_2WcXKjb~&FO;VB0FJEv z3;q8zCI7_?8s1m<3%dzJmmx_1;f!cPA;Zz&E)-+vy0;8%JC4ehsY0-8+4pbkRU8{j zAD5}TNKieO;yySrLuqh|CUSue%b~JnC?h;)Kt$EO4zT zR;(*g2%oVvu@cD0m6%JVQ`AZrF2fxxH4gM+dxm0?B0hWQ8pl{QsH|TmuC-nT1%s4G zNqmMO9a#k-i+YjEz{b*w6<1>_F1l)sHV<>e$r5yq{*{sGIC-?k+;mq?H zrj)o!V^7Cj)zY>F2b)y$g;ptwV6JHyuGA|f1D9o9)C3!{76sNgOoC!2g7( zO;cBCUOq`%k2sAC$tp%=Pa2iRbgB~f>APb6AUEYAz)uPHw16Fy`3BXkwU>xCl zB?g8-f1!z`Ow^!v+b~aXuaT+j2E%J`fuI_h^;sd}#-)y00`{F`0c&#Ulqo%bBN|-i ze~_SgUAVxMF3=DcsQe?^G$&`gUKrE0=jCXCX%)`ZYdoy8z zNeK$x`Gibs z&RfBF>rW_nYffl*rHuE-DFrX&l!n)J2Y4;8JtW0vK;tfHcAN@sXqC8GibBdT1y5s$ zhD6N!zfgnafK?pE$amPwVcJ&2soD!IayZc_CsTZ4PnvX??L@ST;l8y8D?^Xn7{fvt z5`LQ_7j|OlIT22njJ@)9W=%T33%zN?F37CKK|cl`*ah{84;T?Z?z>TE!;3hvl@Z;F zIbpU3!$u_q?ooweW|y!>HBx6LS?*O05Mn-%)m~WrReQ1g_#LwoMr?Y7_rHGZMLeT0 zPhm)iD$|j@iGVfRKEV4cIDB9q+Rd8JjBurI`w-(iOiWn5r&MOzGBW}9+Fxi|f@Yuq zj1#N-QN4dw(}pdWt&nzrJP#m_t40cez=P=0xkg!%=@G4Nv~iZwtfU(MS3b`;3(EvH zJcy2~rUzlF+E{2y4HmvwX(RUBXgxuU!W~-$Z{%SWE}}W4>Z|jErX7N14XdlowW0ZS zvut^c;?V7J7&-=cYD;wyCbv-_$%iq?@oB3-oQ`03x_dj0gdM?-%E3-DA(~WaX7KX} z)O+`kdHU4sCqyRS5s!xWe3UHPRX9AF6K~>Gb;V7_h+}UYb*@lY z0ydmGC#XE|mJ0qJEO_E;`*F0f_X(JNjV0IPs)53`sT|vO91Sdd8Yh-aL;Zg}jy82~ zCP#Xl0Q=A!P8^(rjK!Y-`|+O~Dftr_Ty+{&!*+#MTj{Yv7N|zOz~fTOPohAFMsePd zDAc8RnXPym?1z(RJ%$_T@hMe(@;-&Z;x0n64q=M7vs#{M( z-;C2tUtNay2;-B<>H_BW!O2Kjn=?r39&8^=2##5wfoB9==g6Zo=q8DvtA2 z>z&w1W<=y!3}=lpI8ku}qq5i`ew;;g({mY&@jW*S*H~Rb-bb7R-1RPpx12-DGYdJ9 zTA1ZTK1q=AIuDt+#~j}FI14A@80_#&tJr#Bfy8uYpGRd|zGXyTVewb?i=*-vR4v(y znHs`?9$rv&(_JRug=HbTJ+qT|HvS?$pq?}kp*nQ#qN;;#qNzyLCg((apMT;iQZ`ha zgk|C6L{(eexo%1*)GgbHaue|h-o(2KHzDUFdeM;^Df)LfpCmIB482eqZz z>*^lSMl5K`P1Hi8cm+%sZo<{1)=ddAznN`G7p}2SSE*r9E6oQm!;BuAng)6iV>?n>0uG?dXVc@kB5KiinH)8NTqmR|)~;yG1pYKTptRXQ}+ zc_=Y+(@{wa(^YMBJ3Om`e$}n@TB4#d@rkir2D0G&RtarnP@fM<=p}WWhil)ghf+%!Cl35shHT8$6T3kjg9=gu_|bvb4tQC=${} z_@zE4`e$Pty^L!P8Ru9wzGLA48VGwb&r!7#sx{-p_#9P7;a+n_z>ei$#F-zHi|G(< zozI0abH{TiOo3y^oc}I({W~#M4GQ^@qethuqv||wVL>)S31@cAF{fFba$M=+ZItNV zt~tsXN82}0CDt|j>{G}tYX3ADz0Sp0XOzW1=7 z5x9Xf67HiAOYULc{X?_@8J36bxM7>t$?e)&XG=uOCG$p z9-@5B963Dip(;@L*?<#1j}Y<9b9k^-yjbV^L(G5vahG}R1f3>~Xd%w+lK&}l6zrRl z&QoZA{0OteK252131)iridB6CV?RdN)7oOB$fP|dDg$$^De)6_HhdZ2U?O#?vU{#RzZ)vK1nKk{!gUUP4DT7AA-Ps`(Oa{N(cm$LL>!5GjM?MD1zaw4 zL9QJ+*2F8ZV!1wmh;U{V=b1f$Aqd1=k0la>5si6=n|?*X6;B|TahB)i^4VPJ>#b-w zpM$5fKIW-vkPvm1hhBOWDd`=L(p>u#sf@V6;S>;J;q*;-<|ss`u+qY5n8aHqRQDO` z>b4TOd?(k4<~)N9`zJ>sD8iJ36nuD(oQlg#4HW{5m_Rme1d`)(p~mL4 zZao^in1?(j(Bi2=!0H7I=7u*4Wc3>~5sw_rc+py&t2AX(aBGmPJ&OgthPTpXBZ@U8F8ZUQk2gr2N^M>GY+?0 zxJDeQ(4%PQTgq#mZsPt}Nu2?8dWBJAhqnTW^S)J`O3G0|;vUlFS4d7LUoH^fdrRCy zvLx@=R}YBC_3@%xY%a(J|OiLOBpXj2wTs7;doYtVSCYfq$2SHQZZ|T3feS??0&DN{w{S5-Uo<1p=`-UaOhVs8S)dvPC2DF( ztapdxTgpb$E18RaTCaJBd~G=r?U>8q${5Wn>17PQc#D;;3x&s&O4ojv+|^PSa90-4 zr+~Yfn8ngC$=4RmSBNG&YFv$0-D_+`;Tw<@QNE!XG5S8%mcpk;mRC_=H52f}H(@DB zxXEWD1_UviMip9-`B%`W3Tz*`R$$&?@`(|{ge70uFRnJKKou^lix%c)#EGy^n7^8TLN{4!B_r*0R#Czyn7d|mIp+BpYyJFsjBusm zhPUxfd%fGPihh{#8MX^~_>2UZcr!V?hOwkEZtrP&y8*5Gg8H7^R2vSU?O$O70>8qr zg|^V?z#!`mGo__8JD^Z+nks>jR`H4NXOdM#D z0GxaJiH@Ng&XFHWZY!pJ;`5XBBN(d&E~dI|NUoI-9w{Lqm6$N%*g0cIm#M8NzY?R{ zu2nJ+-Adh7sJ^L+js@L1RztTJ(h|hKx$fkI+tOxsxQ^OcSb0L`;ZkxPbx&b4+}Wg* zhzKsPZhuj_)mUtY!GapEMxE7`!d9@L_R-l%j|KH4p?8YRwWdBPx8W_Ni`9)-Setbb zyj6xQU_}MGY9Ary0Y_Y`ss9i{9?C=$%B%)<+b1&O%A&HNZhFwOyj0d>Na1?wR>GSy zZ3I{A>#5raXUi4vvGUuNlxR5nB_q^)^+{?wns0<8pK+1l_B!igjMYPgEKG}x)vmO_ z7}a0t$B7U#wLX;?Bc<0`DUensK;E}iARpS^F^Im1&&gsPHR_<1tl$m`$&nrINN+}q zqJk-sGqa0App&V(x$tLq1+vRj-BK9WM}ds*a|h1Y0!pBs8Ny#4AoDs42L^GX#6n%2 z3e40^gtVawMCgn{7-Ei4|Bg_=2h1T@7t0h@24YYP3m~Rgr^txIm^;qgu{zEIZQpRb z%|VsoFR4dXR7D>TrExe9ommAa{*znCMa1H8GsPV>IQ zD=U`aot$@JCmKl3B#p;$r~O*xK4(9zw^P@laBIX{aEKFO$M0CsGlsarJ)5ybr18-^ zR#X@We><_0PNE6`w3}1`gY=ua-QRPQkF8OMKzGSwQ!eU zQLQ?6$ALo2VXDQ8IltFX!wE5w^IX%>eL@q_I)1H*mK%-(=`4r{@2iQ(eXc4H0~;U) z@cNczEK?9P)CNH(!0TIv)0kl0bQ!76-y9bw^K&w^(tQwa;ZisgT4{@PyWQrl9FwoqDuj1=nvowKq9Fy<dQQ=z8E~H7T^ZeIUH_(*N)ECLMvZa zQ-OFp0hwnnBhGZx357bjmW)=MYwNqRxyaca>lE@x*Rz^-N)8OF0A<`87Sw>E{>}o_!r? z%Wos|FzKs1k9vx58ap>$ zYP^f}5OuT934@zhm~DKKJhwsxZjcO(0#0H*cAyvJ%*gkS0i~ z-!oa-fRdXae923WxHiR5wgB5ea@1>^s=EmG?-WRQGj%mGZ>IJamVVHN1BDvp+6eAt zZl-P_>{ct_iGG-Jboe48IF0s2)6hh7TJDEb_l5gLS2bRbHoez`TrQvyhBe11`~r>~ z5{zr%_Lt&T5q5xcW{rEw#2gnxa$2J*9>b}GWduld3T%T^J%%d@L!#Os)(-t7 zcDH+`^s|lHPZ$G#5-~tGWMia1%6|T21+rxFJsi5N#NtkDO%ME$gcG4m01ula!u0ic zg;~~uIa;N83~rxY)lKN{wrDAx7I5NCTl9pTi#Ty?(LF;N5`g4QhC>OHJsSYFDf~Sd z;nWTRyZ+6Ix_;%7`|PllTG6as$pv0A>3BGiu%N#Nf+&jOL_Y`3$TEMUR?wpxxqwZ3 zNaLj?G3WwDY~I3&5=L0Waw3VDjE1rI%$f1<5Wa7h;ZA}bTu8dAn^N79T^-w{?P+563w&qgSbPXOcr_lQ z_Zf$Jm$9ouD+y%zqZ?f#Fo+=DUWtcy%)I;?dZGp$bovsjt zACL$)>V_#wKbqD}y-0|`r`E3OHh8!RGmkO%xGw6B8D_r+oY3z9!to&|d>-C&BFmnL zd{+->oL$V}RmDgXU=QI2zQ3~M%7n-a_3TGGal4Zfi!z%HI(FCvMqeu|ax-@U)*yn8Cp@ zPoK>zaPj^C2<{t95rfnLba`-|0p>f%gJ@v}4+QTi?*ATy!6kX1x|t9(oDl;ke0ZKQ zr4K~-R-^KibE3%y4WS8xF>E%U$OC<0#LlUV2%rm7^K7Z$t7dAoc?hCf zJ%jW1&d96IFF_ZR;kHmK3S2)jR6S3awwMct4OJVFYA9;YGD3k&83v>tp1Eg{K?d$= z!%%=v{+1EFnB~ar>MZ0ISH$SijNw>bjEv;`%;D-D!k*QfNLroez#i`O5F*wyq%A!d z0bQqduoA6D-ofb5dbk{q5##ri`tqHx)L>-k_8tx=oX9hxf<1XAl+5Z_w4RMeLSXEE zg}~JPc`nSYALTz1gVm0M3f{YsDF09KGJ=QXLXgGdCuGEdGD48XlG8GRdss)o4B^3E zF>O(!)WZb!Jpl=gNzU^j)0P;O#BI91zauSJGKq3XtTok5hqK3d24|#mI6XbDCYg^$ z6ti%{9?NX-Xq3`8T+hXb?9qs-vXB!#f3Pn1SSIi)${*-H+n#eIFt*f~_CC+EpzqO0 z0w04*^R&j`QiW(jDWc9Pdnt+T8iQobe9r}<_Oa8*>@rM?v8chyav3(E9j8li-7ULc za@AM_xrDpESW*#07+KnE+`U zL(Yq{ybsTE!~1yg;-tnr=o#NvmQ_n*g=jlth?Y!1HT8xWW7>TtvW{md%Q!36G)WT? z)qI#ZCMZTV^=2uqdb_6?g&IwQz!I1}rGWJIDKVY{9xRr5ftH?5l+@XqAdtS2 zABQ;SpvF7J%5Xnn(O#LbqVsc+h^vQXM4xURzAtrI)CsODn+Iz$3kFw?EqSn4ZQiF7 z=AkY#PcmKu$~t-9j7*C)lj3uywOZjDm}4gO_Vj%#I@A=UGkZP?9$Q88)x!l<4&ye7 z$wi;_w9pK^Ef*l`U2cmkGSAS=T4Nc!ALbSzsGS>nibtNNfd~u1OSsQ@K?~7IE*5a& z-$R=4nM`KVLk=H);$=d?mo?qI?IQ4gE8)CVi?CFVf~{r|#XiS#U83#9KBgYEd3#?u zv6(`Fi`BD)>t%T3Mcs?G#cP%)O_o5Rbp?mFE>Zuc6GLT7)Qg49Fq4bbzBD0U(_zkr zL-bBf9Ns{^_AK$lDd^FfX66t9UXUHiI%N2U!G1V$b39w%A)J6FlzEh^F+Rf4%{I`wI&=yMg)2NnKBz%~6jL zP7mgC9xE{Fhv9NY7HIL%e7qFTHhIL9X0Cwt;lnx4aV3_ZPQjdL6r69x1;x$OLo3m{ zs)vZYm??<3k_pF-)d2AHScOJBZ$cIDl>z0Gxw??m>feNwVO888t1!<$fEY1`mSES8t;7Ok@ALE&q$ zlbem}RwFUB&W=U>`TL{eii!$$X*D^s-Le#3lb74Z=5>hf%W=;0S`U-(dL34G2G|H^ zIz`0xB+7Mjsm4`db`)B`5LzFlo-Itrg(s3+pilItWEzczms`k*;=+7mI#h{Cn;1Si8d>N_3DN55 zLU;*N(}?=Sp#9ayl?yT0oId)2{kEi%SoBS??As7@2mj09`V{b{G%s6Bmfc_29siEZu5Rw#6>qmWv173NVa z>n7X4ORlHjU9R^4*O9W^i}rIT6By{G5C~p`O()TNQ!ILeSO^^Q;{tIzOIxwWOPqxP zaN%be0AfdpvG~r>ucJbV$9Cxxh3GpqA1?ko@ck@&JBlnpBCcyjV^#=RD0AzblrSJwmsGIDKMwdRk(IJZjahorwk7YAvBAS z`B>@tcb4Ql_o}^h=V_>^oeOMYd|=cOs2XkGi!?UtDM`BbEWj~^Y zPu)g0ezZjWwNEMlOPi05Li12c-ly)SJ3X|3d>0hp)bM^RoPGAIJ$27buY&w^6K7XZ zhE%`=1}qRE_y4JodKjBOPq&Kzm25A-m!~5z)oFVR zl->0EUM{e`{T*473`gE3jj>0VeJX>JOBe6V+?qiC>^GC4{RGh|s>r-(WYHIs4 zd`A`YRdf_V$L4U2-o3ZufpHe)p}Sg9KD^5X5`4GAW1R^cIEHZTi#Z%nT!8+0MEW4; zYh3DxJaFm-N*30EuMSQ8eN(?Wm7H>DA?9OGl zv6eNk2|}T=I<^Ugyo*4kC~HT#>FgjslUuDqKv1TznhFh7aE9|Tq&af_+ zmU*2)yQ^1E0Xx+zw4m*8FlQ+_gBn?N290N4eTBe{GZ@7$G*BSUXVGt}HI$LgLN|9# zq@RWCZVyh_ox{hTjh-?A|4h$9Y&0fHJyIMM+IVyRNN;4}NOL6P{y8LZS`}P_oX;cU zkv_7Z0WI<=#7l#w_%gNlJfwHx*gY$=b-smmG<8^oDcxgm^QJP4sa?z0_B68@+K$P# zx5mQZW(r=8b$~go`hj+_;R1~AGdg}jJyK}ZLXJ_7vTFtyQ}+lA&w&@A`f4lAOK4Sy z+g>jseI@=fVnTTrF_W2tL;fsPae;*fG&uk%_DO``i9i{KYm*;x9GM7>jXH4nNYmF2 zyeb|fqALFG$YH}Ib&&A96DM+#u;IHP2@Bo+U1X%Ua19-TMcCvL78tHr%wNKAyZn;6 zrA{^_Us87$CgSb@Cg6M-#w?{bCnkW<=|pjt;efTZuZYDYqZ(EH=y9?dHYFL8=0VB$ zet2=e!uh-mq|@x0#_NGOBL|463k}ww!O6IH zXn}#xljnjpC@e$W;D0KBHDTPM z2i^dk9qgwO?U_^PMCO@DL7#a{od^AqiAsMrpA%V(ShlPMPr&^ma#}dnONEQ;| zwwQKi!@Xxu7Hq-IC7jU9M$g+B!HLP)>ZW)!EiM~tuD;8drbg5<2TdGa>N)DEc(t`8 z2j8DsucXI0P}FH9teeFx)ab!n=zoe!vKahsRiPt;amCXbj!e9TI_r#Qz8Jgs7JBRJ zC{FabjlGdgIO54TAoS?wZ7j6g{zE!<)W3fEkgEB2k*YcP#KC03_n<~{??TW6&jLw^KKa~3{@o8KkZlav zk8c}HCgC8;(R2pB1BvBWKMynH5DLswPZn~HaFL=swM$h(Gmf!hbBVc7X#78QDyG>w zUL$}}?mm(etN=dW$2Yec$Ezd)PN8d!&qswFJMkYhJ0I!vJEetM@@oNt9>9KYKV8Mz z{s4Mi&sG8MXJP%tD+I)RH7G#7mQnix^(aCAf<_E?@)sb1%PwjFY@%L7FIi-T9yX*9 zh5I3~iuE>-c5 zi<(?qf+U&eY4iLAw|s2`zV-PSuD;k*U?ccJp>iYO%>#w#_Xk?7v-B~lC@)IPeb+H2OSzL%$kkR606D6E2Vf_04Q#{N@313B~2R(QS zO&uOHNe}XVhM88tQ<<=$@ugU+ranU=c0E_XF3;h^vFD`%+4vlF>H3-@^4NXJA@5)qER8vQ|!3PZ^xV*4cC6VISeAHr0_6 z86PpN>FFeM%qZANQ)a)Hqj0LZupD`ikqgQU1q|r#b*Rn=iuwWthOM~LMqe?aXSU|VmapnMVv3os zFZNBszp3lTe3R14Oux=bhIw$KKjs@+%Pj^>6|M$Q#5ZiPHvEp^E;o=98@{7eXLaC2 zNrxgsGWmg&e(A&zcbp8ys`G6ZPLy>)<%lcCFlLWm{lFgny6!U1h_-dtw9BD<(U2zTNGox1FmfEkP%m1MrnaEFI#4%O zL_BHgprTq7Y=9c+E=%mh6ts9J>qZ5Arp2ycffkZ(hgPtja_9D4Ew$Scn_lrO3@Gw_1e{4n^tcRm>1pk5e#? z>s8><@(CQV)~{$TES$uNIrO#$|0Rmc9lRErjT4oQR!< zWF@()O=Eme!FdK1_BvryW>7I+s4qkukLrknp{R6%IP5DA}-LiZE*~55H(G zvK(q8mAP0GTjw*o;6m+8DvbWe1cbX6jk+Nsm!a#E!7}1!1>E$*o=0VRn)5*-lOoUH%t4-Rp|AG=2GE^gZrH- z7QV)sS9l1Hk+QG}xkh5pSZ#sA&ND}0-=vS`6@Lh0R>>kZjEm=#*T{$^Ij_-l!dGjx zYP{AuS;~aETUPMX1mbMbay?C}Ug1s&mQw1(sq`Qb^&(>{#Iai_x#g6}IHE8#Utj2eywaZ7Q6F)IBn9pb)>06WO*E7IfGY-wMSxU}THR9(q8*``s4p z)BBK&^b&p?=0s0BaP}VM#Id7jOF4E(!XPY2SQ0|wkto*)>}rdeyW2x^1FTIXo-xJR zBWGW+E@6nN1C;H=a)c3wPN7%3cGfIEw>uzc?=zfN>QK>E_>8p(6CB_O;>3AQTs)5| z5C_+D7qyD=4OSpb8UjZ2<02pK`2a39)0s)s*QLS(?*T~7Lub|J2J8s22YWWhR( zd|hE^%3Lbi>0qDSwW5dEl|*Bblu5^HS2X;eek|G%-7LoRga;j~eu)^Eg$D7aHoDNo zY^|a8Jtfqx7$dC9<$-XSfCX73OXDc}iX{AboA;OGiX#30iBT+<8&wh}^tBG6HM=8+ zF`=Nk6~4mNy9(rJT~uOlo&u>^ufk6#yRSfI*Q;nIL_AO+dG(;jq)>ra7NU*<>m$M) zMG82kJ_H9nQXs=0!5CCB!8gSUxU3ktEw~HMDU9UK!qUeI-h~E;zs6Gq;^2ll#Z9uJ z6+>y@ZbmoMWt|raWF5M%}0jyO|i>sQb;#dzbrS z{_r^8oM~syoS8W@cLt0h3^SxhznW>A8}7v9_E4nc@x)XT(Fx9Vgq_2s+8x<6CFWooMgP%o_3*;r9rK$8+3kfkILB0^CAIQ~e3m>{5j&de zjlnheg$C*Q0ury_jOSh&;g>MZJv#xJ|EGpA?a%u*w28xSUI{qY7xtyL6Iuo*1bM{) z;E5_9*t^BF)Q3${Y%QtMhfP-2*P~N@%$sKWqT39xmc%e?oeib#Gg*mCHahLJ__dAX z^7Mmv3hPVaWPP2TCQ3g$op!A;pNjpEsp24+2m5m+b(BQDKk7Xc_v7+n*meeC%`%~4=zSqj zJnQ*8)Z|tdw0$3{>B16~yDmHtd~M{SbEeH*Ax+%+WJ0Xyo~zED5(Chyn*^XBNp3Q1 zVgL(Kp0$v~nE>N7fbS+LneKEbi20LuH)E+TM?G>=ZVNP!KIw*0-?J5G=|;m^>za{O zAo^ukYZY;)>_C)a8`deDrzVi~R+6zM;Y4~nT}!En9XptbdIB8`Vll#eiJAE$S{lr} z-m)cPu=Vq#bv2R(!1V!oUErWsB(xMP3$iq%5f-7r75bH4>H{wYQ z>W(ShaDPdR_18Jl$?ga)=qwS}P)wh^aW;wbW`wd3EYMDc!WRAyFCFz@LHO_kx_Omy zda&8bk9g~d^ZE8fKk5=HiO^8A%D$dR(-&_!^WdPKy2j))$LQ4%73$QB2YJx8-nzH_ z-+b+-q#8L+gkg{>sbgz}_CD z#N5sqqT!VVhaKhjgBZtYk=OlDgjZMwsXRbzX-0o2-R*HI>_GR&!K!p0fIjz2f7Ee4 zSqxzBE9F@6s4=q#pa#pa&QXz!SY30z27*@~OB^lSkPcg6%9t?_{a23_j~Z4w5CWPy zRfG5rLJ@tj_)&R);1m48tR96;*J(XiE91?~V?q4iM!FD>CU5lwT49%9#vg|3tl!F{ zhjI)nD-|wIgzXV>@S0^7IR;BEm21Edj53Z`W2uPKP-acv4?)k}nrseZCiH;@Suzw- z)TL+;!%)nYV&`g*k;A}K|050J@R1Hj1(Iszv`y^$AE4S{%tz>oI2QAS)2*pjI*f{N z38xH)@crg7`UT62;m!!q}%qw8!Mj0!y$M)`8B4vxd1NkqXviU~5nP zmcjOjwRaqcZ!PC=2iiLlI^w#L6RFA#yf!ittN-Qy1>U~p@nv%(MNhy_-Hm=iNfXz573WBaq5vIhK<4K+H9k&l*|+kMR&vz>065 zM2aV1<>vCWB>X2rIgjF%YTjI1C$c^kbEtA6hK?5Ba%`q@_OP)j59|KH4XqQ|PeS27 z`kvNJ!ir(cB($965l$p1MFld^qXjw_y5wZ4&7fFB7+EC4*2c1aih}1dcdpm~|2szMvYac&XT|(O(x!hBw8!rj)kMv;j3}3Nl)H+L-nfl+5kC zB%VycVr#o?tRF)c^T(xORi01zUg3mRUrw7c*s5jk8Sb#%#3GIic&3!s(2O##b`YP z^Ninqk=XtjEWlzmRnA~jlv|G_*6=xu)2sy8mBlz0%9C02D?0q*mpH2-GJl+a%x^uB zVV;Q?7!#gJ;?;jKHCmmBO4Q&eDUVu_h_VILN}_A6&Xp$2gsgVrNiQC}Zzk)ny#B8m z+k*-p@vV?)@O=%O#qc>8lVOt>I>wN`XfRQP{8=c1({mYy0ym^raZjb)<#Sy;W>7gB z)<hPYzjJNiA z;AZ&);5jL*@mupqZuBi5$(S_+G?_?i4ZWYG$~n)Lq= z4foZD#wn1Pt@+OVo7vjr4mkLR=O5={J}YGY!CZ8;CRojU$l8$mJPddcw2#v9A1X2! z_lG6SW74~xJr7>wY8M)@gf*oXH;g@4JSykXjH7O3`w?^r-zEs+YRmG5_!Nb8!DS!o zK4KG;iQY1xekyeE4E(G-N}*4=6a5(mkyk8&gqEd3LO13b!%|^w>cJPv86D>v-E*Rb z8|Sljlr$gNg~C0!1Qj?jA47@nDoJ!&RgTMz7a%xxBS$*W@&#z4_qR&o{sMHfcxto| z-OT+9j`>mELX19Dd6IaNS8hv=ix7X)9*N9Ygy3oUl1R=+a6uXD(l7hW8q9USWbj)I zZUaUDp7PTJ;NG+tiETI}5ypcjd?$&qX&^5CAc>=#c&|_r?n|%`^*zRk$x0>MNj$YL zFX3}c0oIWe}3 z6TalL3{qMLzX})G$IIZrI0i=u7jIEzIWFGtd}yD$99okF_W?)O{#M>ppt3~q%Tc0J zR&;GG8muM*)jnyZx1)<~aF$mT`KFCt+of!5HLO;)`gYW^uSpXES75pT-_Z(;fw--x zF3E}&=zohmG{~@(81=*3OXT26m@r&5AR>TpqJM|!t;y?SjL97X{t5>K=v_3KUicUl zuD38N52$E~7iE=ChQCxa!7-AzH`OE4CWg@I=A5EAjORqk9cTEbxk!C_k zjQlJAn@mhr?)TTgNvp6HNt?=%7BqLNz7d5!Fv-}k3Yp@wIuX`tmfn{1)A7f9HFV>0 zyaq0f*W)NUf5uX@4V!6JjE=KZR!16A4lcGDEuWVn;p{aS61Jxx=T8QknrzG(BwTv zasi2nwgnaiS!{&je}+2eBDI8U%pdNamBhWXdJIaRL91S8qq1jkID_+q=diKL*-Mfr z&Vf3{U6+KH@N~fKOxu2fzWO>qs(zoM_!c-T z!NcZ$%7!XlRgy@1pl?9ksvtJ;34=(c#{SMEs@TkuEQV9m z7VIE4nJUvAyp`3*YZVyXPES*jFr_{gsl3i_QY&ys$^{K3a%!-<h1rVkybFCU1kQ zBMf2Wx(#-q(+U-q9wRY% z0<+wv7>hX3ysW~W7AKf8KKuoe*omzJ9`@o3m=ec(k{G`eQ{Hem^La?&P9(7go_S8> zR3iz8VIXLFmrO3b*qg#@zYFGIPX=bjzxo=vk@BdX*kV0RwTImM0?O zy&2k3%h2UJFyQKsItHiCk8p7#uiX|N7Pm?h_P>E0oki-o-$NCl zA67X~Ng=w}^QRi5{XfZ`d;Tzm`&AIm$p-1n*#mPsp=i2Nj3&JUbsH50{ z@wA{RCt&M5EDT-A{unBP*D_2U9b}+0Xa?Vq9aqEQT_S8moo{DX+(=gf;Cw1#5C{f(E%d!C*s9r%{(rVl;5#Y4nL{ zINh)2ksN1eMsGM{f1KG@;qhlMF#nRML242WO*o?y{eA{Ikx7ky#Oa%hb2Kbp{fM?T z;E1|087pdj7Gq2*l=D3Er$uKGT>hyfo}GmftsqHclL6N#okJl`;M4`@E!kjjAw5Ty z;LHU_LeFEdSV+m|p@|)KQ0Ee;MWYLty+-G8BADXykVxGcXTlyc!Dj8@Tp{$w1!&S> z@-M-$B^=on$=o@Bs>NPJ)n1lB&c%l$TzUwi0qms|eJ2tBOE`6P`8(v}R|;;!MQ|@Y zqJ~8%3yW03hO&wb4XMQ)sF~AF%+gCQ!Ew_aeU8`0r4+u-{^)a@SX0V7;2BQ%(VJ4} zQ4#rHW;2v^_o?$`bjov=A;wd1Sd~E!8y~1OYDLHu$f;Oi~Y3FrGC};@XUaU{dgDU>pMUj*x(*}*ZS+Z*`Xzd}K+$@35g;VMES{$Lln>)qKlRv-I!nNwwah%QMW1<(2m=l` zu4Oj4g(v3BGB3xSib*yZF!hC5K0{fV530^F7t3MNK4BJX8Qfd0!;&kEX%TEOsK2hn z4uwovz9{~MO?^f%D_@rDVi<;IEC%`3%G^ND7%?^5$5Mn5@GFI-7Bd9`=2R}&TELPm zgl9xmu;}3qhSycFe8dKWdp@iL%YGkLtQX+%WmRKPLQ`MXvxEw@dsVo=a15&w=5YFg z5*J132rE=N!d6Py(x1)ta2-bW52|p%JN;~BSS*a3WP1~Vx%mdMFO$T*f*AHj!nucY z*a?|ebJz))Jvr=)9Wf&vYYqkAKh4ewjmFrY2ryvGB0#y8T@0#yXD1P=?33lt#ni|u zAy6;N!QdhVf5>tu=`i3BaWRmRooCLuuQBDOmOu!<= ziP^&?Qk)NYFo;c+Qx>z)SLOV|jC(89IjuM`a+kWh0LandBs`6{@`A5AoP0pikW&cA zOjCv6j1FfDE2eET;KV+KzYI7fq%cU`hLi9@^0X5#+-$>nhagq6|2KS-J*O%=ra$e> zslw>MdS}jHtP4OOerVy!d7hX#ATB6v<@10bk2*E}-C1!mypSJzOwFf!{%sF@#8&b*nK#L0FCp z{GuTVvGM#OaNAM-dTERhFd7sDWzPJ9AT@`d9nfEh3BjNoeja{|{YNoM>NS3tdQCu< zh=UJQvrk6aO@#TZK- zlNE<4PeiO&;UTlppd278ii$y=Um~Gi81_KCPn>efQxu-^6w}=Qm(1aVm>96mkP?EQ zUx+ywVT4kKlqx8n7iWk2IK+*DFsyx0MI4-tM$Qvj5a$K4pNF{N;7)NB8;tdUa9UgO$@({)#VPQFOVu{*z zNr^zdKq+BE27-cAf=U_EcCwi4CRIQc?CF!{hB-H-&mY3D$*=-(hyv`n6dqz9__@gN zf>di6ZfIvIW5bOR${xz%M4b7%$OwZSzmD^PDo2_a(3u+K1qN<1;-HoLgdh}mkl8}8 z!qV~+5SJ^#G7?spi(r$6IN&Ok5r)(oGO}1lfJKJAlM#bU24svlG2L#Oj1Hp%b7?XQ zA28^`b6IuVY4>3j2R+Ya#e@-o8x#6tVf=&sgn?m`tQZt)lGPW%q*i^hUx_)wm&C!M zkFtVkAy5I&YmQjr7tA7ur=WC05wsEkHd6&fpv0-^V^9AGM%#t*&^ z%1#iB1_@emApc&L4}+NV6xE>Pds!VG#t@>QYLmtYyt-d`6a|65j2tKMPo!}HV;?y_ zus;z=u(Fqv24#sfY50aiZY41nt>bN>|Hu&l2B|bo_*Gf1`2eWBHV2CO!4KS=SnAEsjFrT2M)ZSLH&qOmfn*=Keme#N`WMR?KEx!bX9V)YX^?1VF#)xNL{Tg3d;MC#Ree?ZzcYcrp77oLc3UnQ>!sdsJT}htoBn9 ztg2SvC*lU}V{ss8tSkryv*ox!EQ=y1Kt2(It}KeDxbQ57w;}SjzW^ToRXt2eQ3jrs zR^*rbpMY5mwkRns0`QRRgC@=)9n}QbPz7nb3tGWs}lYR*Y@WW)lbbS<0LsB~nQc=WCF^ zTZIj3`YC;6!z6!Jp4P$pvZtIGIsr0Cy2s~o!I`F_R2Vm zfSY?&lrr|Ia>FTmWj#VJ%4cnaTpT#uo0YkYu%Mf2C{-*zr%bSCA6#XvvR)kX__OzffMXt= z3zqq))c#HZjGT36w~8Q0->ou(X^}Qc85ik1f~-uA8(7(Rn3%Y@m>B+e7^X5txEGm< zuZ!RhUrx}xSA`#n>{A(+_#Z8Wf%!=lF`#x*WsV^LA^|OgrGKU)weF*PPnlE|USh}o z*;p7M41Eh#j{Ls5F!pF(+hQSL(1Mg^+=<}G1_9UULg1;hx)^~tbOVKP@Iw_Uu@DZ8=Tph1UP-3UeySAtq~0Vr3a?m_Gg6!a+J z(vbEW7dntdXH?nFjSLIHCtd1x8}KZ&;pKo|v6=uRscURA{>#ZBU4@bJOhAhd`1Smz_+yC_*yEtZ3%Ik*iJ2(y)Bz%u`M;)s@NYUKP#@jO z4z_2z2?1_fwA{hHi$$HW#xZ(Y?8IFPrW1On#ZGBlu7#R5Y+SCRV2PDRw(5dChjrvZ z+mkl*Tk^1u9vLIhBuCsqKF|eb!MZAc1B;^iT?aK?sQO(`(MZ4|WnjvaSP+N-HGSrr%wgR=4sI5ZH2sLBWR-?8CCOeuOIE;nkdlTswCR&UU zw0dFkk+}B#ah4FsA2$(&JI75n6ZzmzoGIezf06(vRG2Y&^>-zR{olrFDhL<L&&CQX+ZZ+!UD96WZZ`K1;m3JcA=F8M%J-h5v`OPg7H!M-s&gr{T z!TV(XO?PK!XFqJaUs>qZqjFn$d(Dl`LvA-}CVO^NMwWgJYE={2wD7DYlJ-4j zAhNFYd&|_g$L{-S37tF4bC(r%O+Tu&((Z=yGf&K-2TaLJ+a)G!o`|kf*z0t2qdLb3 zH7GkG>WkSOLz&a#p*s^#=q45I%*%2GM-Se4V`t#z_J)los4FFV%_FMewRFD1y*j*E ziL7T7me%Y!Fvs>$?od&HT6ZQaw7I&Z@cCE=%|d03Sc0dGp#7D-#|mB8T^dhV>zwU< z=IZLxF?3OSnG5-<7e{lUkxaY#^Wgc52bq zF)@uA($2~p4~^F}$t0F)4&8#sb{#kNef|JzsKHAq zp4&HS>YZLxS^O|#D;DPOl)W7%leyVxds0zg@=&&K#bWKjWNm(L%aV&F7FtjCw}kw7 zu$OInZ$^S#f<<#oP}n|)B_b&g+B;u*8Q)ksyz`KJ$HN~Z%_b&=ft8Q8HCn8Z5q~UI zGp)m4So!*DkCI1<{9&^G%EM=$%XZ4XvXITs$XxO@c{H59>++}l#sm35-SJb6D^~>w zevUhy^?I8}=jQ7!+8t*NW#SjboQYX{kn`Xtb&=`#jk`hys&?htS#15j;);q>pqb*i z`;D!)Z*`UEj8*Pj+i(8#Nq?;Yb$m|aL%(&W`J2N5Bkspo#4J3Ib8X)394 zxezzAg0jo|T0{P>{mN&VtCw+Ys{h4PIn;KBe;vnx=Q|^p>>ikNlpKFGqH-*v{V`YT z_15{EcJrlMmQTb+)Ngqxm#le~z1wbI!lHZe&kx*NrXRc0$H6>5LUzCO@du!;Z(t-$ z;EVq5iP^~8krd;c)iHKsVEcq2`I^VxPxY*i zZxgY$2djF;In>qGj|exdG{}@Yd)Vff^L{1)PSu2yKR&D~8GdJb?8LCvHFD29`LrIn zBy4rZ%leTHHo2M;{r+vg5?8D_dsOw^cB+;OH7d>ABWcaKsx@52uB%3^KNLc-CD!H``(EVpOP*~3HwL$iFr@nYrj8MD9_qII)8fC^8RaD0sYUI z_AmE;a&|N;r@w{Dn^g!&S#q~KSFTVXuQ^z5-uP0Jj6@z^!e&!kbQxoyu13Dt=meNhKret;EK8ibZQj$tRcm zU4xObvkHgwPaeA=^sCl$&6fGo>X$ZO_ODsBq~kmPx7h86y8U}?pHnlgNuM5 z^waEMVe3+#YtQ2&g}UeGl^#&e)X1&x4&@DwBB#A$TjN`8B^_gV(BS=nxYskKJ67F) zXRE(+*9p<~gsknU*Ev_rCY&%?w)W`(ndQT5eJ7}fyK^HP6V|Hr*lS;~ z&7WBE+J3X1SZJ;1j{3w88eMc*jy~laDWwc$7u(48KI6V^Z8c}#1f9Mw*Ut1sJbrg{ z1dC(S#LD3u=gS+eSg#g*^nB6t0b7c#TL19mv+&`thKppkEpu_)L#q>)Y4+DzM4LsO zPrtJMvPO*U){lnA6hN#+VcnAS?of5rM%S0O-9j4UHTe!XYe*%0-G1;{q?uHD{CA&Y z7YZktW#S`t@*Ic=?wB}P|JD|$`(%<$W?8>o+(=q7{B&0I+Rx?J1GBX=vNQ_K%_Oc_$ThD6x3pp( zI^9fP#Wtb%$za@K^`T+uLoN9v?iX$5mrT~=^StKe_?flvaGCl#F!Cb&CoGTIA##?y zba--B@J@E1#wL54b8$0At)9Fn9ogGamw&!$dJjl@!1L`^9=Sb*v)S}s-O*a557Yo9ezDXX0(>9o#L3Fd(n=jY#iIWTWl=~a`d;&3##yi!Co zV@tzeQ8F#;p1g@Nc}-IGXwh?nG}VAN8}(KmG;X*nkBGSXak+&X;Bv*e6sB7sL)xx z`T5Lojy&b2t3iNOsPUd9hknMYY~7DbHU$T!zuv&_t5MRl*Zpb%*=eQz`r)gSmmjz} ztddC5tT}8S#<%bCtonD=j5i_{OtJe--dHErc@B3ET@&D!}(i-llGBs-@?T2q~^4m zYwbK?$ua-X;&r`BFPqN8Yll943O~X;J9x^Dsiket{^(Q5W%Y88*Kf5UFI7Gu>ZPOO zxrn)|HMm)3yEEll;94_ zh)?qe7rpKnkTASdGe5%Nm+__}pqq8&q@`bGM^ygdN8`+4)tu+}wmnVh(7NrqZ({t+ z#AdZ9OXtfWdlVbiRH$b3c|CP;myzl!mcH6_;)=?%(;q4oSvNx8w`~uDk9t1uacxR9 zI@mQ%JKCtV)c)?_$r2^<%1cu%a1(iKY=!XZ!V?_!A#Ryv2CE(z{Mv7Ew2tX`b8E?_ zuMRo3Mwa@+(M`PZ9dif1c^ltnmCsrEy($u}T}q+hLrD`#?I2Zs(y8*#li;%qs$trc9M&{oR+kT{~Pv{gre_hi@=U`_70 zIX0`A{yZUU+e~G)P0!);B9g39vxV|i5AGYqeY?E7^s}CCknV10r;M}gT{-+$qIFHK zep>DSZf&_{);r^41CJ-I?#$WDJ4nby7*CVJnP@G0KONTmXi#OwvisQGX)tMMAXzss zC^*IWVD;AeTWx-}`ztTDpV@XVTuk%ZuX6GO#dj$zV-L4>S*a+_R(Ed^_6wU*o_;XH z_qJt~(5I*T3-L@Ki^;yA;)jA+^+y*DayF^qHk0Gk`!|e)-oEO+Rk@nl(?1k8J+$BH z)Q4DuN;coBmAw^psmoWAPmdU158t2tRA$uY+x1r`*7TpYU^~uzGpMj<{iM0;*UQvv znQzE%s!awz?+TmRSnGOatGn&RtXfys%MqXW+uBciKIHp6o8(iy#Oq$o-dxI=c;B>x z3bn#Dqye_s(8>OiYLdYd7qvxUhF_YTU(lNFCp8D{by=f#)h;4Q@Z?(^BPy+o<-?8L zo{61RS1!GljGKtrwU8u~wJldts#1M-q_NMt?L1`ZAE9NTS{OR%9&I$X4d3W;nAWGXVGm)~n7srcumF|mT`SsX?^Jy(q&Z~q zX_L^SkTa6a_-7AGEsMltkoV8-Cf2PLG3%Au}xXJuHgKjpbr&0CzoI<>zz z;uEV~3E6jFBgJ*pzhU6+r4CTad@_%sv945TtY9kHWBtyPDRx%V+bUGbyCMdv%s%Pm zJpT|ok!F!Dw0r&G?dvxr>5J{?5gyKnO8i6pqE*Hq=g))?9krbx-)d1b8vi{;*LE7aXvGeWU-6e=~rIgbZJZ0i#c~sul-&# ztP#Do?+JUePjjD7?R@9y@vNTR3s*ix++`lBTzO%;wR*wB44$H8Hk#L%>Y2qh>pIFw zu&Wp@yY_N)zpZil8qxJVFU2=n1dR2b?@2Ss8XMM*T~(oZu!GBF)7P@&B^uF36Zfyo z

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 { if (pck == SdkConstants.ANDROID_PKG) { - return getFrameworkResourceTable() + return getFrameworkResourceTable()?.let { listOf(it) } ?: emptyList() } val tables: List = @@ -387,17 +404,20 @@ open class AndroidModule( // Class must be open because BaseXMLTest mocks this.. addAll(getDependencyResourceTables()) } + val result = mutableListOf() for (table in tables) { val resPck = table.findPackage(pck) ?: continue if (hasGroup == null) { - return table + result.add(table) + continue } if (resPck.findGroup(hasGroup) != null) { - return table + result.add(table) + continue } } - return null + return emptyList() } /** diff --git a/tests/test-home/.androidide/init/model.jar b/tests/test-home/.androidide/init/model.jar index 5d2ff9602ab4a6c86c100cceda2bd58fb32a0393..46009ac5d13ff8ef8a024aa09e3925e8d6b2c942 100644 GIT binary patch delta 696 zcmaF+m-+2qW}X0VW)?061`ZB}=hG(gs58HfnKaSN3rsaDf~n;ifeWGYBnoa_Z}@*uv!*v9~Lkp zSljhS_)%GzTm@(U@Q6J2Zuh|Z<`)11&h^B&09cHl9{2nnj zFk{E0YKWBC^fh3gY<@a(xiDC&e{B~pm?5+K0oba|{|{I}6x$qyx~u!-KZt=nXConu z7Z=V-K}>$Vh?(j6w8=5=O~GL|jzITeer`Ym{$B4 z4W{cqCVR*VvXaCIr^V$AE^ymMp0{~i;LuCK} delta 696 zcmaF+m-+2qW}X0VW)?061`ZB};E0Jl>dZ4bx+j`>fvILiFtuDm5GWYR00c}R0tmz= zH*!c${K*57pUlB%4W``~?LqYB4#oy%FoT=*Dic`dF?%nVF6Qt6)B8C5!3qR889BfV z5y8D+vo>FmwPpv~7PIb>h$kxp!+mZB24|pcdYk=JvsuBq_h`9-HL+;>uz(rC`d$#m z0%HycW3~A%h}sNWuva#3wSCM7Ry*6LQ6J2Zuh|Z<`)11&h^B&09f-T<_lU89)$Ev5 z4UsaNz6R`*%}-}87Y0l9ukGRmGh}u@09&>B{{btAVw-PF*5~6OpbYP3gS2yxBMst(>gyP^0R-YgZZq#3cz&5FNk>$ se`SLCzP};%Z2nyZ<{SKJ0@GXn. + */ + +package com.itsaky.androidide.inflater + +import android.content.Context +import android.view.View +import android.view.ViewGroup +import com.itsaky.androidide.inflater.internal.LayoutFile + +/** + * @author Akash Yadav + */ +data class AttributeHandlerScope( + val view: T, + val file: LayoutFile, + val context: Context, + val layoutParams: ViewGroup.LayoutParams, + val namespace: INamespace, + val name: String, + val value: String +) \ No newline at end of file diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt index a4f357663..d62b66494 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/IViewAdapter.kt @@ -17,12 +17,17 @@ package com.itsaky.androidide.inflater +import android.view.View +import com.android.SdkConstants +import com.itsaky.androidide.inflater.internal.AttributeImpl +import com.itsaky.androidide.inflater.internal.ViewImpl + /** * Handles logic for applying attributes to a view. * * @author Akash Yadav */ -abstract class IViewAdapter : AbstractParser() { +abstract class IViewAdapter : AbstractParser() { /** Superclasses of the view that this adpater handles. */ var superclassHierarchy: List = emptyList() @@ -34,9 +39,9 @@ abstract class IViewAdapter : AbstractParser() { } /** - * The package name or namespace of the module/artifact in which the view that this adapter handles is defined. - * The value is set to "android" by default unless explicitly specified in the [ViewAdapter] - * [com.itsaky.androidide.annotations.inflater.ViewAdapter] annotation. + * The package name or namespace of the module/artifact in which the view that this adapter + * handles is defined. The value is set to "android" by default unless explicitly specified in the + * [ViewAdapter][com.itsaky.androidide.annotations.inflater.ViewAdapter] annotation. * * This is used by the UI designer to quickly look for attributes of an inflated view from the * resource tables. @@ -49,6 +54,19 @@ abstract class IViewAdapter : AbstractParser() { field = value } + /** The attributes that are supported by the adapter. The attributes in the list are immutable. */ + val supportedAttributes by lazy { + attributeHandlers.map { + AttributeImpl(namespace = defaultNamespace(), name = it.key, value = "").immutable() + } + } + + private val attributeHandlers by lazy { + val handlers = mutableMapOf.() -> Unit>() + createAttrHandlers(handlers::put) + return@lazy handlers + } + /** * Apply the given attribute to the given view. * @@ -56,7 +74,9 @@ abstract class IViewAdapter : AbstractParser() { * @param attribute The attribute to apply. * @return Whether the attribute was applied or not. */ - abstract fun apply(view: IView, attribute: IAttribute): Boolean + open fun apply(view: IView, attribute: IAttribute): Boolean { + return doApply(view, attribute) { applyInternal() } + } /** * Apply the basic attributes to a view so that it could be rendered. @@ -73,4 +93,70 @@ abstract class IViewAdapter : AbstractParser() { * @return `true` if the attribute is required, `false` otherwise. */ abstract fun isRequiredAttribute(attribute: IAttribute): Boolean + + /** + * The default namespace that will be used by the UI designer to create and apply new attributes. + */ + protected open fun defaultNamespace(): INamespace { + return INamespace.ANDROID + } + + protected open fun canHandleNamespace(namespace: INamespace): Boolean { + return this.canHandleNamespace(namespace.uri) + } + protected open fun canHandleNamespace(nsUri: String): Boolean { + return SdkConstants.ANDROID_URI == nsUri + } + + protected open fun AttributeHandlerScope.applyInternal(): Boolean { + val handler = attributeHandlers[name] + if (handler != null) { + handler() + } + return handler != null || applyLayoutParams() + } + + protected open fun AttributeHandlerScope.applyLayoutParams(): Boolean { + return false + } + + /** + * Provides easy access to various properties related to the view and attribute when applying an + * attributes. + */ + private fun doApply( + view: IView, + attribute: IAttribute, + apply: AttributeHandlerScope.() -> Boolean, + ): Boolean { + + if (!canHandleNamespace(attribute.namespace)) { + return false + } + + @Suppress("UNCHECKED_CAST") + return (view.view as T).let { + val file = (view as ViewImpl).file + return@let AttributeHandlerScope( + it, + file, + it.context, + it.layoutParams, + attribute.namespace, + attribute.name, + attribute.value + ) + .let(apply) + } + } + + /** + * Creates the attribute handlers. Subclasses are expected to use the [create] function to create + * new handlers. + * + * A subclass should call the `super` method and add only the view specific attribute handlers. + */ + protected open fun createAttrHandlers( + create: (String, AttributeHandlerScope.() -> Unit) -> Unit + ) {} } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsListViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsListViewAttrAdapter.kt index f3b3c96a9..3f754605d 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsListViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsListViewAttrAdapter.kt @@ -18,6 +18,7 @@ package com.itsaky.androidide.inflater.internal.adapters import android.widget.AbsListView +import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.IAttribute import com.itsaky.androidide.inflater.IView @@ -26,30 +27,19 @@ import com.itsaky.androidide.inflater.IView * * @author Akash Yadav */ -abstract class AbsListViewAttrAdapter : AdapterViewAttrAdapter() { - - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { _, context, _, _, name, value -> - var applied = true - when (name) { - "cacheColorHint" -> cacheColorHint = parseColor(context, value) - "choiceMode" -> choiceMode = parseChoiceMode(value) - "drawSelectorOnTop" -> isDrawSelectorOnTop = parseBoolean(value) - "fastScrollEnabled" -> isFastScrollEnabled = parseBoolean(value) - "listSelector" -> selector = parseDrawable(context, value) - "smoothScrollbar" -> isSmoothScrollbarEnabled = parseBoolean(value) - "stackFromBottom" -> isStackFromBottom = parseBoolean(value) - "textFilterEnabled" -> isTextFilterEnabled = parseBoolean(value) - "transcriptMode" -> transcriptMode = parseTranscriptMode(value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } +abstract class AbsListViewAttrAdapter : AdapterViewAttrAdapter() { + + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("cacheColorHint") { view.cacheColorHint = parseColor(context, value) } + create("choiceMode") { view.choiceMode = parseChoiceMode(value) } + create("drawSelectorOnTop") { view.isDrawSelectorOnTop = parseBoolean(value) } + create("fastScrollEnabled") { view.isFastScrollEnabled = parseBoolean(value) } + create("listSelector") { view.selector = parseDrawable(context, value) } + create("smoothScrollbar") { view.isSmoothScrollbarEnabled = parseBoolean(value) } + create("stackFromBottom") { view.isStackFromBottom = parseBoolean(value) } + create("textFilterEnabled") { view.isTextFilterEnabled = parseBoolean(value) } + create("transcriptMode") { view.transcriptMode = parseTranscriptMode(value) } } protected open fun parseTranscriptMode(value: String): Int { diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSeekBarAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSeekBarAttrAdapter.kt index 3ed7c23a9..127eb649a 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSeekBarAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSeekBarAttrAdapter.kt @@ -18,39 +18,20 @@ package com.itsaky.androidide.inflater.internal.adapters import android.widget.AbsSeekBar -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.IView +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [AbsSeekBar]. * * @author Akash Yadav */ -abstract class AbsSeekBarAttrAdapter : ProgressBarAttrAdapter() { +abstract class AbsSeekBarAttrAdapter : ProgressBarAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _, - context, - _, - _, - name, - value -> - var applied = true - - when (name) { - "thumbTint" -> thumbTintList = parseColorStateList(context, value) - "thumbTintMode" -> thumbTintMode = parsePorterDuffMode(value) - "tickMarkTint" -> tickMarkTintList = parseColorStateList(context, value) - "tickMarkTintMode" -> tickMarkTintMode = parsePorterDuffMode(value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("thumbTint") { view.thumbTintList = parseColorStateList(context, value) } + create("thumbTintMode") { view.thumbTintMode = parsePorterDuffMode(value) } + create("tickMarkTint") { view.tickMarkTintList = parseColorStateList(context, value) } + create("tickMarkTintMode") { view.tickMarkTintMode = parsePorterDuffMode(value) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSpinnerAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSpinnerAttrAdapter.kt index aed199b6e..580ff399d 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSpinnerAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsSpinnerAttrAdapter.kt @@ -18,44 +18,22 @@ package com.itsaky.androidide.inflater.internal.adapters import android.R.layout -import android.content.Context -import android.view.ViewGroup.LayoutParams import android.widget.AbsSpinner -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace -import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.inflater.internal.LayoutFile +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [AbsSpinner]. * * @author Akash Yadav */ -abstract class AbsSpinnerAttrAdapter : AdapterViewAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - context: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - when (name) { - "entries" -> { - val array = parseStringArray(value) - val adapter = newSimpleAdapter(context, array) - adapter.setDropDownViewResource(layout.simple_spinner_dropdown_item) - setAdapter(adapter) - } - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied +abstract class AbsSpinnerAttrAdapter : AdapterViewAttrAdapter() { + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("entries") { + val array = parseStringArray(value) + val adapter = newSimpleAdapter(context, array) + adapter.setDropDownViewResource(layout.simple_spinner_dropdown_item) + view.adapter = adapter } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAttrAdapter.kt index fcb5b084e..54626d62a 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AbsoluteLayoutAttrAdapter.kt @@ -27,4 +27,4 @@ import com.itsaky.androidide.annotations.inflater.ViewAdapter */ @Suppress("DEPRECATION") @ViewAdapter(AbsoluteLayout::class) -open class AbsoluteLayoutAttrAdapter : ViewGroupAttrAdapter() +open class AbsoluteLayoutAttrAdapter : ViewGroupAttrAdapter() diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AdapterViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AdapterViewAttrAdapter.kt index 545b9fe36..ae10a2728 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AdapterViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AdapterViewAttrAdapter.kt @@ -29,7 +29,7 @@ import com.itsaky.androidide.inflater.internal.ViewGroupImpl * * @author Akash Yadav */ -abstract class AdapterViewAttrAdapter : ViewGroupAttrAdapter() { +abstract class AdapterViewAttrAdapter> : ViewGroupAttrAdapter() { companion object { const val ADAPTER_DEFAULT_ITEM_COUNT = 3 diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAttrAdapter.kt index b7c3c23aa..22525b437 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/AutoCompleteTextViewAttrAdapter.kt @@ -17,14 +17,9 @@ package com.itsaky.androidide.inflater.internal.adapters -import android.content.Context -import android.view.ViewGroup.LayoutParams import android.widget.AutoCompleteTextView import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace -import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.inflater.internal.LayoutFile +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [AutoCompleteTextView]. @@ -32,30 +27,14 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(AutoCompleteTextView::class) -class AutoCompleteTextViewAttrAdapter : EditTextAttrAdapter() { +open class AutoCompleteTextViewAttrAdapter : EditTextAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - file: LayoutFile, - context: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - when (name) { - "completionHint" -> completionHint = parseString(value) - "completionThreshold" -> threshold = parseInteger(value, 1) - "dropDownAnchor" -> dropDownAnchor = parseId(file.resName, value) - "dropDownWidth" -> dropDownWidth = parseDimension(context, value) - "dropDownHeight" -> dropDownHeight = parseDimension(context, value) - else -> applied = false - } - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("completionHint") { view.completionHint = parseString(value) } + create("completionThreshold") { view.threshold = parseInteger(value, 1) } + create("dropDownAnchor") { view.dropDownAnchor = parseId(file.resName, value) } + create("dropDownWidth") { view.dropDownWidth = parseDimension(context, value) } + create("dropDownHeight") { view.dropDownHeight = parseDimension(context, value) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ButtonAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ButtonAttrAdapter.kt index 73d3f3315..bd227e9dd 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ButtonAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ButtonAttrAdapter.kt @@ -25,4 +25,4 @@ import com.itsaky.androidide.annotations.inflater.ViewAdapter * * @author Akash Yadav */ -@ViewAdapter(Button::class) open class ButtonAttrAdapter : TextViewAttrAdapter() \ No newline at end of file +@ViewAdapter(Button::class) open class ButtonAttrAdapter : TextViewAttrAdapter() diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckBoxAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckBoxAttrAdapter.kt index 16ff2b8ce..774363884 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckBoxAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckBoxAttrAdapter.kt @@ -25,4 +25,4 @@ import com.itsaky.androidide.annotations.inflater.ViewAdapter * * @author Akash Yadav */ -@ViewAdapter(CheckBox::class) class CheckBoxAttrAdapter : CompoundButtonAttrAdapter() \ No newline at end of file +@ViewAdapter(CheckBox::class) open class CheckBoxAttrAdapter : CompoundButtonAttrAdapter() \ No newline at end of file diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckedTextViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckedTextViewAttrAdapter.kt index bd4919861..04571a83c 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckedTextViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CheckedTextViewAttrAdapter.kt @@ -19,8 +19,7 @@ package com.itsaky.androidide.inflater.internal.adapters import android.widget.CheckedTextView import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.IView +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [CheckedTextView]. @@ -28,24 +27,11 @@ import com.itsaky.androidide.inflater.IView * @author Akash Yadav */ @ViewAdapter(CheckedTextView::class) -class CheckedTextViewAttrAdapter : TextViewAttrAdapter() { +open class CheckedTextViewAttrAdapter : TextViewAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { _, context, _, _, name, value -> - var applied = true - - when (name) { - "checkMarkTintMode" -> checkMarkTintMode = parsePorterDuffMode(value) - "checkMarkTint" -> checkMarkTintList = parseColorStateList(context, value) - "checkMark" -> {} // ignored - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("checkMarkTintMode") { view.checkMarkTintMode = parsePorterDuffMode(value) } + create("checkMarkTint") { view.checkMarkTintList = parseColorStateList(context, value) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CompoundButtonAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CompoundButtonAttrAdapter.kt index 30428b769..5bfa68dd5 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CompoundButtonAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/CompoundButtonAttrAdapter.kt @@ -17,45 +17,23 @@ package com.itsaky.androidide.inflater.internal.adapters -import android.content.Context -import android.view.ViewGroup.LayoutParams import android.widget.CompoundButton -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace +import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.inflater.internal.LayoutFile /** * Attribute adapter for [CompoundButton]. * * @author Akash Yadav */ -abstract class CompoundButtonAttrAdapter : ButtonAttrAdapter() { +abstract class CompoundButtonAttrAdapter : ButtonAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - context: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - - when (name) { - "buttonTint" -> buttonTintList = parseColorStateList(context, value) - "button" -> buttonDrawable = parseDrawable(context, value) - "buttonTintMode" -> buttonTintMode = parsePorterDuffMode(value) - "checked" -> isChecked = parseBoolean(value = value, def = true) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("buttonTint") { view.buttonTintList = parseColorStateList(context, value) } + create("button") { view.buttonDrawable = parseDrawable(context, value) } + create("buttonTintMode") { view.buttonTintMode = parsePorterDuffMode(value) } + create("checked") { view.isChecked = parseBoolean(value = value, def = true) } } override fun applyBasic(view: IView) { diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAttrAdapter.kt index 780affed8..8b1f5f5d7 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/EditTextAttrAdapter.kt @@ -26,4 +26,4 @@ import com.itsaky.androidide.annotations.inflater.ViewAdapter * @author Akash Yadav */ @ViewAdapter(EditText::class) -open class EditTextAttrAdapter : TextViewAttrAdapter() +open class EditTextAttrAdapter : TextViewAttrAdapter() diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/FrameLayoutAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/FrameLayoutAttrAdapter.kt index 0582899f8..6c0911872 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/FrameLayoutAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/FrameLayoutAttrAdapter.kt @@ -21,6 +21,7 @@ import android.content.Context import android.view.ViewGroup.LayoutParams import android.widget.FrameLayout import com.itsaky.androidide.annotations.inflater.ViewAdapter +import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.IAttribute import com.itsaky.androidide.inflater.INamespace import com.itsaky.androidide.inflater.IView @@ -32,29 +33,11 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(FrameLayout::class) -open class FrameLayoutAttrAdapter : ViewGroupAttrAdapter() { - - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - _: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - - var applied = true - when (name) { - "foregroundGravity" -> foregroundGravity = parseGravity(value) - "measureAllChildren" -> measureAllChildren = parseBoolean(value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } +open class FrameLayoutAttrAdapter : ViewGroupAttrAdapter() { + + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("foregroundGravity") { view.foregroundGravity = parseGravity(value) } + create("measureAllChildren") { view.measureAllChildren = parseBoolean(value) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GestureOverlayViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GestureOverlayViewAttrAdapter.kt index cdab903c6..fef728754 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GestureOverlayViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GestureOverlayViewAttrAdapter.kt @@ -22,6 +22,7 @@ import android.gesture.GestureOverlayView import android.view.ViewGroup.LayoutParams import com.blankj.utilcode.util.ReflectUtils import com.itsaky.androidide.annotations.inflater.ViewAdapter +import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.IAttribute import com.itsaky.androidide.inflater.INamespace import com.itsaky.androidide.inflater.IView @@ -33,42 +34,24 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(GestureOverlayView::class) -open class GestureOverlayViewAttrAdapter : FrameLayoutAttrAdapter() { - - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - context: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - when (name) { - "eventsInterceptionEnabled" -> isEventsInterceptionEnabled = parseBoolean(value) - "fadeDuration" -> - ReflectUtils.reflect(gesture).field("mFadeDuration", parseLong(value, 150)) - "fadeEnabled" -> isFadeEnabled = parseBoolean(value) - "fadeOffset" -> fadeOffset = parseLong(value, 420) - "gestureColor" -> gestureColor = parseColor(context, value) - "gestureStrokeAngleThreshold" -> gestureStrokeAngleThreshold = parseFloat(value) - "gestureStrokeLengthThreshold" -> gestureStrokeLengthThreshold = parseFloat(value) - "gestureStrokeSquarenessThreshold" -> gestureStrokeSquarenessTreshold = parseFloat(value) - "gestureStrokeType" -> gestureStrokeType = parseGestureStrokeType(value) - "gestureStrokeWidth" -> gestureStrokeWidth = parseFloat(value) - "orientation" -> orientation = parseOrientation(value) - "uncertainGestureColor" -> uncertainGestureColor = parseColor(context, value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } +open class GestureOverlayViewAttrAdapter : FrameLayoutAttrAdapter() { + + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("eventsInterceptionEnabled") { view.isEventsInterceptionEnabled = parseBoolean(value) } + create("fadeDuration") { ReflectUtils.reflect(view).field("mFadeDuration", parseLong(value, 150)) } + create("fadeEnabled") { view.isFadeEnabled = parseBoolean(value) } + create("fadeOffset") { view.fadeOffset = parseLong(value, 420) } + create("gestureColor") { view.gestureColor = parseColor(context, value) } + create("gestureStrokeAngleThreshold") { view.gestureStrokeAngleThreshold = parseFloat(value) } + create("gestureStrokeLengthThreshold") { view.gestureStrokeLengthThreshold = parseFloat(value) } + create("gestureStrokeSquarenessThreshold") { view.gestureStrokeSquarenessTreshold = parseFloat(value) } + create("gestureStrokeType") { view.gestureStrokeType = parseGestureStrokeType(value) } + create("gestureStrokeWidth") { view.gestureStrokeWidth = parseFloat(value) } + create("orientation") { view.orientation = parseOrientation(value) } + create("uncertainGestureColor") { view.uncertainGestureColor = parseColor(context, value) } } - + protected open fun parseOrientation(value: String): Int { return if ("horizontal" == value) { GestureOverlayView.ORIENTATION_HORIZONTAL diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GridLayoutAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GridLayoutAttrAdapter.kt index 0c92b7752..39d27774e 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GridLayoutAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/GridLayoutAttrAdapter.kt @@ -17,14 +17,9 @@ package com.itsaky.androidide.inflater.internal.adapters -import android.content.Context -import android.view.ViewGroup.LayoutParams import android.widget.GridLayout import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace -import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.inflater.internal.LayoutFile +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [GridLayout]. @@ -32,33 +27,16 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(GridLayout::class) -open class GridLayoutAttrAdapter : ViewGroupAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - _: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - when (name) { - "alignmentMode" -> alignmentMode = parseAlignmentMode(value) - "columnCount" -> columnCount = parseInteger(value, Int.MIN_VALUE) - "columnOrderPreserved" -> isColumnOrderPreserved = parseBoolean(value) - "orientation" -> orientation = parseOrientation(value) - "rowCount" -> rowCount = parseInteger(value, Int.MIN_VALUE) - "rowOrderPreserved" -> isRowOrderPreserved = parseBoolean(value) - "useDefaultMargins" -> useDefaultMargins = parseBoolean(value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } +open class GridLayoutAttrAdapter : ViewGroupAttrAdapter() { + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("alignmentMode") { view.alignmentMode = parseAlignmentMode(value) } + create("columnCount") { view.columnCount = parseInteger(value, Int.MIN_VALUE) } + create("columnOrderPreserved") { view.isColumnOrderPreserved = parseBoolean(value) } + create("orientation") { view.orientation = parseOrientation(value) } + create("rowCount") { view.rowCount = parseInteger(value, Int.MIN_VALUE) } + create("rowOrderPreserved") { view.isRowOrderPreserved = parseBoolean(value) } + create("useDefaultMargins") { view.useDefaultMargins = parseBoolean(value) } } protected open fun parseOrientation(value: String): Int { diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageButtonAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageButtonAttrAdapter.kt index acf101834..489607927 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageButtonAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageButtonAttrAdapter.kt @@ -25,4 +25,5 @@ import com.itsaky.androidide.annotations.inflater.ViewAdapter * * @author Akash Yadav */ -@ViewAdapter(ImageButton::class) class ImageButtonAttrAdapter : ImageViewAttrAdapter() +@ViewAdapter(ImageButton::class) +open class ImageButtonAttrAdapter : ImageViewAttrAdapter() diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageViewAttrAdapter.kt index cc92fd765..c7dd79165 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ImageViewAttrAdapter.kt @@ -17,8 +17,6 @@ package com.itsaky.androidide.inflater.internal.adapters -import android.content.Context -import android.view.ViewGroup.LayoutParams import android.widget.ImageView import android.widget.ImageView.ScaleType import android.widget.ImageView.ScaleType.CENTER @@ -30,11 +28,9 @@ import android.widget.ImageView.ScaleType.FIT_START import android.widget.ImageView.ScaleType.FIT_XY import android.widget.ImageView.ScaleType.MATRIX import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace +import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.IView import com.itsaky.androidide.inflater.R -import com.itsaky.androidide.inflater.internal.LayoutFile /** * Attribute adpater [ImageView]s. @@ -42,38 +38,20 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(ImageView::class) -open class ImageViewAttrAdapter : ViewAttrAdapter() { +open class ImageViewAttrAdapter : ViewAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - context: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - - when (name) { - "adjustViewBounds" -> adjustViewBounds = parseBoolean(value) - "baseline" -> baseline = parseDimension(context, value, 0) - "baselineAlignBottom" -> baselineAlignBottom = parseBoolean(value) - "cropToPadding" -> cropToPadding = parseBoolean(value) - "maxHeight" -> maxHeight = parseDimension(context, value, 0) - "maxWidth" -> maxWidth = parseDimension(context, value, 0) - "scaleType" -> scaleType = parseScaleType(value) - "src" -> setImageDrawable(parseDrawable(context, value)) - "tint" -> imageTintList = parseColorStateList(context, value) - "tintMode" -> imageTintMode = parsePorterDuffMode(value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("adjustViewBounds") { view.adjustViewBounds = parseBoolean(value) } + create("baseline") { view.baseline = parseDimension(context, value, 0) } + create("baselineAlignBottom") { view.baselineAlignBottom = parseBoolean(value) } + create("cropToPadding") { view.cropToPadding = parseBoolean(value) } + create("maxHeight") { view.maxHeight = parseDimension(context, value, 0) } + create("maxWidth") { view.maxWidth = parseDimension(context, value, 0) } + create("scaleType") { view.scaleType = parseScaleType(value) } + create("src") { view.setImageDrawable(parseDrawable(context, value)) } + create("tint") { view.imageTintList = parseColorStateList(context, value) } + create("tintMode") { view.imageTintMode = parsePorterDuffMode(value) } } override fun applyBasic(view: IView) { diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/LinearLayoutAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/LinearLayoutAttrAdapter.kt index 908d336c7..48615fdd7 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/LinearLayoutAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/LinearLayoutAttrAdapter.kt @@ -17,18 +17,14 @@ package com.itsaky.androidide.inflater.internal.adapters -import android.content.Context -import android.view.ViewGroup.LayoutParams import android.widget.LinearLayout import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute +import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.INamespace -import com.itsaky.androidide.inflater.IView import com.itsaky.androidide.inflater.IViewGroup import com.itsaky.androidide.inflater.LayoutBehavior import com.itsaky.androidide.inflater.LayoutBehavior.HORIZONTAL import com.itsaky.androidide.inflater.LayoutBehavior.VERTICAL -import com.itsaky.androidide.inflater.internal.LayoutFile /** * Attribute adapter for [LinearLayout]. @@ -36,34 +32,21 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(LinearLayout::class) -open class LinearLayoutAttrAdapter : ViewGroupAttrAdapter() { +open class LinearLayoutAttrAdapter : ViewGroupAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - _: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) - when (name) { - "baselineAligned" -> isBaselineAligned = parseBoolean(value) - "baselineAlignedChildIndex" -> baselineAlignedChildIndex = parseInteger(value, childCount) - "gravity" -> gravity = parseGravity(value) - "measureWithLargestChild" -> isMeasureWithLargestChildEnabled = parseBoolean(value) - "orientation" -> orientation = parseOrientation(value) - "weightSum" -> weightSum = parseFloat(value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied + create("baselineAligned") { view.isBaselineAligned = parseBoolean(value) } + create("baselineAlignedChildIndex") { + view.baselineAlignedChildIndex = parseInteger(value, view.childCount) } + create("gravity") { view.gravity = parseGravity(value) } + create("measureWithLargestChild") { + view.isMeasureWithLargestChildEnabled = parseBoolean(value) + } + create("orientation") { view.orientation = parseOrientation(value) } + create("weightSum") { view.weightSum = parseFloat(value) } } override fun getLayoutBehavior(group: IViewGroup): LayoutBehavior { diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ListViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ListViewAttrAdapter.kt index fbef65971..e6dc0c8c8 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ListViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ListViewAttrAdapter.kt @@ -18,16 +18,11 @@ package com.itsaky.androidide.inflater.internal.adapters import android.R.layout -import android.content.Context -import android.view.ViewGroup.LayoutParams import android.widget.ArrayAdapter import android.widget.ListView import com.blankj.utilcode.util.SizeUtils import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace -import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.inflater.internal.LayoutFile +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [ListView]. @@ -35,34 +30,19 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(ListView::class) -class ListViewAttrAdapter : AbsListViewAttrAdapter() { +open class ListViewAttrAdapter : AbsListViewAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - context: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - - var applied = true - when (name) { - "divider" -> divider = parseDrawable(context, value) - "dividerHeight" -> dividerHeight = parseDimension(context, value, SizeUtils.dp2px(1f)) - "entries" -> { - val entries = parseStringArray(value) - adapter = ArrayAdapter(context, layout.simple_list_item_1, entries) - } - "footerDividersEnabled" -> setFooterDividersEnabled(parseBoolean(value)) - "headerDividersEnabled" -> setHeaderDividersEnabled(parseBoolean(value)) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - return@doApply applied + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("divider") { view.divider = parseDrawable(context, value) } + create("dividerHeight") { + view.dividerHeight = parseDimension(context, value, SizeUtils.dp2px(1f)) } + create("entries") { + val entries = parseStringArray(value) + view.adapter = ArrayAdapter(context, layout.simple_list_item_1, entries) + } + create("footerDividersEnabled") { view.setFooterDividersEnabled(parseBoolean(value)) } + create("headerDividersEnabled") { view.setHeaderDividersEnabled(parseBoolean(value)) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ProgressBarAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ProgressBarAttrAdapter.kt index ce22f16f3..1495c62ec 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ProgressBarAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ProgressBarAttrAdapter.kt @@ -21,6 +21,7 @@ import android.content.Context import android.view.ViewGroup.LayoutParams import android.widget.ProgressBar import com.itsaky.androidide.annotations.inflater.ViewAdapter +import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.IAttribute import com.itsaky.androidide.inflater.INamespace import com.itsaky.androidide.inflater.IView @@ -32,58 +33,52 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(ProgressBar::class) -open class ProgressBarAttrAdapter : ViewAttrAdapter() { +open class ProgressBarAttrAdapter : ViewAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - context: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - - when (name) { - "indeterminate" -> isIndeterminate = parseBoolean(value) - "indeterminateDrawable" -> indeterminateDrawable = parseDrawable(context, value) - "indeterminateTint" -> indeterminateTintList = parseColorStateList(context, value) - "indeterminateTintMode" -> indeterminateTintMode = parsePorterDuffMode(value) - "max" -> max = parseInteger(value, 100) - "maxHeight" -> - if (isApi29()) { - maxHeight = parseDimension(context, value, Int.MAX_VALUE) - } - "maxWidth" -> - if (isApi29()) { - maxWidth = parseDimension(context, value, Int.MAX_VALUE) - } - "min" -> min = parseInteger(value, 0) - "minHeight" -> - if (isApi29()) { - minHeight = parseDimension(context, value, 0) - } - "minWidth" -> - if (isApi29()) { - minWidth = parseDimension(context, value, 0) - } - "progress" -> progress = parseInteger(value, 50) - "progressBackgroundTint" -> progressBackgroundTintList = parseColorStateList(context, value) - "progressBackgroundTintMode" -> progressBackgroundTintMode = parsePorterDuffMode(value) - "progressDrawable" -> progressDrawable = parseDrawable(context, value) - "progressTint" -> progressTintList = parseColorStateList(context, value) - "progressTintMode" -> progressTintMode = parsePorterDuffMode(value) - "secondaryProgress" -> secondaryProgress = parseInteger(value, 0) - "secondaryProgressTint" -> secondaryProgressTintList = parseColorStateList(context, value) - "secondaryProgressTintMode" -> secondaryProgressTintMode = parsePorterDuffMode(value) - else -> applied = false + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("indeterminate") { view.isIndeterminate = parseBoolean(value) } + create("indeterminateDrawable") { view.indeterminateDrawable = parseDrawable(context, value) } + create("indeterminateTint") { view.indeterminateTintList = parseColorStateList(context, value) } + create("indeterminateTintMode") { view.indeterminateTintMode = parsePorterDuffMode(value) } + create("max") { view.max = parseInteger(value, 100) } + create("maxHeight") { + if (isApi29()) { + view.maxHeight = parseDimension(context, value, Int.MAX_VALUE) } - - if (!applied) { - applied = super.apply(view, attribute) + } + create("maxWidth") { + if (isApi29()) { + view.maxWidth = parseDimension(context, value, Int.MAX_VALUE) } - - return@doApply applied + } + create("min") { view.min = parseInteger(value, 0) } + create("minHeight") { + if (isApi29()) { + view.minHeight = parseDimension(context, value, 0) + } + } + create("minWidth") { + if (isApi29()) { + view.minWidth = parseDimension(context, value, 0) + } + } + create("progress") { view.progress = parseInteger(value, 50) } + create("progressBackgroundTint") { + view.progressBackgroundTintList = parseColorStateList(context, value) + } + create("progressBackgroundTintMode") { + view.progressBackgroundTintMode = parsePorterDuffMode(value) + } + create("progressDrawable") { view.progressDrawable = parseDrawable(context, value) } + create("progressTint") { view.progressTintList = parseColorStateList(context, value) } + create("progressTintMode") { view.progressTintMode = parsePorterDuffMode(value) } + create("secondaryProgress") { view.secondaryProgress = parseInteger(value, 0) } + create("secondaryProgressTint") { + view.secondaryProgressTintList = parseColorStateList(context, value) + } + create("secondaryProgressTintMode") { + view.secondaryProgressTintMode = parsePorterDuffMode(value) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioButtonAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioButtonAttrAdapter.kt index d71cb15ba..4a648105a 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioButtonAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RadioButtonAttrAdapter.kt @@ -25,4 +25,5 @@ import com.itsaky.androidide.annotations.inflater.ViewAdapter * * @author Akash Yadav */ -@ViewAdapter(RadioButton::class) class RadioButtonAttrAdapter : CompoundButtonAttrAdapter() +@ViewAdapter(RadioButton::class) +open class RadioButtonAttrAdapter : CompoundButtonAttrAdapter() diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RelativeLayoutAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RelativeLayoutAttrAdapter.kt index 8ae58470b..574b27799 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RelativeLayoutAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/RelativeLayoutAttrAdapter.kt @@ -17,14 +17,9 @@ package com.itsaky.androidide.inflater.internal.adapters -import android.content.Context -import android.view.ViewGroup.LayoutParams import android.widget.RelativeLayout import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace -import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.inflater.internal.LayoutFile +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [RelativeLayout]. @@ -32,29 +27,11 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(RelativeLayout::class) -class RelativeLayoutAttrAdapter : ViewGroupAttrAdapter() { +open class RelativeLayoutAttrAdapter : ViewGroupAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - file: LayoutFile, - _: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - - when (name) { - "gravity" -> gravity = parseGravity(value) - "ignoreGravity" -> ignoreGravity = parseId(file.resName, value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("gravity") { view.gravity = parseGravity(value) } + create("ignoreGravity") { view.ignoreGravity = parseId(file.resName, value) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SeekBarAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SeekBarAttrAdapter.kt index 887ba4420..f8a18b342 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SeekBarAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SeekBarAttrAdapter.kt @@ -19,8 +19,7 @@ package com.itsaky.androidide.inflater.internal.adapters import android.widget.SeekBar import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.IView +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [SeekBar]. @@ -28,22 +27,11 @@ import com.itsaky.androidide.inflater.IView * @author Akash Yadav */ @ViewAdapter(SeekBar::class) -class SeekBarAttrAdapter : AbsSeekBarAttrAdapter() { +open class SeekBarAttrAdapter : AbsSeekBarAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { _, context, _, _, name, value -> - var applied = true + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) - when (name) { - "thumb" -> thumb = parseDrawable(context, value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } + create("thumb") { view.thumb = parseDrawable(context, value) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpinnerAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpinnerAttrAdapter.kt index 46a506df9..7bb4fc136 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpinnerAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SpinnerAttrAdapter.kt @@ -17,14 +17,9 @@ package com.itsaky.androidide.inflater.internal.adapters -import android.content.Context -import android.view.ViewGroup.LayoutParams import android.widget.Spinner import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace -import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.inflater.internal.LayoutFile +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [Spinner]. @@ -32,31 +27,17 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(Spinner::class) -class SpinnerAttrAdapter : AbsSpinnerAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - context: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - - when (name) { - "dropDownHorizontalOffset" -> dropDownHorizontalOffset = parseDimension(context, value, 0) - "dropDownVerticalOffset" -> dropDownVerticalOffset = parseDimension(context, value, 0) - "dropDownWidth" -> dropDownWidth = parseDimension(context, value, 0) - "gravity" -> gravity = parseGravity(value) - "popupBackground" -> setPopupBackgroundDrawable(parseDrawable(context, value)) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied +open class SpinnerAttrAdapter : AbsSpinnerAttrAdapter() { + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("dropDownHorizontalOffset") { + view.dropDownHorizontalOffset = parseDimension(context, value, 0) } + create("dropDownVerticalOffset") { + view.dropDownVerticalOffset = parseDimension(context, value, 0) + } + create("dropDownWidth") { view.dropDownWidth = parseDimension(context, value, 0) } + create("gravity") { view.gravity = parseGravity(value) } + create("popupBackground") { view.setPopupBackgroundDrawable(parseDrawable(context, value)) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAttrAdapter.kt index fa006df2f..72547dfad 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SurfaceViewAttrAdapter.kt @@ -24,4 +24,5 @@ import com.itsaky.androidide.annotations.inflater.ViewAdapter * Attribute adapter for [SurfaceView]. * @author Akash Yadav */ -@ViewAdapter(SurfaceView::class) class SurfaceViewAttrAdapter : ViewAttrAdapter() +@ViewAdapter(SurfaceView::class) +open class SurfaceViewAttrAdapter : ViewAttrAdapter() diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SwitchAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SwitchAttrAdapter.kt index c6229af7e..32e74ba71 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SwitchAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/SwitchAttrAdapter.kt @@ -17,15 +17,10 @@ package com.itsaky.androidide.inflater.internal.adapters -import android.content.Context import android.graphics.Typeface.DEFAULT -import android.view.ViewGroup.LayoutParams import android.widget.Switch import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace -import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.inflater.internal.LayoutFile +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [Switch]. @@ -33,40 +28,23 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(Switch::class) -class SwitchAttrAdapter : CompoundButtonAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - context: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - when (name) { - "showText" -> showText = parseBoolean(value) - "splitTrack" -> splitTrack = parseBoolean(value) - "switchMinWidth" -> switchMinWidth = parseDimension(context, value, 0) - "switchPadding" -> switchPadding = parseDimension(context, value, 0) - "textOff" -> textOff = parseString(value) - "textOn" -> textOn = parseString(value) - "textStyle" -> setSwitchTypeface(DEFAULT, parseTextStyle(value)) - "thumb" -> thumbDrawable = parseDrawable(context, value) - "thumbTextPadding" -> thumbTextPadding = parseDimension(context, value, 0) - "thumbTint" -> thumbTintList = parseColorStateList(context, value) - "thumbTintMode" -> thumbTintMode = parsePorterDuffMode(value) - "track" -> trackDrawable = parseDrawable(context, value) - "trackTint" -> trackTintList = parseColorStateList(context, value) - "trackTintMode" -> trackTintMode = parsePorterDuffMode(value) - "typeface" -> setSwitchTypeface(parseTypeface(value)) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } +open class SwitchAttrAdapter : CompoundButtonAttrAdapter() { + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("showText") { view.showText = parseBoolean(value) } + create("splitTrack") { view.splitTrack = parseBoolean(value) } + create("switchMinWidth") { view.switchMinWidth = parseDimension(context, value, 0) } + create("switchPadding") { view.switchPadding = parseDimension(context, value, 0) } + create("textOff") { view.textOff = parseString(value) } + create("textOn") { view.textOn = parseString(value) } + create("textStyle") { view.setSwitchTypeface(DEFAULT, parseTextStyle(value)) } + create("thumb") { view.thumbDrawable = parseDrawable(context, value) } + create("thumbTextPadding") { view.thumbTextPadding = parseDimension(context, value, 0) } + create("thumbTint") { view.thumbTintList = parseColorStateList(context, value) } + create("thumbTintMode") { view.thumbTintMode = parsePorterDuffMode(value) } + create("track") { view.trackDrawable = parseDrawable(context, value) } + create("trackTint") { view.trackTintList = parseColorStateList(context, value) } + create("trackTintMode") { view.trackTintMode = parsePorterDuffMode(value) } + create("typeface") { view.setSwitchTypeface(parseTypeface(value)) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAttrAdapter.kt index 22b0b9aaf..6dc58957f 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextViewAttrAdapter.kt @@ -17,19 +17,15 @@ package com.itsaky.androidide.inflater.internal.adapters -import android.content.Context import android.graphics.Typeface import android.text.TextUtils import android.text.util.Linkify import android.util.TypedValue -import android.view.ViewGroup.LayoutParams import android.widget.TextView import com.blankj.utilcode.util.SizeUtils import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace +import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.inflater.internal.LayoutFile import com.itsaky.androidide.inflater.utils.newAttribute import java.util.regex.Pattern @@ -39,93 +35,88 @@ import java.util.regex.Pattern * @author Akash Yadav */ @ViewAdapter(TextView::class) -open class TextViewAttrAdapter : ViewAttrAdapter() { +open class TextViewAttrAdapter : ViewAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - context: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - val drawables = compoundDrawables - val drawablesRelative = compoundDrawablesRelative - var applied = true - when (name) { - "autoLink" -> autoLinkMask = parseAutoLinkMask(value) - "drawableLeft" -> - setCompoundDrawables( - parseDrawable(context, value), - drawables[1], - drawables[2], - drawables[3] - ) - "drawableTop" -> - setCompoundDrawables( - drawables[0], - parseDrawable(context, value), - drawables[2], - drawables[3] - ) - "drawableRight" -> - setCompoundDrawables( - drawables[0], - drawables[1], - parseDrawable(context, value), - drawables[3] - ) - "drawableBottom" -> - setCompoundDrawables( - drawables[0], - drawables[1], - drawables[2], - parseDrawable(context, value) - ) - "drawableStart" -> - setCompoundDrawables( - parseDrawable(context, value), - drawablesRelative[1], - drawablesRelative[2], - drawablesRelative[3] - ) - "drawableEnd" -> - setCompoundDrawables( - drawablesRelative[0], - drawablesRelative[1], - parseDrawable(context, value), - drawablesRelative[3] - ) - "drawablePadding" -> compoundDrawablePadding = parseDimension(context, value, 0) - "ellipsize" -> ellipsize = parseEllipsize(value) - "gravity" -> gravity = parseGravity(value) - "hint" -> hint = parseString(value) - "letterSpacing" -> letterSpacing = parseFloat(value) - "lineHeight" -> setLines(parseInteger(value, Int.MAX_VALUE)) - "linksClickable" -> linksClickable = parseBoolean(value) - "marqueeRepeatLimit" -> marqueeRepeatLimit = parseInteger(value, Int.MAX_VALUE) - "maxLines" -> maxLines = parseInteger(value, Int.MAX_VALUE) - "minLines" -> minLines = parseInteger(value, 1) - "singleLine" -> isSingleLine = parseBoolean(value) - "text" -> text = parseString(value) - "textAllCaps" -> isAllCaps = parseBoolean(value) - "textColor" -> setTextColor(parseColor(context, value)) - "textColorHint" -> setHintTextColor(parseColor(context, value)) - "textSize" -> - setTextSize( - TypedValue.COMPLEX_UNIT_PX, - parseDimensionF(context, value, SizeUtils.sp2px(14f).toFloat()) - ) - "textStyle" -> setTypeface(typeface, parseTextStyle(value)) - "typeface" -> typeface = parseTypeface(value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - return@doApply applied + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("autoLink") { view.autoLinkMask = parseAutoLinkMask(value) } + create("drawableLeft") { + val drawables = view.compoundDrawables + view.setCompoundDrawables( + parseDrawable(context, value), + drawables[1], + drawables[2], + drawables[3] + ) } + create("drawableTop") { + val drawables = view.compoundDrawables + view.setCompoundDrawables( + drawables[0], + parseDrawable(context, value), + drawables[2], + drawables[3] + ) + } + create("drawableRight") { + val drawables = view.compoundDrawables + view.setCompoundDrawables( + drawables[0], + drawables[1], + parseDrawable(context, value), + drawables[3] + ) + } + create("drawableBottom") { + val drawables = view.compoundDrawables + view.setCompoundDrawables( + drawables[0], + drawables[1], + drawables[2], + parseDrawable(context, value) + ) + } + create("drawableStart") { + val drawablesRelative = view.compoundDrawablesRelative + view.setCompoundDrawables( + parseDrawable(context, value), + drawablesRelative[1], + drawablesRelative[2], + drawablesRelative[3] + ) + } + create("drawableEnd") { + val drawablesRelative = view.compoundDrawablesRelative + view.setCompoundDrawables( + drawablesRelative[0], + drawablesRelative[1], + parseDrawable(context, value), + drawablesRelative[3] + ) + } + create("drawablePadding") { view.compoundDrawablePadding = parseDimension(context, value, 0) } + create("ellipsize") { view.ellipsize = parseEllipsize(value) } + create("gravity") { view.gravity = parseGravity(value) } + create("hint") { view.hint = parseString(value) } + create("letterSpacing") { view.letterSpacing = parseFloat(value) } + create("lineHeight") { view.setLines(parseInteger(value, Int.MAX_VALUE)) } + create("linksClickable") { view.linksClickable = parseBoolean(value) } + create("marqueeRepeatLimit") { view.marqueeRepeatLimit = parseInteger(value, Int.MAX_VALUE) } + create("maxLines") { view.maxLines = parseInteger(value, Int.MAX_VALUE) } + create("minLines") { view.minLines = parseInteger(value, 1) } + create("singleLine") { view.isSingleLine = parseBoolean(value) } + create("text") { view.text = parseString(value) } + create("textAllCaps") { view.isAllCaps = parseBoolean(value) } + create("textColor") { view.setTextColor(parseColor(context, value)) } + create("textColorHint") { view.setHintTextColor(parseColor(context, value)) } + create("textSize") { + view.setTextSize( + TypedValue.COMPLEX_UNIT_PX, + parseDimensionF(context, value, SizeUtils.sp2px(14f).toFloat()) + ) + } + create("textStyle") { view.setTypeface(view.typeface, parseTextStyle(value)) } + create("typeface") { view.typeface = parseTypeface(value) } } override fun applyBasic(view: IView) { diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAttrAdapter.kt index 6bfba3a0a..9d9cc9f26 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/TextureViewAttrAdapter.kt @@ -26,4 +26,4 @@ import com.itsaky.androidide.annotations.inflater.ViewAdapter * @author Akash Yadav */ @ViewAdapter(TextureView::class) -class TextureViewAttrAdapter : ViewAttrAdapter() \ No newline at end of file +open class TextureViewAttrAdapter : ViewAttrAdapter() \ No newline at end of file diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ToggleButtonAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ToggleButtonAttrAdapter.kt index 5184afac3..f4af20f67 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ToggleButtonAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ToggleButtonAttrAdapter.kt @@ -17,16 +17,10 @@ package com.itsaky.androidide.inflater.internal.adapters -import android.R.attr.button -import android.content.Context -import android.view.ViewGroup.LayoutParams import android.widget.ToggleButton import com.blankj.utilcode.util.ReflectUtils.reflect import com.itsaky.androidide.annotations.inflater.ViewAdapter -import com.itsaky.androidide.inflater.IAttribute -import com.itsaky.androidide.inflater.INamespace -import com.itsaky.androidide.inflater.IView -import com.itsaky.androidide.inflater.internal.LayoutFile +import com.itsaky.androidide.inflater.AttributeHandlerScope /** * Attribute adapter for [ToggleButton]. @@ -34,29 +28,12 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * @author Akash Yadav */ @ViewAdapter(ToggleButton::class) -class ToggleButtonAttrAdapter : CompoundButtonAttrAdapter() { +open class ToggleButtonAttrAdapter : CompoundButtonAttrAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - _: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - when (name) { - "disabledAlpha" -> reflect(button).field("mDisabledAlpha", parseFloat(value, 0.5f)) - "textOff" -> textOff = parseString(value) - "textOn" -> textOn = parseString(value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("disabledAlpha") { reflect(view).field("mDisabledAlpha", parseFloat(value, 0.5f)) } + create("textOff") { view.textOff = parseString(value) } + create("textOn") { view.textOn = parseString(value) } } } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewAttrAdapter.kt index 5c27bdded..9f8a83c2b 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewAttrAdapter.kt @@ -30,14 +30,12 @@ import android.widget.RelativeLayout.* import androidx.annotation.ChecksSdkIntAtLeast import androidx.core.view.updatePadding import androidx.core.view.updatePaddingRelative -import com.android.SdkConstants import com.itsaky.androidide.annotations.inflater.ViewAdapter +import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.IAttribute import com.itsaky.androidide.inflater.INamespace import com.itsaky.androidide.inflater.IView import com.itsaky.androidide.inflater.IViewAdapter -import com.itsaky.androidide.inflater.internal.LayoutFile -import com.itsaky.androidide.inflater.internal.ViewImpl import com.itsaky.androidide.inflater.utils.newAttribute /** @@ -46,89 +44,93 @@ import com.itsaky.androidide.inflater.utils.newAttribute * @author Akash Yadav */ @ViewAdapter(forView = View::class) -open class ViewAttrAdapter : IViewAdapter() { +open class ViewAttrAdapter : IViewAdapter() { - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { file, context, layoutParams, _, name, value -> - var applied = true - @Suppress("DEPRECATION") - when (name) { - "alpha" -> alpha = parseFloat(value) - "background" -> background = parseDrawable(context, value) - "backgroundTint" -> backgroundTintList = parseColorStateList(context, value) - "backgroundTintMode" -> backgroundTintMode = parsePorterDuffMode(value) - "clipToOutline" -> clipToOutline = parseBoolean(value) - "contentDescription" -> contentDescription = parseString(value) - "contextClickable" -> isContextClickable = parseBoolean(value) - "defaultFocusHighlightEnabled" -> defaultFocusHighlightEnabled = parseBoolean(value) - "drawingCacheQuality" -> drawingCacheQuality = parseDrawingCacheQuality(value) - "duplicateParentState" -> isDuplicateParentStateEnabled = parseBoolean(value) - "elevation" -> elevation = parseDimensionF(context, value) - "fadeScrollbars" -> isScrollbarFadingEnabled = parseBoolean(value) - "fadingEdgeLength" -> setFadingEdgeLength(parseDimension(context, value)) - "filterTouchesWhenObscured" -> filterTouchesWhenObscured = parseBoolean(value) - "foreground" -> foreground = parseDrawable(context, value) - "foregroundGravity" -> foregroundGravity = parseGravity(value) - "foregroundTint" -> foregroundTintList = parseColorStateList(context, value) - "foregroundTintMode" -> foregroundTintMode = parsePorterDuffMode(value) - "id" -> id = parseId(file.resName, value) - "minHeight" -> minimumWidth = parseDimension(context, value) - "minWidth" -> minimumHeight = parseDimension(context, value) - "padding" -> - parseDimension(context, value).also { - updatePadding(left = it, top = it, right = it, bottom = it) - } - "paddingLeft" -> updatePadding(left = parseDimension(context, value)) - "paddingTop" -> updatePadding(top = parseDimension(context, value)) - "paddingRight" -> updatePadding(right = parseDimension(context, value)) - "paddingBottom" -> updatePadding(bottom = parseDimension(context, value)) - "paddingStart" -> updatePaddingRelative(start = parseDimension(context, value)) - "paddingEnd" -> updatePaddingRelative(end = parseDimension(context, value)) - "rotation" -> rotation = parseFloat(value) - "rotationX" -> rotationX = parseFloat(value) - "rotationY" -> rotationY = parseFloat(value) - "scaleX" -> scaleX = parseFloat(value) - "scaleY" -> scaleY = parseFloat(value) - "scrollX" -> scrollX = parseInteger(value) - "scrollY" -> scrollY = parseInteger(value) - "textAlignment" -> textAlignment = parseTextAlignment(value) - "textDirection" -> textDirection = parseTextDirection(value) - "tooltipText" -> tooltipText = parseString(value) - "transformPivotX" -> pivotX = parseFloat(value) - "transformPivotY" -> pivotY = parseFloat(value) - "translationX" -> translationX = parseFloat(value) - "translationY" -> translationY = parseFloat(value) - "translationZ" -> translationZ = parseFloat(value) - "visibility" -> visibility = parseVisibility(value) - else -> applied = false - } - - if (!applied && layoutParams is LinearLayout.LayoutParams) { - applied = applyLinearLayoutParams(layoutParams, name, value) - } - - if (!applied && layoutParams is RelativeLayout.LayoutParams) { - applied = applyRelativeLayoutParams(layoutParams, file.resName, name, value) - } - - if (!applied && layoutParams is FrameLayout.LayoutParams) { - applied = applyFrameLayoutParams(layoutParams, name, value) - } - - if (!applied && layoutParams is MarginLayoutParams) { - applied = applyMarginParams(context, layoutParams, name, value) - } - - if (!applied) { - applied = applyLayoutParams(context, layoutParams, name, value) - } - - if (applied) { - this.layoutParams = layoutParams - } - - return@doApply applied + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + create("alpha") { view.alpha = parseFloat(value) } + create("background") { view.background = parseDrawable(context, value) } + create("backgroundTint") { view.backgroundTintList = parseColorStateList(context, value) } + create("backgroundTintMode") { view.backgroundTintMode = parsePorterDuffMode(value) } + create("clipToOutline") { view.clipToOutline = parseBoolean(value) } + create("contentDescription") { view.contentDescription = parseString(value) } + create("contextClickable") { view.isContextClickable = parseBoolean(value) } + create("defaultFocusHighlightEnabled") { + view.defaultFocusHighlightEnabled = parseBoolean(value) } + create("drawingCacheQuality") { + @Suppress("DEPRECATION") + view.drawingCacheQuality = parseDrawingCacheQuality(value) + } + create("duplicateParentState") { view.isDuplicateParentStateEnabled = parseBoolean(value) } + create("elevation") { view.elevation = parseDimensionF(context, value) } + create("fadeScrollbars") { view.isScrollbarFadingEnabled = parseBoolean(value) } + create("fadingEdgeLength") { view.setFadingEdgeLength(parseDimension(context, value)) } + create("filterTouchesWhenObscured") { view.filterTouchesWhenObscured = parseBoolean(value) } + create("foreground") { view.foreground = parseDrawable(context, value) } + create("foregroundGravity") { view.foregroundGravity = parseGravity(value) } + create("foregroundTint") { view.foregroundTintList = parseColorStateList(context, value) } + create("foregroundTintMode") { view.foregroundTintMode = parsePorterDuffMode(value) } + create("id") { view.id = parseId(file.resName, value) } + create("minHeight") { view.minimumWidth = parseDimension(context, value) } + create("minWidth") { view.minimumHeight = parseDimension(context, value) } + create("padding") { + parseDimension(context, value).also { + view.updatePadding(left = it, top = it, right = it, bottom = it) + } + } + create("paddingLeft") { view.updatePadding(left = parseDimension(context, value)) } + create("paddingTop") { view.updatePadding(top = parseDimension(context, value)) } + create("paddingRight") { view.updatePadding(right = parseDimension(context, value)) } + create("paddingBottom") { view.updatePadding(bottom = parseDimension(context, value)) } + create("paddingStart") { view.updatePaddingRelative(start = parseDimension(context, value)) } + create("paddingEnd") { view.updatePaddingRelative(end = parseDimension(context, value)) } + create("rotation") { view.rotation = parseFloat(value) } + create("rotationX") { view.rotationX = parseFloat(value) } + create("rotationY") { view.rotationY = parseFloat(value) } + create("scaleX") { view.scaleX = parseFloat(value) } + create("scaleY") { view.scaleY = parseFloat(value) } + create("scrollX") { view.scrollX = parseInteger(value) } + create("scrollY") { view.scrollY = parseInteger(value) } + create("textAlignment") { view.textAlignment = parseTextAlignment(value) } + create("textDirection") { view.textDirection = parseTextDirection(value) } + create("tooltipText") { view.tooltipText = parseString(value) } + create("transformPivotX") { view.pivotX = parseFloat(value) } + create("transformPivotY") { view.pivotY = parseFloat(value) } + create("translationX") { view.translationX = parseFloat(value) } + create("translationY") { view.translationY = parseFloat(value) } + create("translationZ") { view.translationZ = parseFloat(value) } + create("visibility") { view.visibility = parseVisibility(value) } + } + + override fun AttributeHandlerScope.applyLayoutParams() : Boolean { + + var applied = false + + if (layoutParams is LinearLayout.LayoutParams) { + applied = applyLinearLayoutParams(layoutParams, name, value) + } + + if (!applied && layoutParams is RelativeLayout.LayoutParams) { + applied = applyRelativeLayoutParams(layoutParams, file.resName, name, value) + } + + if (!applied && layoutParams is FrameLayout.LayoutParams) { + applied = applyFrameLayoutParams(layoutParams, name, value) + } + + if (!applied && layoutParams is MarginLayoutParams) { + applied = applyMarginParams(context, layoutParams, name, value) + } + + if (!applied) { + applied = applyLayoutParams(context, layoutParams, name, value) + } + + if (applied) { + view.layoutParams = layoutParams + } + + return applied } override fun applyBasic(view: IView) { @@ -250,49 +252,6 @@ open class ViewAttrAdapter : IViewAdapter() { return applied } - protected open fun canHandleNamespace(namespace: INamespace): Boolean { - return this.canHandleNamespace(namespace.uri) - } - protected open fun canHandleNamespace(nsUri: String): Boolean { - return SdkConstants.ANDROID_URI == nsUri - } - - /** - * Provides easy access to various properties related to the view and attribute when applying an - * attributes. - */ - protected open fun doApply( - view: IView, - attribute: IAttribute, - block: - T.( - file: LayoutFile, - context: Context, - layoutParams: LayoutParams, - namespace: INamespace, - name: String, - value: String, - ) -> Boolean, - ): Boolean { - if (!canHandleNamespace(attribute.namespace)) { - return false - } - @Suppress("UNCHECKED_CAST") - return (view.view as T).let { - val file = (view as ViewImpl).file - val applied = - it.block( - file, - it.context, - it.layoutParams, - attribute.namespace, - attribute.name, - attribute.value - ) - return@let applied - } - } - protected open fun parseDrawingCacheQuality(value: String): Int { return com.itsaky.androidide.inflater.internal.utils.parseDrawingCacheQuality(value) } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewGroupAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewGroupAttrAdapter.kt index 65b711a27..96a066c32 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewGroupAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/ViewGroupAttrAdapter.kt @@ -21,6 +21,7 @@ import android.animation.LayoutTransition import android.content.Context import android.view.ViewGroup import android.view.ViewGroup.LayoutParams +import com.itsaky.androidide.inflater.AttributeHandlerScope import com.itsaky.androidide.inflater.IAttribute import com.itsaky.androidide.inflater.INamespace import com.itsaky.androidide.inflater.IView @@ -35,34 +36,17 @@ import com.itsaky.androidide.inflater.internal.LayoutFile * * @author Akash Yadav */ -abstract class ViewGroupAttrAdapter : ViewAttrAdapter(), IViewGroupAdapter { - - override fun apply(view: IView, attribute: IAttribute): Boolean { - return doApply(view, attribute) { - _: LayoutFile, - _: Context, - _: LayoutParams, - _: INamespace, - name: String, - value: String -> - var applied = true - when (name) { - "animateLayoutChanges" -> layoutTransition = LayoutTransition() - "clipChildren" -> clipChildren = parseBoolean(value) - "clipToPadding" -> clipToPadding = parseBoolean(value) - "descendantFocusability" -> descendantFocusability = parseDescendantsFocusability(value) - "layoutMode" -> layoutMode = parseLayoutMode(value) - else -> applied = false - } - - if (!applied) { - applied = super.apply(view, attribute) - } - - return@doApply applied - } +abstract class ViewGroupAttrAdapter : ViewAttrAdapter(), IViewGroupAdapter { + + override fun createAttrHandlers(create: (String, AttributeHandlerScope.() -> Unit) -> Unit) { + super.createAttrHandlers(create) + create("animateLayoutChanges") { view.layoutTransition = LayoutTransition() } + create("clipChildren") { view.clipChildren = parseBoolean(value) } + create("clipToPadding") { view.clipToPadding = parseBoolean(value) } + create("descendantFocusability") { view.descendantFocusability = parseDescendantsFocusability(value) } + create("layoutMode") { view.layoutMode = parseLayoutMode(value) } } - + override fun getLayoutBehavior(group: IViewGroup): LayoutBehavior { return TOP_LEFT } diff --git a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAttrAdapter.kt b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAttrAdapter.kt index fda8eb5ba..9898ff34c 100644 --- a/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAttrAdapter.kt +++ b/xml-inflater/src/main/java/com/itsaky/androidide/inflater/internal/adapters/WebViewAttrAdapter.kt @@ -26,4 +26,4 @@ import com.itsaky.androidide.annotations.inflater.ViewAdapter * @author Akash Yadav */ @ViewAdapter(WebView::class) -class WebViewAttrAdapter : AbsoluteLayoutAttrAdapter() \ No newline at end of file +open class WebViewAttrAdapter : AbsoluteLayoutAttrAdapter() \ No newline at end of file