From 241c563c6da12ed4de6d1df12f2ef531e577d31a Mon Sep 17 00:00:00 2001 From: Steve Dogiakos Date: Wed, 2 Apr 2025 08:02:47 -0600 Subject: [PATCH] Add screenshot to README.md lint MD for file. Add .db and VS Code files to .gitignore --- .gitignore | 12 ++++++++++++ README.md | 37 ++++++++++++++++++++++++++++--------- screenshot.png | Bin 0 -> 41938 bytes 3 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 screenshot.png diff --git a/.gitignore b/.gitignore index 0a19790..faca30b 100644 --- a/.gitignore +++ b/.gitignore @@ -172,3 +172,15 @@ cython_debug/ # PyPI configuration file .pypirc + +# database +*.db +*.sqlite +*.sqlite3 +*.sqlite-journal +*.sqlite3-journal +*.db-journal + +# VS Code +.vscode/ + diff --git a/README.md b/README.md index 2f2928e..fd1a110 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,11 @@ -## Museum Visitor Guestbook +# Museum Visitor Guestbook + A simple Flask-based guestbook application designed for an internal museum kiosk. This application collects visitor details (first name(s), last name, email, location, and an optional comment) while dynamically revealing the comment field only after the required fields are filled out with at least 3 characters each. The app includes basic input validation, profanity filtering using a custom banned words list, and logging for easier troubleshooting. It uses SQLite for data storage and is containerized with Docker and Docker Compose for easy deployment on an intranet. +![Museum Visitor Guestbook Screenshot](screenshot.png) + ## Features + - Dynamic Form Behavior: The comment field is hidden by default and only revealed when the first name, last name, and location fields each contain at least 3 characters. -Input Validation: @@ -16,7 +20,8 @@ Stores guest entries locally, with persistence ensured by mounting a Docker volu Uses Docker and Docker Compose to create a production-ready environment with Gunicorn as the WSGI server. ## Project Structure -``` + +``` bash kiosk-guestbook/ ├── scripts/ │ ├── guestbook_export.py # Script to export guest entries (e.g., for Mailchimp) @@ -34,34 +39,48 @@ kiosk-guestbook/ ├── production.Dockerfile # Optional Dockerfile optimized for production ├── README.md # Project documentation └── requirements.txt # Python dependencies (Flask, Gunicorn, etc.) - ``` + ## Getting Started -Prerequisites + +### Prerequisites + - Docker - Docker Compose + ### Building and Running the Application -### Build and Start Containers: + +### Build and Start Containers + 1. From the project root, run: `docker-compose up --build -d` -This command will build the Docker image, start the container in detached mode, and mount the persistent volume at /data for the SQLite database. +This command will build the Docker image, start the container in detached mode, and mount the persistent volume at `/data` for the SQLite database. + 2. Access the Application: -Open a web browser and navigate to http://:8000 (or the port specified in your .env file). +Open a web browser and navigate to `http://:8000` (or the port specified in your .env file). + ### Deployment with Docker Compose + The `docker-compose.yml` is configured to: - -Build the image from the Dockerfile. + +- Build the image from the Dockerfile. - Expose the service on the specified port. - Mount a volume (named `guestbook_data`) at `/data` to persist your database. - Load environment variables from the `.env` file + ### Logging and Monitoring + - The application uses Python's built-in logging module. - Key events (like database initialization, form submissions, and validation errors) are logged. - Logs can be viewed by running: `docker-compose logs -f` + ## Additional Notes + - Intranet-Only Deployment: This application is designed for internal use only. It is not exposed to the public internet. - Database Persistence: The SQLite database is stored in a Docker volume (guestbook_data), ensuring that data persists even if containers are rebuilt. - Production Considerations: -The app runs with Gunicorn as a production-ready WSGI server. Make sure to adjust worker counts and resource limits as needed based on your server’s specifications. \ No newline at end of file + +The app runs with Gunicorn as a production-ready WSGI server. Make sure to adjust worker counts and resource limits as needed based on your server’s specifications. diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..66794c434afe405655e8c1fde11a5adadd199440 GIT binary patch literal 41938 zcmeFY=T}q98#Zh?=ut$^L4}_nAV`sZlqOwKqzNd!1yq_4LJvr{0Y{KdKx(9yKmvgz zkPxCEV5kZtF@zA2CMAi~NCM>HJn#D_ydU2Wvu0+mz1F^G_T1Oqu6gso#!Tq6*y$rj zjtE(p-?ck(als{AeP-gbEAxkf+rJY)M{V4eNAzgrzrfA>$Opj&X| zpUK$;?&Bt}r?Hj$i!)qIXpQ^7PjhIVc2Q#qyhUl zJh$KIU%FYkWUxdX+tej6Hseel%N>6I$dL=7$uj(7|BW8J|2y>Pe}fmdKKv)!kw1(4(t{_AgD`Ro6G;s4`(`0F(6v-kIGq&4%yi{mV>^QV(NM0q#K2m8F5(Agf= zda8zT&Z+Z8*{UTvL)Ql+ltr}zulPg3DGtUJ#TV3bf2I%xzd}zP3ibZcmG3{YH|{hi zQ%sVPUXMSV>q-2)7r=~-*<1d&@i9M3u66K@U47&w-4<~A8UyQkT7jJx=$Hwyw{5<< z1dT(Nf@@FAoQGM2ha;QZ3AYo!1~2VMAi+Z-)L%3yB$yYa!=mG&tk#A5=#di9_kDFA zGVBSS0NvI0SUb(@ABDUDHnrl1f_%ui^TD*d&3f=yqd@OZJF2RF)ZkJCA=h`P&}uh) zp?YO~fY=IAw)*;{uR5q`+^+M9Kx+k4^#B*eq$}_fqDu|-w=|IYt?%+X+aVWVNoaFv zp>Cpu+IQAIxJ=faL(`)YVye~{-KN5V$+9v0#8aX+*(PsHWgV*PU#E#sZ1}2ckgch? zmdrbm9mjb)gD;rwzWhv(-DdUq`Ep#G#Q+Q*+Pk~?-7sdQ3qzLc!gAG-4R+x_PC3$fO9`k4 zHQWKQrNAS!;lXbr%{d&Cm^!fo05HD9Uz z9RaPoL-k@>hk`%9n)N*Wm2g~hBj`RX(Nj6Xs6=_9b}V~WP-GCk|Jb75!&DdsmFWYP zH&(PEUvm_OUf|6g+QjNSTUt8wq=L(5gJ*k<~{1W&X z^{y%8e&+$@7y|D+fME}W`10x|?`&qKU&#Dga%KQ+DYZ@7jke=$V zgI?+ra88O%yI5!<)*d}vqN?BhPEl0*rt>|*KQ5LRlr6!&{~ZUY%y*fApuE<9o{Enq zdB!`++x)&IqUx%YJd~gJT1mk?Cl3g$Z@!wWeEI50l{4}RIAM3?BGkBpax-eBS3ABU zw?@vP{heUDqGM`CVdQqNicy?g(_>~6CIQaddhnQorM=#N6bP-$qHD^_TW<6-d}#C0 zHK8@$)mw6^H4m1N!FqN^W}RU?HpjTPAC`5xP(_aCtX7c0#>?vfChnau;69Jb$QC@5 zb>8?7kNJNEGsTW^}##Q+OJ^YF5C9i52$Hs|GFK2@E8Yo?EU`YIJdm# z6f$W@p89+IN=~&b8%urCR}cDTgIz@VO=2y{A3xm{_3Mp`vKTMEXjlL2lu!w8{sUSS$u5NYFdC(5zBTw;RtQfq zX2dUEsgiPkigL=y(>YKo890+;nBJXZXvJ6HC33%Nc|sm6yM&0@RW?F;m2gJRbz^S! zWQCcVU{96HqDWz%1iEF>wg9JCY94>UldA}dp{_Fx6g@h!Jz^i<;lvL9^WOqC1dgd8 z`_5t9(d=w-+>D&pFwadX@~6rh@K|oO1Wne*F&hx@^fI@b&KSx2HAA=C=t}oxj48_n z?2o|%kpfYKj4xaf}&|p!*&D(CZZ}$GfK3LO4PHq)WX}PLBHNY+e)ch z04Yy@PtVRgsezl?G$~#T!42Siv(iK_R7M4iiO(9@AKx6+%>z`~ zXNdDnCHVvUb};TKmX_uJMUMYK@BS|4s2h*Q4yTVqf3_un^3z0uVdd4cQK_QAs#oOY zvBECi82)v&`4u3mz>t^cJ490-EcZ1w-_69}XxnS;#6< z!N{EKwM`v+^@6~XuH;EEJ?#jW;YG8zdYV(Phbo8V^|9U=x(eIsnOc@7y`g+?kiCNa zzigPN`vW|N} zhVu-+YhClDjB(kUVpYh3!mDx^r{*ckI;NOM6`M}*F3Ard+gN%|PeasjkDBaii9PYH zKZM7388<*(Yx}dn&I2sa=hs|T$GY(Uv;V2j(>wM;dA&%;cqh=7+7bbEz|Nk{*?`P{ zC+g3Zw71&{kkROap1-W^*U-!*__0$R2&S@L3%6$BC z?%#(cHG<7Kxh@<;cQl`D?7P%OMY{JkCj&TY2_ug7WDMGYkDLrzfJvmLJ&=SA`Q|QG=fc8ANY2FUx`QISvj6L<%$j{L)k`$zJ>Iok{!O9zxL3&7E%&p8)m-m=GJy$n zmci}1S2BRA(9r(t4+98LTE9jlrzE(kAq%9;Yn5EEbJ>ioalhlWb}&p-^V z2+=hIQOyV;AlepsMc=4oF~bTfWj>`~YSSp^>&|$8yE9*KQX6mp&)tZbGOmbpwczep zQ8m|9W9C1`)hspZ{J($b_49Pipoo?um`IXXKvHirQqIG?msuvP=GYJUj14W!zJ}{A zQFt@p1d$;Di8~E*J_8C;F{Ia^%S2vvPllm~x2=ec>RRW>Fk>?E0$h{QcujQYK+9>L z!U6#)J@Wj{uL4u^44sZ7P6%E0WE3-!l%@r$Z4M4%lg3*6VS}0>3Kha~a!t~tmkr7} zs-@p8pvis$h|JqmsHaQJm3n)OW)6N$6x1zof5&^lC8 zUk)b1cPLIBmurjLwr%KFt$tdj;n9L>ahd;QFWb6eq2}ZESEP_NH7;Ewf->TE6Lqh0 zCxosNM`?IZr^>QIrFYRD9+Ber_79$?!u!J_!j zv>)637(_Q*^_cR~D{r7J4N_zhUQ}f<1?#kRe<#dV=;~MB+aH>Ttd5cVVO`}%LN6S; zv&oLls9#a+-YjCV7e6~qA|x+#Ib2K)@0245xu%Hg-ZeodZgu0}U}(w&NGdDh@t0tP zw~&>blkV+7bmzxhFWGN_w^3^_SMAzfd@)Xh z%(7U0*_vV{>ZkgbsN%}8=8PdrAJs@P=d{4b8j3_%Zqv~zNp~V#%7i&JwNE?92Z-f2 z-)=fIa+a;!rH&74wbs2+XyL}sjK{nCENq>cN|kz) z`MQiKQ?&%o2gVvG)B(O3_yWkSU}{Is9z_%6)vE?4Aovsu&lf}L0G z4r$@iuBX8BSGPYT&w1(S&CV6w2pjiNjE)gkj1ST}<^IY}TMtW!!A7Uvu4S4wBq24T_Cv2`bUEfhJw$ z>Fl!{W7JBoB&R{lRg0{@a60~hF(MM*WpH~UDzwu|&PvR@Lu{n zhnXS1mz8tIL~r;T`G+6)?mo1n|fuO zN#zgLmmo->(ZR7SBV0Srmnk3P%f*b(vObPi-?rZk`~;YaPLDHmOW!mV&I(bt&a}-h zF7!eqjI$*6nRBl98d@P%0`6G=Fi#Vrn1xxa2l$6Q+Zs+mCQ+h9f3Fq0me04tmWQS~zI2B$ZQ<>dml*ouwSZnX9RNJG zJ;BDuuIYl#?YfH3>k7oTMQwE8$*MRZ!;7vv-BIZikrlAipD^j7sXDlkSN|h@nS6W1zP?;UgTWwr%UNL0?jA^2YrQ6?bvjuIvJe>;Eilr&|r!^Sv!ry(W zgvYj*wFVT9{PTxLhx;+tr*R7-(F>Fj_nKij=MG^2Q0|*$K=XXmVNlj3>?9a1qQvw{ zV84){)qIK(#f=_o79g3(S>k}6IvJO*@ecQl{UgA*i#gXSw!w(VaG~<( zvUdfjEh&D2Q-r-I3I_i!JsYauZv33&yh_|zVm~u%`&F>8gJ5I}ic#BAc24fzr&h}N zLnGgwVUg{OpuEgUY{2UsRT;c|Q2v7YOhuNe+pIY*iR)CfIYyIvs69BOL(0~v8_O5e zqbtZMlfOEjpZ@3T>c+SkNNS|7b@$qrRxn`S-FXJxyFdK~?sad?46Ck?uqNph0|xKM zVdKsmxvBYQM<@qJ$45ioifyM|(BFz9HN6^7Xk$XYn}B9hq6<`2~Vgp%s4}>o=8_eX5GmBd*Q1=TqwW%%27D(DL6$UK`cO?OzrE9%9vJ%Qa9jJzshU)5sv?Y3{Lj;Gyv>ZSs!6p%~KJxHx@izIUWWOE~KA! zqB@1gH{I2qWdVZ7}e|;I}xHcv0iIc%hAL-%ase-$VC2M#w`>)?BeH1eOAl zCR@J2B>YAPUDkb&OXjZ~+dQg_BERpNYimGq3LVGW;zUIoH`6nSGMug*NNLop7vQ)8 z`N|hV%D$<#+HXX6aTsx`niN+<4F?ltpv&yi0X`|@ry?LL8h#5ykw$#j=lEut#2q)!Vu>^lCWnlZ4 z*u6_FE<92Ilk2K5(JTPWvZiRT6BIHKs}Q6?^K~dtOeYuNwOV(l`W*MG5JGnKw-=zr zLd=6=%Zu3rk0dV*uAJkoW-l)hlgG_V^Dp0-IfoDd4(eV)U#=gosX0|1(Y*^Xf`i%szjkiGDi%F^k@URc`T(1sn z+reaL$OhM?7acqkKiXW{J7#OvNP4&5<_|Cb62IMsH5Gyd*4n+w8$1duzTu%vU%KIz zBF}A`Qycg-mLt7cu9d$toT>~iTMg4fj_&(z^~PZ{20SGHR-M@i&jG1t?K%1kWsS>+ z@1eZ^e*QA`x!}@%>-p-Zs1>`r`hqWWT|PMy=>}Y5wQTIFT?x8CMxk_#^*0bRuNcNM zg>w;tMPk7iUt}uLnX3(vS{Hjxc$#1>YW>lKDY#XtwHvROXqY!S3IPgqY;L=H29tInk;b z%OBbem2BEOk9#NX?>VXAkac^yBQu3KFr_iyd>06hc(~n$X`a2t`?S@>ey6iGg-#Cd z%^+=eQZ}C6^Q08vTZj@HL7FgYDdsuK60`tGHF5+Ku|)R9=$P5B$unYj4Bbq<6fjh#!r=b4+C z5&KPfm8_TEOFgOngV`rTvc0;CmJ90e<@Id$j>jdD@q5P&-vl<_=~Ev;>vqpVE^Z*i zw|%$+=eF<{P1Bt7lf|QlE^@lAwn+ul+;MS@R?-h+g%Yc7fWGx2!AwlJ3FI!P=m6RA zgR2lJAvxu4PK~t*BJ~@V^Ev?`W&7kly1}aUZ-jVBUCEM2Qj(dUVR+5ioTzf^DD(>o zNZj1>@0iqqz)`PVg!+8;xF|`KFs>4ZCQcM|J)!*sfg}sGpyw$5hsie7X~<>cc3$@+D{I|;E5s!j zyM8(6^|WISY9Vs@l?E8E2@zuaj8!a|&s0>#$bC*g#5eHF&C1x$T`%U|!LL63DpSI9 z)};{|{eXPra^Oa`HO05H7|yE=fk*?Uh;S`*_1zt8av)$49$@dv*UnMYJ4)OPLRgJG znXTmDg=duAR*;2r({sb$_S(Z~-V;Hfto8ZGUFr@W<0RU7Z@_ZxfFuN5T^h(B246x4 zPCrD)A0*9)-^ivdyc35m&u&a>^A+x}0-9GnvS5ADxLr%7h*I}^Aj!+B`|hjJ>*OtC zgWp3GM&?kOL|#^2vuP%TH*?^`Z4XqRHD;cyy%Qb(N9fbPL!}9z1N+5MuPbk~RtJxs z>ikg99*kN8?7UiIaO;8+_XV8w6nS}?D&^{Oqc^?M4z+SML{(Y@z4E~;NnYR2CY(c5 zooFgMF?0idVdACtI06W0SXy+3=9NKhGTMim9#4+fK+^pF3fEYHns{LXC&@BxsPQ1q z7y91dBWfd5j%dMkdx?``6>!Xk$m@KFPuW>#CD_L)$5wQc+qLQ!iCOtKdB-U4$fF1& zh)K=R;EOUE;FW_D7nd-4K?e^HYc|xc@#&SfYy4URf2=4-IORJ?WXUnCiazy(M~}gC z-V8~xF7M$rceh<#_tw2{ETtoS4~82y$fBFF>u=#|!Cf~#z$L6`-zM-1k^&mGrdfHD-zBWEfTBMHv-wS{+L+KKfqBF<=s$uZG zxrvM$t6yng+E1pKuNe6CzP;|(!8`ey76*yLyC!TM&?WKqc*4A{mup#`IV1_ zZ+hI7%+eSO7VmK57$=Fhfd7XRx?pT3`4#kN$2fQ*y86Vt|C0RB21P1c<2;A>V;yfl zgSpS(FkA(z<6p(e+=)#Kq#(f7yME&jb{`j6GwOn+b|1}p&@r(?(XlqhyT;@z9^AhY zTgqd1PcA3!U2wgzBuBY6Da$m`(lBPl<2{_W3k04l+YN=Iw=(FfQDBiPZ0#P`GcP9<~!enZi%wa<#F zSvN=Av4MjTb%{-ax(V+}0;}8%O`9wlm6*+Pb4}EpjvoZh>dre^EBR`Mr1Gbrto3Tw zM5VR`$`7wipWP(f%Jn2DD}uRDVv4pNi(Flr3+XPHb2n5|-s(tNl|WcM^WBp=eZwQO zqIl*=%ulPbpQFtOwmZ$w0D9#6`EvIBvTzT;7U_OWEV6v;GQ-Z(y-2nym|#z_nj$kp z5@H}~4E=>?fNm+{uXf$LHd#4(gsA&yPU3_18kJbxI84&9Y~w?C@EYY=qS;mjPe`^F z0rdd`{u5icSZH*{$_yQuF!gLV;j_2e7YJ@q`xJX-;n>sJ+?r`HoK}|^K>&-u9KF)W z`a}3=cJTso0q=Ymy2Ayav2)4~E${d~=5)fv5K*ko6tlR}sTj!9ss3>opujd!7x?*@wYJ-AvO!p&fM;O>|> z$Er0?|1S4m&HDT+biS{GIcZ^z#2wqvg%gTumkRPE6D$W)`T5Z&P`Ptzapt_K<*sPZ zf^x!W-lrkSyfAkY$DPpB6EGu|w}E0|!dEn%1$52R378G`f>h%FY_^ zd^#z^TO__860YG{<;hm$_C3k6-ZvDztU&jgSQaW%$s%AL_N04ld%k^w+3Nr}S#kcp zBUiDp>uF1BjeXep_c;~`_Nb!HqeikI~Tt)lub+$nydsm{;x3x&novvt}CNFx7HHi0<#aR4#TvGka08g>&Remx7pKwPM1wP z-V3a?I50rTk_(YZLQ=VPJm;0jWZ!uhzGm`LS$oJzB>s03>o`fH9G->Zw{44lPEPQg zbSwfd2WpOB#Xu`hJaqe4j()$OR!D%EDS5;>%+esZCMAR4sZ8&&uxq{~X6^k~E zxiKYqu76XHPaqtq>$(;)QbQuG+s2CA9K;19J&s8N1Bg8pn#>XRW zcI5W~A0zqw4A~%6DN$tT|8^|>wH$)W_Rw*`72|G-Xr=C?ZrvU*`DUInk#r@f=Dm&V zJ2&(8aeG|zmlpti53nC+`T(_rL*oWmVqQXJJ4Wi4<6ck%ER5$@{N3+3!6V8263c6C zfN!WJ5kF?kWL!_&&eLng*20o%zb6 zVQW5me(d_#Pyxp)j6*f#mA26%U15{ErX1j)Mg5>wj(9S12kZP~d`6#7Eo)gT2^8vhT|)-|+HLoMf^nreS1N|E0XI(*2gmGsAGW&( z2h>YJy19Ov^4fi(LpKaR=0P`Eo)~TNR9zh9S@VHnA}L^qvj9iu?MzC=z7@y_WX-$z zkkaI^YSXb8WJ06a$48>9s7bjaCLBtqiz4=M;IhA_V9A4yt z>?G2+lw5>;3dDezmKvhN=1D@x>TaZjvvKOlF5V6~-KW7meosdKeBv5U=cbbn2dQCkQ=GAPUSQpiz*F1J|V z5nF?+`>|S4(}aB+-1Pg#_#4U=1l$Dw&#;!E>$sqz1I^j1fZE5MZO&~Sw7h`2yoXFQ z3;uGe5RFJ}ZgTUPRxxx5Dw5Gz4t9W>a+!S|&ZgBpT4SHfW$!kz12fpStr|6m_C!UmtUrflG!EtIm4BoM=awlqNu%0nW(Flu@_byRG?3^wGWa z?%Z9FcleNq_kP=&-sto$sEj$I%YQg{`Z*=;(7w-axjSz48JTpkL zuVHyDXJvKL3FG&jPYmegQ6tOz1ySXWGoy$0B4+^+F!yq@sewzsbjr?e+GD?s1)!LF z_SDR5|D=AMM4P<{%8H(T$7Eiwo8Bk^4ymhHtK(b>y}0Z@7*zjnj0oSHk*B3nb7!M; z{V2y^L9M~%n&g3+VwX41`Wcud=yEc{*D9zIFBQI&!0RZ9YiQXbhiq!(MPw~2MG z##xoe19w)(p|Twpwfm`&46nuKCmjoZ2}mtHZecNF;gIfMh;x#g10Q#r zoLK0%Nl_Rw!rfR+qlJ92&$t`I7E<2*)w6MeX_Oezm4A+%2MosK^$go;MsC;3>K^>T z)7g9sq_khTy3uxV)?#X0tMFqaZv=?Go2vdz*54zxF7hea{2+!?wy}fjT^LX|%D-Vz zBHMa@5fixX^mvq9g(^+p{fn4ii%`p>Awbf1Bzd^|u^dBc`<7LM!#z=#Cq6mKBx{s~R5|weH(Jxy30k9JN0vDMVyuX#6>oET;CUNJ4F5c00d9tZOh5yCv ziM1DM%I#S9N)9pnfGV^AFQE~YUrFW$VB<0SJIxM_Pu=apLOvMyNk6o?Ni-Zi#XgyG zH|(NSbhXek>TKresNJ+idR+MQ+)Hp`I-WqaQ6b<4y6?0mnc6y+5vY+QTODh1XThjr z*Rmcpap*ikx^}vyx!rg3#G$QvTT&`JYhH3p+cB@!Wh7s9ys}2lLtH*CD6T8;gSmxe zQ?6f}N5RLPckTxp6Cp{8;8K85&U$nq4Y)!YZdn}os5Y>+;S`O$9MU&fbAtf#P}TVg zUQj6e8S3N3k4VMr4MGs#4+Q?Ye~7na5RJZF?Sw4u0;LCEjG~p6iA^>Qwnm4z1GT7@ z_n9%jpP#rZ)S9e3RcPhV&>)~M%IZ?LkQfA#h2$t|N zRs_3>J7a-eful2`g^oJtICepB6e_>Fs~LDQ{K%`uz7jEQBc@1M|RK3<}7Reony){sC8@s24!3uw`lsb8$_g_)*wDl9b&`q2Bry9>!)|RKwLgFP`yXRjtjJgk%HeuA^|7X=jRb*7n$q z3X8<1+d5YC*Frbmk2!8ER6F}nb)bXihD3&d8pb3I!f(gTja=V1zEIb{3qJ3Px&*wz zAS5k2=_gdG_m)-~H`cqdszK0-V!mzO7{x`IR8_-S5VhREP71r0AVi|O7}t*kdD;>%RMevS;Wq^-cFvieg&)S zNPU@^-k#c*Qx4B`60Zp~D=LyjdKUn!q(tb0tXF7|8L#w{FSYY1;@#w&=qnM-OpO)?G2ERaosEgs>CU@NGAQ zMb>lD3*hviXh-D&vkh88vIGfEC`zNGf`eW^pf~VuiU4C?79qAC%#L+qDw^8pnI8A^ zcCN(vFP}sDP6Oew>_ti{5z6kCrPXE>0vMx^1Ym*HxH`;d)r?JKu|=OgKZ9Etb}H@) z89D7N@vYIw{X4zs1tmp2tRRI>JCIbQGntmpl);_ON?<$%_M=G}Q+;9r$qX(yUqR=jpuo}>`gAsnD+^Oo&*bd7Dsj9fQpssk% z)|QKn4`EMq4oca(Dmk}6^I!cP>b2rwSc4jQi#2P{%XSDi42*2J!uAR|9Ip4g89~gt^W)F?jn&Wukt5Q`1k>WA-v5;|7a`9p7iL z2OBb`EQo0XPYG+#UyGk;NiJ2_uTF0_o}XD&r9_Hf86XE-J0+)~t~d(x?#4(db*5?VPdP2TP1uShKG#Ma76GF*&Ypt57ru>{F$OgCHJ(R)6O z>7^PJixu)V$*njNYny4fd_Si$wa&pnN6e87K+OoS^d>D3StP=Ghy~=L@-^t@=bEsr zlV9o9SDP1RdPT1UVf~DQCbq+{0dH7mNs+F7(|L&Ciiy8-i|m=PV-hzK(el%(-ZcPl z!ulCt$d#pWP?jT}8TJcwt~w|y=A+uSwI{)bU#kkqSllUI08WRQ2Dkt^ zNp5$uS=5&@O+_vZuzlDYrbz#=#JOXyKfxa(dxf@HE^Ey6Q5d}~~O%qq9ubQm=tm2D3-UUWiDk_7bUu`~73S6hp^47DueRSxUn z)(Kv4^D|bE9g1nn=V>YniAdRaLn@2%g3s^!Cp+ONzp^jES ztu{M+dj+}R7xH35M*KoDzw;d6n)A<8`AK9+UNvgaC^BY7EC1ryQZe-2R)R@%9dv$1 zS?d(pit)(7Q%^yG_TlAc?a-)x+H;gNZU5!me8VaApJ?h`qZY^ZZ@>jEuW#onQKYj6 zo}pH9P@u02Shc&v0P3~{_Auf@_BRj6)*@zV?D%Gz(7$71@8upw71bOQZ7T2lDk&_> z89w}M<}5~Y0=4qlhT=G~va->vCbbf#5-@Oo_q#Xnp{~VLWQ)`?l79zaph%m0Mwd+2 zv~Dw$Jma3YK<`6I7wK~Zt=__u3^oZAV~fps51s_(-riwOCRJm5RmOo8w0mDlVXS0n zd-y}47d7jMMR>oi-dAb%K+_Zn@AOFnr-NZ8r+4!{#vOZq>oDFv4g7bSza;N`!?oW0 zZ_y*FzaYV}5aqv7A_cv?Jiw7HePBSxPm4P9J{s@opKEd#L-1xwoM#VSJwB%hoBb+Q zjkIF`81d5LUWxa1_I^Pwj30R_O>$F+qAZJ0lCGBF#+s5{nIUVN_TRjjdrsMa@1(y1 zrD-e@j`<1$xHY4_U`Pqv9PQKqJV!qWQk7tHxe@H*M+tJV4nHR+RI5fpGV*&&(>hPIWWqcw7^}7DTfm8p zKg#+d=66q7Lm%1oC8-W}7fYt1ufyjt>N{9cWvS^j|j!$caBZ@RyIIFu(Bu<`Hb zwyp)zH(Op&6jyJp=3?xqPTy+SpZ8r0RWOWSEq*jiH9#(>V4sP;nu_*yq@55hiT(n* zWo(=dy5)C<0=g9`ZjJ{#-Lq*U8tq21PnhAR-R`&gXYp1gc}=IPoIP8V2AA)wG(;tq zxj3)Ydbrotg^W1s2oxD{2|083XI7)Zu8QIPjA@ZrCPRL(-*$~`aOq^Riv*&*zh;ma zp}yP&%3xS-RQ!cc>JyYbh%`h@T$~C2U90RQt}NFSjdEEl-TLZ4)ro1urACiv7wO0p zo<|#|*chp@cHZSQ6)-X=nv*$Bg-1hzbE+5AO}Vwcv~4SO7p;A8_((=<&{>IcsXymh zOT5eWC_5W}nukN?=aRPq?P+hCe>rSttO6l*Qvwhm!Z>@rMEeT>x1kE1hw z{Kf#}HN3Np^fY-g&+lYC7gV%w&0Ra-+EX>d-v>z;-$N( zLiL2e$9dUP0io?qsm+f6!_|x~QoOQ_840fcaS{LHyD68U3Q`0wa@_pe13$3-P#brB zcR#|!f4{wLePDwZLpe%grk{?vO@*)m>nbR5o`YI}kgZj97M9xM+jL5(Y{n1=c;)1D zNa7jL{)$VSwAhdv+y zzb)SK(Y@$Eark*3L_pSo061k zlwdO!^=vd#Lx!Sb^R?}R>cjvp(TFqNS=Xub{LaC4qs?#@c_1cw+w)TB5ZfLM1NoSEJ3O_2< z5JPi10BK-QHz#=WgdKTfr_d^?Fz(*lJSxA-iTBLR9Jp<8SQ)!vf!XB2*$Vp3_sQK2 zM`P-Y;yJYKjY0hWc9C-b==p=4HKx~`2jS`02{2!XL(E)|3S`_d2DAq4mQ&!U10iB| z4&&)B?%k=WW(U~(UV%*!C~MX?q?Rh#mbG%)dk!ECEbe?4~_jk~?zx@-ek)zwJC( zA4*p+RRt%Sa5b*GNEw&pat$Y%q-?QD{+E7iK>Z>3Bl+A*&vVgbYyA)T1t2Lr+tMal zea|E+QQJCKXK(FT9qb^8g1Luh6uM@Qm~X8r9;Jd$&OZm(236pGTo*H9YMaU(-kNKM zSJYR6$MS`R4k~APs??3qYZm0?sOH#vCJh-B@Xj~OsOE>NLOpWZh6@P79i=@~3G5}_ zcMph6qWK}(-Hj>mIaTLTeZ`D&%*)R&d)_5^9ulE8{*6aIobMTZwXnwZx0AcvMy!EUx*FPSB@6bAEt*KGccV z>?G@0%?XZ?mdOD|o9Y|!OSN`SD3p!Zv55J6TGJ;@w#}Dfw^QL&i}0Z8hhuNXJHoC; z^Q4LnTE0Qh`;wjg0to+Z+uRA85X8ims4lZ-G2CmjZQ$0A6doh9h^7K97}*a);EPe#5or`1*+fV2Q4Rn1YK{0wd7~h zH`c)5`Q)NJxmGuKwsqtOMY`Uo!Q5yvFv4(3HMW;yhsr)!t#K{)ejxEp?x z&Ru6{u*z%0A6uu3xn&0M-oe?~ntQanoj^Z?A&?W5EfgN4~{|0SBkrPDV;xID9el5dw)`kjTiau8N2Lc(G*kFg}Y&4 z69PtzZe9v@rS2rg;x!h!f$D{L<(c)FY_m!ZBE@i=<<$>`%hWxa0QW-@&J9KOO(3aZ z*n`m=5=_f_P$YoX{pJ9sk$p#99m!mu{Y~@kk=ppw)(_A_%l4b%bzMa zmKew==L**>8+zMk?rKk8^oJ_1Dj2IcOQ>%ov5n*^#-m=9->KsLVThi5!w^P;Z|o=P zl!6BMvD?=znqnK=m%t?q7;m;HSeImsXqcv~#OG|=`#gXtg)b9kCc(L}f=VTf!t%g5 z^c*5OU9)3d0CSEv^c$sLGPtRV8C)-elB73TamPN)9!80gU0h2FwgqN#x#5OKM~Cx` z;%7lx>YtWF6I-@ky|0@6lA@lta!Gjn!;+<=RY9&v&EU_?CoFvbxlHZ{0W%&&z*jkg z^dQjj{Y3N>!_)RuhTaLD2TsJrSV59=Dd*#PC5M7=$_&f$k@EDjx_tIC+#${LVN{~7 zeH1_B1+ae5GHfo{Zgt5v;u+gh(TS(2Xx9c``yJT`R2h2NHbOfZos`=$37^$^l!Np* z{m;m$8~&5q>e$W1Y1BIM}s?_3VzI zuB)xF8yIgY>NCoIv-```cVSL_2I6OUpy~@Nl_Lb*Cog*{I|^eg2-^Ncihb%}Oj4U& zTbHVI+szw0eX9#^wX-bjD%D^@wCeFu#@)d<1++-l!R9Q`ZnI|;Ippbuv#^0!Z;*SP zEeiQI7Zuk4oKj~Mb3B!Kp%e7$uA=+gF=~hYL+$18r*Vy+*Cyj?B#fZW~_o^?_!N zFKk=rRY&8!J%4c!6B^$LZ>=f*=g+Yt`>J9rO)}t-S3&{m#s5IbLOf^}lJmwkvS6upEdO<5YF%r` zTE|0$*ip0I$TGqjc{c@gDp(g{&2LutkExsu!rxNK;#K7mZ172zMR35#4o1mpS%nfomEZ6-C+-DlX zFH9cZBmE$Tms`0>4^8}y>aSSyQU;+$#omvH22RYSKJ>2olTA~Q6Z81Ns#-NcBTv*f zp}cW^l>V{@tw@L8t7R-tv`DpJ-yeQSrNQys&M5k?ZY|}7G0eSh>7EVkDKr^Jo9uaO zao@F{v*90O{5zEfTjvh1eG8b)-R9?cX>Jh`?Oi*+OGO!b9}zfpRCKi1i)@j;8k{py zqGR+->FLFzHdP7Ii1KlN9=yXxX&GOH7>(7#+s*5jMfYLF$Pehe^aZ%4I99*xc zdek=I{4k&2)R`ZKE*}4fz4wl4vVGQt?Y@fWYXd2Q4Uw)$ld1@UAfWUXP&%Qv&;)FN z^bXRMDujfZ1PDb$dXttALO={X1OyTy34!m4@80{YZ>?|tb$d&XyF@sqJ`K?pdEU3 z=D$^(CM-e>G7RY35V~4d^3q|Iz}I53`wtp zqCu3AUb1cDcAClzpMYbAh_LNUKu6~fo$Ch<+)8YWn-Lyea}hPUv6{lUz}~%09Xzmk zW<~#NxCJzQYANTgeg7}VVml%BI>3P0e$e^V>T@FJZGtUZ?6&FQk4M!+1pLOsrJtKS z0p`)y!gwrqu&^ca4QaK}2ylV%TN5N>VG^)lg#Bd`y12g5y?Z@rr}!t(UCpvh8VXF5 z(|`ei369Ah{&Msg&tM#0UgRETmJm$#@okJ5SLh@B6x{foVj0sLTJQG)lP?hrAN{On zSv9lOdUS2CX*L&MF0&S@S$TweBOfcHaHZQaNOi@$xKxW{<+jE^T%W$wsQlh!WaK?(@;=OZN?uY2-*D%UcrHGA)ozH~4&-Ztz+dm0CQk zjj%GAgzj!k)_;AGD=6|>+`%Xj)faz{zXx8alA?MdYEmGe5@2LF$7vYD)=-aj!rq4BwR34oKUJXv@8nf0M|U$vw*nO@ia!IeqS5UTkH-D z<0(jRay@zL{a^K(*YDjkJ15m2A|Lk2cWu%jS;Q!56AMW@%%OcfJK9YWLU!F;P?;M- zS*0@R9-mFU9)G`Lxf{Dx{2Rv!{`DlW$T~Ec6?sL|T-!V0cH^qvx^F-7t1@-QrLF8A zn7svSU9@A*vnn*+5D^GqH!@q&5sTUm*qWdAn4N-Owc5;GrQ2k!V!!a}imr5eSnj}2 z`(JUc%n5L{-yy|e`*KlJw>qN1-2msyP8MMUG8mn^IjG>#Ej#Mi(}~bV47pcZuwg6o zA5HESw@gjW-xM+@xNjW!_z@r*xZHZff3T@?t|S|+nKU|-F#_8cX84nzoCtQ<3X24a z!}E)tMvYkYe3m|f@UKj5g+o*277yX*v-lcfNawb#5eAbdY{eJ z3;x)e>Ji+0L22>YF1$_9i`_oEf2xcGG)yugWna)zvd9)g>%ucc+uB zh6JQJMLGAdWoc#h;d}QiQ-7AY7SLPBqk`RQ>m2nY$MfYmKi>EPLq?3w;PH;i2u5ILEw4$E5^{}D1+&*tv z(3F>#wlkCe53|kOnIo2V-Df-rbj4feOP^$naDr|M47IAAo@ll|a|4Zup)s4ZlBMQu zGLgF5`wh>MWtrjtHNo{_aW{crjxeG*KQbAFK8^b67UoYx=!gpz*Td5muc=SzEXo2< z=dooqPE$~tEddB@-Wv?JL|c2P7TXp-Et5P~6HMaJ{S{IB#RbKqH7Rl&>ESb4??C`R zp8gf{j_Nfscv&B)8o!4GUu-~l2HThu0ifK(96PRBe8wY}4;9xs^i=e;a)Kf*zyo5@+ZaSZlYheMO!WXktMn=Eq?M3cRC0|i zCb9;|HeHvW+7joeep>$NE?S`8ed`qe-$MFhX&fGWcgNCNN>Y0#Z_DfYE4hFAD*kyA z_P(NH;psDUC^C^|UUbw!8Ws8YYC8hqpq;Yt@XIO=bXg4 z7mDgwGy{LwUyuX)+hLNb57&S)GkcHOf@IU;tQ*D(X3@q_@hI+>Y#HJrv+vX-JRhw+ za52gxFm0tzS)2e<>}$#-&mD_(it5Ij z?ZPU?#<`P)Ehlu|5JIuj_=+CuxwckXvVn^s>XT&|f?E2H1DMOL0HETYqg85jca!8H z=||_?37GWV*+%d8APK>s!}{SOh7hA9HWPW{XthI?X(f#oJEqbv*guq6Sd2N8Dlx0F z&S_n5qrSTNEZ7Ofz_}NzXhFo$`B4%!4c!Pymoc$i zu&REp?JNe2|Fr6?XObI-w~p`f0)Lo$n!0v6_&d|8#p*Y#!g41CsA%=ap{);l^^CAM zE>2t&THt;yY^dK32XVSQ7$LM8^W&TCrK=*&okV|GQP(FbAqVa@c_h5^C#M1+?ChF{ zOL3LEsY>ih>l%l0bzO!^r)05qpOAEUAI>pHJOkwY$A#;Y2GWYuPA%w&)+$RD zn49QLD+(GX76(L~(`SAIdw<<9sK{LDq|X zbZGGK3mnpVE+_fjR3Vp9>a3Rg2^8?)R`;qUX3&{D#i1c_NZb-(_mw44C*>7N=abQe zJpWCIxgrOa{I2E7E8VDBV`}E_mbE1|jC?fUu zDy^^Q`2)GMeGB*K%m?Y?HQgfH_i|T#uHm0O1X6r`Z{Kamt;G#k)0RyDn}rxAL!0JL_%$d^&eJc*YjF zKd}?jZBFBr;|5+(!38JmuZ64Pmmc{aCC9Xm)+0uI$hR_8N?LtG!KvG23(W`SY`Mr` zJ~eW84jr)T-#>euULW-NtL&>L7SUA}mLbX>$?>U$LB<}FTuQQO%lfG zs$g<4H)H?&z1EE2JcHwmy^pp07rg1(KKonholDySMnLxN7tZE=Gi-eZQ!_;tKRdA3 zcyj;T^4nO`9__b`nG9(n--yOets(zC;{N*!%#h9v=Jx=p{L4g=lk9$3x=@#q^Nh7T zL1jJ>yDj$^9jFIM)V|)ev6?jlJ*)Da_*vsi$5q=0YTS^dds|X-z}t4gGXVv?sSQP@ zO0#jS+ztJ5X!H6Z@zZ7UM$jIxi5zF^J8>jk&o!-g0&Ag#0IyKN?mSpV;%<`&|(u z?p!sifZOfpj}*&avR|{-2JcVG*{H~7sl@tmfx5WSd%G@CyUQSXWa}xvc8Z=Es(Reb zwkvnsuhz`%?#6G@OxV!Mhh)?Qw)U>BNbYtdN<8RZm(^W+*WVL6HTJv;Vhv}*6jsak zORPNHx6Y$ga8eBHYvxiVGwmCAti)-10trBg2~%Wcb&XQbQxJ`jixC|>=IOCbui z^B0?yVb+vwht=lce4gOl0j*u?(qkNlZ+2f#OWLUOuMR$0N%`q6-P*7x(Yf(UYki(X@hL-^s__pf^!VJxC0fU3sYkqS z{(kPyGyLf0Z)h2*APa4=puodNb z35ooD#US%tzjI;`GaS+me}R1N()Ct%`;GWsi)|~oZ`xNQzVGw?Wg)s7tE?suaQW!|H!B* zddD_sIlHm@OT>0SYR=f&eiP@`gdJn6NoO>7%}3X5#(J+zP^a2jrn5zpB;|Umb`i(v zyuwLyW!kuM?di_#ZcSyp)KI#^W9k;olkcaLU$ZjHBdJ(D_(X;Mw+~Nf+OlMoJ-!`o z6iR+3I|X_D!Gl6;~@EHaskc3@u*)zCY6h9cOXEGo`&056K1r%sK!fQ$x z9gLqOJv3NsD@Db&&t{4F&@R+tow=Q<4=bkG9CHonU$M*g%L`5rL%VcEi=!i{7uRo; zSBlTo_Wn0s6IiRZ!O+h z2*h_Ds>~08_wQ@zmK&?{2jG3JYK9tp^9F`AQL7r2&~*2(bACK-N2f(vG+Poe4g=U~Ew+*}AgZ{4@g-FrMeXhd48 zytT4#3lUaC$-euor2V{y5_>I`@LxfyCSm;>?sP%xkUsJ)woyCm^34n2 zIdQT2mwA_CDztO+`c>gv#iO$O;vUvDfmBpRK$lOxm~|^V8_&&YnyNeQ%+S{LzP|0! zdyNb9<(fR6%ts`fgg%am0<1qLIYOy&OWf-AfS7_+-=v>@^GfwvLp8HLN+B;^>z;Ba zgRjb7h92tj*&8M`Oa|Aug(caxRJ%DXPi%Pm94GV3w~@F6P<<2WGsMj|Esl2m8()YL zB4OrRV6%f7Cl7K)#$LWnS~}S3h5mie_Co}=Ym)S~+fN2^jZpsZcxLf&n|;oKy=LxZ ztm$>y#F^mGs9$;{b?{^xsyy$RFk4w%aG>DjZTl(j=^G(=^!Z?DXl6ZFeG6tjoMemL z@@?r$kK+8>-NQtuJw7y3{i|+;IGs-MqtoS4&vSaV7J9|V3Bww3cB$fvc}A_{fz&sx z)hVm;27Wyq%3VD@cqk!_(jA@uFR=3<5WgHeCDaN zMNbkHuS}-LEk4Vgc{+wLfpNP=~D_ zMvH0NZh3>pYJwkUtbd6Jy2j)I`3w zeJ*o}IWi+txcI3x#65?oYf90R!BrP@ZOrr*EAfvzPW%4u`Z>WbM2;N$zN192&5oBR z!*yk!)SW`Tr8;N$FMfV*_d-a~{bd%puk$*)g=66IQ_kF$rTL`sjVbGv>U_UqhLzlJ z{-xF6$Ahht!3C~nXPkby^-4+&ciF4ln%w4WZV6U&?z=7hVd0SmdnOE{lavB?hYd9a z)-uKDmV$-ruleX9b9#k32~vs@1C1XL_cNeNTXJ2@w`QHl-6p1J>O#PCl6a8W&S;iN z-$^-rzzH)L7M$32`SIaSP{BE>z_L&4E4YOqwo&+Hnc!SXzIK?+d5~CNc^!TA8&0C^ zJ=1SWS6PtMQ`)@HiYkN{yZzFHI)_~o?7+RSmeQtbe`ov4D$2%91gEgi8;na!wx0an z@~%ljab}*qeECFH-qhlcBLg{hg(r$Hn@F*#W|%NR51rm>=2Ld9>zTq?d-A_;57Ohh zv@Y+`zTt05+E{OEQ|AV>+zYfhB+q+9)TTSFmUaMfkPytdxJm^*9AhZ&rVF za(rJVdO&pi)!gy((3W*o-?^@=n?Y};%U@Kcrc5nwVH-m~J)PXJyNOIH>*sEb%3Wtk zTh)1`vY*T^iD&T<%$1Kw>j*`2-84`sfD^m3l`d%=>FasssEIlQ>xU1O5|p~ zb!uWtn)_ZH$Ps6=-5Q-(5M21Z%pc<>|8lrE43{yT)fiLBFQ|a#pG`B~wq4x8?Z3W#-B^;Z`4sF3V*kUQP#f;snnz~H z8Bu7-%;6;do1&>hS&n^^j8B81O)Us!wO0b;cx~+6^2d&w-ew1PjvnL;6s8}+muv2{ z9&@;{{Z5e{vX`+l3eT!GA^bUQ6HVv>cpNPs5Bu2?Pyn5y8(G_Sg?%pPESRWrlu zL-1IP!DsV9tU=Rq9k@%`!phi>@l-+rnk)y>n*zSJ9cX+}Uc#;}>`{Kb<2P&N(2K)O zmI;yB`wt)a8cpZ$`Ja|%e8M6Rw?=zHP;ZSVcgA%K6fOU9{NHQ_dFO)2Eap`+FfE}|0kq~gYHt8p2N zP(jirTNDjigH{$Pm(SjZzI1WM6xa7bFOy6m^Cw z(X>e>7Oj4b@SlbT3S$Md(wu&O$b^hz8{v(ULvde2(kL}GGv~?TCrc~HSCK}y*x~0% z8G>YI+E7l6mGZEWn$LAe<~*f76<6K4ZQD90T*w^xJ+7*tVy_Z0uUua=*89Fe^qUID zB4o;4;lqAfQwjcoZfHdryz7I|Ri$Y)5HXVnr<8}MsjhBPTR2Br1d-h6w9W;?M}6|< zzS+l=p#(oUxX8e2@W*X)Cg1zU*iP~08haP~?7Wd5m!rOFHo-o}fJ*{8L$Lk$@#>GC z@2mBDLLuy$V}5Up!DxpZ+7$FAIMPj_Ah=TOa`xn3k%;>rhNUAy11>R}j54*EhgMa- zz0n=~svG)4_clfQ7h;F4xH$aN=O4D%rPCn)^xttFTw!KA>_!uh>p`Tu^bmyy8|hu` zM9Pe%Ar4vPh8=E}QJdj$ZW4qLE?Kl1hl@6Dd|aZs?E0=hXnU8<#$KxXhSBjeLV&j!S(r5tU6Xmt}v< zd+<+tb$!+B?8*%wT}ub4xW%at@X_@`7IY%RTz#>f3z9!dn64g8INa$euhzD}ks0p7 zX!3h#cu-dnzqp6k9-e8~rYAg`VO#r9I%8WIiy(Jq^Z8HpyePEkR1vS_Q&Aid z^b6s(n1R5m2ZAZ|yxo_RRIv1opNN*1Rg!eROEPmI4WQQJ1z}Y+>%Yvl29tZXBJ3J- z?HsulA5m&HOQrqHE?asYi@$J4JpPhP=4S8obpv2}E@&@?9co?Cy%?>>mBW(Ij+-h;U<_ zNhD~W+Y_z4L5N_xK7Po+<@&_qEa{)K;m!##N75o(r+?0T>ETtv9wn9O^i$_;*gzRM z;kb{g6aEDS8I_lEhZFQl3&;2>X!B2UcQe}Yyzr$We^<7tOjQ&uCmo;87|!Y`u#h_L-8=3Z0Ea5l0gj+XB+rh<1C_;z#0%-^^XIM& zdDeY8!g=e;s=T<%gFCgDn1goD36q*cvF=_lSv-aPoV@ZP3~}hM2(BETj|Z;*ICS(C z=u8T3VCJBm`;*E?_u%P)bv42%xn#Z%kqyy`udWxSfJQI-fsh~`CUGLnd+_z4m{)9b zKA68EKqA|4P;hXfSULbC6+J_kX9Y7mk?IF8NLjvRgSP=q1MWZfWM3POJNG})FQD6& zJ)%EtnC5@>#Qrsx)g9(~UzXRIK#9)b+u+~3CHsexbaQTnF2C|E@%ru~(kL5PB>>F)K0x#T(cTyI$>dymP~12#ncJ89C%mn85H1lD zn$SG`*gByZ*$01?ONKvVE48YXS-VQBjMLy)3YPp~y|ox-MX6_QOt$XbhJXt9xrUhq zxLuj=J5=igF+}YUrBqg-U~$M!de0P@!+b$xU$4xUmR}#VkkErKQ*=?{*a39@Bk5qZN>f4b%!N8u>SWn0lvn3|rt@&hN!;BY?@JV5@%Tj9@ zsYB7AnVS&)7$xxz!k~?^L{PRjDIkQt6UEG#aO;|oVpO7;!VcyK4|IzhvE;4OhDM7* zA@LPvRZsJa^AvURWKFW9>NMh}PCT_%Iv9jv9?Mkegtzkulv4PL1yTI-EAJp<6Ek*u zpr4)B7irNHojzTTB>b;tEer|;K`DqWtfrRJEs+@t;+v@#Ec3=JXBlXnx}Egnz9QiMs4t$NZE9OX=P#9fj6rx>OUP&cv9)YRFdC zl5+Xz-KPo1WmbXIhM|E)1h;TL98COG(oianIyU5{$@%-PZClyG#2!7AaK@JxDMkh1 z_1n!&XodHo5pj0girLRR?)78bOfh1qW{vBml+mZ=cXtU7OxTbIX6*80FJq#_Q?mU) zjvU^FxcQTSfH>fjE~EKUX6g5?6BPB}U`7J_dUc2&oq1-tdNwC@-g~Aoo!i^5;d1~! z^RmLDnM%@~P21>jJomFcWDI*DNka{V{cGQ6K`E1d54l@NQ?Srjqm!_Fe(gCGThcoX zkCRLQk+J|pN=l*4W4z^UedoBuLm6pe0h;J)j89UG2lo~v9##a?uyU2 z(>$bAD|&2&qQgN({eWun>rp&8*L7Ut0soC)V^0-nF+Km^AMj zbGo*|Jf=J0O5PrqSXZ}9Do@~@gvjVva zINTJ+rx#+iDUjy^;Wdz4!^(2v`+z!-^ojY+$&~;isgl^&gP4@bSBl>^7ANm~R^BRU zs9op-;3K`)*FAf46o0EiRLd_$y$q#&!Z)MOT-l}o9g7Z8b4h3 zs2NGuDVpg;xD-EbuY#Y)@AwRb{&1QSkzP`P_t}|AgHU%=_U4Z=DppMVu^Ly`FHL=V znB_*;9`C{faGbnX`;yn>8O8>(HZO_XpPsGI63erWGz!B_Dvxgo@hJN>pBWtre4-*~ zIG`-LdGFci&&t9<|7H2;y1UOwJH69oGk~g`6F4Nk`7T#Y*E+03;f`c2$9qdFBfY$G znJ4$S+^4?lrjFE%q)okRUph|;sQ8rLvx$~kk`gX9&q?d=Z4^qnDw#fBujA{7F196R zSk6b}{uXnam`r=`V6^GtWB1`62FKUcuM!j>G>FFXxHRpbQ zq`O(03{eVt{f!gNM+~u23~b=tvf(>(TsGH8(n3fqj>C#P`mooWrJS$R>BYOcpfp5W^Dd9V=yyrtln7f=!kF4?WS2mMs4;MmX5T%>vz zf6dkoqa2pMMD8wEVRXH#K;BhosXIlwGuKqtmEpAJ<2zF`c^G1GJxtMfU?yW&{t!UX zdlhKqV*1$}b6@Y$b%BeF+XCKqw# z9MR(YDdlEDFFFPEjg9UCgssk4+sT#mYSJB%ZCs@7z0T~erDQi-0kfUQx#i}s@mb- zyVUxisdjq5!Y2gP)N%TAD)qzVY417>oJBmxg`bG3%VN;Lx)d*wo?yRK4XpqQK;@ArZbe76|1K*6wmBFhV@*ktdzrQ)c$fDbo1&n|Ikg%5w`;lune6@e-I z*6>4DoV~~7u5;p1BEg5T+cSh;3?5Ax-RKxqf4fmdb?jOFgb7HOwE|op)OMtGu}V-g zV=ELLj_LOM1X288N#)Jl&2cYH(iW&#*_EDi7MsPY5l4jn5UO zzFgTaB2J9Cw0s4ON~{%HNe7|ra>;S2v6kWo-JVeA%iyHk5Lq_Vd=jj{BE>YW6Y0plPCF~p=a zdM~(Q(!-Smg%B2dn%&Hvc(+d=AnPj)VZMHD78-q&cgWep29g!-E0tX?gdhsMp_VGw zS#sz2xFakGirCC1%wG!8@qbivHz8qpGYg0WqL0R~+lozh8pp+hPUB#mF6_=aWtgu6 z2F9opy-y}XIxIR1>(Fy6v6Xn~!;}0XanqGQBT%G);NA;_)2`D^`*(jJth{Gl;%Az7a^QUf z=FEYffC{ZJ3es+C&%Hg|+qp7{UTy+ji5xTDzESQFMXe<-6m7v$6^Q4IT||4$g|<}+ ztMTr8X9K0vq@QBFKrXVeelQ@0uVGC}w%4ADd_%T1KK#u(62mO&qkV%m@93d(11s?m zOg(4?;sBG^i!w(dFH>F$lOfN$zKH}Uq(%&dWJvNca#ALX#TWhaqj_UI_JE+qHqE#h z_F5G1o~&+FTubmu&8iVFE5EUzL%oNFeY4+Ml@Tfv#K_fD)O~X&-sybP{=l+5@CJ^Y zxY`x}wjoshbH%qBBH-~UaIX|tJnNjbXD`7eXvYN?!_ER7RCZ-vpS6 zJ+Jz_n@ijnB37$j-O3y#LqHS(9@2eLK(F>g+0@M8OikTJc@OC7A=@Bn;i}>x;Hlip zzv|_jF!wdvvm?8s7aO|^^^kJcu-U9+oC8=ugH*EI*aPu5;B88c&)%>)Egksl$RTmo z-z$Ir428C=wyRfywwp)O|nh6Jw8;GHJ6j(3K<9= za|Kk#u*e1Dq%OH=X8MJ6`{3=q(@M8kb3GcDHf3I~By;D&^4r3*|DG;n_>9$<@V{SU zKfC4W5;pk{iQ8pCq`@kE&M?azM;XUCtG+yyf& zhXwCU#+s(hx@f4nRHO@M-ly*|8(T2;2mxwC50cPSBq#+;uQPxMPvIuwn#1&22&mwU?uo0 zAR~*1x%Oyn^ebUUfOd`tu6zc9UM4FpSon~VH|?XqPUF~CyEC-N-y*lu_1)ey0qo@D zab1$xp~=shNF>l`(X0lH3|Zx#(lnY<-fn^@G5t%Ry{qNyktU6^;3dz{i;K=7RD{vB z0kHqyW{Rd+&Q6FutH+d8XvNXv9Rxz@rWZE^WJ6>)ma z40JKnM5Akc(DTh{{+Ak{+B?rb;Fr zKMx7{sM}@3RXX~t5F$|~U6fZr_bMRCwzTM4w4$eeb#^jd#GI~KDdcc(l6iufr*)5o za&Jn{>5gLYVtbl%n+r+)0a)U;g?k_IFfDIeUd*@|Z?d1dQsdpAG$PAt8zXlENF;w& z*!8VmAaTPq(7jfHOg9)hIpBuqC|?B^7#V|cu0IUcyxb=kc=q64Bcu4!6~m&6*wu78 zmzX%`@OvoNNUv%0GIDu!FILBqy{s$@PhH8HlrRKxKWm{c6^FlmHc?gj5uUl}${+G~ zS?Fr(P{aw+ZJA2M%5syIAFa`>&IU17VV}^ngL3hBn4waZ(3EI_c3?Mi&$Kp12U;Lj z%QU~Uggem$nCe-4x8di^@UGtiFa%kTJtj0yLHc`Kr9Wz{!Y8AmyRaPf);Gu4C{Qim zQM%IHNk^hl*h`jee)dF?i6n;td3dT+)Ea1WG`ZeM)r1xB>a{9lYoSi~-F3awklxqq zN3aD3IuLmbP|RO{{_OPvfyU=V^2*4nFRUzW!A5Dv#htH0jU0P|UZA#fQ1#2t z;TdS!M2e+ziycFMUk( zyEB?%c_^+$2@d8AgUXT$in+UYBQ;lO)^qKRa~;IQ)Xz5LHUa)%+tg?&?RwLWg1XAf z9UG{7(`2&)eaVr5{nc6PIxk#i&n~C!Xa485Jbf0>Cr<|QFq&!pq+F3wO94Vx*vF9O zM;W^=h6Ye^$CpYjitWdx(w^R;A{9BZ7)ql?S?o1cOCUjopV4LVPh31+y?tI>g}LVA zTWHZ|vDE6n#C9$@OJ18;lz!|-*)&foLf8#<7hg3{$Efen@YX`n>MH%&eO#{_vX=Xg zCOv4E0@_zl4SHPr8ty#z#4O4UHA(9$e?kATIfW8s2fla3C-ujnhUWq!Lpq;%P#tro zLpUXGlFpcCutpI8XC8R<@HGJAzCmP(h8)w%=Xgtf(21R%MD$25m8S-8u=JUn@8^P3 zz+XV&Y5mI@z5Z!%%G&`UPm8qfRX;|$&u}fX-p32P_SzY#L}8QEa~&~{=s%p)zJ#-( zv`v_z3wy%&4c>8v>&?c&cybx*Q~Y36bZp7Tzy0cfDg^Re2?`T~Fb$&>vqI_Ex9 ztqslzcv*BNUIqZ7O~f)i0k!<<&ETMO!`#}^qyOW(*D zPe^!?e{7T*pk1Npj?p{V$!fo9ff^A66z6W&OM;Q9M)aojCtTRVyx38!%h+0){bP3> zG99=$8g)Kr+xsogLS1t%>nr>G9+z<^m+dZR%Bxzp%KJ6C=7jpWw&t6V@40$t&zfW) z2lF|J5|J0>tyr6}a|SRY=mFn^&F&OO05;8pA93>Z@O|gv3agK&GU zNtB&0RBP#~vO1O~#u4ow+9kH!92sj)Pg;{!TcL4%us52Ym*^k!+V;(t)j=P$5ok4W zHr8Q>4xKT-2F-jx<67NxCz zF>OLuS3alN#5=HWoZ@+Be{};hcQYen^oYJ$i#|BVyIiw7FQ8p}?AJYN zMT-iwy!Wk?BI5;4E0lz4dSWb&aTCPTkTdFGPIT^|PVUUgqm`AAKkEtaAB&3%ml*U+!oiE1MFH$p& zwgx7?xl7x9t5KI!9y7M1k7>?KZ9#=ASN${IkuXnsGWc~ZiXZq!N%4G;{e&^mc3f}o z@ROe9dnqIZ%?W_!HyEh)QLpruPAy+f_7xHzf2@N%EM^6fI2(o%?kU?EEv-zuGE{WY zp0%g>tfq4a$yMuMa4sRJl+hz1K%pJfubr=j&uB~{crc2ar-xq6)2HQ48n9?*l+F8_ z!+rVQm1agnb+=%xIF7eIMt->Iu&mHfU+Qz{IXAI;3~X=j4CygbS?PM^Lf+98XQK4e zJ|%f8kI)K|SMSphfh|lv%RAx?WR+h0@o7GODLBHCwExm><*I+2+6#C@aOEz&>n5%- z#PN@Aed?Ji2GR$}h@NR(kl_Bu;}V||2T^Mcq51&l+AYpymZNxqH_UbVnv3l2RX=c! zX17u_KvE8LZS#LK*XZX_woO?tBbx2^p6uRDow)>iLLGzo07 zY?WIdR&y|eZeA3C+={jT828_AS^be;9qJpjC;#*4hgMPcW@G>BOqjk_{j8O7Q@p8#FtTa$~|EMsh zl-OSyZ>l#QKBrJ{Er9Rm6{hP z<49hu$EF)6*F!?mxw{1+(5vJKv2bH! zPE5n22tAbWm&+rD`-tShCE>Q&U#He}&H`;2wE_w9>+<>uD$_ZZK8#N{r#Rd)mI_PO zc6{XbLa8^w^_Q3Ox>mdzj{OLtEiIn*8)A}PnyfgQ8(D`nTBgmg`ayx6;DW?eFS3=; z){34-fc*-k(|Fz8t^Lt}9)(&fV-;3EYl4?EXfK08V8p>CswpgMJn>A%*!Y8{dAGiM z?~Q5zk$jbN1<+3%xcsYc0g6sw**F_cZn52QZhbvQ$Pap4Wf)*y_?z@1K5^^?RR-KC z?)7X<;LxspFga?(HMm19Wt*QXsR1iDoZNl!lq7{n&H&bBk_=*#U7TVb~591ivtBAqS#=m<7 zvp*{yw5@%hZ8v_=z(CpK%TF2ZAjTuBi)MFTmQ?IkM+Otp=MN0q<7nmG(B<(l97t52 z2z4!EodD2pujuozt&P@+0>9y_uoeg*zd>Uk&i#HH92FjM-dNrf!WKM|LvJ{4VffVd8as* zC$row%;u{@#gcFn=I>NdzSZW$$O3IgVzvIX6GwmZvTiQQK||^TX*Ot5^#g4jHXNf2vtrqxi69_?e2znu z9AxG~kP}25>@5Rerh1Z@Jv}B#*_l1t9VUK8*V*sh^^{UrvIt3RxG2!9NN-{H+?X@J z1>1mg93!A)tb4BUhv_zsxgwslaQLP@1NkJ>^A98u{VL|+*E6q%$0OJIs#iXi-?Ff@ zG}Pm2Q-+3hB8A?G@Z!D~K{ow;{jFU&13lYtugN{d%I} zj2Y1iY<_Ak!ef-qAm9vH_HK#2lZ#Q~-aD(23gDyDP=pI6alY}x*Plkk$YnFB&y~SB zXHBe{1JcGQ<`V^fY>xZD1q2*OSpbUJ6Lt2m*a75YE^CkB?~uQZQtt{&BO-Du?0-7E z1uriKV5`ir;9eseF~zR*D|qR8L%_Z!zk6GrQ*$yl-D@Do1w_;Q1A(9eaR%Itpd7{`e z3-YXlr!Sl*S&i;zYR~DjCB2nWTPW#xE^?V!rG7k<@{El=5_jg)PF$KUDr>~NF(JQb zs7c@P&#`Nq5I>p9ml1}xm+KypPYW>#jP~u*h~OFgJzmD#n2>I) z5vFp37&#a}c#^Y-hSq?5Sv!n(_^PDZO5M9sTwQo`9&7NEiigB&#vB0GeX_8ng1*FO zhH$MW9UJ2=nB5W%8Heh-w$%pa9-j+0IM!EQ95Zzruy`PqnJgbYR0*{2Jjs5FaNU4` zz`W#2Hv%B{7x-mQXgYh+1A3#T0jS0_9|^t$O9~QO{foVrSQK}xuWW5+i~9`& zlY496_>*%d!Yx(M5ys+Sy}=djj8BLX2-U*!CNv%I>8$C5QDdvyp+$Og zcPCFLIRoiKL2A3fPCU7%*0+L|ZpW+;u8Wk0%;ou4zIZ?nIU!x^yj60MHH$WlFX|=6 z;JqgEbeE@Ye9J^%mc=QpI*{38#u_zU3(MRX4SQb_xK=c%u6E;BlYdK9H@w-l$e@W!XQ`Q*- zMgp$#c*RvoD{!%)`nK7)JpfFDF=JRmX4bepJ(XYm>oSx#OwKKh0!681vDZD#Rxsuh z0q|;Qv}n>RBKi#TOD zaPyeGT)$JIu z^z#4;tgs$M>EVXmVgY(>YG2f&xs`5~SYCI@4HL;DI>7ipy<^{f72dq0 zQ4K=VdMm?RlVN!OM|9TUM>TLG0`v8~7mL+43IMkmDC(d6N**y%(MAZT6?=z!C$#|I zy5F|ZwIEglY3J83?TiA*7A_s+tXWy4>Ngsm_=j6Timd_fznaV~$j1+O@a)(hUyZbH z{&CAc*7}%>Hz+io{gG=DIP zZdLsUc}3+@Q*}P#Eu;(0YKNMjQ{%@N{1fy1_@gS>f(-?*hQv|YhTs4DrC$C=p#MK_ zdEj^dMV|710vP`r=54{I#+MmzKNMfCr)s65w#4V{YL*m+5V|3o!@tb3g|Ey2?U%#x z3Z1-HCLGjhsb_QlEc$*ZKovO_H1}#3DYkheQyv-HT@!XO`EQj!@YK#}K%SuKv92%7 zSn6np^B||8&ftl3)=ih_@vjuDjNI;#KZxHqw{Vl0EL z&~DsU3KiI(-yQ>_AJ71z&kd5FqBI@Z>+D-D2yLMb!-I_!PG}tKJ`S++dDrNSih2|* zfGTr!YyWOz-J$mZ<|>oH&pgS)tt)R)QuiNGFl+GA({rVf>vR8d{yrd>=KG8ry1V(Hd(^Yb+@-lLXNL)f#G^N@#>_t~nuSi<-qukZO%Fri4T! zk^Snv&iQfvp6gua=Q};u^IYp)>wVXKuXR7>(cAZ(QF9)wk6qx&9|!H;@C#Rhl%%f& z?GYN-B!=^Eoc$s28=NHfDmn_iHTa3gj6ar_@W#S}zn5aBm})+5o4yuWWvcc4Ep;XC zee3yj-k`IL=X|AYc~8mrH)*r10!&hKf67zaoh43N=ft4>Xw5K<2evA}j0LY8G2DWi zy*K~G`KXa9?Iw+g;n2uV2vITER)5vaNiR6+HR>JRPfQ?@62soXp?CR z2L6*~TQb0X9IkvvW~;g@?YLlWA{M>K$US({U^5UpYL{dhv>^o10B=vd1j~b6OKmL2 zmj?x2JGeaDvG%H8!o5HBIR{gGG{&)L;C%qvTI2828%fn$^$+h=M*LMDyZALVirPlw%ZOab}&i;ZpEj)sjY|1CSZG*)-`{i5!2D%VxAZECub|?R{ zU*ocVgLnAESHH#Mz=g=LSO1%4kV~`2Z!jKP0|V)`0`4VYueQTs>-^s?wDVY;cv3p6 zKU)!nSgkn`bqRmuT#G<`e)rzWJKR*sdkK3(q+sCasGD=2`)fs%c;N46yOBrE{+sL6 zdvWLZ|9N%K>mh)%jJce6G&>+V8o;SrKqJo4!HJvypCRwRFi(I)`+U)VeKVxn(Bvp=iEb%Ez!p(L47UZo}7%7+We+cl! ziZ}$uj%jZ`$SpESYTd3lSe3f*^R*Z3WrpBtfNO5xNbJti3bH#{vNgc5^R3WQiPZTF zvaq5ro>$<2rq3-XhZa}f;3l-d%?cB{`%s46ZM-*w9={s6ETDT~E<$^5VDy#1tdvI{ zG&*dX00QVJcgH9itmxLs#scAFETrOq=v zO+J$W?bS%QJyku@!6V`z5dwPS&NL=7 za#SSW1yIfDuiK}kno?v#c7%duF-Ag1hs0cCN=}R77~K%l{}GSC64z`o!Xfb5aJL7`q(aj#J1<9 zLku84gLli6jIcFMtJ!#C0&}fLI2!NmtDl{0)z%@`a9s}e7?3?mj1MOw*b0pyX~n!u zt*fpMfkqadGh5k#SCu1V$g@z2E9uiu|3Nyx+t&^wW$=WAy7t0eH498;1@sBi@<^Wb zfWQQ`$&v5b!gdTLCN}Ro$#2;(@OXVtb>BB+0%1}Bnoj#HiZgr;fo4gBB4+0tb?U}64a}x`j zyu&lmY*;Y$)f7uPJKkgXW2gTsp4km%{x&5WG$OBsfZnE5sZe98p?fjalN(dp#E`jW zw^Q2T)$3Qw7LwW^^ykFR^og0nfH^LK9;$=`BVwi^cPXQO-F2@NIg-Yl5ik$|1r}Tp zmN^9k3OXQMrq}8sm2bqrB};2<%Ra(k;9;LOIv_(T_#*80EmUH0&*emFh*VmzvM5~J z$&_yOqT)5yBXO(7_sdPsnWFkDS728qf!(E(L@kQDU;B}Q$ZH}BK62os)A`JhI zUFk)eQkYWG@HfW$JIfbmSxvQ4OT#(GlRp_}#Wq8prpidw@BU~^R2rVpXUYKhiEbkmeTj%`u9|C+84qPa8^YJ3#kG2d zR`N_5@$`!!duCvBDny(-L&nKj6cb=?L23I>rhYDTzH!^T_pT&X7H@Vq=K?6Vh7i$t&km%h!OEU! z5o<3AIB~g5DLzoDMEDl#-h`UXX5 z^h39y`q)BDGAV+%MY;qU%#ngqmv8=PRa*|i(wB2aENAK^MRe%9D!I|xI~1ihQq7GE zQh9*}*{l7YR)fMe*E9OE)sikHjpUO&sb)ozxGH37Lfqubk;r0X>Ik~U3j7B)WGz!|oWf0l zx29LcPEin#KmG7r-yX%czUSNZOX|2y(~+yF3;%3v=MAc+osluWj(%IGO{=<_aQ?0- zSH>o9Cn^Hd`%L%KrkobzOS`~#q%!$XEzS0L_}-e7k%5|$ABo+4%lw+MkG%l!y||y{ z!M7Y7zl~ytURk1e=d@4;eQZr%Z3g6O5~YhLD#SgIljg+j{CL z8LjHJ#pHL6zjoSRaU&tZ5h**ZIKgv*3Pb0H{OpfsN$!U!WUFWFiL1H7F4>n&$UuY7 z)u{3;+Fad3=wVPmp?I=I*$I14``v}2fq>n119?7SQB@7si%o_DV&*O1dSv=Y4{Lrs z;a_?@)KU(W6V<&KK0eCq_&PpGX$wTZ8P=zP64B}Voi6QDYR`2S_jOO%jz3**gzbry z*wvTvnKtyVV0_b3ch2j+F-%-w8j7GrW4ya=@H-HQ0+r7uHr{XWs?AmFessG6vvVON zI>#%~-WzvVzcehBG8J(J1{eOc#4F#jGw zW2LfYB0@FTvjIUZp}LVAdip^6{+|3H^kwctSd3Iz!n1<*W9gs+%K`&#nw@DV`l~4N zY~`?TkUlDUXUiT^h}|0kL0a!bpEQ}#^nG}zu~dRcui&vS>$aBNAB2;Ou@epXwfQqE zz24XTX~aUdJWZuxsX4$>#+WD!9#AFIlt>U`u^U&9-@LcKISS_ z7v=hw)%P;_dE={@>I=PTpbXWf;rZM96uTk1U(jJAPPCDoEG9I-+6|b%>%Vwbd9p~W z>x%rNVD%8Fw3~!gQTc-kK3}2PvF}dJ8)tuBO_}}M+QJ|YA`u2%e$dnP0??ay^aF9o zjCwgp3p*o^e3y`N;}6T}=4wBeLGqn!G4ajJ0C=v->d4JCDoZc1wrrY>m%PdfDe|4wfTRt8ZEbY_i4F zKAz}u{(GQur$_Y9heP0DHgGZjVgeioHXeqXbyNse)nq@p`Dzb!7- zLBl3pTJ`e|gZuFy6MMbk%uxe}%D-2>rP@1;LfH$m4tB9M4a#93G}n~K3uG6`(|0ih zO@$TIUI)@EWYdimtPwHqrX}iqr z1E=1seU2kZXnjH;OPWzWtLlU(e8IL*dQp>0`8A6ivr0c-(vRKjIIdiBhPzVcf|MD0 z^TqfLwl4_u$o4)f_h5@5$((gAKQHHVv45B zIWQ-bq~#Umr&-?s3vMlFzHDYZPi)mvp4Ss6O`2LPCSvgsM*sxcmLU=S1#mym| zku8p3g`d6yH2b8+Tw7IY-L0WBYt1$yo^Tf<2PGOAXE+y&;i;vzGL3Z^jNN@qAG7Bn@btP5&5>j-55faq@nS> zdgnq{90Q)gM(TV#-E=PiHFxhgL^vM)J@%Ni*#E%p)hCqX`D+*eJmJ3hAAZh~oBE&Z oy7U<5@7z9LR`7qEIB}LDu=}TDU@`RNZ#2c|j_K`6gC{Tl4Iq~7^8f$< literal 0 HcmV?d00001