From 84f7aef9170472a4aa7504640ba2f3dc356cf97e Mon Sep 17 00:00:00 2001 From: Giulio Gratta Date: Fri, 29 May 2015 14:43:43 -0700 Subject: [PATCH] Default "Course About" image Templates that display the image now check if courses specifies an image, if they don't the default image is displayed Path set in both common.py and aws.py to allow for easy overriding in one place. Addresses SOL-926 Some code provided by Davorin Sego --- lms/djangoapps/courseware/courses.py | 7 +++---- .../courseware/tests/test_module_render.py | 7 +++++-- lms/envs/aws.py | 3 +++ lms/envs/common.py | 1 + lms/static/images/pencils.jpg | Bin 0 -> 30064 bytes 5 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 lms/static/images/pencils.jpg diff --git a/lms/djangoapps/courseware/courses.py b/lms/djangoapps/courseware/courses.py index c1a51ede32..43e9b9b791 100644 --- a/lms/djangoapps/courseware/courses.py +++ b/lms/djangoapps/courseware/courses.py @@ -126,10 +126,9 @@ def course_image_url(course): url += '/' + course.course_image else: url += '/images/course_image.jpg' - elif course.course_image == '': - # if course_image is empty the url will be blank as location - # of the course_image does not exist - url = '' + elif not course.course_image: + # if course_image is empty, use the default image url from settings + url = settings.STATIC_URL + settings.DEFAULT_COURSE_ABOUT_IMAGE_URL else: loc = StaticContent.compute_location(course.id, course.course_image) url = StaticContent.serialize_asset_key_with_slash(loc) diff --git a/lms/djangoapps/courseware/tests/test_module_render.py b/lms/djangoapps/courseware/tests/test_module_render.py index ba9331fa6b..1f22edee36 100644 --- a/lms/djangoapps/courseware/tests/test_module_render.py +++ b/lms/djangoapps/courseware/tests/test_module_render.py @@ -794,16 +794,19 @@ class TestHtmlModifiers(ModuleStoreTestCase): self.assertTrue(url.startswith('/static/toy_course_dir/')) self.course.static_asset_path = "" + @override_settings(DEFAULT_COURSE_ABOUT_IMAGE_URL='test.png') + @override_settings(STATIC_URL='static/') @ddt.data(ModuleStoreEnum.Type.mongo, ModuleStoreEnum.Type.split) def test_course_image_for_split_course(self, store): """ - for split courses if course_image is empty then course_image_url will be blank + for split courses if course_image is empty then course_image_url will be + the default image url defined in settings """ self.course = CourseFactory.create(default_store=store) self.course.course_image = '' url = course_image_url(self.course) - self.assertEqual('', url) + self.assertEqual('static/test.png', url) def test_get_course_info_section(self): self.course.static_asset_path = "toy_course_dir" diff --git a/lms/envs/aws.py b/lms/envs/aws.py index ff2676cca3..221b785966 100644 --- a/lms/envs/aws.py +++ b/lms/envs/aws.py @@ -131,6 +131,9 @@ if STATIC_URL_BASE: if not STATIC_URL.endswith("/"): STATIC_URL += "/" +# DEFAULT_COURSE_ABOUT_IMAGE_URL specifies the default image to show for courses that don't provide one +DEFAULT_COURSE_ABOUT_IMAGE_URL = ENV_TOKENS.get('DEFAULT_COURSE_ABOUT_IMAGE_URL', DEFAULT_COURSE_ABOUT_IMAGE_URL) + # MEDIA_ROOT specifies the directory where user-uploaded files are stored. MEDIA_ROOT = ENV_TOKENS.get('MEDIA_ROOT', MEDIA_ROOT) MEDIA_URL = ENV_TOKENS.get('MEDIA_URL', MEDIA_URL) diff --git a/lms/envs/common.py b/lms/envs/common.py index a030bf9e51..80f42ff210 100644 --- a/lms/envs/common.py +++ b/lms/envs/common.py @@ -843,6 +843,7 @@ STATICFILES_DIRS = [ ] FAVICON_PATH = 'images/favicon.ico' +DEFAULT_COURSE_ABOUT_IMAGE_URL = 'images/pencils.jpg' # User-uploaded content MEDIA_ROOT = '/edx/var/edxapp/media/' diff --git a/lms/static/images/pencils.jpg b/lms/static/images/pencils.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ae18b862761d4575a5690e6e3b4590887a7a6dae GIT binary patch literal 30064 zcmbTd1wdR&vo5*@cXxMpcXxO90fM_*2o~G|1P|^`kRTzryF(yA@IZo-5CV6|-aG%k z=bdxkd$*aj`kU&i?&_{yJyoll$Cbw|07FSmQ4RosK!5_|4|v=`F;JA2HrLQnms3=c zg%kh)ih_#0iz^fc064pNd1%Q?Q5YB+QNT|DPyiwT2XF#_CD_wVRa;I6fFwm(X$nsW z(-Zzrx>*7sH37gptAYjv#eeAkpAaV4&BF@-KpGHkZfhG)Fa$?Hu#>Ns+Y|i^f^n=I zpD+~66ZU{82*CtT_}O2WEolfA0RRM)XaB-h|H582 zeh@tYK-$&K-^2cyoficIn2~~0P*8wE!N%9g#>0wPF?dt4i>EaInfA#rE z3cz|ATMEb^^KlCD@v(BTL5BZN`ac%_;rc&=C)@tTajE&+W+1$Y|Iq#;`yZNX5da8W zL&hfgKQyZ>0BDN@0D`su&}a$(06hW#TBrZjAH1jeV&~=MCdAI}>+8#AZv$p~8qh!K z|CQkn=l=};)gIeZdw<4`LdM3{(%Z?4;%QL9u1>Dr9u%H#mS7tS*8e(*|E~rArPjan zV9~O%wehfVfi$HDnPv7a&miV@v9|ZJcXgq#cln)FdzZQ0!n~7paU2JW&jwl1DpX5 zz!wMtUI0-*9FPp81KGeEpaiG{>VPJo4d?=TfgxZVm;n}nbzlqF1HJ%fzzy&dvXH@p zP(j!rLJ&EK7Q_tV0ttY`K(ZhekQT@gWC3~xashdRf(Lu382|!6gDMRT%nL<5-a)%0lihxRl%7iL{s)1^S z>V+DIT7=qy`T}(g4L~D9<3UqGvqB3%OGB$e8$sJbdq9Uk$3ka77eUuScR&wA&qHrP zpFsbBfrG(@p@3n95r$EK(S-rSxWk0N#KUC6RKT>t48Y98Y{Q(vJiwyDlE5;<3c)JE z8o)k-^@WXs&44X~ZGjzxU4-3(y@7*+!-J!TN-U~hoJ`27Ez6X8|eh>aT0x|+Q0vCcDf)RoXLKs2@LKVV$ggJx* zgrA5Qh_r}8i0X*ei2jI4h$V;}h|`FBh(D1qk?4^`k#vw8kX|5VBGn-cB7H=_^R^ujq*AwCIxPX6OOv8R*UE)95D{h!}Jj(ioN) zAs9Ir?=Y4zt}(GOIWg5SoiXDvt1w3~53%5}=&)q5tg#}nin02!K4U{;Q)5eGgR#T0 zORxvA_i*5F=y4Qr9B|@rYH_A;&Tz4Cd2sb`{cv+|yK%Shpz-MN6!Dz!lJJ`FmhkTI zN%1A|ZSZ68>+t9BZwZJABnWH>VhQRA776YMDF|f=9SKti+Xy#^V2GHAG>LqP@`(nC zPKa@cg^9t$vBXWpYa~!4Oe9()fh5Hw6C~H9WTf(>ZlqbH{iG*kcw`b}4rFO$@5zqH zvB|~A?a9-~d&rL|a494yoG3CW1}M%bNhlR4y(tSRrzn3?(NpPCg;CX0ZBQdo3sBoq zr&0G&pV5%hsL}+{RMV`{BGL-b+R?tI9j3jdqo>oSdr8+ucSuh_uSg$2Urqm!0hK|V z!JVOqVSy2jQGn5rF^_SE35toA$&M+9X_^^|nUC3?Igfdk1(rpS#f7DaWtkO)Rg%?* zwVHLC4UbKQEsU*=?JGMCyAgW|`!M?h2QP;cM+wI|Cl;p?XBcM(=LHuN7nm!DYk?b; zTaNoVcRTkv4>OMqPd?8IFE+0#?@Qi3-d}wDd>(vtd`J8={1*JV{L2D30vZDG0waR3 zf>MId1-k@)2=NJd2{j3Q6J`~56s{6J6rmTf5h)S*EJ`J6DOxDHB}O4;Ayy!^B~B@B zDPAPLBS9@;Em0vlCKV5r4pk^s zCDm7|AJu5pT-4gs0d+<7SLz!Y^cwCOotki(8k#wp`&yh@L0ZGw*xKgWRoXW?QaVXG z>$(iO-nxBy=z1o4m3p`OGWx0dTL$a~!3N`oM27Z;?MCoMdPZeN*T%BO>Bf5|ye3g5 zOQ!Uuex{>lL}pHA-R9`#mgdbCuon6jRTlS_>Xt>8*H(&FxmIUjY4B_C7i$UYH0vW9 zQJYko16xtsRNKR6qR(DEJF*kE%dk7Km$uKgKX*`Yc;j&EsP0(q_~@kXRPT)7Y~lRQ z1C7xL)oLu6Xa>?+3tk{ai%7`8N4ICw|&HXa(uq~ z>iIVNVfwlFP53kU$M_!v$OV)J!UTc?`+_KgUIc9iO9mH)fI_T7`kqrik9fWpDj!<$ z0_lb0i^(vKu+*@taQ*O(2-1kqh|iJok=0RXQ65ptFNI&eiH3=`kDiL*j>(F7h_#L# zi{psPh`Wym$B!j&CS)c&CfX)WCGjQYC&MMXBrm0ir&Oe3rUs;bex>@VHH{)IHtj0i zJbg5SC*#d)q}SfBw=z{S+p}o0lC$o!?Xnkhq;l$WNpfRyZ}Y74=JF-->)w#QiFchY;L_Yv3!DwxzD_Bz2BgJ zVL)?WYEXG_WJqqPe^_$3XGCjdva%Ovk)%M{;K>oos#`;6dB z$E?Wg`#JHs-g%k%p#{Z-@kO=8*(Kejm1UFVtrhE)!&Rr%^EIEfpX;F?VL!%hU~FV; zl57@zV*FIU#kbYHEweqbqrJ2K8T|RnuIKLkUc^4?e#Qa$LFFOWVb_t|(af>&@!l7= zFF#MBPBBk&zcPG%`%U88#F@d_-nqy5<3;=>;br+1&sE>G#`Wfn^UcrO*zbhjD}D(4 z7{1fLJNW5)4}YKei}6>-gYv`2N9V`K$8D%=SwDMQ08mv0m>}K&0)PlYhr|#7B!&Qh z01(D+j1Iw}AS?hHl7pVS3=k2-Z}`jKNCpxA!I>b2zj+`vfH;54KKbJXAgrNr7u1&$m!6EZRe~Ns5do;guc|}zX3NAJQHck$Ji-VI_ zh=W&%OOS$-M~IVKh=&INNW-%K(F2MqEbk9yil+KoCy4gZ^nYQ{6##Ky0C-3XFdSUm z9LdoC=m*7>4D$!erGWn80YO0nsUV1_^jjk+qg1Fr^;@OF{GmIf!v3Lqq{9E*E@Y%q z5&y;*5RCMPCm=QXcU#b0kVqvpjM z+-$BM&)6YRpddR37dsahD};m9)8EC*(vQ`}llrep{;5X>5(0bJyZsIop6a!|DKEJ?&io2hl&pzsKf}YLJ#iAcG_%?O|i-Wg`Q* z#GY)#$|1nY!L9R;-9*^`3(tR){w=NQYHe@p|Bo~;D+eztm!Qr+&)#3s|Kj;C(!bkw z_0Vy3brSp6WBjj1|1SKO+@J0UJ+=Cm_SXNs>i<3K-*t(wKiT46w)xBOzo`(*iy=X@ z_-7W0Aw8}`rYh7^0zKWJAs=Ws7-&d>hlPcKLx4v_K!8U;Ktw`CMnpnELO?)9M@B(K zLqkVHM8?3xK*NM!w5LiS>&0&=7#MgoL;o_nfIHA4G>8g-!UREMf*uC| zQpj@w|MXhuPl7ZA0}BTaARt1DNg!)8?Eh8_13(xcGki!+=xZvf~MIyNN@Pdp5dpw9@1gxkTNXh%KOH4tkW6bMobNhY_vqCwL!97_3G&T zIQt=H#AeW$G|FW-^w}-7IP&x46Yn>zOXM%JpKnZ>Y&8fm2DxNmWrZ!gWOgieBL?u~ zx#ZM8(kaJ7WtMR?C;8GK3gBeZQtA1XlwrgTU`giEtO+VO)Fu|K9SQE+dS@9AlXyFn z*Uv(2jSom%VbxqY0G+3?oE#fJKtD>)eEVz%x^$hYE$ zXg28}%0ZU6>j{56@u9}h%X+ue{g)AO8_IFdJf7<(MON_h&nexGk6;yFg^QnkC)g}3 z_?&ATP`>$`;1_eK`Yerg(!NlZX5%NspJ?<;N94=_H3~RGBtHQe!)PWC8O+_$l0#~N z?>_|m89EZXqHlhTx!OsK)Ig;iXWDWPETc>Huc|T%;`z&K+IQmF3gVWHi_K4$@LlPJ z8H5NpeyLi-^LM~s(A9DXbet>`U@Jn3-Zyp$zby$&Semd~B@c!^;O5vEknw{%JVTg_ zrQ(()JCNR3=IC(nXK&y)8B#y^no&#WkbF(%VRuThOie)0yNiA>j4K_)gsAKJzI5`F z&L|G`C{|UR!iQK@dIS%S6e9swVnXgzh#Mb?GjL_oLp~-k&=+W2B{vzE{*V z!3OEwOJ!F5_n*Ak2{!MKHZFootPh>RKj$0GF6)Y?yF{@20)f7dAQPyUBJ151V-V&exXYRw3(GpgiN*q^a#4J5q##M*drVRP`3o zoQwM71JQ+`(T}aj-^|nd3cbc$^hHX-pN%%fI10_-^~p~S>I=}It6}6g5SAsq@f`P_ z+ejg)9uph-Af=a!y5Pbu51n=5y|Hp2Y^z;;8O-YO!s)%!nAnDL)2-#QKX8oija@2*}RlI3zk)l%;|1)CDKE;DhrrePjGbXztUd0se zhYdjwL*Q%JsABp>|4mq@eIC9TdBK;M@Ag~sBgYWeMxS9dV|!8C2h7Oq-#8;Pe{HVj z`H~lWQzbIr`HkzY9b6uwa4wfsfikL_n3_Gsf_BVm<-n;;C1#?cGO@fFKiMl}3w$SnnhXGRt*OmOpFUJ#LoZV%`Ej z^Q64R`-rC6R#-l+5g4`7H_j1c(@eKzLg;YuL1=ZRS#|2E+U6yf>b!bU__|ZYes04N zb~R;;MIX_2X=S7=?OKE0u93pjpFmS~#qw;wL0l z$I523m{&%5ccQ!$(=U=#%UsDn)SalvA+0+INnW`;^*`l(ZGTCZ_+Fc%u#gfrzchA* zlQnQaxORWi;MHYoQ=0Ube2^H2Dvj(&UYN_;kn=k-pK~))sgo0W)(H9f&ahT8?%{CS zGMYLhG^N?%!xyQ>qPRs4%J55G@V@r?yJd2DaL9s03KC_`$crvA$2~cv1ft_h$+bvY zji?MD`?1|>GtSQa^U>k`04**NYF}wi?sumiG@UK<>X&02Xw`i%9oH)<=K57y0dbze zV3xVA`GPB&1(Zi1eyUIMTT{>#7MIZ#lcwS-UtF`=OY+no+#g%v#bQdxS44!5)&<`! ztmgUZER+NDw}|t|g&#{dT61*s83gSZ%B9X2N{I!@r0_gQ<~mVEl8ZNMZCd=amh0qp zEnO8CadP@^whW}Xo0X*V78};(nodmFa|YDAwM);v)`XG@gnlVa>)}dCE6MDeo9ogv z#;F}Cw7ZuEP))11egAkG+Vn~HYXI)~w6Goo8vz3WD0f7!%I z?z_FQl6>;E*q!&!oZ!B2y%+Y$nGg6zZb@;!{$6F2zjlWj!SK+bs$B0Rz2I9|R95|d z3cRVAII@=3wRGntO#s#xscydsHV;m%=aT2AIc!P6`5T=XgA0>6BR{v6W0v^b9W#7O zr<;PBT5zNZ7C+K6u1$TVv9+LbP@>AlOs&AJp|dRo>&6bY)}jV>tOq2Qbro`y@7)aR zOgDBXe}xTtm`-$NTa~%PJ^j{r4r7fg)|OKco~EI)E@ZpV5}h7b#Y;3<)j){bahlzh z;Z4V-M~|##^jWRdv&?n*{*&zah|#{qL3e$s#p*h_))Z%< zq|Lr|LwbWKnKB~9vml`nANz5#P|UW(o39kkVe1yJt5ikWSi@|tsT<{63}wofGT*Tm ziZ*8g@=H+^>Jl5tTuwH+( z9F>uBH!3@xx*rFT6*5J1aaZrz?21xkN@x|j&$3D!=$#c9sktj28Ia9sH-kp zWRJIiP-G%-w{nVL&y&msPFQ{ChwTA5)N0ii4|4Owo?^%6hi|Z=WvCYR%Wu#E(jRiL z^WMuGbsPL-vpG>&FW*NM(oM7Q;%B+hq_?!ZRoca5l0Ryt|7s(W`v|Diu5~lS)b;c^(AneB-6FkY*bru#;p&zo zNIbnYXx``#wQh068(4>v4RmmRoz&6%2%JBxGWUxwh|LKO&b}dy(3HgqLVlH>$HZM( za})S(B=3~v)M3m;6IV_3D7qk(`I=l)oa(Edhs$Rx#To-P%;stJ9EakYL*CJIL_!}l ztmg}8iwdpQ%dN*OoRU{jpqu=pY?{^it& zwzc=xrKEE{mV6F}w2yyLO1+b%;d0ifGX;~xoXh-E0Tyy4HS=Fh3?S?h>ec?i^ zzZy(1q_!bADEcdh*?(e_{ny*0Oe3|<3=-~|(yKtL?A+LWv1f9}e3Xr{btyq_EtL(s=!Sn(4RH*FxD5kg+yqn42pO&0vkcyt`LN~GQ1p&6p!NiXTWQ=a2)S%z2Q6pj2^-N*d}ijFHo4lc z1n-21Mhy>=lk6Kdz9x-)Mj7zA zr-_gzb_#C3NtE$}`|%jtgjK@^d+b0Tu)JJP`aR@ciLn>2XyER|!&?q+6x)B-y-GCt z&YT$Ml^I3{)x`*1OK&UPT9o=O@gqR|s%)KLm34aHW6n!?YhwK>+H&r_hntfg=tp4s zFsoLb67wa=e;*=)YMP^EkmK|t`DWO0ykQ7Ey_+Mpqu@jx#)p8f4ilc{P#3H!ZVmif4? z$MAP5IA1|G&m=rv4^v{VneW*Lp&kNEKiE2#T_MZ%uVnqh2qT=7u(G<6$nz|g3>Fu< zK&1?}7Wcc+74WgaQC3m0+DS??z2V}1eyaTv~=BX;a`aQTd;<9%fiw1H_!7Bg6ql}%U@Dx-2SR%Wo2V%wm&;j#16}s>a}%I z93GpV{b5-7-e4=rr1NyOHW6g(C_c37ez`O_hJhyZ8`qQCb#ED z6pG1hNq`qiP);f%#o@h^!|wqbnxU{mjVyFSj$QU%b;jc59ieo7XdGV9@93v@8#^k0 zF0c}}xl7PZ=|SthiXvGEhgDQ}pg6lBbmE8dmD0>;`NjFK4ukCX4wd5kfFW7Q5Ewl0 z%so%iWr(U~@=dwP5AmM_k&YEjf(UntQ>5}NrwOkwOrlXz-o^9knZ70@rit!gpilq6 z)jg4y(~aL(^NZUSad%)E+Z=jFyS*a>+C+X%-9vAvq#4J#b0O`R>k%-Tq-;*^ao>!p z=cpB^V?|E=s^Nh8l|Y+fHI9@gwp?|ZqW@|aL*(6NBZ#m5i3LDWb@ThrDdWdgEh-A|GwKae|2r!Xcx6 z^0YLb!9Z#pALgsFfa_c{tU7emS3Syvu@T^=_MZYqw!|BhN&_y3egrYbXY_3}W+i#? zc%I$`&JRss-L79hUEJAyDex=mm>Z0l6?pl$B9MgY+$%#{gi7Z%2M+Dzmblsx^D~^j zy-IG9R_;~x+ombNU$fJ)27?2_Yu;339w-j?oWRZ)(hp`qe$fl|-f#4M3S6cvj!z8K zuhSa@v$vWhlpVAcb5@hT9NbCDg<@NG)htb^hc$4R+3%;x-;PUVlO3JstqLl^h}+P_ zvHGT?&X~QC0}s(B_5|-98VM6;MVnIhym{g{nB$hnPw0$JcPB!D`{^fh&9hU?W8pr< z?lr}2R^6Gcz98#sX>$cs7$`@QTdywXxXQ=~S_B0?w3qKPY^BZl^Iy}a4+^-D50k8) zE&H-BTRh*Jy`asnw?4|A<&$F=d|!~r>070!$8~dprJVP<2Nf#^ld+)?D=N1sJ5SI` zSG~+}V8#7>h!9!|vtVkZsIy4B1f*=ut8DR3k*dW#h41vpMHx*b3UlxSt39a2OpyK+ zavTmb{<(Tf39E1Hrz*i#p~Tfk0O!+mj9AAb5FH}@?W?{E^Ob2?=K{~3XC<_5&B;X; zeYWWtxFH^D6X7o(-au&v1Z8VYl_sYiRIlRo z5|_N8wyGtlmbRL{IGujoS1af|8Cwi1AQ(!{m8$k&58L{-pbKik;L=1~jOOl3i1^+4 zBT(6&?bLT^l#$%Ph2RT+?BJ6(7kfyX5p8JL^ zZ3%nt8_Ralrf$4h^^!#_Q-fjak=YWfAGlGyg;vCq!XnOowldp@Z1;d(A+o6N+2wrB z&_2W6@dHP<2?9e4k06fxGt@Q{NpZPY%(NA4OHJLtMJJkzDpLVmClyYFFD(V~E1aM! zXJ_m!CC^Spwut6aFt{@5ctR`@ zX9E|2k-!^gE(iG`Vn{Q|y=K`c&4Sp{yT*C^TeiZss!LRByYCIA)Q^%OOC4SrC(JsA zN_6|&(%Tf_HS1wGLi5S*^Y>{<=WUy4XBg3EJF#x^%}P#+$qaTQm&ORUM45Pz=J>=o z-q{N)$yU(EYqVIcF=`&3S7mw1{QkCc@1Dmw83o5s#VMdtV36Tfi4C+*2!ow8c;it_ zG!Y`1ayDhIE=w)9I7Hf$ddPn;kbicl{XWJJp{b_kLBsSthRnet-AS0JsA!1p0~BV# zVtq~eTP1gs6px@-`-Ns_RdGy@n~0|O{?u^_Fz^X1fhURygM57Q2zDrE3`J!(Ih(Rn znbq_T?Cw7pLX_ZV7WL25l*C{K%Bcc-6TlFyXI5q$=9ZTsPC6}Cj9NgdF3Yi^&W#t# zM{Uu$_k8w1=-I8nz487l@&qTRM2e-TB1~Bvo%i#wR4Ga|3=iM#ik`nB3ue_t56}4N zAuEUzyf#4ew&glxX_h&aO{PdYza&dpC_~q3uGwDjYs#ssZ3}4Y$*?i(-b|=qumymQ z6|JVG#kdeF%hZr{%VZuRa%Xs|aqHpRoROlYCUXmN{Ia$N8Pph=azQawMtUuk(j2A1 zQro#}h5bgj0ukz%IdQ^hox>>Jni=SUqF4{cWA7*3=z>30K~xKrKQ;dJpsZ;nHn=S) zC?*#p^4v_k9(`4Q73UGK4=z>Lu4Z_UD=YjQ3!RR^OTLDGgae5#w11V~q$`x^iRRp* zHJEL zhZ&W-lq)S<>}*E~j%cHe0z)oU2H@Ys4wOtQ0ThYSXU^7bwIG-xzM&%_(DJKR`1)y8$=x?fbvg%~Gq44i%`XVNnL&@Jn zluP4zVGYIgmaXyxcaO0q^_JE}yTP?mtctQ3cD^L*W3C1&39LMIN$kkrb&N<*UKiX^ zJ9ff+jexF@TTSWE_bv>h;OK45X0UX>a++%5t0at;r?osF)@qS;t45@2i~4PsBR)@9)Z|muSV^a zi#_lKT>BZ0hB|X2SdmFjQITHFXQeW{xPq7CD+!$Hw>FsP%GA2BEbe3buWh$JIhtQ; z%JWKJh_E-uJi|)JhpqoA8f$~Qdn~G>Bd>@Vm~`|jY@RMAk!!LuZ~FT$oH=RjR!TJ@ zIyXx`gUHxHqmSk4*xFTQ!3?SX%!!!P9bTsh6XwlQ7$c8>rp8e#?K@Ao<1wF|n{RFI54tMT6`3Qa(-D){eU{J3fBvZA(;Fuv z^)>Ll`1HVpDz86p%elazBrH7lTyywL%i($+#b~Md{2l!rtgpx(^?1@d!<@RBgsoz2 z*2PyP3At&xV zMbqV4H&12A5Ovg)nJqPpSqX`(M5k!(4cR74XdbuG8{HKa+jMyaLE*AKC=?J}H3bG@ zt*S#&K}O{b$exIp(vF6`QI6CnVq~3Iuk)PR5)R2Mcp+8r>*%mYu7;${`a7d3wQU{l z<23ov#SC>NXXd;wjA^}Lo&j>oCZSyy^bBdg98zbLjIGN2a{FwB_@TMnW2 zdL4xt7WA5*;hjwfEUX&K9@`u})0<5k&2uLTO41Cb5m*}=YbX@W0TU;@oRSW0kGH3y z4T(7JRk6`_pQof+x+ft?+sNDvXk9jTg8aSNA5vB$5fHE_;hFKf5%;8VD+;L4}#_}|i z-T5?Ra}$kUh}Znm3wyq8#}V zcdo*!bBYH0-z9OunBe?^ykM(nZy(>Q*;!F@5F|LTH)m(a^*Hmt%%#RkWDa{>O{#95 zlGT3w+00RH;~aL0*P%c6mMLJ`v&v9{io{1PK#DAfzh}wo4+rOu1lJ^JJ``W(8o%77bNAU#np8NH87wEu_4M>I zvo#$49xljOK<-7*z5`R^h2e3;LkF9UIOZ3$<5o607IJ8po&P+3K)%19V6iObh&&~-0h~Cn8=aQbfkT%U$ec8VM ztZmxYjbR0~Y@xpfdj;OgX)RDA9zU1^R>Nwjt>6;E4?|tkWWPiVo z@QceOe)RWWZ}NHrTUf{QJ3|g{YNaI^c98W1i?%zOr}xn-GTcqme7zn4{}|bO$w51D z@`;IfrOvmdk}G*)A?4?3+10zLiImP>RfmGomQf>4kk570iW8kfAgs$=7r(t35yQFk zM!{J>aZ1ir-dPr5_u9o5mXXGFEikuZMP}s&xavj+uR3x}MEd?-W~V&TlI+~Q`s1cd z1NkqH3^z5<5a;0c3?ju}pISTa6Cn}Jw@-{Wo-Z|v4JK{#jbO=_wK19N(|IGv!hjsX z>%0wD(WN&EPLUIiFnn3{7Fq!^L$>ML0llWW{VsWw9+qI_A-@}C4_PbG(z1>Tmf&xd zN5ZS05N;!C-hR#ylgc4;%jZn*;|^a45(AG6SR4}g-#BAieW{rv4yN?j2-GXLH^UUQ z0x#v+UYjMas4QV4#?NL8AF;mY_RmynMhBgq^DAx?q2lp1`(yolh=>_@H_N(by}jhx zTXX+%04FoEX0A)ttO03`n9{yx$q^!*FB+=c#Jfwk<)1Y<&G@qa5eOL_L51P`Jkdt= z?sesG7PT_UmLTPK8*?u-xnMGy zGFL2Z8l3yQ>;;AodL+*XJoIlT^vMUsq~wIbzTc>@Gx1>l)Tz5ms z;SlNtA&y4}v%?r}>8c8Itx}K9ydccX7rOnUq75B6S>-61NGhH584p+$^r~3g4r^6z zk{P69PZ`H58e@tFChe^xszmS_`-ulF#sYF3-e@nr6pp@}tU!B~H;_$>GD`s!~s>Jr}uJ|{rr|#5!bOfHOs(BHj#j}blTv4O^nV6 zBh?~rm&`(;bP=aJoT_X#{6bW86|A5Q#S4k*x(oM(xbk*X+{IZzm4hO3e}a{wAiNZ` zxM!Bvj7A#nxLPvxI517w9W$n~b*73Kl{t#oV3+JAEu|{UIVqPDfA;jN3}W!`23cF#-z?_yzbUDt9=)`%!9^|7Rhk{*OW{A#ove zrsOg1ut_|Q?TV&?{H2y}oh_bYkHSeh=3$50ESQ)H8xw7J3=0L9;(9hUHGQo+&XL;C z)iaVXidM@jr@*EffWlTCsA{#vV2Asvk-5U+bdTW{x|#(0#iBL31A1HpDFhjhX7p=k zs_?jm%plSB2iqp3w36t)EsEYU^*>y(G4weuz>dbEkO zYkrLlM?q$+!eOiHxQJJ9|F9iV#x9dFXJM|C=g^&m=%b7%w#Zk!!V@g0E_^vl65m40 zwNImp#R^}9#Mnecc5pahNACekSKM`)rPC*<}#s_@+%W`c>iYEz+1R^%{c(N&-gzKXb zz_Ig;N?A}0QY&DK0Oj=!zf*gZ+7YzxjO})p8q`)Kq=oaT7Tvhbv;&}ta?X_=l>zkK z?Y8Md?5tToyI?~2hvHw>>N6pZb3)4a*u=!Aav_!e9>zruQA*+`4_tJ!@sTaP(}yoM zUDG9zPhpAhP@5uSqNrO!eHDAY-!Ff2viqSUdHmvzy1ApHqfk0VqRVM@r?`vT9$R%R z$dDBHmIPZzT(*oDu{|hokHN88`B8iA#{M}jw@u4i1y>@a^*-V?+aO)nG*|ftlk#tG zj+Qs<#rEj>X%Q_y{i}R=Y8_KQOP3_ZRwns;e`o5 zpAC;HXrT42&I%k$;48eM+=-f_o9>S#GOp~~-TltCxu^(BPK>x_zo8y_UPVsZLJH{t z!d7Rq><0yR=7A#APdIRB4%n^?R*rKPNWm0c`U&Tm#QB6HBb?bRwbyf!P7W%* z(5b4jnbaBeQenQYOcZ|^_<#u({;2*;rKZ#diFsmW8Jena#{$%~USx7aFVX87y!STt zv_uw*@J=-~Fx+=FpB{+%tEw`{w$tE^}7Y@D7eH_5f`Mw$1g5TmitSC*Q|$|hn>UU&qd(UW_8z26(h~~*(dyYC-)<>dN!RH z#fuT#i7KW&wNjYZyqzfb80;H}jU*e^o)SK|YJFR@MF%!*~5!xNX)$aA0qv2lx?(P9FW$Kc%PNvm+ZNRXjL3!(MZ?YPy^mz@sA?B7<&8thg1R7n?!&{_vo z&RkW!d(bsnpo_;bj?^!C)1_^VA)*0pCL~1X9aWtZ+Y=to?x@t4560-{@qHV~Pk6(p z`7|7l^ufIPvJ#|U#ZT{E`)IKOUCafr2s5S?O5;}qwu~H@6v?*N)5FMrJwaVA3 zdRb}CQgR*)Nwj^K{p|A})n$-4|}>k|>p< zdik;{8kMi1ce&2T4mJZxmnL--q4w`JHgw27IK)wA*Q!@)Bk2*2Af}O>g+ezn*-<8+ z&{y`4T-#x6NVKb>F3MH=EKe-rHB{!;WyBO5AQb>7FGeVnzg$j@B}iGK4%)bad9~nu zYbh9Buxdd!(VA1dw57wy(bzCubOm?tnvq(nF7WGwo`#X;rFUl>F8XBRKY*_6KyAcG+O9)_eQ zNGTBheE@zNYl>W-7qdl1*d?VLB4f6|Vk$z`_VeLqQdWLU*wZX0cF(LSZg?cmMB520 zIfRhLCrCJ4qEjt~!pfqQdgx3sqJ?+E-_7hfIZHFsr`X+TDkGCLE7fFSviu_G%NiMp zd4LzeNI^`Ah{<2~D`UIZy?M~>drw-i%@g)OUQlLGwI)+r5P zt0J>%*o2b31-2Ja^DH?>)YQ3hX0AMugnTOb!TIX%kR*Hr$XA-3#7o%@%T$Qa)u-ST zN_^EI=POBf69s9)oe}m6b7uxv%C8 zjdfj#$aYaQ*R$@{(Fabd{D?lg-1cnkuEu^?8m&o9%rsxInEMYE$_+heh%IuGRiwqi z9u_*^vc1%_hH+%>&t@DIc|3QrRSY>j4rN@;{OSq7P)@#v+}{=0XV)WKsdDHx6|Jnx zB&JRRReo{{H5RLur@l+aB+^Mi>$FkzAxtdJms^slV6&>yvCpt3R@`ehx-WlDEfrYO z6BgNr{jf^>3#m%T`SlT6t2z19JRlrp_PI!PlnYw+(-mKd-LXcY-`SAh`9RnskT@EK z3di4fFQ@Tg%c47`im=@(hGXS8fQdHyYpuTYO zEYmLEb)u+{v_2`(9^Y{xkQA#iDS*I-?&PKG2N})Qwi}Ls=bxh$-WgeitpCEwKfNP< z{Rot2yRLH74t_Vh!&Z{vUDLQ_{=qEv-N3JRNebZYBKCU(ZvD{6SF*T=V9>7|7b#U3gHqE?HNkuYIQ7e`XMI-iM#wS6ryq z?~$MxQCkLWyBWIh`lT*TGqvbo#1-5AJ=421fhiTC;){XddxnTNDRiSJg_I|x(P!Wi z&cXGbNb!^#{GJzQAuOER$Oq!L2*Gcp@ypHayn7gtKorg1s3!Y({w?(n-)2^JOuQIY+Ggrz-Wt;%E6X8GHx@P;@P1|f zmMv-fGA!MY(!;^|JFc@ezEr=oSi?tLKBmhpIaH-Z?vL_PT7eutN4^z6oI~c}*;iC0 zm%&)I?_W-!jju^HB74ohm+_I05GBHwtr~c5NT@=uzw&x6xpusKeEbX%KS_rv`wp}6 zbV_8)LXBxnQXdt|*e23|upA4ie8h2O6F&KnqSrtvjYeA$+4^${PlCgz81do*GU+-j zULTHVd*G=?+lfskWD6W9sNLG?408QdOv_E!x##(mT)ZjVN(q-C5!S;i z3g2y`SWkV&uw;rG$-<~P3Ebv!(oa*Uyp~_GM?C^5i8&>6@_oxcP-|X=Y79U8G^=;g!TDf$Lu;)uDI0 zD&qYP)2G^veq?%L{Q<)`oOxuO;xyTu48`43qXxP%Qc4<^H?8X}dhz5(0Qn~!zj)FO0|9%_5psPz5@x^)TfB@0 z3-iL0_8ZpROJjD`vY1<8(ub<&iPIe{ynG!}Cm@>_PBt0mG}Mv>g0AGazc8w4`Y6SU zTh@=}_hPhmFllIto3xTFuT0<%jZysiduxTF+@cI_f;u7AroSaTN?#6_&Z6Cfr7~46;#o9&5fEJ-EWHlBuC5p|@Es0o3cVehKT`GV4g<%V zK&3n-+2u`|$|C>=IlqiZ|Ahvj*!&Acii#pe1gDg5Tk4ncGZx~R9VtB*k({_lW^B~w z7LZe(6BU2^yM;bvYBZP^{kaTrp{-}l5Yhk1Ek$PL+j6NNMSgL696mN@74_kWK{&5lIj4?|-iAoaaNV zy`Q!2wJipl*yimnn`>*US;m@9-`tGo-{8O5BZVj`4E)Hnc=AC+ZbO47PndY2sEHGG zPxQF>t012kS6uU$r)@^2{a)JKrjzG+`%Ej0s^)0SMq|}6KWv{@oO)6c=sAJ!Y0iv^ z-y&4f%6Aen&(l=;TXt1yW;2=Rj{Q3d3{#0Dcng32R=02tr(kZ7}pER4R z{!Jxdl+ijN+=^+kB5)7vkT@5&d{EDJ%3NcxSSq^j+iSGJVGI9LViu}@mg({nS$r{`3QCOrS4SASG-o%@QmiflH=Up#z>=d zA>q)|8(|%oQbFdE=L$%9x98^qzM*ID1D_QUrBLz`6q(J3_tigS`J6j6(M8B)i3z?% zCiC}Y@^QR1-LawWV~=c89-sUz@pBtCdE2!F5 zu5_krKGs1Yhe~kjt<4K}Go!oNYIHBeKFd^`772aX$->@E zxBhM*dVdq7-w2Y~ThBNGWQ$9jJL;DiZkUgDlz)J$HqLrJ{To(`3x$;|{+2K+`||F& zy_bINQurdjIv4M~i1bdb`sfm@h%E-Xn(DdK)~=>{bqbA5-~4E+tuOq|*XH>%E#dU| zD`t9ze1%x=bw**mjJY6AXa4mf8O4&s5;nq)WZl2r3Mc#=_x#8 zJjMKt{7GNIJ~F6yg83VyzMxl9Q3rp+;itL3NKhiD!9dKyhjP@MT0`hp%h^=@uv#Vq z8Va1g4dg$IBZz2w>f|0lu7Tk!p^?u zkan%g4acGf;sjU=x6n^SCAeN`Tmqu z<&+I*p^mBjBv?}Xotyk*>EsS5Zt!?7-!g*8$$eGK%OMCJx5-^{-NppIgveYPjXFnr*)qTNn8S~s z;%iy@^MP@HIXNj{Ed%Gc{-*+xV6Keg7B)*S)lAXP$2%$PGh-0nhO75tz+r0?c1 z)JhCj?rf49BUpG~AHO#dsq5fZ8;h$qB#^A^X?tL4TimQl$sGeD$OILL^y2!a$uXa~ z%jf%xwt!(ARk%012g)ETd=qU(FOuMM zFH11MKwmEAy-IBt*MP1nopjlAyc(t~#mR$>U(!EiW7nkh;-}W{s{RT+;8k;K?gV&& zIafjNQ$t;}HMwxf2(NJVp1O2?RaVwye?m{gXh}~m;*Z?wrg6PsO4!ap#wM)@?A&Qjoed=ub$n04T3M&m zP2;ec{Pdm0pT~%egR<&X`5LoBGRF{0|MsV*mK0al>!IdCqCkbWaF;v&UmP;c=rE=~ zbbnl42D~>Os%m4qY227$iKg6c;7h1X^kHc26aDG&S2EyD*XX@ZK!6RwC#rpUBYaug zFOOgC|Mh+USK$ZsFB1!Z;17*cllJmA-BDfxRw%m+3%NpIjn-cTXS~`y7sn)+95Ls?dD_YAtw0n;Vi=&~>p9B3@f*>jj z)q&T~KBZaOi|a4oSV8%n#jozi)q20}POiPsg2AgVA(_L8s4c??nAG9!_*245!`?pdO|UQE2(YsC{B; zm}}0{;;(FvoPc2xtH65(W6zao&VIS8CmTCRNGBv@EPa`E@K%wuiLm?ocR??dAydqH>YYj!FO%mMFuaJdru_^GLNg!N zAd`EG%*gTa5|_4Lj<~ac>Nn^f1)fLX-~=N^OE4m`H7$@xMT8SqrtCcRs>Z zQr?g$Xr%m!!5!^7g3GE43|62K6EIPg(}~~R219rpP1YQoXMEWQK#M$soNvW~fA`W( zh)a8&Ht~Ku|2>GSNbld*NP6K!O@DB9d=FG2xb6sT;hCWGbGh>#*uY4Xe+_Q3JRzQf z&Jgah%Na2d3i`uKLP+c+fcj&MqWPA9(dN*@!J>c=qqo{B<=@40m#u=04oxIJi@dCli$0}C#>7Djr85*&~IL> zyZVMZ_Xpu-8ew3%wH9vuP5YrOeqUlz+gkq9td14aORZKuqjo;QUBcTG+OueUH9@2< z_0Tw8drXG2PWs^%3pVlVlyttZg`!Ha7?(_zy83Q*S)fLj#U;#3^_K9aGmTGm+7pczm%_q$jq`Ndsg3-Ls)Uwn>l zh;G`_nnQ|SN(3>>#EtG7D-zS<#~|My%OzuA80#DQ2h&*4kyrn#+Xp*6(AqoMO*w{0 zZ9m&zBHg!o4fJsf0i0Vaed}%uvj=h4r1HZRDy{q;gjDzq;}8D;4ZDU!yv_HI1c*n9 zBf$R~KwNXP+XLKT(i`;@yHu9PLl#AgW8FQbdR79C{^&M09WnB6@6Kh64&d;)bp$k|=?ww;9K z7N|KA$qWbtu2}USU65yNAhje@gl~=FOiXX(~m^3))iZjl~A#TQ{*`rv| zHgsT~Rmd97Z`>>mp#On%;oMCd@OTw-$+JvToJD;^9MP|$ZvW0&^OM=owNqX?{)%P- z20+uS3ler|0QGh_`yhK5Bt!-iVj0<;s79;^H_)Qg1^@-kBN1iLKrLezhf|Mktt@zu zm9y2Cp` z<;_Uy+4KFp5&9){`OQ23h@;YWjo6otyU6y+jWP|yiQ3h}3BJnTge>k;Qxy}qWzHk! z0>^vXcZsKK!*}zrDVb?eYaD_s6E?21I7d~WJ>7^K(KdzW5K5dY@-Of$k#Io?3OGyv z=e={*e!*fhc1OS){~igtK@No{2xSJiQsnp&#NGT+R#QUp%0M`k|SryW?K<)7)@+bWD z*ey+aP2a*pK=pY1l{7e|_P^e@5Xq|?^#i^wacWU;9`O?k{M?d=k`MNKW5_BX^+mz? zf~C>bwasl0^W{4mX4BjO^dbe5ALI0iROkqY$##CSAN4A>uaXJ>le);X-8V*|X^0%r z>AaaMjJRI1PuM8N#exH#z&0ZS@wLt2Na#Unj)lj_W0B4oufwbk@ClgXQrFx}UZ)4a zf%H`Dj^a($!Cnt#ZG3Gno-9_X5PR=FRo6qy>H6{P`fbifsk2E4BCfS^)Jai{d4f8* z*QKsNwOw7_g^gWAJ;j-PX_|k^#jY#u5c9t4jh~r8HOXG>?xvSkumgo%a z8g0T-Ysmq|=I?|BTtU)zmm4@I5EGMGNJLFzirW@($JedelYaocPP^&z*Jfnq(W_q1 z)!7%F(F>(v39gt_Yk7l}X9>>aBf>uN^^^A}e3+*3Y0Vr64#by@4|B% zKQ3)i56?|!B*KyqF0FyN(LQ37HMvzMJj!piE#*E8KxhP-&}|(|N>Eydx3rq2b=q?n z^KBuYKf)eLNwwF;ZSu}t=P;xJ*>=ezllG|!fH>#W;<8L@Ki|BVxdZk*s}_`MNIb_J zom`v~Ru!n02urMA6`q_NB4|Cr!*^hc51;?|!UuDiI$463R)osx4(NT81<8_%A-Bf7 z31%13HurNF&JL;(7MW}Os4elGNHvHTtO6B@ zQ)QIA$yQ(dewfcL8!Cr&!qkRdDeMJg>I6CExA3MI#b@FJOscKi-BSJZq?2C z*<39B{_AKBzM@@EGke-k&lssaO++W!stT8qSh{Eol23=A?{WPl!qShe>E08qEN_9B z=^dk`T{x}iVp=WJPw3U*JtvS!1Zv z%3iDQ?}xovHG;k{)o=ZR5kAU zOnx#BHmM^|{;cUZGw|Y;cyqK$uU9TRWnZ*5tLuoBR0c_rw@2*5)JaJb%3<nz_V$3v>{0Lw9xO;gN5+S%TiJ($TWkqvviJ z((IPn{RE;%e(eiKReYXI#o8j0m!D4lX2^a&8kC%1@?f_hC(r+7s=BHhJK>{VFrONh)u5s9#sV@qoob3l zjO*EiAqm86DM~-94QnxAtJ)f%Aba>SK_s5O`v_kt0q>*YSEY<;XqL8osiTeUPl)9Q zZCWYj!VsL4571J6Et7rx7jiXdo!Mz;>rWRLHZHtujJYSFjlwKKaO03%JB~xn^OVGw zyCUTD9r)Q|(3(2bc-5s`&NXz&(Cx@LJ{av!KLq0vW#x&l4g6fLb_= zXEs@)!q@#b*EV$k)mLbQN7Chj914pq>OLbS71RB-#gU4*z&zYQA=>9qv=Tw0(qsc_ z1GY{Te~iX2_+HyBhmhN<)*|U&1umA7DH%av?hETEW#Qn zP#9c0S|rTHrdZL*;^b0cpDtPLXz4o=0v(JU)e7KJTTo3RYWOPgUHEUo%qJr zMTq7`!#(-^sa(2a$I5U%V1Nr>{Wv7U)Z!ebhO2eXj>$kURVh((7^7#iVofBAfl!aCivk? z?6a-5B@n=r4XZ+L?c&rp`VYbfa%`Nx^2P_*dTncm!QMOXi{=vvXCQV$O?^Au)(tYv zz&RoVh7R+*fdaG7995o&aTOaAA({LyM5T+y22awrk7Xk!-ib6j&{U#~us=!=v~;K# z%80;m!kVca!=M1Msdqb|_?`IZ#Zn%EVGZYPR9%7N3H|3gEo*B{OA|rKALfPiGvqM)_PhAy@R9Z_Eq^7V35)CDg>Vzojis}B1p zrp-V19kB)K{Y|TCMOgZfxGKmGS>ep)+PtFw-%T1-a?6kI+>mt#SOBGSoATcB{VD*2g|Nh@Ykd4&Wo0Wavn8IGvt zYmZ#jsY0Pxh8UCm1eT(SUJh3nsvl!Z9aLfrfHNazR2M{o{{Uo-cqp(3m!2sNJUutt zW3qo!KqW8!%`;;g=byW|Oq2YtcVPv0(*lO5R{To_CO;xQ3>{Yb9$H#FqT{ zLl_K8M%W|*#}qC{WTfhE&mXKgEe&rcgk=r2b{JBR5+sg}wd$)d*iDTS3Y6DDT5*9o z->NgEE$C|h0qp&&CQF8IleDecKB)+Q@uI+ZHp+EmJAzT(<*8~!hjcHW2#+n;>U^YF z18<;%S3>xqTV7Xaf*GW^$_titKYsyHHCWQV-fw30Fo3GX$VZ9CVoa@B8ZK9>33PzQFB6I7+RY+031T0 zl~g)9se)d1<@D1>P3lJ#7|aSx5sxNIhq1R0K?Eqf6X@GX^t8P`hiWn<>-%e|N>%lZ z3A9S3q^9#Zkq~aVHXOHXNUmN9kQtMlukHnZ{#nFXOre;W%d}_IU`Dl0pLHfM)>wC4P^(O^j*XR(-1mWTV zsOjbvHx1~BkS3m=Pt5T-oykQ?njVEyP=Bd8Funj6q%6=04<#fFtrCvj9EBDW@%cvy z-XfdDAW0FO(+!Uyx&N7Q16bBA8pQB z-T8Cx!ND>SuOtnAZYtvcxtd6-0p(3 z@}#1*tA1@L6%KIA`5($cOG+XKB*5q(>+xa)+OGpi5v21XZ|zX4%^wsOn+&Ct!cEUTzXFF=qn83k@Sk|-;F|Njr;D>*!NCBL58-VPbetq zJH&3EY*+TIKwV#wga56AnkEBJg3bxG;*$zm>cTRjDnIAs{C0>idO8klX|E{t6HIcK zKjVDC{i~W)#$xV!I<(1pxVYrQ10*&9frmK#U;9&90F3dL-r9>lYQL04~ zp1O41)%j(MsMg8>cfF=09@s97o&T9ORWB)4f(SzdtbuT=AcGn#RF=g%&=tAITNcX% z{ZRt8s|s2!Aonr1LqdD^)L6^3q(XP>YdD9Z8{`CeSF*HvekBmFd1^3q-HjN2Fd_Q| zTW2ZzIuU2G=AgdeRz}#+@K8(#(4%AqpORCOP~r?h{_YCJKRD=jGZz_=s@B5ipW&U9 zd4CAD9MHEJwDqd?X>e_i`K;2e9q=2zH5a$}R~k03%Mjx>Aa-9Se6Ip51eh zz~nbeR=uDn<+fWX(rNI7GSA07cx_qh;xm5WUX$H_TNdX0Gy3%WsldYbL42wO z^en3QOe9cXO8+_$-u`)86Fa_p{c;!Rz&|3xG61c74^RAr{S*`9wLJZJodBk}Z1l>o!w_vfr_(jm8?% z7fqJDIVbb=Bv$1fAW#dlA|{TqF!88JD$xAE+|of6|7#;|&+I%4u4w-9GaCdr3 zq67vF#5L_3`BGzQe~s8v>j?~MTcfIvMpcr;1?Z+bn5k&#HzDBn@hFQ4LPA3hlvEJp zlc%4BiAuIv=;*iH*hNXCR(wVkj20!g?4UonQHG!|*^vJ@HAESoR!?T_)t31-*!aZ)M%DYbgS1@;UAtX+|^*+j0P7uS2hu9R^ALHkjh}bH@K<$kGJ=VqkwjPyUWBaXn zG|v6^z@7y?PE-%;t78`P47EG8YFX|riGWsEfGc4le>qSbHFOz7#}bS+`Yy`Kpyk4v z!gE#Gl9{h0%qctyU&$AQ-H~=ocaShsoi1cBgopsC8%CoK-HLiraWal(b>7p^y zsl?zl)E+~sdiEc=E(kwpa03ay%Rqx;_KDo6)|+)F<5GUhR&EGzw^xf1B_KB zqpnkYJ*Ftx@Y_304asf!$mbYm4UQFySP`cTGTCa$6<<*%^xu|0jP8OTFb6)PVe3bR zCbGY3VcR)G^#O<^18{f(U%hY zqDw*mw?{4`FUW8=YjU9DrhCx^Bx5H~u1|Qa{%2O0lRdAZ3Ryj(m9OiRq7#VceV@W! zmb(HL_I@bF((S@t%l^vSVjjGXwsss*zP9sow#0V-Jwam9$v|?8i)*#&7>V0{9N$`B zV|c2fOjq_aS9x<-1IZIwX;GWPiIv%kXF*GZV>;=@!B_{wz}af1Z{*-Q=B}T$sBh#d|Luy#I~IR7y-`6i z#4iyQ(uV@_EVyD1b8Q$2V*{*PP>05qJ%K}+BlG}tYbRWSXv7Ucq(>@&fOOwRVLM#n zG{5+)rMFnMN01t4++suG`q1-8A~-7j1I#NjGrTRe2R5G<6XST5&>*?0Nob5phoYpz zvkW9j4GPY8=D+6Vj%I6y4Art0@Ms2WniO&20Sl;^zTKdF;$NXGm}Wn!lGms%6(cfC zGg4mafp)$)H`wnY*U_#-jA{P>hSJ!@^~H2M^SsjL<2I(*?Xc`}p#Wh*=cbCv<`Cdv z%Nm{Av%Cucbt4id5s6cYHNA{b3!srzidg8U!&5=<6z|J8UtuL}MWqtpf5>%!1L1^DknHTv$-09ElhYc2LJK+hV7?JML7cB z7<+tNBeh}pSpBaMW6zsBe~aHkO1<&8i)((z?&di4N>`mbsoRyHaFq=FkEgd1EMAi6 zQEGD;oH?Udp7-?CoB@_&l9y{zCA*Xa^^dlsWs&V>Z1A?OymFzqbM`=Rg4IK% zo@;zUT3Su3-Uow4BZYoCA%h0KsBMF9GSD{y?-dT={p@!d`E?Az7y8%9#dQ{`@~qXo zvd8f|Vs`!HH7iFZ**%_O$ma$XzRm^00yYd){B!HD;DBBe}TDSYquA77i>w4$a&zXIMZQjE4HGew(vQ4!h=fpHfY~(5Z><&OWQ` zd(tPeObJ`mZSzbz!Ni(GDfN%bG1$|kdSIp=#(@_V9VY^uKw+MI#XuV{S#R7?s}H_? zfi!QEdHIGskC@6qzQkoh(0)0p##D;l6<&UhHd1`uP&+$&G5MKHR0^a*Q~gRdM&6mf1Z6J-n9Rl9yBU*sU)7GS`#>bm{ zC-xn>l$fY38>=cAg57_0g|T5hlYE+#A!~ZY%Ygg`7&rpM-aTx`eRI}2;=u9oIm6F+ z;aCmFL^G0=+RGAOn{ksxl9}2Cnfr~6 zgvKE)d54emCF|=a?3&-CCULK1AX>jpJV0=FRrX{oynX8!Wwt2H9Ygf|l>nQF5&xA7 z?pMRv@QzQMLOU<_#Lo%q>RopAQgN!^+LF&j1=rj`RIwbSh*yWNVK7Mh9$=w0{fn!( zH5S)2YasK`PMT<%zNnMzWZMp(9ns3omY)CkJTbO7YErT# z8ttT`Y=qa&Hlj6akEpT^vPeFwmeMl{@5!1RCijA<8y~coUgjEa+HCh4qb&&vQ++3< z29dbhd*m;azND!HPxNaqc`8j%3gKG2Bk`hwqo1qQgUTg`^}|Qw_#{~1Irc;})EAq) zbdhHwvCI`4Z8D5%Bi{=(>f0->L|WU`Shv2k`DXj-`YBloN${jcrKH$|p8;^4T~miWK|Zl2f(&aGp}JXBO4EF)bx!Hu+sCTUOG-SCB|eem}=53Z8L}dgGm1pO3XNz-(k`d$zMCCKY&24J&OU+*5vqp zL(y5Li@MnA&1%+(UPtV>eAYlW5^3Ux?TfJR@V{n#;^m&K)17Zy{v6fNPQ_tt~z~ODnDj#!UUb8Ox|N6VLv6pm^vz_*ikw$M*tvVUd+O!FT?|73+iO z?#z(kd5T3tg*<*Yyg)x^cMvxomodJp&MdU>hVX192aCG_JysxDcLYswEBcg5Le9pQNu zH|~QPcFI(lChSut#nlE^ql^T}Fqo!n_0$$$Mb!vO^3pJ*Z7M}0m|5S$sVrjh%O)Ko z!m{IhHxjB(3?_R^*(uy6y9snPE3py`rkf|lUrLCDB*eOty||Pj@=KoNA`bR%SNH3&py#td9 zyTNW2Lx_N8SeKv16_cciN2Mhk(m6HE!6mSnI{>KCXs-e?;|K!K;mb>3(XUFdd}X2> zpa2Br;p8cW`ViXcgQ|DWfM>`g`++9Sbq^$UUp#p39wY#iHaTiPg6^2UTQ#~a9)>?Xo8O=04@h@bzf zdB$B_E0I(yO@FO~Ol}|iu=XfIz|18A=T;MPHxwbYrfXsgFB%u=x3^Zs*E^e}#GsiI z#x|)+BPN53GnAk9u+G$}_vznH1g7Q3z!3SC(;JaD~URo|lebUI+o;#(2dAA+iL&a=$-5XXe~R!T}S zwgP+FKERDKqo+6T>7)33{#HFSU+_wYh=3voX^v@!PpS1>2e<3N#k6@pyoJ9cH2{b_ zaO^ntJ+p*$@rUh$0eB#`s_b^Ju4P0v(md>M5uM$cBu|d?%@HHxbwb81`BpSxq8Q%a zd}3jN2Hr9{E*T5hevgjG4q|&6>?b_!n}{9Wa5mXa8c5mpq(^@gVWy-BcliehxEa-E z2rp2ea0s{(A9b(vxx9NCxKH80Io0XE>v<(8dYk{=dOYmUh2rZy&a-nD3VjTVJ?~@j zX)