From 9f6b4a43cf0d6bc4660a31fca0ea8c6a523f9aef Mon Sep 17 00:00:00 2001 From: hjelev Date: Sun, 5 Feb 2023 17:11:00 +0200 Subject: [PATCH] add update instructions --- README.md | 27 +++++++++++++++++---------- images/rpi-cpu2mqtt-hass.jpg~ | Bin 27256 -> 0 bytes 2 files changed, 17 insertions(+), 10 deletions(-) delete mode 100644 images/rpi-cpu2mqtt-hass.jpg~ diff --git a/README.md b/README.md index 2ad0b86..b3bd28d 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,15 @@ ![GitHub release (latest by date)](https://img.shields.io/github/v/release/hjelev/rpi-mqtt-monitor) ![GitHub repo size](https://img.shields.io/github/repo-size/hjelev/rpi-mqtt-monitor) ![GitHub issues](https://img.shields.io/github/issues/hjelev/rpi-mqtt-monitor) ![GitHub closed issues](https://img.shields.io/github/issues-closed/hjelev/rpi-mqtt-monitor) ![GitHub language count](https://img.shields.io/github/languages/count/hjelev/rpi-mqtt-monitor) ![GitHub top language](https://img.shields.io/github/languages/top/hjelev/rpi-mqtt-monitor) -The easiest way to track your Raspberry Pi or Ubuntu computer system health and performance with Home Assistant. +The easiest way to track your Raspberry Pi or Ubuntu computer system health and performance in Home Assistant. * Monitor: cpu load, cpu temperature, free space, used memory, swap usage, uptime, wifi signal quality, voltage and system clock speed. -* Supports discovery messages so no manuall configuration in [Home Assistant](https://www.home-assistant.io/) configuration.yaml is needed. +* Supports discovery messages so no manual configuration in [Home Assistant](https://www.home-assistant.io/) configuration.yaml is needed. * You can install it with just one command from shell. -* Configurable: You can select what is monitored and how the message is sned (separately or as one csv message) +* Configurable: You can select what is monitored and how the message(s) is send (separately or as one csv message) ## Installation @@ -40,15 +40,15 @@ If you don't like the automated installation here are manuall installation instr 1. Install pip if you don't have it: - ```bash - sudo apt install python-pip - ``` +```bash +sudo apt install python-pip +``` 2. Then install this python module needed for the script: - ```bash - pip3 install paho-mqtt - ``` +```bash +pip3 install paho-mqtt +``` 3. Install git if you don't have it: @@ -119,10 +119,17 @@ Create a cron entry like this (you might need to update the path in the cron ent ``` */2 * * * * /usr/bin/python /home/pi/rpi-mqtt-monitor/rpi-cpu2mqtt.py ``` +## How to update + +Navigate to the folder where Rapsberry Pi MQTT Monitor is installed and pull the git repository: + +```bash +git pull +``` ## Home Assistant Integration -![Rapsberry Pi MQTT monitor in Home Assistant](images/rpi-cpu2mqtt-hass.jpg) +![Rapsberry Pi MQTT Monitor in Home Assistant](images/rpi-cpu2mqtt-hass.jpg) Once you installed the script on your raspberry you need to create some sensors in home assistant. If you are using ```discovery_messages```, then this step is not required as a new MQTT device will be automatically created in Home Assistant and all you need to do is add it to a dashboard. diff --git a/images/rpi-cpu2mqtt-hass.jpg~ b/images/rpi-cpu2mqtt-hass.jpg~ deleted file mode 100644 index 2edd5122e41accd83b2cea81a6cf2a44c24e8f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27256 zcmeFZ2UJtv)-M`Fl-@g1lqyv^2ogbQA|fcgL`9?-BE1EoAVsR6fP#QhMVgclsgd3U zq(*8W^qx>cfF#`f-@EsI=X~FL_j~8ucg7pzzPpn(Mt0WTYp=Q2+H3yiZ_c^T{+!JN zSnn7Z8vv-Nr~r>BAHdl(;1+=T+_}HLlC#YxmnpbIJvmE7+H9DxjA{+Ik`ChYJ`fKa?W`gIvN@}P9_E>&VP72`w3v9 zrOKnKqNch6ILAgs%|>Enfqv~=_glmpRceDP_vzWM#+W)>K z|KH6L^naa_Z;-x{OfeS+ftF))HXMmnZlvzx32Kb%%@=9Ku)H!?5F%xW>oAO6G zyi@{3z6HW}A`isNJpfX9asTonb7hx&>mvDw0{QiLr7aI^j~95@3OkVaOuI(8divjV zrx$((c#9%cK}d9-b}uzSadXm*SoO9u01qLlP2*Y1@IidD9_8OvEwQxGQpOn83d2MHFdS`BZ(Pc)I`Kh1v4JDuYU8mX8 z+pt~$A>$12WTNm4P*82%t;2~!ZF6C}@v2zVo7!M)x-$T+e^SizUb*tbrIY6JkMu=8 z$s$p6s#-m#$g7x|=6bXj$TYZdeHikkG`W$%--oCP8`ug9!}2VGle<}>>RJ@I6+ZV> zn|gj-KeC8cvu3TbHO~dG()K)OrtJ}w$;TFVvRokSZLFZ$b>x0G>HB&pYhS-t$TZqH zsN<6O#wpBmWr!n4av`P-HmTf379Nv_=U!T~TPgNbt+jJ#mDe`^>d?EAr~ZqlKc(eK z;dd^8SjrI9;;f`S7S?$Ncoi~2Wb#o?RmA>0I>@k6nO*$vl9yzkV z4^Si8mD^m6V_#w?gFk<0+Ww{8JkQ=(^@Ca2u7M@Cwvx;Jnn$KYv1^%o2KBW$8wW9L zk8(ok7ZLJ>77MIlyD%M5k5sRtvj1}&gjZxfr!TMFE4c6 z>^c8*8O;pk;CTge7fwVnK{>oB12Pl?PiCCn-a%kwQ1$UEX081ad1|zRB!28J>(1k@gd(cSqhUB?lhw@#pEx<5+8p?zOk&!=JVHJ znunN41`x?yD^Bu+s?s1&eD!aroPT+1agekbt>ebg_nES*yqQ{2x-xg$eO?wMcrk3q ztdt_7$(IPu*k>%X&?f{*|IdHc$qqimhuHgdE$@vg1h#jjK(#-OH*AF~6ceb{b9Ar@ z(K-_0Q)nhx|9&^9b)Mn8@$MCSqAAy;ebnAkns?pJK(AH--^e5ytx&8n+Ik&pyp1%O zJPw``sCDrNBM-iolLH#g05K=;+QK!ktI2*xNbFFo3X;vH^cd`4FxTzR3fW0dj2(ho z;tV^6E)uTbM}|7WWquzpG$IK{h;db3a6#55XxtWq?>a~e6a>6YP(Jm70^?ilT#94L zppQRq+~2(J^pU<5e6@~2OqusB4NHCOY|_U=RSbx#JDw~V^q@mX0ZIB)s}RpKCpHcd z+U>Z$8oPzb^5_{ZZ_rm^{#|hA%gytCLq!bxw%s)_zk2XKeCI}e<#6FqcNUrIgsCj3 z@;3GeA2jZt2)uheVbjwE-(L{F{otCobF#O<%u6H7UJcbWPn>NuP9&FtYwQg&XC75HhSRz4GL@J!JaVW0<#?Ds12N zuJh|5zT=lxZu_lmNi-ob+rd~^Yi4*B)}*xo5~D)mX}_M)Az-v~uq{nfn`9XzZatLF zlYXD-hS9E_)ZE0TIM@CXI;_3{^gvPz)T@5v3*PKs{&Fx8j{~*ph>d}3NupiXFOV|GS8Eu|tGA|H+t(#9?MFqCt&@q>|3wI92{#iyj^OI z*H*dOH*!QsB}BP`feMFp7z5PY)s?M2%Xox2-!u3{Tw~lVv9h&GNmhnd33!#la7!^J3G7=s)MvPU@8~yI24eWNHADUZw z7t0 z`*oFS#hB}r;5Fr~u%e9zG-V@FG%0-1AunVWnL-yX!OrafpQ6tjhWPW05Dk4-9k->$ zGmTu*t*EPa1AZQKhJE}B>(N;y*Q@WTY#RHF`{6B8K?Fw7hVwn*Z;Oo#a+>(j8g%rO zojjh2-WDt*L{E24dFAF4lJBKzeYiaOI919^_Gw?iH?fr7D@IEey4|z${4=Clpu4Fd z9zuY)e+>%g8nVJU75WTM+JZ!TS>wc%X6|kzC0L3+=y@E`XU4UEaSLC(U`EkqFNJyY zXEFn);4E}Oi7~n^zF&v%!S=&Xav>zVOby}mGNHaC{I`%=3iJ%X0tI5>tFI5jbq$c2 za;Q-jKbkAVjVhfDDAG0a41lMgR`DS8pp(IOt5T_EuY=<{lXL8l5z2ZqP6j7?(g!o04Z5k}ZFt-cHN)((g z_iR-wd^#rABp4Xre?w;`H`9tES^oY@Vk_<1y_>z40zUV({6pNbRVummB=EaP!9JDPYSt1WN}YOOecaf9Rp^X;|1 z{kagpc{L$nRdq3!Cj46XDDaZD`q#}6BZ8ST*!kPcx{_hAdr6G@T;>ZKl3QDh5iK)WWlzsZ{Gl20(P0?ZYi4R%(h?wH99^n{_WVR1~ zj)8eX;>ltJVeGU0P9cubEq~Ks2v~M|+n=`}^(y12Y|vCvg4sa#z(hmtD9W;LH$<%QXn$)=R z@ZI}G-ir7$fW-SW@YsL=GFBz^G7emT;YnMFj*KryLXbrZ(iB%B8YlfJd6c!X!}{|%7Y*w*gBM^U9hQti4JV`M2EXPRi_V5s#Ce_YlA>3xXF zOweZgeTlLNQ_aHh?J=hk4JJB;)1PL14yeH#p5d()4)Q37tLfr`z29il;QfTtP0~ z6Yjr%`$r@p5lOu1gCMlq+r{`FPgMlaHgvug;}@uF2DN}K1DV-9rhNZl-) zYdIxe8C>Ik{@vJueh7Pzp&sQ)e^U$m(-4?;2B62z1;d^uLvl%Z$mTAcGr*~1*rr?e z(O}l(9nYPjLQ*iX$6}>;5V0J8x(eAO^PVVoqS=U&SQ2=;Q%GtUs)mq!e$jgDGMqhS zOyNU&;DYt8wrT$QobWrx#_=++pV7jp$;JbRJbPK2p$|_b-5h)yH7e7Q&yoQ_o{O$= zI`V|o?o8%vOfD;|%|7&tUgmghpz&iDF#Jh`%G+!Ac;CHLcWn-CsrSmE!3uB3U{MA$ zIZVH0zqE{$Q*$SER&3v`(G?2cxX4GZ!Kc%-cvWN6ce8isSSuX(rObIi#}c6~bGi*f z5>Ioz*T~uw>;`xDYnJJ-yH{M&?v>$VYm3&G?PYjrVG-9EaZQxbfZ0GMpb3V5M$nxf zih(ggWxfW5wugjgeM7I+Rfd)ro+DMPHMxrh*RVD3b!$jc*U9{m$t$?=X-3PP@adp< zTcmh+l1!z~X=U(5pYuND$KRK~vBAnidKxJVE>nb?g{4MA^XGl-IC7NW^QE<7yq)bnorXv_HWagJFQhau9-V9RSz zNjWL6icDE9-~<>pP?rD;^%iP&Em}7&G*hV~+c_F=I6u2F@UmU|>EWj10B2dI`yqN6 zw(qU`^ZRY4_sMuYuZg z=jKtP2bLuoy(Zt>iR19YVaJ`5nUCUP82mUi``}=Fee?@Ohf&lfp&kF5aH#$o8XP=t z`ebD2mbtfJg8Ia0{*;e6A|qPVO}ekoz&@3ZYYWYE25=!Mw_g`d9PK=rMRl;S1uZb@ zT%M@>V(;tAlkRNe{D%2*qGb{%M??q~aG0gQ=r-kr_`0c)P#+KuP+oZ98&@C=prpNa>Ykmobjph)$tSBo-349QeZP_GI37VcQ9 zUu$xCQw%FL4pd$cGR^^@T%)mA=!awjy1ao};$+&L6tU>UT_RKPLNiURqnyh0?TkLH zRx8-GwA5=KA8<%&3;ulNbfhoPc({vthS+Ca5_oj~vcuo98SNOJH0#2^PX$89z(EBKq`O*FvAevZv@Ea!x z!@Gkah6HyP$%I4CW1=8Nqe)-wOZhYWs(H%otbDoV+c!UIOwry4FgQwfDMZ4sb^c~C zN4ZmHfJqQGE+~!(<~rH53lH|#Ty_oF8ax9u?>h_1jC}pJ5@=Sla=cD9F|CzM(?Wkk z^n>LR9JFj6zEey**KF^Ag~Sj|!-||X`MI-7oz_$N z%H$Qw7Bfu@HTpY#(HUr5s$e-+=i$7wuTzbfsU(M-Tq)f3sX(2gi8O?o0i;`HWG)t| z!{+I9k&Gg@kw@HErpW{NWQG2Z;%5NsX65V;r|o=0@DLUAWA7`jS~vNMhs|6dT4a+0 zfeF-FFtU>+5{a#bdSX{Qg#WrLXl%?zWeF*FYYsAXblZ8dF=VUD_mlcaGdo7O*1n%R zVArC)%R415H7?1rZ*h2oyo3~sI4SYB3zs98VJm6LeJ9~jr?N9puCc>+Wwrz0K&o-8 z(O&6MGqGNg_|QjPg9Xr;_uHAKEO_f0>=|GSQ9=}gqq2*}$|@c;;TY>0mohN{a^mg! zD?Y|RKjh5|JBK@CmS#tvX3(Cn%@ZQ)arRiF8me?Q#|)D^Idl_;YK5^7bx=EAF8t!~ zJX=qzi(4owlp5}J(h5iVpT+ZwVm`V9LDpTBld#3yH`@FY8NxjFn51}5U#5;ZhL(}f z!)E|EcoEz+XVN3!s|?V=(wj+g;lZ57^~M9u_Q;{;IwD=1d0gD2473sCE850k>b>A7 zWPI=pyEWj>O%k8IG?|@$q^b9CdwuVdw}blD5!Q^%34E;zW;t~|_1!)hn5)DmSCevG zb6T648_`JGjU&G_>80N zc#NpbNO0AF6h46(kg^YNIAdsrl68a#8@mhL@s->8HDjyEX7TrH#-1dTY}4oTE`G?5 zdV5X8dmz+>vmD%r*!LL1>Qb&G=}*Yf#rETaV}1s-$d37g*qsQ7F0yod-#FCdt6oaY zw=YJEahz?P>=8ycLyp!dAd`ViA?@1gC^KA#5BB^F;6}>0n|qHucB+up_zS&%Y(LG5 z9u3skbo!!yRsWt+`N?G60TNJQdDFs;tDR$;c)oQZqiKEF)Qblt@ z6$oj;*s0A9CE1gKcnXh}9{Awv^lE`c+FqgPu2QN1^_2ny>Al~yaD>x!thSIybNvL- z?OktKQ0apN2ZtGlzQ(&{FF#M^MM`fT%Qy0?~9c_ni$POdI2KQl{!_+Q>>V4uuTd~Tr<7NHmuJ{CHHUWVf>xv z8Q^l|=@aw``ve@oX|De-FI*{sluJgQ0UUTJjvfzGSv>NXQTSvYdBSo3ydR|lCV$(d zr|bF5EL5Quc18J7E;>H;|srpI;U7C`UUVC{S!y;=6K5vH|EA zd{541}QOZ(pmruBO6b=qf{smDb{65J6SJxGnW)d?k9KkZI#Y%oB`OK z%1%Q-?a6ucOFA+^dywcB`dmlE2*@E@ersFwdy;=tp=bQp&%6QW&oS1o0v7rBdNwyd z5EAE+1T&&igWCqCxdTN85fx@aMR#d#0 zD(*xJOl>x#zj2-y1e%Z6W($qlAQPcCEv`v~rd@06npQH>8AzM?TK*%V_oXdV4%cWj z4j1Oy9C4h}Unm8#tlQ0iU#tzsR*2^4R*NTSyp6iA8#ogX#W1*`a~TUtfDa`)Ddygs zux?jV&$%?RHAmhx^6XjeK%I6ltr&1WWiA$LNWR8x&{J9ms}YXo)*|Wb+4twN3^?ac z+S^Re&e#q>NZBjFN@00)=Dq!;-U*x+bB4BBPV8~Wbx4OqYNiPoD1{tcIMpGHb_vP1 z5F&*W>@>W}RDUeijxN68+2Y=_wZB)l)u$5(Qi*@m3?YYeQyIW%UnNle+Nssjc2wOTIo{KH+$Wa)74hMtG$>_$U z`CBC(85y~*4d<3!$b#_U3w>vJs`iyzO$dj&wTOmjE#~qOmAQcKJvbcNT8n_DA}t zMKczv7S5L2p-gzbk+Lxd{uRg&Dqdib1ruYrx^&wDI?xB&d8;ny2}(q|4-;8nq<93G z9l~n%B^c&0G}%-Y0G-)7-p89YcBvmO=4dSpwSm|-ryO2*P9gt56+JQACU*Rs4JP`5 zvMC!iL(ffH-wEkHzVtKLJ}bev7E>o14%iIHL`A1Hxt!18#qP#RqRLc;wxAC0q-S=b z?US__IcL=-Y{upR(?bJ#@Vs1q81@u#OtfbXd6->y$2jD4f}}1%D8^Bfxy}HcLo6FS zN2rvbkfFAQmBKK0uPqDE6_YFF%d3p@%27k2!PI=JrTIi#R6dHw2&Wzyol@eop21&{ zb|JTy+TAR-#3+6v4!^j zF%5 zx);FVH=YLH>E!35?-ovb!7H_Q{GjRaAhRk_6jRCTffgv+YBDJ>Tv*F$SDuxNO0PiG z?R0Ih^3_}lO4Ah~7BKy>ewp2O|_;8+DAfHrDxNvg z*yf`sIFqCUqIyJLbwJs){yR7Q{#}U%w%(5)W9iLbQr*8Ml1-fV0deVE4odB|BP9D4 z6B>jWbmzem=m(LenG69j4-_t?a@Pl27O+;Ci9?GLqOG;EqJ+wE3_s5R*c=--JQ{q; zf)B59`L;t@&Xl+IWm}xo8NH?xXBIVE*BvNRDmh{zms^!d8+`_Ns_(+6q^rH>)~i#z z+(Io5pGKZsuimkm=6fQr{8Us`4Vr#$=p$+7+uXOK-{qP+`0CT0-StAa7$IeG*3g7t z?NaXcMfUK9Q<&P|l*#Kkxy-#4UT9nKE++?f>wFpjXAadISDjVBT#RcHDBDEoNX6f) z`aZVpZ$gm6)K9-a(GF`wXe?f~`}0e=NFVwR?U(6&nk(#->@Je-74s+FvS7~47&)UZ?^0#@xzjI^~kgk1da zBuT^0)&@Fyr!&()4EYF94iV_mvM3zkk#Te9#)o$yJT2%YjLYWn=}M_`=D zhK<*4ditez#n{uf2SEz$Pue!{Hw^IhrSa3HAHd`xjsfie&4 z7rgA+Kt@t1E2lKM9SYk4TFMwg75ohnuxftl__t2;SN{tD7aFcxPN>>50HfPcNJVKN zS5me|&Qlb}C257@MZw-qX95exH9B0bh%l43_=>Amf7CO7ZOA!6XdIgA zy<(yloLAU4S8S%w`H=Hp1=s#(A)1i-DTqR7HV_cxS>QnhKZf#jB84S8c4LLPv`x4_ zG^hlkCvB>Xp~FHwMajEhht+2x%*e!tq!w-C()Doa-?gPmy#*T?_Ygbz(TZC^`I48; z1*(&3xE6E2@4itDQ(wG@*H3XBIh3&#xSz}ixScTE6Eq(UM&f^?eh+^c$hha|50g`% zL=xoCco2UO42$Ad%aO_l{Bcs1IXAEsw=jrg34-T*$>DUE_+jtJ&ftg^?W&EP)sKca zs+dPNMf!7IFe|2fN@}T3j-8_b$k%6pcA0{(nk@my7Nluc<`)H8hW@BfTYPakXEn2$ zIN91o``@sYv|2-byGJe$6yjO2VJDva(vM_lHR2a)`h={CqcZyWapz$>gTV7%kyABm zpS(H@g9Mce7SXjWYBdJ6t~3q|=7}yN0t-F8;qCbbSAHY~U+77{hSB5Fr9pd7aVlti zCB(FbE1`5$gSx_~Z9$BG=7M}pYC=z&FIS3YaDaAM)j#suzP;iU%1bVxwBJqJAmwNHB;)as)vYkKH>lwh!x*mUw$Si>VlipdEJ+OX-M-fae0{n`>Ub79!uLiK{HJZ6 zNedV^wF9qoR7;^C;cW%F$&G=02ah*jpX?7BpSS22tbBj#)}^ep4}Fz;nzT3hU~QGJ zPGD`h>_JG&>T!6O;c57e)+^@1Z%$5O*%q{UQ+B~i`MP4`7?sYcFml%&WocUEG0n3i)$>$C6HH2rNi%6m9Umu}L zyRdf0mH>nauN|a&;2Fl=^v+Q$c9LKKV;x$k`DR!ej8L4B+e%Nl117%JE>2-H-dDd0 zYq&Y%UmmVTDmKJY3<$hDnqb_ds}r?MDg{2<>zv&8tyvwK)Y;`lqmqJlV}Nu}lS+5* z)=G-o>@l{pG9E7H=4P=j$2C)J_-*J$mHLId!8EUZsg}LG6eULE{!|gD%cne@_^oj7 z*@K+hTSRi5zK;T{a6WfSeH-|^w70H3@SC=Ee(;hS0#v1+hzlF1OvD}ZD(<=Fx<$a` zRq@ST`-7QL+-gFTYd-M>A?%C0T7xse^slXIU=w7yoI&KIooZGiXOZK);cH0XB=O{+^*!Y|2OL6JYb z?biZY6p}#a|Gcs4Ho1PE$6df{k`WHxAgFvH$VF>YlB8xfSWmD z5N7uimPl}gKgrzx>5saW3Daiyr<1T>R{K{!J__)A_IBGpSzG?0mv|si6AL1KO)MW0qnUC(Nid+ z5fw-3f#lo6+P6vs#xlD*b3~GjYvG}q#Q68>66$kv5L#~KrgPnH7ZBQ)aVM)7iP8l( zZN-Hjy9XrD9r8r|nB>@qN^PPSBm0#t!~HCuy0!wDd1BwSJGM}oF>UzdiOl?(frPZhFOJ$$ilzq!)cm^Clx)R)+v8@c(LxrT{HZZgE(+zUESE9&$1ZZN8Pilga#$d)zP<+c}oOKkL z$CgmkH{}TF$l(kN2s4=2^g(9e^%;j_o#{sy%9pK|^$K;p_bq}X@uB0|$|XU!w#o8{ zF+ULf`jMSgZn523zsC?n#hur^fW2=0rEZ3${`1_o9GL;Hu)-bT9K%o+?&L)oT7L-L z`lwsLQ6Rs73FC?Hv529V-m=*zaj^IDy6hj@Vx^YVRw7+5xcr7ZVc zILhe~ZZ)YkjJ<2I{fOIc_7}b(@DKDB(?pSwO3Km9pKsLXpI0eb%`JJ|+=%*qJvjbQ><^QB$WBI1DN6qxPZX6=#wh4AqAt|L6$M$CcDr<_) ztvm_5Asr|6`SX8<=)YywmAigk56n#e;wzXP^-00o+gllIly52f%j^+AqI^O)v5BVu zdJ8+S8gux^^~XpB{&;wLcEDpB9+_awP@446?{Q8{+&%nnZ}{OK+-@{kn~=OXV2=qy zX1f$Qmf3}M$CUXqJeSX6>hO9vR0|2F|C;jt(*-Rmz_Yq=hM<0{32kpoGkqA$5+{^a zG;P-_h-09r`j(ii<|)rJ!4!0+y%UqUbW53GrL2btSHWo!}Y-8(1RD1J)?6J2OKhb8o%#g z)*&ny)S^Nt#(-ryl-8|;059IURZUIzUMOCkY!6hQ5?pjQSWr)IdC-mUy0?XCmcbO{ zTz%KNL1yELGtxMdhP|!E|E%)1Zogke_4|{VE6!`eLn0c_E3RS*9Bv9fMz88 z=$aE56&p<${bj}ZiaZ3&%oA3U8W!;L@$1``RNa*R!YRcIcw|xi!o;;0T}U=13nmIU zpiEBI_w902nZGQ8Vuduunv`;+-nI5G%qp0rlUMcOh)mDM&DQ}g7gnyCKQiZ?m&eP7 zyL9WM&F2z~fD61;AWl-k=5Tbyg>wgt>9A^13&|M- z>(4lEW)r`~d!WZ|;aY4>CKi-Q*Miizh)nANI z?tE6c9fnQ$K!uqzyR?pSJ_ER0-)Xn@*kIXl)#@<6H|V)*ST%g#25rBQu6C53T82lk zl?~sCkzV`B^>|D7LUD!j=YLfc@;@7S{MR_^xRP?nJZ^SF9q2eGg|TvxF;xZ_7iiK> zye)?N)J1-T2G|k!k_B8WXzB$G$AV(WvQV}OZ4>XjfqaiC|AM3R5%hE!PYSQeGj%>~ z4ZU-z;d?nhDs#)pGC_^=uug^89Es7gCu7QczyZ%a00(e`F#f z-z7Z2Stpkt?oN_-HuWYxV-JopR)?%A&*E}?c-@~ z;})Z{hzvjIRENbw7vpY6$cgecjKaq68A2(R#UlY0lH{GO(nJEqToDWWiNsS;vK&VI zD*9RiDskc)L*W_N#kGifmbf|XtcA*mVifow10`wFsAaSzn*G?_4znS3LGTqIQa<>n zMwfxl^^+AH(I5pfh5Tl$NWl+%2P3Om_M0k|$v1W|Kc*AgcZ2PHbJSfg@@mSB;~S8L zheW1D&(cq7CAh#Ye8Wy*o(u#V$W&bvzRMqPO3W91G=H zl=EG*PH_FLnuZ-nT#Zp_R7W(@@O(w4I26A*nNc$nKq{;lC0%+(I)7| z9YM4`nV(#TFyT9b33+L2k;*v(svPHrFsJ1ghKaYz3|$`6CDCN8{IK_NwrYK7nyUG% z3&X8V%Oc1d;nm-+=0pK@|im5RQze(!y2raj+mt*@>9ercqz?A(k_ z6f%`F{3^(^e`h6Ne`+dV|9T_vO~!ip#*|LUmv)!0>*1H+C@*$~MWx`>=Du3`F4dj~ zU~Yg*a7mQerXU$ZwxcMqe`dx7^0maCu`p09NGKmNn&BE zv&fU4pO-It-pHw-`3#HJGD*uh`Js#_dNXq>_|0?Q;*(Vk-}gWNXc6`5 z+2x-a6$+S`*F;^NdJHAK!Ta#T!5M(nvo7;}x>Asbu?XWcL@LH_to@j+J$5$pD$k%i zuROKf-Ec8v=^QY^VJ^(?cH5D=ty;tC$;Kb+M+u)fcGFfG)Z0j~wibyoVLjY)D zAg?_IMpGBh@*XacA7j)i*Op&WFsOK3(Te4o4Z!Gp3fv}KeZ)U8w9T#}dw~Ros+Y~) z9JcouaFcK8>rTFQ+x8Z#a>94M*44thb-%yvR0J(|$2J8QuEV$vvKcz~lM^dy!Ah44 zH%4rx!Ybq}^fP|dF)$i4=GdHSe^6Ws{_teBLE%-47_w!&=~n(`!)k&&{8S8)X{yl0 z9rBdDmEri6L{yom&5|*_hGu}Yb1S{?M{P-LR%fPggcnr78#600*!t*P*J}H9@h*yM zsr!SNa<3QyA>{q6_r*^h+362Us}zO7qH4<1X@`u1npD_r&WVo6$x%jF*=#g1v5fn7 zZBlHCN_8D(UrSjfM*EQzS1~B#aG!L&&R}zu3@Rjtv1_B92vwL|8p6Ice_H42M0p7u-6sIpAV zR^)>)#=t`N!Is%XJuDW;u-z0;Xs zTZ?4_W9HbiTEhjnd9158)T?J5oMs)`A^4yi_m$v+J&f!!hwod?noGY=o5;zYzc1`|9hGkzWHy7O=Gl46g!9x{I^MkWm$idcJ=iyuLpI1lkuq{ zQ5hFdA6&YT!;=)Iw|7f+-!RylHBeGKuHcoAnb>0H0BG{!!jSO+}*K#W5WAlE1K(TqM znH0N2NvrMOuoV5bx~YcRE-m*BX9cC>2suaXI_wQNbX%ohQ0C&j z5&66r%i*Rwo1!9b(~|VQ-F=>5FqakcbsGv5!I}MZyw#DZR=E(5z68}lEf~oc55NBy zk-r<~0Jvim^GUtWc*7%(;B?e6$JT&VXhWVOWTNkl@8soLPC)OJ3K)rsb@M$s?-6%z zhj}q628mK|!OQg)d)k+upkeL5jt#fNXO9neLk|!pV8XGm4U~#7?vATzb$(!zI%Em= zrXgjr-}Z67oT0t-xM%1t+q(o*k@ZI+6+y-wYu4&~*Vba+vcdZX33K(FVb{5e;6M4V za_S|iH7f5`W^{xCJr!KA2RfNCwRm$plIQ-vgc)bKJ`3_JJpqA!uK)ix?BE;`D1aCO zJ4+;7nGone@Sn%SJbNNEoP!63!MT3Z(sy{MKU(?{ErI_SAJCg46ze?9Y)VIn0FOnqA(8kbiqs)Jpue8rdRNyJzv4W3}-gwGnS8F!mP4 zx9=M&)&b0y?14vMdji?Z^VA2r7l~V~lI}tjH4(soq+;n0FFutfekL`_C1NM3)u%BXT{BWsYY{r~9T7p>n|W z<6yf9q&@nUx*@4VWdb)w7DPQBR_V2x*juw-Ctr@aKPJaLsol$spHewD8+SqUd1^w* z`N)K+k#L|V+lG)JgoAKhfqAWA=VNf0JzAnn-UU$?!I{C)aoMpt4Vq@)&kNMlwq#<# zd$f!iMs4|}wf=r{_*tF%52_*JKOPP%NfV&g~d?Rd= z;@uXXHfvH@F(s-KRp3a$L*l)m1(t2Ye5e&JtRl+mgxdJ4jd6*sd^|?VUn@5MmeAVn zl|;kI<&M%QrYpn>^`%FrQ7=HuP!>$(h4S*G@MluTxw*Mf<`7 zDVE+JM!2*-q)GDbdb<0N-f5t>DKS^~|1ZPL{s+o|Y9*IV)iltO5Vep@vo^Ke9W6R0 zs{l7?w&_pqkAPIBez;AYo8v;^|E!(MhhQx~9 ztQKDOOuth?R(k-sk>Pa*BmJo22WEkpz=>?Ls|0Esq{HbNF5ne76eDP2Z)&ESWkGTL zJ4(n1gxaSC=_RUJ#sT528E<*4e>l(%WvT-v$aF#doi#x0+Xm)p)sU4(bj{ zWmZB?X(59V*M=Vs-oTac+Gd*ox*4fNYp}_!&CYkmYxyW3hpW5Xmf+Lo2sDiDHa%th zmU_kD>5sQ}$Y6cT(I-yz7)?hw)1%%JLx`9R z8@w*lAa(8>C$oh_qOqp46# zKWhaNHTxb_l-BTx`6ctxCxBL}j1#4PAq?0x$3NyLXQiNJhK%}>7II1GwNS?;)=*aI z{Qh6{brROg(8gSj%1$&V5jqAnEZY>4Y@(!~&tBll++pI2eP5PbEmcjcWVD)q=%YQ& zFEj^n%n@AMtevz7mW!1f4(?O>WA`^2)ZaKheag;W)njR#m=ZfZ`r=TqGWoU8RRY7; zpmzr2M8(j>iG&i1Yo$>yCbh5nF(pj&v?dgxS-z5a+N|7q3kvh%0;pyvO zq_F5F%S#}CxsF;(Vcu5}SABT2I>}B)e|AY_$l*jNZrR^y#258(ck=})*u4UN`S`_gTHn8_wVP!T>pDDaTbxESgfXfZ4cr7qsM zUiU74%996I8B1?)e#obY*Jk>e@x{sN#xyPjtL-%gg{T&FcmBG3Omm1yV^5Q+>jFu} zKCwcOUy-ZBw@2-ERSY}pH(L4Aq~BkHXAL`a7;x$JxY91=HU2)rv#$O2Ovfzr>^f8M zr5~ARfS^}RJ#D{UjV)!Eubk_deuspf}s&uJ9zci~et{0Qcx*?=E23F}e zy>;JBZhLzng2!k7`P*)GFTi;Ntpb38SkfRUYU(gK&fl|{n(~s3KMmaQFroYsn`{kJ z-&JXYWV~mjh)ufw8|n*jxB9uH%=i+q@<(Q43aaHC9Vs?J$)_RvwzUoQqY3!63`H@Y zX;a!X{)ZhN(`k!ZX=XQdV`o*)0FADjLBK|1`*OsX#Y8Vmm28y>x?y<&>M;tx?!jN6 zW@nYL;GfaW;h}E#^h9+fe`#u}*DGGEx_P8ysl&o3PN~DTX^DnsWqL5Edr=?ty2*V$ z+pHr!BqpY#!Kvo_oL~}6eH&5Y>&(@lcVYZPqvqa+mjV5$9I_V;S$;N>WcS{FxmQ8Gev-}HxQpHux=Xs2E{rXA*thq+;3Y&xGp;!|gpkZcRtLnj z*dst)2mGz$nR+rccWi0+((TJrFTI|#Wr(p)$?qZ-`^%du;l%jF_wZ>@!wza6UU%J$ zm9Vnkie#v4vaML_5|{``u^L6ZoNO$5h2!`X8=LfMuqdH6|+J2 z+VBR*(Xy?qTc{Cy+p*V<^Gg+L2{Em=Ew*;obar?nQ)cZ6APRXO6_Uw?it`e7FoB2! zMbAx&zHi7)eIUSX@rU}wT6e&?Rq8INJNB02a1*f1Mog ztZx}##;GW|C2QG}J_GT|>3~=R0kO^|r8HV&zO_o7a~pP>9+?w0m>RTm%FR5PFe75EKPOumq$Ak&Y0lLAugwC_;qLJA^=jlwcsfHE%S@*3q zGwZE+f9`d%le6|Z`|RKT?(gTD8b1i;Vfq>B*%#SkE9r_jgy6CoW;-V(-^x|o6kQf% z#Qux>)$VoPHt_w3Yu54xrBlr8MSJz@0aO~6#xeTU9~IgVIZPT`)KI2hMSb+kb@i|3 z8}Lm-wFu$}X1WtZJM)20)?ma%Qi!O$V+`+QW(%A^yp(AZ_h2Z#dLe&?>)>6SRg+Cf zRbZUugBCAOXBU3Rk^b9U>85-KZ9IX~*ny-%qykkp&sWTa_OS=)o@MCi@Cl>S6QQkE z(1qAGQ9&u}c)dI8Jsr=}jI3y&;2Hx!oO>6%a%@-HtgEX&VJoB%9Pc80Y{oiNZNuV~ zk`xK4&IhusDloabC>Vv6!CE~@*=gtzdk7#a|D_OSXHD0Jhe}hh5dg5a_8yU~;|!_B zvs=h+;1_I~#95ybO)i(sx!u-30i0lG+u)if0UZBhE5&x<{`TbRH>Pq!gyg6ORvCfT z@SgRU@AY@U3gItF1!Zig#Kj5c#uoV*A0q~uAkC7IQ2|PClphpb94QXfJ`r`Kf$hwp zU>r#CvliZuN-xZwqrK9xwHqZE*~9B_QPz)&aJC|Ea?$VVBE4lb|Z>g zLU%mu=+xo>(tR4ibGI5DnLCZ*%efzn;7i!BUJ)<~aZppe`98xk6MFaMu8k)1tK*H- z)@8u0v88#4xU@l2Zi&iX86M_YCJ>T~Un$(!bxbQ3hsm9J2P5 zvK}Fj9M@>L{%~9P$*|drrMS$tyfMAS_Scys3)SH@L`g3pA;}6`tU%UI!=j9JWdb99 z=>6bwZkJB*&hS276*zpv^S01cb-Z%Nes-p+O)vCy?HY8jz4j;-$!~VcHjwo+R0}_^ zt=(U+okkrcY17coIiwA^Rb-0KRF8t`m5V6O@w->$=aZ+Mo-sODpWH_uXZj3#Nfzqy zAfd{Na!O{6`AM_Z$$W&1mcC1yUzl9n<#QhXn!L%;s;&HmW?GFGeZpU9Hn#3s;OR;Am(@fd1tQrs2!_U*60eM6 zq$einzT%A3j<1>vga}GpD}t8<<)GrC+~fd%b&~;=V^x!CW@F<5y8SNt+?WTfME~rq zg!bnUH_^om>@}M8Or1lUICK9NIY1kBY(@BiUC^Mwa`CY%`WqeoPcI}Gy}gwoQ*$UD zjz^l)HQ_+XmiO7!PPU{h!h~uV_dnaM84p3Udg>Pq-#zbS6WY~^T1dKoKuEp!-jr`P*L2oSdFU2D$`-MsT+~;w z5L!x4O{=@OH!#pW{Pu@U0}xq8`Yo~y$PCLdxee&-N4Nhjp#Hz3G8+-TBk|GSDL1R3 z7r?6Voof5elpTx)tOGJXVq}&|Ki=yfLHvJIh5zsRSt`SR1NddWBmDrt|NGr)34Hfj zVBtS-cz*-EIR@fdgi+y0NFJ&BZM`nWp4~{sPeqJLtV0Em!U3y%AnxN=RBSCIZ^`Pd zoj(S}{11N=Uc4w;w%VY9h5BVZ^s@vPaXB^@S zUWiC=<8r1~)M22*8aF9|*QsY?3u(7^+CW?tv>WXCn@(qc&7;pGGVwe=waBsY{9bZq zyIyy`W z#Z6MaKuzc{Txdw}#J=1BF%+sd3}Om}SRvgg7N3T}Wkc>Z+Ne7Zo{7F{cfzZm@V+p} z>NpEoMlYb4LXVCjc_|iy0=H_1JW`EOfzeves9}Za{^zEgi}f3OWd>#Dsp9z2t`X!V zuAJB8OD{vPEuUoKX+^Ug^};mi5dTU25O3d_vht@NRfh%8#qyb9_MeX*{%JAwz!OJj z32d>$j546UPHR#+mqBiHHX>bQT^-o=%}%Vz#8!<#chET1S$|Kjh~9tqhpRdKf3{n^ zo>3TOhxHL}HpDfSOwacz{iiNr~Y?BZYGLUom$5htYJHw0-xruzt1pg=@mLgdr&bpW$$ zxP{wO#FIef1vE(mDi5toe-Nozyezow&jKP>xI=IHXJ^Du81mU!F_j9+iQm%o1W9vT z;@ZxFN)4>u)b8Iz94GnE9s~vv^r$?xu9>=}&&hY5QtfwVi6_j&t*X-|rKAt|0+Wyr zsWYR%4SxsUaIMbX8cspw_K4-7-i=un7L>7kMvGqQ?Aq9S+j#tneO9OlEy60LNw6MF zHLB0eTdE!z0+gF_Y$@@l{pWBmR<9)6zEIkG=jWHNoc#4TUoHXDFr7Qwup|aGUf(I& zprJ&TyxuYT?M~rvHMK)Xc7%Pd%hy$?I6*ST`b#={RCc7wT!rz;ASx>Ba(A!2ebuyx z=<3R(7}l2_d(-q$6T8opt>jHcN5e3%{$IAqDwJ-LEg=RuYACk1SUxG3ltAk;-3ftD z!L|XN)iwv^z6+zo2PP1jp@oGO4JPMbF}lC){-9RV>M6az50(g0Ei4I=JQ@ z9Fg8Eh!NXL5rWWnHN=EzFdc$JzlWdFkY1{G`nmLJdv4HpMxu|0pQZ%U;oZU-ig|2G ztNDba#cC+tK5Hc|`$NDYg6^OvEMz0!|4z0DY|+v2I9<*B%*^_c5t`m~T%6lF*$>2P zO^aUGxM`pLSzmUQVEFDAer1P4pgMI^pZAqvM!qPvJ$^6Bm+423d_|UfCi30yV)JYj zJJQ!K17dCZe0Bh$6)i)D;Hymr;C=9SEabc%J9dJRk9k2syaRdC*k&L{O9Xt zYTMdCM<5|S&BCp@(|A5?WN)3lc+y)vdCYbhSbu@_`PgpMT(^L^?JC&Dy^}}Uspkz~ zz0C{Sm7$OscFKs7W*LE(jC@Oy8#+P4_u0F`K&UWfz zSsY|r)_vnOlXCTvT2JC*U-%`%YoFvGaG6&Rp1~}xlxm;XY<`jzp8FY7~LIsI| zu=x>Bk8iUEhAoCZa{rz|NA@urx{N2aP{Lfw?T8hh2bum*Ij=O4W zg$mDdKVKd+7{7K%>yY;~pbF#10@o?^m{|mHU7%1fEqC%`UuPXB*JZBToIn-EZ!*7N zL*$j&sJF#O5oXq-L!oz}62pFRyc2;E(`yk&dji;=G#i-djqq8r3W0rEt>;-o`Umo` zQR~PH(=u4GJ!vW-s`w)L^vXFuTao7C(w~kTv6z$2YHe?JU#`0Ml+gB(i*FA=LiFF< zWt^y^wl$GM`NCI1g!ErYLuuKKtXYqPnvhxPIeFNJ>qw(%5iHA|3`HTTXp?NWBDH1f z++0vn9{$r+uLLIDysWjUHI=2{eeZ49?XhJ4it5Rtojncw%TNM&5@Wa1VCY*p8TV}K zQ6nhU3?rf;0D(lwZdscjhmE`j>z(}xkfmEipKN{*Qt7$p6ohF6g;!!&_XIAspcNq2 zxxAATr{lrMU!@n*qE&=Q&pj_hZ+7k?^~$zOw_#jAFXsgtJAvR-zyE>ogD*vY^}BMu z8eLiBC_vg$>xyggT@s+ogIi+O`u$``42{ryP=dwz{mo;t?q%SJ)e+myXyRkpR|gY6 zPKuPrTANVq>duVM*$J0X80ex_0%z=r=o!^Hk<%7UQHM=g1w-0guGg-;nE@T7b=lB{ zW`#C6oRAkBf~I@qd)C)BBWs`97@=ylCLHbWXsvh~=6zvybc?QWrYq9y9U2DL&(yxB z>13~BwbBCX|3Oz@g6=PW8Wess118ck>VGcZ(R;_S1?_TXC$e z1S{Eu8>Hc#Sk%e)T;gaiX1@*5Rgs-qL1_{8?n|n(k}a?b)_Q)5!Xu)c?QMj;iv-K6Ej*mTnpj?(A!K>U` z_s>ZL#fqYoyM-;~Q!$AQ=n4N00u|Rt--lb*)l(LuPEzLXC4|?D)jf5WLx{P@cRDEb zI%=~sc5xn-{9&+{{5?+c9){Q$%1Di-p3Cy+zLB{Cvl#Hv%LJ3>DIBsk|-6SNf8AN`1H7Dv$#Yl_1=W_DTACb5gLv$EJpcoBD+~hSf>$p-uGM}^gr`dk&EjzB!R!Z|;G)Na(r@Si*~gqt@d>Uco{xvI6kc=H zBzt_D6lw)SH6v1NP=#4IQyj=E$+T4zh)b~rB1v`3{*Ul zof?EKaX_FCGuIKchur}8s^yB6|7+JmOPgkJ^w*C%&yU<^fSthn(B^%3A}xYaPi%uj znqd0w`QYnCPf9Zq*ey?28HP<W#W`id2T7`(ci_LP*~LD8Gx>^Qm1fpWUXTM4 zx|~m4uQ#aQbC4`%yO;inITz4;Ss+S(EkNbOkIIBI2B~d3o0@wE6TdM%?cdLx zjay$r(bxe*O)P_RyI=*g!BGR?u|PW`c~H>(1AW6#qHb3UjRDM@jU