From 8a9288808951aafd2761a5d4942aab11fc9eb95a Mon Sep 17 00:00:00 2001 From: litinoveweedle <15144712+litinoveweedle@users.noreply.github.com> Date: Wed, 22 May 2024 03:39:27 +0200 Subject: [PATCH] updates documentation --- LICENSE | 2 +- docs/CLIMATE.md | 16 ++------------ docs/FAN.md | 16 ++------------ docs/MEDIA_PLAYER.md | 16 ++------------ docs/README.md | 33 ++++++++++++++++++---------- docs/assets/smartir_climate.png | Bin 6799 -> 0 bytes docs/assets/smartir_fan.png | Bin 6181 -> 0 bytes docs/assets/smartir_mediaplayer.png | Bin 7756 -> 0 bytes 8 files changed, 29 insertions(+), 54 deletions(-) delete mode 100644 docs/assets/smartir_climate.png delete mode 100644 docs/assets/smartir_fan.png delete mode 100644 docs/assets/smartir_mediaplayer.png diff --git a/LICENSE b/LICENSE index f7d086cb..a19ab623 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2019 Vassilis Panos +Copyright (c) 2019 Vassilis Panos, 2024 Li Tin O've Weedle Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/docs/CLIMATE.md b/docs/CLIMATE.md index 0f3ac550..e1ddf62a 100644 --- a/docs/CLIMATE.md +++ b/docs/CLIMATE.md @@ -1,9 +1,7 @@ -
+# SmartIR Climate For this platform to work, we need a .json file containing all the necessary IR commands. -Find your device's brand code [here](CLIMATE.md#available-codes-for-climate-devices) and add the number in the `device_code` field. If your device is not working, you will need to learn your own codes and place the Json file in `smartir/codes/climate` subfolders. Please note that the device_code field only accepts positive numbers. The .json extension is not required. +Find your device's brand code [here](CLIMATE.md#available-codes-for-climate-devices) and add the number in the `device_code` field. If your device is not working, you will need to learn your own codes and place the Json file in `smartir/custom_codes/climate` subfolders. Please note that the device_code field only accepts positive numbers. The .json extension is not required. ## Configuration variables: | Name | Type | Default | Description | @@ -22,8 +20,6 @@ Find your device's brand code [here](CLIMATE.md#available-codes-for-climate-devi Add a Broadlink RM device named "Bedroom" via config flow (read the [docs](https://www.home-assistant.io/integrations/broadlink/)). ```yaml -smartir: - climate: - platform: smartir name: Office AC @@ -37,8 +33,6 @@ climate: ## Example (using xiaomi controller): ```yaml -smartir: - remote: - platform: xiaomi_miio host: 192.168.10.10 @@ -57,8 +51,6 @@ climate: ## Example (using mqtt controller): ```yaml -smartir: - climate: - platform: smartir name: Office AC @@ -73,8 +65,6 @@ climate: ## Example (using LOOKin controller): ```yaml -smartir: - climate: - platform: smartir name: Office AC @@ -109,8 +99,6 @@ remote_transmitter: ``` HA configuration.yaml: ```yaml -smartir: - climate: - platform: smartir name: Office AC diff --git a/docs/FAN.md b/docs/FAN.md index f81a10df..d27b0e98 100644 --- a/docs/FAN.md +++ b/docs/FAN.md @@ -1,9 +1,7 @@ - +# SmartIR Fan For this platform to work, we need a .json file containing all the necessary IR or RF commands. -Find your device's brand code [here](FAN.md#available-codes-for-fan-devices) and add the number in the `device_code` field. The compoenent will download it to the correct folder. If your device is not working, you will need to learn your own codes and place the .json file in `smartir/codes/fan/` subfolders. Please note that the `device_code` field only accepts positive numbers. The .json extension is not required. +Find your device's brand code [here](FAN.md#available-codes-for-fan-devices) and add the number in the `device_code` field. If your device is not working, you will need to learn your own codes and place the .json file in `smartir/custom_codes/fan/` subfolders. Please note that the `device_code` field only accepts positive numbers. The .json extension is not required. ## Configuration variables | Name | Type | Default | Description | @@ -20,8 +18,6 @@ Find your device's brand code [here](FAN.md#available-codes-for-fan-devices) and Add a Broadlink RM device named "Bedroom" via config flow (read the [docs](https://www.home-assistant.io/integrations/broadlink/)). ```yaml -smartir: - fan: - platform: smartir name: Bedroom fan @@ -34,8 +30,6 @@ fan: ## Example (using xiaomi controller) ```yaml -smartir: - remote: - platform: xiaomi_miio host: 192.168.10.10 @@ -53,8 +47,6 @@ fan: ## Example (using mqtt controller) ```yaml -smartir: - fan: - platform: smartir name: Bedroom fan @@ -67,8 +59,6 @@ fan: ## Example (using LOOKin controller) ```yaml -smartir: - fan: - platform: smartir name: Bedroom fan @@ -105,8 +95,6 @@ remote_transmitter: HA configuration.yaml: ```yaml -smartir: - fan: - platform: smartir name: Bedroom fan diff --git a/docs/MEDIA_PLAYER.md b/docs/MEDIA_PLAYER.md index 5b01790e..c17c03a8 100644 --- a/docs/MEDIA_PLAYER.md +++ b/docs/MEDIA_PLAYER.md @@ -1,9 +1,7 @@ - +# SmartIR Media Player For this platform to work, we need a .json file containing all the necessary IR commands. -Find your device's brand code [here](MEDIA_PLAYER.md#available-codes-for-tv-devices) and add the number in the `device_code` field. The compoenent will download it to the correct folder. If your device is not working, you will need to learn your own codes and place the .json file in `smartir/codes/media_player/` subfolders. Please note that the `device_code` field only accepts positive numbers. The .json extension is not required. +Find your device's brand code [here](MEDIA_PLAYER.md#available-codes-for-tv-devices) and add the number in the `device_code` field. If your device is not working, you will need to learn your own codes and place the .json file in `smartir/custom_codes/media_player/` subfolders. Please note that the `device_code` field only accepts positive numbers. The .json extension is not required. ## Configuration variables: | Name | Type | Default | Description | @@ -20,8 +18,6 @@ Find your device's brand code [here](MEDIA_PLAYER.md#available-codes-for-tv-devi Add a Broadlink RM device named "Bedroom" via config flow (read the [docs](https://www.home-assistant.io/integrations/broadlink/)). ```yaml -smartir: - media_player: - platform: smartir name: Living room TV @@ -33,8 +29,6 @@ media_player: ## Example (using xiaomi controller): ```yaml -smartir: - remote: - platform: xiaomi_miio host: 192.168.10.10 @@ -51,8 +45,6 @@ media_player: ## Example (using mqtt controller): ```yaml -smartir: - media_player: - platform: smartir name: Living room TV @@ -64,8 +56,6 @@ media_player: ## Example (using LOOKin controller): ```yaml -smartir: - media_player: - platform: smartir name: Living room TV @@ -98,8 +88,6 @@ remote_transmitter: ``` HA configuration.yaml: ```yaml -smartir: - media_player: - platform: smartir name: Living room TV diff --git a/docs/README.md b/docs/README.md index 2f7ae52a..d8f96ef8 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,7 +1,8 @@ [![](https://img.shields.io/github/v/release/litinoveweedle/SmartIR.svg?style=flat-square)](https://github.com/litinoveweedle/SmartIR/releases/latest) [![](https://img.shields.io/badge/HACS-Custom-orange.svg?style=flat-square)](https://github.com/custom-components/hacs) ## Overview -SmartIR is a custom integration for controlling **climate devices**, **media players** and **fans** via infrared controllers.f3WcaCm^9{l->y(e?+9bKCL_4+q{cwW_cmm>ybK4Rdq%y=TJfQzuxZF?4$j@*+$} zos5~9*Zy~zJd!5_wi!Z&5YuohRCn632%fNKhZ~~HdV&-2X>Gg-*E58dB9m5x5?OSH zP%XPA&+#;eN1sI#jqU|osUT=1)+%TNpY-koL;ACb|Fv4Bxa`zE(373@r%BgZXg z7yvW4f&?e9&`o;e#So4LnNQyPxB;9lC-^w?=v!Uni7iYd*uZ1SO&In2xt3{05?!D( zbz{SA=2 cYKdiSFfIIj?0$-ZcGtUY$9cAr1RUe#UAkm)n1=EgC zT*9ol>iRie*o(9_t8KJA0nYjMP2QxHPL4fZDvN{cK9-vAjF5f}7?gUm%qmg~{dzl` z=t$*6Ha(}f0`URfv!vF@W;uZK`IwGwb+4qwMxO*hhV3C^w!QmHMoxNNIv?gPwkJeZ z7?%U!gNN=iK&*N;b^9Y{mNcC&3;1~DFeF0wB+AsuMcbj&R@p3}k6!CEKI$z5|5B&^ zc#nUlQ1<#;GfG_~dq>3m@_SN?KzQ7)`t}GJ{WVQ-8gmvchlgzr0nppP9RSSPH?4^x zL9MR3u+0N3_t4at6U+p!HvK)f$w xo1suoFA@_}>>}1OA oYQQe (0O+D&OAW_u}`TXtcSr6FIyzg4Ysowx#GAdU8>lWF_ z0EpUx#J&m|6V+c^wi^;+d0}s2;qmykf@O1B^t3fdmHmKuJ00KajM6rO!=KA FDN1vX}nQ#YIVDY>V?6V{Vt*>gQlhAA+JqJPLp4M!I6;HiU)Tvh9I&`j`{X_ z M}dJ z+v$gwokpE50ijv9i$ THVz+-=v zU)cU{H20<^@odzFi=xpSy?y(%$5Z{5CqM>skZ=BKE5OR9v2~@t>bNYQbJomUO`De~ z!s7a*{QttT7dL0Fwj;V}O7$QKYs|@d@T&IiII=!wN^`xo?n4y^C>6aKY7WlCdB3sL z1vvsipdGq0nE>Mf@?iUV+`Qp~)bK9mR?gO0|IS_Yx-8Tj9u7dwoKG)SJF3pP*D)Vv zOjl(Y+CsMhEQBEOv&5bzd&MaKKmJ$fBblZbTW8~hCZ@Vl;-2D;m8m<|EmoE&L_ s%?VMK~LAOLDNL1(^kht!i@w6)%$`BbB>g*n9XLzO^O zRvhj)G5tpe*WN|0$oI#n3ws;=mMvnZsZ~1taqS$5#@PL>q_tW;L2DOX8#f j2{9BOQc$>J6;R(0x(i>*II~e+(V7Zk53ag*T zS9pOOQF>YHD#n9PY3EP7 ;3^HwRu{^P@0u z0SP0Z-rr59q_62CC7<^yKQF3u@IP9;JDfwd^`~} 5!szRIhcUnHu=mI*}0m^wo`i^F{aog1BBf8|{> zx2dfh4uAU%2?QqET0DOi&_7+Y#L8XjXwAky8Ztnc_}w 5yTR9dA-05F*@=e&dUtVNe(^=Asi*1dk?dfS9N__Al27=Qm;O2m3e^9y9IpUs9nz zyQ4NfCJE8yXD%%Ku-f*a{(WMZ23htyEsy{Hz9cF+|ND=-(qSAfQe>0z#PZv<-6? 9 pvcX7-`TkFCsj?Sa~b=_091sj-Ke?QX+65=6D5{ekUbN5+U; zKdk}VoV~a1QPSA?>3qLccgT7q+ 4QPx zj5(^q_oN}852K`6qjw{T4mIW-IT$ENOzxWYd;d $CFV3gk5iZlKKsD-j=Oy{#px# &y^pdRTZmb` z_hlNnE~6AH5LEBtt`Y2;Zr^KfXZ`%cPl*^e%j2JIa&ZHz^&Kc}kUatSch&9i?Nab= zIpwP1jOWr$7|V~`zLcVgX6~6~g>!QK!u>Tav$awN{|26e7_(}8>cfM~;jZ@S 0gIJ|6U`F4iff*|c!!y-ZiQ$Jso9Gk3jczFr1Yh8E- zP*b_|%|<4* g3!K3fU+f;o!&nn?o9Hj^!xwXC9{ASui OUFH u0A^N5!*{Z6KtE`esj0|7DOw;B_-@=Ax7 z+&Cd$6^v6%P4z0e(eg^ 6gy-3}YIS-RF62$2 zBKaYg0YNKqQ~I$!h0skbEdt~ST6PE6v80SVq)moUOagul)VxklW3h#+Ku#=doc8$Y z^Oj2!dj}{$ik7>l{s4#YTY= Geb>)V&3!F5t=94JLh1-HqPQi=WG`=Eqjg0-PtTi?Kg(`#`MT7#(p4Q}HsUm( zb#_62CMU1EcDyh(>Gdgi8%^o-4NDG&1aOehmIQEJT)fu}L-sa$)EgNgW;I{J#%z{# znN?xWV*^blhx6Q&d;{nrS+;QT_kz|`*VhMa-)_zHWA2h=9t| )G8DT+dsF#OE;J<26;8)FqW^rqD2oHjI>5~MtnGG7D{i+ z(2ZFt7=`vSG^5nxPKJtsSu|MQqqzyPV*U!nc%xw=sfNCl2WXL6l^VH%;`nixv7?R( zW*Zi6h)5X|{!8|tEcPLH8U*>Ow>FKagH#o=)qC^vZOm9`ZbAkSRYMP=_aMtwyeW<8 zirB%gNx5{g4RMNtIs;oZj3l)r9xGUb%pkuXic$#3Wy158u9hG#)d|6d8R1FO$nAnb zm+{|--Kv8WbW8vkh2~13TeKTa=$M{V8nMFRCEG?+ev#BkYAK)nH9V1Bp!`=uM)3ae ztZC2YeRM)o6yXfww>lN!Vm0O|SOK0|))FF*x{o}KH`3*s9eFdFE|( -k zoiy `r@S|F1$eLIZ6WaDK>AKWqs7v*55icc$_ph3bD2-$Y<4pb!>f*Zyshhb> zmF5@8j7=xr=}C$$lF$Fq@?7z;!g(0a*t5~P9VXV`2p7jL=kBZ5yjFiNN+KWWwyWvG z!z4WrZn&l>-UmFMG;Jz5Gb4sY&AqTC8shSrR$ o~y}^v8p}q M%eQke )@f?6jz@d*&y;fT-$O**YC=T`33xubw;mr{W=i&4@OEg+ z81-R!8gv|5Licm^hn3P~#&`scT;sx%67b!73GVdx1^x0rY2g%r+kTTBlF?P+#pDf{ z%(^R+ZR7;V)cyC5SDZc`OmiUQZQe{M%hQDn0U9MF8J5(vmF^g9-+-#i^AOGvjjDBt zS)are&!78cgrw)CW zlkpv{{xQTYX z9e=FR`a8#}sA7lowJ1xJ40RPU4#7bcCso?a+ (t!3(y305^ zs@5)6WN9S&`(16N>>_U1 Bz>r+^CAib# zfaDS}>o~=SFg!YDMI_&1S3${o@uh5~NG+0ma- 26y%e4Oz@diB z4R1NLhBA$;v%1>- _eaOot3`kObZaLqP9`-7SBCY9hq|Cl*fu>^G(@O CQn($rrEMf{r=K{w2N|c3Hb2d)-OA;X=K61(^%i>H&&s_ zZIbSl^GdjWX^r8y1VzK;W!ay{{FBE`E(U9IOl!z2GCdEs ?H;%-}N%gOZr^{TKOm%UnSkvr}@-QhvEj3bnzW30~)Cnq_%q6kk+PqI42j z8WL*`DblXh;X3`DFvZ!=?z~D6dZ4eFudO@;dNFvI#c5CXf9`tz+XDWdhf|92g8FbV zsoot}R2;DH(jEvudDvhi+(LiyDC4L^#Iv-^7}$ex_YL}Y&PVn15WAHIcTUIn0QXTj irhm515=QKgkI@O+%f*dCdcdP0kg>iQyzT}v`u_n}q39d{ diff --git a/docs/assets/smartir_fan.png b/docs/assets/smartir_fan.png deleted file mode 100644 index 1d088414ed11d6943072a8f16495e79aee17ab00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6181 zcmc(DXH-*7*LEn hzL@oNecoZ zH538q;igL>AXVyn@LA9Lethfw{bsG?oXpIg*|YaG*WP>Lj9}V~blh|x5QtG%NAn>F zM3xJ@SJ6-bzXD(F;J|~@PhHoP2Ka>0IAMVQwB9-8`H@5U4a%Mp{Nm{EvPqFoO4Dgo&36D$w578FbId%fVUjzMHRepqDSw zPf)`|eyzDW5d^yWR9Ew!X;2PnHrQL(+`fBz^9Uzmx9Q8S9hp{j&93uPx;WyVEXjz# z=~!SuZL(bHt8VPW-VU`BycD 0iVCJ*Zd{6BnZ3ms{){8@_OZpKv{1g?B$%!s^kq-@&=|LoA~KpWUcmUp5%8psLl%Rn0ncXp)@t2z_KaWp %*o(5x7Y|NI5FHJ znw6ltzZ2^saW;(;MT>Xfm_sXwAY)+QQom12s?5TU!8pZZUfDH56q^>`r7*iY3@3uC zPdsU(0R_o;C#EmG23=L854yRv#HRH<@*oNw;V1CkoD=BsMfejPr{WBe3K0DC_wy zaYU*yQJmMEja5XjDTBdqV1*KLX-XUFoD@R3N~EQoJi|%h=?D1SMK49CPm3&i2c1D7 z8rXQEkL$80Nbj{cC|&5rAP88UVvaV4KIg~62z6u|*_<*%ABi~ilMd)Cd=qXTh`^K0 z(KNUA6;Y!VV$tV~XA?K)Dy&IDMSpf4UYNlMC7nVFXkr;9jSm_V-axj_Td`IiZ--b} z*Hg 52d#J1u4xS_fQaqld zYg(F2kx#|{stPlWegP6-ra1q6`{z=_92|YX(k8xZjYEFHotyH1WY;bb0*{Cm>Fr&@ z Cnm39`UZnAdONols#ugcIIkM*|(LZZ}3DUjNl8%j-?@248IO z%X7v4JY_t&4T#u5Ib0 tW|#8(#gMjS%akKpnUV;a99F8cjGA |6_&>c3NO55f|0k3DAo* z-#_KJjW4*iYl}!#9$6<9siiy24Zt2Viiq!o3;YcDrG>%Z9$?Ni$d)vYD0~#qf2K&v zp$nVxX;JGvv{ImOb&PqS-9lNT?r;Bngq5{N5MMh%6!E+Y@&fUXFN{P`oB>`Ja1Kh^ ziDYI~`||4 i3_I)(1%ZX)>{%3R1o`e{gtcdJw|6;INQ#gBc-i}(>Hq! z{`%q+;S8)dL17MR8(DcZErSm}lhv5?!<}JG6e#c;&dyI%M_F09)a?loEV5rnZBvNf zL3RMl%$;tWCE?5+lht?{ZfOLUzAF*}zq-eIyslVrz+#Y4GMn|}fb64QQ*oBH@UCp< zW>1YY!^yHKd+qlYk^exziGYS|MT~Dw_#!rwuv>8(xu2=u#h}mQUOTt;q;vVJ8udUE zt^NxbC?PP?i)_C0gWyvhZ;e75`W;VNrHVj#h~Y_do{G$K`a9WgninDB0y$UwLX;U! z8t(qo`LFDA+-7&qXJ$o8MC_!-YFV(yzW`R~(Jvf1xRQ>pZ2@L$OMBBSO2%ksxb(d~ zausl@Yu1sQAR41{J~O>?xQ*?)Gfy@{!;3;}S|@K5O$LgZaULp=yOR6tp!g}mdVN|N z?mjV}3ycix&IzG&Nr;-cAku2LdM(s mpmsK*xLj~Acl992gmaTXWMT@-MuH(`N59GUx5&XJ|AFn ze#(Z$@U{vBd5&EB&aEQ|_+fb14LDXWf(6fS5fFq&xYQ;#KQ)nCb9w&VM%{ZW=!veJ z&$K~4oQG{X7K46h>1w5`XHbTd`s-pEf2~Wa;G=S-=4rc^zt}IUe)YWA(F;zwBGVLQ z<^Z#0qY6jpKTfr73NU_edNtBq8#aq}lY6SB%k`HyLSDM?CohIv!FAyhlo560IcYxE z@T+zr{&_4)weeg>Cwo!L#E!& p&hU8jV7@K$V^0d1jj>}$1poy63o7<^SGJfhX;JlAMOh48qNV?~J3L)Rh zW0OoPn{1}r+r}=;shR+!&nCfeB6pm)6xRPN*SHCdB-usXTBgFa0bmewK@x?XXXsC? z`%7y^sO&HF`Nly@5y5om(Lb1LY}oBCojbnVDLtI(@@924()NC`D%%ws)r)B4UI5ur zi(B_hKyEjW__S0Meg!Yjs)t#$ObvGFnlfxfV;6z6A;sQR!9LU^dvp^Bi@UG2TGdv5 zXh5!*rG9s1JY2<^xGGm (MYRpRhuYH_^Bj|jnHKP%A}<8VMm!tCwbU+PNkmj3OJ z7Xg{#*iGgt+Sq9P@svf8)9;Cd7N7h@X2ei@K;|P3vz=K-KP`i7ZBpG~^?RSQ6n>0w z6 H$Fn{71%r^6)X%YQSJij5!5 zyaRE<2Y!mFxJuFsy}YWZlP!+oxA #aSn4pfz@jPLEK5Is#vKE>)Wb{1VXmDB85srf!nyXL;`=;RG&+Fa#q(S*Es zuAcPo1z1NzLtjVE!!q1~1B|4*eZ)MqULZUFZo;Mh^JTExkBFKbxb+KOV&{2;<=i`S zbpBUfLs@eXWp{4DfjPzcue_lT ;k(wsDiTt2X_=D7!DW-EcFf z%Z&o^DBjApj_VonKWj62ZAzx=Sa<4>*MH3^DNj^ENS_txDjbW;#bXv$Z@}?Vr}^ux zpSbs?#&Bb$UWm4H8^RI)FSXtk`%xa@)7I}T>4 2h_Cu8xvKkf0L>cz#CZq zjd=S*rFe$x(Xeo+bfhS_+JtSq#YMY^A!`{hlJyEL1|#>+rh -zvOVDLqpIoTsw4NV$h>edRW?OK+nvvhNmBBIaC6Dn?}DP}hNOkd z)9VGPB`FV!l&|=m+?`n~1>WwR`2FKMxHq-l>vm?N2~}q3_iuCoPQc!7OzzjULnp3= zw*%{A!`nTX8v67+W>IUt%-9xxHf0J2>Fo&1(IP$n55^zMZ!!O{9~O{&@1TP4n=O0i zHuXXgas3bfZ!kza*dX)Uq)x0~6S_~kTQq}NQc^;sncDYpsTk_WOJPOYw`keIrlV}s z3LLIc@~OA8EoJpuk5{7Z>vcpotl*)@snLd*{KtQJ{M~w?W0zBH5`U 4DGRUO%8e*P142+? zzP M68e4 z_)X7;)6)krPAa`RY2uT9^j>?Ue~gPS-{5ocqTbTR%F}`2e}q0rJHeA_bJkQ%hEqL$ z=}IEk`W^W1uMeQCF )Wrz(nQ;nrE%gH4?*p_*OV=>L z9>lJNYTshHPs|q|VD$uA#j(c7P{6w-0O0y-8%31^Ma?tSON>AARcUBa`#3L`TluZ) zpy=myGOR{Id;gdryWw2B4>QIB@|gEURem`=>8U(xKP0P@Es8@#zffD+UY$)arlsJ^ld zQ?sMY+)zm{^!BSy_pL(zF$1q!O;}~?1sPV{dTHm%)l+)xDI5!pANdtJZlecH+$ReK zG#94JUGv}P8on&jyg#j_X08l?A$oAIIzLxIr(pJg7mCFTYfb5K(hQ*KNa3Yf_D`R= z?PPf#EZr{{wH ^81%>BBV0f8n>0p(=b (8j09^G zo0h_ARPzQ%_45ftK{~#ag__*)U(>Mp1mTN_k@Dpt1igiDx75|#GS4AB%5*S$#*yN2 zzo4e(1CT3Z+R#@OUS(GXzskC(E#5-@URNXnaZr=4@UOfRV=e_Ynk#npW>0-`?&d?7 zjci%dsk_Qp;i%F#*ClTEbLIUGcBOQ=1k3B8KcZ1KEcI@gsCloHh Z z34l?k43;c1%Dr(?y<$*PfI#_UB9Jkiq1=<33O&*R+T43quLS!Z#H+qH1E^9@pbR=R zKHfh#7flqB0)tiHvZ!5y|EJY|cJ==$`@b|Zc&q^#k}5z-PGuX{fZB|4EMP2PxQ+JM zhpCeCb$vAq41P6(i%s?zFaViEj{55LMI~SuGSLitO{PILS~Uv3pSk2^Rf03UfvoHn zOMxR?*7;b5jOeNKl+&V0AOWlDeVNn_%>2A)XsBudn&eiRXs7Oym^AD1AXcV4v(e#+ zC>VTdhSGOs;-r=$dJo)&OuU=mNO<=WNHR+*hpO;yU#D|gsYZ{CCo(bL gS1$ovU3G_!^yYqxJiK!w9`ns^{WzX7K;0Gj?XhPP<{Q(aPN?GO z2WE7ux*rmdsc4N!<^w;CJN0G9uCH#y0RkHbvbmY#_~|5rnuS~BAKqOT23J4blSC0& z)=&5QI)>XRiu7t5`yXWP-J{yU%8hGkI`RB;)pspk-VqC`)RJ{p%er^Pfr^{gNE}F& zLZ`=GsFPUM%ZM2hcI1z<_R 8H4#ouz Tf*h=f V_+GB-K3(W>@5+ ztFoVDKK@|D0jSy>aZnNO6`nn--OM2x2v8rXRG7_Pmbm6kS6svv7{+cv`aR>uI{M`@ zYYPAF%t#zDZFKZaUW#r}b{;K|s=FOq`Dj!ZE)%^ZJ7Ty#)aUhL#|J$7BVz-c2kf7D zO06FNINJ_+vffEdlTEEnyF!~&gvD_=stz$ZstZ-*$iQJ3kK7-QO(bm$7si|NG1ag` zcJ&HmL9Xa}2yiz!fz&VY|Cj^Wps7s%2c+^*)Hj^DxTuO}G%E`e+UoET{%PVhyuyvd zo&7{ q{V z-H8jvn!B-{VF*As+{TMswtcJ}g