From b3781eb83178a1a08f0f52ce648ecf7a2ce1c676 Mon Sep 17 00:00:00 2001 From: kicap Date: Fri, 25 Aug 2023 04:22:48 +0800 Subject: [PATCH] repair add makanan page, addes socket io client for real time update data, added table status change page --- .env | 12 +- android/app/src/main/AndroidManifest.xml | 2 + assets/nasi_goreng.jpg | Bin 0 -> 130132 bytes lib/app/app.dart | 11 +- lib/app/app.dialogs.dart | 30 ++ lib/app/app.locator.dart | 2 + lib/main.dart | 15 +- lib/model/makanan_model.dart | 32 ++ lib/model/my_model.dart | 21 + lib/model/reservasi_meja_model.dart | 36 ++ lib/model/user_model.dart | 44 ++ lib/services/http_services.dart | 14 +- lib/services/my_easyloading.dart | 2 +- lib/services/my_socket_io_client.dart | 48 +++ ...dd_edit_makanan_text_form_dialog_view.dart | 96 +++++ ...t_makanan_text_form_dialog_view_model.dart | 23 ++ .../add_edit_makanan_view.dart | 388 ++++++++++-------- .../add_edit_makanan_view_model.dart | 96 +++++ .../detail_makanan/detail_makanan_view.dart | 4 +- .../makanan_list/makanan_list_view.dart | 141 ++++--- .../makanan_list/makanan_list_view_model.dart | 35 ++ .../meja_detail/meja_detail_view.dart | 119 +++--- .../meja_detail/meja_detail_view_model.dart | 42 +- .../meja_list/meja_edit/meja_edit_view.dart | 3 +- .../meja_edit_status_dialog_view.dart | 102 +++++ .../meja_edit_status_dialog_view_model.dart | 39 ++ .../admin_ui/meja_list/meja_list_view.dart | 126 +++--- .../meja_list/meja_list_view_model.dart | 68 +++ .../pesanan_list/pesanan_list_view.dart | 4 +- .../login_user/login_user_view_model.dart | 2 +- .../splash_screen_view_model.dart | 7 + pubspec.lock | 16 + pubspec.yaml | 2 + 33 files changed, 1233 insertions(+), 349 deletions(-) create mode 100644 assets/nasi_goreng.jpg create mode 100644 lib/app/app.dialogs.dart create mode 100644 lib/model/makanan_model.dart create mode 100644 lib/model/my_model.dart create mode 100644 lib/model/reservasi_meja_model.dart create mode 100644 lib/model/user_model.dart create mode 100644 lib/services/my_socket_io_client.dart create mode 100644 lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_text_form_dialog/add_edit_makanan_text_form_dialog_view.dart create mode 100644 lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_text_form_dialog/add_edit_makanan_text_form_dialog_view_model.dart create mode 100644 lib/ui/views/admin_ui/meja_list/meja_edit_status_dialog/meja_edit_status_dialog_view.dart create mode 100644 lib/ui/views/admin_ui/meja_list/meja_edit_status_dialog/meja_edit_status_dialog_view_model.dart diff --git a/.env b/.env index fad3a8f..1e1f0fb 100644 --- a/.env +++ b/.env @@ -2,6 +2,12 @@ # api_url = 'https://panti-asuhan.s-keytech.com/api/' # # url = 'http://172.29.85.181/panti_asuhan2/' # # api_url = 'http://172.29.85.181/panti_asuhan2/api/' -url = 'http://20.20.20.25:3001/' -table_url = 'http://20.20.20.25:3001/table' -api_url = 'http://20.20.20.25:3001/table' \ No newline at end of file +# url = 'http://20.20.20.25:3001/' +# table_url = 'http://20.20.20.25:3001/table' +# api_url = 'http://20.20.20.25:3001/table' +# url = 'http://192.168.20.232:3001/' +# table_url = 'http://192.168.20.232:3001/table' +# api_url = 'http://192.168.20.232:3001/table' +url = 'https://reza_backend.kicap-karan.com/' +table_url = 'https://reza_backend.kicap-karan.com/table' +api_url = 'https://reza_backend.kicap-karan.com/table' \ No newline at end of file diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 8c6fbc8..48cc004 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,10 +1,12 @@ + + SQ^yT0ZY_Q-qxC9v7-5r7l9UKC|-GUA-2`~`c-5mlU6LfIbkbw{&$TwJk z09k&!wN?A?-dFXitGlba>%H#N_ntoeZ|&bMfJ9SOLluCA1^}QvKY)Lm03`r6CKfgp zCN?$}HVzIpEkQs|q5L>~3jKz)| z?5!A$LjlSx6*6r7GEd2B|3k^h$M-*!u!yMN`>f|SXwd-Z82@h%0Kot01LwK$6%c^& zKVAH9!$5m30idB{07;oK1<4e!SilD4b|6IxA@68x!^|)LHUI?A70`hgK!66Y^DhiUWtd$`t>gA!BQ2csaQhtwCgAz42DFgW|3=xvV3l28`u|Wf9d`ZJW zUPgDxyRelN+YO|`PKW@wkDuA`y3+5c6ZjrrrG$3iNrC0xeF7=#J4AEG|BdY&_3AQY zp3e#DddFtYRY13Tf)2P{!^rK9J`z@)7-q5)0lF>Z?d2e z!BOxK>spkI>Xl6gAA`=oIp^TNwZuJ>bm{DBsfXV`#CYJ*C7J>$0!I9psrXV9{!kep z&StccBEl0nYpK|fiIi3Fh^SyZvSwcelvmRa#t6qQ%YbXW@etUV6Bi*&otD%6W`gcK zFraJNH>+9ULg=i9c6-Q1#xOWF(-v?30pQdAuZqk39eGQd)8Ipv@@b!#SV%9&9wUJt=_OVxaIwG?NCe%}$8$0HD&p}Yl6 zor_u?(Olm5cEp3aIouyX$SnDLCoV}|_GSz^cX(<{!kV;J9a*Pp>{KrMT7Bt}K27>5 zjby9=%~%XYt0mTEGnn1f%N2ykghW+no)icZgU8z(iCS9ufY z2}Mw^&kgH4yy^zI!+3Zmo*W{B=d{!}U^^^l@5nltoMs3QI6Yb1*h^^XEZF~$`r)3K zUB>_eYe-3OTLQ|mtS*M)RYO<(s=I6!YT2RNcSI-W z5mVsh)-_XQTKfyr7t!@QSOGY5Ej`xk|BheM>n=|^ompY!zc4Xae)N(Wqu;w@(9_Yc z;$Ix;{ZEiFbGbi}2*dz0VDDSh*~^&epQ9{{ZApFaCA)y(&z`P=*< z&nMymuoK3)fU$q%Q}bOm=ka7@{S(A_LVG$grSi(NZi>#AwMv}>@y%dqbZnc$cquo% zPa+t1!WxUe+{S9}fSwoUyDz_Jke|-P(R`;KFq1N*o`5qe_R3>rMw5f9t7;lKhC6V=`YB81JWRbki5Zp zg(%=ohJ&Sd^i7T>5I=^HtS$Zou(|fp+=}ZBW0wa_i7oFKCbeeam1b4C*zDE)=co0Y z7_*0gh8lolLkGiaK`eE$9p8JJHR8>G z05Y!SaBvgt$@6kadT>iuUArVZD$)*05i(j17kkV4!Kn7rIJ_(8?^60Huxc=$gC!#I zFETJMVTV&P+RHu~!3IhECJ^-{S78wzbb(1q3i`74FquQQ@suZ;4s1jK^iF|ge~;M* zhO=Yb0^dEMs^Ri>Wq2ZT2uZ>3q%>lZS#GW-(TuP6w;Lz>o6aDJlawg<;rOe+Le+t7 zc>>-_>vsa$f#kO|v2|_x-duzEeIM93&2Etvkj2eYS{3>}q+YEsh=nLJvoJ*Iw^1!y z5Q(kZtAh_do_APh2i`7xGiOLdgS&t&dm zFQUXiK7vMH%Ot>+yvbP80tiVyrKg!g`#j&OvE&MtSGr4ui06sAIw-(Lb5i**&uf{0 z`FIWJc&88J=T49NQKl{GXa9Npjp5bEiV79>@VrZ6jru`P`|=&yq@TlcTtL(7i_zI^1`ct<33-g<3nd(<1Q;phcb&`QAwH>0)LNll* zjSWc#%E+{?u1PYhTkQ4Q#h)1wR2f1Kl9cYp7v zyyBN*(+x}g)~;&3yC2{Vn?dAzOy^jq-cTz_`|{SEG7wDeI$lWRQvJCcoO$czEV{Vv zhu-p^7`6-MEh&p*9LUGmoO_h(#D+ZqAN!7ENI|b9uJL0jApR*Po4XCAfCJ6>O=XLX z^n7a-)2pytyHNzPznYp32<}pqd%Kq&+S|C*8Z2y?^O}I`tnw=otizmL9?v+(#=6Cfc+VXi_>m#6JjMGmi<(E-BFE zCBf%)d9yPfs8xzHh7TE7eqK`m4kx7%yJLvO1Pl)cC5(a$vkdJLgl8bTO$K#3xSRRL z*@%Ijw$)FeKg+>KBFp0vqX}X$-xVs32lu6u)=hpTe3vS?uS(4nD>RT7d(6J8ehwr! z>_Y-L(~XcqNO8^XvI#7j!p2dqSS98Keoi)xS!npY>v=~ci_!cafw=-k9lHV#9b#{R zpN~bE-L%NAS*5EYMsJ12+oHj_)=(a6cB%Po-dGdRnx5uxb*ntOf0*_gj`q|8$2*>~ zw>*_35?&ROS?L>Xxpg~0T3Ffd6qxr^b%mphF>EbOOgg6CVr5@&eQE2ySC#DNDlnR{5e zW~y{?{mJ5*^p{296DP*WXHTwHDZwJ?rD%FlL!*qkjR;0O8hw*LC;qv10 z^`qhJ%Lc+Ii{PU`2E4TTS4*-^iI=W^?Ee5S$-6>EIgAZ)wtL-EmlQ4*$5A2e%z#2I zgl_vDZ0KcvaeL-|1oL0D8sks6G+@Pp_tLX6W51OSw5;2(KOeP)!JcLupI)ub_fbO* z#2wRN3D#Xhe-!yG82@NBGe_Dp?z!KKVQ_|xy;7IGd}(8jGo?XsZ5vsqIm_}Jb@e$l zYJf5Ehs)i8u#Y9W=_`hk>*wcSHxVS*B8 zao`bukRT5YCi%cqVk0W@cpZiJvQX3YCwnoDM4Etmu)pw``^vQF5>&=8B9F1XH$%bN(O zR13*x^JZeKmsstYm+-nW$uvZThJ9JPkQ&Iqy^(J}6HGr4D4ams-b9Jh=Y2iik{z)5`1G2scb5`j`H!$%Fn^?OEqW$2~_KGTyxAvH7 z@OT(%r_xW8-Yb>EopaC6ua+LNSrQ)7z>Fq|3{tZ>TKVD7wpKw{sMjo6g}!Nt-aawt zd!#Z>3Fag~V>Vx)oy-DkN#K7n{mKw{e4z91t3D&}n zdiwQl3tN4e2lCUPj>(Wv9w`AUi?mIRRp8*Oe}KwJ4kg1t(^c^e1X(I= z%hz%*HG_roKKbKEhuB@j?y;N~%xI}E`kk8JYe;^%vF#zh{_*1qaGQytWNhcPrK_l? z&$?6(YEtntc+IKsE{p3J2jXPdSSEE$I3}Kxcss2VuAJ&xI)vyFws16MN)I}iM3sYA zQ~BFuSuS}5K1xb`>~aud(0=cu6*?-ahH#SB)Zz_cm5I%J>1q4CW5m$dL}2=cPz#m5 zIk}|55&Y`BAz_-Tyy^snh|mPZGkwYI)uCLQMv+Q41KTQZgcI}AmQFR8oXTSZJAQy1 zvuG)KmAI@@)O9ZL%%!4b9a7x#$Mn(GQ51SgrTlHHl?yi;b=Wh%T0@9STTh&AyoDHI zuaSMay#P5E6$LrA~sk0*2a)vbiXL-^CTMoaUq`n37`8nO6 z*>&9jPBa6S!dJr8_%1PZe-%|vocs|lk3Aw%6vK~KGh(PVG;o4;<{h{aNUXv}7uY(~ zNVNoRV))vzw&_aFu(IY*2V90>D#lycI+iS^%IC^9CEBWEa-=_9Fjd6=;wTztw6Qwp zw^g8OI{P`^I~LyFXMRqXWi9=bO*)XQ)*Jt5ys?6CTfR-dmk-r2wOO|YKgCjuKIHw# zb$Kc$J4&o1D9-!`up5aiNnYZ!$x}XF;riu6Rzb!O{s-WTbhO5eR5_)88%+m;q_0Z9 zO@y(T8MGq7VFj5le?Zy;(^qjA{W`xLA3sM6(nG%`Z|#|Dj{{b|zGY0GZM?CYz74LN zKcU)Ir}yP`K@dpKa(?;!DQf!JM^K4b!2n1N9r(2dXRE!Ke9%#=2qCq`jU&K?g~?XX zzL^REe|3ko`EZNF!a~x^5W@NkU<+KNG}TuLCgC7gI^lONBy>>_nwBtKLUJnX@vc2= z2F&J(FD5u{Y~OJZ?yqsO63 zHumtgXvFx%pJ6m&#3#R2MQ|Wg9l3BDchDbAOO;=`}ycxIuLuv=a zyNRuPuLl*a^OFEVDLj&m!N%fyNX@3wW|G6cTtnj)iUsCn95_o2a2L-n5kdhO`G%2) zVvX)Q5XbFHW+hswR)GQ}{hmP`U_{cP2*HcO*R~Uara%A^DP$cco=mWc43UCF_P4qL zQ31K~z60ryZvjzG2kN+EPFU%JC$?sntV9q}krbT?G?a-@-p^++|Esd)lH3E>wU41D zm&bXI+D?aY&KL?rYF~OQQ3<>fJfrjFb!~^JI@fljYTPD7r+9c+SpojkO-3OPxw;|GcD-jvZTy#mJcTBUy*EmZ3)n=22p@CnDA-^q}Vd0K>tB zI~sCu_&{Q@Q{Q;4pQFYa$2)C>{J%0Ub1fdfqoR7a%m_}`!j-+WR4eEAUpIL_b@g$n>1q*l zDQGnBpW2p{QdZ$x>#XWI_*2x0ttY*FP`+`W+G4oTQ&Zx*_KIm<1rcOaAIGlB+$S;p z5kef4uxB%`m$+kl%`hjrHHGl3p$N8^2^-IO~2qX4A*xuk;V#H)}0}S4{Q!*xYS%9(Gc2rJWiP9Dd1co?&*EFSu9HFSZNM zWSL4wG)@Ib9Z(JV(I@xz6UpAlE~rPh_gq7eB#Y%p?j>0c1rPXW4eMAy;a9eINl|(5 z*XiXw*EmSp7Eh^eYbGUSpVU)2?zMP9g=iW~ZidSwv|S}n;jd-eDKBaUa9bhCb@X#3F)FLRAJfvk8*Cl?Pw(41YGi2imqX ziiJ3+tg>b35uuj#@S>5~ah<64m6y`JBBI{CYoGNlXD9xORC~M^dGr@8k2&=p)ZaeylXr zpTe*3d@07sDJjIf(pPLRI*#OFH|Ct*+pX^`8(NalYwP}7op=3aWqhzJfUUSjvcTem z{6zcaFO)U-6C($|!4;BVFDAE4U{`}rK}7MzkU|SF#JQ^I(sKcoN5V0f7mxs z%|nx};jJ=N5j?gHf|jff(SYcr;l$U9C#v0vB9AY%$z264W2gdo%ElqbSOd55E;7D+ zW#h`U0{L6Yz$Z2v<)}`7<_+PX?2`kPR*CnH)n(lMJm>_)&?Vm51a_5sHSZ(cw4ar| zp$fjj9n;P_zZp9y^NWg?G2GAo0bmDsTd^dLO*jT_>Fl0ge@YyualmfZJ3G?N;nM^- z+q`u>q8-jfS2OinI6_)6h0pKK1j+J=J8LXRL@HI#e+yV**bEMF!4*F{n;lx_e^eNI zGE?+K8_K&p9RlXJ7t{%VAs{9Mx`(?C9hjlsU;YQD-!~AgSb5nC)?=G0pXN1{&(DAP z>%`L>;_888{LC%h@U(u_9GEGhqlXr7q&0Xr_=J65zQx}vuQAnS`6t* zpXiK6voZ>|O(X#0oE4-gEGTpw=5UIxjiacB(wBw-4ooQ$OOS*le?>4{|r z4_}sisW8>UW@s_H8r!_+0+nXNfdAW5hoXZegEnC&Da3hc_I&=tk;vLsO_U5}Nu=#F zwAbG=6}yzBg=q&yug5>k7zn9Sllv(tJQZ2&U~u3V-$agI zIa~6zfEOW`lH}3N!2CZMQ>E<#zKl&EDGfRy9ZzFN zg!0vQjemdy+LN$Y-U!_H`OPZs!V|x&i?6zzjXDETNQ$AS)~Q#7L0_n|vl~xzW~(20 zR9QGJu9Vm9cKO@@Hn;hLKa4iPKQFlZR7}+mJNL@s6iUy9#cv-=!jw$)Rg!Knfz!WB zY3;K}Le;5Z3JUWvQ&afju%^bP_dLEY11qGkUuGT#njJG!eEuQ5w@}DFvvNd7?Sa5!)2Z{9nzr@Kx4N0fOFERNZ#=FeMA{@NxCbwW# zZTIuORs~A}Qlw?c>7*mMtg17g;mZ}k{XisrMhBU`9-`7PGje|tUNujL(kKwhwd4YNB=uE)^EofutaI*PZeSg@5(^z7hYfDaNr;Q9QsV~&woKnx41sw zM&Y$MUJ-TSWv5}LyUZhXKxs^`bS74n*1_9APnB6U5{xh zp`H*YJ)Uo$+SY&PQ4bDl<-a8m>;1LOQGo+lHYrMX^48>}!2ZDn8!n~;koc-Hm%$~u4 zk83p(A6ldP9ayJ%;#RT>`~itdZq#y#1|&=RWf3Kl@&b*TaZ9Xx3@L6HaKT{{hwvoY9eBwneU6(O=~% za_X~)j=GU8rqo%aqE`U7e|3>}5z9{k;9i6nq=sK2KGZ zMUxRBUU*JzGuq`iuwBe8x^(m*<}US|Y;Dl@&`5JI@7mo4J(#b@#MIqn_*Azy%{=Qk zUNNALh4S_jjTY5g6!scII`LbUmbCv3p*9l=XYKV^gWDqM&HEU5kbwMHLmN}1-|6VL z?6ztKh-Tu^f;!FyOI-Ti4(H0lSB2Ix@ib@pP^$O3iJ{_&v1-&C@lYi_=!W2ZQaz$x z`NYMDzLd~fq^ql5Epk`OgILF(U_^@B0cT%*p01KyIkF>M*c^h@Xb!z0TL|H}br0XC zOFa$|dv?l+1zY>I3`ONgkn5%}ezgR@W{qFJ*3cU2iZf-17bAb<{bjgXe}JBB3oX9Z z$F8G`V0+@%QC`V?Vq0OmG5A?!AHrDPisG?)JrIW1JaXi!Poq%#R#!3_$=Io{%9>lM zbH0Y}{r)eZQbvtjqFC>1Z>H}#*moI+r0cI9(&o7@F6D7x#A4EfmqIc|^>H|7f?}DP zBDP=588U_Hu2tkC&hPR(J6B%(0gOHFhIGGvrH<|7(=19oc_E!%5t5EEythrC9o%}y zI%7vA;0&;)<`drkSTn1H7s&7Q5%Kb zlT`(qoVrVD)}CtCT|?mx3PmiMV9 zRT-4OZ!e<#GNc&f4aF+6RZ{$j6rF3V7IyX9e&H*4d0eq~(z?!DK+MU- zrzqXiBGx3dt+&SXX{_*OC|G@zPJ!le|H~VLH-)0A<1+Dqb~%jd%J(cZgc%W^_>A#5 z4im3y@VJ#Aq%9%@lpLPrv8}W;$`D*NNfNBy7zYpQ?Yk7W=ybv!6v&dpftC}@wghZ{ zrB0%!Z)<s;&4v`!71iO{2O8lBEid2^d4LKu`~tb3R4faJ6P z?b6>y?^4=J8p7t0zmzzs5ZgF8k#bF}ogk&+WpU*1@LEAX687VB*OfUnrA?~Y83*i& zFQ>jKW!fJhd1mq*T%XtOK3j`I9#WQH>vn9f|YlGqapm7BocbsOD|yR?kXw= z#SkiAeYd$Hx8d-q&c@^T!k8oWyS|Au@BvB~UjV;(Q>?qU_RS*hAHaqD>J_EpX$C(^ zvPd?#vSKE}HS~x1jdh^38&j7P&nWQ`5eq3Z;Va)!l z({r8`VLUiO?$$=}cdyvP#Q8mO#(!VTA4aNV8vHt2pB4|Lz5d$-s&8vXcJ#on80aH7 zZEkWjJ_ZvPxE)D!Wv(j~KCxBtS4b9V5x$m}6FTznQnxPw7?xQ;LIRSm>&E^nC3Bw^ zOZxo-{I>^2$~OBviv~;=hDNRo2`9ck%=(m9ye=Y%?0{M0H(yN{J!Vd{BSK6|yj?IJ zDV}4Rn&GP%8Gu{obFx|6m}I2WfbScL5z?=2(W-_mH7H4@ll85M$OU;2Sgd5OUb7)$ zSvkSUY!zFnTj=sxu^~ZLHiL+grY3s$95&hC-a(Z35f-jt8u>1{o?m>E?|gdY#!)oT z$k+%`G5wonjqsU_6G);2%uin4{M3hBH%b9=0KIc>VE7o%RjiG&xMa5BtiCw!h^ zx8Y$Ma*UA0#TU=6hhuE$Hf7+DOlH4^sH<^DjBBLfba2nfvSws%w|)Xjf*L_cpc}~# z`36tii>ndoa#f3*~2^Wxh%Q7poS zT}-#pVazCgnx3!v;B+93P?s&SWJdGwC47YjGd(~+cHTeErLC`6d-#{%X$*YE`ReA( zQ@p4=GnTlc3UL%2z4yefIXXWy_7I2sD_su)X57Xfb?3j;SMAL|D_s!9Lw9Ny$WIO| zhkpuwW4L}4<~7ONUgtDh_VWa-w*lVW%kk;TJtY$<5ncyfO7@~6>OZsNw0 zq;OJW3p22{z(~BID7D95THSactFe_AMnhDc_c+WIi){`TCi8}%C2#YpzSm9JG6U>F zzQm-F3ZtQ=Ny^$rr=5MYYtQs&XzwJ)?MQw>u3QM9^!p(`f#$4w_G(wYmBW*L7ad+G z3Gh2CDD36LN_6)0%aCOLsz_EAFSN64;h289GK4<}nW<7WYlW?%Op#JVtBFp1X?C zVv(F2%TY}f#^p%t*F6?Hx*1++eI2V$#dEf%@DOK2an_Ez6%-y@?)g)!3iaNei?Ro; zwioZ)elIiJ<#-%IF$m~KYTI8^NFGr8ez+BCmsK{cvJ0}Hc$X2W&2dDwZXeO=O!qD2 z4*x$pY%mJWGFQH)KGeu4Nc8S5VVsVZ7t0N&BOrs=)x>v5u(9AdPY>HNUI9h2Q9e`2 z<3yatKFx4oyiY{X=aC`phK(3Pl(mb8jo(}Yo?TcLl^pN|Viu9?>9Ptd?yrgd>=>bE z^e`!%IDiy3{q=jt)Zv;5Z9j4V@$*_&&aYznco(B9IT%M5ds^1n{FJa<=x)%tr?~&g z2~y+V3Ahxxqlfg|B@U#5B8aI)Q$0CmEB1W-5N)W)m@6HcGFG7R@Pn9Zw<9w z1S$KprW8Y28|=(Y)XFG6dTpq5Q|onf@=%Qvca+DDyC4p1-{Yb?Nmgr}eg7XB-P~z) z#6mkif#_}CrJV&I<&RSaUsaHi^T5z>OI0s8z*Lv%1dmSNJq;x!Z52+#n6t6?%DW8% zKvc188%!phX0)R-HaR~pG?V}yPx5(f1)9LU_*}0PI$_)`WP$G1!DPo$8>h&Yi5Ufn zFNsdWHj9e-ma=6v!Ner3k^&4w0Ny2&2JE}w0qu3SH0+#}w@#liOScf62r3Sbdhyab z(-xzf?AfOUy!7pUt{BzcU9&!_6vDQ|+iaxFA$ zkGbf!2~(8=#la|fsWZYNydw6Rc>(DTMI>g=`%wRLuGYnr%YVTkdQzaHkF_-ui#lWOG>Aa_(Ho-94)wgjXN5p_LpgxSwy8n_0 zhSx0E@*~u~&gP2R=z!v-A@ih}#W~K7taM7~f;|s?r1B6t;if_3J5UVfY;UVWPM=V3 zDBd=?aQZfdg%y~FjmKrAF^h>^+*8j{qu3}>sLVEg?@K}pejo5J5?3u$LrZ=vad0DM zr;KtdHOkgm5Fj6)G~LSAhPEZv%h*$!WvMLRcV<}b<&rt!5xfXxd^1w@B}XFz@0bZi z*`@{qS(5bwvP)>HsF^xzb~kQv0NaZtF)C;AR~U&gZfO=kg1Vx8*No)T}II$ljU#B`gEG`=(-mje7w$>4;c}_EzN!mpRBtTCwsPXOWpnm?hPfHIUpN&$)oK&h%y{%RoZbLt|IV5I^bP zX{UP`oL)GDzFoQI1~>8QR%=SH-Z0-D<=Px1U(!Cgpk0DQsq*?crwU4Mx@6GuKU`>b8tR6qJd3{xn2j*?#QSEZwVK7Hnn+fRkqx!=$ zm=Wi|EG0`Y(~dBB>eK%Y9q5g(O^mp;h2#M)xrHQq7?;7YL5HY_Bc*~Bji+)VrE0Xg z+28VBXRxiO&cVk;k=*4M=V#!$ldhIKaHy~@YjVn2g9ejeChDSSm2T3+etK}~RZ%c0 zI7Ilz$3Yqo;1>4JGl5eBuD*AF6>>ikVZt8^x3mm(OFW>GoxAF0JELYRqAWFyf(YSv5z&NN(}#v`yEJ5%G^ld zM`lZ;y{~xQ=q+K?6V2Bb!0be)eYaCFwtx46u8XnU?*bu?^tu<*Tj1a1xo5zB|Jd%l zi0Xgs4Yqy8uAm{Y$%YT=U%%mFcGR_qFVS<7yJ;#&X5vwi{IpWU8+lc(#ayAA#=>4n z!+NTQCXV|bTNdjsC{~|?j4Fd!E-&8O4toYOeu1wfyM!?RPol?%gBS&5=y14M*_TT; z2Zb_u;C2g_?OmK{ZVrr)Xi2|SVT(KQrxZ^K76@NM1w!rUhM{a?Ho}@qqO2@ZCXAMY zJ{dSuF(O8i=&c=}RM7gYwzP?0_=0pP6lHaHT|-frna*3Y>pnPHp;$=uQ6ew*P8ir^ zt+@ahZ0x_u)~)9VJjz7cUkQRSnh%`u+k|tW83s{XCqbVLJF7(9onW-~6f_EB{XIku zAMGB0smQhMR|@WqPtO0S>`G+Cpd%m=+?^sJr`ok$k(Q7C`-#Q#odEi4otZ85ti3W% z)i@@C#Nky=C?3?0Q zg?8k;0qHNeGdZ{fH`pai4aVfPDjzdjD2Z5|W$oJN2rqf~$M=7GOK@paQ;I1(PlJJE z$6sLz5`lu0)f}1N6*bkvF`<*dV3*bPI0_eE@n&q3daW*V;bLV~nv0+`t!42o1`9zt zPt$N7JXvQku>#bfLYrWnRW64FxleFZdtJ?cj^35C*(5*OgJ2hT!KV=o4!iKdtj)TU zyBN>1v90lHV60u`7<9JpLZ(Z?{@az-o0ac*3VHXJ%xpTXz2G_p44+mB*H9kc7l$D~ zKi`3ksZ&2|(~BpK>S_~0gZ>-H`NKPvg=)5|oj7A~h<*EaTqkLnzB$p&^5E^4eW!14 ze5l%#Oz z4EAG#&^YPUh-{?>_df1NDUliV$0CEWaHvXj4SLRSU;rjv&L$Ox_yGJl~*2 zrE-vJ$c7ZrHPhBT2efjCP5^0Q6ElJIZM&V3gEoQB*OgaWwlvSqF4-OJD86qpS4joB z;3a^3PgV)>Pegj@_T%WNdg~4otQVy+b2d-O2=|w1Dt-98jsb+8sxM#Qf=e5C0~}HU z_ca>M58XyPERy;Y5^25hWLZDCiwZj&1Fd2`d9U>p>kPRTt6tv3%TV_R)>gwyaXJdF zNSdKTgI@NM(&s`|l0KMa)1?`ih->LB5pLBgwT7$zUIZlSI`e+WmY%Jl)i3lkw90gq zlqxvc`9znYT>B3Ix=)Mv9^4dGS=!Dy)@SZTHx8p09i^QwN>4ue(xORiyHjY`ck&^4 zBUI_Y04ZT6YC0J6w1B554LzmaftlE>3vN3vephbAg?Qg3hd@5~+2PKkc>5wVK|kkQ z+B;)qfoQR-{*wW^6m=qn!jC0d8w1*ZbR#ea8m}-XtO`>i;ca6mUN>pY5Iz)p<#%kZ zvJM?5q;k)gNJ+W?!Ga-Yo|u60h?p$XCm=7>10ovxLhzE|KaL$iinWE|VwzZ^CP1{n z+PH@;(~;)p%V6^AHctw+HE)qZM%*m%j6N~FGmIXcA@$*tQ>5?PfsSDQ@w=vi4-=0Z zFFQ@4WupxMR&B|Cd8GO4KC%GL1#zCwBP${V8Ls&6#T-g^ed%lJK*K3kIr7&pEz?;z zppv{yG_fS1X=gMk8rX4=Qp_7S-=3wo@Ky;Pl?6P<5wxcDOxT39nn^+!LU;4ZMj><} zjW)Ik#_X1xSA}U?ZPc#~ySn0_xlO&zM+d)S&V(kqrx`DGuqV1?Bp50NWxoDeigb(T zi(hj6MB}R_;}WHZIoF6i!jcKNCK*#+D#h@}{@wFdwIwTOoOvUQ@ah>2>zhd^O>m*T z>sHjCwyfxDK6>CwFYmv`{a}9kSn1`TRy3I9@)LgHM=aw26L=ps!~SfODcViS0W0@<@l8R z9yA`pxG^=++F~B6bD52yYy>ap`WQejjs@1?ZS#_A0WL2*SD_4>*XPXZk>0y-$BU{E zVSCi(Y5KVRvmlFWeLc-888;X(3$yu^w29frLmFi8BTIDkNVGwSnwOAiu}%NJCtrTXD(V zp;TeGksU3;M}8)sIYDshuZ*N?4YbvCiN`2I7T=+hIuCuB66>0l!JN)0tY`1%x9OmMeV^~?4@sUK#Kf( z+0xRgnt-r?enFETS0*-Fmfx)4?W!{<}xGiqXm~Bi!f_s_R%%lQQ zru^^(I}oD9u7{_NAmMb^=R*O0IU|y6=^4|UDKo$7a$JJK z(U=61d#Nq+bn@8M-=-=IK*(tDK88nC!@c~F5bat2vO~i_s!18-nJ-nY<*N*KT}VWt zi>*SeA?sxBiIj?}wcI-?(w;pm)??R(8i7?(inTs$yNdy~Oivvu-`=CVnU2Yi0uS2Q zD*Y4EC>i2qaouIc>Oln4kr?HftwxcTTyhTY$?aWbiE(p4#YgKoP;F@)tN468SCb=z zEMi)>`_NyEg2iHYdtB;6-!FTOZ|xlyP6KA*gCE?TrYNVO0_LZjA>q5};CT<)3-myfX1ErOXxN_B*#Vu3n~#@L7v5jVlJ`m?|S(+23B(G|6r zRHr&dYI8JK4W;}&@*hENx{JeiSUcJ4D;pgO>P{wBjB+7*2*9jScw0YEklWF!1RTDJ zWci&cl8(Q?{;*PdRy<(rsaQ5Y<1CUEyF97Kt55n`P&N~ z6#jSeTgMqSA1TdTWA<0vDJGLy#IN>u zqhm7>#P|C^Vz+7|(a>|~*h6mah+pyLr4?b(y`bk>53Vh&KMg!&1Tai-ZZ%n5*VV{-GF08}}DJD{PQ>D0omcEE|n`27S^;^usri8=u_|vWmgiU0`}4_ ziu=-)fSB~+TZRu0j<SeWbf>7VKqEzD4B7<&(~bbiVzq!giED`38(m zzzHs|vZj{jfVotKVBYD@J;q_n=m{{5)#jiZQW=A}g(azNi9iWR0=08PIH?%f^S#@i ztiA4+2)FmzlB;82T0-=tvvttX%)QSi=p2Qaij`u(aX^LSxD0bF@xP$NsaBB#-P~iuLjOtpx;9aYj95-oCz?>bVU^Fz>9m`jxj#Zp(A^U^ zfh7VOIVell)@JI%XL!fH8#76XH|0CYg4S7vjH;V}G7^@YCA)VZk!A-?4=X^JVpU1# zmjek4&CV+wc6FL1Re80%Pb%?nm{UFb90 z&S1;eLO+aMkSNsOjs3FcOq#cr*;owks=Ssq0Rt+D&MZFw$H}uab@EveK{Q3VSfAP7 zL=*I(6AlzAl|RhH2FSR)>A=|A22CB5)@ z>>csF&6mByNX5&j#0(b%RbDf$ zm2=5YiNXb!^T~4@o51DMofKP3Aw(Cd;XO%Z5u+Q^% zso1vP7vJvX^n-b) zLj;5AW$HP!;7wCwCWiQz4?2UBIkhNG$tw0P6NkvsZX(Zcq3QcyT132D`SJpT)rKxe<#gQ>YR%X8T! zNrVB%Jjoas=FM>}zsvss)A1L1RP-&;Mz)c`j~0?4bFocLuqA(g_Li2bu-PG>eqc*; zsK$TH8n)bXEd4fC>s^{IgHLsf#PttP<7pR(=l+_jySMvKQs|ZHwU`s-dpw8av+}(f z96I!)iDg=i2@4y6CfDL_$I;A4C=p^Ta>i_tRuK#u$E=z5Ku}^9jS;MQm!@3`&j!XL zMFV0f&m!mo(B8^uVVxBCh$RR+Q;6bp>103` z5+%#QlU@SV-sM>Z9(8|dnLeO?oBsfLwaiV4lIwMFOy^~MD`-s(>A4!Pb2RinbzsaU zC8Zy8S<>$Mm8jhBcsagIV==#?(`GqLZ0*i~z^dHI2+|s!VbP?4F&l_M%#B-a9ZwR- zfZN<9C|L92bv15Is=Y-qgA%PnD(XMCQDs>p7)I(4!L(Z?44fC3;5Qzk34M~pRgVLS z(}cFjJ5#kdun~=55Ze0=-=W7s2FFw!m@BdZk20UA^#GuNW_N8( z*sAxT2Qod_-%!W1g>Nv6ddBdKommT%_JGlb5dLJ&(2D}uNTYHky+Hxw#_tD@Juu^w zBPCgJUl0d7M@B|DwYR(jvN_{ZEqM+90PARUVgCU8BEVj*VUhPL5D<7WT~?4eF_`a{ z@(abUMTWrE;j4A_m2Hv-lNd7;d&jJ?kKToRG|QH-e8!uH%%^^!y7DAzI);x1CpYCV zWA@3P5}AD0511!@?*>q|duz--Hd`?p=4M}(#g@3s82o2FmsAhTl&QW%jfQ)NiD0Y1 zooqUD(St2@1)NI(`%_~s0c@c*euz1wPkMW-y+&+g_l<8@eb&D8yI)zG{N&f&uFOLzWXG&(5 z*_xinPu#v|Ba&g>vUj-|hiNh@+97B-XlhlMjd+2@t?eL@#I>rRz9r#rvKY##`G)P( zaN-T^(TwR3bNP)PV?%B!ZXiIcbq3A3#ka(AR#-~=Bp$a1WoO%RaIcROiuR8ZIDu5b zhs@v`T+24c?;DZchF&D;feeEhsKoOniuvX|AlDGn09Dt(hf0K1;y5r8z!4A#ugHw= z5sz-5*a>F>2fy=4Yu=s?96w>$Wp} z+mCDCC-b?_d8Yjx2*!H-E3jroxV%Tf1WXc7|2H-z3;IREUKZ!`aQJX(x z+d7B~pk-cPQ6%tXR!&O>AQ=<&8$WcmT)RSI4Fy?*=$QAgT4hE(-NXq$9fx-2RZYI% zMyQ6C&>XIwSQeF87^PIJ3A4rtVjb#0>ey;fl^o3z92X=DBi@IkoZdq( z6LXVabCqH51f4w@x7#%@BZTZ``1V)y%uc{Km!hC*JVWDRDzAw9Q?+M0{Jqy;vTV-v zJas5^IhgFq%}?$G-{vQ9Gbh$D&W@)`#>|;#(LnY@qR;gN4dkIa5Lou^<=@QTPjcCx zHR?}J^qAk%{?pYuLh7MBr_t7IC-XgHr2hcY6Q7BG$BpuDm9p-ECRgG_r@@lz@i$LG zP*sZ&V#|^_W5<}qgkLi9Na)A#VIv>GjDCwEF*-1a<9xwe#1GWe&(Dh(ivmOqglmZy zU-^jl{7Ag1qI7efWOx11Uf*~={h6ApWR71j$YgMNg{;UxNZeyDbb3QpfW{@VyCWqW z?n|z{LnUH7E`)SrNHz$K2n!w>$r97VE$EN1PTQSX<_(PGZf1R#CLrP^i#n#*5$&x< zuSH1y3@SdL*>=%Di{#N7Bnu%{-N9B=3Wfqb43t4J43G?mS&~%C z0d-1fc#;(B%x8fczGiBz4@i-{#4tgOQrt>>fuTv_4}8TZVla7?ce3dO1V!%r#(@$W zdI9~@ne_)5Vc^K+rLaqE>n;4qmt+C&7Q-vDn?TNQk>%3#Y{P{&*bMyM&~-DJd2M5# zcy6U}*#OF-PWL=#PX;pA5CP8knXZ=lW9AmMqFsb`let-u zvd2bBZLsqO)Q@?W%7>bChU5K8{jhH)N~E{Bjkd1Su@PTG&Zi^C@xRBnR{AtQ*%k=> zqmu=GU{S%4F0}UXxfroNW&FR({A-31vx9xIQ{}r8qr@1w&z3Mt&k}Av8`uHVv196S-rB)4O%CE%EV!coVnbehRIs@)?6amowCrSp6qs?vv^1 zN`z`!S6^uH45E5WKZ)_CwnH6EgIGp#t3ElGy$)7u%{%xk!c z<9;N20|^gkuR%@yqe4EH?&Qk0?hPf-`dDMg_ohWoy%W2@-i#4(xfQGXAU=_@!SO7OUBi(YwRX4SQlo5;l-4Ui00I<#JjM~S zBh+d!bhJR?IFYQZm~wZ-LNqz%00mIaE5U{YYx5BEz>)wJNniw+i=bl>H69zc%#CP~ zeWP2)n2h^_C*nx~7SIG0miHLbu>)Y0ZIX3|^BY@i`HUfnoK&EYp1?D>1CKCW#Gk}e z8yv>i!&(ra8}$z2J28SS&*Ca)VLDm%(hZTV-!j zb_w($p@yOc_d&r`1< z2_|$aG)a+TqWd=?DOLc9iR&x+yLIGlCQnwgC62h}8v#v+XOl8z$g*^5!;Pj_w@cMT zkL^3A04(e$kY<|NcSi%-Wo}2KJh1T)ql-7Cvq1DCR!R27iigQra#h}klkGAGoPTWf4g zdbGfSE|qsl9{P}|RSU5vW4LYsj_ac>S7v`MomfVtb?D%p(KUHE+kNUpd^K)J8|jCSJ03?%MARzn6&+g-M6!?ekTIA8rr?RJ$x&?_YjYW%evUyNHhGMurLBVRrd`tN z!^~ytu`6+M2=|jduwluV{GT1Z<&@&n*$(=-Jj!09iWnXyhSCV&NH>o0siVi-Ph&YA zch#^Q5>y#RsbyDhCCenL3_nybmn{|oh z9-Zmu71vx(PUzNY7nyuHCDzg8GsR6d%{?cHB~E~lsBlDLbKk zmWu%vZ1V~mjfoKKHl&Ki^(&wVn`6Y6Qbyy|$B8xR+m5R>L{2=MUW(F1*kK>PiB!4Esm;^?_nVe!(3hgme=(&0 z01~OXh#v55)Q7Q$%Oq_UHv7uVvB3~_brHD_BRNj_ipg@(M@XgXb^DJp1_s5VAFO5q zycq`zBzJG#SHrZj3*Tnr5blu*e9G>bmW@`4lf{bO4D_j{Xy|sLk1@L+F~Uj!)tMno zh@^ugA>6PUW`jOs*v66XG1@eW1VcM<36yL4BtTERBeT&&aas_0=ZQZS;s{;H^<%Y!d`pa60o%V5qxkP1D}3jqD?P$mWB#Z5er0Y( zLk8f2Ok=Um7DwxWk&IN1E`(DzSc-ZWXR zLD+_DfI!@*?<10DHN=lIY<^m&+9>cR=(D#Wd=nwtU?)o=gR{xpcoP?s=iX(ev|e#3 z2w1n6sEp1PM#+ePk~K7)3k7xF<7P*J;AHc%@m{{ztofE0*&nBLmmyxk=b59%!&Fc- zB$|dS0{%gpaMrxdiy4lx2qJ=a5Ro3S(~bKR zRk23r9%Igc;su&Jj)m{~Ifx!$*n{RHoxw9|Lj$c<_JRSHC~#X*O9FHyIIWY(jVHM3 z9*lo;I;!+`M3kpqJVs2QYWWUwuc9gv_SzQxCMfD1~cv>n1u|M0v6wh zgJwJ-o!UbQ2nLdTPVDzE`cO9p$7VVANV^A*Xj)f%dqE9o4|z7K`xFvlz;_BYA!WC2ka;pwk*+0vSrwl4J0sd*^Dj`x zV_lItg{@iz9Lj94dwY)ua@b_mZ!iAFLh9Dgl@iCtGtOs9*Dd-wShku*Z!;(dDo--D z%)+g<_KR()Zc`uWJ||waDi(cCC&^hhbkwBBCs7K8y}vQI{cej3D=^&6^~)2 zjvu(T&dhc6JBMzY<`^TI>NOlcc&Xr51VF zOI9&s@i5uFRU07l?=(K3v+3ZFPL8LXyLY<~edFtNS#-^=7Ghi!cWPT#ja7@XMDzR{ zr$!yTnRcB{^iEWP8S=EW*2nSRdoD9NEQ2DtQp%pL%yiCwi8{Q5 zxpikIC1qCq4^rps$I+8wIab&rUG(ehaiC0oS4~E{yeRW5dS*3s9k3Czfm0#n=wf5o z&D{IcBQmGky~`ZSYZYlVxkGAMWxL-Wi8qB~>PVV&yCxi-)bpt)re+VSIhE}|1CnP} zf}^n!6-xUPShj1fxjv5l^(rmQRbn?Fwo{t)42na!=aV*Pt);|5!1uCyW`p7l?e9Y) z)s5Y*<0ex=@3l_M#g;NOHDl3L-u2zF^E5bi{aVK4TW|?sp(Wwa)%~PIMOHW3EjOp8 zN=9zdrcrgA7qPpPZ<&ACb|it0uU|f9r#~d@n}2AnDeC}xm3Wwo!CRKum zTz|ypMoU$uDzda?zf9py#IML-rrd+6ziynQe&6_%9cu%y9WNim=|%KbGOBtiFslyS zb1g?s?yr5KRP_4=clNi;)Kz+|JdrHCS<0Ouen!`#jj_cq<5J6~<#wlQN%RHovpXmtIP!lsP$oH<=Cd z&vyjMe7qQ{$dRbOJP!s|=4T$?+$B3?yZGGYuG@TwR###^VKQ>riPQpQJea*avFCD4 zeK-N)Ba3XKrpO~9_3t>{Vez?am}`7^ay86TP340@hpbW{>n^{@BLC9?K!c z28_eoaruFFwE5iBJ^()7@frSJr}|>Gdm~0SB8wk#GGn?oAc?qcn!EkK@do`dPxSu) z#I$mUv_}$y7Url)Yo5UKCEL=#94V0P>8w0%Z;!}ipJ<-R74;92WSaVj*c+7XiE57? zAV{$fxSFy4SNkWEHI!y4@@0iKh5+nLDrGVrNtRfhNR4dxoeVy9JfCHio}_t*Vs0Ta z@3UFPa*dh7J$UmXQ7wuDQ#v(_X0$@=Ll|ch2F<9pSsdm8nstxF5jznsyBLtmhUR~) zQQW3qSlmkN!QP~M&Uc-OWrrtA!^q~*l2jpxk6OuL50hWhu#w_*3=4i|&NAV6vv8x) zJKEVV90XZ9jExOQMM+rt)0xr5X^1`j>9C%o*xsya=n!;bo7c#xIymzMhF*_!5oN z{X#vZwpLSGy40=hJ>Qwb@^WKuSk0I@rTa1T)3{ZvclP_nqq2=^G`k1x_kyfalU={E z%{pa=>6I()@u_|3_YX-1WuGb8J7n&Oo@ukN?^DqJH_yQyOw4qe@BaX%FDC_7CYiVj z6?mMT#7LB6cc3uKX$L}koOL#~k28{7zQ$NwG;h^mpk$sO&zavuA0vpxBApDZ_Yg#q z6wa=&2Lp&*YB4PfZ(~$z&oDNFzYxX-z{GJOq7WB4k*#ha*%+T_3siv@TP%PfJ^uii zGL!?8$&IF=y`M5tDvvTHFk-3kxK&uiP)s_21ZqSaf)GXyBf;iafy8PkJBZ98DG&pn z#1Fi4xFqY^4}8i#z(?FbrVx;SnDqR~(gCWUFrW`;Ey1rI9X;? zXx|&;VETqrEpr0rI_j^ryc{=?iycb%CV8@o2m4rVWkVs?%EyX=i-OEby1 zwv7oq^fDAVT}r&{cgEjoI*jW@m254xuXi(r{BUJZF72{RJ$!jG9z7r=-G0WTzLi(k zVcW?Prsf^LnW6M{g_>`8Ib2CDX?v&vK;liV?fu7zHp;7RG$jvSykXXRB^EkMWX%x0 zO_*MipzO?^B}UswB3N5<|o)l~Y9}V`|bdzP*PU+p3g5D;NBN~Rs&;xP~ z9@wg%c_Tev5ceKbiK7-(P(9+)D#uF(!opZ%Vg>!u6X$mG$3GFY^$Q*JfXXK=jDM=^ zw8^X@@v{ex7>_XnUt;~h%RZHaj-=SyGV-}SA#Wl}q*hqN+?fv}FX*9VUmo*b*tmsG z^&nl3gsQ>&buCzR?UY%YUW{#hS+Bdaopa({(1p|(+wrg|V%3H2f^5`5_RQBDUiMmD z(Jtf(S9FKdzOGH|R35?aA!KD;kl#+N=*?F_#r-x24hMOYH_hy}^nf-y{XK!q>?~_5 zv@zye*nohbbNG@e#{)sUnCW};R`Mx8=}vo?aSPgo_>!_I72@}9R$|({{GMVw%Tkgs z?b6vM!~kpw99qcw_Lgd)(}@QzuHHb1oUUg`(TdYrWW0S?H@P;ix7tx+<#sSxZ(Y5> z8C!8lHSAt!(KuPhGMlUwdXExKwl}n=>K3+-JVjn^w1iCevmewus=K*((T#qsU`=fQ z0K7j_9oy8UwRk%b-acn5NOnq11$@`Gz;`UMY&>dH(N{Y>32}z1NFNfpC!a{l^Cu1%L+^+?IT9^x5}8qG`{b-xES1qDM`JdaOxXH; zjQTB5Xh-`-RzVQHCi(P6h?l4&#Kv7TCEDCdKXhJ~BE<9`Xp0)8cEo2NGiO>UqpWQS z3nln5_gVt^mG@b>mo=|Jpf<7RnG)9Hdy*Z8Y=>zEV6w;yT1UJsHx}1EBwI)jBP3RM zkp#Yr)UW}`k*~>B@OhP|F_>{9+hZ~Jm%8XxWJsH4ZoTA7bIIPC1XS*L+$DG=xoynb zt%!MDdLx@2<~$iI8wj^8xjz>PR1GY$s~iC>Fz8>h6&PTDOr2gbk7*?<5a@zwm`M_l z1fg^x7Lg<>2>#gBD6t$?1X6+@wjo(&fB;ZErxXSoLMT~H0Trqdzeq`av%5sE0MQWC zBYudJdm?s;JWvoCfv*xhnB(GFl#FDQaDzoPn4p8PB3po@AGTkV{6;lfimW>$MoS~6 zk7edp+lgg=wr#A(8j$V81Rf%mI+wInqi490=kA$pap-Jz4#LeNS-CYpA_C#?CVRulZ)U7@ zr=p)WkieZvmHz-v;rz?&q4t?Wdj9~bKbhtK04;)6vL)I({xv$CGUk980i0Jy#2y~a zW0@qc%+J9+F*Nl}4B73GGC^VDN-?Ykj7OJqmU!%$>Flm3NsmgTfnL~gC8{rHw&yR! z@zw3Im6JtV*Uuhd6Ahn7Qgw8$_GE!#sQ_rrn0yRr?;{sk+Vocbg`{h-8GP<)Xsv8r z@fGn^j))Pte-51T#>B5Pi|oa+5#~zi)qkoOnQPQAl{^UsfDy!>$M|a=W%54FpEAiE z7xY=$fDaOFPu<|k>RC;GM4O15pNaGz8eWe#;bURgKGdIQEhL`1w*>eF>bZdDHAIv&b-MA2^-uMTi6@o6mSp3s(U4& zgfTIEuQANsyU^aez+Gn4Y7OZE1#*{is%C$ywRJfbhS>Z~2X|ov%D%Z>cWbxqcHn_I zo?bq1+V*L~Txl7q?hg9J-o4C&>Qxu?%$478?DBqPrZx?jd3!2NFaH2BoqrmI>DeDo zU={a1CmSXw!}d4Du6-UE)RE90)5N#*t$n?&{zo!aZUP)aPoE+)q!q7fcoUzSc;igp zFOxL)WFfCZ%+K{z3<;B7(7t77P`yg%86P64(K9VGJ(YN=i17fK9qa%+m|Uz@ypjQw zxh(isZ0|$nXvYfHm$KV7T|cE9pSbT+Lx+Me3b(YN^v7MM%EA%@e=_?oH|m8{<}Zg@ zuVgmJGb%fuOa4Wc11{-MVMMm@Wb05(aN$BRQ3`y)3?$6EE;H~5vdbV^#z z^co^vouJzSWLCpQJR} zm?s@#roN4>@?DEpOQpBm1U*<7)V}*cfU`Qa8dl~3Gu2p!Bm0@EG`*otTlQFGTU!07 z0OB%+a=Hgwl-YN^ws%xUzYz{jLV!Wkv+eC7$t1Lk%d2roZu7t9QaW2@gfp2UjEig^ zapE=aQ)a6hKZ$xtt+KN%y$s04?+SzWL%&A?j_-LlreoQWXm?ZF{7amgtEEA6_K#?% zGfQlmt}ls2(y(jCuvuUm{L8elY+?fNJWASFP*4aG6)9mMhW907BH2#Q zCRp^^)z4{Jm(0T3DNRb!1B-pBpm(V$><&4T-w{IaBs*#B@i8XjrX@YSq7u>#yVSF( zKwcy;htE5OMk~SMPAZkM_S;$sY^ly023fcyNO@K5OdPH3q_3kneE_is-c@8_m3{7C z-CKQ7quxrlq&rdG2F|9uaH@7MBGHG)f2Kbo6Q<_>0I8 z7~dD!&+?_Y==83IYPzq9s>UOU=Kh(?AO&wTdxdZzerHb&98JCHmsK#=5a?tYTZt;R zn$s*vSoMMiJxpw{2^zz3XKr8FDUmW0VnkEg(#plykgcyrb3M+U#wJb1emRnf<8rqc zktP=VCaiVQI~ikbxQc`<89dI}l~1tQAlsql3GW{=CHHpw$W~lWyshT?M3Qg3p9hH* zt=GJc_kLhqiHLQ#un%SYYCy=z3ViA_ChpKllzBM}>_9PDFGN#Pw#nHUWr^)DDp|;Z z#;M%v%)7$DCq%`|bY-lZy#S)7BaO-QVQ-TxD8vdpNoiJwqo*4er}jas6anH$OnrMv zi(Gg?8nL7rBiB};LTVGY;yo+eHT@DX1TravO1}`Iy?aZ{Hco+sj?^h#2;D|;Xq^ny zLL>D!h%_1lsNozyiNuWtgo~)4MV3f3GgGx6soIgmodO~>tT7R~m1r~vvLQ%f1Wih4 zGytZcp0V*IkRv-pwu-XUyyP1&UQ9hpso!0iLaOQ`PTXlc%a9?AZxQ}t_R6$b5gh2o z7St`Pt;lTL>Sn9r#wD|^c?!-cZV)pI$k%H*F+3u(!)CdAlRxNBP?zBo>x9zJ4oC7 zp2l~5{{Vs&2zD_9%M*W~#4vA!_$ zCTYK9V`*53`(Xu;e(oSegc-uTmp7;A(xEh8z~WRx5TMjSyQ&&o+Edz zV_3yre8|`c&)xjNIUtS4us+d@cji^S04p@!WSm;S@IT%OE9Y$`R5d8Odn6}d_=rZB zYCCa*_sg;vWrSTGHyE>M1)K5N5)MLzb0v z1K4)N+ygrk$^OylvnZa}1l(1P4Wr|5k%@uJ6tNy73u-+M#IPN>9u#A|Q{;u{XM zqlo}I(tv14f^4~ZtU`e$GQBM~{`5&pnC zPU0>7mq_NdLFddwa>HctxgOHn-wU&EHZg6ItiO#DxC^ZNRB#V62+pL|-Os69`QWye!P-CGV6Qz7 zUOPpj*b0+oiC#p>`p>9UPfWA9yIIbZe8+VkQPYb0P|knic|Wdt)^2WJ*0HrppRot9 znQ~@%-vn#LiA&opQ!nZuMmqzE8z$jH0+OetZ>>(xk1`ECy~MDV-5qPUBpqu~a%8J}8IE-HZt(42 z(}a^C_SVC0F!AY(k`!T(RBW%-&g5? z2tP9YseFW9J9jcY7L#UGYzF4&+A5%IeZY8#SroCUa(xhTGD6m9sdr%Ga@W&+Ad&TQ zMv3vc52EA#r#HN>o_U&ljQTN9DIhnE2|vm0l+Sz?ko>o=r_x*~-ljjObqn)v*Kt&r zS^0xAkLi_Sn$5aVGI^HarLvwg-*xPn)2yc+pe?W|A`>gC<72v|R)*i6Wo~yz8I_$` z+QY{)HH_5%gGQ&P(b!db+s$7L4~@UUjqXIdBfEhrGBe7Z6U<^| z>~{^5CuxjRuVl3#l{9Eler!4kF5Y=dzm$kv@n zR{4=^UChPyL}ScC-)WC=qGT+~#dYXP{cJY0L+UqqQ6N!CvcWmr+i&t^*Gt0(M2VfJ zbY#nJnIorR1=kYpnnHoZOlozmB-Kq#nDOYUMTaq${NorZ!TkK7vZ9wedx z*t-(8<$)W)~a~Q5XNj74!fH;n)-Xr!yHkrlrIFCkRBhwt~ zkqWhdJV&PVM?@r|o>xl^B+*heCBe3#^N<6~k`JlnIVdaBsorA8J109AnBGeoLBm)dv7fi(CY zJzIMWxfBp?sZs`Tt4jreSyR#epK88Z3Njdc43 z(>i5ISZfz=^DU`DI8mVqTBsa&g&g=3*?7JdKNfY396Z_UEB%hG0M_C7f>dI7@eV2s zIsX8O(2eNK^ue(k;LZo;C(%9LOj{}|t+bU-`XfVHz&I0>77%@fn~r3JPMUaGi!XvzZzIEWO9^9*f4If&d~F)D-9r14441Viq1C z-Sxnew16)j@ps$e3%h@q^=)uur?3^a+?dn&k0*#T$$$u24cJ9*cn5DXw8;^PV-Hvz zy!nyGKRYml{(MB$X%e=Psx>i zd#Skp079bMK3GgISIV*S)kTcj^UU-9R%^bKI#@8TY`*LE3vR6_w6D8%pD`#uPNJj9 zl=${{XrD6A2z_TL4!D%@7k&MXwe(Z<+kzj=&gIeiq#%wAxAkFKGJ6?^nG+E1uzZPY ztB%oWOVM46(wd?631N+lQ1d6!z^N^s< zDW)@Yq=qWml&Gf!bbp)#_H;oxE zrPl0voi2zNc}aD9?&e?g1ake$u%7yu&+`1PnR`={wPE0V&2Odphts91Z!&UXl=nV{ zV(ps@f2&ic(j=*x%td2ZZrzdZGPvyKs@*}ekq{_nSQ(*0gTpyOLQo_WDZXev+* zo(80+{gG9r(dS-`=y`OhzcRL6cm`VJCw@Us>6=#R?%!_8*ZfGS(5p6ggWb%>lM1TZ zAA>&?*-OxB72ROggooB}>=}Pi8H%*o(bFiaySx=YKQlk-H56Qbs858nJiWalc5SpNXLsm-$~ zs@em;#LH&n=Bp6>+WsT)c&{h6Hls^&YOl;&F4CVe{{W?9hd@q@^6WgzQspjBndqGd zI5l7s9at7BTQO#;G~*hegK{2KfmEpWlX2CptakIbJd7ivSWD)euhA3ZR=<-Y;AIfX z47&&}O_@hkBDUC;xVPvDObVmH?nl{)+N6OaHpaxa?hcyYnOU5@hlu)VE=cFO z?@W$u?J~;_?SOYPw^`gzJ|wIxqMR9Q9!lk*IWRAySzGWlWV)@`nfz?MjT0Nq;$Yj9}_ya`d#Dbk6g$4vpL9z6Yvlp3|*dr1hojYZ-aMBJA} z(m6zaxQYZ)B!-6ScB1IT*Ai0MB7qRLqmKedwV_wVbV>>=<{2#5mEz7}>V9P-HvN;L zQ$Uu{kM25xeqnU|qEK{T$CzHwWE6hWB&DNbUlv5xn8XvbMm0hcycmRyM>tFf?@;!D zdW@PhOh!;*YYJs_Rk$c(CE7g6x6%leSE)vra!bbc1)X;6Ln}(!7|BZU__A-=1f9-- z7Dor-JyK+&LSTJ>186imX$8GV^YI8El@Id$>KY4T@^_@ijNm-Z=9jS%cmC zyiQhs#N)TQU7IoawLLQ_YFTS`B9pkdK9xBcBFw#%{{XgZaj@#IUufK#0;u9E#s2{K z?kTU6E7>`JBTZ^d`ub}Mt$j4@{v?|Ebu{ZkdX}YtT}YO;+f%WR!13{S5Mq8tN`0}Q zq75jG(=q%)A_E@Bv}jFQNoZ4hdt*^RIs=(1s{TY}6zKOJOqioyAutVzU0}r_M;;>X zA(kpJweuKM5y6jP8?ImiB6gj^fw{nO9pFhxAQS=b;tj&@g9u0}L6Mlswgbr;hz}55 z-0ClPlZ#$Fh1g&)lM&}L$aPcGtsE-4Pf;hkin1pa5G3GBik_R3m zT+VIAotYZ|HUqvO)mWcD-bf;LhP=hO0ji`A5y3so<&Hij^pFi^_S9$^j`ob$5AlqX_lY1H9w+0P5K2? zecI5FYf(~`bEZCjFxD|P4mga;``2J=T+SYBj;ojSY=y;X0LgP<8$GAM6A|jKS5t=e z<6-Uc19mpY1BtV$w*%^0KJQ?C=Z5unw(PIX;4eH&TnD8AVt(nE zrsAiWX+?_F`Q}^4>#=sWWxaJ{K43MH$8g;tm}0MX_bz|SE574xx;*dC*ooc0x@g+9RMLUDiuFz}eZhChJ|i(+UWfyRwC}V*N9@}4PTq+5Rjv}XouIb4GP@5phbQV< zQ1AAbe_3X!sAJW|hn6!XMQqjvZgneb_S-gMpVzZ*)cQt0UFo5#3-y$2H@@ee)|T{~ z_pc_t)(6R(PLI^rrs*%xuEycMB+pUw{C=fNTU#R?Z(=c9V4W%~i1Dz!F{$Rmpb&yr;}|EUhk(+@3nGv(j@hu{w=P2sl%kc_ZKL8t9bYxyXg=NYOl9Uwr1;Grp zcc<{Nt6$c)cpnm`s~*9#f42DflW?882iCBZ-@Ky9-%PW>zRTLP`hG8M7?py+`7&KO zw_k3nZqhvb37@viJW$pE4#$`9WpjF_nyX<$25^mWo#zLRFsPyI=awzq4zy)|sC`Cqx<*AfApIs%3!f%=oj2vsX%{n;UKAf`cRwUCn6Pl9 z*{inu5&q#UI&MvNunoZxn97;mH@FYIN5rkLHa%v=;EB(8IV~D$+IlxtT9wzqf@^-> z^w)5hEN@WV-P*wG#G2h{iv62U*tw**R$I_Ii8FHvDCZD zWP0`p-1F{@cwJXwPt;Xo>nFY&!9{VTZ0q23XUl@gHj~Xi1mB zf<2gWQ%^-h_tatWdVo`=Jjl8CuWJ=;>SXi!r_i+XsiWjl^p0PZjq7Ois&jz@?vtp> z4X$UJbk4RcAa_k)Pt6PmGe$hy>72zzqv``V+3;n3SM7O*R_+r{wpcm4Uh%^IBv#aG zFako}z>xVLnHt;tz`dWD7TY|=a%6{ljEi-xJ)oDhAy`g+aIF)vZXHw`1uMF#==><^;2BTIG z51FXAqA!?{M3jj*4r8K;$HcN)B?GYWA==VS$B7QpG3KH{_w(jRrMDpOnJXO3*y-#E zyW$}~5j?KqZf#+qt~JPwS1aye3D|&c49`i=Xu2dV-M`H+hkg^$dYqDBE!<0#^Hxu5uif0 zoI@|noVD(A(mQuGza6EtRD!HWyeMef7qrHRwYAX(Xh-(y zBMEI0uq@h*2WCB%BCM-Sk?9N@h!MnH%Mijb;sM7nyNx4$@M~y*2Vy47BM34Gh^g$b zyNV1>ej<-B^aF;WR1HQV^9!v;DItmgjeUGa1Md)!M~Q6)$m9{?G`Zg}t>y`rT<%7h z2NE>}!D-fP4kJ_@Z1{%2FK|_jKwR(I1)FW5CDb&syX0F$nudfnpzAPz#{CsKA=KhI zov(-xG?~DB#qIfzUmS@5B61_&O23$Zg&aY#CP)ExJK{Hda|p}0Ctqns0;ydc`HbF< z_c$**h{8fZI1)^FKQJq^?+D*+w=Mxei?|Tn$Ah^b7jaB#^Bukn0PfM`&iDLAf=qbO zA20!=2-siUz#PVuBgxc_05ZFX>7m4baU5@Pq>>;2_oypu1CMy;?%$XPL%vSs8v(`6 zqkF!5!LpXnQyAy8{K{46vRfSF1GvCPlk>!NN9q>X;72uJfJXbbz?pJWr}~VQuVEAd z2`#UP2l90Y`U*iGbd2rf1L7k+xmrc#ZHPc!pE4jt?1`1yrm%~>OIk25*z*c%8u zk?toK$iI)aY{a>ASmoXT>;$!=$Heo0Tl5yH=jv223BYvMyweMTDsKdi+Z2%G++2o@MST{W`*hlct`5`X^ObZ)soD7}Wmyl2+S0 zyK5YY*&ROIv?Y&heDO=6dV44@$9GkJ!;qoATUaPVapL!!KFJ1y4iaiBnjz{s~3sZh6U)XY19m8`m? zk)s|SYh^E5uGY-9%Tc>`_z8za?3n=bzi~Q`Nm2T%PGzlO)|3x0 z*dCI~!^s&~xgD&hdL!Cu)N$fdg+thWxr1&3*KLEikAIn#%*+pIdXupG>UwS1*5~wx zOz@)g_TQh(^DeiAZZ+nmQUN>|ta_SoX`1G_5tFHH$TXIJku9*gjjFmd@$V=N(Z{kYfsWVpN?h!08QyPTK@ocs;v1|;L93% zHZ3mAVEcjKk>)W}&+DSKjkmPQzL}5Iv+&Ke(CtXzw}?@Q_1HU%ifdF)2MoS{I*uERCydT6j+^zIBR2i!^BV-}n3tYfc% z&l1x+rq%kada?3DS!V=9!2bYCIMI<_okofFhyJAYUDCeF-i>(27E!a@eqefv00?e3 zCiUu57c^N|`*q1!=WKqXiAt*K)jXe=wziu>t$meP9TeURmC%pQ>8*;J(9xRA91OO> z`srW#BY=KoM_9YOG9TPMr55<@iI>Ug6g?9WZqE(d?>8Uii)BC%KfKR$6kK!OnBt?AC1mr}1`GuJKh?%vFqz(!(Q>F$^+Do$FIBp>;eaA$`ld!TH4;D^P2M+~laIptLe?o&^2*aF zdS6j|WAyAi33FdlSMbAfgAr)X$RS%?#&v9aFs$82i8(xZy5FXBaaF?UY}w*x0OMpC zd0pR74IeYg=;}6BM{zrs{U@)JVxesx9$=#J^gguK&q7tw0!(jrGA1@lT}UE1>|_L( zT_(1S+U&H&v=0%zOtGc4@hY*hkJRMLSGgXJNIQzbe48-&5|NR<=lX;KW>?f^#RP#i zc{Q)sIvh%lw}dREj=iL-pOdC!tX!i^!QpjtMd4YsslDiZbz8S>Jgd}HJ}srx5d+eC z<5pA_Ac@xh03V$EkZ?0&c=0vk6f7K${kJ$y!Bi=@>;1m+w^2-^;XwP_+qx1C5<9%P%_nGMe~ zmzC|3F!|z0qmM8OHeq+#u~Yi?2$S^&hcUlXnF*{r;wrJ!zs$)eE6#3YTG~ldxo%vM zARA!D_i7fzk=PJsdQCERIJ8wFH3xJkuTnU+PRwJCmuX`fd@CAF+I4Q6@BCY zoRSOMEsvH0fhGW5sc-GBXb*| zBrrL53ce#pjs#G5EPyg`9>9^r0+{f`4=~sTtU?u4^COE-wxdmi`G5zq!hdWDWA6~L z_S8+Cc#r~<8Ua4>JCDRszj+%2j*7uK6>W;|Viwj4I1(MsPq>u6i9~a81d+k^k(%Z` zzzvh&NhGjsfH{)z@fBaahS>iA#LDr!jK1`C6$Nqr{uuKlAW_}5*giiI_8kK`8AV@o zdW9>A9JWNX4(`%G9`YhqE^Z;V5>)wZ*{LP7tL{~9)%fCie_m>EI!*1#1$#!0x4GrnIN;Vw>yxr4A!;j&I(WZs%CVO22XONd zzQrtb7{k?#{-N0MJ3j{JsfrQ3a3-0_3!$wsdKLAYlB9y)6HwU|lmfB$8RZqWZ%*oe zTEIq*ruWkMpXPaK_VB#4wp<)(RQ8!x{{XXNgNQ{+{se?KA!Cj5`l7xp^leCE1TVgT_O3{h%N17Zat~ zs#j?npG{@gmD7}5R=2F{Uovh^K0DeN*sOjxsg&v1&2IwEz?}K>0o4AreN8Ja!H%^r zk|QLoBTOeI&o`;rRx(nIKGxYg-x6m;y)xG#=Uq0y1M@R$gOPP5ss zKGLVER+V(bM z0QdrWPx0l-m+c&@%}TfQd96!*>^n)>Iv&$~(|QFM6jzs%aBD}9M+3yjc2&{(>vYbv zmL+spG~OALd>v0)=>w!+($gteJqS5l50fzFz~{7RjLMeGn_K$3ivkHG^WbQBgw4ga zs?^;5%0|Ya%Flj6s|a;;t zreRiAyOo~L-Nak3k^bI_Khkw0`p-x;QW3u81NUpp%(XW3z}8Z~P&ct2CgD2nCsJ*$ znS24hH6>*9{3~eM0k405X%miK^vce5mZ=cEAJmsCq7~l$nIV+SKU}q`>ep>ZQqp!+ zm-Ixn@qrXrdDrtR+c))!UeK;vm}aEqB#6h4i)|0X$g07h<8b*HsgsUPeD?X7D_GHy zW7bIgOFoIz9>jGlM|T87DA#{Ov9H@<*b7uvjmn-Tx6^qHG0Gk6aWMGfvimz&lBAin z^u=!2rsV+a==_h&hg@Eec^hyitCIZOAEi+H*yv1uPV|Fx?1Pb&YT0o6fcBn;pIJ-S zwYIw1G7w4Di$uH}m@iORqz0()W-qE!Zcr=C+hyXdm5RaN60W>)UA>OGKQWlC zV(tpoC&xxhr*ur5Vr)X&jLghqaZAqi?L8P!rjFI}Mztu9r2ha>l-961+|`cWN4ht7 zo=jt0Z|KT>O5AT;!r_EVmALaX+5VXoP)aX}jLb`Lt}5FDEszMoM5C$ ziI?c*-Zl0|uLM6n=1OjgEv2@*;ypvwtVJtThaRYLI-@w_5OpG(Q-|9BX*AmQU*Rtp$Bty;EdDC4priE^m~6z>*16F z-}5f2>Wbif)5Q9JRb(S=G+3Q*fIi@63d305itAp_Pi){p<^i&SKe|wKWytCk{YBqz z%r;F|(%q+fiTPzcY|$P)(%MCZ*;^mpOzA)BTQd0;SyK-F0h*6YedS3qnJG22XU#4i zsPsOMUu|nNG!05_n!2rJ)h21eh(yYVh;ac~@eU@mTz|Z9F_CvHi66N2<_Zx{66@I^ zJV0K2!V{?)_TKbma=w6vdu+(t<`(bW1+Hf~t+GO-QZ_VVBr-PtD^WKCapykc9Ee2xJEr&_>?29 zDE^^2`qe2ugZ({tS`iI?bneqmUZnP+$47Eq@E0ql2Cl8*b+Yx0)l*rl3udJ zZXUk0eat>Z_8%%WX;_6s0Qi}7>x#ZelIrW#pK%`pXAXN?m|@$AJy8?F76H$0^*o0XN2{PMrb{5rv3681c`E%!H2zavESqcRuC? zpI-3oSRc6a0ksXl+*?crY`N!w9pC*a%w?>1pghOcp;QllnP~uuylnDkH;oC(Nijn6 z%&-IHqt$zS$AuozJ9K%F1C*|(8p94wr*?n=+)ht0U^LgSeMac~?m5^2_ZZIq0D&vX z59`^MfuZ4GfEy>v<{EvObHqzA=b!U~c#y>H%I z^84K`x^di4JQll=>8XSs&!W#BHpXP2f?2TVsCPfzt`LT24v zN&_PMtntpaP7hSM2q6zExx=hn?WA^abtUk*4vzvl>%mQ-(@b@pM6Q5oGMwF_p7YG5 zc#eBCZ)J{UOOy$5&&;{>P7uUP8~Us~e-Iv=!2bX=%lb^(tPQrN{{R=F<4}Mva6mXF zHxjqf6_(Ngk6;%+aRpRxW?!!x^DVNRVYWU<_L^?Bk5(oPmQduKY>A%e)_qH?vs@i> zAC>NuF?hOMjE%mZ>NNu0p@-wlCq>1+o~Eg4YhaE0Zh8wnirT4I+D3wbvSk-r>DS=f zTjkVh4fh_?`+uLzy~h+@GN!;^(l5Abzxs!O0o0)C_<6Y5seW&FYOi4c&GKg9gjKIC zZMY~pPkB|<>lswLTgvmnij?8;e`ct^vM-}v{-MV`NC{ceBsnBVat{BNm>g->;B-ENPNPmk?05{1y^L;u7@P+wN}1+K=Ni6)EU`5TQBNZ4RyN(O4twpn|xd9$5gtU6~~|s*Rxw@ z2iVA-q+5F3Ymd@tMtZb+Regl)_}7merAyI^$i;U*t0=liICM3Y5*hRYgU258Rgda! zq=*9Kumi`$%#3r7Qr6rR^Uu8M?$_FXv{mM-ZltQjl%&l+sBXmdElHQuk;hS?Ko`~h zL)Z}^^iNY`+9}7pxI`rxk00>|(p;^;vNKkAIua+SaImQBSdM^4j? z2Yb}5#RcsPT9U`$M`dKxz#pmGv9J%snb4TkVYO729tj)~8#vs~sGk0YjEk|$gm**W z>xt{Wi0fTHsPw9_Nfl;Q`@7HY6AztTIXKEzr3^?L5CP6k_!fi2b8}J*S}hJ2u?@kljZ%uuB72QRM1k{b^+` z&09Uf ziU2A|038DpSlrhZXos%K%xl-NhSZlN@9{3MI-_DD{+;y0{$wofk!~GS0;+`%VeRHE zczegP^7a7c~G7_VcTdx-8EnM_LuaStY6VgRKN z-S5mLt!mw4QLr){e&Z9PwTk;20%r0t&PB*% zS0854Yi;)sd55nFU+;1E2+os|w_~+eaO1?8+);JrCkvlUF1ap*#=`-N7;*?Y8jq#6 zn-FZ^H_4qmO-j**_L(8Ek@1OeC!YGlq}Iyrqf^lD%cU_2u>k~Wf05?C($&J+3k((!@er-l0#4EA{+L@ilxV2z|xL3$amQELa=&0DqaBt0-6G^DMFQlHdR%a?_u$WL^Y8^)IHddc8~@v?Tr~ zi29@aHps-f+c5TPmbS&PdVtpg943o^x|N}Vjrs8>`dgsl^n_5VqvV;VC*)PnAG0d_U8>sc z3F)4f{#(m!?Lwrp>Mpige%JJSxNXJU7%_J&nIS=hQveL+ zwQB^i5sH%Rkk$}9%KWR*58PxwOn=1HK0e9Om;V4JL;W%7(a?WH)P9_6#8E)_ z68`|>BHRqf=}14OA?a)X0BqC!0r3#fJ|O&H;AE}o9}*4SF4f;*B5s=>W5fgEgZ(j8 z<3FM_U|O824;wm(Usk^zwELS|aFm@D600+$S7!F2BCynv`yt&guPX%(M*jerr^U~% z)g7cyILhe{OBSS%VCu}w#9`gN4|wbzSI5&Vt*>Xd_eMW4o1MMSSF=dgjWNv|0!E1G z)1ZKSVUH1}NF0#K0I-Vsl86dUpl)s_J&+~0%oq)6%RAmE^C$v^+;?Q)X9nU~5_f2d z0QictzcO?{ga|g*#D5-49gYFwLjY{Or$^p2ooYJ%R1p}B+%$a10o~pNkywGPH)NIu zgsl4|k71-5_l{Aa7z}>p$Q(RHjZ?Eb#0VY;Q9J8_2GNJ@_K?^KVedPDeS3M2ZsXuY z2z9pcDeM6vZ0z}kQOw{sz!B@mnPjvFZ(h-K&EhW+pdt0GOwrFg9!+IhDJAM5I5w`k$zQxSD>bC>!kn#vhif^0lpyi2XDv;| zwW7Io>`tYQ-9omlX*znM#&N?fhv898xpwd|%G zpHI+lL|E2al=ɞRDCcP(>jrvCcx2>Uu9jmjQ_oG`${y+XS&D&L85oUCaU(#zhy z(D^v8*uTfS+?d|8&_6?$`ktON%l8mJ@gX)zeYgFmk+BMs+ z+<%!*pME3%0H};s)1X2w_ajRClVm2BVX$*jyO99VPX}IOdWsvEeQO7CI{{9(mDr6- zwVzFg)c|>JeEdUo9E^cd1VHE%@3nSg8=RB-eGbOl*5tfe>BZhXME8Xj9(Td^l-*OM zi}F_MAGiQZ1MoeddV3tpisIG&rwr~%`v>Mr>Xr?FtO(w=4+rxVbrJk}849kyVxKD- zhsSEeuuyh)q-FPwF0%c0sQr95Xg6{Xtkh($c)7Pz!hwpXN+MEl5-z2{SC^ zylqsDQ#72{raJq0S#bp0MA8kopaUQc(s0}fKBhYer9i=<<$QGTN3o_ zHm437#N2ewxr2?0nAx4o`UR2}a5_zx0c}CMm<6@DEKicZ#Pj~E>C97WR!H(jz}Fu#v#eyra#}JKbliTc zVjA)SxchY8Bd=V(onj04qqKm^csiCh`f=;(Bx1W#pm&BGjY%nolb@N3gPPTxX8V4w zv=`%l%zWlg*%d84ucEUbt38Qe*$eJWm(x0j(`Ih%Y;R}Z+CMAP)#3H*TzfghvcRn1 z`%RZp{{RZqmV68C3V!Z+8j)T+i>^?At2drJ0$ zQQHq=xf`ruUFlmYu-wPE_UQY5WGtShZbh}4Q#8c4>`xzWdSv? z1m06-XG+Gyx3xv8ftP;d%I=R*>NnL^J)qY9`tdavbi;MjSCMl4I!G+Q^P%k%lQZ9< z_}Y6VRYm!@$z9F$G@a~qtv8th+%45&s4Md{Sv^Mvp7L!(BTA|7uag6FQIk-%wqDJ9 zA2O@H+cIX!x2Z-sF&Hpb;C#u6i&~O2PZDz!c5Mv-?-IvF1F&-vr6<`Ax*=E5&CkHt zlIiIkppP1drzXmmd`7lY5Y4~LVw`DzWqD8quFPw@gCES*Vw&&91afuE$F^8z`;Rc4 zKdpX`BqN`(j;1@sx4AFNMxVH$*7P9rHnjIw$sY09B`n4Ii@g!CAmQJ=p(KfUt#xd= z$IWsxyzEt&tB*pVVkvs+l$S z4-*%Vjfs0B4gs6?UduK|2i{Zl+y$`(y}FL^Y2;dCa`d)lQuaP1%uJG&uFQ{TWlBlc z#D+4}ZVl`vw}-xjKiKqa46V{6i)}1~gW_So&eocOhU7*!st8Wix?df^-DlHQz`GZ z;<{2{?n?A&I!qf@BjyP|#Lnd99)o4Qw1YHd=b4+eKI zajzfZ`(2(-@>r?gFQe%H08Zo!C{wwr$9^Z8dN({-O+$XueTjC|Nx=F!$h)Zch7BQ8 zX5oX)n=VT3o!|2#{ZKraU!T;HlsaL#S92iF!Rf$gxFx=3O3v-+6m;1LQ<0RxtRw?0u{u}>#^ts)Aodc%yl?>GS}-@;Dx|Ng z1TMIe>c#`wOiE#qH8oBoi*X|*1L70tkBD%wbseOGM1P_pii9~4ph|Qa5o;Qb`apX} zsE*V$pFn|qAbq3NH3*_EwJx-aXlG>arye54A_4Zq?S!4E76se5ja)XO5h0{hiuG;+ z$^i$7Jgj3U5mgC>ic9fS?_yTubmU-u(KNQy54Pl6Y2Se|WWtDO)5JVQh||-WM#Tak z^Bf?6L%@h4x0sSZd|}|lCqgio0ODd37)(y+0Id;XuOcqB06S49ZXqxMcN7>fd5+uw zC_GLFo=g~H?H*9}>_CD+sS0eiw=2q$U0Pc^BXvwPWFHe zZxMnke=sj{q2rS(=}%#xr1rsv=a>U|Z)p0J>?3|6`EB$_aCP>GL=kJP0P=VFiM<{r z*IvLY9S=OfYj3#r<_Vj#`IM?l*d#fKRgqnZemqB(C5Ly2E7?$anR4GGF(Hj^j~-*1 z;1ClbJ)d{lHa=kPwbgW~vPb(&56f8JW7anP6TYgJ*^(1DP-#@LoEpnPEIUNq^CpGy190y>iZ)?!u#|n)a%0s% zJb8r;6)iWmPKW7K0HaY`?eQ2+`6hPw@wqON^co4hsGPj}$mE{>4!;|SSdH@`=hE9H zM#(Nh4YA@z$;bk;*~bu1U?BH%{p3uGN7@Is=5ze7Gxh0?#f!08&jFiUNO$F$&uH*} z=0?o4w+MdY@4o_LeNF1bt$$6^-|AbUmOi*2{pSkvx6(Qhg|-jXzO?-=X~e-H(E%4- zz6m2h58`90>MwKZpje+Q(vafYlhiE<_g1I7XMwZ$mv}hL7e|6PI{ExW=TohnD96Qg zU3BNjtoJ2_SdK`OQ>G?LyW|j94(Dg&@7h!h+i@x<>7fhcvDBabYOZeY29s|(17WqT zb0Y&<-4wZd=<<*8E2Gzinz>l$1vdEu*vu7{eK!--zr@>7dTn9P+};H9j-S%9dZo&= z)_Z;2`%gvq{JgL$$M>>DZ^Vw7 zDNXBfP~E@MWO~@R;aQu;go~0$-oe=N45eGwB9k4Iy?)TQt;*e{4$hAPM_*fG*I``C zRBuC7jgmk2h3jZ9p}`zC#G=9J7}S+^s1v>NCOCzazDD@{QEk_2{{S@<--q_4szPsr z{owFwPM_3EW;i(PM{!6>c5#^Af?^HYTpnhkh=i}fuDQv3iu9{GR zum@;9(+Ft#*(}(#u%Kuw1IZD7MhTip_FKlzs#{A$&ZT(46=dU~YFTvJUITkdylT#B zTW!uZPWyGty7dicI(|MCJ8kOAHS;ODK2r4iou07DujRGJ_LOdxO-tyn^G&o?^`Ac2+fbsRw0qgf-y{pPur%>4BK z0At5$b9RA0Z;3Hf1pzq%S9N@R{{T;3)MsNge3A&SL zwdoF5K8+1^J&X!$eq_qn)UGcj*VvCDS>fYWQI~okZ~1`E>Gt8Ac6Ix2PpG;(&=WP| zt#U0n6wu|c^#%g0mtUt@tXKa4<@4oHX1UEC+SBj01C25$s*)*t}?aM60S{W?nmN zLVbg%5>8i2uOfw1-9J~7%fLVF8;?G^sT9(0rV{!w-jL~VC%a4Dc7HmT2d!q}bho1g zh1RIpM{m2g@iSQcGRp6!kNTDU!9`txu{WqD@Ew3)r?`pm4ZLkM`3~wr5w2QdL z`lfl`th%+Gb1sv0Ur*_R77r5x^q7mY^(tZaFY`9{dI`FP>64ja;G>evqn0D*Uee@x zPY7b5s5>eS&`IV005Z8VQ%P^JYfE`YeVH7jD1z zNxeJLqXb-PcV6?rC-#U%=~m<1wk!8ltpV>TJZq} zYRcE?Sz~q|lQbXVC#OETuTeqSYW=n*y#8hys(W?XK$Q$ZL|Oti4yjl?3$NYu+%@*j^df8zTeb7lY}19RWvKIC;h`)ls!8$ z>MEWAK4slZ#0Epi_=(3_xAHBErTrBiq{4oiV1Dh^+)U<0-&C(_5j6g)`nlLkS>Du4 zZYd#(G30SJ!=68{p;|Y7o9eyPjBJMB@HZ@35}SU`dDxk5i-l%RN-ckaOxtJS40@^U z`M54*TWw*Z^Z<(VdQ9@bZjq@V4WlI!0Shkz}XcJrL zfnR%6eyHRK9=UjI237J05cgl(-Mwm1^<3oEl!GnfahBAU$d?|>Z&1F@;y)$}3mV*} z(gMaY#)odCs%h7OCD&IoMB&%7CFOKN zI7nB-8R@I+CBM_xn7y&f3J~m}yQQlxwJCDCW7bIvz?*FdE3wwVb|B$3pjjNV6Gfj* z!m#l#Fs`YH0P_c(()Pr!5~`5+`8}+7+|2O3^k{Ug8eE!I$~##>24VW=qw%uY?NlBA z05fYt{YpnOg?r=M;$!kLxqA}fS4{F;3NGmx=C%jv?}In}D>YpK+?Uk)Jy)S(oc{n5 zDU)ycW=GTBft16Q$4udQUN^+~FGl)|l^|%z2Owx{_?W(*)jPHKaSxr=lDhO9cTLMO zWq^1)5gKyv zBh@xO=nxEQcf95rCsULY031BUbM~DWfa}SK7rdT)NF;{N#kH;>7lF?(te_!2@IAoj zO7YPHL!HB^EIyvkH;l*r0~2P0-0rS~E`vup{DJ|s-& z4ky}lY2f*a2;VXrB_T_2OcId5lO1Op21oAg5f^Ee&}Y%8vuJC?r0N+(kJF=<{{Y03 zmyz402hX&Ox>b7!0PD$^JdCT-9gaT64*vkD+2rfO`yZ149ksICB%TL>9a}q_JAU5% zY>zTc6eVF%d;#yw}S6=z?A{^^P)`6Wcten z%KNCWxF^Q6PvUvMTkBT(hcoq804vt2s2zp>0PhN!LZL-e))*p^TU+j9#?SC3D_s8o zlQ+kVr?T&<`kNy%%PXn=m0mQy;QnPjIPGnNuo3QBKMMt{v{+ZNzX}h>%)eRA4|e-hWIS57jjixcXr9_9y~OjlUM z>OD^=Uby!DlpfUWUq6|uW_9thlV5D1>omV!%SXyRnDzKU?=3oh9d%Z<)nC)E*eLT2 zh0}5ZhHBrmdD!Gh2Gz&smHf1Ow@Zrji0gX{Q}opy?IAkj{{UHp^)IU*>pnIC&HZ{){=04_&{BK7nD`SWY_l^w5*phb#{-g2@igO} zRm`-ldm{ACfqnVZE;|4NgQosxwe&nd{bw7!6>3J=8rIufYx~Uq07vKWdVRT#J1 zza#rijtHXy+s<)jb_1~Q$Ntg3E6DXls#L8>SL!~kduC)|w#qtib^SiZQR4Nd!LSFY zHI;$(7Vth{y0&L!nSDX6O8%G#f&T!n^Qq?fS$Ex=W2Xu{eqvrbx4oM2Voh<;>-e_g zbpmcofo0aObFTHH@g`ByvFviMs@Vu&t~fKtG5U?w5X?#ZgQK~r=$^8+v`RXHwW+`Q z-bi1GXvL@5IXp|1`ksqs73pBP0Cn@)JWFn!oQt~hhi!ytaWS1c*F80sx?0PTTVS&% z?U&s z^o)xC07aepje=bd^hCcIOWPkA=DJ3C2{i|E+yNi}fAcT>3D)kg-_tI|zbtocEM7%t z;Gc>0ecj4{{Ypwzrg6Yn0U#JgG$wifPK3C=j8mEEzGB}Zz}YP z+zd9u&Rgg${+Zc3-sXb;&!>5pPPW$A6=88}pj>2`%wxxUZN-WB1*ShjJR@S$#{UPuV z)U)fhCGNeaKplh6lPIwBre3R};~1`1(69r7cjf~>qMbQFR-`%f43b^>&)rh1q)OiqTp zPi6Ix$`3_&BSYLwh5a_m9Y0%LcA!2R=3~c|#cGa(LUXgtdKP)QR`tx3q^{fs0%SUes+$*eA>R0v z-ml2&IsIekVN~UOY)GfkL`baiC^(C!#IOl;h6!hhx z0kCgza+a^9+Moj_rLykAYtNXy2c?JbsUMKI}#>x2SPs(_t9DX zSxM6@Bkf}?YCQbPhF_z0#~U)^4SSRspDc3dV|{ET%d|hl@_$}j)Muga37)%X0dx%W zPw^9@S(RVZuYYedo0bxLWG+mvv{yj8iT8{32h3}%84+&UB#;_7Fp;~X)upE^Dj&?^BUPjQqj$1FksIO^ zh%zN90VJJ9F^^~#Gq=RK!N@RypbT;zA)-kr(4nMIbqF3jS zxF&VvEr72C@fwz>I`@pU_mD)MijM=lGLz;605WMkp)j_BE}$m zOE0&u?~TN*Res$Ld`$PP>}>x4LlTUas{HFG$Dw zHaR&K4XP>UQxpFH#uljm07DzOwf#^30GWd(ce7+*ZEW<{%_?{dLHOrV4u4<7!l1TA z$ch(xW6$xaMqJsz)K zberC_sqGHuTV&Rux~HwWS4zH=%e|TH8(ziUznSKibPlPa!iBK-9jBR_>o~bM*Y@Vp z^*_UpKg7N~YM!=T;g9U}Zma$$rIwZHxW$xgciZpz08A!+erHt4viyq+Sl(HWkAOZU zRaL0{+Wzu;}9gQYm*b_WD79yRV}&!=W*V$!u`YUcw%#~elZQ4J=&{g=kB zn{Uyz>B5CaYgBh3?Ns+L{{US-Pjec^^}z>0Kbe^5&z;nA%HmSispOsLZ~2=n9*~Hn zbrbrFJpCm7qwr6>#-^J|Eh3p5&uy9Jy1bUvL=e7Md;b6*FvlTrHbbc_n%BhJC4kaDoah)XC3 z+=1q1x~E8@@ZI$*4NZOdOhH|1`%0VGZ^%8~0gY}~QdTOLv%>vjMI8$$B`yB|QG0?P zBmV%j!q=01S&NlXD|!&hM>-(xZ9Qi6^&eDbFCb9}*21b+A8TfPJ;&^E-HQ zPAFUUG0VP>Z1mQ8^8j3PB}p3kvw|^NmnYpmK>HKryK$DU^=4K zGOnX#l|co*f0?K1H{%?d$`DGfkgvbVhpJcs>5~;Jo6y+3f~&ijsF1sdl?Wb9(TvY**I2> z@5@-%MajOFvqix3;!MJ=ZFL@JM>s{U+xpqI!#tv({buhn?(fuzIPSmB@(m| z=GA=(P6cER{t%_h^m$gUEvF9;WHNIcz^&vT_t_=`WIhnThrP z09LU&eRdW{HR(g^PTcFAdrV*X~KIi0ZJj57fEBmtZ!Bz}JobVJO8J zCdaJy+z8tdz6Y=p@heyETK0AWG2E^^bl%^hnQmv&Gg&FD1ds%h-l6c$$;n$15(be3nbVK`}#AC+QZ3~>+T4e@h_}He5T2Zny zTy01^4m_D-QLS->sG)2FZ==rsC0|~~HROi8eJhTFGL3KXDf*vRwG`1>p(sMJ2cBbV zB1`?3oP3dgnC+f{t5hyP*E-iT8R|iAOX@U?rwXot$Omhwdwb+bB@gyv=347!rMi|AW8+%?0D1$-UO)ZBgV*|fRUfXn$!;Br z7}>3r+^W9ST9$*_2FKXG;#%QY!x3@rv6&r*Xg(AVX>D#l*=;oTR4+zDNWTvKRKs1M z@+542yn20iVP3aA*x6&vz*CnF;rt<|aCyw5RAJi6>aFK~>YkI9-!smHGq92aN29_Hp%<8u3? zX7HT2mM3F%+Yjg1-Ck?tR2C5F)F@F z{>xOTTQ0g!OspWakassAku-RiY!|pF)P}ZJmkQV0#Imm26?Corgy=-dIeBiFMaDLc zI07+owBxya7<_v`8ax>wHvAaQJ2UcYqCQ1J)C=QNJ=C!7WG1oT>S|m7IpzfRf(N&_ z`GbW+BHWnUdPO-@cJKXNNZ9_JyXmqrk*TpXP?sA9f!`8NMef73R1J?hnXkme`=RT} zrP44|(Pk}$SB}#yF|(XDoSn&rp6g$@4(-6(h*8Je$^1o3RChjyb5y%T`X0+F@9r`( z^(zw6yz6l*$`#Yw?l_T=)$9eh=3gdHTv$vmvqy)V9BI!o%DYGQlvd+vp>1Q0MZ?S| z?P;eTeh*Y;$%$8JyLJTeBiYXPBYvfK=SFhmqa6|>7FE6MSH{SB)#-r}!=|wMU>Gcg z7B0k0Qc&s@dV3+x)`|BZB2x9LL*qCjd`op=eDepFKzf_UB6EC%trXUeH0gacPg1az z;2tL93XqDUQVm$kUP&N%mpJRd{6t_}Oc_^X%yj}!tZ^aJ#-!@JP57D-QXO@uRWJbR zJGy98wk^pd5vZaGPY{bAG?_++fgC?Ghlq^8M{-D}j$@(iB42id>#orAD{^f=GZuXM zS|>riuHVd?OK(z^xBIs(u{qSwgD)y1o~^`Vw==h)1kX2QzJNVrxlA8vNBlzK5#Y%d zAThI#l&VC5TLVsgY7XS>Bs!3;AEh&^`4y9MXo1isHPgboCg;&B=T!JBpFG~5W_d6A$W-b5<6B1GBlhfV9m z2qXd_D{Xm^hW;ai`xzikMg}$fz|_Pa#53Fg`$qo&m@pI1iP|DHY}cMx*^D(*#B0PmDx!r?x+XqJ?wNYx*GDzPuiyUw6M<%B?2A(?uDgE{ zN7#yW!J1-gFMAVOkZs&Y+&TGyVp!;%{{S)eKDj4|2e4L2{BM}NpQF(*oeZ+@Pir5# zLCDFk85-N|N|8>BG0^foD%+0d@kX+*{-UJWJO8tj_gDV^fSSPMn8z zPyrv@%3|f4{UcQ2e#>w{`#AW8l9ds+sKRZr9~w@n_+dL=NlQ>PiPt%l2VO2I`Z4rrA1v#C4pG;_?DQt zs^l{4f$yU!jivNb<+A4w9^8+ySx}F=yL#ef{{Y0w5BUPyVGC_{fm;Fl$Ij*EK5uiH z>tG+xjsE~?l>Yz_a5DPcl!VP{t55(ad9rmv1>&okK@PY zXnJp@>{m;(916kOsP~gPH%uKb6jf6@`?ZdFGVc?1?zL8Lj(8Dye2S*#dP9;+wlfnJ zn(Wmms%&7aRD8>-`VZ@@50KwW6&qcOIekg}AEY8_+;ilae@Lw~s62a_nmS#*h|8Z{ zNG_j-E2HUCQqzy%Aou=c`suF`iz^Zc@O`68cAvNIcuFW{KY8x=*RYIM>6ogw>>zKb z;8)K4No|ak);pLRPdXmbIkhR(bdX&6Z;#?17J|*a^X^Q3ENgwS6hywau=c3f`H=0$ z6}HLyz9sd&g!V4L1IQA)Ca?Ry-YdymeG?YSoPpc`UGLn?_o->W{IewEv0RdcYj0&I zf`8g*?pH6MG(7HSdf z8@L_2XlNZ6mfzlchi`X{h}!@Nc1LLPOc1mv?V_P$Hya)%j%$vaD>B;x*(EJ6V)u_c zpBk1a)Ym5)BTc~ocPE9FdCcmTBh%VcZ2tghL+Q+{+Otn?Bi)Gr(m*Z0X7^8bAJ6eK zD!R7QG^twCG`ZbHaJq36GE}}6#vJqJVzRBpvm@);!p_D72PaGiv6ek|ruA&>;zekw z{{Z3ETg1Wji?71H=*p?l)ayiXHF)hOwc9TJ0riuoQN8l2tttfm#2;w>CVr~I*R}#o z$-c{1?f?RO2?@%s*q+cP=vA#TPM6SnQ|ez`Yvq|nznSU&pRGnditI1ju{?Vdtfnti z#dK~KOt5{ z9Y&JmcP7t`5hRTCWB_kt;%0Xj?6>Xo1$u90%Ba*h!(PBFKX;zlCajcn1IUK1+Mc47 z_OlbR-}*{i!ERNq$oYK%EyGpJp=_mw(6QM+iHho8kjJjisgA4=ofRj6Jr2hyRZ2xfM#4k$&a5lO3a8Doc zsdSf8KT+DCE9ru-pY0vfDN1^F4FHnWV!GChDI%w>$oV;BubOgR_tVDZP}pAM;v?) z%v+7uvras!R*a?jALWl-D1q&;dG47LiF0IGdXKy6=#%X=*I?6=>MF4x?E#M1p95a- zdAOJK)v}hy2BuIHj(fTD82fQB_5O*eiWkIs}htV3giaRGU2Oe+D|5){7aj z7rCq(Ap1=xMWOGhR4OfC{X@So9BU)e8(F3n*&e=)W8qeBw#~5Ci1(5Dy#(~vrnO%B zfer}derC@j{Y9pLLw54tgEM_vsv9!9*7f>~#VoIWW~%)YlPu-r_Ia&Tmp@F7=dABi z-=^Zyq`RmVKMJNu>XqT)bxooD!`qnpaxtvAcUju_GZJ0)Z&^1w4uMq#La-bkC)i6a zj>?%Xd$x7NYAV@LETD$s7o}i|Z!8;w>`b~!AL>%8lI*vwm%ny!+TuyYwaakY1Lg|4 z>iy04Yvvsum2siQqgF{z*`2MTZDENl&OeBHuGYDbp8A<|28=E(s*EJ|(}%-$W=LNMgG@Z^y)+laW*7DvfuKc>yR*uX7!k zTQTcL(vo)=vS|ZI6-cN2wL!qCve$>Txae4d`qOb>GW5UPkS>q*1_9j z%sn_4TUUCg0$du2KK__4HI-RfyhCG7XnKR%ny_%^po6+;t=O2~@p2*!zED3&i%c zHgYHIb~btJ0gRVT%FVE4KTxHyhQZ=mw3ze%6uw2SZ-g?zif;!-)A!=Erdb9k}ENYx)92` znikNXW49iMafC-CvZt^Nu&d$#LobP^9SWonwuFys$Jp8u7DbZTGU%WS?J^CHSjXJN z!5}2=b23||Kzb8$-htW#hlf|cys=TCHTd}Wt$>BLV_fm(G22ZMxzxR0z>$vnB2VuG z4NCM)C@`q{^EF|}O$Pd^_;OJvCTFzaYO z45V8LGD6r!qhrhdz`I!P{YIW3>}`0Sxw7M(;8>E;0VKmB?@|*0)PC4c6RS`>MQ$a4 zYfcTJ#2Yl_GIRoy&f~T75FTPS$^1wIhn^u+Y)00AOP9EPqZ7MW7+}Nxsrl~0BisuuoFegi4F7#Y~bZvVh;Ps zB$Ka*J6}W0g?>V>xF^_5Su*kVHYL81B-lKYB4y+!Zi@jSS)JWyEC3Qa_g+cgACWnJ zN0q7Q*^2|;>{&KarD~|kNrAt$KrR7u@9`ofYJ?VXvEn92b5$&ut+Xx9*v z(G;6D*W@&3(>$hmZ0wY6BP zq$u~|Mq(AuV+|QdmRa;=8_4`iJMU+%nwgX>ZM|!qnG(zD2W`Fy znr0;}mQ?lz%8zR30sjE$5>+R$f;Eh&KQIZ9n>toM+B8)6cXu!d2ElGO_?2#Fx$I)w z_8S)E7TKpNqu;?I8!G0xI~K60zU}0}t|~o?^qahs_JTak4i`y9J^2K+huhdhxmw*6 zyonV3Kc%*4+bLRyf_T`PYzzu<6ICGN&*n?77?GwLUtkA_MyQ?;XhC<`it@HKf1Um$ z+5v42-bb_*80Glp6*y5h+JA!)OL2~$sW=})T+#jvN+Kv%+(m3$7Ng7C~|4+rpF8j2U?kquC5pA z0kOUZwAJQT1ujYZm9?*#LDU?CD*7T|%^U~A*@yMECO1{-?QhXF<)PZJ9DfrF(K;Sq zR_bYoU1bU8%Sho9-M=P!j&oMkwU&)mpz$*Pf%PI)>kBb66Y0~Ey_A!{Bpr|Un!G%> za@X{1PfJIn^xl*(uxQ1_UfgPwDvt+$C;61#v-IHVSYg)2t1`d3yHM!w;%u7V^gv^` zB$L`WABhhrt1EH|9s&7|arV8DIUdgx=^neu!o9k0SH-&{B^an-!9UFO-%i_CP{d1z z+Ti`l4=eo42dug-MgFI*%q&BBu>d3uXoJ2?-uiQ;H&4KB>o=8di?5E~z>D%GG9>5! z0Mk}IuFWe^j@7xmE2DYt_mxeDRuhYHdlVDE9>d~S^=#`=R-}fFQ%UTs2=jL z*BwcwaX9^}>}GytRa!ggX189(K<{D2$>k^1Mpp6Q3G~(C zyo_6@un(tp!y)Hlc#o_7EtS%8>^0-Hn8mgj4g~9A%$qXaH>1q*@!Eyt7e+b&a$~xG zPRhN(Cc*yzZ=KEGLFj_qw0j*%P)}~Rsj8!;<5tR8j_;5>O<8{-#c=yFuN%Fxub^Vt zMipPJ?M6|h9PIx9GV>d!=4RDx)crwKLvH)f9|9%RiMyR$tg{?e6Yn-x9oG7fzeeAJZ7Qy+)I6RhA`M{{Zng+_=fc?`o+QT2yHL z-v0o^msqv$Ja;JIZ-M^O=Dan!#M>(sU6t@+)cwfUrTmPCRP_1!S7d&m?ExWu^d@Jb z^{ZOT{*8=KaK9fM&F`yvrJWz5{c0!~Hah{P8X7;JiR7ITZo;znw#^%y*i;S|o#;y` zN*zCCCANF-rSl&npyS;2gJEM|9P$4Eq_wakGHpB8z!T4Z!~VFn^+D77RMnGNI{08b ziM)G0nyNU_L9?&SmD*NhsB?NM`l&d17GtOlQ@3&-f_@)UR>aLOje_YSry}HBOZ2`!-l1ZQHXC8{fo{wra>_RMFmyqob>g zJevp5B{#1U>mM;PvHqvny~K8p%;`f-F3x6H)7ZA(UAX482YmkCJb9Qrzfx0(mp(f< zu^g&~JP|b>pv_L1j?7z!1y5-3O!02FeQA*8G8pLmZ(z#Srk;ypheo68rf9Q0!wYO3 z+uYaS{T$AhO@CCI5lCfY?d|4yo-a|Xbg@b)et0|Aj%8n6>((RDU+S4?tb*%N`>gy$ z;qLU!Ib&1N=>2Hm^t-9b%iW0JqSaB}o7;MlaC5C%_PVm8$`#|c%{8VR$Ydy z5&V5d-j1Ym)otl7b#y0ssAcSLW3Mv*06LoBMn4(ahkMf#EFU0@-lR7V4(a^9Hy8lij8x|j5A z6@H-yaKg4y3Fc;Ty5(#K-TweG&W@^u3@?_P`5y%A3%_>3e=T)Ju$hFx>dhAr^dS}HL|m)P;Nsh#U{7$#JaNP z{e(a|?Mcv)slP^?*tiTSYxfq;Qh7%scVgSKK0l# zxrVIJnDX1kz)bQOjY#MSGFQ^>@^=eO0Jf%86_WN0ej6VU*QUfERIPlCz+HI!PKsP3 zjWUEA>g4K16qz}!@8CzJB=f0};#T@2L`v!WNefQ(#6Qv?Z&6T?W#4GJ#&4Q(6tSjHnreL^sh2njY&Yz^%{(G!HUKW%(+lZVxZzQjhIy&L6RsD>ZWjy z)`X}W2BO5=YaK}euG);=`HX({Zg>-)h4U-2+Bmr+h~!=Jd_mL+J>Jq%r~*nMf^7g` zL1OwI@YezJ#9D%>`H}WP-I^bExq>PcxI6qq*x!i~%YY|dWHym2u*wHJ)F1)1rQhO5 z#!ln)9PE4W-$FL)e4 zWOuTi5wDoLw3g5%*uvpp?6?3)I+0jEX(7WAE3dqRrhT7@hc(qE=Q=Dt3O^ zRdu$IMMGWOY?&^kHdf5Tj{r#KpQJ-refSfNi)uPo{4nr`RVZK{_hqtxR>uRjy8w#EV_?7j$S=tKlWSeu!VzWI& zDLN2Xoko`oJ3_EskbR}IWQx+>iHW4QqQ5euUvrQ^-`n_*1&?K%eZYB%)jE~gPM~Qj z8`tJV{X(jDTzgks>T(=!O?MrN`+EcJ-voM&v-lTK0%XcfNJ)p0? zrWWP2)ym!f04eOo@&RrfN{;DF~>D8&tG)mtwccGv#^ z#%J?-_18adOTxb{=$|PjhWl{Ay`BeK_AyR@%?f-|Yjp zU;U#eBHEv2wxw+Is&G9~)GjTNmrfmHe{BP}{{VJACDtEIyDihX%LN^S+q+&#o6f1y zDjhQ0dTu~dz1XdyCRYyfDkyl@Bo8C`jPe)L=)NjX&@{wK>(Ot$PmhUVMhoOtJHYHd z3lB23+@L`yr$G6d&WW3k)F`f+*cGCK9Dn$>e;<*yOr*7XW-io0W&# zpuX{w57?H1vDnbzeazt7Au140+~rjm5J$8!kxGP5-}CVqvWzlz)-*YPb2*&Y!(Ide zvHiXWzvdYL&>A}5I+^)4^hSpU17qG0SKr`7?NukiUx~?M6=H;+Z{kd)_EbF!ZK1+H zVl0X?>!%>sZJ~(%(l%aAxVZ1y>^6CsJe>TzysK7}7HNkb-|r(Ym+`GhuLp?ou20di z{az)NWD-=9%6~H})ZbvSKg^MZTi1#f)D@p6W@7z)>Jf^E4;8=HuzkdTNQkFiLsOzY zE;p&{i`9CiOj{i+T@#{5K4y0OYMUytLx$~bh66=NlyqLn+zV_Tck?y97pHfidmHW} zd-$6t67iOis%LLZ-t-=|`pQCDJ1hf%xpXpBsb(PeuONx$`0CiV_o*d8^SPqO&M$}? zet$CfvL?yAI_xOF>gJYq*LRja(#ISh)+-~HP&Fx=sMB68i((*fH@$LTFtajMzP)?w z*!w8B!*eOjTA{@{GW^sb_o)+xEPK=5R4yVH@e z+anCOcv34U_ojU{)N}KZvTLwbKH!7N6GUN}P4dxMr|U+q zqqu&fOIcZZfhS|f`_D$`xCw45-D~Q`@~4nKH8S}fJ!-~URYgSy)6nBm*V8$!jaECU z((oI96C<>*MwQg;)?u2lZ!Kspz5w=&v8l_tmT&aXKD4LEk@GDpL$}R3dSn64I&}u@M4?zOt>4@9B6{oW$6x7M@j7VA#mlhekLwOp zsUO6N(LG6@(yldT{Y$agx%#JP`375M+U(xzS@X<;n}v^+v_j0PyC>kx{{TOK=y%4N z@7d@$JyxuOj*g}KN7zV-)hug5J60Ge@CS+GY1J+0`Qz2D1Xm)reQ|Hpc zr+iw^)lHB-5B~tZ=4&geBc((aEEs~JfBpHIF}*=F@vO*px3Knd zTaJA3JjG;vY7`|~zd)}(`}dxO>CU5&t4d#B8g0~1k@LBp{{RtvD4lxapOAiz zN*xZ*+i3YenKuxxbo6J_m!xGn1$K4(p3G8f#Y6X5uiPT~bP~>+KzT@*Y zzL4ql;b5&aC{PB-{LG)J?l*PJgePLMD<9fqjQp**`ZQ~OGfVy-I>Q;-P-R@+(-mQi9Sxu{H*9twQb+%j7Rca@7 z6TM5lCf>+-D!TNHe@y6k9apK_o16A4w$`!ZQ_y-hMWq>4Q9$_AH%`M!&}d7%U@GuF z;w9oX_Qhn#($XZ;hf08zpzecoDCI!rEtV}I8n-32vVJ9APf@*l>_DV@GZ}2PGPH!u z)fO2v?GE+hf6VY7UH<@>V|A>YmBc@$CxW7Shf(X9^)GjNvi6cjy@YL9RAtjy$)$dk ziVr>x;-b=gv^8U-w$BVp*_AEG1y;^iaFx0}pKE{2x&Htcu)j}M65y}fSz)9c0X*ju zsoP1_p@IB~)5VMBo^mDS<636>9+h%ABm2u7aMgasKkqTveP_qrEwQ?wW*>AM@#&%4 z-)WlKGOer+GSeHXGU)f7KQk$f)X|2Fu%_Cr932^7zKP%VZn}3~M*D1U`I-!D!D?=| z5I-hfEyK;S5s#j#iT2I+CEqg9bTNDagfeVFTE!xM4oVPuDyu;I; zHRdnmQp@~Zbc?>DO>RHa17cVGFJlE>aAJ9nTftK(yoJ4@6t(P*Y5xFInLdT>P#_UW z=1ie`wIX+Qvk#Y(Yebq*k|gvT2r83H$C)7)nW|xlZ3!C7y{2lUy^*2EOB7fHj9i$;vLWTypwT<) z>%@1|*pMqFh?5imy!n=#wMdkKJ3;%$vh&2{U6_`h$rq3|A!@tW&Itu|WOBY_zH{0m zWTt(ITJ8R!oN^cf3=-_V;&Nu^(FDp);neo?BUBG`GXtpXPof`VZnU?F8%)Q{KW5^J z`(#pd_R5PzKxmmcJ3#RwDby`*=4r=MJrkl(K>i~v#_byrlvoC#UBMhp(-CWA5S+w9 zBVWW4vF_CC{f^N(qY4ZKAedkyQAR&}Mlgf}h{o|QR7DZ~1ZoK8_>kBNr)C$36&i#d zBp?-_nic#=?0JKF0j|)0z4;$#hOOxEs5?f!B}=hE)FPNBJnlZZD619J#ZR8~@+=3vJ8CkoJnD5Ds4WlaB`zKumHK<-S#20W~>&!>AZ|w2;k*%}t=2G%0 z^jS{Hg2d6|?uwuhw&p>tzd8}kk`QtCA7K;zLep%O44B5W8)83+7cVB1LEEx^Bz3Lr zW@bDdM2(W9ef#?d6DEH#@!B64mir^yl*At2wM>m#t&Oc0Fpc*=ARppL!J%j@%-?%> z9}}3eR%hR%Qc4lsy_!IE#EdHs`}qLLmoOZUKJp$;O?dP*u5_c@^A($l`!A1dTkZyT+NYgJm^oQF3VU_fI5rUS#8^@`N#`E$b`#OTB=dNS2L>6v>gIQBJ9+CkV1eZMkar+}}oQDdNCQD)Y^5ytR_Kj>69Fyz> zw8yrZ*cDHx{BOJVp_Q08jMiE9cKzC2_}sY|rn*+ERCklTkBN^9$)-Cm6{LnOSs80@ zV}?S0?%oti`+5pgjb^sw>s#~rnnVhj;zxF$@L{t4gCSF{NQ7lzEmz^J(pUlYm78{G$SNlHRvt(_LZu!s>dYBGzPUnQTFfs;W8GxGxBPxptQIIDd)HF zA=IulU7<&Jv_@#)^|3qXkx(cOx3d9hDx@jdJU0F$zMob`Qd(EEHn@=MZFj4A-nsXg zvZpCBi?&GpOJy3WO2VoyXd~W9tO~&o`@DIOs8Efz{{V<~J=PMdrIejM!k1wmd*{SG z2ucrNJ-#4RZbncy9R@G6ck?%S@F!=D2?uOvUZkdGiKTADVGrGb)ooDWz!Bb)%{tU-g&YNcMg|d@88l0iv0zi>z$_Ry7 zh}VgGnOzxUMCs2XQz_NZ;aV%Xiv3O(^UTjR`xp4MNzJ#tHiNsv86u35&0U?$wURag z)Qi&4X62;=K}h89z?Pjy4B{bF3-kuI%6X68mm=`C_?5PGw8QHR7r$hUw|2t`d45}8 zjDDLd)W^GC;%4%(ajb2U5GdbqkcU_}t_CWAig_gYl)c}hM_Bts!4`{4eMV1+e15r+ zjDD6uW~~1JSG)!XRi`e+8tu4~_8xz{POOV%pjYQymKuuq_|Dk*xykJIA3|kSe@S2U z1BU+qgDg6&KSr0ZXqNV#TmByB--DcS-oPkhzv6n z9Q}Qn&X%g$77Z2I)Xrbi1}=V8*<{&U9iaG{BYM-8Rk(Al7!JFN_v1LI>cjg+_=sAS zrakSxk2UI+r){-`AL=+i*hsIGxab`$6%FfuBjQHu9ra~cpl-^~-aj&rDO)b(EX~@# zwMT&vrPKGMK2p)DuOTi$*!xm_{E2(%s?o13Ib`5}GYf-VfPkgGce&_(m#r~6IK6qg z!gfre#QAS!m#qZqSBmJ$1-2i7C3=&ry1t7c$yw#w_(AC76%id~5iZ-FpSH zx>jSYrx}{PCYX&A#}fp7JDrJ!jC-v>HQlXlGcG^XqZCr#COt)TPbnIJx!Pl|@BusCThb$^Ivh;CiDc(p_UG8$B+3Yg=92+W_yA%=J!<>O2Zo zt6M&zmoNHZoDJ{hYT=g^O(nJclrQs(rrc2&1gV%c50?lt|x_}qihjomvm)D-;?J3-gvO)oUxb6v@c5A#3J0A1Ly=7Rz>dkVJ7RN2-do}fcnDn0Iu@fPj3fP`WA2Z1R0L5OJ zZXru8VB6lc;2rWJ{y3}J5sI2^QD2MH==)f=f#P0te9J9sK8o!eXv{Z2!F8F zdbg)KZCLdpsuIV~5qVOI;|7> z7GP9wgUq$V9k_{#^ae`PL;HKmfzd0#a>?0YI_s0q^}Y2kXB@Qn*QOHDz3%Y3hAj8S=7wuvf9asGbCVZ$!7K zVWl=?B6g3B#>M%dOSRGS4p&Ca!&1r_lt%QMZ_3I{dR3a%I@I^BrT!n}SzU`x zS{?rY+$Are{{X|Bo}1O}%*#Y~?$T@9^EaVrfU8lH4IlK=-G$(a2?iushc zv@sj+*DEjX5=A+C1McErtLhF$gtNiSu=ACa{82p^G6R)$=X|uURvc+AQQ`0qNDBp>7jqN)ar6h1}oic4h z#5seg@d!DZAE7KF_=QopG#Z6ZGVoP}Rn&gCh$5Mztq>vc1#9RS>mO1rtWM@^m(gT^ z-C-v}2eh6{kQ02y*fb|UBYwtAi~&IAN3%tzId(Cc?eocqSrOg03>H&O2b&@Mm(Y7w5{xz_-t7^Bk*PA_p)eMpi!m01)DGuid%b-($TZML=kA3B(vWjt6n_ z#j*S1FoH}~^9UAOWk!LaI1TxZ)ONMv03Z>-4Nd}aIuHS_WOf?_!k$T-6l+lSS#%4t z?3@*X{n6}sjbeUeXpM{@@jGn3)4wFd`kUa6K4fg23N0)M?dB@Jm;V5({{Rp-Fh$xO z?lPx6y79j|net{*^j>3qk^>S>%oUaZdFC?Pdv+FAHbFM?;LLe^jdiiHk7UDt->wJZ zEt+4rH=l2b8%VwOF)RS$RDYW9GwJKkxrwaGR_TnKZTc^}hhedsNC!KRMo6{0{{W}L z>)KUkbvoXarC9QOd$bMLy>%NnTI(F28l2xV%-Z8Vjd;9$Yi6VMwSblHopMKr%*Iv6 zVi|eyxt*^oUrXuhw2hL-{{Rs(uO&ch6nuhw$}c9IYKtryeHJxXD&Vm0KJbr}gM97v z;7onlj@G$W-){q%FQs)<#<`Ag3LETF4*4;09DI85-4kV7UeKLW61ysGowsZz zZF>QfXpT1o7=RYWDo>B%RVA(@a`ewJzOj#!avtF7+8{{z**MFNP2?*N>IafOH6i~1 zhrLuP=t^rG z27Y%knR&SxwwrP-XDoJofS0{Pr;95V0l@f`w&N7hVX#Mu(!%kjq=<^-GXcm}U64mI zeO8^0PNgr^`WXtu@x347T+p5F3XLJ;M)67S`xi; z$*q~JG@TE99T^`ZI*cG$uR+>81G!OusKtxhheJ6WmVN|fWKfLj9aHEn?_Fr$T|p<< z%ulL%)-7aLWuR$x5OPoPEL*FLlVj#7uqu$Kr$8Bp>o^aV$z?SX>PsDY)Jvt2>b)DW zVrdka*$a`8W$etTPXzl(exK`E7#D}>_NlDCm>xlx{l;}2WMh3xokwqP15(<)y^C@BjcBR0%DT@h z=-C$Ca`%u;L$v|+6Hk?G0|@Mvvp{XU36D2uTfr~U=sh>6vFv&-?H9^28dvh=BT$B%iL>t3d!plYSN z$nq9c(K6SBT^CGVXr4a4Ivvq4W&e9ZcLkeb2PkBOwu z=~$OyU1hYU`+n5a^M0Gw5i)yD$2yvdx~p45gJIUS<~zrirkSx|Oqp&+)S)q*YZU@D z+CDr;)m+wDW<6tS8^{s8I=|HASQv5rGD=qXw>N4MckDbytWR5GXH(K5+_?hPYSf|* zA#KI6*g9y19Lc$>{*^8q5>ChlD(2N%IAqZz34i$4TMkvCpy8EdV1ILHf$b*d^h`{w zV!0~L7w$sC!PHiG*h+WSeXY zYLYg`L08&8B9E(z?OECZ^RVBAgVcG2w|GCVjKpkf0V*qoc;<7hkvaZFWf|8JMs#%cNtA zaO$x}`-i{0=`0hE8m1@bZrUYLoqZVzayafo-LE^IkJGxgH&f~LS#4iWCAlhoKNACu zUAWmb*;*;r8ey@KTQDV(zJqhc0l)@ zyVEXPdQWYDtDw;zGspcO)T^@KY$%019r>Pv(t5&WJ@l^(qy6FI#N)>2>`$7i=`t@+ z?!P9LL82d8`4a0ToMZOsOK?Alo9fruk5k!L{{U4^*PnSS4>;x1OW1oKj`6<-=4Ndw z+YT+H(U1QC5PD5`%~oJNrq8v9$(Xh6@7}+O>>jh|f9CxazMGSMUvdHOJa*hH+Uy~# zD$3d*@htl2Y$r>i#|#@S6;!0NkT{-+PBK-6O=`#O9D_1GlE8D3`imJ#sL=dPhD-fE z#9!P1B32sr^oB}l=&Y)X@;cibkm9u;Y1Gp_)l|G~oDa1=OpA$eu-%cAN^9){+d@F6 zGOyQKQM-Zg{{Rxa<{r>xZkB>%+}R1-=YZd{;zrKR&CBWk0HYQs(N^=WK#6OY%r(`? zemLjP=1Iuu|z`2vwuN4W>D$ZyW3yY8Xz~s)w@-dg1HJ;e@|h* zK7ad6);%>kAFO*~=CkrF(@KVFIGt<2h>I%I^pF=b0Rn&X*5l8PIGt7Nw(tpXb)GH3l zSGbRZ@MK?3+kH7yX;N^{{V@rCK<~+NUUEI>1yizIx18EL8jKZ4Zj9vKgA@g zI{`736`IVAl0CK0{0N8(2cW~{+^hBd0o`UZY$}JXauyf*FSfUc^}jm2Huxv>7VVn z3W9uwlTzF^h?>={nH(!s&v-w_@g>;*0AU4!k7GR1Jw*5p)Yz@M$x;dU^EQ5ld%CVS z>$58#P09LbekVT^WK*M|QkQITu;yARpcZcKU*cZlbcM$V?3>xv&&(}78|Y^YtXD-0 ze&i#^@iaEuUv*V7?2|QN#qHOz8M6A(RJeWD5!>2;cpmaqc!^DKP!ELTtsCbZrjIc5O0VE(KJuL;#)fZ0H#X*@0rx&>9@ZzuL^w$ z`KZt2RdPCj0bg?pgzKLY*C7-sWz%X`h7YwXqw_J`Jay9?saouHHdnnl;uYGxf`@0| z$dyv0w$B^hw+_e(?R@)3#l9lkt%J1^$J0ve{0giDc7`7E-70R;+&S|U(hkW3ayH-5 zDeKYYeysEzdEi-qqMJ9pfx(`4)cPM%==c3Q>+V8y7|$ao$O9z~1?VgCSWr@-jh9i82$$HerSeJ-@*Y zv)w&0m-Vp|?%xwljQT!jnfe<%8qo>xIi8D-;gk_68FYj+Th!YgWQ06Q>RVcp(dL=7 z#L^`xhO9`a-1(C0AP!^kw94o(jb_lC93CSaZd)bw(JDqh%oUo3(SmjPnXhdUhN%J$ z=UL7|z}N}!49#27bih4>ekUTE4-vx}$8Q`@5!Fr(rq5#QP;68cDnH~@UeS$gMCw&bc0%&xNH?=txrC9NVfOUCddr{Dr zxYZkmMbz|j+vsx`L5iE)CZkky8ij>Xs6b>Z zW7^#>Z_E|C>>n@zh;(C#;tX(Ozo*Oz2F?T-V145*3?E?ZK|6cI)=dma4|@pUPTwE- zk?pfU7J|PeQB^_vkAX8~@;FOlW;uEaE*4xu@)YV7_Q0734HxwdY2MGomh3>_j%PkH zbC+ywN>4~-u2nhWMXfuVxj{df*H~Wu*5G_Wrd5K+T6hb=-^{@Llk~&~Ykl$%q)7%!E+ob79x@SvZ z7R-A;)3fR`GqzEmRCSy@`#YUpt^I(f2m8TSe_r(lNnKfGWxJQ@@Tz~A zeV>Z?R-8vvuAHzcsr9}`llYokI;!cobYiWETGdzwvyGAO{pN+1COL5-!{0;y0K=Z6 zW;GV{%&WWelETbf@8kafY3a1yU$ushA2Y=|x}!Q}VFI@ROO@hiIv=YBCq(*oH+_gV z+{c~#Lmp*mwl6n{y>a$>la_P6eZLc}tGFvN@}q+>UY+%=cB}sYnh{!ULa_14_nTF^ zyp>k1!9)8>oraB`H#IwOuHZ%xdn zI~6iO`*+&Q@MX0YeNw@6s-N>RB>R?&a{ES)rez8-5$s;kvc==7U zUpn9I-@Mm)cMb6|Yqd)jZ@HBF2#Uk;_DoZL%e(PcK&t6U{oXev{;7U|txE@9I6P`A z-&RI1X*`b#AS%LfQ`@Zob{Bk@s-3^n>|$D9u_~OlN&+DFWHE0v`BUqa_Dn`h3SsWLtzy zX5x50CJ|c*Anc!cZ-ar~cv2KD!kv$K>RJ6G67q%c!xDAeylP{5-%GQjWqn0fC{C4$ zgz9@_tj_+*PO@vj?n)bWFNR+m_<`ve-(PKL)w}WUJE>MJ$7Qj>+idI3dU?zKZ| zv!XtKi2gM(&3zWdX;zuN>A4vTkhX!O-x9|+tyPM)S#8N!bFO3u>bO|Ao$e2E@GAEv zdFNPcoUxNz(*FSJKX}TK7)M_Rb5LpU9RPjh-%|Ac4^cMT zNHyAd1f5Sj>Pdf0%rzUEegkfFlb<4fKTO4Zym!s5qtvi5tIX;ZVzq%ww;at!Tj^_r zm93r4QfrOyXN3B9CoeCr;nz+0IowEH%A zUQ)~3Mq&Q|Mmo+CV||Fn?f~&M-jlz()OVqMr)i#3)vd|H>KM)1MTcyvJkLe+HYKdh zmc)j!PKlZB8fuMp)1D>oQ_HOP(AzEvB3I&P3aurNYMu|oU!`L;i*Mg)W2O@))^IZ` zW_`G+n_hUB?pwco1nN=jJu@n+X+V|-0Y&eOU|miiyP=M z(Io!a=v{sP0AGzy(toK_5PsA9znI6q9AC1txyYZ&*w-lTU^aGq$ikX@evMCBb@p3z@^Jcnsb0Hvqs+wB znRQMAe%2e}TzZ!}ywCLe$W=dfkCX8!D#v=?x`yM}9%6Fw!pF4>J;rBsA-1L7_CHQ0dAs=6oJMoq^1lPya~topx4 zPJ2Nk;s%VtZ&AhWQfjWx0PAGI<|opzg@?o!O$zzQzyh_l2ZVCadtUZ8S1jdav@tFl{O^9k!rWa<`X(|BGR1Y*@SvTa=cUxzp`e)P#oiS?94)&&iI^~D9<+o7k zDV<)Gi4E*T%V5yRzBu`pIF<9QPFKrX;ySR(do1yBg;g)V@h4To2@<9#qDn+#q9xMO z=%qcfa(yFW68txv4-w>m#BYFjk+eWMJf3&+92JnB?eEMs(5)gu_Ywk)1LT=g>pc9f zo9T?qj7rwqC?8Qr{lA%TgrNgoG$4AnW7UyekK0=)LZA1B^BFp8MOX4i%GvqNo1Oln z2DbYK$o!e~PeH`5AE!}WOW3H2pnqxe4^>MreN}cMojo}}O?UC#$NXx2CDJ;UsjXX* z6mR*|wpdu@f3tIL_oGXVwbuDEePLTgfFyV_oioFg&;Pp2?svFFH%o|8%2fA{i9UBWF^scMZMMjckd=vK~c!!QdMhz{<2!ztqw%G zwaNjwQ9&n*;cnA5#Vy7%D(4Y}fNOy&{q^!EcFQ8P)ACq4}}Q%Ao2=KZrnAdOX5* z4Srz4g4|6Ta{DtaF~tEMAS?_I+r*Qjumna@M>4rTWzh-g=#Ff2Skdw3IGCmG)tsjw$QbJV>roGhh5Zg_~xPaUu6nN;nYy4wH= zLH53$B!prmc0GXWnKf8yX^PqxbD~PvK@w$eusM~R+?9^rBVyVq#IR48WZ8hPkR+4@ zO?cCO%CY@|3dIn-{J>kW8EZ(OCRO-|I|sC5l24h{js9kBt$=T+qr`9O05PS15=I~Zv>g(R5JJ5xeD4mUN=OGO4A0g!HOHssq5fik|+ z+)kpi`p_2m%p7bPDR(p2xqXBH-9bqs^V z;vz4Itlg{N^BBDV<={rU=$JNk)L`@X9%MTD4m&xUxxnT*v|mGfMibl4j74*zNYU54 z7hcKGPkGLM-aVrg_}~6x9r!%Sb)sc#PVn4(K{y`pCoa0rEC6o@*udYBuI@qOf5gX| zJVf#z7@aU#cc^VK04#z@w)Jm;p|~ScnS-bLM%T{Udb3o{?os zt~U(J%ItF-Zc>1O$oZ7kWzatR5SLNFiC*SH`A>Ec*v|1}Xj!8TjmwH=sTTcA8gepA0E&CNxK)*2rs}x3n9ebBs{LNJ!14he)64p=UFtnWS#onMYMYM0 zbh`c}RNhzHHRFXS+5cAa4!1oR6Yrfs8%uq9Ra=s zw*^&0pyYB7<|87vu3m;K{)qWMsK&>{uEhFoSTp;ONB$!+vKZCg!A+az;78@=OO69$U=ss#5JJ?=I8K=zfLU#8c0 zR=McXV|f7axpeifPgQ5McUr+Y{*X7!k&)JVeU+33rKX>w_~l<+J~c?ZOQ_;>4TI)6%h9JR9Gt-9ZQsN8R>{Yi<`dTQX}rK&r={_l@z ziRreSJN3UDO?dwRSkg1()?a7QH{^7WQFP|T$jL{l#o%{n?s-R8#a@xrZNTmZy^~w- zWRHnRatXCgJ%x4PgCX?{lKB-imLI66%O5f&I(jpFe;H$DOVwEHeq8c3%#UVZ`c94m z5(k(&vJ%BpvA~s=FAnEL?2b-u18KTgYHAW?J(OuLDBq8$5C?lw%5NX zWh zpL3lltpxbFTZGBDiJG&-FoZSii$%e^cJrC*lUlP<0LYCqBd4RQQT6@7CC zgs9hLXb9~Gb3=oh`l?q<3Loko@!zstl(oM^e^F-r8rdr#+}vq>rUxec{+(lHVOYq^ z$x+C8==SvLZBpIf+xZf^KctEWYXCzI;5?1Q&I_9P2F=d2%AZU6`va)mT4(DMC>UK@3?>jmdafM!wpZ{jJHF@l|7b zVQ`u>?AlNU_aSv0G|$C+dy{?M55ztZ7O)OwfTpCqg|DU7fgH`;d99f_{A~H>s+_K! z*Dt}!Lac}E*x{GvNyEx40xr4oN!0ZpTKaz%u7bxx^j#&YIpTSK2dDamP4*%o3anSX zha7xF@=(q3T-M8upMsarY_J9``nGe%GtZt2$l8%M(?K&SKSLQvr{X*I?&)vV7 z%jvA%8@W4vcfg%U$Bkp-lkClsvU1!WsnY#T(X%l{jcrKG+@+khUm>yEW8|=?^QNbt;qwCEOD;-YTTlaOKp(n!&NZK@%c~q7Z9SWw$La4+r8r4QOsfBq~##Gu%v8#zJI*abvz5z7|?rdtxG9C_?Tqtc8h}KRs*XZ z;y5yVT>R%lo%gl_F*=3@U8bR6r1RcAgol1^LpoMAwYS`ad!NkLU}cW4(=Eojv)%^O zsq#NEh%0o94VTg^$8c2(4fYwbGB4uFxpmx>cu$&bwX8b_h5quhs^X05ewJ-*RhvDn zsi0u3b6HKH%7DNTtxXS7{{SxPT^fYCzonDG4dZiEN^6w9(3|~V8e2^AEPjb@9%8k& z5CPgU`7`Jb@bju0dLmZ8bAG}bl7E@ymQai>s=#)q{U$S4{vLHo@U0k`1GU`!r1+Wq zjFo-Yv|APk#-9*=sKL(0>T2s!S$0j|Nlw3DCVHny!TmQ)`Us=y)lQDR&%DWcp7qA- zSXoX()UFhv@%+zB=vC8V8x@0h=<(xG75@MtS}T&=doo7?%yq0T{_(QM+EV(lyKAQr zc56RzVLc13U@}l%pSs2VpK0VCq3R4et%0^mj^5CG8IK}U`k~l2k!)=}JmgrksO~4` zZZYvK!0Cx%xCv1GzTnC~M^xA3exa*iy}AU=2V1J!4Qp2Uly@%Wxe{wRN&4x~R>-Z1t4o`>2$ znWF@AtuW1zE|G83vnuM9oVxUT&d5H}aZjc@m582g&^oQ%DFJ{;o?DJ5eKJ zTGixMCt~tb(JVYbYA2K`h+9GZg(tA`D$L8GkF!!em8B1g*fBf3164c60lzq(^YIX0On{e z>4@4Lr0o9y8=iaX9-Hb9OB=eD4sYu)8;7djxF-F_@h=`dKh^Y1`DuR0w9M*Qo}KBe zR^eu4!$D7(=kJ?k?ABQ1l6HR*nZHw;Z|X8HvF>f{nD0a24`~wm^DMTcTM8jy2p-~Y z$KuTOvo37)Z)qEDfz#65la$qt{pb=V{{W}s1V!VCp6Hc@uCcxp38=%p3D(Wc(d}88@FJ4>)^|JtqT7D={oPI%TNjcLGAAY zV>o>?eaFw{Na^+?F-u=v+ScRx;i)Y}KsT>3uO8=^m0z}qUsS34&!2N4^^Bh8`&*D8 zZOH9IzIF2{bF&LF)V#Z$0W#kGBUD0to_*>+N88pv#4K#OYbO@KExeCrU;Xw!+IpW& z=&wdI3usR59(T-_>D)9*nVmIe`2@`cC_6wPa(A;GHE&a2MRH{0{7fLS+HWahumI>w z>?`zxXIqy!xD;GFyBB|fD)O-!k@k&7Mi;%6tm@W;%wWYwl3^;)PBk37a)3ypEJ z{{Rv@WR*rBaz18zKdk2usFl{Lr0cuiQ$4NpS|QT~*gBtH-zOgs>whiyn@n~KSOeRM zne_c4s&?aKlFWWgy-R-3H_6uI;EoG_*?%FosYQSt!0ZvOL`PLRBhS1Qwv|w8I~vz9 z^jNN^ymP5`)pTS@uE#od0N&A2d$vckcC@33!oW7iKzvHMNS*8hsV+z3afp86vQ4ZB z9>-E8uB2>v2mRu1Qe~H6T!2q^u$ezqVSQC^rJ_ihD>6IV?K)o^%09cEn7F@OCwX0x zzle*ay%wBo@eaL;Ysq7+Ff!lLx#b;HpLucXE}u?jFYB;Kb=KG~w8HfKlaG`E<3=X& zx`#h#UCx>9-9IEcso%7=N8leb59!?C=r(<(yBgsB4~VZDFIr+UPRlyma#bMlE9q^S zV@dWCp^feIXRe9#9RbXgt+681yBmjH0Xi|#64-EKTmmCh#|Zu^mt}TEw!UO?Sq{Xo zb>D~vtb5G&iLXJjIKQ8|4%<}w!nGiu5Kllp(tmoyVtYU`wbN=!Mc9l|8TgVA0UL@D zB8~)7HX{2*_YV==O6+1T%qUJ`4Gv?}?80RbBQGIDBcUGAqwTO09g%on5%Q*GworwV zb+I51Cyz2stXYoz;@4KsiGu$Cdgu>2#mmUMEa}f~^{KMy7L+5Io9XFVJ9e(l{ide_ z6%As;zVAAS@UcCs+30+(I?;Vi{prDk`?k?P%g!(ENJ4 zd2sSU<3~TU zMhqW4aV7O`uSPySf}07r4m7Dt`h(_X<+V6>gHoMa zX+LT=z&|rb(NpQwUL*ZN6zQ42bFu#bz=vEa@o~_7m7w4vjcfS%{{YN`ol@Z^)=Ys? zAG>DG&`X}0sl8VKDNG_Ry=2YZnRZ146f&T!JDHA4)yqmX~ zO^mwOE!*3_0FTUsdWIerHTU%lgO5cS4NZtw?rTT%0sKsPe2kZ0qUd~Jl)q+M*_)MO zZ&f0&?gjYR9!MT$W2}15rgZJLJAasEXn-p}>8bpmkK$szL+VRyaBXca~y}J4>u8P*l$D;Qs+|)NCenhnN z?bY=>%IfVRld{B*07w~~I;Wz+SK7mnfAo+&Ih@#iL=x-^w*>gswW(D3Q*Y5P*G8{9 zrc&8Cb}w-ijj0@NHy?Rrewr`=3FqHl^6vGhR@bBKw!4%K_>gfgXS}rt6%)DiM=TGt zqQ$!Cm6fI0n)PQ_qN>{s7Qtg68-J7KhvH@zs9o9gjhoo^oBsguAEwir>D20VeKors zf)lUYqeb-Xr@F=m>JhNN%ydRH`D{i_=rFx@stN7+CsCJQyNZpS4`DrP zqul$rfhXm93!`OXn*RV!wOy_qHYRWKar0>+iXOW>KQWo9W+>gK zjq8aU3>8&63WMCwSIG2^RdpIZm2X=3Uy(4~ccIye%xF?k58X-rnCu>0SL#J#e$W~& zTNnf0M{d5}IQWyXT}7d2urGH2KaM{#yQQOKS}CTBEO!2s8#8CqJp-SeQ(0gb-slMZ z-^|f@CRb%tvpV)OlikS&o?#J>)8K=@k>XsZq&kgV>5wT-)1_j0GG#uNsY?A^vRIHC zOQ1h7Uo5{w>3x~@$g2v!se5zmfO1Up{{U0u-JR4;_682e>|bRc0(;H}p>Z>9HKsG< zx}IIh*vY7yObl=D1U>o+r@kzW$bg^!r$V7i@-Z z{TrKo7)Fe&cdNCDQo?!$A4|)`Ypb&YmY@^85J+E7H&y+hf80dM`epi; zsrvRd9)4}VME?M(U{kGu?GcX~spr0j^HR@Q!^Is=(U1pn58Lo&mlvh7_I6kIH-dae z^n6vOq(o4afxur9!z8j+y^eM_z%dx%J<}_bD{n}m&SP3V7AoydhNT7Be?<2=-*2|% zzH2Jj!qz(@jr*BLo6|1KLIZYh@yyGYbow;oX)et-Me3`ONP3tZaiDpZjhD17X$m#Y z&xz-qH>YKEn|teVV*96!{&y<SWp2YlP7g@R-#&p8rr?gPy`U|GreVG{4419zA zY4bAeRh<_${9Dl+kN*HMcr(?hv6i-8;y29C`u_l-K4o>}Vrtt)n797(MAPZ-WhM4` z-MKB?%j6$F5~rxqRrRwd3unlZ@>T10O92c#gXBv5h83x1ZZ+>6k8Zgl^ot+x_o7+U z`rUUG-aa`5pOZc2q55P{6t2YcKk!tWF*A;|pHvO%dZxvxr#tN$oZrZ0b(P2TQF4fyWs?ls`Pu-#j6AkK4kDGZpoyNoimG@B><9?5A zjX-@WZT|o_$Ey?ux%NAKwJdt}GWKO+nuyut9(zyXV(QAf3n4DWwW_@i)ztW!T76rK zk=cH8Fv?B{1NWVIGp_ZOe!T>@EYH!>$_s3)J36k)sN{hw?9R5}6^ZNz!SI1Fu|RH{DL zBU^*$w|zrdWd_=h4JFl(dZsVa$`@2AI!fDxAIyo3LJZq&HU+P^5D@%L8StuGLa|%^ zEZ_9&@Ve$BV`Wr+pwaI5m;D>mGV-j>!vMn@hUZ71-wLu2MD5&zbYjR?K{#Qf0aVD-OUPo@cCjtaPk? zgL7eBR^LHZw%MLhW*v)n)ChZiPaBnQgKCR-nB_}ydiST7=z4n-bnSEtv~ADzx{)eM zsUUWbVGq)a9*>IJB~q}=HwV!Gxt{y}(9U%e{Dw>7oxf$pg;5Zz4frSIN^ZT2ht#m| zt1KHkxKYQ%W_MAdyq2%HcJEsUakkx!U0+bXud;xRXsa;6TFdNY_^ zA#!i}E~ISm!`?~G=qZZ7>98k!Y)g#VPfW%AW7tuvP{fZ3xlPbIogHVbjAydTYE?E^ ze18(tb5hi=L^RXccj-&5qMqE2@lL|l#Cy%PH`w_C(P8gi6^FLIWPhhe(W9XC+X1o17l4i`K+)CWuvy)GIrbUUzkY;-h%l`mTu;)bn*|6!jDSkN@R)@HA-7i?@ z6I<-Gw`j5SMsHYDX8NV5x0M!h!}C2S2dL#5++SKZX#-y~2ZMdRJL#opHNZcCF8=_| z>uUarf}O`_XWmZm*LBk&%Qfe(RF`(#7&n4J*fQ4(HoHdaV0ZC6%-FYWyS7IMpAjhP zS9JReC4_79Ir%I0=yJuhdf(LFBg_t6tiZjkvPQp&oammTr>IxMg|T^HPchwBt5;P{ z=Fo@+%Q4WBvUS8y#rp)$%pIkPO{JrASVk#b~Y04CWtk zCJn3rfhlsD9IN{X*EhN161<+>30-Bpo^_}e$pCMB%+(2YnAItxM45fVmf(1eTfu(j z9eVc2u1!qNp@?~CMQ$?wWVab>*{;`pe>}qxZ zk;Df|&$B0~QC?f^NIDz$5f^l5j};}hYu~LcWs^jYB+U0$>Z_LOju_*H0k!3XnVTmiz z?#F)9$NEKw8z?CxXwOsh{zA1wkvYCpJb4vQqc{3C81`%f?=3N$Y)U+4*&NGkbK-Px zHrbxhb3=lVfXKMV?UID+sg((_5UfERExmv;k)?TujVrlVjWPf_ zg9P=Dc`zptuAD^H1?;kAbJ9K}dn*E3I&tDdy0gs7c+w|i6QE>@ZA12%9?JRV14Ub4 zn2CH}WTMT{fegMQ>%U`CK0Zd*PanqiCENQ%l9l6Fo$&^Z^9VVOme~Qp*y19R8=2Mb ze~3by?@{wVWp*;+PlyNE9LY8g1RrkV=|4mORNHaPn@v1&B2!kRuscB1(Sri^%C>n= zO}J5#2^=4pv%n2{?xV!SI`R*Rs`QpnSNcTmUHH=(5}uPf_m$M`mz3jL&OY5}`Ioiq zRz3A03pwpy?Ba4)^WmH=@9Yk;TbHknC78NNKq%=~u9sh>ev zLFQPfF1q*mjIl$W(m3#cGY6N8<((R^-^W`<6DOsh&HAN{fTt?MfMYM|#rs(jw`E|! zp9A@tKByM3!L_r&*NsSM7Ka9hck7}I|O97+t_>%GR zFLf&1xCcYV#7xYEN_bzW%lMUe-B}XmOqy9ke$o9$_=2^G?N*Av`4;$@pHg+Ky7SqM zZS|`<3dedMC*;a3%J1quF|vA<_C7`SpQBZkl17K_-?#BMSy){cs%2VT99X=sU?G?I zJ`ADi_;qx<21ogYwouilvN>b68>7Csg%I~cwJQe>y3jj}y!C5RRbo>1%~n58s3(1ZGi$^u zVW_w|))$Ett{RJPkSPP7}QBI8?H_iud74Yrp+SbztO zN>8Lf3_oz>YvxO-Y;@B$-1*nEMm(t|F|Ck#uTmKF+$%eEANiRhm3LueA+^Xq9L;Z5 zrks2`>~IE`$@eqP>d3XpsBo-zG2z2Mu|@1;GG%>2+AL#_ zjJ@oPpzCCV=6UC)voFANT?i~z<+trU5M+l5dH}82qpxXOroV|^DSIe=U2*CiE}oNu zuEf~3SnPG9saiS)IS6t9cI_J`T|P4<%H;motqh?yMJbL$@S+ABh|Ema7oQWAiNX<%Or{ zILqxB^H9lOqj4dZ_7m?t3(!3ka538Jh-=^9UIe43rd4i5OjndU-^|+JT)}nO+CC)~ zUy*cEB|Or=SLP-8IshMeSd{x5l}|_qp*kHHcy^npO7aVm zTU*%tO|3ZFK&pXLU*2Z=PGA=>9D+1u`rO^UsCn_{+BS9n0B>e|%D1wst@M#?Cehj% zPue}q&eM#`dm9uI2ajVm*)3ma9Pl(ZC^M7(qT}dm$MY>WFGPk{Kg=;#y8Lmr3+0pC{{U&k`2HM@E7LlWT%-M) zzL)AOESgsAJL|fp_fyFJ($d`ZbS@u)I1}WGx`svuP_q*ID`0o_wt@cB(Y+JuuTb^e z#l@v*>|grVGM}_c=kRJLl)i|Jvg?g|JxeCV$;(=U7GcSjHNR(QDg2284;RR%Y~#uK zhZhyFivi$F6FN3mYe=v^Nvk?d5zMXXc=ajnT@^mkW*Y|t==SSUK2o-{RF(1sZAzu+ zq_-@CRl>lv)(>)?e~D#_XWUK1rjFNAFHb2=`){xl&W6mkTy^a3`2PUJ&&BL*Jrc5l z`oWs^A(wWq4O${4y#Lm z$_p>KlM^Ks8GNG+9rLN!Shi56tZ}~XNNz;0>ojI#)GVg3r$>Jh$<)syEhW7eFY!O8 z{XUa!elrT~NA2U>Pba`!to(!puC}n?H*duCA5~SH{Cj38+$<^5pB(94rn|tyI zP3zcy>jG&yB=5WUk&|VC2Sf0DODshtc1tq*wCFuT(<5#AEIk*MzO`-zz1_ik(_T2{ zZkZeC+j+6l!Q)53o;8_~mx6Jbk)VHeI zyo2)=vevzf)X!#Xrr_IAM(x!^#`?(Qz8}%UW&jPbS-I(0O4x#{Ev*1NY)ZdUbcR6B zP!5Z(?M&G>G_86YS1oBCL(sbG!7_tUcLZV*db09Lz6QQ;*d$ zk(aaYC4Y%8)7=`*v62;!Wjwcr6=+;Lj zFI4Kabbg$v)Ew5=HqdXxC#5|-iG%>AfP-9+IhUPd(>Q%s94=*Q`Wg&*D>?d_z0aYK z$Vzy>W;^xWI5M;4)X%NxbGZ*U)KxMqIA~b207>8o4yowej*`|r1#O{EcF&L|XDZ^3 z89?sd_549#$4~VoR{b84kCGV!0k8<*dEAw6QpvC=veHvvcKpoeNzPlbDz!-a$0OkQ znmiW>PyYahJdpRa3#fFz^^2~Sz<%JPK*)uftu2F}iFURYwEg^R zo%_oEt5CP6y<_aVWs$wd64i=#$_l3IrepnH7W{hHs3jU?uS|7NZa_i)oq3wRt}Hkf zk=QxFa#(c=(sX_v_gGYoeDrsxkVu(y$lzc8_VK>De{ePx@h(jyRIN zAL-@mT|(UK%9*iiJ*uSWIh%#X10YvcHAl5h&?bhp?H`i2px%sr)%EuRbro@bqMqT$ zxt2Y5rJQVvZNXCMcKehL5X(PH;J#i;*KK>EuuE^;%&yaVW#3C^uIavx&CJBJD!lL0 zhT^1PdH!ZQ)cq6G{VVEOZZlnvU)*n~_bDI5`XOqrx)o7C0BiV=uca(TTNE{HG~v7v z9I0bzwXr`leIw-xy6;h=DJ{pnk`*sY^SOy7--pQI96FCG;ZdrRlTi-$>%ojf;z24Zu;z z@OYksigbyyJgdT207&_YG8CtIKGM0YRUgc4P8qfB7u)tTfK=}Rt1MVYkZj# z9|x%CR4xEjTO9!368``L)3}PjCwbPU&ecFUHe z??(gjrh3!hVh!$^$=Cg&H8Ck5X%r8FCVbv4T&ZugSBEal<`u)ZOWbQY5Uiin>`L3q@In3Ty# zyAUZ}q^eU&X3R0Ard6?qt%yIR&xt8cgzh6=1m4Q*8lX`Ww0r&_8Mb6s=m(eBv2ZVJ zY|7nEk9MQ&5;Kjr@IlU$;l6)c*kKtFI-7g%;Y?+4Np=^Fg zW8gqlk`;=uCB2WtftS^)B$d{W60;+!4p-`~$kwM1KjairAfvtj$U?d=1VZ*8gql1~5$&CQYLZq3mgIx8~YDyA>>Y*ruCCS$B+ zUtR5yZbgQ|GzjxGy=S?4c>}p@FFe=QJwn`OuDX;5KmH-){{Xb-MmJehqkcUlwiSA< z*mXU(Wm#Qzc~1UVdrY5R>)AQqU}Ifh8{Xx1UQR|urLM7!~l8J*ZOn|XloQV)9&~A zm@6nX{p$P)ap`WiZ|WA1;cD*tw-c8aDcUbDUe8DSKANugXm1j3H9f`K3$m^ zuVS5RLqK_&ENd)U!F`eOu4gsG%iBX!+9Xq%+GOs(RSB+>rn?AsQREt!;#z$tB(^a^;a$3UNk8aW@m~`v17u1Ut~YWjyx zuckV_E@fA3_w@D3f<2_XT!eHyk2@pcVV|su8*N+I-_HL4^C)_st*yqej68Cdc`WCT z_LCCwy_$mU z)H@4MZ1dz8%vw>hKBs6dzCrhqactd6q!3n1t-h!28b3cV%9DMV-0}2O`h%xckQl19 zK%W9p(P+YNpy8KG!ykFIWvOm%;j-BQ2a(334=i>*iesKcfZOqK;10PR`HF?cnog zENS~NwYJOIYA22HCT3FgBUF_R%TRYPJ~aUJquL(7 zwxs|cc#kLdp2lP8pE~~lir${Hq4nc^HHE^;CDXKUt?nk%{3KMT(qhU~eP*$Zjqkr{ zwDs4g)30j-`s7`4g8J zc)l$g-aYn z6-}quJ1kbsMfz3NhkysMmejGRX_L4pl|vBN7R_xz;QUE9{b7&ZEMlLxa-S1>CaE+T z9jb8k=zZJNefRQS#M&|AUedIiR0F={`GUVStI*%}_L%8#-!De2Ju>U3XADe=ZP>8~ z^!!8h4y#^D4#iNMk|ui&`d!1VgS*^GD{?aG%7{DTL&%qlZZ$rM$>U8vMOJ<`HHC#> zfPXU)>Z&z(;}>Nu#?1BN#L00v|F$EUJ-rS<-*=j^YMQV6Ureoxz?m5!x! zV@1wwOAwSh@(!Ug9dZl3&i($|nyP&cZ?i)n>(0oM8_-sfuhnurh~jPMJLpFAyF9C^ zmZvtB-p2Wt7_}{+eLp5zdcV=R_*gHMrL`*?`+cT+3oNE8D*J$YycyApnvIF2woF`i zw2d@L?I-M`V$|1}Z9k%G+zv z4=1G9o#7pOM}j0uSYxObp<)l2HtdU1qQ6x3k8cwa0SA6LQKnz_j!@yNOVEkWqvXF!(bO;n zgDGyQD?Ngz8VB<|+tQf7r|Fo*)C(Ou&+=rCReD;C_BJ>wJdzBNNI{H=Mu-X&eCU7c zIsSHMmbTHpYIy#ngHqPL#Y;Ab?e_lwdE-8$ccau$2c2vDAvag=rMBCtX1i1q%pWuy1oii0! z4*>k?TsKXu)(Bnv@iZvA{h?@!seZ#IP$)c<%>YveYVmOkfGZYb-L_9C)sj6b8rHFVl&P*oR# z56{f8wXCJStzC`uEDSg0rf&P+rS+VO*M#oa9~+V~dZjMAJh|{U?-w3Jj+obvmYF}V z1+>uAFg9Jg3XfuDhoNGeY+9>sUtP`kGKbUnpH}bGS_Z(1h(pqPko%kEq;#Z~p*&{{XzM$hm8vySNM5S(y6)Cp!H~*3vsp$P9hvE7v)pdTp4A z-1b~F5qy>Rj?Y?XMm4s0pZJf|{{YSUjoD1Vf2dZaANG40mgttICsD532Gp7AT}RQl zy-|PBtOxRy0u zIM<0o(*oouA5d)kOJ&Bgy$Poa>qacIr`cdFA3BP+XzUqY-%x(wKoAyM>f7HDjp$dh z=;g5*Cz%H_->{OxR$H3NdE9}Q)Jp<1V!7-TJ(XQ+DE_cDN04V?=DRuWQ0L1305YSf z+U;vM<_eCcxa_6Jh?km^(Yj?cXp=8iGCAyEc@k||YQXlL{{S-$);iT{?|#cz{=!D- z{-ZsrrsV{A4K!k|Udmi`(dge)6*gGFFS5w?XA0{rvAyd<-eVuH)|K~NdY*i4N%X%^ z{{TAb4B!^Tqmth(>?7Wi^e$ujX1#EiFav+Tgfi4GZYR?Kg#>XSBllZc9t!)(t#b-( zMsK&snEkyDN$7C{NZ^js#FvlSTrpoBBt@@fRQ z*zQQt-w%dTa51ADT#QJ>=$**-2!!vtGeLE#7 zxe?ojZESl;nHddr;VH1FUJi^sIE(c56Q4Vod1|)4hB?yg)UCTv5O)6n5!{{|Y-L_1 zOH=@`c=wjoTlK32JkEwZ-y$$naS&I(3OD}%n1-@g0GcP-Nkk!oeY)IR30n<|%X~*H zTV0Fh{)jh*Ky*3W7(L6%>vGoguIj-W59G*nqMi49aTk*V=hH746ZVJ}AsndUb#`+l z+gaof+wCfH1E%{tgSnHHV6Mt!z_Kl(*&0Yj@hWj|EQ7oENtIc@dCHBK9i!zr6(?FtGw@fI;ma51QcK5&gOM34!@LSlPF9%O;U^E-Ub*E5cRk)RZw zBY4sIi@DGNtr9Clm0&13FyMl+K7fi_P@3XK$pC-^;^0W8!v@a8%HDtIjgnr#d_fbq z64Qf3Je7XH^Y;=nf()3$i5k&5wL4lmlEPr+oNIQjLGi?snU|3I{{UI}_%fdTge82( z^!&iUi$8Gro`229ST9Nbr$YqJRkls5^?b5e;Qs*np_bc_Zqi9UGXoYOL6Pd;tZS(%bbNkHMNbSGVX})9AVMenRD`az5d~+}qN>>1+^n?J}O3 z#HxoXHWfzO^E9~34xE($o(AG+&n+@u_0cOO7MivQ(ttJj`H*ukD9Eqsn$fL38(hg2 z+Li*3p}suARBQTR5>Ic9MLFAg4bn2XuXZg(8A$_;{v}0=`hd*;0B^+B^=l~<*ch*I zUI9FVGBp=-+WG}f;f5-k*yTlEQO73Q-o8~&GnDLe{K@(1S7d00@FXQX4nO-w!)ftn zTfqJ-EkLpE@%WNTn=&hqfkZeUw>LxG&y$ z4Wp?+)-f8|`@4L2I-C68PIWiw*%>&v^}ans2eF$(@6Lp&&ob~?mxaZ2%UoYsR_g2Ytghg@({s$tTbr5Hy5)D+SxF!c-ZZ}u z_Lc5uRbJ-ubsLLiuboY3e&-6UlQdZMz*QE?EBnyj^OaL}JCcX`bGeQpsWDx8b6umK9uUks8+_iyR(L`{{UIN#LfLhDp`0w{{RzAQ`U@mBa0I+0=wxW z$=87?lNQ=bC=6FyAwFA=4#ECe0vn3>4MGZ)j4LRigVrC zJ_M(?`8c%-=<|VF){7|im4>?t_-c~eJk_| z9;SN{fG4+-vga=ww&v&kB0NadX1)mT9gkT1dmEkZFB+PsG-*`VXvv#hKq%gM0PuAq z+v>N%uve9g{fEPYz00n-^m0nA02cCDMu+h-eMXO{rn?v4gDBI-T3(0CSr=xD2h^0@ zjOw;3kNb?!;PvVbIaAuzu;ddwzRL>Xnzh?%H<93v;x>$If~WmP2z+xjyWqDEWqu`I z&r8Y5#x$RzKqb6yfF({|NbVs|dG?w7MzP+S8BYz#25Bq7A=K;m+{ckTzQ*xbh?uyx zyM0vJjrf;GJL%M^Wn*jS^9_%TR-zb@_|${cyK5R_;%3bc6sHWlWOVyDWzyiSMT2jE zW8WdE>|`HMo;5PL-C~SvkEDmb-+(7q>OoDE{ZQSc^V zNK>)xJWHuz)mBZYh@k@=5j}egBD-)}mD;xp|eUum=H7*@U5>ySvWk=_vSCaRB3^xR{-bt>(~&oi&-U!ciH4hj+ui(Zf^t<%U+*fO<9lPu1A{ER zKWMDjL!v4tcWWL`;7i)u{Rl}?*{kXqKdP^@$nhD4k61fA6_KmtXnn5SjgM(QyHwR$ zeLWC)JN?|u)sMf}bow_v7NhhLyo1cY#RT~91gZ4tTQMs}IzReLe0J=10F44cn&x^( zJ2UN*vF`d-DgOX@Y*vh{a!DKZl{O-^DpQt(z_aO+t>@Zm#gl__{TS+Z*&6zlPRI@h z{LG$suO9bQRvY_{xSM-Zd)Uz4#Pgr=O1z4?D`aB#2ddAwDddUG^Dw$!sk6qe^vGRT ztEM46=XQ~$0LoO)yDf>yu#xdFuh%WuHltb2ySK7qQ`GK`E29$IEGL2UGGXxUYi(@l zw7!p0>6Ui77AhB9>RqN%jBAjub2scH{@LV}`l~k{weRVUicc(0iK(Ni+|^X%FKvnl z*FHpjWV~z8zlWEzPt@~nyQlpf_p+{n{{ZPJvAS1K1ue0AD?I3#Vbgo9RI&BXkBN9n z-Hgo46_9WbgB3FKK2-ZFU-2#|fksQ!SjTWpXYSXw<(?+RJ^jSL?jPDf>bGL0IPXF_ z*m!S=7ZX2M_b5GqhyaL0jr7ReRL~7Ug&G z^BvXkigYr+RTbUA?QbP_Ge4rf)1_4acstZqOqGjR*UzQ)6>aFz7k8cNwRdti5TRh^0sVd0R zDXEBUXzPiY{{Ry!vm?^^HNAC*MONC4oqsdX)235pZuT)BZov($fA2iQ{9enmru0_D zB%|aIhzIpAo@YbF$7?L3n~|q1@qiBgKfKlYSJifOWAyIsvZi1+zuG2DtA*cgq>OxP zF4lqVK7aR~k1jaL8nXsExvk0cpQC!sT|$Mrh8>GX8?e7ftiQC2-U6d?!{k+UIW^tyR2 z-K3AV@?~xpRI;mks^w1v5xAX4slD~siNC0R&^|ZsG_Nle&r7o{_}M1Cnf|4nfsc~) zoP<56$ocr0obOWf<;i77*dGE|+3CS&*1eaxOX$k{&rDQmHma{Y1^0@XruN4zE}JRy zeO1zi!AEoaOs`S(H9Y>FhHihVX)`@Ms2Ke{drZes=>Gsu!s}B^W1q6hm(fd+*D^2R zYf&KIZdIeaoqhze{U2j^1`%<`#Mv0<=v!qbJ$Kt;*S0Rr+Mu5#&vEpg1$`r?RgX#@ z{uNgVmWvZ2T1$H&q#bLa_Dkr`^=!3|BXd>L`CU2=*^cNIB5#xXgxydPN;7}cVe=7=H2V)J>(Fbls%p#D z7$0%%8kIdAme5J9xP5<24t_%qwzeL1=l=jnBM$Zg+J?B%@x*>Sn5x{aj80mTbrz#m z6ra4G+wltLM__N-Lh3Azs??9WyJU}<*m>)76tH&KJ&(NEIXmLml@D7)uow`2W6&rA zaX|p@d_}J1uen%nb5{xe#kRn@ZMHcQw=S)nfvwA0-%3CnK{ab*h5rC)i^#yOX%5GF z_E2f6eVyt{qV11pnY9&iq;Fn-iI#r7RyS6&3ij-^IRO6vP(JfE9G@HEMlU)N{n50g z`%dJPw|?_KkDpzL3ckd!ryz0hIx(6~XD-WX-+uAo`H&Lf=X^;Ow{YChvL+iP2H(7J zFbcvuyW%l2L+s85GrK}4VHnsCJBY@2aMVJ;$e=h87jcdFioQ9J0<=wW=5rX`$bP`) zF*n3(9UftT#H5 zZmVF-IR5|@Gh1(H*G@a%f`w7r!QZ^5y&l8&l7GC7 z`hI+W%#44HQ~bS*zcId~()ypNP`E;x3fNd{K=_zT6JYW9md2Csqy3;>jqi!S500_) zjF~dK_E1@m-1{O^b$nIXAb@@*&GEky7EepA?d^!dxXQ68dduXS9tnno1yjU>{Y8Fwmc2Z4M@F)%E%&l z=08pPYF(d9JPD-ey;xUA)5u^z;6!J^_apFme^gmyV-^LgBe=}(Yqn8F*=@`3^9sst zy`Fv}=&2dI!VdC0%$TOPrgXWcwwW&vAmZXJRWEM;0CPgoLu6g{`99`$Egh%2(I$SQ zwX})>{7#%lU5cvLq4>n(Sz_q#W0+d4?tie6X7)D#Y;Mr@5ETCayj)9~w|6y?y5Y4k z`CdHll4G%CrnRH8O^ByY&bP5EDagyU12wJ{i3)e2#I?*0aPDBF4&Dx>ZJDCZnU6}M zkEhP{qq&P7CX=Q;*2s3NGnR71{F5v44Tw#Jhyd%%vas&I{bVbL)Kvj{j`$GAPFZAC zyWek8TKmIRi?TQGCm{Pr#`)Ch`dzfWxh|cGc_hVBHNS7f+Nm911Ej+OpIJa05zvua#9}PCmeoIpX zzftC7;PkvpE@ApR8LBN?aINRW^Q^aA*Rg)T)2O&7d(Z%IbUe>e_3k!1dK>A~;N1Cv zag$?qYxih=2KHx=pkUuoLHcYoHU9uHo^80UCSL|;Bsc!q8JeL=swwaHu=qc~k=u?> znKH#vuiB?%f3%NceWa7)%*V0Rv_1xsaNrBvWHgBKeKr5~fn7G$AE>%~d z(XE4jU}e+VGv%GFBi->7Dvh7-9cH$F@+NBy<4rcekU_O zT{Dv7i_;|_N2L8l`~8}E=UGNJ-l(Lm$OdaH>Mu^~*W7#`X-Q=zoU;$yNz}@zC%G>j zbZ0#|eceAaGJ+KF!g^L0R<$Tqt(YO_w_DuB+lDK*>MH1OnPr32E3HLk$t|_wYFQmU zp*IWJvB&B+H|=nL2ikLAW%hRS+&r0=&-GH`9D2Hb1-H8FHj{tuU~oNkU7bu(os9Ud z!;-)NBVH8OB+Th)n=2{1uxh|J>?C|PHQC&+_XDE|`lMtIgb>4Ej|MQhcLxJZe9YBU z*>somXgYREJ)i3m7vxD)XDvA<%D`=GXv}pPcH`Q@*8c!WziF0KTr3^P+@jcApI7b! zWme68!^Ex5rOJ{=$^Im+pas@c5#~e2x!rB9+X1X|+<1$eioaHAfl z7wzy&#Ptlt4!zux+L!nlpG;S+Dj9rxaN1oKaW1sU7v*MAnrX;=R9i}YrFUJm{;z1+ z2i!?rXCmd()`67svmjV3%ETSyD|r(pN#ypKspHc0Wiydc*3Id+&*mj7Mpep>zR}MH zT4r?ZSKL(p0OnL;&{r?Ca7Vw)bk^j|){Xb4u~9LAr9eC6`^^ert$>Cc8JXx;eH9yT z9@AZmYTTnup%Sr6dw#^bbLb6yF?+Q@)BMQ4^zs_Jo6j4URO~VBI+Xd?)+?4^HNPfK zOH=6@Fy!aeFqTtgYySXH5PTU;)GWH|RaK6ZYjZ`?*Y%XW0egy#?q~Yl^>o|o`rXQ` zbPm1bT{kJOv2_cVM8(cHc&ga|g+6Bj@kQhT!R``DQn_@pUN)>WL@p~i_uJx&)GBA)>Ch%9;X1cP8l2H@h~_y=z^pY-y#>) z-k@yD4iyA;58ih%-k{GEbjt!*^|>E!Y~P0+<=6WMtWmaaF6)@Mwf$V&wOxCYzxa~< zDe6pavzkU7R#{bly2Ijl&q(ywS?lyZP9-mGN_1V@jn8oZ01tgWIwwc35UQMue(P9# z?}7cMk0-{(f_tsdyg9ODuGW$2oh7SmWIOGDiED`Z*wGyS0KCt1wiRh@8u^x$a|y#D|~9um}K7X%ZzTh^AR z$FSecWqISwa=yLfKDCsoipp2G>%^K{$iwim9o3P~fkk261ohh9EM z-lMrrf!_jedfq{9pIxt@K|X!u7pJ;F>OECoB>w>N=zEwC>WRwr*3OPPdfPNu9*xGy z#Y=N+vA&}3v)fW0Z$SS5Ek#^rXQfWU`7_Ya_Mjd#Gy(XKvI2m_0ng$!;hsGiXUMKv z*^cS?i(WWI8n7MqpCJ56)o0{0_6o^ub1HpRVq-OLPzzvfoeybY>8_`Vm9$$E>yi6d z@@6WBPua1xt>}JDSvd+j7KEwEwSY_6e4em|XSIe%hmtkicDpR-QnN!fyvm6g6QZ>CV zF|jc%>Nly%O8ab8{k`8m%$0+3(yEL{chAgs9baPC@#wzlcGZ&ARK60m2aWS0)zj-- zpZ;dnL>%kb%Jt3_<@adv0N9r4N9vVXtRS)FcfE+pxvJY;kH(%j=xu>g~!!s1DlDDAZgKO~qAobUdGkW1T&jvQwhpsXjJEdKK4IKjLTcsEwEWc4hcK##d$yo9# z*P%j*XO1ggM`@SRS$FA$UhQTeZ{0SKpF$9nHmK4~%t5DDcPyq4FptnkSnsE-I@6x!-^(?!={j+O_+^z=7aijT}KTWXx zBJt(C&20r)57Y#bI6IkgJ=bILu8#UoP2}7AN#j!I4VuEmST6Jkl~^0H!ncq|h2~gQ zL#wi&C%2MfoOjUOuT0bQlozY3@X84UpFfC8oV5z6`+?tK^C~gTm6c@fHIcsWgC(`s zS&`q|7?H~XCAFoaHoMsiBJ}-3{WK^w%Km0|sN1Gt{?hlT(%X9|*x&93WpZ7O#5tMm z?dh7ZqUWNW7uXyff5h4Jz|V(RC%)C_}q=0@xRf&BYN z=Vd8oDOmBX5igG=<63WJX)3OfJL+q&gTeAY5x-MR8Fn;feh75MtZ!$1-!eyQ5y{^> znj5cZjthN_%Cl~EJo%nY{xV{mRm19)5|$(VCt>bAr>ebd8)TC)pW?n9c^-`F1=np_ zhg10;^BYg(RbSapCmh};k3aP1tA9=vZ?KWandsdo)HG(+rl%X9HBosQ{~$&dww@GUykv9$(~W-W_wr&ZxhNoZ>$lR8$WE+bl+8BSO6A) zcNDVJy|T*BM6TWO@eG#@%$_%2#&SQ_P*3Js)tZgUuq*Nm-;c_cy_Z&*dG!ND?$oQV zBoo2hk}q9(npR}jvUW`mxT<;PL;AzoJuC$ImR6ZNB{M`*BfF28%KGG26$25$%BaIBO4k+NrSF|Pb@WD9TB^h~U?s4`kq?_V=EPbotOMeA5V^B8SW@3~O9 zz=Bz%d-|nSp)F#Keq!I18rfG!xU%JeY@i33mCE%VA{PGuRB`#0IXt$2=K#Za*ePdNsZx_zYH6{V&0c zHU1@^(fk<3r||^{Iqa+{_>6kN^DLUL#1mEcmQqJ8c2?brwvA}Y`???02V5VSqFUh= zzJC!{yxhK%LnZfk7n@k(_h3an%MhmUDC zx`S8=8U{whRI|R)eEUh%2g%5;wBu*APR2H=8SOBgM+{qtET={4Go4AJELg05 zndFa&p*WzQt!EXJqBqa`NO^xk#k#Ry`hL$d{{V{8<#o{In{T2%DhpG+fzju-I<%#7 z5yEJA=06F7)TdzaB`s(l>JSJ#>T~i>9?_;)EAke~pB~Oo`5!YqmHz&b5Py)NI1VOrNA^ z>DLMuLtjc#+iHdy17s7(*Z$t~(lRJDAh9Mov!fMd8wY$D zQPVOkr#h>X`cEXsI zZJn#bdG;~}8zJxGhHebajuOeF`XRl@C&CQBv~nhEt8~lj>O%VLBOAB0)(5}L-;7Sd z_7YE$KM+|M0@~OW*Bg$=zCO^kNxd^Mf~crAdq>a2&U)!F>7uOHbrvIiKOeXmuEOb- zj;r)7Bvhwlj|5A+?@i%m;<998Bc{&59K*+_%WSSnNb?^_`nB=GQDgmD4~_dzL8GWs zmq>an47#3Q>hDWg>3o51A9a{6cCD}5_%V7XSo%s0P8PxBZ_L}50>9rFxxIfQ(z5L> z{OfWpeR__W+SzUrhG3z;GMxH{5pjF+tXgf?C{HsD>b|vKQ7KhBG^=lCjm)^bYRQo{ zw1(BCC$aTkRAThnd*0+{Bkff?*qLg*N}X#cQ;S(QcXtxrHT+LI={PoBTHj@^Q~E(W zAWb(x`gnP%dM9hIACvse8De9m_D(hZBU+fP_1&^qcKPGPhm%WH^&M*rgpM~YDC(Hj zRP`}myPjoEUPpWFG)IjIlhaKP{{T#xMq*^Ls{$B}cEr!M1uPWlhXhKLyw#AGRy4|d z9})Lv9Gf@$S-ricmz7lNicD$k0lOZjTAfR=3<)R1zrzYDWAuk{IvX;nP>#eTfW&ZS zw;uo|IBz-}#N_gRDQOqJ^|BRRtOX898{a+zHhu-w_S-_6DN(bbDt$xs7Y&9zg)9sR zBh0w;&!`XSO&M#mtrpjrp9L#isq16i>q!I2pl5XBWfh*~8z2u8&U&@xypXh>RQ=P| z`Z^p=qSgyb;@&m%z}(CF{{Yg?E&YE@$8OWI;13gaKOgOS5qT1=8UB^kEM`>w%uj(m z6Qj5P04%1`K_YoSM96GBw0jqUuz2Qg@w$Mry23h<5s`4NirlukHT1CKu#$Yn^$SmE zS5QXvzll>;VN~CDXddQ9>AhS0!#eS>$eaj^t*r`J+IuYeZb8NB0HM~-kMSpZi>Be` zw!;_L2cCIr)Jq)m);@{XM~_id4TwiLaUR`y>9E+;XbCCmwy}hBX&l zovh`Mase_?uDek79_CpF{D!Okp2LYh8pGevoRhbrN*ZXWmhCJ(m~bbSdh;Q$^Buqy z{-FyG#M)h!rHXeKVdM{a=RUE=>RI`1nPnwvq-jyS_WuA8zCA3Jrn(odD9I)Kvp)=HRtKl>Dq8;4 zs2u~MT50i@u~o*&AG<@ur1Yj{Hc+b{x3}nlvUr;+u$jRM>J^U1$M>A}zFoG)%TTn3 zSCRE9P}RBo)BygkO=4s23aM6w<_AtJu$~JXoQ_7-iQ#W?8I+ZyflqB|+2VK9Je*Hf$ zGcE2~$PP&*xZ~PPv(r@NQLF8J>qocT%-Gh^x0;fnGliYmzM+&Uxm0)~ za8Hn}cxK*?`TWV9Ck=X)&tortXbP+Oi=I_o5U1#{^xhSDbsH|QuiL*e>im?#!}^5| z-~Bqqxj&QfCG_r)zecX$6SRH6dqC#guY1){3_oI>Z*jAYr`c+>{{U3VuEnW^m$*WGepH-AF01rPhE>`Nuwv2>c;m>hyC0<39_Ax~!#shjA07!0=(KC;IvdrX*M%lZq zZa_S75i-zPSyU>4+4(K}N=tLorYF?34VO9cc?0;7aq}NMTau}2ikt6Xgy?=G@o9C~ z?i%gA8hkq#vmCNZ4fd~q2j)t%BUp`32KF;73$=?e%0Ji{-`I2+8ewqd#c7e|S0ODOVuhho5>$DXr-MiN2il12Z1+)EZ8kiHmvGu77 zA3F-fwKDLn{{T^o76-pugn1P&vr5m7i5`~A{{ZC?Ndrfd=4>%+QQ4*?TY?Pp%wjMs zYcbp$Vt7-*67Q$=byx3mpfo@yaCOP;8m5z9t2WjFipu=-o;7RBi>?Z z>MPW8)4tByM>68RqS*fcRcurHb~}f(vZlKYHft*erZtx)zR}EEd#GQ$hgR_0I#T-8245UeG`#A7m67;`e$Miv?Lb(uZVt^XL~BUeZI%$SemLi0S^HCiF{rv z%DEW}qZm~eGDzFw;y(P-Z-KS#*^tLa0adW$cosU>S5ulJE?eJ|VQTmJxxcMCmrpZ9F3 z0%s|5HdmRp6TEX(??(s8l(IC7gv$DSeExh%ROPyjs}Zk>Mz;6<;S9GCrBlpZVNA-= zrl+e~Y6@L}`P{zgKC8^bWmUJi2eC5i z`p$+bEj@&d&k?62{k^2@Nr{~M^DFV>U7|M8?|A;A#ITOrm!Fd@E9!K*Y*?rJ&z{C> zg;!TReq`)kw~~N?VgCSmWtQjYK1O@F&#dwsf4pn;6;(fY{{VU7OX@7Z-M>`p`Hvlc zEt!YZI@GtxlU)Y#1xP(PVdm+K5lPyJ4Pzcb1+x|T)!JF$W4Jxa`#$40GG z);y1RzBwqX$o`K~v(~tL?8<(n>k3#YugNpbcV?85Nj}h_#=_bTgqMZavb@=@%k_1P zJ1b+odwWVN{Xv&>3;M86G-BY@2pdxFo+P+5}vC2F}b4 zXcocTb|bAHciK3NSY>?y^!ctas@$AXF_Lvs0XKKku2J=1l98=L9(r=f@(fx zqgMviLqzPTvmf9{&qv6YjaST%Wj_!nWfi#FJP8uaZ#+!{(sd(QM$aNcMU@%%$07yk zGX3Zu5-E__Fd_3bAbI2;&;uf#MPBKCj@ zkSsg1gW_7`r)3O4=4a8*)NSv3obSle#8cWwzqIIJzA@j>ypgt8 z((QHT%ZqKilRGaex{$3a$?|pP8k|>j1>1r>qb$Y>bU6H&SL7D7ky*jtvbLhmM{r^o z_UM>=j2f(^s3E(Dh7wH_kh|B~T3pvkpSwduOu5}>OI;0~F!o^WOE9#AcLBhik(Fvv zz02Ada8DCO*05H}+qc_i_?di*$Ahoq`Ir8Z&!cvW4$k+-#4)C?kWH&7US{$6VUqqUkAJ6`599Y5xFIe0T%Ix#?X4Hp=^|r?|T8DH@09eK23@ z94vgY1#HF1J{#lvPhzJ9KEYS+*V+fX(UT*E`V0Mi(U0`ySykdC8A=haM}^(R$p_a+T*xz#QTYdny=;?O>_e++j=mqbUoS+r&iUv*8c$5 z{L2<<>PGD!X&ep8`!W~mZBB^%`^4ml#`z{nr%Ohk7QKKuBuSs9*W9}!-a_cPX_JgB zMhrLF+CC4&zN7{k1Z&=HTDdUfZdpri5M5XS?gwH|$E4bTZ$rtGpBxj~4)~47U#2ui zApZcoq)!XcTdkrGQR!Iuc+Xw*tJcFsNZ6k?dh65g&^rD2$+1b>)ZR7^wEDBP-jkuP z#Pd(_m!u4igxM)ty_n1iaybk5nxfu2{{T!{e3p-#vJIls-o=Uc-r@1-vf_zQXSL3N z1H_#8sc&dwqB-JjJspKjc&aL`OOj93Bbl!!lA?WfTMYAWWG-zS7#)k7>@W*4z6!6Ixm__949X zqm=|}VDl}ybA1q@$znLyypZ@SN|Q^=zd z`IY&Hv@g;J>I1MO>Uw?IK}-FhcqDWD$paB7w{G3+50X8i{x{2E%dUWQbCZ#iTjf?l zr#wx5S6WK3$fYbSc-D-8Vs_J7W17hG+@p~z`kqbhhP7<~IU+YM98admnY!$Om6}@R z84eV=;Y_gU{i4-C%d_rgVX!hR+p~8Nc;7LHD(o^VCt&g2@hS02o+%7+*Jq^Bn`Ren zn^F+)47)y{9Y-DNsY0ILxO-1K=~<4|{TtirDIaT}GTR!a-*FC~{+|X!XRL3B(Pt5t zx9p-Iwt;d0jPfXnPU4Um|5X<||;Lxkd=*$s9_ooZgxu zp~?bta_&8^b8F*%W|PtcRduKOS$N#ZBkNpq?=Sr`kPbr)l0f2DB=k`9#j#W&Qag{& zv@TM!BDv9Tc}HdK_V4zQ$&xy5V_$ugmOBH17oQ@3sZ3Jk?6<+Uyj$41I@aY&Dr9vB zT(aVnUAJcizW~YoJ&jkggT0+c3O=p&tFDjq@ddl=zHXUcMHt^zTABrFyl=RcZ{~Mh z=>Gt&!0bjLijmws{{RxjdUdsyDp#{xlW_>`3P{)HF($fZ3$FH$nL4*X$-wI0rM9wr z--1Nc;$VF$5dhE=+q$Pi!0MR9-CDJvp4&CZm`v`7aI!v)fRH&;^Bd%OHAzeQFN&r1 zjQ;>Y&Q6n^^)f5&sE@nxJqxF|>KI*FZ=~a3Z`x$XO`^<|7a=MR^d|47qEn68*mOVx zj}r~#rDA{cH{&{TR%?rA57BoGcv> zjrXuS8=FiEI}vxr<_AC0*_{Kb;l4YJ#B-ofX@~MAkL%lAg)VVe3K*5-{{SD%ih8b# zQcY;lUzJr={rfCN!1s`Tv%aoVUWWm7u^^VMwB42t(WWeZ=RZGz_>ZRbRUqkK{iW1B z@}XKuX#@yc&nJ4|>T=j?KXV{K}+};cDMB&2IjA)dP^>>AJz3D z7Nu_1p$_cVjmo@SyF-&u^vd3wk7jkPT}6VZ+aEu~^iN1uad1^ugf_9|&-BV(m4=wq z{W?jc*xzCSw%5<|Cv_g1)h_y2{VOR7JACmgk5c*>Yh4z-L#SVAG|}8bH+8I| zf_^1#MtG$i>=mk&*K+Vz@INpv;|&F6-9a6_{oJwq%8svkE-)?IZ?Hkh{_&FKy|RlQ z(EOZb$~C=p+ftS9(K~AdH%{nx<@GU5b{c5z65VH>h@itgr zrs-j|VQcIMPTolp%`fEr7OHZ%uVj|=?@z9<&r%Sa_K~^Bf{Mc~8vQVM9Dm67nfB`a zS1TcEsnl-H(sjuniGP=x5d}i@7q0}LGF{HP5aS}(C$d$4qcjYj`m1In0^kE8)tZ-G z^!}NUray_5!|6Fqn%DInrQJ}ox}+p%1MR4tM*Ldrv$MIDv-S<^XWw5DIWoCj z`WrYoKV`2`>Ff0@ueEtQE904#%;?rvbGG}O{{Xbn$8qFIcO_Ost} zJDIsoMf#RppvrXYE~G9CSJNy10MyzN)2kee64(V-iVlg@gJ{cb>6DATI|V;x=#N9wN#%Z4;nLH zozmjU5`i9TR3jxp*kKVN_u7wGaIS>eVM9kCe50--k2G5gaW@z zF&_ikZhBv$F3V+Zvy@rN3QaVq1GISO=4&xMGlkQuTJfSpIobYXj-k=dO~G8Ap>OF+f!SY|ZTydjnJa%+ z>VqSv;@4X{uW+d8K_`-6zr>8S%Ig(k(n2*=r7vl6R2_0an=xWCtdyTj4i0DO?;5mQ z+%^;*bu`s=@n$`zC6wGiKo61lo^{lEXXzCUT}uxp!N~d~_e&m&n%VeO;$&kfx|Z0z zICK2`$KD<*e@6TsYi&(-dnZK8RmDKe2EZdy_~a{Su_XThKJ&^tXI6SxS97YJ@LPZ; zzo+M`_GyC?$sq9(`#N)E$v0ym>azp|;r7XaJ z%)PvPO!+Z#?TyELN;>hHw<^2=G(8(Vs%1++3*Z@9Qz^{i6&BS1=zwBw5?v3c zv~Dmm!vzXQ9%ZWBO7MJhxsafgRqP;t>n!QXv+0HHJ7cZxCY?+DOjn6A+*)t6n@A;o z&^PTTQ;NNxY35PXQk5;RTi=;sjh>A`2z2}8&6qreEA|n1-~CG=P+kw1;HtYV?IE1r z+P2NUeV`wx)J~UwnAhb>LZ=l!XtE3mJ)@mSS7iSH+GKk(zwI)%+^)wvJPvm==Fe2M z17jAuWd8uwsuIo2qxCcm+G*7Q)Bh;rSKdWTtUZ=YI3+Q`%2?rL&sretw*Rm~(rxF#t zDyui!#OgLC-fZzHmC2I(ac7*2K%J0HD!_&uN=~EG8A)mvdzxUIi`k%jO!@qI%(Tbh%<;XL z8}YBGfXI3HkRKU~l2x}oCGl&p9^fQAtO{0_V57JViOR|Nq`z&Q41Rb0bb0%WdzC`5 zmz^5|+bjU7+3~q61Sxjae|G%K7i$k|rjxRBDQ&q-*6D}rG!LfQ1W1`l+&B=gn3fT~ zHRQ-y8B5=wc$u$AB|VYe)~t2~`*$ueoEnm6b8ILRy&1c?;#*)_xOd1Uki}R~DqlalUo%marmS=CGo4jR9iiZ!OkJlL3*vvNXM>GhYB<@}xRdH8 zuvLc>KhyJj7$dhD&@$e;gXvEGcQz?ZT`fM$pRGD5Rcy>v*3R8Ww4?M@fc3^*o>1(6 zwB6aAO^sy^qqpC?!5;HB(z-QRJxe2~CFkky{VMg~eq!<5y~-P>qj0Vsv`_#5am269 z9jaSn&ZN9sex*Zalg`JqjgeWiY1_zTdNqw_av6ft@z-f?pFP>5u(CM z(z<>5GFB%~IMpg+_X@{7&E%P9kBq7haoHnsZxU=B=@30Bfc+URMY`LT$NG)je`!Ax zS4Lq{3kK6l^{YxWGzf>Lwm*8E1&&L9W@>w7-Fb-MFgiXVFzy#v=U}eo8LYYTN8{#K z`j@NO(7HQh&_dp93W|O`k0CcSgR?t68;>iqTtTjGL{bMEIE%>7(X+_Ij_rpb7igHV3xm zuh99w{Hxa64_jz&;L58|y^PQ0j{Hj=heNJI{W{&pX)dTYq4H*&m(Dbfr1%RTdpFqj zeMRnbt??Ois_*1VOFF$+_~q0a03H*V?@eW0*Rw6}#EXgVW&>+>LWSFN#4V0OQEcK#zP7a7|XFK?nR z)9gK}H?B!BAEk@fbFKM=!m!>IPdxegme~a{l|!ijk0M~YdNku-u>@n+O-)rPqJy2x zwU)8VYMpo7du8`n&H5KsD%!Chb02Xcj-890kyZZyRnNIq_Km@gb+$Vt{UE(Rpf~HA z>s{N5tM>utnNioeB|l#xyfkK|S7D##Y95=Z$GK3G-Qk$~Ncfew#$#y(N}cPOu9WMe zEV|{{=bbp)kAKs*XJ53IQ#023u2wa_LZ$2@`sRKP zvL_|!YqWY}C3yKQaB*b;`A>l)=3-)XY)cS!G9L@C69MV&x%#9S*(Cj4Xg2)I+&gc@ za%$Nscc`qF#<;bj`2PT9?8x<=p4~Ss>R{cV>=`T5?b&-f0zTbMuT#aV)EzjKP`PL} zK=+th?ijfZRk~MGq9ohpIz@Hau&*oXa0wpV`%C;hdNJ~=bRE`(0I)u0N22Aemj+e@ za0vOD(_j`=ZEK=9)J`=!dtHjRrdSQtlip6YcoJ>5*tu%sS_96dUDpw4@Av0YH&g3l zreeL9=vC+QD~ahehh>*hv|V+)#Qh?REbK$&yh;}JUrOoqf2){;FP(Ed>()N2v#+gG zQX0H8`?b9iW;o;RfgiMF3LO`lTT zcWYXnBhv1CY`W~;nHymIiR?a{>Xh{ggLb!Q@_#cgnGPCD?7lfkbW6v{>5D3_MxyH0>~lV4 z>y>>B^2xRC`?e?2-{O7NWORK00Ht5lK%Lv)jZc}nm93L%u^Rhlq5LIu_4Lknn@J>( zQU3r5y-{7gy*E0;^#|-?e2*yC+ffHXYMi>bEEOOo1{tD)E;dk^@1{wh~X zrYBqs8HfvV`2O=pm*Ld!CKb?N@}`oTXV94$NO7CE{mwgCy~M^fqaP{P>URKme~~91 zu|<71^`#H^*$HWMZ=-~h+g)!ys`KKR&_Qx*(BrF+!*Oii{O4DCr!p$ z!dX)u2rPV$%%ta}nqG$dYN;|mraIS2$?JBDvJ$?af741&J13BL;%=*3RGLj+cY=4u z=gyhfSNea|X>(Nn08CyUwr}ej_Mbsv^&iyY(#ilV0}xLmaru87ME z$gG3NKHHf4`f_Ace@5R)gXoqMZE1DP@3o0W8Y6saL%Z~;dHO^V{{Vp#we1Xzqz|HW zydH#!Vq5jjx5)RCI;Hhxg}p2P08_B`4RI;@j$KMeeZgu^-Tcc;U%RGa6K~yNB%Oau za>}puDNyJ3WquYdl@on{HLJD&A9+QOV^x`EPD?MA$gVic0MT0 z^(^17^ujN)4-?CJ218_1O_n>mGJ<=jrutsBDYlusybm7XvrY#UJks`ErJB7puoGm7 zVS$pl3EmrqCxB!us@PV0bP}N6a0CTUli4qT`oI& z$Mo~4^VWxFW35g<9ta{U^G~H-{u3W zRf6T~MjhmAC_l9P%;lHoJtOr_l%f9s^KBpa9LA5*3b$@~Z~mHVC;m>Rhn-T?$(`VP z+huoEt%8$ngrM=hOu~BGrDt{fv2MesZCduRW37SWdIoU8u@Py-v0R>Py3XVO031iQ zAgKb8$DRDl31pm{rJ8;?sN+cTOceDWLGPhxs8fD}eY?;f21BEwTbFKTMfmOYUH3_L z(x&~$`JTI*jy{Pl0Z%K(i31m>*>`oXSPShnKQk)*QJsE26MJS08`F6Gh%+&*b>80U zpYK1OMA38~P4w(Mr?(MrbtCOJ0k!`CZ!=S0O>zPR8uKLM;XO=2tP$-pW%4sp(`Kmg zabtT$TlCCt+|;9!_~J*&z^6-EuhQ)twMU7kN>K-E)&P)l@anPjr$c<|E9SZT9;R*W zl%GkEr4&EbbN=(P7b2A(T89Mj#~@4Yn})ddiy1>$c-i=usao8lY8ZS?Gvw7RHY)W# zj0(F0vaAR2WQsHE#>X}{jm_F%p#&P$f#XC<&Zp?UnVDEC^=KgPX!;xe3~zL{Q|6yc z&-8w(xfZ?lwvl`YY)-V+bwAVAM{^QXA7L9upt2i3?dqDs_U%u+{{VjzS<-zO(=dp7 zlE%B<*KLz2@YC#?&5Z)b7F@lq+aHNOo}XGKg{-V(+PZ30rmP+!HFhg$JbpwR@%DsP zUHW7jF!IXwt*XoIxdriZX|x7iljBnDt-7K+fPZnXX&?1gz56xyAN)%xhJjU;&bgp} z(%-<`s_Gp(t91(95vr(beZKQ&SPxm)**@?$_f*PiQ?GI*o==a`DaW7kXOv|6Upr-* zmUG~cd6fBG70{7oMGyY~P@e3RR^XQfSo5+Z4x`cO&BtW1M|kk@vE+T)=*ySIUei1t z?v%=SSQCQke1F9B?EZq-tU+C&JT!)SKx6x6-|=HC@`DBMA5>r$2)7#F_K4ji{^U(G z-j0d0uq2B5M~$qn{yq9at4#CCF>gY`!NhCeCC){Ozs{$m9*V8~F$brVorRFU8%ga7 zXPh5S(Bo^vNU!PZRG!1R>h=0_f72x=rg!0HkMJpra*q~no0C%O>A>4n>PFGH_@3rH zCL8)hDtao0{m8KY0LNIj2ZwztU4iXxL?`Gj?Fu?`i4_iWi+zbzcb$P{Xd6MALy?iiDga=6|dTgKeW*w zk4xJQ2aR-(@cS;-Hf0~Zy#6My1N=V2r~_*E{{S=4R<&OM2)(mR_*j$MLpU$8g9p=C z7@!29NA{NWV%1myQAhA3j@jCpR80Cr@k`LafO}3cukir%%SWyW>ik1M znN;+^Sx<><^>N}yvZ!dXD}I)Vjb+rZHGGH`r`cdky7y_k-M4 z=j?My`z>zi_*pKNHbEaFUS(~m*tS%mny%smzM`aRP;HBAY&Gu(XHQDN$WOT#>C}$~ zEluxeiNB@`qxTGTR|jK{?ImPXq12(~MW)rM*+(0b>+J3Xk^THf%`50tEj^T7R}9@% zfmdIT%)sTlQ+uPSR$uv^ub68rN}nT=546U5pQhE5N7tu|YXrCCM9#6^pQb(^BzgB+ zzV`}o#=?$wH2#M5N;M0C)SL?s>|^1-24`~yt8P7|1{){VBF&1y(P8}iPR1Ek8vcZ5 zZ9Sg;tyV$~(%)11O8)>?;#*+Sn7uy1W0RA=+cMwb_e##j!Ca21djR@sYHui~!6)W# zF|aCau_ehn-n{;1Mzu^!zKZ%0>|?R_A2P!q7%3g+MoUa|LJw&MKlI_4g)RIEPAh$t zbCW}Rg%8UTJ{lr&*c7QuIv$$ZB=AgJD-xx{WH%!Rn#o>=TyhtJ@}S4 zcX0mzx>r|{xScN&rxkMhBAQta&j;sGEbd{lN!QG@vne`{`n7^X0ivToNLe*H2JRq% z`SUY9s%f5=3!JN$*;{=aok!s2=HLsf#>i@G$WNzf17xfvjnCZxSGmX^aX%5!O$JO! z`xgXq@;$i!0C~3bWhWb_SKfBad!{Po6i|wEY_R>`ckN$cABpN5%pvsZ zWn~^VJV!03vj>rbn$kTpGcL4HOMlGG^`5_tjZr1liQ}|#W;Zjb=VlZ2En>cVRO&yV zbX&T=P^~Hi)DGE?63uh|Mm6HBbGkP^lj>AvWcOl{>rw4tuLfWBYpc+FgQeg6Li8Sq zh0*CXRagbja~*O|%onOsp+feK2L#S`Ts$%=La^M^XwK(ey<4fJH~^Z|0C<~zlhY7Z zv>@zlbGc3Fo|woI+7Wh6$(yQho$d@Y4!x$xZzI@`Cn}DS9lAa}msMM_BU(C@J#VMe z(;d?SvPm47v%|&|zT6f%^CNXEAz|;<_cgp*o{nsJFP7QmYm0K5Exi!@McSgFJEU{9W1l6%UIb(y~ulA4-?UP z4oT{`6u_5o!u)i3rh<3r$T&3xLHzl z?9b1O==B;L;bg8(I6rCAF8qm~{{RrWYT21qej0^K7i<^iUSZ@_ZAoz`J zXXv|fZtDb+%~FH0?YVn~*T{_TyWo1!BFEqjdzp>@02Q$FMkXcWLkW(bp9k7&DbJ@4 zu=z=}3$y%BHva$+y;8oRxMSigCLKp$Z^@PMVq4hXBB~`yGrv!23xx!ZH6E4ss01n0 zKS^b?9jmoJ)Yk<22`w?v9QJSk_nLBksK%QvJwNE{^0Gs98VH~$E6nslzV`ZKyY_>` zq&aAG;?CXisgdj6s_HoG)Z@^}K-lkYf4p~(&XS-10O?GT_G!IKZEb^-TY=cY!uWz7Lt{xqhSdCVe>=)MV0Xdf5qecCG6}?ZFG8O z9!)t^t*v7Y;iZG>c{Njthzf=WecR@FdwP#2rm3dIy0D%JQLpVF-RgG9um@{h&%l|# z$IDBkUvi&jkE!OZnQBy%q2?wdwpLA4DbcX_9`c(3ug}S@oN6pv=|+6AH3Bn?$hq_?NhS zI-G`D`wO5uC*aB-QsF&4K~Ye%cJNpJCOV3l){T{4mLI^U=ehXgSmH6x8E)`x9xrg_)+htk_Ws$&$jyD3c-Ut(p4q%y3)#!OZ( zU>~uY%)HIR7FpcNLu=2>ugg}ztmIIDx((=wcvV=|H|Y+PjR@-7av6T3sPKGBW1rL> z=lwkjOE(+#gTd-Jw^FZZRkF|A1khsyQjb#i0ncHEm6Z5({)BV2tnqegQ39D4J%*U=B zQk-mBo9-Rflkh$#%w1nk)UrtMT>k*(eK*!>uPVIEliXcuU=)e-FIB3_vh4b*P?jg3 zerH?o{{YU;f8^6x9`(%aP4c61=M@LqACd7eSRG1?Mt5Ooef_LY8vKcISE?0I7O954 z#H}`-%DhdjBWqjK2~|xWlM()zIwEDO^)5b6zL2!PxYU|6GVf9JC?UPKGu~&tXs5vT zT^i~mTHF`t6_0S#t2sGq{{UCCIpabK&ZCo8ab^IHIEB3}v`pf%>*)3aum}*CA&tt* z!jB{7KB}qHnw4$q)#45jT{QOE{t}jZL`aXkFNaN#+gf_aaF^ciMb>$CcXi z7kJfsDz8kgYE{=nKv9kn*;#*yU{|^I64VHLhmkToe0xKdR)N!wJ9g{_{h(}J6Tbo+ zhhh%2Bgz0d^C8D1O06;?)_atKN}p*W%EGA!o;ZpRz~VVUWdVnYc$GgyIx6$9#k7;# z%%@C1M+2Sc%~guOP0JpAgsZ7Rz0?j5-8T3cK0Mm~%-&SxDf~yR zB6pPk0B0{{T4E1~WyK#7#8VVi%s8S5wPKHnF1&H^4_ay+S5b;mAPUmI5TdcK5#v#J zugo@pK%hm`P5vT=Cy6|eb}Z=K8NeOGkZ62Hi#t+wK*A?#KU1{;8K|H~0T)mJ-qEMT zbWKH#8K}O|(F_1#jU(bZagspa<|d=3Kmm~&M=+))phy;2GO|Gtq(BJFkZguaD;QP) zLVC;#SMw|i!L@&g6S4uXP;XxzB<4sqNg556R?)v{74givYX1Nb4`1RMEU2h85g1dA z8D{l)k)Ez)OBrsxgvzGshd$s;(_}i5u5^AUquWSf+QVbwQ*}O%Mnz;LUABDga{Rvu z+vNvO$MROV(Vyv=EpxI0IEA|mzF5oOYYsT~l5sjf!n_0B+(fayl^FfR==@GI#M5ex z{{Sz4s2oP`UI*PH=i`U&I`iZhOhKy~$dYcSRfgFl{K{mWQPEkgS7uPyN?TbPP<#m9 z@!j5vRBKw2Y%5NCS7LD6JNS_@uTTc{_VMS;iSHiG4K~X>9Du-SfFt5rRdIBB#?N;r zjqYHxI`%J2J?#Ggc{=PK^HI<`%4E_qF<21lSNPn#Cf47gnHIeT%B4+w54eyoQU?;NDN@Q_wmqaD zC*ldZfuQM!dGRXqbF5(Osy}JiGPyNc9TTH7)UZPLDw1?aJNTK~uxsuGHm(kU9PjZp z;m6Z9Sl!k?k?>{5qrES~(fTJZ)GLm!)*gdcP_ zLFnvq+KR|1ox`5p_?A6GwASal?gz99Un5*oJD-hjp1z7VAUQkZ+w&T?eJ@g(#i0$alT3&&L zZ>kUwInkc2>0X~tPU)2*FlYV5k9p=xR{rCzd`%xj>+OOCc|i6c`$&<^9Irb0E-3V_ zrJYr*k6McRPy?@-Uz3-Oemg6U?eQ`Lte&CX)Hv4mSA54|*yvlinD71~GFz%mm~cv$ zqtiMLJyhb-^__Q3XHBI^E_Q!E6V18?W4KDo@OYYa>)+)RKh^vB-~;Aq!E-OO7ng>q z=^G|h<9a`d3#i*pH6`p|sy&I+^PZvB^17W?)^bu-?h>RFjM*pHKYwQPHQ z{{ZGXyva%N6OZxLUf)L7t9pYEG(I*zYv_H(dH(=Wxh=}hd#yWx+j9p2=4JW0{{YC&jvPN6@kgX#cAN^s0DjPTJDw5#C5rl2scowtPxTYOTJgVW zq07(ey&|(_C9m|!_vcg2GasmR&a-3M9{i>}=zDujej-^P$o&|zCpDvE{u}y-X#F=S z{_^{;^Z1^Tl#OLQ$T(g=o=MR?G1T$;l@=}|_ag=`?WyZnRb(7;Uu8k(UeR7($8GU6 z_`H`)!1~h|BPL369P9hdkD|Ir>D@3Jdw#W`J2ZWrDRSMazP-}K5J>SYtW;D?T6?~o zU@39!FfSqeTv9dsE1x2x)|u&#(YHbtc5cFc1oI?9%cJ{GEN7zn_J=(-it)j3yKJM+ z^DtG`e(jAPgEV;dl%9@; zPHO#jE@x(k3o7aqDt*Joz9yHa)ory4SZ{u2f24tR)YMl@4<>pB1wT%pnjHBvm+;O@ zFIgN(Peuy&T-Oo`4XU4c6FVCU+*?0Xt@SswAn*j(-H%bk-q*OELG!6em(wcx-OpPE zBU<)9nA-8)E}dK1uNhlhcM5P{>OAinINk z`%N8vJlBm`yz1KsKmg-WnAgo)`b9F|A75f#>rYB`49d;O(VlJU4w+X{%?g;Rs)Mzg zfLxin>(-@A*!4Kl@WgTm9L(2B6y?!v&1el-KWH7rxBmcvH)6K(XwOM0@3R@xdOck? zu3FjzAkwMlwEX^OrgWO{&MMv9w%osQs?bX7`1t%xFH*T{&0|>wTS`a$x<1nHr1ciZ zsDuc_jRHo`^BI>WuXM|({W>me!A_-#eoeT6u}e0YKpb!2_~KykJu#P?>SNRJ)3I3h zv!4i)b8A&?bx}i*Z8{@=yZQN^i|I~;n6xYQkEp}$Z*%;{W3K-IQEl;Eg7m+pF?v1~ zb*hH6kGkD`&Hd)H4;WSt8ramGMk@C3H>oHfQRA50lgSx=LLMCkjrNnX74a3AyN$8p zOs=AN_J>sM2WD1rE|FK0`YT%wkeq>|_?33_@%0&)4&P~^v6LShkg|5lekJZFUWtsA zvniX3yKV;NdoF9kPDCKoZOiB-p-t4RXP_Js#j41zq!vEnmV#ni+xCE{vCvmv%Njz&)pdEj=>1F-?CEUZ}@(rqfG(&%OZmo*UOXb$5qLSCCIX z6WBBIb1uhb(<WeeS{ldfc^$iAf}t?pK1 z*!bhLgWLI+ICoWG`-nT4GEHx2t#{k(rn9N!3zc4&jY4c zZQ+O=vsGR#LZFJE06nDRi^!UzK5rr+ts^PYv6i+xay_N>NXI~qAx;1mcLAt+kg5BO ziH8hEOzPIcW7pbvlF@WGsnsAl)DCu4cywEJ%o3{5yB6>O{LY3N;%P5@ z(J98Y!!?XZL|-lc0NPmkPpz+4>D5^J7O*=D?K~H&b)Cd+bu}m-cOonJ;BoIb*`u-~e2e>Z0On0;B9fgx!R0U>PKl8*0zO0QVU=~; z4r>gZ?tbm>`$o|9oVQi`cE8-o@Ra=PW&Dk-O-c{j_=} z^^fxq2=x+ufY63GBz~tuiVd-$Pl&ymiZ{6EX#mdI-LR9lEua~wx{lQ75I0kz#DEEh%?snqF4xB{o#3o4tOh~45kP}mgixL1Pr$yB5Kn6tAd`(CJq(+eosNF!2 zWn&8Q3`A)V0y`kwVNb-6L{8WN4U=$fT$)xfmH=0^LPxTZ@hsZ7Hm`{qCuK|1BfWa| z+_!p%#E)fCeu+$_$;20dq1x-~H01F~ZM#Y|2v(EaS zCBNoYR0A>Y&_9X0=s0iF@N4=^cdd~aoe-P;qxs&+Gejy?t!q-FLRaz`D-6u0Mi1Vb zD>6EuVo=oTl0*7Y$2fxwK6DM zsfsmQ9T(q^#3m11TozQhh=1Bx4>A~A75f`x@9muZGTf#=MFTkJ?%-}Co0|Pi4pT+@ zUshTcL85(!Bl+Bjf|CCLar=LX2M^L&i)!6xQMEV8uD{wp9%bV6r4H@3@x*g!wCNP< z(leb`F3dYwv9_!1M9o|3o}+#?MnBZE$%eIM)EkS(P5vAQSKa z{7q%_eO5aWG4Mh#VmaeneqvMG)SRof`(;-_^zBJXWG$8qr%+fi(*FPxMTyZemg2V5 z)q*w&93SFYV$-_;>>DS6E#CZuscUCuKzF0{`gyjMgQG9_OuwyHA-Xs5|CV zt`7T0h`nd&8-A^8+I7r<(sGsUAo9D^%^SX%z0BNfo3Q%9e_Qg zob|gJ)=+g@jtrC1GVDqoqoz~+GI7e~#fy7U(TnSh%T_um`@ijyI#PhDUBNo!d`O*M z-St}lQ?)w+JEh+4mKIJ){{U$AlE(ByWZc>lB8w?)Xs;jp$ekaeVRVsZQjhgma_7(X zmQ-WyzN3Onm2GLR*8q=+k}BnK-h{bMw!`%6tF=SdzQO08GI3@ISvD(U`$Vp%OTf~o z@Bow6+ZwPb(LVcxb8k^Y4p;)ordJ@SoCVe_GRm^SMCUr0uzRw><2pblR8LB zl@`Cc=jE0$WR%)|jW4Q>eMZXkKwq@$ z+9&ykV)xR(zP#>Ia!TmQQ(N|7y5~ndH>lZ;cwKEtk@`-k>J^(t)4}+beRBT*)^!i5 z++U4v=0Rjo27%Cw=d@l{jekg|=ww{&q9693iLdF_gvU_Uh9mvvU(;7tky_Myexi>A z`I=!xYNNM}{78xGXjWI=nPx8xM`#_gR&BLiKxZ5x?EV1um`=ad@;Y15`g6mR+z9xL z{{Z4A&!|&UGHrX`pZJwtMM`O*e-7Gch?flBtMyQJ)*QEQ!1kBHJ)JEPL;ztVZOjnC`2V1sDASQ7zuXdDpOw!T$gjCtuk)KWfr5Jyp$)=N)^ySHGYC z0DfjOCd>L&k4<*An`-0@bL5ZXkv0|rst5&H+-b@1J~c9aszbLsJ;DC~aq?rlcd!2d zOHy8n42-5eIWkvI>Q7xmyIs&V(O&iBkU26RR9fl9v5=J@Yh&hb_~!L2OQw%T{{Rc$ z{NvP5-g}c3L2r)Z{{Zf1&|N;Dm4FAfr_7(=S68Q}WpxU#3~ja5nEwDCC(?a4C2gX& zQhQo5qH#Vb&2;T-x>wf;3tI2YiAf~!Cnt$3_A<4h%fR9;!2}qaA2Ar{Yz^);X%zNH zvwzw}xrZW1v^Sl|Y=p5UX31}3;!#-kd&|V9S}}6Cw056(Wa!jdfk+Qp zor!-&9bMheTIj->Q8p9+C4LPtPs*?Q^kMqnOG80LtOWzWo>%IAlJvU}HYdL4V(zvY z-^rMtP;`LxzL(G9CZmh!ejMM~^Y>B5;ej4_njb`Debv{!GB%I#CUyRZ)Vpba;%2&X z--*=JryTG3nrHrK;QojI0NZHxoLd?H0BGV_(UL#`fS7)r*4njF!)xHnj9#RdKGn7S z#7^U)DQ$FXQqaI~WSZYc%%;T34WZm6h&$Gf_chAe=*vr87L{MH0dF2Z5$3>8Cy82! z{z=p>&ihaM$8GDeTvo|ltjl|72y{UA)QaP|crdp=MJJcpQJ2%| zbSJb*m&G(%4M6C5nky?i(TFj7&h@b{un)&no*akcUsYJW{7zNb~{*jFh|LZ;4d9M?Sh@_5t8=GXAx~x2p7PtRy5Q z!?lR>uZgUE1=pXM12_h(=y4f%7ZPygb4SfRBc@qTQ+ykL>Q`Yxesw*EqEaZusBi${ zXLImT{c_(;KnxX*zJ2GY9+_2rJpv%^1ACZo#Z@|AM`z6Pze!)&Bc)s4Up{;pKOm0X z`%2E9y|r(_-sGH?CZYl6Z<~BOIGGaUGNJ)u-^_=bVqD4wj*O4gZ?REntoHYC%wzg$ zA|MB!&zV`K`WeGtvnL=>ziwH%kwy07eLTEP3azrUumwB{Vo8xu;(=^%2ylPxkj)p?f+ z)|IN0%78f#=n~~nzjnO)YC`HbcAQS?LU*t2_A^FWOEQ-nhOCDm^DOamezJG#TyPATalXV-q+K%5YYL0nN1aI7 zXsbg6IwWvpQ#&2MAczQrBDvyt|n%<_-%5|_m4)HWja z{-p~QU+Q3aGj-K^{yriVC9Sx46`%cPITtUkbwBeCpo?0LD4=*iJ@*%hB=&8`bptwY zNqex=WOHHo5U=Uwsf~_`%iFHg;7v9iB~N$sg9)AV**ii0b|tNG{m}K~TYA~%7xcTA zH|Y=+OKcJDCDtE6#VP)ymSHDl&<;wd;IA9hTWGf%A=#Tq7y5nV;>hw&=$x5pKV@cL zL;nC$kJ4U;2SIP7b z3#d{qYV5crsC*xZJ0m`#0ZWyE93Aix$AW#lE?l8qQ>#o>6-A~-vn;*8oZ90 z$!G3gA2UBu`gaCLWdqOVI=qHr7_rgzF&@xd4&FBxlI2%3PYyj67kWr_3}(#3ur@#& zBj#b3F5E2ZXvjj0gzZn0%=9ji)b7Kr$`RUp30K#;bv<6IGf)ANqmU+<$ris;GghDN z=%!w|TGQL~8%Ny1+0`D-G3#an-%~ZbigNV*z#-O**I?u&n1m=zv@%vTrAU>D`yn2u zl9iTfh}YsSKdQc%?I0=MwnUYYlriZwSiXPeV{`NI>%En$+i$@d)Fa2oeaa~MdS{_G zt#K%!3ii9}kR@+T^>$kI8!e<3RzGMXz?lw~wC=|2KVBmBRCrW0MWU80N&G0(LHZ< z_}a>-7akdX<}cSsTQ>>O!Mfe656qdw63+mlzm$Fsm-8hI3O>_<|gv0To5SJ*#`TC zfTeYULFLKdYvc1W9;dUnu{X&(CTVK8FWTx!_!670QZH6!PSfBCqXX3>Lq=x^+mVp9 z;x)W?%24vcT4f5U!{&}wy}g70RFGxB#gIM`LwTBzN3ybb9%Q06VlwZ< zT`iYXLb8w)1{}zCQVGh^^Wb#w_50YQw58OrUb7aGR0_62NAg7_HnW#qzBw_ zG~-*5cW+|_L$`xD!1{fiqxp{0s1o+@0-05p zm5!=cymudAGTf!m{B8S3pY`sNF4$G(dAD8YtcANlR`w!$hFz4kgsPLdjqA9A&f*km zDc2v_8?oDKv&k{?@4!8m?W!CGKGQ|g^Ag}bn=btM^AoFd#UYPw_cFN{_hDJxj?APV zA2F+qjoyz>!OCj&zC_YtXDbB+jn5$IeyJ4^R&X^R`-tQH=HsLFTw76DF0R0Q5M|{! z_EM=)yIh{&c6g3fE}JX_rlRC+6+7INma%Pk65Pb`(J`&mHBY`z5+Z_EKmuccDm2GY zZL)TmJ#NzSd5SLfkWs?&c``y+tT`H#bje7Tj$u`gjd3DXW{=`bt-+AH7e_R8OjmmF zVwGQLO6w=ViMemkCO;iRIN<(em31m;=)hysuiRytDEfNi`Ihmaf7nJ`kJ37_0OA-o z9?~zZ*uvhd zh>{{Uzfw`cAr@FY6&RhWPoweTS= zEyEQ$lzE%yYb>L#MeAmKVJ?LdJiMbzmaBuKF} z06He3&VU{58>r}p03<^eBmgN8Zo2U#Fw_%?LcphPDG{R0De;pmT zxvtS!lULPpT=zNP?jNMOW3SU;+NA7gNe^1--EtPT9y^BniS`nl-oo;hY_7-z4>3O- zW28IzEgE~@>Qp}e0JIJc;{_EhD{CI&-2VU)ru4XBgwvwj2pz+cKN40hRc8*mn}$Fa zpLwNED%}h1bdCVqVJZM$oq3hsqRPp_!>-I0?Yq0*;$A)2>Y%CnfYyYl&Z5k>Eb3QY z0TP+o#?zEvAAiWl=XGwkbG@&YS6p_e;7iVpb@t$+WV794sULCw0GQ0qo;axn-G~5u zlPx+{FhG@S?q4$4t>j*dR+nT!k6T{5O>ac+-dtkiqBmR(yco^K5wYPfh45-1d>_ubYpEHT7#!-_l6t zKMQ#`{Z01NJfE55-5()atWjrCa`ks|Sorv!$%?4><)~$PwZUH+mCfOC(%D>IPW$^T ztE{z6*mv4EfCZQmPirrLWS*OCbf)bf1LttJ$JEXS`tmaWu_M}sv^pR{MGa%7*WWL1}4jHl0r z@Fh1@@6OA6hK-DUxYWMt-6J-do9lN0t{Yqd{LIUX70GR#c?&mTNiK|cy^=7#z1bAw z2MWc4@A;m?lj$5fx;Wnd08w3C#r>SmEXBYVSzF_G@yt#-n)-?W``{{Rs;Q+Xfs zi^6Gb{e#NB%AEHBt?hny^BIp**NGSsfz zvjO1Fior0y*q&~l&qx0N3_4|9I;(9>mb;TZQmgntc_MlL0HU$po{x-Na#wpMZg5pB zsD^SMdIBdM*CvE!TPC6Uq?IFo5Oy;Fe-WLHMc@OlW7)RkYs_|?Phu969JhUdm|E`z zhNLp5VEaiGE{^=nd$oEl(kFi5I3C|Kt9>scP;PhZX8r!Abh{o%F|8UkxVAct2~}EM zmPi|c1XMBcxaK3~Dv|x>dY)7@bQZDNI3g430H>K4upWHK*I(N-r^O25+a@)@Hiwwu zXB%U{lvi~Rrh8ZJFfX5FgI(JGByt$Ak~*JJXLhQt2f6u`*tG{@%mYVhLE9aZIXUOmrjmf=sOHeHk5iIwoCWwwM#hk}nHj*bzF~*&LiR$-380vVude z+w5jLs^D*W9M5vv^t-^M0($${?2u*Zpi&S|&eizi*SU4Yvo>#jA zApIK|J5RBmkDrOMPQN;s?@-|yZd*G@R~qp&_}TXO(5(3Owhh^YKg6fUO>GwDk5bqkV^YEo9wk>#>sXof zhR4XR&HNB$l`gCZ8Z#}XhRrAFnM)n-dlGF;_YY}RvWwiOdiD}c77|A?ve;7lE>(60 zq`Y-tJZ@J}VNy5ZSyJ2$5i~+f%Wp*5&h^BbPmX*_^|M;uq?Eh`lA41(Cdq-qn9E&2 zBzTcOQLx*QFUoW$+(qT`Qe6{|3v8Zj+VSRNJ$=;JS6@!YAX$F9_2gIXKfJxp>NVkE zHb!HL>t7{~rx2uw=W@!7jjUaAwl4OF+AO)Rvdlp{Tlv-Nv9cEhJYRfwn1&k z9gvFmI}aQR0poH_M1}3{B|ah=WY|Q6m@o^`C zp&4WMDUeQIItPe5GKk*1M)GZFiN^L$t;gVh5SBM`@ZKdkyz!$1`HY~ApA##~@uolF zZI-yse!YpZK<9Ev;AnC0D!LK5#kX1i07sYfdUxPHymOJ z0W^)lFosjOgh*(y8P`Gx$xg5gx-tj@6h$H-8h{JEMc)yd)KFjp$C&6ad5+uwbm-a8 z0n?**%;*w2bZk)o94ADb02XnHIskO(!Y-f#516`(Ish|K2!x3M1Vm2WBhQ)IfC4KR zRvCveJ9hvhn#2oI2Rf5GV_9HH0jLMs0kKr??UrRC8u);AQr(27z?FHu9=ls?ipTOM zrK*8?Wh)fd@wkz6!6=gsb)An(k<93M~Ras zVra-=swk@ck$mjSz(qwpXuCE0(E`(-)9e`OysuQ-a8i5!nJRFq{Z zska=dBW6a*uB@DUle8_2J;ySaT#4Xg`fZn6llCC`es+D#()7%4(~;iH{mtA#JP8*Y z7-RjM9dr4UYI4pL9d0&KYi!Ma%P*@@qz|S$zGO_ie0Xy}GSS!;8CtrwOsa`|o-)+k2 zWvvBq}d*f=1o1e9cT?p{{TyRj{cHHJ-_N=Kii|pPt38m z(;3-J4R~dHkJ=dPLSJ;B@TW5*CAoP?O?vx)9L-BAxzjS%7cY`6F<#!SSJuE&ZDWt9 zIMJ7tU>sd2TY%u`pAGZ;OHPf^Y3MyIF{olyeDUPVWI*+x3$lJ@D$?H3syEY2#pH$v zMSySfDej?x?yXpEdQMMBqcL}FWD($rMbRCX}d^)mfy(x2t+k!~oi+KS7X?zGfd2v9lVKCG)V6=FY^$b*4H>$nFruFK7mg@*G z8FnVrInV<~aj}Y-pDuZQ0qWg)q_WDXuq{K5@Mb;w#&y?<@v`?rHo+&8sROPmV&YX@ zV@&ED_Do?7bZ8j>}2Gd z{#_f~{{Tz$tKFL!{{Twh_)d0y1h49y3d}kIuOsa%zSgfq$awv5+UCj|g+55suDDKBm(iWtSEFf{lx?-CsDj6hlj26T7arcu z@2KiFO8ag=yQtHJSSUAWK77d7T~8wWTj>ts;GOH@Ml4?+rP)VYFGf{Ds~v7V`{WVq z2B0vNvwDRpKE!s|C&2^SH>Y&h&9p1qT5tCo4wV7qlm7suwdhHYZ>h1W#|+eWZA%Y6 z-QSJITvMI0CerBko`YB&KA=CO0W=kbDx@7WuIcC&lZ zcxLBQxOQe73DvOI9R4RS8=BmtgdtRW7;&Wlh#)zPzRu7DO+sCk-ufk0{muA?;#b#j z{_;S(ffVu}sA+_21!25M*FV%d2gEIiuD@}BbRcO4y`rm={{Z25(tUzkIp!5xW5jMg zFkSa@OqLN-#MC7&Tud^X*C%j5dvDE9Xv)VLu<`dK{VqU9Xm*Ql4<5@$p+0PMm zk*Q{kSd*mLD+@XDO@&VVq})ukFZ7uG(=qAH^rSMKa((3cEML{Fs@mp16HO*E=TAnR zTYSRQd%u|yn?oQY-bk&qV{TJgV$&z%u~Gq+RTUr!QCrCsWOlT}bMdk%I`mlCP+_1Y zUr@rT>g=xi!zuREu&*&s1oH+@)v%IxuW3K4T@;>D_Rl!#zLM5jwh<YPNuex-LQWW;~K<$X!AVp)15@yTGf%EVBjB_uEAr!wdW5icyEOxqb_cD zCZ3kj^RXw?$J$e3zPXdDzk$Y#l}kb{OF;4J$6THzc*sG?Ix(-FoumRu{x=WR{gmL# zHefs%7cVlbN*?Ts7P^oYXKxB7ORsv%2c=Zq)(i3v?W&``fBKB_pHq5=s``b<%(SLI zkwS2v-{wCTiFqE{=sEE;UZM48{{R(b{Twh;0)`<6{{WarxtcFT<9OrtozFM)wLeQJ z(BEjYm7cZf%HEV^U2jnyMn8tMXp2>i=+%>?19}sUqNLv>`v}@9&_3hazla+yBV?Tq z%!$;x%@m<3M*bys17!6qv?Wi__uq-T7yO^B6m81eF3qG@+(QsK;6rr0OM0a%d9Wrw zd0lIhFED7;dhG*^5Pig*T}xU8MF_w4fjSuf02eBi)8G0q+lWkS7y&UJ5H{s)84Bt-=1WJCU7|q|j5j%7d`I~((F8|b7|AV{ za7|pP1bBu$mN#6$29Gh@jWeJD0i7Bm?f@)U-Nk_-&WRL21qV}!+)2;@L|E9cAW;?| zivmQ8IwSz;$HeK-0lJ7pbVvZwCu%!eh(rKs5rjhOAy@!CMARV>AOM+T3d5Mjfh1zE zY?4t}#t;GJE)&FI2FUIzMn>?>K*!@!LwE?tUjUw&uwl zV-~Bc)*Au_jHl=suH9iOvyB1>BaKO4br_|W&%}e%Tve6z&u?=bP7>OEo!Lu?wZ_H8 zzbtovdwJkVS6CAzil@`84Ra#&tJbRlU1^UdU0+pMw6Z$r5$0W6Ovh=<)AVP(N1II* zR)12Yk;oGu{ZI8G&!bRco*4W~ey7v1O{S{@GXtXE5S=sA*tJ(~$@vB*+sj|6qB!G| zJ_=uIIaUd-Oe)rk+^A1+@h|@X$to4{bP3~r@&nOMCs7plbK9}Ge0ZvTl&eqBevgHZ zcW}9wxEt-PFONpBzrQXUG z!Nj{DrIc^Ggau)7{V9z_Q)-^m>?c9$3w9W;#XB4lW#39m zD$B0yb_?3uZTw6{JwR6ARNw$W*1XLI7H|4*^{o1A0XiP>Pk8HkH1g*>c58aaQd;_z zc4FB2ZFhG3&o2J}5%9W;^?NfecD}b95zeNXyoPlxTarkF{aRlC0H?i2b8)uuA3jS> zF;(LvxSmg+l+1(bH-VrJktl7ml0cq?>t9R(n%DH?Ek|z1{LEdLZn_MbBzT>C86~Zp zthn!%zKAJt*CXzdF)mK(`@Hu>Y+|2tsf`t=A%Fw>^B=ilto++pJn?_AuC`|6XsXgSSstpI=LZ1_=K$x<$V&qu8eor?ivy& zl1H>u`$&tYNE9L;SH}9Q^%Uupd6|>b*Qw;FyJxre1MVijAd(wH`$!lGs~LdN_YqM$ zW7Tm$heE+MeKSgp4`Cu@dQ%rBlC+nt$Ah_{`@6hwL?QyL2#-?Gmy*5g#QujfrXQzp z`iMLcCS%$iehj|qF0WY(2G6vryA5lj>H(wVh~<;%lh2p1wGqED*PRW4%#Dp=uo6Gwl^KwI3^y&nY{{RwCPrAyRv4{7Z`j3tDjWoHf zmq>dzv$GP<^%p>Fm^3}di7u-2L?t>i(n%f}{xftH#?Pau(NEiN+T?o~=IVrvG2Hrd z*4-w)snD`%b=!85qu`EspE$NLs@AQPhF&yBxScN=*0`}&`q>Y&O~8ai`$&>SKZzo& zZsIu9*FJ>oja^;GnL3J80ih38Fdz+cEHSY*2NOgKrUIIn5L6I;WyUqRNOxV%KM=Us zTzHna_+8rA+-t)bAMCa*-ZpOU(I8;{E3M(X~h{{St;$R&Mc zSlnFK^&mwG#oZl>J9O~k?q1xbP~5Gw6n8BQ?o!blg`6>0H8E}3=0#lw6jF}^jB@E=nIsA#gBjer z*;xA-)MOn_IyD3=e?gZVJ8*J!??Ky_*r#y5@FV{ey-j#?**G=Q1KtI3=|X(3V>ukT z0VZyFBCXx}V`w<$p(rCoY_rZQp9(p+FpOAR2?xmXLD;3i{{xZ^BiN-8vHpMZP8NcQ z%p)Y6`JXvbD^3%+sGVCfLO_wvo8KZGAp8zmd)}v5Cvh4C!-p^@;jaP0*NBsCIPyay z6gcWvHorJET*!P~A41@CR=2DtWsJ`p56ly{DxwR`x=CT1`y68AwPcI1D*eAQyghqN zf`(i8>{WH#%NcxH_E~j-GW3@3s0b+g@`-9M5yy*|lG>P6A3|}_qRRD6(op=lIN)O#+C&Z!B+bpW$}l`VlgqLVhjYY z@~L;n*S&{G_QJ!~`d8*LG!?&$g*vUGilF2aBToM6J=<1?bIcM4d(N>v!I_xE%qmJ@ zw;N(qI-PN!x8|nYT~B&vY2Gvp=|o6 zTEy{Z_b;dQo)YHbSJ-lgM7M(HBi+ecV*3SY>xcuVOH3b)v(d-3pr?;nMBcSNhciXD z^O(IwRCyZ6J})gL!?JIew;KtDvd^e zOvlO2_3FOsEyayC>(`N-dgL>S&{x@%ggMA=4DWyL2%2^Q3zQSwjk_OksQ|Md9$q2J zFt?d{a~rd9GLm;0)urxYN0eI&@AA>1`bPYPO>KB>7U`MsCzjp*dl5cLpw59|on0Dz z*d?VQaNoWS${^CcDYsM`xl7ATwO+IO!0=uaT|9%iYt`p31G#^=UcVEFa&XV1X^uSF zsVRn7&It6k=Ncej4aN?Z>r2saou7-(Erb|IsIKm$h-$w$_f)M>MTZeY~vqO=jh3_baJ-CRW@+MH^WMB(`j&Zzh`}IA;C! zQ#|K|#u&n;{mYcyfM%&n9-Y&Q{+t_o9i8p!+fNu2yXLvSx;xufwEk!Uv#{>Sv(8NvQzYeIp21{%%gBQA0Jxnk`@$6)}@R= z9pna|TWn-&q{nKlOuf)h+__geJ~pbT*(m-sj_rQ;XtwV(oK0_hNBakotL;r>6VzW> zFL^iLcC)125Ix1#sc+{!pU31cmKvkXI`53R$}Tyt9K;m`C^R&5;T<^WNRsG|QxC_x zg##k5hQ>ZRm8nCum_8tc`f7>x9!3cbCl7bkR&Z6|Ny3(@YER}sL(2U!sh{m8(z8-v zg6eONw{^9Glz2##ZhTX^>I$9EhK^cM86MW5ud+!^nUtKzZzqvZtH6fAf-! zw}&-4fM}u5+V#yS^6kmA1J7-Jpr>(sy_H6P_}2lYO0SpyrMR#zCDi5TSv1;^5xwm) zx5|52n`cB1YbWkpRd#|fJvBh|(jSE|esg|1@K3Rljzg%mzZKyogxE{7FFxOSB+rz@6HQ|zrr~I65$Sg(t=~%qbu=(r*{Hi$8^GpjfYq;K}$xSO# zg|zPOvkYU+dNDR`&6){s)-25Tep#Tg%>%itktS)v)nzGQ8>>`8=iZ%({c|O`X^c)i z1=cxcKtukyc3)yRiz&mW9LS=h_GmU`5NX@zP$$53;^#;Bd`j@o-qj7vs-s&9m-Bxh zh70#4(t(s~0+|2%jzMNbXrL!k<1RLi&@Dj~0p#o1R=}jYRtr;>H1-X=!MQlH{l-Li3WC%Xs+?sQXhT69K1G*>`u;(9u zF$2*}kdsdwhlNkGv0r{^e{Hz?l{bBsPVy>Y1dhv^>1e3MM>Tijbo+t|tsDApsj0aL z-zZ)|xe!YnZDu*e=|7}Z18w;z8oKal31~7on}iH@)0d;I2Sj7K+WrWmh_;kseH;9n zLHfQp%J(5>_>ztwU&z`64ooz<+9kIfc<6L_;T&T_eQ~zs`lEk9rIp~cUc?&PDeL2VmPLd3oBHATMsImYOfL^g09|a=E8RWr^VnJR%n#=zm6tIp4 zrsctq;_E~0bVHsbo2*AsNu)3mik!7lmPEzJX>y?B`3d^)^W9JGCJPZ>=-bJ*@DyQ0 zUqr>yI7lW+LRj6^=b?J`f)z@&ev|;z2Ol_Nx2q|$rd9VL58vRz4K3leRx zTi9Kh!U=)xe1dKmpqHJo+)E6cP6(ns>FS9J^4d6^KlQj255LK)=6>payRh25>${$& z(#$Ad2}`W4VE6!^Ukfj z_zyzrUOqSxU!qj47;3ChXR?nuJxL}CJ>;yNh1Jzxe^`+qjC!&?4M`m7PWm-eQYEP0 zWFGi3>?OJ|dUOo=W^AyPfZ|b)QR^DT^)}jFe1YPT&U}2!lwtlZtCKpLRHW9v_%L

D8n0d*JXaxzI0&)(7^^B_lvUn%BOZcHJI}lr05)+Ge$1I ztgx3RcE>F6J;aq}#7ISFz;bW7!VD=7TJjX1K@1d!^0WFJSv7jSFEui%`|L=$mUY$q zn*C+q8}3?VAZ|3GP=r}vN1{$kd_E6vlKu&hn0tk_?LQmc;{ z5c*0ltZX}PjtPXTvLud>(Inw{x1+J5I5$e%=2DKO8=1+IZf%at^Y=D32|AULF zAbu%1zz?9+xem*a16LeBshPJ(KtnBSfYjr|%q04y1s2G8bVSsX1HGlz?fA;sQ!RAR zJx$pg)p+tsmlGTxj*~u8ecCRX)pcah_Gp4i)p4SO7H-nz6cu(WZKG{d{8g{02KVg4 zQcB9Jzx3XD6FfRbOdc|KIa^%71#*9TtloF~OCU9MY`7%@yqW-dnNZj6d9Iy%EelyC ze%tIssC4EtvYB@wustXsVjH+rd3f{fco~bs-{qJz)elqCg5_%h-ZGN_sXj?6qXY0!91q(1f^^JIUcP>*9(M)BQ zuq{{>l*O;4jM|kFAJ7IAr*g2R_fIFe*osHX`c33ftnN|yGI5|i&QG*Pc@1qJX{rf4 zw*fc4sx(tyw$n~n?N9WU8{zO7z-Ehdya4d~A29C;Q0%0cPRzxESB||qIQAJan31sc z-e@?OnQd~s-!pERhxIJ|!-r8V@9=i!vQHV?>7xA8%NX&04z8(TPoYoKnp^Qq)YP16 z#`d-<4(hT!Y8oC_8a)u7T(INxbRfog(RVYPf1akfEz{t01ahFAm4c-3@8GL|H0e6(3oF z5EIi~I^~~#uPxp#3~gqw#}t?_cUzaKVNe=1jlTa+slCFBt^r3e=-AlQcU#8hoGkOW zZDvp1B(+s%T5G$qJhcPf15~KrdgFMcT@-7^z0F zd68c@#^@b7Epa4Na$c(ZrWy$iIk@;R>?3D;OuncL3?palt5^S@V|)+WHJT8fk-0T&st^nHzg8ees7CqjudiW;I97b{8zRJ zLo&2v0-s-XC6tTVl;OlL9ZuOlydpC95r7lrUHi6HNoShmrG@9Ue2Z!mcn zs|Mf=&ZZ+-C-`v{c)e^yC9@CLcgm-&|1et@@tKI;IR{@crqKJ}1Th{`Uozz!CwFCk zY}-2bUs5~v+K66g6S=JTd!RPjNVcW95(Hm4HjM&QPFLKf9q!Ai%b;_NQb7kZm8Vu> z_IUJkPtz7`(P`eB%}Te9G?r2Om6yq2Dt#Z;%`=j6)t%GXaI`o!`>|zmUPps!;cKpX zPESQtx9a+^W-83D`BZi4i0BzwKAFR{?qrDQxZkZyf1xMKg`!6F4cCR!Z%fe+$Ri;G z(kaBqLmI1A5G7d1qm=YM_Is*#EWJgdU1JE4@d5GcDqDz`@xI8k_UJXBWX!( zsbW}RM^R0fLD6@$Qt4OG!%$2Fg|_7z$#ao0nDow>-Ch(0tsqx4riEf9%B7(^UxO{O z6z;;8CVs_~zWG5#^T}yd(I(7`H@3stTT4Mh&^XFz?#tlsO)oJ9a z0)PFlMD#A#uFSux^5;{)l0K$<)0HtxeXXEj!|rJ^(}V$;kp-#5>6nGhg77CnTJ*i{ zTh7bIlP|s6N@KpH>c-V#2_AGG6F$$XX$@ZTYg);2%odQ0=ihKVpl za^Th{Zttw=;b$&-PuhUT;-9C)h~{&I`1bfl@LYgEbGj}Wa=`e`q`~bg>6N)5IYv@~ zV?2Cd?MkL{+^04Wy{Ye5INiL=59EDV6*v}O&cnwuQu%8bHG>-8+E42>b2C9PGrlZ& zJkDZyqq{VqbmJ@Rzqq`M_O_{;g%*of$Ir^F^fJD@2^cWa8q01!w8~*6QOE#WPF1M{ z%B5K2q8Q=4V{eImtkhG#55O^y^|rC2jNe6-LD=Vm8Tc)8*^jH29(EV>Z%tB59;TZv zu4Mao+1y3jsu-B`yb+B}iR(18%cfTQr6=uOfvJ9G>cyyg6fTXZkuY(4d-UMj-0G+o z{=3H}*vq#hc<%RbBC{P4$uQV?PcLB9MDfSKQ7AWpw->hmrpec#&y_)yn2@ZLgy;#m zQBe?bMw%+2C$u}GjeCn4G-2u@vqU23`*3tG=PJNHR*ga40y#X1QwlCfSf5C11UpFz zNo=T1duf~{KNr`Yp>9}XYfbfjs2vfrPkTrJ9j^ZW}{gwib`1GpGR1f|-g{91i#~ZDfmK#n!3k zwI1xN5V6&+`tXT?|GF)Z-*Zi8iN|z$BfwI1?n||IWb?n&Y>iVm38L<6!h9{IX!0hq zb&I)B^BnY=58r#LPmccsDU{)h{S0W@8A%sR9&fVtmL_`Z=9>^!f+}Cy|G_@b2wPQ7>^ox!Xdw!=@8GhtN64^iQSmxd4oVXak~Fly^6Y!yy~Y|?N59XU zYE<4nV3L(qFh0jupL54M^>jH`S;7FU0UJ0yp9BnC?}EM1y8&kBB2In+o|1t&K9#P9 zuG%P@OB+t;Jt>-yll0;o*Vxfv2ANC*C{EH8bosU`4{A){s0Y*050W$a>KkjV?0291 zvu6j2AfF^&PBdhQdv&-ksV!hz2M7F+%}$SgOkTFZT0CMWn)GhCl5Ll>bv#AOqNHB2{A% z!o2quD(ULHHqHow5P@7SGZF);+PV}N#4au3R^|>eC_d-)-a=}vZxiHMgT2W0a)Z>o zKxgQ7;q*M|GCaGNBr2+xWJbm^7;V}6K;UO@kI3hSY{cK>ngx2#)0KIvHLN8od=MDv zjCQ;9`;2KWp~f|ft^@G_Pt|K=*`Cm0%aPLQy9{XH%~G5K0~we7H{7xAAyQVVzsuAF zK&fl0tVV36H8$l5vds6^@N&I%_@spuQ*%awED6H3r~SDNOG6z#Ts!d?cM@xCa7p zM&o4$Bwq#oKlqAwvCEu-c&5slp4eXGhsV)%?;QStm;$dR`{-8%$JqzHIwDy69#QlR zrp#9E?$wT)tqU83VK3udfemN}QCHN3A<)1aHnu8`sn&eO-20lL-d|H zjmI@d5<%&b`w6^5H2%oML#TWRceHNXKu<*GliQ*uo@knRh+`GnMg|O!@PlUsGVQj_ zx+NcQTs4;Hu#mz@Yx-FN~eRb!M3&JP(LH@SX2G1UnOY+ z#Vt)_3Pq)NwVR{qhl$;xSaRQv<-bQe6}w-IjVv_^KwwT?I65JGj0>;a+U>yN5A(p=-=>L9_A{}a;6MDHZNxRe8s480;IO0xcJZvc8&;940~`-8GQ;Far&lJ z3Z-$)AQRXlBO7;)27hpQFKY{7tAd;K8*eA7P9(gXQ72|#MdrkmS*%a*n?*>t);;M? z7{!M<(T|GwV$v7iTkjiM96%_a{Zd$u-p5vd{EE%naVnY4$DG1)t##Ou<8zpiwcwxu z3bxUc*TO=lh z_H68^6nfRRuv0lVxkD^l?yoIAoFqqMZT8cnP`0|tK29PP^)nmH4UcjR5@V(}#+%CL zl9YlyWNt)#e!y&7>8mqaom1fbkFy_^kuzmlzQ6aQo2H#^j2!xFvO8ruoDIBG`Mzc~ zdHA@`+?L`vA;4qT#UXvkzPjvA@u|uJ6Pspy0yD3|H2#iBZN`aft$P%nH|DXV}eVn5Tt(%9z5?L!OE&0m>*mTSCUDe8+&E%hD~ADdWxbK9^oGGBbO)It?9^Z71i zXg_NnQSP3lC-xWc1K>L_qRrb^-R}M^(cwL#F}LuJDyfV$CZQLqpL5 zhmpu&2%*^PhbgTzSgyF8IVvu@p?~f0tPo<_KwVQSK;keFl@c&5+wlQWsBHVjG0}=D ztk4_xC*~ZEstp8Ni*%iv8e%%w4>=6y`L2kt(lT*po(C136y#jL3#CB^C$r|av?W&z zAsMGQmLv2fB0IW$O_)eCkzXZc`>rz&vRt6Tkq>*D<~o6nT&dn9;Q5?sQ_b0mH=ZW6 zEp5*E^<5_U6(K5$^w`9XR)$D9BkRQ3&Nb_*NrS@5!}jWm!p1=|P{f_O+{ao=5p^{{ z_4ZiDOZ4r}GZ7wMkh~Nx3t3XFCJqJ_ve$&=XY*lBdjYMk%ouOGmokI2}JqFVM{_zubQ}BcR$g z;WK;T|1IRXb)Tb#_%3=;3v0NQPip1~Zl~7FUO9AnT{EVV%JMppXm!~#vXCb(8S7e; zsxIH{&-S7$kFKZtje0b<7uGG6kZmO3{eJ!7zh;_ydTw*E((JjOrimjWy6*UeD2Ku` z=F?{(YA$mezjPg&z^p&P2>_4B?OK;;4P^T=t#Z_DS)KaMIGilAGQ}}H0!brujKcYs z=s2sp)J!_Tfz0`ZeUaQ7^1#Tye&MXb`P}L{+(CmIySxfqrukVm;WXkjfDf~$+}MGE zpccbHCBiW;-i&k1Z>l8IZjucdboBPMuYj~w?kf@%CSK-Wa|EfFwiz$tFATmseV6|i za=UQu2obwW`tq!Wqj+ygW3=U8qG03tfY8C*0QP|`PA}si5|0C;?=D08%Fd69&4adX zI0JIdPIBjY&In^xV?~Py6C-tgk=r~=%PXn>M5x`~=BWFFMoN&;?n$OZDR_LcX+n4V z3}-9pjQ4j4#je)jGwQy7i@Lfp>KQ)YBAAvY4WGj|b2W(U(vL&S`ES6JVy!3&^F1Qw zrtvX$LAah6&8sRxBYv%?KB!KW7jmwv8Ouwqe`Xl6?^nx(r9!w=G;3ZREOY0dAya4a zT{ri%=yh)o3EJ;(TtQ)R^XWAly0L9$oNsNu1_{9!$w_Sa@-jgfy(zQ06b9bfRJn^A zo|mGKe}wS&mU{TCgr0O$bCvIlWi;N^zD3v?tL#AWHz4{sVsa&JSLuzki&oft2U4?j zh3-rS9v<$zKz4H96LvEbUjD7BnL*4)Vt(b>`AFR2U8YSXfLB6snlS|dIpTjRmsn*! zI+2(I*cuA>&0K}q)~+yM#T-cVh=7Ad5;_W|w^bJlqducDzorp+is}RYct5Bkn{QNf zfp1H%C0!0cT^{7u^hdU5np&kH%|T^2Y^Tf$7)|IQs|tc3OY)3;bprL#kQLp9C-sG5 zIOJpAw)xW{V=CMH$?DGLzQ5n7=EZyeb8!ic;)qu`RLyKxf}(Nipw#tm*M0PDP$pI4 zo3yk>lYxn(#IOt_FooMYJNaI!$=TlnyTiJ1sU)wuWVr$VK$N+9O+M5a@ws!Tb6k${ z=8dPQ&`wK^X7RJJ@W{^dzaemkwryDBq&IOvswmPo+cV%rLyh#* zI=KQ{D&_rkI>dE|Vmr(jBdzp>`vHYtjvr~>9afty(Tc6E@bYfgSLknQrf&akC>OM4 z+aoS@%6<2lIPI2z;Ap1eG3i%JO!qJzr>#QacR&tXA{(CG=qwnhveFe#SpZ82N-tt6 z2(b`VetZ70_o$96bzEsvtB%YyXdong14?$v#=kXmt<+AK%_QnIG)eWL@O+``*K|1j z?N|y~vhIVZLR{Quf+F`*Ivd87`OuSmrmkQyYyTq3J>@%fz&gSqz}0T!c5CqP)v)ff zPN#)Wp=}ITiLiFbwwCqHEcO}1=)Y7q9yQhOj8-oSJIWLDQ&*8>e=0Ab4^Jvxly1Bj zbBfChanI7*+h*ZYALu=V9uih5ugYLYa+AENpL&WJF~W(&V8L*Ks_V*n0$Opum+ILYWHQ2N!tn=D2K&AL>1>LbO~13 zB$UiA#fDBIy{@Ax&cubtiWs}!O7h+ZT7BH~=Fm+Ow^;EMBFo3JI&DH0xjy50@AFAR z*TES}?Xz#&g-tbL*u*uL=F|DXF=7sZYq2ngkY5|KC_!Cb*}1qm%S}2O%u)Y&Dwi6i zxy269o-*FqfbDdN%H2(Jo+&5IR0mqQnllNdIk`KCs3cAc1R1+^Sy@2dC)*O#JNr&) z1f%<(gUhkR!E;)L@wERPi=uTv6d)WF$E6#~GqeP1^BVMkdli*cp=>f@)ZDkD|Dn41 zsA@S@=17Hd=S*9ODL7P?_$0=e0FJwE?f@M@cn-Ik*tS9s#nvXscns%8#jY-S~A=jG$)2V8G_>=~!=QYvpd+`>3_UJrggr7Q*htPk_% zSS#TZSD8a|w(@iV{{vO>{B^Q)-o31uX1e`RebsQ%(nYtX_f|oI_eaH^jTiH1>C&4~ zWPA8#6g6GMg;{YGyfDn1`W{Q@gWpS;XHH_(#?wrc^zU{-$bqgA%*uU-tiB#FjKl(u6I`t18bA_ZzfkvX~bs^d0r^*;G z9u=R=H$jnqXVECe+k~pVgcU}t^CL4?T_WBp^9rFXgrB|7U(vh0MAV70zk$<`t(*Fgm#{FCszk!~A|1 z7G7_;aD4nPK`^OMWK_4ENN&rBQ0L(7b3Tt&5PDlu{@^+~Rbwj-NgaY^{Y z@VAH%&6{Oge0gO)8e1~H3aAY1><62WZ;#j?xXRw+haI+8jfHPHRplL!cg~|d@sXBO z5#d&rQA3^(l)<=rh;ScD{q~#DeTvA9WqUNeMg+E+mdRX|_I8wF5mp?S2pdLw_;Xas zYCau@d7#pXY|3T>@f`E2K)p$P=(b_yyZ^q4!#+D(FGgF;MbY;{D^CnST!_wk$w4I{ zI{kLFVcdQ_5~9v)+m95y^wSI3R0}MtbPgS+zU`p8YZm`Sq{Y3tIECL53_yudKNyN% zj81~$f9_MTj%NehU4_=0TaRX>EDUOa0B@|_^}ri%*f!trH5d7Z$3X9~oC%>~Jc3M7 z6#nGj*-Q?%CgZECA`pGGia?eZ)epRCy1n&$A=D~EUaa5a*5$bkmT#KvjuF~xrjH`W zlxq37Ao26*GfQ_lv6&A&Q@NOxiz)a-X~fSR=T zK;&FJc9Z{5UPCXv9OezcRUGP-rGK*hyB&T;vTXjW%%YHxl-xz0~A)!1JVwh(RDcHE@J1(mAYssq3kJ+hQqt(+na8Bf%PD>a<8pv%itV| zQ|hxfaHG!G@Yhnz&Di0LS91C*{_Y~eqo!k$d<+a^YC7k?Pv5<9e)&=JdP}IIN~J`B z0jWOr7qyVcoZeU$-*Gnhr`DFp!s&8>PyRcNkDK@Dqd!cHXb{kEdU4?r--VMm8^zV> zGZboT$(0zs)oRJlEj5{rHY;Y$3>wH9RMv$8R_rFRi-nH(n#IZt()gNQVDG&VB2QH) z6SA|Xh8OAo=%5mA#nAIOD=0dJiYgE-0k|cZiWNU;$OOpGo_D=JBT}8$Q*M;S^89Vf zwrG}?niYyVAEZd+8~R&v?aq9%KCzv5y?7*e82uSv&)I`^zNR30vhlk_MHuzS(CI#; z6e2JNd{YWd#;b+0R9(^=zdHm;U7|IgD;O0ZhOsA^gel!(tkuYeT~d|%jHKkFAbitd zBG5xA5UjeOL8y`5z)92Gmv4QqL5{!dOWC=*-5zn6{e{b7Fn z>BrNJ^((*^ul_PcAiKM#G!q!{QQo)P8T77!r;P(PYqgHA+Ufpwq?zDSC=_;qt zROq(17*ywU;9Oax^+6PEmzHYwHWy8fK54ouMVGK*97I(8T^98q*z$ITc`n*h#^ai# zn3_9gI_pq&SJC_9Xq6Ro(7zX>7k7kW^0m)ZTWpEtDf7G|A~I%Eew3yk(WIVntHa_!nl+2QIReF~imA;CLSp_kx-!;pN;kaz9nF}#p1l@&7`RMd z)t4R`mk1f|43u7koGO5q;IJHSu?-ucQZr*op7jzamdyJ(|r!OIR-NRM@>Th9b zex_>8=8HQaLpno4$OCOG+ z+l~~p5&zW&Y-_cinrSB)(mW!ORnsBJKMnMH=!n`53K^`)z7tOY&@r47W>dJp&#^In<0>hJ=$vMq>yQ!gucj(!>Cd+Vf0p z{SQbOPG>*J_YIxIN5oC#qi`7Lj2us-A~|w7+-4n}rX#bjEO0bVA4laUj`=r0yjPj( zDD|$;LhmeK?674VJcErBr`3V8n&>o2&Amf|Tk(#msb4S`rnuN4>17#>`Jb0s`htO> zz8T-5GFy1N$^6r2KNer4sL?CHy0=D%S%2UqeCSraX#8*1u_ehRM>$QM1;fFOhw@(r zWmd;T5auP6>x8D(|n@?eRJ**JCODa|gnt+0#!CQ`EA|hJylBdplWPN1WwO7OL4a z59`$vfV1$ zus6@g#zlya2$e(Rzoy1FN-Ff`GvjNf#PN%WT-Fgg=qHoD5N*&yq=d zWvDnZnK|dkcxg~=*L}H-Z%#bSVKj-8F0VW9lA^TvJQ!;5&_M{U_A*s=NsNpVQMB)q z@>g)*BT}+$D-Z_L>UE>P$5}?Mx_sL-P#H=W#x6I+;UAAdRjHn-`H2KU!)F^uPo4Xx zE^duuZ88IBPf|3qWF8&mbdU-&EcgrPn%>-KExjm=?aJc^m^X&6YDt3;BG;obbo&ov zWVIcKL2PFiPHc$B!FvL0n>=>VVEk#>EqkKkOt$$dRX^1#+PX;9Gje`9gsM^y_DG)j zt9kxii`MR3#6?LCVp&t09u3zB?xzLI&#zd@aYb{ycxA(lbTzNW zPMEQx!83g!yGn3~{PB~(SU%Uh%ND}l!0{Z%&L=NjAFeqz+rPC zDT10(D>}5L>0%Nho2A!4DWbS@;1;mTpp@GQro7O6?K+vdtza&B<;~*6_FzTT3idjq zxyg7U;BAvBI_j2m9e34ImoawB2~q|7P=~DcW=hnFr>S#~f<15OuKY>u&Uwo!{()v4 z=8EfuUvtsnEPf&Tz9AYwB(ynkG>fs%7EAt!U#1*HYABeuyg5ObcZ+%r_N?Lzwf+a1 zr-r6|f0Y2*nH3V(-@)(U*2XW?yJ`^D?l(m5p79@&e!OafJ#o1X^{?@lL-@)RX(-Kl z{(-g>+d^(m0CX@TF=h6Z^c8>QRpOcW0RomdG$A{6MKqW@1A8_QjgtjR7az@P>IuuE z&lM+%SwW9x6PDjvQsb8?faKo19;hXPsL-Y$G)awRY5;mG0~`S)?g@xifnXI_02?VO z0R61w;T{AmMK@?TmyaL=gs_PGe*ibS9l$9C^k&5bwNu^UH>w1(ag|P&Ws2{=S$`nHe)1Ke^Lnn8E zeo|+C#NPD}L4BajgcE7pPCxZ-cpd@CMs@5fVtjZiiq9zo{2o9ps{p^Je;^&8c7n-l z7y4XLpqXV?!uDjIGGGJ1SQ3nUG`IH9`vltw%-bKOhwgwq7h|{4fRn_E0?zz!4p_)0 zK){leH~=Ju#}6#P|GRASnoHmpOrUwYj-WtS)?6_jFT>FcQegnl0=G+wbS@uB<$oQ3 zK0E}rmb^Y+^I+{gi zJHJme+-&hY(nH~!m$+H=-K>`I{Rg^p1$&OB&V8Hosuec-2a1)rX5$Ni>j8k8=08v$ z1Z?@tFCn`K;BafNzy&U21BAbVf1qOkj(eVhFooO#`+V%p$;}G?2fAqm4krlQR<-K? zK(Fd-Kv9)icw?E0_MN@#0Wd0`N;XHn9sL8{_I8GBsXsOow0ud OYo}#u-*FQDt^7ZrPxUMS literal 0 HcmV?d00001 diff --git a/lib/app/app.dart b/lib/app/app.dart index f5728e7..bc4153a 100644 --- a/lib/app/app.dart +++ b/lib/app/app.dart @@ -1,9 +1,11 @@ +import 'package:reza_admin/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_text_form_dialog/add_edit_makanan_text_form_dialog_view.dart'; import 'package:stacked_services/stacked_services.dart'; import 'package:stacked/stacked_annotations.dart'; import '../services/global_var.dart'; import '../services/http_services.dart'; import '../services/my_easyloading.dart'; +import '../services/my_socket_io_client.dart'; import '../services/other_function.dart'; import '../ui/views/admin_ui/admin_index_tracking/admin_index_tracking_view.dart'; import '../ui/views/admin_ui/akun_admin/akun_admin_view.dart'; @@ -12,6 +14,7 @@ import '../ui/views/admin_ui/makanan_list/detail_makanan/detail_makanan_view.dar import '../ui/views/admin_ui/makanan_list/makanan_list_view.dart'; import '../ui/views/admin_ui/meja_list/meja_detail/meja_detail_view.dart'; import '../ui/views/admin_ui/meja_list/meja_edit/meja_edit_view.dart'; +import '../ui/views/admin_ui/meja_list/meja_edit_status_dialog/meja_edit_status_dialog_view.dart'; import '../ui/views/admin_ui/meja_list/meja_history_log/meja_history_log_view.dart'; import '../ui/views/admin_ui/meja_list/meja_list_view.dart'; import '../ui/views/admin_ui/pesanan_list/pesanan_list_view.dart'; @@ -38,9 +41,10 @@ import '../ui/views/splash_screen/splash_screen_view.dart'; MaterialRoute(page: MejaEditView), MaterialRoute(page: MejaHistoryLogView), ], - // dialogs: [ - // StackedDialog(classType: AddSiswaDialogView), - // ], + dialogs: [ + StackedDialog(classType: MejaEditStatusDialogView), + StackedDialog(classType: AddEditMakananTextFormDialogView), + ], dependencies: [ LazySingleton(classType: NavigationService), LazySingleton(classType: DialogService), @@ -52,6 +56,7 @@ import '../ui/views/splash_screen/splash_screen_view.dart'; LazySingleton(classType: MyHttpServices), LazySingleton(classType: OtherFunction), LazySingleton(classType: GlobalVar), + LazySingleton(classType: MySocketIoClient), ], logger: StackedLogger(), ) diff --git a/lib/app/app.dialogs.dart b/lib/app/app.dialogs.dart new file mode 100644 index 0000000..491bcb8 --- /dev/null +++ b/lib/app/app.dialogs.dart @@ -0,0 +1,30 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +// ************************************************************************** +// StackedDialogGenerator +// ************************************************************************** + +import 'package:stacked_services/stacked_services.dart'; + +import 'app.locator.dart'; +import '../ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_text_form_dialog/add_edit_makanan_text_form_dialog_view.dart'; +import '../ui/views/admin_ui/meja_list/meja_edit_status_dialog/meja_edit_status_dialog_view.dart'; + +enum DialogType { + mejaEditStatusDialogView, + addEditMakananTextFormDialogView, +} + +void setupDialogUi() { + final dialogService = locator(); + + final Map builders = { + DialogType.mejaEditStatusDialogView: (context, request, completer) => + MejaEditStatusDialogView(request: request, completer: completer), + DialogType.addEditMakananTextFormDialogView: + (context, request, completer) => AddEditMakananTextFormDialogView( + request: request, completer: completer), + }; + + dialogService.registerCustomDialogBuilders(builders); +} diff --git a/lib/app/app.locator.dart b/lib/app/app.locator.dart index 97e55c5..f575214 100644 --- a/lib/app/app.locator.dart +++ b/lib/app/app.locator.dart @@ -15,6 +15,7 @@ import 'package:stacked_shared/stacked_shared.dart'; import '../services/global_var.dart'; import '../services/http_services.dart'; import '../services/my_easyloading.dart'; +import '../services/my_socket_io_client.dart'; import '../services/other_function.dart'; final locator = StackedLocator.instance; @@ -36,4 +37,5 @@ Future setupLocator({ locator.registerLazySingleton(() => MyHttpServices()); locator.registerLazySingleton(() => OtherFunction()); locator.registerLazySingleton(() => GlobalVar()); + locator.registerLazySingleton(() => MySocketIoClient()); } diff --git a/lib/main.dart b/lib/main.dart index f85b32f..3a280a2 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,14 +1,18 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'package:stacked_services/stacked_services.dart'; +import 'app/app.dialogs.dart'; import 'app/app.locator.dart'; import 'app/app.router.dart'; import 'app/themes/app_theme.dart'; Future main() async { WidgetsFlutterBinding.ensureInitialized(); + HttpOverrides.global = MyHttpOverrides(); await dotenv.load(fileName: ".env"); await setupAllLocator(); runApp(const MyApp()); @@ -33,7 +37,16 @@ class MyApp extends StatelessWidget { Future setupAllLocator() async { await setupLocator(); - // setupDialogUi(); + setupDialogUi(); // setupBottomsheetUi(); // setupSnackbarUi(); } + +class MyHttpOverrides extends HttpOverrides { + @override + HttpClient createHttpClient(SecurityContext? context) { + return super.createHttpClient(context) + ..badCertificateCallback = + (X509Certificate cert, String host, int port) => true; + } +} diff --git a/lib/model/makanan_model.dart b/lib/model/makanan_model.dart new file mode 100644 index 0000000..7aa740d --- /dev/null +++ b/lib/model/makanan_model.dart @@ -0,0 +1,32 @@ +class MakananModel { + int? idMakanan; + String? namaMakanan; + String? hargaMakanan; + String? deskripsiMakanan; + String? imgUrl; + + MakananModel( + {this.idMakanan, + this.namaMakanan, + this.hargaMakanan, + this.deskripsiMakanan, + this.imgUrl}); + + MakananModel.fromJson(Map json) { + idMakanan = json['id_makanan']; + namaMakanan = json['nama_makanan']; + hargaMakanan = json['harga_makanan']; + deskripsiMakanan = json['deskripsi_makanan']; + imgUrl = json['img_url']; + } + + Map toJson() { + final Map data = {}; + data['id_makanan'] = idMakanan; + data['nama_makanan'] = namaMakanan; + data['harga_makanan'] = hargaMakanan; + data['deskripsi_makanan'] = deskripsiMakanan; + data['img_url'] = imgUrl; + return data; + } +} diff --git a/lib/model/my_model.dart b/lib/model/my_model.dart new file mode 100644 index 0000000..f3a924b --- /dev/null +++ b/lib/model/my_model.dart @@ -0,0 +1,21 @@ +class MyModel { + String? message; + bool? theBool; + dynamic data; + + MyModel({this.message, this.theBool, this.data}); + + MyModel.fromJson(Map json) { + message = json['message']; + theBool = json['bool']; + data = json['data']; + } + + Map toJson() { + final Map data = {}; + data['message'] = message; + data['bool'] = theBool; + data['data'] = this.data; + return data; + } +} diff --git a/lib/model/reservasi_meja_model.dart b/lib/model/reservasi_meja_model.dart new file mode 100644 index 0000000..1ee93ba --- /dev/null +++ b/lib/model/reservasi_meja_model.dart @@ -0,0 +1,36 @@ +class ReservasiMejaModel { + int? idMeja; + int? idUser; + String? status; + String? jamBooking; + String? createdAt; + String? updatedAt; + + ReservasiMejaModel( + {this.idMeja, + this.idUser, + this.status, + this.jamBooking, + this.createdAt, + this.updatedAt}); + + ReservasiMejaModel.fromJson(Map json) { + idMeja = json['id_meja']; + idUser = json['id_user']; + status = json['status']; + jamBooking = json['jam_booking']; + createdAt = json['created_at']; + updatedAt = json['updated_at']; + } + + Map toJson() { + final Map data = {}; + data['id_meja'] = idMeja; + data['id_user'] = idUser; + data['status'] = status; + data['jam_booking'] = jamBooking; + data['created_at'] = createdAt; + data['updated_at'] = updatedAt; + return data; + } +} diff --git a/lib/model/user_model.dart b/lib/model/user_model.dart new file mode 100644 index 0000000..bc80d32 --- /dev/null +++ b/lib/model/user_model.dart @@ -0,0 +1,44 @@ +class UserModel { + int? idUser; + String? nama; + String? noTelpon; + String? tanggalLahir; + String? jenisKelamin; + String? alamat; + String? createdAt; + String? updatedAt; + + UserModel( + {this.idUser, + this.nama, + this.noTelpon, + this.tanggalLahir, + this.jenisKelamin, + this.alamat, + this.createdAt, + this.updatedAt}); + + UserModel.fromJson(Map json) { + idUser = json['id_user']; + nama = json['nama']; + noTelpon = json['no_telpon']; + tanggalLahir = json['tanggal_lahir']; + jenisKelamin = json['jenis_kelamin']; + alamat = json['alamat']; + createdAt = json['created_at']; + updatedAt = json['updated_at']; + } + + Map toJson() { + final Map data = {}; + data['id_user'] = idUser; + data['nama'] = nama; + data['no_telpon'] = noTelpon; + data['tanggal_lahir'] = tanggalLahir; + data['jenis_kelamin'] = jenisKelamin; + data['alamat'] = alamat; + data['created_at'] = createdAt; + data['updated_at'] = updatedAt; + return data; + } +} diff --git a/lib/services/http_services.dart b/lib/services/http_services.dart index f2e4da5..67f909e 100644 --- a/lib/services/http_services.dart +++ b/lib/services/http_services.dart @@ -6,7 +6,7 @@ import '../app/app.logger.dart'; class MyHttpServices { final log = getLogger('MyHttpServices'); final _options = BaseOptions( - baseUrl: dotenv.env['api_url']!, + baseUrl: dotenv.env['url']!, connectTimeout: const Duration(seconds: 120), receiveTimeout: const Duration(seconds: 120), ); @@ -20,14 +20,22 @@ class MyHttpServices { Future get(String path) async { try { return await _dio.get(path); - } on DioException { + } on DioException catch (e) { + log.e('error : $e'); rethrow; } } Future postWithFormData(String path, FormData formData) async { try { - return await _dio.post(path, data: formData); + return await _dio.post( + path, + data: formData, + // method="POST" enctype="multipart/form-data"> + options: Options( + contentType: 'multipart/form-data', + ), + ); } on DioException { rethrow; } diff --git a/lib/services/my_easyloading.dart b/lib/services/my_easyloading.dart index 46cb062..98198c9 100644 --- a/lib/services/my_easyloading.dart +++ b/lib/services/my_easyloading.dart @@ -9,7 +9,7 @@ class MyEasyLoading { ); } - dismissLoading() { + dismiss() { EasyLoading.dismiss(); } diff --git a/lib/services/my_socket_io_client.dart b/lib/services/my_socket_io_client.dart new file mode 100644 index 0000000..8689244 --- /dev/null +++ b/lib/services/my_socket_io_client.dart @@ -0,0 +1,48 @@ +import 'package:flutter_dotenv/flutter_dotenv.dart'; +import 'package:socket_io_client/socket_io_client.dart'; + +import '../app/app.logger.dart'; + +class MySocketIoClient { + final log = getLogger('MySocketIoClient'); + final String _url = dotenv.env['url']!; + static final MySocketIoClient _instance = MySocketIoClient._internal(); + factory MySocketIoClient() => _instance; + MySocketIoClient._internal(); + + late Socket _socket; + Socket get socket => _socket; + + Future init() async { + try { + _socket = io(_url, { + 'transports': ['websocket'], + 'autoConnect': false, + }); + _socket.connect(); + log.i('socket connected'); + } catch (e) { + log.e('error : $e'); + } + } + + Future emit(String event, dynamic data) async { + _socket.emit(event, data); + } + + Future on(String event, Function(dynamic) callback) async { + _socket.on(event, callback); + } + + Future off(String event) async { + _socket.off(event); + } + + Future disconnect() async { + _socket.disconnect(); + } + + Future connect() async { + _socket.connect(); + } +} diff --git a/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_text_form_dialog/add_edit_makanan_text_form_dialog_view.dart b/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_text_form_dialog/add_edit_makanan_text_form_dialog_view.dart new file mode 100644 index 0000000..41c6707 --- /dev/null +++ b/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_text_form_dialog/add_edit_makanan_text_form_dialog_view.dart @@ -0,0 +1,96 @@ +import 'package:flutter/material.dart'; +import 'package:reza_admin/app/themes/app_text.dart'; +import 'package:reza_admin/ui/widgets/my_textformfield.dart'; +import 'package:stacked/stacked.dart'; +import 'package:stacked_services/stacked_services.dart'; + +import './add_edit_makanan_text_form_dialog_view_model.dart'; + +class AddEditMakananTextFormDialogView extends StatelessWidget { + final DialogRequest? request; + final Function(DialogResponse)? completer; + + const AddEditMakananTextFormDialogView({ + Key? key, + this.request, + this.completer, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return ViewModelBuilder.reactive( + viewModelBuilder: () => AddEditMakananTextFormDialogViewModel(), + onViewModelReady: (AddEditMakananTextFormDialogViewModel model) async { + await model.init(request!.data); + }, + builder: ( + BuildContext context, + AddEditMakananTextFormDialogViewModel model, + Widget? child, + ) { + return Dialog( + child: Container( + padding: const EdgeInsets.all(20), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + model.title, + style: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.bold, + ), + ), + const SizedBox(height: 20), + MyTextFormField( + hintText: model.description, + maxLines: model.maxLines, + controller: model.textEditingController, + keyboardType: model.keyboardType + ? TextInputType.number + : TextInputType.text, + ), + const SizedBox(height: 20), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + completer!(DialogResponse(confirmed: false)); + }, + child: Text( + 'Cancel', + style: boldTextStyle.copyWith(color: Colors.red), + ), + ), + TextButton( + onPressed: () { + if (model.textEditingController.text.isNotEmpty) { + completer!(DialogResponse( + confirmed: true, + data: model.textEditingController.text, + )); + } else { + model.snackbarService.showSnackbar( + message: 'Please fill the form', + title: 'Error', + ); + } + + // completer!(DialogResponse( + // confirmed: true, + // responseData: model.status, + // )); + }, + child: const Text('Save'), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_text_form_dialog/add_edit_makanan_text_form_dialog_view_model.dart b/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_text_form_dialog/add_edit_makanan_text_form_dialog_view_model.dart new file mode 100644 index 0000000..5d26d1c --- /dev/null +++ b/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_text_form_dialog/add_edit_makanan_text_form_dialog_view_model.dart @@ -0,0 +1,23 @@ +import 'package:flutter/material.dart'; + +import '../../../../../../app/app.logger.dart'; +import '../../../../../../app/core/custom_base_view_model.dart'; + +class AddEditMakananTextFormDialogViewModel extends CustomBaseViewModel { + final log = getLogger('AddEditMakananTextFormDialogViewModel'); + late String title; + late String description; + late int maxLines; + late bool keyboardType; + + TextEditingController textEditingController = TextEditingController(); + + Future init(data) async { + log.i(data); + + title = data['title']; + description = data['description']; + maxLines = data['maxLines']; + keyboardType = data['keyboardType']; + } +} diff --git a/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_view.dart b/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_view.dart index 3715ba6..000dfd7 100644 --- a/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_view.dart +++ b/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_view.dart @@ -35,159 +35,187 @@ class AddEditMakananView extends HookWidget { return true; }, child: Scaffold( - backgroundColor: backgroundColor, - body: SizedBox( - width: MediaQuery.of(context).size.width, - height: MediaQuery.of(context).size.height, - child: Stack( - children: [ - ListView.builder( - controller: scrollController, - itemCount: 1, - itemBuilder: (context, index) { - return Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox( - height: MediaQuery.of(context).padding.top, - ), - const TopMenuWidget(), - const SecondWidget(), - const SizedBox( - height: 10, - ), - MyWhiteContainer( - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 10, - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Expanded( - child: RichText( - text: TextSpan( - children: [ - TextSpan( - text: 'Ongkos Kirim', - style: boldTextStyle.copyWith( - fontSize: 14, - ), + backgroundColor: backgroundColor, + body: SizedBox( + width: MediaQuery.of(context).size.width, + height: MediaQuery.of(context).size.height, + child: Stack( + children: [ + ListView.builder( + controller: scrollController, + itemCount: 1, + itemBuilder: (context, index) { + return Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + height: MediaQuery.of(context).padding.top, + ), + const TopMenuWidget(), + const SecondWidget(), + const SizedBox( + height: 10, + ), + MyWhiteContainer( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: RichText( + text: TextSpan( + children: [ + TextSpan( + text: 'Ongkos Kirim', + style: boldTextStyle.copyWith( + fontSize: 14, ), - TextSpan( - text: ' Harga Ongkir Di Sini', - style: boldTextStyle.copyWith( - fontSize: 14, - color: dangerColor, - fontStyle: FontStyle.italic, - ), + ), + TextSpan( + text: ' Rp. 10.000', + style: boldTextStyle.copyWith( + fontSize: 14, + color: dangerColor, + fontStyle: FontStyle.italic, ), - ], - ), + ), + ], ), ), - const SizedBox( - width: 10, - ), - IconButton( - onPressed: () {}, - icon: const Icon( - Icons.edit, - color: dangerColor, - ), - iconSize: 20, - ), - const SizedBox( - width: 10, - ), - ], - ), - const SizedBox( - height: 10, - ), - Text( - "Bisa Dibayar COD sekitar Parepare", - style: regularTextStyle.copyWith( - fontSize: 13, - color: fontGrey, ), + const SizedBox( + width: 10, + ), + // IconButton( + // onPressed: () async { + // String? data = + // await model.addEditDialog( + // title: 'Ongkos Kirim', + // description: 'Harga Ongkir Di Sini', + // keyboardType: true, + // maxLines: 1, + // ); + + // // model.log.i('data: $data'); + // model.hargaOngkir = data; + // model.notifyListeners(); + // }, + // icon: const Icon( + // Icons.edit, + // color: dangerColor, + // ), + // iconSize: 20, + // ), + const SizedBox( + width: 10, + ), + ], + ), + const SizedBox( + height: 10, + ), + Text( + "Bisa Dibayar COD sekitar Parepare", + style: regularTextStyle.copyWith( + fontSize: 13, + color: fontGrey, ), - ], - ), + ), + ], ), ), - const SizedBox( - height: 10, - ), - MyWhiteContainer( - child: Padding( - padding: const EdgeInsets.symmetric( - horizontal: 10, - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Expanded( - child: Text( - "Deskripsi", - style: boldTextStyle.copyWith( - fontSize: 15, - ), + ), + const SizedBox( + height: 10, + ), + MyWhiteContainer( + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: Text( + "Deskripsi", + style: boldTextStyle.copyWith( + fontSize: 15, ), ), - const SizedBox( - width: 10, - ), - IconButton( - onPressed: () {}, - icon: const Icon( - Icons.edit, - color: mainGrey, - ), - iconSize: 20, - ), - const SizedBox( - width: 10, - ), - ], - ), - const SizedBox( - height: 10, - ), - // bikin dummy text tentang nasi goreng - Text( - "Deskripsi Makanan Di Sini", - style: regularTextStyle.copyWith( - fontSize: 13, - color: fontGrey, - fontStyle: FontStyle.italic, ), - textAlign: TextAlign.justify, + const SizedBox( + width: 10, + ), + IconButton( + onPressed: () async { + String? data = + await model.addEditDialog( + title: 'Deskripsi', + description: + 'Deskripsi Makanan Di Sini', + maxLines: 5); + + // model.log.i('data: $data'); + model.deskripsi = data; + model.notifyListeners(); + }, + icon: const Icon( + Icons.edit, + color: mainGrey, + ), + iconSize: 20, + ), + const SizedBox( + width: 10, + ), + ], + ), + const SizedBox( + height: 10, + ), + // bikin dummy text tentang nasi goreng + Text( + model.deskripsi ?? + "Deskripsi Makanan Di Sini", + style: regularTextStyle.copyWith( + fontSize: 13, + color: fontGrey, + fontStyle: FontStyle.italic, ), - ], - ), + textAlign: TextAlign.justify, + ), + ], ), ), - const SizedBox( - height: 20, - ), - ], - ); - }, - ), - TopBarWidget(opacity: opacity), - ], - ), + ), + const SizedBox( + height: 20, + ), + ], + ); + }, + ), + TopBarWidget(opacity: opacity), + ], ), - bottomNavigationBar: Container( + ), + bottomNavigationBar: GestureDetector( + onTap: () { + model.tambahEditMakanan(); + }, + child: Container( padding: const EdgeInsets.symmetric( horizontal: 10, vertical: 10, @@ -220,7 +248,9 @@ class AddEditMakananView extends HookWidget { ), ), ), - )), + ), + ), + ), ); }, ); @@ -351,7 +381,7 @@ class SecondWidget extends ViewModelWidget { children: [ Expanded( child: Text( - "Nama Makanan Di Sini", + viewModel.namaMakanan ?? 'Nama Makanan Di Sini', style: regularTextStyle.copyWith( fontSize: 17, fontStyle: FontStyle.italic, @@ -362,7 +392,16 @@ class SecondWidget extends ViewModelWidget { width: 10, ), IconButton( - onPressed: () {}, + onPressed: () async { + String? data = await viewModel.addEditDialog( + title: 'Nama Makanan', + description: 'Nama Makanan Di Sini', + ); + + // viewModel.log.i('data: $data'); + viewModel.namaMakanan = data; + viewModel.notifyListeners(); + }, icon: const Icon( Icons.edit, color: mainGrey, @@ -392,7 +431,18 @@ class SecondWidget extends ViewModelWidget { width: 10, ), IconButton( - onPressed: () {}, + onPressed: () async { + String? data = await viewModel.addEditDialog( + title: 'Harga Makanan', + description: 'Harga Makanan Di Sini', + keyboardType: true, + maxLines: 1, + ); + + // viewModel.log.i('data: $data'); + viewModel.hargaMakanan = data; + viewModel.notifyListeners(); + }, icon: const Icon( Icons.edit, color: dangerColor, @@ -432,14 +482,19 @@ class TopMenuWidget extends ViewModelWidget { // 'https://a.cdn-hotels.com/gdcs/production0/d1513/35c1c89e-408c-4449-9abe-f109068f40c0.jpg?impolicy=fcrop&w=800&h=533&q=medium', // fit: BoxFit.cover, // ), - child: Center( - child: Text( - 'Add Image', - style: boldTextStyle.copyWith( - fontSize: 20, - ), - ), - ), + child: viewModel.imageBytes != null + ? Image.memory( + viewModel.imageBytes!, + fit: BoxFit.cover, + ) + : Center( + child: Text( + 'Add Image', + style: boldTextStyle.copyWith( + fontSize: 20, + ), + ), + ), ), // Positioned( // bottom: 10, @@ -468,21 +523,24 @@ class TopMenuWidget extends ViewModelWidget { Positioned( bottom: 20, right: 20, - child: Container( - padding: const EdgeInsets.symmetric( - horizontal: 5, - ), - width: 50, - height: 50, - decoration: BoxDecoration( - color: mainColor, - borderRadius: BorderRadius.circular(10), - ), - child: const Center( - child: Icon( - Icons.camera_alt_outlined, - color: Colors.white, - size: 30, + child: GestureDetector( + onTap: () => viewModel.addImage(), + child: Container( + padding: const EdgeInsets.symmetric( + horizontal: 5, + ), + width: 50, + height: 50, + decoration: BoxDecoration( + color: mainColor, + borderRadius: BorderRadius.circular(10), + ), + child: const Center( + child: Icon( + Icons.camera_alt_outlined, + color: Colors.white, + size: 30, + ), ), ), ), diff --git a/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_view_model.dart b/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_view_model.dart index eb79feb..791394b 100644 --- a/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_view_model.dart +++ b/lib/ui/views/admin_ui/makanan_list/add_edit_makanan/add_edit_makanan_view_model.dart @@ -1,9 +1,105 @@ +import 'dart:typed_data'; + +import 'package:dio/dio.dart'; +import 'package:image_picker/image_picker.dart'; +import '../../../../../app/app.dialogs.dart'; import '../../../../../app/app.logger.dart'; import '../../../../../app/core/custom_base_view_model.dart'; class AddEditMakananViewModel extends CustomBaseViewModel { final log = getLogger('AddMakananViewModel'); + + String? namaMakanan; + String? hargaMakanan; + // String? hargaOngkir; + String? deskripsi; + + String? _imagePath; + final ImagePicker _picker = ImagePicker(); + XFile? imageFile; + Uint8List? imageBytes; + Future init() async { globalVar.backPressed = 'backNormal'; } + + void addImage() async { + try { + final XFile? image = await _picker.pickImage(source: ImageSource.gallery); + if (image != null) { + imageFile = image; + _imagePath = image.path; + imageBytes = await image.readAsBytes(); + + log.i('image path: $_imagePath'); + notifyListeners(); + } + } catch (e) { + log.e(e); + } + } + + Future addEditDialog( + {required String title, + required String description, + int maxLines = 2, + bool keyboardType = false}) async { + var res = await dialogService.showCustomDialog( + variant: DialogType.addEditMakananTextFormDialogView, + data: { + 'title': title, + 'description': description, + 'maxLines': maxLines, + 'keyboardType': keyboardType, + }, + ); + + if (res!.confirmed) { + return res.data; + } else { + return null; + } + } + + tambahEditMakanan() async { + if (namaMakanan == null || + hargaMakanan == null || + // hargaOngkir == null || + deskripsi == null || + imageFile == null) { + await dialogService.showDialog( + title: 'Error', + description: 'Semua field harus diisi', + ); + } else { + easyLoading.customLoading('Tambah Makanan'); + setBusy(true); + try { + var formData = FormData.fromMap({ + 'nama_makanan': namaMakanan, + 'harga_makanan': hargaMakanan, + // 'harga_ongkir': hargaOngkir, + 'deskripsi_makanan': deskripsi, + 'image': await MultipartFile.fromFile(_imagePath!), + }); + + var res = await httpService.postWithFormData('table/makanan', formData); + log.i(res.data); + setBusy(false); + easyLoading.dismiss(); + dialogService.showDialog( + title: 'Berhasil', + description: 'Makanan berhasil ditambahkan', + ); + globalVar.backPressed = 'exitApp'; + navigationService.back(); + navigationService.back(); + } catch (e) { + log.e(e); + } finally { + setBusy(false); + easyLoading.dismiss(); + } + } + } } diff --git a/lib/ui/views/admin_ui/makanan_list/detail_makanan/detail_makanan_view.dart b/lib/ui/views/admin_ui/makanan_list/detail_makanan/detail_makanan_view.dart index 8b9d059..7211b08 100644 --- a/lib/ui/views/admin_ui/makanan_list/detail_makanan/detail_makanan_view.dart +++ b/lib/ui/views/admin_ui/makanan_list/detail_makanan/detail_makanan_view.dart @@ -371,8 +371,8 @@ class TopMenuWidget extends ViewModelWidget { SizedBox( width: double.infinity, height: MediaQuery.of(context).size.height * 0.35, - child: Image.network( - 'https://a.cdn-hotels.com/gdcs/production0/d1513/35c1c89e-408c-4449-9abe-f109068f40c0.jpg?impolicy=fcrop&w=800&h=533&q=medium', + child: Image.asset( + 'assets/nasi_goreng.jpg', fit: BoxFit.cover, ), ), diff --git a/lib/ui/views/admin_ui/makanan_list/makanan_list_view.dart b/lib/ui/views/admin_ui/makanan_list/makanan_list_view.dart index 4fcb2c1..c259947 100644 --- a/lib/ui/views/admin_ui/makanan_list/makanan_list_view.dart +++ b/lib/ui/views/admin_ui/makanan_list/makanan_list_view.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_dotenv/flutter_dotenv.dart'; import 'package:reza_admin/app/app.router.dart'; import 'package:stacked/stacked.dart'; @@ -141,66 +142,94 @@ class MakananListView extends StatelessWidget { height: 10, ), Expanded( - child: Center( - child: SingleChildScrollView( - child: Wrap( - spacing: 10, - runSpacing: 10, - children: [ - for (var i = 0; i < 10; i++) - GestureDetector( - onTap: () => model.goToDetailMakanan(), - child: Container( - width: MediaQuery.of(context).size.width * 0.46, - color: Colors.white, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Image.network( - 'https://a.cdn-hotels.com/gdcs/production0/d1513/35c1c89e-408c-4449-9abe-f109068f40c0.jpg?impolicy=fcrop&w=800&h=533&q=medium', - height: 150, - width: double.infinity, - fit: BoxFit.fill, - ), - const SizedBox( - height: 5, - ), - const Padding( - padding: EdgeInsets.only( - left: 5, - ), - child: Text( - 'Product Name', - style: TextStyle( - fontWeight: FontWeight.bold, + child: model.isBusy + ? const Center( + child: CircularProgressIndicator(), + ) + : (model.listMakanan.isEmpty + ? const Center( + child: Text('Data Kosong'), + ) + : SingleChildScrollView( + child: Wrap( + spacing: 5, + runSpacing: 10, + // alignment: WrapAlignment.spaceAround, + // crossAxisAlignment: WrapCrossAlignment.center, + children: [ + for (var i = 0; + i < model.listMakanan.length; + i++) + GestureDetector( + onTap: () => model.goToDetailMakanan(), + child: Padding( + padding: const EdgeInsets.only( + left: 10, + // right: 5, + ), + child: Container( + width: MediaQuery.of(context) + .size + .width * + 0.46, + color: Colors.white, + child: Column( + crossAxisAlignment: + CrossAxisAlignment.start, + children: [ + Image.network( + '${dotenv.env['url']}assets/makanan/${model.listMakanan[i].imgUrl}', + height: 150, + width: double.infinity, + fit: BoxFit.fill, + ), + // Image.asset( + // 'assets/nasi_goreng.jpg', + // height: 150, + // width: double.infinity, + // fit: BoxFit.fill, + // ), + const SizedBox( + height: 5, + ), + Padding( + padding: const EdgeInsets.only( + left: 5, + ), + child: Text( + model.listMakanan[i] + .namaMakanan!, + style: const TextStyle( + fontWeight: FontWeight.bold, + ), + ), + ), + const SizedBox( + height: 5, + ), + Padding( + padding: const EdgeInsets.only( + left: 5, + ), + child: Text( + model.listMakanan[i] + .deskripsiMakanan!, + style: const TextStyle( + color: Colors.grey, + ), + ), + ), + const SizedBox( + height: 5, + ), + ], + ), ), ), ), - const SizedBox( - height: 5, - ), - const Padding( - padding: EdgeInsets.only( - left: 5, - ), - child: Text( - 'Rp. 100.000', - style: TextStyle( - color: Colors.grey, - ), - ), - ), - const SizedBox( - height: 5, - ), - ], - ), + ], ), - ), - ], - ), - ), - ), + )), ), ], ), diff --git a/lib/ui/views/admin_ui/makanan_list/makanan_list_view_model.dart b/lib/ui/views/admin_ui/makanan_list/makanan_list_view_model.dart index 7c11af3..518e5fc 100644 --- a/lib/ui/views/admin_ui/makanan_list/makanan_list_view_model.dart +++ b/lib/ui/views/admin_ui/makanan_list/makanan_list_view_model.dart @@ -1,11 +1,46 @@ +import 'package:reza_admin/model/makanan_model.dart'; +import 'package:reza_admin/model/my_model.dart'; + +import '../../../../app/app.locator.dart'; import '../../../../app/app.logger.dart'; import '../../../../app/app.router.dart'; import '../../../../app/core/custom_base_view_model.dart'; +import '../../../../services/my_socket_io_client.dart'; class MakananListViewModel extends CustomBaseViewModel { final log = getLogger('MakananListViewModel'); + final socketIoClient = locator(); + List listMakanan = []; Future init() async { globalVar.backPressed = 'exitApp'; + getData(); + socketIoClient.on('makanan_user', (data) { + log.i('data : $data'); + listMakanan.clear(); + getData(); + // webViewController!.reload(); + }); + } + + getData() async { + setBusy(true); + easyLoading.showLoading(); + try { + var res = await httpService.get('table/makanan'); + MyModel myModel = MyModel.fromJson(res.data); + + if (myModel.data.length > 0) { + for (var item in myModel.data) { + listMakanan.add(MakananModel.fromJson(item)); + } + } + log.i(listMakanan); + } catch (e) { + log.e(e.toString()); + } finally { + easyLoading.dismiss(); + setBusy(false); + } } goToDetailMakanan() { diff --git a/lib/ui/views/admin_ui/meja_list/meja_detail/meja_detail_view.dart b/lib/ui/views/admin_ui/meja_list/meja_detail/meja_detail_view.dart index ec583c4..e8b0d54 100644 --- a/lib/ui/views/admin_ui/meja_list/meja_detail/meja_detail_view.dart +++ b/lib/ui/views/admin_ui/meja_list/meja_detail/meja_detail_view.dart @@ -87,9 +87,9 @@ class MejaDetailView extends StatelessWidget { style: regularTextStyle, children: [ TextSpan( - text: 'Tersedia', + text: model.theBool ? 'Tidak Tersedia' : 'Tersedia', style: regularTextStyle.copyWith( - color: Colors.green, + color: model.theBool ? Colors.red : Colors.green, fontWeight: FontWeight.bold, ), ), @@ -145,58 +145,60 @@ class MejaDetailView extends StatelessWidget { ), ), const SizedBox(height: 10), - Expanded( - child: ListView.builder( - itemCount: 2, - shrinkWrap: true, - itemBuilder: (context, index) { - // make the color random between red and blue - const color = Colors.blue; - String pesanStatus = 'Menunggu Pengesahan'; - return Card( - color: color, - child: ListTile( - // leading: CircleAvatar( - // backgroundColor: Colors.white, - // child: Text( - // index.toString(), - // style: regularTextStyle, - // ), - // ), - title: Text( - 'Nama Pemesan', - style: regularTextStyle.copyWith( - fontSize: 18, - color: Colors.white, - fontStyle: FontStyle.italic, - ), - ), - subtitle: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Text( - '08:00.00 - 09:00.00', - style: TextStyle( - color: Colors.white, - ), - ), - Text( - pesanStatus, - style: const TextStyle( - color: Colors.white, - ), - ), - ], - ), - trailing: const Icon(Icons.arrow_forward_ios, - color: Colors.white), - onTap: () { - model.log.i('Meja 1'); - }, - ), - ); - }, - ), + const Expanded( + child: SizedBox(), + + // ListView.builder( + // itemCount: 2, + // shrinkWrap: true, + // itemBuilder: (context, index) { + // // make the color random between red and blue + // const color = Colors.blue; + // String pesanStatus = 'Menunggu Pengesahan'; + // return Card( + // color: color, + // child: ListTile( + // // leading: CircleAvatar( + // // backgroundColor: Colors.white, + // // child: Text( + // // index.toString(), + // // style: regularTextStyle, + // // ), + // // ), + // title: Text( + // 'Nama Pemesan', + // style: regularTextStyle.copyWith( + // fontSize: 18, + // color: Colors.white, + // fontStyle: FontStyle.italic, + // ), + // ), + // subtitle: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // const Text( + // '08:00.00 - 09:00.00', + // style: TextStyle( + // color: Colors.white, + // ), + // ), + // Text( + // pesanStatus, + // style: const TextStyle( + // color: Colors.white, + // ), + // ), + // ], + // ), + // trailing: const Icon(Icons.arrow_forward_ios, + // color: Colors.white), + // onTap: () { + // model.log.i('Meja 1'); + // }, + // ), + // ); + // }, + // ), ), ], ), @@ -262,8 +264,12 @@ class MejaDetailView extends StatelessWidget { onTap: () { model.log.i('List'); // model.navigationService.navigateToMakananListView(); - model.navigationService - .navigateToMejaHistoryLogView(mejaId: mejaId); + // model.navigationService + // .navigateToMejaHistoryLogView(mejaId: mejaId); + model.snackbarService.showSnackbar( + message: 'Fitur ini belum tersedia', + title: 'Info', + duration: const Duration(seconds: 2)); }, child: const Column( mainAxisAlignment: MainAxisAlignment.center, @@ -292,6 +298,7 @@ class MejaDetailView extends StatelessWidget { backgroundColor: orangeColor, onPressed: () { // model.navigationService.navigateToAddEditMakananView(); + model.editStatus(); }, // create a add product button child: const Icon( diff --git a/lib/ui/views/admin_ui/meja_list/meja_detail/meja_detail_view_model.dart b/lib/ui/views/admin_ui/meja_list/meja_detail/meja_detail_view_model.dart index 9b7cc1e..ff9605f 100644 --- a/lib/ui/views/admin_ui/meja_list/meja_detail/meja_detail_view_model.dart +++ b/lib/ui/views/admin_ui/meja_list/meja_detail/meja_detail_view_model.dart @@ -1,3 +1,6 @@ +import 'package:reza_admin/model/my_model.dart'; + +import '../../../../../app/app.dialogs.dart'; import '../../../../../app/app.logger.dart'; import '../../../../../app/core/custom_base_view_model.dart'; @@ -6,16 +9,20 @@ class MejaDetailViewModel extends CustomBaseViewModel { late String mejaId; late String namaMeja; + late int idMeja; String? imgAsset; + bool theBool = false; + Future init(String mejaId) async { - log.i('MejaDetailViewModel init'); - log.i('mejaId : $mejaId'); + // log.i('MejaDetailViewModel init'); + // log.i('mejaId : $mejaId'); this.mejaId = mejaId; globalVar.backPressed = 'backNormal'; // seperate the number from the string var number = int.parse(mejaId.replaceAll(RegExp(r'[^0-9]'), '')); + idMeja = number; // log.i('number : $number'); if (number <= 4) { namaMeja = 'Gazebo'; @@ -30,6 +37,35 @@ class MejaDetailViewModel extends CustomBaseViewModel { namaMeja = '$namaMeja $number'; - log.i('imgAsset : $imgAsset'); + // log.i('imgAsset : $imgAsset'); + getData(); + } + + getData() async { + easyLoading.showLoading(); + setBusy(true); + try { + var response = await httpService.get('table/detail/$idMeja'); + // log.i('response : $response'); + MyModel myModel = MyModel.fromJson(response.data); + theBool = myModel.theBool!; + log.i('theBool : $theBool'); + } catch (e) { + log.e('error : $e'); + } finally { + setBusy(false); + easyLoading.dismiss(); + } + } + + editStatus() async { + var res = await dialogService.showCustomDialog( + variant: DialogType.mejaEditStatusDialogView, + data: {'idMeja': idMeja}, + ); + + if (res!.confirmed) { + getData(); + } } } diff --git a/lib/ui/views/admin_ui/meja_list/meja_edit/meja_edit_view.dart b/lib/ui/views/admin_ui/meja_list/meja_edit/meja_edit_view.dart index c28ef77..b5f33a0 100644 --- a/lib/ui/views/admin_ui/meja_list/meja_edit/meja_edit_view.dart +++ b/lib/ui/views/admin_ui/meja_list/meja_edit/meja_edit_view.dart @@ -30,6 +30,7 @@ class MejaEditView extends StatelessWidget { 'backPressed : ${model.globalVar.backPressed} in MejaEditView'); if (model.globalVar.backPressed == 'backNormal') { // model.globalVar.backPressed = 'exitApp'; + // model.globalVar.backPressed = 'backNormal'; return true; } // model.quitApp(context); @@ -44,7 +45,7 @@ class MejaEditView extends StatelessWidget { leading: IconButton( onPressed: () { if (model.globalVar.backPressed == 'backNormal') { - model.globalVar.backPressed = 'exitApp'; + // model.globalVar.backPressed = 'exitApp'; model.navigationService.back(); // return true; } diff --git a/lib/ui/views/admin_ui/meja_list/meja_edit_status_dialog/meja_edit_status_dialog_view.dart b/lib/ui/views/admin_ui/meja_list/meja_edit_status_dialog/meja_edit_status_dialog_view.dart new file mode 100644 index 0000000..81e7a4e --- /dev/null +++ b/lib/ui/views/admin_ui/meja_list/meja_edit_status_dialog/meja_edit_status_dialog_view.dart @@ -0,0 +1,102 @@ +import 'package:flutter/material.dart'; +import 'package:reza_admin/app/themes/app_colors.dart'; +import 'package:reza_admin/app/themes/app_text.dart'; +import 'package:stacked/stacked.dart'; +import 'package:stacked_services/stacked_services.dart'; + +import './meja_edit_status_dialog_view_model.dart'; + +class MejaEditStatusDialogView extends StatelessWidget { + final DialogRequest? request; + final Function(DialogResponse)? completer; + + const MejaEditStatusDialogView({ + Key? key, + this.request, + this.completer, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return ViewModelBuilder.reactive( + viewModelBuilder: () => MejaEditStatusDialogViewModel(), + onViewModelReady: (MejaEditStatusDialogViewModel model) async { + await model.init(request!.data); + }, + builder: ( + BuildContext context, + MejaEditStatusDialogViewModel model, + Widget? child, + ) { + return Dialog( + child: Container( + padding: const EdgeInsets.all(20), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + const Text( + 'Edit Status', + style: regularTextStyle, + ), + const SizedBox(height: 20), + DropdownButtonFormField( + decoration: const InputDecoration( + border: OutlineInputBorder(), + labelText: 'Status', + ), + value: model.status, + onChanged: (String? value) { + model.status = value!; + }, + items: model.statusList.map((String value) { + return DropdownMenuItem( + value: value, + child: Text(value, style: regularTextStyle), + ); + }).toList(), + ), + const SizedBox(height: 20), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + completer!(DialogResponse(confirmed: false)); + }, + child: Text( + 'Batal', + style: regularTextStyle.copyWith(color: redColor), + ), + ), + TextButton( + onPressed: () async { + bool res = await model.editStatus(); + if (res) { + completer!(DialogResponse( + confirmed: true, + )); + } else { + completer!(DialogResponse( + confirmed: false, + )); + } + completer!(DialogResponse( + confirmed: true, + // responseData: model.status, + )); + }, + child: Text( + 'Simpan', + style: regularTextStyle.copyWith(color: greenColor), + ), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/lib/ui/views/admin_ui/meja_list/meja_edit_status_dialog/meja_edit_status_dialog_view_model.dart b/lib/ui/views/admin_ui/meja_list/meja_edit_status_dialog/meja_edit_status_dialog_view_model.dart new file mode 100644 index 0000000..1e3b250 --- /dev/null +++ b/lib/ui/views/admin_ui/meja_list/meja_edit_status_dialog/meja_edit_status_dialog_view_model.dart @@ -0,0 +1,39 @@ +import 'package:dio/dio.dart'; + +import '../../../../../app/app.logger.dart'; +import '../../../../../app/core/custom_base_view_model.dart'; + +class MejaEditStatusDialogViewModel extends CustomBaseViewModel { + final log = getLogger('MejaEditStatusDialogViewModel'); + + int? idMeja; + String status = 'Tersedia'; + + List statusList = ['Tersedia', 'Tidak Tersedia']; + + Future init(data) async { + log.i("data : ${data['idMeja']}"); + idMeja = data['idMeja']; + } + + Future editStatus() async { + easyLoading.showLoading(); + setBusy(true); + try { + var formData = FormData.fromMap({ + 'id_meja': idMeja, + 'status': status, + }); + var response = await httpService.postWithFormData( + 'table/reservation/$idMeja', formData); + log.i('response : $response'); + return true; + } catch (e) { + log.e('error : $e'); + return false; + } finally { + setBusy(false); + easyLoading.dismiss(); + } + } +} diff --git a/lib/ui/views/admin_ui/meja_list/meja_list_view.dart b/lib/ui/views/admin_ui/meja_list/meja_list_view.dart index cca9aca..cf31518 100644 --- a/lib/ui/views/admin_ui/meja_list/meja_list_view.dart +++ b/lib/ui/views/admin_ui/meja_list/meja_list_view.dart @@ -55,10 +55,7 @@ class MejaListView extends StatelessWidget { // initialUrl: 'https://rekam-medis.airlangga-it.com/', javascriptMode: JavascriptMode.unrestricted, onWebViewCreated: (WebViewController webViewController) { - // _controller.complete(webViewController); - // model.controllerCompleter.future - // .then((value) => model.webViewController = value); - // model.controllerCompleter.complete(webViewController); + model.webViewController = webViewController; }, onProgress: (int progress) { // model.log.i('WebView is loading (progress : $progress%)'); @@ -101,7 +98,7 @@ class MejaListView extends StatelessWidget { }, onPageFinished: (String url) { model.log.i('Page finished loading: $url'); - model.easyLoading.dismissLoading(); + model.easyLoading.dismiss(); }, gestureNavigationEnabled: true, backgroundColor: const Color(0x00000000), @@ -169,64 +166,89 @@ class MejaListView extends StatelessWidget { height: 15, ), Expanded( - child: ListView.builder( - itemCount: 15, - shrinkWrap: true, - itemBuilder: (context, index) { - // make the color random between red and blue - final color = index % 2 == 0 ? Colors.red : Colors.blue; - String pesanStatus = - index % 2 == 0 ? 'Dibooking' : 'Menunggu Pengesahan'; - return Card( - color: color, - child: ListTile( - leading: CircleAvatar( - backgroundColor: Colors.white, - child: Text( - index.toString(), - style: regularTextStyle, - ), - ), - title: Text( - 'Nama Pemesan', - style: regularTextStyle.copyWith( - fontSize: 18, - color: Colors.white, - fontStyle: FontStyle.italic, - ), - ), - subtitle: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const Text( - '08:00.00 - 09:00.00', - style: TextStyle( - color: Colors.white, + child: model.isBusy + ? const Center( + child: CircularProgressIndicator(), + ) + : ListView.builder( + itemCount: model.reservasiMejaList.length, + shrinkWrap: true, + itemBuilder: (context, index) { + // make the color random between red and blue + + final color = + model.reservasiMejaList[index].status == + 'booking' + ? Colors.red + : (model.reservasiMejaList[index].status == + 'Tidak Tersedia' + ? Colors.grey[600] + : Colors.green); + String pesanStatus = model + .reservasiMejaList[index].status! + .toUpperCase(); + return Card( + color: color, + child: ListTile( + leading: CircleAvatar( + backgroundColor: Colors.white, + child: Text( + model.reservasiMejaList[index].idMeja + .toString(), + style: regularTextStyle, + ), ), - ), - Text( - pesanStatus, - style: const TextStyle( - color: Colors.white, + title: Text( + model.userModelList[index] != null + ? model.userModelList[index]!.nama ?? '-' + : '-', + style: regularTextStyle.copyWith( + fontSize: 18, + color: Colors.white, + fontStyle: FontStyle.italic, + ), ), + subtitle: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + model.reservasiMejaList[index] + .jamBooking ?? + '', + style: const TextStyle( + color: Colors.white, + ), + ), + Text( + pesanStatus, + style: const TextStyle( + color: Colors.white, + ), + ), + ], + ), + trailing: const Icon(Icons.arrow_forward_ios, + color: Colors.white), + onTap: () { + model.log.i('Meja 1'); + }, ), - ], - ), - trailing: const Icon(Icons.arrow_forward_ios, - color: Colors.white), - onTap: () { - model.log.i('Meja 1'); + ); }, ), - ); - }, - ), ), const SizedBox( height: 15, ), ], ), + // floatingActionButton: FloatingActionButton( + // onPressed: () async { + // await model.webViewController!.reload(); + // }, + // backgroundColor: mainColor, + // child: const Icon(Icons.add), + // ), ), ); }, diff --git a/lib/ui/views/admin_ui/meja_list/meja_list_view_model.dart b/lib/ui/views/admin_ui/meja_list/meja_list_view_model.dart index e2548bb..2677921 100644 --- a/lib/ui/views/admin_ui/meja_list/meja_list_view_model.dart +++ b/lib/ui/views/admin_ui/meja_list/meja_list_view_model.dart @@ -1,10 +1,78 @@ +import 'package:reza_admin/app/app.locator.dart'; import 'package:reza_admin/app/app.logger.dart'; +import 'package:reza_admin/model/my_model.dart'; +import 'package:reza_admin/model/reservasi_meja_model.dart'; +import 'package:reza_admin/model/user_model.dart'; +import 'package:webview_flutter/webview_flutter.dart'; import '../../../../app/core/custom_base_view_model.dart'; +import '../../../../services/my_socket_io_client.dart'; class MejaListViewModel extends CustomBaseViewModel { final log = getLogger('MejaListViewModel'); + WebViewController? webViewController; + final socketIoClient = locator(); + + List reservasiMejaList = []; + List userModelList = []; + Future init() async { globalVar.backPressed = 'exitApp'; + socketIoClient.on('table_admin', (data) { + log.i('data : $data'); + getData(); + webViewController!.reload(); + }); + getData(); + } + + getData() async { + setBusy(true); + easyLoading.showLoading(); + try { + var response = await httpService.get('table/detail'); + // log.i('response : ${response.data}'); + MyModel myModel = MyModel.fromJson(response.data); + + if (myModel.data != null) { + for (var item in myModel.data!) { + reservasiMejaList.add(ReservasiMejaModel.fromJson(item)); + } + // log.i('reservasiMejaList : $reservasiMejaList'); + } + + for (var item in reservasiMejaList) { + if (item.idUser != null) { + UserModel? userModel = await getUserDetail(item.idUser!); + userModelList.add(userModel!); + } else { + userModelList.add(null); + } + } + log.i('userModelList : $userModelList'); + } catch (e) { + log.e(e); + } finally { + setBusy(false); + easyLoading.dismiss(); + } + } + + Future getUserDetail(int id) async { + setBusy(true); + easyLoading.showLoading(); + try { + var response = await httpService.get('table/user/$id'); + log.i('response : ${response.data}'); + MyModel myModel = MyModel.fromJson(response.data); + return UserModel.fromJson(myModel.data); + } catch (e) { + log.e(e); + return null; + } finally { + setBusy(false); + easyLoading.dismiss(); + // return null; + } } } diff --git a/lib/ui/views/admin_ui/pesanan_list/pesanan_list_view.dart b/lib/ui/views/admin_ui/pesanan_list/pesanan_list_view.dart index a4ac978..b87b52b 100644 --- a/lib/ui/views/admin_ui/pesanan_list/pesanan_list_view.dart +++ b/lib/ui/views/admin_ui/pesanan_list/pesanan_list_view.dart @@ -131,8 +131,8 @@ class PesananListView extends StatelessWidget { ), child: ClipRRect( borderRadius: BorderRadius.circular(10), - child: Image.network( - 'https://a.cdn-hotels.com/gdcs/production0/d1513/35c1c89e-408c-4449-9abe-f109068f40c0.jpg?impolicy=fcrop&w=800&h=533&q=medium', + child: Image.asset( + 'assets/nasi_goreng.jpg', height: 100, width: double.infinity, fit: BoxFit.fill, diff --git a/lib/ui/views/login_user/login_user_view_model.dart b/lib/ui/views/login_user/login_user_view_model.dart index 2852346..d65d767 100644 --- a/lib/ui/views/login_user/login_user_view_model.dart +++ b/lib/ui/views/login_user/login_user_view_model.dart @@ -20,7 +20,7 @@ class LoginUserViewModel extends CustomBaseViewModel { globalVar.backPressed = 'cantBack'; easyLoading.showLoading(); await Future.delayed(const Duration(seconds: 2)); - easyLoading.dismissLoading(); + easyLoading.dismiss(); setBusy(false); globalVar.backPressed = 'backNormal'; notifyListeners(); diff --git a/lib/ui/views/splash_screen/splash_screen_view_model.dart b/lib/ui/views/splash_screen/splash_screen_view_model.dart index ecdb20f..a0447c2 100644 --- a/lib/ui/views/splash_screen/splash_screen_view_model.dart +++ b/lib/ui/views/splash_screen/splash_screen_view_model.dart @@ -1,9 +1,16 @@ +import 'package:reza_admin/app/app.locator.dart'; + import '../../../app/app.router.dart'; import '../../../app/core/custom_base_view_model.dart'; +import '../../../services/my_socket_io_client.dart'; +// import '../../../services/my_socket_io_client.dart'; class SplashScreenViewModel extends CustomBaseViewModel { + final socketIoClient = locator(); Future init() async { + // MySocketIoClient().init(); + socketIoClient.init(); await Future.delayed(const Duration(seconds: 2)); await navigationService.navigateToLoginUserView(); } diff --git a/pubspec.lock b/pubspec.lock index 77f0635..30842f4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -773,6 +773,22 @@ packages: description: flutter source: sdk version: "0.0.99" + socket_io_client: + dependency: "direct main" + description: + name: socket_io_client + sha256: ede469f3e4c55e8528b4e023bdedbc20832e8811ab9b61679d1ba3ed5f01f23b + url: "https://pub.dev" + source: hosted + version: "2.0.3+1" + socket_io_common: + dependency: transitive + description: + name: socket_io_common + sha256: "2ab92f8ff3ebbd4b353bf4a98bee45cc157e3255464b2f90f66e09c4472047eb" + url: "https://pub.dev" + source: hosted + version: "2.0.3" source_gen: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 09d4a33..1ed9ece 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -55,6 +55,7 @@ dependencies: flutter_hooks: ^0.19.0 webview_flutter: ^3.0.4 carousel_slider: ^4.2.1 + socket_io_client: dev_dependencies: flutter_test: @@ -91,6 +92,7 @@ flutter: - assets/reza_gazebo.jpeg - assets/reza_meja_1.jpeg - assets/reza_meja_2.jpeg + - assets/nasi_goreng.jpg # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/assets-and-images/#resolution-aware