From 44ca0897d77a0a0f181c46b06d6bd62c5edb86c2 Mon Sep 17 00:00:00 2001 From: zhongjin Date: Wed, 16 Jan 2019 11:42:54 +0800 Subject: [PATCH] Initial commit --- .gitignore | 8 + .npmignore | 11 + .travis.yml | 26 + LICENSE | 22 + README.md | 149 ++++++ admin/icons/86plug.png | Bin 0 -> 16627 bytes admin/icons/86sw1.png | Bin 0 -> 6304 bytes admin/icons/86sw2.png | Bin 0 -> 6855 bytes admin/icons/battery_p.png | Bin 0 -> 4208 bytes admin/icons/battery_v.png | Bin 0 -> 3970 bytes admin/icons/ctrl_86plug_aq1.png | Bin 0 -> 21276 bytes admin/icons/ctrl_ln1.png | Bin 0 -> 11291 bytes admin/icons/ctrl_ln2.png | Bin 0 -> 15911 bytes admin/icons/ctrl_neutral1.png | Bin 0 -> 11968 bytes admin/icons/ctrl_neutral2.png | Bin 0 -> 16950 bytes admin/icons/cube.png | Bin 0 -> 5527 bytes admin/icons/curtain.png | Bin 0 -> 22803 bytes admin/icons/gateway.png | Bin 0 -> 10995 bytes admin/icons/lock_aq1.png | Bin 0 -> 14895 bytes admin/icons/lock_v1.png | Bin 0 -> 21736 bytes admin/icons/magnet.png | Bin 0 -> 5536 bytes admin/icons/motion.png | Bin 0 -> 6908 bytes admin/icons/natgas.png | Bin 0 -> 24099 bytes admin/icons/plug.png | Bin 0 -> 6495 bytes admin/icons/remote_b1acn01.png | Bin 0 -> 5005 bytes admin/icons/sensor_cube_aqgl01.png | Bin 0 -> 14765 bytes admin/icons/sensor_ht.png | Bin 0 -> 5351 bytes admin/icons/sensor_magnet_aq2.png | Bin 0 -> 2209 bytes admin/icons/sensor_motion_aq2.png | Bin 0 -> 6035 bytes admin/icons/sensor_switch_aq2.png | Bin 0 -> 10298 bytes admin/icons/sensor_switch_aq3.png | Bin 0 -> 10298 bytes admin/icons/sensor_wleak_aq1.png | Bin 0 -> 13555 bytes admin/icons/smoke.png | Bin 0 -> 24099 bytes admin/icons/switch.png | Bin 0 -> 10298 bytes admin/icons/vibration.png | Bin 0 -> 8233 bytes admin/icons/weather_v1.png | Bin 0 -> 9096 bytes admin/index.html | 163 +++++++ admin/index_m.html | 214 +++++++++ admin/mihome.png | Bin 0 -> 7237 bytes admin/words.js | 32 ++ appveyor.yml | 25 + doc/de/README.md | 125 +++++ doc/de/media/Adapter.png | Bin 0 -> 44060 bytes doc/de/media/Adapterconfig1.PNG | Bin 0 -> 21568 bytes doc/de/media/Adapterconfig2.PNG | Bin 0 -> 9089 bytes doc/de/media/Instanz.PNG | Bin 0 -> 3592 bytes doc/de/media/Objekte.PNG | Bin 0 -> 29913 bytes doc/de/media/mihome.png | Bin 0 -> 7237 bytes doc/en/Readme.md | 114 +++++ doc/en/media/Adapter.png | Bin 0 -> 44060 bytes doc/en/media/Adapterconfig1.PNG | Bin 0 -> 21568 bytes doc/en/media/Adapterconfig2.PNG | Bin 0 -> 9089 bytes doc/en/media/Instanz.PNG | Bin 0 -> 3592 bytes doc/en/media/Objekte.PNG | Bin 0 -> 29913 bytes doc/en/media/mihome.png | Bin 0 -> 7237 bytes gulpfile.js | 398 ++++++++++++++++ img/mihome-settings.png | Bin 0 -> 33748 bytes io-package.json | 61 +++ lib/Hub.js | 183 ++++++++ lib/Sensors/Alarm.js | 81 ++++ lib/Sensors/Button.js | 71 +++ lib/Sensors/Cube.js | 97 ++++ lib/Sensors/Curtain.js | 90 ++++ lib/Sensors/DoorSensor.js | 54 +++ lib/Sensors/Gateway.js | 242 ++++++++++ lib/Sensors/Lock.js | 78 +++ lib/Sensors/MotionSensor.js | 70 +++ lib/Sensors/Plug.js | 83 ++++ lib/Sensors/THSensor.js | 89 ++++ lib/Sensors/VibrationSensor.js | 84 ++++ lib/Sensors/WallButtons.js | 89 ++++ lib/Sensors/WallWiredSwitch.js | 70 +++ lib/Sensors/WaterSensor.js | 57 +++ lib/devices.js | 370 +++++++++++++++ lib/package.json | 14 + lib/utils.js | 83 ++++ main.js | 315 +++++++++++++ package.json | 28 ++ test/lib/gateway.js | 69 +++ test/lib/setup.js | 729 +++++++++++++++++++++++++++++ test/testAdapter.js | 324 +++++++++++++ test/testPackageFiles.js | 91 ++++ 82 files changed, 4809 insertions(+) create mode 100644 .gitignore create mode 100644 .npmignore create mode 100644 .travis.yml create mode 100644 LICENSE create mode 100644 README.md create mode 100644 admin/icons/86plug.png create mode 100644 admin/icons/86sw1.png create mode 100644 admin/icons/86sw2.png create mode 100644 admin/icons/battery_p.png create mode 100644 admin/icons/battery_v.png create mode 100644 admin/icons/ctrl_86plug_aq1.png create mode 100644 admin/icons/ctrl_ln1.png create mode 100644 admin/icons/ctrl_ln2.png create mode 100644 admin/icons/ctrl_neutral1.png create mode 100644 admin/icons/ctrl_neutral2.png create mode 100644 admin/icons/cube.png create mode 100644 admin/icons/curtain.png create mode 100644 admin/icons/gateway.png create mode 100644 admin/icons/lock_aq1.png create mode 100644 admin/icons/lock_v1.png create mode 100644 admin/icons/magnet.png create mode 100644 admin/icons/motion.png create mode 100644 admin/icons/natgas.png create mode 100644 admin/icons/plug.png create mode 100644 admin/icons/remote_b1acn01.png create mode 100644 admin/icons/sensor_cube_aqgl01.png create mode 100644 admin/icons/sensor_ht.png create mode 100644 admin/icons/sensor_magnet_aq2.png create mode 100644 admin/icons/sensor_motion_aq2.png create mode 100644 admin/icons/sensor_switch_aq2.png create mode 100644 admin/icons/sensor_switch_aq3.png create mode 100644 admin/icons/sensor_wleak_aq1.png create mode 100644 admin/icons/smoke.png create mode 100644 admin/icons/switch.png create mode 100644 admin/icons/vibration.png create mode 100644 admin/icons/weather_v1.png create mode 100644 admin/index.html create mode 100644 admin/index_m.html create mode 100644 admin/mihome.png create mode 100644 admin/words.js create mode 100644 appveyor.yml create mode 100644 doc/de/README.md create mode 100644 doc/de/media/Adapter.png create mode 100644 doc/de/media/Adapterconfig1.PNG create mode 100644 doc/de/media/Adapterconfig2.PNG create mode 100644 doc/de/media/Instanz.PNG create mode 100644 doc/de/media/Objekte.PNG create mode 100644 doc/de/media/mihome.png create mode 100644 doc/en/Readme.md create mode 100644 doc/en/media/Adapter.png create mode 100644 doc/en/media/Adapterconfig1.PNG create mode 100644 doc/en/media/Adapterconfig2.PNG create mode 100644 doc/en/media/Instanz.PNG create mode 100644 doc/en/media/Objekte.PNG create mode 100644 doc/en/media/mihome.png create mode 100644 gulpfile.js create mode 100644 img/mihome-settings.png create mode 100644 io-package.json create mode 100644 lib/Hub.js create mode 100644 lib/Sensors/Alarm.js create mode 100644 lib/Sensors/Button.js create mode 100644 lib/Sensors/Cube.js create mode 100644 lib/Sensors/Curtain.js create mode 100644 lib/Sensors/DoorSensor.js create mode 100644 lib/Sensors/Gateway.js create mode 100644 lib/Sensors/Lock.js create mode 100644 lib/Sensors/MotionSensor.js create mode 100644 lib/Sensors/Plug.js create mode 100644 lib/Sensors/THSensor.js create mode 100644 lib/Sensors/VibrationSensor.js create mode 100644 lib/Sensors/WallButtons.js create mode 100644 lib/Sensors/WallWiredSwitch.js create mode 100644 lib/Sensors/WaterSensor.js create mode 100644 lib/devices.js create mode 100644 lib/package.json create mode 100644 lib/utils.js create mode 100644 main.js create mode 100644 package.json create mode 100644 test/lib/gateway.js create mode 100644 test/lib/setup.js create mode 100644 test/testAdapter.js create mode 100644 test/testPackageFiles.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a545ece --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules +.idea +tmp +/.vs +admin/i18n/flat.txt +admin/i18n/*/flat.txt +iob_npm.done +package-lock.json \ No newline at end of file diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..8e562eb --- /dev/null +++ b/.npmignore @@ -0,0 +1,11 @@ +gulpfile.js +tasks +.git +.idea +node_modules +test +.travis.yml +appveyor.yml +admin/i18n +iob_npm.done +package-lock.json \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..b24d6f3 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,26 @@ +os: + - linux + - osx +sudo: required +language: node_js +node_js: + - '4' + - '6' + - '8' + - '10' +before_install: + - 'if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export CC=clang++; export CXX=clang++; export CXXFLAGS=-std=c++11; fi' + - 'if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew unlink pkg-config; fi' + - 'if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export CXX=g++-4.8; fi' +before_script: + - export NPMVERSION=$(echo "$($(which npm) -v)"|cut -c1) + - 'if [[ $NPMVERSION == 5 ]]; then npm install -g npm@5; fi' + - npm -v + - npm install winston@2.3.1 + - 'npm install https://github.com/yunkong2/yunkong2.js-controller/tarball/master --production' +addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - g++-4.8 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..36db19d --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2017-2018 bluefox + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..3f59abf --- /dev/null +++ b/README.md @@ -0,0 +1,149 @@ +![Logo](admin/mihome.png) +# yunkong2 mihome Adapter +============== + +[![NPM version](http://img.shields.io/npm/v/yunkong2.mihome.svg)](https://www.npmjs.com/package/yunkong2.mihome) +[![Downloads](https://img.shields.io/npm/dm/yunkong2.mihome.svg)](https://www.npmjs.com/package/yunkong2.mihome) + +[![NPM](https://nodei.co/npm/yunkong2.mihome.png?downloads=true)](https://nodei.co/npm/yunkong2.mihome/) + +## Requirements +### Android (copied from [here](http://www.domoticz.com/wiki/Xiaomi_Gateway_(Aqara)) ) +You first need to enable local network functions by using the Android Mi Home +App https://play.google.com/store/apps/details?id=com.xiaomi.smarthome : + +- Install the App on a Android device +- Make sure you set your region to: Mainland China under settings -> Locale - at time of writing this seems to be required. +- Mainland China and language can set on English +- Select your Gateway in Mi Home +- Then the 3 dots at the top right of the screen +- Then click on about +- Tap the version (2.27 is the current Android version as of 2 June 2017) number at the bottom of the screen repeatedly +- You should see now 2 extra options listed in English (was Chinese in earlier versions)until you did now enable the developer mode. \[ if not try all steps again! \] +- Choose the first new option +- Then tap the first toggle switch to enable LAN functions. Note down the password (29p9i40jeypwck38 in the screenshot). Make sure you hit the OK button (to the right of the cancel button) to save your changes. +- If you change here something, you lose your password! + +![android](img/mihome-settings.png) + +### iOS +You first need to enable local network functions by using the [iOS Mi Home App iosApp Mi](https://itunes.apple.com/fr/app/%E7%B1%B3%E5%AE%B6-%E7%B2%BE%E5%93%81%E5%95%86%E5%9F%8E-%E6%99%BA%E8%83%BD%E7%94%9F%E6%B4%BB/id957323480?mt=8) +Install the App on a iOS device: +- Make sure you set your region to: Mainland China under settings -> Locale - required for the moment. +- Mainland China and language can set on English +- Select your Gateway in Mi Home +- Then the 3 dots at the top right of the screen +- Then click on about +- Tap under Tutorial menu(on the blank part) repeatedly +- You should see now 3 extra options listed in Chinese until you did now enable the developer mode. \[ if not try all steps again! \] +- Choose the second new option +- Then tap the first toggle switch to enable LAN functions. Note down the password (29p9i40jeypwck38 in the screenshot). Make sure you hit the OK button (to the right of the cancel button) to save your changes. +- If you change here something, you lose your password! + +## Usage +You can use small button on temperature sensor to trigger "double Press" event. Just press twice within 5 seconds. You can set this interval in settings, but do not set it over 10 seconds. + +### Supported devices + +- gateway - Xiaomi RGB Gateway +- sensor_ht - Xiaomi Temperature/Humidity +- weather.v1 - Xiaomi Temperature/Humidity/Pressure +- switch - Xiaomi Wireless Switch +- sensor_switch.aq2 - Xiaomi Aqara Wireless Switch Sensor +- sensor_switch.aq3 - Xiaomi Aqara Wireless Switch Sensor +- plug - Xiaomi Smart Plug +- 86plug - Xiaomi Smart Wall Plug +- 86sw2 - Xiaomi Wireless Dual Wall Switch +- 86sw1 - Xiaomi Wireless Single Wall Switch +- natgas - Xiaomi Mijia Honeywell Gas Alarm Detector +- smoke - Xiaomi Mijia Honeywell Fire Alarm Detector +- ctrl_ln1 - Xiaomi Aqara 86 Fire Wall Switch One Button +- ctrl_ln1.aq1 - Xiaomi Aqara Wall Switch LN +- ctrl_ln2 - Xiaomi 86 zero fire wall switch double key +- ctrl_ln2.aq1 - Xiaomi Aqara Wall Switch LN double key +- ctrl_neutral2 - Xiaomi Wired Dual Wall Switch +- ctrl_neutral1 - Xiaomi Wired Single Wall Switch +- cube - Xiaomi Cube +- sensor_cube.aqgl01 - Xiaomi Cube +- magnet - Xiaomi Door Sensor +- sensor_magnet.aq2 - Xiaomi Aqara Door Sensor +- curtain - Xiaomi Aqara Smart Curtain +- motion - Xiaomi Motion Sensor +- sensor_motion.aq2 - Xiaomi Aqara Motion Sensor +- sensor_wleak.aq1 - Xiaomi Aqara water sensor +- ctrl_ln2.aq1 - Xiaomi Aqara Wall Switch LN (Double) +- remote.b286acn01 - Xiaomi Aqara Wireless Remote Switch (Double Rocker) +- remote.b1acn01 - Xiaomi Aqara Wireless Remote Switch +- vibration - Xiaomi vibration Sensor +- wleak1 - Xiaomi Aqara Water Sensor +- lock_aq1 - Xiaomi Lock + +## Changelog +### 1.2.3 (2018-10-23) +- (goohnie) New wall switch was added + +### 1.2.0 (2018-10-12) +- (bluefox) refactoring + +### 1.1.2 (2018-10-08) +- (bluefox) New button switch was added + +### 1.1.1 (2018-09-23) +- (bluefox) Fixed the creation of new devices + +### 1.1.0 (2018-09-13) +- (bluefox) New devices added: sensor_switch.aq3, ctrl_ln1.aq1, ctrl_ln2.aq1, sensor_cube.aqgl01, remote.b286acn01, vibration, wleak1, lock_aq1 +- (bluefox) Names will be taken from gateway + +### 1.0.7 (2018-06-25) +- (bluefox) The heartbeat timeout and the re-connection interval settings were added + +### 1.0.6 (2018-05-26) +- (bluefox) Added new Aqara cube sensor + +### 1.0.5 (2018-03-05) +- (bluefox) Xiaomi Aqara Wall Switch LN Double was added + +### 1.0.4 (2018-01-21) +- (bluefox) The alarm state was fixed. + +### 1.0.3 (2018-01-21) +- (bluefox) Invalid temperature values will be ignored + +### 1.0.2 (2018-01-14) +- (bluefox) Ignore unknown state of sensors + +### 1.0.0 (2018-01-05) +- (bluefox) Do not overwrite the names +- (bluefox) Ready for Admin3 + +### 0.3.3 (2017-11-26) +- (bluefox) Allow multiple mihome gateways + +### 0.2.4 (2017-11-04) +- (bluefox) Add aqara water sensor + +### 0.2.3 (2017-09-22) +- (bluefox) Remove "." from id of the device + +### 0.2.2 (2017-08-01) +- (bluefox) Set after 300ms doublePress to false by Temperature Sensor\nAllow control of Plug + +### 0.2.1 (2017-07-29) +- (bluefox) Implement double click on temperature sensor + +### 0.2.0 (2017-07-18) +- (bluefox) fix battery level + +### 0.1.4 (2017-06-09) +- (bluefox) add cube +- (bluefox) remove voltage by gateway + +### 0.1.1 (2017-06-06) +- (bluefox) Initial commit + +## License + +MIT + +Copyright (c) 2017-2018 bluefox diff --git a/admin/icons/86plug.png b/admin/icons/86plug.png new file mode 100644 index 0000000000000000000000000000000000000000..a11a95ae24c7e54a475edf4e673ecf1ab6de5e45 GIT binary patch literal 16627 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%0D+K#7^f?mJm{ni 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 NXsA9_DO0ix`XBuL?pFW+ literal 0 HcmV?d00001 diff --git a/admin/icons/86sw1.png b/admin/icons/86sw1.png new file mode 100644 index 0000000000000000000000000000000000000000..53b2b4819c7522a0f0b277c8ec931332cc0bce8e GIT binary patch literal 6304 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 literal 0 HcmV?d00001 diff --git a/admin/icons/86sw2.png b/admin/icons/86sw2.png new file mode 100644 index 0000000000000000000000000000000000000000..d2fc501f3b95fd5ddc14b662d867892c71cecb95 GIT binary patch literal 6855 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 literal 0 HcmV?d00001 diff --git a/admin/icons/battery_p.png b/admin/icons/battery_p.png new file mode 100644 index 0000000000000000000000000000000000000000..452196ce1be9550a4e5580a8420f17a96a511e6c GIT binary patch literal 4208 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 literal 0 HcmV?d00001 diff --git a/admin/icons/ctrl_86plug_aq1.png b/admin/icons/ctrl_86plug_aq1.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2c56bb341f023b7197ccf3219c4d9fa9d28061 GIT binary patch literal 21276 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 literal 0 HcmV?d00001 diff --git a/admin/icons/ctrl_ln1.png b/admin/icons/ctrl_ln1.png new file mode 100644 index 0000000000000000000000000000000000000000..e82325bdc9d91147b9923e28075400f9cb35cc30 GIT binary patch literal 11291 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 O+)-83gkt2){QnQFQN;29 literal 0 HcmV?d00001 diff --git a/admin/icons/ctrl_ln2.png b/admin/icons/ctrl_ln2.png new file mode 100644 index 0000000000000000000000000000000000000000..1fb8dff2a2d2311a8533c187799f6085d8fb1c27 GIT binary patch literal 15911 zcmdVB=UY?V6E+$`gdi;x=_Le26r^`42?PitO_VAfRHXM_0s%r1f~bIq6cI$}y(18c zh=}x#gwQ)kllJEMz2`qTU(WfkvXgyXnZ0MNHTTTiGb_$OPmA_C$8`VzK&y>HJ|tax z{~KTm(r1Zj=?BsU^bDbk001hILe30RNxz}?sE4`$KrB4~kVqOAq(7nI06=IU0I-$- z04Oa10POwVO40rRz;!Vvb#()6b#NQV=k%~YsV+_*@hkkF|ZSl|NPlO zbL@UdVBpTu(s57A{M54@@8ikf>>5#kfIhFN*tNGnXvVESltJ>tCed1h6&C=CfC#bz zfVkOOQ7dA*9WEdy#~RewOLd+wM?;1>Z*^Q<(=Uv=(jO{*)Jjs{8o%tKr>KKJh3WM% z=f`hJ!3w$s;@LIhGQ{p1;JxgUEQp`7Ls=#b`!^kUEbxT)Mw8!NB#yBG!7(^~JG>VD z8v7Hy0<3$2sg!nl|BXEhPZ!D93_3u(KrOX=aR5UmHXTn-=fkk)1@OqP7n5J6X7Q*5 z5!4&<^Pe6xceKJi~cZxVl5Er ze?_0U%m)zA2z74T>k52M2#jL|KXgreDJ3QKvYzX0N_|e-M!4cRZRnmd|DIo4TI_aT zoa6OWkdNoA>22-XYAVXgZ@v=-X|I&cIY8oyN<sYl#N%D~Grt`$bM2hXTZ*%O=z&QyaD00FWaz2rA?$b8Uz;^fBPSmc3n<-ilP z4TNqC$bzN(9zidO5S^g84riFSb`*KvfP5Xn|D5a=oKl`vG~&k}#d@mk2ud4JV$_Na zMKjp}1Z2x6i9{3m9;2uwBl@8f4)hHO6$2=*-0}&brch|AmhRHo?_+O>8@Tqurw;UeQWpH ziDC#P4?4TE3Jk}BX${qB7$^vlCwvSjkq#|cXf#UUVQe+j5+&wE&5kHY@fV_rkIef> zV^}Ms{|Fo(eP7)be&gdELoLIt&pab{M}%Hb98&3O3g^-e%03tSd&h@Mk;yVbR7);r zdN6I!e{gYCj*TWJ=6AcPt&+q-I;daqfy6SP;D$GkR0Mlxzg>lCU@_Sk-A1gV-L(ne zX4t00rotxFkL!#@3tvR&_t>rnbJ3^83irq?3=k+hnd$?ZnXRbZqmDbP_9jmlLzG*o z!^u^XvTvc7e87Gf8#SPkAIDt#(^QvW_) z(`GMDtWC_Mu@JOgF7MaKkhre)JEz{j^!44>L47y-$mW# z@?UnDn=<+`x#lJ2ZBxySNkQ144?$o5@zX|9sPh|teDKl2UeoCDu!)pOmDxcni&aAI zjj|g3uO`lV7Fzcn1ZVoi9_1&!PfF8E(yJO!x2!CUa(m~Nwe6~$$fGW1xDzp_8)`bQ zrfSu8|0;&e#m4EIjJ%C_IdjWM&~108*&$o?SGlRSF}76;pBaAk_6Ys@+_@TEQQ(Q$ zb6d1p)E8tC)D}Dxq<`S}z$AS+!!P6VMS**_w>ePqx7IV>adjS=R*f)fh$0w)Np8&*93-XlqA$!ZB7 z(SDg?X%~k#dtVN}mc|NWygTplmowxt&@xngoi*OEROWGFFoP&mYd+H*d-v7(#+YD< zGSf}=u0%!lmq~O9Zt<7j{@Ra8JhN}M`(pppRJ1s>c*RA_k3BfvzUTJR1N>Ci+itz? z$*!%q%y@sSSaSAqqla*V7?Tpy3&v%}3&vytQGw{2HG+$;KBnsLIRwNte_(#|y7)Ev zQPfD}NQ!i3b&Hc!h7R_37NB&7+K@ zlcbb^-2t?bu%55~q+d;_``?R{;TMHp2YNr;R?v~p4EI}jGSD!2P_$AghPPzfNLml` z@Eq-$Rwh%vNNX0eY}gDtwJS5)X%O}^(X*~;2wLY@H1F~Kv9T4(66&gIdOkSjJ~D^z7Tb9?lO0~Z z#`n*5fxk#=Dftc0_{HaA`wi?;Z-(Lc@77xgeV)XM?hjY5FNb6I&I^f!OH5ywUZy@x zEi9ZVbW^doa5)cLKR8{B%>EQ!8kT!TXtL%CU&}O;k-B_!<+U(QFxf9lYPLFR3?2(V z+RG%$9e78(FU|9W_5_Tdscc^0LzXEwW8;&9c$-uL!-MK^&E>nC$C!gNInZq$QkY5Q zfim+309YCR8)SWg2dbo-ls?+J8k7syfGlD%Vtf?4q+9Gh8m2x*?oWOEZM_@;9=1+y zKB8`pK2T{}CAn>_C}<>fj;^rn{_S#at-PR%T*BFfD&^K7=QO=S zn!Kv~X7SsHGMDwt9QPfkl1#g_-fU@;Gz(I>69DZlq z*!pXDiJ-rEB3U(=KM=Qe0^2vGUhN#6(>>!CTjK`i>M?;~@`QU&U0a`=sc^P!{*|Ag z6&qpt@7+c4Jmk>p7`PC<*Pm}>)D`?}lL?MS;^^lFR%DdP(CFhQi^Y7~p&w)mvo6Vw z&wEd01^JY7)S*_DR*zzzO!K)r-y^OUzV6F9c}< zwVZ7?ZD;wbmg61MB31aqB<~Ke6;lb=DocoqWJ< z4g)774Gd=J`11Jc6CIs|=|DF^~_mqQj4=y>Q#=M{lb>+%8V8*V250@uevn{cpm~mmP z`5PHgW*%11;CocW+}{a(OF@bxgOs-0@oaWTXi>k(_Xr3yw2H>sFLXq^o$M|M0wctU zGIr?I^aGaZ(a=A%evPA5_brR1t|pZgztl#pYEk7sqOh&m@^gMlbBBu9+4@A61to*% zz@F_^nA+iPQ4o__qEPfH=p{8V=6SwqX4vzIG*@?Y6cA#Gw{D97|t+rY7}X} z9*0)ya!bV+fE@1TJ#3YygI=DW9?ZU1@Sf?US9OW<8_?px!ximPP!9Z-uBvVmk@Ifj ziows*UrM4ud1-Z@1QveO1lnptpM`x>R`GJ{Y7f;{ADYM;w zgC-I0>4lQ9w7vZIJl`O=4wip<*Ubfe&En*oi#pJORG1Pq{$}cd1##^+(Su!IB=Y=k zLUeS%`3HYJerXJ)|0V;0$d^jBohTBHE{$YcChVbaB?99b5ji&(^C-c;BaoOLRL2Jj73W_Bat755`XJIvD_*1*>#{ zR3Ps(-P4hGZ#^xT6yl{ucH|_b@7^LGz3B;R#GV2{6y7W}te<+anuDCtdEe<=M@;PpvP9I(gnM5lvsW&$il zpd^j^RLBoeTbx|vEGxY_Ej^6jQ@h>|_mj6q$OuQbUwZS=c^v$dn^sto`K;wh^{En0 zygkIjAMm<&`P%-!epYppwaw&oIPkY{0N27G*|_4tlDMD3anyFML?F$OJy`}421W`2 z{5ZfOG`o)yCk%8j)%8nBj zeDpvwMT`ZU_e~E=`#hMk)|9P69vQ%3gu4iUD}c-F8-t~u_KTxuLXT&&)^F-5=3#&A z2P=qLB}Z&iJ8Tt`eX796&Z>WOzDJEI`Xd<$rwbPIA@=f&E83eniH*h1d^Ce9v%<>2 z{I+-;3IJM6N?<#guCR}tuJ`=-$*EE9CSBhrxVeeYa-oVEN)Oefpju_hbW6{NUgacb z^0p4gX937mkBq!+0Q$AbkWSQ=xEg=Uri9Dc8#N}iCf2dPi0#hT_YTM{>4qBmBCj@3 zsk^Xg!@x@*Nj-*jV|aSHhlBz`1k#%8R5?w7M~&*{tSICgOk2&`4e!N`i6BM&cPsh6M_Zp-NZ0fh&Y_*y0I=oT%atJ zkOmDa#L;%7B&?p0z;d@zqBm7vW$i=YGJ91DD|(e{Li)%cFpOy&@cuL0xSxmR>BoVP z?2UUN@0=5AOL~aiBK5UdZa<4x6vq&nBYqndvmYYz_ja!J9ArQ6$3lPzo0MBIAjV(_ zvLg`rPd8IGL)?Mi{XWIm7V(G&RCw3t#}g> zmQdOgcRk zK^$40F+FAzdyFgpcH0^)wzu42o|OKLax2Zm%WG&{*x1=m@+`k)Rnt?c0r^g~uLpm< zXS0q~{v4U5Do!!m)ZB0hHxqa{nh4|5Xw8EY5fCt+A7NvxM9LPY1&nLa62X<`$gZ9% zio*1wc1MzrZE%-A-NS}yd6XvhQP2l4A=RF0+TR``worhsIF#-H+pRpWyB}I$Dy|ja z@D@k2b!OQ)L$%GT$s@~=Mj zsM+wNwW||e2#&SGtaXze410a=j7#io6=bYoJMDPJ`Urk0_V0??_0$>WRQwbx9|^wx z5SRifSI-}}4xjD4X~=vHrq;8vdR-#J2&(%59=OM|*{OJSelS~Z+o`ye0vAenseO%b z&N9{0sC&-JgQ>*EVMKo~`1#54`U%FbPSx;EZAfh%P1py1jyrEYL6Uoqv)pMnLGQX1 zA2)}ly}36SHrQ7)Jxx?xR}ByfDESbRU-6D_AKo9n4NZSbNyg2x8o7; z?C~lhuyx8J>|A25K)G3Lq|^e!!hUp0Lm3&-yK=>+M7*kyyY*`R*^-&x$F>XSmGaW} z+-thGVw>hT{Z`8#r$0Dz=5s1G-p!_4uv3eN1NQkKaX?_vJ&pI$AT{oZC0n8bDC=WD z>2`#q1XS7gRlz?7uw}7+*nX;8f4YRDAz)t^Kd_@FG*T0=XBT`uCAMUJV}rJ)M&`)J z?&6hZ-P6&aI=@*?^ltm``?0WZ!Kp*9jV8vnZ@X|H2j^o55-?b`|9&M7 zi)w}^l=0on-oGqKkv10ALqa2!eptA-I0nAan=^&xcdbNxzWwNanzG)?lM$)~Dh5jV zo#ulX3>8x!kWb80ZT~k*?b5*!(-1??tD8CxgmMZBx?^ifb4%xBM9g2noUG>7>E2q= za(ukozv8F#!bNxqy{Z*(t>`oc$Exhhs3k8nKB^7*O|X7KA-u@PeN}=Zy@dcIMMCfu z;QLKT1g$>$r3WcK5Cp@`HW_0glm$<|tNE&hQOqPF0&Lcevj4r#ly-U;xE$Y1OtBG) zlHc{?GNORe;2E2H8SAQZ2V~?#{1aHl8e%^EbUVH*Cxop==ynGg3UpI8OH?4Y1ByEy z@)@;g+_O1YzX)O-WA6GsB#8{mADISPc_&SPCjZz>>wF*y6aLQsbS=H$t3e4sE| zl#y@CVeqH4Sn`Zjz(TZJ-|O3gkfC1nEH3I7oLf)P6$LTdqYq6?#%<<6xr1Hi=JQ1J zcNVi9Q(f(>CmUVDnkB4{8^aR06$4}N_xw|O(B*n_-;>0Xrnp0Bn46x5QIMkvB4L;uXpRV2ZIan6;Sqa}$JFZ9$pSn1{+H0HDU=1G)UF%TU&NQ*y zaBJDpJDxeX_;GQ$51sW-b?NS-&XP8^KZ3TxLa7hM8ii(Cr4Z0?z)}X7B@rJ7UvgMYc0qYi%m)* zNtMP7?-w(~BB@znro#GbG6}QYb+TtVH%eJIl+B=2_BB8>)?@u?7tTO{kxC;H`qC`d zlmzY(1E4LMPrj_LbCng{+}vv4_>8HNEHHZ_BGa26H~48C!hEEgdAaF&DOm2EoT*@6 zYEfO^PC=+z841XhuIEUOPDpF)cD(E6wCE-FKFI$MG!IM;p!z5mPs&F}uWw^v1}ViA zD5wAsi+*{j8YmFY#)w@{&|u(Kd1i77nz}!W$;r*lZ64)Diw`b06Ey_zqc^FS{7;T{ ze0N-e$M5c`rOUOAAuFpH5Y_dLKTH~ecwroyxFym)bR-5O8qhwh`HS)Gp(7o+t^_d~4`dG%Z+j_NyuMHEo-BEHB>O_n!Zz zUqVY=dYes(#l!K{CL^6@=-YRcWo@H>wq(bW;IqD1SLE`UcZV=t8=97R zudsVmPP*Y;w9XUD&{Qgi3i>@5g3G7o-4EbGkRw_kaWwul+%6vp^yvp=)r0cRZ+m(q z8C_d198e{>=cP26kPVA@ueN`qWt(?*5)*vfe93RKy4(wCxa;;~dU{rEM`pRdq+q+po_SJI+}Ym+xtn zuAA!R4>Q_PSV`NGaTS?R-xlA*jQ17nUjKTH|EZXyWrJz5UCx&4uWPbv}Vk6wXD* zqCZ@41Ar`a5DTi~e`*Ls1D!Ndpg=Vj5yt!SeIL(ZpWw4SQS~lQTG^hRBjh$BsYN}G zXZ^D++QM40tmpVeqbMgE54khfL+v{SGrP=9EuL*~W9@TUX)Hy$q1Y%-)WQA@w<~ng z4%gAL4CFs-t`}D0!7{~42r%}Fr9kY`;6CpeV^LFx!K6jz-qgNZ_iP|ZFL7e``51ZL zszC!F1Ih5$`hiq6bo*o7b*?m$-eXE~LH!^($MpwH;922rXusX>F1vSW2*vUEHW3`A z!n{2^=m8Id)J;g701GwH@O_BHLxTK`oRSw}mP)m6%Y%~OVaHALlX$YVYP8PfHLOhkD6=+dI4MTj)Rn zktzE!vT5tcx}o(~D~TAHez|m2Z}mU;iM;XvQ>NJM$3?(_WQ>uZNXm8=YGhts@%qEr zS;P~;=z6RD;V!$o#2?m|l}%TdXFpl4czkQ*1qV35Rt|?>4ojc5+i^yTfBK==+c)N0 z8ra2A*BzX8LwMYjg9qbeb#eIAGlGQX?Zt^;4Ix+;Dh_EC6|FXDhekc|RF*K)rx?)} zO3pzj0#7@6FAY?9+v5BfUZvGC^aMj+E&VKUGqcwTyxG$3Uzh&<#a}<;;f!Ssc^%Ho z{;0vOJ1^DsegM~Q{!!)LhjW2-g(9hLqfr7bGS7^4WS5e=`0Tttq()C^JvpqTlXRPr z&s_eLP~*zUMEgEdGLy!=ZFa$M)y{RM{(Fg8Q@awrc#`@77xg(H)M@y>h4!-?9(=`2 zLEvG|tJ>z{r~elQB0J zQCuhsh67&Y!wYj^?}S{RewB-g&u>y@C6)>qoYl;lfMAfRBo z;ewYcE$YxazZAiybCrFKCfWPs`{5U>fwJOP=d5C0+5a|KXKz}c#xyNY?KIuG8W~U4 zFh14ks_BD~Y1`LCrm!wppw z=Z)0yGC5KpZoFC|0MmyW^vv?)Bh|Pp?n5o($RB2le2zU@XG523r?AQ@?f3Gxa)Yzx zJA+Us%6*(+zl`f_J2PcpW^gU2q6td2=<2(Y3U#3AuLu{I zPhuV%9Bm5a(qXHB+j;p@N}LKKPM^zdK1Q6vRBEHvw#tKIy>~^E$F`&i2a<-FkNo-8O|& zXJ-PbXId{7LK_0;3OX7xo@Z*iYYj~ddp7&aF2$lC*w{p@IyA)`dySDCy&Fo)-9x}$ zQ)__=J~uI#du{1TOvl-O5NzIV+?a7pvwUh@zce$UP`5AiNEu9wW<6^v{II?8VeKq3 z*y$T&-2D$k&Sk{34xg+*sQdg?=Sz7VztiTLyx}-~98y+IDGq!05hHl^4i)C_>*I(- z*wc^?r3NBK)kd-36uOgncS_qXgZxjI(nwN+zJyq*^>y*(v|s{~pJfNPQ#(d*N(ZEK ziaVrpN<3}0s0k`*lV00+^SkrfLv8Raeh89}u%L|;Kmb!v%v#W9yIVJDplS(!Mt(K; zkfMML*oYpt_lJef*lFpVHzrn2K*PWxuoG)-y)HgGJU1IHI`)UJb2cYUtKM+Y%JZvn z$zEE)BFFEpzS*yI0xy-xuzwzr!mw)&4^4zAoGMVDZXOM^P+MPoFC*n4lPbGG?D{ow z3Yv2N{rxH4)|ATvUK=T+PxDBWLXFm92{eh!?c29px78o~vx5vDXY1q28Vd@Rw0@cw z1^ecWH@w41AAwNNqO1JHi)5p)UO_|n2iR!@N{r!sF&wNU>$sFDHsg0jgU&i;_EofMU>}lwH49y?rX{MO#REj+o z+!zn6KmysNJ<>Uk_MbC-e{E7YZ80ybe3nue6r2KIHBpyE3GR38*;8S5PHg$JJi(5y z_0{4wn98$gMg$4(HwslRie4fBTc*H;fw>zaN%sv} zz!BaTCq1gNJ7{D-oqSM*c(OW4{z=F?@GZg}Iy-bevV+x*>W!vV(xM`0K>Y%z$kG`HCz!Sb)r?+z zQ@AbK5y zJcB8QpAJhI`6)UQ?(-n*6YCGA6(!u!BQVmSCFJpXtm=6#l_Rk?#g8sa6$6e&ghCQP zk@8kNibLJJ_B{`L>^0l$qW-cEuhd&M9i8ZmoCZ0jfJo5?#bs3>3rG?nfbFJcLn<;D zAX8CxxlqW^E=Qw%YSP`9b)&4ky*L1$5&a6GS#B=iV;rV*j6`dR(C6Kx*`g;5LbJAS zkQQ~Khqw#kb9@pC}2d^r)K|zRLL#Y+;tQ}@-Z^8Qbn5z z0M(!lG!L1PPbfa~U_D`<0l z(BIE{ZZi{cf=Sv;*4|Rj`lWWAp1)K-O7lC6+(eMd#xFqghu9X)`%t(;8W{QQ-@hOx z?9gLOyH`u&P$iuGwZgmO>jtF`}E^YMns zs^!eO^n1^8GnJg)S%`;MbfxW|Ms>4XoxN4G67R|Ub08e9NXi=c1NJhJWEu6G3B{2p z(IIsu1_PkssXX%|{dnRVcxEFo@X<3PqtucpD5O+Z*NG5)7ha1r!3>%eK%m*H#8P0*M8~>TZYa` za+1iNm+lSO^FEnPdxdrNl-uEW>(e3U<4|d zqX>|S3~iHqfOjMW`6MxEJV~31<3l`w8ouwNK9ED3VM-Ap(YTqt>eSq?*pyTSDo{j!bqhthl(vHxDVLnA~_fHTJgb+^! zguo8nbM@<8O7REA8dR8HWqUEHrug>h=+ZZ8-8XQ&o+9aOy?8_GaR)vE;HPfuY#44p z4!H~UshY@s+#J)wplvS$6SNR{%?49ggR7B&1!@_Re|)A(X%^mn5{J95k8UPagUTm` zK^@e^33*HBjMO|N@AB(?-9LF!uWwd!i1f2o)*pl}-O`GR(V75T5m%Rrov7VY^0|fJ z-s9qZonms*<|0q9k_hBW?Y(VB4a-Er48`F|TlmHOFPvOD0M8&2X|sfYCL&CASB5DQ zSj9xCk*@3Vbijo-d3S})b-9`mdy^~wnljxRIxRyF>1RpaeM|IY|I@axb<50QxKsIb zt9_cYYNY&omCm=#A6lqL=>Y;5_q~_%emqhn9vKnBh|T$D=lS{4D6ZaZE>43rVbn*Z zt-D%`@JZQ|EsVT}$4cnsk9S*(3L&=Z&B>utp@h_I@0INExQ*eJ>m;r(yl3{L$~qms z3kyEt5sAxh8QzEp5+*4IB-p4}3#hYUl&nQFQ9{hojMPY{9Fz^(8(g6r{iwA*Bt+Ee zN$5(J|2ufV*6PqFof6l45)m2@NlyTfg80*R`tWt0Fe26Qgnj7jV6OdU@Y?XRewjTI z=UEffa?G=}a4&l7$9?PZxkwTlk7ESeJXRFENh%3q&9tFk^iLOq>>_)P*hnM@4ol`q zg%M?O_gmo;ok9l9bX|9Svh-_l+Kds*`wIa|U=gD=t?rkRF80t_f7|d>73*$UGcdP5 zzy|XCqe1ds+N{DX*xn3AFocg(Kcm1iqTW;Dml6b28K5z26C9kJB?-}Rw)_KE$j}H+ z4T*lK*|0kPkXx~d*d+fTqtkqBwzj_B9Q(p@W%y*>wJOfRal@Rc`%-DtnZyXwf&~O6 zR!iY<5uCiTsENSocT#a|3m-$O%uKxKNcgJYE&@@T;z&|wO)wLgn@N%f@b0?2aP!r9 zE1gMcYwSF_K7IjL3F&1@`Gcs0{|CbAB9N3b2N2^*8PbJMZ$~tKNr8U0NWpt~Vr5(a zQe((>$_#^ysin8)C3J}x@4|d#ehjyXmLf+sd*vhc$;!rVT8096 zhMr2tpWBDD?o(->PF^wF- z{|0q5miSC=c0Hz5sgG2s>Kh%AHf8-p&dGI2g5W62V>VYgr9#vu#VU<*57>OlyjZ`oCL$nI+4@m%80V}o$)mqy zpuT4CRssw97;>kq5x&W-NAX49byURI5L>G*rT-1*8)!tLq0^b+BpQ?8R&Dg@Kx+#qtJb}cGxv! zV{89T(1-P{o0cLU1ey0Vlv1itrVI~H?a>fb9#24Rluz{iQ{UoRC}fOOloU%E7GZ&A z8Mso{4*s0l?bbXqxFx)HJbQ%;USC_8ZM&FHZb}Z_^xlr)3|k2E>ijjUd_3o#?P#BZ zqfKy;`A+_q#8AD9fCm_J0@b0twPc)xW6c7{eULo11aN%KYo{SO`d z)8K5e9%0QCo>Lqc#%}13W`kuh)8`*BVl$WPrNJ{NRAr3~2QOTeD(#lccMw)}?Fv#> znX>M8gK;9S?y!OhHYo;pG-fj*+6SlKgXd%4gYEI%$_3>~t3guP#f`Cs55!<^#A-c7 zYZ%btKZ6fPO{Q7h){JFjWlxlJTG-4(G8Bb-It1I&Dv9l9zb~iES-=-NFI+0*(xG`b zte7XT2X@pvRinP-UCvX}q|HEmlC0uIMBVB*pt**OMd2M+Oo3#t7fgXgMMVk)aO5Tv z;tA!-%|{pU&MXPP;0MtbQ)4qU4QZz#E}`^i-6L*&j1S))9Xx#-P0f0`D0m=hQS0J; z&wtzJli2-9)`9?yubB2j{>`5xkh*qGd5~S|21YInT>q^gIPi~R561VM-xF(t*IqFV zyw>*~EItsJCM7lJ2<|rZ2<}*J|KrN8I9K z6~V_=b^beH!B;oNsi3b<4xA^W9yP#E=ry6uX{>pJ&sG%Nexkl-LRPl#z~ayIgGTIXhVDMI9^ z=Jfk(IWOyF18Ae4h~+p_R6Y+vuqLR;5dXNvYr)xY6hnM;fiwUK1(wtA-Xdr`kwxfM z{*XQM0Yf1-=1aD{xF-R50A&PstyMP9AIz8kC9<#KQZXK+70Si^z%`o1M1-Gw=dk#@g8p+8)unw;W%|d{bivUQP&S9;cAx{iHf0Nx0|E4DGZL5KlzyXsr(hxEA1;eNq7!2Lh`nJL9k5N zdB7RQD_zi4dY_Mif`DO+!vL0lWm^lDVIu31FFtXL5xhK=_c`zkU{_9+ka}hM4(LV3 zvk$j}CDriXw3Oc@SDv$MVi#xq=WFK0PTGhv3BPAUMiWV<`7H}qWc7`A4%73n;ed|R zYKG}3rqAz*F@@gF7r@g^1|;NS6S6{xthuDDnOtb*UsI zy}gzeJX#<orpE$t zPRSGS4b;H~qK^z1Wg+x?{k}w#Q@*2Y*JMrLB$ESQEN^NwCX;3Z`U{~XsG%)=RJhH` z7ufTX^BDnK7>RDC;3Gyy%;ZMDHr1o3fI~!#n!&_>8)bECPe>dHFt>$K)?F!A`Tl&R zW5UzYq(&8XOMVhJ+Z*h`dN;01>3WAvL9Bdaq`}46ab1%vUY$9Bu~7sY1KGFR=+l8R z4>eKuJ*ss22y>TNNU=}?cl>FfpB|f=Ahyf^&-U-m;bf)8)czEc^FiFMQ_^oATM;9! zF3z`=jC@5%a{)r-mR|d2{BBgTy*GH3o-@HIQT2pQ!T*I4g*~7o6K=Xaxc*cd0+WF; zI()@!6UnC5OIdq zGQ9aWGr<7qz(oM8Fl0)zoCUhs!P^Q4TwrvQ6ft33lX%z8^Zj-7XP#zupzXWk3&mb>zO&%hl9v*wlPoi6kLHl+PaLTOGB`X zse=PJ{RqnA|5OPKLqHfcH96T9LxA*UXKRaTHAQmijABpD1UidzhX&^W}F$MaL9s3r;PE>-YD z{r2~DAu8d3^uEymlrR5Cg?-OkWlBDv?LS3oBA(Qq>I2|IG5fR$ydBJ@H|la({3ANx zX3oOdaHb=GzX>FODb$7?)d2YjuOT!@%?j|H%Iq@|`rvTRvxmEO{(hAc1{)Qn!71F8Z; zj{rEAzzistm4LBgv+Z_DUg;grotEP%JeeOT0`i&OaFs1tjY~YH52zqPYP5EGO>wx- zwbv?mAikdDI@>r}JMKOH%umdd#R@=tHFmrI%H@Zn0@r711Bj zE-Ns00+dwuP(!L?;i%3|cu+It5(Jzb{xoMG$sv$xp9w}mAaSdo={cwMD&cxG+V+~` zI8)5T$6mn{I0~$nwn{4Kt`jw&@;x(K3?RM_6tC=WWywQT>DBfa^jk$`oQ4E`=&Lk( z02ufv0vRJ%ZJ%@;h*t|!6HiDh!$ljI1Z#(&G2c8lZ3WoI_#oHlr6h*0RqS!RTY?SD zTFvs~fe>mwDN~>E^p375ah43Fz)C8#7dApMT_{IoG~qd_QxuJdZ5OR-!}K_$^zNR} zYso8}_V@)oZJc;Vm%;!dzC}SW%@o9^=LnT%a^CIyOyBv?6UCm0@%B?+UTypCB60_ZkI-CXhlC|}qZN)-vTCB2kc}amT#IKI zR|F?d?XSsLop#m(an^I>h(C|31v>&9F8&?L8h(@FtEO~7`}|KzlvR~ckl?50FtuJ0 z)-@4gg$DOSer8PW-Zh?x?Kej@3$74qn=ffEYKLX^B&Xqm3^`j$334yv!P6Nsd)D5o)sM+j0T_t8 zq|G-#=FN{>1T|BimWhjkcn+*P6xJqSww@Ih2LBLu%ZN!zI5 zVtC6T{%y31Qsh3L()uITq{h?EZr+veYVv{qEd<>@G-u)`*-f=HS4<_tLqS1BS#Dt@ z4RN@E;QghP&>-0u`~RDB8~-m3meBmsJG<%@;IRn0(M>uA4FG6s=pjqhY$E>;H>lK( literal 0 HcmV?d00001 diff --git a/admin/icons/ctrl_neutral1.png b/admin/icons/ctrl_neutral1.png new file mode 100644 index 0000000000000000000000000000000000000000..641cd89f4e750493092920c3d3c4fcfb10081cf5 GIT binary patch literal 11968 zcmcI~byQSe6t3b3LkL4R3?U%WT~ZDuB`OX`NeM`I4hRe|grxKUQi6b_)KF5A(jC&> zLo>u1fA77u-e2#Zx85IjX5G8)J!hYDzO(nYzq7+%YNQLGp;wxT{k!k_N=5Nr=>WqP_6A_3ps8^0UPTPywdq6bJ-(BwzU#ev#O?pC`(2KO z7TAZhZc2J?uN^FWu>%*S;`qHm?7xq?nuL@J{?>k;p z)a1!b8V+HV1k$m^sVWZ9ghR-Jeyg&_gG7{BzIpW{^7S*)WVtoRD%>||>H zkFRFrj@yIZ;9mAdYhZiIbA<##SiR-%;W5<1huj050MA~0E#dsv$AIa6x;n6aH`)V= z+d1PKjx}bBLBeG!b#{h0vATwFY|pe1NUS=mz#4lZIrW>v+|f}d?q~J)qeG8p8rYFg zs87T(BJL4OaXM-fT>Y%BVSfAfFB2$id4_53z$0N0kL1HlwPY*9+=hp);mCH{1G6RH zxt1|!RPw)`cy4uNs}2}0W4S7|_TVEkX^<}u99)NXl&gO-%p`kkOSej1ubfa}XXF)6 zed#g>#VnJ=B1${cYotfU7f-~RK`L}unL5(`Ta!|9@ZRl_Pbjw4CrpO34a?NQ9_eSO z`5SIJcp%^x%5D#jOa~6uK5FoIruLuRzS7Z|Y!Rv>kENUhNMFYL*9oCs<9VVwe3LPo zE>!0W^8-sg@`cl-_)XH^CikRUPhw^t{99>fhS(6@*Q*&S z=gygK$S4}=@ze}~SJ3mfs5fW&VPDVG&DSivlU-YK8DY`ePh(=z*`y60ex^mdU`rtX ziaGE<$vJy4@4LNm236Zv%JOJ%6)i74J*}qa;jP9*Xbp5X^?m->NrD>_>RY4vbUWA3L@VY zZ^-f)xz3f^Rawm}u&qx2 z!aJyhA+|p^o!r-(VOj&Y^vm@n4_+qPxl&5}_Bi(}>>v#@elQm>I>}Nuu3dun7jW)wD7K543Dt*r#rYp?D8ZXz= z(KEJXTe53Yfj$i$dn2gb*B?kZV7q+7N`Zc#JXBg#m}s9F4Pf?bMbrG2T}=|HjUGqm zK6^^3!old-b2$?crvqM#QX=^E{rq5|Osm=R;BQG4`IAqB{Ede}JVq!HgJ^5(2OKoL z)}DFz>|5M0JthWWb*e%CcYg;rR{rwKHQzXUx9g5w2SsIhlbl)BmN?_6H4oxjv;}d+ zzUu0bX9^r$>E<9{Mj{cvCeFgib|!u#)VpqcqzKHA_AJWa&Ek!B(lD4Aws+G3)8R+o z)X7L>kA%OknmdYg%}`-tgGJxf^?&@!K5JyD`@8k+@9Mb$KK<8{*F)z@f!8;t#3nq= z;Qpi06s}J`KPxvfI6!<{6ew>{*pI;!uu^_F8X|wQwOL&($ z`g=@(d~`rp1v-2%lY1xQe5Z&k2tj<$F=6~T)IzyJmi0WkEC%P&_g+D+^q1&+&F1N@ z1xI}_!By__)}x)Bo&1~}#ZCoS4F`}MPwdyk4;}U}`4q5BiE&yxE5cU1nR`pC+CGs| zScS8`M~6Ay)`7mX%UtB?mYIEms18^~7W-Yu!eca}WYa-_SbBAz3MwP;cyfHar$1G= zYW~S~nyLnkd@`XATacS77$ye}=9shuEYCIB=gzr|U%L2ZHKR*CZ zSJt>VDeEyO`2OzXn;?A<-8r5NG}W?AsrptnWfQi~b6YX$fr1V`J4gCwCC*Null`-t(i1}+UELQwcoKH?7Eg9y(YBRbfJ0mniws8-8jNn-x4>@%dWno_1?c@8k+u+i{@(=T7Xq9|`oQILzor_SRBI zRxj1n_l}$yPC5HI&j@}ZEm2|eW;a+Em|v)E39-NO+$5W4kM-r8=w^y1N{-!WGnp`D zG~}~^gM(kS>4cPP9O=)zezih5b^_!KT_ z%VNNHjiP!uReKB$n)8^oPYc$A6{|4b39oG}WUIS{$wzw{<%hfXRFbXBq{zx4Vz)jv z@nl_Z;u%4U%aDEpiKvu{`j2)a`!vbHb=_pHu}ndw>-`8F`rXeHLFw}ldjI+spBdKo-nLZuETBmS^iA_s?Fa?Z+~Y{g|U~4l&lG` zBge~05w?mp^v-WU`2>CKSFYZ@4)i!X_f+Q_Q3_<=yA7KYuMk|>Tm?IneOA*nBQW~W z(xWLSJ?UN@ouD1C4bT@bZ#;R{TP=MS(3_R%z_pJ-$q(rf4>h3~5wLcK5rKvSJAe9? zOvl0MtihyEsoNuaW@o$UN~I5f(jLoQ4aZbka!}OB`_7)h&H)V}1O$M4({m$H2@b4!~7mX3&zvrl%` ziT?msv1s&T1?|ha-OV|BFRLlP;!Epp{votgF}n&YZT{=)a#Fz^TQ`=6*XpfE938yI zY9vk_GIOyO^0hgm0KZeYORo?i&sV=1Z+GLi`ju%IR|712R#KFsv^3fbeXIK!s&Wvy zg0e`HzPV~#@!IIe5_D^wT>af|7n-(eysdhc-<#=+|T{w#y+iRr-Hmf z;#~&9VBWj75loFl^V2Dv_+I%d?la5DMVp;cG`9yy>Ivq}uG=oep+dg?kd%sUG3z9t z?6yocN}>!6Z#{$2&%eN6^dG**#L8TPF!w15bNwDB=l?uN{^p%Yi`xlIefEW(X+o-T3oGWY+~@3`3ld| z5U>%C3F{irP;P1TnAaTA+a9VG2ve8NHYK)#Z=X=zo;%LgXg*XFFRrN2`7oHtD|gwW zUCAo2+c;edgv--3t%%EmuZcN;zRkL&8-@>ueMLR$9bO7aebc7Uy0$kG8g=L58r?aYxdSaZzc5q;85R0@?`8KiB5%l{N9=3~3)!zfda?nWN z@%o?9RJV17lBkwQE_2M7aJmx7`-L3U3NtPOSahLuCOJa({&0;yBQ#S6!+mL|tHG;sVLf2YRy2!5$Br@f0mP%{IbU3~FP|;{)#DWD}KRa7?q#`crufYBZ>L^tePt z-7B4zSihG!#)gLCS{Z=VlX&9R*FSjQoKBuzY%P?uyZ!RMxgQ)%w8N3{!_Hf(XzEiC zp=M7F9zLBq<<5&C>MolI(od3gI)#m#i@r{71C#JiFEayfy{VNx^nAK6UU;u$fZnk& z8xvMNTl1Wodqcg6TzRdL+vZ*4oAVvyd%EChs#y4fV-<(lRtuFY zPW`UMwmi0kn4fAB!eNo%+Br0)B;(5NvIOIZTG^e-$N64Vs%y%wlhdOVqx8yPa?#FR zi$~pEomNpnCP{``Mdg@!8*e5L5T9WbfMuHMjG?N3E`7+GtEv`ki4O<^4eYZ5{84j0 zJIrJIlNCOWcJtrB6adA^2nWg_y~e!h@Yc1*r{V9@sQ4$PfN*Tg>kHS~ejJUQSD#c{ zsg@*S#5rSwM*B2DuvQCbe2j(y7mlQYs{6)ejrJ2tlS^Y(9uQJm4Io)O=bY24Mt{6O zy~Q=+g)7`vxK1+tQSkTbS#$ZFdb7H4dozme(S~U?-((1{Vm3^83Sb93k~dMV7MtY- zZzO!rnEw8GqOshq?>V5)X)&mBh6t?8LFPg1pI!j&UR}^H`rsg?+^L2U|X}U(%gOaa_U2 z>$=^r^ZAutP}hg*bk#2!00l54cHCA>b*+)^yYUb>aooMqYZ{9x)W{k$AyQ(yx>&R} z=f&F}#!tnlb!09XXq^E$@gCpN)jM|j=OB?JDUMi0Vtjp-K7|VR8=uSVZ#$QZ7tQi@ z>E)F!rE|Uq^Ocr;JNki6$dZ>xc@Um~3rW1oXQoK1V%4G@Dm7jE;6AxDQ6Ki<&cyLC zcLB99MI3xcY!FV53WaKne2!lVxi|65Yj|^?r~iV3`=fOUKWR26jZHx{3CmuJ`km5- z6B;q3xd^eina(|?$1w2hdCU_3reAN31$?b~I@5>iA zj`z+Z$678CC5e>GUy|m{>ywU%b83AFe1P}SpyO8(N_I-D zsac5=nEb;qpY?l@L7|R?_wh%{kk21UpMBif&i_{WHi-Y4Ul{8*x)>Ia1=0c=n&jN- zwU5S+mi&0RFE$MI^`Ee*M1N5T#Z!qV{VN5=oyj^GKONmf%HO)PoR3l04^~s5zoX36hHO5q8JQGXC97H`T zDeM+TZ;yK^_X`N_{MWEsFXG}{X3=8ZZe8B!@!nS!U#r8x@fd`mUf*FKRJf-9R3rnpba242!*i>YAYLcuV!pzmCQO*kFL*2Q|>m zPT&=w)shR;CeNR|DSPSLj+_UWc|XLdUkoB#4d={!DZMteSNFkO9ngCDw5TZG^oZ;; z)A2_tYqNp5FeTEYoXy_9-+u2N=>D%3|L%m1>Ong_J4F1wpQ6YrH$FZP_ZG1a<3MWjxMR{ygHsN_fg^mEEkA z-s0e=)SzdTbq>3{rfy+3xt$STi@dwhy}T0FN_5OX8(r?(SoP{#WpSE!X%3CII1^(P zBW7e+>IMd4!Cx$X~!!yG66x)eETD`R&P`Jp`Ebu^A7_>Lpmj=^u}LAcP3E(8{JQy^O+5_pN&IJ{z!d2fL|W&P=B-v5>Ryi z)jQJFK43MF0ILC7EVYGj#|jTfJm=6ziM4N^n9=iP?cEmLamy*ML@6hngm(7jee>5j zlLgiAh-TCOhOkJgMu9E4K@0btB_8FB*mMqHeDF?j}=i&Ts#}6Pmnf>R@ zwp1~0j4iw=h$qJn+g=#6;^8Q8ao}!WbO}$C&VCi%0$QA0;0u|eDQGb#7DiVC+{Tft zbGglp-uXO6%{L;W86DQWzrZqjp+&{b4_|1`of6z-aQ3f>GOHlA-5knJ%X4)^ zjjuRXU3n0>#9H=2t#SOPwM)MwH2YLWzlZI^`Fp}SVY*sZ2MMD32cG*R7E_0DJ&cHk z6;&$iM$vi)UVrJxnSES72n_m>A)XZuCXu^#dJ7)wj7ChID=Ci*jK0{EeRg*7{_^Tc zK`*rVmY1?8xdrVmd1<>4@94iH%}uuc;;i=P@5Dyhe}gZrT=%N~s>PzX=cj1zhaO+L zzIM&?4atB(oOgcI_SSD?7MoQ_eG;%%F*=(rb;4m$vyzlwB#jj8Ir4k0LlavUzEAkl) z8fbV7CU`z;F|4vgy&50mdjrC+$IFEx@JP4bl{{9T)26(=$&r77G{iZ|sH_#((4M^> z1h&_3fH?5W>euNgRW&s=-!l07Ml$_eiOU@yucl*+-!LEF+Mb_wUAKuJ;H^P~39;h0 zci*CsE|0N$%83I@ln0T$UArOWD{e_cg0RB&LQ2f-#9K6L?A6s(`@r8e?Dz$GKsYN*6 z6ZQpK=}Re3gfp{paUFm&U$gx8||jgszBifEa$#aB7Cw%>#^6lmQ&@VQl#C%w92xgZ+}OpbB%r*d{r?8+Z;;sXM02Y&!ZyP_7*$M25j^C zBx|%$jlze|7znL4gbz6KB17ai%}5o>M-y}Sg31Gd(p{~=Vcq62&$7uwo`({9D$?e& z(hBcnXJ$WvMMt-wkpCQes%TZ)4bRd-(cC}uGW_;zE`6`1*MD@4>Qs~_ z?;_-H{EC5)tSj)fT)R+qU!Cq$1(hFE9EdCt(+X*1`neR!Y}K@@$mB13eH@cWy*R0Q zrLVK+pLFP`yZQ7Mtu_*brQJKnS3>oC0+LKQrW7jBQp#9|?Wf9Yya7k6P$FuPk9FSp9)Dh*&H1 zK`Ib!8l6_`pN-!C#To|V2>LbXe)}JQAQm-dS--q>Frvc+#M+%UPCqwD)}Y6N-9ZI<8-QZ^AQvRR<`qrn`!2#j z3B7=jZDwkN=#C{yj0{tBX)WK&MB%IU_`L5JOWH@>}BeKpcYJ#H}+`_ zAIFEA3$!T_=je3cx66YEwNguMD-etrgBgJHroUfh1KB^`;APb6xwsEkU3#9}OHDvX zSI85p7pmGEybL6F4;Ei_4nd@im={v_k?_c_Ki%CG&86a-(#sH{g=xeA`Y% zrF||9rt{If+J$$3rEm_Ne{q^&$aBOmk5OE+P*VlSINH@=8VASw9hVow^z5DgQKZRc zyyq_NDQTGf{nmbD&s>jTlVk+)fob_zMgu|MtOF_Vytw5A{rjRji%7xzNxPAY4d)+~ zZky+)J_PVqGf2EEGIQ=hAQ8Qo#)bk-PaCm^KQN@`gL$8Q&G93ETNRSk8f%%l15FmhuUQN*M)eg9N{pYy` zm;;y-ir-lS!DagWi_Kr;6^~0$w~WtE?@l^cAhBcG@^=myD(iz=m=1e1wm};k8y%Il zOBYFNE3V&1(u7@XL5mlw%o-GEv=%Fn^{BHo>1wx1i2+e;s*}*18%z4M<9%6RP1h}$ zEOS_$5qyW3FA*XKUgF`jIx9jqOJhB@UuF#as@U~&_BRM~KcDy95#V1XL&Q8gkH8Gk z{=Mm2%of_rR#~0d!R_vpYt-Ot+RmDotUl zZGMVwt*5K$UnL2+2v#N`b0-gDmh8v<$%dDm-pS_gHAX@Thk`+x2qyMzNNi&9gf(>c z&)#f~Dg!oOQ9QZFP^A|LXQ&acIR3TeT}+`S#ae&#o4z{objRdQ>M3BG#!s33I-}7p zY&D%LzA?Spt{~uvCgIk5&l`d8O$F-6;ityPV0qOM?{*5(PIz1UN@15& z35`Op1~}^d-dz3b4B`!bWpKzLqZH&Hem|3_t0NdB{LRgCl|d-INn_t1%CS3`g|B7m z&xs(!w;Z!!SaByrC6Y`5glAOz&GH}NH}^i??gvf~Xs&OW#f5d~{9BSkDWL^PnANk9 z#cOQxOAd^rP#f`f5*=J`GL;X|uU?Pk(g0IwmLGw)(`Fu4e%SM&edeEYeKZh=-r2e8 zb9AiJ@poz^Ii&Z99A4bAH|vX^N?5=3EnP(6 zAYkRwSNSQN<$n=Nfj#S{je4!4%uiGHt~0@{@9Eb;%x%aO!RGA)hop>#v+lqNi&QlV zwNzk7=21tIFPoFt)v-j5y8>3ED4X8Ay>O3uIX}=Q=;U%n3X}v2Z$V;BZqdo8YJ@3{ zsV%9+>2|dixGzJ3Y8!N5C3|P$GEu+LcRnBktzQ?P>`8eG0|8-H^L!o=4(c)lc1I{Yc@+Oqcdr&!i#e3$0y3DxQ~tha+0b75=BiCOrrK z=M5zSWC{$;Mzs#XJ7&Cne1hLgN)vwP|9MsGRKfFZu7pjWFr8-Y#a|coplEp^{=sk@ zd|GwNTdNh3^&uN85>s~;lT_`(Xh*{7Jy$x`j6En6Y8x->v8zXki?hW0`dSl03o)It z`paWU3iwDZwoN33qd!%rLGGbkMYF6K`ib7Mvv+(1d#25XV6*1Yy~wiHN*;Uy^TXq% za`h=cYkpKt>1wyF_Y6$}5b`>FUynU#)CFTTq_BuUYwMhHcx@!Y`{& z!?~z<6CXb6!Hl@Su|0BO>|u?=<9I^~%nRspVa3uUCo$JouCiG_gTHOr!OljP1se9k z%2)0!FM7=4F?q@R-(ePZxF)i0PYO!F8WeWn(ZEo?w?;-y5y7T&JGj?c{$A5DYk6gU z&$TW_peLHOCUR@i|LIl(4f{ROW`ZUbI_x*}N&l1tMZi%;^l*kBaVm#VEt}h!o<9sb z2$xAC&+qayor+)tv0w@oqIT)&(2sy@-_F+>sw3LB>)+8K{Qml~m#O^S=L6fER!G-O zf72DemMzPYWBT2@V>6O@l(U`3g?dCbt|$HY{HLJ{L|lJYT)hq!C8SG$WUO(d>NdGmd1Ut(US?}xgs zHRuH^QAet^%{sOiC8J0fBwmJmk|;6goH+Z(MSA z^ERh0CSpSzOaVJ&(|JFeFy*93U8)9{0LewwH8wv8cKFWP*M7(H)5meFv;ct$2D1K- z-^;X>%e$ZJ1$4eT|NZ!Bp3T;a`K+t!-QDzWUVKzlTkKni+&Pm@Dv=~^LrQP95+!1W zFEF;fMirdqmwIMx&*^EFACoM37&stVU!`!}tDw;!i_aTv@;TuTwp@gfbO+o{hNH{w zj`S~E?$BzCtx~5yg;(R%%ZBnf`ix!;<_3W9TBx6X9c?j}B*pe|QmlU%rrLi$#x0Nr z2;Zk9g_H8QfS9J7uqUDn9H2-rl@3j3(QsnpqpR|5^|HEGO#XJ|bN-V}=*^YqmL8Ug zT1*_`>OV&LsI*0=YaO#99>je)wlKx|Z)|)P@1PCc?p>n|-6H~P5WzA4XMuub8Gr~l`_K9(h8~_$Fjz6Mo&@t2zG)z4X@)r z;w0nwF?Mr%!&#sz@M04@hj=iB9_`~>RTf!Dbxl$fw$BGHl1xv6c1UL8W7%hB%L zw@W;6b^CeLDKDGe8jadNub02yXx>;g@D5=%6SlqD=BTm{msgIWiK7ITy?;ufpgOW; z<}9b$p2M-HEGSs#F&|lZRQ;#Y)1){e2oGBI*k|`|)!>bx3<^DbTh1B zccxk;%;o&Kda(m-T6PnY}gF=&=xQ~CjAqg}XK9B-dU!W->@cIY_@e8P!cWCQh@Xydkd5jYUGN+=t(A)e4E-a z7qH|kx{-5e45i1?JZ>8X;YRmt>&u2Q%pz-Y^I~2T0cn@eiyt|F`T>@?dNLh!q=)Zq z2a@;MHtgnwdJ%M63-@x~6JV2Hx|&R`vB?h(@a|U1bF92M)R6=XG9S4ikgV69NgajH z$Y;ASZx7F#SFpCd4{ull1Jh-KUDy3MwUAuqzoX)uSAK6j;06H`{I^=9BXT9M;LJ(s zDTSKAM1AER3Xc=zN7ISEV2d~?G)(2qp@^*B(lGe?XgC;83~YvaiwNdYBo2}X;j-pL zcG^k1dy9bL!nhRUGjG$)&5W^}ufA=Qc%F~pvjY{>^6Fwx<~YhY+*t<2x5~5rOM*Wd z!M2i@RG03G(FwXS)MK>W2>uMn=(+(ZfPmgWZO?O85GzZMWL#(|TicQ&%f^elA92e- zy1vhDZ%n^fjegVgIqkgM^bx%KG|EEZY6gJIPpOD}`b4yymf-oYIYt_vl)GvZyU+qU z){?+r0=q3Uon!|poTckj_LDnVHjk=*Gf1D!q8;y*xe^(Cw5o{WdmcvohoGYcZT=j@ zK_y$|nDvM}+VLqaIdC{|$*4~Ofep227=%xnAKn{J!Ah{9o!Pn2v0y#5K-;4|q&IK@ zb3G%Ccvec00yiJqIqG7D;^obTfTqN)YOLFI=RHq;$}3`(Fn^;Ow~9~_=2BAlbud@k z4ha+NMCXPH&`)Iw=5Tr9!p%XP%AiTe=B9&aO#CVszZe-p%EF4T6?QDV@aw^xld)|2 z%L}_o-&WI0W2|r0N6O7I%1D~caeegi6ToHI8B3?%&K2nVMs4} zQKmlzURokHj6236*IJ+I3Kq}a>7-=96XonuqfN71K+3U$X3s0GJb1QADL1u-tCz(L zYJh;@L!)1+42~^IbwBfcJ0-#UZUAgq$iMj`XRI%}dTK;Vw@&c+SP0cYnPGS@tRu8N z?Oy-%WfVdKxN9!lpBX9yXzMkCn;K-6Tns%Y*+S4iAV5A?7<3X)w?QyXNkTF7tc+Mz zrJ@MctJ=7-t2&CJ8a~Z22tJlQpL3OJ3vtD;{_?(0ug6HP0F=fx;-PO^mY&+Ufvq%O9v*#F4ywHB{zT%>Y(q65$-n`_0s5oIQLuE1WukJ=I0 z_{zvyk!=i7pl>E$0xd~&(I`o24bePd+HqO(qs1E&?_f`KWJj8?yG!hyTw zl74~ZG4drC%baZ49I!%d`nRj|gR+&F=*^*}MDwqQ><0KOu^VwsU?TvJSY8SSGkFkq7 zQ~{Db+iBnIq0WQzelB;zr~EOVDRC$Y_#hBW5Xtl*k~HraTLKwvN&-DTCanpD)wrmy>$|H{hd&IJ5XDgd zNr+-rnce}TFwqxDIYn2UR#nA8{gdQ_C1wBs+kgPXXr=zp>-o4UmW7Rr5 zD02usD`Bqn)To-zt^=j^5Y5)Jx=LXljm%G~AiTK1Zbc|jn3Zq)Bk}I7f-F9)m(N6c zucxBMGJNJp+H#b35uqI!n29HBLc`;%??O80LtdqP6&z^*Y3jY~j;iIAS=}CtFwFrh z*KHRSi)@r*L%3y%=RYBPRbBSEXCy`*0Ri@fdU;0`!l)I)+qg2ZU;9pNQpdq*z2R*` z0`q(>1W9$m%boDW?l?9|2fPp6UMHKw+`tYS+xGHu8Y`6fgO8maldi?(8QG}$L zDHb6I2|GoZ6+10a&v)eDowjM0T{TmMzXWpxA~>z1PMA8Q_;k7;?{gNjrqSWSLeVBA zpIF1lMU;K00kJigU|~tDVPVk? zx=Dn4VPO%$>||v%m1Siiny${)b`Ec_u#|efeDHepYLYr~xY^4$`zQY>oo_N9fA9$( zgb`PZ)*7F-AFJbmngi-PTn-GzmQTzI#?H-FDn?nbaDF!5!0DyetSS0Wj`K=eOI8t$oh3_4V{SAxXV6&h_ zdan)61{0?7ZR{nyiJ5iv{?(Yu1s zZ{2LsbP7=)VJe!Pt`_lzt6wt%sHe3CcdVEUJC{GdobGcFI7fN=MI^FXbSie@(HW_K zLpjIj3o54#QXLv19G*meB*ltmt0fjG_6Db;(mKgV-NA>hST1?>Fp+g)YL`mfW!Z+j zJnQ2I#37)OPc^~mt>e!uKi4P8B7l%=spOR2)v8TCuD*g7CPG*-Hg`O92*=GFsNtvA zhOZxfqWc)A_5Hr_Lio|%F0`5GVone>aUQu_cB8$8Wi}Z7wrZQqa4--{tQG+Ax+hCt zXTf5V53p}N?DDZ)_KBhaYCFcp2?`3v)iZoZs?TcO4idW|2{@EwJ@jl%joj;xdP9_q z>yG%N&!x;I^ITFgrEhtJVc|BlA%&-O{2rtSSg%jq=V#41G2Gx2V( zOI@Nal7`~088*miU)T^{(#6;>+Y^oiW3gdV_2N)vVY`R0@Z;$IpcVlLmjf4te$W$n7|A-Hf+NTAB}ws z!Zl}kA{VmCqN7CoBzO>lZ$;K1{ah15Nh&Xk0FjZ)G>lMx2R;seoc;Pc_=;K#&p5bL z24_Ulmhw|*VEB9o@I`1r`IBN2`i=)vgl7?9OV3;wKI3ovxI9p=2b6{-wCx_?U5NP; zFok4xQ~}{AAc>aj12Fz_=miT{iKksr2okO&svTJkF;;@P64Ob4OY-7;5FMJ6`#`If zQ{xpdI$TB85l)r+SW8iB_dC-V?-=J>{8K_T1@3H;5g}XH$zyj0F$&{gK1JcI*^$%{ zuaT9%!n6+}B7U{$n@b2RrQr^Wy%1Q(`bOo(Bp6KBF=$bt?^BFDLAo9J#sY5&uoJi= zup_zy@npEBR_rWT9(38O2QrYQMsoK&TN+x%M^M!Jpeap=ox{#Mst%_w$o(Z-h=XvX z;xjpvDBOXbNHZCLxnOqah)lhlx01I!8~J$DL?;$BwLVH;T0$Ky!|ew!1-pGRV;|TG+lQke$v^2P?M62gYRP-&?=@UHEVn`^XdyemV4OoMKNxa0=}9G~K+%Gmk4NiK#R==k-EUPEr6V6I_hCTQ5K9 z=xUv5s_V>``D^*S4*$0N{au#!H&@*^Dk(W{%ldVAUrOd*#qz0o<#7Ds{wsMx_w3O# zjc3`fOJ29mpc~_TQN9_zMOUmOq4=__y16fM4J{R3>ipId)T=T$ZlN}b$)+l+(J0ch zS2t7?f8m$z8F`i$|2aNYJzl+PNY=QrG|cIf)0aI*$yg>?nAU#qyjp<%f{c_&tIB-@ zwu717k7pug{NI@c7I0AW#45dn@5;eEqw?7?Cs$k{@(F7yy6=IdFZravZBFG z&92OT%1-v;%?rJ>^^cw(@7{iM?tW7Aq{&fT$V+&^cHZvJ^<&$Up~|p<#RLUhd=|Q4!U)-idcIItE@tpA|oK zuu3^BJS{4XOx8wraN?E7-^V)35oFgQ{MO z>)p4TiV`NnbYeE53%rh5hq`eGMaK=N{RQ(D%lmkZ@SS#hd3O0VdFE(?uE~}sw}s0^ z;a@7muT^%UHAZw-V!^5>tIiJoW>m&Cje8*}h?Iu&0 zyBUT=ZmOSGx18H|PsWiDk;s!UCmh7bGLT5j{I(sRn#vn{HTpo9I6XgJo~h|FZd>>Z zZv<~mN%cg|%3}S&MU``IE2G#_K+ZMWiq(ME>jj-Utr?=(?6aM-kMS4rNka!iAuqYr zJ-ntpYXY24Zj*k$%`Y12&EOJM6-f{BTrwJJm_9Dp$cJ?r({9Ia1-c-{yJjV^C2v#F zFyn@uz)Op=m-`Leo_gx0H4VO74_99Icnoas22ck$O6lK>OgK+31a@pGY^ZIg8{-TR z43UaGFsWbj-9B zFiqZmKeyaQt@VD?n*7zmA+5m_ThX0y|NicGO4pWkB7Zb&fGxVP~Wvr@!St~gkUzZtAlq5fhHI`bN^G|Mt&=MNqffH_tU=E&lh8W=oiv=xqH%X{U3{R+#Kh0wZR10e6P!g$Eek1yD#5 z%KZp~yvt!ESe&gB`Ld@fW*}sBb?zZkbgC>^(h*qq6jLt~T*G|9QuKx1`8aTr$2%!3 zuy@L62|MRZ;aeCFKn_J+_iB3HTfF6eDS zd>ODR%EbisQ+4hsy6abKm%z-eSC&;#39U`g*31{rXnVi@k7oxjj|Y|6d;8)VN@`Y_ z(eThnsIidO=jM`Dd$+CG-9rSGN!okS>6c68hb{9;4+YivI+<|b{7Cp?GS`De=}Zen z{z{rzCc=>Kt1SCW_GyyscPFoKkC>Xg#y*2?>MJK?OEvPtWlMgtR9ndGvj5G##WobU z=JG4cot(AZ#vR=szN;&l(IUz)3a}cBRsyyfrBN~TN*ARI&doNL99puBAHm#51-$m<_=pa5&%l6PS+H?gx=MCMa-b zeBeXB7WG3lGqz`VezLZ}if`Z8XIlcA>TtHS6f!)o&vvVt{m!q1PJG-~JUnK-ray^>`F|hVKdIW?tI)ZN z-NRcZ+X~y^f@5XdH(9rM@dD~#`HS_UyHzqY`SYVgYbA~R+?q%WRM>n?hZ+Fr! z+$lc<7<;ys_?`*)CD8PmPB|;;`i9iE1{y#Da8dB3gia8#j8)`VC@z3A>;jnA(lWn3 z^kr5{!EaR3@67!q1pZxv?wTt;-w!vWIQ>>1)N8k2vk+TyMzN6tM{^ti5J%=6Y9o`n z5=;_pb~aN#z{xu~8iDP@Z|-KLzS!H(@gJ~d!_F0%zkl^eaLf>&n%|wh{rX3^RE&5v zfw1CSM6A-|l=Kf_wm1Ydt`jXn4Ks1bRfs!+VgY4MSgBF9)6NK^Ke;a zip?9FlM6n@zf{F>kE~hj2LBQfvc@l2R&-{mKj>xjBS>O`;y8K{fYZ@ivKNJgkJANh z;z=0A#yodt)^?G4WzA==6&d05gam#Fv}De0O$Tnf3Z>Bp3Q~Z``6i_2kwh!A z+!)UW)Ng%EHgo>FNPS!pJ3$mP5;WD*%WPlLBmQ^8`D$$Ipi6=rP!3~}2xEfq_WQ?0n*7@&zg0 zUgpkL&gwRK2FYB0+^;fCC>R8YPKN|Tvd}nkYyq2JQ_;rlN>MAeEG$@ra!WdMu*>Nx zn`_YajD6YZiZlcAb*!vKB7eLFBn-31v%hqV@kaM#9^)?GwWpBahQ>7vWGxaJHC^}U zMQ$@Y`Y{O2!pd64hIY-ANtzbgVft8-(#u$HRZS~@-4`2FNgO~>IM`VI zV5A(v2w=DUII)Q}#3fw}AWf?j#--f5D4nym^n2(CFg?#KnTRNB34rcaj&}OdGWO z++A)o$DLKc*&bY>2!kXvP00z&7*Lk$gC9Ll$MvoQEK_MM+OXC+AG-xH_T&yA+UVg< zj$sp$wdO-3i-hVNs|ItM(&#$i*lAtkKnT{P)9Fr+>h8Sdd3+fW%NWZB#~ix*wP|fi zRX0*|YwUaqC%4^^b9cz{*-t;7DUECHCL0Ii&3?b9>@fHk^|Xm1TijYi8Zgm-jk*B0 zR$hfrE+b5bz80HiU^-u`CiR4MR%Jtmu$ktt=7WR6&{?ExRCo z`5adUo;_*u&yhzoI0e7g&)jU&r!!8^y!QPfPxrkF18$b>Z;bM+Cq^K}b?D(eIvt;S z0tDytUl+d6e{`0nX$sKEx9CGq0C6s%tXc8$u69%xOM6UO=#C=JjI_5S#h%WqSKc9W zt^>TrSC2GAb5OHKe$#wR36x?P#0VQ--Q4z+-KrhoT<(r{JQ_EbeGNq$9gIU;U!^`V z%~%dMH6YI=oJD7yyjZCH&W2xTfvb01H)Co&?|QYrpX#0cO}m^Zw|%=gUsko-a!9Tu zUGEHe*Xu~ty^`2T(m?xL!1V!}eW&-8Au8N%vw&7wCP zX+0EEe}C=Cd|x(nR@Y#P*pxrx*!M}L zm$GS>Y?-H?o@@FAQuJV*s6ckF9mhW}nX9{Wi#smXPlv2Z z2*-eo(z@uC%LRlFk0}}@%Lia&*P5HWL3Uno1xJ&Dw&ZeML8Zp&;-yZ^p0<%{fd@98 zwMF;3GoM`>Pq*)d)gdf-Zb8O9r}$928_Tv|K%@(b5+H4s#1Vl@?gx@<50twqF|6}7 z?^XEoUSvwcIqOQMP+~sf@A1a)In%0e>t&qe#bVfexA&zQKxpfCK5o17ufxBWQyxTl zhMr8{F@v(M^oK7>E!_*_hs-}@%gg8ltuK_X5&}7UwaDh7<|nfQFo zEm?flUYpaG3wwBnAAVo^g`9X-dME!)3N{H>g?-&}GkKU?9{(!6hsiubgcWo5M{ zQ08afK+F~NZ!9Qblw~ZGMZP5mzA6m@a(N!n3ppILXT@WEQq!G#(Nf`X0`PyMxpnmOTH=kt(M}i2^e2=W=vfsfRrA0gQL~xiC+N zZhW?6RgB-!Rs>}83Q<$_9vjj!PdYBQ!fnqto}hb(m{`fBh7S@t#476|A31hXww{z+ zwAW#6FutC9e*@WVAD~5-p|&o1?8R#fmL8ZC@bC*a3AkMTO7SKM_bmvV2V(g2Ac=tU zhBI0Y0KS}#FiVUPMfGFAsmJp3=xa`yHw8!aFM|KVugyc_;m@yrCCvQ&l^a0UuBjrG zCs8+~k2TA!TU<_K>i;X*c)l#0rnx~X$c+yWl23a>Tns|R+!99mhilSk$_rxXpTGPXM&l->mEDfGm!%*=caeoa6Ci+&xc$ix-(}ndZ7dc z!k^y5e#`-B(@YdqrW-cY%zy`ECMb%m}?JLdc05oO;aw< zKpL6svahPCSNR~HskhUWZGMO45?RVa75)< zc{!d$YmI!tdVPat=b<}x6=Pnf+CtO)qlO&SOG}{~yh;xI5t08xq0wsGGC(9zKGRWu0=PFC7IcVi5z%3{Kkho=p;ug)r?O}%p5gR z)z-f)80R&$COAX5eM=7zF-grS9A&`9E}xqjX9eD6!#Nmudpy6`i^zE`)kcgAZG_1} z=UlJl{hJR!*(Q2PElmH20_G{bR>GCr%b_t(7c4viBHugCVAR!fq_-(or$-YG3pv+{ z)#%SBu!On5v#QLR&ENTcA({$|S5}52Q?$Y~wA|c;WubLH(jo5~BYX{YXU*ccb!Xod zs@~lo7{)bBae1XMtJv4T`HC{+Y)8py6z*1um-)H0dI< zJTAHDBTy8sOc#KKdH5OR6B6g@?`DM zm^@sTK?vxF!_7R=`-oElSF>62tpNhds7( z`?8;+jS_yHc+5x*Gj{SgRSV2%srLQI=%7Gp9>HsVB992pt1xP# z)53lH?in>9QVvU?9DM&$F$cvG^1W4`QeZjY?3IRD@rfFdK4P?F4~UEsy8g-sWhqPK zsb1LZZXGt6KP)uuH!d&lkFoM$47IJiqOy1Rs0t=Ii|GCq4~nse7(fUu8)N{#rl|p4 zRw;0ZKhJ}&=sqNR%ZwFT#ba+5B5ep5!)t2jK zOTYLz6dY3%)9_YoeG;Ql*AbWIIcLgi6hh^;n14NoL|#lNZo;UQOevK||1t1O=cWOq zf**I@8X8j0=ohcgAU1oBKekVJ!quK^gGU@P=l)yG^Y(P|Ix$9vr++hH;ahEX5ITl_ zmb=OE4z1Gq*|4F0=Iw`P-XT05TqbO&FwLS0SqMWJPa?9yD2ZGt_PtVY?Z>R-RQM~Y zN2F(n9QggoWu(+i_R1R))60In9S*6>sGtGyW9Y7-Ib=7~G2j0DUGvE@ckPrL?D9XlU>;E2@5s1KFeUC*Sy8o z%%E4I6=OU_=QKoz5F>0w2=wLA zSE}N*p{B8GWibkO_O1W7k+vNt!TwLe6q@b>w&-muj6kefmHSgow(Nd5D{weHjsq?fi%OQ>_ffc zY8(RbR=26tvXKAIt^xQ6{#hiBB?%rFg`{l4&Dnh~A~&iY>gkjZ|ME(58avs=ADH*-6twmW0htI8m{Y}oV&0grZ!QU) zyF8L4&PxamI!Tj&TB|_Fm3gRfb0khJ@;VXFANtQsWF(w;m$pO!mtC;HB^pvrn+NZ= zz06qGo)*bwMgtatp}@HVpW(e z9JepI)bwT(eld2vM@0Rf&c_`^)KXzvYR4EQsXAqtwLv;gw=01*u|Uq%s*GE*VpIwrX26drhB9i zr2%tMtEP9S$)2|)QWYU&QuCK`+1D%HZ$j8&F)*Qxg+VU5j{^W8#8m>41DS9Qc|cLo zwOgtI=lFbzLDe926HK>upK=#;(X6bjq0R2r$|2a zhTrEM0YBxjCYs(~O)_4u2n+COZ#@w@@+On3%t6$QPd@W7QZDmYqUJX67#bRP|KI~2 zI%>q>Oc4yk~aFMjhIySbSnllVsN6@PAi z&pM1y$a>^j99^8s|2qQBDRQfXxLXplVegfCEmaBgI1uoy6}(%16Gv8%llE#jiPu6v z9X)}}#<`0m+YQq=Nvlnh*l6A+LGp z+MVwSFR`b2G zpBPu5ym}xmy0Objo?^IA&oEham@SJDf+I1&<5Z5jMhbGS$^>vGf}R7VAZ3LWPrl=IwDX4oR=T-9w6 z*UZoN^_>q3ylkWbH0)Fk+<1U+a~84|fwLzsKJ)Nt%!UtG zx_&ql-vuT{21>se$;fKtYU=J4;+mCE^X{V3o1$qsz`GAOJd67hP!z9y8U|IE`@`K(|lG#(=Z1c%N0$zN2+ShXV(|IPf<>ZmyVhDlQnW{>Y2wrR|<^JIT zYl3L@gWBv4g_*@AR>zYIm4@mZ-$J z%(1|)ar1-DzV7aU>bPW9#)Pivp1plG-HFMeoeSY`c1{OOk-6o@-g?~Bqy4SYx_1#hB0WukJn?t^}dB;cTAG(an$hAQb1 z=@mziL>Ad8F+Lg7&O+aSeb9x%)v;6PPnDEF3a;I!Oh4;FMet`ASy&x9Us^hJ{zV8O z`UNLO%9qP^xWn~&d_NBmDzEfm5we{oxL4o16p~G|5%s=gV+L(L3SFTBZXO0-hIO`| zkOdBN|D8jtN8j>#K= zcE7~ox&|*yh*J*^1(P0i`bg)cDgmpMrmd+|WqznXcY=`G6a@oY12gSaLu~+1b`blWBLhWZUqDlY68%aVh*54hQVQbm*qSEHu z&yzKV^yR!8TMe1D=)4MsHmQ1CfB?(O&opf0AV2agL^eNPE*~z{G#;2fQHn_kvOQUL zJ}W%$oom`91M#NlfBJzxP=*H?llbTJKvdYqF9IpixhTs#n%=)!6ll2hi?Rb}BOa!r zSoMGEYbX(@14}c95k0I z@VuXn%minDNiy=7onBa^LJmMDW|bG`|MoLY--(U&WnGKc`HrH=)~+mor8L4J@x^M) zu_C!rKtOYy){q2JsE{MO^OkTbp5P&c&)I1h^UaT8X)FrQek=`fe1Y(Tw=3NsCrADL zb+)e{;v|X7P8a&;4%L#+EQ-~>Jn4wZ|N3>?NTap& z^z*|K!5uwQzmqd7X5NtO9Y7*FVAShAO3dWIObv=9Iiodcp2YV`7cx8r{oe;X=OTXu z{$2#HmTO+N{T!=M)}cS z^sF0zdU2B=4`F7YO*uGN4H^|53g_&w{~N0&T1&g75zsx`13ThEHT&F+UwE2_7CSCed#HXL1M2Cryk%c1aOIov_w`-S* z7=#eNIG~A=VPl7p6ICeTBH{fEd7P+v5=|-4rJPJa<-2a1$x`%@O4Helz2jUxf^j8R zA~vc*z|KZOeMcRFuJ@grQWiqAQ^Mj4US`xxQxQvCJgr`5AyDx;4c(CjU_2n)g;P|s zf(is~l?s&m@n+zIPsn$p+fE-4MS4{bnlY?$Ugq{lqMt12LKc?De1Fj+6nJw%`b(Rs zn?|=BL~!Y0pIP;+NO)>al(@MrP0G1KEnVz4HLuau@xbMcv~luvz(5?$;350PO@HQp z5@B+~t_5cw>V_6U-o>1NG;rU;$DXU>ohCzlyv$xmhKOxdWoNgU5=cY*GhL2W`xsZO z?op!DK(75&<5s6+n%?4%ZjS3!Zq5AEgJnmHxnf3S1~slmVasl{JN7Z z14a(YlM5{=EbO0MKC1tcb(esPOQih<5rklT{@D$al)|KZe78&P)b<~eaapWil6F@3 zKFjgQK_s7aN9fcRf14i`ZaL{Hn@R}uZZlj8uE^_P?sgyC{ z8E|6O2+cr6!Q~{R^J3*8ED+ER;!C~ST*4Wm70R;{c^c%_JuA^)371289GJEIF~%T8@DXiZA}_ni z3#BCHzk{)AOl+kzbrf<(^T7gnn#H*i&N}bm7dH=`MWW;x(8j=$_fN`#Z%~%M+8>!P z47`2lA1wm645P10&pRdoO90KO&uyp@%uVGm5`*faCVmv5q%NAMi3NyqTwTGqacuj9 z5_-_Q{+C%!^77%P%`y=5k4DbdXRwMzX<(K2x_`~Uv5Coi-+-bUwO9p@@r;>=M^Q;1 zp{0*;^8IsQrqm*1OQexiim3(TKNV2_mnxa&Nz`X(Eu>PJjU10+bqZsi%39iza6zf( zuQW6naoZV?MVtOtW}Bm583Di2#OlJ}-d}Bh_m7(}prsF&6f?^0OPhbSoYm}4JxcZe zIdnUScXmnKYNa6|I%qQ8Fgr5?j@%S<=v$di{Wl|9Vp=RZJ5Q-IM+vu=BLuhwqmI0i zNwv^+w)vQO}Z)amxRlA7m?a}3xB0DI%vK>*yAwpwCZ@uH72Z|iWC#KF{uK~+EFx|;f!;@Wi0<6RoRFd9X(-Rvi8D>Pc_30QT`W+9MHBfs}M}l-dcn{CN_5nWGh`@tO&11 z*KyX`NFiTh3O{fu=JU>E9q>z#L?VGtM)s-pP_Mj2bZjURP*0;8nq54_$Np>?lZ1^%%~H(*910at zU6T3|JRbYa=bo{-oa9HC7+=e;jM)?PeI=#oI}1|R+2No!8$o+e@%tOtl+VU(y0L%X zo51PReagzvM~KyJ2&UAq0S;L5aZe)1NmAhyFu>c9amIzZhC$n=H8lQ~8b279h6peC zR|U;chuAt)z?JBjnUJEue}jey+&3^{nWFEC1@9}Zsc#%(R{rs>Z##cXOK4R;9-D+M%gTJIh zT5m}a8hcl#EXv29Tl)VID-=M(aDBcDhTV~ub!`GO@tBuDTc z&yLH+BR_uXKZ4^_rGNQU5eECA1~8LTBWt=UIOv#iN_l(pKchC z$`|eOsz&wWe^Y&m3b%|d@nIjXBKV~j$_4!SUNhx+Gh9Re%>wfclYj~#DcaDcs@~`jp+|Atv38$yi*bb}vb@5p~O%Sjt1ZK~BaSLKGi-o+*<}N`UTs zgBYzkx_N6ozYy0MU7j&EISdfPJdNasRht9YI+yKaz^0uPqA^G+79A;S;AJkDV9_%% zW5hVX(Vhp0+=c*=G(DI?3{CaI3Oqw#m5}57veZ~#%E|2hMV#cpV(wYO{eI@IEb~>p zvCmqAisvAGvD>wC>X?p)UsZsKX%=MI<3CpjC>GDKMElT!-KBhHBBC zSDN(TMj*IFoS}g4I`o7b$U^Pxl?qRbEDyqDCAuFX$=4yL>YSM1^;rfIHg~tWZs<6= zYU6Mh`dEtDpy6%vF=Y6%Pn6rlu+DM+0Aj%Qh7Z))CNBdfAa^C;$qVzJVJGYBrHLXF zRel6YNeWFH3~rE#weSHK_*TRP*u?^oZ|2JacJ1$o>ySDg9yO&yt{f5Uli#}QR@&KH zQ)|cCt_AK2AM=447j!097tBIYx?);ptiv(9-h;Y5B$Nqurm~~@e2dJD&CSikOFj{R z99g!b$|~LvteJA&kXO38Oj;1=Sp{S-?Dkz@&{|D&mrd4XJFlg^19I-Pl&P*I^1Az} z)6Bck4~NIrAG%^v>v!?@jZJ**B6nwM22@PnADN~tQVIQ=<%Tru9DSoZRnhrz+r@^y1tU@fk}dN~-mPq|!%XWRMwdyPppW zk%0Ix!d_lw9w}j?2i986H@cLMq4od?QAhUj!VfH^=blre`e|u~^8}S`NHMsX0}TM? zWoHi&hg||&lWfK=9mT!&s{d6!TDB3>f$)dFh;MA&gOsUdA7XS(aFF{D3WOBoL`J;w zrj#HEWfAIOhbsW1T{wH#LzF<3Ni-If%p_BK2>Ob5Hd2)p3I9_2leY(#&(ZC{j4Sb54{d#4djsQOq@KhUR_Flx6(v_1@>Pkz?g}htpi1gbhD5o%CA-w}u zz4zomF}QkQTxXj1z!7PpTEa4RwNI;3*$f|)w~OasR61KVyNB^boc zPjF*O0oQPckUXb=y90KK5B(p#{*Gjua28*|eH~DE?_^Z8cM{|3Xrt?=3KRptSKbhT z;G8%FmIN(ezXpc|6td{MV(&M6Qng)Xr38DMXEnde3E zuoaE8t!sQRgwZET&Wi8dm96|J;~0}O-eJ&bk*QAzKS5g<#3U|UqR1#Vs5g;iKFo}@ zb6M^Op-ii&U(!5A#yEQ25)+iQ$m8x`UdXHbiK5`}MRcmR!A-&_k7VFOBQh#H7O6TuCYSSs`4}x>SWV=cN>N#A_%F|BIm>F@2U-wK!zLGcO;N zWs;Wu&XM8Wo>{}fl=CAQR0(;g-5XQF0SnRO+~>9Z{Y6dq@sTbCQ$tr6Pxm%U;n#Go&1ZO&?}DV3tvCj3WC zR~_A5PuH3KBR>m1V+s=uE=`B)4~-C2u>q4Ff(a`tAL4D-9Mc$~Q zKA)Dpz|iNmBM{SXhmL<5$1}0ona}g_%&kHg=r9xHG^Npt17v8)K|f;nLpadp(hp_bk`wEUe^Enaal~!G-ahK{IN~?C2$f{uZFjbu$o%6DqjNlt3 z)NJ?cDwrzBG-wLlrpc8eO0A*N*V8T57DO<&8xP|zv+xlRI_&)l#U&6n% zC5*vL5epb{2MVt}@G1Cm#Y$eb%U?)$RLCL~k|3&^a{CE*g2O(WsDDh{`=Cu3Ou_}oen5t^dB{{P z3-Q1E7$xS#HlV7RNhy$siM7fHP1WzR5wA{RdSp%>M9HHhqaDZzk;p})oW}D@D;gM} zZF=1y0ityHG?77kZ58{}2Na#)edJM4@G}4EYK#?$g8~ZlCS#$2$K)B2=0*k(#mGE? z6_;K&O2P;r8*Z&78EcyhBS7nbpMu*ML|>Mz!*}#~mx_snI#^%HpbctdNk~K1Ze%r6 zZD#_kmc>13lfk|%FqM;~^CV=WKJ1H5R_?@{$tb-0MPMYyef^h=6h0@l$X+18Rh11W zV}j!X$hE3;N{&m9+8_aG=Hjo%t1~Cyig2HXnj87dYIm5w!a6qPtpkl;kVc1Fr$c1vUQD#s`Gw{%M7U_!) zZedVtECoStZ(L{|IpHi)3~7=`^Te$pDJF;<--?5hwQL(A@pd48(tC~Um4X?hf}-6UPOY?`^wj#Z$lqt;Uv0F-N;4BH`{hMxj_TzZwOJ{V*_U`s z!3QemW=oDBVzYu&dI}F>B4L3iisq%EJxf;v!jH*Kx`r|C(h1XlEU`$096-qlkKc{v z%`bEVKKexbt8t!BcOej^WSvROt_RC44P2)$hcQR+B2PUJ>ML^qC$LU^w1ioI&*po`~SDQ jw*Ei0m0=ez+!GLQbPk|5b(t}pc38^t>T;zrW}*KB%Nr`M literal 0 HcmV?d00001 diff --git a/admin/icons/cube.png b/admin/icons/cube.png new file mode 100644 index 0000000000000000000000000000000000000000..f7345ada3402ffada934e6ff6c114dda760e392a GIT binary patch literal 5527 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 GkNzL*w#ZEY literal 0 HcmV?d00001 diff --git a/admin/icons/curtain.png b/admin/icons/curtain.png new file mode 100644 index 0000000000000000000000000000000000000000..1ff590ac1dad6c62339564b4d22595961fa74e69 GIT binary patch literal 22803 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 V-gw&CUwBdhT}=ax%G(Z6{{#N$LKFZ1 literal 0 HcmV?d00001 diff --git a/admin/icons/lock_aq1.png b/admin/icons/lock_aq1.png new file mode 100644 index 0000000000000000000000000000000000000000..6cbad1058925e4d8b3e8f31516ba482149d31a05 GIT binary patch literal 14895 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 ZqyB^&RuwiXu%8n_ML|=(TJ~AU{{kBG`CkA4 literal 0 HcmV?d00001 diff --git a/admin/icons/lock_v1.png b/admin/icons/lock_v1.png new file mode 100644 index 0000000000000000000000000000000000000000..784c67dc86c9d2d0a2fbb5015693f3f5897c23c9 GIT binary patch literal 21736 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 Ohfwxzh)3{Css95WwRkoF literal 0 HcmV?d00001 diff --git a/admin/icons/magnet.png b/admin/icons/magnet.png new file mode 100644 index 0000000000000000000000000000000000000000..867de1582934dc64054542f58484546fc3e762ac GIT binary patch literal 5536 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 AEC2ui literal 0 HcmV?d00001 diff --git a/admin/icons/natgas.png b/admin/icons/natgas.png new file mode 100644 index 0000000000000000000000000000000000000000..1191240a53e82c947412d52e4598b4ab0c660438 GIT binary patch literal 24099 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�TF__ZUQ$GMoO1{ zVJ>v5g#G0w9@&l}YaKD0WRe5M#ybasffamk1W<{HIWVKEgzwUQ-s#zdD4qXpSln}T zE|%Y;TK)Dg<#4CE2m6=!B|f&Cy*kq!h6r(cbl?_Ep_VR5B*g#xT)D-4Q52L?jg0_T z1EF>b7}orWHZ0WC)(Zv-v-RD4A-a?YM+^Lf;BxFPi*K19Ac)Mo|_l_^U< z&9|CiWQiO!XK0)FU5{tz=xw3lg=SZ=(cSiSb7b-f?$08N{lw^l?bBvR-xSVS`~HX&rrnuN1bJhb7N#S^2_?AUL=qqdnexU z`=2wuzqK+12dmY}wosH}IPvg=Pv=~0c9fKIAy~S<^}EKW+FMlR$KFNpgJpX7ZHC8c ze+>s^C7qxu%ytZkM!dCgKNBc6?~-@QO4p3-4J0;$N~BN?uAXls(BZycU3HH$_ zuX=?f<5GhqMyP4w+cg?od~uF3nxd+b9lK)f%d(XB+6!a{AkRT^Al+PnN>L*n=@bO> zm>yp{?03}7zzgevf%tREaykKxYR0JNT*DOyw$f0Y!#L0^mX)@Vw+c&#TQFdn^h@z1 z>)3eH`c+C5Il7>ZdsEoQqh-VH8VKeRHfDbEZMO&T_KN+JVkEd1_7qII*9w(HQJBm3 z8K>-zSmCmUU%k26b8kQF^}l`A^|!#kZ6ie?nDpt%ti4gxW5y9m2q2rM(h6jKy!jhY z%ObbRn}%^S&OiM2(<+;`#mo2uc_4nEaZw~M$-(XHbZcv@<;B9qH00VbRd7D*;N+tAJnII`80e|y4i8VH7F z;0;3MQ!AJhklD^ESkIP~nS;E6j`vp-1R3|ImOK1k#4hHWME3hSe>z7794S~4t^7IK!_!C}$QE_I^V?R>C_Ipp^73C- zzw1DIZefqxtC<4qykMS2q|(;ZjV_v9DwFgogP~Bla-cOyVy=lsfDWAkP!ciHirV`u zN3Ur)J1}Q-+ha5#tXl5T!x7?tH|<~C8hRiGT3fuh-`mbWgPjAKf4Obawx(H`%ZxDo z2+Cvb!p*8#Et`_S2A#c&l0k_+c{{J2>FELl>FhzNG8Uw?I!mF z5J|)o@>L*c)5c|e;C^E(!j(i&pqjI?LJWRAxT>({I?_IoT@~IJ;m!N6AD?OM<=gLoviL;^r@IF3V4rkaT4w60|JB-R&fNUy^iDqYLKtNL5cGN+r zi*>O&JAeaR6U7yISly(UEHj9+Zw`2MH5xPYErNyCd-sSaL=ne~{^W||@1A*g-m;EU z?KGKRkmDc8c~YWNB41Mg^7BpI?4KVra`mCjN-vdu<2_P8^_6(HRNTy<0*x?_wXoHa zNty5nbbgV=foqFyL#SZG=war>`sY$eaEo@eoIv?L0NxG(J$~je2>P5?WpH=8*-nxJP2m|XR&-E5V65HlwN?-U$V5f{ zCFqd@JDkVi&y(ocpoS(MDGI)jlVEP2tQX(*W+@!5##Y*c2nvHz_~ntKHZfP1AFMvO zkqEMoQcligpO+`VOVJ&Kuke~-iZ_3WUf8Pt?cdH3%D{{Wt9k+CYpNXf<1O)~d`Y-51-GT2C_L81;lX5Ttf1Z_1SRTq;63c$Z zZVS$HJG!2j)Mx3nrdC%0Vi>XH$LX|G59@R22*@2*5yO>zi7vtdxPw9FPO~^bjI+9@ zgCq#8kw3ESEiuDLmATD`pV(dv8ymA(S<2l~sM!hufPz%PPqc$|=}Ms;3>sMcJUB@a z7mAXa&vw-O@)f@Ryl7Vjz_y{-Bg#u|rWisG(DMtr(()nX@N=wQe=Es2)MRhqQn7d( zUuu&MGTR*z%R6`O;mr^%Udw`nHV?ek6LTqrU&3(L>R)=5$*S8foDvNZa6##@fhC>&PG?ICl2iCq)I@+t$O?r*{pL7q+nYz327 zN@%|Ba-sgl#=zEx%2^qEY;_2X+?n%eDld`aR0DBI;KP}>q4GId`uuo50u$4os-56T zTVucTt{pi0$=RxkZIJYz`-BrYYc@e_m&b)NDFLy@b7g5(Xl}(b0!w1S$IwJy-rmr@ zH7S_GVT_a)8a_7pQF)*Xnn`IZhYS=nlF1Mv-wSZ3a6rS|o^^me_<0ea?xFt5^H| z9njal5n#WX|7eAZ!y*toO3!XW-=jbXO^pHLBDO#PR%RUnxc3-{AAW?dH?;Y1*XFMW zG-2=8ITPh#u8N2;O(!EhQUdjgy!XkSS=Stg^wB0sMfU*MJmX$Lu;z6D*s)K!Ao+>J zYqLADT;MjR@0d%W%`5m0MMn+VWxa8qkCpC%!EY`GwS?JDh#S9G#-piKQm`aH3}`x+ ztbHP##DuILP_JOOW$q#d1QJkrWkP=nGwS~%MBLAmL|*Z)JX_m%_xI+aW+CI@%1Fxy zQQpzaLp18XMIJ^1LOkuq(mx&>r|o;Ioxy!X4>gto^7&_^47dz_3Z(U|VzmUMb#keSART(yh{>;SAXk1 zR0<+?!0u$F4}Ouag+<4A3I-Rid!5gim2X?o^u8IbMl4dd(N?@q=?~T7hfr?lIc*bl zvF}ka9ooyE4H_NG*cW;x#Y(jn0Cd8c)iFv44dA4lC^HK{Ki<=|`u%IuS7h0_D;O8# ziCOtwP37gpF(TWEx}Q$W6Pb{uce7h$B(^TRRgGaZxGo!VQ897QEehpgws(o*Wb2v5 zU$rug=}eX1BGiMaK+2-awvnZGdv3q3s;>UK~DA z%>}KE+HQFMR{eZ?foSgW$$5k6zf#=Z9dw@f9p^3f{$;AukS3Dnm1+dt@oXt>o~qF1 zBro?|qC7RL-nbI#K6NZ$>t5@_w!*YW8uZO#8;cCjH3P2ob|%7Y&72Fp2P;AFnSA&= z9rl`FjDqm0IPxr;%6bcW6{>FI8||+iz_A~j>;*Vq36s9JCm+`Lij@s%)%cN>LMZ?6 zP$*IG?3r}W>vQeM>JagoT;t8flScGc`r(h__@#WHaRv@(czGqF6dP)Xx2dPM4GGClMoROjnRTwD#BB>fQ*AJtym zPA`mshWhV*mj+CRX9P`^vM9>Kgd#AxGBT}VgqN+b=RZ19dT`XEjq1nPkjua;L7d>Wt5F(XTmq!tsNd55weeY#LVCo`!Y8wJ_%@OWd`C^0fK!>8NhBXih5!9z3I_b^(;XAV)*1s!e>0YgNb^EKqG>_ z$EB-uUdm`xGO>I}NMC-y~+5zn=+D|iewzp;sH&&xwSQ9>;>Bla9K*m-AXt;45 z!b)MZGgn$KDt5V8LE_0+Y4JxZa^|Axq0fx@n*8!V6#i>-P?7fgoN`{`9Jy!^;?>(M zfIYjbg6+5qXYXF!=41FFTXjIIUBy@ynVc0z$Aefd6WovkIvn-)S#_we4lBEEyRPwS zeYxev)p+yi=rbA6J4q!}qDIrfea*^p5Fw|hh|T3;XdPSrN^i)Y7>Q3a?n^Bko|jld zMhW2RzRSF&cWaNN`^b4O!9x+)Jy^W5%#=)gxL)Ng7o}A`)`?b;@n8k@2Xx*rFU?G; z=Y{gvmVe!!+p#Z;`*I*Y<}#*gM+nv6d;Bq&doGS~dQLXQ>h52=X7b<{W(41*K?j;O z|1s;!ak*%gVkfR&gAAVV0p`{1yv(@LKT`*0k<+cr(&rvEoKKToThA(vjDyitqdE%$ z^Ag=>`HJSl`R)t_cXhgcTW0787e`4 zEX(kboyN1Y-k0e|CD*numx4#=S(&LxDveVaoJA7U0&d4emHUnTYXJQMAUMd!iFwE& zYyAlf2a?>SCA{%E#+dC_AZ-9%^jrvK8T9M*ot!5@=}xF*YnlliIQj$yfF!DOLBY9f zSsc%7(G<#SlJPtlY|Ba7jrVb-1M(|Uy5BNcfPv#MDTEmO`6A=rbPCv7vlU^SLJ&x_ zHPp@JE+h3f%Oy!knbIGKc-DIAP4PW0e2 zA5g@+&huB~#Z`TPmAI$8r5iQ92=Ix8xLh=mnU`{LqK@Wk`L++YQgJ;EM%QBr(|nV{ zrZry4h*}^N#n_EvHSA>c)cFUYltI~*GVj>Ta0RpmV3;+`Z;6J=Thuk%-gW4e3bis z9xVQz+r*x(m(@pEi^4R80~aP=U;4{J=6tQ=C1z0C>;21~+2Zvs_T0XBofO^}lv(&! zf8E=>%+FP)M0?@S^Vcs$bwZ!YF(U%v!M`(hmbV55bS2SSA07}*#uIDa%18~Cm;as! zjtI8O13c!USqWQ?e_9vY!#Q8caq;XVxl7Id=e7mk)qRIUKWJ?$Cz^pkd~3wyU=`uK z+;*DBJ$bT#&aK~|$Fvs?C*E?XVH9?iPzF?I3;Ir6nMOB0Q#hkdHsyVwIl7Ho3@FU4 z@4(q}Y0++&PLl+EA&SJ^tN#;S!u7r&8P25Cic`Jz>ki$!6KPqSP;Zr>bzQF8d6%m7 z@!|n`fjr>#-AIFiVDq(?02*OaYDiGL-fx~J0IWAgWGgdhz=_)K6uKHSVOWeIz7#?X z05(qQ-9BTvN4b6>FIaoj`_W*N4vkL#ci9wP5}O#HnH=Dh8fu*g8bt`ttd+^PX%jm^ zgh`HAg>%);WShHC61?7h-PLwG*fvFoxOGQ8IL&0q5qKY*{c4n?g;T!&n6}CWG~@Oa z08fN98BIRY9O*TBd-B){r}c{qDoAHbt!d-)DCYndAaItAPY&(|9F@GPlYUQt@nzft z33eC|?DYol7QXdEN5%hVSGF9AjZGJfoH~vsMil-@vYxb)BL5Ij@2SN~yZw3Wi_Dga zV)cETkQ}WE$b4Ary!6X4XXXchj@8LztSJk?$u8pW(OX=upFQx=-}L@p`*UF+gVLMb zDz&JavElmYWl`7`^*5LKjS-uec*?-zm;i1}T}k@SN8ubVIF4wxXHd`yr_|#4rMrO! zF?gRkwtK}Qsq8 z=jgNGNQ&%S&B)l77$JeV4406pPF_~mhHcy8GQ=) z#r^qnP}1RC+udB(tGSQrX{S%lCCq0m5AL=PCVdk2yt00c+ni9ql*5Ru(oC59$1hoA1Hk;o z|6R0+w;Gsw>|5Km#bFA&*k7b*!nTwdi)?k6>uesPtfT}J%|)=9#?&J1sBfxO z#xaPVb}o=qxIrZ;0>EWaVVHf7t3#X+k-?4wQ4FMh6H6s`;}T-6`FaiAr^IbSJaGHw z?#QJ}j&ady>F5vd&1H!`eHcePfkgidiq~8e>jwceXOw=wEXKfB z(<2nqcX5L#jZCOZ&P)fonw|n^>n6a_-RHKWGqz24B*eN8^f# zq+ach=ik8PBOV1)u8#d$lX;rU!-H)8$raId1s-@-x1moZCTRV3{s8~h9i*Uf{|=zg zEReAQUB>kSU{mEX?KgH)67jWv~vSzpr!{*a2JDe z#_lA*v1xLM%<{3+(8Fa6*S4}j2X}f@5U|nbR~wA>3u)cF^PmVpY#|#2mQw!dwQ1lZ zs8VD+DL-b1ig2Fj81a*=C-9Kx1J8%UA08hGu0~o$2+5BVXZK(bdA(OA7^dL-et~Z9 z=Uy|^k^S1$DgE-IoGZx^kYpSP#<6CW$0;to?ctd%5}?-`Wt*8gVO1iEWK+=n9`M$@ zG-c@-?Ri>Pv6(&OX)AJx{t~2k$V*E3P(e;E(F1IBkTkqqrI?QYe$BH!FNzf#dezMD znP#eQXHL2uZ;VJAiRzRf*w34*6>}H$Z`SttQe?3Ke9Q&SR{7}i(XBfG(;2X>85(+E zm6&Ro?lyEdYFAerA<|dwGGQ@9sF3{@tvr+hW>=8D!+E~-#rzJS6U}`7OL#1KLr!e$ zPJG3(?b36S{uWn#MyxBG#fMmZ-WT^c!T)O7?K8hF04jceq(*>l^eaV#c$x^X>B2p< z_S;CI8v;GI&Z10Epnn7i(yJG_896?=;F3;>@Pmbeb(zF;GrT9=nXGtw_k8e?|td<)X0zEVLqGQsa8*-}3Su|e@(72bjnJk=N! z@Sk6Dfgd7(ANNMXM#$wQ9y&*{cn>eM{m)R;mZmziLo-NB>c!iQIxW)?&io9Y<1ZOy z0MCt=89LR2gzV4_@7#^!FCKfP-_yFj(t>`CbYW0=^~tF*30oywrNookiAs_(yfo0@ zw?vLyGxF|f!9cL#NYfA0ob%QNX*SOS^86DWm3hu)41;(eQFrKF@_eMWT^Ejw$)()e z2{02mg95c|O*w->9G$;^yrdX};n6xPg;Voh*aay>mU}PI6tQNBaVp!bU+mRANZ%p1 zvDG}@(TSQTH^?D(Ji}s!^;G*PmVM#PM$rvef$yFImsD>J`GCNGS;}3PZa0H=oG=(ri?knL39)aR6l`U^gmyr zu!=yl#S9$Qk)f2#xe7iX2DOi{Ul2FESn`uhuQ~jQNqh=gjo75yBe9xueYExd4FLrB zj(8bZEh>*?FddCshBd95zV%OCw}A?a`tV2%8}1Py&<9)K#Jm!{TKlpSt8g3!&OeOw z)Ke}hOcG$~18}g&OZswj=K+bcjBt2|^WjPr*s+>Imz3~P=N3)!ihR06_XDqK?~q=J zdu+`vpSvCJsj%>S{NrzOV)-vNz|u-li1#BlX7p1mGPnnolIL&LJ+xt5$gaz>KW#tO z2U|#T*_aH9{tAo*wmXUciDbY>D~-(4m@I6`NO!D!FPh}=;(=(T=VRX4J^AF|#=lTH z?5Eh)pumjtRf@LUcqJfFHDL7e7a9u0zg?*gp6aZ$B9w>71^~mjvTQKzgsWlksJ^+gHQ>&`Cb;{f3Kwq9lB@tYoTd>26_3JBq13VUyXY ze^YUV+LOq=RBMJ3pP?5Zy@9f(h4T?#$|*~2f`fyf{gi%nGE;XZahnzR%XhHGdm>Ja zK;m{J8?#Mk@#0i5`U$~|gV1679Y>)k1Mi$y63+QMlmlzZjx}q>{1|=f80}rMICP@a zr>X3}nOY;HQ^Det-BdA_4a%qy#vKYQ^{5>K)_5Daj@@ufoaM ziGIDG$exSvQAEXc3LJ9}`)O_(MORlzzFtqY_T{({ZTjy80O6eqSr%U@PRnx3#hKcM zG&9+=$m)R;ikZZW2qJyJkxDo|C5d=P&uGbVmkRlc0@wVACgCD@04{~mEF zx1jNnvw>$1F%HMhiSb$%U=Dh7Vpzw@vGu3V1 zvCB=6Ai==-%JF`fo033ed3j|fCx*tp<*IgNgGQxB$8lS4(>trcrZTKa94=1?orpO3 z9LxIIJ$W#r;HP9}upXbjlV;&Xg9kF3;J@{dS*qE(8Fg@ppqXcd#rQ$_I_{73Y`5St zEI6e}HA_2U)~l(nV|e-7_;cO40?~ErI3TU+Mx0DiRBcLgpMqe3mCV;+|NE0TFk-d^ zTi67fcP{WJ{VY^wR()RWN{yTAkluUWKpF6N?#AQFbOua`L)Y|4EOB!sf2)l8o%=AQHyb$fx*|b0trVIPRTe) z?~BnD)5qtjwe3@(AOJ)cj^qUXvGb4%WdtY`a?tr= z5Blt$ajD!W3qI9P`dm=2`s>+Z9EhTs7BUc=KPE?#7?oM~3xh~mLYn*%O#a<49E_5E z_valAoNn@qLwd!9 zr`!s-cH%Z4&R9a?_f0z3-ZF9u-L&zWu(2mRExw4V^T0Y7tP9}=#ACj1ZvIe4+P_9o<5 zbEg878=I>>eJsc%kHzj-18}lOLWPJ4Wxp%e48lYH63N?^$3_NKBqcpN#}-!~Sjts? zdDQ$*B{``hSe3v42P@;Kwy-_Nc-h;KK1fSS2#JRwNn#N~!utl>zPZChowZSQdg}n( z%~MQ&Ut~itSecDPd=vZKK%Y_W+He4~zw{gJ`-J_fN6D%>FJwTQ0}j{*R5~30?k5io z41`%D4n~&Z5JKT+L@eFL#|W^(cxNxd6Wwprt3f>d+Ff8g|16DbDzGEjF+u zZk_1r`Oi(n3=tq0ToEmLALP~p%PN5^G-2AZQ#j}m1q>YSWE0;vi8w~Z6HM|vWUb`F zi?vg$!0fU4i~y!iEb+sRWIX_8g45}MV4nuGfs$?}b2d*R&J0Z@gvg>6IXtDK zm8^n^DxbR2hSX9-(ND>N z;&MA(PmX0I2S3oRg{k>Clf4;V^<{unU4H6*m`KuDMXNiCL$E}b11B9mYXcPMcWTk2 zHn_O1B$By6oo*?9&(r&T+oezQMqt@ug>Gz*^MuZK-SQ$CLFXt2G27$5W*G5}h=}V6 zpH7tj7BK}3B=%m3NcxX7`4r#3_44u*@_34YR!%BUkdIZbA^5q*C!QL;&vN2r46t_7 zL+BHUljYH9bH`%`(0&}M52il9`{CF1hyDSva?=wgu|6>#`h-x#T&Nk?F?}&(IddJv zQ1}En?6Xl7x^!K-RM<_#*k^Vx8(4==HS2NnLQGnnGZ@9lY#r=Jeb6D)ixGYp|D7Jo zo+zvPicqG{*I~>iRQTjuS;#}aU`rvfbZAI4{uKe$4{rm5G_NzEd?THmT145$5*9SC zfO!f|Dx@}5R*3ZlydB}~Wn4SKn1IMd#N&z8Q#>;mp|K#s8kVA-U8Y%@_rH8|B&f=9 z-&+-aRWrBmjmPlNT@VuE<9f4Fl`&Td?A0s!a*swg8P~qA9|qhISsRt2Pl#ZVY{&FU zS#se$@3pt4<-%!0W!9e0qV+*c3W@Rw1|m33$1s9}zHW18>Z48nZ)&WpQ6*)m+I4wD zkD%-(y9r)-d3_za=s_LzcG4$YVPP(~v#Z}5f8Ezl&PKjjMr2Piie=f3;^+}t?`ewQ zn|9Bil8}(?V7+Cj+7AL}T%THoGDZBk?>1F!SzfArZvMOY+=sWyNAm2M|8c-IT^Nu5 z0i#BlgMeI9TUmQKxi2wiu%~Hvs!jjf3d!itV5&9sbFTuBkwY5QFfex6kUGWlS0Jei z07@|Tnbs_ATnN3J&HlB<*o*_@r;9yBN2$f&@=A?x8Fqu3zopi}d1SZ7EWI_6tA&zg zjQO!!le61)2b8UE08q?_KE~++UxyiohbN(QZ51bn>jte_59(GvYfBGz!I}|U)a2E< zp0fKH^_Gl;)mJ+?+*|H|9aIi+E~HmeTNTKctbR=Na$4(2k2Lv2&Jx|_DC!S?x$W0H zmpB@u9xagy+RGRJXI`NsR~-PGEgulZwxO@rt-F<#gfn5v$QehUd&6Ivq4RBsOlY&* zW4*X|YUZz!5xwE*YQjW%$}k1iT}2mqAmje5g##KHH^S(DQx`+)x9RRzX9MXF%gKU8 zlBdAI5Sav8Oy#1U50j>SO~S_27%Q*-v~M*S<8%72^SR9Ino@VY7EY)w)Xmi=fonv) zQ~2(A$$;(?Ym5lUbAX{pB4+>udGcNJ2$sk_esC zyw!}|+x2n{(c=RK0b19?tjV9IrdQ_EnOQv>`@RQDWf@zH=^&_Gn)OlKr;f6x5NH#_ zUInRFt`+oK94_#O7CFR83e_HzpMRO6hwL}d&QDE4| z&!Jxgae5Sge$C5zmjq*fsVl8r9?pNX|9jYT(eWOW0)Ni#A}ek=sQ71*TyS%aWT{_nQ)oPRp9=2rLHQdSITCE|>O%|3 zAZEs3z$Y$sI4`rmPH5S+I4hQcNIT>6X~g~{%8fOT2HW1zpveE}eI$GuE?04tOcJic^ZKDSR0uo07HqbjaVhr=vBM!U zJSx&Akn_3dTgl`0|6MVizC?MyhpC6B*K(HTMueplEB=RSn9^@=+Rx4dE&9_pbV|)u zeJ?9vZs5Xk^!oTk(z8h$%$t+va5~UD8w@muhheC{$Pgx*)mjq&@;jBlbmEm4N?kSL z5ITew9B$X!mcSxC@!tiIrpqwR6<3hj7_q|dQQ`7Ld!_y}0ls2Y(Z6432hzP4 z)k0nTy!IW>8#eLe7~F0T)4F1c7<7}$E$9>S6h5y768adU2b8r3jhW|Y6cV8o%W_ej ztwKgh1vQD!U{cYbTvfFUCKzE&9{21M;UZy8#QebSYTsLxoOc_%K_sBg(05uoSq2lq zfA$M#CsVxeprRbiyo(wzZGtJr#xQrxYVk&r&r&Of&Q8{zFX;5>dSR*OqH&|i&(%$I z*{WkpWxo%ro;!3JwAFf(rTTl`OSu#;2bHHTnlJ9omLQFuQJpCZ#m{Va zO6$tT+tAY#o6~I1(L)~@Qyp@pT(KS@m9$(({M_oLV?Xo|=EqYQfp&l7Topz$$qb!f zVm42VUM_0XX(^0K>ZEoUxdscOB`sZ+XmRTx7<&J+Vpt=oaSb^pbzA#+(MTIBk; zv=%!M={OpkfKOrMdgb_+CFiclQ7RTBtSFQYI&)j*?B$~O!p>sXKQ-!P z&k~T7k9gnkJ|AFBgdRtyf`4kWfuBiU@$rt2#jK0?+1gWMTizC``P%G_O$Mzq?0Ri* z5?fNKZ+bFJKZ>m%?rf3G{wBDoy5svF>2sjj$1(8pH|X$>vG&NRm+_6d2@c~&r4C^L z7eQOSw`_5$+tBaH+~X#MQL4WQ9m(i=vEbl+VL`ef7KIA$=#GVxu*7fPD$VI~?p@cr z`wfTtsYA5#l2FqHs98^x#~TqaPS;D5O%*TI2O78X1&kKe$$JfqH;vPhn=adq&;v3; z*4;-q`Aa;08m%3QS2I=*ONr;t&NsR5_?2d(wb_9I*JnCtrK)TnNi4E}#Q+CAgn#(c zituKY=xJ`l+IOWLIjIA`18*Dd_(E2r#r5K|>Bmd+2br@2ehpTn-4zw{Q+f{S6mA}u zT?}t2ygkg0Oq8XdvHysmQZapm0uZVzVM@mdMPf!8RC{H4Sz)><;>jyHC?Tz}lJ|eU z94=wn7(kVq{NlP=ut+f2rfxneC~JvZT@23Iyxx?|qzYF^UG#iJLXruPVbXh3>aLs<{^W)4knuLnec}BJ-lG zhSThZH8B2p0MK}@etmbZn0;oyV;|0!vYp9w;`2->`pTPyE|3hljW&MBS|fdN7E8FQ zvG?hV`SbJs+d~_lnW3V->Q8Hy+p)|WfB0i>OS@RN6djI4suQ}Jnb$J_}~t1{A6 zyYn}@23Wu%PH|DvqFMZ13=~0Vz{`&9M+U6KN|sv^rjXpa2UH3Ahr8BG7hdKa*Q>tr z8z;<^$%Th^FT5<^)}pLeRj{e7k8B2ye8`sr7?ew|)$O9;-umqFWUp^Rf@_Ew)vG~~ zgZ%BN_vyYn)08lY=cwWbe71z0{3zyC&v@w2u#up2IHYmGfI;E!t7_3lg@Xez-+Mge zNvf>TnOC&}^=IH!^Z=M{2-VLhnz1h-L1JJeE(6QKUvCAWj6G%ziCg<_zrs{UrjEba7dq2W zTSi}cqe-jKXs}M!5gUss5GE%Xupy#AM%pQ>_IHK49l)B}5CZheh&tBWY?uI6H#Z3! zAAS;fQ58Q1y!YKgihF-B2gBOA!(NC%m-ywwEPR2YOCe(Vk2k5 z9QaAgFt9%`jf&kxoa0A#1iuT_o3*ho)D7RUvR3Zjg0{|hW?NfeD|d+361|5EUfz$CHfBvjP_0_(~*|tgRKg4mq!o!T#267Yi2T9XqLItP1>nM($ zr3p_GA^jnJ(|A7&)sJO6*wY736p(%PEt5W3a&$cA+jH-}BPIc0;)@6UQiZl(a?b-$ z6e#bWgr&T8j1wP*CFU`*Pu>8aU>{;r0#Oh-TI*v}vj#d-lSceM|B~8gd@W1w;KF2d zBqEIfASsO}|4@id^T?oOET8DblWRRHwillUe0}i*Nc8*b$ep+nzp?hoC;5}u^qn2@ zQRPToBQ^o3@E8woc+>Af+2y70`9@iZ6U)k47o8tS_!z1~5A9aC^9}Z~aZmv;>s}u| z51?D?R0{r~CH<<>mHj{n2ovMLMw91IO^K6u)dy{>6Tz_F5z+@6s^OzTH0*=8m6al5 zp)tvI_&dfj8@RFptIV(RzL8OxawQ7amFJ4xG7nS-<02_tK&#e@)@&`=y6IBz@(kO| zPla|p|E2Xf%Q`2&p|t#4XGQV)7EgsAFqHbQ$3i5VzYeh)y0AAkTky<%WzZU!a-ASn z|IZz8XdK-U%^lB7cdX_xseiEIaCWHLQ3;4pzNwX^rn{=*(v5I6kIOE$-R;PDcb(Vs zI&fBG;2DbIVMr**#;M8A!|n||I$5XW70#Bu#MHK^JQD%;%0cdV5o<_^lC~kYY7~M9 z3_>Gbo&Vj~^hevzwT^hQCPXiv1}}&?*f%z86{c8MF5b6p_=@`u)Il#=Tlr4c=O-Hp zfX|>>G^E+=i7O!dXtf0h-0_p&6{a=^S^6G<4H1Y7DIM*sA?8o{qf$J7aB0NvB>d+) z{Rz5RSQXvlNB0swN5b>{oU`IjYv06oLmGS&6+cK_i9kF(Db6miZcznx2KY~wS>VFV zO_?Or6Eb04@3mMmigi4@L0hD(FxEQw@pWs@R3Dh<*QFo_Qi^3$+B65Oitl z1we?r-m>(?z5wS&1c!qj%Qu%c!|2r<#|ST_*zQb+?9ZGXDY@~u z9yA_5J2O3DCm(qNuSkx++rJLiS~@j$D|gmRds-%6{iCfP$q+Qxj{%%kB?tOi6+6$86i)9uWYW;uTZuG9z>EB8dN%4M8Z$ zBDYDV8LHg??e^Ju;F96T)6Q3}ymgvWX3G@|fG1zrB7)xZZ;S`;O|3LS)*e*^nx{nz z9VE`|C(Z$xONVb-iw3`nTu@#gH36!Z`D~~0badRsXl&~;RrBbBW*NyzcaSGL>os$^ ztBXwncVD)iZWsZ!Rs}CTrAN#xPWpT+%KbP}pfGI6uXl3&Me^)qk;FL}QG-8U7@TnA zEK{=x@X)AU@=o{zsCIwZnqZbfK(zQP-5Y9H-#1qzR}OMcdduJII5xz?{4}B8c>nPJ zt3x~={rSE@c@mlo^%&PKd+G=O^G_3C-t{jPb>VC)^z_RcZh4`Q-pA|B^rKI!gBqJT z=d$Fg5}K_%njb~;h4@L(^F3ssJg0q?eH$Xre!KuJy2`X;j;WSZQUaK7)UB|a9;IJZ zbYl7?wcjN!LZA#;%DDV1==TmkSj(|tJH?&5dUU5C^w+>vwZfBaJRu`E#QiW<=Pj&N z<8w2?H_uwX3=s?SE9Fc);5*ykGk;apg%eh{CtYU1*~@Gi7wiFC>>D)YR3Bv$;|M<= zo}{+fmBUvmn&_(Yn3qPLTnV50+7oZEpoTHId_DFZJTKID=n8;e#usdwOR~lRBz%!V zas&r#l(tuBN&oyrPSY6GzVL34fFYAMqm8Vf#8DEAnI^s|zl3&S`~5+-*2o)$oGTM~ z+&@(LfA>jggZOS)^DZn%g}SImzi$6in3&*k+3RISa`;*E=zw(?IA%T@CtS)gwA``K znBCFhc>o}T*1z_jIQTI2(X(MmHrX@vbQF=T~CWc+HM)h>OmJr^;3OB zRkr{7+(X~L7QN>9}4<7^Sr z%HAw=i%|uC@g7|SLQnSze;vt2EsOD(7bFV+eW??E;NGO49n?gMysC27?h)FB2XLX?z7A=nJHj%_3%{E;Xv|=2C3d6_y_kwwx>{ z@O?Q#AoUfR84a2=j4@D%c(ZvSQjZjXgGH z$-WJ-KL70YZCrbNynobHRtzp2Uhvk?>Q=?y)5W;^^G^^FQyrF!0?W;nx2VDBya&st zU)^ZPgQ@&p4jnT7lx+y+0sq+UXmma`W#pPKV~F83h1TjlA(g}Nntog&;4eUW#i$uZ%Zs{qqRJUuUK8yK^t6s!dX{Z zKaGPf)#@3zPh2jR(6%AxDt*?cp1!cCG2^BJG*`i}UBw1?sk7BZ5>gvx_w?MK`#BNT zFh1=XV$&5pNa;C{Wu+Lq_fnNWcgWf#kVXt>fpGCfI(~1F>Mh&=J$u;J@GpkZ@6v2`>2E9Kd)Sb@GzH$RT*C2b}}aW&+#=`s6L zACc>_mrAYx1G&~k0Mi7X(@e+9Wrj2F+2eK)se`+Gk;VzZ&|IK$?k0<`ngHP>GG9w7 zD%nZl=Q$uj4-uYY5vFuJEIvRD#;BV0dgVk~K)2<&74&GrE!JCk(AW(i?im;&a^=e~ z?H?W?HiuSadT%KHi{R`p@3#>eXrnCHi%`@R?=e(#-LrSaaNMw>-v1to6JqlF^v$+% z45PDt&3>L+#Zg~;mTipI3k0oxyzU&u{gLHeCn7}6sCU|p&lX%Ih>t0Jq{r3bzE~mY zK$vd*%6`BJ?bI-Sg~N03xgg=%Mu-v#>1Yh2Z6{PW$lu#e^-!SyIlrzveT$@C#6l7g zC~NLREDRH}3|G#hq{()XQ0RMQ4JB#wANnmbj*Y`S0D6d%dT<*|75?h0s7B9iOA>&M zWU1{|?c0Q$(xZmykRL#30{n;9S?K{o6qw5Z(h$6tQ2M~3-Z_7+4!)97MC*hwNaReg zALbn0Gzp%VwjVT}gp$qyoJm9@99lsC^M*_qm&)@2zkDD3rFu25F>JEO`FaeP45-gQ z_9YfNgG4vGW?9Xuqlfo3ok1Af1OC28jSv?hL!0Q{1}~L|rL6N|YeB1@!uILvQrAp?z$`KO8 z`56#;0af!)2d)yLl!T5k-#=b3T~?(f)R>mYe1h<%3AT9H8o$^wIyRlEU{W^-qS;`Q z!o;P(HKighW5%j8EPgD6$RswMUR~Z)y8S`pV|Dg$kGZwU%JC{tojgHcYIwYx(&3^g z9{x7S&9;(Qe%*c@o+Y_%<#{+z>H?A%1YIiWs(N9ATsXLc6&f+3m5fhT<+6-{`7p^8 zxFs?5?wT?w+Nq4jKh&8*#gG*$l1T^Hu&Pbc_e_gQa*p$Aehg@p*Vuem*g31E{+N$; zE-PU8u%Q<4%pf5u7H`l2#a0ZMOngdHWwLSJ;_Nd-Pr5*#jBV02GrclnzoDUV3#3>K zLz-VLaNbKoKR(v%@;94Hh=lVYoWr01FzlwG>~Q{v z=x|NLwVYdK|9-{DuEQ=E@^%v3sHB>-T&Vtq1GN3%7YxIw#gU_v1N%M5AQ>?NVFVfU zPBMCvR5li%p#G}e^Ls*Ff8`3MT#vSt#_wt#9ULh1{~3HgQ6ZNbdiY^{{95J`64T+B zuy|Ai13d(f1(=*(*H0rqtas}gbV~}P5wZEVwh^q@c;W`RQe!}LP`pp_%dKvT4tzhk zEj=;e8I-MsO@apY^>tW$1^Dl$PgFr%ZoV>0m=6ww1|R8%-Oz_QAxX-qVLn(y=gJaj zLDkGFD1P$?-&yglHZpwgg-9DV$$z-F-pHSl^W&{h^pfXqz~cD7McWN2dY8;lUN)s7tjN>N8MO z>>5}Jv^+($o8@^@pJhnv^|4;;Jk2}(UTb#GTzlf>U1s6KvoCkXSA`oyDy>r$Ai{IcTO=g^6*1MXYnvqjTHQYaYwizz`vgg>Z$xrm><*jA!2Nc&hYTNLe3X=yDTZqj;qm@G6scr7d=cn4f6@B(NqKUo}qcmk~RH1y2X*;AOcg(_4d?1}leD>B=Ky&t#hw=2;O5%l2dwJ_$Ml%kfCcy@| zBNZoI==t6|0aNnoF?qPB@qr^9zz`HW(4bXID^;t3i+!*09=h)l`B-yY0E}kbuv@b} z(1<9=;aq4Haz?Z5YRFOq2vzzdq6)MRN;+U+8M5NYz@|e<191~9_l6gZ&GvX>*3{}) z3l(4D^4p0FDiIIfa6Vm2Xw$!qsiQ^N^gj~F_$Bt+C|fM;tDbHC{LnYo-@?TP0k)&x z8~K-~_zAfZXy>}hwW)WHP0QkV=o)k zj}Ds|!Al4ZRH?`Kros0TJ9M3d$pqZ?&8i~!@5!dPcTs=ormrhtd(a!?*NsmuZcm3d zQwrGoyu18|easz2DfFEfwj+P)^yP?5i|J5JXr~oJvCI9a87h&iC!VEA`mRoti^xA~ zad-%u8#$DE;*%=n%%D;{%mKDjqE0J&?LAJq>;Jglb1&^)a;l>2U%G=PpSs5U#!P8q zc1fRE12Nn4s<#P#ML`ynl4j9Ry6NW%Gzjzt?mZOQhS2z1` zd+3f}bVvD1M@&qY@k9c9=`)V!FA@Y`b&yc8roWGKGPl|zlRHQJS9R78=t!Cl>@=o` zaPn4@%3Jp}j92lc4w#lnaD;)dsWJ{S{bG*D>KSOaM%^e59L?JHYW^t#QER_{C z8eJ{^2cYJJQt0zk$GUsy32lDksx;RUcg4~a@(*sX$J2$64+S>WFi*iq-c+O=WY`V% z)6p9gK@u=Cet$!E#VsqNfc%tt{TWJI>{9bBYN_|9!eybi9QDjpf>B{`^RIaNzm;sJ zwqe69M5bVo;t11hDj5+rlGX%eX-Tu-ptJ=vlxr?r_QVK>vw`=^5JjUR>Aof3f%H-70ShO>CDqIu-skr5z}xC(c#TG67vOhjt2kcIG8a4CVcw zP0D6=j+54)Y`%q6bwJFc`@Z9Zmxu8*D<;+n2vca= z>Vc6!F;29Y=l_lyr`ODTyDuT=06f!69osPCTx`^&uf73~Y+PzQ6`za0Y`Tg1D6cQC6}Vk?|p` zW&F1Wt-w?7EDnxh#02J|2n{MS7CtM5mf%;h2fPG7{1AjV38G2Ib42G zwr*QEV0ukHwta#|tnzZ-mJ#0l=E2RxP!GV9(M69&1?69YKrg^jDPV)sCUuCPKF3zf zfxwsiw4h-w{VQa4CuP3P;|0i2syOgdvA6NTMk(% z?Pc9f;`x{M1Q53*puTT+MBA7l{$GXPQ#fJ1{Ifv}HJ4DXz0uWA-c5&5}@%=n=PaI?bh zK-2Y`6ZZD|dTKOPn*A-t#D$V&k;Q2Ld>0{avtY4|^5eGE;u_#_4NyaC!{s7D1c(Mn znOwSIOLMmK?zU88yJ>-i+9a`h>dmKnhyhd0wd!zHgM594$>pemA5HalR}of=a0w9`C+$Ejqa+UEkMw{TDn6yg=)dbLp}+|0qmB69rV7=DLYwPn z^FoW3B9M&|h!rx3s?HJo1xtb$#jxFp+a*MaZzPLjzOxQYz7$TN0>Ous!`HLe+{`7M zOz^#TUq6`9iR9uLmNVRY>Y{3H2)`~XAP>Lx@VE#xEn(v3=ZGLO9T8MbJB^9j7A@1M zh=?SVjj@PYiPo#%zl@9@sG@YCsQ}Y77n~Q;Mq}!Cs}6{C=F%@IQePDoRyH^iCYLWt@@t z!>EuwMv=^()5dQXOTWT8u$!}MM_APq)K2#CsrN~HzN!+i*bzjKf=FCrT_o{ literal 0 HcmV?d00001 diff --git a/admin/icons/plug.png b/admin/icons/plug.png new file mode 100644 index 0000000000000000000000000000000000000000..b88ec58d0f23f4447599c9441157974f8cad8f77 GIT binary patch literal 6495 zcmai3c{tQv*!~TZAsR~yUfW2elC`qOObF?uH-Fmoa}6 zJKJⓈ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 HG46i=S=7_w literal 0 HcmV?d00001 diff --git a/admin/icons/remote_b1acn01.png b/admin/icons/remote_b1acn01.png new file mode 100644 index 0000000000000000000000000000000000000000..ba0abcff54fe67b3465d9cb85859c480c7cc78f0 GIT binary patch literal 5005 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 literal 0 HcmV?d00001 diff --git a/admin/icons/sensor_cube_aqgl01.png b/admin/icons/sensor_cube_aqgl01.png new file mode 100644 index 0000000000000000000000000000000000000000..a975ea82734d53fa293cf8ba96a0f9d45af1eaa3 GIT binary patch literal 14765 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 literal 0 HcmV?d00001 diff --git a/admin/icons/sensor_motion_aq2.png b/admin/icons/sensor_motion_aq2.png new file mode 100644 index 0000000000000000000000000000000000000000..b63bddf51592659aeefebd1263d159ad52a11919 GIT binary patch literal 6035 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 ysz;SNW%I6 literal 0 HcmV?d00001 diff --git a/admin/icons/sensor_switch_aq2.png b/admin/icons/sensor_switch_aq2.png new file mode 100644 index 0000000000000000000000000000000000000000..abd21ee99724ed8356969bea238ee45541d266bf GIT binary patch literal 10298 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 DYMz!6 literal 0 HcmV?d00001 diff --git a/admin/icons/sensor_switch_aq3.png b/admin/icons/sensor_switch_aq3.png new file mode 100644 index 0000000000000000000000000000000000000000..abd21ee99724ed8356969bea238ee45541d266bf GIT binary patch literal 10298 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 DYMz!6 literal 0 HcmV?d00001 diff --git a/admin/icons/sensor_wleak_aq1.png b/admin/icons/sensor_wleak_aq1.png new file mode 100644 index 0000000000000000000000000000000000000000..5e4f0dbbde62edd92e9c0b39c232766bc2e40197 GIT binary patch literal 13555 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 ejcQ-eK^!kWNWFhh~Yq`*_zn^#1@Rl+Pys literal 0 HcmV?d00001 diff --git a/admin/icons/smoke.png b/admin/icons/smoke.png new file mode 100644 index 0000000000000000000000000000000000000000..1191240a53e82c947412d52e4598b4ab0c660438 GIT binary patch literal 24099 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�TF__ZUQ$GMoO1{ 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 literal 0 HcmV?d00001 diff --git a/admin/icons/switch.png b/admin/icons/switch.png new file mode 100644 index 0000000000000000000000000000000000000000..abd21ee99724ed8356969bea238ee45541d266bf GIT binary patch literal 10298 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 DYMz!6 literal 0 HcmV?d00001 diff --git a/admin/icons/vibration.png b/admin/icons/vibration.png new file mode 100644 index 0000000000000000000000000000000000000000..c93ce0c885008649777ba5bd7c24449c99a7ede2 GIT binary patch literal 8233 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 K%4LdHA^!)j(L8 + + + + + + + + + + + + + + + + +

+ + + +

MiHome Smarthome settings

+ + + + + +
+

Gateway keys

+
+ +
+ + + + + + + + + +
IP AddressKey
+
+
+
+ + \ No newline at end of file diff --git a/admin/index_m.html b/admin/index_m.html new file mode 100644 index 0000000..1dd65a5 --- /dev/null +++ b/admin/index_m.html @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + + + + +
+
+ +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+
+
+ +
+
+
+ + + + + + + + + +
IP AddressKey
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/admin/mihome.png b/admin/mihome.png new file mode 100644 index 0000000000000000000000000000000000000000..c6e9888f84ac726c7701504197262bb0d1bf26e7 GIT binary patch literal 7237 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 nicht, wiederholt versuchen +* Den Menüpunkt `Wireless communication protocol` auswählen +* Den Schiebeschalter oben einschalten, das Passwort notieren und mit `OK` bestätigen. +>Das Passwort wird später bei der yunkong2 Installation benötigt. + +Nun können weitere Geräte über das `+` Zeichen angelernt werden. + +#### iOS +* [iOS Mi Home App][ios App] auf einem iOS Gerät herunterladen, installieren, öffnen und der +Datenschutzerklärung zustimmen +* Über Profil/Einstellungen/Ländereinstellungen das Land `Festland` auswählen. +* Über `Anmelden` ein Konto erstellen +* Nach der erfolgreichen Anmeldung über `+` ein Gerät hinzufügen +* Unter `Haushalt Sicherheit` den `MI Control Hub` auswählen und den Anweisungen +folgen +* Nach erfolgreichem einbinden des Gateways die 3 Punkte am oberen rechten Bildschirm +betätigen und `About` betätigen +* Wiederholt im leeren unteren Bereich tippen +* Nun ist der Entwickler Modus eingeschaltet und es sollten nach einer gewissen Zeit +weitere Menüpunkte erscheinen +> Falls es nicht gleich klappt, die Schritte wiederholen +* Den 4. Menüpunkt auswählen +* Den Schiebeschalter oben einschalten, das Passwort notieren und mit `OK` bestätigen. +>Das Passwort wird später bei der yunkong2 Installation benötigt. + +Nun können weitere Geräte über das `+` Zeichen angelernt werden. + +### Einstellung am Router +Unter About/Hub info kann im Text nach _localip_ die vom Gateway verwendete IP Adresse +des Gateways ermittelt werden. Im verwendeten Router sollte diese IP dem Gateway fest +zugewiesen werden. +Falls die Bedienung der angelernten Geräte über die App nicht mehr gewollt ist, kann nach +dem anlernen aller Geräte im Router auch der Internet Zugriff des Gateways abgeschaltet +werden. + + +### Unterstützte Geräte +Die folgende Aufstellung erhebt keinen Anspruch auf Vollständigkeit: +- gateway - Xiaomi RGB Gateway +- sensor_ht - Xiaomi Temperature/Humidity +- weather.v1 - Xiaomi Temperature/Humidity/Pressure +- switch - Xiaomi Wireless Switch +- sensor_switch.aq2 - Xiaomi Aqara Wireless Switch Sensor +- sensor_switch.aq3 - Xiaomi Aqara Wireless Switch Sensor +- plug - Xiaomi Smart Plug +- 86plug - Xiaomi Smart Wall Plug +- 86sw2 - Xiaomi Wireless Dual Wall Switch +- 86sw1 - Xiaomi Wireless Single Wall Switch +- natgas - Xiaomi Mijia Honeywell Gas Alarm Detector +- smoke - Xiaomi Mijia Honeywell Fire Alarm Detector +- ctrl_ln1 - Xiaomi Aqara 86 Fire Wall Switch One Button +- ctrl_ln1.aq1 - Xiaomi Aqara Wall Switch LN +- ctrl_ln2 - Xiaomi 86 zero fire wall switch double key +- ctrl_ln2.aq1 - Xiaomi Aqara Wall Switch LN double key +- ctrl_neutral2 - Xiaomi Wired Dual Wall Switch +- ctrl_neutral1 - Xiaomi Wired Single Wall Switch +- cube - Xiaomi Cube +- sensor_cube.aqgl01 - Xiaomi Cube +- magnet - Xiaomi Door Sensor +- sensor_magnet.aq2 - Xiaomi Aqara Door Sensor +- curtain - Xiaomi Aqara Smart Curtain +- motion - Xiaomi Motion Sensor +- sensor_motion.aq2 - Xiaomi Aqara Motion Sensor +- sensor_wleak.aq1 - Xiaomi Aqara water sensor +- ctrl_ln2.aq1 - Xiaomi Aqara Wall Switch LN (Double) +- remote.b286acn01 - Xiaomi Aqara Wireless Remote Switch (Double Rocker) +- remote.b1acn01 - Xiaomi Aqara Wireless Remote Switch +- vibration - Xiaomi vibration Sensor +- wleak1 - Xiaomi Aqara Water Sensor +- lock_aq1 - Xiaomi Lock + +## yunkong2 Mi Home Adapter Installation +Weitere Einstellungen erfolgen nur noch über die yunkong2 Admin-Oberfläche. +Den Adapter im Bereich `Adapter` suchen und über das `+` Zeichen installieren. + +![Logo](media/Adapter.png) + +Es öffnet sich dann folgendes Konfigurationsfenster: + +![Logo](media/Adapterconfig1.PNG) + +Unter `Default Gateway Key` das oben ermittelte Passwort eintragen und mit `speichern` +`und schließen` das Fenster schließen. Der laufende Adapter sollte danach unter +`Instanzen` grün angezeigt werden: + +![Logo](media/Instanz.PNG) + +Unter `Objekte` wird nun das Gateway und seine angelernten Geräte angezeigt: + +![Logo](media/Objekte.PNG) + +Die Anleitung wurde nach besten Wissen und Gewissen erstellt. + +[Android App]:(https://play.google.com/store/apps/details?id=com.xiaomi.smarthome) + +[iOS App]:(https://itunes.apple.com/de/app/mi-home-xiaomi-smarthome/id957323480?mt=8) diff --git a/doc/de/media/Adapter.png b/doc/de/media/Adapter.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa259a30cd937abd5b3b88f923e68c36be4f2c0 GIT binary patch literal 44060 zcmZ^KRa9I}6Kx;_cXtUeSO|e3xVyVM!7aF3aCaRnxVsDv!I{B=1$TFMyL|tBxi5FE zV|}{LL$B_x+O=z+2qgtcG-P7r4*V4MgJA^euHsVkreq* zJx+S?-hi_ZmKXl;p)L;P+4$3Y8_7XR+xf!>^#1=&m=q>-lJ}RmF5+4)!mcis_D&zf z%v@~E%qhj4%w3&a@GE9$-uo&4>lbx0Gj_4E|EXqWXZC^Z8!HzN>o*=&R!UYj9^m`I zoxvF&^=?b`|JqXi|BSI)uH-*_sNj+o6ISyuIPpdJMWfzyJIC#=xC$EEj{ZytgXat{ z<{OwFi2Qg>q^yQY&-nPPj{8k=^nR54!w;c&%Fj}6R|>J&S8u+1Zeye4r-8p<+>Va_ zsjZdka^`q%q6Hir9B`b{2H%@Cl8Jx89#C_H&(p#U5F$y@!2_u+o{oL^iwM(Xgc(Cg zh@LlQk*9$P(}-y|3sOO07C>R^bf|Ft9%SS)h&IpPZ{bC;p>K4c<0br!G4JXJd1@&0 z)MtkcCGRB<11U2-R09vI@-GZE@PPr0)FGI*=7c|~aI@-~Ew5YbMS)-Fx_6&AL@Ym5 zJQt($BVV>_M6G?orN1TboRM0%@wLt0Z;Z5+aiKOHSh2XUK@X zj4Z1}8aDKpeE&Q}yaqKeng#KE6>y^ZWrd8wagDGM4-kGz;^7i&JaAUHC7kKwKyrRr z*A1O0IvG&Wa%nE|0T~4Qw2aLcDM2mm+Z1woo1G`qXMwtS19rJ$8dL%R0a6+m_Xjr0 zoc!hfH#LDv-jA1pA46`I@2R&K1dhyoq!sZI+j^$XRRjuZ7r)6+<&vZ3lF}+}Ux^ij zXsNQn9Sw0kXpL;cL2#7?;u;>V?F7o}KSGGTzsw8Ksx)1*?KG}1O)^>=&)p`N6P8(z zdZ-I18$G9nh*o{OGUvgs_*h;L;C`2jljFY@K>OmM_@@c!BK4Ef%FORWiV)zTK(F5N z3f@2GIsdO++bkPDN1)r#IzmB$pg9V1Ka^vFZr2)cOt-IxbSLvDSLj~36kX8CVvX}% z4hutC*q!W!nU#m+J+&6`L>K~j_|GHj_*lu$SaS06dF|~aCt%Coab7K77Jjjo+0Xpe ztT7tA;>)?uffEBg4oCyr@cvh{R~f6FZw`z{EnKRUwWx5cC81U;@G_ffq z6^i*;KNXdjy{jMBlT}dwsfonxpn03a5eafXCN%$5SZSvr@whG5ktsbhQ&dwkEyg&; z27+)%ee{oKY3|G-$%a(f*~%P3sZW(@OS*AjiHh`@laG z1HO8#1K)7{PT>B00zr`@CnrZjQE`H!rG|+xJn;uRrcKI2+N1wBn>)*P+r|R%j48^h zQUp`ZpOmwhFIM^ZQlMu7tGQ_O$j}8Y>P}=h>7n4ce48=$p=e9ovbf1ki<+UXi8GN@?)lhK&^9C zRpV6zjNwCD^m8^+g*b@fy`^f5yGD#DGU5ICp)P2*Ey?(G-~FuCh*4;IBOATM)Fmjw zxW+*<$CN>S-iWkHIx=%Ab?u^spR|ZIkfVA+-qgnnjT{D96Jvp8;=3lp-SeQrvr0eQ z4}8?i9l$ck_2*}UaT@e5=f2|S6S*H+v8-#L?Y@tA#8If7kIdrQkqyxj#b3h6^w+RT&j_-l6&!y?oL-7!;`Kp= zfIFrt(Cx&`F%V5-(|vR;97Qvlw#w3ST9@HEA$m8#`AnZbhF-_RUDW05z3VuQK*L4< zZEbDZpx~}tq95&InOB4Y;*=>TY{(7Y-~??ZQ&)Lo1<7aM`Ob|lXqdopn-P1baBI3? z7LXyZtW~?Po_mYPNv&Tb_BK>!{DAtKg-WgE^~{2ySSC{8*sdJ5J_k3*9rE<3pnx*z z=nP1Zau=#EpGxtSe3n&dAKCUtpcBsJLr2Wq0Q`-E(w5FR4Kj2}dRtB;NuQ2) z5j{(q%(r+26n(;*L{u zw}oR@SPV}bmp1tM*}BE%TD*n%DcI#b#yF57Z9G)2NU^d^b#aUc^XrZma&)JTaraMd z48~w%reJGXrGqVVNtgl$wxk|Bx8&PeIJ@|V5(sWL)=&amkN&lix1?dBOUM}~ePke| z_4?K%(HW`56=+^$9+~s;GZI#RIAcOTmL?SimfSFdL<=H9a%?X%_EQm@re)!*0_+66 zlf7}z^ueFJ(h+Y~596~J*l>ms5RHk>FFA&RZ(*YGqY{5zfDO8)0=sh7R=d<;uv@Y) zGnn=2Vz}g$^iBY)B4vv|!ayn)PK(4WIcz|3Y`T^lH|uDl+_1wzySpu=GjYU$!{Ux>^$+F&K*+KknCN_TyY}FNM6ZWJyIrrYr6~W=3G3XNer$GOKkP(g&H5 zg77!OFFPsbvPGLXyR<0{Up5j`WM)AK)8i~ofC$YrqUAgwglXtUp32`t58!UL5n0Ln zGw0*$YQQ13G0~x%$T&?vbaox!sISoMJQ-`o8F0X6fxU&Nje3zCd@Y<>ft^=7;#E?i zyc&ecnO+Uuy9}TEo>veeQaR|Ixq;cp2HD1snuVF2{L}9J7ipsV>=)ALT{RltvMO)s zPvi>!ep%J*-McJlv#mns%&?TBf_rM6d4`P{$ghvg11aC(pa= zo=zKH3OBU#{aY1_L|hAo5ih_zRxI+6D^k#IwzOJeh%+E_$$L_Cbz?s*T2?{RalG&W z0weo}L~zyDLW}XZt9fgvOZAn*e3{Epfx2hPaVzCdQ0nipQpi!-|x{X(!p@&JzD8woKg&8X|%hEx*%f!e;}^ zL`^a?S}7`t-yFsZ(d$y8ZNU@*^$^oofg^HD<_tXmorL6J@@V-MvZ!nsmlAzS*FTXjt(?ENY$*PeEzGc1%_iS$@-EyfmHBal3Rw zkm^CVByzA+s5&po?nCz+*nols27~V1ts25?8gA<5$SrGa%UP=`qO+U%(-{JJIVLG| z7{vH6BzCRfL?tAHE6}(sRQt1}(3@|3Gq2?@vT|6K0t|-rlecMg8#gaoJ1thTjq}#> zg*nQiSV7Wwdb(tKjA;4hIpLlOjz_~gU z$(iE;AcdQNV#Wcc;nlcMYQ!i^_w+JMk>QOMG$5QXgV{KUhGw?Nid0hY(`l_R0uI(rmQyoc?M&qB0 zX$Q^azMiZu0S$cYPkQg|xFr7NJN$TGufdo&d}4_Gq$ts&FkeDB&*buru)efDr+w@5 zr}OY-P!dGMuaVMOW(gdy>u&V-IqyNBIAyR*&9I=1U*CASHP4ax(9T=Cz`AX9y6VY= zv82LEFfqxwg&?srqxpkVCR&c(p$_48SHoMy@+}B}mdwDA0@vD+(5NdcGWSHV|C+WP$g35fpP1iI( zs>4Nb1qP%)3IT>{2!oF6EByPxduuo|{&#t=uqkGFZ(vsdgC3>M!E22ZfT8LMUal^w zq{r=KZ^a!xN_M;N6rK&$Q^v$30w|4K94!$@wo&G=+~-^{;AZ%T?yd`XF}CWC>Lhnm zeeP#`{N;I-D3x*ci6`{>Ws~nsS*x_Y9i_vfcnOE+_4?s_)92K#>m3vc1^9>h?Dth8 z<@=6hWIh<${KJg2%4{bxZP4yYB3%HJdC|}@e!=`bXldvZUt^*dHZK-&<6Kr%aLf|%OQQ4T;RDA;S^ zWS(4y2s{HS1pgfAl1!iL12_Ht4`iGwQtA=Bo(+S7-EfRAfs=tcN(#T>v8%8H`;V-@ z1xWmXj8o0nk?=vfij;I_`g?m%@VjT7CkbSyNmmLDAIJ8b*g{0GoGlmHQ#I&YdnTvs zUuT9Lw!|CDwh(Gdrq0BlmI*ISU3QKZBB$)FYUlIPPrj2A?@EHFOlVxQcyNvK7 zVD*AiFG5AbldL#0aXZ2*+c?ANsoV;cK1&@d?eP{vYpKGY41loTr!~>>i9&4Qv!=2o z0R;H0smfB_C*ya$5H2i;Xr=c@^oZuLA~C-bF+;gt95}V&Vsox<$`kaZMCj#FSwb3C z%-OS?krN|133;wr(lD8xo7_pmh1dLNV7n0RB$rn#|H#R_22{;ps`fby14FM3^c6?0zX5hn`F)kX|Jx^2mgZ%s za8VY`N6o=FV|?;7JPNPbum^DrZYtaNNomyD*U7dKX@0 zo@f9($7v>=2OI8n0H?_lMYYT^%lIA7*$x0Rm5v3Zkem3!{FAjtJBbe|4ojryJWQgF zO+{G%|M}DgnIpk|UO2{*`;g=-#vROA+40ZZGQAzL3h_x&9isJNIo{)i)+OXQIK_jt zbc*{1CSHl+Glq-EoQp0B1l(0Fnmm9^m;1TfT(CZ>Y#({)%c(C(IYy_O68a&iGT?9b{G!s(4H^$ z`l?ax^aZYsH9t-2>4L;MO2Ncn;KcSZZaugAsrj!!&5GS^X-T&ov8jG5Xz^}gJle=Y z@93%t2NlLKm3;=9Sl(E!=r*t87^v`D1P`q?)YHkV1y3mlD2)@^boyrtqdgNSeHmb( zw3+~fRLT8d$^b^37%eS82*(}m6h419Pg2H>>u$P=`!n5Fi2&XUkbSs#A7|7<9frVj zgYaeT`P$O%c%QFuCOcD7LN--&=p^a^Br#3eFc7KX3u5$RW5}8C3~W7j(kapD$br00 zuc7SZJPFpo_@TZ%ZEnm*;GqoGo<5Xeq=c#zSM+gekouz!txnl*s;=)mW+9tN=+a;C znM!B3owe2{H^-nO(0QTRh_R}X1q(>SwlYJnmzaeoA5w$noQgv0HT zi__bYB{xKde=gx+je^7|uNGF{vlo}vvr2`fFDB;2V0on>OG^4eO>Cz2sm1^4@h?wn;X768LInp$j_5L?ISM zz1zo18twYe-Y-D-tXJer1Th1#3nKyb);X>oo47VAcXPY6+Ra&YQ zAq(im4(&)x$YD!~F7xD6doEEbn0J@+j@dj!WA95`Xl^*Ws$;a~ch z<$jtoYUd@`gJN$uRP_D2CrlsVH1og6ftnvu#bZV98J8v9V~GfCP#yl_1Q-xO%JiTu zi5=ffMk|#*Xf2EQlg#p6Sz3Xr`2~kMGL^(G^$*$R1eX=q)R+GV)6koRJB7iO{6G$8 zB9A6)l4G34nXt8H#k;E1-N#7N9pHHxVB~F~f|KA7rs#Ih3yXJDV5dQvPy!CBZ)YXr z2BFd@dGq|a<#S;8tw(&jzIx?H;nU)cSsi6~;$Wsy5wn^@UVs1)!49-Lc=D0-+BB7V z#r0j+!osqG%a@Q8>w&Af?Y+&0eJY#ay%*r+4K-y8&==Tuo|Atwbc4ziuhefJDNb@bZGjZ`JwhLGAU0;RU zI%IW;_|rxM0Px5l{EPDc@&!Z`bs zL%-c+r}6?}YtWM}p>xKTC^D5K(8wBX`YS6?g0fv6eKrrX*J*T|u|T3z)g5$5_G-0H z5K8mD|9Y5g5K<*{vtDDTTkLo4-T{`IVSJtA!KkVtB9@^nfHw)o4N;~4-j0q2mey>{ zZ&B5N>~VMU>jXWWLnJ9Eb8>^W7EOPdgISXHMt3bi=xhGg)pdPRF@av?c?&0M(nPS! zHvkHOEv*)qLx;-!n?uVgs1DaDiKI7UK)Cji^(2?UNhcf@)`GvwC5S!o8SV=*UorptQ_u`4F13AxqF z=$5tL=)z4Myz7i>=-{oKb?mo_iG?~bvY&f;>mC5PZ#!ZF7#>g zWT4Tz3@B}(v5c3lv$28Y*fTDH9j|~?a%_u&VuPK^p00!7PA|LU3*+w=-0J@6QRRNm z!F{QQ%z)*OTSYjJ2a`^by)K(ynUI7A-U;Vz(L%)Vg-GDISnj|0oS^hqax;k~g03tn! zI7kLI$;b#7Va@U~#ZT*Jj!x2RS^S02Y0#(ck@c5X_&tpm`U}E^n`ZxPb;pbdR-#N8 zr%^3!I-*bf^Aj4kMKJe*)g1jZ_cVVNC`QdH@rt>HM?K8}ggvXZRaGG@*M?=mphQhx-Si=y zcFJuZu@8vgGSR9n@-WcmgP#~l9vr_E`p6OARFo{<6p+I}j?ltT9C;>8hxV~(jHA(K zc@!@os{20E8y;n65kHj;lFc@TKE1MV)E?$-==M&y8Q;Mpk+I=Rou8XG?KkJxC_cNi zHLNV73!nNZ7Jeq9P5{!zu-lcXY)lGD*6_zC<%{|^=Pi-#`yBmp@fN5QyVkunfYW*w zp)^Zw7Ps=;USNt_ZK)6c4F!pbr^?vXf{Yi4Eyb6KtGstKKL} zyJt<=&6_g0?Y*mKpNv+c7X9=1KP?rve~=w%=kn29J3Z!A^d#6{nDU4+R({}VY50{C zb$Il1=?}*&z~g?KH;H_n(o7k-FjrVyd(eHiYsG7fA15#*kf z$}_F2Hxf8KT7%q;pE}gO*YJeV|Sbl4|Dn zRMnjZW!YXfhBp9!%x-`Pw>ePP)+hH9IqcsKZh#9oXL{G`0R0sZ&4W=LkRffvu7QnV zd824*n-8=$O?2%d3~;-EjV`F@dnRlc1iPHc32Novd9KSC{l?7dSnqO@epv78hV3s2 ze&b!-t(Jy6K0IL4LuD_DyVCxPdfW+(|G# z5lfvELnTIR#SslS6ON%M&Vv=xYoh`wBYIW2;Hl|gixxH5MDK%E8SI+7@w@4inUW)~ z&^HIhX+nH0rn)h}MILvs#7%(2Ixf#_9SG7Vosy4xy%Ox1%_uoolcsFQr^5G6S1L z`Ss%|DhoMBzU(rgy~2dszslxrd{ZV|KM)c50*ySGes=1J@{x1yaQjY=?xtJ z>~9hdtNA)_uOH=Hl^(9;cIMbDQY6>*TL~m@aOq?HD#&Dt5>qA+D17E!g&XCzRtuc- zk&utR5>sK4{q>$CoW!0aVW4FLgloJ{VuYJo1>2(XIaN%=yx*bB+y%y@TsECnS@OMJ zSf9;q^cL?dvS;X|8$U*VJOMvOfksKL8jCJbvIZbiq)3Oo4e#HSqd>*?GD|kn2-Y{R zvD5_KHhhV6AJ)<9tlFJ0WhVb0+$B@=z|OzMm9 zB4#N%Y0-!F9`?*@yV#z_9;S2=)SCDaJ0%Xj#N@9PUgFVB;E7 zSE;@lgvI=zxx^8(H~fn^OG)clp}Q)E_gNyBr@U)3?vQ#T;6D8ntp9B(`1g6XDI#8L zPh-DL1wLJ-yot4SZ%zcA47zf*x?7XHRds_*RcXB?cpAf$Km#z=gKYv69u;=?8rvn^lOZH|9KT8627 zYE`9UFB^Sj`+nKi$$u(Mrf04mPs_G2F+8rsQ-BN11Lj`O81C7E0oLr1T_uLZxY}r# z*lC%N>u?wT)ZAxiqga|~WdRg4=0=pwf_Itx@*Uk~21sw%u-fDlvQs=RN=EbNOqbL- zgJo?ucc#IOjx>VqTM|qBI2$vsOO8oYqavT=`Xu^Fr(^jD0tNXnW!CL}q!8E1g+g4( zQ>}N<_7LSmxDdNei?N63E43Fi3?TYRlsTDcoArVoP{L3`OWUm^@Ok3=KGl@zB1MZP zKqkVaam(o&uZC>B^Pg>loj$QifZ!%wq>whRxkav=oLoFcVft@US-G^dJ-)>ip_6ji zlikHp2vQqdV(VC$m;fVDJ5!o?D~$m$TPLGjXYs#EP!ieq_VG+0#}4>M9ngC?H$?Hb zKNY&bJ|(Hgu;?+5(c4Fd^PaFDCjw7fg=tx#kuFc@Qj*1wyMFC7cB7C4wM1r}Q%W;P z+DTiIqAuRL^Y0hHt^dCA{;IP-sn2|Y<9rZB%*&hrVi@VQ1K&-59S7YVr*XE(;niGsj|FO})eBFDh6SSZJm`34wG& z5mFVnua;j1-O-|!VuL;G^T=s0xZ(`aBA zO}T9s>Sw1CqIewLqk;^PPq*7tmZ_# zck?C~;68kp8y8jjNE7p){}$C=3h!QCUL^RgJCo0Ha>z$?ca*emp zj*sCIS&k~~N|ZW49v)kEmxX%2sXFZ$se(_wz8?#Fm8bI9Q^q;;9c`fA7| z=^%V&^(l7%E&XBpz{@b5UbS^Xp)NXlgTf@>zRIsfdb)iM-71z5HMII08di zP@H9l92YmCvs1Ipb^9G$V9E))3%A~`5$9$&|VH(WX($~c7;09u*$ckIM;Yqa$b!NdmQrQJD z^qqo{#ZoAnDxzZlZ`IL?Ob?B(xF?xCJuo($vvvKCY2Zyk4zTr=Slma=1mc=J$}$7^+D}WNEs2$ zbpOf}sw107hWN92s_|yY_6wU;oP%N7x!13jvI|4qzmaOC?-3^r@+noeLMw66n zyGac0?Wh?9HG_?=ZRMEBoKt~H!|v574gH&+9wUIId@*#x1C275R5K(h!}u)*D^D2$ zYDISaw4{|nyTs5TfIErkIzvYQ)*uKU~kXS_0&e+fbqj8*@Z(aLqU6dn|NVq zI7+Of=5;z{|485bT01E?j%yQf+2?9Z;%+QqLk+ffb4>uTzh=hpCKSNk?C?aU8*eOV ziJb{>v-;uuWp`WsulKaKwwWmFAH@6b?bF-S##ODA2P%gD3~S5Hcnp}0ffP-p z#x=Hx$5q5a|6=3y!+5zLg%GenoH8W6IP0n_-GDL3k|~%S%i0x8z?84XK`bn`S8k~! z9i?Op#heUnYfA{1axBXe4rC5fPD0f}r{Rv>c9`l~abmL?`J}(dSW_`HhM6W(Ad4JL zSc%)1lk*jbE8U7cOi62|5Q_PdI%U$3K0<3tMg-n*8quu&qeo>gK{{|l%J{IrecU>f zWA20K{7Ved*u+?-!=U_uUKxfdzoH_{6M>bVH$=MFkWmx#uacQIs{pnfrbPX_PDBB_ zm)73uDf#x^Zf?+rX4}Q^*Hswjb+?^1?cZES)S`=Ac+jkD#aY<__p4L}9L;T8tEQ3k zoW)3)Cez;j`T2CBnbAD9?=b#LjogcHUB)SsH?*&WRpggA7>~g$}9KgsZbYp_5RwIo9v&m0HiGIP{}V6l9m1k zOwl(c+BV%!5>~tjrY>G@ST2tvRq?7}tC&#NoL%@YPw*AK7V{Bl6p0Mm4|hgn2I_Ee zaQtNQDmFLAij6P`8(V)1m*j&jC@_&w6q7XlHSIp@ln^jL|OeOR$R_Z~%y-y76f>mmmWfrg& z49P^+s&k@!5EArs{NoXb`iq=7Dbjj`I;r6PZ`k+%1B*X5w)F0_qeu~i zuHpuHWJ!oE=d*9t&Ye1AYhS67*D=&Zc>zx``8&A57dwQ1?AP33L9ZX}AA*ig)R{CWNh1;Z03mlFi=q!tx-2Z8AdwXaX4poH>a7> zQ&A^(tU*qFY^p5?@M#;xnQsyuF84VKbb8(iX!`uzGpVKiOplA|cYOj3SvF*aQ&>)=NERAEhjuivRF3 zxJag9v?EI)Og7>6_A^&iXVI)oYE8N=XGF|OKDgMrkP2`9CZ%l{u*%m(Nf5$~&>|+8 zTM4{kx&M~qzKJq9Cm4M8w*BOBV`FH>3#-P2mSn%ve@v@SMs-@V>%pjESc((IX}4^7 zEn_0i1lLrpsNlDvE&(|q&LpnMx0v)81t?lQhXY2iQcj=_%gNzeGYR2m-Y1u6j99aG~v0H6D4GlTot6nH>@6LbV>bHbRR@2pHFjT$~mTQB}^cm5Y^ zZ!c@RN(5w@ZNy9eQ`WXKemN(lQL-Xo0_8X#^ zUwDBBm1^L4@UV7*FLOcFU$OGJku@ALT0_RQC^_E+8pOqAyTc3!HbW(RWZ1PDwQfro zch1r}uT3*+RqbZ%HUswSvy|YI2Tm@Hb&YsqGQkbQAxhoAi1KHe1wq-AlUV980 zlp}sysYudb4?gnR53MV4>fGQ*&IC37@Q>@f19#PV%!u}XEOYwy2{beC_oOPelH*9=2I3iZRr8%Z(UTy+HDWTHT994E{*}=QDIT?=EAfoCuzcSlT#=T4bWA60&a&B{>65Pw!gB z_wF&s{2*o{h8WQgC|RvK^r3l-y>-Nzl~F+gfIy&`71XiF&R2MQ@CmUlO3XPwXP2%Meb0;wNgd3xtL6j{4hJppoFQLXgg12l}>*B)V1MZ z4fZ0vpM63ZG0m1QMCoQwjps}c=W)94TT}4K! z6F~8@PdESeE9g8-P|ui8+(irr)g1CMk%3H%VaS_QG-yOBQxc--MTlQD%@~a@F+?Zz zR1Zd0cVPj|l#g-96!A$&gvEd(74RS|smy1rL1v8EJvce{rareQhGL@LWU3Dlw9Cjk zlaq@29x$nOSY>gK|^OL9=HEU6-FA#e=qN@$ztV2YVUKE`Hl5^OiE=GDMrWw5e>cUu<^9%ljWds z@XPt7s$x$J=Sp;|NP;hp@!O5bbgFhgjx7Oq1btBdkBoFSgnB1%9JtAbl9bBOh@_Ez ztCU5J;6f=yol-A>t;Qmwr$#`vwF%b9(h>wg>ZPp`(pc1y&$Z{YUkE?*e|x$=nDDdZ zE0aUgze%e1f-;n>FCJBMP&eHdOvM*ScF6mv9YiTs@WuIE7qIF&FnNU3EaJ-^gx6U0 zhV6w<_7v%qQIcyhwpMkS{=MC%ztCV<@_HL!@xwavn^@q$$6fV*dvS!&rmeS5_>%90 zbZ_k!kOvvQUd|miq(d|*p4So1XKVasp+!}ikB{D8^mj5xtOF%yOaXSP^t67dzBGQv zRWjDnICPem5vJTRSXEhxebZSQJBvQ;)+21(^au;PY@;^nQ}g|eDXO{2>{O7Cnb+(S zi?q#;wH1MVc44ZCX0+W=KW#=CzgS48w-D|TqToonkO!Kc&w5w)9<7~Q`&?5~G@r1M zoDd&Y)$3-1;(fH(EpGSE&pYJGE(#nO5Il0OwLQu$GAaQjQ_&jb*d$G3D>N6rMwWlU zXEVq`RpnRPw>u-6DzQ~d?WAUp7j;OZ%5`&*irfiBeeA@phx8^o(WdApAfM?h?UBc{ z4fPr?+ODUSvqcZpmzC{O?Nn!O39u7iNNHS^-hl9=(A&Bb$#g@3>MrS)k!aL4s~~q2 z;J`Vc(X3iUgi*{(%RZyWIM50bP~*rh`JlhneIRe&8$w`USpi5X+5heG@x27~Ug0Nd zj1&idO`?T;Z2D$sP|<9oPA2}hx5n=U$alP*)qvRevG=W3UTOv^=lim9_5$~wUy*g) zRM{(YB7kjkdT_}7zmU6+PHNR%e&9PC9$GKfZKh0u?Yg+B$?SM6=FGN2r{!+)^4=`P z%_KYA?R$YCO=)iyqDi2(l7yQ=q+?-FbY!&gZT(5g;qfhY{z}+mUN~&yB90GP(Q|a` zJp2Wt&)64X{m*LWxA-xtuUoKKTBsUni78W?cxqjY+$qT=@rFRtyH#)dWxuDB;uh(i zq-mq>m)kzqIsLfVin+~k-m`vzr(=^*%~4%wO0qN&TYqvN+Rz}vr5M- zGH-RH^|NSd`n8OJ{Y5KyR$5g%*;wAp=KGQqt?Q}^-Vonu9oHMqZ?SZl{h4Fjwx_l- zE%^lvaRS3>Xx=ns?mmzQ>qSQ-!&Vu*kU6- zHEuJY@~z_)6TO{jeJKZW=yTE1_76x;F$H+9&bNl6O%knyh&aJnu zEB=lbva?>tq2Ir%bXVL;BgCNl1^Y>svA3Laa=jvc@RNuS1P8mzwh#?~>m5zHANGxP zdLw&?QcI{-zW6Gp*)rWf6Bb9};{~O?&_%MPie) z=H;|=r(5*cPLSMm{{2K6S!mBAD%GfTqtpB|n+WFnw4;XyF3wgT_)?n92+SMq!7d^2 z&A4ITrf@nxZ827@LpU~QvMM%bxBf*fHi}ShR@AIg#9&@>fJ@#>fACM_S8qc`u=Xj> zWr*|^-Xc_yPxx7qPj;dor=+-~vT6r6TqzvyMZ+5^Rkj8@pm|S);fW}4--Gd^uPvq& zpYfkzg=Up_ypIfe+3MHJFHoEUllQzXeJp_@73$faPt_0MwQd58sOD!)8X3ms`~Q+L zm6yGN;ADPR8+K2gD4*r0PqjYo4zv>|EZDAW$W3J?Ve4Yr`wh;*9){#W&=Y~9N+YiX z{@Sfhw9_{88X7$9VjU7UWA$>IXW+G$ZNj5JVEMsxg@52ErZicwwdMv96vy>8#L_$^sOvD4)M#nbD(JkyyNEzQV``C1y;6GSI0eI)22RZ);<_ z8g#o*vdb%Rs))A!IAB+gU>6lw$4crv%G$D>XsDB=Yu||%=e@iYy;g3&jfjge7mNuZ z(-Ho%AROwxLq%TE{%EKGglN96V3v&lXueBhhU}KueI*;>8Lp<8@>AJ>x_?t$4io>Z ztOw(=_OX}_vik)zOdn1xv$08^)6vh#c6r=;q&Py?EW1YBhl&|DC%8Ach(R$78)k;7 zzo8Bdb!&*vIYMBx2wKwWE^uQfDB^MwM)OOsF?4v)rowZDsnd zj)iO%w(CgKl`22 zyJeD6fWF)SV&BU6%x>JsjyP>8t7d`&#Viou?ChFDPX5N&Y9gBSQK!~eR)Kej_76h< ziJysvNQeF!6(dwUA}H_NGdqq3xzr0Tguopwv5T7bP1QFfrFReJ40ez{PyMEmt+4x_ zLflQA((L%p533)>%rc#eLiJ46ZqY&Ls}!7TPDrtWuO3~~aO{+%jusAhD0Z3js=0jK zW++zfT+#-!;s!W{UrHltr1kt)#-xMbPW$*jK3uY@D zA5jJo?@TdT#RBwI!f5p)Rn1do{eD>Ez5~^Xi@~|v%AKbH>m&ky3LbD}mDZT!L# z&^Wgi6g@tVzpW#b_Wg@Lid#=k>w@#|cy8V|->e^1h_wk(wZwY4*$_m#1GP(OpSAdu zMlo=6r*4~0;k!PQO)a1>XJ%`PlJ%+fxvd79Q_5a+J5Q6fm|fdzae5&Pg3(EUGji%= zm9#%dK6j#BP4RDE^D{M$V0jD&Ve~N>I1&q7L?{woCHHK~8a`qh+_iD88)JBs@+9;2P6zpY#PJij_-o!C3o-RRyy#{Mbon|jp{}_ z^J_hs|g4xfHSZ=(Eu z`h41PqmUU=p#$B>|2R3_+Q?9h^TjaYqXtt_#xo~J7f3{`7p!ndL0Wrz70o;bSjrZO zOhpe3GzQ999p$SyW}r6ow&+~oaD*~Y$8;ssDXdla7NVAusr{VQ9+W(5-SbJnl5|b$ zJH0oF>(jQ#Hbc*hQS&O&f+}wfDD&Ec7IT^y!qYN9dEm4Vq@dCz>gFooDB8QO=H{?S z2bL@MJ))+?pG>6Oxwsk`Y)W>ymz8VQhD1K0wp775hB1Aw~ zDJQ%DR;?3Jki92k=Wxp|eTK}6b|d9@bvjrslLXzr;(VVAv>LoHoPBO?OfNRxUMR1+ zK1>6hOq1&>Yt}Tb!&jpKkp$tPbM)N1ZOhQAGvB+Cd6Sw>EOZIhZ}UMFHEme5mpMu; z0S&8e)pnvZ|?=tA{O5=Zmxa{vA&v?%edi$uQf*G zblEP6WWg0at`VtGf;SEP6j$jc=h|dOn2V?UcW@IVXT&s7lD7E?a;VT-i_Mokzj-hNmY~lN@2c@QZc_@Fb9AR|6jGGJ zy=niBH9zHCL|debig#Gu9PZp7TL_NS`w|s7_1q_dgH`>l@G?E(PB%rJNRbel$nq8? zo|^q1r+*JNcl)xw?)krlwbYet6q;rUz8on2GdSX??0fY-390eFB60h=b;*DG$AscZ z3&=(4cfWCeV()L`3-IxK|2|gH_t1GzRPem(t;u4D-201*-(0}^FU(9e9oQ58uUC%a z+pa&wH)}a=h-1Z$NLZ4@VyLNW*=NBgvy$<@EHYJ=5e(raWbwmqeFwj| zXmn?|rY)2g%T@SFbkOrSa>74?g&?d%zNVL0dc{g2F@v z-90(m23fMXjzOr($&}PYS~nSHW;#zAoS;mjZP6MS=p8~&cR%8(80DQ3)~wtUUAcaf zT_p=jx6oFjL)0C9{KN0#gy+0~d?{=E;o}!xKz^i^={;5qJ2z=**$n*6*JR6*+%1Qa z>~i1#-VZ6429Ph7jVBKeZ^0)%aRJUd?>ysY(mk}&KaD z@a$(I#*C*YrtrqszXm`2!NrJ&fiUxV`V$|IKmFl%=j($aA8|fgnXr#vds{Qof|ri8+XQ$k`xf z^6sf+_P5)pfQD=~`UgJvK78ggpTHv? z@h~dWd*BtXc!kwdvt^_Ro_Xe(W|)#;QDy(iSH6OWKJ=j$mbY4Ms`k=KFfmT8NE#Sg zj{o|v|HAv;_dYX3soYwPq_VvBwXZb;liKk&zxfTaWZueWXypoQ+PVdEvoml$O7qmN7{OQOc+)Bf|gv-~U;h8*jYP41VepIlxrLcfb4HhBKMq_2OoUc zeL*x@#(vQe8S}L|LLmNd{`u$Q4R3e@-hIyd@R5(5XR9_uH?*zA+^k#CBAO(cvth$J zDu6}2<;`c{6{o!nxpc}_yq^5RQ%SeCB3~H8Uv9V>&prO-DCWsGYr{xpYWV1fKa0yQ zxfZwFb~QE+--zWyYw&~b{TidA!}#^3Kf^D6{Y#rLyEgMomr5SigQ9Uisgr1W*Z&^RCUA+Q- z_}yi=RdI($aNTv+;jcIR1=n2tC-Tq(@aOCP%Cwpo-n!oQnU+IkYFf+lw;F!zyYId> zNk)#Pt>kOk3Q^~XC>=RcWY89Wk<2kNGGQ|qpY^O~8UK;Qq!rELd)hKU+wkePR_Vs$ zu8p;7O=nkWa*4LAdh?s#%Ii(W!{m^8{TXkx)z?4%;g4|W0SDvH#JST>JI#duQ%*Vw z@B6^H?3+#a-uJ$TQ(ycN!vQ(AB$r%z$z?3x6yEaIH{-2ueJf5s{dB`sImp!hU;6SF znAaJ2=R4nNeBWF3tF+bLk_pr=nm8hvK@&>OIp>{h*Z*hERJEV_RsE}#aF2NSBbeTs zt?v3>csevV#fRM+B$Kb&V-Ld#(J;}2tFOKq#hC&wzw|Pk^!(@JQ=j@2O7#i+^rzp! z=`TMW6C0*btrTsAW>5D3(%CQ?ts1`jl^>fdIWjVdi!Qo|^6oiCi=?x>`7LLf46W5h zWzr&@q4bGQebTnO6Mg-~FMfd&U-$wPh{rlJ>A-^z!b?s)1zRVF@wg{E!M2eUzDjoe z=tn<_*T4StMlbHX{Z7ioCz_rjxm5XOh}$bEbBoqUXAxcgye0*F>|^tCx8mlhCyb2f z47?9jemOMu%=C5Ad>I&Bq7@yBSV_=?W&)T9ONI5RvvhHR$CjwHzD zQl$F@@+3FGSzFjG8=xFHJc=8yxz^JA=GQ-O=jDmFN$&jfpZ`qSyuJM6uTI()BrocW zQf*&%=%EKwZtTTPH?3nE_u2~MUtaQSvlmGZ(m93onzrB8@eeWf&8+pU+kJh zpEiw;tDok~=I4VC_g4r~Kj#>zH&M;cAVB(Y`=((8Dfh{4(34HzeeZl19&*Hy*z1rZ zao(rDgl~QAB0TsZPsAY)KMpT_#TyZ#z8a5(kfXe~{_mTp^Mi8dob511t(-Kk;~xlw z8E&D30%i(Rs5RPXI8zGxdb1eh6=zv0#jnl&_H0Ytizh$4+ZDvFs# z38O@)Eo77}VpJ}X!kQH;v3mImWcXXpG;>alBBiOzRwXfQFAv-Lj+eHH(;A(xT=ZF- zf5As^-iJSq&wToeXwDxW|2n2-C(zxOHX%g^W^2ZxnA+In z1XiwGj+_2^4PJ2KbFgvi2u4OH@cYYuj{kn;$$URa=B5=uL7emcPuL8@jl*~1`oCO@ z1NPqw-~IO2*(O_Y*>8S{TW`A&V_P<0%f>tL?f?4*uDJ4dn4F++LxJb>U%m)sGR(d9 z-529J+?ySL*{^?rwX65T;fEh>%euR}GibL;?3)t%Fo8-Th~8X3ne@#p$1v{Pa68_1 z*4g;L2hJnmh~c{HuEEJKcpkp|rO)DbzqyQrDT6P5{tNi~?RSuHOqxLTn@cXmpZ|0n z9(2fq@$;Yl!d7*K0@?>ZVY4(t;TAS;S#Mhp?Xh-Wb1YtP;dz+l_gZyy&U-$98~*Y) z9CGLZm|z(++jDSmxjDWxQ~R0Ee5MI?-f99FCuK19!3Q69UyyN521z-Ur-rgKJBbC;6mGn4(BOmn`eB&Em!-kFPuzJlPdDx|R{Tp7( zc-_cRan%`pnXWX3$2XJD26PrD#lJRQf5ti3cb~n`o6I1dPGIkS_rY7=b~b`!#v$hL zxzBzQpZdZl`E3Tva((Dd=5X@MPsewD_EV%{4V31F@sd}*0zIqZwsqf=p7>~d_3Pg@ zz9+%qiUQuTVmN-!fCo2dPkZ=Xwx| zCNNemlD0nx{cPv`2i9PAbObfZ9w)x|Wb_UVA(@Ebk&k@1TEn(&nkA2qhQcQF>Rgh^ zi2}}e(^>fM(@#U1WWT?E8J_s$r{Tt%Zo!&8_rNcH_5%vtB{RGZFuhId@4(FDDCLR? z9QCLp$@gm5XRp2SEbFTL@A{* zzUmw)&01}fPfK>t$|X&rh=kKfX`88}w&V)noO8}5&)pN+>g4dl9)hXSan?fz38x(I zB0k9Jcgtxf0A;X_UPAkUfQB75{ue*s_*i_A(MmVW@k|<7FqT%d3DhE zs*Ldeb>j1}mSZQx=Ye1y+KNllf;971V?^gj#VIRk>ye)BWq9)$@4(D-32WA_!V{kG zDBN+!jqHbYSa-*rHtq@>e=8|Fe*W{HM~O&VC7w*o%`)8#WyAncjFMwVsqy60I)B)9 z$^KR&yCkq{4MdBlh?jD1h#pIZeesK5Y-2&=^}u}&!mCbw1sa7a9{-rfVb3*tW6S1I zGbFhc@>S{!O-tv57e5)#e%5iO^gis+hhlnk(#GuHZn*`+TSoBe|9%zftqKaYJdQo? zIk@)f>(H#uaJ-c9l;fX=!ya{v$)lQ)dGzC+h(iy51jlRIbf2x8x0u6U4kS5ok9or5 zjmPNB(Bn^dHg3KBcAKoA?JT!!*kA^%vf!TaC)UYzxgwv zj%BTWT)un|`>oj%dk?L^t6%X-^kg&Gb7&>@W&6pQ9Vfvo)vDBa%Ep^S3mUA8^dL`v zTM8PEogwLi4?g(tfCg;<3^W$4c&6k`I&4RVP}Z27n4uh$MYR$}t4>*m@~jrHOia#F zehraGQueErQLhEao5Dz>V%V_xP9)-T(9e(;@m-^U{=sFo>S)WzC}sU+*pKqsAFjLx z&phq~3~%0Sa_4`a{tA5S8(%>rv~vO*Y`a}?RLR@?5yzeI93->Sr6@~=89TeUUJW1`$?}P|f-Z6l02#{IIwdX$og)^ZPREC$H~cc#icub)Ltjr0U0S$D z5>>SWiKUFW9kCw&_$MRNmBm}nI*U4C9PwCCpPNlUtL-zngj?~XVdamZ`wc8mxqAWH z7dFIR4z;OlQHhW6(p_O~z%6DPCo*iE8AmZ#$F+qUv1w)$r9d66M2Lhu2<@VH;M%<~ znCV7uJdI>9OvSE*6bZYWN*=*&66vJ;>#Fn8swe#p6Zv(v!J&t)rt%a*Hr0du_TC>2 zB4{!ZCbDS>Y8C02wx(EtlVA93#1mC2Pi;Kr@lQcL+K*eelyLEPe~6EKe&y9@CNgL;sk7emcGOwsb|Q#ZzUqZ|^BZ4=WTcIu{v1wt-qUf%oi`&v zW>c6ep%!hR66PRjuuSPL)B;sZmB!7Hl#R!6;J$0|^>2O=TgJ8`n#tnIo3`Mjm%ZK$ zQRU(kl`;;P2Fn?Wld*9i*Q;!+3f_C}yU?oxt$D2)T#5ef1M$Bf`WC|cu2?PLt6w}H z7k%ymB$7Q;>XKMK0KDea&&8#GxC{*$3%mPq_Bn3>Q%0h@8!tNbM7-^7|AWE47@y4H z;LjwWFrlH_TwMI8{hnDw89N!lW`pT%xB?uSN{pYY!~~qgm5Z_YM_WnGJ=7@ z1E@G>5Ta6BE==R0hwshyUXHax2VizQgmNA@BeCXKAOEsY7*3}4z^ig z4gy+ptk9ruIRPIx$1dc!UBs0iq+ok8QueNR-Awg>6w%hK& z!yo=|b0o>wAY+^^DZ?^2_~3&NyD!LCDB(&gB{b{Wn}My_XO~>^D@;#~;r3f^!ViD& z9nxwtE5_GZJfa;E%tTW*ZQ6`ncMtmdm*MC~KaO-NfFNmcg#505)pAS~OGuM8Nl@!O zAcLF7{)`Znl5``2e2@wX71HKZ9)r;&<|xD=-XN{ria>Lk={IdFq-xXcOoO34guOY=c23rjbuI)j!QADT|N1~C%UWXrq zn@4U&yF7wSq=r^Dh|Lw2Em@R}!J86PJA_JEZIZT?VKMe`kUX?j zVPmu-6wI}9XNG(=he|18tCQ*t;!CQV{S`v3SjAo|S7RWZV_VnEu@g%skfL&&pe$8t z)^XXDe;^-Tj=`>OWcs>s;TJ!Lk?BcW!4(h2QKWF63dJawB=L%uy%g79dyTE)zTguV znlZansUgntNokg{9HLU8)mgQA0Tsz5wl!@NDJmq|;wvDfU@p(Tp^OoZqRH>ch_UYP zf5)cHn{At~2zh=x)Z}-0j*}MJ%_OEKh)-KxRD zbe%ADn+Te7#Pd3^Dm#S!DBltH0?{y5_AfWQLac&Tu!{b{wODuC2B5qJAx!fh@w*wc zZ9HPs1xJ*ZFz5P_%6^he$uVh{G%QSc8vz^dp!dzH3`wrA#BolOW`1Ol_=wpr?5=g34xReSt|X(d>Oew z7y*uJohz|Rjb<=GKGKCor3bN44)w}LL_&EaQ#xBOk0|4`0y?8Jg4L@J zLMqorr7?keJxuv1i$E-ozs!`XXOt+f47s_*3w|+AP)fnFWzV~3mx?8aRhO2P)8~+asJ=)?YN4@G`v zgYA?dIvJ+kDLt%7`SxoUe;37S9Unjc6Lus^U38RbZXTURER(^&@)f8s{a{>2>8K*E zK0f^CL3Hh2!@MF8Xmx&fm=nX^`9|8RE)GpI(A!D2{Lc-&b+vAFr@9YUL)G>i`*d zo!?Y2H#>!~(J6GL_ahS@z~di#G!nU9WP6j?vULQ99C(l!;mQRv`Ai)9?6n5tlhb4l z4K%12)mip>Ogu?+O(=kK>O&tI16R~n|4-V`sj(N<{7@L^D zES1Ze1~iq=NHUC2EQED`-;88}bct;hWc&Q_kH2C0Zo{F69Dy|ZVsvXBfBWlA=;>OG zRJ;rSb>fRyM=gVFvrMB%F>e`YbvV5C4pxPZe$+8o*0%zgWDcjF`f^--+|J3$W+|YNnQP0QK7Owi1llKG+xjREZ5#56RSx1;%sd0gg`$Q_%^aw`ahXmH*dC&&S2zy%<0J`Oopv(_d+hbFBc$&(0y0pzxuVHv{6C$x7>eE_LoW|vUyc`D} zwjUMY5M_Y|YErb50b9ZzBoAy+=?=wM?iS;RDRweVUHSYBuDb457@Zuq)wHvv8ovCc zuVDGILDFmO7e8f=7wru{IXS`h{5|&EdkuxoAl4020M1v?6G>o(JY~z4O?boG&cqDM zH#)i=zx?G75ld$=Q>q}_)oXlElR_JnGI?IwR}43)vf0XZ$|*0l z{?L}Hd+ocAIVAsj(~bDrH@=RiKK+^2{}RF4Y-=5;EScx9!w$!$_Y(dLG;N_Txcr}ZoBg~{PZV3x2?Kz-BdCtwfBDO88{MSgTukUnd8^HO)KR63wtPsd z`6}kL)XFEV2GI<(5D`WG0vV_iR3d_b2G|6cBjQgHPx@D`U@Nw8^|jZadvE}mTn|R3 z=4^$u8F$pmn)zmT{Uw$MwKB<*TYY#SgXFcP(9uL}Oi3n{UZGV#Iwwgoo@6_Xu|S|^h z%{Fz7a2xB_Z?rA2yC@%rsT)+9L4+yRhBz=I#CaWPOx+zlJ$-hrQ=1uPI8KD)r<{5! zM#y8vN$bWro`$C<@$_dtlXCL7(d!VE4s9i(G4zd#zKSzm`$oL}weO<7lHxcLy$G8A zGci%ZS?_!+p8B*WVR-mD<}-{JJpV+ST$f`8f9TSym3 zpF(U~Ii)!eRbm|w!S>2z`RnP5U9g{O-$WkVW#k$E~deN!}NE-{3PjrBM-Bz)zqs%G$QE&fB zl*$b}=CO~$w=VuF<)9oc{N!h`$6m{^a&13Sq^~2RlazmlP^p!1?Vtb3=X>FAH{Xg( zwhO=e-S6h6=XW$b(KfjIP_{cYQD4=BnZ5ow{8m+e?|4wQANJM+#Ue){vv zY_-t72dqJbGBJl0L5n;zQ8I6|u{b-&OheT5Ggv;j3WpuCKW@4CS`?X%TY3T%S(N{N z)ywgVUtNOUzAUtHiH4`%UH{h`aLa9X;1Q2H%Fh0myh+jBUzl`1g8Sr55}B;CV{1%B ztA%uVGd(rSPUjmn^Ck4hv&aRa7>K3uxCcKRkAKJ`v1g_aU7;8r`lv@BrTt&abJ#F7 zhRJdPRZ(6lZJP0??d7y(oYw7xZ+o%L zW=_SrP?*uoju^`I^%xod8%{g*tr*@kfkI&;es|TcuyxCw(4+z>mf9{&Tes+-?YZ$u z+;PX>(cjyRD3!M+mAyu_jzml|Z-Z2rv^0;;iSgaNePkqMOpZ^XyRXj_!qMRoWT>P@ z$$VrKaSk#naBPz*M?toK04JUFLUU?p-}9Hh{1gr#HD==*FBEisNEkxH`+ zQ4);+BJl(XOqs-~8+Y7!E9Uak$QNd@dFu$i{FSdE#P)d1;~tOi{qP59vY-bZw4a@g zvHtI)$Ylqx&%Ud%bz}tZfBy$?)RD(vcOz2bshA zTi^PY(OhkFAOoG~iO!1AnK7a-;sHPX=}$XK2JpP+JQt^&bRtHEConxTXLS0KpZ^R; zKk`u^S*7e1v8CnpavP-@)fCcH(IxSPG9!e^KShfZOs*@JGTx=_VIzSE`A!U_QVnZX z?S+}?f*JT)?S|26DL*=I=fDH^XC~V7n>>w5FUdK}&_pPhw7uKOR%{zK&C0Kl_sKx0 z%LGa}u43e8fgp~1_VIYp3r{w~WF*st(XnxS`x{@!!w-LmInEGDX#S+F04iy<2*Ywn zR7>P#i7a^=+lFa{Ls6V?!gKKA7oB45sJuo;$E@9k$3~4FtNfKpiS3)V^FNL|;W%7= z`IT0;Jyxv-2|TJ)=H!4`cjukhYxP>_AW_X0{NYc3Vh*voD#kRW^lf38m#^ryE%tOa zpqw3YlBkd5L{wi2#ACG5NRVY6dwcrvr$1do-rs|sK6g%u}GJkZW-`R;eWOFT)K!$$`56$8sn&QKed zt7Y=s5~AsZox|8{x9p5WohvD)(wa4EuyOqclPz?qSVuncC|pc@m%~&}DLGb^-oE?o zXY!8fFFeUH9gUj{F1P^ide^%wuHLI|vom=dbkKwByhLsLvT@@yUhZQO`jqhe07>1iDiyDew} zk_VC{mn!)_>{_7lCw$YG))*e4Y-sYh#v8{%BpJon^aLu!5{A~SChlmv(KO}m1X`5s zYt%=y6-bOSvc`QXM;a+Dw#Ia+IOv(i?7EE`@c%yg5%i@8YzyY^eEVYTz4xA^3jxwP zH|dPz#^iKL<-|`a+NB0&rlw8abh3JgbFM;BSr)b=0jO*P`D2rHKM( z@14vfO|Ou?q3`6d(6-Odde*VV(;oZS$KVG)_yHdM=ttW`gU3Jq@pksM^bzIl!(Br< zokcF&ZANPusLOM+HtFk=pZp|lx#bodebiAVZ%dBQByjOv=^w#J(4JTMT&p}JYm?I( ze^$S!FEpvo2OsX&Kp8Dh*-a+)u3Q3A?v6R;7&}Mw&UIVO#!qq1KyqhaZ@1YAQgLUL zpPeq_YZrYPha9Sf7y;^}+Ofhp)x%myLOD=iy9ZE))gevV=3m=5zk~Xq=$#fq2(-z> zM?QKX-v9phTDVlIo9r!p^BwOv3(tAZvsql1FU4M_Z$EvwpMdL``v4-q4JkKFN%yui z^tPJ~Du)lMR8uN7lx7QyopE`LT_I;jywJtX2=mOH=`Fv zLzsN^_B(Dh<3&7{<(EM+;qTeO+f!pzJnbn@#);2=p3R`Gl*%>(`l2s?6%RY&p>Au6 zu-iJQR<58;?2kv1RII9q=DJWUl&Ew?sO;sa$Q8}8BxO|RHp!^d!Zy26#u)8q zo}ZqC6eQW?z66s;VZrJ}Pk zf>c)f`v*+1eataW#A&C$5_jCT(Hu}Zr|8RH`36?4SV@JsfmJKlaKLBHa3{#mv3yiC zXL-*T%4Q&pMq>!3b9l0Nf|%%kcS|Z z%$bqz^56cNZ5yze&e2E;t5>hI^PnE`kO!NwOoE;S0U78#hm!i+2OoUceL*xpv_Q@n zDS+Y&I`sdJJMOUaBt$br1LYvlc}Cy={`XCZ*t&JI2~sb5(Mgt$CMd{3A!Q^&z9t%T z^wCG-GoSqoj(p_9aqz*1;*diQH787%Of){Q0^?J22(}yKJpn2&De}O$r6r**5KQoj zVQhFSWU_0LE+&|+COaf`CdTv}`nvi_-^-+nEz4Wq3AAGK*yEm#hd=ai1j7l8jZUJc zpFDvH#iQL!FU>lWw^6tg|H-9$$(yuFHqLY+rbMMO+D5K`0QusRp7Jz&`qQ5@r`fXQ z%dzi+4zhFf0?h{BYb9^Ywv> zW&fZVSAYGBUy_bz*q$lm^Hiuyd6Nf@J@!~!b@iX{;uoKcwWQlUi8uzv#pvH-xA-H zL1E>}mH6e)e_<u4*IxT)yz}gHY(=o@ z)Rj&X_m9MC%0G{Kg%z5ML!Nd;!vD--g#_`y3J|}N-k(sc$Lwhe6V@bR;*aQ zmi#-7AnWzBU;GsBdiU8FT)EuZ?Vay@C;PSwI-^PbDPFz+9gT$`8P)1eS;L227u4fA z`^YooY1N#@o#>b7c7S83(x}>*6;a~k9BE6VT|v2$N4?TOl=L+gX`?6^ne?wwYh%Nv zaij-AXrPXAt6@%VIZdwk7Xfx$2vy zEH7{2_6S4w};wIlFHoew_vuxo)QU&t!8K;fi6$Y~^6I5_CeUp?yR zN8ySq{(yb<*~6R=IwN|&{r1B}U%trbspP0&EQ;%{yAC=(^O|d}u~navO&F4WM$RVD-~IRB-}sz#4Ig$6k^wc5Lg#dLclVNS)sPrihJE(m5C8Mp*WlH! zdJQ&h+CVl(J{Jtx*)p=vX;N3NJBv7Zx@7Ml-%U^_@U}mno}4oI!gJ<1Y!H4hLjmPZ z&z|Xn5C17}IH)s-au&8AW#gB<`hRTl>~Yi+OGQe$S|Y@Fr=4~h&U)J!kX2N1OXVi@ z!k6Io+i%CmKK6dfvLQ@O<*A>!Nknx`Ze@A`t>7augtlhZfH>)-6LIjt2jjWVeJ;n7 zcE@U>Qk5+wW3;kZY9O78pir#isH2WCnNxNP-VAiF)jQ+Khx-Ktrl+Uxb&tr=Qw;}g zxm=P6r`f@^C@`I9<6U395XE%R&KPP`sz?$k`yxr~F|gdWnurf{qm_wc-OMmHZ{32a zzi&Z<)V-ETV76Aa196wPllb5Xr=y=bNwg6*i zC%^Dz$mV+S$uE8pkys4RKjFV{`5&&pkAL?Yoc-=|kZc7J4Y3W_F3oxkfBF3t7~8xB z&pQ5@X!H3kcl;d}eD)%o|H;pwQ3e{5V|eYWPsay7@)7h6_2RsbpNkcPIXvl@Bk{+p zufuR5g6BN%RAi}?HY){mn{g zdJ&Dq@t$|Q6027Y;yEY2gbL(xocZQA;30<|gy%o|Ib^0~eCA7Eu*1Y(|I(M+tn{-# z`XRjceIG@PZLZlHKmG0Hc<@6WifUPBW06=?$I;(Ah>77k1)VS+`{={4ar1g~=Ry>2 znz-~=*I=K04@NNB!h1jXPJHbA|A#2s?`1E26Si*Jicg>aJ~G`lZv4v)c;>Ok1VEJ;DrpGK@*__6)>_9(t$=Wisx`LoVZ!(vpxS!>bt_1PqTC0e1t;)VgA(!nl#Y?MNgTV^2sWh6^kZsA7FieiEN&%C7A4h}BI@YZpxT)7WB9_*+wLy$cXzST5X7eR}mqd5A8=E(7LW=Fx*H4@sA4NLbh1qhI@u&b4 z3*^xmTd`1JJ%?7VuyeNLh|?+%ZC{r!m66JH+o7%@)_r_z3x<}-0X0HA9YTJtidT3?t}X6L9A{ef9w83eq$eL9kRZpPC#RVKhvQHVmmbQCCcAN* z3T#IKhIJ;99P66>t^Grr!Vl^lt;&pT;fSivo*;b*kD2o%5L;!Am2z{$9O8qi<(ODM zi@r>X-;#dxCa`sK6fr8l+M2Nxt=j~zxzQ?C_I9I@-#{AOg&U@#&|&J!+f%k>_1~uI zwt6U>r~J(ET&>k@TaQpAVXN;;94~S%NtV@WDxJY5J)&C9qc}Hr zj8!XWa!d~e68wG&m2Av*Z3s^k5Fj0&L*33htIu#uCZnY5EhKs}nA0RPmcJ{LC0nW6 z%F{5Jqqeyem?^CzO6%@=#TnXU)bqiI`y+^E+?9N&Ng_V%z95{Cp;KEuOBc`z&91JT z@f71nkr-wDBxRfl#txfJB}6@;-3n12&6{JtS}&oW`h<2B&?I54s;-u6#;2rnNUrSe z=_6eaVYc8VQi<-1*L7vnm>3(kGDt2}d^z)lqsISyuy#;iXuL|7(-`*pEMJ_%>XoaI zpPDwkDVNGoE*(RRx<)%5p+1zw=J65sSp)-=?F-`^^W@QUBjf1p$)XmmQJ!qrPCSy8 zdk2=WKbhBT-uk^GevrpW{&ZW5d1qL8e9+^IKKSs@1`qc|mt?aLE%BZONuzSv3}b~b zM;$XpT{ISS&Y$tAJWhV;>A3mUTkwH%--i>Ae+G4S%Ab5Eoc;CBFTtx{aXMwgWw`Xx z%SeZ!pvXs=50tGN%vh85!x$eO#sGC|NqQ~vOf7t{1c>t`%9&3;?l_K@8eZ^%7vS{M zPPJ7^T8*Ub@~*t{O1$oMud^}xg)e*od#qhaIl1NJVr^k=se)? z+oys5KDf`$B&|jgB&cXKS-M&uGLIU3^k*8&j~L>Zz+hFmOc?G#8xRE&Y9H0Tzw9`L)tEe z%3!7!BU_3{CbA^kGW^ADCV5|9KMMI8=JFF*y;mPg3`n!YNaB}u?Oaurm9u0QAsNW(AV9A=Ij*uyK|_qEwtrEFeG83 zfNr+S=)@Ez%TWxi*xOcomGYBz2)kxd#}Yc2yntM?g^8(Iw8ATGK!w}mY=;=8OIqEO zKrAG~90z+SiE*aaO+~Q8@4{?L8NjNIDjF0>`jcs6zAb*M{))E3s8gAqDpk;?5R*w} z5eWx))okWsPi`4DtRF^(eIAPjYxDSY@uM3afYyX%8X!I?WLKSA`T)NZm(P7R#RIq>0E}S5gF}sulG7X zO6@P==~f%LSt!ev_2TB6Z?^CUKJWp2^rIhT`?#f;GB8NU@Cc9ylxJA4NF@d&1M6Mqzsr9`(8>+ zDy;)~TWHp!M$7tgNlcSJAr&OAnnaf6(ROnc^cWqBwPw+7R#6RPNIOZs1CzE|W2O{G zmI7UVW)itf(pEJ!N%OR!a6A#l?CdbQy896cc4K&a3fZ0@`5I|rrVo{31Hmp zS5G&_DpQEWs>nr)CR|q9LrA1kXq493D&KlzIr(Uqiq#ZPHFO!i7RXd{SEgy43($0V_VV#duT7uKe7L zt$eDJ_iO7|@tG3aMBivD#F0^V#z{Iu8DVA?=bn2m4u9CgZADeFR3`5Xv0clyx4l*& z3#Z1$Ca_|~Dojt!p{F;;GE}LU&XL!LZPhg;9y?F5QHz+I)76#6@Yb#7Op?N&GRO!q zJUU{tUiDkgb#{_?o7z)ll3bKdF#Sq^3PqX%eT6c}G>Wx6;%qm~ywpt1Fy)szWieu- zt;p7yhT@mnUa`co$I>~>J zJ~MdIamV7b-@O=nAFw}~`6@yjADLjhqqs|fZzIBwoDbf@yeKfW{RfeSLkh;D2A z>b}&O6d~;t&Wl#*y<}{Kjpj#V#P=5IQUak?4dt0RBqC|zIq6!oVzPNC*@qd*w}D8R zN-*;%g)oror~F+-T@%;ZCGv|9mUs1F^M-YZ_GQiJ7pY0tnMQ9?6Y3%uC;b(^uGUJY z{48cg@3aDvxVZkdTd;i9YAV-dmaRd$n=?8RBYo0r^K>d{y2IG`2(pyRb6pwI?t)u^ z7fWDrf@79?3`rWt@CGDOI@gcsWT{WIL`MUd7#_voz)H+bl{uaUQ7cqXp@2R`n%~pk zhdGYhF7mHCw{F5(mL)J(wsK5V3mo|YP}--SGlia2L&pE&;V25_JoTIwDr^U}xAeTi zH1#C5xyG&fBE&urutZ8fclQ3|UJy6^7b$p#v)+d7jPTO7V9<68 z(!?;cGbK~D>Z=hBplg8qkus+ES-ef1fD9}`xj|g46|GZFXkl_Xk8aA_+M2mos0E<9N}uy z&NZk-!{(%lwL<7`MRC?~FF{Y41iW)_QjJI=?|xkV5MppM8bGNrhi1EAGh0_Le=sWL z7V^b$^be5n)^)gZn+Q$D90n$5Z$Tuga1POUHxo)=%g788sG^@r+T8RM(s7+{6vg!9 zESX9-s?4uiDH3rL#>Bg*d=_UWpnb%(J!FLO)ef&N@p~rs1(j28;hdJ!7N2jadbHOl835Mo0qTe%3e6dKWP_JB4s8ZD$+lfbWRh z$t;rz$rOOJ&0mu3tgz0(lJloYA*io!0EKFUIyD7r5|0MU84fFt6t-;C?BXt#Gi5@Q z&RW>_fP+viQb{i}9+|dQ6lq(XLaB&&Qck!jbZ6rftjb16YD` zesW?Od+oIbqob4NG!ns4TrDwnSMoB0t-tFc4>7uzXFo!YCF^qs%rd7W3%s zPaqMG;q0@|wQcYo{g|UzPi?8=_M!KLLphctR48vBeDGn{1PL1&<2y4J$Z#&@PD+75 z%82NX=tG9IE=sz#apOkpwdX!22x(=K(XCd%z7>rUJ(-=Gw(U5T{@B=vIg>>1+T?L^ zoJ%*X)(dC{tLC5zkO|5e9|)zGSDif19q8I7?JZXe%%?;en#63rjsCtNqoEBscbY9E zq6w=@Rc8xjV>W3ZmFPo@yoRa{VidqOZW_fJ88Bxj>>Qy;jJ&UqXWavKzGK}FlR=Fd^$fdfov*? z$wI-LSOT?~Rsl#Em)xL!(=&naLFwwb6nZKCI(sP4=@-3|(<+`y+g*nttL%C%LHYP+ zKL^Jje>~3r#3zl}-6%W(ag2FL5unMXN#qwqSE3jqD7_wav zwxgS(p|t?m0w%0tQcB}@@&-{P-Bzi-+gIwdXA27 zq1-{)gMD42T&C>>+YPoM>mvNB*ED-JWGfVAiWNIsMb0E`JFC?T)mj4WJ0M6F2qyN&Kx zl4)`*64yhN`}3rMCCb&yR8pXle%MBy|osU8SsuS7`hi?`bwD z=SHcBYwzxs(JpN#t+C0WN8ZswcW;h&D%RA)!V%3l1@(x6wMCKRv`XcBfHM4+O~Xi1 zK-RXH^;VPgL+9ebw%UtOHdda6sTuoT=R#>lX*58dr14MMBRZmOfAl@#A={GN=wyrS z&kj*rYh{wcqMIJ5uNL10{@C;3{tUwTyOIxmXVUHs9?#jaGpTJWvL*jCNT0P;bUKwK z?zAX>jbqgs%5)=JOum)_-egPa0)i%gYljrcidvnjiPjTSleP_%js}n|$MBMIWvmsC zkO5XZujseF^$e`LJ9vGuBWF^Qym^GYcg3x5a;r zbW~**ZA(%fR%*U8>HY!t$(bY&N{UcM*@1PE#%h$E8*ky9i#}o7+*M*ha}EVasHH?{ z>jQ1SQlS!~nZj{)c7#Y8A`)qPhhQ>>GKp}j(m-D;hPOTc<;YT(iglbxjSkYssH14< zXgeA}p)!lEZXF&LL2-_V*p8Cfwoxoi+gS_wd>PqvKPuHZDnJz~T5aU#(__Pka}a0`Tb&IgV_l)vMk1Xx#B9i5QkGX$Ge_oZ+no~2s+BvXO3fIPyr(U4 zhkUt2p`x2YK|=+#K`dvKR{d1@F3NlYVJf9;2c40m*$h2hy{Hx_2$Tv~xq5|dqoh?w zg~BWcRnoTR3#e}DOBp}qVA4$cD8H%ISyvJZ z+h!-0GGQi}Oq)O>b}0v(2$GcXe4#|8K4~+hZS@dwC(Qb*eN}$VrWO;{!R<0~DNh+? zWt`P>5eZK~vXx7TB&MdvF}OU#cB@i}?Pi&x*tF#~tleV;%Ty$>tD>)G74y#H_B*e| zqmDcV&wI}E@%hhv35}*0zT09*1W)A2QWvr1%Q)!_B8VrzMmRY_~*bH+K#?va!lpFx$ zk8%LXxY0ZSMKZ4~%Em`W(Vfj$I&*U~NRqDCYoz<4_xet9Slb;cD_*PBC_0Nq z&IH?zgL!C0NsRTD{Wa44~Cr2s##He@@s?s?4$GGhVdLhFHi<)L?~H8OVhUj~UoyUv z%VlikOqG?0XHqEF#EXDzG({O9PhOnDTz z7f;r6tymDQYF}#MUWZLlD^;He=bZ7OJJ)4=R$JY9xGS7f`Bi4gU&3wU#pI0<;+WFa z7KaE?HmPcr81axYjaHP!qDiuFmVc&bxJ(o<`6NxgJ5!vc;z1rw+%OrCWmVl0lqob( zL`G_r%Q^GHwylBc9i&2DDp7VIE@^gLg|bvE)MaYU7B>z#qw?NEyynvorrN$Cbv*Eb%GLJ`S@V0>WQ4l@$4aWE#qmI(*Zf z$+&MneRu!@#Z;piQjB%im|N^j(%8`$5DtjO+qk3LEBf0aJuDI@h&i@{Kw)YM8PWq8 zjfAg4>PnO2zlVClY=QE3jkI4*aHdDPBDuCsA!*Sca zAy1suS!an-n`4OdHo)=B!4xJvFL4}ob@fmO(3l_%;`k6v*SOL6(WHf0mU(blztJA8 zh+MgH6(&f(gMlb%owkmwV`gsJ#(I$Bx50X;9NDfcdDaAay9V4CB<)n&XzNUCKWY@( z=FV%YEa{GBzH2qE&LJz22J2mwbWk)yt6t;O)3h}SU!YVct?hBEKeb9z4)%haQno6| z>1rORuNL10{@C;3{tUwXyOIxmXVUHs9?zL~CQ;7n>dqS8=$-CC3RjY~L{H^J3QHnL}mP6#9)Yf_UyJWtLfg%Z8?slFKYMZN|iDuMaq4QNDw7Lg@rIg#hQFUd>?KGkgNl5KIt^1c-M9$0x4!n zL-9qN+suzY3Cf{^%0yVk==@gZs-m1aE~bqH=B8J2&dB(n8LKK!sNHmBlwnND5Ytjw zTOFhf>b-sMF1>U4DJ#w7?v$YeW{@K+W+wVhMbZpeZMh<__e`g)wSNR{rRUEE9*kJ+?Fpc ztaQCYs;wTK-ztZtZNRunk1Z((wAF!Xd&TwM@sWj9c6aub*B?7Q1be&ZJC0{vt2_eQ z&69CjQsa47I6%Zy@L+K^+_;(D@(Yajld~JLo0?I65h@li$zNO64gY;CPXRMQ=&_ zn{C%#VHB7Km06ZpWeIok(f;C=UWpCD^K#9iHq)=Asatz3f~8@_7hZW^x^_?=a$a^)WPdvRRDZeg;joAG=3kRv zI{4(8)2oYnzYSQwc7EE&E??nMAfT;ti7$k9E6vX-tF#k*Sw|o^%e##CZo*8csV!+a zMng09zQuS{@2wo_XOr0os+*I!IA&NZPp*-?<;vm8s{DO;;DV<(N@;A6cFRa4#o03& zEya6**W<#MszgKn7QN6Gh~akK@I@2T3|~TZhgXQ%-NPG~io-eS4x%f9a#+t>NKmhF z>A3G|VJgtfBUTq3m!9LsnUnJsZ^z@q1NX|yyEDERCurl7^qq3Qeb}FlKs`QH0d{-Jzf2154=Oj_9ICGrhaOr=NEX zi~B&6vt-!T1To180_}XG{&2P~d*pz9A|9yAwYTHBo-8SzFVOpWUBddf!^d~Xzdcy! z@5O!TgAe}-5Wn(d;zmbC*0>N4>&oVcv7$j8L=4F8tpx-wC=jZ4)N8|Ig@ygXaD{be zat7WVZTCf`QZn8d32B$DjtuGn<1QH{_ZVhaFCXq75FqpOy8j-72x5r;Dup5vkr)w- z3REVBKr)FrEcswJLb0#rg9lF4$jeuLur+i%;DSJ{{-9Xe# zMvXwPJR#JrAEZ>ukk*p1j`72dgbRmc(BpSaXN;8b&JLrtQS1umDTPWWOaf!i?3K!; zx-GQ3Gs=jGb}H5>qw5F7Wt(>lQ0}?PBgdUGArbS8Vb&k|b_s#;U^^?p!Ib4X=Wd^r`iaVGI6^I70`Oh@#b&l<=WzlcIBN}4RU_>`Ptj=wm5 z$als4>gkZe8HI{V|~bQT{(t2{pcA1 zgr`ovw8yq0$;D&a^S;A=@!A<`&w zCg~d+cf57vM>td#dGNdTke^ns=BI^=%c5%*e<7p zh{!O(3#+dBW?_7}^aP7b?6tdhw=yjPFML=1)<{gYX zbtWwWBY&jHOX=X!uunhl9W3qxt?H6opw+&fLEZX;d~_*)6|Ynq>(U!1UAp#GYTkBr zCJXTGLN~bn-JXAYu#k>mX}|j5!#^8@|K6%R5BCM)VY-BiVd;LvS+g@!pK_C&h^rhM z(ygRp39CaL+qc<&ZQN)q*dvaoj<6``{BAbu#xFxmS9g^~8bHI!wKSRoLXJH73v&r7etI#g33;U&ms*Xu;?$5&kYJ~5b@W_DGe$rraB0k_i#&wj5fnMjAg<&p#eWR~jx*{mv6YCR( zt!#EFj>U9Q6xZS_Pw%<+{SvUsEe6G1a#=eP*A$#zktAcQ44ZN$k}z6+By6@KiFd`5 z0aeC08Cmr$%j$yU?V!|N2gvAkllO2 z{11W3zmV<%SmAhi@7zb$w#s+OwLN&>FS>M_hsEjgQkz)Yck1n}6q7T_`j7RnKGv5D z`E|sN?O^_K=bgKC$}1ktBqS%f@A=0bs4bY6dud>=Exz)0b)SE^2o|@6i?bB;jndUS zre`ZD7}t#W%2Ro(j#_ct!A)M~RI(HmUu6hGXGEHll1WO=3i4{PA{qyl4S$9BO!7*j zlcfy(nlxlpRTLi{kl-1M7SnER_h?%qcWBOCU4|pXrl90prPX=j(O`#T3OfW7ZCNb$ zN){I$1*zXCUOgyHqGe~L2B^c-ZKkJawB&YDbmFhu5nzF~Ej2tjP-=^>Z9!#oZ}hGB zgjY_{J^mtnkp3Y$D2J+eiRxy*ZOnDjRU5HB`e!4x6V~|Adkgd5eAq(npT1S@O3kiL zl6G}qNpJyn`oaev?q6`<V+cczZaL!=D)ue*W&T* z!+#b6>(;HiPrVT&dWDG@@mK`yMicdV6^(WSHF+jOq}AGFpI|dYTbd?Ua%@y0 z4K&O{K|zgC&39p-S=E|JtZ&`-9z8euZv>pk&cCL_*e`+eoGyf2Jnt*!-nq;4r0<*d zM%xIf7?E~O!vp1D%EHN3-eOmS35yqPYg;)TM8;udN}(%*oHu%}8GNc+yzbtWA}V(a zakF;l;Ad9{oBe1{SWlKY!gRfS<^PSfs*K~xEN`*$53pSmt)k^$4=R5d6kS?wWmju{ z2BFIzY+sj#7p`k&uJUJm)nB0UsCY`tW?1rBncu1YaW<#!nsKRk?yM>oUt!nw0+-f8 zyL;e07c73a5MSwR2OVX78xRrG^ZC1smUaG)u#vhLX5qqP?yhjlt;W*KXJ{s~jBt$s zckj$>b~8|Ske3fW_^?}mlnW_>61u$K5>m8{iT29=*Mevd>6sbLSq9t2iz1q6mUx+H znH)a0?U#%i-Zq_bDv*z&LK;XSOgbk1VUqpN+C^xW#tm$oW}&*VHY z2OGg0L89f1w|JXU%gdEpD`?EgVO#435VCDuU3*!3C|y3+c6=5#W3k5rb-8liJuHr= z@9ryjd3)(H+;J=#Z&JAx4!QnAqmO^se?c9@Fa9NCwd(I)-yJNDXZ_B$cKD)lh@W~9 z*ca*t^&juf0IkPTyxpud*N%(Jeoukv3Kv-qw-QbYj+~vkSa;h9}SGn(nH*y5&E`39wu<0Z=PKYnsCXqqs5Yi+tIV#;w0D4!CkUlZZWR>)ZG^QNp zhzd3-&ue9pB>kl27wl|TsvNxh?;W^u7%kA4H9E&I$A`)*`fv9@nfEq}7IXPo-m2@i z^0(@4?a~Q*CG)~d!P8@W@L^Yl|EzrI!~GqE7mfLqNi#cHnY1(58SP(6ad$?6?+fqP z^}X|@_?_Btfd}raofm^-U)S#Ldmntb|AO#;$19UKK8X9;T3>c;{VoTSrccTK z9F$(hII=U>w9P){+C-~FoNu8TlpGnh6-_%E0~%i*uk^x8VMovI3EVw>_2J(I0TS5z z)SKl}9U&@nffkX99qSw*Et|2^4pNaKvY0YMrA5lVwxhB0kEqPcTU3oU=C_(ytkejE zqya6tTU0{D(dChRk#tl1%qhU9HiMTRSXj?_NpYH2wq%UZvpPdHmbYnxrxDO|a1d2k zG%A6iG~c(8Y0Q}6q!e^YnJI;g;W=}Zr^**))+&>nIf|dEsbnn_JIU(4b@PTp@`MpIq96zt3BWa>6-ht zpi|NaUbw2m0U6IZp!k4g(@lmK#f-73^uDOYJB*Xo1Ykl*wj4g!mV<61%Q z+}%49#DUCw?zyL&-!ss+%BOQTg;-W17Ot6dg$a+i=gl5QbA4(!A!D4%(in6F59urh z-*B^$aBPRj5Zq07J=v8+YZ)ftuBE_Cw2Fp z3B2c`@1n{4WxSDZI?=qaqyLN2R6e5DDvx-zwmDOJ0fyyBvp8g`=2YP~axUoJaXN{2 zT539Diu6CIm8tr^DTSWpVSMEoYB;{y3>Vo(9x1XDr&jIrFm>dlAYk;@A9=&(+_y@dD*fIgcdINY0U*DLKf_ z-&9Kc<2jSunKlb@jPFc(V1wxNQfJcC)RZaCixt(K_3`3y<3^%OYpGMo-V#40qiX_~ zlW$2^h@*1OhZ-5m^$paca(+_YuW0+L5an;-b{(lYm2;*gWnG4-aNFq-ievQmK7lKn zjZ<^7v*1BT2Lq&oDy!(A-F23##+ID-99J%HM?VB!TijJxHP=_(Gw&|gSv&jS!vht3 zXOa(h1;UHQcFrX72;xX!F>y2y_4L5e-gy~JV0=ZeIG&&ro_|lU?-qUQ!*<~Mz%iwr zJChvWTFSe2#@}>F1`tTr-1f7b^qb#LKKzG3_^%08Jv}`;bS7!5eA%@nm&*Pu+>W)2 z)SK!YBcyGC5URlx#{uQqmh8`RCM77ndd{T9IKMrfdvdsUS9!dv-IA_*?;+4R4#0>1 zJOm~uCl`^*dk(Q^%7m**wPah}X})i>R!4+Nd$m?0zazpJwIz~~`I$3`xEIxaBc#&R za1Av+5K_w+CgLm*0oQj;_whDh&pVHWy3Uy-;{!jkz5g{zI))GfhGn3!crx1XV+{i6 z`~)35&a#>_DPV(2v$YH1E_>fqpSF7`BqfaR+a(LjGwV5%WW?~CNmbTG#*2(5S`+fJ zjqsk5FN+}OlAKA}21DhOVyAPD;>{wTyTPnMnqWDcGf9rFh^<&syi{|F_bMu(80vhk zJ=5h((&52slM35ihMsiI4bno?4K{_?Hl|I{^FWk)DAmS{i-piRJ@aj>J zEr;>EnZI%-x$`O%R=YYQk23)3oGDj!cP58&Rz#JdLp{Eai9(X|l8&|+ZpoP>+9vvEbg_Y8cof>&G+0|nvZ?)x^Js<2 z&X~?`oe`4XnGurES^4DnDW8jmE3CK%j(2#*Rym7A+rv=#$WM%)hC63Ixig@|KXoRd z;#nE3z)`E0t+Y`dDzDl^~#7-aQD1)Q5=3ZZ!9-ns=PaOv*(@5eoKy1ORLO^C!A1p$z7c^?ghBXCNj7S zPn>gTK2MVuSa*UeC;PkU+DT5-7Ud7&u4ECdIFekMtvdNjlV27)lNKh)xUx!)k=&*^ zKL1FY`EdUPDX5+^Nwiyv@{U#}?Wm81&W6$i$*ZCdnxJJ^L%OF=Ld}@P36d6@v!3|o zbQL#FwY_zKv?SC>qZw+V9@PrM7Ej$WkW~PM1PSlds)MrA7FDFTvG| zbXen3W2ECu3W$Cx-0Wul9IK%TMeNX5jyb+}TUEOJ<@8rto?fM~B+%FrD6F3f>y^fo z*LF+6A5T8)D)66`4}EwbfbgQxaVE{q&UVhx`ZqX}1SUWEurqLd;22UqpGPj2+t!)H zc2y6F_b=_4#qxpILo&2W4lr4Omt@Fo+1*b1Z9WAbeE9c*@ZVdRBswMjC1?^ggOMm@ zJMDNSTY$4aOY4faiiotG?xk~&J!ew7HDmWmC`DO0OzDxaJI*9G&bGyK@yVs2c;0ni zok^;L5BCoUkooOICHTjnFjqz_9!ITSK`NC(I7s!sT16}pMxj(hP7uTgxw5k0yDr6wh4Qf#%CVWoi~<*`K@La zI*)8Mpfh)zk|!lFA4*$Z-Hma^YoHLyk%0s_=w$SA%lyol#Pn3=7_nLmMn(-OS~6+~ z=HyJ`bGK4S&Lp-4f7) ziVE}B>L?vFz9VN+rsGVS>o}7X=Iia8NooT*h31_}{7g+f7jxy!E^&$_WQ5@lZ@avC zXHsVskR9ai86f4f>8u1ZCz6a`9pjKY7+!f;Z`w11rNYuSu>Cu=t@W)b(R{yn8>IO@ zSKg|K%ITf0Bqd*!RT*^o;DZml8^}no*jUh@u%+KpG&J+{?hjb@Xvb38v^2bw#)$Sa z7HOai<-&Dg0~ zz;Y&aXm&e7p_Ba}-q3L-wOg$JB4?7NA7uXRg7KpUls{7nPMIMzQg7EsP7!FTyO@m!y=pbp7H7{UHr~u z2sx9)x0mK>d~p#h4IA*gfb}VplJiRW&Zp$+<<+mvvB4h}#~IQYpAcdnn5?Gwi(qMZ zX}vAX?<^mJ@X7jho9|>KS1w#WNe^rgonB14J!g^>XDPCG)wj|q44;U1+U`!YxJg-CzeV??t7yAS(POvbk#P_w z{tzogV@YK+ZbBTVfku{cbQATMCNs5>D)sYC1ak?>qrnQgsvIvIYxzjR@K1V%J4eoK zPrAeLu?TiJzEn;FcQ-klG)>=X<(|=NtRNZ#`IC;=3DDo<8S~JshQ)obQ)d#}RQyzY%>&8QYGYmE za8AZ`yib?xnF7ZH`F=_NZqL6xaNl`+&+A7YeE3&^_?0IUi%xmCFGoz1c&!PZiB_J! zLzoL|(xvPTbLLEvGrS&<{aN~U3z_B=al36hcbPM(C4HWHT4#)zENj0Vo_o%u`S%^X z*Eo^X%Yt;m_YQ&~P5$!X{s4igsj2(an~_i)k!Tci`5C)Q$=5-5*>n=6S{1Ee$P^F} zUpX1{TtA&t!#N8& z8j<3dvws>eU>Ow#Oh3N)HI zPO!5+wsR(_o%Bq^$t5UbC?7Bl^^t2UgC#=L0_^y?Q?hxf4EC)vN;yZ8tAl-OhBEz( zySs%I-;3je4?gT}pjkQ+u)Nti`Yqv0LXeCF-u~x1heb4I8(11%N@qICiHv!qndCUe z3#zTrGT6?o7XMLoi-kDdUhu^Dg+HOzVA(5UMuXW06o6kJn zr@H9OK}{5hwY8lRPzvySK9Ms?>6LUAAfIddR>f=ZL)F7=TP9~xiHWj}=AB8(SF2SB zbhQ8;ILv52o1aVScPfXo_)Kh*f*6or>`S^KKy8&=#?( zldF%Vy$#$=Sn;J`N~u)2JD@hXD_Ht|!I|XAC+s)zrg>+QjKTbE&Ll#8HRH0)LX(C! zS~;QiUz)4hdNC{wyZCBrFgNS_ntbF!c8Ixai|$2-IR{f zPVr8}2o+5p4mCt)cn|38RLZ>6FDy;Ut#aJU{UjMY(4gF|ZSLYD7B5vCB3^|so0K!D zjBZmq0_IE-zG<@9Ki8SWFvo<(h3KhPQW?G08EYD|k*yZfIg>;`W^B@dwlLARQ4W8N z4^I!!q%wiVkw7c?^ju>~@oc3M!V5?&860Q}I)iCoLw&z4eW2XK}clIg^yK_}~J+ z?)1-m*nyX>$1gp;=k=oxKK!fTuAE81aE$odK&p{9oSqF)ZstANm_t}AlZf2f0jnI$ zSv==VYN8U%nw@;9Gl>efyA#j#O!)}B_riNUv$02TGUUC7mN$@m_zwf{{{bodslX5$ RFn9m}002ovPDHLkV1fYPYzF`U literal 0 HcmV?d00001 diff --git a/doc/de/media/Adapterconfig1.PNG b/doc/de/media/Adapterconfig1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..ae5f7a790d5a152eb44f921df3fc01699fd706b9 GIT binary patch literal 21568 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 literal 0 HcmV?d00001 diff --git a/doc/de/media/Adapterconfig2.PNG b/doc/de/media/Adapterconfig2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..8ef85b18b9c19e97367294b3436f23dcf6afcab2 GIT binary patch literal 9089 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 literal 0 HcmV?d00001 diff --git a/doc/de/media/Instanz.PNG b/doc/de/media/Instanz.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d7c9a1cb083379fb69e818438e63221341c233ab GIT binary patch literal 3592 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 VDwVOeV!Y`M1hud;$D4Y^{R=R_94-I= literal 0 HcmV?d00001 diff --git a/doc/de/media/Objekte.PNG b/doc/de/media/Objekte.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d18dbba08da5eab963d481b7e49f21da7bf3e986 GIT binary patch literal 29913 zcmdqJ2UL?=*Dm@}1Q7(cD4>*J1Cb^mAT_945fxAoQ7J*HZaSftB#MgEPz0pLjtWwh z4nZjafneEE3=kBOhy(%z5<=Q}ahJ1;e&_!G_{Saho{Zsepuj3~tvR3h%xA8IlQx#? z*KJ(~0Kj^yqd%Vp01+Vo5YS#L0{+XTYn5xjzXaf?Ee`@^c!eqO3t{gA)&~Hf5-rZT zxcZ-Bfk)570YI{C^^X89;IRh)g!o(ieBexk%gktWnlmnTh?TJ9s!^^9HDDMg%-m8u z&v^7;=jP$8V^5r1qDe!Ka5p^t4!$n))S1uzx%~6q%0piJwBBx93KUMS*%a)VdgE@> z_MP(rr?*?Y)0;$XxVdHSBCuUdaK~xjXj-ep-rL(Ib}Q%Z`Vftbbs3FaDTtnRCHEH6 z*}QqRaZ_4-Es{QM&TT}e%eq9oyy;yO*~t?JzL*D_178l{X(Atg+WHgo&CR;_Bki%# zyF~!h!O0llOHmt)y40Gx9Kf4<;X z{)a+`{G>&�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�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 literal 0 HcmV?d00001 diff --git a/doc/de/media/mihome.png b/doc/de/media/mihome.png new file mode 100644 index 0000000000000000000000000000000000000000..c6e9888f84ac726c7701504197262bb0d1bf26e7 GIT binary patch literal 7237 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 Password is required later in the yunkong2 installation. +* Make sure to hit the OK button to save changes. +* If you change here something, you lose your password! + +Now further devices can be trained via the `+` sign. + +#### iOS +* Download, install and open [iOS Mi Home App][ios App] on a iOS device +* Select the country setting `mainland China` via Profile/Settings/Country . +* Setup an Account with `Sign in` +* After successfully logging in add a device via `+` +* Choose `MI Control Hub` under `Household security` and follow the instructions +* After successfully integration of the Gateway in Mi Home tip the 3 dots at the top +right of the screen and click `About`* +* There should be now more extra options listed until the developer mode is enabled. +[ if not try all steps again!] +* Choose the option No. 4 +* Then tap the first toggle switch to enable LAN functions. Note down the password. +> Password is required later in the yunkong2 installation. +* Make sure to hit the OK button to save changes. +* If you change here something, you lose your password! + +Now further devices can be trained via the `+` sign. + +## Router Setup +The Gateway IP address can be determined within the text after _localip_ under About/Hub +info. In the used router used, this IP should be assigned fix to the gateway. +If the operation of the learned devices via the App is no longer wanted, after learning +all devices the Internet access of the gateway can be switched off in the router. + +### Supported devices +The following list does not claim to be complete: +* gateway * Xiaomi RGB Gateway +* sensor_ht * Xiaomi Temperature/Humidity +* weather.v1 * Xiaomi Temperature/Humidity/Pressure +* switch * Xiaomi Wireless Switch +* sensor_switch.aq2 * Xiaomi Aqara Wireless Switch Sensor +* sensor_switch.aq3 * Xiaomi Aqara Wireless Switch Sensor +* plug * Xiaomi Smart Plug +* 86plug * Xiaomi Smart Wall Plug +* 86sw2 * Xiaomi Wireless Dual Wall Switch +* 86sw1 * Xiaomi Wireless Single Wall Switch +* natgas * Xiaomi Mijia Honeywell Gas Alarm Detector +* smoke * Xiaomi Mijia Honeywell Fire Alarm Detector +* ctrl_ln1 * Xiaomi Aqara 86 Fire Wall Switch One Button +* ctrl_ln1.aq1 * Xiaomi Aqara Wall Switch LN +* ctrl_ln2 * Xiaomi 86 zero fire wall switch double key +* ctrl_ln2.aq1 * Xiaomi Aqara Wall Switch LN double key +* ctrl_neutral2 * Xiaomi Wired Dual Wall Switch +* ctrl_neutral1 * Xiaomi Wired Single Wall Switch +* cube * Xiaomi Cube +* sensor_cube.aqgl01 * Xiaomi Cube +* magnet * Xiaomi Door Sensor +* sensor_magnet.aq2 * Xiaomi Aqara Door Sensor +* curtain * Xiaomi Aqara Smart Curtain +* motion * Xiaomi Motion Sensor +* sensor_motion.aq2 * Xiaomi Aqara Motion Sensor +* sensor_wleak.aq1 * Xiaomi Aqara water sensor +* ctrl_ln2.aq1 * Xiaomi Aqara Wall Switch LN (Double) +* remote.b286acn01 * Xiaomi Aqara Wireless Remote Switch (Double Rocker) +* remote.b1acn01 * Xiaomi Aqara Wireless Remote Switch +* vibration * Xiaomi vibration Sensor +* wleak1 * Xiaomi Aqara Water Sensor +* lock_aq1 * Xiaomi Lock + +## yunkong2 Mi Home Adapter installation +Further settings are only made via the yunkong2 Admin * interface. +Find the adapter in the `Adapter` area and install it using the `+` sign. + +![Logo](media/Adapter.png) + +The following configuration window then opens: + +![Logo](media/Adapterconfig1.PNG) + +Enter the password determined above under `Default Gateway Key` and close the window +with `save and close`. +The current adapter should then be displayed green under `Instances`: + +![Logo](media/Instanz.PNG) + +Under `Objects` now the gateway and its learned devices are displayed: + +![Logo](media/Objekte.PNG) + +The manual was created to the best of my knowledge and belief. + +[Android App]:(https://play.google.com/store/apps/details?id=com.xiaomi.smarthome) + +[iOS App]:(https://itunes.apple.com/de/app/mi*home*xiaomi*smarthome/id957323480?mt=8) diff --git a/doc/en/media/Adapter.png b/doc/en/media/Adapter.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa259a30cd937abd5b3b88f923e68c36be4f2c0 GIT binary patch literal 44060 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 RFn9m}002ovPDHLkV1fYPYzF`U literal 0 HcmV?d00001 diff --git a/doc/en/media/Adapterconfig1.PNG b/doc/en/media/Adapterconfig1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..ae5f7a790d5a152eb44f921df3fc01699fd706b9 GIT binary patch literal 21568 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 literal 0 HcmV?d00001 diff --git a/doc/en/media/Adapterconfig2.PNG b/doc/en/media/Adapterconfig2.PNG new file mode 100644 index 0000000000000000000000000000000000000000..8ef85b18b9c19e97367294b3436f23dcf6afcab2 GIT binary patch literal 9089 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 literal 0 HcmV?d00001 diff --git a/doc/en/media/Instanz.PNG b/doc/en/media/Instanz.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d7c9a1cb083379fb69e818438e63221341c233ab GIT binary patch literal 3592 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 VDwVOeV!Y`M1hud;$D4Y^{R=R_94-I= literal 0 HcmV?d00001 diff --git a/doc/en/media/Objekte.PNG b/doc/en/media/Objekte.PNG new file mode 100644 index 0000000000000000000000000000000000000000..d18dbba08da5eab963d481b7e49f21da7bf3e986 GIT binary patch literal 29913 zcmdqJ2UL?=*Dm@}1Q7(cD4>*J1Cb^mAT_945fxAoQ7J*HZaSftB#MgEPz0pLjtWwh z4nZjafneEE3=kBOhy(%z5<=Q}ahJ1;e&_!G_{Saho{Zsepuj3~tvR3h%xA8IlQx#? z*KJ(~0Kj^yqd%Vp01+Vo5YS#L0{+XTYn5xjzXaf?Ee`@^c!eqO3t{gA)&~Hf5-rZT zxcZ-Bfk)570YI{C^^X89;IRh)g!o(ieBexk%gktWnlmnTh?TJ9s!^^9HDDMg%-m8u z&v^7;=jP$8V^5r1qDe!Ka5p^t4!$n))S1uzx%~6q%0piJwBBx93KUMS*%a)VdgE@> z_MP(rr?*?Y)0;$XxVdHSBCuUdaK~xjXj-ep-rL(Ib}Q%Z`Vftbbs3FaDTtnRCHEH6 z*}QqRaZ_4-Es{QM&TT}e%eq9oyy;yO*~t?JzL*D_178l{X(Atg+WHgo&CR;_Bki%# zyF~!h!O0llOHmt)y40Gx9Kf4<;X z{)a+`{G>&�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�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 literal 0 HcmV?d00001 diff --git a/doc/en/media/mihome.png b/doc/en/media/mihome.png new file mode 100644 index 0000000000000000000000000000000000000000..c6e9888f84ac726c7701504197262bb0d1bf26e7 GIT binary patch literal 7237 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 b) return 1; + if (a < b) return -1; + return 0; + } else if (posA === -1) { + return -1; + } else if (posB === -1) { + return 1; + } else { + if (posA > posB) return 1; + if (posA < posB) return -1; + return 0; + } + }); + var keys = fs.readFileSync(src + 'i18n/flat.txt').toString().split('\n'); + + for (var l = 0; l < dirs.length; l++) { + if (dirs[l] === 'flat.txt') continue; + var lang = dirs[l]; + var values = fs.readFileSync(src + 'i18n/' + lang + '/flat.txt').toString().split('\n'); + langs[lang] = {}; + keys.forEach(function (word, i) { + langs[lang][word] = values[i]; + }); + + var words = langs[lang]; + for (var word in words) { + if (words.hasOwnProperty(word)) { + bigOne[word] = bigOne[word] || {}; + if (words[word] !== EMPTY) { + bigOne[word][lang] = words[word]; + } + } + } + } + // read actual words.js + var aWords = readWordJs(); + + var temporaryIgnore = ['pt', 'fr', 'nl', 'flat.txt']; + if (aWords) { + // Merge words together + for (var w in aWords) { + if (aWords.hasOwnProperty(w)) { + if (!bigOne[w]) { + console.warn('Take from actual words.js: ' + w); + bigOne[w] = aWords[w] + } + dirs.forEach(function (lang) { + if (temporaryIgnore.indexOf(lang) !== -1) return; + if (!bigOne[w][lang]) { + console.warn('Missing "' + lang + '": ' + w); + } + }); + } + } + + } + + writeWordJs(bigOne, src); +} +function languages2words(src) { + var dirs = fs.readdirSync(src + 'i18n/'); + var langs = {}; + var bigOne = {}; + var order = Object.keys(languages); + dirs.sort(function (a, b) { + var posA = order.indexOf(a); + var posB = order.indexOf(b); + if (posA === -1 && posB === -1) { + if (a > b) return 1; + if (a < b) return -1; + return 0; + } else if (posA === -1) { + return -1; + } else if (posB === -1) { + return 1; + } else { + if (posA > posB) return 1; + if (posA < posB) return -1; + return 0; + } + }); + for (var l = 0; l < dirs.length; l++) { + if (dirs[l] === 'flat.txt') continue; + var lang = dirs[l]; + langs[lang] = fs.readFileSync(src + 'i18n/' + lang + '/translations.json').toString(); + langs[lang] = JSON.parse(langs[lang]); + var words = langs[lang]; + for (var word in words) { + if (words.hasOwnProperty(word)) { + bigOne[word] = bigOne[word] || {}; + if (words[word] !== EMPTY) { + bigOne[word][lang] = words[word]; + } + } + } + } + // read actual words.js + var aWords = readWordJs(); + + var temporaryIgnore = ['pt', 'fr', 'nl', 'it']; + if (aWords) { + // Merge words together + for (var w in aWords) { + if (aWords.hasOwnProperty(w)) { + if (!bigOne[w]) { + console.warn('Take from actual words.js: ' + w); + bigOne[w] = aWords[w] + } + dirs.forEach(function (lang) { + if (temporaryIgnore.indexOf(lang) !== -1) return; + if (!bigOne[w][lang]) { + console.warn('Missing "' + lang + '": ' + w); + } + }); + } + } + + } + + writeWordJs(bigOne, src); +} + +gulp.task('adminWords2languages', function (done) { + words2languages('./admin/'); + done(); +}); + +gulp.task('adminWords2languagesFlat', function (done) { + words2languagesFlat('./admin/'); + done(); +}); + +gulp.task('adminLanguagesFlat2words', function (done) { + languagesFlat2words('./admin/'); + done(); +}); + +gulp.task('adminLanguages2words', function (done) { + languages2words('./admin/'); + done(); +}); + + +gulp.task('updatePackages', function (done) { + iopackage.common.version = pkg.version; + iopackage.common.news = iopackage.common.news || {}; + if (!iopackage.common.news[pkg.version]) { + var news = iopackage.common.news; + var newNews = {}; + + newNews[pkg.version] = { + en: 'news', + de: 'neues', + ru: 'новое' + }; + iopackage.common.news = Object.assign(newNews, news); + } + fs.writeFileSync('io-package.json', JSON.stringify(iopackage, null, 4)); + done(); +}); + +gulp.task('updateReadme', function (done) { + var readme = fs.readFileSync('README.md').toString(); + var pos = readme.indexOf('## Changelog\n'); + if (pos !== -1) { + var readmeStart = readme.substring(0, pos + '## Changelog\n'.length); + var readmeEnd = readme.substring(pos + '## Changelog\n'.length); + + if (readme.indexOf(version) === -1) { + var timestamp = new Date(); + var date = timestamp.getFullYear() + '-' + + ('0' + (timestamp.getMonth() + 1).toString(10)).slice(-2) + '-' + + ('0' + (timestamp.getDate()).toString(10)).slice(-2); + + var news = ''; + if (iopackage.common.news && iopackage.common.news[pkg.version]) { + news += '* ' + iopackage.common.news[pkg.version].en; + } + + fs.writeFileSync('README.md', readmeStart + '### ' + version + ' (' + date + ')\n' + (news ? news + '\n\n' : '\n') + readmeEnd); + } + } + done(); +}); + +gulp.task('default', ['updatePackages', 'updateReadme']); \ No newline at end of file diff --git a/img/mihome-settings.png b/img/mihome-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..75d426b491be69538633f0877cbabc9a4ccdbd91 GIT binary patch literal 33748 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⪚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ÍZ4=A*NsBb(9;F#GxXk9;#$)ol9}rP1$pYO1w+^R-aPt zn_r$4S8SB|M0zCiaYMe7srTr?20OR{qXy4TZ&B5}GGKQT+GsuZQxh}IPcSr$fB$3U z`g^~%q93S1>*x9LUaVfR+=i`7goilKbpM8q4jAXMPKR?&OLD(Lcn)awH9wk@tugKL zas_UjWofia&>HW5SU!)l{%7HY|8Jqixb!I9K3i&p)JWS(vS#`tASFH4(Gr@^6Bh#7 zu9$RdIBQySU*=;JlAZO1X$ieTxoobuh$qhgOaOV&eEoB%wF<5S!#X~$#%Y$pkv~Rd zn3{mUzy2|CEvf**biQ2h^hz3NvKy7n#g1_L$lOCkyAb_Uj(C{hOk0ke=|u^sh+K^k z&)(6TWo--_zvm#PoG({r#9MQ;ds(~QJ)!F*CU>3IrwChlDg2_!d&)%H<`itEY%M06bzCY5v3PAp;86#HN3ZA_kpI!&MC< zyj2dKD1laqIzm6L-yeO(_*Q(?YCY={ZWYG^G6{|*~Z=g5~j1-0)b9{L;96(s!e2Ah-0KfirsuXqHSB8gk)0!cukF>E`jl5BP1(WUWizJybzd);5E!p+r|&PC6I zDl63x5c)U(vdVavL4&}fZP4R@{06Xx;p*XQqnn^)GVio6ze@SC%m&!0oZ*2;6#fZ> z=18!D;g^e{<6&nfhwEimzRfn}a7RpmJ`j0MMLOJ2GT*#sj>A^JM8?j?}}F+SeUQntE|9ON5)_Ie=_nNiVbEf zguv?L-vW%gTipKe{uzU@>dAYayN66!yoQWz$Gd2G0(AtOF3!g?O z0fP7o>Cv1(*9};IpTt{k3GB*tEm7=4-_K27S>dGG7t2N9z3QIhaHdn_8=cZvwu_}* z9_`B6PV1&tU!q&s0mEDMVUNY0vb%c(4%Kq=MsTi~C)3K~+z{kX!& zNKM>;ILO?ds`YEX9c0bHwA2g53&q=k32p79izcF(EPb6so%>R4gTzqXCm6`Q445pJ_!7cpI4n}(qu>wJ z0}p>igy0j55=TR~fPZ>Q6iY%jfLg5dzn@r-x3~OD7)ZD4HLwMTEwzu_>7tFy=<#iz zu#E6~N*7Qgvvpb)#g~ZQDo1*G(&rIA#{;MfQV#Gz^3&J1UZi~N7{-({fCCQggXLQr z4kdHQmsP2|ACwS`%^m1-@|nQ?BrXSvQ5}DCf)6@A%v!xK%WBWNV|Klay7z9&c(HEW z$0tiK9B!NS;{;!L?n#b0PUg*uAEdg5l01#;qL;6M7XqByf8Toi58fI6-~U8B?E7Ex YPycKvSMMjCk%2!Z2A2A5x}M4Z3ztrY6aWAK literal 0 HcmV?d00001 diff --git a/io-package.json b/io-package.json new file mode 100644 index 0000000..0069884 --- /dev/null +++ b/io-package.json @@ -0,0 +1,61 @@ +{ + "common": { + "name": "mihome", + "title": "Xiaomi MiHome Gateway", + "desc": { + "en": "Xiaomi MiHome gateway support", + "cn": "小米网关" + }, + "version": "1.2.3", + "mode": "daemon", + "platform": "javascript/Node.js", + "loglevel": "info", + "keywords": [ + "mihome", + "xiaomi" + ], + "messagebox": true, + "materialize": true, + "main": "main.js", + "license": "MIT", + "readme": "https://git.spacen.net/yunkong2/yunkong2.mihome/blob/master/README.md", + "icon": "mihome.png", + "extIcon": "https://git.spacen.net/yunkong2/yunkong2.mihome/master/admin/mihome.png", + "type": "iot-systems", + "enabled": true + }, + "native": { + "bind": "0.0.0.0", + "port": 9898, + "keys": [ + {"ip": "", "key": ""} + ], + "interval": 5000, + "heartbeatTimeout": 20000, + "restartInterval": 30000 + }, + "objects": [], + "instanceObjects": [ + { + "_id": "info", + "type": "channel", + "common": { + "name": "Information" + }, + "native": {} + }, + { + "_id": "info.connection", + "type": "state", + "common": { + "role": "indicator.connected", + "name": "If connected to MiHome gateway", + "type": "boolean", + "read": true, + "write": false, + "def": false + }, + "native": {} + } + ] +} \ No newline at end of file diff --git a/lib/Hub.js b/lib/Hub.js new file mode 100644 index 0000000..aa9e1a9 --- /dev/null +++ b/lib/Hub.js @@ -0,0 +1,183 @@ +'use strict'; + +const dgram = require('dgram'); +const util = require('util'); +const EventEmitter = require('events').EventEmitter; +const crypto = require('crypto'); +const Devices = require('./devices'); + +function Hub(options) { + if (!(this instanceof Hub)) return new Hub(options); + + options = options || {}; + options.port = parseInt(options.port, 10) || 9898; + + this.sensors = {}; + + this.key = options.key; + this.keys = {}; + this.token = {}; + this.iv = Buffer.from([0x17, 0x99, 0x6d, 0x09, 0x3d, 0x28, 0xdd, 0xb3, 0xba, 0x69, 0x5a, 0x2e, 0x6f, 0x58, 0x56, 0x2e]); + + if (options.keys) { + for (let i = 0; i < options.keys.length; i++) { + this.keys[options.keys[i].ip] = options.keys[i].key; + } + } + + /* this.clickTypes = { + click: 'click', + double_click: 'double_click', + long_click_press: 'long_click_press', + long_click_release: 'long_click_release' + }; */ + + this.listen = function () { + this.socket = dgram.createSocket('udp4'); + this.socket.on('message', this.onMessage.bind(this)); + this.socket.on('error', this.onError.bind(this)); + this.socket.on('listening', this.onListening.bind(this)); + this.socket.bind(options.port); + }; + + this.stop = function (cb) { + if (this._state === 'CLOSED') return false; + this._state = 'CLOSED'; + + if (this.socket) { + try { + this.socket.removeAllListeners(); + this.socket.close(cb); + this.socket = null; + } catch (e) { + cb && cb(); + } + } else { + cb && cb(); + } + }; + + this.onListening = function () { + this._state = 'CONNECTED'; + this.socket.setBroadcast(true); + this.socket.setMulticastTTL(128); + if (options.bind && options.bind !== '0.0.0.0') { + this.socket.addMembership('224.0.0.50', options.bind); + } else { + this.socket.addMembership('224.0.0.50'); + } + const whoIsCommand = '{"cmd": "whois"}'; + this.socket.send(whoIsCommand, 0, whoIsCommand.length, 4321, '224.0.0.50'); + }; + + this.onError = function (err) { + if (this._state === 'CLOSED') return false; + this.emit('error', err); + }; + + this.onMessage = function (msgBuffer, rinfo) { + if (this._state === 'CLOSED') return false; + let msg; + try { + msg = JSON.parse(msgBuffer.toString()); + } + catch (e) { + return; + } + + let sensor = this.getSensor(msg.sid); + if (!sensor) { + // {"model":"lumi.lock.v1","did":"lumi.1xxxxxxxxxxxxx8","name":"Front door lock"} + if (!msg.model) { + return; + } + try { + if (options.browse) { + if (msg.model === 'gateway') { + this.emit('browse', {ip: rinfo.address}); + } + return; + } else { + sensor = this.sensorFactory(msg.sid, msg.model, rinfo.address, msg.name); + } + } + catch (e) { + this.emit('warning', 'Could not add new sensor: ' + e.message); + return; + } + } + + if (sensor) { + if (msg.data && typeof msg.data === 'string') { + try { + msg.data = JSON.parse(msg.data); + } catch (e) { + this.emit('warning', 'Could not parse: ' + msg.data); + msg.data = null; + } + } + if (msg.token) { + this.token[rinfo.address] = msg.token; + } + + if (msg.cmd === 'heartbeat') { + sensor.heartBeat(msg.token, msg.data); + } else { + sensor.heartBeat(); + } + + if (msg.data && (msg.cmd === 'report' || msg.cmd.indexOf('_ack') !== -1)) { + sensor.onMessage(msg); + } + } + + this.emit('message', msg); + }; + + this.getKey = function (ip) { + if (!this.token[ip]) return null; + const key = this.keys[ip] || this.key; + const cipher = crypto.createCipheriv('aes-128-cbc', key, this.iv); + const crypted = cipher.update(this.token[ip], 'ascii', 'hex'); + cipher.final('hex'); // Useless data, don't know why yet. + return crypted; + }; + + this.sendMessage = function (message, ip) { + if (this._state === 'CLOSED') return false; + const json = JSON.stringify(message); + this.socket.send(json, 0, json.length, options.port, ip || '224.0.0.50'); + }; + + this.sensorFactory = function (sid, model, ip, name) { + if (this._state === 'CLOSED') return false; + let sensor = null; + const dev = Object.keys(Devices).find(id => Devices[id].type === model); + + if (Devices[dev] && Devices[dev].ClassName) { + sensor = new Devices[dev].ClassName(sid, ip, this, model, options); + } else { + throw new Error('Type "' + model + '" is not valid, use one of Hub::sensorTypes'); + } + this.registerSensor(sensor, name); + return sensor; + }; + this.getSensor = function (sid) { + return this.sensors[sid] || null; + }; + this.registerSensor = function (sensor, name) { + if (this._state === 'CLOSED') return false; + this.emit('device', sensor, name); + this.sensors[sensor.sid] = sensor; + }; + + return this; +} + +// extend the EventEmitter class using our Radio class +util.inherits(Hub, EventEmitter); + +module.exports = { + Hub, + Devices +}; \ No newline at end of file diff --git a/lib/Sensors/Alarm.js b/lib/Sensors/Alarm.js new file mode 100644 index 0000000..ca9ec72 --- /dev/null +++ b/lib/Sensors/Alarm.js @@ -0,0 +1,81 @@ +'use strict'; + +const texts = { + 0: 'Release alarm', + 1: 'Gas alarm', + 2: 'Analog alarm', + 64: 'Sensitivity fault alarm', + 32768: 'I2C communication failure' +}; + +function Alarm(sid, ip, hub, model) { + this.type = model; + this.sid = sid; + this.hub = hub; + this.ip = ip; + + this.state = null; + this.description = null; + this.voltage = null; + this.percent = null; +} + +Alarm.prototype.getData = function (data, isHeartbeat) { + let newData = false; + let obj = {}; + + if (data.voltage !== undefined) { + data.voltage = parseInt(data.voltage, 10); + this.voltage = data.voltage / 1000; + this.percent = ((data.voltage - 2200) / 10); + if (this.percent > 100) { + this.percent = 100; + } + if (this.percent < 0) { + this.percent = 0; + } + obj.voltage = this.voltage; + obj.percent = this.percent; + newData = true; + } + if (data.alarm !== undefined && !isHeartbeat) { + if (data.alarm !== true && data.alarm !== false) { + data.alarm = parseInt(data.alarm, 10) || 0; + if (data.alarm === 1) { + if (this.type === 'smoke') { + data.description = 'Smoke alarm'; + } else { + data.description = 'Gas alarm'; + } + } else { + data.description = texts[data.alarm] || ''; + } + data.alarm = (data.alarm === 1 || data.alarm === 2); + } + + this.state = data.alarm; + obj.state = data.alarm; + obj.description = data.description; + newData = true; + } + + return newData ? obj : null; +}; + +Alarm.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data, true); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +Alarm.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +module.exports = Alarm; diff --git a/lib/Sensors/Button.js b/lib/Sensors/Button.js new file mode 100644 index 0000000..a61f94d --- /dev/null +++ b/lib/Sensors/Button.js @@ -0,0 +1,71 @@ +'use strict'; + +function Button(sid, ip, hub) { + this.type = 'switch'; + this.sid = sid; + this.hub = hub; + this.voltage = null; + this.percent = null; + this.ip = ip; + + return this; +} + +Button.prototype.getData = function (data) { + let newData = false; + let obj = {}; + if (data.voltage) { + data.voltage = parseInt(data.voltage, 10); + this.voltage = data.voltage / 1000; + this.percent = ((data.voltage - 2200) / 10); + if (this.percent > 100) { + this.percent = 100; + } + if (this.percent < 0) { + this.percent = 0; + } + obj.voltage = this.voltage; + obj.percent = this.percent; + newData = true; + } + if (data.status) { + if (data.status === 'click') { + obj.click = true; + + setTimeout(() => this.hub.emit('data', this.sid, this.type, {click: false}), 300); + } + if (data.status === 'double_click') { + obj.double = true; + + setTimeout(() => this.hub.emit('data', this.sid, this.type, {double: false}), 300); + } + if (data.status === 'long_click_press') { + obj.long = true; + } + if (data.status === 'long_click_release') { + obj.long = false; + } + newData = true; + } + + return newData ? obj : null; +}; + +Button.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +Button.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +module.exports = Button; diff --git a/lib/Sensors/Cube.js b/lib/Sensors/Cube.js new file mode 100644 index 0000000..ffc1889 --- /dev/null +++ b/lib/Sensors/Cube.js @@ -0,0 +1,97 @@ +'use strict'; + +function Cube(sid, ip, hub, rotatePosition) { + this.type = 'cube'; + this.sid = sid; + this.ip = ip; + this.hub = hub; + this.voltage = null; + this.percent = null; + this.rotate_position = parseFloat(rotatePosition || 0) || 0; + + return this; +} + +Cube.prototype.trigger = function (obj, name) { + obj[name] = true; + + setTimeout(() => { + const _obj = {}; + _obj[name] = false; + this.hub.emit('data', this.sid, this.type, _obj); + }, 300); +}; + +Cube.prototype.getData = function (data) { + let newData = false; + let obj = {}; + if (data.voltage) { + data.voltage = parseInt(data.voltage, 10); + this.voltage = data.voltage / 1000; + this.percent = ((data.voltage - 2200) / 10); + if (this.percent > 100) { + this.percent = 100; + } + if (this.percent < 0) { + this.percent = 0; + } + obj.voltage = this.voltage; + obj.percent = this.percent; + newData = true; + } + + if (data.status) { + // flip90, flip180, move, tap_twice, shake_air, swing, alert, free_fall, rotate_left, rotate_right + this.trigger(obj, data.status); + newData = true; + } + if (data.rotate) { + // rotate + obj.rotate = parseFloat(data.rotate.replace(',', '.')) || 0; + if (obj.rotate >= 0) { + this.trigger(obj, 'rotate_right'); + } else if (obj.rotate < 0) { + this.trigger(obj, 'rotate_left'); + } + this.rotate_position += obj.rotate; + if (this.rotate_position < 0) this.rotate_position = 0; + if (this.rotate_position > 100) this.rotate_position = 100; + obj.rotate_position = this.rotate_position; + + newData = true; + } + + return newData ? obj : null; +}; + +Cube.prototype.Control = function (attr, val) { + if (attr === 'rotate_position') { + val = parseFloat(val); + if (val < 0) val = 0; + if (val > 100) val = 100; + + if (this.rotate_position !== val) { + this.hub.emit('data', this.sid, this.type, {rotate_position: this.rotate_position}); + } + } +}; + +Cube.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +Cube.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +module.exports = Cube; diff --git a/lib/Sensors/Curtain.js b/lib/Sensors/Curtain.js new file mode 100644 index 0000000..1e70dad --- /dev/null +++ b/lib/Sensors/Curtain.js @@ -0,0 +1,90 @@ +'use strict'; + +function Curtain(sid, ip, hub) { + this.type = 'curtain'; + this.sid = sid; + this.hub = hub; + this.ip = ip; + this.curtain_level = null; +} + +Curtain.prototype.getData = function (data) { + let newData = false; + let obj = {}; + if (data.curtain_level) { + this.curtain_level = parseFloat(data.curtain_level); + obj.curtain_level = this.curtain_level; + newData = true; + } + if (data.status) { + if (this.status === 'open') { + obj.open = true; + newData = true; + } else + if (this.status === 'close') { + obj.close = true; + newData = true; + } else + if (this.status === 'stop') { + obj.stop = true; + newData = true; + } else { + this.hub.emit('warning', 'Unknown status "' + this.status + '"'); + } + } + + return newData ? obj : null; +}; + +Curtain.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +Curtain.prototype.Control = function (attr, value) { + let message; + if (attr === 'stop' || attr === 'open' || attr === 'close') { + message = { + cmd: 'write', + model: this.type, + sid: this.sid, + short_id: 0, + data: { + status: attr, + key: this.hub.getKey(this.ip) + } + }; + } else if (attr === 'curtain_level') { + message = { + cmd: 'write', + model: this.type, + sid: this.sid, + short_id: 0, + data: { + curtain_level: value.toString(), //Strange thing, working only if string. + key: this.hub.getKey(this.ip) + } + }; + } else { + this.hub.emit('warning', 'Unknown control attribute "' + attr + '"'); + return; + } + + this.hub.sendMessage(message, this.ip); +}; + +Curtain.prototype.onMessage = function (message) { + if (message.data) { + if (message.data.status) { + this.on = message.data.status === 'on'; + this.hub.emit('data', this.sid, this.type, { + state: this.on + }); + } + } +}; +module.exports = Curtain; diff --git a/lib/Sensors/DoorSensor.js b/lib/Sensors/DoorSensor.js new file mode 100644 index 0000000..23904da --- /dev/null +++ b/lib/Sensors/DoorSensor.js @@ -0,0 +1,54 @@ +'use strict'; +function DoorSensor(sid, ip, hub) { + this.type = 'magnet'; + this.sid = sid; + this.hub = hub; + this.ip = ip; + this.opened = null; + this.voltage = null; + this.percent = null; +} + +DoorSensor.prototype.getData = function (data, isHeartbeat) { + let newData = false; + let obj = {}; + if (data.voltage !== undefined) { + data.voltage = parseInt(data.voltage, 10); + this.voltage = data.voltage / 1000; + this.percent = ((data.voltage - 2200) / 10); + if (this.percent > 100) { + this.percent = 100; + } + if (this.percent < 0) { + this.percent = 0; + } + obj.voltage = this.voltage; + obj.percent = this.percent; + newData = true; + } + if (data.status && data.status !== 'unknown' && !isHeartbeat) { + this.opened = data.status !== 'close'; + obj.state = this.opened; + newData = true; + } + + return newData ? obj : null; +}; + +DoorSensor.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data, true); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +DoorSensor.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +module.exports = DoorSensor; diff --git a/lib/Sensors/Gateway.js b/lib/Sensors/Gateway.js new file mode 100644 index 0000000..ed28c2e --- /dev/null +++ b/lib/Sensors/Gateway.js @@ -0,0 +1,242 @@ +'use strict'; + +function Gateway(sid, ip, hub) { + this.type = 'gateway'; + this.sid = sid; + this.ip = ip; + this.hub = hub; + this.token = null; + this.illumination = null; + this.connected = false; + + this.lastValues = { + rgb: '#FFFFFF', + dimmer: 100 + }; + this.rgb = null; + this.dimmer = null; + this.on = null; + + this.hub.sendMessage({cmd: 'get_id_list', sid: sid}, this.ip); + this.timeout = null; + + return this; +} + +Gateway.prototype.getData = function (data) { + let newData = false; + let obj = {}; + + if (data.illumination !== undefined) { + this.illumination = parseFloat(data.illumination); + obj.illumination = this.illumination; + newData = true; + } + + if (!this.connected) { + this.connected = true; + obj.connected = this.connected; + newData = true; + } + + // Start timeout to detect dicsonnect + this.timeout && clearTimeout(this.timeout); + this.timeout = setTimeout(() => { + this.timeout = null; + this.hub.emit('data', this.sid, this.type, {connected: false}); + }, 20000); + + if (data.rgb !== undefined) { + let rgb = parseInt(data.rgb, 10); + if (!rgb) { + this.rgb = '#000000'; + this.dimmer = 0; + this.on = false; + } else { + rgb = rgb.toString(16); + if (rgb.length === 7) { + rgb = '0' + rgb; + } else if (rgb.length === 6) { + rgb = '00' + rgb; + } else if (rgb.length === 5) { + rgb = '000' + rgb; + } else if (rgb.length === 4) { + rgb = '0000' + rgb; + } else if (rgb.length === 3) { + rgb = '00000' + rgb; + } else if (rgb.length === 2) { + rgb = '000000' + rgb; + } else if (rgb.length === 1) { + rgb = '0000000' + rgb; + } + this.dimmer = parseInt(rgb.substring(0, 2), 16); + this.rgb = '#' + rgb.substring(2).toUpperCase(); + this.on = true; + } + obj.on = this.on; + obj.dimmer = this.dimmer; + obj.rgb = this.rgb; + + // remember last non null values + if (obj.dimmer) { + this.lastValues.dimmer = obj.dimmer; + } + if (parseInt(obj.rgb.replace('#', ''), 16)) { + this.lastValues.rgb = obj.rgb; + } + + newData = true; + } + + return newData ? obj : null; +}; + +Gateway.prototype.heartBeat = function (token, data) { + if (token) { + this.token = token; + const obj = this.getData(data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +Gateway.prototype.onMessage = function (message) { + if (message.cmd === 'get_id_list_ack') { + this.initSensors(message.data); + } else if (message.cmd === 'write_ack') { + if (message.data.error) { + this.hub.emit('error', message.data.error); + } + const obj_ = this.getData(message.data); + if (obj_) { + this.hub.emit('data', this.sid, this.type, obj_); + } + } else if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +Gateway.prototype.Control = function (attr, value) { + if (attr === 'on' || attr === 'dimmer' || attr === 'rgb') { + if (this.dimmer === null) { + this.dimmer = this.lastValues.dimmer; + } + if (this.rgb === null) { + this.rgb = this.lastValues.rgb; + } + if (this.on === null) { + this.on = true; + } + + if (attr === 'on') { + this.on = !!value; + + if (this.on) { + if (!parseInt(this.rgb.replace('#', ''), 16)) { + this.rgb = this.lastValues.rgb; + } + if (!this.dimmer) { + this.dimmer = this.lastValues.dimmer; + } + } + } + if (attr === 'dimmer') { + this.dimmer = value; + if (this.dimmer < 0) this.dimmer = 0; + if (this.dimmer > 100) this.dimmer = 100; + + if (this.dimmer) { + this.on = true; + + if (!parseInt(this.rgb.replace('#', ''), 16)) { + this.rgb = this.lastValues.rgb; + } + } + + } + + if (attr === 'rgb') { + this.rgb = value; + + if (parseInt(this.rgb.replace('#', ''), 16)) { + this.on = true; + + if (!this.dimmer) { + this.dimmer = this.lastValues.dimmer; + } + } + } + + if (this.timer) clearTimeout(this.timer); + + // collect data before send + this.timer = setTimeout(() => { + this.timer = null; + let value; + if (!this.on || !this.dimmer || this.rgb === '000000' || this.rgb === '#000000') { + value = 0; + } else { + value = (this.dimmer << 24) | parseInt(this.rgb.replace('#', ''), 16); + } + + const message = { + cmd: 'write', + model: this.type, + sid: this.sid, + short_id: 0, + data: { + rgb: value, + key: this.hub.getKey(this.ip) + } + }; + + this.hub.sendMessage(message, this.ip); + }, 200); + } else if (attr === 'volume') { + if (value < 0) value = 0; + if (value > 100) value = 100; + + const message = { + cmd: 'write', + model: this.type, + sid: this.sid, + short_id: 0, + data: { + mid: this.mid || 999, + vol: value, + key: this.hub.getKey(this.ip) + } + }; + + this.hub.sendMessage(message, this.ip); + } else if (attr === 'mid') { + this.mid = value; + const message = { + cmd: 'write', + model: this.type, + sid: this.sid, + short_id: 0, + data: { + mid: value, + key: this.hub.getKey(this.ip) + } + }; + + this.hub.sendMessage(message, this.ip); + } else { + this.hub.emit('warning', 'Unknown attribute ' + attr); + } +}; + +Gateway.prototype.initSensors = function (sids) { + this.hub.sendMessage({cmd: 'read', sid: this.sid}, this.ip); + for (let i = 0; i < sids.length; i++) { + this.hub.sendMessage({cmd: 'read', sid: sids[i]}, this.ip); + } +}; + +module.exports = Gateway; \ No newline at end of file diff --git a/lib/Sensors/Lock.js b/lib/Sensors/Lock.js new file mode 100644 index 0000000..e04d1e3 --- /dev/null +++ b/lib/Sensors/Lock.js @@ -0,0 +1,78 @@ +'use strict'; + +function Lock(sid, ip, hub) { + this.type = 'lock_aq1'; + this.sid = sid; + this.ip = ip; + this.hub = hub; + this.fing_verified = null; + this.psw_verified = null; + this.card_verified = null; + this.verified_wrong = null; +} +// {'cmd': 'read_ack', 'model': 'lock.aq1', 'sid': '158d000222****', 'short_id': 55***, 'data': '{"voltage":3387}'} +// {'cmd': 'read_ack', 'model': 'lock.aq1', 'sid': '158d000222****', 'short_id': 55***, 'data': '{"fing_verified": 65536}'} +// {'cmd': 'read_ack', 'model': 'lock.aq1', 'sid': '158d000222****', 'short_id': 55***, 'data': '{"fing_verified": 65537}'} +// {'cmd': 'read_ack', 'model': 'lock.aq1', 'sid': '158d000222****', 'short_id': 55***, 'data': '{"psw_verified": 131074}'} +// {'cmd': 'read_ack', 'model': 'lock.aq1', 'sid': '158d000222****', 'short_id': 55***, 'data': '{"card_verified": 196608}'} +// {'cmd': 'report', 'model': 'lock.aq1', 'sid': '158d000222****', 'short_id': 55***, 'data': '{"verified_wrong":"3"}'} + +Lock.prototype.getData = function (data) { + let newData = false; + let obj = {}; + if (data.voltage !== undefined) { + data.voltage = parseInt(data.voltage, 10); + this.voltage = data.voltage / 1000; + this.percent = ((data.voltage - 2200) / 10); + if (this.percent > 100) { + this.percent = 100; + } + if (this.percent < 0) { + this.percent = 0; + } + obj.voltage = this.voltage; + obj.percent = this.percent; + newData = true; + } + if (data.fing_verified) { + this.fing_verified = parseInt(data.fing_verified); + obj.fing_verified = this.fing_verified; + newData = true; + } + if (data.psw_verified) { + this.psw_verified = parseInt(data.psw_verified); + obj.psw_verified = this.psw_verified; + newData = true; + } + if (data.card_verified) { + this.card_verified = parseInt(data.card_verified); + obj.card_verified = this.card_verified; + newData = true; + } + if (data.verified_wrong) { + this.verified_wrong = parseInt(data.verified_wrong); + obj.verified_wrong = this.verified_wrong; + newData = true; + } + + return newData ? obj : null; +}; + +Lock.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +Lock.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +module.exports = Lock; diff --git a/lib/Sensors/MotionSensor.js b/lib/Sensors/MotionSensor.js new file mode 100644 index 0000000..bc508bf --- /dev/null +++ b/lib/Sensors/MotionSensor.js @@ -0,0 +1,70 @@ +'use strict'; + +function MotionSensor(sid, ip, hub, model) { + this.type = model; + this.sid = sid; + this.ip = ip; + this.hub = hub; + this.motion = null; + this.voltage = null; + this.percent = null; +} + +MotionSensor.prototype.getData = function (data, isHeartbeat) { + let newData = false; + let obj = {}; + if (data.voltage !== undefined) { + data.voltage = parseInt(data.voltage, 10); + this.voltage = data.voltage / 1000; + this.percent = ((data.voltage - 2200) / 10); + if (this.percent > 100) { + this.percent = 100; + } + if (this.percent < 0) { + this.percent = 0; + } + obj.voltage = this.voltage; + obj.percent = this.percent; + newData = true; + } + if (data.status && !isHeartbeat) { + this.motion = data.status === 'motion'; + obj.state = this.motion; + if (this.motion) { + this.no_motion = 0; + obj.no_motion = 0; + } + newData = true; + } + if (data.no_motion !== undefined && !isHeartbeat) { + this.no_motion = parseInt(data.no_motion, 10); + obj.no_motion = this.no_motion; + obj.state = !this.no_motion; + newData = true; + } + if (data.lux !== undefined) { + this.lux = parseInt(data.lux, 10); + obj.lux = this.lux; + newData = true; + } + return newData ? obj : null; +}; + +MotionSensor.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data, true); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +MotionSensor.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +module.exports = MotionSensor; diff --git a/lib/Sensors/Plug.js b/lib/Sensors/Plug.js new file mode 100644 index 0000000..3ce5df8 --- /dev/null +++ b/lib/Sensors/Plug.js @@ -0,0 +1,83 @@ +'use strict'; + +function Plug (sid, ip, hub) { + this.type = 'plug'; + this.sid = sid; + this.ip = ip; + this.hub = hub; + this.on = null; + this.load_power = null; + this.power_consumed = null; + this.state = null; + this.inuse = null; +} +// {"cmd":"report","model":"plug","sid":"dfdfd","short_id":52239,"data":{"status":"on"}} +// {"cmd":"report","model":"plug","sid":"dfdfdf","short_id":52239,"data":{"status":"off"}} +// {"cmd":"heartbeat","model":"plug","sid":"fdfdfd","short_id":52239,"data":{"voltage":3600,"status":"on","inuse":"0","power_consumed":"26326","load_power":"0.00"}} +Plug.prototype.getData = function (data) { + let newData = false; + let obj = {}; + if (data.load_power) { + this.load_power = parseFloat(data.load_power); + obj.load_power = this.load_power; + newData = true; + } + if (data.power_consumed) { + this.power_consumed = parseFloat(data.power_consumed); + obj.power_consumed = this.power_consumed; + newData = true; + } + if (data.inuse) { + this.inuse = !!parseInt(data.inuse, 10); + obj.inuse = this.inuse; + newData = true; + } + if (data.status) { + this.state = data.status === 'on'; + obj.state = this.state; + newData = true; + } + + return newData ? obj : null; +}; + +Plug.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +Plug.prototype.Control = function (attr, value) { + if (attr !== 'channel_0' && attr !== 'state') { + this.hub.emit('warning', 'Unknown attribute ' + attr); + return; + } + + const message = { + cmd: 'write', + model: this.type, + sid: this.sid, + short_id: 0, + data: { + channel_0: value ? 'on' : 'off', + key: this.hub.getKey(this.ip) + } + }; + + this.hub.sendMessage(message, this.ip); +}; + +Plug.prototype.onMessage = function (message) { + if (message.data) { + if (message.data.status) { + this.on = message.data.status === 'on'; + this.hub.emit('data', this.sid, this.type, { + state: this.on + }); + } + } +}; +module.exports = Plug; diff --git a/lib/Sensors/THSensor.js b/lib/Sensors/THSensor.js new file mode 100644 index 0000000..fbc57ed --- /dev/null +++ b/lib/Sensors/THSensor.js @@ -0,0 +1,89 @@ +'use strict'; + +function THSensor(sid, ip, hub, model, options) { + this.type = model; + this.sid = sid; + this.hub = hub; + this.ip = ip; + + this.interval = parseInt((options && options.interval) || 5000, 10) || 0; + this.temperature = null; + this.humidity = null; + this.voltage = null; + this.percent = null; + this.lastData = null; +} + +THSensor.prototype.getData = function (data) { + let newData = false; + let obj = {}; + const ts = Date.now(); + if (this.interval && this.lastData) { + const diff = ts - this.lastData; + if (diff > 200 && diff < this.interval) { + obj.doublePress = true; + // deactivate after 300 ms + setTimeout(() => this.hub.emit('data', this.sid, this.type, {doublePress: false}), 300); + this.lastData = null; + } else { + this.lastData = ts; + } + } else { + this.lastData = ts; + } + + if (data.voltage !== undefined) { + data.voltage = parseInt(data.voltage, 10); + this.voltage = data.voltage / 1000; + this.percent = ((data.voltage - 2200) / 10); + if (this.percent > 100) { + this.percent = 100; + } + if (this.percent < 0) { + this.percent = 0; + } + obj.voltage = this.voltage; + obj.percent = this.percent; + newData = true; + } + if (data.temperature === '10000' || data.temperature === 10000) { + // ignore all values if 10000 as temperature. + return null; + } + if (data.temperature !== undefined) { + this.temperature = parseInt(data.temperature) / 100; + obj.temperature = this.temperature; + newData = true; + } + + if (data.humidity !== undefined) { + this.humidity = parseInt(data.humidity) / 100; + obj.humidity = this.humidity; + newData = true; + } + + if (data.pressure !== undefined) { + this.pressure = parseInt(data.pressure) / 100; + obj.pressure = this.pressure; + newData = true; + } + return newData ? obj : null; +}; + +THSensor.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +THSensor.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +module.exports = THSensor; \ No newline at end of file diff --git a/lib/Sensors/VibrationSensor.js b/lib/Sensors/VibrationSensor.js new file mode 100644 index 0000000..a5c722c --- /dev/null +++ b/lib/Sensors/VibrationSensor.js @@ -0,0 +1,84 @@ +'use strict'; + +function VibrationSensor(sid, ip, hub, model) { + this.type = model; + this.sid = sid; + this.ip = ip; + this.hub = hub; + this.vibration = null; + this.orientationX = null; + this.orientationY = null; + this.orientationZ = null; + this.bed_activity = null; + this.tilt_angle = null; + this.voltage = null; + this.percent = null; +} + +VibrationSensor.prototype.getData = function (data, isHeartbeat) { + let newData = false; + let obj = {}; + if (data.voltage !== undefined) { + data.voltage = parseInt(data.voltage, 10); + this.voltage = data.voltage / 1000; + this.percent = ((data.voltage - 2200) / 10); + if (this.percent > 100) { + this.percent = 100; + } + if (this.percent < 0) { + this.percent = 0; + } + obj.voltage = this.voltage; + obj.percent = this.percent; + newData = true; + } + if (data.status && !isHeartbeat) { + this.vibration = data.status === 'vibration' || data.status === 'vibrate'; + if (this.vibration) { + setTimeout(() => this.hub.emit('data', this.sid, this.type, {state: false}), 300); + } + + obj.state = this.vibration; + newData = true; + } + if (data.final_tilt_angle !== undefined) { + this.tilt_angle = parseInt(data.final_tilt_angle, 10); + obj.tilt_angle = this.tilt_angle; + newData = true; + } + if (data.coordination !== undefined) { + const parts = data.coordination.split(',').map(num => parseInt(num.trim())); + this.orientationX = parts[0]; + this.orientationY = parts[1]; + this.orientationZ = parts[2]; + obj.orientationX = this.orientationX; + obj.orientationY = this.orientationY; + obj.orientationZ = this.orientationZ; + newData = true; + } + if (data.bed_activity !== undefined) { + this.bed_activity = parseInt(data.bed_activity, 10); + obj.bed_activity = this.bed_activity; + newData = true; + } + return newData ? obj : null; +}; + +VibrationSensor.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data, true); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +VibrationSensor.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +module.exports = VibrationSensor; diff --git a/lib/Sensors/WallButtons.js b/lib/Sensors/WallButtons.js new file mode 100644 index 0000000..c01afd3 --- /dev/null +++ b/lib/Sensors/WallButtons.js @@ -0,0 +1,89 @@ +'use strict'; + +function WallButtons(sid, ip, hub, model) { + this.type = model; + this.sid = sid; + this.hub = hub; + this.ip = ip; + this.channel_0 = null; + this.channel_1 = null; + this.dual_channel = null; + this.voltage = null; + this.percent = null; + return this; +} + +WallButtons.prototype.getData = function (data) { + let newData = false; + let obj = {}; + + if (data.voltage !== undefined) { + data.voltage = parseInt(data.voltage, 10); + this.voltage = data.voltage / 1000; + this.percent = ((data.voltage - 2200) / 10); + if (this.percent > 100) { + this.percent = 100; + } + if (this.percent < 0) { + this.percent = 0; + } + obj.voltage = this.voltage; + obj.percent = this.percent; + newData = true; + } + + if (data.channel_0) { + obj.channel_0_double = data.channel_0 === 'double_click'; + this.channel_0 = data.channel_0 === 'click'; + obj.channel_0 = this.channel_0; + newData = true; + if (obj.channel_0) { + setTimeout(() => this.hub.emit('data', this.sid, this.type, {channel_0: false}), 300); + } + if (obj.channel_0_double) { + setTimeout(() => this.hub.emit('data', this.sid, this.type, {channel_0_double: false}), 300); + } + } + + if (data.channel_1) { + obj.channel_1_double = data.channel_1 === 'double_click'; + this.channel_1 = data.channel_1 === 'click'; + obj.channel_1 = this.channel_1; + newData = true; + if (obj.channel_1) { + setTimeout(() => this.hub.emit('data', this.sid, this.type, {channel_1: false}), 300); + } + if (obj.channel_1_double) { + setTimeout(() => this.hub.emit('data', this.sid, this.type, {channel_1_double: false}), 300); + } + } + if (data.dual_channel) { + this.dual_channel = data.dual_channel === 'both_click'; + obj.dual_channel = this.dual_channel; + newData = true; + if (obj.dual_channel) { + setTimeout(() => this.hub.emit('data', this.sid, this.type, {dual_channel: false}), 300); + } + } + return newData ? obj : null; +}; + +WallButtons.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +WallButtons.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +module.exports = WallButtons; diff --git a/lib/Sensors/WallWiredSwitch.js b/lib/Sensors/WallWiredSwitch.js new file mode 100644 index 0000000..1a7d049 --- /dev/null +++ b/lib/Sensors/WallWiredSwitch.js @@ -0,0 +1,70 @@ +'use strict'; + +function WallWiredSwitch(sid, ip, hub, model) { + this.type = model; + this.sid = sid; + this.hub = hub; + this.ip = ip; + this.channel_0 = null; + this.channel_1 = null; + + return this; +} + +WallWiredSwitch.prototype.getData = function (data) { + let newData = false; + let obj = {}; + + if (data.channel_0) { + this.channel_0 = data.channel_0 === 'on'; + obj.channel_0 = this.channel_0; + newData = true; + } + if (data.channel_1) { + this.channel_1 = data.channel_1 === 'on'; + obj.channel_1 = this.channel_1; + newData = true; + } + + return newData ? obj : null; +}; + +WallWiredSwitch.prototype.Control = function (attr, value) { + if (attr !== 'channel_0' && attr !== 'channel_1') { + this.hub.emit('warning', 'Unknown attribute ' + attr); + return; + } + + const message = { + cmd: 'write', + model: this.type, + sid: this.sid, + short_id: 0, + data: { + key: this.hub.getKey(this.ip) + } + }; + message.data[attr] = value ? 'on' : 'off'; + + this.hub.sendMessage(message, this.ip); +}; + +WallWiredSwitch.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +WallWiredSwitch.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +module.exports = WallWiredSwitch; diff --git a/lib/Sensors/WaterSensor.js b/lib/Sensors/WaterSensor.js new file mode 100644 index 0000000..cd77397 --- /dev/null +++ b/lib/Sensors/WaterSensor.js @@ -0,0 +1,57 @@ +'use strict'; + +function WaterSensor(sid, ip, hub) { + this.type = 'sensor_wleak.aq1'; + this.sid = sid; + this.hub = hub; + this.ip = ip; + this.motion = null; + this.voltage = null; + this.percent = null; +} + +WaterSensor.prototype.getData = function (data, isHeartbeat) { + let newData = false; + let obj = {}; + if (data.voltage !== undefined) { + data.voltage = parseInt(data.voltage, 10); + this.voltage = data.voltage / 1000; + this.percent = ((data.voltage - 2200) / 10); + if (this.percent > 100) { + this.percent = 100; + } + if (this.percent < 0) { + this.percent = 0; + } + obj.voltage = this.voltage; + obj.percent = this.percent; + newData = true; + } + // {“cmd”:“report”,“model”:“sensor_wleak.aq1”,“sid”:“aaa000xxxxxxx”,“short_id”:12345,“data”:"{“status”:“leak”}"} + // {“cmd”:“report”,“model”:“sensor_wleak.aq1”,“sid”:“aaa000xxxxxxx”,“short_id”:12345,“data”:"{“status”:“no_leak”}"} + if (data.status && !isHeartbeat) { + this.leak = data.status === 'leak'; + obj.state = this.leak; + newData = true; + } + return newData ? obj : null; +}; + +WaterSensor.prototype.heartBeat = function (token, data) { + if (data) { + const obj = this.getData(data, true); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; +WaterSensor.prototype.onMessage = function (message) { + if (message.data) { + const obj = this.getData(message.data); + if (obj) { + this.hub.emit('data', this.sid, this.type, obj); + } + } +}; + +module.exports = WaterSensor; diff --git a/lib/devices.js b/lib/devices.js new file mode 100644 index 0000000..ae1e9a3 --- /dev/null +++ b/lib/devices.js @@ -0,0 +1,370 @@ +'use strict'; + +const Gateway = require('./Sensors/Gateway'); +const THSensor = require('./Sensors/THSensor'); +const DoorSensor = require('./Sensors/DoorSensor'); +const MotionSensor = require('./Sensors/MotionSensor'); +const VibrationSensor = require('./Sensors/VibrationSensor'); +const Plug = require('./Sensors/Plug'); +const Button = require('./Sensors/Button'); +const Cube = require('./Sensors/Cube'); +const WallButtons = require('./Sensors/WallButtons'); +const WallWiredSwitch = require('./Sensors/WallWiredSwitch'); +const Alarm = require('./Sensors/Alarm'); +const Curtain = require('./Sensors/Curtain'); +const WaterSensor = require('./Sensors/WaterSensor'); +const Lock = require('./Sensors/Lock'); + +const states = { + voltage: {name: 'Battery voltage', role: 'battery.voltage', write: false, read: true, type: 'number', unit: 'V', icon: '/icons/battery_v.png', desc: 'Battery voltage'}, + percent: {name: 'Battery percent', role: 'battery.percent', write: false, read: true, type: 'number', unit: '%', icon: '/icons/battery_p.png', desc: 'Battery level in percent', min: 0, max: 100}, + + temperature: {name: 'Temperature', role: 'value.temperature', write: false, read: true, type: 'number', unit: '°C'}, + humidity: {name: 'Humidity', role: 'value.humidity', write: false, read: true, type: 'number', unit: '%', min: 0, max: 100}, + + doublePress: {name: 'Double press', role: 'state', write: false, read: true, type: 'boolean', desc: 'You can press connect button twice'}, + + opened: {name: 'Is opened', role: 'state', write: false, read: true, type: 'boolean'}, + description: {name: 'Alarm description', role: 'state', write: false, read: true, type: 'string'}, + + motion: {name: 'Is motion', role: 'indicator.motion', write: false, read: true, type: 'boolean'}, + no_motion: {name: 'Last motion', role: 'state', write: false, read: true, type: 'number', unit: 'seconds', desc: 'Last motion for at least X seconds'}, + fing_verified: {name: 'Finger verified', role: 'value', write: false, read: true, type: 'number'}, + + psw_verified: {name: 'Password verified', role: 'value', write: false, read: true, type: 'number'}, + card_verified: {name: 'Card verified', role: 'value', write: false, read: true, type: 'number'}, + verified_wrong: {name: 'Wrong verification', role: 'value', write: false, read: true, type: 'number'}, + + click: {name: 'Simple click', role: 'button', write: false, read: true, type: 'boolean'}, + double: {name: 'Double click', role: 'button', write: false, read: true, type: 'boolean'}, + long: {name: 'Long click', role: 'button', write: false, read: true, type: 'boolean'}, + + channel_0: {name: 'First button pressed', role: 'button', write: false, read: true, type: 'boolean'}, + channel_0_double: {name: 'First button pressed double', role: 'button', write: false, read: true, type: 'boolean'}, + channel_1: {name: 'Second button pressed', role: 'button', write: false, read: true, type: 'boolean'}, + channel_1_double: {name: 'Second button pressed double', role: 'button', write: false, read: true, type: 'boolean'}, + dual_channel: {name: 'Both buttons pressed', role: 'button', write: false, read: true, type: 'boolean'}, + + power: {name: 'Socket plug', role: 'switch', write: true, read: true, type: 'boolean'}, + load_power: {name: 'Load power', role: 'value.power', write: false, read: true, type: 'number', unit: 'W'}, + power_consumed: {name: 'Power consumed', role: 'value.consumption', write: false, read: true, type: 'number', unit: 'W'}, + inuse: {name: 'Is in use', role: 'state', write: false, read: true, type: 'number'}, + + wall_switch: {name: 'Wall switch', role: 'switch', write: true, read: true, type: 'boolean'}, + wall_switch0: {name: 'Wall switch 0', role: 'switch', write: true, read: true, type: 'boolean'}, + wall_switch1: {name: 'Wall switch 1', role: 'switch', write: true, read: true, type: 'boolean'}, + + rotate: {name: 'Rotation angle', role: 'state', write: false, read: true, type: 'number'}, + rotate_position: {name: 'Rotation angle', role: 'state', write: true, read: true, type: 'number', min: 0, max: 100, unit: '%'}, + flip90: {name: 'Flip on 90°', role: 'button', write: false, read: true, type: 'boolean'}, + flip180: {name: 'Flip on 180°', role: 'button', write: false, read: true, type: 'boolean'}, + move: {name: 'Move action', role: 'button', write: false, read: true, type: 'boolean'}, + tap_twice: {name: 'Tapped twice', role: 'button', write: false, read: true, type: 'boolean'}, + shake_air: {name: 'Shaken in air', role: 'button', write: false, read: true, type: 'boolean'}, + swing: {name: 'Swing action', role: 'button', write: false, read: true, type: 'boolean'}, + alert: {name: 'Alert action', role: 'button', write: false, read: true, type: 'boolean'}, + free_fall: {name: 'Free fall action', role: 'button', write: false, read: true, type: 'boolean'}, + rotate_left: {name: 'Rotate left', role: 'button', write: false, read: true, type: 'boolean'}, + rotate_right: {name: 'Rotate right', role: 'button', write: false, read: true, type: 'boolean'} +}; + +// type - name as delivered by gateway +// fullName - Name of the device +// ClassName - handler class +// states - list of states for this sensor + +const devices = { + gateway: {type: 'gateway', fullName: 'Xiaomi RGB Gateway', ClassName: Gateway, states: { + illumination: {name: 'Illumination', role: 'value.lux', write: false, read: true, type: 'number', unit: 'lux'}, + rgb: {name: 'RGB', role: 'level.rgb', write: true, read: true, type: 'string'}, + on: {name: 'Light', role: 'switch', write: true, read: true, type: 'boolean'}, + dimmer: {name: 'Light', role: 'level.dimmer', write: true, read: true, type: 'number', unit: '%', min: 0, max: 100}, + volume: {name: 'Volume', role: 'level.volume', write: true, read: true, type: 'number', unit: '%', min: 0, max: 100}, + mid: {name: 'Music ID', role: 'state', write: true, read: false, type: 'number', desc: '10000 - stop, 10005 - custom ringtone'}, + connected: {name: 'Is gateway connected', role: 'indicator.reachable', write: true, read: false, type: 'boolean', desc: 'Will be set to false if no packets received in 20 seconds'} + } + }, + th: {type: 'sensor_ht', fullName: 'Xiaomi Temperature/Humidity', ClassName: THSensor, states: { + voltage: states.voltage, + percent: states.percent, + + temperature: states.temperature, + humidity: states.humidity, + doublePress: states.doublePress + } + }, + weather: {type: 'weather.v1', fullName: 'Xiaomi Temperature/Humidity/Pressure', ClassName: THSensor, states: { + voltage: states.voltage, + percent: states.percent, + + temperature: states.temperature, + humidity: states.humidity, + pressure: {name: 'Pressure', role: 'value.pressure', write: false, read: true, type: 'number', unit: 'Pa', min: 0, max: 100}, + doublePress: states.doublePress + } + }, + button: {type: 'switch', fullName: 'Xiaomi Wireless Switch', ClassName: Button, states: { + voltage: states.voltage, + percent: states.percent, + + click: states.click, + double: states.double, + long: states.long + } + }, + button2: {type: 'sensor_switch.aq2', fullName: 'Xiaomi Wireless Switch Sensor', ClassName: Button, states: { + voltage: states.voltage, + percent: states.percent, + + click: states.click, + double: states.double, + long: states.long + } + }, + button3: {type: 'sensor_switch.aq3', fullName: 'Xiaomi Wireless Switch Sensor', ClassName: Button, states: { + voltage: states.voltage, + percent: states.percent, + + click: states.click, + double: states.double, + long: states.long + } + }, + button4: {type: 'remote.b1acn01', fullName: 'Xiaomi Aqara Smart Wireless Switch', ClassName: Button, states: { + voltage: states.voltage, + percent: states.percent, + + click: states.click, + double: states.double, + long: states.long + } + }, + plug: {type: 'plug', fullName: 'Xiaomi Smart Plug', ClassName: Plug, states: { + voltage: states.voltage, + percent: states.percent, + + state: states.power, + load_power: states.load_power, + power_consumed: states.power_consumed, + inuse: states.inuse + } + }, + plug86: {type: '86plug', fullName: 'Xiaomi Smart Wall Plug', ClassName: Plug, states: { + voltage: states.voltage, + percent: states.percent, + + state: states.power, + load_power: states.load_power, + power_consumed: states.power_consumed, + inuse: states.inuse + } + }, + remote_b286acn01: {type: 'remote.b286acn01', fullName: 'Xiaomi Aqara Wireless Remote Switch (Double Rocker)', ClassName: WallButtons, states: { + voltage: states.voltage, + percent: states.percent, + + channel_0: states.channel_0, + channel_1: states.channel_1, + dual_channel: states.dual_channel, + channel_0_double: states.channel_0_double, + channel_1_double: states.channel_1_double + } + }, + + remote_b186acn01: {type: 'remote.b186acn01', fullName: 'Xiaomi Aqara Wireless Remote Switch (Single Rocker)', ClassName: WallButtons, states: { + voltage: states.voltage, + percent: states.percent, + + channel_0: states.channel_0, + channel_0_double: states.channel_0_double + } + }, + + sw2_86: {type: '86sw2', fullName: 'Xiaomi Wireless Dual Wall Switch', ClassName: WallButtons, states: { + voltage: states.voltage, + percent: states.percent, + + channel_0: states.channel_0, + channel_1: states.channel_1, + dual_channel: states.dual_channel, + channel_0_double: states.channel_0_double, + channel_1_double: states.channel_1_double + } + }, + sw1_86: {type: '86sw1', fullName: 'Xiaomi Wireless Single Wall Switch', ClassName: WallButtons, states: { + voltage: states.voltage, + percent: states.percent, + + channel_0: states.click, + channel_0_double: states.double + } + }, + natgas: {type: 'natgas', fullName: 'Xiaomi Mijia Honeywell Gas Alarm Detector', ClassName: Alarm, states: { + voltage: states.voltage, + percent: states.percent, + + state: {name: 'Alarm state', role: 'indicator.alarm.CO2', write: false, read: true, type: 'boolean'}, + description: states.description + } + }, + smoke: {type: 'smoke', fullName: 'Xiaomi Mijia Honeywell Fire Alarm Detector', ClassName: Alarm, states: { + voltage: states.voltage, + percent: states.percent, + + state: {name: 'Alarm state', role: 'indicator.alarm.fire', write: false, read: true, type: 'boolean'}, + description: states.description + } + }, + ctrl_ln1: {type: 'ctrl_ln1', fullName: 'Xiaomi Aqara 86 Fire Wall Switch One Button', ClassName: WallWiredSwitch, states: { + channel_0: states.wall_switch + } + }, + ctrl_ln1_aq1: {type: 'ctrl_ln1.aq1', fullName: 'Xiaomi Aqara Wall Switch LN', ClassName: WallWiredSwitch, states: { + channel_0: states.wall_switch + } + }, + ctrl_ln2: {type: 'ctrl_ln2', fullName: 'Xiaomi 86 zero fire wall switch double key', ClassName: WallWiredSwitch, states: { + channel_0: states.wall_switch0, + channel_1: states.wall_switch1 + } + }, + ctrl_ln2_aq1: {type: 'ctrl_ln2.aq1', fullName: 'Xiaomi Aqara Wall Switch LN double key', ClassName: WallWiredSwitch, states: { + channel_0: states.wall_switch0, + channel_1: states.wall_switch1 + } + }, + ctrl_86plug_aq1: {type: 'ctrl_86plug.aq1', fullName: 'Xiaomi Aqara Wall Socket', ClassName: Plug, states: { + voltage: states.voltage, + percent: states.percent, + + state: states.power, + load_power: states.load_power, + power_consumed: states.power_consumed, + inuse: states.inuse + } + }, + ctrl_neutral2: {type: 'ctrl_neutral2', fullName: 'Xiaomi Wired Dual Wall Switch', ClassName: WallWiredSwitch, states: { + channel_0: states.wall_switch0, + channel_1: states.wall_switch1 + } + }, + ctrl_neutral1: {type: 'ctrl_neutral1', fullName: 'Xiaomi Wired Single Wall Switch', ClassName: WallWiredSwitch, states: { + channel_0: states.wall_switch + } + }, + cube: {type: 'cube', fullName: 'Xiaomi Cube', ClassName: Cube, states: { + voltage: states.voltage, + percent: states.percent, + + rotate: states.rotate, + rotate_position: states.rotate_position, + flip90: states.flip90, + flip180: states.flip180, + move: states.move, + tap_twice: states.tap_twice, + shake_air: states.shake_air, + swing: states.swing, + alert: states.alert, + free_fall: states.free_fall, + rotate_left: states.rotate_left, + rotate_right: states.rotate_right, + } + }, + cube2: {type: 'sensor_cube.aqgl01', fullName: 'Xiaomi Cube 01', ClassName: Cube, states: { + voltage: states.voltage, + percent: states.percent, + + rotate: states.rotate, + rotate_position: states.rotate_position, + flip90: states.flip90, + flip180: states.flip180, + move: states.move, + tap_twice: states.tap_twice, + shake_air: states.shake_air, + swing: states.swing, + alert: states.alert, + free_fall: states.free_fall, + rotate_left: states.rotate_left, + rotate_right: states.rotate_right, + } + }, + magnet: {type: 'magnet', fullName: 'Xiaomi Door Sensor', ClassName: DoorSensor, states: { + voltage: states.voltage, + percent: states.percent, + + state: states.opened + } + }, + magnet2: {type: 'sensor_magnet.aq2', fullName: 'Xiaomi Door Sensor', ClassName: DoorSensor, states: { + voltage: states.voltage, + percent: states.percent, + + state: states.opened + } + }, + curtain: {type: 'curtain', fullName: 'Xiaomi Aqara Smart Curtain', ClassName: Curtain, states: { + curtain_level: {name: 'Curtain level', role: 'level.blinds', write: true, read: true, type: 'number', min: 0, max: 100, unit: '%'}, + open: {name: 'Open', role: 'button.open', write: true, read: false, type: 'boolean'}, + close: {name: 'Close', role: 'button.close', write: true, read: false, type: 'boolean'}, + stop: {name: 'Stop', role: 'button.stop', write: true, read: false, type: 'boolean'} + } + }, + motion: {type: 'motion', fullName: 'Xiaomi Motion Sensor', ClassName: MotionSensor, states: { + voltage: states.voltage, + percent: states.percent, + + state: states.motion, + no_motion: states.no_motion + } + }, + lock_aq1: {type: 'lock.aq1', fullName: 'Xiaomi Lock', ClassName: Lock, states: { + voltage: states.voltage, + percent: states.percent, + + fing_verified: states.fing_verified, + psw_verified: states.psw_verified, + card_verified: states.card_verified, + verified_wrong: states.verified_wrong + } + }, + lock_v1: {type: 'lock.v1', fullName: 'Xiaomi Vima Smart Lock', ClassName: Lock, states: { + voltage: states.voltage, + percent: states.percent, + + fing_verified: states.fing_verified, + psw_verified: states.psw_verified, + card_verified: states.card_verified, + verified_wrong: states.verified_wrong + } + }, + motion2: {type: 'sensor_motion.aq2', fullName: 'Xiaomi Motion Sensor', ClassName: MotionSensor, states: { + voltage: states.voltage, + percent: states.percent, + + state: states.motion, + no_motion: states.no_motion, + lux: {name: 'Brightness', role: 'indicator.brightness', write: false, read: true, type: 'number', unit: 'lux'} + } + }, + vibration: {type: 'vibration', fullName: 'Xiaomi Vibration Sensor', ClassName: VibrationSensor, states: { + voltage: states.voltage, + percent: states.percent, + + state: {name: 'Is vibration', role: 'indicator.vibration', write: false, read: true, type: 'boolean', desc: 'Last tilt angle'}, + tilt_angle: {name: 'Tilt angle', role: 'value', write: false, read: true, type: 'number', unit: '°'}, + orientationX: {name: 'Orientation X', role: 'value', write: false, read: true, type: 'number', desc: 'Last X orientation'}, + orientationY: {name: 'Orientation Y', role: 'value', write: false, read: true, type: 'number', desc: 'Last Y orientation'}, + orientationZ: {name: 'Orientation Z', role: 'value', write: false, read: true, type: 'number', desc: 'Last Z orientation'}, + bed_activity: {name: 'Bed activity', role: 'value', write: false, read: true, type: 'number', desc: 'Last bed activity'} + } + }, + wleak1: {type: 'sensor_wleak.aq1', fullName: 'Xiaomi Aqara Water Sensor', ClassName: WaterSensor, states: { + voltage: states.voltage, + percent: states.percent, + + state: {name: 'Is water detected', role: 'indicator.leakage', write: false, read: true, type: 'boolean'} + } + }, +}; + +module.exports = devices; diff --git a/lib/package.json b/lib/package.json new file mode 100644 index 0000000..c5258e2 --- /dev/null +++ b/lib/package.json @@ -0,0 +1,14 @@ +{ + "name": "homebridge-mi-home", + "version": "0.0.1", + "description": "Mi home plugin for Homebridge.", + "license": "MIT", + "keywords": [ + "homebridge-plugin", "xiaomi", "mi", "mi home" + ], + "engines": { + "node": ">=0.12.0", + "homebridge": ">=0.2.0", + "miio": ">=0.12.0" + } +} diff --git a/lib/utils.js b/lib/utils.js new file mode 100644 index 0000000..6af37ff --- /dev/null +++ b/lib/utils.js @@ -0,0 +1,83 @@ +'use strict'; + +const fs = require('fs'); +const path = require('path'); + +let controllerDir; +let appName; + +/** + * returns application name + * + * The name of the application can be different and this function finds it out. + * + * @returns {string} + */ + function getAppName() { + const parts = __dirname.replace(/\\/g, '/').split('/'); + return parts[parts.length - 2].split('.')[0]; +} + +/** + * looks for js-controller home folder + * + * @param {boolean} isInstall + * @returns {string} + */ +function getControllerDir(isInstall) { + // Find the js-controller location + const possibilities = [ + 'yunkong2.js-controller', + 'yunkong2.js-controller', + ]; + /** @type {string} */ + let controllerPath; + for (const pkg of possibilities) { + try { + const possiblePath = require.resolve(pkg); + if (fs.existsSync(possiblePath)) { + controllerPath = possiblePath; + break; + } + } catch (e) { /* not found */ } + } + if (controllerPath == null) { + if (!isInstall) { + console.log('Cannot find js-controller'); + process.exit(10); + } else { + process.exit(); + } + } + // we found the controller + return path.dirname(controllerPath); +} + +/** + * reads controller base settings + * + * @alias getConfig + * @returns {object} + */ + function getConfig() { + let configPath; + if (fs.existsSync( + configPath = path.join(controllerDir, 'conf', appName + '.json') + )) { + return JSON.parse(fs.readFileSync(configPath, 'utf8')); + } else if (fs.existsSync( + configPath = path.join(controllerDir, 'conf', + appName.toLowerCase() + '.json') + )) { + return JSON.parse(fs.readFileSync(configPath, 'utf8')); + } else { + throw new Error('Cannot find ' + controllerDir + '/conf/' + appName + '.json'); + } +} +appName = getAppName(); +controllerDir = getControllerDir(typeof process !== 'undefined' && process.argv && process.argv.indexOf('--install') !== -1); +const adapter = require(path.join(controllerDir, 'lib/adapter.js')); + +exports.controllerDir = controllerDir; +exports.getConfig = getConfig; +exports.Adapter = adapter; +exports.appName = appName; diff --git a/main.js b/main.js new file mode 100644 index 0000000..e8811d1 --- /dev/null +++ b/main.js @@ -0,0 +1,315 @@ +/** + * yunkong2 MiHome + * + * Copyright 2017-2018, bluefox + * + * License: MIT + */ +'use strict'; +const utils = require('./lib/utils'); // Get common adapter utils +const MiHome = require('./lib/Hub'); +const adapter = utils.Adapter('mihome'); + +let objects = {}; +let delayed = {}; +let connected = null; +let connTimeout; +let hub; +let reconnectTimeout; +let tasks = []; + +adapter.on('ready', main); + +adapter.on('stateChange', (id, state) => { + if (!id || !state || state.ack) { + return; + } + if (!objects[id]) { + adapter.log.warn('Unknown ID: ' + id); + return; + } + if (hub) { + const pos = id.lastIndexOf('.'); + const channelId = id.substring(0, pos); + const attr = id.substring(pos + 1); + + if (objects[channelId] && objects[channelId].native) { + const device = hub.getSensor(objects[channelId].native.sid); + if (device && device.Control) { + device.Control(attr, state.val); + } else { + adapter.log.warn('Cannot control ' + id); + } + } else { + adapter.log.warn('Invalid device: ' + id); + } + } +}); + +adapter.on('unload', callback => { + if (hub) { + try { + hub.stop(callback); + } catch (e) { + console.error('Cannot stop: ' + e); + callback && callback(); + } + } else if (callback) { + callback(); + } +}); + +adapter.on('message', obj => { + if (obj) { + switch (obj.command) { + case 'browse': + let browse = new MiHome.Hub({ + port: (obj.message.port || adapter.config.port) + 1, + bind: obj.message.bind || '0.0.0.0', + browse: true + }); + let result = []; + + browse.on('browse', data => (result.indexOf(data.ip) === -1) && result.push(data.ip)); + + browse.listen(); + setTimeout(() => { + browse.stop(() => { + browse = null; + if (obj.callback) adapter.sendTo(obj.from, obj.command, result, obj.callback); + }); + }, 3000); + break; + } + } +}); + +function updateStates(sid, type, data) { + const id = adapter.namespace + '.devices.' + type.replace('.', '_') + '_' + sid; + + for (const attr in data) { + if (data.hasOwnProperty(attr)) { + if (objects[id] || objects[id + '.' + attr]) { + adapter.setForeignState(id + '.' + attr, data[attr], true); + } else { + delayed[id + '.' + attr] = data[attr]; + } + } + } +} + +function syncObjects(callback) { + if (!tasks || !tasks.length) { + callback && callback(); + return; + } + const obj = tasks.shift(); + adapter.getForeignObject(obj._id, (err, oObj) => { + if (!oObj) { + objects[obj._id] = obj; + adapter.setForeignObject(obj._id, obj, () => { + if (delayed[obj._id] !== undefined) { + adapter.setForeignState(obj._id, delayed[obj._id], true, () => { + delete delayed[obj._id]; + setImmediate(syncObjects, callback); + }) + } else { + setImmediate(syncObjects, callback); + } + }); + } else { + let changed = false; + // merge info together + for (const a in obj.common) { + if (obj.common.hasOwnProperty(a) && a !== 'name' && oObj.common[a] !== obj.common[a]) { + changed = true; + oObj.common[a] = obj.common[a]; + } + } + if (JSON.stringify(obj.native) !== JSON.stringify(oObj.native)) { + changed = true; + oObj.native = obj.native; + } + + objects[obj._id] = oObj; + if (changed) { + adapter.setForeignObject(oObj._id, oObj, () => { + if (delayed[oObj._id] !== undefined) { + adapter.setForeignState(oObj._id, delayed[oObj._id], true, () => { + delete delayed[oObj._id]; + setImmediate(syncObjects, callback); + }) + } else { + setImmediate(syncObjects, callback); + } + }); + } else { + if (delayed[oObj._id] !== undefined) { + adapter.setForeignState(oObj._id, delayed[oObj._id], true, () => { + delete delayed[oObj._id]; + setImmediate(syncObjects, callback); + }) + } else { + // init rotate position with previous value + if (oObj._id.match(/\.rotate_position$/)) { + adapter.getForeignState(oObj._id, (err, state) => { + if (state) { + const pos = oObj._id.lastIndexOf('.'); + const channelId = oObj._id.substring(0, pos); + + if (objects[channelId]) { + const device = hub.getSensor(objects[channelId].native.sid); + if (device && device.Control) { + device.Control('rotate_position', state.val); + } + } + } + setImmediate(syncObjects, callback); + }); + } else { + setImmediate(syncObjects, callback); + } + } + } + } + }); +} + +function createDevice(device, name, callback) { + const id = adapter.namespace + '.devices.' + device.type.replace('.', '_') + '_' + device.sid; + const isStartTasks = !tasks.length; + const dev = Object.keys(MiHome.Devices).find(id => MiHome.Devices[id].type === device.type); + + if (dev) { + for (const attr in MiHome.Devices[dev].states) { + if (!MiHome.Devices[dev].states.hasOwnProperty(attr)) continue; + console.log('Create ' + id + '.' + attr); + tasks.push({ + _id: id + '.' + attr, + common: MiHome.Devices[dev].states[attr], + type: 'state', + native: {} + }); + } + } else { + adapter.log.error('Device ' + device.type + ' not found'); + } + + tasks.push({ + _id: id, + common: { + name: name || (dev && dev.fullName) || device.type, + icon: '/icons/' + device.type.replace('.', '_') + '.png' + }, + type: 'channel', + native: { + sid: device.sid, + type: device.type + } + }); + + isStartTasks && syncObjects(callback); +} + +function readObjects(callback) { + adapter.getForeignObjects(adapter.namespace + '.devices.*', (err, list) => { + adapter.subscribeStates('devices.*'); + objects = list; + callback && callback(); + }); +} + +function disconnected () { + connTimeout = null; + if (connected) { + connected = false; + adapter.log.info(`Change connection status on timeout after ${adapter.config.heartbeatTimeout}ms: false`); + adapter.setState('info.connection', connected, true); + } + stopMihome(); +} + +function setConnected(conn) { + if (connected !== conn) { + connected = conn; + adapter.log.info('Change connection status: ' + conn); + adapter.setState('info.connection', connected, true); + } + + if (conn && adapter.config.heartbeatTimeout) { + if (connTimeout) { + clearTimeout(connTimeout); + } + + connTimeout = setTimeout(disconnected, adapter.config.heartbeatTimeout); + } +} + +function stopMihome() { + if (hub) { + try { + hub.stop(); + hub = null; + } catch (e) { + + } + } + if (!reconnectTimeout) { + reconnectTimeout = setTimeout(startMihome, adapter.config.restartInterval); + } +} + +function startMihome() { + reconnectTimeout = null; + setConnected(false); + if (!adapter.config.key && (!adapter.config.keys || !adapter.config.keys.find(e => e.key))) { + adapter.log.error('no key defined. Only read is possible'); + } + + hub = new MiHome.Hub({ + port: adapter.config.port, + bind: adapter.config.bind || '0.0.0.0', + key: adapter.config.key, + keys: adapter.config.keys, + interval: adapter.config.interval + }); + + hub.on('message', msg => { + setConnected(true); + adapter.log.debug('RAW: ' + JSON.stringify(msg)); + }); + hub.on('warning', msg => adapter.log.warn(msg)); + hub.on('error', error => { + adapter.log.error(error); + stopMihome(); + }); + hub.on('device', (device, name) => { + if (!objects[adapter.namespace + '.devices.' + device.type.replace('.', '_') + '_' + device.sid]) { + adapter.log.debug('NEW device: ' + device.sid + '(' + device.type + ')'); + createDevice(device, name); + } else { + adapter.log.debug('known device: ' + device.sid + '(' + device.type + ')'); + } + }); + hub.on('data', (sid, type, data) => { + adapter.log.debug('data: ' + sid + '(' + type + '): ' + JSON.stringify(data)); + updateStates(sid, type, data); + }); + + if (!connTimeout && adapter.config.heartbeatTimeout) { + connTimeout = setTimeout(disconnected, adapter.config.heartbeatTimeout); + } + + hub.listen(); +} + +function main() { + if (adapter.config.heartbeatTimeout === undefined) { + adapter.config.heartbeatTimeout = 20000; + } else { + adapter.config.heartbeatTimeout = parseInt(adapter.config.heartbeatTimeout, 10) || 0; + } + adapter.config.restartInterval = parseInt(adapter.config.restartInterval, 10) || 30000; + + readObjects(startMihome); +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..7ed576b --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "yunkong2.mihome", + "description": "Control Xiaomi Mi Home smarthome devices/sensors", + "version": "1.2.3", + "scripts": { + "test": "node node_modules/mocha/bin/mocha --exit" + }, + "homepage": "https://git.spacen.net/yunkong2/yunkong2.mihome", + "license": "MIT", + "keywords": [ + "yunkong2", + "mihome", + "xiaomi", + "home automation" + ], + "repository": { + "type": "git", + "url": "git+https://git.spacen.net/yunkong2/yunkong2.mihome.git" + }, + "dependencies": {}, + "devDependencies": { + "gulp": "^3.9.1", + "mocha": "^5.2.0", + "chai": "^4.1.2" + } + "main": "main.js", + "readmeFilename": "README.md" +} diff --git a/test/lib/gateway.js b/test/lib/gateway.js new file mode 100644 index 0000000..2388e7a --- /dev/null +++ b/test/lib/gateway.js @@ -0,0 +1,69 @@ +'use strict'; + +const dgram = require('dgram'); + +const commands = [ + {"cmd": "heartbeat", "model": "gateway", "sid":"81726387164871", "short_id": "0", "token": "8475638456384", "data": {"ip":"192.168.10.68"}}, + {"cmd": "report", "model": "86sw2", "sid":"1234567abeefc", "short_id": 10256, "data": {"channel_1": "click"}}, + {"cmd": "report", "model": "86sw2", "sid":"1234567abeefc", "short_id": 10256, "data": {"dual_channel": "both_click"}}, + {"cmd": "report", "model": "weather.v1", "sid":"1652761251244", "short_id": 12817, "data": {"pressure": "100120"}}, + {"cmd": "report", "model": "weather.v1", "sid":"1652761251244", "short_id": 12817, "data": {"humidity": "6606"}}, + {"cmd": "report", "model": "weather.v1", "sid":"1652761251244", "short_id": 12817, "data": {"temperature": "2030"}}, + {"cmd": "report", "model": "cube", "sid":"287658275634875", "short_id": 21396, "data": {"rotate": "6,500"}}, + {"cmd": "report", "model": "gateway", "sid":"81726387164871", "short_id": 0, "data": {"rgb": 0, "illumination": 1180}}, + {"cmd": "heartbeat", "model": "cube", "sid":"287658275634875", "short_id": 21396, "data": {"voltage": 3025}}, + {"cmd": "report", "model": "sensor_wleak.aq1", "sid":"aaa000xxxxxxx", "short_id": 12345, "data": {"status": "leak"}}, + {"cmd": "report", "model": "sensor_wleak.aq1", "sid":"aaa000xxxxxxx", "short_id": 12345, "data": {"status": "no_leak"}} +]; + +function GatewaySimulator () { + const that = this; + + this.destroy = function (cb) { + this.socket.close(cb); + this.socket = null; + }; + + function onMessage(msgBuffer, rinfo) { + let msg; + try { + msg = JSON.parse(msgBuffer.toString()); + } + catch (e) { + return; + } + if (msg.cmd === 'whois') { + for (let c = 0; c < commands.length; c++) { + const json = JSON.stringify(commands[c]); + console.log('Send ' + json); + that.socket.send(json, 0, json.length, rinfo.port, rinfo.ip); + } + } else { + msg.mirror = true; + const json = JSON.stringify(msg); + console.log('Mirror ' + json); + that.socket.send(json, 0, json.length, rinfo.port, rinfo.ip); + } + } + + this.init = function () { + this.socket = dgram.createSocket('udp4'); + this.socket.on('message', onMessage); + this.socket.on('error', error => console.error('ERROR: ' + error)); + this.socket.on('listening', () => { + that.socket.setBroadcast(true); + that.socket.setMulticastTTL(128); + that.socket.addMembership('224.0.0.50'); + }); + this.socket.bind(4321); + }; + + return this; +} + +if (typeof module !== undefined && module.parent) { + module.exports = GatewaySimulator; +} else { + const gw = new GatewaySimulator(); + gw.init(); +} \ No newline at end of file diff --git a/test/lib/setup.js b/test/lib/setup.js new file mode 100644 index 0000000..0e3cf32 --- /dev/null +++ b/test/lib/setup.js @@ -0,0 +1,729 @@ +/* jshint -W097 */// jshint strict:false +/*jslint node: true */ +// check if tmp directory exists +'use strict'; +var fs = require('fs'); +var path = require('path'); +var child_process = require('child_process'); +var rootDir = path.normalize(__dirname + '/../../'); +var pkg = require(rootDir + 'package.json'); +var debug = typeof v8debug === 'object'; +pkg.main = pkg.main || 'main.js'; + +var adapterName = path.normalize(rootDir).replace(/\\/g, '/').split('/'); +adapterName = adapterName[adapterName.length - 2]; +var adapterStarted = false; + +function getAppName() { + var parts = __dirname.replace(/\\/g, '/').split('/'); + return parts[parts.length - 3].split('.')[0]; +} + +var appName = getAppName().toLowerCase(); + +var objects; +var states; + +var pid = null; + +function copyFileSync(source, target) { + + var targetFile = target; + + //if target is a directory a new file with the same name will be created + if (fs.existsSync(target)) { + if ( fs.lstatSync( target ).isDirectory() ) { + targetFile = path.join(target, path.basename(source)); + } + } + + try { + fs.writeFileSync(targetFile, fs.readFileSync(source)); + } + catch (err) { + console.log("file copy error: " +source +" -> " + targetFile + " (error ignored)"); + } +} + +function copyFolderRecursiveSync(source, target, ignore) { + var files = []; + + var base = path.basename(source); + if (base === adapterName) { + base = pkg.name; + } + //check if folder needs to be created or integrated + var targetFolder = path.join(target, base); + if (!fs.existsSync(targetFolder)) { + fs.mkdirSync(targetFolder); + } + + //copy + if (fs.lstatSync(source).isDirectory()) { + files = fs.readdirSync(source); + files.forEach(function (file) { + if (ignore && ignore.indexOf(file) !== -1) { + return; + } + + var curSource = path.join(source, file); + var curTarget = path.join(targetFolder, file); + if (fs.lstatSync(curSource).isDirectory()) { + // ignore grunt files + if (file.indexOf('grunt') !== -1) return; + if (file === 'chai') return; + if (file === 'mocha') return; + copyFolderRecursiveSync(curSource, targetFolder, ignore); + } else { + copyFileSync(curSource, curTarget); + } + }); + } +} + +if (!fs.existsSync(rootDir + 'tmp')) { + fs.mkdirSync(rootDir + 'tmp'); +} + +function storeOriginalFiles() { + console.log('Store original files...'); + var dataDir = rootDir + 'tmp/' + appName + '-data/'; + + var f = fs.readFileSync(dataDir + 'objects.json'); + var objects = JSON.parse(f.toString()); + if (objects['system.adapter.admin.0'] && objects['system.adapter.admin.0'].common) { + objects['system.adapter.admin.0'].common.enabled = false; + } + if (objects['system.adapter.admin.1'] && objects['system.adapter.admin.1'].common) { + objects['system.adapter.admin.1'].common.enabled = false; + } + + fs.writeFileSync(dataDir + 'objects.json.original', JSON.stringify(objects)); + try { + f = fs.readFileSync(dataDir + 'states.json'); + fs.writeFileSync(dataDir + 'states.json.original', f); + } + catch (err) { + console.log('no states.json found - ignore'); + } +} + +function restoreOriginalFiles() { + console.log('restoreOriginalFiles...'); + var dataDir = rootDir + 'tmp/' + appName + '-data/'; + + var f = fs.readFileSync(dataDir + 'objects.json.original'); + fs.writeFileSync(dataDir + 'objects.json', f); + try { + f = fs.readFileSync(dataDir + 'states.json.original'); + fs.writeFileSync(dataDir + 'states.json', f); + } + catch (err) { + console.log('no states.json.original found - ignore'); + } + +} + +function checkIsAdapterInstalled(cb, counter, customName) { + customName = customName || pkg.name.split('.').pop(); + counter = counter || 0; + var dataDir = rootDir + 'tmp/' + appName + '-data/'; + console.log('checkIsAdapterInstalled...'); + + try { + var f = fs.readFileSync(dataDir + 'objects.json'); + var objects = JSON.parse(f.toString()); + if (objects['system.adapter.' + customName + '.0']) { + console.log('checkIsAdapterInstalled: ready!'); + setTimeout(function () { + if (cb) cb(); + }, 100); + return; + } else { + console.warn('checkIsAdapterInstalled: still not ready'); + } + } catch (err) { + + } + + if (counter > 20) { + console.error('checkIsAdapterInstalled: Cannot install!'); + if (cb) cb('Cannot install'); + } else { + console.log('checkIsAdapterInstalled: wait...'); + setTimeout(function() { + checkIsAdapterInstalled(cb, counter + 1); + }, 1000); + } +} + +function checkIsControllerInstalled(cb, counter) { + counter = counter || 0; + var dataDir = rootDir + 'tmp/' + appName + '-data/'; + + console.log('checkIsControllerInstalled...'); + try { + var f = fs.readFileSync(dataDir + 'objects.json'); + var objects = JSON.parse(f.toString()); + if (objects['system.adapter.admin.0']) { + console.log('checkIsControllerInstalled: installed!'); + setTimeout(function () { + if (cb) cb(); + }, 100); + return; + } + } catch (err) { + + } + + if (counter > 20) { + console.log('checkIsControllerInstalled: Cannot install!'); + if (cb) cb('Cannot install'); + } else { + console.log('checkIsControllerInstalled: wait...'); + setTimeout(function() { + checkIsControllerInstalled(cb, counter + 1); + }, 1000); + } +} + +function installAdapter(customName, cb) { + if (typeof customName === 'function') { + cb = customName; + customName = null; + } + customName = customName || pkg.name.split('.').pop(); + console.log('Install adapter...'); + var startFile = 'node_modules/' + appName + '.js-controller/' + appName + '.js'; + // make first install + if (debug) { + child_process.execSync('node ' + startFile + ' add ' + customName + ' --enabled false', { + cwd: rootDir + 'tmp', + stdio: [0, 1, 2] + }); + checkIsAdapterInstalled(function (error) { + if (error) console.error(error); + console.log('Adapter installed.'); + if (cb) cb(); + }); + } else { + // add controller + var _pid = child_process.fork(startFile, ['add', customName, '--enabled', 'false'], { + cwd: rootDir + 'tmp', + stdio: [0, 1, 2, 'ipc'] + }); + + waitForEnd(_pid, function () { + checkIsAdapterInstalled(function (error) { + if (error) console.error(error); + console.log('Adapter installed.'); + if (cb) cb(); + }); + }); + } +} + +function waitForEnd(_pid, cb) { + if (!_pid) { + cb(-1, -1); + return; + } + _pid.on('exit', function (code, signal) { + if (_pid) { + _pid = null; + cb(code, signal); + } + }); + _pid.on('close', function (code, signal) { + if (_pid) { + _pid = null; + cb(code, signal); + } + }); +} + +function installJsController(cb) { + console.log('installJsController...'); + if (!fs.existsSync(rootDir + 'tmp/node_modules/' + appName + '.js-controller') || + !fs.existsSync(rootDir + 'tmp/' + appName + '-data')) { + // try to detect appName.js-controller in node_modules/appName.js-controller + // travis CI installs js-controller into node_modules + if (fs.existsSync(rootDir + 'node_modules/' + appName + '.js-controller')) { + console.log('installJsController: no js-controller => copy it from "' + rootDir + 'node_modules/' + appName + '.js-controller"'); + // copy all + // stop controller + console.log('Stop controller if running...'); + var _pid; + if (debug) { + // start controller + _pid = child_process.exec('node ' + appName + '.js stop', { + cwd: rootDir + 'node_modules/' + appName + '.js-controller', + stdio: [0, 1, 2] + }); + } else { + _pid = child_process.fork(appName + '.js', ['stop'], { + cwd: rootDir + 'node_modules/' + appName + '.js-controller', + stdio: [0, 1, 2, 'ipc'] + }); + } + + waitForEnd(_pid, function () { + // copy all files into + if (!fs.existsSync(rootDir + 'tmp')) fs.mkdirSync(rootDir + 'tmp'); + if (!fs.existsSync(rootDir + 'tmp/node_modules')) fs.mkdirSync(rootDir + 'tmp/node_modules'); + + if (!fs.existsSync(rootDir + 'tmp/node_modules/' + appName + '.js-controller')){ + console.log('Copy js-controller...'); + copyFolderRecursiveSync(rootDir + 'node_modules/' + appName + '.js-controller', rootDir + 'tmp/node_modules/'); + } + + console.log('Setup js-controller...'); + var __pid; + if (debug) { + // start controller + _pid = child_process.exec('node ' + appName + '.js setup first --console', { + cwd: rootDir + 'tmp/node_modules/' + appName + '.js-controller', + stdio: [0, 1, 2] + }); + } else { + __pid = child_process.fork(appName + '.js', ['setup', 'first', '--console'], { + cwd: rootDir + 'tmp/node_modules/' + appName + '.js-controller', + stdio: [0, 1, 2, 'ipc'] + }); + } + waitForEnd(__pid, function () { + checkIsControllerInstalled(function () { + // change ports for object and state DBs + var config = require(rootDir + 'tmp/' + appName + '-data/' + appName + '.json'); + config.objects.port = 19001; + config.states.port = 19000; + fs.writeFileSync(rootDir + 'tmp/' + appName + '-data/' + appName + '.json', JSON.stringify(config, null, 2)); + console.log('Setup finished.'); + + copyAdapterToController(); + + installAdapter(function () { + storeOriginalFiles(); + if (cb) cb(true); + }); + }); + }); + }); + } else { + // check if port 9000 is free, else admin adapter will be added to running instance + var client = new require('net').Socket(); + client.connect(9000, '127.0.0.1', function() { + console.error('Cannot initiate fisrt run of test, because one instance of application is running on this PC. Stop it and repeat.'); + process.exit(0); + }); + + setTimeout(function () { + client.destroy(); + if (!fs.existsSync(rootDir + 'tmp/node_modules/' + appName + '.js-controller')) { + console.log('installJsController: no js-controller => install from git'); + + child_process.execSync('npm install https://github.com/' + appName + '/' + appName + '.js-controller/tarball/master --prefix ./ --production', { + cwd: rootDir + 'tmp/', + stdio: [0, 1, 2] + }); + } else { + console.log('Setup js-controller...'); + var __pid; + if (debug) { + // start controller + child_process.exec('node ' + appName + '.js setup first', { + cwd: rootDir + 'tmp/node_modules/' + appName + '.js-controller', + stdio: [0, 1, 2] + }); + } else { + child_process.fork(appName + '.js', ['setup', 'first'], { + cwd: rootDir + 'tmp/node_modules/' + appName + '.js-controller', + stdio: [0, 1, 2, 'ipc'] + }); + } + } + + // let npm install admin and run setup + checkIsControllerInstalled(function () { + var _pid; + + if (fs.existsSync(rootDir + 'node_modules/' + appName + '.js-controller/' + appName + '.js')) { + _pid = child_process.fork(appName + '.js', ['stop'], { + cwd: rootDir + 'node_modules/' + appName + '.js-controller', + stdio: [0, 1, 2, 'ipc'] + }); + } + + waitForEnd(_pid, function () { + // change ports for object and state DBs + var config = require(rootDir + 'tmp/' + appName + '-data/' + appName + '.json'); + config.objects.port = 19001; + config.states.port = 19000; + fs.writeFileSync(rootDir + 'tmp/' + appName + '-data/' + appName + '.json', JSON.stringify(config, null, 2)); + + copyAdapterToController(); + + installAdapter(function () { + storeOriginalFiles(); + if (cb) cb(true); + }); + }); + }); + }, 1000); + } + } else { + setTimeout(function () { + console.log('installJsController: js-controller installed'); + if (cb) cb(false); + }, 0); + } +} + +function copyAdapterToController() { + console.log('Copy adapter...'); + // Copy adapter to tmp/node_modules/appName.adapter + copyFolderRecursiveSync(rootDir, rootDir + 'tmp/node_modules/', ['.idea', 'test', 'tmp', '.git', appName + '.js-controller']); + console.log('Adapter copied.'); +} + +function clearControllerLog() { + var dirPath = rootDir + 'tmp/log'; + var files; + try { + if (fs.existsSync(dirPath)) { + console.log('Clear controller log...'); + files = fs.readdirSync(dirPath); + } else { + console.log('Create controller log directory...'); + files = []; + fs.mkdirSync(dirPath); + } + } catch(e) { + console.error('Cannot read "' + dirPath + '"'); + return; + } + if (files.length > 0) { + try { + for (var i = 0; i < files.length; i++) { + var filePath = dirPath + '/' + files[i]; + fs.unlinkSync(filePath); + } + console.log('Controller log cleared'); + } catch (err) { + console.error('cannot clear log: ' + err); + } + } +} + +function clearDB() { + var dirPath = rootDir + 'tmp/yunkong2-data/sqlite'; + var files; + try { + if (fs.existsSync(dirPath)) { + console.log('Clear sqlite DB...'); + files = fs.readdirSync(dirPath); + } else { + console.log('Create controller log directory...'); + files = []; + fs.mkdirSync(dirPath); + } + } catch(e) { + console.error('Cannot read "' + dirPath + '"'); + return; + } + if (files.length > 0) { + try { + for (var i = 0; i < files.length; i++) { + var filePath = dirPath + '/' + files[i]; + fs.unlinkSync(filePath); + } + console.log('Clear sqlite DB'); + } catch (err) { + console.error('cannot clear DB: ' + err); + } + } +} + +function setupController(cb) { + installJsController(function (isInited) { + clearControllerLog(); + clearDB(); + + if (!isInited) { + restoreOriginalFiles(); + copyAdapterToController(); + } + // read system.config object + var dataDir = rootDir + 'tmp/' + appName + '-data/'; + + var objs; + try { + objs = fs.readFileSync(dataDir + 'objects.json'); + objs = JSON.parse(objs); + } + catch (e) { + console.log('ERROR reading/parsing system configuration. Ignore'); + objs = {'system.config': {}}; + } + if (!objs || !objs['system.config']) { + objs = {'system.config': {}}; + } + + if (cb) cb(objs['system.config']); + }); +} + +function startAdapter(objects, states, callback) { + if (adapterStarted) { + console.log('Adapter already started ...'); + if (callback) callback(objects, states); + return; + } + adapterStarted = true; + console.log('startAdapter...'); + if (fs.existsSync(rootDir + 'tmp/node_modules/' + pkg.name + '/' + pkg.main)) { + try { + if (debug) { + // start controller + pid = child_process.exec('node node_modules/' + pkg.name + '/' + pkg.main + ' --console silly', { + cwd: rootDir + 'tmp', + stdio: [0, 1, 2] + }); + } else { + // start controller + pid = child_process.fork('node_modules/' + pkg.name + '/' + pkg.main, ['--console', 'silly'], { + cwd: rootDir + 'tmp', + stdio: [0, 1, 2, 'ipc'] + }); + } + } catch (error) { + console.error(JSON.stringify(error)); + } + } else { + console.error('Cannot find: ' + rootDir + 'tmp/node_modules/' + pkg.name + '/' + pkg.main); + } + if (callback) callback(objects, states); +} + +function startController(isStartAdapter, onObjectChange, onStateChange, callback) { + if (typeof isStartAdapter === 'function') { + callback = onStateChange; + onStateChange = onObjectChange; + onObjectChange = isStartAdapter; + isStartAdapter = true; + } + + if (onStateChange === undefined) { + callback = onObjectChange; + onObjectChange = undefined; + } + + if (pid) { + console.error('Controller is already started!'); + } else { + console.log('startController...'); + adapterStarted = false; + var isObjectConnected; + var isStatesConnected; + + var Objects = require(rootDir + 'tmp/node_modules/' + appName + '.js-controller/lib/objects/objectsInMemServer'); + objects = new Objects({ + connection: { + "type" : "file", + "host" : "127.0.0.1", + "port" : 19001, + "user" : "", + "pass" : "", + "noFileCache": false, + "connectTimeout": 2000 + }, + logger: { + silly: function (msg) { + console.log(msg); + }, + debug: function (msg) { + console.log(msg); + }, + info: function (msg) { + console.log(msg); + }, + warn: function (msg) { + console.warn(msg); + }, + error: function (msg) { + console.error(msg); + } + }, + connected: function () { + isObjectConnected = true; + if (isStatesConnected) { + console.log('startController: started!'); + if (isStartAdapter) { + startAdapter(objects, states, callback); + } else { + if (callback) { + callback(objects, states); + callback = null; + } + } + } + }, + change: onObjectChange + }); + + // Just open in memory DB itself + var States = require(rootDir + 'tmp/node_modules/' + appName + '.js-controller/lib/states/statesInMemServer'); + states = new States({ + connection: { + type: 'file', + host: '127.0.0.1', + port: 19000, + options: { + auth_pass: null, + retry_max_delay: 15000 + } + }, + logger: { + silly: function (msg) { + console.log(msg); + }, + debug: function (msg) { + console.log(msg); + }, + info: function (msg) { + console.log(msg); + }, + warn: function (msg) { + console.log(msg); + }, + error: function (msg) { + console.log(msg); + } + }, + connected: function () { + isStatesConnected = true; + if (isObjectConnected) { + console.log('startController: started!!'); + if (isStartAdapter) { + startAdapter(objects, states, callback); + } else { + if (callback) { + callback(objects, states); + callback = null; + } + } + } + }, + change: onStateChange + }); + } +} + +function stopAdapter(cb) { + if (!pid) { + console.error('Controller is not running!'); + if (cb) { + setTimeout(function () { + cb(false); + }, 0); + } + } else { + adapterStarted = false; + pid.on('exit', function (code, signal) { + if (pid) { + console.log('child process terminated due to receipt of signal ' + signal); + if (cb) cb(); + pid = null; + } + }); + + pid.on('close', function (code, signal) { + if (pid) { + if (cb) cb(); + pid = null; + } + }); + + pid.kill('SIGTERM'); + } +} + +function _stopController() { + if (objects) { + objects.destroy(); + objects = null; + } + if (states) { + states.destroy(); + states = null; + } +} + +function stopController(cb) { + var timeout; + if (objects) { + console.log('Set system.adapter.' + pkg.name + '.0'); + objects.setObject('system.adapter.' + pkg.name + '.0', { + common:{ + enabled: false + } + }); + } + + stopAdapter(function () { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + + _stopController(); + + if (cb) { + cb(true); + cb = null; + } + }); + + timeout = setTimeout(function () { + timeout = null; + console.log('child process NOT terminated'); + + _stopController(); + + if (cb) { + cb(false); + cb = null; + } + pid = null; + }, 5000); +} + +// Setup the adapter +function setAdapterConfig(common, native, instance) { + var objects = JSON.parse(fs.readFileSync(rootDir + 'tmp/' + appName + '-data/objects.json').toString()); + var id = 'system.adapter.' + adapterName.split('.').pop() + '.' + (instance || 0); + if (common) objects[id].common = common; + if (native) objects[id].native = native; + fs.writeFileSync(rootDir + 'tmp/' + appName + '-data/objects.json', JSON.stringify(objects)); +} + +// Read config of the adapter +function getAdapterConfig(instance) { + var objects = JSON.parse(fs.readFileSync(rootDir + 'tmp/' + appName + '-data/objects.json').toString()); + var id = 'system.adapter.' + adapterName.split('.').pop() + '.' + (instance || 0); + return objects[id]; +} + +if (typeof module !== undefined && module.parent) { + module.exports.getAdapterConfig = getAdapterConfig; + module.exports.setAdapterConfig = setAdapterConfig; + module.exports.startController = startController; + module.exports.stopController = stopController; + module.exports.setupController = setupController; + module.exports.stopAdapter = stopAdapter; + module.exports.startAdapter = startAdapter; + module.exports.installAdapter = installAdapter; + module.exports.appName = appName; + module.exports.adapterName = adapterName; + module.exports.adapterStarted = adapterStarted; +} diff --git a/test/testAdapter.js b/test/testAdapter.js new file mode 100644 index 0000000..3dd97a6 --- /dev/null +++ b/test/testAdapter.js @@ -0,0 +1,324 @@ +/* jshint -W097 */// jshint strict:false +/*jslint node: true */ +'use strict'; + +var expect = require('chai').expect; +var setup = require(__dirname + '/lib/setup'); +var GW = require(__dirname + '/lib/gateway'); + +var objects = null; +var states = null; +var onStateChanged = null; +var onObjectChanged = null; +var sendToID = 1; +var gw; + +var adapterShortName = setup.adapterName.substring(setup.adapterName.indexOf('.') + 1); +var runningMode = require(__dirname + '/../io-package.json').common.mode; + +var checkStates = { + "mihome.0.devices.gateway_81726387164871.illumination": { + "val": 1180, + "ack": true, + "ts": 1509870303537, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303537 + }, + "mihome.0.devices.gateway_81726387164871.on": { + "val": false, + "ack": true, + "ts": 1509870303539, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303539 + }, + "mihome.0.devices.gateway_81726387164871.dimmer": { + "val": 0, + "ack": true, + "ts": 1509870303539, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303539 + }, + "mihome.0.devices.gateway_81726387164871.rgb": { + "val": "#000000", + "ack": true, + "ts": 1509870303539, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303539 + }, + "mihome.0.devices.86sw2_1234567abeefc.channel_1": { + "val": false, + "ack": true, + "ts": 1509870303830, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303830 + }, + "mihome.0.devices.86sw2_1234567abeefc.dual_channel": { + "val": false, + "ack": true, + "ts": 1509870303831, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303831 + }, + "mihome.0.devices.86sw2_1234567abeefc.channel_1_double": { + "val": false, + "ack": true, + "ts": 1509870303574, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303574 + }, + "mihome.0.devices.weather_v1_1652761251244.temperature": { + "val": 20.3, + "ack": true, + "ts": 1509870303587, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303587 + }, + "mihome.0.devices.weather_v1_1652761251244.humidity": { + "val": 66.06, + "ack": true, + "ts": 1509870303590, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303590 + }, + "mihome.0.devices.weather_v1_1652761251244.pressure": { + "val": 1001.2, + "ack": true, + "ts": 1509870303593, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303593 + }, + "mihome.0.devices.cube_287658275634875.voltage": { + "val": 3.025, + "ack": true, + "ts": 1509870303600, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303600 + }, + "mihome.0.devices.cube_287658275634875.percent": { + "val": 82.5, + "ack": true, + "ts": 1509870303603, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303603 + }, + "mihome.0.devices.cube_287658275634875.rotate": { + "val": 6.5, + "ack": true, + "ts": 1509870303605, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303605 + }, + "mihome.0.devices.cube_287658275634875.rotate_position": { + "val": 6.5, + "ack": true, + "ts": 1509870303607, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303607 + }, + "mihome.0.devices.cube_287658275634875.rotate_right": { + "val": false, + "ack": true, + "ts": 1509870303835, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303835 + }, + "mihome.0.devices.sensor_wleak_aq1_aaa000xxxxxxx.state": { + "val": false, + "ack": true, + "ts": 1509870303649, + "q": 0, + "from": "system.adapter.mihome.0", + "lc": 1509870303649 + } +}; + +function checkConnectionOfAdapter(cb, counter) { + counter = counter || 0; + console.log('Try check #' + counter); + if (counter > 30) { + if (cb) cb('Cannot check connection'); + return; + } + + states.getState('system.adapter.' + adapterShortName + '.0.alive', function (err, state) { + if (err) console.error(err); + if (state && state.val) { + if (cb) cb(); + } else { + setTimeout(function () { + checkConnectionOfAdapter(cb, counter + 1); + }, 1000); + } + }); +} + +function checkValueOfState(id, value, cb, counter) { + counter = counter || 0; + if (counter > 20) { + if (cb) cb('Cannot check value Of State ' + id); + return; + } + + states.getState(id, function (err, state) { + if (err) console.error(err); + if (value === null && !state) { + if (cb) cb(); + } else + if (state && (value === undefined || state.val === value)) { + if (cb) cb(); + } else { + setTimeout(function () { + checkValueOfState(id, value, cb, counter + 1); + }, 500); + } + }); +} + +function sendTo(target, command, message, callback) { + onStateChanged = function (id, state) { + if (id === 'messagebox.system.adapter.test.0') { + callback(state.message); + } + }; + + states.pushMessage('system.adapter.' + target, { + command: command, + message: message, + from: 'system.adapter.test.0', + callback: { + message: message, + id: sendToID++, + ack: false, + time: (new Date()).getTime() + } + }); +} + +describe('Test ' + adapterShortName + ' adapter', function() { + before('Test ' + adapterShortName + ' adapter: Start js-controller', function (_done) { + this.timeout(600000); // because of first install from npm + + setup.setupController(function () { + var config = setup.getAdapterConfig(); + // enable adapter + config.common.enabled = true; + config.common.loglevel = 'debug'; + config.native.key = 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'; + + //config.native.dbtype = 'sqlite'; + + setup.setAdapterConfig(config.common, config.native); + + setup.startController(true, function (id, obj) { + }, function (id, state) { + if (onStateChanged) onStateChanged(id, state); + }, + function (_objects, _states) { + objects = _objects; + states = _states; + gw = new GW(); + gw.init(); + _done(); + }); + }); + }); + + it('Test ' + adapterShortName + ' instance object: it must exists', function (done) { + objects.getObject('system.adapter.' + adapterShortName + '.0', function (err, obj) { + expect(err).to.be.null; + expect(obj).to.be.an('object'); + expect(obj).not.to.be.null; + done(); + }); + }); + + it('Test ' + adapterShortName + ' adapter: Check if adapter started', function (done) { + this.timeout(60000); + checkConnectionOfAdapter(function (res) { + if (res) console.log(res); + if (runningMode === 'daemon') { + expect(res).not.to.be.equal('Cannot check connection'); + } else { + //?? + } + done(); + }); + }); + + it('Test ' + adapterShortName + ' adapter: must connect', function (done) { + this.timeout(5000); + setTimeout(function () { + states.getState(adapterShortName + '.0.info.connection', function (err, state) { + expect(err).to.be.not.ok; + expect(state.val).to.be.equal(true); + done(); + }); + }, 3000); + }); + + it('Test ' + adapterShortName + ' adapter: states must exist', function (done) { + this.timeout(5000); + var cnt = 0; + for (var __id in checkStates) { + if (checkStates.hasOwnProperty(__id)) cnt++; + } + for (var id in checkStates) { + if (!checkStates.hasOwnProperty(id)) continue; + (function (_id, checkState) { + states.getState(_id, function (err, state) { + expect(err).to.be.not.ok; + if (!state) { + console.error('cannot find ' + _id); + } + expect(state.val).to.be.equal(checkState.val); + expect(state.ack).to.be.equal(checkState.ack); + console.log('Check ' + _id); + if (!--cnt) { + done(); + } + }); + })(id, checkStates[id]); + } + }); + /* + it('Test ' + adapterShortName + ' adapter: control should work', (done) => { + states.setState('mihome.0.devices.gateway_81726387164871.on', true, err => { + expect(err).to.be.not.ok; + }); + }).timeout(5000); +*/ + it('Test ' + adapterShortName + ' adapter: detect disconnect', function (done) { + this.timeout(30000); + gw.destroy(); + setTimeout(function () { + states.getState(adapterShortName + '.0.info.connection', function (err, state) { + expect(err).to.be.not.ok; + expect(state.val).to.be.equal(false); + done(); + }); + }, 21000); + }); + + after('Test ' + adapterShortName + ' adapter: Stop js-controller', function (done) { + this.timeout(10000); + setup.stopController(function (normalTerminated) { + console.log('Adapter normal terminated: ' + normalTerminated); + done(); + }); + }); +}); \ No newline at end of file diff --git a/test/testPackageFiles.js b/test/testPackageFiles.js new file mode 100644 index 0000000..d0759c0 --- /dev/null +++ b/test/testPackageFiles.js @@ -0,0 +1,91 @@ +/* jshint -W097 */ +/* jshint strict:false */ +/* jslint node: true */ +/* jshint expr: true */ +var expect = require('chai').expect; +var fs = require('fs'); + +describe('Test package.json and io-package.json', function() { + it('Test package files', function (done) { + console.log(); + + var fileContentIOPackage = fs.readFileSync(__dirname + '/../io-package.json', 'utf8'); + var ioPackage = JSON.parse(fileContentIOPackage); + + var fileContentNPMPackage = fs.readFileSync(__dirname + '/../package.json', 'utf8'); + var npmPackage = JSON.parse(fileContentNPMPackage); + + expect(ioPackage).to.be.an('object'); + expect(npmPackage).to.be.an('object'); + + expect(ioPackage.common.version, 'ERROR: Version number in io-package.json needs to exist').to.exist; + expect(npmPackage.version, 'ERROR: Version number in package.json needs to exist').to.exist; + + expect(ioPackage.common.version, 'ERROR: Version numbers in package.json and io-package.json needs to match').to.be.equal(npmPackage.version); + + if (!ioPackage.common.news || !ioPackage.common.news[ioPackage.common.version]) { + console.log('WARNING: No news entry for current version exists in io-package.json, no rollback in Admin possible!'); + console.log(); + } + + expect(npmPackage.author, 'ERROR: Author in package.json needs to exist').to.exist; + expect(ioPackage.common.authors, 'ERROR: Authors in io-package.json needs to exist').to.exist; + + if (ioPackage.common.name.indexOf('template') !== 0) { + if (Array.isArray(ioPackage.common.authors)) { + expect(ioPackage.common.authors.length, 'ERROR: Author in io-package.json needs to be set').to.not.be.equal(0); + if (ioPackage.common.authors.length === 1) { + expect(ioPackage.common.authors[0], 'ERROR: Author in io-package.json needs to be a real name').to.not.be.equal('my Name '); + } + } + else { + expect(ioPackage.common.authors, 'ERROR: Author in io-package.json needs to be a real name').to.not.be.equal('my Name '); + } + } + else { + console.log('WARNING: Testing for set authors field in io-package skipped because template adapter'); + console.log(); + } + expect(fs.existsSync(__dirname + '/../README.md'), 'ERROR: README.md needs to exist! Please create one with description, detail information and changelog. English is mandatory.').to.be.true; + if (!ioPackage.common.titleLang || typeof ioPackage.common.titleLang !== 'object') { + console.log('WARNING: titleLang is not existing in io-package.json. Please add'); + console.log(); + } + if ( + ioPackage.common.title.indexOf('yunkong2') !== -1 || + ioPackage.common.title.indexOf('yunkong2') !== -1 || + ioPackage.common.title.indexOf('adapter') !== -1 || + ioPackage.common.title.indexOf('Adapter') !== -1 + ) { + console.log('WARNING: title contains Adapter or yunkong2. It is clear anyway, that it is adapter for yunkong2.'); + console.log(); + } + + if (ioPackage.common.name.indexOf('vis-') !== 0) { + if (!ioPackage.common.materialize || !fs.existsSync(__dirname + '/../admin/index_m.html') || !fs.existsSync(__dirname + '/../gulpfile.js')) { + console.log('WARNING: Admin3 support is missing! Please add it'); + console.log(); + } + if (ioPackage.common.materialize) { + expect(fs.existsSync(__dirname + '/../admin/index_m.html'), 'Admin3 support is enabled in io-package.json, but index_m.html is missing!').to.be.true; + } + } + + var licenseFileExists = fs.existsSync(__dirname + '/../LICENSE'); + var fileContentReadme = fs.readFileSync(__dirname + '/../README.md', 'utf8'); + if (fileContentReadme.indexOf('## Changelog') === -1) { + console.log('Warning: The README.md should have a section ## Changelog'); + console.log(); + } + expect((licenseFileExists || fileContentReadme.indexOf('## License') !== -1), 'A LICENSE must exist as LICENSE file or as part of the README.md').to.be.true; + if (!licenseFileExists) { + console.log('Warning: The License should also exist as LICENSE file'); + console.log(); + } + if (fileContentReadme.indexOf('## License') === -1) { + console.log('Warning: The README.md should also have a section ## License to be shown in Admin3'); + console.log(); + } + done(); + }); +});