From c4763c7204a36ac49892ea08ed13d9ece7887335 Mon Sep 17 00:00:00 2001 From: Florian <1technophile@users.noreply.github.com> Date: Thu, 18 Jan 2024 11:15:56 -0600 Subject: [PATCH] [DOCS] Live BBQ monitoring and readme update --- docs/README.md | 47 +++++++++----- docs/img/Theengs-app-live-monitoring.png | Bin 0 -> 56395 bytes docs/img/Theengs-app-live.png | Bin 0 -> 159850 bytes ...Theengs-app-threshold-settings-default.png | Bin 0 -> 26603 bytes docs/img/Theengs-app-threshold-settings.png | Bin 0 -> 31227 bytes docs/prerequisites/devices.md | 8 ++- docs/use/use.md | 61 ++++++++++++++++-- 7 files changed, 94 insertions(+), 22 deletions(-) create mode 100644 docs/img/Theengs-app-live-monitoring.png create mode 100644 docs/img/Theengs-app-live.png create mode 100644 docs/img/Theengs-app-threshold-settings-default.png create mode 100644 docs/img/Theengs-app-threshold-settings.png diff --git a/docs/README.md b/docs/README.md index 061bc48..b7596db 100644 --- a/docs/README.md +++ b/docs/README.md @@ -3,36 +3,51 @@ title: Theengs BLE mobile application --- # Theengs BLE mobile application -**Theengs app** is a multi platforms, multi devices **application** and BLE to MQTT **gateway** that leverages the [Theengs Decoder library](https://github.com/theengs/decoder). -It retrieves data from a wide range of [BLE sensors](prerequisites/devices) from Xiaomi, Inkbird, Govee, ClearGrass, Qingping, Ruuvi, Switchbot, Thermopro; LYWSD03MMC, CGD1, CGP1W, CGDN1, CGG1, H5055, H5072, H5075, H5102, TH1, TH2, BBQ, CGH1, CGDK2, CGPR1, RuuviTag, WS02, WS08, TPMS, MiScale, LYWSD02, LYWSDCGQ, MiFlora... and enables to read the advertised real time data from these sensors. +## π Local Smart Sensor Integration π -It also translates this information into a readable JSON format and pushes those to an MQTT broker if you need. The Home Assistant MQTT convention is followed so that you can see your add your sensors in a few steps into your favorite controller. - -The app uses the bluetooth component of your Phone/Tablet to read the sensor data. +Theengs App seamlessly reads a wide array of Bluetooth Low Energy (BLE) sensors, gathering real-time data on environmental parameters such as temperature, humidity, moisture, etc. It displays these readings intuitively and enables integration with your Smart Home setup via MQTT. Compatible with platforms like Home Assistant, Theengs App is a vendor-agnostic reader of [your sensors](https://decoder.theengs.io/devices/devices.html). ![Iot](./img/Theengs-app-home-reduced-1280.png) -**Theengs app** can be used as a standalone solution or as a complementary solution to [OpenMQTTGateway](https://docs.openmqttgateway.com/) and/or [Theengs gateway](https://gateway.theengs.io) if you want a continuously running gateway. +## π₯ Elevate Your Grilling Game + +Theengs App now offers a dedicated live monitoring feature for BBQ enthusiasts. Track your cooking with a dynamic chart that displays temperature trends in real time. Set personalized thresholds for different cooking stages and receive instant notifications based on these criteria. Whether you prefer your meat rare, medium, or well-done, Theengs App ensures your grilling is done to perfection. + +
B|>F9!8=my4TA*8=PU)q{{@dC15fyuPJMD+md{3Z%p4U=zej z{cM@#b=H-IhUW@!vSZ0!MTBU>C_}h&UJV;uemeYbz^Hr-V* z;mAaTtecdsAqjR7H5j=pNc~syRHZ91xm3lJs-C+w$rbe)29=MknXNJ(&-MiW`B5gr z;Of1HBZ~F; PJ>1w$NQsx z7gwsF6LdjDXm~K1P@-h99l`9BI_%ZNaw)NlhU+1&3SC*WKNVUi|L;%q#Yq^yQGg_F zZGH-v=zSFlm6wGNA7=~`dzHiWJW4KI+x+8_Zjvkuk=%NP79lq=IVwte=lIZXXi0B? zp2{UIfCaT;o#14cwhUdu$P;ZI`QLR@4xN@Yd6?1(ucJPbBD#+GMxmekxo%#5Za#QI z?J{x8pNZo&E&1t({pi8GK)CC3ZYbe&>uN_6YIM1|v^_ m@%2R$Vj3w$Un1Z z-fq^B%DM!{GrTif1!Huw|F}UhoH>&+FBTdGd01!fmRA*&L*UmV+M*ipsj>kI70t!$ zjH9xVw6xiX!8_32icZ?A!UC~)v{X|wR@zPxH=T7g9 qh_f5{kP; zhT}&cw 03UyMNGrPWKAe#B; zVRT!>vb>1q43apESB56}9O_152k!HAkJ`P9U9&h=82dbHEhZDKHWb6EZ0mpZdr_YR z {wXC&dijyqo#wcfcWny-wi(Z5InjuB%_&+>qBjPEi(@WoDfci=dEaj2 ze#Y+aR@69-{Mf1J8%e?6Y$?F)^=-ozn#jJ1UQu-UuhKA$Cq-k(C22J|{Bc!?i!wK% zW3F%IXexETh{J7D{41vbsaj7xe%re}@G`57G;;9vy3;u~LSQh3;Y0HeEwh?pj08*U z%_f(unMWmtw{SCwSf@2(zKL;|!9w(YqKN?3dn%P zTG1FF_iIf-{2M7*K#&MokUjZG!f(0%wCfC%0IXYn-oQ&gKT=~OlUOcm3~6J@k~N6N zx}P1V03|@fOQ>8V1-n?~hibOExGnE|$?Gn$(4LBFU%{k4HR)tF?-$=~tIgMQKjDu{ z(UPN*0ux2 w^b1T5@kgfYb>{=3D(Z57OcM-e5tbUh z$*3$KpA ^_Yd#!D`ZQ3tGmyvbFjBR+a}{7i z)Z_Mwy(lxfr<9Q(tx0n)8m0HHIBs`y9&hh5aYeA7%;#;o?Jsomua|wOE`KfVJj~%M zUmGT?3Tf}Z-JklM)}KYnsiMD(og^Hk^nUP _ zX-niXzh(uzWvNVIM=72FT elslIzs|w87?rQd=uGF(DpUd4<3nuRh*ytYaLG zvHZOt^kj&Bs4& 1S9BT)eA8PeX+RZ7ZG{2=yApuKlmtj zo27)Jc#tF|4US8(6!c+~Si;TgXW)n^CYr v4e9ket=JE1D#UvW z*K&!>8Dvvq+O9?+y*@a>zOF(= 5oL6}dIW{`SmX%gtu%{Bf0kz_{?x{SPs8 z-IKxI%=tmRhz7qHGli*O9C=#Wubv^R#_NkePZ#|eE@n%!sND849RfbiKtLaHXw@DY z2B((+d0bqY-7dAnzV HMq)4Wt(Z z!xVBJHHVvj6+Ak})JePDCjD4WOA#>U EvI@H*si^DRnJgkub*Rg`&+mIw% zF-O=Ee>r-4I(167Dfgjy4}1(s9b%KrgH(IE8%mMuE-2)-HR69vGY_BcTXl8zAouzd zlf0g;U0V^Cehcs%{jZz|jl;7U>$?Dq|3xG5;430}sg&hQa~8qPoQ4$^!?**;5GC%^ zl)kI=$K7eG)KZOnOqs_}Ya_f%!CYU=VTfVd4Fy?%E6(M|m8|gnv=hnxOH BIBY&|y_Gy4;4Htt$vuleo(D^H@>T z8r#H;(4I_n?jb1W;wwp5T1=bV{70W!f#;P vtT6?rsHN+d-E1LqS(4xVQz+U+D~3 zzyX -pbRGI+-NTZGcf{6M`TR( zTyYc`_De=&O^Gio?>}vqaPjW&WwUUbS!C4IMN>sjAG FNT^JLp&?9vw`%h5{VRo#79sNg}Fd013p?fCy3}baNxy; +Vrz97|hv2^TilH^k)U5_S^kqQP?v z0f*I;W3i8!T?~R|AGhI|q9BGImmB#_w-dr#0m^V0+rd*$1og| i4{{>tG(R$2!nuQ>D#2iDY&DuX3t zxfeNGv@NC2SR-^6;6z@+21AM$!u}c4$!t%kJBu>x8Kb$#MVcAEuQq_!nR#Rxrp3m_ zfoDVVC=Uo&nVBA(m)W=;LO@X2x |@!lwn8 zN!$n2TpLYI>kiMYJiMUC1VHh=jNe)>&4@~sl52elmJXi98!Z|Gvr}Jak)Tp8FDU>K zjrIban|8i8P(PBJ>hyG6(1E#9hD7G{{dMBzqr;qp#hHWoco@% ?mW_V^li zmaLZ))n4k?)p(9M&yeoC9f0Yq<-PKc2!f_^ILzXSHnrN*hTXEbN4;*?;Bf)vuxbS1 zR75w&e#Ow TM&P2uBh<%Up}*;bWl83s}(l&Y0 z y~t;y>(SBW zy)XA2?KV{o>!it|y?$zFDO%VZu0HTle`pJfN}w@BdhxxxyGUzDVg$S9jck&Rua&~5 zkycaslKXOT3TS56Av6>*zl5I0YTMCi7>^yK(k70#r*OkQ8!aF1&>|trw$de5WwFmf ze_ikV5uy}gW))0n|9Uc%X;+dG)?D!KZQiszfD%F$2)&~gBu$B|Z}QS?+_-R(l%qKc4-HjaW^X z!6so$XrXc8cA-h>+Y<-rH8tRGadVL~(gey^s*A-xE2Ov>D$Io1Oi8I5*;!r1 fz7UTB19=!}@;Lb-BNJc rGySWId+Aq?;q!`2IBkU;R?7g9+k|thxH34& `e{R w& z#C3bqZBd!S?IG-yINX+OkKNkx8|1O++RKt1+ILz`A zxg{TIi2fIIGUu11euX)^Q8MuUx+fl3C3-pWak24;)Z9!dD2UDYf*#y#T)5RntpUfw zezROPG2r|IH4LGqM)V(D;kaR7qoRrTsgQ(PP0hy=A7(0!Io9BZ2q0IM(NEZqeR$4? zeQA{Fbcgp}L-P1KU7%#cj4|N?y|Oq`c?g_=0%7it& g%WQ{098k24up$qG{kgxJDv zWJ3LOiXgP(5SF{e4-01v_tNAuPL{RCt}iMN?~uAZaIQCS0QPPqtN)piP=o`A^;0Vb zXv%V^Oc#|4&+(s~Ckc<+4@f&FH-$Ib;mS#*=LVkrtb1?7o{VO@!yZqGga4;cyDg3y zWMd{6HFp>9j{%2tMa|YYZ|D6F>0T5XX BQ_Q%$O^`pm;#` z!K9wrhF^!l;MuZvBVh0bqmSi6*0n5e^lL`_%gX3O%usn~#i704Rh_8mlZ!J$%}Qeg zJ~T?BCMJ; xqI<1h%m15|e^y7QN Qe-}|zF!k)_dR!htWpeJWjFn+-@}eJ%=2Eg$u0qxKSXUC< +-uau=02pz5 zm=r|p)CnJV51NETW^Vn{9K)#%8!hayq(n?Z6ilty#CR#DrLN;Kc&YMHXh%n^$vPw$ zO>eDr)L^{ bz0rtxSOmQz8A* z<)iYg3D| nE*cvx!s(*8A uCNR(eKjn_dof8^JOc$Fx= ?|F}0 zYxmIXAY~$~dHSd`9u2!_Arzn@ILb>3uk<^dTaTgN*$j=N!%)o;!KKGg8fv_cRyW)T z8wm42RgCWg)j5phD@L`n!L;!6`>6w%Ds$=sv~I92=&L4Qg8oYbN^x-gr+})G9bMWA zyV1sF!!PiD*xFeTO5HACfjH!Uc5^vR kG%VE4s z?|^NkT-L8Gx}NqG-}d)BSG(!}oew&@AM|>=8EOs^QXbGc;iygMedE;Q#IfKsoAV8= zD1z;^*cJSX{;HrR;ySjq#JCaOAx&ES-k-1rFmBh73E6_mcIZwfLk_dgK*S4{kr5a) zdBy8&*1n-k#K~Z5X5+6TYxyU^J}e8?t(9&FCXnXEua#V)e=s`nf5+OUDH>K|I-;Hb zb3n~`V@4(aM l>SVh+`oK zGn$6P&AUX&BnW2^tH4mhC=n2VKW`3F|N1Qq>b-RDJXx#3VL@29`y9!Ep>9L~hfUnj z1J`i!{1yuu!O19%z }AZ_`Y8OC)D6`A0+(ml8oDzDmnjHM!^@x zpLIa(+_2lZ(9o^C=tC;EN!Z4|1{A0tod#u7$xhXzCTXrI3OK{4{DlZaBEN+ h4q;2T`m zXkM6;Gn1kYOBHF3@+0s5_?)jk)e~U^##*(i{P(%LOvTdgJ%i_{&c}j~WQR#a_(`7) zV);GSzvS|DlXGHI&Gki1jVlh!zQO+a`*Zg#6~S!z7**PBey+qG7^5paI&4byljGKn z3tvS0Yy@rM4}SuOGPM8?mUSLCW|``wEIiR@Cgn*%#?8dI>acIqcPF}^;xA~*v~$U^ z99wT)+y~wxe}ofI60=T*8O*WGf!;4)a)ng>f;mto J}s)|s){bEmjX&6dMN_a*R zTz|zJmxUIt>lx?izI$u*{=e3!gM4*4VV%9foYR0Dt5$Rs5-)SfugwXgpvedcpWQNd zSDe`YHVwjECjR2MJYpQ}b2SOL^K!ph-!X885ym|U#_!qNf6iO*!##Azzjrxol#867 z8CMys24*p>MpL2r@PiF=?pY*Q42k2^b$Y(1sInLW9tvCi#0-t>7?<%2T*iL!*WZif zK4 ypf62w-kG!Cl74e<_^3_XI%<*qMD=Q-_ohZ7sGP5)%QGLuJ4k=`zlz=J^RfJIl zZY7V8 oShp#IHIRhs-ZcH!iLEzd%?IT6ZSB zuYoM9Z=y`6%=H0h&@7uhDVysk&K9V2>W1wO<2wA5ZC`R8>!d`4v{3&P!^Yk;05y_K z`8;3LzjATm1ou1!e*JjQa9w*e?svqf4QCf166^2<$XX8 7|6?;Ja(5afimUnZB9wqu(9ksghRjvSk; zV5`u6dsjH7){0M&7^vkde@&)M;)7#pX{7$`mdwjB2$6?Jrkuf#w6j$dvfcr>BMu^6 zuO!$LpJS4i9pNNXsK!_lUNWNUw$fU& $UmcG;#&{)R@(M@j(7_MImuEH=s}Cu zBtveET{%u_-3@ro&Md{Sz8-3}WH@vMk%bWv!jq)_yiuh`g(k~3xxhnI+)@jWPd_gB zHycHvdYPmBND+j6KfmpAh|6BAZxcz+RNoLl+)1qwkU8rV1s@fq=O&5!;dh1bG-Kqi zVXzXmz78)e=1dy&?}^R_2gl|2WWecpP0ZbAc`E`W_H+=5J)KDkKk?F1oCelZZ^YpV z-8A{@79b_J-!6t)c_Gpz$}7UPfd3n_- -$=6vL$Ne}-E{zQJlBMPu37_(>0s{!I;0ARHYS*HD(kWvj zL;`%soGi$Vy_ZdCv?^m_Vr7F2Q6J9hq`5{V6~hQ#KXoAOvKZQ=A`d~IuY?f`ogh>s z?mwKO)n| m42+{iQ+VmT0$K`>-mmRSZBUryzfL@y`MWUKf4VpvAa7u zJj#~TA1DsZbs~U%!$>XAzTm57K9(8NzG|^vyw+QhraMBxBuE5T+!Ljt6%+;~HC>p$ zMJ_cGNOXf6ydj?!2*sLGDUH4MsT6cI@=n$Nz}MoSRG6YV=Etr;EX=xT4#FgGB=2#P z;YF!m$1g3R+};%~UmAKH;;&1VED4L*1$peopTe$DWB(@9##g|*u|VBlz`oEq(m8to zZ6kC7gHJ?-d7ZhoH?*P1|HYQ2RSfrArBlWo(A8ojz 7cK$UK!*xg#pdWupS|$ zMP2y*6QBNIIU=@;NkMcPsw&r?)^?_L!#-oPU%z@^y8NM&eUVWS %w?E(J8!ouI{j3=zZ4o&lwvZ#Qh&@S!ia^H$f zVQ$EU%|+wcGeVnTh5rp~?EUkzZ6=T@^?(g|few#Cq!G_3-fqedJbm~{j8o#}KySO+ zgB)~;za@<0G9=Zxme0$FhLGS07ucZ;7GKr!GsA64H#S!z?)~k6{&vBr<6s$yUXMvY z4pQZNc~$M`bP64qI6dL;g|1mzdhgr-2FSpJUDcLuwwpu(zWNc<9-%*(ofZv#8dLq5 z($fb72v&db{Ag~M#?`~u04we~5QM`t%lYCYiIdu%9A?y?t0PV4z1h0!?k-Y-ZZ10r z>VH))$|IB0+RXAUFYitLmAR%XGo4;V)pq-0M>m`AMl{@ZLXS%o8*X;d%E{gAJG;3U zHqh_;bZM>HXQ|bwVZ3HKV86_?vP+r^(Ktz7ZSF?>i`K&yYuKcT`V+eQRB2w$8uegR zJUsPp?1Y3CD=qdk*!4!hrg}|+h%zcggT*j=T-~IbxMgWW!>A>7C65L+Yl~#lk3jm$ z9&>8V`+hxeRpX-HnjJ9cnx>-BF%UCv4oi!7FB{#aT9#s_y&OJ}D_~pJMEcvHqWvTV z$ZzWcZR}$&q_~ElNjYwBBwvn}*=8X&qCyg4#6}W&PDoC>#H84qtl#9vXZ-0*b3a5M zlv()a5>gakiG!)8dOeM>(O}_B%_iawJDr;pOX@#9w;M06EKO`|GUm0r+Iy1H(EcfQ zDd$&DxcCWKZL1=zt79D%C_^7bJ3@sMz+67B=Iq3ivv)ktBqL5JAS;KFO7Y<7v>)F1 z{q=JG9p^w3i~R3TLyGr`tUPJbX>=Sg#=q5itAp}C7Mnq5jD+cnQN3b~*v_@g62xab zf#Vbb2aS6+EUcp$L62+?%kuJ0QWlcXA8*|Pgjw*L_s5D|t(AmmHDsv7*$`)AF04r4 z)YJ6U&cJ>*8i{oG!A!P5!byYKLrs?FS|V9uCa;Wr(=|cmqx=JI=l}d3mknmIvyRGq ztU$nht{Jhs0I<4k$XUVO4#&Fdq^GtAj$V~K%(a5G{q-m5*qFRH^}!Oafwf38GqpTt z>JTP5ImnBE$u4`cpCu3KSd3y}a+kR^Eem0kE{_9|3%ST;bb%OXAuZb2#j4*O4*J!A z=B`GT5ITp}{)opZ|9$jG0 =m#vO)?v;;}vt@a9bSLmH94t^OLA@9f_X zm)qD#b(NxbM%G-Dd~pS43L5UEQaq@8)Fa2QkPh_3(Yf2zv%8#UiSHc9XMQ4v1HC5a zv{CC;*F@O$sI Z-V55dRBklp6ZqF`6!-Ir7T!BKndcE1f|ayX2^-X;rz%K$gDkB2{o z!ta-4X&jROAA$f{iXa(Q9W^Clnx~jk4O_OXx|gRb&s!sE2G$H3W6^ws5A&=VeYK{6 zJFp&oFE7Bz>WkKC!RS?>W{{#A@=eagbOgs3s6l&0?OrR~2r?}BK5ZA&X@0kPH`}%8 ztx+`hs%HplR|l*+CN<+#e`f7>7zMS0$cxxh&UtV!M;DOm>RKMJ1ck7hfjb<6k{}Hj zO?HM8G~91?p~fH2W(5tjr89(U^l+yd_jQEI&aZmMcsS}3Ltg;d<%w;j^&X0stFF*f z*!P~X58nvUo0DjOOI0FH7vZG9>ZV)B`Oazj*N5{4S~*CG6pumak3pO0%tq>Oi_7*X z&ECh|G~({{MSx^h-)o+`;*>?xPBN9_wKuv&ow9-={>1(J ~z z1vM z{8vhM-JCqTozB3PAqJ*U4_I)?uwz!7}(S8 zK#{-WLKbJwRj8M!#3XRp|FJZv;3uSG=0&ya$Ue9n_}wC aw3KrH;PT`J(kAFkh z2g(^KK;!!zmg|G%QA4>XMm8}H16)Z_%W!-Q1Nw;Z%5EwYR+X_S_NPkO@wKYn)> ~sJ!3e&Nf*-emfHON+K>faHrP~sNgFF|DgLIrKQAuCJB#uX|e#D zeS>4(ZE;HGux1p?>gQ5{@zSQ28L~^_H>RK@Ze>^Gix6U!Tnv3kjYm<<>?JLwh4PTG zSXixSZocdLye gJ!Q|L_MN1ZLuCnV(R^Cp>?c=nT9u!W&?mf(HE zT3H-(>MWc l1Xy!K6I-b)xUe{^0zi8Hfi5(Z*Nk5udb!-1+|z z=J>zzk?3LAJ5HqTK;0e7g`@PTjfnpN7YsbV@Qfb6nmVIcHVgt0bLesDIv#8od9?%? zGu0H|wL)XxucP3 js4c#RhW7##FW1ZhG5iQ1H6*HXo!~XN= z1cysg)zZ$}L&UO#(J%_rkhG$EgXdj#JW@8??$RE(L1eA#3wyf#p*ev=+NKxYz0}X| zv2SX1O~z8o;VY9ehbry+yc^q4*?TfHD?j+43Gz4zUon= 8ks8JN*n?^;PDpl$*aa*st~?L@qiWoa21s$_^4&A!&> zMY9ckk$wY3TYO@e{@LZ^APh-NuHRGgeZ9eMOd~**=u7N_Zhlu~bZnozUI+G~?k%;+ zJWeRAI8iqjQlh@axwWSwuCwdOu#44(USxla<$cUp@B3v M z9?0PtUm-=F o=;8K<=OP#!@4G89Vo2|$0*IVH^ND+{7dETU?nM8EhF|rh;q_cgJr{H<3 z(n}aUk9|H2n#f1)>a0YB`Ij;^Bod@gw{6%%E<@Y$O?6VTtjEu@MLUG(!2PDqdgb7q z2SIsX;N<3M!&^=Ezg+3THAQA(*HIjM4V{IE2{mFnroWg4#5Jrn^3%WjW<-U^*hSh< zGXnp^`}!}wEs58Gq9=GwU0a8zphuw&s|~R&v_n-Z9%Jf{5067%hb*h?ysE;0FIGzl z@^Eq|z=k^Zta@b-eTtpPJL)`g!Z@dldcri>ze%KopiNxj0DUfc4X`MvyN&7Jw)_ zf6JKqV&>9okuXD@DtWKNFt?3F%{3KBYkT#t*Er mHw~Re~Fw_sw^m4S}PVM5y@$Y@Q3utK0;QTvQC+q zB++1gjAf1~bIwGOPNnM>lipB-ZT68PF)ld0yiCWK*3w$IqdXD(ANg6)23%45IeL)6 z|2BnT{(G6TeL92-pOb~xnQ~b;c}ygq 7xgOZ=R1k{#b0_)3$@PXV=rE%v!xFo;X9ic_tW_?&sBUY9vf4{%pb&2+Vp z)^+uwY&_^tl_C`RF)%pxXZ2PmPW$Xx`V}c5+ 2x8! z@sGunOz1yE-4VNLSg(hN_O+~0B^+f~;n8MBr;gA^;%JRrAG^M_-_9#!@^FwvQokHL z@~QOsUpWoz ;CEgY*H%~gI4m2brUe4jx_(V57oe+< zvJL4s)3!T+8h)*mU0l8V5b$|vvpz^y8X@GXps+8m9rfABlC=JelhhV>#hrRF9CBed zE#Iv`nv058faTk%q?TIHm2s5fnolW$7;y+IQv+(AE=ZjZULR{DzFDBwc9@dnzih2N zO-`~1b2;M#R8$ZqpA3gk{*rg79#NWzPsTj!Cw6x3Ke#&YpFrW=yKrnFG|mibvPSDW zedOCu$nY}#J-+pH`zZz95F##5L6!a8qsi?L!djS*dB4Zvx3;33&ejciByi~KuDcpJ zyK?B?symm4{h3L9@i__`5e|(W_yz0K(c%liB$>scK?Ur8K|$2%)nXAA^E1h{aQw56 z2qr$Rt%gU8QUlY9!V@83`5bK3Je`oDxbE?p^bIoGU+3A=7nL4k zre8V^fg1!efuab+D;I-3*}T%g3d2JzIafI&iW #YtCE3fN#FLAAv9~20{x!) zGF{fps3QQJjz=)wj@S{Y4{M%ZrZ>Teqh+n${2E5Ey=B`8yMOs#Z5i@5mn}67jyk2x zxgY{ZT2t+y;~%!y&tNgOkB29_Cc)AxHoB8a}NO{>Gbz^GVffQ_GgJz5cD@fmo)B*4+ygQ}@xe(s-$} (dk;QocSR^@5EZ7^$TvX*QcZ($b} zzojBnO1F04z^OQ4AZ*1Lph^>J=nD;_{lujNXNZ_^`+)qiq5T<33{~^{qu#ukFCIcO zids*@)H$wAPCY%M0TouZG$AQ$wty(Xuag_A7Gq3mc?tqQyAQ9guL~>J>-!>~gSSLm zLX?Y%a=i5@vauyNiWt)!*6T6iA6oXOH>QV3ck&}&gM#pTgqid33}8%@xzpKqBHOzh zaAkRRyK9zW?hO%QHxZbr7~mNGJ2Ezoe@|w7dQ?*z+;PeaXV1+}>_%X^nRP!);;^8| zf4R?UKcX)?h}J`u(>7wx_c3EV)ogP8Pfc}rr %UVLUzn#diaIwcg}x3YmwH{+jm%scn|FR8u7G~K?Eh=k-%}>lx!?|6 zBoz4WF|zs z%96D6-mOcl*?0Ihh%8f(EA6|@7~bGEhu_uOkOCo$EGkm0-qv-}4zoFh?|euD4Q|_M z>n`uz%lNAw6(egJKzc 0phxL zB&vDyGc5A*d~>{o(rLAvy8W~|+->S6lu{bBQ~{1-jAH{eE6UPA+9ExYz@BCWxwsk~ z^(dMJQ|iVNrd0Y*g!(Bg)@Jkw5`V=tXF5dWyf7qMGK^%xuYyyJvl;oeM`SV|F%aj@ zZ2Y<1;v0%_RraaSr&y)jJjA`rYOnMQu $NFlc-?AcSA%wQaU`GHSKT6FpQ zMXJq&cDXV*NEez-%o9--LzT}w0eve5$%a&XBW$L(8|SJ k?>}=hH*-ICU0u7ny1IJpT6?YazE3z)l)Gy%5kEGS z!p@>87HuXD%Oudi3%g)q?MSWh%=WC18p5RvPO3#LL=>x#fJfBtZqXDCOK&wKfw**k zf=|KCnv#^1e=+HS%Me}J4PJzf|0U=?por~w_^e4ym&=&VtOS~uzj*$eL_!=PL-y%4 z{8?b&U5)U6%_fDJ{Uw19UiqInrO@L!HMY?I8Dtv0d3kWxtGjjBB>W)1>A6|9#OM~- zi8hcE5*kb>DHa1S>RPT0oTh5N9nCiSfD$rUo`6?2UFs+aS(y!^iN$I*!$!3k&h3 zOmV_b?mt%OCUjTHWUi5MY~db!5gy= Qd^RNR%q2G-kV&O`>LJD=Z_{x<6C>tZOyU~m7G`*}U6)CiF~ z;^?kvN%Kt 3xb6V*%0>^N)zkC-@rRjA8?*<>ea0~G%|vP zjA_yReqf)`zsC>|PL8BV%-y*oGL+f5N8y L$Njt=deoIf&GO@)jJqxVGI z9P^3eEi^rcj7f~eljegW?A#*NjNbD}h1hVG7ry$;$}N*}A?~V~*PL}GQfe)QLc^d@ zK9v=f%D@I(0U9uZMJ0`qhY>#Ove;8m5#f}cdlkd4sF=uLh!8di ?4N(1gTpFV?&uNQIs@b@iZ?R)TP3RSZq3rr%Z|fdwmeSt!y^cqmUWU>8}8P zMh^FZ+OvmFuS>TSSZ@9@-unA4qzYk9+e8XThd-*a#+uFVhlq=a@7f*I{~|NV=SI0c z{SH5YXw_oJ7SB%cf}u)hp}^6V4Z9hS@n+CZkr%|;n&Xk02lez$KY=NrLjOXcRmQDA zUA9q{;xaoS;R(tBRD+Cyiu%(m20lGK-I4^=VFE_fHzp?3dq*-GN1qz^Y(qe_T230D zH2`9&O7+aIUB!w g!_u_=1Kp^X z>sMl5b5z9Cs+w)RaLq4Gd_1{?o#w`>+U0tryNT&iE}C_P2j{`V3)$DfzS*?8-YaIJ z8@dUE1<=B$QoBRfb$7xh+@7+3Cr&V!%3p=?>#M%D*60Ku>*mH~j;O+7a-pK $>7AIr8YI;v1=lL@+-0Ex<64=uQ$WoT6nadG)^#7 z>v2x(3mo?2y5EhN)z>uxib(T Oq$Yt~2xHatZbpj(Je ?JYO%RdCIrZG8;09%JMo7n=IpRstktqwfXM-|{ZxU2Qe zjJx`Kiy`3z%ssNj=Q%(jAQr=#O>fv&_`);gQk0@}Vo!`ukNDgN{1WvBl_ubNmhxrw zDjN%yh&ierN7_)aG-uJaw6^OBs+tY6!)$^nx=N!v$=2*$xIv58{Sx!zYsPO>s;(zC z2a@t v~AXNS=jn{t2q-n$hia8PFS_9E~yv-9QuO4XX7!IqybJ^I5< zzalDuc>0~}O1w6^)%Fdzwxb=bD9Z~N7=rk?D{C{DDDZr-gx`1TeWR%~x^r0H)KGt1 zKWINsNFyh1Ys)bro^RW6 akR9;iVa@#5RFV6R&NVZqfdKsj(8)_z2jXnLq zdQ^6H9ZK#@UO4-U>}+-IW(ha=Iwx LSlP>ca$H{PH39CE@MF<>O(PeB1?daWI!3;c`64Gxek1>97)rmk1?{mi~lX? z@J_t^7BrWCCWvBSu-TqFy?ueL903lm1kSCKG9hm{2a5b0e &VKz5$m$_2f_5t%9) z7t`V+Hi6)|R@6NGuaYVED^eF3x($)y3_x_8L|)3%ypndY9TRM=ozmk`8eTnq%yG<^ z0%!?HcV) #(#$ZM3uZU|a^uQ(4 z#XJx<>N+t4UCN4&&c%*WS;>i!ZzL#-GFeSVV2w+OcQ4tFe!DF?qX^>+NnP6vnW$-p z7Mn{Y-n1$k-iCJnjjb5G{(fO&X3(Ac(X~F0aQzswk%`PXcD?Q|u+JukR~&>Y?w+Ub zB=9$B_x2Mpcl-(POzm5&9L?rcZhcbu)(8?p2AjMQFcc&V4=eUqn22xF`#FuVkW+RT1 zu7j?MQQ z(I=zgy6`~&`d=SNGtHl eQ&<0i&!}Z$e%`x9MxK$LE!+djuc~y-dRme>{`(q1< zkFXMBG;t9sgD{!No>JZ?ch6VNwUNCd=y-eto%gNOOP<|!un%_XfxHS+L S+Pz4e|wTExp}eS?OjobHt|6s9<$E%hhEYWgR(=W5vz8 zlDd7RGP%Bv8j+Vx^j`n#uNShvcPWOCM?U`sx6+h?>stJ;0D#B*5o%kv&oXK9MA7Jv z = zQWT#4P9_OgB*Q*aPM1)@{R0q|e6eH)EsZgh8&wKyhekx7_c?o17Ksc ra0yJJBwxa>vGzpVKVvHK=uY{u_zb0Xp 9kn zsQ*v+$v{+=_Rg_d&UBQtBop44UNes{(j+`wV&rhe54iXJ6W@L=;`7GOuM1bDM_pL# zWtM;<(WWqwHA$kSF{ZgGAv-l9nceCyS(#ZO!OmN&pRqJZ;(-wd5q`nj3b5+C2Rr77 zDeMqUUMH54Y 3*^@jLC%QgVGqydeRng1N)7SUBEh^^Hdv%q((S{Yg zeZH1-pITQaY<$pKIaX~Ts{?6m5j!=5??%*(NK?~((w-G{fZeMd2azwl&GiRHkDDK~ z-mrjZ&GE&Hm?WgL-*cI{*L&HG3PTT`J*Reg?fTluVXkl1{0VgQB6IxYrD7G^qQM)R zjqUNZ^~778nN+jU@!xGD(_wpKc3v&qbBcBLtl?wD8N1q{Qe4Q3u7H-R6@r*IKSym8 zO?L7rC<6`R+P1Y$N}JGfYQqa`^}J%Q<0bU^>?Q+gX;?$U1BT~jrHTMs5mcmvG^CIg z?AFZsakuj~mT>V&L0iv4in3*q5P!${TGb07gJJ#--jb(2g(2TZkr9KJd~a*@&Jp(0 z$4?g#u7 iTyFe9LtS$Q5Wf0HCXFB#{u;$o#)Q%gIxr{VA6MDZ6Omj+< zn7QwXHDJ>t6Y%9tvC fifr(T z@7TQy-|3x-bGtyhbH4z_vkx+F;9TOf>7w57a0@*{UnvS+yR!E*>Sx3}p??o_P2lWW zqVfIm(JZG=D47&W5SAUMJ=-|~bBg6|S)4AAt+*<*GrLxZ9M7y$-5j^0;U|1JHrTl> z#8^$b0|xmb@=nTGbIPnawu`S}xyeePx(-S2T8HPrSZ6;#Fr-37hpWvo_m|p@2InQu zuKV#McZXZrY`5tO^Qt;g9iR7%$j~=VA_gd%WT^8qY(Uv#XFwb%XQbh`z~*fk-)_z@ zRfEaB=jLmiS3Ivd&RYrD-bIt#pqAWD7#p8@04jc0gjZf>9Md!(Jan$8vXZC6`21>L zhr>zeMnuMhdi&|ZL&vZ``Qt6PS1N~YWnYO7~U04B%~NT&u8O6MA24q>Q4 z*vc~#V20?KHhVEP?iHE~FE iFtcx7#!T6gkJNFGTug2mnWmndmzw|A_e`eg& zq~D63_L*VG1WiR7bo&H4oTU+wD-K?5t;MuHvIAlqtq=boeQ^eaR7FRadij)%2;FH6 zk*T3IPVq$t tlDcrh8XeG>JH1E=#p zCMG6gD9b|nYn20Q;bA1oN_}x&=Ur~XXPJ|nA*a~Khz)I;6gJs{ Eht z+wA$3dgbte^IGpwMh)oKuibuCugQf5?QjRxeLC>$7NNRb=42)LH=m#KZE; E8^hV 6+tp6W>>|E-tC?i7I+&vYrY{s-E*JB=pydsiI7#Gt iT!V_CCNp8rLq&wr^F zkG!(Bc64?&j+IOpY%!CwpEWxtL~ae;?>m>sZPObUvi-&(LRA_-=FL+dqJb5>?tBQ; zBIYdNtUq&5lo4Dz5XKz4Fh_LfKv?(!GIMf~&C$#p>#68?)Ft66qQEs^wGBgoPH%#+ zfxFVJt$u?dA7BaZ=Ck?S@0-IfP2vHxPD|{R X3zS5{-!YEW7UvJz}us{aJAk`zLgKF#$OOfALV>o=|fnyg+%rfGlUy z(Yaj6-lyXZ2ADw$0J5`q4Gf*pZ3q+yaV{2A-$6SeR*`+?RmJ^O1LLD18&<$Bhg4cp z@<@IuTRsM^MQoSzMfCFP$i8)v_g<{T;T ?W z4d`)F$i`!`54hkFN>Z-}xff< DX{}4^32QKpU|_ChhR?0}C+%vR${n^p z3h|_7P%!wN;gX&=!G0OUSokGO>H`p)4gDe@s;>-;_K%3xR`d9k doMRrx<*MME%G<|6sP8+tYh8AAH4}C(AJ%rjC=|6iuCP9cIf1Jnou| z?M1pIF77RKk6)UA6))W$$^Of1_7X;&S;1NZG#R%!qfgAI&%7eaB>Fcp1~bxM+WPFy zK;7#eD<*ln-lbRefYIm6iHAz0ch=~GUo|!SxR4*HdO)(Bi>?=7TB@L2%Y$9ThX>5M zL-h|x%M?!jL$upZ#r9Tcz%43UOha-QgwmiEd3=NeoU9wG`q;RI24>j32%@*mJGJ$m zP#bx&P(*wV%cPNs1s}LYN-m5AA8!NfCd)z0>qXD+78b=(9lpxadT9!ICTZ (h(a!*6k&o&lX?dtDI_ z$dGZ2CBMNj>&%xO|G^1e!knCN$S7d?P%ee7M0gExHqF_bEly(t`#agZUdUDM^WZJR zdyX*%o7kwn0^8vxs1*iUQlL}_F0C~v G< zp&B1EK=wky6TwJc{ji2{N%e vYwPTW_xyh!2WZTA SL4;@X>R`!n! z7lMpyPD;=Cak7}lpFs|JUq`pzW?=)AQ41KCOjD8&B_Cz@dSt#&ID(X*iUfn<;K%Yt zp>)cuH;Gp&p2v{ewok#7;Q)^?0XF+PMCBd~K-U)$`>JCNYXkSojD653DClFXh!SQM zJ}PNCf(xD7qY>+ I(OX2{;QHS eQi=$ZNV P8zxB(1DLB +w?#M%mhw2ln-G2=p-uW`$+ZL#+iFC{EFwV9i%Xqu0+fXbJ3}P`y z cdk3Otb4+`Y}1A-0}W=fu)G7pV0^pHBKH3Pgg;9z|qo7(G_<6^j? zTn?_uvQ*ct69mDMut0~KVUi`T*?;7xo2;DI3%?i&9#F-G0d<-kSkUc}G}>AwE!T zjB?g@k2KkYIssMknixkKx$_<4ATeHA`uW6=hnkd=G$A0OH-34N{Mp7y&YkX`(BKR; z;ZvXVHSUcu$)$8+I44y3i+PU)Ymq%ynrF)u><_WkgG&wbuHs>#A5mfEH1b@DccF&A zHC!#s4$5(`*i^F=M|eYAnm1gZh(+vbb;V$CIQ_LKomI?+H&+*Yx%$@?g-O z~TO1+9m3fJFtck=$rqxghXY?TSJt}xiiIy=~vJNUUjwFsJ z#m7|p& 7cEdWV^ z&OnCmBi3%Jp1pn|VmYEIgEbD7!hmQ-|I3@bFm%QMFxpEfe&Y=>fajRc3s8SV!x)jF ztkE+D{5KNCruC}s&m5M%299@G6ArerE$cFR#j 1uJYVju#cpjRk+h5p)G z((5E)0&T9?H uM@01NCS9UKy$;)~9KPzGSW69#`@aVG zx?V6F(U+}JHazK 4#4gUhww;U zvs1C5{iJdu&8Yo6YETje9W-Hr%L3Wc{Hm%2tkU>X!eR+!WWmTRUxWcmL%0NsQ=_@5 z#}G!PMyg;3?)sQ3aS( 88dQ+$8IAR Rw z`!S-o37?~V=myV}M>(x5m(a*SCy~WdBkftEm1~t1Mq_*LqB+cWiaXsG4BHI~vRGG! z)Z#S659oRJ^OlS~C@CQvdFFS}%XMA`?Z$I}m%12ZFb=>Mu4{Ovk>{(Ab-!=*gY{lt z=gRbh=3)_90=ABCn$dCDBjWa{u{wGm9T{9qdT}AAWW&FAYy8XLIL{0CysuRuH?F=; zwxBtspOuO3@B&U >gFq! gAey)Mi>w eY*cyp#aq*K@y=U^|f4g>}32SPXv<{52P2!g0=pr zl(vjM(Taj1#s0-=DJuc6a>Bi&@#Fl3u^6s#_dL6hjhPV}V_g3{jYgeC_FC_V^9-@j ztTiFv2kU{}#ABEthI^pWc**;zvs*>|PB6_WQ&~0s*SR^f&eaVbLnp_z6kU?ti?yLv zBN}_=hDqY3a-zbiremn-V;blTZc%rb*qtY{#+#8@$dP_I9 UCtkB4#XDkWeK~2pK!mQQ$~k3vuTLClQc5wR z7?p`veA7~IYJf5cpf%=$K+?jHET8C6X9q#tAj2$5oDk0Xz<}d}IhMdII8Z^fuxwo7 zn}$`vlB2n-)?B2ahg`sg`-iGdbwr8;G}@T+m);;l#j|JWe-6eL)sd!*f1626;0T%s zaYfSm2^{Wl0B?eke5lkHXpVVd-{U|yvqTbLD?T}eBpk0s*%WEC2BfUF86dNSK4P5D zFwcnzA29B3w7MLFY>mJ|J{vMI=iUecsP>d~(@B(t;J@L{x|3n?dO_V&PkG EXs1%~_Z96M5h7e4@)bX1S-= z)Hc;~F6r0~$n_2@UOG63(xn@e`p?AwHCzOnk5ujP+nN5^HulJUAv+&p x+KU5tl);J>Oo1kTI HPz~NE1HqQmyQ~OdX=&)3!6l@>G{inUeGt+UxKyWoOgl^x#~tHLNt)w0 z;D0D$iN>uykd-9qxLPhAa`-p-LD}o^4RHXLJVjeqjMkEZDc72IU{)>g1jx@?27l0K z@ AbuHC4p&%Bd-Z^f<1zA=?{9- zJ?8e1%e={Ja#(SVFHt!g6P(k`2hrN{Ap3#2^<@bqYtGpmc_q6Oxz5A2865FcY$Dc> zI-oJ>*@+ dzKlp$kc+MVaTL~=x=~vEEtju z)a;)=hG~vLQV7v1#IY5oG`gaip}O0`l>b(>pbU9g$b8$wr&7y2Z40_qs_DmQGxPu_ zl)pt02HLBK&o5l@&^)3r&G>AF`GAOln7%ojT_S3!LlK1(sEbjg@@l du1REI3&d1dU0X>W6Pbvdw|I3A0Ug5jrn zTLI*_5Syj@p(LU?Q}nO)OWdRf6vE2De$z%&Pkl6lH&&Q6Wr*tuOf?&tXAo0eTc&AO z0>}Py6*KGaSW94!6IBMtBe4T&4aoKGr}{{aHxg43^DU)|1!^DWCK4Qxd!4-|;?gNo zjb^09P(A;K$A5Hr;vt;Kzt>%TAPe8bfZYV6@ EpZ(U7)4&BA=fjheFIIEx{_b@ zVtRW9oSFochLF@gVTSP7z9SaY@YwqAXh^>&G)Ec5%QnV5Ge(TFIp4g _sop;)DlFD7jEisX?#^{cadSB`Wh4&CO)<(; zUlXUE5)4{mvxR}$Qch@$2DIn6Y*>ZOsin9j(eqra&_weYQ`!^0lZJl2j2{q7A6fWy z9fYGnfH&2P7uGHA8vc3g5k5Utk<9X4|5at&E6yXe-#&KSx3GUHo2o-8L6RW?5<%4F ze~Vd`{G9m*Yn2ZxKhvkg%}jCl2L|V$*$I?_lV h{j754b5j?9=PRveGLpv`(eHK0H&NE &yQ?sTV7;tun3q}fSx@6RQHqcw}tMP z26