From 94e160820279b0d81de9d965e6afe6bc8cc8c1dd Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Mon, 27 Jul 2020 12:06:56 +0200 Subject: [PATCH] New prometheus configuration (#713) --- components/prometheus.rst | 46 ++++++++++++++++++++++++++++++++++++++ components/web_server.rst | 31 +------------------------ images/prometheus.svg | 1 + index.rst | 1 + svg2png/prometheus.png | Bin 0 -> 37325 bytes 5 files changed, 49 insertions(+), 30 deletions(-) create mode 100644 components/prometheus.rst create mode 100644 images/prometheus.svg create mode 100644 svg2png/prometheus.png diff --git a/components/prometheus.rst b/components/prometheus.rst new file mode 100644 index 000000000..e49480ac9 --- /dev/null +++ b/components/prometheus.rst @@ -0,0 +1,46 @@ +Prometheus Component +==================== + +.. seo:: + :description: Instructions for setting up a prometheus exporter with ESPHome. + :image: prometheus.png + +The ``prometheus`` component enables an HTTP endpoint for the +:doc:`web_server` in order to integrate a `Prometheus `__ installation. + +This can be used to scrape data directly into your Prometheus-based monitoring and alerting-system, +without the need of any other software. + +The list of available metrics can be found by directly browsing your node under +``/metrics``, and may be increased in the future. + +.. code-block:: yaml + + # Example configuration entry + web_server: + + # Activates prometheus /metrics endpoint + prometheus: + + +Configuration variables: +------------------------ + +- **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. + +.. note:: + + Example integration into the configuration of your prometheus: + + .. code-block:: yaml + + scrape_configs: + - job_name: esphome + static_configs: + - targets: [] + +See Also +-------- + +- :apiref:`prometheus/prometheus_handler.h` +- :ghedit:`Edit` diff --git a/components/web_server.rst b/components/web_server.rst index 25d1e53fe..2355b0935 100644 --- a/components/web_server.rst +++ b/components/web_server.rst @@ -50,7 +50,6 @@ Configuration variables: - **username** (**Required**, string): The username to use for authentication. - **password** (**Required**, string): The password to check for authentication. -- **prometheus** (*Optional*, boolean): Enable the prometheus-endpoint. See :ref:`prometheus-exporter`. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. .. note:: @@ -65,7 +64,6 @@ Configuration variables: auth: username: admin password: !secret web_server_password - prometheus: true Example web_server configuration with CSS and JS included from esphome-docs. CSS and JS URL's are set to empty value, so no internet access is needed for this device to show it's web interface. @@ -80,36 +78,9 @@ Configuration variables: js_include: "../../../esphome-docs/_static/webserver-v1.min.js" js_url: "" - -.. _prometheus-exporter: - -Prometheus Exporter: --------------------- - -The webserver can provide an `Prometheus `__-Exporter under ``/metrics``. - -This can be used to scrape data directly into your Prometheus-based monitoring and alerting-system, -without the need of any other software. - -The prometheus-endpoint is activated by setting ``prometheus: true`` in the ``web_server``-area of -the configuration. - -The list of available metrics can be found by directly browsing your node under -``/metrics``, and may be increased in the future. - -.. note:: - - Example integration into the configuration of your prometheus: - - .. code-block:: yaml - - scrape_configs: - - job_name: esphome - static_configs: - - targets: [] - See Also -------- - :apiref:`web_server/web_server.h` +- :doc:`prometheus` - :ghedit:`Edit` diff --git a/images/prometheus.svg b/images/prometheus.svg new file mode 100644 index 000000000..ed33f03a5 --- /dev/null +++ b/images/prometheus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.rst b/index.rst index 345c67e64..f46f3e51c 100644 --- a/index.rst +++ b/index.rst @@ -353,6 +353,7 @@ Misc Components Tuya MCU, components/tuya, tuya.png Exposure Notifications, components/exposure_notifications, exposure_notifications.png RTTTL Buzzer, components/rtttl, buzzer.jpg + Prometheus, components/prometheus, prometheus.svg Additional Custom Components ---------------------------- diff --git a/svg2png/prometheus.png b/svg2png/prometheus.png new file mode 100644 index 0000000000000000000000000000000000000000..82cf5b30b394dbd29dbd82727b8b02dfc6c6fbdc GIT binary patch literal 37325 zcmXtg2Rv2(|G!H&D{<|TTo(}{@oC(Qi)&X#HYFKRq0H>frHm^hn`@+m$Vf;%Id(^axyVCo*hE@{jP6=Q9 zbmrMgkdH<4_`G3D=gKj|YmOhka`!2m=fEJJGlZ1=1S0Zz{hD5F_aE`LC}AA(X`ARp zkx1>zj(BGI-01Y1(H8A3=e%EaUbA)VZ3s9-Tg%>glE`?DA@=Z)uYpMccT0~+i3{5q1lwmC>JD{n@aE~a^8Sl+6=#slReUktEvi|nX zjoeJZ+2hX+Jb2W)9Q?_#a7To0wJ?iFF`(R*_|23Yd%a{{Qi8|CK1x@J4cL|10t4x|64EIts`OD%Ys!zJ^thjtU zZYf|Z`lGPmMHpvki0N0p>t0HqGyITozI;|MD-X9+p|i}L-7&bap{*r`qu`!~a9}Lj zJI4*ay*LnACKO3>cq3)OHQj!X|wwFY+~HsFB8}INA&w(t6zpIONsvo5$@i* zFPxKQMG-dndn`JFR6=xAW-OSuqpEDvMJA{aevh7S58g!4{#B@N7qAiXv4Z3murPIj z<&^1GwsRh_ zd#=Y@4)Cof8p3^=POIh<>RReTCwZ@*Z}L>Y;cVbIDX--3GgD8Nuk9pNIt#jI_P=&= zPK?)-$us?;CUo-8{otFjNAeB1@=g1-wM1|nu5S`%@mIo6rJ)^JpaucZw;-O6s ztL8hGdP>veYF_Mzr(g~$Is3~UP+_wiR_(1Mk*p(OgEsRMwOm^c+7J5%MyJHB+%XMr zeN+>OIoL3;taifj#2c<_YGqGS<28t)QE;{5qwYCOm6VN^>&FxJU&{%uTW1Nv!wce^ zIu}hMqT)21HWeb?>1*8?**6icrTq|xbKeI$=&P3REam>MF{YE2mUwAtFHPvl{dl7N zftp%&HM@sc#oI@4eSdHYez?36WL`HBg(x>(U1hLOZN4}2_$&ERJ$Ix_W|0WyjAo1p zPSKU+P2V43#oIm+ZTbufm+-t8vY0u6)XoDEXKyB>;kc&PE*%&j{Wiusk2uPdkQ+5u z?MwRf!)L?Aiby>C7KX=lo;&#ciyN+CQw({?pnvI|D_JGlAOoaxnRnZ(eVOz#TTbba z+Aksl%hj`$k}cK`o#?nsbX_{}U@gm26!#C7{O*FP{kkG?+#{ov95Np0fmB4?(A%&7L94Pm^0@PxXijyMi?6=Z6tBY5s`uU-z(@BKx^ z4pr*a^=>)Rr!#at^^774eo3B(a4ZraNRoO%eGS@8tEW%s@d?+t7Qy$DiO2#zv{IKXMa&_Zy@Dxuz;~+8WP>@d`&r zv^z>4CKC5w#R$7A!OAiNYQIeV4yLie^$!Cri5FIR7ga?H`#5^`!z`s8s}*pSb9+UF zngtwBihyoPd{Ypd4@}S;W4@+3-SzcL%wPzNiF3rq#A|Iw!n!||nG%Vv1(V219$#4B z|M^8wuQQ1r>{3ZuXTbhP*Z!(+WShNqa!G))35 z)ax1HH166&xMto|wFf5KBhQl?Hw@AwsTQ=bw|aP8tI#G;b9VqVGQd=;8#w0L4t721 zM$~NG&imI_i0+`Xgrx)H;8IUbN)TUySNO~((h~~;F}O{-qAV^L-F{;I7p7!;J(6@T z_v>t1dOCM)j+X@3>gXg){VVaY#`S6;+SFy708HKMO{W7nU^RX=+V$)Yuxu7uCWdQo z-SVbdpT++8H*|aWyi>zc!u~xX?m}XRRNwYIETBD?2i*aAT-(da)H7aa6R^*v?o!N~ ze)ggQ4h!AsQ~WjKmt*H5e%@WbBcJ)Y-%W_6ps44MJ@IdG|FY_r_t!*%e(|A9QsULA zz94+L?ZM9vyPUEP1ARgUkWuty|GYKFQc@EbyPZYtW9{)<(l}X+qosD2#FQv6Y+jJP zfu)R8h8X-h09rlh^&kH57N3Cx7>_FJ%|tGPg(X(hd8x^TgF)*&)c*3PM|sFvM_I0J z9EzOk`!sfUis*0^mH+F+`9fZ$klKOm_G3q=R)|8FJPZ&rNKR6gt=kq<*qqptX@v33 z<&4Q6VZD||yK588$pS`##?8yYQaJd7$EoS}%I2)hS{fy9D%r!pcQD-{&~JdPS*xvO zr}{KEc?TR{{(9$vf1_bMXq{JxoMhT=bdS~R`Y^iX# z795xRJ~KkQhtb``uWCJBzM`py7Dc=%Ir~q)Kb4(M^M-r}Be|vOUt?&LPquc0r z4wikef%_m9KNh^sY`N`@x<^F3gj|Zv`VlZ}$As#-=g4DroQ7QxO1hl76!ngEhcWV4 zCMfjxcyxrK@Uz7;H#dglw3T+A!oC`=Kdme|{r5)gJ(ud5Zzp6hJmL-O=WlMn(viL-4!-}=}p|3*gwRnwg(&3&dj8r;XJVFc*J4g8__rew(BZvvc~$C zYlUDRV2;*po#Wj>ZMi+Seml1ZR~zE@lck)NwhRNOR$Q`MIvrgEb4j{()hF}UdOf=R zepXy5u2<99hUmOJX}A#+H=Y~Tsm2y~?eHj} zoRGm6bwzy~7Gc9K?f)5d4JAY^Tp<2!GU+uWS&J#S(_dxXUl({-qt7Kbob=)TFirX3 zCl&Op&!v`WzxNBPKciaHAMLNc94u$lr6ejC*`D%vdt57I3H5q})}fvd~iQ@5-*pmlRd%d;`D;r;M6eBnU|Or zum1U%>ucNqvTxQ4tl(A7f#thqe0bwOvTqGa{feli#-AgU%j@=frjWgrY`h*bm|lm} zVu~9S#1s;po?AmY(n3Tr(z)#L?g#I29yb`GVmtMS{qM`IV_n9xBW6An!Bp_zFl%*= z`GwS3V^Z=*p3A@e(;pp=$;>1@u~TqUAC>K*wnS2O2g5W{)wnpe-~vy! zjgZ`B&mdgY<@J<@J-4=xw!8g_-{a26%TaaCd+CJ2=BholUnVVHjjD59g9kDf$qWd( z?lp^v(elA?=KmHK7Xgg~PcMzNkAoD3GRb%CjnmK(kg8{tjYDX$Lu9u65+?m`mrgQZ zzP~wlqSEjfOQ9%Yej-1A58w}Q=b;DgCRIGJHmr}?iJnGf&mkB}g+_*P$Dk*fZAhxy9f zE&TTcbVTgM_JXA!Hk8?SdcGce$!{qh`xE1z-ko#x*VV$}qP;-ggWqe%UqR&`J`hto z+wn|)+YIKi12>y=)-FJG-$d_r!p4>EHUXCeaNSK{otXduCM09CW&jgb_ z`*J}jH+H68Hjg&2$Iu`>T_HnOg->whr?g;XK-92>6Q3aaP}HA}U^@AZw2v_}+&NFr zB8G16#$XE!~LuXtv4Z7~h;#I0SJkT}XOY{+Pas2G}zY6tt%Ohntg3O0l1Q z*x>0g^~Cj}ww}ezf3MCRDJ)2AgG8s(p8h-><>!%TY01iM-H6k0YwPq%y@b>*?@@GG~AUH0#PPu z;ORlI>#>`R)9@gz%8)(gw$ss0n`;N!-K?bqBPDL(F8*xZnz~qt)}oKa35Jub3jq;2 zD61&={YwYj!U(q*1Mc9|IOoY-dow9sja%E6J!@w*`Q$BrkYH^%$}~B!SnFR-C0Z;e z!O8IRCenR)x$th8_IfLmhyx(gHerh(lo|XS^ut|P{=VA6zvjD(QUFm1v)iJWA9Tiw z!6`~ZE()heuP1bJZ@1?pzgWyim8=9#PQ!SI-O>kLPqe0 z;I5cc2&{2g5`y{m*IjJ%tp#SxAP?`3j!TJG{rq1GVY;T7*ao&rT$ud|ikUD2<+2DA;+1y<^vXunOB4)@MWjK;TLL^-Cig9+p$;Zt>sB;A&5Z6Ppky1GNdZ2qf zVR(L=eTtivlpw}CL|Q((Ee!|cowp>gr>4phulfBd;~^rc`H8Q6R&rXK))-XNK5L7b&tD!WCyq1&+=HcDa0+D9)tV60(74%b zS9o#N^o!20Dum7JGsBtb++YJl9*{~_AS{SZZO&rnX6ZFV(2&hm1!Oa{2mK2?IdM~A zwP3F};gR zl2=UJnL9ZtO8m@L_76MB)Kt7A6gHP^(JL1qcESU7{pI|#OWTTDKX9Q6#AWT~)zcX} zbLt4R$IbbUeuN9j#i$}ay0DDHPFsyOgb;mG)ppMOp8EzXEh=;wwF@@K+3be`RF80z z&-Yd+#-*y{w5245*rDb_YcplF+5%63-J;-}0vnsrtaKC)_9)JZ6R zvQt1>b1GP~p&*Ty$(L!|u!4(+&#?o_m2jhZOV?BJR;lMcoMaS*Fe^{MM~Wri+9UV! z-q6{Ms24)k`)kT=9tNLT_;YtZBhLK-l32TcK}!px-qMfQ&hD&BakBdU%4(NNHb*BL znB$`yMi_-;1z-0))?ZVG#CL*Lam`G|>o^;E0V1o2)EhD*XN6I%^dp8~`XXAJcaDJM z=;nD>eSFuUR&ZoDN9NDr&aP3Bj9<$wSIILVc+awo(_@%*lstqiE7rvHv|l|9xnpqk zcN~)Eg1ad({!Q|v?|938Min16?zF{Nu7 z@lnCZLvQFu0GtIk; z4sHoSjL+I=LWr6wo&~cMHqs)GrQd-VKqj{})p znED6K5azQc2CeB#irRDWa`1Jy`SG1^-rC>kX#~%u9ARznX$gUO=VjpdzHOwcXHOW(6lB4f>#_sV9;VH1EZIuokQ;PU_JM zPkO7j?0+(`xqRtogaCU^Sv&*j&rMx*s*Br}dzWgC+$GO0RdUTNf0)9#J4}lYO^*tG8#r_R5u{!Sb+c)L`=J ziWd@PIjUM5Kw#5JCQ9{oIDn{94uR$AI`copDThUKUob*gAR-v<7m6mD|EbY%YTCXE zPovU_P3`b-&;e)=)?G4k_~$~wW3J|l%LVsAQIH2FKi{x~yS4CpQ)19WgTFuPx;NVv zo~Mx&b;=&CEH&_YGksuT;uuWpsR?c27#J_9QW@5+3gO@>U2<#I{Im2HX1Y%rtH#1+ z)$RFy<%**b_|6YTfQj;ZjvFmDxC=jSUgiQbkLC{2nT+RTy?|n#vR(Wj8(3iWHcJXi z6qDdao|qWCb7@l47`I)GeFbM4@ZQIE?y&~#=^|?aea7CvRdeG*zLHbH^FE8sf8}7? zG7YZ2ZC*bls=6L(9b<;8{hHq^cc=)U+trs^E3Oz6$TgYSZQ?f|s8ch=^s);;y%;i0GxT+JUBgy}v%#!oWEvwlcv1jWAoaVi>O zZR7IKBU;@-D>ZNuOq(&UgumBaR-N{0PKsBxe*{=H)Ly=AF*+YaFx#mhPjs^O=kzNw zMW$c0wQgD894_d1nbZ&FyvR%AE?~4~oI5Y~KN=TGjaOB=g1Surv|Yhwn<4KNrY7;)j4C*jz(a&?Pk3UNJ4+<~__^7gx=tJycpYHOJtY0f2*kF74 zuip#+o{_<%v8V;3x-8RDS^$J6`9)T*0@OqW@-zzuaVNST2IJ_uhS^gr? z$ME76>X409|9GVMN8-minX1!qXPv#a3Pngro#w^(%U(HY9+gF6N1O3go|jVBiM>Bu zU+jZzz8|l87S{QI?4-URHva0I7noZ2bK6_At}}0!cjzVK@gLtP{4MNfYyd+z6JiH0 zQWGq=)vZD{2C2{=8QN5m+F>O2ML^{H-QwniC-(eK^|ZEKM4p*k;OF0?wlt|y9Uygg zV9#uK;5CXoFQIH!O0b0!3T;)hQ$MlF<~sJLppFm2u*zpbq6iZ*-e@k@{PU3yQa1oT zZbbF;ns3u(ME&rPU0QMr3V#XlO`bDp*1y`5MX!~;`rq~6$S~9hD64k+ZGr89>PYJQ z#%)E;l}&a0Uh;#X@-QeC75sT(W1jpj(6~H=j&6i8Koug*$(A;pf@77-=mHi`4m9c- zjHce-Nr}hYk;d{$+#I-IY!x=F7bR6z>sAhESxvwP`zA=J!i$npK@FE-6|*Ik74 z-np}i9ju#e4B>mbvN9)0Di*FyV2keZ$)fCBv1$`%!ON$qE))%qce#d{6Z{@6z0)IK zYB~q2ISo!B={8h%jdSPikYVCZU6~cF{lz2!5zxIVqGM;>7Pjf+t>u9XZhh#Rc)sH}$sgKEZ&VD%!>Q>n_#%>Z%VTgNA(XuJX+FAGm6t?khG<=_ zTiM@GZ8};K>71nmd-e^Xi&PdSvd53VtMXM+X}WDphk^rqd>*9h0L=Gqp;DD1$nSD2 zHJXGygKW@G+U@LOwqLwYKD92NJ!rr^$**B3 z^_b&(pj+FY(K8&lYYs!^_aLqVIpLSaib(`)qAbgo{;4|?n{5A7)!wtZ-8tF4zVE5S z&4+hfO34?I>gK_-CXo07h7m@IK9s31px9ekPjYI2tmz&SaMs)adCHu$KD%8r4LQCe3~lcu!!V3CFO1rS?BRpx;PdU`q@t?a3KAJymdz4EX=&t+7v9G)lVq}h{0 zfOx$BQ06Z%yYun_K1#MS#8bF=ED%taNZ63BThz#j$Cj<^r~8+Er3)mwqwghO_|5Fv z#3uD(Jm{(iVo4g2gxZx&R=DaQtM;{h3}wOf9FF*-*%9sXS(fP}A@?wm1#{JD`BxrN zCyj6y$JNTF#Rcv7$my)DfBM(iZ;uUgQ3yx5yJ=~xNbIB&5Q#42iizAIcrRrlD|q`z zz<<%!4wG}bgqEVop#N z2cizAk4LkR;iKw<;yp(Qg4`EOA*_!Pg$3 zsgi;yI)Lps++Ulj1kPz|?KEo;FUe=r9x(Fc@y>R&6?t&Y6968)gq%sMf5HE z?X{EA8j;FS-6@Lwbe4#~q$j-MM=NrDbPYMayXa4H6BlC^^%8&|f|=ycX``oq)#=#n z_faF{{nt-1ABvU_{F(>=UJH~kCMU9rx*6HRIb(F%=CZm;^X1>7cyjPs0Exaq7S-$B z@^7~gGN-`HL5JkNw9He;l4LYOm7SiC_PtwH`Z0gzZjr}^$#;tXd$*R@=M!^2P(_<$ zB33g1Gp;Onr_6JoK5GE#ec2^g2-p!-sx!bt&Yavep7sHn`= z>~T0)eIdF1>)kz97os8Xk@&m5%>Ug^27G zCt9e>9d5%>V>tqMAzky1_1x2S{{@>KQ1z4po{TOmYxiNm0K-9kj)AHuT0T87{`b*P zX)J;u48Hph#t#5GQq{y}QuDEY=k9Dmw)zr#Tfp=VEhmI>TG>sGG8m;n)rG=_Q^S@% zOhN1xy6~w37w1m>W$>zQC11R{r#9|7etXHL$M^B6NO_34I>r3O{ASxjocx~#*9Kv* zZ2_CZ?PV4+f-Um&W(3QM9k$M!n#j!&n(u8+m70FRfznO#13`$Dq#;^sTaVm57%(kh z_$z&{WyJ=MLA###d<20f@$&+^$g>#@@Wd}E4b-N)?f2GtF?4k6A-0hC71^yu-5+>r z?Z0iu*s~U`r-h}+0IN?G_%a}q5wEy8M0%nC^nv(|dN#l3uLSn@&y}QjI>_g8B?Vub zQT*{M+ZuOhhs%|A<{wRDh37@Qf&D3AMKIzw{U3YftYwd*3%8b~Y^xOz(aoMa?Q`h) zel{V-n(|!FeG%`fLd=gUc(Xu|q4kHQ!9l?06wsW8VE?W<9*OI3M%=_Sni2x+sTk`0 z6+l^Of;F|W)hP8MyPFRsfWIJ~O>YZ3sAq_|?c~)VH71AOISw-SIj(cMO9Z?wOyT1W zx-fA#NTOY#@IJ@dg*zjEdokXe=`sy$dNHke2^pdpuM-ZP87`PCe{PV^-(#_%4j_#k zhv6xRUX$IzJzG}Lg`@drcT+^zM(&(nwe%<04X7`lM2eq_rbM^?St$k7bYOe)E7cMox(~e)>BbbomS%MSFF9_c}WyQN*7|sXcxzV!cPL-`Al_z0 zy-tm*xPgZ6e%h_-DR$^LL&Qmz^I5jjtF{$eJ`YQPWRvB|f}2u>O3Y#He-SFIB_OI6*%EE@UBj8CS;WEOYZQy zn9ai3)DBzlEppax(`@RK5_TBteTE@Bq~3sG3Pn71VXF=*f13BL-}-RbGB6mh)gLFk zp`w(tsd{-@p0N4n6mH5Q-U6Dl7Y92HA@%Km5qAK5e{?6cdLV#IuxscKX1#l(($J}C`ZD^iR- z!DrFT*729GKilXw^-(W|RH8k*v&q_N|5WJ1vIa^=*^8Yf@D=o$C8GT>D@2Q8Gu`LS zt+#Hay56?!Mwj2LRd-qxjS&B~VX26*Xo1S|$aZFt9f=lzlDjDAwDa`~7z=t;IRBiP zxM@dqyCV#-TQ(!OhG!wCk1AYktQln!xG{Mr3G&19czO)aqtR_E1E)=Zefhii5?h;2 z?Xr$lxtTzalspFRbH=Gpt9%F-g~0wSnYSnB#AN-)ne< zSlk(9X(A<9Ai6#$x6D>vLi#i`{Br)0-a5yPTHDE%Ei(dClz6mqWdPBRO}x>8I6VVJo{*k4LjKmZb_v zM|&O=d+yWn1*hC!PC$qhb{y#F$2fe4fAegeM?$dYC)L_}dP;rLR;c+dHuJLpMFSuf z3+7GI$o1!dwyduaKB_>`f&kf<$FB?=xp1yfDX)K-9B+6+gI!hNW=k0%_RWG&*dj{Z zPYDVJ5&hTl(9VO8Mkf05O~39I6l#X&(+IOO^VX>M(*DffdGwG;#PT7kW#6LifpGPf zmj1C@v}?B!Vo$!?|gY9+SS9nYrk8ep~Mn2Zc}uT1AUir$9?0=!$sSE zA!5SEC0F4E2H^P-W`EYn{)|3#CGhfF^20msV@VPvV4U|N$aM=QM-mGF3T`*Ap%CWR z-8POjPm%^IsLuH6byU+qoV~i7mw*_j`dB4`X%ICeA#(@5D(riN4-3im)>623$k*V3 z3ihf$A4&R=ZTitCyMM?%^0aJLZQ2O9yT7X85-9Vk3==sTVH_fLyL|(`#UX{fD)$f? z6sS_xgtgo7a^cdyE#FYVx65bW^+I8&=@@oB?>Dd5?NdOq8%t}JLJr*?7%Zbb!8&bE zvroapu?X%13%}shY45}krQ0^aBgXk`<|I~w-FKbvG8ce}w5@vG)AVKf|7vgf>ICcn zrl6z)B~?(YmzjahEF&@WNq)Z#sVdg8g5eUkC=2^j;;%5fg#2e!jC-~+&fq4~lSxlu zJGfsWXLb1+n})`hN8`E=p%!$&<)gN;cbexutNI!@;OVv$$i%@Uty+dZ9@PwGiq}K3Eo+<=2{PQ zORvAal)*DjfbulaamGdUV3nGiDIv^#dvxKk{*G-$h3paBwVO8R`G0Zdf46m8zp&%v zDg)z_;;$T#V$r_&njBJWl^FE|%7xa;>R~^Ak^7_OnE=skW#6Ri3h>B~KwtyQ$P|52 z&?GY$c8HR>PY0d7>GD?9ZzyO?M)$PQ@)*79B@`;;@%^qS&eB9=!r(v10V68CayNeu z(O=DIT#MD#22PHRVC~;o)2g|`bRa}H86K>P?XPR}!1@u)2y}o*g?||Rl>GnKE7Ez+ z5+5~YZAAc%vYPAYK`_ms+?Q@ec<#}287{xLoz}2wD{l25>WR^(GaO=hy}xaRzU_k2k#1DQ(;H%sRAhTWbvfvJTHjRm!snlPf>7QgTbs2F19^QmSWWg?m2ZRP!B8+R%84SlNe`8 zyzLpN$ywx@-EL=A4ESqw{S4avI4cufEAOFDAaU-xH$dN!n(riks=EVf()><==N`(d z*tMIWe;>Yk7fcAZvMa;X?IYcFi{1g8#f>(3IDcCWR{?|pX5bd^r{2DVdhcQ$2aObn z)+bqBOlbdH4||($l6IK@f+*uZ7BTbiOKK(k)z@)OL6{r`uAchA%i2`*8hgL+){kcZ zJ&wMhPg?yq9Qb99)F=uSHbP&a-8V`WPa*)OmBP#xMOnwpn|xn&CxFYy@=gSQL&d)((LwhN>C=MH&u#_dz_pu@92rL}j%Zy$qWTFQGwwtn9=&$D z0RbnsdF56-IsVGon&OuwCUH=adjEx;z32Mf<|FB+u6O~@3wybdKt(yq+>LMhn-t$8 zRW5;jAH8!_FjV4cvVkav8%n~D>3U<;KtfOSJvGmqot?|8I?hs9X{^#Cd`bcrr>`ol zvf;{~Mt@J$Mo0{#Rb5-IBbvjL-K2u_NbtuSl)h-5d^kmYhSJ#Vz@-q5{g%9(gPOE} zL(oYssn^IZE19YVL3TEcbl5ktA? zLVgpQwZnD7oW6v%@FAspGL{6I)sWVDjYblNM2|4>?N^!#?cmnd7ptr+kGoDMsCfD& zTJ}AhNEl<$z6}hKJy)%ckiU-gH-{rU+ct^2P7pu^h+m=oR>d8yT+`Y!b!m^-!GDWg zcC7J4r>tNh+eP`B+UN8X(=Xm@!z#0nr#h}NWFYlxzh7TWI6x7OaA_+CR(xJ0MqC*T zswwznN=Vk`HhGvO0@lu8X6b|FaOg?#dA`7QiQ#58B9(Cx+ID`AvKQJVpL+rxM~O~8 zB{3sMVr~~)21gK8kgV;Qrc!$P&%W(jQ?}O~{!2D^KAuo2wf*AqkMgOAXU|#GsNPYb zz#U1wV0faEzV~%BV+;}Pvc&Msi#64BSO{p+=Ox%IG|K*Nd&|>xn-g@4*$zd03o8Jn zHe`pQctm;!EImdW^}gH>n!$!s9%PW{2!??4M|iTd1qPuDp=8>i{NO^4Vdoi+njCcD zArtX{yQNs7%(d$OM7C)6d*yU-MuemUzl|kLT*cjU*@EpZT4&2cT9?moLa~;)Sh%$0 zKc!rT-z?g`)uB)_jE0+C(-yyVOvLkX04OpkHgw$?vZ=y474JgLx(aW|$4j=S^dtHb zO=9a~)2=?$k-uV{eq6hLvbOZo=CvKq1`{ZONKOsX z`G%VkQAfvKt093R{|IWU2u)7&RQ#RYGVzI*qc2l@DP~g?zmoUrWpp0V4$w2jr|8a# zSUiK#*WpmnZIj!B=^?mvPkzi27Hq)ri-Ns!u_F^^_d5k-DbNTb{!oZr;rkp8iU0|b?41e+BcwlLvC|t?3zm(3ke*`;&j*9{{%5!xEH^)31cT& zXlXg7ggXqW|EY}@;}pH(cQaZby0(`EYeBYgXhTP|W+Esr(dRlIH?@a7DM`p#>1M?U zn|c55mTcnRG(X5Pn3UX~gox&P?+ow5sj$XnFa@@r28~UH4y%TyBc`Jw5veifhFSCF z?jzph6fifa>jKvVk7Dcp>mcv^QW7u5QDpWk&9bx5Y0NH54qY8$&L1&35bjzRO(43>W`&XbH~>e3k_l{C z?UXk<0^Q0xFY*!xFxd+-@Rh&+*HLKa`Jo?Tw{6>33Ny$ZuZE3`I7)t6*OZ!mJ@Y{H zG{SX3=$r@~F|`&A$@_;P`l@f)JNYqTYB46*6COgy=+oEH#2$5nt33N3GRH&g0i-^P zYoX1Z&nfJo1EvIEyknbhmtAV%GQ?1xv4?Q}Q8lDBm%F|OFpf^+_UZGtpsLf#a|Fi+ ztwm&uAt=}|Dk-iceSOmDcRtG%{7wsr?|68Ge@z- zF`rozzMW9O@Mx7i(Y*7+8fNsVTcPAj!{L+TD9??z?D)%&1$rS?00>f({AVkRLZH8s zA+juUmOq0O%MD#>+(4%eZrF^HltL$ORT{ zjTA!CuU*a?a3J?$yk2*XCqmpg$)8)fDW3fKZi1zfC?-V$zrzI3Pki6{KT87il(Z37 z{+x2CBK7xPr!L?~24OJb$FHcryevwu6_P8_|?v^{I8k>RmK(Fc%ELZS+BH>I4L z*8ZG&Qd*Byd);AW=9mb}IWydeKh{jP9 zoq?;XSain8E8`y6>%hy1H!>lPAC`s``^A+%Rob$FP#*C@x1JZDjtP^*M-Nm;d{YkQ z;&prNez+@?qdrq0{+#(m!Z|KT->gn>V^Xx3BX?0;ej>#iD26!0awZniOs#m=5VY_i zMXJ0CJ;$VZ6fzxVxY(A;v-0z=`x0}zRhvKghlKFRbuxfpn9A$kx8abmvvaemG z(_TFm?e&yvPxzxqe!?FHDoEZhV$I5^JdH*a{}}|gej&W|tU(MdIvUm@O$;rTAa(wL z0m!GzcDlQUUV}(xwRfUJuFqPv5$&@(1@59+I5L~R+6c0+2?;}UCXWS713GU1hYN^a zVAeuNj&ufgw|^_VE`sJ&#h@3v!VIlKGZ_w77gk<`JRj50pkVLrGHS^;CR*On((A4W+GN9Y3!&b$b%ATq_y4#6&E0eQEZPxhq7f3mh=3jJ)#Ho# z__GvjqfvYLoiC52iNMv8y>rD{dF5b^GOC}#|mgB1h6@t6F!gqUVl zh(19V0IdIx7JW7&CglOmlK{R00PbEi_YE-y3>v>BkC8hZ(wb*hvmE#mXR7$hI)Q}8 zw6Mu&_z>Z&j|qF4k!DWn?b@V;;suqyG!sJS&As1!hN|(bm=prkc)P{xwm5n|fgQ>> z?uTrP4p59DWSeP1MNz91j710diV$!Sk&7BSzk6WE%0lMo@Z{%nU^Z~H zsJYYSnwWYE=p7GnK7G>WJ-QXzjQ(!bc-sq8aL!9xKsQ4mq!I~X*Ju&<{~$twUJ1d> z3Mze7lW_X(Rgr7Y`7pll&H(a;!;q(I^uu;s2#A>ObQhnlO3j5*L@@I%LXDd2(_$g1!ztv z$OfH*h85@t={-s!=|T@;sO2RjM|fdd%n4CW+p=%04EDmY_Z)^_)kKaEV%|ZJf=SUp z*y!|_rB^W?SPi~Jq%Hb+_nw>`Ebd=#vZ+g@(rI=%Xqha*#+!?0^nxF9bAi9bjmikAeCAR+e3 zO4qgq4@ZL)+$^mCOz%B7%4I{T(tMB~2!`0H0Pf>f{#w;WVJSIaA;>}#ii~Phzxwn4 zpk3sqKyw>?(#{<&=noyB=P z>F^j|A$AIvZ+N!WaX%UC4d3l>?Tp>GW9WmJ8dd!)E}I1HVETY;RQg?e9}sj<#O zm?YKZ2iq4fl-xe*$tRV-&XvpoTod6!tHL`Vau|eZQEGjr{Kw)_69ybm@7*r5%ipgG zP=i)=z&_y&aC)%UzFMvYOQ%M>EeP(@zFRV60q9fPU8QcBBTASSJLump^nT(+$T!bf zUQCMS^eJtS9&*v=JCQJgq)|}Q(m3IT1?o4-6L-p>9$o;UTtFP%Me4mh!^*otZc>ro z07qnZ-ABdV@o?ZO+JhIBJJ0>-l{YaZff$hJbMjYFHoy0XDJaPEOe)*Z#N1wFu zOG!^$m_mD$vOB8oz3A?k##S=@8<;_wfib*(1yBTH>c}y3;?Rfz>h}Q-SivYy$d54x zFCsCgRegdul(e(T@ZkGBhtXNu{kWd~PJyQ+Yqj6YQaGBh7&kJTqT_5-mFmBwcQWV* z@Na|aWxsZRd;b0fnBoVws%IhQ0Uu%K63k3E$wCNOAjfVD6L*QV{ZCvf+XZ4%VRRuE zoT~npA}$WY7#dKFzneGkCLZfYepvtw&}4Q*T>V*iy(2EMXup2rtxjxefsKBNytClU zTEYphEBF-Z{#d5YHLuNy_eweO-E`!bhBq}B^N#omfiJz*jSB`ifUK_jf1d?=Hg$r@W z{)>kow5(AbeJ``961QOi)bpmtOlKO=H>Mr+_KM+d++yX$tZ^cbJrHy9!Fysw+uDNHBh4o&#@4cZ&z!=mIZlX>YjaBDCapuZxBB8sy0Agay3C+bZb68*@zXdVtUw}HV?-1*~1dr*@sMn#fFqV({I z60H^$jo`#4-po99vFl$#+-m|;!`ZQ%^o5{Hd}(Q{{+|TIZ2ty+^2oUmWWyk7;=RV0 zG(P4Pr*BFy4S3+g5%Q)(>>Fu+-ixR7^u{u>*&jB<&XiZvINsRnt5WE=c{iTX84Daf zhL*G{9~*6aIh;~>bD9>`N+;1c)3&B^gPCqjv?1%EOo(pk|Lf_?1EKuB|DUmDD2hp; zsK}tAq>yE_5Q@Rr*OZh*$=DJ@NtAty?2?_3eQlADrLtt-myD2o_dSpI=lAQMYM%St z<=k`6@;a|ObHBmX;emiq#P}72L%k4rQ-Q=s&pyS)=Z(%8l}{WZ7|a_gVu&&yUc zCWcfAFSzIuy7V!a`ml(p!PCl!_EQX9s_W`0lgu94PuN|=rk^wAcViHQK4^177G87~ z{(hLvtrQztz(Tu=A{^xG7(}L_$l%6K>iv!Wz!IAOy_-3c9f{{VGjp;~4GBy!daP>F z-+zI^FB!yvx6GsJVt5+(%UFc^#RYG*8!# zzo|MHS|WIgk>xt2s$5?C4CG^0jC`hy-#jxg%|#8!VAJa^4z-8s#O>xsRBEXz`1w9Vn1LAI zpYx`J-gpA;2D|hC`ycu#S`0B#Q^t*+6taf`U;Nb*+)c5HO=f zOtPKY)f`AoXw-T+nFe9G>T*P+m>^L{<+m3NJ7I>UnAf|`7UngC8(1QQs$23-N}U1n z@0$=J!9+L?!yoX6p72LtT-FkHW-~atcJd_g{+uC3*@07xo{*b7CUbA+fjNRn-y_0D z3E&@>5pj+sGaw84lVO~&KOA~;FAq#%Fv8ce?|YrG75xB9m8(1PM70ywkSUIE90)MO z$o-oC83LQpB3NF*nyR*X!n}A@ri#8=v3Wip-D36N{J1=jCf%y6XV}Qz6Y)Raa(*8T zVn8gKRRzLaBRMURwih_IYFiogI?mYl*$AaTrSY*`PFyez-qiUoM&r0Kh#>jryzSx7 zG{ioatxZ-?u$rM!m+b>cN5k$ZZp?3$#wR8wx}T(Jk@oNNp{_xkw-N38lt<4lwA9g4 zPKw41-Pc3vbzFYjt3S2fB27!!>)bg-scb$pF+x*qvK-=G0AiOIy8nd2I>I1Haq7J0 zp^Aj6*e(64FE~{MYi^!!UOR%0dTv1Jy&lLz_gu!b<>5k@Y#XdbV{B6ZcG>qk_XPGE zAwmra^_~{oHV5Hm{Mj1s2PuTofPCeXIlpV){(~w+OG882xM_f%E`s;M*o;1q?enB3 zl}`)m(PM~*gXg!h{?l9)N)ZUSU6y+IE~SbIAskuUm{)*#B%gtKAf$3=6)nk99o_M( z=H+Qb{$Y&AlQ%}U+2XnEWnIfaVdAK6L!xt~7qY~WP+#r?zl)@3Hx!Xk0jXsvi}1NF zRm7om%Pj&<=02_oo{w;jPs*qp2lU)9##E<(&I?yeNKjdjiY3&&gHTj<5h%v>|30P7D6D|bZ@wkVCJ{_4#2{RGv0G+_8_PB?D z%#N*oXUqNsQ!bb+{)>e%wNWt$Y|n?nn8(!k&kf92(9@-w*LA9kEY>r_!0E)=`w^Yu_vc{Po9cKJ=b#F7pyoPMOxBBIAVTH=Fa+ zFhqs&*i%bxp-h4YG#|9md3{yWfKoR61^@d}uys~iYW>f?{hvg8Tp8HBF?3f37VXo< zOZ0v3S1ogGmmBuK{kHIzBeJqLJ;y@c)p3+?M)!|b4jz{3To;f=e-@$D zJ=6SSV15fPl}+AFITNwDLQC!g-BfIQGz8G>*^45K{vg@lH~lleWSix`9&5&91?6TB zdcx{LqUS|N4dlbSC7sMTchPac1QUL+CmXYd@;lerBy(201LueC-ckq)5!8$<>*_u9 zn8ym1_PxN=Q7+>L{n(d#I9LfF_X~Tthu`5P&8;=u@U8Px{mgFH3H6WYzogy8n_*|= z^YqE`i|5;>9^LwQ>d$3!ta@zr?8u*t%J6%J39TCuVQ#~tecMJWzU8+ZKThjs0S$^2 zbkbqEH;xv$*E0WUc+%M|oUC|-`7EpUgQ=0Q4DJedI))s>;K$=#I{3w}Q^7sVTc5GJ z>UF?EpPWGQj@w+yPkb};c4F+pqT7)Ot+9$LDpjlLnmOA_X&qaih3mMSjF}4hXGJ7p z&i<07Cme*Z!K!MShWg5P=-h7o``X83Y%cvO+Os4h|FSk*f^wYL75mXw- zBUNdCp4=OjbA%`7xBt4zlgTHp)Pjgm>J;8sD{|6#Z13XKY;ofD{PQzN z;9LK0_mru;4|b>2sFE@#$P`lgO8ea-?~or z-md=e(WgWB%zcq7@9wv)ds*xJDdNO$ezi^>Yu120vFI~3@4Az`*)@;reDLVuaW=|! z{R#c}rmBq}(n&IOG+6%w>+%7_>l$|!zT|Doig)}-2m6*OPOO=eX1qKZW0uFlhYy|> zoYw74s2$xr9^i?kb1}7)y!|uX?{~>kc%Ll){J8KUjK|p&((%iJ$H28SAUu8ZooUA4 zYw;{CFpJhYS-PuNUa@yTqKd==)1zWax4I^ugOma)|Ttb%E*Pdg-Kr zXg$A+N$2zmERRXrm3t-~|Hkw@^Ox_@^^X@+8r?gkX|+#?wH({8Gx>z>B`Xg;FV=ng zQc3%$9XF$X%E+krV`aONzR&ymo%GYrn@k%EIJ+xfseCBXQF!rwM{LTw5V!j=G}RZ+ zCAF)ng+-_tM2ysA-7{J&?QZ!kg!PZf9FRUHP@AhJ5(ztBaCBStS$)vVRLcblX~p{@ ziDIqTtKO3nmE-!W^zD12qU98;q;o{qqNn^>cf)QK+WDLtZmIm^Ja&U@o11Um{nr8x z=@;qgVwFENIfj-CFAWWI23|ajlWwt%&UxCD?iVdh%FRPg%(mP_*z$?Lzq&tEwdXyNFAw-40;z8`b zWutpBxjG&RpC5a_+Lme+?PpbJ!%L0pTgW@rg3Pk{MEEdZ*=Qn@ZG{%s+;uM0^l%#K ze$-&+;E_=HhnkzwefL$GnimtdpX=H7%zOhms)Us}C`#LbrOvnpAs z)jS7^qw-)SRr|BzY}IGQ`%lR_S0>!1Y^ZcAgm}IHvs^|xfuD=ZWt-)d-J|*l}k+U|J zypG!>&W>Ei#TNVYtR2sfRSBow`7680gFjPrq^jnn*^yH;3);<9hr=CP)0_{PXod0U zeq5{-Dc*9rJ1Xqc5k|E7*wYslOkd$GFeYuF8s56v@dnrT;CZ6qlu_Pe8hlo^_Y4tE zOTjfBg~!(9 z^EHX3_M40Q+om4A7zzDRH-S4^JdLOCIF$T*k7+nR#1v;<_7f)?bwf>7e0NOb}9p{W!Rikbi2qz+MAQ2nkBA&YDL76_G!Duolj@I&c9A?SxE!8e^ii5bVBz1 z?K-LL$tU)lcn{A^isVONntWxJc%IgbOE74rPG{3erkj}jO@K?k$_>b#A01Mxhp&chx*>&4JMsv}MI@)ma9AMOQ8?e;2b6c?R>7?w8FQNV-1w6=S;cWiw%-M9r)h`}A#2isurg;; z6ibIQawN^ve|2YF;jY>na3egosjAm%sr~Yby4h^0v*~aM=2px5a#4l_C5Y{GhFP0( zn`Tc6>f}$-Dq7b*d0h3n5x==~(W1}g5?BtQiWPD)XVs6#ipr-_+Evxt;+ePJ4wPCS zr5C;q$%$2@^PJV=FVT9}XKs>iZeOszrt_d8H@Kl*F?lvvb~2WnLuPR07n9tMywQdX z?H@2FxG%_To*%7r@a%baq+Mtwhd@MQAue&{+?dLr>k`dcOP?Ke_wd`MQiCpNyN?8{ zP-sYOumSB2ZcBB_LufElN}WHT?L~FlkOQmHesDJE;&+w|Sx@@V;0U#}`Gjt5$KT6Y zTJO*KCsn@>!m@CuO|+NkcOVB|5cQrmSCuULMWh}siQc!|f6EvXC-g;2E5mK-<1xMW zEsHJpAqarzo7fgjd_9nZzrV5v%>%`}8a?_i@rO9Q`-mzr0G6L6D6T^Gg>6 zOos*(LQTwC#Dv&3hN@y)l9vedWNI0%Zuf+#gMZg78%1!BF+z) zztb^)Fn)?-3k^fl4%M0uIKs z{xZN42=ScWCZ&Mzi%lv>Pa%6T62o77YMo#v`fyx(PE#4uOXPcUziU_pubA$)VQD># zf_{Cr-n%A7o4h6jsWz(Rb^m;C@n2guA070oPs!5k1jqTPk6x-0sAeWoAs5{_ z8`Z)Ii>jw79J3OJgarOAS3gMUV75s79l&Qu9mgE?ERhVMM(np2r-RGB%G1C8r>T7I zEiIBBF`o9f>rt|GdnujX^@L^boQL%fE(UqVI_%<50jMU_^^XuLCv5h59INn7Vq0w$ zeaFb-$Y-oeW3%ztF26`p3pd8=r(5r;^;JfMghSIX_YFTX!|XxGF$7ZHt1CX4Zu7i( zoO3~ukZ?=R$a#ppfE0QN<)_UUvy zErQA4f-zuviw!i?r1J1Ocu1Ob^fI?w%td742?r&>%i)P7#5Mdri6 zc{;2>g_*zfwnGN0w6yJ;txr{&+`6P`^^OT15UyXP-0RiY$8{kYZJ9P4t}2Dr$Ajz+ zWtE#8wm2zi7adJ39_TQpBKt){`nlvt9FJ@+zGKr9 z$F}4Vzae1is@WURzoR#C$zyUU;MYMd+SBzOf9j9}fY1~B!=ZN-&ji{_8tWP_)w8iIshVYe(sHzR(P}R zAO2~&!1?UlYn@PTTCZ@}E3&LZ5!!8>2paBeF9}jv2AI7R{Ug{jgz5{b9w1EWuMMDa zO$+GRO4>do{)BVn2LpFU21~t!qa2U+CbEj~adZA1BP2j#SYTX}q=!)ELW-%&_2m_S zkxj7w!tl$u9jjaYRK__YC47nGpIvc?rV$t=h$ zXp%ADa?^J|!f|Q+x_Fp=UNx%0eQm1^?#C_i+l2^mlK%|om0q3fT3r9|Vejo@(!#GI z)Y3brdx`yi`aZOKRAz+q>@5hy8vNZ(*NQWx#vl?td1qwpUV9?al&QhkzLs`4KVwGV}M5~1L6bd z)aHI8+svM|cZq#T&1I^exSQ~|8Hps>X4!YyRojqHAOp0Kj{DPx$6kWUV3=%+^?%I# zSjOB^`FE3IZdJ8Kvxh>1Z~%_3L9LMwiWoZiD)n0O%J=?p4F6fTV^V`xPa9Ga(ag1E z;<9sZ3`FD<;WmdxssBtAi=LCpzc`o4d1UC>CoIlcNrq@0nXKCCwn+~{p$NAExCSWP zllFtv6ngKh9Kw7{Vt%R7}P0n)DBSfean5|(GG*Ln%jRs=9)(W zHEhIWlZ(JFRQ_Xs%>;7IUe+a|G|mZC7ovw|&W7QkB9q%O7>>(A^25uI5g+Sv@@Z*A z{J!qiMTlci&nSE~n_OaWYRf0I(I5q(-`nZ*Cb&1FpZ4mVp|5s{|I9xi$IId|HCc#E*>Z-jw4p}VKveenoD7u%AxO>3 z6c{^)qrm(r4EFe0E7}sjr>YKBZmfL!0&XNoqaJqOvI%Me@Hc(rw__`wrb-X)b1&rm zjpQl+iQP-90@kJ>)OGbB*jB>9N#`XEa?cVtr1$}qiej;N48Np#G(;0Z_RMC@4QY!* zariRpG*Hg?S8oBUfe`7qvlNvhK0cawc~JS6s!KCwH@KSELhU0LD0xBDJK7C3Dc>M5 zhht;GSGIAfAbR@=oM(7t;8V!?Fm|8tg;?6dgrmQ}_wZ_pcCU2fwYj!L_C`;vprnJAfr&c zyAkWxpBi|Q(0R9PnkLy~6}3mzgxbc4^zl{w_Jf2UbWz^IXI;$eX5Mt{Q?&oOQ&eaokd=dQ`4fNrU9uaOr94ZqxqD6)BM<>H zI-i1{pFRqXir_I~5OJ?Yv@&UGjx|e*^78@Dm2(*bm@iC99Fg^D6SDzEiN+#LvN`}X zpyyl0*_bIya#_zJ{8X+QM&&sCYyr(v@5tUNK0zkM+i-F>1VAfvP+5?Ef*OkvOw=R7 zx99Evo(H=ZO1ib?@NQZ38?vw0Rj_W9WWS>7@{yyA1j+|lN_ID*=E3co+e$X1eO57;P$Nh*xm-ps zz1#iqqA|X-Et`dJHn~+qR8J6oO=dwEddp(R&hHBUFlYO90PhGNB2U=6(|s8N3G+m+ zuj(gTN72tXi1E&;7ul!eb2#nCoxVF=VulYX5+V_T;aF+P<)Xf<6I<`lhMA`f7y?X{ z=?{Z@?9jTi@b;n!IDdo?+w)ZctKQWreM!@Uk*#j4;uG3hhqKpwJWr}9X8@Ng`nT?; z9@_Mv&y%~X)MwgQISSo#Khm9^=U$a3-~k1*3(!WVdKT&{ZQr~-?A;E{=0^L`H{`Dr z_2ye2t_t>*qJ;kF=ZDV*bO963Q`5Vy@s6(O?u(<`_cdOr(!zs@q=EN~IIiOihNdeafK$&i41KN+? z%a#>C4j#FB>0xo-QmyEs8yNWXT>WCclLlkpx3LR#5F3o0M0;>G;2Qw5%JiJ$WReyq z+D!h1TEB_SFE;8c3E{OHhyKMZi7f3j-3a*IG`fDUd;-o#4+j7RCzkG`U0k)}j>7d? zKc>EF)(#%7zj zZ;^cP86n8)tL@vC)ZLllJD-#KxNpG66f3qIN^=jqo%qH^u;}4~G#f_vc*U397r&M~ zC$m269%hYb@Dca2gXczwK8f8^$BPR4q=%WqY>*(1{!O#GlYdU4%QAg2;}A%`7#C{K zwTs0>H|TmLsooHsjMDr#r@9pk)-gXs6*9Ox05x%mb^blM zL{Ok>Kd7;HrkeqA4e$7s_5CsG_sd~=@5vXdB6sr*?mn-3XW?>kzsqM~%s0c$AbFBK zwHFPfXak|D!Mi;o2Jvh)fKi}SQWX4FZb_q zP`Bi_GpL|aCDp`8L2ypK(!Ky_tFpl(9F+#4#>b{C1x>{d(wa+Cu2#JH;Vd8u4_X{0 z9_vhR3Cv@@+~-Q1I9CR-4E(_zk+BemO}!O!+H8#W1%I3C>b5?5un}Cs?U@{X!I9(> z41q1b>j2)j0Y3*BUjYDxzB(%&eHN!FS2Y{u!er~v&uet@JN5<}p5q;4d}}?KWVjXQ zN%coFGz6&+2CQ=B6r-NyNR~ANn^d+{<=k#6`cqc%Cu){uuBl~yl|E)WDo(lT`?olU zrtuOK$6)b!L(h(;cMcP&uRQS?p!{CAe(EkXNkQT>zc_Z9+6df zWokPUy>>Y5i*CuQxrdeub|!xf4r~e#{n`)iJmPP28-1h6XZGJaX}#Os@Q!XF?N#Wu zrm!2(QRqu-Z)|Dur;rpwOAe#XJ$%6=$Ce+Np75YLVsel4SLppNoeUC*I-!$#QiXQb@qR=`-3)W9+DnF$Bx6FN@S~*>9 ztZ6h1Y(Cm-&~!zq_efjW+7WGV1xAjc=G{~OZ5fBQ)6aKU+u{s^ zGFEy5 z)H8|!O|aE$G*NX$FC! z=V&*&_5bg4&HQc!Y^L}p>7=*9c1Y0MsEPohS&Q_}Sk)BC!53Cb+l6GsI_)V4mXB6= zv!l|)rH(b2>VhZw@4->!f7{)rfLo&n65QTH?kH{QuaopRS;{wZ+iYVTl<48lrl#Y{ zKf9rV_JhZTAA`Yy-G$#OsoRm$L8vd13NfZ{)*iFgtoWz})6O&tdBB zkmZYpdYMBP+}n0u(#!a^aR15nf|@o!2PDVetRr7GR(TG=P{I^y`qsCQOp))}jmXdS z;~uvE$><(O|0qJ=!D}0HBio9BO*y@DnH$Su0;OwsNzacxL%a7#t-fWbS2`CV`oZNz zQ%ikxdqF($VdR$$Pi#Zv$O|9>yzRDxD z(Z1l(-K`XJT&iue2<#bUPSd?L&F-iM`fxGs`z5GHyDmT7u@3|6L4Uf1OKY0i4_ahQ zGJ;6thv?{|ymzJ_UoRDu%2hf42wog}iB4y!(jC=8d}8TmxA^LoMX1 z?f{89C}sD9ao1{Z{;+&7w$98j%pKc9Q{?KWxf6+Q(QPW2Nl-#THVg+ zLG=gs$)_!S@Xp~1E_^>LpBn$WuQ!{AG|-4?L3#7MnvU757|e5Y9jpKfV!Nhn{@3Xk z`oE3srJ|YA6{0Nivs9!fnPnHo7ik z*g4knkjAOtN3m_b`BftSi@$OqIntq;COwjTs$+K3ipOMbO+g7m)+ql-%$ocOhK0#dnH z`0l|yTYWO4+kfZg>rfd_{De-Kfh7sY5ZJ8oxY`jHCDyoerWDcW6BeJ_lq$`_7bnO@ z{N=;>&F5>DD)dRT^3V7>6L(Bd=cchH`2eB)sF?NJ$$*W79n-9mxs=hb>Gb&^%*O{a z!u(}flJw)G1B!*gMTln*LX}<$$ZtwDVBvex@}Nf)ci>FV&X`xA_}*s!GspRu)!x&T z1rKnWU)h@?jJC$XcBS6l-7jkld9%JHNkUFzS;J}0zU{Enhn*pP`70YRzW0kFfF^Jg z`Qu&sG(ZDt4LimV|9+q}$!XNaM~t%IJ)HiJaU3> zWie3llb6)BlSx{&lzk{2Gwe`z(l1OL*f{_T8m=9*xPE7ODoejPB1C~> zsB`Pr{T+KSOAm!!;%1RrLDQ@RL*T^+MiQ}39;n%gfI$Zy6-$t<*8U0DecDUqFujQg zvB6ooE?<6CP3%?-h?k=Nh)2S8+lc?uZ+}w_*X2t)qIj=qKOaMK6cgPo%n4@ zAkg8mpT3S7J`Pv^crrzlj>byb`JLQWXArOu%#3M6Nq2s}^S##lQySP`Q;ai^1`3P= zzoLXOVlXNC-!2^=^o+;3l=M8m4XN@60QqUEBg)TKEe(jONhXfP8PywJ6+vjPGSNTZ zqx(z!R2aLjUJ4>GoUGN(L=klsa{K#HiAQO7zr0cclU9~0eEA8Vz<#LLas|lmC}uqW z0RqCENvT$!^q16tr0+(IhnzWbnyvS?W82{sV?bB<%d_`T>0s1sH7Z>^|Ime*l&%~% zfbur05%agxfx{f#HlomOA`g&VcEq&4(Ctp?F(G3#^>cGsNcQ= zd{6^eHNehv73wJbB#ptR54^~&ur0@WWofmjv+z9!k9$33Q|II2S6IrGkel>$VnO$A ztSBwoy?LIxYN=bFb^pEEM?{Qr;L$zq){Xg$k#oBt*Y`cz;LTS}ml2Svqn4@IC|`CF zO72-&VgwdG3qCRXVul#E0@OzUoRi0EcYw?6$Y+ITsfr%)QEIViXiO^bjh6Om%@ktimolN;jMxB^Z^7VFn_LUj3}FE_&1TEX)RS4R+PSF zm?B&`uL}v1=T#JoKvq;-Fwp7{>PCirIIo`K)z4tswhb2n(dSwU0oDMb?*km-C~#2@ zQf%Mu{|;Qux&2XM+KuQb;mB1}@HkBg74Og1D2v7eRNW{5?fpviCd^ZmK!F(%z?I|b)0dqJ?RE>$?gV%$mY=H zM60dN84jQ@K;JJgZ!bcOnKPE3J-T~uDjsE5?vPsv+EAa!q{Jse1wTq{Yj^GL6*lOb z*{_QL%RE+8_)(gEB0m;5vCy|>^L#*^ssL=W+(XYJ60vjKkV09;(9p8*;ZB{s{j>ha z+dgO>0wh_h7=)BOox%$Y;kDyzq+w-oTug2fndudX+yk;sE9t*>YRp%zd@C=zdQj~O zBUZShFL9)y8Dc!s6X20q-IFKwU(k=JhS|VZhIWw}Esdb`eJ_T_H6gop%Nn{5n|ALJ zMAfIdi{8^}?Z*{gn~FCu0_;-I?3e3jCpbHD1?enusJzQ{J6!U%kMpg-HpvvB6ioI$ zkkk5+%blQ9 z2+z*Kr;UeA1GWSM0LOp?Hn%}Vx}AxjJ>jzAK&2aa1VL()TA9(0#?E;Uby#y68rq(*TPcpK%i`0+?CUJ z#Tm_kKaOu|BxrE!rNnQ2B?bqXTW6E&o5Dx&l4i8`Lg zzTRySwI!Lw>}?lHMOgUchA$6Wt^L9I+7!GbW8bS-_06kPZoGo^>^(DcO0#2l8J!;* zbtzPpdqnibHycC%F4!JC52j3C1%5j3Gvkz$zZI*T&SL+T&}T-5 zSMGLv%0Oxjh;nyJ2CfMi>zcjpvyN7yK@d7;RQol@H_rp=%~QsOjXKUU_;v9xnENDZ112?v}^P3nfo!G!qtdp z8+@bc&jDuJVYVZ$p<0)?^ajXqm{6}TvK=V7kjk?1y8G|lmT(T zc0l!ZW7RvqOVi7>FMd0uQaSsK%wQ&5u_Cd<*rS!(59#Jp(c&vWBgxbvUO7N`uV{0> zBC5F<4l=O0 zo)YBH7={SyuR`rr|C=$iy!8ccne7ekO(Kbds((97V1B*DU?Qm z%0&{|bM$gt@_6$PU(-W5MpQd0$BN%@`f7?U{>&3Y>c04ipQ>Z`R_`j!9+wP_X7@?^ z_r+AGv_=i|*p7v7A_91%ABM_jMCO|=!ke!QJ5oP#_GVWH0xys7V`SgowUt_LJnGMc zW+Ty%*}iMk`kaz7(8|{Y#O!5v%WdDja(l`wh9<6#{K2Y5s$VNR|Fbkb-rrggSX$;Q zggO9OTI1(!Zo@x;``QoW$S8N$w4JCC>w0{C`i)hLbKXwf#H(N~%NEMM1`*Yk=B8bj zo;H=~dwc|f+Q2axPp@+O?Rf>LjU8_mPI^1ET~x(Yxy+1u|9y@o$^PBh@0%!b#o3d4 zNv2rOFoU-ESm`*e z@+B)vcbHX_bSp#@6hGwvfyf4X4do2|H0Nf+lxihNHS(;MHcQD2VrH_<&6*84?q6V9J=@+IXAs9Ne^f>+mNEHt(p;U`8<(epfZhCAM3Vdfb1#%fTzu!N@|-T7n7N0OM*pZ z62eX6_(dD*8GS|1I^;#EmFS__U<#4}e36IFz}oDK_m?*o9<^(iNOkZ}THAKq$Nftq zyfkj@je+QTT4i3W^ zmz#xPd-zHlZLBsvI`1S~E0N=A!~P;+#ltGpeJg|qD|aMf>~cM+0Y$)s@Ws#x!0DY_ z`FxGMwYW0@r~2DgYjw$X_qbteE}00Y0ZmP-IX}PvW{(D>K>QCy!#F4wVCas!#Kt8T ziZl^V{Q%5Cm=mrt>_p;&Nw9Cnz|(vf`os>E&su4E?Ixeg+S^%LI6%@Mqy{%&b{wsl zn#{59I9aqoTk1c+A9`KRqmq~`h-f`Ce+y+AsVRgp`yWVo$7}p{Ae9NuW0e@CTIW;> ze1}*1aC`sU?E@SU!>NE<0_w%i-%*gQ5Qf$^3ydF~s)|dPFu&lczgsEp$WC6j=7*uP zII=kT(yC%aaOX-Az4ocRf9=3;bcHwpHG1XQ&mbc+>{Z`vMCYA#pZNKqr3i|3LGTHp zw??V%CeGn#5n`u-t>*BGZd`XwOH1u*98Jlhdq)Mx`K`)*YFMPq=&kX?` zbj6`y`^G!8w7NSzaya#N&S!1M5!TUXPTHajd=Xkh%~iU!F}li~nebenFTV7tzXqtq z=w3|{Jp)^4^7o%btuBA=s)$CT){+xAzkdDlx(T@ZYzzc?@jQ%eH z=GX}g@CV@a9BUn)bzAeN(!Qc>#Kyzk>C-RRM=qPUOW-X#Go^V;wSoR}T(tAP@l&fY zN#7Yez!p|-x|v>V12ykd6^%w|i(2SKDlnTKH;%PAeUC&dybyNaD{fVGxj7ye$;V3< zJq+Xu*rZ=?B^H1Q*$Zp!+7{C?X6--qFW`i4-9rulnbI!|(V-Pj2|TTd?!`l3yPB%{ zK3SdcJ%#EoSPO92sO^PQoycz~pM~m~L(LiREmB4A)C#;^)d3ehPEXS=^?ty4(rv@7 zpx@QUE{oT&Bfh>wf}Fm+)XdTCW(&$T0dsh07jtN`_}@ixV`&F?KQ{1l0J!=b<+cTv zx=#fz`4m#!k{3Lsz%qDDygH=qzVPS2Ku`tlcHl&$*6$V=uQEd^x*vT#_Cwlar9&bL zx}?OvfSZ&kVKf7-mCY3k`Zi^yY4rxlYXV#Xp+>MdqHtwCSXQOSIT@@39!Lc|D+Cl; zTmLEqpl7u-J$)$LGZC0BH89Sf9=ygHdKq*Hm4J@yfGP`LDmJa8Ic?F=Qn+kN7LJAo zRTwU@r1#F?>6Na(&sI2`$6KECrJ^Ha9inJ3nU4l&ZHDI~b+|z&wXHdBYO4XsOVp8+wbXTVfo)`cn&b>L5fI3#w%zmGf>`^~fVq{^Z~p z^ip7l{InL_TnX#wy&FRt$E4n)x2P2Nky(TyVTO2!E&z3;%iY}{Oelmjtn>_7NxzpK zi@;>Cdkp)fQ_{icXfBJhW;|}MP^nscPTu4C4TaQOhDrJ3gEIb1u6r2RR-OYPeZ4UP zrPexIh+0efLxEHq%8MLm5$1r*_tI41kuIH7;A2d#b|k4ZJqeE>R$rS^eVmFGDR$yL z{5>e=$Dp3MY)J-gC>E%B#7X&I98M7~Ts-A#Q}UALv!Vf~b|_r)SlDx@dCM3s#N3*o zqyfi^D+di?G&7 z11|gO5W7l~v(BF@Isf*Hynb}_beroacRCc)>@MD*^2D2iaqWQ9qSE8$1qQ({A84e} zM7=@fH^PwPW7Yde32@Wqa$>u_z-Y1-n!W7Y0@5`lS@l(o3Y2B#Q%w9ppzEny-+1SW zabl1rP+V9A?v+iu?l4ubv-%$K@O>&V{SP+vsh?$>Kj9Ra~UpB zkb!ML3rv;tOqH_FXj#tXg6Is;6-mb)Yr!7?{jkdQNjw9M07`hc6 zG!c8)jhl=jv)cYvSbShyBC!altld58=vV4UYimPRn&F~WZ}WO!7*!>6tsszU9T9Oy zH#`55iKVxl@u7OM!`04fbz3?V^OulSPgXe`wN0bNzJk7KA{{x?fYKfYVKd65VtV%V ze(IWSbmDAiBP4d|Ul5uF4Z9`?(Ec5TbP7TNghK(!cj*AL);M-nr3MJoxYa@G! zLLYd~Rs%Ao^m);u2Toi_s7NgwEMt=67p4ktXBx4O2n`3(p;MC#8d@5+@^a+gqzQuO z1e9O1_r}hB5h_PDdcXWA%A|p8yyNlnt8meU7OBL6*@MW~1VuNskW3H+$KI#Akl!z^ zb*qq-qT_)S0_h;2y}O7sofb1f50?vAjv~ZcEQblJHxZ1=3k5pF_ZS?kwkLlt!`)7Z zr3aW{$_!_C%d?su+Y*bFCa&Nkr?HFIJJ z{gT;7-&iND*f5Gn-(;*KXT3y1*FQ+&nC=(IAp+(dZXhD!96xu(wR@tvTR!)r!2S43e;ZmUW!%09IiC?P-P}ukErvx zob{5j-QU-{^+kK^22WMfFBv5H(6jJUMEVajrKGoQ4#rQ*6niDgL_6f|`mGb|j-RtB z>bjm*_(8RZ`3}C-ljbDxu(wq6`VgsAPpj-?MP%fRpp;ZdwDOpXL|s__lQ`~mHn<3V ztgijJaFV6=)=Cc6Qt)~$hIlNx-2vC{YPx&Ijc@#c_a8}QNeb?krzDo#{p-3GRKLB# zJ?@J*-3pJ;-D-Wo)wlX`uF5TjmKL*N&cPPnl$;>yJ|+IwXr*i;mpQs{&%n5p|J+kc zlI#2voQb=kPQpj~qloqk8X7ZQgFemCmyfy*%8G1vRXM%fk0^HHpC@pF&A4Nk2p=@a)%-Q%TVv=s-mI_5LumQl|+PAYKNaJ} ztxDB2Fuyy7A=lcR5?Y=U!aY|aIsIMEczGuS6Lns# zJ&3k9?9KLzoAjoB4ZKyU179t?ew`0}?(v62k@7#5V@W9S2IGunQ zuj}%NlrJW4P$M|58EcE3e)pl=LK^qpkw>ZTk?8GTelWzEx5fFxVlh}G77y~9+^d9r zXN!M*pdq{No{A%$Kh;F1l5b{(X_WDK*yBHM%Q+b=MqfWbQtw0W+9yq-bj6&t2fsh_ zOuL7*OnJ+H`Vg}dUs>xrqwPSuCzs}27)E5b^G=9bO7BNxwBZ#AfviwmliJ_?!Di;y z>biXY=%rrL$<^q~uMMN})`x2yl0Q;batm4?00kq?54ByuS{~(-FU`kNOA|5?1_5Z1+Cd-@PN zGD{14ASR?7YMm*pUzOtYH#>MyTY#FO|4`qwF*fU@NT-2rX+_$t$G_}{WG!%SZk<2; zEnD-=)YFrBZ&d9ZZI>&8T$V?UnCj9UOJH zH!m73&hy=!XV>YN_5669L!N+IwqP0Yd+g}TylGCBj9h((n~#=Cgv#c-43N|(+qA1~ X8$upmSNWjWizr`FyPSQ|%=7;M2V>i8 literal 0 HcmV?d00001