From da6fa5afbd59747d93ddb3536673612882016110 Mon Sep 17 00:00:00 2001 From: Owen Date: Mon, 15 Sep 2025 16:07:20 -0700 Subject: [PATCH] Add blueprint docs --- docs.json | 1 + images/docker-compose-blueprint-example.png | Bin 0 -> 78880 bytes manage/blueprints.mdx | 319 ++++++++++++++++++++ 3 files changed, 320 insertions(+) create mode 100644 images/docker-compose-blueprint-example.png create mode 100644 manage/blueprints.mdx diff --git a/docs.json b/docs.json index d8ffc8b..a9f772c 100644 --- a/docs.json +++ b/docs.json @@ -46,6 +46,7 @@ }, "manage/healthchecks-failover", "manage/geoblocking", + "manage/blueprints", { "group": "Clients", "pages": [ diff --git a/images/docker-compose-blueprint-example.png b/images/docker-compose-blueprint-example.png new file mode 100644 index 0000000000000000000000000000000000000000..2bfd87dff2beeb1d585b0a67916ee0a4d1c62ac1 GIT binary patch literal 78880 zcmeFZWmJ`W^ev2CDAFaMw6vtO!WNKjknRrY1{Hx#iGYBBfPe@{cWg>hx;v%2JMZ!w z&wt$Scf9ZYa`zYx;Th~FezDeEbI$en%Swyhy-jo*4Grz?OEH8z8rt>yXlPe%-nBW_aaQ zWEq-wE;QXgbKA|wv(eZ^kGpkp*Qu(iV#CG%`P5v@c&uLkpWjli-J=zam8W2!3GOjK6n=f?wH5=q(yxtS=c&D7L@f^_^ z&%ZKO7Aur^h=zad?>W=5G2&SA3k!7$ULg9)ix&JO3675URZCyLO-V6quKitCEh!<9 z!0R-TDD0O(EK45xl$%4RB!SN*CN?&svO+3$VAa>#+dCpcNl2)6bo}Pu)7H4{B@VKP zi;D}`&eCGe&CP8L1bOz_Hn9L}g09UGgaRY~`-rn>w|+!vw;d;~4$MP~im z!E?Nht8J~V6iG8pGL+QRRsA0SJ${7~nd^H@%wQsp@5)(fuUD;wLKEq5JDaWUt>zyPyWMWzK$M0R#|ap%zkHSGBIMIA)v>s^9Fd3q>g)TIwKLstCs>5y{>=vuR_~&t#|wtE z{`xibZe>N{oBS0=UV8eBv@|5IfteW{mOoM~xx2!7D@iiL-MwOOcXwzln$6g5XKH_S z*zL@9c6(03|JTq^sj%OE(+3h}mn2!*!h(W=T$aw}W{>SzfBAHVVQ!6!*Qkbu2J+Cf z+U=kq^mIjSZS5bjw3%613i9&eoVGS6%4a2w3So9lr9|>QVpu{2%Yn`K4Ip05+ zBu+{u%f+oav0C@N8!PU6wpKEU&#W~9>n@%jH55iIH8xUc+MdP!O+Nj@18yGuMh4F4 z>BU9otFl57y8XLDQQ4Jo>XAm`9fqurUbw`X65(|FZI4vh}NEV~`7Z}09>CVl)E43B(qv_J+& z8kEJPrQ^A*pGRL+-kER5W74QOQz>=hG8-$s<$e7w0f!kSrlFx>St+|A28W5P*YU1t z9IuleDi9eE7$_6Zx3|+-UEk0UVg2au2&1Knn-dHV4OvW9`LrtB4~>l-ov1{$x3>>z z`sxY^ofEMc;lwhMljo`Oc^nu1^uD2-!J(x^qLQQ4ki}lVumks0q+2(+YLP!QG^CWF zT;O;4@@XuWb)!{hf?!lTUP`L*>1JKXT%D1TkF15hKe3^1gA%ZUGy!ouTHijJQ)?k);t6?DWS7W2mczMy*F4O&ft$oiswIrIaMvm)(1<#iY<3Gf7k6S)Y;nF4hg}v z+nhPn#2N6IwW~h02V!=^-*Q?{VBt9?O2_eBxp9vc+j72*aFvoHT5^9TL=c0N&tRfL zg4>+=O_Xw9yzg~!J~N5DSSo2b|rvSrTsu+R}l zlQca&4f}R=tSk=6$Im}fWX@~alkrkZR~KJM7(FerZp`l4t zpvh4yGRunyA>kD;>mw-ssqOw`wuuZs(tn_EDML;S<+%2$z=#nuPLK?bgyigK!JCXf zpvvn);P1$xDQ1gP1i_Q!4wI9Ydz?6`suG~uJ4gx&3oZK6Fjd0a@i672r8{z}&y}+V zGS!M=;6V4Jm*4E%TvWwS;QqJ8OmZmeX6(0m6(NH{@Rb6oLqc>p+G(BPI~|Hr%yQPg#wtj zd}_n`t1disWo31m!wg%M75Aq(J7BJ^W02|@8I5GAmlRt9%;+7dt$oKoJ3n7+KDZCz zbAAE;wZtjAiL4;Qsz&q8vAFy?FEd#^y)cpF-;Uv7VP%&46P6ZQSyJ&~Ve;G397Ixx z`aRaQ;p&T;djFZF{%HmEIoqQ;KMY8}Zu4!?o0}42--Q0|_&2weOy6U2#rr6c7d%H8 z=scV&wzJz2C!O}asU#PD2h)@;voTm``T>u9T0oSTOy^LZ{z9n@b_|y_#N&nIJ+b03 zh&od>ZxIF-7Hvw|>VtW+WGYrBCbA8!N^)hSOl~vsOBwX}%t7>z1*b)1EnncBQ;w7@?*4z_@Lfl+WtNl9v|Uu2S&6b|?$^IJBIQJkQ zes~ZU87Yk*3O1UqfBED|h(EGv=GwJuOd6#+)Ad`c^!=a2=L${PINC6oSa6DxgQ@(z!N=&>_T5B^y zy*`u|Xzrht#mGCE1#5K+fV|g54Q%2Ef}Yd+Yoo@U@v%G(BVV}f%5H05ByigeObTwc zMHk%mdB>}!sAvysTYFNAY6Iu*Lw)6ItgSshdy%7w+MjF1A6|pKPQvHBc&3>VaOhqY z92^WgS|qu-txZf^oM}h=#5N)eK;xXPi-v}Vr{{B@{;QYY!tEq<%1BBY`0bl8=e(j< z$<`5Nfz;jCnqk*0TwY$jzrTNc9QNhQm(o(_GL7^2k-t|*yP)DI@D0t%l7cFP*I~Qd zWoJHy!^?K={JgSkZE^84QP}{me7fSTe?CgtUp{~Qm{u7hpKjpyR4MP2@#fXb7$M3e zyp9$leU__3Ic145jg5_f9F0r#^;-6GC8^yGH+6&A|GV6|6U?DWUs|ZPCwCCib$4;% zhf+pvE(>YMWPS=NA%R)_cS{6)cXv03ZPtYpY2rTfwLIP-3GrcA2C)o@bT#ZAjL*SnHw6Knwhn*psSN&?>N`_ z22Z-Par5$?jOT0%uK%v{Gw%4p!OmWomp32T#Y9W{)M@?n(_;lepS{F?ZwGCvI&mJq zGE$7vqJx%#qB378>9^*lGoPKEorlLuD=RG{qwnG=$3u*NZ~x83r-PHo{~4#l!QcO% z5EFCy)IqSS%F0sW}PfoNpG)OVv zRXc}fcAHF`)jBLc4I<`hZp{d+tkgG{E&BS^Gr@!NA?tRGP@?m})J8``Lwj$5rTuPQ z$oR+nwzf7HsMduYef`gUt*qiBBO7P7E?++O+-bM> zM{KX-@9(X}MMagkA0=6ia$?D;shP>kPm8wU6F59-IrV`l3km`{E<#my&YHGm* zPaLOemeMtek8v6h^(<{F+QID|9k#Y+eJH1oexk(u{AY)U z3q--+HBlb~1U!q29ryR|-MjZeD3RsyKRTOHB6cnD}&abKNC!5 zsbeT86uf`$%xUrbxu=K-k9xsN>_M%{%huxol;lna%9f*!zdAclRtw$&WJGzM(P08c zIypXeS{oT39)6*s!u;e(;%U3*{_q=4%aN7kWuB)`V?KYbZxqN<$$1+bymodXcYf}H zvfnc8`l<_4X4iD{TlAh)AIDxs`m5_3JQvg(|qvYK?1)UT@=0zzmC2>{sX?l zrQRk@)bZ|OcW-}@i%lLM#~ziFe@l5NvR=<7ifLjTbzs)}y|SpNePL*11{DOR~kbvb;r#D$ynii|r#bgkZ#=hd8^Xx#_{1Hzvlx@;E?z;7}W~d*$NjI?xx$I17Ii2lPZh0H9=7QYBF%9%!~;=;mm+qoWC zPnzY2het;Rest!lX3G+s!NAl=TC9cxT}304OV35vFZO&U!CM612+d3VTx*ZJkXGARzWC_~N4&r8~tgTO&!NVf#cjot? zIC>=P>$Ey_bg>~l+Rsf$xFjOd7$0w0ip9pZ6UoTm)6-MxnOjtZ@;EWl)2k>c+4%UV zZa6Y`%SY&uQxYWRtSl0grLoFrU2=!54he`AO{Lxl88 zHcn1CI^5`J!a0oeely2pVL$2b-;E$T>1Dh?XhgFb!jc>p7Cy+wCGb63$>CVt?@FXl zD>QMLZ}b2BSrm{OAOGlBncd3iQSaQ$!7}dWFJCGg*EUvtre_i`9vr^F-4NB*E{7w4 zpXP+9C@D|R4u~9SMTLaMYTjzU_w%EoqKf3BC!Y>TPmhjOF9=%;6{95P$_@$fl12au zk7dy{gIvL7g%}#;El0V%Rw;8onugh}sPy2nJkF5RU+%XH6QiV8J_Tk@0@2+3Qllk3 z-xn~b9zkPw-b9&Q>hL3OU@w+NicXGpQYk1XkjN(b*crF|)g{>Q{);^+fo#T}g8=i2 zb=At{=r~^6XO?)J%=0=~VReVoJOPZ2dHY2}!**Ec3vxN2jmXKffz60z1kAL#wS{t6 z5wWuRu%8iyLrB=25?J!#gS4C+CMJjVggkXPtehyM>%qO2mKL>2S1R72h2M2Il0|~; zY-~_&2gSt~Z3x7-0Of zbhN*!9q4<8hkY_$FLW?koeUQkU%!6c+Tvq;e0@i@Bck4riP7O;-4ghvM(kHdM=oP3 z_K-we_lOWL#s_+P!^J4E{AZVXX%LDfR%bun)6vrYq5nU9`jjS%Q?Tab=-AxRAui?d zv$3zc+vW5yG+ZHh8UO4T%a3_1v01VjU(g=GV(RoNi#rrsO-l9MWVyl$!@bZ8IbC{@Ftv zd`x44?=E%+FjaIBw@FAyM4McJ(47A6+t4WRQd*ks=%(q`>aYUiF!_FDnI({U5NVOf zwasb0qd@$}t8X4MR&F)YXaur`=tTq1w7b<3AptbG*}m@IU6O_w@qwkKwY9&$AJ-oN zWO+pY6LxmG0!K+#*BC{!8YwIJbgk4cigZ+UCT@?3CA75@kog4#Wmv%?b-~6i6cOU> zmJ%tx2ppU~X4*9EBZ&&RXbulWI$YlJrmik1N}Sin$XfgGZ~GWdY)5|ne4nVi#C&ia z!UP~WGCm}a$1y@nYn_){T$ZVYOBQAD+p34Rc8T30-B zutUEajHG2_i=z*1zJ2G;9r2F3ADhdDK+)9K^O+5_@dJ#itn|*yyT#kzT~qT>m%!@o zLuFT2q66QjYo!{hbGV9B8w~@+%1}N@D2s_9DYE_@p0E%-AE%Zd!+wA9>{k)R7#6)7 zqU;un?g#5xVRMd-MHLn0q=KGL`T3=on0tW9bx~ANDJd;gP3~5lBX;l^l4FrKO@B)_ zSH)L-Ps=j^&yR!>gcd7DOu`QuTDy*xGqpf0fAUg#aJm=-;4c zg}eMCFer%N>1(8-Sy!Pc(9~hW_UOFASz{F6ni`DLiRT_XJ};JsP?u}i-W%Le%HmF{F3RQ*QA2w!|iNP@SprsHA@ zfC9*J^IB*!h>i}X&V;5a3GeM~TLlH}a#YDQ>osZV;8M=CezP(SD=Vvx{v6HGs(jhi z*s{#bOaKbQ)$iV2mXM%Nkyny)kiu0zJUwC)7N#gtYxju|zkBuarGrL#kde~E72sIh zX96-j$N74H3Ou~X>(_lph?SY7m57zY_N|~ah1fE)<-D|HiixRGVmV5C|K>`c4Xsxy zVs>@xJw0Hl#AgrP125_^ND<8jtgtB>gEh0Ys~dq}oi{KvpwuL+O!&9xb7ap!~*jitrG571j0N47O(jCcaT61hrzTypf`VQE=JoZlnRA$kf~mR7Rlo{a`H-_2X#98f} z9u){)XyD=>1Z8c)&inXL@ML#M&}CbayrrXKB%f-QL=?E7WKj$#YsM43qx?i;+uC-6 zi3h#58g8yH{`5Y9i%l1FUN>Qnf#?j=*)v%!W0(lJ^R`b?wx$Q*;1>wMM2{YMRY4Wz z-X6=9gDU4F;V{#HO3b>NvA>7UM<~zpY`MzgMi3!eD6-GY0Z|`8A$l(|#|44|Oq@)@ z`Re_M+1YP!-8}jY6H~x+t#|M{^2V!lep*CJI&Mx?K>;ZhTRc>1;}K2eP}tQI%&hgz z!ePG}_>q6T0FzaZAAYq)Igs3JSLKGgQXV z8&-0P9H1%%=$7xD#Ip|Utqj)d#lgc=RJz@l14vWu;Dv*ShZU-pHBoE{b;lHQ^#dgh z4fpxBThW;xHIN7xBVjzc;7exm_?OUnRs?9XCPU1UV3I`21c}<>Avz_ z>R$?Hs!oT2A#+mIzjJ|@fB+8{H?QD*i?0p=1%au?;L#e&OyXYwy%c z$R(JbCBsKP9XCK6f0pUb7YPZ?*<&&@CD)P_>-C;sD%k{+^7H#E(zQ1?8>ytF2Z>R# za&m??8_Y$m5A?9SeFg==ojcld$^^cE$AF3JCo)W~BzED8hY<7+Thv9WOo>HILC-($<*nLT}QE6)o-+&p~uWBW(Z7du_uOHp0jNu{Nw`Q7AdMBf$ZB(jsTx=n^A(#p9U zlhv}MWn?nM(*WhGjkKC+R#N)vI`e4_W{>yw_Uh@8M&x{zPp32Y7fDVRr%}ZLL1|*5oZ5&4KfebBMKTge55#R_ZlKwb zeR(&K8IUA|5{C+xa#Cf;yrwd){EIH0Id}xzq9C8%Il6bxp}noG-%Lqk%r0|b+fg9Y zsxUW~os;vWq$DkE+Qh@hfAPp6tw8sC%)h^&xieIR{HH~rp&b@J)cudkL`(U9KmRjI z|G$pI%^zA3y3Ra2dU>iKuK3iNefiJWf=1>eln8>WZ5c%J?C!J-XJw@w0WAM`1i4(g zqOD7wB((x9j`gVYe^Yz-?7dK;ENx$JZ-n^Xo!fst8Mb)(y1H4FzRwUmYHl;0^+zr4aMZS4q$HBn?_qLB(mZj?mFcOjo{mjCv@8{d4AruZW%iTwDYP{xo>ir@*l40-57_5T*;rgrUo5GB^F zI>i|LAG>cpd{9l1&&$xLPMH6TEzxTHzIU6z=!vKFbYrS0r}n%LRb_~54GjH{%S1a2 z={8}9F;mqzdmk!GTfg}~_jf_+_z{j|X1RfNTKs2ev3x)z9jx zpJQWUOxP*In@jCLq5*vJIU-^&bmSfyniBc_n?!KPz~B?8mic2H9ofo^ywQ??z(F!} z0!08Q#Y~3UFWd!EQc`3B?vxSYD}y#f(e?YZ_=3OOw^wM`mMwX8s6UcnmTx z4KW0jchu2+7(Ft{cAB6Vc2jT|-6tcn*3sz#lHtdf>A5)$yZK$vAP1fGuU`Jy7TtT} z-h-NT5V5*IqZupPvBvyirP&nCmini}8yALoT=4Pp3nAvxJ>HEL4I#Dc|1lTCks;t1 zh=%r+sLyN<&>gVp36m?IJ_ZI#fQXc%87TJB#b&DJXHAVjYgA4egOIIlK!{9;Zk?}r zwX6@>4~gr{JC7cqp$QN?4;DqgxhRDYyf|$I&E@LVLoz|ncZ^OpHiS>6TfJ{!#Btk2 zB0(PPt-de@Hr2`A{sFHeJ7$(fnchreJNRmJS4Kxh+|Tw@!FhHEpUGmR@I`X>{m^F* z3HY3KRtB;RS%*Q<0=tbE0yLmNyfYk38-5-hqs6XA?gCy-AL8(tG}zhMPv@c%{D1ZK z>d&>{f}abjjCoKh+1Tirm_8thIPF2p{2CW$>F)kV-%3u_ACllQ?fK?)(Yd;60baRc z>q(o7b8kFGwM>n&cSvff7*&*G*30nk&TeihI4w+%ADgZWSb_*_R|4eU2N-`hHz&}T z)lmDLLqoK_fX=mq)70U5y)J?GANPq54A zN({|np4_T<8BQ(i>)zp6jDPbgtUvR~Dw0rYx@AwXU)Q50zh`8?g8b}Ut5Sw~aJ0S%i`o2E*&Z#D~Tk4q` zN0}SFgV6oj%=tZL9ZRL_URy^8(07NR2Lo$H9#N%6(cIX`!@^S2-0VN@U~hjD9X(AU z^+RarBXvFShnbnxTJ0R2GOBYHSu9O}BD_(p&EmQ%#_25fOZyI98y7o!rb6oeMs&HF0^$0 z+BH)6t|qE@j8P_*(_w%0)m&1J&%LyXf+pK ziKGd@JK8fc!o#roPAyBoW&4vD<@VlM;@KzI#o#lIL>?cI<-YzMVv!ghKfzqhur!e6 z_Uzexpy&I;k>I?ntl&A{AN?^k^%ksD!onE4OW1vBa>DyKG^yA5U3Yi4mY#T>UnUJ1 zEJ)QB5izRv{E4s!x0C1DyJ0!OFGo8I+s+l80xO_Cbam#afNtk^j|54}#bpgDeq|+C z8~7c!XCFhTzjUdRSqq(v)qoZgECseTZ=M@ky}jF?qy75zW)0Ymo}llX9o#8R21wy2 zx&mS=3BPL}pz_|{oh%eS+SFuiZ*Ku466v^#`Sz2J_V&Hz@YFxPVU!#ink;`}Vj>tu z&iFQ9&skdoxsZ4oc&DNgH8(qZ_3BlRv%SOaUWO&_qkf7gln zBh_D*tAVV))N71f>`q>6Ym)?SmRwJPQ7YzX=NE2$FuOUd@L6KyeJVW&|RN zS(}P{|5FPA5eOxVIJgcQQ1c>oPhB*2=GP^nm?)BfQ>%2l*xFlr0>QXBoCY%#kz^@( zAAfnG(hac-S_4RPgBdD=V`E>kUT@E)PfzQSgE%lkOne<}b5gb>dnQ|x7ZyH?`(YID zecE39AL3qtzvhA*Bzk|O6v5Gz3IB|uF)t@U@I&BEjMJzKy7JuW&5zT^i^D4w8@}wejm8K>^ zUf13Gn4m%Wk_f0Vf>-XuNjpm!`w8M(YN`Z+laq6Q-(huag_4pI)RG|LH!akLNF;x# zE&=1#u&j%V%N#~9(VmjC^H5)UIIy7`6O|{8-y<<1!o!6TuCA`D*&15GzL(J4k3Wf1 zVMe%Pd>5mnCQp(7839hxyAPf^Z%lY07ZY_D$9DqLoznrHh=@oW zuNyeSAv8tgaDri1+w+wW0_Jm~%3~!_I1$TV>&WcrC`W*$)!@Y+c}z}BDbKi5%fsUg z;(A`eeNetn9Bt6ho}pqS35u*QmglYo;xQUs3^C(Yx*d>{?>k**a+#g&`&zyQ!kjb$ zas{XB?hq`zj+ni*Ai{#7w_^Pfk&*EU36rHZ6!3uL(_7AL#vO}bAjS-SaHIrkXDsI$ zxJf(~yM8bGg0c^52_FaN+qZ8OFX|vEdVmZ;LGE=iF_w>b{`@Usch{6bg@*4`9!wbN z3aO%^q9-Q@j*gD!v{KjL>2ZjNS{8P$Ty{m3mi}>q=jP^0Uh~yuU|^7r=fk~!zwev> z=++F)m$?$X(Bl9rk%4(D#+bXuSIr z7sBbdT3Y89l1r5;lfVreug=$tKaAKoDo2sd+xr9;4{vdCF+buJIR6mrI?r;SJ?vt= z!p+VO{*IjL3(qP9IqcnN9tZJCR|nv{z^AI>7@)z_+1Y8`m-hS3rJpo1@v|)v;&TI8 zqkt^RZ07>Nj^g3r1~32yG7~c_D68=ig>=RC7>+nzDt>-%B;4x*e0-20&Rc|F zzZMr4YgL~!Th(KO0iq3(JoxOlqV+6f{y)2k|j<{q$>{jsir zh1t`y>d_-&7l+l*1`!re0a%Ft*h{q&)6z^}=?@PN13Viqvy08jS_9t{DW9`y z)jV`iIN8~$m)qyX#jUkORI3;=2r6wq`V!}>4920^U!hK=+-PWBzInO1*_&^IgZF?h zH$Qc~{PvlsD2m3iZ_v4is=YSW$KAkhmwkqS`|JQ#m%D5l*FnI( z_TN%=Y7G!bdoEwVRJml|I35QOcAzps z&xh-8C`mE7{#zDqo{yE<6oA`~4227EADiXx>EXNL&;Jj8PH%o6ipVsT%PEyibgP`+ z_W7>}-E5wgpzOJgA(ql}diu_+!AwIvPhTVkA!@hu_8#Waiplq@bDn}vQ8J@KymtLX zCN_Ct>2In3l1R{l(mOcV+1i@3`SI&@X1j&x#nJXgLHBsWwAA>@;Zk+BS2`=TIfI|^ z=uLhv3^!GIxljsiYzy1W>f5}15KV!G_68#r^fX9ihPT1525aR|ZsebnCp-o3Sb6Og zPR>6KE$)Fx-9Rl>qKpBOsO*~@ECVXW^IJ%<9~p!LjGdL9HsL%Cw@fcz_~5CLFZy#h zFnsb~I^`Q)A+-B`-Rz3yUO|*~^zR>*iJy=hh;IY3$^y(Bu@{au0+gD0jT1sgEYA<~ zh#^2;=%Lqr;d2>lPJiwr3M&e>3^11%V{~YTyTCVq(Tqw$k*+^kwA&i91^x&Oc3N6m z(YDyw`uh4a&~uVO+5%8QTYLM|WlWtNo};B8KVMQ>I(<`C>H~}3E24~jjZZ@e43c;C>sqk4y(!bywc*b?JkbW9|`jE7*4O$?g?(^ zr7fqjXQvEtGG_gz9W6oqAuBM8OuB2~?t#*TRMGOl_VsJ9c-a>iNm)-+?8%K>M@z^z zYLBs;tSTx!+%x-DR#w&?TjCxli*nldBH%Iak4@A1>0o`F{^`?FH>b%Tend}MO2JTd zc6_b+1shb4Y7?#MJxu&K%tKb}`EC<~o`zl`Y31{K0dA$OKO6#z{LO52m~z6Ftcayo zxMFpBEh?l&(+3D$D!AseS~g7{l6B>|2J%GorAq0d8edp@@SxSC*45XSLj8*2r70*l z2?eKeu{z_G>sLod2A=Uuw6rXbS{pNKmJj{3N52F%Cp7g7WZW|C{Y=2E?~4wc)iGRyA$p06GqajDBwI<>=S;) z&flat>Xmw@#CmZwF*{NY!t%t@R5Q|zBISSt`UG?^|Qm5B+v7*03cXOr2*~#%P zkgF^7AMm2@81PZ}9|vY1-Ce_Z9DT}YyjPa)7%B2YcYJ$|G2&q6J?4|?<$Yqbnj2r| zZv2)@uHtb&G?ACb`ePBu1ZDr^z;B?>;RgCms6P}9QA(*fIf7p2V+o#WP@B&?nPMb# zPL^0(1GoXh{Fg6ZoNm29*v+?rK;CeAG#SNUZ)X?BwSht+k&s9#^-sfEGL2`ad*0{9 zW1=ZG$q1h1LM(%dpxA6K{^Lhza3ceP2aI5nA*AC_W4ui1fv>{yYB9+1M4R7o)^7}g zRw-!An?Bz2Qu^Gm-q%e3utu8!&&N-DB2Pb6JVmc{d`!a+{b;Pd{t%Kh*(&KJw5iG< z7ClRW5R*`*rB0_N;hRS58{SsUY^F|W$vFF$9q@Mrmn>XO{%L4+g-P85^IhmDoixYj4F5pp`p6 zsn8W(AZo*Vf^N6m=l{n}HByw^Hn}w;Dig=^lf{|-8d^m(oB?bnP;5h7?MoCsxl4Sm z*9uUv06O}>;p^k0xj0!p8GtKMrtn=d8tfM1fVzi=RLOX7)I25UzCOQlaj36kVX+E0 z$nWmSH1q-#%#o620aj3lT)sWK1Tw1Y!TO%=I_xMj&-Zf8oo%t5i`d<(p4?-O{ep7l z?CjRDTl0@iZ{#d#F+Uj)q3x1f2}iw7?LKdHMc6OKOr(=(@0uwQxGGsMTzd&ABu*DA zLQUO3AmqBs9L={oSUuX~=Uc?(t^0%(PfDZAyF2b+k=qtAudgc4@^-RPh07rPP2Z9E z8d!4Eci)fTJA3_p9dV%{?0@{rVZ3I5=V1E%>Jo+f_ML#wav72lbiS2~gZy^Yr~MYM zQ{V9svTZxD6`xIFbYxp6r8)wp_4xw4>{FK~if41(MzRmdp zs29+!0LRy$9z@tr*EeUVFqffFq9P(t`R1n%Td z3{^$`0i)yYB3?(H-ot0ML)YG1brUlxvOHLNJ?<-M7_Jt9vqJxd2P=R1Eof%OX zb2(DGe$1KNZ1~xE;~VXxS(5lDSLgFq`d0Z7j!2nT)@_D4>jK!y^vBqB?1$3FgYnH9@-2(e?}mn zUk6YuRw!&)C=XgLD#m^&wSpa?zKI6b;WubHgVMbqY6#kcvNcD`=p7fk)`9uJU02>0 zcKV~KL+f3-B2WZ8w6w41+m`;cJxb^0(DrS`N|bwx1&QtZ8j#(T8^W$sBvx=)#u=?tq|G(qJ0V%ctZKtBftI{IfmmmX-!x_0?3xF92#p`&c*Zm@{mmR>1za)havj+KVK zeft~`v@gbmE%flX?eEU)99daqBl;>_3hv-*oq6ZTr)O)F9eY|s3-Gyidk9N_6lOU$ zP87o{Ck;BRu8OzAh{A)gi8$l_LzePcGVkO&@}hgc^l3sdL$jf`SvG!k@AJ`^Q2d9* zc8Vw~0bHLipUl`lMRx|eGAaJh674eifv=&GNlh+FPo6nCYND|v7t zqCM{XG-b*(;0>}~NUCbp!Eq@VmB8=upqekLRMOpm|Fvr4Hu0WeE+<+7f7dTbFBs?Y0+m`B#ubx3VA_Vcc8C z$8-D*ZB{@%Sawf4D5rg$+8fmeOHaeJe09+B(h{Z|M2*rgSmdDXY&-KM%6?9`aD5wC zQBmTR4g!dx1PCDe+TH4$}9^Z7>Xt))@xH06e=t@L-Z=;xw74VIsU?W}S~#&>7M$+ENn)l2)oLPzHA z8nOMR&SIw^v+L>M-3?5AFJeKr{RgO6FoU1DLb=-n4w8)3>;8){)e-d>BBxyOC)K>-LKCkJ}-czg_1+H*}a>p zT4uD?>>8ho0@vx=r=@inWK>#4JDubG(b!+~$(42ph{hgIcB>J(z6e3u-f>3E>ZH$B zuUVSjidXnmz@oU~&*4rQSD8$Y(=}V8L6Rs!2?!w;`&g4MDwo*Cps^o9S}2 zTE>MOM0e#PL=eh{JKJEf1#0R$@GwvG4#81fb>`@Jgbe}kPlt3{Tjp)2^dz!!7e3O2 z&V`8%VMIjMp@Qw=M`$cn_82f>zjnZ4+79HyIgsFdbHh z5{+d99V;klsOB1=?HP~p7#zPrx&%=Dq@|4lONb~m?wo+eLwL8vLvm;ikB=wiaPtN_ zJ^ElfvJgsc0m=JTvGJT7w5i!e`7h(9mGoH$f;&~cG`w~Q&&UKie^_-ao~((ypvspi z;3PDj-DYBZSyn*jQtEVG%0a!l-QTHo8}=D5`^H=j1>0o#R>UiybcpR3mvObwpoZa z*{4q4xNb118S$WsGDY?0sg0^QVvsBlf9=WXQD7#@i_-d#T7Ue>lKSMeQ+QJW37JyF zfz7FtF)LN{u9jGekL>05UA&3!@5v+Na>?HfLH@VpL)R2g`OXBg- z1~QL;sT<@zx0B0HO4`mw;R)_`d7GNvfVWJ*>m{3}Tf(lsp!}Qen!&Yrl{A9*LaO!x>)=^C|(?-OamP8W;1i)+L7= zm(hs&w-tI2-||IXZHm|IUcxQ#Rn`zJ*FbPSV3GD>HMzJ|i5yzpKJ0%Xnm@jO#$%lk zpU{K8wL`va)l5IIU%n@JaZvtE$gWr7l4m?8hBtqSn7UK#pohd+y;6tAcwbHs8$?mHN9H)uxv5Usobi^4w+lP{|0&aTad|U@tQw& zyOgAmkPxZcYWEE?_r-!v0WvnDK5Q92$DQ^&FAQdXeFA-F++|^WuaSOkem-0MU_3d5 zDVp~nCMju}+b-J-JY7;;j3&#Mq5U?Nr${>0?Rcp==hcqo_)8b2Wou~b?upSRKtmWn zxgaN(7rZVmxw>?yp`b8ByT6p00c(VlmX?;DzEv-;V!Ne!Ir3u4+sn_#2NwtDsjnB4 z=J9$@%Epg`z<_}4%6(UOdrEloC*W2IyiGY{H!614tIzjrz(xyEhs(=?8f^-r{NdYB zFMl;OSb+Q(}(=lh* z5`{;oWLlp8c0{F_hPIf6vt0{*prx6SCh_=EO+p6@Oo>5rozu93sGeRYbM@(R3%zkl z3W@vSZz}8RN=3wk`%V_T8iV`k(;=e*?(>S%<&2!l&00Iqu8LI|l$4a5CS1T5kcUJk z;i=bQ;XB)9d-A0F`Sa(?^h1bm6Ds%ur<)Y9?T!t&1=;0h`&^UmI}>gjyc1!LS{H{+ zlVHi)A2v=1{B?F9csTB~0wwDy3?EoL3*4@kBUr0NlDoG=h?$vlT3W<2`pca*vKs<7 z&elCawDTJqIp;4%*bJ`{aK5ln@X}(Ur#DxXKa*8eJsdI5;Vp(M z*A@+GvB4`!P#aYXv&{kx#qab{3_p&4W9vpnrP~;b06-6fwD?hlrkiv=`Dy=%Y zZ!ZW7i-%k5`hu*yd~G2I5Q|Um6I?=L@`cy4Ky*;s>5q+8+Q_&==6NV*U=TZ~<;L;! z=~HIrjX0+Xx1IJ9PthyqC->0-MNCzE4*S=(y;=RM;S;-5viiTqsm=ez-g^dBnMKip zhBl%iiX;UD6_BVz$+i*{lqjG?l^~KOO4b$yi6R050!oxDlDPyG5dq0b!UaTflz7R^ zLc3qhRJ|Ybre>z*$52*RdxgvWzVDoU_Fj9fwIzK%{7V#5*zNlVvF`Qwzxq;K<%h3k zxx==FKJEXqTeXjgMAn++^5?Wk-!y0)vGtD8e)%tF>$M%5cTCgBHzOO>9pU?Y;X|}< zr}#tQ8Tk6(PAjdvZ>KBhNx%OwImI+vlk3sHA8!=Txq|5}h?Cf&XQ>N$Un#bn7W0Zw*uc!RE@m9Bn zZABh^yvgfG#?jjc$e!q7s6CfV;#{eTQN@@35+ z&Zf~(I_ebdw%McBj0B=OHn^JFJRyA7pKp`&oaOwt)$w3M;4hiquWqrr@ShN#_5XkA zU$)}^>Ya!Y2rJUem0@J;86Ktys?17GZZye(aZBmt>(@PE*m80N(!M{D8R0)Pb?Wb( zdw9K~byMw=a&zn>G@mvY?>lhdo=uaQhQ^wI8Baae!pw}qWm?c?+VMCgudCHXRhoB5 z0d35=RHhl~=_#wE^bQJU{DCi7yO~ApcDG82C%>O1b(iKl?&5B%c0;~Hhn?BInVDN! z)J)slvhFqoaNYOrF=&Vpg{cMsiHb?uPX1G$kL&GQR+KWJUgB1~QKWJDY~Jly&5C!o zPG9s)Ko}OEZ;rJmtQ8ID-|oYa?zVU7TUeSCbR48Fgkj8uTOu2r)8lX~d0dc);8j$?XURMiU; zS`r(pha+m#x*h+=RcP{_DI85Ug;5ez*Ln=+-qjiNAD|ECz4hruM@KlS)9l_G>!wB4 z*OvI@@2SSQzg{a*SdcCJIzb3-wP==(XOqKe7%R(%s{G*5&V|M4*dg&a*OddOPwO9h zs7yB6lo-8AM>9brtSnCJ8yd!!#xl5XJZNs7PE?3g+8#@-dtau%bTqeQWikSoY|EG( ztkYKJk6u@L*5m!=w~VrP+uh95cX4J091|X_=Fu?kTD*wk>h9f<^)+Yo$(u9vKMmF# zZRVYx-hL%M44<5N83sW%27IG3dat@2t!^1Qy(k#uSa{4TULWJnXD$JyBj@vGoNGd%pABmJd5KV4_ulrcXY z00a@^`gbp1=Hp{A$24r>Z<2UW5N7Y&c~LHM)+&nyqsj2+p zYf9GEjL13Q{Ul&lZDMLVD)GcmqJjAk4Gq7wfk~;`_Sl%)z>u2de(%tg}wy6 zpbCF!G0EAnV`=-&eNm#MFCm3*eIP}#ple`1bo1F|iiIKP?}dxst6>wzvyd(M;%3IX zOKDdbrc5@Rg$Q29IH)ZnSJNVh{Vd81Gi}@p|7e~*>(jzL+u8AGU+Fbbu0{#LZ*HkE z^W5L!Q5hkUMV`C2TL0z|mTFFL%k=#hZ! zanaNy8IC`2J-dLTk^&r!8~MNdu@kls%^w-)uX4FhkvKAlQag;gzPUs($8mP!2|3cDFR2uo}tg zoETkgO0c*={B%{kL07k%jJliR@L}iWxys(&XVN~C@QEl~Z2NukzfCDmh+A4-28Sx5 zCTFzm*RS0br5li!W^2}9kqTL?!fHa}=~vi&q?fM4REGfNy@nJj9!B@oAJ_*$m9`se z0bp6KA$B1o%>OzgzA~QuRR%(sX2*B!#04KxNVC$)B=gygLdtLCcY;stIzmB9X~1~I#J&H)O!sAJsRN;v zefL-12USJgcDz~o-pI@KZ&7F8%ho9a1^c9>)T5NK`2+T6mD*fTmSXYfY#TUTo|EQa zeznOY2RXf>yr@BrCi$`Nodky-4-als7WVhPBJMx>=N}c7FEC5{l-XdBhoU1(Fd_}> z(`Kl5CD=_vXXkprLOB1}F!bB5ztu2o8$LX~ieq z-*4{nU!`&7+fX(o_|vG=M7dr)fByCI(nwCM{)N#Nt+dabovg=?D`m8$=;28V*MdXCaOhC@t1h84XV@f4 zg1l(DNO;WtRj>xrZzP;l64$t@ULa3F4qt%9V@!P?%@0r+Q6>yT2 z0zs$@T`zHGmVyJmbasnYg@wb`>aDaC_Z&#|COK!%-ZRQ_9ImG@p(Q5|c>9*7f=Slj zz{`thQHLu#V13tHJ;l%4yE}VCcK(ze^bVFKOUZ>CtgM8hBC)fXca)T@Y;AqLhUe4W z>@qXWr42}v^rLNvr-=y)UOuK7J7xSNwuL5C^F&W97CFv78RWUy+BF#&IE*x`}be6b8txYFAZ(HK~P_yKWFqUKRFq^-Gda< z)6@I+?p3Y^Tau55M{&(8b9HE-%buX)7u0O_Re2p;N+blf1}dY=vdIX)!|i-a=#4l! z7O*N9pa+@PEUlxI$T1Lk*t>Nn4 z8LN_Nx6{2`+UF}4$ri}Kd-hY523N#h?uH|w&U2Rz1s2#?D*a^elW9s)r4FjRraawg zR4?2;o?h#6jZ%7T0F_grWNu^Qa}m$$$2{NiC5OkfjUACrN=`P(hdWCNgoR)0BoU30 z(0CRZj4XItWs)QErS_VdTKj~(?3Rw<6IOSZdmlL<3hg{_tSfKoL78Whb}4gOdP3AN zT&&#JXGh?;@uk9nf!9Fl#*L8(%Mw`j+PvZZeQwq7?pPtK3nz}=j^+g_ET@cx^jDtebB97G$4^ae8y2WgsJ`~foL9B%x z8?JIAgZl38BV21+^^%uaWN$RKOYnZipOV$=+u|E3qgoF?-W+aDl9!e)uL@>N)a~cV~SSoioT7qnxo?l1A{ny zc_fhI2IksF&kLirQb0ktsw)Sj%NP`c$2=+$6_seTj85H?Uoq@IgDaKi^^V_C8Q= zxb340Pp{>nXd&=%`@J~^5&bvM_M;a0!XhGo6HDHAPGISUg;l7iR#cSd%+Ajr6=0wL z;mH`_>uat2BZMpB(W8q1O#6q180qPqtGOI%!)#p3ZmXxX7-c>7@CdsSrL27R;uBxv zB#uH#m*7~+ma4-#=8>)^8#EXuZda#;j&9RxMQYlzX zeTZ$gvwi#i_cPy4i73U(he|~%kQ!vG4={9Ptmiq+50#foBbhxEh+HJRCI|VbsNLwR zS6yf|ZS~*I!NDON=S+%1zQ;Y<^WM-VL)Z2BbElQXMSGlaA9scBV-Wjh7lfUPOF%~H zE2B@GklZK&GnX3~%Yl9S=+0SvO}(K}{^g6eSNUxy4^;J16G{jZZBFb`Cz;;(=(G8m z^puDrOoi$Q@-fF;H85!IuWXW&^Tvr%|BZpre4TU9Zmi_M{{0X--_Y*n^~AcDa9!rn zUA>74D=JF&&6`_vey!6BzrC`~o8HZ&kYS!_zr*39Fc&5wJuB4>HNLh{YIw5l!y*^Nw?(IE;bLL98 z?G5<9RaaN%nYF)o&YQ4t`t`!vopt4l%c&GODT8uaL#H^`3gOBk+n#`sYd3B<&KW<^_aRzBKf< z#CvB#c{WJ61w*yPOsuRcgsE2a^e=MdI+Oh4;`%q^X0dakeyZF>5Jnru_T$WRuxYxH z)(UhxS^g^F*Ux~l*qHR~pFD-8!TB%?kD&i?-Vc{D< z)WZw;8>5?RBRhBPrxP@3{tnxKw$@gDyXs@%PBGvkAEKlbGw&GCOlvjDLdhmi&-ELX zGM3&%M0_;RwKU9XZ+=5HPva-^=p$^m8m+8v#6lgJm*;@mZj73hcHd4##f+F3n;Jdk zfx1)QkJ|^X4wjQmch9sO?<`( z;_|~v_ev{w5s5GW9GyU&g9Q^Gf67iVxy1w=4mo*wdY)aWTDrNsB$7 zU;N%cKqQ&Y{QFIZx1IR?(f_~u67lLW#s9bf|K~pTJySPj=>{6VosT}gMp9SUV|Dz` zHEKR?H#-|qBOoBq(js6_NDGq{5F(uo6T89^)MApBl$4g7%!~Rb58Q*zul!4!SYG1n zFDuf_3}8uonbj&|ZND5l1WX$gS7sF*9dp5mKiJ}bdf(nps+7{o09Eer(@DprrhWs) zEFope>sau80u1em3G*CH9B`aeWXk{IrqTXHi@bI-Dj#WJ;{-xPjZs8R%Um`P!HIzZ z!_4cKeExi(_2zMV!ij!m)}Vr3_A|U;Vp4I1g&jb%47UGS2laHR>ZSlMSLs&x<10U0 zQs!p~dYb(QD()?P8crK_g+=-SDT>t=GTWk|6h3NY3GjQww@lv6!Z7iDJ|BM+6_BI z<{!th$$?%7A0#`wdGwTlc5ALuLSsbFXOyj*A&F*+I8mcQZ!;PH#4cn zJ)_cKW`5p0?E@P#Gc;uenb$Wpyg+C6Xy^!NNezB07=5^Fy^;OupIuMgu~GFR+rvWv zPJA~A_BH*LhutfFY<7*-7xEI1p|OD~kCrdNeSHbpcrVr6H!`sW(_fBC#l3#r`;;}x zWh7ohs(&CmRD6)T6viB3d{QTcgh)w=>m>mB zK79BPVG$nsoR^uGccwv>v1BA+hx;lgbRH~0m!(P;`%=(GyGmUAM8;F{>ywXr(M-r~ z!HA(c%ZEOYlHx0r_td#_sSWf$e%vZ3aOAS~hp)NqaQ&NZe*QFdXY|j2B^-lmjhb3y zRMdK{=+rtq^_f8|nOR?%^8QN3Q$)$YAm}jp3WafxRaw!qXV1{RLfZ2nhArCV{b-F) z&oZer^yyc^6t^>pNRs;8(_^{5x&)tnvVHr$)zoN#l7zOSlbTw~r^jSeJSEllM&Wme z_M0=T%WmCz10gTXnVaXqSp-ZO!lk9>G&1nBf^RIxy(xhaytm|(6v$U>V2o!64C+RK zwWErPVnj_VfJQhJQH<2TDO+8deIDeDL=xtkH*!X^&^^?+S}|F&QVT~I!#hKq*R86z zlXpo1NugL;=*)3n>Fi-=XV-II(<^pnMg1(SxrpXE5MQ$DkYbpKSVPd1yBl|= z2&!*?7GwrfQ||7X#R5~M8y`C@OJln$fCpGty*Ldo;NajRfR~)+TioeIUZ|5KB<7oY zChS+t^N4h`?JRt=pKa>IH+}{j)$C9F^EBP^>g%74kH3;}(0NNClYZKJrcs{9mp)?j z`ymPniQAulZFUy%01>;xRUtDq|JD09vo!>pX!a-_Z_0U{L(hlHH&1c77e|cTH zbm?nibUOTr{WL$cwFya-{PdzYVO0C-$e})d(^Omoh7X|cs^_-ksHF7FtGTrmZjVwj zGXAuDpc*|53u8U@7}s#@$dOabxaz7vs;6ExM$Wwtcj47kU4O5AG-rC#@^l>>95l$F z^sqSg7-&+lHGvIB!8P|l`Sg;NmdINjv@aJZy$N1x{^j?{=yOpa6r>eaH&MtPHG4K zZ2fEJPH!*u6xXpdA^3rh=J!Lr)ZBblsQZ2ssb`~??bY+=y!v1G?LLQX`#cqsx8ck;!JbWD~IKf_66HD&fjiABz&lTd)BFLQG8+#c}#HJ$4Dvq$U2nv;mme z^XYx{Z?ZwR=F}@;mXy@XXoDO%YjScDbOi)YMq%qY?;{-21|J@5g)3Xy&u71Wy~CZ= zvMfgHc}f^N+H2oYK{&b?br&sZ=!t7^&0?jYhFhDB=4losIy%1&b0R4~0?=Pf>UQ5) zBQMOSz$~4lq@T@!s?5*BMJ%TKoJZB{=3BB_vWGGK10zDd*|ia^CcA_mef%|^Rd?V$@Isp7M}I*ptreUy5EM~U zEiNuXQ!nZbipTu&m?dy#<{8}hr`b}CjNB8!h}8{^~UeIB&JudQ8K zQ6amggdS?2_mh3Jsp)QOeLg%88w)YNzdv0J#B<-CJz>H&3Hn!=DL@?&U6|_OVP**$ z36y0x6bNqQREd_J=Cb_SF7oxpPfjYTvV`G>gB)C3krHdx6)AlP4hY-kmCu+SfuhmO zBD~Wo$>`flZf59u9lGvmn46nBE&sR^?K+uR!LWb#FGgYB^0QBd(Su(Z(_^F#1YiNH zg@;?Wu5)+4{&T2m>Wuv*!@OzrVBTSfUe|Qmc~1S zfM!=6CGLFeRA;WA>K!pI*qL`^S2z2OrlteuOH=QBw-q~mGf?l_S@!%Cx#VK+8Wf)( zoNAT03}8mf7?sUm9RB@pm4UfzrdrhVM?4KK^yW z!UgjZ&BQUQ@$b`U>TJ5TUKzj5bk0k;y-`#G)!b_;BG^I=HYvX!(q^OJF-p;n*MOsohU$PY@Rp;$dbM z!#tOonyZoLTGO;NWFMxcn$4H#2Z&FDeIb-Z>q&m6%atUKcmZQ@*c!O@K3ti1T7$R$ z*iM;|5zhd|I$s|jtm#IulmY_--&nMb%?C&n0&oZ_zwJ0xOoBl|ti=>gM(7jW*1D9X z;MQ|Y{~x!!*@Xwql>ytfZG#by6sA&rvCAo)muW_+3ab{#-RWafq~i1|^ja%{LD=%~ z{2>=;n`qu?Fa@26A}Kw+JI}Jz3z0P;&ezKID@4KopgwGb-C0Km>J#XZn@4;m33<$D zO4rc00=dYigCm;|A4y`(wtO={4ynk?$jWkfqnm|D)Qx~^_Wf6JX=xA0Q=wcd=l9>B zTQ1#z-g?eyt%7l5WqB-Pj40~Zm7mGzI`{X53#=4NIO0&Uwq|VTMuylmU7baXLdsxa zoTD?xl!IB%tzenlPJI^ky|}1ma&n3L?zXmb54LW{P@~?$+S%^iIXy*1MPSj4`Uk0` z>8|;CNlAGi8?YPwk=ONJNs5!I8jQQOwa`D)N;K85$Iy>ENC6-j`BTwsZ6^RlfiN*0 z#+fdgI*@X`zP>meRJy*L5-;C_L{Njc&3&o*B9+f6US4aYF>UETpF)uBxWy zNFXvCz%A1KSSdB%#5xicr_iUwUG;eK#G)hn)<9JNMaErE3$6%#FF`U3HR{B33u20B^7`Lxx`` zPSWrUN;itlfU=~IiB0(_Jwn!*hi6f=vF<#70IqqV&6zsn z;xH(9w32JSB8--(m)PvL4M>_7$aQ&sM{i@Uw8J#6tJ5=i-I^wX5lGf>%og4%`=X)i z*fP)b`0>z}fat|mElb98R=s#5q{*ZT2IrZ!NPCL*64wey=F;xiYAmo75rm`wMtm zj0RfrS9>MBnLfAQ*|7ZLTg}1F-ol0PIA3%exFl=_eKD;BV@q00AkfJ<%&H*akUkth zx^Cmt`}t|m>=4h_%1R0fpYoY*=W4J*9oy`pNHRt1%SWL|$nBhfA-QVeqLXLnix*eI z`3>hsGq|XHLPJC0Wv;HifDH@2B~RYhQ@@dt2kLMB+T|%wctT8!Qz&oxv?f=%!OU(l zGU#G$*1jwkiiuwx7&tOIghHgpB}-F^!EG@xug9%I`AbCwD@2sA#-rD|rih%2Xu$)a zhS{D22LLZ}!Cb~fP7_EFTwmjolM9nRdB^;zY8<*5lqk!4dP*@x zZ*t~)dL&5(H4RD$7?T%{X|)Z&s*Z{ZgXe-nLrE*@^S^PQEz~!RjlD#|lHRo5nA22K zR)*0@gAr8}q6|tds)N1m74!~hbBSZKgMpytVBX%xKb;IG1AHYpfk!ZAF6_KuHanz< zMr-uBdyUdt3B;(-wpYU=LZ(LK-zOG6efrdMZPw9J3M46Y^$?$JIPNO~?yM&S{VvTO z$g7*~lqs#mD8S+(vEt(5p8G#@3On^&=X0{N=UPo#%B9GEFS`dm7l9}U6qaEJot+<1 z0om;R?Q&Kln>2;Qtm~Xu@DV~AbKmt90fxGn3QaJ-`EypDC&Sn?P7V%BTMg6ne<7*| zt$nxm$F@4k)BS$yE!;Q$?<5;(234js&?8I5vvz-H|L7wPH8tE0K?~qDz#I2>4A`g7p1rH8 z+DjmIGw)X&nP2Yht)H2BPnFvAxWB&yMFma{>LJ_B3wjWOw)+ir_3q(xvU8u_I!w8d zi@h^wO-;ej8n+%-a&UM%LCneSI-FQ$Bx=Li^Li?I^b!k3hxu%uTp? zp<-;$?%mqi!wSXSzbaCaImEBaJU%9X**80j1uGN!JX!5&VcOysGv)!d1oE-d;5tt3|?Hg zAhd-VD|0?JK*Bilx+a0?&keMFlMq*4!J2*dFib0CN813{78JCj=M5B>x$nmm=|ybk=H^74_+u^1*H*~)?%QYmO<(RZZCcX^%#b_s zrs|8GRSXTwVQi0HTjR(akmq?#UiJ0h{cbixsYEp(DG!7v2)3j7o zxtLAVfWyI@KDXWMPTe3DePW#NWRJTN`j(e3Pk(-@dhD(SGG7%H8CI5sxnE}n`VHDA z7Icf3ue>@}-qyx*=FGd))aHJF5)bh(d`lWB#oDj=(&&ftZ{w4 z{e;Mi(9k4(o6(u+=}57q_aHwYtRJJGaD>^Jv@$a11B_9P1vWx{GGH;-HRwb|Me!MZ zTL8Ua?_NQgeI~L3MF*+<_`}4;1kNWm!3g&z#zg28t~PF&mtZ+HkKPBMg1LnS+A}wm zw6*aBMRx7niNM1wB9d^Yt{?gP+eG8G^ow#;FL7f)V8EqlrKz_SQ_|3Eb}K-tp`f6+ zQ@3tCHA*MQS>7XgoRw8;ZFGw9%)P$m!>s-hHG?t%YR&>De!i23Gwul zfuQ)SsjFisTsDMvsPdAXL*VSw)_jdnFruQ$YCHZ?Nm=>FCE=qBPYa7DYrvj!bQIpC zvb3X935k?t=55`WjBG7@aMdRFoH!p9g=esW|)~BXJjk|8ACbt3)-06 zTwM276~Gk&3*oI~8(N%bd!TMm&9IqsDuZ|#g-17BywC-djW{Y1us_=C_3LMGaRwES zlGv)6llYqDSil2OS5KDcuoD%A_G3EBa?V=nq+ssE*TAI9my6M6seL7Ep4I*vd9upP z{`4X{HI)zOKa71GY*q{ps%mz8#4F4(ZAS;|^k5So8Dd{=l*I*B%9SgrEhggkm{p|| zUVZ&mC8Cp&`~7<^1x28L254owc6oYVx_Q&;5AO%g@Xe5IeesX1x9W>^E$Dzmcc zuDm=WAYfPIGYN(RcwqTnug={o0y!m#>|VoHr~UQD{6gLNuMsfu?eFpJks?`or4RjA z-r7swx>d3~KQ|JDc6)fuAg*h1@vofoh=D+MHfdZZWO>1?D;x|zI(AhJb0yxr^Lk7+ zRsWlW_G^|be;`DZPT?khL=D=J^z)lKSPu`3P2;yqbyC($Q|FqRm>^=9$-GTl`ct?G zVIx_6*0O^E*e$?PxJ0yvGfLe`oRs|*o@#dA%fjplmMbsC(4;ENNm`P3aT$Wina`#B z_ao4ry^4D4z!T3rl&b`g#z!ORC0q>9S*!?P#Nfs@J;|QxYI&*VXwyrVhTmM=1>!qG z2c6(`DPStdcQ%PL+?<^GlZ6pTFyo&NDbtBjfWC~SG&?)1k>c%V-kEjB+HL(tPAo>d zNPTXo1O;eqZ96q*KCz;rt$g6~=g&IM6GbsGpHS~XV>nX9F(lYwwi#SMlsh1}4h$Oc z=&gT56!hFLFKo}Lzp-AtLYh+ZB%hlQeVvdn80ny^;TdF{(?M}UrgUjAMJsQe-)*%& zP0Kx5sOYPJyZgpa)Cxhw{{&b&5E67|k9c}}Z}|Fk5F9k13r08mH|3_k-+)VJc{%We zr!;PWj(mt1@US>K6QJB;q^=&cC8SQCGW2aX(=D9apH-kPg?&ax(I8_!0dkZ^>LTgk z_7$oA`ZsH&u305pTQj4KaL2%n(=UE=cwSTB{x2&( znb}sY4V4usdcJsno1{B6;Tf1gAbpaTm;G#J1v2vZ1W7D1%fgY6X!q`}W{;A8{#o68 z=XO5FvDRo%vQ??AXAF!~{ZiYu_{n6st>uCLk@}X6ngU%<507+oq~SOi-I4vY*_huy z7AZuo-IyX=t}{9r($piuMSjfINh;?-rD@vy_8ORM)Fg|!;mlp+ld7I+u=E%RH?_EO znYI{YNxKwc)}0|-FPu)AojX941zj}U(d;4~$l728&ru@4df+NI?BaZDj9`v!=CsU2 zaW`9$t}9i4qSGN&s}suyj>D*?2B3GKKy0)dsx^;xUw`T~{ylR(x08xA(liC7(^D^* z*dkK5mOa50A0Cz94{+T!y$P_*kif`?mZYzL13FD{=#YBGNADQ$q$ZK;D_QCp4Nlt( z?TsH9QhpV^dy^kE*>K|S+HwwaW323Rx{wxeX`(`R?!*uRu9Kr<@C!;IJK=lxCa_IV zZl7R={nUZId+)i5ZZ5$s)HRRy`bups2wWm=#wJ?CqEKY^^%;d_(X=(#v)bBPl9C&6 z{eD}H1RAtSH_{D^&p4Ll)*N^oY|c?h;!(A0w&@88B1~^gas1xD4{o*pDNnM!GxQsR z{=U9dUoUAiF;fUT@n588KSV|K0}1%SgXbW$vp&m2j0D$b@y?eazRAx+{P*I4y`3F$*M%zF!6i~8a;!Zawda+_^ z7Y@PsDxCI=60cf|oih;4u?_&bkjC3vzUd#e);7C{peHh@W@vB>zC8K585wD5=Gls) z#8mh}z$WLDatr3$fpzB8_f+=Sl00rE!jFiBpQk6LAF|Ec7!BUD8+?r;1^^_;I3VIm zGm6@OrjTP04-b6Rm8bh?!roa%W*G+^d^Q0wW8w*4%M5o^MWLd{<_b!~X^-OD&c$Z!PIOL&FWeu=3NrSN>{l?h)?WI~B;ww`|cC;l6qEBr^sKgBR@%Rq1BKwg>E&;nw zNvf>J9tG3Iw~dXhS8K1OMx`*wo*1KNW=2OuBr-iom0wKXhWoSO_I+)-qIErzy~7P< zV8n)n$v%4IUbdT}Sl2SIGh&0=9)12UTkwYcx$qwmofA6QHbc49+=Nvh9*L2L6KI5N zNA6!EnaeNmCP1Pxtd*l&_6ugZNM2&tMveWye%1Tp@b;0E+v+p{>3Vvn9;&T1 z(in!wMkXe<(K~cCVH~0kA^g~iD)x_pqw3?wkF_`l`}&s4d`9UTOE+!`2?^P~@&WZ? zc2@N;BQqwY)9i~}n7S$*>1lDP@A6#A5k1_rk3>Os{EotuU3 zKS=*&{a1PQ&vJ6cyzVtCdyaD(_a1mY42^R^#Yqpan~S1bzV9ShveV__n>QO_voP6H zMoA26T#o7OSl7m1MoWu}A~Ii!S7&Sj1MQD$ANr3ApqzC_4~{z{zP`2uqVDzU`Hr(+ zz)VcqQR{448_AK{8TDkg;n+M#riLpET$*VM9i~Gd3z?OBlSgcbp-4f_1>lHK>iz-d zlB2|=Cy_u@bgx~zjse!q18m+Zkb(__0tIm33+(o0?x zu}GQkoS_jHyMpf8qv@c?+ev_PB)guZ2HFj?maQ`5c zYcS5%+&qu@!@oG+tPZI`W*WqzLq*+|4vRqlBN_5wRxv6>@ESfzObm@-1Jhe#uKwq! z+z0F#U0n&M;=ecXBv#<7kDy{;?wgqSIhc?_;8!fec(?@{JRhfp@l(ttC2puPff<*T zd!3{ZwjF-mt}W`eN|~mf(smTb1E=Ihsz_2|(xl3+0-$zx`RS;s8?T)>I-U&kBP2$L z1F-^8 zu5;q*{N=I;0oUat{$N?iBl@FCabFt9LP{oOfI=Gepyy-hx2%OjQKjJW5vBEEv(o+M zq6?DE&GH54!^RWCD=c-p7*~Bqisq`{+o&H4(zMN=`*YZ3t?LU{8?i49z z+5IU$-=3SB6_HM$tqU43>CZiq^|v#d>GOW~ERCh9O*|UF*Tpdcz)#Y!%9bK2HFXuq z1V-bYU0zD-VVhi;SYhk_U(547$+CbVYCQI+%J^S#9nUOnb}e54mGEa@ z2l4*T3lTM#I6kHrwOUuj3zZ6BJ_g7B%YHJjrdeBGk)PNp(hY86aV_jSi6=xQuV*BE@tQ(Fo#X7kCDYMK`F7FcRa zt}i|UwxJlt3j}kVNEl1Wkgy?^L2`x623X{{EaO^43>z-rX(&>t`ESOnb{cN$?a17F z>^u9=q5^njue!OYChQX_P9bT5^V3xj)YJeTsjC;>sY{2ZtIa(9PPw3Ztayo9r$<Xo+g~U2!NxNWJ#c))_y5H*j`I`y~Atyy_w5ze)Jmt@)sQ&ZlXml~eFd-2uE1^^>*p~Cf9e`@) zS>C-RfW|qRUL0f5HZo_Y!D3xMwqHFZe$pij^kNoP(%O(@v|!j3oIXHJlS0_MZ}Zc& zFbUH6eW|O<02&+lwH36cDVm>6a2(^vc(qc0k#ugs>HhuU`6rth+0qNhH`CJ8cv_Je zVCE*Um88Qh=D}XZIhr|&ZcSAZ-Q5ycOPIh77fc<^Exp_J{3{r4d%WM5n_u>3bDu!o-NR@e z`=zL-opW3D%E;Jwak>fFaJMU|hDwq`GbDx$kqnIvip)|{cV`+A*6;Y@*5Te3OSTe{ zO_o+zIJ%815ChdmkcKe`u($NM+y8ESGTGhL)$Rj&k)T-0EV}Y7S&c)J!1epbS8uEp z$o|Wj>LuMf`)T;X|CpKJuJV5;V*7u5ul4BS6@Sa*<&AT0?`5?LF9<2Iy*M5F?LFyP z@s3?F|1j&ZGRGX}wtD0B&u)u_oqrpgcK%9rq&-4KZp0!ya&7vJ%Ot5R!|(kU@gek3E4)RJ8MU=KYm_CCw!8T4U8yTwGo056CL`H&{5_ zpSSJa?+aCPbaZr!NljIi^|>PFQ@@|z77{y{={cI1yrraA;DW&;`eWm1!@2E6TVWWieu6*Jz^_y`m zCKL8Y@BX>&^O-j1j@c8grnERExm)g#G0EvL;d&b2_%G*`{Jo|*UXqV=o(kcQFTZ^& z7}EaDCwP0vx`30)M=pL&WkXkc?%x)I!-@Y#9;_1B5Cep=x;h@w&g=bdFcbncEIiP@pdq6&|kH&+y=VhGvclTIU#DHo2ANkctEwTm26! z$}?T?i}Iz7W;uCMn-J39jp1e#w6yRClA8yWL}q3J%_g&~FdF#qY8h3y;X_`Bv)=J+4`nJy8xlk*OGqa&T>h zsXbnFDG~s$OZjGiilv^2bP` ztN;dqIEmQ~Z^t(hf}En<*9&%#4R&89Ki^JTBlReR^DFn$J-|P97CFL$#}jQ^d0Lw%HLz$luYcXpoWuwwMZG73lhW?9w?2*e z(FqjTjyykj8|(y}^rt6oKXmqNF`?%-zB#$sBxdWM^FRx=07rRu64|2SOX1mB!0<@a z=F{@JH;ui(Bnz|5f~gu5jWd|FqRaJ!!q2${BS$)O#?UuPq&N`;V$dq6Kk?VtEmL;= z`E!XoG{OZ;**#uL zxOPzMeUoro^-xK28GiEy;~DBID>u8h7>goLVt+uWfalZF=>O*qL*t{(43{s&4{}WXQyKa zD&X7?IJ|dkEaHw7*rn;fE2CX_*9Ixz%z*wZ(}<4q$^t!1sO<{0)snBdO%~jdT(kZ1 z;o+KTOET!M@YuZ-Yzw^Goro7cUI* zIx!J#xJ9EPRAuP{(PXGr2M!|OG(C^Xz1t*m@}$A+U^H<*SP^ZhH;8$bQ-Geq)5y4< znXO-OfIAek5LHcj-Hv;_6fiYHm+AcZUXMK)5-a0;jbADl-Oaj-rnYb2jtSDpoikff zG~h46B!wM9&7(_m^r$md$K@bh%kO8>J<@5}g22oOmW#LLvA2NjJwgR|N^KMN=ioRZ z)bq-KpN@-a47X%`IF>wqf~Qo>zUqZTx}IXm{pr5^d-_Pri4n542xO=~M}%WGSUnJ7 zI5fDOv7W#lYii;{e-phk8YU?#D=YANz(_6wjGm?rt^_0{Yv@4zU0Epv_R2DDZj}Kq zla#jhqa0IrY~E!|fWQODhZQ~ef};0p9(1y#-NJ$KIjtwkr1@=khF*`bP06p>SunnZ zHrDsR{Nr!h@LSn%wZ*2Foc#s?kJAQ78Ak=pwBOyl1vb{CU{k`?fPet%3+TRG-rWG3 zOl}W)Tr2p4#&*qD|QRc&n!by2I2;()E%VGLs5=gTlb)!2Ox z4xNxc);`LiOBo?8fR8C4^Oy|6<#Uivex-Wu<|L(;R7Aca+CLx%io4lEmUj;(X)7 z0(V62Udfn!J7g|+;Vy-tK7s`wXgn*Q$m%f0;WPa2fw#J*0805x#sroM7nd&0;lr`l z*g>Bm-~&D9pv$kWG`NikItUsgFdzkq0T1OIO!$z_Sk%Wz7iDBj;X%eFGBFK+?LP11 zs-RF?Q;cn)wfl#40WLZNjnCaobo_4ta=^X!w7@wKwU=h8!-WDieY@}&H~yLKt`FaWR+zLt^!{j2l@0*Jwm}%IDKLek}+?XMYmy&<`CkV8+&Lq z*nOu)GHrL&cpq^mF9v(mmr;^iLIUFjdeAi&by<9em5o_fAea)mgnWqOD5M1=+!t?M zjg{GtlbVWNr$E|=iq5ZtxcM_42T?!>FUf!@H#hBrNykSn4BKi3%e7!lX0@-*H7Q=6 z*uHIBU*Bj?E!j@W&EXR$p*eyo|9SLChr8|NS$%k+BhLt%>I|Z!*~8?v^tgw0>z0kX zh8$-OT>!BJ6h7l0pQMj)sB0HHmE#$^&oxw7v|JAtJVsB?C64up+y~fb35Hp9BJNxV=1En1yq^nhFP zHFn~|K;4YI&WXvFr{Uu{V14=LG|p#`5v20qOYV16)UZkvjO4Yr%a;9}8#N~iwF|6a z>);p6xJ|0kZn$cqTgjMb_!cNP(U!iA{T$U<0%=REeWC=y^J|)ovwiqq_CR0c((Y z;cP3b$vmrWsW_Q9X}AbeAWQa(4;w(Fhk~!>??+EAxj!qyMnDz@e&616{oqS+hnmjx zJH!jQrKyiu7v#t9$k)M3BaMce+o5`(qjclLV>0U4SdIdcZoZXnnz|&Zi>y%6T zY-s|%1Mnf>1B>$v5#WD1QU)S{^t=$qrsfa%O&9&kmx=FgJ#uCaE-iJ(@cIc|Ix7N3 zYRdJ=%Tl2Z_$T5O;tR-crF}`|cJRIY=T9VHm zW+|dOa-`+mtukP1(16&)>5PnwTn*>16)){I!efP<{1mABh-zamU%pIIm8>7hZnS-h z?S>tF>$4YYvU(cgwJ9V3x`iUWlP&KJtHBh(aWHF7zB*lD2S4J<-JO7

R=987$3_>Nr5&iZ?m?SFDAaUsyRhNh>h)?Y`~;Wp>0W8GLo4y z#`PbzZeRBF^t3}_2P&V8|FL_7(4CY%2!j?OE2O$Z>4&#GXjFN!Ef$*$rUCJevx`WV zxwOxfnznI+$MK49C`GIWBUFCciojjEBer7g^ywsWNioioajWPKV)S~vT=2_{wW)R& z%%)+xe&JIKc!a3gQZb;UE*%r+VQH3&*(aEAj}6d{+<;ZVa;FqRAN zczX4fL>?d;JXzD6j%YVcf>DhLAU?2qY5jy15^egwCL+Irp^w8vhb|T&vU7Qd^dm-6 zmffqf&riuGUU3}C>p2j>ur^07nOdBdoS?Wd2g)^Oq*Wq)0jQ^_o_ZaaM^R@n|Lgp& z(TNcw92uNHn73|W<9h$>*)JD|P5LMy!{BQcyMLcxF>($tUc``F$N zjqcY@VJnVJ7{eN%#J6vpo@IB>{H0eKrJXJL7cS}3&HAmUeE;6{;@$0Iwuf+4KYyMG zt^Qq)zi%Hezs_Z4sg(3$@8ia{HjNAiJVM@cSs7+rPPqD7172D`nTVP%ox)0IMy?Vu z%=!w8`-Zjjn8)9{C>b6dV7s+>;YX@pAI3r4VLeb)pv@grX_k3?++Ox9)t)ZCaeL45 z+h@bRafha0FN#FwW^+`fAoBt5B(1W-Q4E~)c$N5;?u9yP+={>cyPx)~ zj}%tL^S-u0-^fXo*u+$$!@j`$(D?zs$SVcBHBv{Y=}mG9vwdcio@_gT?q%l7F!p_2 zRH4eJeur#OSB`{ng^x$lwtM3@W!HQ=$p93oQT3B#`pz(9DenrV0q znvC5y?rO{h@KVx@*oxfcR=-QVt;;ZOq(mfg(w^J^ZY*VZ8=B3lmu9fVqv8(LO6%IX zw~GP4GpD29x%T`LN@J@@AaWC* z4*Gq1;2dmg8BVllGp?$alQA4qZTt=UJf=QIsqPW0qLOjM`P7BoIhuxo5k(Drzw~;o zzUOpwMzs%#qd@z;J$fhOmDtP#)%S1rM!wN*W{>sL@p$#oe|Cio`F|$APM&ruR>Wko z#|KT@QmZP@hS&>lnUwo>W?Pjvs_@p-8(G;YUp+BbSBIb;7JhUO_Mq0iMCl7&Fs~k+ zmx$LQe?Vv^QqxGw$iOS}?bokfG4$Qwl%o!zw!Hiy5(H)o7niKXMI#bXBQe{wl0&4h z5kppjvv4;Xi@V{hy2y`21o9f@^UVnLNlZo069!h?PYVYr=qIGlyXg{ zW3;r>RUABg6nhM{uV24^?V7~Yab@KrWuHFDmoRME;;rEqo@2nf)FHs(_r)ystn);8 zFmG6qOpRu|4)uEE6&604ebA!q$PTO?*!k%1l$xQSHUYY{k2k;0cIKnG-!GfdMr|{n zPfav5rNJ-+tL3@77rekw!>}fUj%-DbgE-0$Ta+qbrCq4X*9Ja9~6u8v1XMt`AC z+D1N;fl~MJUS)A7Tj~p(*Wa;0!_gz?RP0v&dMiMUjj@cMj`qMRFl}tX(cjNMy&2B^ z5i4kD{zCQUlVMMe!77I@pa;_-zZUzs%kW_!(E_E}J~A@=7j6X?yz=vR0>)TH>UQAR zIiM01yBKJiK@Nf4Zm1rEsCEBgFy}EPlupQE9EqUgNPKAgMUR6x?gS%>ukq|ytbp|K zhubUk=2q^uBN1bSeY^k{mwEGBR!pBj$~b|^DtOk%FKzSvZ;#9Z4Z3`}?eRgJoJf?q38Xf_NPC&S8L4K@MQ5Py z+p{g!`I8P64ZZmC3X}mMoHzJUT^BpMAGuJp(6I>R00d;s7J2BaYJiNk+8=a6&)ro8 z*#e3v=v9I|4kG7l8nfH1Cle|vD#)17{=HU+uw_@WczXdViN^=q+rQu{?!)yIQ+26P<_Y9h(UDlEYoH& zf~lb#8nshZ!5r|O9kc-SKi8Qr7f*SC#!vX}-Mf=~t?4=(oSav7Z`MQT&*y7%Gf8XIYt}4NLZl)IAw!wFl`_xslzEII^VC3+qCzsynLyMuIoI{<2=ses0)Jt7>AEVudwLRqq?MxImUj+ zE(JbM>Yn+$`|gu#VcR5K;nNK$6J*_#STE^LaxyZqgBk{;ux#ulRtDj7)xak)$K?p0 zA>~X;*2}OOgfHi*`kQkQ%u%9ycXF2fkVUApWB8AOtMiB(VSk@81``{vEdH6JO#zue~&c?h}8coS<*D zk)z<@>Lv2{!5$Qv@+lMqP#~W@D{uGE%D2kr9hmxG)tVtjY2uqGcU1#!z|q6x^JsV? z#OdPlwZ7_6`@&tzN*2gc76(vHG5JU)GI0?OUGIPAn$mpI=gkfOa#j+Osl(Uz(rIL< zdrn5EojWJ_bAvI$33_tfyXoThpmNc6dd-awSVW|!|60}i_tLkNZrn(I`SJ_Mi=d&M zWV(9>9`%6Xx? ze5cZ|eKZgCj*#c?Ps8FP{rl;<=iIWCOz9t8QSh?xs%kmv9FSIJx-Z)KaI_O`r`*@;kqg6h_;Svr>6xgj+r8h?HQ79HWO*#oiqh&!LwS26| zR8<{tFp}5uxX8ZUyQSph9d~(B zu4jBI(vavM1l&&SXVn1a*({old;OkQSa8F%zC8RJ_#-iKJmfI)*+DS+*d@^gV$A9* zQzN}TB>fHmu^bBy6aXXWwQ(4f-ROR!0WWanPK_5)7Mvhv40D7ZMkTYx=hhxn-*m|bLNb&ux^^FG?P5K zeXGAe8z5@#z5C6yPW^HZmI70s8Rn)5_t0VS@!86B0g?+rLHeCg@9VesN6&@!;W_2{ zqZ&~@?v+R-cQU8|nqtWQFAm%`ga*I3IB}3}p1IU} zPJnlb3;=58r|Y}7%wz*eP|GngU2MkiPJ617j+@8e2fMv={3kWCqIgSxKyAToGT*Jj)+W~0165a}u#(^!w44e6_#V7p|3tLN#TLcU~VO9oNM#0?3#xi9fRu@2;Mhjkm zO0cK0EOxp|Y}F{TVq;C%LM5V>O^vPKYS-{g|FNMuI;<}BrC>q&eM}c1b>QTrj>S9l zF|;T5zP*fsLb=ONWi&u^ISqMf(ZcC3W1fVe70f^2o3)0~*(iDQx#6FfZQf1Ij^T6k zsNu9LEG*2-JoI{4B>qL=img;I1g^VfMzq@cHn$*~q$~v91DV99IR4+Hnsa zLy~Qz_!wfec4(MJIOcMI!=dBtE_=+c@xHI8$l|bKD+dCc%Q2I>47t)=mSLuG}M(DV_(!Bo`(&~ff{oEA*Vj>xoDc%(l$dmWOQC>b!GEt2URnLn&>rGR%JmIows#d(6 z9wWD@ff!J3`nSUGsf`0=fsN|eKGt2~vd@)IChvcF>exrcD@ZRUonZTut*mu-SY(rF zlyVxdjr^{w7vD%d`@g(HuJ+Yk+bZ|69`z+y=66aL-}lCaUnWIJO=}*7ADb#0RSvHr z7xDem@SisX_23xaD2Q6w7oYXtg46kf2|G-TU*x}=EECj zG>@ug)SBPwIu=~pVigKRK=b~R*T~*on5gn_MpxL>oGzd{8!U*%eZb-2wUpBQ`}gm3 zRcT9^$8{uAQqb~mXlQT9j;b4ymXj;4-2W0Eq~FI+@`=l=CC=c47K&ydL|5z$G9}I&iQ6=98l8}T~3nwj!$1*z4j{nl5X2h@jW!8}F z|KI%4x6HR6%yJ<+7cM)T43j?M*LtoAPdLW4IwthT`gCqRZnaX&P}3j#OC9?rCZDOU zg>H`H6kck>e<~CxT>pQ)6h>6aX^<|%OWg~SIzaT1PdRqx4^x?hRdSavA*J~o{XSF` z$to__8^@#Q6M+O;<(vGY3|EbUn@G{qjt(}S@6`(F9q+VtHZe6_US6&pvJb9BjqXDR zFwfom?+w2>A;rkfQqQ5B(F#LZr{YTYlsTg-$9HJyGRVEZBrgY-{grx_Lqp-qqduAZ^5uz+#TnO}$gK9MPI{z!mfP}g_2>q+P? zVW5!$d%RZn?*KH()T4t3OaG2-zwNpAA2jJdei*m@Kl3BoAnfjnE3A`je^v@f$>q^x zuM@y#JeFsdr?ksFs?n(|xzQ^$GLRU{WBQ8hd*O)whg_L7Rokv#GFPr#Ns-t494%x( zOGLErdQX znUUuva;JQg2a%`)Mce17<>k(Nv0mGbzgLu8r*lgQdg`IlzGO!^Ic-6>KyE@OIDg(! zLsIg2n0$nvb|&%=Gi`0{>yGfy08g7axK@`_qk;or7B;Sj=;>8;Q~rLOtlYi39y|#S zPKH)z8iCZWGUk~Jhw~lCJpcO9SW56s9UP>CHff$shdr@kdnV$pUTE)?UCMvG`%M_w ze4WX4Yham5`2DK9D?*g<8qZzv7BR)!b%zHa=9HPj^n>T zGwC$psjd+So?^!&u5O;i`csasvensB$;y!0*zY*iee&$tCE$e_8XGT>%yt!Vrj?*w zgCeF_%}yo73vDKGrYcZ+I+A6~(|$&m#r=IY%++`{6{71dW574i>P1#~=wN%?)h>RZ znjX;U@g)PZ01H2gd!QLb_StCpLR})i0(x(nq>mw|eMP(+2xwJ}KplubMOJMuAj#jC z);fkUt&0~f01$W%atbI@ZKLy4Y!{@iVn`9HV7_Fys4sXQG|dkS{n9`K6O11!T3SJe z;St|#T{eZpM#?WbnwrmwJylgh2ugyddH!6ncw@-Blq9_Wgv|h~@&IKtgRc*V#zNgJ zuq$wGO!32LM=tVxO;r^tHsE{|1ljOeTadj_b3%K~VeuENh^%-ckm`^1mTCl0XCn9R zh&#WA8qBuiRkB(JKj9u4R_d9ZWgF{$P2Vpd6grI90ut;+-w-+S@E}cq6V;kp2Xugi9HZvH3%(C%LA<>ihPCRess}Z*V^DM#>J4wHgl$3_!3EttV2_YXz>* zYoegYK1Uyj*B#nZfqLCx*n`>Ur6zl>x%a58da0XDC|js0PY3d?42_^nZ9X%Q!wL6b zpfT*;`{2Qza9Mt{PrI*Q-wRq2+Nmn&V|zZ%PM~rBONwL_k{+>5Lt08yopK!SMQM)? zMxGMON=n5;I`4*$+%&g+$v~rcs(zN7pj+Zn(Syuc*X<=HRl3*c_S}tB7_%?bcQO1_ z!>DkWf8sHoZjN>)%FHO?PI|Ii{!kyuY=i zseqzVC-D6M0k+3Gnch`yXi>4Uvv;qZ73yLo-YOu~PoApsfhYTVy_QX75+#uyUu}AG z9S1-WI0d|?1nH4P#4-S5c5gGA47-N85EBc%0 zwB6ai4~pWzbA?#UiM~dATy*Y}1uA9KR_hDxKY{Rk7@7shiHh}D zp9(Omvy06zAK_-|PhUwxHXT<0KzJ7uMlRxaQ6-2jT}fX#)AM)3e=JibeE@RGe24iN z$%k%Z4+Zog?upJ}#kYzr#>U2WtzK;}PUC!oxBxx9%~uc*9vnIYquJr!mD&@r+U#v7 zV(GcfJ_QhnjK23l-f|HEh`{=uj_(F*?Z5&R5*GGoO>Yen{rwfSy6aNEACZIN0C%>5 znsThDSrI#!);ox`S~(WR!Y7yV3s|0WU3r#0C9bP44TDfe8)7E-qG$f!3zm*xKYm=e z?=Z?w0DrF2RUjpxXaSXlFMQU(j#U6$h{fa4fCd5d+7C$+=7u?X_J&BCT3DpYvJ|^5 zq`SM?`0H{C(Ch(P1U_}A5f=^6=3+0Ab3#HZpHC;<>_v);jK<2UGdlL~{*80NyqSJ! z#IxzFrsWV`rVH?HWSWZr_h_uAxZRIY9`2CA`qOjhmF#AMLQZt?!ya1&NcAmVOKEn+ zVb-mKPw{$2*O&WoH+%0hKl&%zF-+#KOr43~zsh6XHnP1^Y`5`r&&v3R#|pq~LX7^A zCUwq#br!#ct=m`PT1U+hK?G53UeiN^2cmealL>zx%#@b%d89R5(1cxmm7JIH_oqt= zkHVb(E>IFyo&R^|8zIaNv^X)FM?qOvc6B$;>zYJnk4#jS<#g-cXnd2Hd8MhQ13-dN zR$e8tY~?fdt`9DL)o z_8Ta^JvzBz(8U1Fj)+2|iw%hsHrZIW(q0pubJ3rLPVV{pc38k#S{=(%vqo1a>FFo* zb5b?38L~@w*GU}zZ`rTh4VG^_z8rMs9~uAD4= z>(-{x(L(~$$XuS2z1sZoP5A%JHJ{rsnjde65quFGK2F8O9*z3#RL2?teNgDv4Nr8O zsqXqayD{?w3<0gnmtD$)AkdnPF>9e}Tjs@j3v4s+YdBpBtzm|F?b{aLLIF8arMC|) z5zd!D{G79Sp`LlS+UTTgLm`JYuR&tt{J6l(u--^R?DFcI7R2zBn2KpdR~tbyw9MCL z@~Ioresir6q*Nh#jDX&QkoX3&7qD%8(T-V#t_AozYT_CN?qlyllzg&m+j7l=!q14g zL+c7Sxf1)~zuPDq77e9;m=V3&m6ubR3mF%u`xXtv=;hK>!CqU0)FG?M$hK?~UZbjD zuzeiGaBlmKw#g6=*x|@vv}=LVUBZVz?2QUJee$O`QNH123pCEab!Z4(kIT1|f*49o zUMaICYW_9=oyx$wCoC#Tm%a4Q*1D-Y_=itW%qU>TVDL-=1i;fKS3-*CJoF$zGtrUj z$}b=Js}XFKoqP5`ugeyN2vN2Vl6OgZi+z2Wh+Y7>F!9<4+-?Ox;i3{k^kR#O0-#o8 zUhDJCzatx{=;^_~pFvz@VPPR!V}FU4aHZw_U$DcGm!L}+L1u)eY5+AyIR9kuCC0-* z9xyK`OXPgt-QyZ(T1UOl&lra>R(px-(DNOP^qr|nm0&=*%~Zt8r&y1*l&2i7u2OY{ zKjUz{&b66u72X_)-!f8x?=Q{tBZbp1x?x&z+ZW_cast8-k|qEv@B6P!^m$)dU){FP zFHt)5BLvMRfYc@NV`Bt~3Qm-*jKSm>db>v0X#~==`uWjVwBi!I*4)rC0L48V-K>JK z+;7=`)4Z7{9@JE9)P*UOQnCKOvUhc`D~$NIqhUT0^z24%gyS?$~@iSo4_w9 z=vI9{8PaYankBU((Hhm~rPbrk46PVw_HMW8b_54nE@l$yQBrlZH~6 z$1+IF7Ts_9!E{tZuhh0D0)XglCVem03A|pnJjMg!i~ML)Q12ngZI2 zpS}L%MmfeLR*)E=+t70moV13MD!s(C84Ko!kLGKeWg>$w@zNr$U!Em+VXDU(vZ_s= zqOo3YW>~bO8e%VkB(MgRMYh%n95$ev5$++ZPIlxjF0`N6$@JQ$<9YkIPYO~R%&{~g zxi_v^CntQ0Ug@dw&&K46cIQeBV@;AV>RHFZ4+knL&ZBj;(Mg;R1K2{W1R+cA&hQ1k z7U`;Kv)O)#C22F!2fK-4dIGjdmxGdpl8z&1eiFDg*IF`kB7u?YUjB$CR9(ABBS;i4&PW? z9>GAOs7$9lI>tEGh?@#eFiR@OP_n&>L;adchxvh$!gZvhf3AOdmI@sO;N`F9Z-C&?v}I9)31h1UD}T`$ z=Jz@UNkjVP+S=vA22`)YS*wn=p>pYQpDsPUrc-Di>Rw#`Yw=c-n>fNeDUlTlnZ+;V z-pKO$x&zipnUaL6k2g&kgHh+a^^FPZ(cQe1?zgz(B-Uve^F!R65x7fjiyt>x^y+JfG z$FQ=9IO;-wR&(rEN^Bb`UN})(D+1rM>~viR;{nJV7LJgOVI{$J)Qi#uB!+$ zZVO+(eTxJ81*(;*Q>FHWpunW4XEVT1EE~mY$1787By>~TQ4qX9_59991Amy7-v&)! z>#}t>`4|=YbF(_=g`0g^$^%ywb=K0-K$_!NO9wd2WCU%qR6rNp+}wrxm;X|J89ipE zaN48x=)pFVi#l5oEs>nmjm8xuHNt55AE4Ze%480~O$(;u{V;OLM0j3 zf*T!tE*A;hpl2*Y@tNqKrzh_J^Ls)&Y8#|$O#^(^UX+BA`KD))BZoi|L|}hHOZlqH z`|3cT((#4yn&juthq`!}nH}HxwD-AYcV*@=vIp69NhV_7^7x%1J?zcvB{3C>g>6cqD;gsjO zqRvzmdTJ*=)6W$BYrn_K!t~vsAX9_Xu0{rL2g)qwJ3V+UUMI#d?rvBxr zd-q7ooiY_wymrBq1G5i33Yfrz-Vkb252S^EfRawchx=3+yUrD$1%rw5hx8Tg?I+HD zMMnK-+P)Jl6v61Sn_Y?j#Tw4fn#pe|d8~_vTG;yVzvXk2W~v!D!2Tn`%@o-5@F? z8LxO*0pJdFqxn!h?enX|U%ms*%;0*%HQ!xS5Xz>Y*DbptQxpoQv2bHRyTJAilLW)b z9yePJ?lxij!5?gD=~OZrg=^E^rzJ0{eaPirbiTJ3f+J^I>iKwrw@le4Ry(xphOd!b|ZVKEPXmxXPv7p`Ie>G|`l2IfvWK z(4au7m8X}zXxa7JxbErIgv1Q^$PEtC_>w_>2>d%S?{!_cu14}%8*=kM6^8}Jft6|9T`-@r&3Wca)|y`3mfiQoh}(I*?F?rYn%FYZMZ=;!$ub9# zuu(Ji@vyS~m>mk3+V}##C#GdN@oYyIME(7DPE88L7AYk@$0Qy^yHGG_X@wI$;Mu#6 zwMeBjU(a~5>nuu6%bp^=Nd8F-K%t-7)ZDzQZ1vsz$;QzefIS26-MjxVb839t8GeKq znZT@wUYWnVnw$+cyE)Y@K7@P(Y0i$;3fI!qSjQU@y`6JsHmvh z<%Zo!5vO&}wkKYS1x+hm6~hQyE!#8YIeb#J`Cc2>WL>}h5CckxGSYpjI5Q#isA)gz zNF2b#!5R@GN&(rKLSo2 zDt(x-FTru#34t}VPNa+}+dyHgF%fc1zPaWKr$RsCC3%+3=f?`&7kksvPC_}k?|^EW z@_gL+{gBSZ&IHSK#qDBDGY(ugbh+PjvZG)7H#uzhKwqq#{yLOw9Z zwC;6%WC5lRuf?3cUM7)^cUoV+#l#dJE!1a_C^?B~D*O|fG1i)406TVd_2=^o%50&a zxLp^FZqGh3v~nhetFNhmO^PKL#O61iE1&bN`%)S$$SF2H-#eudh>=5`%DbT5&1z)n zKGoNBHcUtzI7r+QQ$E0L{xq;lL@NOWd4W!}F_r-(v(cuf_wJ>FYpG9qeRU}Z-=q4K z%3eG`NNtV4d7P;j-vnqSN`54_A<#cCi`@sVnhWCs9!vfGs7_BPtgEHSm)0=Qxz0Vf zJ2UeE6F?WirNmps9jW}$czS7N$6)U|#=*94-@d`OE%M^(cC*v0rlrJ6#J<4`_o56uibs1%BaW|XXFWt`*hji#IpZTqqr>_b`UhQM7EU@LT zeQqw}wKz0X{rU4};d2h3!#m6yqFl!_ozvX2ZEPksZ*f<6#&zz@nZ&%j8}AabH||JrI6WPExWwzh02MrqV?6gcER8h!jUBH>=~XImE9MQo_Y8rd|;^c zjy6Mdp$mU6U zd4Y=FOcdvhj0!Lc!=$JqI<1n`_8;I+ym=%@y;b z4*Df7zgCxXQPF2?d@6Fnv=t_(0*Ef76cnqgn_G)jcJG;38_NhjdaM%ZfgX2@S^z22 z+;Axjbo#2QmLNb|=wOhcWt?wC8ZB?|YOo&HpZuJ~+^p;wE)0#$)=SrhKe^(egomF_ z{rIK8ZX+ql2XfD@bNX|O)6A6jFCXSeO-MK@BH~N->}8?;&kuZfpBEB;*U)B4CTE>~^G#E2@Ik z!{=w*VGScH%g5v#`Cy!|Xjmz^ee1luloUDXR=biM-Q(n~4?fnUq!cdKsrSK_;Q9cI ziCG!^YO^vL8dWtyvrZ*3N!$evAZ>3?u($u7sx*+w|9z};IluiWH5HYx8)Z*sVeMEsQD>#?>SduZq>d5>^#FpG&PlwNB|%{g#@=&K-4>N;~|BHFnP zmHzbag;VFxZ%I-f#mu|(-g&5B!T7m1f82abrLl4UbWgDaslUH#p3~%|m>3b1<-Ci0 zZu4(WC@=sKx<_WevEBoXO8*N9Po5an5B2vif=9?>RP`hA(tdKnix)38R{Ek_o^3vJ zW{yF`BUbcb@@uEXsmZTjYkbJk@?Jr#5l|@9Z;juVAlTo6qU!+y{s{V(a87+16Qezz zrJ@pyku(vJ(s%C&JDGm{+LwPfok}^g_&K~6ru5dA1`2$9QhXk@w1m8Sw>dMxc7nf^ z@kM$%mXGH`s}$JKQc^oxz>s)jT%!@eOhLDTZ{+p$MPA!&+^6kR)zsvI5crobIuQe& z^z`)09u@u+mrP!zUkXYna+;KXm;~zXgL|YYcMB+~sXxVT2tqSvyL45xNSV{59pT>P z`&YSVut(Q^O?tz$$*PAB z92g;|)zRjfV@Kbm&0y%HZe%X)y5QhYw_xzEiDl+v1HOUMIvO1I4i3{z$z3>ser}kC z_N6uJX5Rd>%FCT5XLHR*v7~*-7=osUh7!vRMw^lyS{kRj3jr_nl&#q6*xK%6f|Y>t z=csKhf{yudU^w5r*^5WglA{<97?{*-X=X;PN&*6It}KJ-1Kr$V39<5i|pEV|zw&Sqk0K2Z9UOu^Gv`}$I zxxoPfr-7)!_$=1W+R6@PU{B-dlyHvAJn4zJwQ}Qra zR?bdS&#)%jv&IvSC22dO%Rx>a144iZ91@tBPl|}-54V4NZ>u7Z`6MUT;fT+h!opll z8#_Bjt3pLqqug`2r3mM9s861ThJrMGl#LCFsgFNiCnMkpL`F9`a?rxqxGPyk0N#gJ zxKd?!PANax_)=Jkg0Xc^{+&A%K{WwEK`R@2 zGO4=Tlg$+{fm!ak;w0uBBhS%zKq50gRpmr`Nr~=4^qn!;sD0AOJe*Tfe)~Q{(W|YE zA5j`&yej1xfk}8z{2H51Qod;qN23m&Oa`u*1>gR=*D{$Smlvh2Fmpt|SG4og=e#+{d@4zM&z*y4|ty zFb)|OpNYQm6G!3-Qc_U(S14N!VG<}^>#SVY^L>2McOPw>-c(<4z|hbc(#!QmoT2Jo z8*2ik?mHHK^aCneGH+-i{viB?)#}ot-qID8<5dVKh)z}2)%nA}tdkSpSv0<2LSu|2 zm^)mSa5=NsEVlzeCF|r@oOn1ZZr|RHvqmXQ6H!k)K$HEs`om0tu6Je*`tDcLLPH&u zl|2x6t*o9z_mp4ET<66IYHd32x^lQ%U6GDrsnt{e3rCgO6Ye%dCMvS>i4hVTX}!p- zd!+Q_rZ=2Z&P8jjowu4wU}9D$Zpo%hopyLQz;)HY)A5P;5foT&2WlD{Vv^y=M%3L0 z*5L9nBpeegXT8@S{Lba*_4F)2=(YZ=XCw0er}49}fTck;GT$FP+TB`oY=WUS3vKG21{@^+>36 z{!<}Ar?~B+ywrS$K0c(=Xq}_Bmee25vhI zLOcc)t9^#11p&wA>LjK+^Uv?tQR7xV;_l)iC@2UTzW+zwhlf|#m^uYG4-jT&?NL*_ z8~B-O$n*L0;Z~itp4($;xw7>1Q7r*30x#H9x`lRv)RBK!XB8?<3+AQ9^G2pA6h2$q-TlNv2H-$j1&}^`C$kkFwr0W1@j!j;1V&L-(7V_^e{o8LBEPt?MI#QoCM(DvCMJ zix)3K7nKknN4;z7J6torFqg8kZzD2WFfPc6ddKAxmkK)PoD~V(h3<8 z?uj444Pzh#Pq8GFvF;j&PVbpcZai%7ZP8z0y9{5Nk-u!Y)xdZq!RC>k^WavI4q&i+LM7G{r(vFm&H_>nUM`L!XgOg+a5w?62W8)09{rMK5 zQaC@HoPJ?cK~S`5=ApoA624IjxB5V7jaZ4aeCcsg%jH?(AZudtDA?lN-2`^d6Fv~M z@j`EceqR`wk*O(WtXua7CGy6v?W5zj8vKw`)c$w-S-fgHY?!33sfl^fpN}3{;&g?k z!7(yY^%pLYv`J8Bm6oGlS#|xLW4z;p>@zq9>Iz23Jfrc3+RXwrgD|N(x<-fg+|^`X zAI~lwGtWu`3axUSJX160K3Rlv+8eh8JFB*&4TJT4Og`EShu2&rEcna4uar#j}w;i`1!jvpBTUfV(R=i)+l_y+|A`1@;@ zx?xz&nCn@5yZ{AxOuA}1(oDo(&+a!rF~~GrKOTXx{EVz!iOgr_urR8h%Nf9v1RlPi zcqcbK^Lg-Itv@*I;+`A?t7vfwANl0jak zxF^`zAfmm%6LibSqJ~Z@-JwHpC$&arYr3!e(xtC_bxFhXW7@QDe!i!Uds-BsegUY*g8rurk?J ze+LQ;Ym3`@GXAaz-o4;#=d=k#MbYQx(s6H+MsLC9%o!!PR2^rK1$*2Bk2Bknegz7Uege8#pmmm#V5?j2Tvwu6gOa6y_s(Z`hW>W}q`JF3xeY`%398rsgM`AypKtzd*8o0_pP&|Hh*VQO;!H(4tbCnNZL8VZE=8$;$jmM!e~=wE6$_Fw--tcw4oT z9es|IhXYc|Ea4BUqaxjkb>T>5lh}EhkKyG-+xov&S59>m6{2U(WV98`KjpGI>-aA9 zm2$$gCdoW30$?l8DZJVXIX_MIwweCKV&}!LMGFp&yZ!>qByqQH9DmUH<7wWoA}i&# zZQIz?Bz6dqJbMWnk7JkiJzx;Ao%z;(Ll8aH`JQ6$^RNE`%Ou)Q4?OrsG!yf#)G5Y3 zN;<-SXX%M0+yhebf9TyLB#L|g|L=*<61tEdKZdc;SNia*-4+#hA(n9~-)L%M+vH1k#SO zH8EG$LPyW;*4Fy!j?<1qlgF0C@ACo^eCTDasAecy=VV97@r}g^moo7Mk+% z@+KxOTUHFYsLjlVkvlLj4Souzh>tI5shgab0DVA$^qlLgg{Ed|AjcjCVVLnUb8v)` zHKizg`S92nVwXKEH3R+q&>@dPyS}BQh|dFk^V*LezZTdDSbj3y9$C+D_8QzGy{$Nt zvcg~}M^`@qoHqBFY}03$3V%ukKa%wm_^P!=NaNuX`B66-9(n2*a>E4-fJq7p11G19g==`? zX46f7)SyV%*iWA9E%#P9f4(d-as?NRj9?ZB1F)pfhzQxeT{azFG<&u>>bJ?#Y}@|J z@`GzQ8IRegQ|NjokW0p;-3mJdE7Kc-n1IevyHmlphh`t7fBH72j`$$G<~G)k<~Fv) zoFaVRDhqC&Iq*!_@l3qM-c8#ruHOyix*rs@Ft@wpTK^ut7=)2XD&@hu~9fwWn4E^Zi z^9E=FTc~vDHt!7(iag*XXxCGuG;RmqZe=T86X45bI${l)jcYwU#p-HO6y)E5n9i@7iw9TL z)VR5?2%@BUp9?o7TxnI6Oa0s{@goy`VqY5@(~^?T0u>Muc~~ zjNFeRTf~YdO z9=Sf0nU+%W$W7QT>1K&4-kmi(vL=oGiMy^>|z1(qj^wNSO~IGP_>co-CpGlalPCpy!kV4 zLognfZaFwK#317Kt;f0D-F-!IXQH-sewfDo)7cD|a-|WxVIuk7AxHCtBTLhC?3ORI zE%g^D97WWvr{%0xe!p0c%XO&v_AMT(OYnC;YEM3AbGvCWO5V5K-A4rkMtVzys;e)y z*sF+~myo;5H@bkevu*P&KRFMG6)ogwuf#gIW&558A!ozglzT~T z#sCEQVDc(1?$*A2fh|vJf)efea2*GB`FeTXI{H|v-pd8B9B@x%ZS4eAHi)^1I8C^C zR`0LJ%!ne4RWdXf$4t>kym&PC>(>)wR4&53K-`y>x8cOr*6HHZ`~5T}r9k@P@h4&J ziTLo47y$;}x|s=uih%9AmxjmEd~reAc@{fkPqUsp$-s5x%j{6bR~vq&s_t&1p^vS& zX?9M|vBpYg7=mA2G%sLUFqNz?Kn>G2Bec0?jI9BMF;qbgh1J!5aOoc(FYs7qgV?g; zUWxo4DDcy=4TnEziIb*{liwrzK5~%DsEP)#(?@BzLsx>@3*+tikJA2k?liyi4dCF& zynHw`DQ(;K$!($J2@#Td`JELNjeX_q-Gu>|FP3G=aAnzSabj$&RO+xn>`5S#;N*o} zuJRD|#)HD0G{2sBuA58}{}_y4@6n%UBVYKk#BhrKVn{qwB)NH+s2I#3I@mYr8om2w8n3 z*^`Kf?###?0o4hg>DfZZ$~Ss24=N&DLe1_{iCrTr%TcSkE2xH!>&hcp^@Z=%XSUzD zzVho~cX!mMPX~!m)M1*hE3-p$I5F*=rwOF-zoy2%hRFoQEOzMD&4w2* zx>`S_ClR+k5O8WABn^OXsb#cLQVxoF($Y~=r!R~@RTrC>>TRv7GoS9&Q+3wU*5+}U znE{diPn)>JcljRW=YQXD`rGPqGrs3~sQ~OW*W7Z9YWqI=cO!GaYP6M=!Owik z?&>iAIG1q@8$WNg^ou+pf6|Ol-1`6 zkT!#8xQB71M6A#XIe8%Iz>AU;S#A5)%@@WNFjg<(`P;?)?D;zphRhED@L#yFgq7_} zcpR*<F`u96g371Cw~06K$?@Ek7)oR zuH<=)W;gA_U*9S`#mdDM6sD7sF5urf1zFa;Lz8$3^ryC$Mcq+3&XfE4H8k^ygG^ zwNkt3-RFqKPzi`wOj9y4N&rKr^)&dK3TqOVT%RW$Uz}zvvFXrJh^b0SI$m9M!J6Tc z+|QraTf}&?4R7df#_pA0L)SAeJ^j8L4gJErfR)STM7EuI<`^5Wq7`O9xWV=m;^vOG zZnt%8wX)jznf*%^E9HGWn6WU`FqyRc#kQXdg>gp=)_n5OW5TD=+0l_v00lw7Rdpt> zD(?6x$t-zz)dX_-kWq*dV@N31QJ)JJx)}v;_!JZbA^M;#I5=1Zurs|cn*Zw4a_{WC zypX7$!%qmiUZcF_# zCue!1;Ul_{T#=EFrKO~R0?+^aiTWMtVbC;~(;L(5>g-fH9V-U=7U5|5?6tej3nw+x zRFzT;r~@QElrLs0Z9IQnYm{^RiFeAy)No~PE56fb@<4Rt;NZCE@F@Q|eDkbDnd_UI z18PkUL=Pb_!np9kLV#HllHqW2m zwVa%&8?`b{3dYE6x#EV~LH=RwnbBq!Cs-yble`h5ndbj6Rb{7dwVNxa`eLt=(t#E` zs^^}!w{vU{<6>iHkF!1M;53yQqx={E0X5kd)bh=MtRzTBdxTQkIM6}kq1m%z#|gFq zD{E`Glanzr>a?qA$mQe&p~01w|E03Bxv_E7kMXs+Ny!mnPMGr3o1Wz6&z*ZF4$}+I zL%}4@j3G1qiJ6(1VuM}!_%YO0ILiSUvws+^9^H}VFrqL-)Qcgqb0e}WrlvYxVyRq!LEGx2VR1@mIbzE3lr_54kbefZ;tU~^eSgzL_h zPtuzwFQK7R|2#fXealVTqH@tLtl1szPGf`V%4zrS@3OJ6Npn7RiWx^(5MvEm?LOK> z__!r=XKY+Ni^Qty2(nkCS15C|#f;e~G2mlqH_b{$iln45NhiC;fl7ffTLY(kUC3CCdg4bE;qmR+`@9OQXXlt|mHL-2H&GW_b9WI)% zd-tw!hPCIWY`}RZzZXYFettf*Np2@6hXw?UN7`k@h;2BIaX{R0tW>LYHtERfDv2 z(@Vp|BFDLx`T4NHVhO0m3z>Z`NZ#GO_1#GoGd%dEl|^_<#)Ym6ZZWZ&K0+SO%);;X z-um#+xvQNMkWnvw^XC4AqdGe7vm4G2`37kvYnT-!exx2JS!hzqux=8j$iMoG0a z+~UM&_IkFC!2ZLh#+QC$3Z&7ZC0V;6W)n8T_kn?rbs2IAfKM^V6pJbjxRj`%o#Oy_Oy#h^jwTRcu5gR0#C<$Rfg5ZGd zpV(Uj^sl=xOC~H!*lYEgzP|h!=dC1H6mcxWVVcj&gLL83B@8j+2)K_n z6=Dnr(61GI&;c|2aJqO zg5I$eXhZ8Dv2k)TqY%~6a0L?FJBtn{bab@x>?LEWs;%V~>LPPsgk}LNCFl~ZpEg}Tt6Ql1yv!Ye zPlYX%L#QiHk=2Cj863{ECDPC-D)7s=!a^_oWb{k+gQZp!V8JMOH|JP*FWA z{ZIuo@$m=QqX(>$x1rzTSJ@clk;IAkRN0T7fJJn-7CV1XO>5M*LJ`=4TsKXIr2Cp& z@9n@@2tD8rjY&$=dhAtcXI9+OswPE3o0_Gq7u*(38W-LCb0OR+x?_`lNOK&LiSlq@A4Pt!-YT7oSPV`RD5JuRQ+l zC;$14)+7IT+v9)y-}*h*!r`~&kO+)z82RafRnwRA;~`9jE*}R@_v+QFos5?b5sHmS zCzHduX##$A6wna1S$905t@8;Ik|vMSw_qVzusYFxi{-7R8_kv%O1wfsHQIgG?Cl{g zX&HG0xkF*$A@ri9Pcc7{_P@}?zrrVubyG87Ph6Gi%F5a({NCqTqH z1@f>u9JY^ZO{%MzjdC!dUr-^x_bGB0;s9t!y_uHgGYz#`TID0G5*D$0;!Alswi`Eo zUZIvqy~07RY@F{m5cp(k>cNPe;-#`Hf?u}M=?ZLOW#XpUJjUZkOKQ5-=zg^5H;>A2m@4E@!0O`%e#t&;mADQU^y z{E-bex-BoODEYKdQ71@iEm!To~riAm!koe z2Xieo>}glIkD1eoJYe$3{bG*lL-TGy_ zptBQT*=J#4=6?VcK{%hV6znG96E)y69_~JLW@L7GvuDk0)Aj~Qvw&fb^l*;f2k%se z&z-b>3(db^Nq!eLZBEH!W`>5`_JjA{z9qr+9XxoDI^%Uh#zVa8T)8^kwquuRmRD8` z-dvmdnsW@K#O0M~8D!darTMRN=)%uAy!T$uO^%D>I&q@FT!AP^^0mG`zgmLtnwOUd z+Wr`c>ho#XzIDmZM>b)7a%{}L|J}J;ZxxG_NVv#ezve&48AT`Lbb~@v2%a`bR@!Q7 zr8w<+PSGgft3kWWPP}sT?Cz4^W2b;9sF!21kGt$$K0By(mdy}`y(`e4+t$|RzPRo+ z+T;s;;TP3gwpfVV5cI4Gw9C?8b02sg1o2bHZ*RR8B%b5raPFG~E<7<@AKP8x>bWrH zJWt0)LwsUh1k#1+pA>{WOy<1r^jl|K11!`7qrw@-_5H9Su%eiffpXVD;wqogKX}H?rJ+a1TT& zxQ)JIlt)LHjl^Q#!7%w7f?$TK_1)stP*m(&UA^6rJMwyL3#J0+p%Mc*g762=p4DU) zB)Y)}c78r&ynW*kCS&1wap(5$^zx1Q@q-~xpTb`(xn?E;17f2=n2z-pi*hS8t6xFw z3`K|^0&FVE`ubA?1MNQ6H1UepMw^yb7Aw&zw=y?xr_I@v_XHP&yv_}rPuxDV832fZ z82d0r2GD6VV9Ge{~zjJ2?)}fdO zP5zaNRjBkv2|4#RHO(%x8=xKm(W5(eWN~ni@_&@~-r-pG|Nr=vmJ&iqR@sFlBgsrc zr9qSxC0oeK9u;Mal9iQgl59eeBxIAF>`Rip`99qD=lq_j_lh>$$a7BMa?qT9xzQXYn5Em8<^GS_1)gIyMO$klsMn#p+i`_F;vJMgpV zsDJ=*BxVCLY@O@JNsJ_b?gr~Kc|4&%Owe#1F$XB@z0AySLJ8YQ)`K~GpYU`R7L>Pj9-pOzOC-&o`oe=!M(8O$_bD`tzJf25!$Jxaf$87d7D~n!pqCW((eZ0Nne4g(WFm95~Qd?b_bc2yPjSTR^Uk0XNd(8!i z&IjmwG^1$);cdI$tL7W)QeeJ$c~H@XLJ*6KogJ)yY8hZ;A-~?;)02`vTpPaDd}Sm4 zazlSVCE8aKrfrJsezCj6#Y>X!DxEtgiW%V8zyO!x{GVALzlQp`{Tv@&QSD+&tpBm& zjU0y`eXeEm3)oT|ijf9J`o|fB0gyrIs0GGgW$dw+^BF`W0gPYqt^A29w(YcQd1t2y zoUpXDqcPTnl%=1SSFG}0kEiI~7Zw%0U+ATWT1AOd{?g2d=&4gUU#!sMY;4(P8(%pE z9%?q31Xrgfr_glwh}DM+uEYmQI7NQly2}&Q^+U;4-sGr%#&(DkHgf)rEB9HAtMQE6Z5l3F*}Mm ztF`4^_^rHs_pZf4C3ksw+=5x$3w$TIh+XNLjQV&B;7YqnpCM$Z^YimktAC=FGr*Sx zrkfJIE@5HY##f$Y8>PM)z*VclOC#*zo#rWM+GYCM0geK)zPla2xuHLjUv!-KJG%wQTy?>s56fqqUiS5*fcJn;R>i8@~H{URE%bP=epL3xJV2x%f|C-QbOUXLD~#V3$CI|(*^Z7tFbXv{WiHTU&hv3T(Cgs&f|l>M#aA;(xf zAP#m&{Oygh4ptd2woEEfCSte|xlV=>gN4+$n6jrqL86YcM~J}Ftl9Mx<$@JsRp^Wj z8Z2OGQx^nWM4`tXii#I5+_$yGi0Y3QRYfkJ`7RddJA>3Q{bw{fEKJCx#S27tx*CZU zxqHVFDr;&4K@E!!JgIyfEk{VyT~k(;AyqGRHb!sc;db9aD+Jj(gADBwllfl`D+?QA z20x1_0a6wY?p*A*k;*Olf_qXd{?}#&Rq-B0j*b(Y$otHFCkqrUt81?k2G^w|*FB~P?Aup2q_U-6k^))oz zou=7e?45=V2@pBJ8v%rlNIZg%CPelJQQU6oCx?uJgF_|uk-NQqyQn_EM2i!eBOA%a zk}spgAb)%p(7|INm(2HJ$JcS55{;~D%c6+7eC^0{z)sQD{axa8`*hn~%ZewIn}T$? zCc<-0HQ=6SLZ@9B-f2qL*KNtiy9isZ*PNCJ89mHJ$JA(*KN^R z8*<0s?E?FUCNe~vV{)`}0+}n5H;&Qz3hU%SiLF=C?zcG0AfyO{H_CJ?1&H4qJY}Z3 zEQ;r-Z*OfCCwqC?))A8CNFrWcrfs?P0-^dnobKnSOijnnKTEutf2~??8cZw@3N!>O z_;a$&Xk=w&m5;IV^8PCKv}QVe3d&1w)MwVAM&F*f;l9^uw4tBuz_-?A^&OAam&bio zxm&R{^_00;G{pV@Je7+p>26OEOe7?oMxt5;4KKURwR*SMQn?51CMWNK>E_amVT_bp z|F7=;FG2Cx2SCb|8XO#26B7f6<_&7rUXtyEXHQ?g?DiNC1%0S$rtUJeSh$7a7n;pV%(vVm%?*{$o*nj z-pYz3_wB@{>ROSl=9<9q|{s8R&Vu-22YFXBnBxm>BC#z}p?f`TX13L|*OO zwn!thzP>W#XN7FlX`!dJrOcwcpaU#>2o@9+6#*}bjG``xk>1e`q9|pn(=%Z6LHQ^u zI=c7siSeGM1YcC@zioRRO;ve%Lfaok+@mF>bc>C49)ZXW0{qa-5_%xvL3Ax0dAnL1 zdXbIEcoh~pKpzs@6qKfu(IyuV5^Cw{DjqhhDF1z}*%hN8(0d{yBd^uiP4)`f5(g1X zaKqe^85{_Hq4>Sx$xSoWdurcZC@BNmb#x&25tVINe>8+!hV;?YBstBV9q~)e0R*}L z-d!1NWpM-U&kM(Fs`$v&FO^Is${RF=DJCj%a(V2bYY5!i6#oP`{hchIdU~R&^&p~a zvfeFxOIj-K>M65M6=FhER7P4_TH6r0ZzV*^?C?za?5|1YK%uu~%jXk}O-M|2+}1Yx zJr@#?HAgJ07+((jIx>S1bCHdM!wqW_6BA`+3xC^UIe_fyGWnAqiZX}i%@ z#o?Ny$Kz9?~feBO~)g3J-0(w(L{Zg=h}(1-)0y4GjrN=>yNE z>-o`V*r1@NX8-5M7F(VzEQ8Hgq?|wtgz+KdwX*eVMx5qX;i(we$=Mk#;qojvI7R*Y zHj*=;e7_qT13L}cBbcRJsrR+qsM>A!+k@UU&r4{GH`aj|CuaoM`!JWE7fX~`q_o89 zlcLw?iDTCK@m6x?6;c-4wb%qv8-*EZSY7z+KEc8+$=t!p?-=9!&T_JMO~*OQbFa)7 zC<4`@;QIytK8Vm_eA3u>f`=zkqZt*X1R0(CE-zkl*>VMD>qkBA9zo*6j~xdt1=iYt z0&(R^APOQDkE@jImbSJDy}=g}FdXCMdvm{jOJEh3M>5xSr$v5Zf5j1#bw+<%Fmxb2 zsXYOU6H(F6jR3rrkHTCaH^90PMbwL+ps9~L4=Ep4=e>S5G5LGJR6Md1&?r|SZXY4# zc6;V*29+wNEbJcQPKo)4nkFVDZr;3!R4YllDdn2H?ayYQO^)n)og|f=m8G6z^f6uC z8sn$4q^Q`uN=bG!6vOO+51YY6=NtfMEhWZ}Mc1k#geSLeTda=|PMXL@)WDqupu48V zH{$i@_Jtww3&?d~;0gh-V|WgESoGS`4-x}OJ|dL?XO6NGJcM}xS99zgMgnC6RHqs)za!#W)Shn zHoK_A9RdYb)aL6WF`=PzDEb+4J+Z1lOM_<=hxRnggZUOMv0|sYl9MBZ zvF%@$VkqYzaY%h|>8YbBtcpLcOS3kFx_{_}`p^w2T7O3)4PD*$u1P0~!Y)OQwlsw3 zi)`pp#^}^PYT75zQCHT&V4-c3Xbibf+z6mSSUr$WLYxHaBKWH;)-;~7kmm{)FY0G^ zq+Ksz)ICn^jans{j5-%W)DIt)qbf@k+>c6v*!6nPOQp+>H$xHmAhAK@$@Igf-PU#; zO^k%n;W2)6SDrpS4`s}CVp=BDtcL3%yXYTCIK6n&H{OoK3wd3H)CBiFAAbfZbj)Pp z?xFXfduIStLk{XJ&^0OP zuyur}j~x(U!nNl!QRBhP(0MM`ilG<|NNT*jMRQWP(x~N27kZ0ZK<$B1N|D{9ftlI< zy+6wCcGOJeV}HWz0yjT9GSU>v6Cj-@A5HG!?ELZt-6hFQE2G)5X2=K3su>y9w+S4& zq#E)ozwbWmXL{854x6YdD}(b|uA7w{$A^=JcgXdaQ}0Vk3~Iw*0ji~?)$44%)EHkS z{A8C%OmBVOvC&W+SJ?TCy*fvR69e;N$DBnl`E3ge05W1+m&ZnM5`gW;nP+V0*WOs2 zsfRHU$=0n<2TDq+TAnjSQleb(8<9Jo<62!|zbybGKbP7420fQ?02k&WfX zXgoP;Y^bL}VHAAT1H=qm6S#$46P%hvE{6-4csc6l=;$A0=wLW#zSFbp+DN!`OIc_A zkffjE##%1S8OKoL>haTIC+sbp5n~#Mp04xS92}9%@f2`*fG1vsl63;r(zR>NokxD= zQ8S8PwI*ScQBYR4Qc}9D)qUr56f^t`AZBc`xV$o%37+zCR5Duui7eY#dj&s+Ume!g z!?ixXPSXg-$nWN+ zeTMm~Nv~aV=d1Wb-j&oL7s8)E?=}$2Fdq7vkIX>Sq(vb}K?QYdWaPpx_2ma!pZNIf z$qEqu3jUVe#Imrc=PmzB?*2lHxMLpEdkrS3Jo1~Qv z2y3Ao1G+!*QJ6Kcuskzyq2_m2`kph^ zTrb(>Jlddxv?uN=>~UeM6-vo{+F@D+3vzv-EXH138}%hRESaHGdACToxxdy&i=J>T zA4E5hl*Q)s0Lppdlf<#c7pFcqu3H&YSc$z8li$UH=3u+PHwBhw%&UGHXWp=C{-hIz z-nCL;Vqw~I!3_w{gk2}Xh zdDYXEQ&4H4DZxq1fB={y8W>32=!A^E=W{ z#+}c85S!M^`YtNkN+A?epP!ps2j!2YtNVi#*lB%FL>{JlH=G}O-T$MS5b+8!$NBmD zcpr_ZM^}%$&C5&470i0~4zjaE_06qZ}_=3-crgwyVZzR;v@}(5%1i&siLA~{ZkO2 zb2GE3(9k4X22yv5w(Ata2SC7@qT!^GA%3OZzpu@0tm$X_R<>WNeJeclVS=n44e5;P zj|>D|b~I0Dk+OX4wsEK>$3BsqbA|2s23iKYLRI`*| zJBDB3#Vc;ZBkg!_$M7`Amp&qC;7U=^7%zOh7eMS>*Y#~i5k5ZCk9N)z#dez^%w0Ph z&LF$pw0C&gm#U{kzsG&?ztRLZiEI~@*VjRl(8M(zVU%~ z7AQ5pX}#TdW(&dHRs1N2bvYfb_8mr*EwtS7(W(7g0|vQ+IpWUIHuD+W>18z%0!t+x zeGpwfa9)fqGKjdon%wK>jV(k^Qe3qc1)erw2aQ%)g)OS`j`M zXF~;@g1;{5wpSW`d%b0chW2NaIKk8C_U+50=uw0InrmmsYa~SPTM5Ajk}YL#-zvmi z9aTH1Pdf3EB_~v_@)mDHKHlk}Fc;>0H~wSJH@G?H>t#-yFnxaY2rmy$=G-v}E z|2?A?=pUD+x#cI}S8DRSpA!HUtHSpvSq3aUWmtSGU%$xt=t>SoIgPgmYfv~?xxBn4 zx7MT&%B<*NHffB}_x;|#4jc58K23tr?m4@3NrNJRsNcCc`W|(pb7?)ow2LhwD(X&# z1zKK+ggFK(o&V0&la4KzUIpSx7PQdHOU2iyaKb(~VS~@NcsmXIbV>K8>z_5@rIGx7 zZQ@enPAy08cPmFN%{WE9yUQBqcbjygQZ43v zgUUpz#R-qyiRX0Y>Sq7_+$I*AC-}jMZmnhW1S?(&GLmO5U42X-e=^^6??@Ua{{tDp z2T~uUWB*>ggp8dMiUSREOn;9+@i!eUyWc~?w5gPd_!l!h)Dmx5Q9JdwQ6)1Det%o|BrpsjAmP8-ANIV zI|Ay;#tE{@M}rhP4a(%ejzH|7c)}A}12hx3_p?k?gs|B8ZYhz%NV5_d)9mQJ!G8zd zvFF;1AsN3hu#1I6o$Pa7g{@=ggDS)NKyH!XC>q1>FJ=Kpn{Mfc7(uBH5zk% zpt$4Yk({>QOI`K<2Eau*gSUP;PZ}@!3v_z~VKk`7$#eWT5Dgh6$FC*8nFH-OK+sN{V~t0+nq7zxc(o&hy$fT2M_;WaS>bLfB>TkUuWw{|y3 znHnpIbba=0qnB`75&!R}k*x2_9-m#a{5zE6XT$k_&Me{PP?1v#s^Nq2gB5RWe1x`lAf zeZ4TzvA84ecn$Yc}|NN>u3;pfP z*XJ+t&~Av^K6!=Q9g*)?Z~a;{5N( zvL|3+BiF9a^3qE;#t&uc><vfWA`()ZbWKfD zTCbn$PIfOim;O^``$x~F{#T?ghNQQXcz6shRCVloDnU&Wvw*S0y@l?cXIzCAze^Xo zt&b(kb+AT1V(7CzVQHUw^zO|3>EQ|69sZ$@)1TkmHS*5rY`bng9pCc7Gqy%n4dcu3 z4gf8w84jod&EVf;WccGxK)~gme3aB{ZJHLU+KINNWCp%~5up6nGOv4Q1>7jUb9AJ; zd5Dm+=Pz{92_d2Mo}b^o#kXawxOV0oozqPFT>ml7LQPEp%DBQegNRsL_$45*n)e$g zeh!#JYuPsAK>oXT^g>3lAt9;~*LO*i!|zrM_ALwy<06J7GvCCv?l{$|Uq-k!N+kME zt=jmFBo!4oM!cypB}+FAJGQKMuKI4H+bQvNE*^UdbJvt!rV+L$h0Uifn_(9h4y&(9u=ZyxpchV{&7 zZKhfAP*GJ$t<66BT2mV(_M}5sPwx}d@_r6vLV#0g$hV;2RB^#6!AvtVGkD5^ikX_e zhaeq4-KLp=?;leh((u)<3YdccbP49ATD@=O`7s`9Ya4oLAwB0^iGCK9qvH^xqT6hv z7w8+Q>n{cLsW0~vF`d@PyIT!4P?IcpwL_iNMWw|8=GMMG%aBtg=&ecffJE)?Zi`|W z{HCd?0r`bV%Igw(5f%Nbt20-Eg1Dd`PtWAyI{zzESW~sZ1XqkrzEB`jKETRsk7)eI z#IM9a%})XXBTjs8-tWOWsrmBK%kkjRoslLBG@po-Pgx$p^bQK>XNGGfPMrAI=cZ~~ zWG*Yqh<3tMNNBjE3sAKZ#FRw(W*cfbKfv25DHnpTVQkAzeLjS2e!RWDzCOP+H7Jzp zAViwow>;|UsY1u-jm{zP(EY?YsS;2q95@ZdTLMt{MDITOj{GcG~SV^BgK_;hJs=(>gA3(koId?Xru=Qe~FuX ze;aqmnZLWy(!In*>f*(z!D^atbsgt^eVjtI@l{B~ic3`0g`LRIBPB_eD-HpAy&Ju*_9+Xda%BaQgBzE?&OaqT^j_MTNvE zd%F^?tMHGUXwTH?X^&U$6nfkU9q5I!jS`n>Jv|QnZ}3SW65lz_Va|M67Hx{j?hZbI z=@!sZRrDoS?}4xKNHfRC64fjiH$#Ji_KpGJ5?zsAZJCr_KBt{l7k9B*+5DO$5?QIe zVHufiJ@TfzTdS2GT1ohIdk{U_GS0ZI*)G(X90~COnSm7>E=X>@nBssQxeQMf$(W4} z!x(rw`Frtc`%&!L1zatc0 zlOw*pr0CjV*6MWxZ9zW1Z*6UIcP1HQI}souUxd~g^WMg1TvyO2Q&~`Povtpp6q$!^ zpOh@PA#>>L_%n?=OzGxurjd1~#OGp8BI)|;scf*kY*io=y{L(eylG^l2(dpYwXNu2 z+u@{&i9xkG-E;D7tu{lKx*(8%&iNHttkp7%dxq=E5b-^p9AanX3tbsY8o<~au8wX~ zy0e(8^=fs0|Nf<>rsnhK(`;-54RLHD=H2}K{AyXc2dV0!Cyvo-ev2AMl`LjsZ->i+ zfdaF*eF4H3gjVKCYc!e?ndQzt-ZMWHe#0TW&sEG!PfrL~nc*vxly=^-)C>%1+;8u8 z1Vg_a&Yfr(l)RVhE3{^y+D}U>U=3N;u+4#RWwb;wt}~hWxc)2 zXd2OKLYFTZ_hO>cmenV)>_u3Zf-Ia5HfL3zymf%s=Mxii+E_0^S2Ep67+{Gf6m7be zDO9nae&#WqRq~okKEVCE zcI}egw=c)6IkCMx!CpKX@nL1*5T@Q+TU74;YQ=-XzcmDO=(!0~2oqhD1v$Z}{f!wq z-_^kwPc*8XI}_RS-tw5FEtSt3;?Jw&+5p}dwL4|L3h%ya_8?_$49v>odi0g`6 zVnPBX)AE*?k;F@7wK0>CAt4;0HCsvAj;Z~*6g~~%Pe2JUigI1#KhH~hNSy8@kWvCW z^JQBgmNifn2&_UsrUKXwPO<(h$m`C|++L+DY=zEoYHiJKI=^q(xAFxb66isqRosi4!@(M)00NW~oPa^R*xR_i#)5cy zx9d8@1SMFNk346SFZ$b81Q4$}q)W1&s(px%#w;l@q-tzUvxJw^5u+76?rs}vcC66V zwY6TcpXfY9LekdN)kQ;sJp;~HkgHUT7O(#PeROH&*JD!=g1ZJ9o41ez z;c$ZOns8|2X}$M)Xh)ZPpfWh6dueEj^{SOwK?Z#I<_%zBhEqQiAkKU8A?~gX?Zi?PwJitGGlmJ3>n|Aq!&KEEr3^uUkN%KDG z_5*xcdKB-WaYxC@o&O{Vf@03jyi^D2=rGR2SW2hJCfq9kJ9WIg-SNy_x|W(dckYxd zE8m$PC9$$hr;)oKbxv&7SX%}URg|dp<0V0EV)skY?C|#e+q=TT)bKkG9z@2+Lut$= zyihDrJzPLPSb;tDeQmmWFS(75wghG)bGGee8|z&kV$aRd7Jk$7^*VBT8JgJFY;0|3 zW@g6KXgIHY8uSZ0aQ^&4xVJ_>v9*1TEjW0clXdIXM>#pO2!-%LeiRM^Zrs7UW@dd_ zC;9lafv1PyH4>yO*hmSwtjsf+o5u$-iM=zZ%dhnp=YTqcE9^axAlX_t6NE=Qb8B$o zP~^tux+(oP6snDND{9FK=}~H`Co_HIG~g2z(AB#>Ok|69pUX41UDd!t8S%t5-qP^ukTC#9AyvhWiLNrvw#EOGMi}BCrSdru~%p`eNYXXZ=+fN=? zHQteJc>8ug>XPuIkiYLKGM2YfIHo{Hb@bwWDqZa|hYUpy-d`Wm)dgYFY+~4c^w=>8 zPR{$aVH=-q0Af7^V@n(7)m&`dI%Td=V?7!>1gDcz52zm$=oo)=(^KY*EbsLtr%tRw zZ?taN+1dGTK0~mjqNQb})%^Tf+hvh|3=qlm*Ujm~rx6{yspbs{MmF0>9%%6$KVt7f zqh6iW%e^~q(@Y5{TBN1J^$XbWav`D(OPG|TyeP3Q3Foj+-P_ZXlG;m4S|_^fTC&H2 zHy-94@IE2dXyw=!JtFZhE)0w0!@bh6&RB`%yAy zDOV%!v9JmN7Kv!y%DwU7Lx!x-{a;~L?H{y$LOfMakU2^E@V)!Y`}f<<18~}!ZjIHM zXQpq#L3iq&JCMp=RPkYrj7a^HhdT)bdgRjR(!d3_QJyq1@`5M{AS2{ zW7C==hG=Wk01P?=FAtOCV^1n9?dFa(Ev0#aXx{_^pPtJoOt_YBTH@p>4B% zaqX$p*3r>n4SKG4X0H;!XEP%mC_R>kBRy;PA(TMuA!T5#CHy40<4qUrCdddr)z<#{ z@Ze8y^N^LgrKRN)ib;9~1{ixl=RGA=T`{qt!{K>hVFw_BcXV~ju+JiiL{TAZdfja$ zqbx4&43lZ4bN*?&JV61IrAB!+6*gn4&Frl+KOZvdNr<*g`6PtclR-gApnjEwbeUzGtik^y!HTdPF((DoT z^%J-KDJweAxNm>;!-sjrg$_nFTVxB-X3#e_201D04Ids16S&cat}GLuXJnwhWyahA zsJqX8#{KXS>KzwyVGx{QeKVW(<uX(i11L z6!VKee2A@n#)bP&BobZcJCd+P!3irVahyzJthc93jd%Ww(i=1|6!W|w8Bm=~uTjir3z2Y|&$Y0~HEIMuv(pC9r%&E+joU7ejSRmd z?Z%bi#8*gNn3;c@n;!xK&Yy0oe{S3o#h3DiSjKj<3v}=$AohJrR`v1|4~dL)nlsU= zuA!2hU3Hj$b?%~;)=S(Ws(m>j=NSbk4oOCYg%#YcaFi-rk`=o1Ieom{0(M<9*yb1d zCPnUi=1uHUy7^L+2KKP@=0w39amSfmr?R4ulcySVJ2fS z7YY&CN$jZM3=9W&)!_L!xY+^#sPw>YPm~O=;*axh;3F^)$q6knz(N64@%Zs?r$0Y_ zV}Ud^!)hn2vi3B5LLQR?dh>4VcaIdXL11!-4|fO``X(B!`E>K4P!3xpKutj4e$FFBh~dLsTwov6>Z?MU?$)iR&z@ZiH8V~d3+qe9o3eya?_~m34J8R{$ zeGWg*A)F^#1ZkbmHn)s$UU;>tmdHPQ6=sy zS%zSQ1S`bv%POZZ<873aiAjdf#V(S4=1;YAa0m__Fn3t?Wa++62UXKD zg9OClN52%kVjJ&$xj&|Edc$`{eyRTc!`+BJ>C+^Ym6b!xy(k5Pcb-#D5rV{0G*A17 zh&z7`09$@lKTE2QF~m_d*x1=;k=bwCVSe(&2}szXA5PRCYd_MZS-t)73{bhd^*~de-a3U z24`7)mVvFr$NvmGgxFdS`jZlb;0p{k@V?#QTuIVQS!y5#!j($+CKbVG_uiO375y+( zxA<14L5sW?F%9b23*RphQauFUeU3Ml4g37Zze%q=8F}21eMT!u-xXkm9d|YMThg_y z(ln13R};A_(w7-BdfD8v*SZ^n399AhBv(0J1_?7?Vk;MVZ1J3vMh?hR=Ti5YA(NGz zDVDsnAp1@)Jrs!%+)cPj=2fq+!d07E*htShEmB|4bZpmEj$fQO%t7_|rfsZ>Y)f*+ z0=Hofa3r*5cJ7=O-(%%e8X!$Gj|bQ2BNdEzLq-tV{{P@8mb0_7HBoVynK7YU#-nu@ z0iHd(l@%%s*SSN;O9~U8RO(LILwgXfo?pKX;EqPTp&|%TdDZ*Td#cX~X*`l!H<&Ao z=h%|!(X%b~!YMY>mpLNk$r}tD)ZXYyeT_=!_fSG|p%hfx(BNKi8xFGbXH01S%7n$4 zGtZH^;K)d2?>Gw+lI6YXb4jzwdyGuHR_g|>?+J+D+ zmjYkt0on_mG7l8ke@+$D?i0RyqidI^jEhT9sViB6a(L7lN!Bg`@upy4eJ)uxd8ZN4 zd$q3re;n?M@y)*u7wkb*^Xb$3?t@^1BeIaIr@cdQ@a7GwEd&>0_nQ}Z8X%gAn^ka; zmO!sD<5zFHC!4&{$RuF((&B#}Gx1msN4XJ^0UqHI(a}o3)8&M=si5{Ln|QUoq>_G% z8Pg;aA?LESf4%MQZ1QF!6aUpq%m3p5OgUWTLPZuTY!~Q48b%|a-|9s=Rd_u@I$roe zeuF~n-xrxcPr<5K_g47k-%7d|sT*lM{a2|~`Tq}Jb1TwS>sc`eCVflY#1w44+#Ube zi$f#3u^UOh07MIPv*;7A|NS!pA@(4iu&Mzd{(W|`Q$cIW|D^b0A@{c`~69v}*&5922n z5?;L$2$A5p#9Gb8I{4pUjEEiR^lc=%a4V~qdwGEq2(%a0m{nnc2>E{q z2U1vX%gXNdeD(J2(~8@^vaIOn)B4sarsr$?B_)jalCJnMWseE?l`A(6?}ZE?vX<*y zX%zw|ptib0jWf8^XD$hzLB~0@c#h8nnx)B literal 0 HcmV?d00001 diff --git a/manage/blueprints.mdx b/manage/blueprints.mdx new file mode 100644 index 0000000..3f7fa17 --- /dev/null +++ b/manage/blueprints.mdx @@ -0,0 +1,319 @@ +--- +title: "Blueprints" +description: "Pangolin Blueprints are declarative configurations that allow you to define your resources and their settings in a structured format" +--- + +Blueprints provide a way to define your Pangolin resources and their configurations in a structured, declarative format. This allows for easier management, version control, and automation of your resource setups. + +## Overview + +Pangolin supports two blueprint formats: +1. **YAML Configuration Files**: Standalone configuration files +2. **Docker Labels**: Configuration embedded in Docker Compose files + +## YAML Configuration Format + +### Proxy Resources + +Proxy resources are used to expose HTTP, TCP, or UDP services through Pangolin. Below is an example configuration for proxy resources: + +```yaml +proxy-resources: + resource-nice-id-uno: + name: this is a http resource + protocol: http + full-domain: uno.example.com + host-header: example.com + tls-server-name: example.com + headers: + - name: X-Example-Header + value: example-value + - name: X-Another-Header + value: another-value + rules: + - action: allow + match: ip + value: 1.1.1.1 + - action: deny + match: cidr + value: 2.2.2.2/32 + - action: pass + match: path + value: /admin + targets: + - site: lively-yosemite-toad + hostname: localhost + method: http + port: 8000 + - site: slim-alpine-chipmunk + hostname: localhost + path: /admin + path-match: exact + method: https + port: 8001 + resource-nice-id-dos: + name: this is a raw resource + protocol: tcp + proxy-port: 3000 + targets: + - site: lively-yosemite-toad + hostname: localhost + port: 3000 +``` + +### Authentication Configuration + + +Authentication is off by default. You can enable it by adding the relevant fields in the `auth` section as shown in the example below. + + +```yaml +proxy-resources: + secure-resource: + name: Secured Resource + protocol: http + full-domain: secure.example.com + auth: + pincode: 123456 + password: your-secure-password + sso-enabled: true + sso-roles: + - Member + - Admin + sso-users: + - user@example.com + whitelist-users: + - admin@example.com +``` + +### Targets-Only Resources + +You can define simplified resources that contain only target configurations. This is useful for adding targets to existing resources or for simple configurations: + +```yaml +proxy-resources: + additional-targets: + targets: + - site: another-site + hostname: backend-server + method: https + port: 8443 + - site: another-site + hostname: backup-server + method: http + port: 8080 +``` + + +When using targets-only resources, the `name` and `protocol` fields are not required. All other resource-level validations are skipped for these simplified configurations. + + +### Client Resources + +Client resources are only accessible when connected via an Olm client: + +```yaml +client-resources: + client-resource-nice-id-uno: + name: this is my resource + protocol: tcp + proxy-port: 3001 + hostname: localhost + internal-port: 3000 + site: lively-yosemite-toad +``` + +## Docker Labels Format + +For containerized applications, you can define blueprints using Docker labels. + +### Enabling Docker Socket Access + +To use Docker labels, enable the Docker socket when running Newt: + +```bash +newt --docker-socket /var/run/docker.sock +``` + +or using the environment variable: + +```bash +DOCKER_SOCKET=/var/run/docker.sock +``` + +### Docker Compose Example + +```yaml +services: + newt: + image: fosrl/newt + container_name: newt + restart: unless-stopped + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - PANGOLIN_ENDPOINT=https://p.fosrl.io + - NEWT_ID=h1rbsgku89wf9z3 + - NEWT_SECRET=z7g54mbcwkglpx1aau9gb8mzcccoof2fdbs97keoakg2pp5z + - DOCKER_SOCKET=/var/run/docker.sock + + nginx1: + image: nginxdemos/hello + container_name: nginx1 + labels: + # Proxy Resource Configuration + - pangolin.proxy-resources.nginx.name=nginx + - pangolin.proxy-resources.nginx.full-domain=nginx.fosrl.io + - pangolin.proxy-resources.nginx.protocol=http + - pangolin.proxy-resources.nginx.headers[0].name=X-Example-Header + - pangolin.proxy-resources.nginx.headers[0].value=example-value + # Target Configuration - the port and hostname will be auto-detected + - pangolin.proxy-resources.nginx.targets[0].method=http + - pangolin.proxy-resources.nginx.targets[0].path=/path + - pangolin.proxy-resources.nginx.targets[0].path-match=prefix + + nginx2: + image: nginxdemos/hello + container_name: nginx2 + labels: + # Additional target for the same resource where the port and hostname are explicit + - pangolin.proxy-resources.nginx.targets[1].method=http + - pangolin.proxy-resources.nginx.targets[1].hostname=nginx2 + - pangolin.proxy-resources.nginx.targets[1].port=80 + +networks: + default: + name: pangolin_default +``` + +This will create a resource that looks like the following: + + + Example resource + + +### Docker Labels Considerations + + + When hostname and internal port are not explicitly defined in labels, Pangolin will automatically detect them from the container configuration. + + + + If no site is specified in the labels, the resource will be assigned to the Newt site that discovered the container. + + + + Configuration across different containers is automatically merged to form complete resource definitions. This allows you to distribute targets across multiple containers while maintaining a single logical resource. + + +## Configuration Properties + +### Proxy Resources + +| Property | Type | Required | Description | Constraints | +|----------|------|----------|-------------|-------------| +| `name` | string | Conditional | Human-readable name for the resource | Required unless targets-only resource | +| `protocol` | string | Conditional | Protocol type (`http`, `tcp`, or `udp`) | Required unless targets-only resource | +| `full-domain` | string | HTTP only | Full domain name for HTTP resources | Required for HTTP protocol, must be unique | +| `proxy-port` | number | TCP/UDP only | Port for raw TCP/UDP resources | Required for TCP/UDP, 1-65535, must be unique within proxy-resources | +| `ssl` | boolean | No | Enable SSL/TLS for the resource | - | +| `enabled` | boolean | No | Whether the resource is enabled | Defaults to `true` | +| `host-header` | string | No | Custom Host header for requests | - | +| `tls-server-name` | string | No | SNI name for TLS connections | - | +| `headers` | array | No | Custom headers to add to requests | Each header requires `name` and `value` (min 1 char each) | +| `rules` | array | No | Access control rules | See Rules section below | +| `auth` | object | HTTP only | Authentication configuration | See Authentication section below | +| `targets` | array | Yes | Target endpoints for the resource | See Targets section below | + +### Target Configuration + +| Property | Type | Required | Description | Constraints | +|----------|------|----------|-------------|-------------| +| `site` | string | No | Site identifier where the target is located | - | +| `hostname` | string | Yes | Target hostname or IP address | - | +| `port` | number | Yes | Port on the target system | 1-65535 | +| `method` | string | HTTP only | Protocol method (`http`, `https`, or `h2c`) | Required for HTTP protocol targets | +| `enabled` | boolean | No | Whether the target is enabled | Defaults to `true` | +| `internal-port` | number | No | Internal port mapping | 1-65535 | +| `path` | string | HTTP only | Path prefix, exact path, or regex pattern | - | +| `path-match` | string | HTTP only | Path matching type (`prefix`, `exact`, or `regex`) | - | + +### Authentication Configuration + +Not allowed on TCP/UDP resources. + +| Property | Type | Required | Description | Constraints | +|----------|------|----------|-------------|-------------| +| `pincode` | number | No | 6-digit PIN for access | Must be exactly 6 digits | +| `password` | string | No | Password for access | - | +| `sso-enabled` | boolean | No | Enable SSO authentication | Defaults to `false` | +| `sso-roles` | array | No | Allowed SSO roles | Cannot include "Admin" role | +| `sso-users` | array | No | Allowed SSO user emails | Must be valid email addresses | +| `whitelist-users` | array | No | Whitelisted user emails | Must be valid email addresses | + +### Rules Configuration + +| Property | Type | Required | Description | Constraints | +|----------|------|----------|-------------|-------------| +| `action` | string | Yes | Rule action (`allow`, `deny`, or `pass`) | - | +| `match` | string | Yes | Match type (`cidr`, `path`, `ip`, or `country`) | - | +| `value` | string | Yes | Value to match against | Format depends on match type | + +### Client Resources + +These are resources used with Pangolin Olm clients (e.g., SSH, RDP). + +| Property | Type | Required | Description | Constraints | +|----------|------|----------|-------------|-------------| +| `name` | string | Yes | Human-readable name for the resource | 2-100 characters | +| `protocol` | string | Yes | Protocol type (`tcp` or `udp`) | - | +| `proxy-port` | number | Yes | Port accessible to clients | 1-65535, must be unique within client-resources | +| `hostname` | string | Yes | Target hostname or IP address | 1-255 characters | +| `internal-port` | number | Yes | Port on the target system | 1-65535 | +| `site` | string | No | Site identifier where the resource is located | 2-100 characters | +| `enabled` | boolean | No | Whether the resource is enabled | Defaults to `true` | + +## Validation Rules and Constraints + +### Resource-Level Validations + +1. **Targets-Only Resources**: A resource can contain only the `targets` field, in which case `name` and `protocol` are not required. + +2. **Protocol-Specific Requirements**: + - **HTTP Protocol**: Must have `full-domain` and all targets must have `method` field + - **TCP/UDP Protocol**: Must have `proxy-port` and targets must NOT have `method` field + - **TCP/UDP Protocol**: Cannot have `auth` configuration + +3. **Port Uniqueness**: + - `proxy-port` values must be unique within `proxy-resources` + - `proxy-port` values must be unique within `client-resources` + - Cross-validation between proxy and client resources is not enforced + +4. **Domain Uniqueness**: `full-domain` values must be unique across all proxy resources + +5. **Target Method Requirements**: When protocol is `http`, all non-null targets must specify a `method` + +## Common Validation Errors + +When working with blueprints, you may encounter these validation errors: + +### "Admin role cannot be included in sso-roles" +The `Admin` role is reserved and cannot be included in the `sso-roles` array for authentication configuration. + +### "Duplicate 'full-domain' values found" +Each `full-domain` must be unique across all proxy resources. If you need multiple resources for the same domain, use different subdomains or paths. + +### "Duplicate 'proxy-port' values found" +Port numbers in `proxy-port` must be unique within their resource type (proxy-resources or client-resources separately). + +### "When protocol is 'http', all targets must have a 'method' field" +All targets in HTTP proxy resources must specify whether they use `http`, `https`, or `h2c`. + +### "When protocol is 'tcp' or 'udp', targets must not have a 'method' field" +TCP and UDP targets should not include the `method` field as it's only applicable to HTTP resources. + +### "When protocol is 'tcp' or 'udp', 'auth' must not be provided" +Authentication is only supported for HTTP resources, not TCP or UDP. + +### "Resource must either be targets-only or have both 'name' and 'protocol' fields" +Resources must either contain only the `targets` field (targets-only) or include both `name` and `protocol` for complete resource definitions. \ No newline at end of file