From 9c7f903c95d6de814d42880b33e582194af363de Mon Sep 17 00:00:00 2001 From: AlexNly <66305440+AlexNly@users.noreply.github.com> Date: Mon, 2 Feb 2026 02:33:00 +0100 Subject: [PATCH] Prepare repo for public release Rewrite README with visual-first structure, UI screenshots, and Designer v2 features. Remove server_config.json and init.md from tracking. Update .gitignore. Move troubleshooting to docs/. --- .gitignore | 8 + README.md | 313 +++++++++--------------------- docs/screenshots/designer-tab.png | Bin 0 -> 46248 bytes docs/screenshots/mobile-photo.png | Bin 0 -> 2631583 bytes docs/screenshots/photo-tab.png | Bin 0 -> 68419 bytes docs/troubleshooting.md | 60 ++++++ init.md | 1 - server_config.json | 8 - 8 files changed, 162 insertions(+), 228 deletions(-) create mode 100644 docs/screenshots/designer-tab.png create mode 100644 docs/screenshots/mobile-photo.png create mode 100644 docs/screenshots/photo-tab.png create mode 100644 docs/troubleshooting.md delete mode 100644 init.md delete mode 100644 server_config.json diff --git a/.gitignore b/.gitignore index 82622f8..a4f6e2d 100644 --- a/.gitignore +++ b/.gitignore @@ -38,3 +38,11 @@ notebooks/out/ .server.pid *.pid ditherbooth_config.json +server_config.json + +# Environment / secrets +.env + +# Printer command files +*.epl +*.zpl diff --git a/README.md b/README.md index d5f9a46..3fa865e 100644 --- a/README.md +++ b/README.md @@ -7,67 +7,75 @@ [](LICENSE) [](https://fastapi.tiangolo.com/) -Turn photos into crisp 1‑bit dithered prints on a Zebra label printer. +A free, browser-based photo booth and label designer for any EPL/ZPL thermal printer.
-
-
+
+
+
+
Photo flow — upload or capture, preview the dithered output, print
+ +
+
+
Label designer — text, images, shapes, templates, and multi-label queue
+ +
+
+
Works on any device — open it on your phone over the local network
## Features -* Upload or capture images via the web UI -* Convert photos to 1‑bit dithered bitmaps using Pillow -* Encode to EPL2 or ZPL and send raw jobs to CUPS -* Configure media widths and printer language -* Optional test mode to skip actual printing +**Photo booth** +- Upload or capture photos from any device +- Floyd-Steinberg dithering to 1-bit black & white +- Live preview before printing +- Multiple media sizes (continuous rolls and fixed labels) + +**Label designer** +- Fabric.js canvas editor with text, images, and shapes +- Font picker, fill toggle, object layering +- Smart snapping guides (PowerPoint-style) +- Save and load templates +- Multi-label print queue with drag-to-reorder + +**Printer support** +- EPL2 and ZPL encoding +- Prints via CUPS — works on macOS and Linux +- Compatible with any EPL/ZPL thermal printer +- Test mode for development without a printer +- Kiosk mode to lock down the UI ## Quick Start ### Prerequisites -* Python 3.9+ -* [CUPS](https://www.cups.org/) with a printer queue named `Zebra_LP2844` -* Zebra LP2844 or LP2844‑Z printer connected via USB -* `DITHERBOOTH_PRINTER` environment variable (optional) to override the CUPS queue name; defaults to `Zebra_LP2844` - -#### Create a printer queue +- Python 3.9+ +- [CUPS](https://www.cups.org/) with a configured printer queue +- Any EPL2/ZPL thermal printer connected via USB -**macOS:** +### Set up your printer -macOS no longer supports raw CUPS queues. Use the EPL2 driver instead: +**macOS** (no raw queue support — use the EPL2 driver): ```bash -# Find your printer's USB device (note the serial number) -lpinfo -v | grep -i zebra +lpinfo -v | grep -i zebra # Find your printer's USB device -# Create printer with EPL2 driver (update serial number to match yours) sudo lpadmin -p Zebra_LP2844 -E \ -v "usb://Zebra/LP2844?serial=YOUR_SERIAL_NUMBER" \ -m drv:///sample.drv/zebraep2.ppd -# Enable and accept jobs cupsenable Zebra_LP2844 cupsaccept Zebra_LP2844 ``` @@ -78,232 +86,99 @@ cupsaccept Zebra_LP2844 sudo lpadmin -p Zebra_LP2844 -E -v usb://Zebra/LP2844 -m raw ``` -Verify the queue: - -```bash -lpstat -p Zebra_LP2844 -``` - -#### Smoke-test the printer - -Print a simple label to confirm the queue works: - -```bash -echo -e "N\nq400\nQ200,24\nA50,50,0,3,1,1,N,\"Hello\"\nP1" | lpr -P Zebra_LP2844 -``` - -If successful, the printer should print a small label with "Hello" text. - -### Installation +### Install and run ```bash python3 -m venv venv source venv/bin/activate pip install -r requirements.txt -# For development and testing -pip install -r requirements-dev.txt -``` - -### Run the development server - -```bash make dev ``` -Visit [http://localhost:8000](http://localhost:8000) and upload or capture a photo. Choose media width and printer language and press **Print** to send the job to the printer. +Open [http://localhost:8000](http://localhost:8000) and print something. -#### Access on your network - -Run the dev server bound to your LAN IP: +### Access from your phone ```bash -make dev HOST=0.0.0.0 PORT=8000 +make dev HOST=0.0.0.0 ``` -Find your IP: - -* macOS: `ipconfig getifaddr en0` -* Linux: `hostname -I` - -Open `http://
-
-
-
Qud^gA#4&SW$HTq$TOF9Z}3Vmu;jyho2&7l~C>p66Xv);X^cbfH9UpcqXhoK^~ z>V|9^z(}seO}N(1zP_hpPkpA_bM@C{N~FCoIqEB)X>hZxMYxI!XbP?pY6-0&&GwHr4YY}!bizBa{_ zHIf7>nEzcq^~tfRx0sS&b-C~Exhl9H+CEpac5!ieRx#6?NiN#}OB*V?w+xNnwd_{R zxpVst=FomWRdflRE#5se1Zk1o8vQ;vSk=|lWs~I(PPab(EM<%J!XDuuma%Nqu{) zu?&Zzxk)1#hb75hU5xgLR!CJ9W#EZfd5dNfO|Zzl3~YvI6pP#~*6f(1SO)sL^YgaS zfsaMm6{Q|azpTFPuXw3eueAmgb `=Qb$HuQ9T)F#I#UwC=d_+s0BQ;+cO?Ad7)n(pCUkzGJph{rX6s zFfP7kU|=9G&%%lk!l6r@Oh&C0ezApeK!SpTs^vO;w+u2eOhB1(fm`dTDJiz08VfTs z0W+4`tKCj87)&Hl@pLt@K^B|1H>urf0xSi>1gbTY)E9HQ*l8@mkE#rWI-LNM6V0r^ zNtz9lf-h=1El4a3Ad(P9e56K42D00SH(d`Vq;9$jxXlu?+YY58Wxz#av#E6EAa!+7 z1^4a2u_bfgO4T)E2XRM(Qmr*V7XN25Q!jV=1`$ &p#hHH`VAX{$NQDI#s_@&fRL;YgVnVZg>V#*I)GY!ND-Lo3QAs zV6>{4;%Px q?6vo zT;?#Prlyu(SB))Keb?j>sT9hbel8oZ{OUOvtgB|PVX|KLr?QordHnnS$WC$@V}E4F zc!}q=s`&VUk?g?QIYeW!pm{7RkoB>@UU2=^_3Ps+2;ChGEv?}Y@#|q>uIg$UJ#{hB z@|kA`XU&V(t-B3VvYb!e6tCpWMkJT**6loXni MM#f29( zctZZOx!C|ZI#>dc5jy{|Lp(6Ab8lZ>US_%r&eLb6GeGJoQ)kONGWyJJp3zd0dHdA! zz$+H>Qzx-lX%9y@C1DDsFp?*bCYgFN#RTCs=*Lr`0zXZPgAlR16Q$~{g<0OC6P@Zz zqF!g9_V$9TDl#gcml09Oz4iK6_}v4phGNY}uDhL!T_v%*e3b`vjl|OfiVmNIim&EA z`>m|79Bj8hwQzdP`k~`7Kf`0MvoBJop6GmR0(A>D!ypJnoJ^6l6k&+DQ6qKQ5s@uo z=bx_MU5$bf?$OdP?<_h9eWnk{mMHK)a;@;J$jA`Vn0;$v(om9FlIJsDk?8Q(g)IkX zM@M5E7IWn$?pRnLLQLPfx?QKZ(U1>At EUTZZS=jvGF4rmAS*4_Qy-stz1 z(t11gXch%S!5`*l9WI&U;^^~z(Tz9if`UC3W~ui{nIxgm;i_C8wzvSv(sRRtu4 @&3-c7K@~nOoMQCp&!l7r{$ppkgBTTR;M(>(L{*m z?ZJ@}qGG!BVXzk{eLIR`Qm*#A8#&1aXK(i$!DI6OVK%9*7|dSC4X1gp6y?1+zEQc` z3avgo9dtwVq#{+w_VF^`{;m(!Nm*HGuMM>Kk*me%&}WSWz-N7((H!D62$v1CKYDMt z;kWBBT=F~rkDgso5uIRYp=B+YYS$5rNUFH)pda)R{J8p^8ci^GW^V 6eEd@=D6qs)T>)QV6YjW~XZe^+wCHurx zQ@^ue{FH|c>yCIv$k{;T&VD9pfiS!gXcf(xAve`KQW%IclS;No<#2P`s#8X;4+J-t zh45Vr;!kKqvS7BXSCN`Zqge1sa@;-ErTOXQ91)cJ+PW$F*>muR 1l zUelHOmQlgNXApEQ9|IF}?WEO&%p~p{NKzYI @ } z{&W~_L%-kp-I-kd&ex+ #E#Q%pRU?E<2m @ZbQF7eOp+y2JUf-q--AhIk|CV`rN3BQ=O^g93{9yrrK8W{EG3{PaOez(72)Q%f2 zO|$bdC^1UU%5r8ICL6C7XGTuunmTOYi-$0Fq`J~)9vg&l7hvXG CrSX$EE%#YlJWLo2`mt@6Wfqb!AKwb% z;Ld-zR+oEY6UrnZw?CgUSXIR=bC8C>vo8k72-qBSN~Jch4)$8BJa@#^cw{ZDE$YIp z_jnWe+V$>9`>$^mnz3wc!fxx~QpF%^4Xc3`N|JW|10Hk__9iBdu@i)-EOIIq!@V_M zC(8+m0vA8GblP#O9Fa;^Wc%Y8%=ff @3K(L!_&T1{x*tA zi|5iigSk5hF0MKs->YPaLgr=u8>>x`jDv4o+&B04wTImlFTK3I^8Q7qYvjpEychXC zN)BTvT?Nhi*qhf1l0RDKBWQYi?0yR!+IuW5Eod%_a_B|fzI}&Iz>rOHM=>tDTh7Rk z>z2`W<&o}>FIGETz4GGEtoF3!Y+4GNm1NnQ)sqp!(w~MKj<-dT2O@jQFx(%RgEN@R zv7{S#`06`1!J{QsOliu{iUC$yys@#N3VtbYe}TX5cc}UK 8%=RhvT&dS-n2(`B_*QA;U+NL k) zSxj1rR=W50zk +b<{`cm!N3x;5}TmSiearKP~(uqWZ{&QK`zvCv;qa$yn zRxV!S@G$iR8=a5O{~goC2L~%2kz~VT%R3}2+bjHiX#XqJO7!um_p3*ZKOpTCX`D2* zIx60*rFwKRs2^On<8>c=nLCBanVMz*p;$&n_{;a2l8gfsD`dgKT!K3Gm>24p@PEg6 z%wZYAZ&h!b4^V`B{`{Z?#I3BX_rcR+e`kyTXKb(azk4Wnw|>I*qIMEB_RD{pc|!N^ zXwdZjzf9!*?q4 HF_Zb+<{L!bOL{{ORPo*{Rh|6l?C z=iLYwCjp}VEDU`CrHr)nV=3vQV_zR1Ut5c^4=)NBC}@H^>gwu>McCM0m|p8;@pJ*p z ;c}TP-oe80 -Uf(+1i}ba=MfQ7e8tTbOggTr zZ?N=pXi9H2vW{0?6^qlP(I*VAx+WA)BmNrs#j9)*e*=s$Y3EV j0uTFUIV!sV*ftjd_ zukQ>wm4e@d8&ysuG=_TWfDS~v<1z}S40DDFqLj#zJTBR9mtljyRrdZU7dz7ov|+i2 zHd$8N(HCeENypbOSuwuNBBBsW@OpWCu80ZSw+x>Ku=|}m@uDIcHaC0IFwfGr*T&R` z&+9~G9~iZmqi=7GNh;uFTx6xBI8EPV>xzgx5aGhKgH`)Wi&hZeVD{O;@(BCECEnd) zo&vKleQ37<1}`Bey+y7^yLX`PQJfOx6JS*%&H9=#aKG42FbqArCuQHwqW3H*N9OIj z`nz^%x++eF1*r$9W1n D6PP!M@0r(O3V{&*XydsR ILsAU$5q;t|Cj= 5{N)T_6Pm0m0?=d41+v6^Z++=A8$yGJ+n#=Sahc{9#s zbY;Ea_WzVLVE=lg1jv37NwnWeU(SypSs}0awK>i}=FBtA#TE)Zlb!7@Dx0ix3VMna zDVwTCseWN~W&NpqW2Cwc-EEI3RX8PvUNQdBb*|UZWG<3FX?OonDXf@T? Xzi zuj4+}p6wJ^SudXQvz(i7w~z7o{YZ(GbNMr<_DWj7&{ A`p@1+$r^#+mQ|_ z&m3Dr?6+vea~h9v{|u!5z~J>M;psgqrgZ}eT1XB3R-t0mh{0Sp`?3A=E7SE5jmpA& zc(ot++_T{0{Ood!pT@-T7^y;|HSdn#p ZV1( qrFVn1A)HRwGs5Xr5T*$H56P!W{6itukR&xG2>LAniiqoW`;lL@W^ z(|8KLQ5XBRV3|0sJ@B+sFIzjZ7=CJ_F`{w%z+ER;dfsgM*Xv?E_JIZ#=P?7Rj(uEd zGUR^m8F4JWfP%lzs2}QMzK2&V(EG@I?_Yua2Sw`u?zkk`6(tKt$7gjUn2hpn+b#g+ z6fo%NZSU**X~~)7c-Glh{2qr{TC?YPq|E&-{LH6!yI%t$`~=(AayRiH103!D<#NLi zfdF4q(-1aQ;b{Y1fWARf2?Zn+m2_xf=F0*!(`kts%nl5q6=k8jL4S=iUwAiz^s_^w z>?l}x%6Bv&fD{G^O&?VE`n$%0u7dxAdtd$kiFf}m5cBCZTY010pnX`u#e&KC_2A!^ zho+hJkMO^)I;f(DO=>LX;xoy^wZ~T&FJAulvG)H(+pjKa`tNAHlCY|lrY1 a$t*fiM$J?ZIiibey<@AIX z{S+&%@t0MNjOsDbNC3pY>=;HuF`*_-&v8nYxU-W3p#};bsc5O*jQ+fLu;=OVRwt 9q{Sn1DTjI!JZ1y zA`+&HZ~X%UnVA_Ei%wgmrzc7&Pv?@v6Os_kuS}8s?iXQL&@)$$x58fw`F@andieeN z-%DJ$k|+B>5lOQI@JkqAA#Uy{A)x4!+;-=$>l(a2$gcf($TROCC?U_&{YpjjYw{FA zR#} X<)}Fz+MjkhuIv?Zbz!3Ext@1I>lZ zB|%46fyN<=JYhx8V2Y4kx8w&M 8YtJ8w+o-bshb*4?lfz;*8XXswTcy_hmrD z(|x#WZ<3LTHBooZ4MCQCSNlB?E^^WcV+T5=y?ra_wN3wfLE=9&mruc|dcuDQ_Le2< z7$awSp=RTp`!{M6#VSf4 *{5sS5IYkK7XdL2pP1e;H=SZHrBtwdEzAC zC&2i^_U)hE1J7LamrFTd!2Vg5OFX<>XbJ;)tAmHTZ)yuejRRyLRsn!%Jdkl*g7Q3U zQonH{>NBiSh9((_sC2mHZB b{&volSfMcokcviZ=~p$fDG~TX9VooY z_7^vYYD5T!o8DzXzP*!@MKT*hp7Ro+FNYs2I|tS_{fPA!4TJ-W6x2V9*But3Tc4dx zNJ}ClPVRlbdgJG|ew?qmrN(9QY13rK2Sq(r*5l{jz*8c8ylhbT2bVgZq&-^7vGJ|2 z_ApxGd+vvgPDgx *y;c|H2CEfGa{ar(y;qlgaDQF$yCh=4JAqb%}ezA9Dw BK`F z(t3=<)KnC2ll-84eDn_q$;&TD+Q{4eF;_^w0|Ag){MCr0)9tlmNprt)&(auKZf{~^ zG?S#G3xFO bLo)kGjBrYr{a#RW5DG+6Q*>m27WK)`ehN+*Rkj($OAY2=i}T z8!lRy+bE4}xa~P)+w~2A^q#4@p8e$H<}L&f2j0o=^9h4|2JC#0Yr8I911-OPbC(e< zTAh$JJNvv*eAk&MLPTwPhsq#|Q+hipM>V^#fuUx;4O0`X1L!Ff;Z=`tBA-Eq*j9C6 zmfs#a*UQrpw+L__viohMl1OJ~mNqvjw?% xaGr@gI>)E zSF%?i>VxU&4iT5bwy-@6)OWW0^|-iziRsPpPW4VtWOvG$jxhOjW$u!dml_#<9Y@?Z z! TiASeCK1-Zw#>c)>jW2xh z;zgk3j%Yp Rwy7qIj?m`FQsZ6UGl08?}*!Le&*BZT{?p9v&TcrJR-X z3Z^3+&n@PLN6dYmCbH@Dz0K}D-1?ahAIHYnCuaM*f5&9^ZpG(1NID`+MQeTLd^`5# z50@*2Fj 5KCH7S}hcL6dW8J^cn`i{OBwlE9xSh=3`2x!E|B2fHD&QnOQ3@Nu JtHrKWA)m3gjL80Ewo;PUN5uNB`& zN^78u&C{c4rP6VnK2lZrC~`yzKZU~RH+zayyiplgfDhAJ9#s$zTRu?32OZzK70Ota z^`bL4*$*}p?gA9%6)lD-v>RxFu{;0Q_*_)3tJkk@!g>nXMd1;Bwi)6!Gd}{5)OBz| znn$3@lc5&n7p?9qQp*L4nGREf`n>atD?5|?KF7{eU!suvn4=__G~@;wpA0~eUhtXm z!^n<~0J$AME9r2N*MH=q_2C1>u#o^tWB0nHChqy)ZHE|7LVV=p7t`M2YNIxOtS_bh zkz>mnx3iNMs&iOrFN$lM2#BcV;9N5<&?X}qw6F8$`t>kGlwYA?x-)X0v1+ `Y=SE`H~^ z5rJk!;UgoWizbbXv2LFyGq*NOAoLe_B=6N!XaKrkBi>o8$Mmo>N$5B!N{Ug1N+p$Oc$1>*jmC(^Dhe_1H!f9d`{{~~R z%7X_Floifb<-Bl51h|NGhWwrJD!V)Y-j#6b*EX7^VwEb0$q$G(4lp}&$f9mMZt=^k zr>>Gk`6ssHa&laylv(6mP0*2R68O OJ@z@e)e$-7y$&aztHlQzj|6f7bOl-+Q!OQF7rRoKfzn)}R|sy1vmJ4@~V zE;RG@Ie8bX%)+>}{-=o)&*Zzbub^3O(=@qak>&S{COI-4seb7Mk2>}u_(t3%N1wkg zmpH3So>Ea$J9Fq z zj=UW@enY_V;+-762(cb*4;&br)&~%9 PwX{%6?>GuT4EEQ|pwTG@d7OHqP#J2@we^dy{{^9SnGY*jS+`n8n(@X|Jr* zZ1X`2(|{-o)83Z^ay>oW=zDT(Lv!+8yWWSnesugMB3q|Cyld;TQ>1uR4VARb#nIKK zre5^sc=6C0`0Wv%`0>uvsqLRXGjSBv!Xo#*tO`A+6tY7fqzf-Cbx$04*yEnbzgg-r zKXVzMoG =wPxGe;JFPs*%^iQ4qEAEs6= zflk-cpOO-_viDy%r?0l_OM7pA>yXBu#@m^Dt^dKV=&%PIZY|lF_pFcRIyKf;r;9u7 z9$HWr#m%(f^tqK=ixY!~9Y<^M(adkR3T*Gb>_NO3IHsa15GiShUNIEVza2(k@<&bL zSw`8#1vDKFNB2kGeN-PFE`n@iJw>X9XUT35zs}! av;Il~oB z=ktuxe=jeY#Rf)8&6Ni@PN0du&l|1Ksy_Nm*+tuUONZr{OVEb2)~%yLt&adTT=$wi zYem8PFowt)xKw%$DLTn!q2y|i`90FQG#O@^+>2)tK0&{Q!tQ^>0rx6O*mT$}Y8 zkhOl=DJvOamB+%mxHbp#0}aFuf#l^)tP@HFJgmp252zY<{$we;t;`CK8sHU#8xd zm!H|}o2!Ubj`n^0@ZoodC8|a!3Sz7kkY4V+yD_i^@8$OM@l{!`b8AzKG zE_Z%cnLq+aw-hbGy4nd4>_7IoKO zO1OMWmqHBp^Jm_?Vzt+~aQh2V{IaV<;jpg4=ScO(-iHYir`-Zflnj6J43M6|#~$&Y z@7_t*&h>xNOeVgNORKpm`OR3-uy+k1t1uf&-imRSZZ{7 ^b&-buKesnlO{!X<)~0&P>d>d$K^fIrZzU>j5xyvf!svnOk#ajOWMnK5jVgjTd&$ zip>$8d#g>`1-RinI4?uVc8&b$p&TIXAli)`Cr_muZ>MLMnN;#@q;-x;KurjX`jPXV z(z|gHl{ _Z~YOcz;gR%vgjn4>2GhwRj 9e<3zfgNebPOcgapUQIS%iM;OOc_EUaOZN9 zm-g76Q0PAAl9KXi?U7qi8W7KzCpwL=3|v3&jbdRlU%}S9PaaP6*L!H3y9S=St(hJ~ zc^|hcXWf%BxfImnLiI>3)X+_%DerZJpi~Qg!ed{qU6Z_!J#1yYtcQn3qA59`o0*9_ zani;_Nmxxt2%L@9?$v{C`QqPm)C2k~Jron52JvK|prcDB5*Rq%;-e-|#51=?PQnr4 zQHE8&2Aw>rrAxcm1CKmlOIjNo-^Ck>$|RKD*Gt4KS(iWYEUYp!##UJO^=v0HR4cQy z=dlKyNR3_Y&-qiNXq@Pwl 6t1qgNP+C(u?5c}!GD_=tRAR`Eszi>9Yr;03zi2%sj;*r( z)ZEjAiA%}IsGF@07Bx!fj>Fzq%vH~{L^9bj^S2xGRG%t_Y9vne<*|%4dYvx~VB}nu z+iFUNS&RHTFqau@C!~qlU8bbO4$VYaeIH}e6WElm)%-_wg9BFSt)(P6z5p!82HkC2 zM5gNjPFd1vf;hWO4uH&&EuY)Iy{uc1jXGVgQ}3V8y|KO-Yk`Okgw7n86Hk%m`8#xi zayvgAsO27k?GJD1=v*92*n`N?+JL(LR6r>K+xczj(QH3L<#WDaQ2qL79NK?8OhBIt z+XTh{%C(c-n+S)~=k~an{%5@1{@Z(HdkvgMVh$ygZK0ZJnsh>^3yH~D5?+baB+^f> z(&zukZEod&b*FBvgasQ{P3VDSPr6Hd-fmsrTN{p5wt8Y^`c6^iAEed> D*H$MB76Lp-;?z9C&RC^AM|#=dAEQ^06|B9z0vqPQ>LDKW4Rkp)dDBnZ~~v_ zMh_n3-C2XFdUqmWA^a&SDs>aDtQ^H6+4$KWlK&00UMQ96Y ZFuUpz#+VX z4poxd9<4O4!IzjLdNyAJn~}Fpo#~slu*w rSB!}mvHsO z4w}FWNyT9;kvQ6T+U{(_@@Lw)v=25OA5gD2p;gm{L@>j2^(|w-A@I-iYz9m<{Y~v{ z$DRX~+i4OpmA15Z>1|ocjPljen!rmLA|A& E32Wg8y1NZ6L$M&Dsc@H ?^*znuZR7R|4A%4NIm_z zumpYL>+NduYPI~zrJnTGHsl{g_N fb y3T^VkX{shR$q7kY3Ie8MMR`T{ zkETMiJD?{3$`R}Nw$8XvpR)ajs{td%pzO@aqlv1Cd6ck^Ibc1rZ!zIP3cjo=IiH?+ z{dz_z@9q3@GH2iE$sE#)YFWUK-l#a?H2RdB%KTu`$RSmVNbcjQYO*M>324Tgu;?{F zomIgK=nZGPjlJ+hV$9tuRTp8@3$BI7AnNEKKo8UQO_Iz1p#=xEy6RKLt1Te04K2-6 z{}vz!v%Rxa#{enc+}g@IZ=UtJNxS5~kjQ&QN=kY`G6Gy`B?&vWVHGsp#R9QC{XIus z4{K{nb7uPkg{`wuVZ9k-ng4ftaP;TTzN=x%=Dx41CIP2M4@UcEjab$&k8PPYyh>Uh zAtN`4O|eYmTMhw>dL#vGgZIze{hz(@f2P~L3MrGx%cXC|EFLHzZ3U=wvE#_|Cv!@a z^Z0}!b1GKPXfPdj H@gM2YXYXg7bfFo7CYp#xlR4>grYa6ah{%glaV(i*H=3Irex4e!W{; zy>qiSYIUM8d2)Qp(Vh-fY9ncQbK?)S8(}wuBYYtBKUhFXu&W-WRq44C-1wXbgyZJ! z8;7H#hnmKoZJJz%xLU6ThyAFD`gGPI`TlL@husXVpscLj*cD%BQIQ?ebK@ate1U%e z=lUuDdvFDcG%8UJ^s%zA;J4w@P94wf)CAjZ>5^zC0c)zieX8^qh8RlK!63>w2p=d& zEQ)^9{z0LKXy4uoUz6Mr1Ei%QX5nBhEv<;a6b2e*ED-Pdg+{Ip=jVC)6RNAill0B& z*Lvg;=Y%?8gvPa^5hXSBo!00?da2WNsfy;UJsZ~g+FJkJsq}ucv+;C7`>$ZKsVzKt zwwC|-9V gqnG+mb1ZMx5_94(`xf6t=rl6=@o4OT|R1y=pzUVA% zDc#%sE&QYZGdzQ|?S95pA 0@QNDIcUD)BUhC8S^vF?kakoAxTk6$|*Z-maG z3bM*{`zvJpv&6lc3c4pObqE^A^ZRDVV{bodmO)Tz@k7=uS(p+KsQucB+kuqFyH|NP zA>)!u;sO$jxYjutynB8^Q2VM^PuIE4&+gN_+PT%|Qw;8NcgNS`yiBe~fPXvm&)WeL zcM;)(??MSfrt%X*aB}ko7hr^oU8!ys=9xJfruO-&GCGCE 0Y zW*fy`obcwQI?4uOtoT|$AhA0+e{Vqc9UQ)<96x1pI8gDUII@11-u+yzV9t3Snde(w ztk8AjIz_F%DuF*-O(%d-#n5KMVPk1c!N*g>m1}K%7TwGbF9)$a=HOcnjM_vU*IPgC8SH&Bdbz=2VA_TuZaH3Gr-+vUvpjm=LgMa?E&9iz40b`C;qKLtt( zs%wG<^E2-;yP0+hW4d+43=m3fEn?a9{4yHm0irgeu;AeL8lhk10fk`g;bHcojk$N; zbb4Rcw*L0P9&g*TuN2!WOQP1@M^9I)TqPfUpZwO!$|yC reBPPhpdyGoWw$mdU zvET3eiVUG*c=)>+VbhgJ!VftW7Lt`Z+n_Gg@+q{cEXb@saF{4qh{9-)H+m6 hEGN2i6$>B4FTIGo``+r7o0@y}^ic8{+IkOIIgkuw~ zg6$x+ekoP>bgt5-7w77LOH^MH@0HfnDXxa$m$!g$g?Hdqk9nC{WdK%4p*{T};S*c8 z%aK}2L*1R0M%nvtRE~MTsnaZx)gg2Qh-_wX!%)Yuik10;R`p$9=dQJhn)Ik%f}b*C zq($DK)M!W?bGo%WR{-y0IrEEX>{%7M+zEAf={;C=j}B4%4;Wvkb3jIR2!OaJ_yohb z^8@dN@P%v!;%ob;tn#nbYn{<%?Oovh&GJ*ksqXhgVHk96uy90RL=Y1MUCw4gPAT{g zzQYERS(<*(Ph&B=M=aQnF1Ok#(BlGq(}NfAa`HR6IKZIBnf{mTaYuDVvZdR`+HXb} zty26~dCABg{usaZ<9pZ}svn#t!dG6QmKD5f`)m_ hq8mZ`M%e8j1O6klR%Y65ijy czB``d0I*({` %RwI zA+fsC_yph}leP9m!Kq1rRB-__@-0+A`=2CaT+L3YHVN?enaHmC^|P9KRNeAwx|)2W z^N~5TX(( k~FtMdS{4*QnS3V<9`Q`R@jW3{^^z-51;DUSCX+P!1n+iAD6}jUnI<}%z0$qe7**dw)g*XsxD7%u4^!k zi;9Xa98^Ec$>ue-%x{=9Z7f4B8HFI9JiY6}S5%S- ;wCwF=K*!CkT(?pP8b4`^ zLiMG*?rKv}6>noHHV9M2Fiur`;c17$8|XpQ$duZzRbq;+_C`ud1-z&Cn3+vXGq5J6 z^Xj!h!XO3Q#MSc) NwqKc*_07A_W07$&nOaUuG6Hgqj_dxoYdcXWV0yz!dpDD4^ozWWb35<{`;q=H zNcHdf3OBrY6?C}-;ONsII+ExwHd-qBrZs8%9>nGUvKqhR>LK_u%V7+lso%2yCG|y) zE=YZ~YnLB6eo)NO(QQLG24yGr3)cWrctL+C>60SG|C6-K1Q-KDYWbF`9hqVpn`sDy zXMTBkdUY1K)y)#tR;H(Oa{MF@i_o#4!ARNa#w;X#!VIKR2If4$WVm)}Ggz?!2onbc zBy`4Nvy+P AL^4zy z0NI}ZcfRJIa;9@I-O(M7V2~4HNr24CduUxNd!okHA=6&lyiC_^7#>Hv&&)iiC^x7F zORUs;YID7j-c0z>lS{)&fLtSCiljuGrcllJt#tP$XGGP -F a?5&x8Qtj2ol0f>7Jk$;uM?WiN3N zeWOciTFkZU)%R#hoAT*LXZ1{ffD(qX$IW_;DLOWb$1>%SPM1cGM@%`TPs8WvG=(aH zF42F#b@@?@z<&uJa-X|)&CZrgVof+5RO$Ek_NyK>{`&qcUVZg09m&M}D z$(Ekjo|N}MtoAPH1gscA46EqVn^^OSc*TXMJ&{%YtQB>K)w63h f|2?3Z0n}E!fJmZKD?#Z(C2@rO zs4mMl0fm=j!cgh`#+|VX|1VwA`hNbD_bLqyf<$IEolcufvHlLTeDbpjzWd!LH$1-} zlh`{c1p%=V_*Eh6BXJtH-+BEiQ{rVqj>^6cQeT>`k_3qa#e+ylUgQEr8BG9n7b$So z%1A(Q26bInsGf?h_%PYXiqazWMkdU!cR#+H%BF-2I1Z0b`6?yA;y!C4~k<-*a zZbQZT9&T>kQt|=<0=p+4)7XYC uoa+p3ju?7MhCq`tSmwS}(k6oC19Aq?~Cd1-~quLF4NHln#tm;hI{ zwl1c@I6F>#H3LYwI+l7@@ohqID->1T$Q#G^+CWZL_QW4{Ms!at?8zwAEsERkCI23t z->ENTiZ)`}-*iFHnk?j! 8 zG#%0S5~bf(9o^B}`bh`i7OmX@K4szF`9NGE5EcdOE!en50ZJ*UfLZs-0!m0z8#N9{ zDm H{vN dZCU>9S}9hc{QatcZmngEp7m$Zq@e_fIY9lyAY>f Nf0z6l)L*N)6 zM55;PKw0@*VI=eU$_HvR!``f4 %Bl=vt0kGi`4iP?vqXvq`w zQ4bq+wKJ|#XU8~;{ f^thKVFW!C#_*8AP|lAHp& zvxs@TW`M%O7#U#U0whR5_yBE?+mev;=$FnKW|TnJ14=V;D&}rNUvOxYC;qL?voD!` z@&lHZmJLVyma2z1SoT4PIHTx%U)#53leq;yrS}eHvFzCaK20D6_ `hxi3H$|r{UM<4`=8xIA(ku>+nPGUJ0oUvP8 zNUhRtb|Ley$ANu=$^m_z*bvG_3zc(xmPD;|XCFKFJfUICJdJp^)y{jH<+1nIw{v8O zXqXw(%F042?sknMR(J**Jr!tUf|2nRFt1)r9N|`TfVEON0jXWWdzH`v5b?WuG8L}t z AjC8V|p5DT3cKD9X^gOVE3-JLbHHPbkjhAhP$h4oN&b` zz`PP9mvb8@M$~A;1m&A1I`!;DbYGX<((T@!A-&42`3xR7F^*CWttn+h)u8~?BcN%v zI=-+Qw((opRdZ!+Zf{FQ$lLqnl22k$@bV#dwvW#!saN39Sg5dYxe!KVCRaIos{Cjq zzOd)BzkL^g+?*|M67!{Ajpl&>zm^BhHoGy*#fj4C{fq_V91{p5*}Y%Q#ooVLxqr2c zv5_VSnd7lYv%V0EH*+EKk96bG_YoRaLn@$bIRp9cCS~l8yUNTWKZQla2ln;!0AzjM zN7bWHq4W9bJXcq(obZw14V0iMdb *|v-T5j!_K(GR9$V&YyATiV?|24zU! zG0ESqj)+5~)z*Ia5d=PpNs0dX7`B*!KzL;tTTgzVmUJ2`-{_^;-r(?32C{ll1iHw8 zvmvs*)k&!wB>!{taMgo4v0GeRoaq=g1a^AcbZKR#%&9RU0i4&jyw}@n<^SyG$D7Id zB*rJ?A?~ZA!zblFaw5gn!8PiD-0r7nG&ctqkh+sW*?6DRi=2F5Mzl_zWIGKwC%eh7 zsoW|49Jq4CT}|-OEHj)(=_D0Vs!xPRR7Obn^>n{ YIl?Ec=~(3trKMByZtDhsm2u0eg|{qQL9Q@9@RA2#eLs|i)%Abq@Gv6}^FdTTS} z$fs!ZcAwc56LOkYqpABI7|-VY4EB+;a`q+D>#Vr*+T)KS@&Wk7XzLzRYx&WaWau;J z6+IzMU+eYIHP@~OG}8z2sil;JGvYEI6vkDJNXDJGpJvMpMM}9Wt5g<5N@M%W^h?v2 z$8rAZt)An(qyHCs?*Y_gx9*REh=n4b1rQKW0g)~sAktK%_uh+0uhM%_L CDOy&Q%1Od!>n^XEH2FKZF6OE^7MZ1(~nh7j>X z4h91R&0Qs0YA-_?s_WMe*N9>KHp9i@NYU5_{>fNNOpN@foExoEL^PbYF|Du&vxsiG zMl~{!>L(FIgr@8}*Da{z5w_`X0gxewiJW7FKB0lsQ}H*LcuGz~O`Wf`K5sHLF%E^3 zS--l5Eh?!JVESw~-y4t))cR1d2tB G#pvw;^*xDL>t7f1c)336;1sr&qgC*u zsE?z;3?=s>tnQVS)g_sxX?O+ISgs9P7Tt4rJTnEHMTQTzhlXMLe7^JTpN>t@$qK(_ z((IpJWZ=UTlQoVvvK?<$8XQM_g6>qF6neUM7j@>{*6`431zK|FEhW^uOtp=ObOnh) z<|5H-uT(7zt4v&tjcXUvacmg=Hr0Cet3P&wCFID96r4H 93cN z^*=fFG4k2FdZ^{LS-QLw2+V%)2)tH7YFO;+_00CpYRmqRY=|`gyddmH49_IA3Ws%N zb7EMJuTeiB 5Z?I~bq%8nJ1|Ql>2XKWIQZv g!V_#tk>Yl!NrV1(5m@PCi2WmTh7h?0+|J9m@o!cQK`hk{4 z{U@pw)vTvZhQ2Ybj|0jxSvLy(d?bp~^8Eabe0M8!_e<)k3zK&~QbS#}CsVm|f+-qu z&Qh~-!c}R+9?{-C?Zrc6eOOirX$~_~d6o~b@27l4M!c*K*5{LmCkzfTQ)fs&Dywwk zJu G46 zKiyqpg0Nl^_1LFH1hSnTU>#I1stFk5z(6Mz4d}fTp*`y#RmUI;UO{=Xe ;aoJOP#m)XsaVQGE$SW6oR+hS^R``8%?7QS +hn_XrS37embS{Wxl0EQ^S?`O1z++vmW5A~FV*^JDA#wUtA zm>@Opbh=&X?_v&`pt)W2eBMCJ2$ibjxU!?;x$g|oq#l7W`0uYx!=@oskm4pTF?SO! z%)~v_ITe95{ZZ~)cDnrCf@N-fvs 1mnEo-I0eR^T-Cp#o*{?@R) z&C+2H%BOmyZTzsYxjKP(6Jn)4hbT6X8-k72Gr?oR5{iqoa;rvy6w|I2YgJd(dOg5A zPv8n-(N1|xEgSu2Wxm>GG>;RiXBDViH&UO!jO9X=sLsS$3OIcyNa$ZP0LU$kLjU8R zs~b*=f^%ssH>d?*Ms5pB5gCEUDD3P*DX9*z(d0(!e!5APR~r*ovs#Km!-SC_grKk4 z=VWmtTk@Vn@-`vc2a@5+@3yv~=Fq1V98aFW$JoSVV&IG%P{Fd-TV%Y~Xhq{~tU$G= zq1XZmD)jMG`=`E308hQMj=-FBO@q9n{{Cb;S*}l#Gme<0b6*c@(@$X!vfdjs)t0R> ztKC7QmsyI(F!{5M=&;o}PwskSo!$$_r2KW$$$@>5I3%aT#|epssi ztxkiO9^~fI=>vk->F;wHhSu?*>qu$L+RuCyI?7E=lleO<%RA%TN!J+Ex-*5`F_5OF zA|04~)AfvPw&8MbN{#yZsgbefl~yT)h0bL$njwvsQ%z(B;VS-T&WbSch;;@K5ZLVH zb$SeUGOsJcl?uKWjWXslI~?fYX9Fg!JxbN$vaCSYCJV~9)$5NX-u2U#^*DC1 8M(Kgd4$ z`B;KVbh^hpr<7DMt^)HV28ua7CiC?4Y!ukq%~zYbN^+&fee9+x@+qiGT5%Ly9yl^z zDSQnT@?JQ(Iq)eu?QG9ZPfU1irW%#DeUj*y&ypWI HrMb4Y z_NDAvP>fg5VeN&JQ-(6u*28FK>fM7k`L~+{98;%6yg9uas0HjFy*}z_4W7m>OKo)8 z#6DOQ }nZ$0BDXy-{C#}sw`;62wV$5+*v{8NA9^EQIk_Fek}m$ zudXvO<|g{pO`i* Nqb%^WV=FsG z;KQ^SBl4cl*49;g{8~7tv!i45)4-}lMoG~l ueo)8fGicNblCdd>W(OI% Rtw=okG1KBjM;(;P`g*Mr%QhAZvFO@(oV{wlnVKcZVYGIGZ~rfFxkHl^SIi}i zPZWS7B1orJM#5`6ln-F?%-7A=mYM0htVu}wu>^N9SGKL0W_sep*!7>fYz73}X;5Df zl!H#f W F_rlM&lY+#szyk6%%+|NnI5eh7?C3p}zgCxiBWP6UJ -X z&kMX|<(z2#3J~&L+~#v25d{_XULP$PM;$8Apt49);l@W^$OvwgoQ(N0xQ!g-R~k0z`81Oh6}Ng3W(_BUg(qToL!+K35%+$*(w8xtp+=)J64S!3 z{mQ3ihDW@s9%qyo9v>%KK(C0n`}I_%H5H9NvYe$Y7|W&}38iIaL8u=Xz@-eje!QJH z<2~$my|>z%wOJ&3pZ1nAD`-NwFa7iMtOMb1KR*50K0Gh626$IYC(gpox|-}osw|xY z9db!d?<&;1kB<*uN~BmPathvPt4v@N@mbp$Std69`C-@Q5`^rDTiMd-Q)^buD?DU2 z%tw+E9nu9|<9ZsCMeJFw7p&w3tYPQfh{A=ds;a6?PrCd9v(WHMdw|Zy;YL8AMqy0( zKw@W}CB|JqNi9ba%Cp;}%O^fjZ6gAZ a2X zWrf#@AM+c6h7b)W^?d!U4o}`osN;_>jcVDJ-G7`U38F68EKk(7x;y*(tb_!cU6$ZC zp6$!AtC@@JTfi%_t4m!$7GuW~%1tSyCb+WDKW8&uSG)D?m+4_9s#J9@vx)9)Hcbcm zC%HZ|F7&_FQ1z7KC!nZ!aGqmoyjD)eGAt2tALVn-hAQ%x?cPy(5ZOQ}UdO$7L{VE# zFVpm^z3F^ +%PSD$bDYK^(A`v4u0wmj$WT ;l?@!vYI(93r;D-9} z|H3Ypw@1 +4GOoE+A zWw!H=S;zS)4en%dk~1I#l4|>2VK;38+5slAA@i#(KCa*763PcG^K{#Gjv ppu6#T5Dyx~KfGfon6WcZ+o^%UC7Lv{Y(U+l1+d8W}l!@Yb6wloQee8`BRPMka+& zL;W~m?S!2J(!g^7{3;t4a S8?YCH9cZwA`(@; RfFc`U+GMN123w?j#KgdvB=gv>D1Y0gt2H@zg1VqF9el zEvJON%s(vR%vnSngVrD}(G^*JIZ8JTuit60tOcxR!>z5u11KrTr83G&k7o99zN^ v&Q|oT);DU=rJL% zVE;OTPE2qYOI7O?ov)QU+CksA+tTw(?Bt;5HM1hEsMASbHFM8))2Vf6ZF9@Yivo>! zvhy;dvtB`` NX$!xJP|npX5!{x%SY;2+Ky|FpQ_NX=JS2p=r&| z#=Y8hno5;J8(;GaVv65>hEq_1H8kc%N5gjg3EL_t(hIYmuV?YFoVPn{_#2gcSsH9U zwdhSg2Q4Vs3eF%8MMr!1r9#D;GzjO>1|%$AEYOzLj(LNCDGdPpvt{)h*$l@of8DyW z0nGIIM1zubmFmk=(+Poz9RN#=B4J0#fz}X%+M{ZOC#~Yz>M!TD1D2%1eY@)J>8l%x zpb;~4`9*h+=6+43b4f_9qMshMDlUQ#av5(K2=~kcEl@)*kEfP8=2fg(kIeeK4p)S{ z*5>1s%8$7^9RlSTGV3RLv|2`sQI?#1WNYql#(9`|FT{?G;h2n$j>0@>_*oHK6Ino9 zvspHdyR?Je^Dgr3i^IO5^9Vy6W~+9dIY%znt&C; |CqCQJ$H$9zxONT48K8U)o|5KG+vt<{;u(*n&ipP1F*euf zZb *{158CG~4=Bmvs`|3pkIHahU z`BWKnVTyOBe;MVo4=_R>rV#$8AHq}k9sJLdqRZY`F*hEcb<9hB)myx_;rB?xkJ5YI zIj8VeU7;3PqsLsC`ao8{@E+nS4-X#`{PiNC7$@!Eeihz%0B~pS!3t~^BY;`H(TPT! zZJ;e08ib|9j%A+(7;PC*WOp*|a2jqF$Cj6e55c;v3ykWG7xXrKcG|Sc%@S11Xt5`A z@LzNwTq cNewMW~ fSavrcUK zoG+Mp5B(H$-Xq&Kh{I}=cxnKjKcV2)o|qQs8 xQ@UK|5T;ZMz>G;s4mFJU$u5LzouKEN1$tuHGJ=0Yg z%ucV4+6KA%^!VaP(jb6TMy0U({5<%oOZ@t)W9O>&ZOmgfso=E@A7T*r29wer9|^gm z5Msz1+bP+4qbjQ+bt%;7$!Xhy6*5}k&tns6PTg3Nb^T!IVyYxfqgzR~o<^=@_pm~x z!{-3i=6iy*OSvyE99|9kbS+=^v$#e_1oVN>6v43zWUdS9>;GWqXYNK5qnNOiQtIhJ z*derj|4T4j&qNgvp`7HUeSGLn?`iyOSTd(P#l+;M=;;cegH%vx1E|8Y{pMdl5E=^4 zi$MXQ&Z#eFK hlV$SWKJ{GX^8J^NH>g>b_xsx?6 zMmvJ8V5jfmxRjIkI+;{Naz8QkR%amS68@BuQg~}h^lXQX1yfKIQ8Ys>P-T}gl?#zQ zJ@n@iVW>m_IGaMZ&0>GjQJ +as3t72r8ap1Tto6`N!hC*Qk}hNaev z@s&fNU)@gW2ZZ+v)+BqRcE)q*{by&I3wBC3J=y4jj?_E8w~O#>A2Jb}7hEVWJ-HxS z`F>{dcv`C@wdwmKmK}~np$5O{31r%8JG43gP}p(MYjZXc90Q;R@b#VC#yHR0&3KQF z53SGJVQI5 B
qXaYx%cahmGU4qv6hOO_B ikzQ8Ki>Fh7z_Q90?u?18w86er*-S<@;_Z*saMDP+g3H3XGxAZtL z!zAb#z|3eoD!a)*h3J^<*)FGC0bCf8lI@VvP0)-wmc8W2aOGP8-h5%cc=cIKqnoWh zVl&5!Fe&>WR{kqXYoWRO(Nq-^FCHa6{%yDK_XZ#GrKY9Tr(v%+(4F^1A-8wlXlbIC zm!nso3M4z>2OT8$m#68edNm7qcEhsuCuU&^P4^#_KDjm~e)X1m %M3;t4`be?1njV}+Yy*7Txw_IG7v5Gn$pWo2iL zZtLRxIZ*2!=)*~ozlS~P_1G9R?dWSX+-gvdllj|C{lu{ra`gx$TnhYwK&0c3H8 >luNEY Lyd93{=qNk8ihfJqREGDEc7v*)S@Ufu`CUS0M&va%f|mR5h}0+O4f z49$;XW67ftGBOIW8rc1 x)TTH!!&VjDNVgN_!Zg@6|2;bz?X z50`lLd e-N{ 0JF*N)9v=KrsQTqWj=mB%kzN;#bjxJ;(7Y z>BUY`+&57wie86=-JAfWS z&VE$}#~7Lh!wio%RE)Q7HjaRI@Wv?rtFtTq51-cmH+)*SUBdetr)r?Oif+({4+URL z3>VA{7dSYufDerA%Z1 gMd1pkkm ztWt!Zcf#bAqqlJK9zb}}_%nOd4$br5*jx6WfBYtY{d?{-+#HAha1_d0RjamjVM)3s z96=f0d@vqKoam`8nvUUz0IwPX_T|st;{N~J1N=q!t4ceUq6(fP)7T$BR&S yw76b@UZ=EGysUAbbHed#TMsi3odVLj(Hlv9o07273@qWmWK;l zaQ~Gd9-c8Ju+HG$zjWij=cN2AV*XDb{a?JoY*ebPazN#8B~4nlZkmyiK{WbD{5 WVsEK>XL^PZSMr$QS=p&N-)2v4t$GCTk_)poqLmp6Xx)6n3A1}Ay z4eQp$f(aUj+)A1^44oJFxb$$V+ZIOjD5@H;NW7GkG)FmFHrOCJ?KS~z&<`-p<@s}s zLQRdT==5|tIy%3tpKYlOXiu{&lA79D7Q{=C=zITuaBy&beqNY 85#4 z9NnI$vO$RguN7;h%u}r$wXY%#<=Y~+PPl&9_{@2 z5H6WnSO@?$28#nwn63Di1shmHl{KOO_pNEEsix1;Ps5-Cg(mJhOF!W2b!<#bOaoE? z{3&{V;*8boW@2Tvp8fXrrukZ*^E-Wp%3?c1qwtHfN@Axj-vaP|TOC$_kgm3ytde0G z_1RxR6bjNCz}=sIDdzYQg$ 2YQMoCnk>7Ixp6_ zuCjuKjsr7&mL@8-K0}Q24GKEO#|142YhHTVn63&d<#5bx*FR8`fosN^ZEbC}ejpt# z7)Lt2d9yTGy-{Y?a|?W4mJ#ggt+;068kc2NKLhQagTX;%u$TccfOz`W<;)+6z*nNB z#cXVB%+1ZMtP~Wz>>ddT2~qXl+1qn-VgDY~$HT)j&y<~$(_Ig^(sk105=3JJ&B#q9 zOrP-=6-i|914W4Ef@>$KYjzqB?@d3izc+EtZj`4v^ve}0!oh+0*%p?om{tc;QS$P= zhuB4i`}e`d0*Xd9je_}Kztn1-&=Zw5mk9}FF7^q&_VB2=Xih8_-|0Tz84cRG(nWoB z(|>+@OAwPsBVe!p)uavV0J2bPW8!gPgRV|deGCx8P6JO3)m{=}VrMtE_yk5S$rev( zY3aUXK7tDuO49aGVK2}O{QP?pc3;A~TxD{ ^?#qitaV{cN_W&i^KiZ^7F4y7$ZGrPx*?*wgoZjJISMHyX_7NFK*nV1s!m2b zQw--Lv+YC&di7QoA^s2`GunVQ -{Xe$wrW^7hD>i#5K-dq_iXg`d!uj&}1g zOmg!YG9S}`v`o9BXm8)POg9|Wis!oOhF$0@H}9LMam@TaE1bZ-{8bBPNG81b3`io= zvw}O5tcw@0DFR4-?g1M}fvq$}NTc`OT9TOmSvQ1@%c#-T@HEwwV8#dA#~}Hs1|6>l zo(|M21k8rAWSkdzYu&u8M8`^BwJHcqGZNq7HJ4BK)$bA-s&+t8aOieAZTp9_a&p>Z zCMt)L2eai8PD(;knQ45}ld4I2iSh7?K% I_6*UM=rHE(O z7?lX4;4rK|h?b%|M4g{86Iz>*qPronm9cBqbPUhAxw(I|u&XAF-l#dW2YZ+G9{y&o z#qn2r*J{NhnCXau&QrIwgDz&Mw6$yZ{X_nN)!RMNI%v&eU6~L+RHN^qt6vou1>@;v z7JVy<-v7kWYC1~QIpZ&EocPQ=_@i-gaXUR+O(ax2-<^*7WMVdx`E2NXcT{?`#`|P= zs)7g{nbu`jddAhh-U@~K?&)-m#Sc65Gxa8Ni}So`Mz-*9adEMP7 PhNp;Qlew)pgu_@aFV&`#9F;N^YryO$1gqdkc zIP0$50w$joMo)PhY`$W_lO@p%VnlaW&v^B0hjb7!_fU!X)$_Agj+*tvgIbL&`4FI^ zF!EZ?7M9CtQ~CnrV-n@@E4;=2epdw$n1B<=9KYSfJf%std3t<27_H+!Uwwz=E~PMz zBKET>2=X);g2u^251w7fWsM0Urj*Us)ai<#6{>iPT^#T~TFxzy_B%UVoQAs>-nh%d zvyDzL;+%jaiHnPiogKV}xKcZZQ}b=7K6vmza-~<5yWim+Ih$sMkM0wkz7oCg$e0hP zqSeu2H3>*!q6b6y;{9EDh(_E@lfVCU)* %7}VrQmR#_7GkUa5SxySbSt z;$0O~$R>9LdBet}Pn?S{S3B8~ou2NyH{Kk08Q7x9ZK0*LHT@>PQy@|rdCJeh9ejR& z54U#Lds?UpfaRik^2QiwC=T|ywej)-ymx_t!K5?~_+*HOJK3VAZc|cLTMW<<$L_8o zH)gyyT;1IV9Nqz;6NaVfrDi3ADmD-C&5=A6@v369eMQsxnK#6hBm0E xN?UT8$N45UiKps?goINIGX>zh|Lc#-EO64&jR8u_dwVzUL~J! z4y1(T=30~#UPQ}WC}n)w(;;R9>wbYzKiQjf=q@qkDABJqd3B+yqKqP*OQ^ziRTJX+ zJO?Pn1;OSdUW@G%EfZc5WAMCj_!o`8S%a}r9KtIL3ppk3ENQ7)-IdR_3xMuNm&;e` zy6936$9BCiy-#C&@@FnU1$5_A rSd?s)n?aHFfF+~fX`qW)F?Foovm9+z zG$!Esqf=Mgp88{W_$hWkj3d|-d*f(lS#9hr73#AsgR_c5k%316Cin4ef%pNNRrW~X z2PgLRb4d!~o4u)m&i$!^U0q!iIU%8;s%}h$#u>tF5qAXdyBhS^yb`@t|00O!w Yy+IDde zU8j0PJE4&g>Kg6SybFaYnIF*N-*KX=ixXYX_1Z-q=cuU~2UH{Q%ursd#rF30U^iuD zWWLs4>_O;yf4##lM~u~#PNwCz)o!+^Ki!+eF{XE4y!Q4|5f>-t`bN{aA@~IDQJ`W* zn|M0>U(CCZSu!`lLFozBND03qsEU(Rc`!_3G%h~g?dSKaT@6P5r>^)gt2nhTl5e_D zy=;U22w2vYwbfM`Dk`0*T6QCYtKeI*uYfrbnz7N*j=<5nC;q_)Xe 1>WJ;uU`q1 Cx3)i>MLC#$)@aGc>`HQYMIfdokU3vqD- zX-)Jv7Ao-a7>XWt }CKTSSYTf1WOR{J S4)yHkMPS2M=@;(RJh_?}lS$Tp5z;S+9PJq2rLx=je8FsW@JS#rOddcfNS!i?Bg( zdVvkfWM#CP_y`E2iHMv!zl0v)l0e2rI7d5l+VhisBU>cNaMP~8iPDP~EyGG;c8#k) ze-2gJXqiR7WVrf;Lh%M?4G30r;?S)rOt~^U5N*!pffvnctB2#;5-CNl_oh uPKBi<~3f*T$k3FAix(p$;3$=D`kJyZz{y zL8Qiv5xAeREBLp)kT8V*x~%l@kXHYchuw?VRN(5SroP5mR}jg_p*M!I<#>>;-X*Lb z4-PzJn&OY6LH8ya&9ucguu5aq($b=;rZ$i+V)IG`93c%&lbMO(TqSxw>$vWTs@k9H zm3n$Z4!bJ|4t*opf~_0A91c++hU-Cn{P^+Y>7`hNu-A^IUwIF4JOIjQK*aJNv4J~_ zQ%@xz0Xx^~;(va+-xfv*6?B%IE(OQY=MbGRS?y5$D11~aHVXwDBHct=p!0|+*bjD* zMjZ0EFE`Ut#kU{M2@kpoR1mlT3g >%0z-bQ?p*(+*}a5;<% z&_omuV#`)OUT2uEL<_u4NznuT4y1vUUUcfkeh&zAc$&GIPE1~1JwHaBX9=^}{c))9 zW u_9L$V39VXOma=u==SYj3DGy zpt=3z&1cUiO7ZZQjo5x6;vs_a;-L5MrJq$kdW+_4wnmmr=c#1o<>j4pFT|9fF@?aP z^^=R*x1Xu^94h)uD{J@Gc3^C5tigN#ckK5FXFnOA>oiK+I@V#TCM)pi>FM)@3-4dO zawYMJ;}=$Z#`j9;!sAZ6d}1Ks33edv?dIkt_ 6$m7ioXRDb buRE&>rcQ8X-^`T*fWpqM9 zLfwqoZ`pjb_66TFc2GNS8AN{b4w;hS*XV>3jS|`fP(D~7YYwmO=`zdTC;_&BL;e9i zPC7l!AF;%i0423K+g#f&XPFB8rRCvVU?!~vpLK_dZGIzAU9m;1h-rNUmLR@tsqW^y zI_PBUxj6zeI-iJ+3Eik&r1P``aZ}Vs`&VvV&~46CA@}veMW{gJC$OLnN0;e+l+P{^ z5^8`<#(6et@y!i4%miS#23lV+nRlDGH+}#PbX$PI8(QPL4nQgw=E&jam?l<`ep`7@ zVP0ea-|J5k8UP0dTy+D4_aLU8nVGq<$jAlQ=6dRp7$Uixgj;DgrX`ETAY%fI=Z{RO zCSd vyud^ePKp =kWzqT@4I@#G_9vg%-BO5^oiWk5EyeQn2>i&J= zZxlm5&blY{-jaM4Bpg`BR6%^Au1Q#9b$DZ+8&CFHNipFw=nJk7S|lVOU#NorL1el! zVme&k8SxiOx}EY(a-eY06Px VqCALI2;ukarvcOj3C8D1P!yG6bI zw xBDY5vD z EH~)=hh3L`RvZUJ@qcEkX z8*Z1(W`=mch?dg(e h@g;u1+50~$ z=<0w(dYWfaf@e~7#h cJafJ*zl zV(&69*na!*qZ!P@1h1dn``eVDQb35a2(TzP?MVb?1x2OF5RT#D-{zlNo0rCY`q}kP z`>e3?SWsS%CkM6q@|(YhKYqUQX_=}YU~I-Ng46pxI7JUYHd149z-0n1$SKMw$O!;u zl;4AhO3B3>Ha0u8e^+eA5S>pzg`9Bg5*U{Bb9Q!iW0jWT`6b*Jy?rn79T2|s*k@g^ z4FrTYVCvD<8)wpn+x=e$!DUPD3NmT9QHxAXnO;`K=l}J)R>xsxZr=W#xu))^kdR=v zKyo3t)0-T)QAl1EkIl2FNUT1%WOA#W9eH}I90wJH-Uj)yI^IV)xiqBhJAXe}$}yfg zBz9_Pm#8hU=Wa&gW;Sl&zBT^O9kKsc8;#peuRk{r^x}b+|4Wm$aF6+4IZ=OSH2>RI z_&?LW{`=FuaGUUV=!D 97cIM8s<5& z;GhbagGpmaZX!`2@AYH6>&N)`kJf1gd?te5V&@iXukKH$JQ?v&@vv7$7r(y?Q!wGI zTG=GyYF9usRx4|*>t*5;nj4%F9A>I?IplM<9}f@jFw;j1)0b_G9^SRX;;gb4M1#QH zl}47{-W@h4r^=0@x1t<#(oU-@x>TV>ehTAtbh1uvHfCR3ES9|_b@?*K4$vL#%#2{v z4VdQj@LS1JE^cz#p5rF_a`m&4mnl^cGu2~=Qz5K6m^B)(U4zkNj|sH)gVKKcnZ}nX z?~hbv5)m>^$`UOc0%FCGE*4QkrpKq&^$o&5Z^n`vYyI{t#+uJ~SsBDL0!;NVqR|_f zT`W0RKaG$@^jthnl^uiZJWvAHO1?k5CHwL$I4qZjH|>sGb3{XIrkYos3jW@22DAX$ zm+h>#WIfLG*rzRBoLrQd(qqeC*G1QftpRi)P{hWUyY5`olMXpFx+loXJN)&rdH^l$ z9iAtfv~CiARnUKT#y@|KiBSV3)+v2Jj=_G~%54yQmqq51u!!&-xz_O~U>yP!0k`da zz?4TT; Wl~=1Za|L)as(`vuO+f`S5+iqkX)S`t)b%-li=S7f0pb6dTto+<4W>y3kW(PVpJ+?=Z zz~q+|WZ`s{N+1{-WqOjq&;dw{_$;3}5XKn*tAWbrrF`JeFCgwWSe6P%R}d3@pglj_ zcl{m?Y WpE1X2=s?rq7JySvlxFSIQ@}i(*It83Fd)n&r5&-^J0Z96 zN6lo|4R@3GfQbJMK|!2aWBNIjvl8X*s(mF^d!2>AS6)q%)xydujk>TzVPwwP^WrT0 zX@TUu^BLED0g-6oFk!8v=;&x}i JdywrWT&qvhtI|y6xJq_zYb)vh}fYf5%Rq+NeD&EVe*TLh#8$N(=Pd9u$qt zOHA`q(pRPDP=T^*P|Ay)6)1?1&*#nu8>Dw)p*j_de9#p};)LA1Tbmn0!WEPYiKlra zi#|{NxrTe9DD_WpOc)!e;B;T>?*#iZh+;XZkj7$N{ )ky_7Vlb7>Pcyp)x7hlVmCF0LrxMkMfhZMU{}b-R6cn(+myZ5avnNmh1eI?BZd zjN;2yfDnQ?%Lm(&P(a>)Uj_RXuAmSDx=4MwUq_RC@^UG?6>4UT *41b)dh9%*kuX7QfZl#!_4aZ(6ezR$A=?vV`0P1tx`<;faaS&l1jLA0I_*R3wi#1 z3k;Mxsd^R5&(8NMN#fGpsqdSaciCXxI?vkr!roZsKC)0vZl!DMYDn%tYHaj|f=Aor zq#QoeZQz@Y1FEa-YV%!I-6L|46O1IK$s>gdI~$%E*4?;He$$;#Se7OUkYc){<6|`J z0grAcvOM9Ah@<8^7tjY$(h!U~U7B1 _mZvBO$ZX8YZT$3nV;)*{|g| zrmAeFU#4tNwXsb+Yj~Q&KfmMh>(IX)Xet_&-?LC% AFCYbj7^FlH}^UaU*aXCrgv{)ysFN?Ni0Wc4g;(DThBglpvv8`|XR zq&=s#Wo~NZ;%Id-%c*RXsMm8UUU|O7)XN5w$+uj&42VDvo#3K$NKvKrhbQPK8@BuD zr!jtjNMS>2qseh#njoHC&-X|^FV2(cw8{Z_^oy)r>CU;6a?m%_d1wE6j9+%l$xdu! zl%EQ2=%kV(n3TwpBl%sIFVH!HjFtW~?F*lkUcw%^&feZsZsdpuprWtL--t{)n0QF$ zE}*jz1EDE;l38KXZB%SoBu{H%fVk9s*}NJhYq`JunAXho>_sAfyRf6FdJ%BA1=zn$ zsvkhQi`N*WKO4kkzVSK=&5wsO!c PI}2Jy^#JnBNvR5 zx5OBRdFA~Lwl`w496y3}h?{nMX(wz+{p(kL{S-E>(Oz>;*j0!2N$jbteMxR;`16?R z<*2pQmjS1j$pC%cA{tHQb!HOud0TZ2v_{o1&Yw3tu5*XktNi$C(Vy<_>L?>EKa}I( zqSnw(x+=$~jn70E{H!(o=g)E)2j2z}XOa22bxw`(r7@2lxhQIw+eKGFe-y@_R#_)E zrxOJTNc3zZ5Az3ec6Ph$N93h@Mcdl?`VhiNZgz}VuD1hXHn(UJJ_B1r8YZL8%#}a# zm^>wGFOA>KxSaSp=tkx%yr(N +)JN*F7Ar Z+`?eves^#mWf7go z;qDGqP9ZB?d7jg0(3_xBU{u|21mAPTjLh(^&hmYo8{jBJ+IrYb-NrsfGj5ri*Pook zPE2QZC|x=@HmZ4}GqfS%PF7Q^;S46Y91 ?uqh-db-A>!^t^DIF{3&BVLjp9%iAL^lDv#Zwx zpQf{Jf1<_?i2oD|LWMpb*V1}&)9b5qFa^&aRJ4T}A%TVFmuJ6ct(DyJEn%?-zSb)1 zhz3JNg??d7zB$}-xan8*9eIwO{$`80)8*+Lp^Ra _a(X6nq!#ib$! zlB$=Ia_M%rA7QQo#^NV}g0!MuCX*4<5H=0vXI8C(-%86V6jpmsBad5ijX3iDxTTzH z&c~8;*4X8u8Ubco2YT^ojH+~ZyDZpw0Hz$kVt_guvr2F9s$5gE8!#dPu2|hviGKJ* zsTDH)RLa4$9S6v(EWDEx*%2RAl=c(ux_H*}>bm6X_IGVImBG{_#TlgE+s%~L7FUaL zhpLBn-rQWbE@d&XAy=MZT3?>(31$Az^hOge^;MGzFuEKq7YO-bxgsy8PO2_SH-1&8 z+#`(TNOlUclM<7&aQ> {EiKJIlHK)4b4FC~PC| zIvHpU=}#};Z0Ld(AD9^|>P-Otk9&)cfy;oIgm-*lV(Vx;19N?BF73gK?J>z31?nq9 z`KQ&+6v9Fa;caqS-RyurOkqx1Addf9SJx#%Z9Q#M7iq-jck;LdFD8Yaj8@PUBR(K3 zTJb}n(##mRh&@^k^=|JdrNorMR3@m_>DQy`VkczJuy{;?TfZIDuzF`>y0(*dA^EIt zzcB{%B|`_Ywv=pMw=jG`c{tQ*?m|A7kh*L*VW$baEpHa-ms?4UX2(2e dlViij z`|Nykfz3Nwo@TbV#bo PVkqT>S!nHO^%#j@ry+Q;qI>d8ukp>r$1y_8*U`t zJo9Fmx+^yPVko?pIUbLl%pgQFXt&+hGcxj12-(iQO3=MyW5=zn8AC(G!#m$nqoc1w zqwc;HT f&SkZP&>9cZPTEdGisDlQAp#Xg)JgXliO?70M9a*GrC^ zgu6e|(qzg{CMa+#-To$O;Jv^0u$=h;liWwh6V`iGC`=lV6@6X4CYiJL@9oTI&Oz>7 z6`6EYH?;dl(1BS-N&8?p)usIn`*d{YRyk|oiQEw(-sdbCzQh&_^Rvr}Qf(GS=F3iT z$yLHarv*i=xeVB4^OrB2N_N; X&r^QJnxO?+e=dEKr+Ei`Un4d0;~G*y^I6TocPI48_A1=y zMG-dx!?yteq*c8{`j0gy?e7QsO`1B)B&dme*ZyEe@}8a&m4;Ba=?CHS^OT0i+Lyds z8az7#=s -U=CFbQ3y+B) z_*v%rp_bB=wprcOb$TanL4PB0ucNoE%p6KqkFp%5Yf*snWo%FsNr%K`@4p%5;Smu2 z#GnsnQZk8ovcX7u_^)(T@Wy>EcSzzFC)Vp7@9IiaA-YhSe<9Vs zY4{oU@1)YVYq}#UFEidbJ9FE8J@Kf4KVZr&xWUEEf*5Yd+S$C|`+Jo8w`<*=Ao#gO zlxL$hOi})Aa#%$4o(#kocsQblJ7h#c48Mb2(Wg^ctO;s0C9?P{3tq^i_CCb_)!uam zHTAXm&;$#js1y}Zkt#({A{|6gnjlDTL21&0^d1mJ6p(5_T98htN{1k!2#Ay@7?2)R9H#1*gGdjte&Zj0=S)U;95ii* qivqB~pe(tH95sliMB50htL9R8WWi#qhKkS tA#&k?MUPxb1mm&K)!!4(?ttG*C z8k?oVKgU|BFsP_7oID(U@kMa{i`P#DXw^w7b81X64JpHE!|Qxm;>u7b)&qfQq#2X- z `2$CmmGMBk_ zF0#xZkf>Pwo>S8AV2PAO$-aKlV9=xfc37$=u1NpGuXks*fGODxgU@gmoJo!U=#yEu z5|C_UzQ5LUEaOs4XTP)TdQ$haMv5edOm=h&{BnKE^KQ(vsF{}>Q7?_4ruOonJ%8_= z5%F8Q&!`cGT0R?a=k#S* zN=l35kSKDx-Dto 1=)&|hfU(o3g!nRx{o$h&rS zW+mG@b=~d?ri7hvD9f;S`LmXn_eYRLMw3jna9oAAqVw1KCZ6?C!b)7kXxfgimsUxY zeMcFIaczFP@l%FHI*BSsLOUq2&XvcHy85pya#N!fhKD*Y^t=4f@u{GumrD6aQNJ>} zaC_pIO{<9JJ1x1*rqO)dK|91+c6~^lQr{h#0I=f#<4ezyC@-Cnq-D!p|>(f3I$F zUD2feL0^w-7;{|MGi$YpGTq(Y5Jl)QrcWLD7eBr%-bA#Fmm01U2gjQHU1X3b!KU9X zCHLIuEw_196Y-p5K33E9&6f@L-Wi+Z8hSVhcAKh2_eLX2oMK&~J#N>_xGqQ O< zKD)izYynwZ8mPmg%Y|2nBLjBnZ&KYS4pdemp(&Ek+|+%2&)Z3+#*M<5=MJOixD-;i zke7_qkY#)sx@Ha;oq^h@t}hKu{#DE=UTWnYYfEQ-4WP%oW?msCTSM*&qOl`aj4}6W zb#rQh{bV56jY*C 2hyz)_~HBoFMM?kGL z$#`&IClVYt!TM-Bbd7|6uiGkxh2br#oJQ_FB({lQcriVw>RaPBS)->j?3n1a>`WqB z_UAFo@=4TTlQ)%%TGKfmUggG<$u%m4#w{APK?j$g~>tcF^ARN)be4G}S{_!fT7 zy )q+G+Z{)))Vq
Ge$CVio$tk`o{vI}*kn8(y{F_k$LApgI*Y}evtJ3%7)-t-FAx@0 zSC-K(ffqXg!xtIx3Yv2F_lU7d)D9~!NR8@hr53~*=}2>j+-N0IfR|XRyEYM1c{FS% zlH4nSj5OKsuRpDgGL-nmspzVwH1e?A#2M
`zsf1u BHs3Ih#rgj@#{cg3b+6WQ;nioqrD;Nw3R*i5?Gi zkeV|T6xwvihWUAIo@x#2D8ISDX~#RazCdPu6VcVxJB&}pg@$gjy2bJvOfrEwAkDy> z{B!pGFc7W@YOsG{d+K=b6N!VKRu23Bf+YW#C|vlX5PSYdYsc}2(YIv!-&EkuDJ4eR zay5Or{h_(1Eb;1fM>g#&@S8R_5-}*nmF|BM? 6WQd~!YwHU=`-@g336I>fLP 2>4;YoT1@hSKTEZ(Zj;X=v}4r`Jh 2|Cb8f^lq}e z(oS5ahMs0Ra0;@4xtgMBP}u5FS(kd8FCKl1lw(VKCAsXI=G$ydc(pc-$3#zOXIGD> zicB#Z+L0|{un5vPns%B=HGo{`;8h|^I5p+*y(NH0@ 07U$jjG-l&QAiS zwdPl!=< GwY@zKdjC|5H^)Y*;k$u)Vt|}o5M?!l#G{fA|7Mw zg$9KxG?2;oIDt^{Zw3y0kdp=h-SnS9YyornkQ;~(bdW=;YQocZ0?|pperg%C{Ev_7 zzdIyK-Y{X~D$B2inDxctSiRz#7--9`YcaJRF}xg_m l|ulOK6 zt@jbJhf5k__7dYIrpQ(6jX*1x+PUWjBFUkI2NTo9Kmix8TnuRpZ56o=nbqKPzdj6Y zCiZZB!B)2%7x(&cVy}Mh_*A_ROaUtXzD%x)_? gr&wIem8CyJUHcO50l ztPj@(CelJ|%B==a$WcUIDu2Ogqa|u0zjh9Lk$93OKAyEwrq-#o;AR+$W2fts6?nX- zo}oifFrx}S)KKm}>R9IPb`nzaa~4APWgyk}@D}A4)SYmWXcOPYd@gDt*B_)f!icd@E!AoR$ z$v(x&_`_b0RaA2AtZi*<@cAgcNp56nTyla}rUPDx@LDI=btQ&B9cNcQ7%nFYc|DB7 zo)tFi$-(1j?es2n3!)z;C7qg>z;WCNADM`jdn+QgyOL63F3Rn{_kqw^-dXg`8VmE3 z;hC&CCG^q0mD<>Jvuq(eT anM^g{WgZcii3F9PvdLWa*#Y5Qzbb z=Z;`qYJ?yO@_6Jc&4IV2hg@BIPY-|aPN%qi|1xh7Kt@B|lb6;a@bl)qW8u5K3dAp! zdta?O&RlmX?8~oQC??7gi;WY_NABzE+p|~9_g3qNp%SZz{lz59B%!p`8i{tlaWuQb zbtnA$A*AFlm<+kwyMo+p;@Pl+`dZd-H*bUsV 3*0Ftr&Ku) zHiRv>Pd;)Rd*HqBL*#Nw#lp9of%Ahi$N{@gpBw00UeEaNN>lLHM~-@$K?DxZp}l^I zD~0Q~OcPx&b`|{!B4roVQ1zrIuH@v3*o)BFI@9K}*iRB$y9>33Yv(TItdw>7tGS{! zr@Lrw!V?}iN ;`OrWy-|P@}{t<+t!n^At&h$sWcW4p83#7w*pVH}9!Bo&oyn)1 zLkKhE8zbJ- LN+IH7{++B;E9YV+hc~rd)OC)A_vngyHPAEgz5DAi#=DoSQ4rA?Qo-?^56SLlm zlT%!feetLSBhTZh@YYPuQf>G^E ~8hSb>QA46g?8^nss~x%A!vnR{0>f$ISCEYD$mA^vNQghwFaEaB)=Mv9|{ zE1j|Lgr{Mt@s^dA7QE@*iS*No^TdH+_<9}r%yvP+ByOpBe_{9ZPVL3d= K-R )y&8@BFm-;q&i~mn^`yFP*s9_ z-&Ki9uG>EXO|7% p*edRgIEnT )VO@QcD7sp+YF#MI zQddCQ*wcDlG8dO~*`&Jumc(SQO`aX1d?sMCqdt`Ijy&Hl?Yp8UomlwhCbvw$#>bcO zEb`mWD7vgJ=Z}3$DAX&-7E!Gp%On6Wh}l_BiG@1$s+#5-R!7Nk-`(92ngyBdRi7%$ zoQrcSoT@gc=sP-71Gy*D-q$M%H&PT5()IVXU(I!&7P+Uamz~aX7C599SJ}niW^U%( zGjc1?)l1UXV( }%msPk)PJjeVK3V~@Jbn%1 zv%8>?ay?;Czt6z@+cqV1&D`H>ULt7hVG>k+vsC=Ei!b@*op#D>zcJh72N2E^of>m* zJHsX+_W k?)B=;C2#antZ1QiAhP>90`@HYl7Rgp-Ubu%F*S>~XcUo8htR zK(e1dp^y|@vWsv&&%w01-ybVF1PT`hY%7&1v GPPcg1Y}Rn)3J_K z2T~pUQzPe9MO6*i!D?@oDUUOhi*r}%H&*6BbWB;dweM*>ZJ%~$Qsc>_zMD}}J49o! zX?NB?USh5WaTEl{s6LC$l8!+?-r3K0t=o1|*{_AsJ?S$xl;O~c?UCQ2V3&IJfI(^y zp=^J(y7kydi$Z|An()gqhG;rQ7JKT_+{<|0i-@YFPKJnv`b_usd#BLe(W1K8?A^0+ z9vevX)n@63bDy1_u)|P(Yep*?rCOam9Uu(y%_hHyDUY=1S5fZ=i$;ZEl8zMq+S+r* zCr){8+Jf+v1c7vpgelPDhdjV~nXl}?8AL|=|EldE$ZO1lILXvJ?r%jpJHMVxVYmH^ z=cD9pYz9QRz`>&G!GtYQWVm$p($zXdpx-0K+6U!>BS{K2;CzH3a}^P{*G^1?Z=;Wt zPpz|%510+w?TIn&?R*cK(#dg~TAn!PG+I?zh5q@0&GBpT&(8;!cS_IsZEDteCCj-g zH~FbG )$3aq7FkITu~e6 zx-vN(G7uffCGRkq)(1 s;5d3Pi3sD}G+S&sc_=E}Xm5mvLdnBQ!q)#Q%YX)%S5J;>3{y@%MGJGBYdY*AJzt z<6?S(DTS&tdYNgG2<)B@;iV8# UV0SG;C=NFhpXt#ib|C$}TIYf(39&&q z<5CLyaEW)yCr5o*#nv#IUrbi^&iMP4cB~5Kv5CKi;Ah!gia_L-gItyn_7F|iaLuQL z;``0}&62n)Y<}ofq{nTco{QHzgv&pPS0X$)qYpzeP8zG;)W2l^E8*IXP>xV}^0Q~* z8Bmp5Qj@N2>QvK1+=bu34jKn^5slnt{@wZ@0}%NT *&jqd$S{R@JujeC6OI-2tO z3IpWGf}X9{vlh|laqlc!+F(|%ZhG}sqcqPOuU9TF7eaQ^3d zAws{q$5VrwXFKWaKSQ=f0A~T1T0Jaz?1&I#$=eQ^bg6+*)DPOKRyq!<{(}kshN3?y z {Vv@9f(b)Ai<|V?I;o`n#PSNy z<)H`F#=^FkZXp(9fczkqPQ7f)o7*cf2VM@$M~lpW!^WYv{D1{O&aA3!7IUyqOx~9V z<(~bd_(Z3FdhyC@&>70`g_(v!CN6r_P2Tt5viSZhABzG$Aoloi=;hJAXBIWAr~D4m zKh2XUSH*&xO!t)o7CIt}EMvA>mBi?GH&K9)pc_=Xbwkf`Rt2+SygzT64baM(fD@pd z1@`3THLLYr7$j*2P@ivaS<~8A8{7O%b0Dyz4(|oP6G{h-i*5Dw0Zp K8wyV?~KxSM# hHSR z)@?PJCzZItXSZ5QwBE+(_I_&Ie@H{!#E<$YQIqG?@0*|C< 2OgF-r2n-;T`>s`ZiJG@`&0Pc3dU(pVY^Q*pr2z} d5|o8^ECbD@))%>!`6kP|x080<4c8{5Y_`$mt-jp_-zX>R sE=fWyrq)ly3dC literal 0 HcmV?d00001 diff --git a/docs/screenshots/mobile-photo.png b/docs/screenshots/mobile-photo.png new file mode 100644 index 0000000000000000000000000000000000000000..38f28a8dd3517b1380fff21009855bf354964721 GIT binary patch literal 2631583 zcmeFZc|26@`v+c+qQ%k^rR zw=C_jTXbb-l0mb=~LDB~t^g zJpy~SZQI5LGCXg-ZQG8dZQFKF?P3T1a!uEW4LEHNFgG~2t-M!=1pMco%XN^eiOIGT z!1b DcKp1@8aQwLi~zq| z&-^&E{tZ;k@|54u7xm#8Yt(oZQFFVfzIn*xwCzK{6Qw))lr7uW;79u)p7N| zn|_2SbftTjl++$}9fhO|NxL5YdHPiT&2yJ8@om4b@A%UI`^mYNo@1Y0HqI?fu8mO} zJWFvI3ojR5k}eHl2o2>$7WXX>TI0~UwqlD1hEXkj+MDN8yz1>*6Ecsou?wA~;KA@( zZ*{-t+^6qu=e)6v?a=FO?0;YC96Oz7mEfwC!E$FWu)37rqBl0N{v}q S@Y5Y=hH?~o!nJl7?lAn<3x3`%X2#{NQgHb4 zyaQT{RIWjN#&4eU$G7B*3S1=R-`W<7;B=>o_dL#u0P7|d8E18-X&+koRE3oPeE^28 zI#oyA`ovEf4lGTa$>uuS@%5{g{@=s >DA@2mB_DZS3oZ zKF%9%a`$(k{4NT*uje@mWc@0#ZS0GfyRHTqM}#XK-%*zJZ{GF(9~wG+H}W34lAgNr zdcE{+$)g_KeFcfE-te}+d-S)IUVG>$7U;2ao=FpX^#0F(PtRY{d$zp?#_d5UhrE51 z)xnzpI{H6|; d@=Ea%?+5I^TBQ z=WF;@*gkJTm;QBlJCt=`=YiwiZw&*A7zT*+kH>OSy1W;QB!^mm6ReUJ(EQf%t2DP% z;Wd1Flz84s)VarFE9TC0X(r#V!;2F5-)Af(Z})Lb@-3&|1S^mWG{1HHD$Oke^4DTH za=|A|T7j7Yef;b2bh-Zb8N2xLUJ?mZ^ZRO!>-#Sj3+$+BGhaHiQ|rSoa{Io{|F;=C z?tZRgxnT4+!A7>a{TGYHFj3IqakrLB?#*B1rgQ1Pn6dpz&zwWef43VtlZyYvVku~k zle^%WTWR*I+{9k|7c=&M>izE-`~OP4)qL`7!2IdB66BcDjl1)LgJxO+BSy^>?1k2Z z+@nOZrzd#(a%GbxOyM2LvapWifKRTS#nVIno~vMu)@)U))+}Yy7# XzU{L6bYnP(trf^l00-|52rjM@9zjg7gY+ zS@76{-;+tK^?l+OqzvcqL@BG 9LbyF}XlY zt&aPsXHQ5hg(9tDv%ic-{>?ly>Kp&J-`-87JUcc$_~-MoOs!$;GWtadrbI{+!ucw6 zywoZH?KQrZ*Yx$R(IQDQBB^C#8oBt6N4q^@V@Z^3pGzjMHJc(Zp1#7_1W(*$2=qEJ zXVGd?#P4&W;-y>jx=CoLTSB&2wg#;?9m=n4q}! iTB_^K}z%Q9YQ@`KRA1Jut4TpQ5!N*7jMfVphRwsIzuHFWc qNIqR<{j&YvbCx zeq^^Nnsl$+VaD^CgQWK6dX*cC#UyNU+o~Qj(=f7!(!hN#5|Bx1#O5_wtJ)LQKB=J# zUn5y&?RA9k%+eQ!p_>kyYw)Ixwam)7fsz6}=0YSxPrd9_>1}~$gBrB>A1kiigsn|j zWAK>Hn(vDO%z4MnTWTskO*R|r#Fjx%e9 7Qikmq=C`P`{oZo@I&j)l|| zp6y8ig39ZYN_E}goBPD?^ND+)kk9m9MvOYS4z|lTx3s^r_EnE?j~57wYFhcy1uBts zhZP_W6s _3bqo^Vy+8$;FVO&W{ zS8f?Th<(NIkS)s kt?UsKoT^NJ(-=HOZ$1D>E_~8348BmN7d-`-m {cwP_vc4NrpJBsZ#T`|^d954|e;jYKM8{J@!<2`bOWB%9 zcYBTC<**u0Bs`iUS7CB941POD)fmZBN5diS*Vsc?baa{?TUj3Qa4>b)A&4@X{EGV~ zVOdZ-TOshu+kGJT(t3bgr;MOaU8|`&wFy+YHs|Tmm(%tI)!&-t7`^(ox=u5h(Wl8c zH~;b&&DKnJ5c;%3{RXaBRj62RZr@K-66uUioM%*dTxeS#wCD=oSk=BJh&?=euYa}% zi=6KFcY)j`uA-T1+=)?75(~EXL8wqMQRqrrsH(8}arch_sSTG>xWSIttMlP&giV%1 z2&+bQYO$-FyUDA?h2#{I)KP>9v*y<|Pm3;4lSrhkVFG-W2XC{zcoQ45|ItRT8Z!(V z0uFI3!%iGTFTRNv=CMKF3l!W~?TfIs)b+H)^i*}zn^1NR;j35kO@g6)zOVwPJs~WT zR=;2JeC7LzV9G$7Kyth124D+1Y=_tFwdGznu|r-uS{n4qPDI85_F3P&tg(@u+t3rH jmatSKq-kc`_zuOAv8x=zDy*l#J^btZI-8vcKf@LU-z_KTx}M`W z *lX+p2>6T)J!TeO_#>kQobG- zT-}`%7$OQ?_VcRQ5xVh)L$s3*lPqP3e10Ai|LAqz>?699Y>NRb<%1Y0>TrOawxL|p zSMxl%jK+o0d6W=qaqeTY!C2*6Yb5K<*F946aZk_qh1#Z5LdK)SDd=g=kmdbLJ`v$j z;+i}o6sqXv3c@XYzVgEaA)pWH6I&Uo^1(E-muRn>#O=%