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 -

+# 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 Media Player -

+# 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 -

+# 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.
+SmartIR is a custom integration for controlling **climate devices**, **media players** and **fans** via infrared controllers. + SmartIR currently supports the following controllers: * [Broadlink](https://www.home-assistant.io/integrations/broadlink/) * [Xiaomi IR Remote (ChuangmiIr)](https://www.home-assistant.io/integrations/remote.xiaomi_miio/) @@ -9,17 +10,21 @@ SmartIR currently supports the following controllers: * [ESPHome User-defined service for remote transmitter](https://esphome.io/components/api.html#user-defined-services) * [MQTT Publish service](https://www.home-assistant.io/docs/mqtt/service/) -More than 120 climate devices are currently supported out-of-the-box, mainly for the Broadlink controller, thanks to our awesome community.

-Don't forget to **star** the repository if you had fun!

+More than 120 climate devices are currently supported out-of-the-box, mainly for the Broadlink controller, thanks to our awesome community. + +Don't forget to **star** the repository if you had fun! ## Disclaimer ## This is a fork of the original repository smartHomeHub/SmartIR which seems to be unmaintained at the time with many pull requests pending. As some of those were useful to my usage I decided to fork and merge the work of the corresponding authors to allow for simple usage of the integration through HACS. Therefore all the corresponding rights belong to the original authors. I also lately started to fix some additional users issues, implementing HomeAssistant future compatibility changes and adding some functionality, trying to keep compatibility but please note, that there may be some **breaking changes** from the original version. ## Installation +### *HACS* +If you want HACS to handle installation and updates, add SmartIR url `https://github.com/litinoveweedle/SmartIR` as a [custom repository](https://hacs.xyz/docs/faq/custom_repositories/) in the HACS. This is preffered instalation method as it would allow for automatic updates. + ### *Manual* -Place the `custom_components` folder in your configuration directory (or add its contents to an existing `custom_components` folder). -It should look similar to this: +Download latest smartir.zip file and place it's content in the `custom_components` folder in your HomeAssistant configuration `custom_component/smartir` directory. +The resulting directory structure should look similar to this: ``` / |-- custom_components/ @@ -39,21 +44,27 @@ It should look similar to this: | |-- media_player/ | |-- 1000.json | |-- ..... +| |-- custom_codes/ +| |-- climate/ +| |-- 1000.json +| |-- ..... +| |-- fan/ +| |-- 1000.json +| |-- ..... +| |-- media_player/ +| |-- 1000.json +| |-- ..... ``` -### *HACS* -If you want HACS to handle installation and updates, add SmartIR as a [custom repository](https://hacs.xyz/docs/faq/custom_repositories/). In this case, it is recommended that you turn off automatic updates, as above. -

- +## Device Data - IR Codes +To properly function, specification of your controlled device data including IR codes shall exists either in `codes` or in `custom_codes` directory as a .JSON file. When installed both using HACS or manual method, `codes` directory is populated by device data files maintained by this project. If you would like to create your own device data file, place it in the `custom_codes` class `climate|fan|media_player` subdirectory, this directory is persistent and will be manitained accross HACS updates. **Please don't forget to create [PR](https://github.com/litinoveweedle/SmartIR/pulls) for this new device data file and I will try to include it in a new releases.** ## Platform setup instructions Click on the links below for instructions on how to configure each platform. * [Climate platform](/docs/CLIMATE.md) * [Media Player platform](/docs/MEDIA_PLAYER.md) * [Fan platform](/docs/FAN.md) -

## See also * [Discussion about SmartIR Climate (Home Assistant Community)](https://community.home-assistant.io/t/smartir-control-your-climate-tv-and-fan-devices-via-ir-rf-controllers/) -* [SmartIR Chat on Telegram](https://t.me/smartHomeHub) diff --git a/docs/assets/smartir_climate.png b/docs/assets/smartir_climate.png deleted file mode 100644 index 45554fe9ed80ea9dc4271fde23ab9f4fcb5cf279..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6799 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 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*LEnhzL@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`BycD0iVCJ*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=B&#sMfejPr{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*Hg52d#J1u4xS_fQaqld zYg(F2kx#|{stPlWegP6-ra1q6`{z=_92|YX(k8xZjYEFHotyH1WY;bb0*{Cm>Fr&@ zCnm39`UZnAdONols#ugcIIkM*|(LZZ}3DUjNl8%j-?@248IO z%X7v4JY_t&4T#u5Ib0tW|#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~`||4i3_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(smpmsK*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 z6H$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>42h_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`U4DGRUO%8e*P142+? zzPM68e4 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@gsCloHhZ 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(bLgS1$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<_R8H4#ouzTf*h=fV_+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}gN-tQ5+q!1cSTzikdnxN$jXjysF@tN&-uQR9 zq!16O3KkX05Z+O!rMuFYdlH}LcciRLz0{-~PtAmU2Z`}_IekLxhP8AK?Q>@J*zo7-8bRJLm4(f3;dfJ-x} zDg4#x=C7tR?Z8=et+xkxq)CED0-LHOo;x;`_XhjloBUmD5kXM9a#gTy+CzyOwLghR zWV3pV!mBE>(%V^CCnZeQbOJA`z=7X$Q+EMsmIMk+4BLI6I0r{x6bw4{7iq`Ci;L6$ c^X4-FGN^62saJhIaA6P9)q-hOsM|gJA0Q6VZ2$lO diff --git a/docs/assets/smartir_mediaplayer.png b/docs/assets/smartir_mediaplayer.png deleted file mode 100644 index 7ea2f926ad082f4440844f2a2a640d34aeebc41c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7756 zcmZvBcQ~8x7kBJZrB;bjnijPsY8P#7f*Pe}YuDbC*!{LvQ9D#nvsP?kM5FfJyGUzq zO6~DJ`d+{5djEKHT}htgy3hUG=W{;ibIyG~;V(3lZc#8(fIy&ID$4TOAP@lxxGujz z3VgD)zcB*7h~1y7=-vQcem5+`fZyaU$_DNr&`sLwH^K01z&Y^e9S?<99&&D0W*)ZA zPVBn2j#eNcm>>))2$kSHQ7ZsOuw0MOaklpGHgmHAJ+pK+w_;bcb+htzcC&Y9m(vkl zZLIhN0!*7YQuXuR0n`^4C~|NUS78gj6B20ezN#LW=IAgD4L8me%YmoD z)9>ozG6=31F^tD)vtDewAB1+Pe5O@O5&BvJ_81e*Lc4hTs^Y z4B~BaqN^d_2yw*!rs5)CBQ{M~s3Hp7 zf&B31Ovlf<+R`XUSZQLJ#nIk`Z$SdPs(7Pdn?+13>28wH?hZQhU9}c)vlPOPzv+aH zpjFU3HJ_FE76E=1_nnI9YHnRspY__F+ueA_D0qj^l&q1jh5I$(c<^5Us&5qzRyx<_ z_oFwkgc$HUiQQIc=#|WFp3ttKzG+$9qt&pmUUpz^qH}r|I+u$uIX032@bR9Ha;>}h zG|6q66eUl8GjHPof;rH6CsJ;QFyJxeIko=lLJuwtN^0(*9kpu*gX$6C4z)89@Y)$6 zYS2mx?yA~X)e{*K9j2_1C-V3gX6|lqAdz27Sj#1mi`s0s!Zox!!*8oIKBcVt$(E7% z(M*e$M zHvntq5tJz3%wPQ={RwD^;k6HtD7~}CoU48o(IeX}#krLP=gC65SB;-4#L-9Z@Qgu$ z(8bSWLcuGwJ(zhR3P}ir!M1AJCTO1Ep8hWFYvKT+cdwa_+4!>I(Hj@yyLX25KU^~J zrV8!KzG%k|U*oKsGi3Lj>G%j~b*qVBr0;MtB>C+2ZX_=B2QJVu&P@V+WQf-f;>y`< zVjKC*&C$uheQorxP@Z+7;g0a39c~;{e2#xbmK+ zAv5YbK~rf&vhqK4VcXKIKwu-tpAIxP4xYg9mhC;xAlbX5mnI55E0{UiR?D2rq=ebm zq^1Df+32wW%-2MUSoD_|b;VlYT8i`CKkgMp$lN&R+f_5e2j)JdaWyU_KiBVtxT(zG zdVnZv$J*y#)3c!SA()(H0&$NsW7XNJ<^w$K`wo0z9iW4x%vzf^2E;T7U7^Tv_UVVx`#L{}3~;h&c)pXHjs?`ju(=U?OhID=$R6&EKs zM-p^$q#?iulF{`bCd&$IdHcf95$?~&D<@_&kHgK|~sdAuQerMh|gWETZMnVj#Js>}}2MumQK z2;}3OTG1qABinW}-pOa3=&9V+C>>d8^VFM;;;Kh${8QimMd`^Ew~*<{`U*MD?(t(xNWjDAe+TIs^^G`IYng&8-+IL z?bILM2Dswpl?p_yjj}WFt_$7ndz^5)@iGm3@SXb*gB*~0HyQ!fa0Ms-7kniKF5Q2Q zKN4qV43MEb&**f!^)F*Aja#=EkV`i&_mDkU#`sQmL1zh;iH3WXs&9F%j!uMjM+~1U zrHQ+S03zmuZ*N5lni;AGrY|wKT+0HSeE=aIy-`BwOxT2IHEY1}-sJq_N3fjRzd_q@ z2-V4ujo*{ZhYD}UO`N0%?FQQYJV}M|LtsQdaP!2eI9Z}5(Zw<=b{FFvHU`Wk7gVPz zUW0I!WulHu*@&+nC=02LORCw|TzC&u1R&NLaPvNIYKhIe!QMdBD+p`fNm-Mx=jcnJ z#R@+p9`q+T_8>{-IrFYf9!O;utDmZ+faZzMKLYC9^J}^@2T5-yp>W0`$}F9iB8m@7>-l;%+ca5xbrD zudKxh?ILip&BZ@c4z`d>x%>4`eIwGJ2>J#v9nZAZl(rC;hX2Dzi|P3LhczcP`@M6Z zTwB;gaiG1a*P7QA&jd8`dO#VgUw-qpIiWomGzww>Yg&w;FrScS?us1PSaJ zlJmbgN^$s_0|Fa$KyaoB60Ba}H$d+*_1?@D)Z9EJ!k>5zH)HId+``78WRGnV)@n4caC9E*43MVD;77H-g*eqL2-5+2Ckgio z*-@MF7o|MEN?0%~B@T$smNqN}M8|)jzZOg(L*Qp)J|P9v47nHPX{Kcm3-m>M-vJpood-8vMaGk%_12e(0DpLXR zKzFu`(U^WUq9c@2R(UM6JJwqB{bu7MB{0>$Fhb4nvNwLlR&4k@O{bT*x_O-4T4Nuq zZzbVlW53XYGvRK~b4&Pj`#M{u4%D6+wy%jrF_*>MB)ST~UvM|18uZsLNG9ueS^3Ye z+_)YErYF68O>`Ha3eY4}dc_2%oFtC|6gL15e0T0V=~|+O{kyRV+u~cv)Qv8rQr{_L z_pSL1UGVpez4MC%M@^y%(h|9UUg!dKx#d&O!;7cUJ$|Ie&$|zoKCJ{Yzhf`o@@*Gv zL-7po-JqdSsr`*H4eW)^nBf__3U>vf(N_D?K;t&&)f{!b8cB5Rtu)n5-{fBfoI(xFQ`+q;-k+g;mFKB zFfE>;Hg$Nwvhw<+(b07OxZB)jk*C^6HJwvam8{0GFDBwlFzF1h_yef_BzO^eSD}SBL0DdrSG6i z`VqU+h>NoeTs$oODliBU6k`E1omV*3T`zwe`&8cY5X(qsd9Rf?+CFH$&-KzK_{*lq zy=IRI=})!_R<2~${-{u)B06I^U+v*?dJmXg)wDEzGfd8DW@>sh$tAvZ;2yYb_L}=Y_=f1af2HaNfha7cj=Hhf9vb>2-7WDFvpTb$ z-Yifo!m6H%zo=YvqN);~Fh+!E_-GK+<~h8!ubSqSGP>I^ zL@LF9D(%VO(5&E78aK`)v*41kY2O(M+DzK(ZiT!UESOV)Q|!%7)>P!_uXv^$kf8q9 z#hJz?-|rD?=S%%0u<$K&_~DiA29;9fG3RX3eyUw~S9x}3<*QQ;EN(itK2xV#tX-x1 zZNu!JrWeze@WCN5Gn(rX7R!9Cy~>W)WX}<09x3SX%^r*X9wb>3PQ3pncgXHY4b$&N zK5@H?r{}5`3wU69%PPf|Lh`Rmo=K1dE&rKOb=gNm=kLxxS6eBHMgCSp^JCo19^+6Q z)t4z$|FQHrmG!UAYfVeACM;p#j4Bx+C2O6qTf9Lb8m55j`kVAa2ED~kO48KyqjfnNBC-A-E{UIPu5HNGgeKdl|6>Gs9U$lbva5^kDC%KeYEtb;#(Y0G2|*Iu2-F^ zT=ptSZN14z;1{ze_^{VdO~sOe-s4V>!5!zgA7wUFDSc3tSPS)M`G)pLutWA?kJ(v* zaHT`aP~G6;eeLV9JeG7yqWLD#5|!A>>Y=m)i0ChyX>B?POyNUF^yRZixIQ4mP%L`5 zB+feA6p;PZ1lRj1Y^hjIm<`ZEFn3ruY#00AF<=Lp`~4O1rEMvV0SNfI{QM8vRBX+w zLuJi?6#aN#*t5t^=yi0wylX`3<4s%pO?3xpVtuk83vBNmOSgfey!bvI7VpQgl%`!8~6-@8fA#G`ObXT18&T~bs)+mSg9iNSJhy9sG8)-B4Lw zZe*rqJ>48^Fx8Oc*{UFKS+4L*>011??*bxAQxFC0k-|n5f!&Y1-F1iX|64bOWSm;| zn5kpcG|DzvPJTH)M1w$-qvJ<;L5%NH?|KfJSfAX?cpYHK1EaVf7Hy={>iCB@kIy06 zRQ&p=_v)M81me<5S#UWvagxn3)C(>7XzFT@KWhYxjQql$fEgLf*+f5mBn0BF@r)~5 zv1pbg=~eIEr=|;^GeF@2TU{ZL2i&WcgMhD4d!J&#RbQqe+`UM!i$adPyL6s~jgFR_ zxBkSXF{YgIuFC*nN%2jm@Gwf@T7J}|Lt#@1Q&GJpoz5DX|84G!+^ii$JFbpWQWSpx zttt$uCk!eE_hOGhZWz>gO=?v7Yq?)topzO zVGxII5iX9stwtcX1%lK7z>64WZOA7{uX&LA@~4GfTe`o=&SID{7|`J$3H!ClBqe&6 z!-7LptO)$bB=HFO(*KPSfs%Z;sF($?ke}e0(ULMFM{+t30l{fdy`zdiIkH(#o=23C zpH-^qHnn&%@8zAQ=q~7Z!R|d_uJO1hC9W(q1wVRgJsfarT%z7Qjq|X)-&l;YV90dA zFK@yXM*hB-u+jYSBn^kc{X+mnu9iJ5oCJ8r�|A^UJZ%=G4=M@D$|N>v`a_{3!Ka z`o(1ok)y(72XR`DmpcYXppv||kyG8_SWCnQk_`>|*wdGD!@!Q04Ce#S^=fz8{v^TG zEOIGkt61pYw=rsJxLGpJk{ zkNt&tZ@Xj(9tlggcjC4C@_Shiu5a$#-9{5jqGh1QmGpes3$8|{_^=O7$|5zyo?35g zThTZ9s{a&o*4pi}-#^}N{nDyXo3BkBY4tobOxd8&Va;P}fML@z$Sl#r5EpLc-J~nG zG{<4V+d-PEs=YJXe2GRJmJ08)h~73eNFZl{L>9(nT69okQ4S6*29NGh8%;S(FJuSN zz5FDnGuwJc%pvZE@@_rZ4M$AY(-(+gjapo@2kRq1rUE0PI zhKaN#8Y@3?L6fpH@OC4TQrFx2S!PK4&3Fpls{TcFSU%HPQK~iiMBYNQR$*s;66DG&r#;(R z0pB4KQ=EU{xYUs5=66mqGNQE$ltz7_#MMbXjbeDg0IihM)V3_qf8l2$p{V2!7yh2m zk{{}b3>~DZ_$A^M={CoZdD+qTAoA@LQ&7ntAM>NtH-r=qIU^S@iiPK#Q<{Zmqfcm| z6P33WmQ@O#b?C9%(0)0Jn=f=Mx?kAptl<$a&+t1of?bdNL+c!Gxo~+F*m-YZfnWu; z{KYZHHqaW}6W%TM`0n%Hrh9rumf%-_rty*_TZ9oFNRTEToFsr~FR*O9Mh9~`%Iy?h z!z796pOHBwi86zPQ_$Ij(rR{lwid!*OvFA z0CyrH%l;dkRKTqf^9Y__v+_PH(KR_)?%B@saz+y2PSvBfGvO4cZmJ~MADJOPAIMQ; zCLoHTGI$U0xqxK(Rvjl5{Pan<18so;747RApu_BeZ+IJ2RrH#uQG`0RxAN7W`w$Tx zj@3zln7f;=<=`LgMRCi&pVlIA4?p0@LmVRI=ATJ;1r_E-`EvWs*I>9u{)zTtQ|dVZ*zu#Omx^%O}R~8Rv1!M1_Se>H#iHPs4oL+q=_sgEH?J&1J~8hn5#=K6v3%85ZSgqUs^y zX+9BSD0b1h_66yhSv;#kC$0J0Ta<6|XiFr^z(Nb%u-XKGf_VoXh#ijNg^Y-34Tisr zcvG(vU1bhCf4^hi)R)dS^tUP$#hLbJ%lE^iS_W_mS~Z(UDQ-f_pH?(0CU?MOsl_y| z8dmSr-9elz}3+t2Ly_u>UvXU$WmwpQ5iMW1| zmic>+LsnB4{Xor+tNn{pD{)3?oQ%8BgbnM4so&o4Y z7*B*&;@Lgx=`F*}Mk{z*WqW1=SK)uPcS{bf@T7*&gyc-WdOjZ)=h44T@-MqB5_WNEK54ce@q z;i`I1xo2PZu%r`1MYC(eSTw7F&gEzfArw!R>Ny{%*Jcn_-%*8QcRUbDVE2*RUu<8k z-nwdkL+~W(S2!PLSf7gZ{;73ZJ@YEzhMBd8XTH%V579TqxJDPBhYg+|_mhQ83X&6D zbmZ-9*II`wHv4)I^qyf>^66bpB1TO{+~cS_Yv%24k3Vuj#%eui!`Y=?&O4j7a=y$F z_#)(3BXyv`c|*MXu@Z9&9ZhEXcJ)0u+Ghe7^gqwE+hBn)-Qmd!)bUMuQa%Opi{jt1 z5sqD#xcs@0_z2D&4v?<>nT@#hrT!X}zJ$p@5!J_k%qk21pe$|UpQf{l}l!G9qs zbw$=j5;hX`{p#uV#TNBrk3~%7qk$bO&{n67*)9xWjE1J{)Y}ESxga;;&+<9TDe7E! zvq+1O3WE_zrJ?m>@|MI=Yoj)(t`5~gFN(^yhECHKg}|&RBpD(~;@xdEv_XHnXgoG~%4%UPJ+QD&2d%+^Fn``FLhC=c#vITz zvBosxE2W4M2s3cR(%Z8i-kHF?s+(^gi0