From 12fdc96d208ecf05579df12dabd406e7aa50b3ad Mon Sep 17 00:00:00 2001 From: Alexander Mescheryakov Date: Tue, 29 Jun 2021 12:37:08 +0300 Subject: [PATCH] init --- .README.j2 | 157 ++ .addons.yml | 163 ++ .github/CODEOWNERS | 1 + .github/CODE_OF_CONDUCT.md | 133 ++ .github/CONTRIBUTING.md | 29 + .github/ISSUE_TEMPLATE.md | 20 + .github/PULL_REQUEST_TEMPLATE.md | 9 + .github/SECURITY.md | 1839 +++++++++++++++++ .github/dependabot.yaml | 13 + .github/labels.yml | 85 + .github/workflows/labels.yaml | 22 + .github/workflows/lint.yaml | 33 + .github/workflows/lock.yaml | 21 + .github/workflows/repository-updater.yaml | 54 + .github/workflows/stale.yaml | 40 + .github/workflows/translations-download.yaml | 75 + .github/workflows/translations-upload.yaml | 53 + .gitignore | 14 + .idea/.gitignore | 8 + .idea/gitlab-quickmr.xml | 11 + .idea/inspectionProfiles/Project_Default.xml | 27 + .../inspectionProfiles/profiles_settings.xml | 6 + .idea/misc.xml | 7 + .idea/modules.xml | 8 + .idea/repository-master.iml | 10 + .idea/vcs.xml | 6 + .mdlrc | 1 + .yamllint | 66 + LICENSE.md | 21 + READM1E.md | 0 README.md | 1046 ++++++++++ aircast/CHANGELOG.md | 15 + aircast/DOCS.md | 231 +++ aircast/README.md | 34 + aircast/config.json | 33 + aircast/icon.png | Bin 0 -> 2439 bytes aircast/logo.png | Bin 0 -> 11823 bytes aircast/translations/en.yaml | 29 + airsonos/CHANGELOG.md | 15 + airsonos/DOCS.md | 245 +++ airsonos/README.md | 37 + airsonos/config.json | 35 + airsonos/icon.png | Bin 0 -> 2521 bytes airsonos/logo.png | Bin 0 -> 45358 bytes airsonos/translations/en.yaml | 33 + appdaemon/CHANGELOG.md | 11 + appdaemon/DOCS.md | 221 ++ appdaemon/README.md | 34 + appdaemon/config.json | 47 + appdaemon/icon.png | Bin 0 -> 562 bytes appdaemon/logo.png | Bin 0 -> 10214 bytes appdaemon/translations/de.yaml | 15 + appdaemon/translations/en.yaml | 23 + appdaemon/translations/nl.yaml | 15 + asterisk/CHANGELOG.md | 3 + asterisk/DOCS.md | 19 + asterisk/Dockerfile | 10 + asterisk/README.md | 26 + asterisk/build.json | 9 + asterisk/config.json | 36 + asterisk/icon.png | Bin 0 -> 13166 bytes asterisk/logo.png | Bin 0 -> 41066 bytes asterisk/root/etc/asterisk/asterisk.conf | 13 + asterisk/root/etc/asterisk/extensions.conf | 5 + asterisk/root/etc/asterisk/modules.conf | 56 + asterisk/root/etc/asterisk/pjsip.conf | 22 + .../etc/cont-init.d/setup-config-files.sh | 13 + asterisk/root/etc/fix-attrs.d/sample-sound | 1 + asterisk/root/etc/services.d/asterisk/run | 8 + build-site.sh | 33 + chrony/CHANGELOG.md | 15 + chrony/DOCS.md | 144 ++ chrony/README.md | 25 + chrony/config.json | 45 + chrony/icon.png | Bin 0 -> 16393 bytes chrony/logo.png | Bin 0 -> 7573 bytes cloudcommander/CHANGELOG.md | 42 + cloudcommander/Dockerfile | 39 + cloudcommander/README.md | 28 + cloudcommander/apparmor.txt | 48 + cloudcommander/config.json | 38 + cloudcommander/icon.png | Bin 0 -> 19300 bytes cloudcommander/logo.png | Bin 0 -> 19300 bytes cloudcommander/run.sh | 134 ++ emby/CHANGELOG.md | 94 + emby/Dockerfile | 80 + emby/README.md | 38 + emby/apparmor.txt | 49 + emby/build.json | 8 + emby/config.json | 60 + emby/icon.png | Bin 0 -> 63481 bytes emby/logo.png | Bin 0 -> 63481 bytes emby/root/etc/cont-init.d/00-banner.sh | 39 + emby/root/etc/cont-init.d/00-ha-env | 5 + emby/root/etc/cont-init.d/20-folders | 82 + .../etc/cont-init.d/92-local_mounts_v1.2.sh | 27 + .../etc/cont-init.d/92-smb_mounts_v1.3.sh | 62 + esphome/CHANGELOG.md | 1 + esphome/DOCS.md | 81 + esphome/README.md | 40 + esphome/config.json | 43 + esphome/icon.png | Bin 0 -> 3013 bytes esphome/logo.png | Bin 0 -> 11478 bytes example/CHANGELOG.md | 24 + example/DOCS.md | 132 ++ example/README.md | 41 + example/config.json | 24 + example/icon.png | Bin 0 -> 3946 bytes example/logo.png | Bin 0 -> 133153 bytes example/translations/de.yaml | 7 + example/translations/en.yaml | 10 + example/translations/nl.yaml | 7 + git-exporter/CHANGELOG.md | 134 ++ git-exporter/DOCS.md | 106 + git-exporter/Dockerfile | 31 + git-exporter/README.md | 53 + git-exporter/build.json | 9 + git-exporter/config.json | 75 + git-exporter/icon.png | Bin 0 -> 18294 bytes git-exporter/logo.png | Bin 0 -> 14593 bytes git-exporter/root/run.sh | 196 ++ git-exporter/root/utils/jsonToYaml.py | 31 + glances/CHANGELOG.md | 19 + glances/DOCS.md | 236 +++ glances/README.md | 35 + glances/config.json | 81 + glances/icon.png | Bin 0 -> 8535 bytes glances/logo.png | Bin 0 -> 24008 bytes grafana/CHANGELOG.md | 5 + grafana/DOCS.md | 215 ++ grafana/README.md | 39 + grafana/config.json | 52 + grafana/icon.png | Bin 0 -> 9704 bytes grafana/logo.png | Bin 0 -> 3396 bytes influxdb/CHANGELOG.md | 8 + influxdb/DOCS.md | 234 +++ influxdb/README.md | 39 + influxdb/config.json | 57 + influxdb/icon.png | Bin 0 -> 18345 bytes influxdb/logo.png | Bin 0 -> 15428 bytes jupyterlab/CHANGELOG.md | 16 + jupyterlab/DOCS.md | 171 ++ jupyterlab/README.md | 40 + jupyterlab/config.json | 34 + jupyterlab/icon.png | Bin 0 -> 4678 bytes jupyterlab/logo.png | Bin 0 -> 17809 bytes log-viewer/CHANGELOG.md | 24 + log-viewer/DOCS.md | 155 ++ log-viewer/README.md | 25 + log-viewer/config.json | 44 + log-viewer/icon.png | Bin 0 -> 9546 bytes log-viewer/logo.png | Bin 0 -> 9546 bytes log-viewer/translations/en.yaml | 22 + matrix/CHANGELOG.md | 17 + matrix/DOCS.md | 167 ++ matrix/README.md | 31 + matrix/config.json | 53 + matrix/icon.png | Bin 0 -> 2295 bytes matrix/logo.png | Bin 0 -> 2369 bytes mkdocs.yml | 74 + motioneye/CHANGELOG.md | 24 + motioneye/DOCS.md | 196 ++ motioneye/README.md | 42 + motioneye/config.json | 62 + motioneye/icon.png | Bin 0 -> 6527 bytes motioneye/logo.png | Bin 0 -> 4864 bytes motioneye/translations/de.yaml | 21 + motioneye/translations/en.yaml | 31 + motioneye/translations/nl.yaml | 21 + mqtt/CHANGELOG.md | 26 + mqtt/README.md | 44 + mqtt/config.json | 82 + mqtt/icon.png | Bin 0 -> 15147 bytes mqtt/logo.png | Bin 0 -> 15147 bytes netlify.toml | 3 + nginxproxymanager/CHANGELOG.md | 29 + nginxproxymanager/DOCS.md | 149 ++ nginxproxymanager/README.md | 43 + nginxproxymanager/config.json | 39 + nginxproxymanager/icon.png | Bin 0 -> 10076 bytes nginxproxymanager/logo.png | Bin 0 -> 4895 bytes nginxproxymanager/translations/en.yaml | 14 + portainer/CHANGELOG.md | 15 + portainer/DOCS.md | 145 ++ portainer/README.md | 43 + portainer/config.json | 36 + portainer/icon.png | Bin 0 -> 4765 bytes portainer/logo.png | Bin 0 -> 30960 bytes portainer/translations/en.yaml | 13 + qbittorrent/CHANGELOG.md | 95 + qbittorrent/Dockerfile | 107 + qbittorrent/README.md | 61 + qbittorrent/apparmor.txt | 50 + qbittorrent/build.json | 8 + qbittorrent/config.json | 85 + qbittorrent/icon.png | Bin 0 -> 57069 bytes qbittorrent/logo.png | Bin 0 -> 57069 bytes .../rootfs/etc/cont-init.d/00-banner.sh | 39 + .../rootfs/etc/cont-init.d/30-nginx.sh | 38 + .../rootfs/etc/cont-init.d/90-dns_set_1.1.sh | 28 + .../91-qbittorrent_configuration.sh | 128 ++ .../etc/cont-init.d/92-smb_mounts_v1.3.sh | 62 + .../rootfs/etc/cont-init.d/93-openvpn.sh | 83 + .../rootfs/etc/nginx/includes/mime.types | 96 + .../etc/nginx/includes/proxy_params.conf | 15 + .../rootfs/etc/nginx/includes/resolver.conf | 1 + .../etc/nginx/includes/server_params.conf | 6 + .../rootfs/etc/nginx/includes/ssl_params.conf | 9 + .../rootfs/etc/nginx/includes/upstream.conf | 3 + qbittorrent/rootfs/etc/nginx/nginx.conf | 56 + qbittorrent/rootfs/etc/nginx/servers/.gitkeep | 1 + .../rootfs/etc/nginx/templates/ingress.gtpl | 17 + qbittorrent/rootfs/etc/openvpn/down.sh | 33 + .../rootfs/etc/openvpn/up-qbittorrent.sh | 5 + qbittorrent/rootfs/etc/openvpn/up.sh | 94 + .../rootfs/etc/services.d/nginx/finish | 8 + qbittorrent/rootfs/etc/services.d/nginx/run | 9 + .../rootfs/etc/services.d/qbittorrent/finish | 8 + .../rootfs/etc/services.d/qbittorrent/run | 9 + repository.json | 5 + requirements.txt | 2 + rsync-local/CHANGELOG.md | 20 + rsync-local/DOCS.md | 45 + rsync-local/Dockerfile | 12 + rsync-local/README.md | 25 + rsync-local/build.json | 9 + rsync-local/config.json | 48 + rsync-local/icon.png | Bin 0 -> 14007 bytes rsync-local/logo.png | Bin 0 -> 24358 bytes rsync-local/run.sh | 41 + rsync/CHANGELOG.md | 28 + rsync/DOCS.md | 58 + rsync/Dockerfile | 13 + rsync/README.md | 26 + rsync/build.json | 9 + rsync/config.json | 45 + rsync/icon.png | Bin 0 -> 14007 bytes rsync/logo.png | Bin 0 -> 21249 bytes rsync/run.sh | 46 + runtime.txt | 1 + spotify/CHANGELOG.md | 14 + spotify/DOCS.md | 164 ++ spotify/README.md | 38 + spotify/config.json | 34 + spotify/icon.png | Bin 0 -> 6424 bytes spotify/logo.png | Bin 0 -> 12795 bytes sqlite-web/CHANGELOG.md | 19 + sqlite-web/DOCS.md | 91 + sqlite-web/README.md | 27 + sqlite-web/config.json | 21 + sqlite-web/icon.png | Bin 0 -> 6724 bytes sqlite-web/logo.png | Bin 0 -> 33179 bytes syncthing/CHANGELOG.md | 78 + syncthing/Dockerfile | 9 + syncthing/README.md | 39 + syncthing/build.json | 9 + syncthing/config.json | 39 + syncthing/icon.png | Bin 0 -> 47791 bytes syncthing/logo.png | Bin 0 -> 91573 bytes syncthing/root/etc/cont-init.d/setup-config | 5 + syncthing/root/etc/services.d/syncthing/run | 10 + tor/CHANGELOG.md | 14 + tor/DOCS.md | 256 +++ tor/README.md | 47 + tor/config.json | 47 + tor/icon.png | Bin 0 -> 4757 bytes tor/logo.png | Bin 0 -> 83269 bytes traccar/CHANGELOG.md | 15 + traccar/DOCS.md | 182 ++ traccar/README.md | 45 + traccar/config.json | 45 + traccar/icon.png | Bin 0 -> 3993 bytes traccar/logo.png | Bin 0 -> 16903 bytes traccar/translations/de.yaml | 15 + traccar/translations/en.yaml | 22 + traccar/translations/nl.yaml | 15 + vscode/CHANGELOG.md | 10 + vscode/DOCS.md | 220 ++ vscode/README.md | 40 + vscode/config.json | 47 + vscode/icon.png | Bin 0 -> 4604 bytes vscode/logo.png | Bin 0 -> 62695 bytes 282 files changed, 13627 insertions(+) create mode 100644 .README.j2 create mode 100644 .addons.yml create mode 100644 .github/CODEOWNERS create mode 100644 .github/CODE_OF_CONDUCT.md create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/SECURITY.md create mode 100644 .github/dependabot.yaml create mode 100644 .github/labels.yml create mode 100644 .github/workflows/labels.yaml create mode 100644 .github/workflows/lint.yaml create mode 100644 .github/workflows/lock.yaml create mode 100644 .github/workflows/repository-updater.yaml create mode 100644 .github/workflows/stale.yaml create mode 100644 .github/workflows/translations-download.yaml create mode 100644 .github/workflows/translations-upload.yaml create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/gitlab-quickmr.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/repository-master.iml create mode 100644 .idea/vcs.xml create mode 100644 .mdlrc create mode 100644 .yamllint create mode 100644 LICENSE.md create mode 100644 READM1E.md create mode 100644 README.md create mode 100644 aircast/CHANGELOG.md create mode 100644 aircast/DOCS.md create mode 100644 aircast/README.md create mode 100644 aircast/config.json create mode 100644 aircast/icon.png create mode 100644 aircast/logo.png create mode 100644 aircast/translations/en.yaml create mode 100644 airsonos/CHANGELOG.md create mode 100644 airsonos/DOCS.md create mode 100644 airsonos/README.md create mode 100644 airsonos/config.json create mode 100644 airsonos/icon.png create mode 100644 airsonos/logo.png create mode 100644 airsonos/translations/en.yaml create mode 100644 appdaemon/CHANGELOG.md create mode 100644 appdaemon/DOCS.md create mode 100644 appdaemon/README.md create mode 100644 appdaemon/config.json create mode 100644 appdaemon/icon.png create mode 100644 appdaemon/logo.png create mode 100644 appdaemon/translations/de.yaml create mode 100644 appdaemon/translations/en.yaml create mode 100644 appdaemon/translations/nl.yaml create mode 100644 asterisk/CHANGELOG.md create mode 100644 asterisk/DOCS.md create mode 100644 asterisk/Dockerfile create mode 100644 asterisk/README.md create mode 100644 asterisk/build.json create mode 100644 asterisk/config.json create mode 100755 asterisk/icon.png create mode 100755 asterisk/logo.png create mode 100644 asterisk/root/etc/asterisk/asterisk.conf create mode 100644 asterisk/root/etc/asterisk/extensions.conf create mode 100644 asterisk/root/etc/asterisk/modules.conf create mode 100644 asterisk/root/etc/asterisk/pjsip.conf create mode 100644 asterisk/root/etc/cont-init.d/setup-config-files.sh create mode 100644 asterisk/root/etc/fix-attrs.d/sample-sound create mode 100644 asterisk/root/etc/services.d/asterisk/run create mode 100755 build-site.sh create mode 100644 chrony/CHANGELOG.md create mode 100644 chrony/DOCS.md create mode 100644 chrony/README.md create mode 100644 chrony/config.json create mode 100644 chrony/icon.png create mode 100644 chrony/logo.png create mode 100644 cloudcommander/CHANGELOG.md create mode 100644 cloudcommander/Dockerfile create mode 100644 cloudcommander/README.md create mode 100644 cloudcommander/apparmor.txt create mode 100644 cloudcommander/config.json create mode 100644 cloudcommander/icon.png create mode 100644 cloudcommander/logo.png create mode 100644 cloudcommander/run.sh create mode 100644 emby/CHANGELOG.md create mode 100644 emby/Dockerfile create mode 100644 emby/README.md create mode 100644 emby/apparmor.txt create mode 100644 emby/build.json create mode 100644 emby/config.json create mode 100644 emby/icon.png create mode 100644 emby/logo.png create mode 100644 emby/root/etc/cont-init.d/00-banner.sh create mode 100644 emby/root/etc/cont-init.d/00-ha-env create mode 100644 emby/root/etc/cont-init.d/20-folders create mode 100644 emby/root/etc/cont-init.d/92-local_mounts_v1.2.sh create mode 100644 emby/root/etc/cont-init.d/92-smb_mounts_v1.3.sh create mode 100644 esphome/CHANGELOG.md create mode 100644 esphome/DOCS.md create mode 100644 esphome/README.md create mode 100644 esphome/config.json create mode 100644 esphome/icon.png create mode 100644 esphome/logo.png create mode 100644 example/CHANGELOG.md create mode 100644 example/DOCS.md create mode 100644 example/README.md create mode 100644 example/config.json create mode 100644 example/icon.png create mode 100644 example/logo.png create mode 100644 example/translations/de.yaml create mode 100644 example/translations/en.yaml create mode 100644 example/translations/nl.yaml create mode 100644 git-exporter/CHANGELOG.md create mode 100644 git-exporter/DOCS.md create mode 100644 git-exporter/Dockerfile create mode 100644 git-exporter/README.md create mode 100644 git-exporter/build.json create mode 100644 git-exporter/config.json create mode 100644 git-exporter/icon.png create mode 100644 git-exporter/logo.png create mode 100644 git-exporter/root/run.sh create mode 100644 git-exporter/root/utils/jsonToYaml.py create mode 100644 glances/CHANGELOG.md create mode 100644 glances/DOCS.md create mode 100644 glances/README.md create mode 100644 glances/config.json create mode 100644 glances/icon.png create mode 100644 glances/logo.png create mode 100644 grafana/CHANGELOG.md create mode 100644 grafana/DOCS.md create mode 100644 grafana/README.md create mode 100644 grafana/config.json create mode 100644 grafana/icon.png create mode 100644 grafana/logo.png create mode 100644 influxdb/CHANGELOG.md create mode 100644 influxdb/DOCS.md create mode 100644 influxdb/README.md create mode 100644 influxdb/config.json create mode 100644 influxdb/icon.png create mode 100644 influxdb/logo.png create mode 100644 jupyterlab/CHANGELOG.md create mode 100644 jupyterlab/DOCS.md create mode 100644 jupyterlab/README.md create mode 100644 jupyterlab/config.json create mode 100644 jupyterlab/icon.png create mode 100644 jupyterlab/logo.png create mode 100644 log-viewer/CHANGELOG.md create mode 100644 log-viewer/DOCS.md create mode 100644 log-viewer/README.md create mode 100644 log-viewer/config.json create mode 100644 log-viewer/icon.png create mode 100644 log-viewer/logo.png create mode 100644 log-viewer/translations/en.yaml create mode 100644 matrix/CHANGELOG.md create mode 100644 matrix/DOCS.md create mode 100644 matrix/README.md create mode 100644 matrix/config.json create mode 100644 matrix/icon.png create mode 100644 matrix/logo.png create mode 100644 mkdocs.yml create mode 100644 motioneye/CHANGELOG.md create mode 100644 motioneye/DOCS.md create mode 100644 motioneye/README.md create mode 100644 motioneye/config.json create mode 100644 motioneye/icon.png create mode 100644 motioneye/logo.png create mode 100644 motioneye/translations/de.yaml create mode 100644 motioneye/translations/en.yaml create mode 100644 motioneye/translations/nl.yaml create mode 100644 mqtt/CHANGELOG.md create mode 100644 mqtt/README.md create mode 100644 mqtt/config.json create mode 100644 mqtt/icon.png create mode 100644 mqtt/logo.png create mode 100644 netlify.toml create mode 100644 nginxproxymanager/CHANGELOG.md create mode 100644 nginxproxymanager/DOCS.md create mode 100644 nginxproxymanager/README.md create mode 100644 nginxproxymanager/config.json create mode 100644 nginxproxymanager/icon.png create mode 100644 nginxproxymanager/logo.png create mode 100644 nginxproxymanager/translations/en.yaml create mode 100644 portainer/CHANGELOG.md create mode 100644 portainer/DOCS.md create mode 100644 portainer/README.md create mode 100644 portainer/config.json create mode 100644 portainer/icon.png create mode 100644 portainer/logo.png create mode 100644 portainer/translations/en.yaml create mode 100644 qbittorrent/CHANGELOG.md create mode 100644 qbittorrent/Dockerfile create mode 100644 qbittorrent/README.md create mode 100644 qbittorrent/apparmor.txt create mode 100644 qbittorrent/build.json create mode 100644 qbittorrent/config.json create mode 100644 qbittorrent/icon.png create mode 100644 qbittorrent/logo.png create mode 100644 qbittorrent/rootfs/etc/cont-init.d/00-banner.sh create mode 100644 qbittorrent/rootfs/etc/cont-init.d/30-nginx.sh create mode 100644 qbittorrent/rootfs/etc/cont-init.d/90-dns_set_1.1.sh create mode 100644 qbittorrent/rootfs/etc/cont-init.d/91-qbittorrent_configuration.sh create mode 100644 qbittorrent/rootfs/etc/cont-init.d/92-smb_mounts_v1.3.sh create mode 100644 qbittorrent/rootfs/etc/cont-init.d/93-openvpn.sh create mode 100644 qbittorrent/rootfs/etc/nginx/includes/mime.types create mode 100644 qbittorrent/rootfs/etc/nginx/includes/proxy_params.conf create mode 100644 qbittorrent/rootfs/etc/nginx/includes/resolver.conf create mode 100644 qbittorrent/rootfs/etc/nginx/includes/server_params.conf create mode 100644 qbittorrent/rootfs/etc/nginx/includes/ssl_params.conf create mode 100644 qbittorrent/rootfs/etc/nginx/includes/upstream.conf create mode 100644 qbittorrent/rootfs/etc/nginx/nginx.conf create mode 100644 qbittorrent/rootfs/etc/nginx/servers/.gitkeep create mode 100644 qbittorrent/rootfs/etc/nginx/templates/ingress.gtpl create mode 100644 qbittorrent/rootfs/etc/openvpn/down.sh create mode 100644 qbittorrent/rootfs/etc/openvpn/up-qbittorrent.sh create mode 100644 qbittorrent/rootfs/etc/openvpn/up.sh create mode 100644 qbittorrent/rootfs/etc/services.d/nginx/finish create mode 100644 qbittorrent/rootfs/etc/services.d/nginx/run create mode 100644 qbittorrent/rootfs/etc/services.d/qbittorrent/finish create mode 100644 qbittorrent/rootfs/etc/services.d/qbittorrent/run create mode 100644 repository.json create mode 100644 requirements.txt create mode 100644 rsync-local/CHANGELOG.md create mode 100644 rsync-local/DOCS.md create mode 100644 rsync-local/Dockerfile create mode 100644 rsync-local/README.md create mode 100644 rsync-local/build.json create mode 100644 rsync-local/config.json create mode 100644 rsync-local/icon.png create mode 100644 rsync-local/logo.png create mode 100644 rsync-local/run.sh create mode 100644 rsync/CHANGELOG.md create mode 100644 rsync/DOCS.md create mode 100644 rsync/Dockerfile create mode 100644 rsync/README.md create mode 100644 rsync/build.json create mode 100644 rsync/config.json create mode 100644 rsync/icon.png create mode 100644 rsync/logo.png create mode 100644 rsync/run.sh create mode 100644 runtime.txt create mode 100644 spotify/CHANGELOG.md create mode 100644 spotify/DOCS.md create mode 100644 spotify/README.md create mode 100644 spotify/config.json create mode 100644 spotify/icon.png create mode 100644 spotify/logo.png create mode 100644 sqlite-web/CHANGELOG.md create mode 100644 sqlite-web/DOCS.md create mode 100644 sqlite-web/README.md create mode 100644 sqlite-web/config.json create mode 100644 sqlite-web/icon.png create mode 100644 sqlite-web/logo.png create mode 100644 syncthing/CHANGELOG.md create mode 100644 syncthing/Dockerfile create mode 100644 syncthing/README.md create mode 100644 syncthing/build.json create mode 100644 syncthing/config.json create mode 100644 syncthing/icon.png create mode 100644 syncthing/logo.png create mode 100644 syncthing/root/etc/cont-init.d/setup-config create mode 100644 syncthing/root/etc/services.d/syncthing/run create mode 100644 tor/CHANGELOG.md create mode 100644 tor/DOCS.md create mode 100644 tor/README.md create mode 100644 tor/config.json create mode 100644 tor/icon.png create mode 100644 tor/logo.png create mode 100644 traccar/CHANGELOG.md create mode 100644 traccar/DOCS.md create mode 100644 traccar/README.md create mode 100644 traccar/config.json create mode 100644 traccar/icon.png create mode 100644 traccar/logo.png create mode 100644 traccar/translations/de.yaml create mode 100644 traccar/translations/en.yaml create mode 100644 traccar/translations/nl.yaml create mode 100644 vscode/CHANGELOG.md create mode 100644 vscode/DOCS.md create mode 100644 vscode/README.md create mode 100644 vscode/config.json create mode 100644 vscode/icon.png create mode 100644 vscode/logo.png diff --git a/.README.j2 b/.README.j2 new file mode 100644 index 0000000..325ea83 --- /dev/null +++ b/.README.j2 @@ -0,0 +1,157 @@ +# Home Assistant Community Add-ons + +![Project Stage][project-stage-shield] +![Maintenance][maintenance-shield] +[![License][license-shield]](LICENSE.md) + +[![Discord][discord-shield]][discord] +[![Community Forum][forum-shield]][forum] + +## About + +Home Assistant allows anyone to create add-on repositories to share their +add-ons for Home Assistant easily. This repository is one of those repositories, +providing extra Home Assistant add-ons for your installation. + +The primary goal of this project is to provide you (as a Home Assistant user) +with additional, high quality, add-ons that allow you to take your automated +home to the next level. + +## Installation + +In general, there is no need to install this repository on your +Home Assistant instance. It is activated and added by Home Assistant +by default. + +However, if the repository is missing on your setup, adding this add-ons +repository to your Home Assistant instance is pretty easy. In the +Home Assistant add-on store, a possibility to add a repository is provided. + +Use the following URL to add this repository: + +```txt +{{ repo }} +``` + +## Add-ons provided by this repository + +{% for addon in addons %} +### ✓ [{{ addon.name }}][addon-{{ addon.target }}] + +![Latest Version][{{ addon.target }}-version-shield] +![Supports armhf Architecture][{{ addon.target }}-armhf-shield] +![Supports armv7 Architecture][{{ addon.target }}-armv7-shield] +![Supports aarch64 Architecture][{{ addon.target }}-aarch64-shield] +![Supports amd64 Architecture][{{ addon.target }}-amd64-shield] +![Supports i386 Architecture][{{ addon.target }}-i386-shield] + +{{ addon.description }} + +[:books: {{ addon.name }} add-on documentation][addon-doc-{{ addon.target }}] + +{% endfor %} +## Releases + +Releases are based on [Semantic Versioning][semver], and use the format +of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented +based on the following: + +- ``MAJOR``: Incompatible or major changes. +- ``MINOR``: Backwards-compatible new features and enhancements. +- ``PATCH``: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The Home Assistant Community Add-ons [Discord Chat Server][discord] +- The Home Assistant [Community Forum][forum]. +- The Home Assistant [Discord Chat Server][discord-ha]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also open an issue here on GitHub. Note, we use a separate +GitHub repository for each add-on. Please ensure you are creating the issue +on the correct GitHub repository matching the add-on. + +{% for addon in addons %} +- [Open an issue for the add-on: {{ addon.name }}][{{ addon.target }}-issue] +{% endfor %} + +For a general repository issue or add-on ideas [open an issue here][issue] + +## Contributing + +This is an active open-source project. We are always open to people who want to +use the code or contribute to it. + +We have set up a separate document containing our +[contribution guidelines](CONTRIBUTING.md). + +Thank you for being involved! :heart_eyes: + +## Adding a new add-on + +We are currently not accepting third party add-ons to this repository. + +For questions, please contact [Franck Nijhof][frenck]: + +- Drop him an email: frenck@addons.community +- Chat with him on [Discord Chat][discord] +- Message him via the forums: [frenck][forum-frenck] + +## License + +MIT License + +Copyright (c) 2017-2021 Franck Nijhof + +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. + +{% for addon in addons %} +[addon-{{ addon.target }}]: {{ addon.repo }}/tree/{{ addon.version }} +[addon-doc-{{ addon.target}}]: {{ addon.repo }}/blob/{{ addon.version }}/README.md +[{{ addon.target }}-issue]: {{ addon.repo }}/issues +[{{ addon.target }}-version-shield]: https://img.shields.io/badge/version-{{ addon.version }}-blue.svg +{% for arch in ['aarch64', 'amd64', 'armhf', 'armv7', 'i386'] %} +{% if arch in addon.archs %} +[{{ addon.target }}-{{ arch }}-shield]: https://img.shields.io/badge/{{ arch }}-yes-green.svg +{% else %} +[{{ addon.target }}-{{ arch }}-shield]: https://img.shields.io/badge/{{ arch }}-no-red.svg +{% endif %} +{% endfor %} +{% endfor %} +[awesome-shield]: https://img.shields.io/badge/awesome%3F-yes-brightgreen.svg +[awesome]: https://awesome-ha.com +[discord-ha]: https://discord.gg/c5DvZ4e +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-frenck]: https://community.home-assistant.io/u/frenck/?u=frenck +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io?u=frenck +[frenck]: https://github.com/frenck +[gitlabci-shield]: https://gitlab.com/{{ name }}/badges/master/pipeline.svg +[gitlabci]: https://gitlab.com/{{ name }}/pipelines +[issue]: https://github.com/{{ name }}/issues +[license-shield]: https://img.shields.io/github/license/{{ name }}.svg +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[reddit]: https://reddit.com/r/homeassistant +[semver]: http://semver.org/spec/v2.0.0.html diff --git a/.addons.yml b/.addons.yml new file mode 100644 index 0000000..8e27c64 --- /dev/null +++ b/.addons.yml @@ -0,0 +1,163 @@ +--- +channel: stable +addons: + adguard: + repository: hassio-addons/addon-adguard-home + target: adguard + image: ghcr.io/hassio-addons/adguard/{arch} + aircast: + repository: hassio-addons/addon-aircast + target: aircast + image: ghcr.io/hassio-addons/aircast/{arch} + airsonos: + repository: hassio-addons/addon-airsonos + target: airsonos + image: ghcr.io/hassio-addons/airsonos/{arch} + appdaemon: + repository: hassio-addons/addon-appdaemon + target: appdaemon + image: ghcr.io/hassio-addons/appdaemon/{arch} + bitwarden: + repository: hassio-addons/addon-bitwarden + target: bitwarden + image: ghcr.io/hassio-addons/bitwarden/{arch} + bookstack: + repository: hassio-addons/addon-bookstack + target: bookstack + image: ghcr.io/hassio-addons/bookstack/{arch} + chrony: + repository: hassio-addons/addon-chrony + target: chrony + image: ghcr.io/hassio-addons/chrony/{arch} + esphome: + repository: esphome/hassio + target: esphome + image: esphome/esphome-hassio-{arch} + example: + repository: hassio-addons/addon-example + target: example + image: ghcr.io/hassio-addons/example/{arch} + foldingathome: + repository: hassio-addons/addon-foldingathome + target: foldingathome + image: ghcr.io/hassio-addons/foldingathome/{arch} + ftp: + repository: hassio-addons/addon-ftp + target: ftp + image: ghcr.io/hassio-addons/ftp/{arch} + glances: + repository: hassio-addons/addon-glances + target: glances + image: ghcr.io/hassio-addons/glances/{arch} + grafana: + repository: hassio-addons/addon-grafana + target: grafana + image: ghcr.io/hassio-addons/grafana/{arch} + grocy: + repository: hassio-addons/addon-grocy + target: grocy + image: ghcr.io/hassio-addons/grocy/{arch} + home-panel: + repository: hassio-addons/addon-home-panel + target: home-panel + image: ghcr.io/hassio-addons/home-panel/{arch} + influxdb: + repository: hassio-addons/addon-influxdb + target: influxdb + image: ghcr.io/hassio-addons/influxdb/{arch} + jupyterlab: + repository: hassio-addons/addon-jupyterlab + target: jupyterlab + image: ghcr.io/hassio-addons/jupyterlab/{arch} + log-viewer: + repository: hassio-addons/addon-log-viewer + target: log-viewer + image: ghcr.io/hassio-addons/log-viewer/{arch} + matrix: + repository: hassio-addons/addon-matrix + target: matrix + image: ghcr.io/hassio-addons/matrix/{arch} + motioneye: + repository: hassio-addons/addon-motioneye + target: motioneye + image: ghcr.io/hassio-addons/motioneye/{arch} + mqtt: + repository: hassio-addons/addon-mqtt + target: mqtt + image: hassioaddons/mqtt + node-red: + repository: hassio-addons/addon-node-red + target: node-red + image: ghcr.io/hassio-addons/node-red/{arch} + nginxproxymanager: + repository: hassio-addons/addon-nginx-proxy-manager + target: proxy-manager + image: ghcr.io/hassio-addons/nginxproxymanager/{arch} + nut: + repository: hassio-addons/addon-nut + target: nut + image: ghcr.io/hassio-addons/nut/{arch} + phpmyadmin: + repository: hassio-addons/addon-phpmyadmin + target: phpmyadmin + image: ghcr.io/hassio-addons/phpmyadmin/{arch} + plex: + repository: hassio-addons/addon-plex + target: plex + image: ghcr.io/hassio-addons/plex/{arch} + portainer: + repository: hassio-addons/addon-portainer + target: portainer + image: ghcr.io/hassio-addons/portainer/{arch} + spotify: + repository: hassio-addons/addon-spotify-connect + target: spotify + image: ghcr.io/hassio-addons/spotify/{arch} + tasmoadmin: + repository: hassio-addons/addon-tasmoadmin + target: tasmoadmin + image: ghcr.io/hassio-addons/tasmoadmin/{arch} + tautulli: + repository: hassio-addons/addon-tautulli + target: tautulli + image: ghcr.io/hassio-addons/tautulli/{arch} + thelounge: + repository: hassio-addons/addon-thelounge + target: thelounge + image: ghcr.io/hassio-addons/thelounge/{arch} + ssh: + repository: hassio-addons/addon-ssh + target: ssh + image: ghcr.io/hassio-addons/ssh/{arch} + sqlite-web: + repository: hassio-addons/addon-sqlite-web + target: sqlite-web + image: ghcr.io/hassio-addons/sqlite-web/{arch} + tor: + repository: hassio-addons/addon-tor + target: tor + image: ghcr.io/hassio-addons/tor/{arch} + traccar: + repository: hassio-addons/addon-traccar + target: traccar + image: ghcr.io/hassio-addons/traccar/{arch} + unifi: + repository: hassio-addons/addon-unifi + target: unifi + image: ghcr.io/hassio-addons/unifi/{arch} + vscode: + repository: hassio-addons/addon-vscode + target: vscode + image: ghcr.io/hassio-addons/vscode/{arch} + wireguard: + repository: hassio-addons/addon-wireguard + target: wireguard + image: ghcr.io/hassio-addons/wireguard/{arch} + zerotier: + repository: hassio-addons/addon-zerotier + target: zerotier + image: ghcr.io/hassio-addons/zerotier/{arch} + zwavejs2mqtt: + repository: hassio-addons/addon-zwavejs2mqtt + target: zwavejs2mqtt + image: ghcr.io/hassio-addons/zwavejs2mqtt/{arch} diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..771559a --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +.github/* @frenck diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..8b146f4 --- /dev/null +++ b/.github/CODE_OF_CONDUCT.md @@ -0,0 +1,133 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, or sexual identity +and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or + advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email + address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +frenck@frenck.dev. + +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +[https://www.contributor-covenant.org/version/2/0/code_of_conduct.html][v2.0]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][mozilla coc]. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq][faq]. Translations are available +at [https://www.contributor-covenant.org/translations][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.0]: https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +[mozilla coc]: https://github.com/mozilla/diversity +[faq]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..7b170ec --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,29 @@ +# Contributing + +When contributing to this repository, please first discuss the change you wish +to make via issue, email, or any other method with the owners of this repository +before making a change. + +Please note we have a code of conduct, please follow it in all your interactions +with the project. + +## Issues and feature requests + +You've found a bug in the source code, a mistake in the documentation or maybe +you'd like a new feature? You can help us by submitting an issue to our +[GitHub Repository][github]. Before you create an issue, make sure you search +the archive, maybe your question was already answered. + +Even better: You could submit a pull request with a fix / new feature! + +## Pull request process + +1. Search our repository for open or closed [pull requests][prs] that relates + to your submission. You don't want to duplicate effort. + +1. You may merge the pull request in once you have the sign-off of two other + developers, or if you do not have permission to do that, you may request + the second reviewer to merge it for you. + +[github]: https://github.com/hassio-addons/repository/issues +[prs]: https://github.com/hassio-addons/repository/pulls diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..544da8f --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,20 @@ +# Problem/Motivation + +> (Why the issue was filed) + +## Expected behavior + +> (What you expected to happen) + +## Actual behavior + +> (What actually happened) + +## Steps to reproduce + +> (How can someone else make/see it happen) + +## Proposed changes + +> (If you have a proposed change, workaround or fix, +> describe the rationale behind it) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..cbd529a --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,9 @@ +# Proposed Changes + +> (Describe the changes and rationale behind them) + +## Related Issues + +> ([Github link][autolink-references] to related issues or pull requests) + +[autolink-references]: https://help.github.com/articles/autolinked-references-and-urls/ \ No newline at end of file diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 0000000..021b03d --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,1839 @@ +# Security Policy + +I take the security of my software and services seriously. This includes +all open source software I create, maintain or help to maintain. + +If you believe you have found a security vulnerability in any repository +I maintain, including this one, please report it responsible to me as +described below. + +**Please DO NOT report security vulnerabilities publicly!** + +So... DO NOT create a GitHub issue for it ;) + +## Reporting a vulnerability + +Privately and confidently, send me a detailed description of the vulnerability +you have discovered using an encrypted and authenticated channel. Personally, +I prefer this to be done using PGP encrypted email. Contact information +needed for this is listed down below. + +In the report, please include as much information as possible, including: + +- A extensive description of the vulnerability. +- How it could be exploited. +- The potential impact you think it would have (e.g., DOS attackable, privacy + concerns, leaking of credentials). +- Steps for reproducing the vulnerability. +- Code (if any), that is needed for reproducing the issue. +- If you have an idea for a fix, patch or any other adjustment for mitigating + the vulnerability reported. + +Sorry for the long list, but providing as much information as possible allows +me to act more quickly. Make sure to write your report in the English language. + +Please take care not to violate the privacy of other people in your report. +For example, stack traces or exploit scripts sent to me should never contain +private or personally identifiable information. + +## After you have reported the vulnerability + +Give me at least a week to investigate and respond to the reported vulnerability +you have found; and up to 60 days to fix and distribute it. This includes a +window for existing users to upgrade, patch or mitigate the issue as well. + +If you intent, at any point, to disclose the vulnerability to someone else +or maybe even publicly, please give me a reasonable advanced notice. + +If any dependent projects are involved, I will take care of informing the +maintainers of those projects as well. + +## Bug bounty + +Unfortunately, I cannot offer a paid bug bounty program. I will, however, give +my best efforts to show appreciation towards people that took the time and +effort to disclose vulnerabilities responsibly. + +Me, and the open source community, will be forever grateful. + +Oh, and if we ever meet, I'm happy to buy you a beer :) + +## Contact information + +Please contact me, Franck Nijhof, directly on: + +security@frenck.dev (not for support!) + +GPG Fingerprint: `731C 60D6 80E6 E850 F31C 2E88 AB33 ADAC E710 1952` + +https://keys.openpgp.org/search?q=731C60D680E6E850F31C2E88AB33ADACE7101952 + +```txt +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +FHJUUkMAAAIMAAAAIGdUUkMAAAIsAAAAIGJUUkMAAAJMAAAAIGNocm0AAAJsAAAA +JG1sdWMAAAAAAAAAAQAAAAxlblVTAAAAHAAAABwAcwBSAEcAQgAgAGIAdQBpAGwA +dAAtAGkAbgAAbWx1YwAAAAAAAAABAAAADGVuVVMAAAAyAAAAHABOAG8AIABjAG8A +cAB5AHIAaQBnAGgAdAAsACAAdQBzAGUAIABmAHIAZQBlAGwAeQAAAABYWVogAAAA +AAAA9tYAAQAAAADTLXNmMzIAAAAAAAEMSgAABeP///MqAAAHmwAA/Yf///ui///9 +owAAA9gAAMCUWFlaIAAAAAAAAG+UAAA47gAAA5BYWVogAAAAAAAAJJ0AAA+DAAC2 +vlhZWiAAAAAAAABipQAAt5AAABjecGFyYQAAAAAAAwAAAAJmZgAA8qcAAA1ZAAAT +0AAACltwYXJhAAAAAAADAAAAAmZmAADypwAADVkAABPQAAAKW3BhcmEAAAAAAAMA +AAACZmYAAPKnAAANWQAAE9AAAApbY2hybQAAAAAAAwAAAACj1wAAVHsAAEzNAACZ +mgAAJmYAAA9c/8AAEQgAgACAAwESAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAA +AAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNR +YQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZH +SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Sl +pqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX2 +9/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQE +AwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoW +JDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2 +d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJ +ytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMACAYGBwYFCAcHBwkJCAoM +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 +73QnlXw4/oDrjt/ZPD2SY9spk8ApQzQbKKSRuGxzZU8irDS5tLtYR9z4j1ulJGWm +j3GvuZjjXSxHy1dwOo8ph2N7b5nmzruXH1wjgppZ48hOcLn/z1dghvh4M8eBvoho +HElMD+bgudYsKEAwQMjPcIbjM+USR9BGSLQ3RnJhbmNrIE5pamhvZiAoRGVhbGVy +RGlyZWN0KSA8Zi5uaWpob2ZAZGVhbGVyZGlyZWN0Lm5sPokCVAQTAQoAPgIbAwIe +AQIXgAULCQgHAwUVCgkICwUWAgMBABYhBHMcYNaA5uhQ8xwuiKszraznEBlSBQJg +eyeWBQkMLyuoAAoJEKszraznEBlSKNkQAKk9a6khEhDigwZWByPcNuv29uNB0m4C +TMKP5kmUXCf1rJcMFc7rxC1JrDiSKUJpeNRJLly4ltp3D3hIt0dWU928CAeHzD9k +veNJZMqA+KLRkjOQt3mQlsWhPN3gCN/oatrVzvchTGInuD5DQj1suPNCCoohgAIR +z248TyTr34cLN16ehAI4PHq9ZL6+V0CbM5a36Dp5nVHtDQQOqUTQzRUGcbQdYtFg +txs9mnODJRt91ykkKi2CBkZP4yzzjdXyAT/2JFBNk/wPNUkHSLZsN5xDwRw44KUG +GqsL4ALMFYv/ITM6lTDDdQyo9g7DOUy36yhpo5nyka+vuvQxeTQouJ4mytaM+5fV +nYd8PGqm+YI9EYKXpWdd55ycVrkD7qGwRPD6OROyn7sLldC6L5HhbexRNywM1qnp +DLd1upPn2LwnqUB4P9W56NxAeVlTrYP2JyZ/1KjtmdmsRnlDv6SIWv+GwLKaVgCr +j0YuAbk4BWQNhEVm38O9vYQPr0ti4A75t6EuHjMc1xrlpTwdMQ30hTu/M3hV6V/P +sLN/YnVVIYvYsokOvPMd5fikOek+CUcxHIkmW1sp5ryDvUDC3wfIXvl70wWsmeU9 +4tN7TJczPIqOynRuNE3nUMMdtrxdU95Auh5BIdFANQNud1SX+E1UCKfs4VIIxNW6 +wNgrzyErU8g5iQIcBBABAgAGBQJYPYAyAAoJEE5+WcG+PB5Y+JUP/0fnrZbh/2uO +vflSKUwb8kt4B2OYsZLdtql5L8ou/go2x6tMV+ciUSq8YkmlhCNzp5up/Qt4iRlo +C/MCAGo3v3Y//65xCz16WoLugXVpQSl3YvGS7dq66b0kPiVEhs67S2dzymG3uvm7 +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 +ebj4joK8GrVwV3oQvb0oWg== +=dRLN +-----END PGP PUBLIC KEY BLOCK----- +``` diff --git a/.github/dependabot.yaml b/.github/dependabot.yaml new file mode 100644 index 0000000..2af0a68 --- /dev/null +++ b/.github/dependabot.yaml @@ -0,0 +1,13 @@ +--- +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: daily + time: "06:00" + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: daily + time: "06:00" diff --git a/.github/labels.yml b/.github/labels.yml new file mode 100644 index 0000000..2d0f68a --- /dev/null +++ b/.github/labels.yml @@ -0,0 +1,85 @@ +--- +- name: "breaking-change" + color: ee0701 + description: "A breaking change for existing users." +- name: "bugfix" + color: ee0701 + description: "Inconsistencies or issues which will cause a problem for users or implementors." +- name: "documentation" + color: 0052cc + description: "Solely about the documentation of the project." +- name: "enhancement" + color: 1d76db + description: "Enhancement of the code, not introducing new features." +- name: "refactor" + color: 1d76db + description: "Improvement of existing code, not introducing new features." +- name: "performance" + color: 1d76db + description: "Improving performance, not introducing new features." +- name: "new-feature" + color: 0e8a16 + description: "New features or options." +- name: "maintenance" + color: 2af79e + description: "Generic maintenance tasks." +- name: "ci" + color: 1d76db + description: "Work that improves the continue integration." +- name: "dependencies" + color: 1d76db + description: "Upgrade or downgrade of project dependencies." + +- name: "in-progress" + color: fbca04 + description: "Issue is currently being resolved by a developer." +- name: "stale" + color: fef2c0 + description: "There has not been activity on this issue or PR for quite some time." +- name: "no-stale" + color: fef2c0 + description: "This issue or PR is exempted from the stable bot." + +- name: "security" + color: ee0701 + description: "Marks a security issue that needs to be resolved asap." +- name: "incomplete" + color: fef2c0 + description: "Marks a PR or issue that is missing information." +- name: "invalid" + color: fef2c0 + description: "Marks a PR or issue that is missing information." + +- name: "beginner-friendly" + color: 0e8a16 + description: "Good first issue for people wanting to contribute to the project." +- name: "help-wanted" + color: 0e8a16 + description: "We need some extra helping hands or expertise in order to resolve this." + +- name: "hacktoberfest" + description: "Issues/PRs are participating in the Hacktoberfest." + color: fbca04 +- name: "hacktoberfest-accepted" + description: "Issues/PRs are participating in the Hacktoberfest." + color: fbca04 + +- name: "priority-critical" + color: ee0701 + description: "This should be dealt with ASAP. Not fixing this issue would be a serious error." +- name: "priority-high" + color: b60205 + description: "After critical issues are fixed, these should be dealt with before any further issues." +- name: "priority-medium" + color: 0e8a16 + description: "This issue may be useful, and needs some attention." +- name: "priority-low" + color: e4ea8a + description: "Nice addition, maybe... someday..." + +- name: "major" + color: b60205 + description: "This PR causes a major version bump in the version number." +- name: "minor" + color: 0e8a16 + description: "This PR causes a minor version bump in the version number." diff --git a/.github/workflows/labels.yaml b/.github/workflows/labels.yaml new file mode 100644 index 0000000..6be7dc0 --- /dev/null +++ b/.github/workflows/labels.yaml @@ -0,0 +1,22 @@ +--- +name: Sync labels + +# yamllint disable-line rule:truthy +on: + push: + branches: + - master + paths: + - .github/labels.yml + +jobs: + labels: + name: ♻️ Sync labels + runs-on: ubuntu-latest + steps: + - name: ⤵️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: 🚀 Run Label Syncer + uses: micnncim/action-label-syncer@v1.3.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/lint.yaml b/.github/workflows/lint.yaml new file mode 100644 index 0000000..3db43f6 --- /dev/null +++ b/.github/workflows/lint.yaml @@ -0,0 +1,33 @@ +--- +name: Lint + +# yamllint disable-line rule:truthy +on: + push: + pull_request: + types: + - opened + - reopened + - synchronize + workflow_dispatch: + +jobs: + json: + name: JSON Lint + runs-on: ubuntu-latest + steps: + - name: ⤵️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: 🚀 Run JQ + run: | + shopt -s globstar + cat **/*.json | jq '.' + + yamllint: + name: YAMLLint + runs-on: ubuntu-latest + steps: + - name: ⤵️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: 🚀 Run YAMLLint + uses: frenck/action-yamllint@v1.1 diff --git a/.github/workflows/lock.yaml b/.github/workflows/lock.yaml new file mode 100644 index 0000000..ff147a2 --- /dev/null +++ b/.github/workflows/lock.yaml @@ -0,0 +1,21 @@ +--- +name: Lock + +# yamllint disable-line rule:truthy +on: + schedule: + - cron: "0 9 * * *" + workflow_dispatch: + +jobs: + lock: + name: 🔒 Lock closed issues and PRs + runs-on: ubuntu-latest + steps: + - uses: dessant/lock-threads@v2.0.3 + with: + github-token: ${{ github.token }} + issue-lock-inactive-days: "30" + issue-lock-reason: "" + pr-lock-inactive-days: "1" + pr-lock-reason: "" diff --git a/.github/workflows/repository-updater.yaml b/.github/workflows/repository-updater.yaml new file mode 100644 index 0000000..69bd780 --- /dev/null +++ b/.github/workflows/repository-updater.yaml @@ -0,0 +1,54 @@ +--- +name: Repository Updater + +# yamllint disable-line rule:truthy +on: + repository_dispatch: + types: ["update"] + +jobs: + publish: + name: Publish add-on update + runs-on: ubuntu-latest + steps: + - name: 🚀 Run Repository Updater + uses: hassio-addons/repository-updater@v1.1 + with: + addon: ${{ github.event.client_payload.addon }} + repository: ${{ github.repository }} + token: ${{ secrets.UPDATER_TOKEN }} + + announce: + name: Announce add-on update + needs: publish + runs-on: ubuntu-latest + steps: + - name: 📢 Announce on Discord server + uses: sarisia/actions-status-discord@v1.8.6 + with: + webhook: ${{ secrets.DISCORD_WEBHOOK }} + nodetail: true + username: ${{ github.event.client_payload.name }} + avatar_url: | + https://raw.githubusercontent.com/${{ github.repository }}/master/${{ github.event.client_payload.addon }}/icon.png + title: ":arrow_up: ${{ github.event.client_payload.name }} ${{ github.event.client_payload.version }}" + image: | + https://raw.githubusercontent.com/${{ github.repository }}/master/${{ github.event.client_payload.addon }}/logo.png + description: | + A new version of the ${{ github.event.client_payload.name }} add-on has been published. + + **Version**: `${{ github.event.client_payload.version }}` + **Release notes**: + + + - name: 📢 Announce on Twitter + uses: devigned/go-twitter-action@v1.0.2 + with: + apiKey: ${{ secrets.TWITTER_API_KEY }} + apiKeySecret: ${{ secrets.TWITTER_API_SECRET }} + accessToken: ${{ secrets.TWITTER_ACCESS_TOKEN }} + accessTokenSecret: ${{ secrets.TWITTER_ACCESS_SECRET }} + message: | + ⬆️ ${{ github.event.client_payload.name }} ${{ github.event.client_payload.version }} + + https://github.com/${{ github.event.client_payload.repository }}/releases/tag/${{ github.event.client_payload.version }} diff --git a/.github/workflows/stale.yaml b/.github/workflows/stale.yaml new file mode 100644 index 0000000..d9a5240 --- /dev/null +++ b/.github/workflows/stale.yaml @@ -0,0 +1,40 @@ +--- +name: Stale + +# yamllint disable-line rule:truthy +on: + schedule: + - cron: "0 8 * * *" + workflow_dispatch: + +jobs: + stale: + name: 🧹 Clean up stale issues and PRs + runs-on: ubuntu-latest + steps: + - name: 🚀 Run stale + uses: actions/stale@v3.0.19 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + days-before-stale: 30 + days-before-close: 7 + remove-stale-when-updated: true + stale-issue-label: "stale" + exempt-issue-labels: "no-stale,help-wanted" + stale-issue-message: > + There hasn't been any activity on this issue recently, so we + clean up some of the older and inactive issues. + + Please make sure to update to the latest version and + check if that solves the issue. Let us know if that works for you + by leaving a comment 👍 + + This issue has now been marked as stale and will be closed if no + further activity occurs. Thanks! + stale-pr-label: "stale" + exempt-pr-labels: "no-stale" + stale-pr-message: > + There hasn't been any activity on this pull request recently. This + pull request has been automatically marked as stale because of that + and will be closed if no further activity occurs within 7 days. + Thank you for your contributions. diff --git a/.github/workflows/translations-download.yaml b/.github/workflows/translations-download.yaml new file mode 100644 index 0000000..1e62b73 --- /dev/null +++ b/.github/workflows/translations-download.yaml @@ -0,0 +1,75 @@ +--- +name: Translations Download + +# yamllint disable-line rule:truthy +on: + schedule: + - cron: "0 8 * * *" + workflow_dispatch: + workflow_run: + workflows: ["Translations Upload"] + branches: [master] + types: + - completed + +jobs: + json: + name: Download Translations + runs-on: ubuntu-latest + steps: + - name: ⤵️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + with: + fetch-depth: 0 + - name: 🏗 Set up yq + uses: frenck/action-setup-yq@v1.0.0 + - name: 🏗 Set up the Lokalise CLI + uses: frenck/action-setup-lokalise@v1.0.0 + - name: ⤵️ Download translations + run: | + echo "Downloading translations to lokalise" + lokalise2 file download \ + --token "${LOKALISE_TOKEN}" \ + --project-id "${LOKALISE_PROJECT}" \ + --format yaml \ + --original-filenames=false \ + --export-empty-as base \ + --bundle-structure ".translations/%LANG_ISO%.yaml" + env: + LOKALISE_TOKEN: ${{ secrets.LOKALISE_TOKEN }} + LOKALISE_PROJECT: ${{ secrets.LOKALISE_PROJECT }} + - name: 🚀 Process translations + run: | + addons=$(yq e '.addons | keys | .[]' .addons.yml) + mkdir -p .translations + for file in .translations/*.yaml; + do + filename=$(basename "${file}") + language="${filename%.*}" + if [[ "${language}" == "en" ]]; then + continue + fi + echo "Processing downloaded translations in ${language}..." + while read addon; + do + if [[ -f "${addon}/translations/en.yaml" ]]; + then + echo "Processing downloaded translations in ${language} for ${addon}..." + yq e ".${addon}" "${file}" \ + > "${addon}/translations/${filename}" + fi + done <<<"${addons}" + done + - name: 🚀 Commit changes + continue-on-error: true + run: | + git config --local user.email "action@github.com" + git config --local user.name "${GITHUB_ACTOR}" + git add . + git commit -m "🌍 Updating translations" -a + - name: 🚀 Push changes + uses: ad-m/github-push-action@v0.6.0 + continue-on-error: true + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + branch: ${{ github.ref }} diff --git a/.github/workflows/translations-upload.yaml b/.github/workflows/translations-upload.yaml new file mode 100644 index 0000000..37c2015 --- /dev/null +++ b/.github/workflows/translations-upload.yaml @@ -0,0 +1,53 @@ +--- +name: Translations Upload + +# yamllint disable-line rule:truthy +on: + workflow_dispatch: + workflow_run: + workflows: ["Repository Updater"] + branches: [master] + types: + - completed + +jobs: + upload: + name: Upload Translations + runs-on: ubuntu-latest + steps: + - name: ⤵️ Check out code from GitHub + uses: actions/checkout@v2.3.4 + - name: 🏗 Set up yq + uses: frenck/action-setup-yq@v1.0.0 + - name: 🏗 Set up the Lokalise CLI + uses: frenck/action-setup-lokalise@v1.0.0 + - name: 🚀 Combine translations + run: | + addons=$(yq e '.addons | keys | .[]' .addons.yml) + mkdir -p .translations + while read addon; + do + if [[ -f "${addon}/translations/en.yaml" ]]; + then + echo "Prepping translation upload for $addon..." + ADDON="${addon}" \ + yq e '{env(ADDON): .}' "${addon}/translations/en.yaml" \ + > ".translations/${addon}.yaml" + fi + done <<<"${addons}" + + echo "Combining translation files..." + yq ea '. as $item ireduce ({}; . * $item)' ./.translations/*.yaml > translations.yaml + - name: 🚀 Upload translations + run: | + echo "Uploading translations to lokalise" + lokalise2 file upload \ + --apply-tm \ + --lang-iso en \ + --poll \ + --token "${LOKALISE_TOKEN}" \ + --project-id "${LOKALISE_PROJECT}" \ + --file translations.yaml + env: + LOKALISE_TOKEN: ${{ secrets.LOKALISE_TOKEN }} + LOKALISE_PROJECT: ${{ secrets.LOKALISE_PROJECT }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..60e28f0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +bin/* +!bin/create_all.sh +!bin/create_hassio_addon.sh +!bin/travis_build.sh +*.do +bin/* +docs/* +site/* +pip-selfcheck.json +pyvenv.cfg +include/ +lib/ +venv/ +.translations diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/gitlab-quickmr.xml b/.idea/gitlab-quickmr.xml new file mode 100644 index 0000000..dc77e05 --- /dev/null +++ b/.idea/gitlab-quickmr.xml @@ -0,0 +1,11 @@ + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..48b9eea --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,27 @@ + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..1b60cc4 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,7 @@ + + + + + $USER_HOME$/.subversion + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..96459cb --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/repository-master.iml b/.idea/repository-master.iml new file mode 100644 index 0000000..74d515a --- /dev/null +++ b/.idea/repository-master.iml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.mdlrc b/.mdlrc new file mode 100644 index 0000000..2b0128d --- /dev/null +++ b/.mdlrc @@ -0,0 +1 @@ +rules "~MD024" \ No newline at end of file diff --git a/.yamllint b/.yamllint new file mode 100644 index 0000000..fe42475 --- /dev/null +++ b/.yamllint @@ -0,0 +1,66 @@ +--- +ignore: | + */translations/*.yaml +rules: + braces: + level: error + min-spaces-inside: 0 + max-spaces-inside: 1 + min-spaces-inside-empty: -1 + max-spaces-inside-empty: -1 + brackets: + level: error + min-spaces-inside: 0 + max-spaces-inside: 0 + min-spaces-inside-empty: -1 + max-spaces-inside-empty: -1 + colons: + level: error + max-spaces-before: 0 + max-spaces-after: 1 + commas: + level: error + max-spaces-before: 0 + min-spaces-after: 1 + max-spaces-after: 1 + comments: + level: error + require-starting-space: true + min-spaces-from-content: 2 + comments-indentation: + level: error + document-end: + level: error + present: false + document-start: + level: error + present: true + empty-lines: + level: error + max: 1 + max-start: 0 + max-end: 1 + hyphens: + level: error + max-spaces-after: 1 + indentation: + level: error + spaces: 2 + indent-sequences: true + check-multi-line-strings: false + key-duplicates: + level: error + line-length: + level: warning + max: 120 + allow-non-breakable-words: true + allow-non-breakable-inline-mappings: true + new-line-at-end-of-file: + level: error + new-lines: + level: error + type: unix + trailing-spaces: + level: error + truthy: + level: error diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..55eceb7 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +Copyright (c) 2017-2021 Franck Nijhof + +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/READM1E.md b/READM1E.md new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..7c58cd9 --- /dev/null +++ b/README.md @@ -0,0 +1,1046 @@ +# Home Assistant Community Add-ons + +![Project Stage][project-stage-shield] +![Maintenance][maintenance-shield] +[![License][license-shield]](LICENSE.md) + +[![Discord][discord-shield]][discord] +[![Community Forum][forum-shield]][forum] + +## About + +Home Assistant allows anyone to create add-on repositories to share their +add-ons for Home Assistant easily. This repository is one of those repositories, +providing extra Home Assistant add-ons for your installation. + +The primary goal of this project is to provide you (as a Home Assistant user) +with additional, high quality, add-ons that allow you to take your automated +home to the next level. + +## Installation + +In general, there is no need to install this repository on your +Home Assistant instance. It is activated and added by Home Assistant +by default. + +However, if the repository is missing on your setup, adding this add-ons +repository to your Home Assistant instance is pretty easy. In the +Home Assistant add-on store, a possibility to add a repository is provided. + +Use the following URL to add this repository: + +```txt +https://github.com/hassio-addons/repository +``` + +## Add-ons provided by this repository + +### ✓ [AdGuard Home][addon-adguard] + +![Latest Version][adguard-version-shield] +![Supports armhf Architecture][adguard-armhf-shield] +![Supports armv7 Architecture][adguard-armv7-shield] +![Supports aarch64 Architecture][adguard-aarch64-shield] +![Supports amd64 Architecture][adguard-amd64-shield] +![Supports i386 Architecture][adguard-i386-shield] + +Network-wide ads & trackers blocking DNS server + +[:books: AdGuard Home add-on documentation][addon-doc-adguard] + +### ✓ [AirCast][addon-aircast] + +![Latest Version][aircast-version-shield] +![Supports armhf Architecture][aircast-armhf-shield] +![Supports armv7 Architecture][aircast-armv7-shield] +![Supports aarch64 Architecture][aircast-aarch64-shield] +![Supports amd64 Architecture][aircast-amd64-shield] +![Supports i386 Architecture][aircast-i386-shield] + +AirPlay capabilities for your Chromecast devices. + +[:books: AirCast add-on documentation][addon-doc-aircast] + +### ✓ [AirSonos][addon-airsonos] + +![Latest Version][airsonos-version-shield] +![Supports armhf Architecture][airsonos-armhf-shield] +![Supports armv7 Architecture][airsonos-armv7-shield] +![Supports aarch64 Architecture][airsonos-aarch64-shield] +![Supports amd64 Architecture][airsonos-amd64-shield] +![Supports i386 Architecture][airsonos-i386-shield] + +AirPlay capabilities for your Sonos (and UPnP) devices. + +[:books: AirSonos add-on documentation][addon-doc-airsonos] + +### ✓ [AppDaemon 4][addon-appdaemon] + +![Latest Version][appdaemon-version-shield] +![Supports armhf Architecture][appdaemon-armhf-shield] +![Supports armv7 Architecture][appdaemon-armv7-shield] +![Supports aarch64 Architecture][appdaemon-aarch64-shield] +![Supports amd64 Architecture][appdaemon-amd64-shield] +![Supports i386 Architecture][appdaemon-i386-shield] + +Python Apps and Dashboard using AppDaemon 4.x for Home Assistant + +[:books: AppDaemon 4 add-on documentation][addon-doc-appdaemon] + +### ✓ [Bitwarden (Vaultwarden)][addon-bitwarden] + +![Latest Version][bitwarden-version-shield] +![Supports armhf Architecture][bitwarden-armhf-shield] +![Supports armv7 Architecture][bitwarden-armv7-shield] +![Supports aarch64 Architecture][bitwarden-aarch64-shield] +![Supports amd64 Architecture][bitwarden-amd64-shield] +![Supports i386 Architecture][bitwarden-i386-shield] + +Open source password management solution + +[:books: Bitwarden (Vaultwarden) add-on documentation][addon-doc-bitwarden] + +### ✓ [Bookstack][addon-bookstack] + +![Latest Version][bookstack-version-shield] +![Supports armhf Architecture][bookstack-armhf-shield] +![Supports armv7 Architecture][bookstack-armv7-shield] +![Supports aarch64 Architecture][bookstack-aarch64-shield] +![Supports amd64 Architecture][bookstack-amd64-shield] +![Supports i386 Architecture][bookstack-i386-shield] + +Simple & Free Wiki Software + +[:books: Bookstack add-on documentation][addon-doc-bookstack] + +### ✓ [ESPHome][addon-esphome] + +![Latest Version][esphome-version-shield] +![Supports armhf Architecture][esphome-armhf-shield] +![Supports armv7 Architecture][esphome-armv7-shield] +![Supports aarch64 Architecture][esphome-aarch64-shield] +![Supports amd64 Architecture][esphome-amd64-shield] +![Supports i386 Architecture][esphome-i386-shield] + +ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices + +[:books: ESPHome add-on documentation][addon-doc-esphome] + +### ✓ [Example][addon-example] + +![Latest Version][example-version-shield] +![Supports armhf Architecture][example-armhf-shield] +![Supports armv7 Architecture][example-armv7-shield] +![Supports aarch64 Architecture][example-aarch64-shield] +![Supports amd64 Architecture][example-amd64-shield] +![Supports i386 Architecture][example-i386-shield] + +Example add-on by Community Home Assistant Add-ons + +[:books: Example add-on documentation][addon-doc-example] + +### ✓ [FTP][addon-ftp] + +![Latest Version][ftp-version-shield] +![Supports armhf Architecture][ftp-armhf-shield] +![Supports armv7 Architecture][ftp-armv7-shield] +![Supports aarch64 Architecture][ftp-aarch64-shield] +![Supports amd64 Architecture][ftp-amd64-shield] +![Supports i386 Architecture][ftp-i386-shield] + +A secure and fast FTP server for Home Assistant + +[:books: FTP add-on documentation][addon-doc-ftp] + +### ✓ [Folding@home][addon-foldingathome] + +![Latest Version][foldingathome-version-shield] +![Supports armhf Architecture][foldingathome-armhf-shield] +![Supports armv7 Architecture][foldingathome-armv7-shield] +![Supports aarch64 Architecture][foldingathome-aarch64-shield] +![Supports amd64 Architecture][foldingathome-amd64-shield] +![Supports i386 Architecture][foldingathome-i386-shield] + +Fighting disease with a world wide distributed super computer + +[:books: Folding@home add-on documentation][addon-doc-foldingathome] + +### ✓ [Glances][addon-glances] + +![Latest Version][glances-version-shield] +![Supports armhf Architecture][glances-armhf-shield] +![Supports armv7 Architecture][glances-armv7-shield] +![Supports aarch64 Architecture][glances-aarch64-shield] +![Supports amd64 Architecture][glances-amd64-shield] +![Supports i386 Architecture][glances-i386-shield] + +A cross-platform system monitoring tool + +[:books: Glances add-on documentation][addon-doc-glances] + +### ✓ [Grafana][addon-grafana] + +![Latest Version][grafana-version-shield] +![Supports armhf Architecture][grafana-armhf-shield] +![Supports armv7 Architecture][grafana-armv7-shield] +![Supports aarch64 Architecture][grafana-aarch64-shield] +![Supports amd64 Architecture][grafana-amd64-shield] +![Supports i386 Architecture][grafana-i386-shield] + +The open platform for beautiful analytics and monitoring + +[:books: Grafana add-on documentation][addon-doc-grafana] + +### ✓ [Grocy][addon-grocy] + +![Latest Version][grocy-version-shield] +![Supports armhf Architecture][grocy-armhf-shield] +![Supports armv7 Architecture][grocy-armv7-shield] +![Supports aarch64 Architecture][grocy-aarch64-shield] +![Supports amd64 Architecture][grocy-amd64-shield] +![Supports i386 Architecture][grocy-i386-shield] + +ERP beyond your fridge! A groceries & household management solution for your home + +[:books: Grocy add-on documentation][addon-doc-grocy] + +### ✓ [Home Panel][addon-home-panel] + +![Latest Version][home-panel-version-shield] +![Supports armhf Architecture][home-panel-armhf-shield] +![Supports armv7 Architecture][home-panel-armv7-shield] +![Supports aarch64 Architecture][home-panel-aarch64-shield] +![Supports amd64 Architecture][home-panel-amd64-shield] +![Supports i386 Architecture][home-panel-i386-shield] + +A web frontend for controlling the home + +[:books: Home Panel add-on documentation][addon-doc-home-panel] + +### ✓ [InfluxDB][addon-influxdb] + +![Latest Version][influxdb-version-shield] +![Supports armhf Architecture][influxdb-armhf-shield] +![Supports armv7 Architecture][influxdb-armv7-shield] +![Supports aarch64 Architecture][influxdb-aarch64-shield] +![Supports amd64 Architecture][influxdb-amd64-shield] +![Supports i386 Architecture][influxdb-i386-shield] + +Scalable datastore for metrics, events, and real-time analytics + +[:books: InfluxDB add-on documentation][addon-doc-influxdb] + +### ✓ [JupyterLab][addon-jupyterlab] + +![Latest Version][jupyterlab-version-shield] +![Supports armhf Architecture][jupyterlab-armhf-shield] +![Supports armv7 Architecture][jupyterlab-armv7-shield] +![Supports aarch64 Architecture][jupyterlab-aarch64-shield] +![Supports amd64 Architecture][jupyterlab-amd64-shield] +![Supports i386 Architecture][jupyterlab-i386-shield] + +Create documents containing live code, equations, visualizations, and explanatory text + +[:books: JupyterLab add-on documentation][addon-doc-jupyterlab] + +### ✓ [Log Viewer][addon-log-viewer] + +![Latest Version][log-viewer-version-shield] +![Supports armhf Architecture][log-viewer-armhf-shield] +![Supports armv7 Architecture][log-viewer-armv7-shield] +![Supports aarch64 Architecture][log-viewer-aarch64-shield] +![Supports amd64 Architecture][log-viewer-amd64-shield] +![Supports i386 Architecture][log-viewer-i386-shield] + +Browser-based log utility for Home Assistant + +[:books: Log Viewer add-on documentation][addon-doc-log-viewer] + +### ✓ [MQTT Server & Web client][addon-mqtt] + +![Latest Version][mqtt-version-shield] +![Supports armhf Architecture][mqtt-armhf-shield] +![Supports armv7 Architecture][mqtt-armv7-shield] +![Supports aarch64 Architecture][mqtt-aarch64-shield] +![Supports amd64 Architecture][mqtt-amd64-shield] +![Supports i386 Architecture][mqtt-i386-shield] + +Mosquitto MQTT Server bundled with Hivemq's web client + +[:books: MQTT Server & Web client add-on documentation][addon-doc-mqtt] + +### ✓ [Matrix][addon-matrix] + +![Latest Version][matrix-version-shield] +![Supports armhf Architecture][matrix-armhf-shield] +![Supports armv7 Architecture][matrix-armv7-shield] +![Supports aarch64 Architecture][matrix-aarch64-shield] +![Supports amd64 Architecture][matrix-amd64-shield] +![Supports i386 Architecture][matrix-i386-shield] + +A secure and decentralized communication platform. + +[:books: Matrix add-on documentation][addon-doc-matrix] + +### ✓ [Network UPS Tools][addon-nut] + +![Latest Version][nut-version-shield] +![Supports armhf Architecture][nut-armhf-shield] +![Supports armv7 Architecture][nut-armv7-shield] +![Supports aarch64 Architecture][nut-aarch64-shield] +![Supports amd64 Architecture][nut-amd64-shield] +![Supports i386 Architecture][nut-i386-shield] + +Manage battery backup (UPS) devices + +[:books: Network UPS Tools add-on documentation][addon-doc-nut] + +### ✓ [Nginx Proxy Manager][addon-nginxproxymanager] + +![Latest Version][nginxproxymanager-version-shield] +![Supports armhf Architecture][nginxproxymanager-armhf-shield] +![Supports armv7 Architecture][nginxproxymanager-armv7-shield] +![Supports aarch64 Architecture][nginxproxymanager-aarch64-shield] +![Supports amd64 Architecture][nginxproxymanager-amd64-shield] +![Supports i386 Architecture][nginxproxymanager-i386-shield] + +Manage Nginx proxy hosts with a simple, powerful interface + +[:books: Nginx Proxy Manager add-on documentation][addon-doc-nginxproxymanager] + +### ✓ [Node-RED][addon-node-red] + +![Latest Version][node-red-version-shield] +![Supports armhf Architecture][node-red-armhf-shield] +![Supports armv7 Architecture][node-red-armv7-shield] +![Supports aarch64 Architecture][node-red-aarch64-shield] +![Supports amd64 Architecture][node-red-amd64-shield] +![Supports i386 Architecture][node-red-i386-shield] + +Flow-based programming for the Internet of Things + +[:books: Node-RED add-on documentation][addon-doc-node-red] + +### ✓ [Plex Media Server][addon-plex] + +![Latest Version][plex-version-shield] +![Supports armhf Architecture][plex-armhf-shield] +![Supports armv7 Architecture][plex-armv7-shield] +![Supports aarch64 Architecture][plex-aarch64-shield] +![Supports amd64 Architecture][plex-amd64-shield] +![Supports i386 Architecture][plex-i386-shield] + +Recorded media, live TV, online news, and podcasts ready to stream. + +[:books: Plex Media Server add-on documentation][addon-doc-plex] + +### ✓ [Portainer][addon-portainer] + +![Latest Version][portainer-version-shield] +![Supports armhf Architecture][portainer-armhf-shield] +![Supports armv7 Architecture][portainer-armv7-shield] +![Supports aarch64 Architecture][portainer-aarch64-shield] +![Supports amd64 Architecture][portainer-amd64-shield] +![Supports i386 Architecture][portainer-i386-shield] + +Manage your Docker environment with ease + +[:books: Portainer add-on documentation][addon-doc-portainer] + +### ✓ [SQLite Web][addon-sqlite-web] + +![Latest Version][sqlite-web-version-shield] +![Supports armhf Architecture][sqlite-web-armhf-shield] +![Supports armv7 Architecture][sqlite-web-armv7-shield] +![Supports aarch64 Architecture][sqlite-web-aarch64-shield] +![Supports amd64 Architecture][sqlite-web-amd64-shield] +![Supports i386 Architecture][sqlite-web-i386-shield] + +Explore your SQLite database + +[:books: SQLite Web add-on documentation][addon-doc-sqlite-web] + +### ✓ [SSH & Web Terminal][addon-ssh] + +![Latest Version][ssh-version-shield] +![Supports armhf Architecture][ssh-armhf-shield] +![Supports armv7 Architecture][ssh-armv7-shield] +![Supports aarch64 Architecture][ssh-aarch64-shield] +![Supports amd64 Architecture][ssh-amd64-shield] +![Supports i386 Architecture][ssh-i386-shield] + +SSH & Web Terminal access to your Home Assistant instance + +[:books: SSH & Web Terminal add-on documentation][addon-doc-ssh] + +### ✓ [Spotify Connect][addon-spotify] + +![Latest Version][spotify-version-shield] +![Supports armhf Architecture][spotify-armhf-shield] +![Supports armv7 Architecture][spotify-armv7-shield] +![Supports aarch64 Architecture][spotify-aarch64-shield] +![Supports amd64 Architecture][spotify-amd64-shield] +![Supports i386 Architecture][spotify-i386-shield] + +Play Spotify music on your Home Assistant device + +[:books: Spotify Connect add-on documentation][addon-doc-spotify] + +### ✓ [TasmoAdmin][addon-tasmoadmin] + +![Latest Version][tasmoadmin-version-shield] +![Supports armhf Architecture][tasmoadmin-armhf-shield] +![Supports armv7 Architecture][tasmoadmin-armv7-shield] +![Supports aarch64 Architecture][tasmoadmin-aarch64-shield] +![Supports amd64 Architecture][tasmoadmin-amd64-shield] +![Supports i386 Architecture][tasmoadmin-i386-shield] + +Centrally manage all your Sonoff-Tasmota devices + +[:books: TasmoAdmin add-on documentation][addon-doc-tasmoadmin] + +### ✓ [Tautulli][addon-tautulli] + +![Latest Version][tautulli-version-shield] +![Supports armhf Architecture][tautulli-armhf-shield] +![Supports armv7 Architecture][tautulli-armv7-shield] +![Supports aarch64 Architecture][tautulli-aarch64-shield] +![Supports amd64 Architecture][tautulli-amd64-shield] +![Supports i386 Architecture][tautulli-i386-shield] + +Monitoring and tracking tool for Plex Media Server + +[:books: Tautulli add-on documentation][addon-doc-tautulli] + +### ✓ [The Lounge][addon-thelounge] + +![Latest Version][thelounge-version-shield] +![Supports armhf Architecture][thelounge-armhf-shield] +![Supports armv7 Architecture][thelounge-armv7-shield] +![Supports aarch64 Architecture][thelounge-aarch64-shield] +![Supports amd64 Architecture][thelounge-amd64-shield] +![Supports i386 Architecture][thelounge-i386-shield] + +A self-hosted web IRC client + +[:books: The Lounge add-on documentation][addon-doc-thelounge] + +### ✓ [Tor][addon-tor] + +![Latest Version][tor-version-shield] +![Supports armhf Architecture][tor-armhf-shield] +![Supports armv7 Architecture][tor-armv7-shield] +![Supports aarch64 Architecture][tor-aarch64-shield] +![Supports amd64 Architecture][tor-amd64-shield] +![Supports i386 Architecture][tor-i386-shield] + +Protect your privacy and access Home Assistant via Tor. + +[:books: Tor add-on documentation][addon-doc-tor] + +### ✓ [Traccar][addon-traccar] + +![Latest Version][traccar-version-shield] +![Supports armhf Architecture][traccar-armhf-shield] +![Supports armv7 Architecture][traccar-armv7-shield] +![Supports aarch64 Architecture][traccar-aarch64-shield] +![Supports amd64 Architecture][traccar-amd64-shield] +![Supports i386 Architecture][traccar-i386-shield] + +Modern GPS Tracking Platform + +[:books: Traccar add-on documentation][addon-doc-traccar] + +### ✓ [UniFi Controller][addon-unifi] + +![Latest Version][unifi-version-shield] +![Supports armhf Architecture][unifi-armhf-shield] +![Supports armv7 Architecture][unifi-armv7-shield] +![Supports aarch64 Architecture][unifi-aarch64-shield] +![Supports amd64 Architecture][unifi-amd64-shield] +![Supports i386 Architecture][unifi-i386-shield] + +Manage your UniFi network using a web browser + +[:books: UniFi Controller add-on documentation][addon-doc-unifi] + +### ✓ [Visual Studio Code][addon-vscode] + +![Latest Version][vscode-version-shield] +![Supports armhf Architecture][vscode-armhf-shield] +![Supports armv7 Architecture][vscode-armv7-shield] +![Supports aarch64 Architecture][vscode-aarch64-shield] +![Supports amd64 Architecture][vscode-amd64-shield] +![Supports i386 Architecture][vscode-i386-shield] + +Fully featured VSCode experience, to edit your HA config in the browser, including auto-completion! + +[:books: Visual Studio Code add-on documentation][addon-doc-vscode] + +### ✓ [WireGuard][addon-wireguard] + +![Latest Version][wireguard-version-shield] +![Supports armhf Architecture][wireguard-armhf-shield] +![Supports armv7 Architecture][wireguard-armv7-shield] +![Supports aarch64 Architecture][wireguard-aarch64-shield] +![Supports amd64 Architecture][wireguard-amd64-shield] +![Supports i386 Architecture][wireguard-i386-shield] + +Fast, modern, secure VPN tunnel + +[:books: WireGuard add-on documentation][addon-doc-wireguard] + +### ✓ [Z-Wave JS to MQTT][addon-zwavejs2mqtt] + +![Latest Version][zwavejs2mqtt-version-shield] +![Supports armhf Architecture][zwavejs2mqtt-armhf-shield] +![Supports armv7 Architecture][zwavejs2mqtt-armv7-shield] +![Supports aarch64 Architecture][zwavejs2mqtt-aarch64-shield] +![Supports amd64 Architecture][zwavejs2mqtt-amd64-shield] +![Supports i386 Architecture][zwavejs2mqtt-i386-shield] + +Fully configurable Z-Wave JS to MQTT gateway and control panel + +[:books: Z-Wave JS to MQTT add-on documentation][addon-doc-zwavejs2mqtt] + +### ✓ [ZeroTier One][addon-zerotier] + +![Latest Version][zerotier-version-shield] +![Supports armhf Architecture][zerotier-armhf-shield] +![Supports armv7 Architecture][zerotier-armv7-shield] +![Supports aarch64 Architecture][zerotier-aarch64-shield] +![Supports amd64 Architecture][zerotier-amd64-shield] +![Supports i386 Architecture][zerotier-i386-shield] + +Radically simplify your network with a virtual networking layer that works the same everywhere + +[:books: ZeroTier One add-on documentation][addon-doc-zerotier] + +### ✓ [chrony][addon-chrony] + +![Latest Version][chrony-version-shield] +![Supports armhf Architecture][chrony-armhf-shield] +![Supports armv7 Architecture][chrony-armv7-shield] +![Supports aarch64 Architecture][chrony-aarch64-shield] +![Supports amd64 Architecture][chrony-amd64-shield] +![Supports i386 Architecture][chrony-i386-shield] + +A local NTP (Network Time Protocol) server for cameras etc. + +[:books: chrony add-on documentation][addon-doc-chrony] + +### ✓ [motionEye][addon-motioneye] + +![Latest Version][motioneye-version-shield] +![Supports armhf Architecture][motioneye-armhf-shield] +![Supports armv7 Architecture][motioneye-armv7-shield] +![Supports aarch64 Architecture][motioneye-aarch64-shield] +![Supports amd64 Architecture][motioneye-amd64-shield] +![Supports i386 Architecture][motioneye-i386-shield] + +Simple, elegant and feature-rich CCTV/NVR for your cameras + +[:books: motionEye add-on documentation][addon-doc-motioneye] + +### ✓ [phpMyAdmin][addon-phpmyadmin] + +![Latest Version][phpmyadmin-version-shield] +![Supports armhf Architecture][phpmyadmin-armhf-shield] +![Supports armv7 Architecture][phpmyadmin-armv7-shield] +![Supports aarch64 Architecture][phpmyadmin-aarch64-shield] +![Supports amd64 Architecture][phpmyadmin-amd64-shield] +![Supports i386 Architecture][phpmyadmin-i386-shield] + +A web interface for the official MariaDB add-on + +[:books: phpMyAdmin add-on documentation][addon-doc-phpmyadmin] + +## Releases + +Releases are based on [Semantic Versioning][semver], and use the format +of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented +based on the following: + +- ``MAJOR``: Incompatible or major changes. +- ``MINOR``: Backwards-compatible new features and enhancements. +- ``PATCH``: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The Home Assistant Community Add-ons [Discord Chat Server][discord] +- The Home Assistant [Community Forum][forum]. +- The Home Assistant [Discord Chat Server][discord-ha]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also open an issue here on GitHub. Note, we use a separate +GitHub repository for each add-on. Please ensure you are creating the issue +on the correct GitHub repository matching the add-on. + +- [Open an issue for the add-on: AdGuard Home][adguard-issue] +- [Open an issue for the add-on: AirCast][aircast-issue] +- [Open an issue for the add-on: AirSonos][airsonos-issue] +- [Open an issue for the add-on: AppDaemon 4][appdaemon-issue] +- [Open an issue for the add-on: Bitwarden (Vaultwarden)][bitwarden-issue] +- [Open an issue for the add-on: Bookstack][bookstack-issue] +- [Open an issue for the add-on: ESPHome][esphome-issue] +- [Open an issue for the add-on: Example][example-issue] +- [Open an issue for the add-on: FTP][ftp-issue] +- [Open an issue for the add-on: Folding@home][foldingathome-issue] +- [Open an issue for the add-on: Glances][glances-issue] +- [Open an issue for the add-on: Grafana][grafana-issue] +- [Open an issue for the add-on: Grocy][grocy-issue] +- [Open an issue for the add-on: Home Panel][home-panel-issue] +- [Open an issue for the add-on: InfluxDB][influxdb-issue] +- [Open an issue for the add-on: JupyterLab][jupyterlab-issue] +- [Open an issue for the add-on: Log Viewer][log-viewer-issue] +- [Open an issue for the add-on: MQTT Server & Web client][mqtt-issue] +- [Open an issue for the add-on: Matrix][matrix-issue] +- [Open an issue for the add-on: Network UPS Tools][nut-issue] +- [Open an issue for the add-on: Nginx Proxy Manager][nginxproxymanager-issue] +- [Open an issue for the add-on: Node-RED][node-red-issue] +- [Open an issue for the add-on: Plex Media Server][plex-issue] +- [Open an issue for the add-on: Portainer][portainer-issue] +- [Open an issue for the add-on: SQLite Web][sqlite-web-issue] +- [Open an issue for the add-on: SSH & Web Terminal][ssh-issue] +- [Open an issue for the add-on: Spotify Connect][spotify-issue] +- [Open an issue for the add-on: TasmoAdmin][tasmoadmin-issue] +- [Open an issue for the add-on: Tautulli][tautulli-issue] +- [Open an issue for the add-on: The Lounge][thelounge-issue] +- [Open an issue for the add-on: Tor][tor-issue] +- [Open an issue for the add-on: Traccar][traccar-issue] +- [Open an issue for the add-on: UniFi Controller][unifi-issue] +- [Open an issue for the add-on: Visual Studio Code][vscode-issue] +- [Open an issue for the add-on: WireGuard][wireguard-issue] +- [Open an issue for the add-on: Z-Wave JS to MQTT][zwavejs2mqtt-issue] +- [Open an issue for the add-on: ZeroTier One][zerotier-issue] +- [Open an issue for the add-on: chrony][chrony-issue] +- [Open an issue for the add-on: motionEye][motioneye-issue] +- [Open an issue for the add-on: phpMyAdmin][phpmyadmin-issue] + +For a general repository issue or add-on ideas [open an issue here][issue] + +## Contributing + +This is an active open-source project. We are always open to people who want to +use the code or contribute to it. + +We have set up a separate document containing our +[contribution guidelines](CONTRIBUTING.md). + +Thank you for being involved! :heart_eyes: + +## Adding a new add-on + +We are currently not accepting third party add-ons to this repository. + +For questions, please contact [Franck Nijhof][frenck]: + +- Drop him an email: frenck@addons.community +- Chat with him on [Discord Chat][discord] +- Message him via the forums: [frenck][forum-frenck] + +## License + +MIT License + +Copyright (c) 2017-2021 Franck Nijhof + +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. + +[addon-adguard]: https://github.com/hassio-addons/addon-adguard-home/tree/v4.1.6 +[addon-doc-adguard]: https://github.com/hassio-addons/addon-adguard-home/blob/v4.1.6/README.md +[adguard-issue]: https://github.com/hassio-addons/addon-adguard-home/issues +[adguard-version-shield]: https://img.shields.io/badge/version-v4.1.6-blue.svg +[adguard-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[adguard-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[adguard-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[adguard-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[adguard-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-aircast]: https://github.com/hassio-addons/addon-aircast/tree/v3.1.1 +[addon-doc-aircast]: https://github.com/hassio-addons/addon-aircast/blob/v3.1.1/README.md +[aircast-issue]: https://github.com/hassio-addons/addon-aircast/issues +[aircast-version-shield]: https://img.shields.io/badge/version-v3.1.1-blue.svg +[aircast-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[aircast-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[aircast-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[aircast-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[aircast-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-airsonos]: https://github.com/hassio-addons/addon-airsonos/tree/v3.1.1 +[addon-doc-airsonos]: https://github.com/hassio-addons/addon-airsonos/blob/v3.1.1/README.md +[airsonos-issue]: https://github.com/hassio-addons/addon-airsonos/issues +[airsonos-version-shield]: https://img.shields.io/badge/version-v3.1.1-blue.svg +[airsonos-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[airsonos-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[airsonos-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[airsonos-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[airsonos-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-appdaemon]: https://github.com/hassio-addons/addon-appdaemon/tree/v0.6.2 +[addon-doc-appdaemon]: https://github.com/hassio-addons/addon-appdaemon/blob/v0.6.2/README.md +[appdaemon-issue]: https://github.com/hassio-addons/addon-appdaemon/issues +[appdaemon-version-shield]: https://img.shields.io/badge/version-v0.6.2-blue.svg +[appdaemon-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[appdaemon-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[appdaemon-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[appdaemon-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[appdaemon-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-bitwarden]: https://github.com/hassio-addons/addon-bitwarden/tree/v0.11.0 +[addon-doc-bitwarden]: https://github.com/hassio-addons/addon-bitwarden/blob/v0.11.0/README.md +[bitwarden-issue]: https://github.com/hassio-addons/addon-bitwarden/issues +[bitwarden-version-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg +[bitwarden-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[bitwarden-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[bitwarden-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[bitwarden-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[bitwarden-i386-shield]: https://img.shields.io/badge/i386-no-red.svg +[addon-bookstack]: https://github.com/hassio-addons/addon-bookstack/tree/v0.12.0 +[addon-doc-bookstack]: https://github.com/hassio-addons/addon-bookstack/blob/v0.12.0/README.md +[bookstack-issue]: https://github.com/hassio-addons/addon-bookstack/issues +[bookstack-version-shield]: https://img.shields.io/badge/version-v0.12.0-blue.svg +[bookstack-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[bookstack-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[bookstack-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[bookstack-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[bookstack-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-esphome]: https://github.com/esphome/hassio/tree/v1.19.4 +[addon-doc-esphome]: https://github.com/esphome/hassio/blob/v1.19.4/README.md +[esphome-issue]: https://github.com/esphome/hassio/issues +[esphome-version-shield]: https://img.shields.io/badge/version-v1.19.4-blue.svg +[esphome-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[esphome-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[esphome-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[esphome-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[esphome-i386-shield]: https://img.shields.io/badge/i386-no-red.svg +[addon-example]: https://github.com/hassio-addons/addon-example/tree/v4.2.0 +[addon-doc-example]: https://github.com/hassio-addons/addon-example/blob/v4.2.0/README.md +[example-issue]: https://github.com/hassio-addons/addon-example/issues +[example-version-shield]: https://img.shields.io/badge/version-v4.2.0-blue.svg +[example-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[example-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[example-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[example-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[example-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-ftp]: https://github.com/hassio-addons/addon-ftp/tree/v4.2.0 +[addon-doc-ftp]: https://github.com/hassio-addons/addon-ftp/blob/v4.2.0/README.md +[ftp-issue]: https://github.com/hassio-addons/addon-ftp/issues +[ftp-version-shield]: https://img.shields.io/badge/version-v4.2.0-blue.svg +[ftp-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[ftp-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[ftp-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[ftp-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[ftp-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-foldingathome]: https://github.com/hassio-addons/addon-foldingathome/tree/v0.2.0 +[addon-doc-foldingathome]: https://github.com/hassio-addons/addon-foldingathome/blob/v0.2.0/README.md +[foldingathome-issue]: https://github.com/hassio-addons/addon-foldingathome/issues +[foldingathome-version-shield]: https://img.shields.io/badge/version-v0.2.0-blue.svg +[foldingathome-aarch64-shield]: https://img.shields.io/badge/aarch64-no-red.svg +[foldingathome-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[foldingathome-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[foldingathome-armv7-shield]: https://img.shields.io/badge/armv7-no-red.svg +[foldingathome-i386-shield]: https://img.shields.io/badge/i386-no-red.svg +[addon-glances]: https://github.com/hassio-addons/addon-glances/tree/v0.12.2 +[addon-doc-glances]: https://github.com/hassio-addons/addon-glances/blob/v0.12.2/README.md +[glances-issue]: https://github.com/hassio-addons/addon-glances/issues +[glances-version-shield]: https://img.shields.io/badge/version-v0.12.2-blue.svg +[glances-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[glances-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[glances-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[glances-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[glances-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-grafana]: https://github.com/hassio-addons/addon-grafana/tree/v7.0.1 +[addon-doc-grafana]: https://github.com/hassio-addons/addon-grafana/blob/v7.0.1/README.md +[grafana-issue]: https://github.com/hassio-addons/addon-grafana/issues +[grafana-version-shield]: https://img.shields.io/badge/version-v7.0.1-blue.svg +[grafana-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[grafana-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[grafana-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[grafana-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[grafana-i386-shield]: https://img.shields.io/badge/i386-no-red.svg +[addon-grocy]: https://github.com/hassio-addons/addon-grocy/tree/v0.14.0 +[addon-doc-grocy]: https://github.com/hassio-addons/addon-grocy/blob/v0.14.0/README.md +[grocy-issue]: https://github.com/hassio-addons/addon-grocy/issues +[grocy-version-shield]: https://img.shields.io/badge/version-v0.14.0-blue.svg +[grocy-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[grocy-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[grocy-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[grocy-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[grocy-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-home-panel]: https://github.com/hassio-addons/addon-home-panel/tree/v2.2.1 +[addon-doc-home-panel]: https://github.com/hassio-addons/addon-home-panel/blob/v2.2.1/README.md +[home-panel-issue]: https://github.com/hassio-addons/addon-home-panel/issues +[home-panel-version-shield]: https://img.shields.io/badge/version-v2.2.1-blue.svg +[home-panel-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[home-panel-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[home-panel-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[home-panel-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[home-panel-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-influxdb]: https://github.com/hassio-addons/addon-influxdb/tree/v4.1.1 +[addon-doc-influxdb]: https://github.com/hassio-addons/addon-influxdb/blob/v4.1.1/README.md +[influxdb-issue]: https://github.com/hassio-addons/addon-influxdb/issues +[influxdb-version-shield]: https://img.shields.io/badge/version-v4.1.1-blue.svg +[influxdb-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[influxdb-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[influxdb-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[influxdb-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[influxdb-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-jupyterlab]: https://github.com/hassio-addons/addon-jupyterlab/tree/v0.5.0 +[addon-doc-jupyterlab]: https://github.com/hassio-addons/addon-jupyterlab/blob/v0.5.0/README.md +[jupyterlab-issue]: https://github.com/hassio-addons/addon-jupyterlab/issues +[jupyterlab-version-shield]: https://img.shields.io/badge/version-v0.5.0-blue.svg +[jupyterlab-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[jupyterlab-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[jupyterlab-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[jupyterlab-armv7-shield]: https://img.shields.io/badge/armv7-no-red.svg +[jupyterlab-i386-shield]: https://img.shields.io/badge/i386-no-red.svg +[addon-log-viewer]: https://github.com/hassio-addons/addon-log-viewer/tree/v0.11.0 +[addon-doc-log-viewer]: https://github.com/hassio-addons/addon-log-viewer/blob/v0.11.0/README.md +[log-viewer-issue]: https://github.com/hassio-addons/addon-log-viewer/issues +[log-viewer-version-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg +[log-viewer-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[log-viewer-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[log-viewer-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[log-viewer-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[log-viewer-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-mqtt]: https://github.com/hassio-addons/addon-mqtt/tree/v1.2.0 +[addon-doc-mqtt]: https://github.com/hassio-addons/addon-mqtt/blob/v1.2.0/README.md +[mqtt-issue]: https://github.com/hassio-addons/addon-mqtt/issues +[mqtt-version-shield]: https://img.shields.io/badge/version-v1.2.0-blue.svg +[mqtt-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[mqtt-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[mqtt-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[mqtt-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[mqtt-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-matrix]: https://github.com/hassio-addons/addon-matrix/tree/v0.10.0 +[addon-doc-matrix]: https://github.com/hassio-addons/addon-matrix/blob/v0.10.0/README.md +[matrix-issue]: https://github.com/hassio-addons/addon-matrix/issues +[matrix-version-shield]: https://img.shields.io/badge/version-v0.10.0-blue.svg +[matrix-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[matrix-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[matrix-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[matrix-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[matrix-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-nut]: https://github.com/hassio-addons/addon-nut/tree/v0.7.0 +[addon-doc-nut]: https://github.com/hassio-addons/addon-nut/blob/v0.7.0/README.md +[nut-issue]: https://github.com/hassio-addons/addon-nut/issues +[nut-version-shield]: https://img.shields.io/badge/version-v0.7.0-blue.svg +[nut-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[nut-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[nut-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[nut-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[nut-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-nginxproxymanager]: https://github.com/hassio-addons/addon-nginx-proxy-manager/tree/v0.11.0 +[addon-doc-nginxproxymanager]: https://github.com/hassio-addons/addon-nginx-proxy-manager/blob/v0.11.0/README.md +[nginxproxymanager-issue]: https://github.com/hassio-addons/addon-nginx-proxy-manager/issues +[nginxproxymanager-version-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg +[nginxproxymanager-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[nginxproxymanager-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[nginxproxymanager-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[nginxproxymanager-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[nginxproxymanager-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-node-red]: https://github.com/hassio-addons/addon-node-red/tree/v9.1.4 +[addon-doc-node-red]: https://github.com/hassio-addons/addon-node-red/blob/v9.1.4/README.md +[node-red-issue]: https://github.com/hassio-addons/addon-node-red/issues +[node-red-version-shield]: https://img.shields.io/badge/version-v9.1.4-blue.svg +[node-red-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[node-red-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[node-red-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[node-red-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[node-red-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-plex]: https://github.com/hassio-addons/addon-plex/tree/v2.6.1 +[addon-doc-plex]: https://github.com/hassio-addons/addon-plex/blob/v2.6.1/README.md +[plex-issue]: https://github.com/hassio-addons/addon-plex/issues +[plex-version-shield]: https://img.shields.io/badge/version-v2.6.1-blue.svg +[plex-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[plex-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[plex-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[plex-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[plex-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-portainer]: https://github.com/hassio-addons/addon-portainer/tree/v1.5.1 +[addon-doc-portainer]: https://github.com/hassio-addons/addon-portainer/blob/v1.5.1/README.md +[portainer-issue]: https://github.com/hassio-addons/addon-portainer/issues +[portainer-version-shield]: https://img.shields.io/badge/version-v1.5.1-blue.svg +[portainer-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[portainer-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[portainer-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[portainer-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[portainer-i386-shield]: https://img.shields.io/badge/i386-no-red.svg +[addon-sqlite-web]: https://github.com/hassio-addons/addon-sqlite-web/tree/v3.1.0 +[addon-doc-sqlite-web]: https://github.com/hassio-addons/addon-sqlite-web/blob/v3.1.0/README.md +[sqlite-web-issue]: https://github.com/hassio-addons/addon-sqlite-web/issues +[sqlite-web-version-shield]: https://img.shields.io/badge/version-v3.1.0-blue.svg +[sqlite-web-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[sqlite-web-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[sqlite-web-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[sqlite-web-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[sqlite-web-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-ssh]: https://github.com/hassio-addons/addon-ssh/tree/v8.2.4 +[addon-doc-ssh]: https://github.com/hassio-addons/addon-ssh/blob/v8.2.4/README.md +[ssh-issue]: https://github.com/hassio-addons/addon-ssh/issues +[ssh-version-shield]: https://img.shields.io/badge/version-v8.2.4-blue.svg +[ssh-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[ssh-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[ssh-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[ssh-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[ssh-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-spotify]: https://github.com/hassio-addons/addon-spotify-connect/tree/v0.8.2 +[addon-doc-spotify]: https://github.com/hassio-addons/addon-spotify-connect/blob/v0.8.2/README.md +[spotify-issue]: https://github.com/hassio-addons/addon-spotify-connect/issues +[spotify-version-shield]: https://img.shields.io/badge/version-v0.8.2-blue.svg +[spotify-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[spotify-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[spotify-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[spotify-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[spotify-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-tasmoadmin]: https://github.com/hassio-addons/addon-tasmoadmin/tree/v0.15.0 +[addon-doc-tasmoadmin]: https://github.com/hassio-addons/addon-tasmoadmin/blob/v0.15.0/README.md +[tasmoadmin-issue]: https://github.com/hassio-addons/addon-tasmoadmin/issues +[tasmoadmin-version-shield]: https://img.shields.io/badge/version-v0.15.0-blue.svg +[tasmoadmin-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[tasmoadmin-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[tasmoadmin-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[tasmoadmin-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[tasmoadmin-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-tautulli]: https://github.com/hassio-addons/addon-tautulli/tree/v2.2.3 +[addon-doc-tautulli]: https://github.com/hassio-addons/addon-tautulli/blob/v2.2.3/README.md +[tautulli-issue]: https://github.com/hassio-addons/addon-tautulli/issues +[tautulli-version-shield]: https://img.shields.io/badge/version-v2.2.3-blue.svg +[tautulli-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[tautulli-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[tautulli-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[tautulli-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[tautulli-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-thelounge]: https://github.com/hassio-addons/addon-thelounge/tree/v0.12.1 +[addon-doc-thelounge]: https://github.com/hassio-addons/addon-thelounge/blob/v0.12.1/README.md +[thelounge-issue]: https://github.com/hassio-addons/addon-thelounge/issues +[thelounge-version-shield]: https://img.shields.io/badge/version-v0.12.1-blue.svg +[thelounge-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[thelounge-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[thelounge-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[thelounge-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[thelounge-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-tor]: https://github.com/hassio-addons/addon-tor/tree/v3.0.5 +[addon-doc-tor]: https://github.com/hassio-addons/addon-tor/blob/v3.0.5/README.md +[tor-issue]: https://github.com/hassio-addons/addon-tor/issues +[tor-version-shield]: https://img.shields.io/badge/version-v3.0.5-blue.svg +[tor-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[tor-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[tor-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[tor-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[tor-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-traccar]: https://github.com/hassio-addons/addon-traccar/tree/v0.12.0 +[addon-doc-traccar]: https://github.com/hassio-addons/addon-traccar/blob/v0.12.0/README.md +[traccar-issue]: https://github.com/hassio-addons/addon-traccar/issues +[traccar-version-shield]: https://img.shields.io/badge/version-v0.12.0-blue.svg +[traccar-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[traccar-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[traccar-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[traccar-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[traccar-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-unifi]: https://github.com/hassio-addons/addon-unifi/tree/v0.23.1 +[addon-doc-unifi]: https://github.com/hassio-addons/addon-unifi/blob/v0.23.1/README.md +[unifi-issue]: https://github.com/hassio-addons/addon-unifi/issues +[unifi-version-shield]: https://img.shields.io/badge/version-v0.23.1-blue.svg +[unifi-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[unifi-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[unifi-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[unifi-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[unifi-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-vscode]: https://github.com/hassio-addons/addon-vscode/tree/v3.4.1 +[addon-doc-vscode]: https://github.com/hassio-addons/addon-vscode/blob/v3.4.1/README.md +[vscode-issue]: https://github.com/hassio-addons/addon-vscode/issues +[vscode-version-shield]: https://img.shields.io/badge/version-v3.4.1-blue.svg +[vscode-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[vscode-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[vscode-armhf-shield]: https://img.shields.io/badge/armhf-no-red.svg +[vscode-armv7-shield]: https://img.shields.io/badge/armv7-no-red.svg +[vscode-i386-shield]: https://img.shields.io/badge/i386-no-red.svg +[addon-wireguard]: https://github.com/hassio-addons/addon-wireguard/tree/v0.5.1 +[addon-doc-wireguard]: https://github.com/hassio-addons/addon-wireguard/blob/v0.5.1/README.md +[wireguard-issue]: https://github.com/hassio-addons/addon-wireguard/issues +[wireguard-version-shield]: https://img.shields.io/badge/version-v0.5.1-blue.svg +[wireguard-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[wireguard-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[wireguard-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[wireguard-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[wireguard-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-zwavejs2mqtt]: https://github.com/hassio-addons/addon-zwavejs2mqtt/tree/v0.21.0 +[addon-doc-zwavejs2mqtt]: https://github.com/hassio-addons/addon-zwavejs2mqtt/blob/v0.21.0/README.md +[zwavejs2mqtt-issue]: https://github.com/hassio-addons/addon-zwavejs2mqtt/issues +[zwavejs2mqtt-version-shield]: https://img.shields.io/badge/version-v0.21.0-blue.svg +[zwavejs2mqtt-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[zwavejs2mqtt-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[zwavejs2mqtt-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[zwavejs2mqtt-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[zwavejs2mqtt-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-zerotier]: https://github.com/hassio-addons/addon-zerotier/tree/v0.11.0 +[addon-doc-zerotier]: https://github.com/hassio-addons/addon-zerotier/blob/v0.11.0/README.md +[zerotier-issue]: https://github.com/hassio-addons/addon-zerotier/issues +[zerotier-version-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg +[zerotier-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[zerotier-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[zerotier-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[zerotier-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[zerotier-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-chrony]: https://github.com/hassio-addons/addon-chrony/tree/v2.2.0 +[addon-doc-chrony]: https://github.com/hassio-addons/addon-chrony/blob/v2.2.0/README.md +[chrony-issue]: https://github.com/hassio-addons/addon-chrony/issues +[chrony-version-shield]: https://img.shields.io/badge/version-v2.2.0-blue.svg +[chrony-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[chrony-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[chrony-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[chrony-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[chrony-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-motioneye]: https://github.com/hassio-addons/addon-motioneye/tree/v0.14.0 +[addon-doc-motioneye]: https://github.com/hassio-addons/addon-motioneye/blob/v0.14.0/README.md +[motioneye-issue]: https://github.com/hassio-addons/addon-motioneye/issues +[motioneye-version-shield]: https://img.shields.io/badge/version-v0.14.0-blue.svg +[motioneye-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[motioneye-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[motioneye-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[motioneye-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[motioneye-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[addon-phpmyadmin]: https://github.com/hassio-addons/addon-phpmyadmin/tree/v0.4.2 +[addon-doc-phpmyadmin]: https://github.com/hassio-addons/addon-phpmyadmin/blob/v0.4.2/README.md +[phpmyadmin-issue]: https://github.com/hassio-addons/addon-phpmyadmin/issues +[phpmyadmin-version-shield]: https://img.shields.io/badge/version-v0.4.2-blue.svg +[phpmyadmin-aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[phpmyadmin-amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[phpmyadmin-armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[phpmyadmin-armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg +[phpmyadmin-i386-shield]: https://img.shields.io/badge/i386-yes-green.svg +[awesome-shield]: https://img.shields.io/badge/awesome%3F-yes-brightgreen.svg +[awesome]: https://awesome-ha.com +[discord-ha]: https://discord.gg/c5DvZ4e +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-frenck]: https://community.home-assistant.io/u/frenck/?u=frenck +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io?u=frenck +[frenck]: https://github.com/frenck +[gitlabci-shield]: https://gitlab.com/hassio-addons/repository/badges/master/pipeline.svg +[gitlabci]: https://gitlab.com/hassio-addons/repository/pipelines +[issue]: https://github.com/hassio-addons/repository/issues +[license-shield]: https://img.shields.io/github/license/hassio-addons/repository.svg +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[reddit]: https://reddit.com/r/homeassistant +[semver]: http://semver.org/spec/v2.0.0.html \ No newline at end of file diff --git a/aircast/CHANGELOG.md b/aircast/CHANGELOG.md new file mode 100644 index 0000000..5e478fe --- /dev/null +++ b/aircast/CHANGELOG.md @@ -0,0 +1,15 @@ +## What’s changed + +## ⬆️ Dependency updates + +- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#74) +- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#75) +- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#76) +- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#77) +- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#78) +- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#79) +- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#80) +- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#81) +- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2 @dependabot (#82) +- ⬆️ Upgrades add-on base image to v4.2.1 @frenck (#84) +- ⬆️ Upgrades AirConnect to 0.2.50.5 @frenck (#85) diff --git a/aircast/DOCS.md b/aircast/DOCS.md new file mode 100644 index 0000000..f022475 --- /dev/null +++ b/aircast/DOCS.md @@ -0,0 +1,231 @@ +# Home Assistant Community Add-on: AirCast + +Apple devices use AirPlay to send audio to other devices, but this is not +compatible with Google's Chromecast. This add-on tries to solve this +compatibility gap. + +It detects Chromecast players in your network and creates virtual AirPlay +devices for each of them. It acts as a bridge between the AirPlay client +and the real Chromecast player. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the “AirCast” add-on in the Supervisor add-on store + and install it. +1. Install the "AirCast" add-on. +1. Start the "AirCast" add-on +1. Check the logs of the "AirCast" add-on to see if everything went well. + +After ~30 seconds you should see some log messages appear in the add-on log. +Using your iOS/Mac/iTunes/Airfoil/other clients, you should now see new AirPlay +devices and can try to play audio to them. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +address: 192.168.1.234 +latency_rtp: 5000 +latency_http: 0 +drift: true +``` + +**Note**: _This is just an example, don't copy and past it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +These log level also affects the log levels of AirCast server. + +### Option: `address` + +This option allows you to specify the IP address the AirCast server needs to +bind to. It will automatically detect the interface to use when this option is +left empty. Nevertheless, it might get detected wrong (e.g., in case you have +multiple network interfaces). + +### Option: `latency_rtp` + +Allows you to tweak the buffering, which is needed when the audio is stuttering +(e.g., low-quality network). This option specifies the number of ms the addon +has to buffer the RTP audio (AirPlay). Setting this value below 500ms is not +recommended! Setting the value to `0` causes the addon the get the value from +AirPlay. + +### Option: `latency_http` + +Allows you to tweak the buffering, which is needed when the audio is stuttering +(e.g., low-quality network). This option specifies the number of ms the addon +has to buffer the HTTP audio. + +**Note**: This option usually is not needed and can be left to `0` in most +cases. + +### Option: `drift` + +Set to `true` to let timing reference drift (no click). + +## Latency options explained + +These bridges receive real-time "synchronous" audio from the AirPlay controller +in the format of RTP frames and forward it to the Chromecast player in an HTTP +"asynchronous" continuous audio binary format. In other words, +the AirPlay clients "push" the audio using RTP and the Chromecast players +"pull" the audio using an HTTP GET request. + +A player using HTTP to get its audio expects to receive an initial large +portion of audio as the response to its GET and this creates a large enough +buffer to handle most further network congestion/delays. The rest of the audio +transmission is regulated by the player using TCP flow control. However, when +the source is an AirPlay RTP device, there is no such significant portion of +audio available in advance to be sent to the Player, as the audio comes to the +bridge in real time. Every 8ms, an RTP frame is received and is immediately +forwarded as the continuation of the HTTP body. If the Chromecast players +start to play immediately the first received audio sample, expecting an initial +burst to follow, then any network congestion delaying RTP audio will starve +the player and create shuttering. + +The `latency_http` option allows a certain amount of silence frames to be sent +to the Chromecast player, in a burst at the beginning. Then, while this +"artificial" silence is being played, it is possible for the bridge to build +a buffer of RTP frames that will then hide network delays that might happen +in further RTP frames transmission. This delays the start of the playback +by `latency_http` ms. + +However, RTP frames are transmitted using UDP, which means there is no guarantee +of delivery, so frames might be lost from time to time +(often happens on WiFi networks). To allow detection of lost frames, they are +numbered sequentially (1,2 ... n) so every time two received frames are not +consecutive, the missing ones can be asked again by the AirPlay receiver. + +Typically, the bridge forwards immediately every RTP frame using HTTP and again, +in HTTP, the notion of frame numbers does not exist, it is just the continuous +binary audio. So it is not possible to send audio non-sequentially when using +HTTP. + +For example, if received RTP frames are numbered 1,2,3,6, this bridge will +forward (once decoded and transformed into raw audio) 1,2,3 immediately using +HTTP but when it receives 6, it will re-ask for 4 and 5 to be resent and +hold 6 while waiting (if 6 was transmitted immediately, the Chromecast +will play 1,2,3,6 ... not nice). + +The `latency_rtp` option sets for how long frame 6 shall be held before adding +two silence frames for 4 and 5 and send sending 4,5,6. Obviously, if this delay +is larger than the buffer in the Chromecast player, playback will stop by +lack of audio. Note that `latency_rtp` does not delay playback start. + +> **Note**: `latency_rtp` and `latency_http` could have been merged into a +> single `latency` parameter which would have set the max RTP frames holding time +> as well as the duration of the initial additional silence (delay), +> however, all Chromecast devices do properly their own buffering of HTTP audio +> (i.e., they wait until they have received a certain amount of audio before +> starting to play), then adding silence would have introduced an extra +> unnecessary delay in playback. + +## Tweaking Aircast + +Aircast creates a configuration file called `aircast.xml` in your Home +Assistant configuration directory. This file allows you to tweak each device +separately. Every time it finds a new device, it will be added to that file. + +> **NOTE**: It is HIGHLY recommended to stop the addon before making changes +> to the configuration file manually. + +## Known issues and limitations + +- This add-on does support ARM-based devices, nevertheless, they must + at least be an ARMv7 device. (Raspberry Pi 1 and Zero is not supported). +- The configuration file of AirConnect (used by this add-on) is not + exposed to the user. We plan on adding that feature in a future release. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2017-2021 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-aircast/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[docs]: https://github.com/hassio-addons/addon-aircast/blob/main/aircast/DOCS.md +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-aircast/36742?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-aircast/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-aircast/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/aircast/README.md b/aircast/README.md new file mode 100644 index 0000000..09af32c --- /dev/null +++ b/aircast/README.md @@ -0,0 +1,34 @@ +# Home Assistant Community Add-on: AirCast + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +AirPlay capabilities for your Chromecast players. + +## About + +Apple devices use AirPlay to send audio to other devices, but this is not +compatible with Google's Chromecast. This add-on tries to solve this +compatibility gap. + +It detects Chromecast players in your network and creates virtual AirPlay +devices for each of them. It acts as a bridge between the AirPlay client +and the real Chromecast player. + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-aircast/36742?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[release-shield]: https://img.shields.io/badge/version-v3.1.1-blue.svg +[release]: https://github.com/hassio-addons/addon-aircast/tree/v3.1.1 \ No newline at end of file diff --git a/aircast/config.json b/aircast/config.json new file mode 100644 index 0000000..ce03f9a --- /dev/null +++ b/aircast/config.json @@ -0,0 +1,33 @@ +{ + "name": "AirCast", + "version": "3.1.1", + "slug": "aircast", + "description": "AirPlay capabilities for your Chromecast devices.", + "url": "https://github.com/hassio-addons/addon-aircast", + "startup": "services", + "init": false, + "arch": [ + "aarch64", + "amd64", + "armv7", + "i386" + ], + "hassio_api": true, + "host_network": true, + "map": [ + "config:rw" + ], + "options": { + "latency_rtp": 0, + "latency_http": 0, + "drift": false + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "address": "str?", + "latency_rtp": "int", + "latency_http": "int", + "drift": "bool" + }, + "image": "ghcr.io/hassio-addons/aircast/{arch}" +} \ No newline at end of file diff --git a/aircast/icon.png b/aircast/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6934a2c13fbfcf180e89544a2190d9dc6601bfd2 GIT binary patch literal 2439 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 literal 0 HcmV?d00001 diff --git a/aircast/translations/en.yaml b/aircast/translations/en.yaml new file mode 100644 index 0000000..840f072 --- /dev/null +++ b/aircast/translations/en.yaml @@ -0,0 +1,29 @@ +--- +configuration: + log_level: + name: Log level + description: >- + Controls the level of log details the add-on provides. + address: + name: Address + description: >- + Allows you to specify the IP address the AirCast server needs to + bind to. + latency_rtp: + name: RTP Latency + description: >- + Allows you to tweak the buffering, which is needed when the audio is + stuttering (e.g., low-quality network). This option specifies the number + of ms the add-on has to buffer the RTP audio (AirPlay). Setting this value + below 500ms is not recommended! Setting the value to 0 makes the add-on + to get the value from AirPlay. + latency_http: + name: HTTP Latency + description: >- + Allows you to tweak the buffering, which is needed when the audio is + stuttering (e.g., low-quality network). This option specifies the number + of ms the add-on has to buffer the HTTP audio. + drift: + name: Drift + description: >- + Allow to let timing reference drift (no click). diff --git a/airsonos/CHANGELOG.md b/airsonos/CHANGELOG.md new file mode 100644 index 0000000..664a828 --- /dev/null +++ b/airsonos/CHANGELOG.md @@ -0,0 +1,15 @@ +## What’s changed + +## ⬆️ Dependency updates + +- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#58) +- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#59) +- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#60) +- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#61) +- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#62) +- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#63) +- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#65) +- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#64) +- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2 @dependabot (#66) +- ⬆️ Upgrades add-on base image to v4.2.1 @frenck (#70) +- ⬆️ Upgrades AirConnect to 0.2.50.5 @frenck (#71) diff --git a/airsonos/DOCS.md b/airsonos/DOCS.md new file mode 100644 index 0000000..6462cc0 --- /dev/null +++ b/airsonos/DOCS.md @@ -0,0 +1,245 @@ +# Home Assistant Community Add-on: AirSonos + +Apple devices use AirPlay to send audio to other devices, but this is not +compatible with Sonos players. This add-on tries to solve this +compatibility gap. + +It detects Sonos players in your network and creates virtual AirPlay +devices for each of them. It acts as a bridge between the AirPlay client +and the real Sonos device. + +Since Sonos uses UPnP, the add-on might also work for other UPnP players +(e.g., newer Samsung televisions). + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the “AirSonos” add-on in the Supervisor add-on store + and install it. +1. Start the "AirSonos" add-on +1. Check the logs of the "AirSonos" add-on to see if everything went well. + +After ~30 seconds you should see some log messages appear in the add-on log. +Using your iOS/Mac/iTunes/Airfoil/other clients, you should now see new AirPlay +devices and can try to play audio to them. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +address: 192.168.1.234 +port: 49152 +latency_rtp: 1000 +latency_http: 2000 +drift: true +``` + +**Note**: _This is just an example, don't copy and past it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +These log level also affects the log levels of AirSonos server. + +### Option: `address` + +This option allows you to specify the IP address the AirSonos server needs to +bind to. It will automatically detect the interface to use when this option is +left empty. Nevertheless, it might get detected wrong (e.g., in case you have +multiple network interfaces). + +### Option: `port` + +The port the AirSonos server will expose itself on. The default `49152` should +be fine in most cases. Only change this if you really have to. + +### Option: `latency_rtp` + +Allows you to tweak the buffering, which is needed when the audio is stuttering +(e.g., low-quality network). This option specifies the number of ms the addon +has to buffer the RTP audio (AirPlay). Setting this value below 500ms is not +recommended! + +### Option: `latency_http` + +Allows you to tweak the buffering, which is needed when the audio is stuttering +(e.g., low-quality network). This option specifies the number of ms the addon +has to buffer the HTTP audio. + +### Option: `drift` + +Set to `true` to let timing reference drift (no click). + +## Sonos hints and limitations + +When a Sonos group is created, only the master of that group will appear as +an AirPlay player and others will be removed if they were already detected. +If the group is later split, then individual players will re-appear. +Each detection cycle takes ~30 seconds. + +Volume is set for the whole group, but the same level applies to all members. +If you need to change individual volumes, you need to use a Sonos native +controller. **Note**: these will be overridden if the group volume is later +changed again from an AirPlay device. + +## Latency options explained + +These bridges receive real-time "synchronous" audio from the AirPlay controller +in the format of RTP frames and forward it to the Sonos player in an HTTP +"asynchronous" continuous audio binary format. In other words, +the AirPlay clients "push" the audio using RTP and the Sonos players +"pull" the audio using an HTTP GET request. + +A player using HTTP to get its audio expects to receive an initial large +portion of audio as the response to its GET and this creates a large enough +buffer to handle most further network congestion/delays. The rest of the audio +transmission is regulated by the player using TCP flow control. However, when +the source is an AirPlay RTP device, there is no such significant portion of +audio available in advance to be sent to the Player, as the audio comes to the +bridge in real time. Every 8ms, an RTP frame is received and is immediately +forwarded as the continuation of the HTTP body. If the Sonos player +starts to play immediately the first received audio sample, expecting an initial +burst to follow, then any network congestion delaying RTP audio will starve +the player and create shuttering. + +The `latency_http` option allows a certain amount of silence frames to be sent +to the Sonos player, in a burst at the beginning. Then, while this +"artificial" silence is being played, it is possible for the bridge to build +a buffer of RTP frames that will then hide network delays that might happen +in further RTP frames transmission. This delays the start of the playback +by `latency_http` ms. + +However, RTP frames are transmitted using UDP, which means there is no guarantee +of delivery, so frames might be lost from time to time +(often happens on WiFi networks). To allow detection of lost frames, they are +numbered sequentially (1,2 ... n) so every time two received frames are not +consecutive, the missing ones can be asked again by the AirPlay receiver. + +Typically, the bridge forwards immediately every RTP frame using HTTP and again, +in HTTP, the notion of frame numbers does not exist, it is just the continuous +binary audio. So it is not possible to send audio non-sequentially when using +HTTP. + +For example, if received RTP frames are numbered 1,2,3,6, this bridge will +forward (once decoded and transformed into raw audio) 1,2,3 immediately using +HTTP but when it receives 6, it will re-ask for 4 and 5 to be resent and +hold 6 while waiting (if 6 was transmitted immediately, the Sonos +will play 1,2,3,6 ... not nice). + +The `latency_rtp` option sets for how long frame 6 shall be held before adding +two silence frames for 4 and 5 and send sending 4,5,6. Obviously, if this delay +is larger than the buffer in the Sonos player, playback will stop by +lack of audio. Note that `latency_rtp` does not delay playback start. + +> **Note**: `latency_rtp` and `latency_http` could have been merged into a +> single `latency` parameter which would have set the max RTP frames holding time +> as well as the duration of the initial additional silence (delay), +> however, all Sonos devices do properly their own buffering of HTTP audio +> (i.e., they wait until they have received a certain amount of audio before +> starting to play), then adding silence would have introduced an extra +> unnecessary delay in playback. + +## Tweaking AirSonos + +AirSonos creates a configuration file called `airsonos.xml` in your Home +Assistant configuration directory. This file allows you to tweak each device +separately. Every time it finds a new device, it will be added to that file. + +> **NOTE**: It is HIGHLY recommended to stop the addon before making changes +> to the configuration file manually. + +## Known issues and limitations + +- This add-on does support ARM-based devices, nevertheless, they must + at least be an ARMv7 device. (Raspberry Pi 1 and Zero is not supported). + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2017-2021 Franck Nijhof + +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. + +[commits]: https://github.com/hassio-addons/addon-airsonos/commits/main +[contributors]: https://github.com/hassio-addons/addon-airsonos/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-airsonos/36796?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-airsonos/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-airsonos/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/airsonos/README.md b/airsonos/README.md new file mode 100644 index 0000000..318c498 --- /dev/null +++ b/airsonos/README.md @@ -0,0 +1,37 @@ +# Home Assistant Community Add-on: AirSonos + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +AirPlay capabilities for your Sonos (and UPnP) players. + +## About + +Apple devices use AirPlay to send audio to other devices, but this is not +compatible with Sonos players. This add-on tries to solve this +compatibility gap. + +It detects Sonos players in your network and creates virtual AirPlay +devices for each of them. It acts as a bridge between the AirPlay client +and the real Sonos device. + +Since Sonos uses UPnP, the add-on might also work for other UPnP players +(e.g., newer Samsung televisions). + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-airsonos/36796?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[release-shield]: https://img.shields.io/badge/version-v3.1.1-blue.svg +[release]: https://github.com/hassio-addons/addon-airsonos/tree/v3.1.1 \ No newline at end of file diff --git a/airsonos/config.json b/airsonos/config.json new file mode 100644 index 0000000..a9310fb --- /dev/null +++ b/airsonos/config.json @@ -0,0 +1,35 @@ +{ + "name": "AirSonos", + "version": "3.1.1", + "slug": "airsonos", + "description": "AirPlay capabilities for your Sonos (and UPnP) devices.", + "url": "https://github.com/hassio-addons/addon-airsonos", + "startup": "services", + "init": false, + "arch": [ + "aarch64", + "amd64", + "armv7", + "i386" + ], + "hassio_api": true, + "host_network": true, + "map": [ + "config:rw" + ], + "options": { + "port": 49152, + "latency_rtp": 1000, + "latency_http": 2000, + "drift": false + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "address": "str?", + "port": "port", + "latency_rtp": "int", + "latency_http": "int", + "drift": "bool" + }, + "image": "ghcr.io/hassio-addons/airsonos/{arch}" +} \ No newline at end of file diff --git a/airsonos/icon.png b/airsonos/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..17241bed3b5745278f9d5dbf979d7a0579faa4fd GIT binary patch literal 2521 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 literal 0 HcmV?d00001 diff --git a/airsonos/logo.png b/airsonos/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..78b48d49c72511d41ac3a667e0f3d793df42d935 GIT binary patch literal 45358 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 ifH0_kYK^f6mI4kEb>ic0wvMa-0000- + Controls the level of log details the add-on provides. + port: + name: Port + description: >- + The port to run on, the default of 49152 should be good for most cases. + address: + name: Address + description: >- + Allows you to specify the IP address the AirCast server needs to + bind to. + latency_rtp: + name: RTP Latency + description: >- + Allows you to tweak the buffering, which is needed when the audio is + stuttering (e.g., low-quality network). This option specifies the number + of ms the add-on has to buffer the RTP audio (AirPlay). Setting this value + below 500ms is not recommended! Setting the value to 0 makes the add-on + to get the value from AirPlay. + latency_http: + name: HTTP Latency + description: >- + Allows you to tweak the buffering, which is needed when the audio is + stuttering (e.g., low-quality network). This option specifies the number + of ms the add-on has to buffer the HTTP audio. + drift: + name: Drift + description: >- + Allow to let timing reference drift (no click). diff --git a/appdaemon/CHANGELOG.md b/appdaemon/CHANGELOG.md new file mode 100644 index 0000000..33b00a2 --- /dev/null +++ b/appdaemon/CHANGELOG.md @@ -0,0 +1,11 @@ +## What’s changed + +## ⬆️ Dependency updates + +- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#122) +- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#123) +- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#125) +- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#126) +- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#124) +- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2.2 @dependabot (#128) +- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#130) diff --git a/appdaemon/DOCS.md b/appdaemon/DOCS.md new file mode 100644 index 0000000..818a14a --- /dev/null +++ b/appdaemon/DOCS.md @@ -0,0 +1,221 @@ +# Home Assistant Community Add-on: AppDaemon 4 + +AppDaemon is a loosely coupled, multithreaded, sandboxed python execution +environment for writing automation apps for Home Assistant home automation +software. It also provides a configurable dashboard (HADashboard) suitable +for wall mounted tablets. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "AppDaemon 4" add-on in the Supervisor add-on store and + install it. +1. Start the "AppDaemon 4" add-on +1. Check the logs of the "AppDaemon 4" add-on to see if everything went well. + +:information_source: Please note, the add-on is pre-configured to connect with +Home Assistant. There is no need to create access tokens or to set your +Home Assistant URL in the AppDaemon configuration. + +This automatic handling of the URL and token conflicts with the AppDaemon +official documentation. The official documentation will state `ha_url` and +`token` options are required. For the add-on, however, this isn't needed. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +system_packages: + - ffmpeg +python_packages: + - PyMySQL + - Pillow +``` + +**Note**: _This is just an example, don't copy and past it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +These log level also affects the log levels of the AppDaemon. + +### Option: `system_packages` + +Allows you to specify additional [Alpine packages][alpine-packages] to be +installed to your AppDaemon setup (e.g., `g++`. `make`, `ffmpeg`). + +**Note**: _Adding many packages will result in a longer start-up time +for the add-on._ + +### Option: `python_packages` + +Allows you to specify additional [Python packages][python-packages] to be +installed to your AppDaemon setup (e.g., `PyMySQL`. `Requests`, `Pillow`). + +**Note**: _Adding many packages will result in a longer start-up time +for the add-on._ + +#### Option: `init_commands` + +Customize your environment even more with the `init_commands` option. +Add one or more shell commands to the list, and they will be executed every +single time this add-on starts. + +## AppDaemon and HADashboard configuration + +This add-on does not configure the AppDaemon or HADashboard for you. +It does, however, create some sample files to get you started on the first run. + +The configuration of the AppDaemon can be found in the `/config/appdaemon` +directory. + +For more information about configuring AppDaemon, please refer to the +extensive documentation they offer: + + + +## Home Assistant access tokens and ha_url settings + +By default, this add-on ships without a `token` and without the `ha_url` +in the `appdaemon.yaml` config file. **This is not an error!** + +The add-on takes care of these settings for you and you do not need to provide +or set these in the AppDaemon configuration. + +This automatic handling of the URL and token conflicts with the AppDaemon +official documentation. The official documentation will state `ha_url` and +`token` options are required. For the add-on, these aren't needed. + +However, you are free to set them if you want to override, however, in +general usage, that should not be needed and is not recommended for this add-on. + +## Upgrading from AppDaemon 3.x + +If you have previously ran AppDaemon 3.x (e.g., via an add-on), these steps +will help you getting upgraded to AppDaemon 4.x. + +- After installing this add-on, stop the current running AppDaemon 3.x add-on. +- Open your `/config/appdaemon/appdaemon.yaml` file in an editor. + - Remove the `log`. + - Remove`threads`, `api_port`, `app_dir`, `ha_url` and `token`. + - Add the following to the `appdaemon` section: `latitude`, `longitude`, + `elevation` and `time_zone`. + - Add a `http` section with `url: http://127.0.0.1:5050` in it. + - At the end of the file add `admin:` and `api:`. + - Remove everthing under `hadashboard:`, leaving just that. + +The result should look something like this: + +```yaml +--- +secrets: /config/secrets.yaml +appdaemon: + latitude: 52.379189 + longitude: 4.899431 + elevation: 2 + time_zone: Europe/Amsterdam + plugins: + HASS: + type: hass +http: + url: http://127.0.0.1:5050 +hadashboard: +admin: +api: +``` + +Be sure to check the "Upgrading from 3.x" on the AppDaemon website: + + + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2021 Franck Nijhof + +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. + +[alpine-packages]: https://pkgs.alpinelinux.org/packages +[contributors]: https://github.com/hassio-addons/addon-appdaemon/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-appdaemon-4/163259?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-appdaemon/issues +[python-packages]: https://pypi.org/ +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-appdaemon/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/appdaemon/README.md b/appdaemon/README.md new file mode 100644 index 0000000..7d642fe --- /dev/null +++ b/appdaemon/README.md @@ -0,0 +1,34 @@ +# Home Assistant Community Add-on: AppDaemon 4 + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Python Apps and HADashboard for Home Assistant + +## About + +AppDaemon is a loosely coupled, multithreaded, sandboxed python execution +environment for writing automation apps for Home Assistant home automation +software. It also provides a configurable dashboard (HADashboard) suitable +for wall mounted tablets. + +![HADashboard screenshot][screenshot] + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-appdaemon-4/163259?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v0.6.2-blue.svg +[release]: https://github.com/hassio-addons/addon-appdaemon/tree/v0.6.2 +[screenshot]: https://github.com/hassio-addons/addon-appdaemon/raw/main/images/screenshot.png \ No newline at end of file diff --git a/appdaemon/config.json b/appdaemon/config.json new file mode 100644 index 0000000..80f4532 --- /dev/null +++ b/appdaemon/config.json @@ -0,0 +1,47 @@ +{ + "name": "AppDaemon 4", + "version": "0.6.2", + "slug": "appdaemon", + "description": "Python Apps and Dashboard using AppDaemon 4.x for Home Assistant", + "url": "https://github.com/hassio-addons/addon-appdaemon", + "webui": "http://[HOST]:[PORT:5050]", + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "init": false, + "homeassistant_api": true, + "uart": true, + "ports": { + "5050/tcp": 5050 + }, + "ports_description": { + "5050/tcp": "AppDaemon" + }, + "map": [ + "config:rw", + "share:rw", + "ssl" + ], + "options": { + "system_packages": [], + "python_packages": [], + "init_commands": [] + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "system_packages": [ + "str" + ], + "python_packages": [ + "str" + ], + "init_commands": [ + "str" + ] + }, + "image": "ghcr.io/hassio-addons/appdaemon/{arch}" +} \ No newline at end of file diff --git a/appdaemon/icon.png b/appdaemon/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9bce17420763f4f1a499220175521a0b825e36d5 GIT binary patch literal 562 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 + Controls the level of log details the add-on provides. + system_packages: + name: System packages + description: >- + Allows you to specificy a list of additional Alpine Linux packages to be + installed before AppDaemon starts. + python_packages: + name: Python packages + description: >- + Allows you to specificy a list of additional Python packages to be + installed before AppDaemon starts. + init_commands: + name: Init commands + description: >- + Allows you to specificy a list of custom shell commands that are ran + before AppDaemon starts. +network: + 5050/tcp: The AppDaemon webserver diff --git a/appdaemon/translations/nl.yaml b/appdaemon/translations/nl.yaml new file mode 100644 index 0000000..b0aa8ca --- /dev/null +++ b/appdaemon/translations/nl.yaml @@ -0,0 +1,15 @@ +configuration: + init_commands: + description: 'Allows you to specificy a list of custom shell commands that are ran before AppDaemon starts.' + name: 'Init commands' + log_level: + description: 'Bepaalt het niveau van de logs die de add-on toont.' + name: 'Log niveau' + python_packages: + description: 'Allows you to specificy a list of additional Python packages to be installed before AppDaemon starts.' + name: 'Python packages' + system_packages: + description: 'Allows you to specificy a list of additional Alpine Linux packages to be installed before AppDaemon starts.' + name: 'System packages' +network: + 5050/tcp: 'De AppDaemon webserver' diff --git a/asterisk/CHANGELOG.md b/asterisk/CHANGELOG.md new file mode 100644 index 0000000..1bbfee3 --- /dev/null +++ b/asterisk/CHANGELOG.md @@ -0,0 +1,3 @@ +## 1.0.0 - 2021-05-09 + +* ➕ Add Asterisk server `0.20.21` diff --git a/asterisk/DOCS.md b/asterisk/DOCS.md new file mode 100644 index 0000000..284bfc0 --- /dev/null +++ b/asterisk/DOCS.md @@ -0,0 +1,19 @@ +# Configuration + +```yaml +config_files: + - /config/asterisk/sip.conf +``` + +### `config_files` + +A list of paths to your configuration files of asterisk. +Every listed file will overwrite the template config file at `/etc/asterisk` on each addon start. +The config files can be located on `/config` or`/share`. + +For the sample files take a look at the [official asterisk repository](https://github.com/asterisk/asterisk/blob/master/configs/samples). + +## Testing + +As default there is a test sip phone setup. With user `1001` and password `1234` the number `100` can be called. +A sound should confirm the working state. diff --git a/asterisk/Dockerfile b/asterisk/Dockerfile new file mode 100644 index 0000000..f6b1b7a --- /dev/null +++ b/asterisk/Dockerfile @@ -0,0 +1,10 @@ +ARG BUILD_FROM +FROM $BUILD_FROM + +RUN apk add --no-cache \ + asterisk=18.2.1-r1 \ + asterisk-sample-config=18.2.1-r1 + +ENTRYPOINT [ "/init" ] +CMD [] +COPY root / diff --git a/asterisk/README.md b/asterisk/README.md new file mode 100644 index 0000000..d389cd6 --- /dev/null +++ b/asterisk/README.md @@ -0,0 +1,26 @@ +# Asterisk + +[Asterisk](https://www.asterisk.org/) is an open source framework for building communications applications. Asterisk turns an ordinary computer into a communications server. + +![Addon Stage][stage-badge] +![Supports aarch64 Architecture][aarch64-badge] +![Supports amd64 Architecture][amd64-badge] +![Supports armhf Architecture][armhf-badge] +![Supports armv7 Architecture][armv7-badge] +![Supports i386 Architecture][i386-badge] + +[![Install on my Home Assistant][install-badge]][install-url] +[![Donate][donation-badge]][donation-url] + + +[aarch64-badge]: https://img.shields.io/badge/aarch64-yes-green.svg?style=for-the-badge +[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg?style=for-the-badge +[armhf-badge]: https://img.shields.io/badge/armhf-yes-green.svg?style=for-the-badge +[armv7-badge]: https://img.shields.io/badge/armv7-yes-green.svg?style=for-the-badge +[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg?style=for-the-badge +[install-url]: https://my.home-assistant.io/redirect/supervisor_addon?addon=243ffc37_asterisk +[stage-badge]: https://img.shields.io/badge/Addon%20stage-stable-green.svg?style=for-the-badge + +[install-badge]: https://img.shields.io/badge/Install%20on%20my-Home%20Assistant-41BDF5?logo=home-assistant&style=for-the-badge +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=for-the-badge&logoColor=white +[donation-url]: https://www.buymeacoffee.com/Poeschl diff --git a/asterisk/build.json b/asterisk/build.json new file mode 100644 index 0000000..4ceab93 --- /dev/null +++ b/asterisk/build.json @@ -0,0 +1,9 @@ +{ + "build_from": { + "armhf": "ghcr.io/home-assistant/armhf-base:3.13", + "armv7": "ghcr.io/home-assistant/armv7-base:3.13", + "aarch64": "ghcr.io/home-assistant/aarch64-base:3.13", + "amd64": "ghcr.io/home-assistant/amd64-base:3.13", + "i386": "ghcr.io/home-assistant/i386-base:3.13" + } +} diff --git a/asterisk/config.json b/asterisk/config.json new file mode 100644 index 0000000..9020631 --- /dev/null +++ b/asterisk/config.json @@ -0,0 +1,36 @@ +{ + "name": "Asterisk", + "version": "1.0.0", + "slug": "asterisk", + "description": "Asterisk is an open source framework for building communications applications. Asterisk turns an ordinary computer into a communications server", + "url": "https://github.com/Poeschl/Hassio-Addons/tree/master/asterisk", + "arch": [ + "armv7", + "armhf", + "aarch64", + "amd64", + "i386" + ], + "startup": "application", + "boot": "auto", + "image": "ghcr.io/poeschl/ha-asterisk-{arch}", + "map": ["share","config"], + "ports": { + "5060/tcp": 5060, + "5060/udp": 5060, + "4569/udp": 4569, + "2727/udp": 2727 + }, + "ports_description": { + "5060/tcp": "Port for SIP", + "5060/udp": "Port for SIP", + "4569/udp": "Port for IAX2", + "2727/udp": "Port for MGCP" + }, + "options": { + "config_files": [] + }, + "schema": { + "config_files": ["match(/(share|config)/.+)"] + } +} diff --git a/asterisk/icon.png b/asterisk/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..531747f2bd1261fdce23a06af8bc25ce2d185940 GIT binary patch literal 13166 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 literal 0 HcmV?d00001 diff --git a/asterisk/logo.png b/asterisk/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..d942e4c56e601b4c8520268f4b010c4f2c27eff2 GIT binary patch literal 41066 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 Q77Eg2BoxJKL=6M~1IqFnPyhe` literal 0 HcmV?d00001 diff --git a/asterisk/root/etc/asterisk/asterisk.conf b/asterisk/root/etc/asterisk/asterisk.conf new file mode 100644 index 0000000..02c9678 --- /dev/null +++ b/asterisk/root/etc/asterisk/asterisk.conf @@ -0,0 +1,13 @@ +[directories] +astcachedir => /var/cache/asterisk +astetcdir => /etc/asterisk +astmoddir => /usr/lib/asterisk/modules +astvarlibdir => /var/lib/asterisk +astdbdir => /var/lib/asterisk +astkeydir => /var/lib/asterisk +astdatadir => /var/lib/asterisk +astagidir => /var/lib/asterisk/agi-bin +astspooldir => /var/spool/asterisk +astrundir => /var/run/asterisk +astlogdir => /var/log/asterisk +astsbindir => /usr/sbin \ No newline at end of file diff --git a/asterisk/root/etc/asterisk/extensions.conf b/asterisk/root/etc/asterisk/extensions.conf new file mode 100644 index 0000000..9bfdd49 --- /dev/null +++ b/asterisk/root/etc/asterisk/extensions.conf @@ -0,0 +1,5 @@ +[internal] +exten = 100,1,Answer() +same = n,Wait(1) +same = n,Playback(test) +same = n,Hangup() \ No newline at end of file diff --git a/asterisk/root/etc/asterisk/modules.conf b/asterisk/root/etc/asterisk/modules.conf new file mode 100644 index 0000000..f531ba1 --- /dev/null +++ b/asterisk/root/etc/asterisk/modules.conf @@ -0,0 +1,56 @@ +; +; Asterisk configuration file +; +; Module Loader configuration file +; + +[modules] +autoload=yes +; +; Any modules that need to be loaded before the Asterisk core has been +; initialized (just after the logger initialization) can be loaded +; using 'preload'. 'preload' forces a module and the modules it +; is known to depend upon to be loaded earlier than they normally get +; loaded. +; +; NOTE: There is no good reason left to use 'preload' anymore. It was +; historically required to preload realtime driver modules so you could +; map Asterisk core configuration files to Realtime storage. +; This is no longer needed. +; +;preload = your_special_module.so +; +; If you want Asterisk to fail if a module does not load, then use +; the "require" keyword. Asterisk will exit with a status code of 2 +; if a required module does not load. +; +;require = chan_pjsip.so +; +; If you want you can combine with preload +; preload-require = your_special_module.so +; +;load = res_musiconhold.so +; +; Load one of: chan_oss, alsa, or console (portaudio). +; By default, load chan_oss only (automatically). +; +noload = chan_alsa.so +noload = chan_console.so +;noload = chan_oss.so +; +; Do not load res_hep and kin unless you are using HEP monitoring +; in your network. +; +noload = res_hep.so +noload = res_hep_pjsip.so +noload = res_hep_rtcp.so +; +; Do not load chan_sip by default, it may conflict with res_pjsip. +noload = chan_sip.so +; +; Load one of the voicemail modules as they are mutually exclusive. +; By default, load app_voicemail only (automatically). +; +;noload = app_voicemail.so +noload = app_voicemail_imap.so +noload = app_voicemail_odbc.so \ No newline at end of file diff --git a/asterisk/root/etc/asterisk/pjsip.conf b/asterisk/root/etc/asterisk/pjsip.conf new file mode 100644 index 0000000..2bec951 --- /dev/null +++ b/asterisk/root/etc/asterisk/pjsip.conf @@ -0,0 +1,22 @@ +[general] +type=transport +protocol=udp +bind=0.0.0.0 + +[1001] +type = endpoint +context = internal +disallow=all +allow=ulaw +aors = 1001 +auth = auth1001 + +[1001] +type = aor +max_contacts = 1 + +[auth1001] +type=auth +auth_type=userpass +password=1234 +username=1001 \ No newline at end of file diff --git a/asterisk/root/etc/cont-init.d/setup-config-files.sh b/asterisk/root/etc/cont-init.d/setup-config-files.sh new file mode 100644 index 0000000..4ea909c --- /dev/null +++ b/asterisk/root/etc/cont-init.d/setup-config-files.sh @@ -0,0 +1,13 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +set -e + +CONFIG_FILES=$(bashio::config 'config_files') + +for config in $CONFIG_FILES; do + bashio::log.info "Apply '$config'" + cp "$config" '/etc/asterisk/' +done + +chown -R asterisk:asterisk /etc/asterisk +chmod 640 -R /etc/asterisk diff --git a/asterisk/root/etc/fix-attrs.d/sample-sound b/asterisk/root/etc/fix-attrs.d/sample-sound new file mode 100644 index 0000000..92259ce --- /dev/null +++ b/asterisk/root/etc/fix-attrs.d/sample-sound @@ -0,0 +1 @@ +/var/lib/asterisk/sounds/test.wav false asterisk:asterisk 0640 0640 \ No newline at end of file diff --git a/asterisk/root/etc/services.d/asterisk/run b/asterisk/root/etc/services.d/asterisk/run new file mode 100644 index 0000000..0d1a478 --- /dev/null +++ b/asterisk/root/etc/services.d/asterisk/run @@ -0,0 +1,8 @@ +#!/usr/bin/with-contenv bashio +set -e + +# Enable Jemalloc for better memory handling +export LD_PRELOAD="/usr/local/lib/libjemalloc.so.2" + +bashio::log.info 'Start Asterisk' +asterisk -T -W -p -f -dd diff --git a/build-site.sh b/build-site.sh new file mode 100755 index 0000000..3440c6b --- /dev/null +++ b/build-site.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +# ============================================================================== +# Community Hass.io Add-ons for Home Assistant +# This script builds a small little website +# ============================================================================== +set -o errexit # Exit script when a command exits with non-zero status +set -o errtrace # Exit on error inside any functions or sub-shells +set -o nounset # Exit script on use of an undefined variable +set -o pipefail # Return exit status of the last command in the pipe that failed + +# Switch to the root of the repository. +cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")" + +# Create a documentation folder +mkdir -p docs + +# Install requirements +pip install -r requirements.txt + +# Download Beta page +curl https://raw.githubusercontent.com/hassio-addons/repository-beta/master/README.md --output docs/beta.md + +# Download Edge page +curl https://raw.githubusercontent.com/hassio-addons/repository-edge/master/README.md --output docs/edge.md + +# Get the pages into the docs folder +ln -sf ../README.md docs/index.md +ln -sf ../LICENSE.md docs/license.md +ln -sf ../.github/CONTRIBUTING.md docs/contributing.md +ln -sf ../.github/CODE_OF_CONDUCT.md docs/code-of-conduct.md + +# Build! +mkdocs build diff --git a/chrony/CHANGELOG.md b/chrony/CHANGELOG.md new file mode 100644 index 0000000..f80e5ac --- /dev/null +++ b/chrony/CHANGELOG.md @@ -0,0 +1,15 @@ +## What’s changed + +## ⬆️ Dependency updates + +- Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#61) +- Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#62) +- Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#63) +- Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#64) +- Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#65) +- Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#67) +- Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#66) +- Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#68) +- Bump frenck/action-addon-information from 1.1 to 1.2.2 @dependabot (#70) +- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#72) +- ⬆ Update base image to v10.0.0 and chrony to v4.1-r0 @sinclairpaul (#73) diff --git a/chrony/DOCS.md b/chrony/DOCS.md new file mode 100644 index 0000000..d16182a --- /dev/null +++ b/chrony/DOCS.md @@ -0,0 +1,144 @@ +# Home Assistant Community Add-on: chrony + +An NTP server accessible by all hosts on the local network, useful for setting +time on devices with controlled internet access (such as cameras). +The addon can also be used to set the system clock. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "chrony" add-on in the add-on store and install it. +1. Start the "chrony" add-on +1. Check the logs of the "chrony" add-on to see if everything went well. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +set_system_clock: true +mode: pool +ntp_pool: pool.ntp.org +ntp_server: + - 54.39.13.155 + - briareus.schulte.org +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +### Option: `set_system_clock` + +The `set_system_clock` option configures chrony to set the local system clock. +For some systems it may be preferable to use a different mechanism for +setting the system time. + +### Option: `mode` + +The `mode` option configures chrony to use either `pool` or `server` mode. +These options are: + +- `pool`: References a pool of servers such as pool.ntp.org (Recommended). +- `server`: References a list of specific names or addresses. + +Based on the mode the `ntp_pool` or `ntp_server` option will be used. + +### Option: `ntp_pool` + +Used by pool mode and configures the pool name to be used, should be a DNS +record with multiple entries. The application will select which to reference. + +### Option: `ntp_server` + +Used by server mode, an array of server names or IP Addresses used as the +time source. The application will select which to reference. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Paul Sinclair][sinclairpaul]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2019-2021 Paul Sinclair + +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. + +[contributors]: https://github.com/hassio-addons/addon-chrony/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/community-hass-io-xxxxx/xxxxx +[sinclairpaul]: https://github.com/sinclairpaul +[issue]: https://github.com/hassio-addons/addon-chrony/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-chrony/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/chrony/README.md b/chrony/README.md new file mode 100644 index 0000000..807ba12 --- /dev/null +++ b/chrony/README.md @@ -0,0 +1,25 @@ +# Home Assistant Community Add-on: chrony + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee] + +chrony NTP Server. + +## About + +An NTP server accesible by all hosts on the local network, useful for setting +time on devices with controlled internet access (such as cameras). + +[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg +[buymeacoffee]: https://www.buymeacoffee.com/sinclairpaul +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/?u=frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[release-shield]: https://img.shields.io/badge/version-v2.2.0-blue.svg +[release]: https://github.com/hassio-addons/addon-chrony/tree/v2.2.0 \ No newline at end of file diff --git a/chrony/config.json b/chrony/config.json new file mode 100644 index 0000000..dc16820 --- /dev/null +++ b/chrony/config.json @@ -0,0 +1,45 @@ +{ + "name": "chrony", + "version": "2.2.0", + "slug": "chrony", + "description": "A local NTP (Network Time Protocol) server for cameras etc.", + "url": "https://github.com/hassio-addons/addon-chrony", + "startup": "system", + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "hassio_api": true, + "init": false, + "privileged": [ + "SYS_TIME" + ], + "ports": { + "123/udp": 123 + }, + "ports_description": { + "123/udp": "NTP; Network Time Protocol" + }, + "options": { + "set_system_clock": true, + "mode": "pool", + "ntp_pool": "pool.ntp.org", + "ntp_server": [ + "54.39.13.155", + "briareus.schulte.org" + ] + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "set_system_clock": "bool", + "ntp_pool": "str?", + "ntp_server": [ + "str?" + ], + "mode": "list(pool|server)" + }, + "image": "ghcr.io/hassio-addons/chrony/{arch}" +} \ No newline at end of file diff --git a/chrony/icon.png b/chrony/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9e9da29ad15affd3a6366fcbed6c74ff29af10df GIT binary patch literal 16393 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 literal 0 HcmV?d00001 diff --git a/chrony/logo.png b/chrony/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac36705b0ffbda096e97e73632ecafd84fba04f GIT binary patch literal 7573 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 literal 0 HcmV?d00001 diff --git a/cloudcommander/CHANGELOG.md b/cloudcommander/CHANGELOG.md new file mode 100644 index 0000000..6a16041 --- /dev/null +++ b/cloudcommander/CHANGELOG.md @@ -0,0 +1,42 @@ + +## 15.9.7 (28-06-2021) +- Update to latest version from coderaiser/cloudcmd +- Allow mounting SMB shares +- Allow mounting local drives + +## 15.9.6 (14-06-2021) +- Update to latest version from coderaiser/cloudcmd + +## 15.9.5 (09-06-2021) +- Update to latest version from coderaiser/cloudcmd + +## 15.9.4 (23-05-2021) +- Update to latest version from coderaiser/cloudcmd + +## 15.9.4 +- Update to latest version from coderaiser/cloudcmd + +## 15.9.3 +- Update to latest version from coderaiser/cloudcmd + +## 15.9.2 +- Update to latest version from coderaiser/cloudcmd + +## 15.9.1 +- Update to latest version from coderaiser/cloudcmd + +## 15.9.0 +- Update to latest version from coderaiser/cloudcmd + +## 15.8.1 +- Update to latest version from coderaiser/cloudcmd + +## 15.8.0 +- Update to latest version from coderaiser/cloudcmd + +## 15.7.1 +- Update to latest version from coderaiser/cloudcmd + +## 15.7.0 +- Update to latest version from coderaiser/cloudcmd + diff --git a/cloudcommander/Dockerfile b/cloudcommander/Dockerfile new file mode 100644 index 0000000..0a097b2 --- /dev/null +++ b/cloudcommander/Dockerfile @@ -0,0 +1,39 @@ +ARG BUILD_VERSION +ARG BUILD_UPSTREAM="15.9.7" +FROM coderaiser/cloudcmd:$BUILD_UPSTREAM + +COPY run.sh / + +ARG BASHIO_VERSION=0.13.0 + +RUN \ + ################ + # Install apps # + ################ + apt-get update \ + && apt-get install -y --no-install-recommends \ + jq \ + cifs-utils \ + keyutils \ + \ + ################## + # Install bashio # + ################## + && mkdir -p /tmp/bashio \ + && curl -L -f -s "https://github.com/hassio-addons/bashio/archive/v${BASHIO_VERSION}.tar.gz" \ + | tar -xzf - --strip 1 -C /tmp/bashio \ + && mv /tmp/bashio/lib /usr/lib/bashio \ + && ln -s /usr/lib/bashio/bashio /usr/bin/bashio \ + && rm -rf /tmp/bashio \ + \ + /var/{cache,log}/* \ + /var/lib/apt/lists/* \ + \ + ############### + # Permissions # + ############### + && chmod 777 /run.sh + +ENTRYPOINT [ "/run.sh" ] + +VOLUME [ "/data" ] diff --git a/cloudcommander/README.md b/cloudcommander/README.md new file mode 100644 index 0000000..e2bc34f --- /dev/null +++ b/cloudcommander/README.md @@ -0,0 +1,28 @@ +# Home assistant add-on: Cloudcommander +![Supports aarch64 Architecture][aarch64-shield] ![Supports amd64 Architecture][amd64-shield] ![Supports armhf Architecture][armhf-shield] ![Supports armv7 Architecture][armv7-shield] + +## About + +Cloud Commander a file manager for the web with console and editor. +This addon is based on the [docker image](https://hub.docker.com/r/coderaiser/cloudcmd). + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Hass.io add-on. + +1. [Add my Hass.io add-ons repository][repository] to your Hass.io instance. +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. + +## Configuration + +Webui can be found at `:8000`. + +[repository]: https://github.com/alexbelgium/hassio-addons +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg diff --git a/cloudcommander/apparmor.txt b/cloudcommander/apparmor.txt new file mode 100644 index 0000000..1e9c60b --- /dev/null +++ b/cloudcommander/apparmor.txt @@ -0,0 +1,48 @@ +#include + +profile cloudcommander_addon flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + mount, + umount, + remount, + + capability setgid, + capability setuid, + capability sys_admin, + capability dac_read_search, + # capability dac_override, + # capability sys_rawio, + +# S6-Overlay + /bin/** ix, + /usr/bin/** ix, + /usr/lib/bashio/** ix, + /etc/s6/** rix, + /run/s6/** rix, + /etc/services.d/** rwix, + /etc/cont-init.d/** rwix, + /etc/cont-finish.d/** rwix, + /init rix, + /var/run/** mrwkl, + /var/run/ mrwkl, + /dev/i2c-1 mrwkl, + # Files required + /dev/sda1 mrwkl, + /dev/sdb1 mrwkl, + /dev/mmcblk0p1 mrwkl, + /dev/* mrwkl, + /tmp/** mrkwl, + + # Data access + /data/** rw, + + # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container + ptrace (trace,read) peer=docker-default, + + # docker daemon confinement requires explict allow rule for signal + signal (receive) set=(kill,term) peer=/usr/bin/docker, + +} diff --git a/cloudcommander/config.json b/cloudcommander/config.json new file mode 100644 index 0000000..c0bde73 --- /dev/null +++ b/cloudcommander/config.json @@ -0,0 +1,38 @@ +{ + "name": "Cloudcommander", + "version": "15.9.7", + "upstream": "15.9.7", + "slug": "cloudcommander", + "description": "Cloud Commander a file manager for the web with console and editor", + "url": "https://github.com/alexbelgium/hassio-addons/tree/master/cloudcommander#readme", + "arch": [ + "aarch64", + "amd64", + "armv7", + "armhf" + ], + "ports": { + "8000/tcp": 8000 + }, + "ports_description": { + "8000/tcp": "Web UI port (required)" + }, + "map": [ + "ssl" + ], + "webui": "http://[HOST]:[PORT:8000]", + "privileged": [ + "SYS_ADMIN", + "DAC_READ_SEARCH" + ], + "full_access": true, + "environment": {}, + "options": {}, + "schema": { + "localdisks": "str?", + "networkdisks": "str?", + "cifsusername": "str?", + "cifspassword": "str?", + "smbv1": "bool?" + } +} diff --git a/cloudcommander/icon.png b/cloudcommander/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b5da320d6ec9a6700cd17aac221b7a80e840f57a GIT binary patch literal 19300 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 && MOUNTED=true || MOUNTED=false + + # if Fail test different smb and sec versions + if [ $MOUNTED = false ]; then + for SMBVERS in ",vers=3" ",vers=1.0" ",vers=2.1" ",vers=3.0" ",nodfs" ",uid=0,gid=0,forceuid,forcegid" ",noforceuid,noforcegid" ",${DOMAIN}" + do + mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS $disk /mnt/$diskname 2>/dev/null && MOUNTED=true && break || MOUNTED=false + for SECVERS in ",sec=ntlmi" ",sec=ntlmv2" ",sec=ntlmv2i" ",sec=ntlmssp" ",sec=ntlmsspi" ",sec=ntlm" ",sec=krb5i" ",sec=krb5" + do + mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS$SECVERS $disk /mnt/$disk name 2>/dev/null && MOUNTED=true && break 2 && break || MOUNTED=false + done + done + fi + + # Messages + if [ $MOUNTED = true ]; then + #Test write permissions + touch /mnt/$diskname/testaze && rm /mnt/$diskname/testaze && bashio::log.info "... $disk successfully mounted to /mnt/$diskname with options $SMBVERS$SECVERS" || bashio::log.fatal "Disk is mounted, however unable to write in the shared disk. Please check UID/GID for permissions, and if the share is rw" + else + # message if still fail + bashio::log.fatal "Unable to mount $disk to /mnt/$diskname with username $CIFS_USERNAME, $CIFS_PASSWORD. Please check your remote share path, username, password, domain, try putting 0 in UID and GID" # Mount share + bashio::log.fatal "Error read : $(:8096`. + +[smb-shield]: https://img.shields.io/badge/SMB--green?style=plastic.svg + + +[repository]: https://github.com/alexbelgium/hassio-addons +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg diff --git a/emby/apparmor.txt b/emby/apparmor.txt new file mode 100644 index 0000000..7bdec83 --- /dev/null +++ b/emby/apparmor.txt @@ -0,0 +1,49 @@ +#include + +profile addon_db21ed7f_emby_nas flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + mount, + umount, + remount, + + capability setgid, + capability setuid, + capability sys_admin, + capability dac_read_search, + # capability dac_override, + # capability sys_rawio, + +# S6-Overlay + /bin/** ix, + /usr/bin/** ix, + /usr/lib/bashio/** ix, + /etc/s6/** rix, + /run/s6/** rix, + /etc/services.d/** rwix, + /etc/cont-init.d/** rwix, + /etc/cont-finish.d/** rwix, + /init rix, + /var/run/** mrwkl, + /var/run/ mrwkl, + /dev/i2c-1 mrwkl, + # Files required + /dev/sda1 mrwkl, + /dev/sdb1 mrwkl, + /dev/mmcblk0p1 mrwkl, + /dev/ttyUSB0 mrwkl, + /dev/* mrwkl, + /tmp/** mrkwl, + + # Data access + /data/** rw, + + # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container + ptrace (trace,read) peer=docker-default, + + # docker daemon confinement requires explict allow rule for signal + signal (receive) set=(kill,term) peer=/usr/bin/docker, + +} diff --git a/emby/build.json b/emby/build.json new file mode 100644 index 0000000..059fcaa --- /dev/null +++ b/emby/build.json @@ -0,0 +1,8 @@ +{ + "build_from": { + "armv7": "linuxserver/emby:arm32v7-version-", + "armhf": "linuxserver/emby:arm32v7-version-", + "aarch64": "linuxserver/emby:arm64v8-version-", + "amd64": "linuxserver/emby:amd64-version-" + } +} diff --git a/emby/config.json b/emby/config.json new file mode 100644 index 0000000..c346760 --- /dev/null +++ b/emby/config.json @@ -0,0 +1,60 @@ +{ + "name": "Emby NAS", + "version": "4.6.3.0", + "upstream": "4.6.3.0", + "slug": "emby_nas", + "description": "A Free Software Media System that puts you in control of managing and streaming your media.", + "url": "https://github.com/alexbelgium/hassio-addons", + "startup": "services", + "arch": [ + "aarch64", + "amd64", + "armv7", + "armhf" + ], + "ports": { + "8096/tcp": 8096, + "8920/tcp": null, + "7359/udp": null, + "1900/udp": null + }, + "ports_description": { + "8096/tcp": "web interface", + "8920/tcp": "https web interface (optional)", + "7359/udp": "udp server discover (optional)", + "1900/udp": "dlna (optional)" + }, + "map": [ + "config:rw", + "share:rw", + "media:rw", + "ssl" + ], + "webui": "http://[HOST]:[PORT:8096]", + "boot": "auto", + "apparmor": "true", + "privileged": [ + "SYS_ADMIN", + "DAC_READ_SEARCH" + ], + "devices": [ + "/dev/ttyUSB0", + "/dev/*", + "/dev/sda1" + ], + "full_access": true, + "options": { + "PUID": 0, + "PGID": 0 + }, + "schema": { + "PUID": "int", + "PGID": "int", + "TZ": "str?", + "localdisks": "str?", + "networkdisks": "str?", + "cifsusername": "str?", + "cifspassword": "str?", + "smbv1": "bool?" + } +} diff --git a/emby/icon.png b/emby/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..19f999c4d3d427660735731ff3da758936d1eead GIT binary patch literal 63481 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 JGFh`v{{u1-cg6q! literal 0 HcmV?d00001 diff --git a/emby/logo.png b/emby/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..19f999c4d3d427660735731ff3da758936d1eead GIT binary patch literal 63481 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 JGFh`v{{u1-cg6q! literal 0 HcmV?d00001 diff --git a/emby/root/etc/cont-init.d/00-banner.sh b/emby/root/etc/cont-init.d/00-banner.sh new file mode 100644 index 0000000..71b1a4e --- /dev/null +++ b/emby/root/etc/cont-init.d/00-banner.sh @@ -0,0 +1,39 @@ +#!/usr/bin/with-contenv bashio +# ============================================================================== +# Home Assistant Community Add-on: Base Images +# Displays a simple add-on banner on startup +# ============================================================================== +if bashio::supervisor.ping; then + bashio::log.blue \ + '-----------------------------------------------------------' + bashio::log.blue " Add-on: $(bashio::addon.name)" + bashio::log.blue " $(bashio::addon.description)" + bashio::log.blue \ + '-----------------------------------------------------------' + + bashio::log.blue " Add-on version: $(bashio::addon.version)" + if bashio::var.true "$(bashio::addon.update_available)"; then + bashio::log.magenta ' There is an update available for this add-on!' + bashio::log.magenta \ + " Latest add-on version: $(bashio::addon.version_latest)" + bashio::log.magenta ' Please consider upgrading as soon as possible.' + else + bashio::log.green ' You are running the latest version of this add-on.' + fi + + bashio::log.blue " System: $(bashio::info.operating_system)" \ + " ($(bashio::info.arch) / $(bashio::info.machine))" + bashio::log.blue " Home Assistant Core: $(bashio::info.homeassistant)" + bashio::log.blue " Home Assistant Supervisor: $(bashio::info.supervisor)" + + bashio::log.blue \ + '-----------------------------------------------------------' + bashio::log.blue \ + ' Please, share the above information when looking for help' + bashio::log.blue \ + ' or support in, e.g., GitHub, forums or the Discord chat.' + bashio::log.green \ + ' https://github.com/alexbelgium/hassio-addons' + bashio::log.blue \ + '-----------------------------------------------------------' +fi diff --git a/emby/root/etc/cont-init.d/00-ha-env b/emby/root/etc/cont-init.d/00-ha-env new file mode 100644 index 0000000..3b3e692 --- /dev/null +++ b/emby/root/etc/cont-init.d/00-ha-env @@ -0,0 +1,5 @@ +#!/usr/bin/with-contenv bashio + +for k in $(bashio::jq "${__BASHIO_ADDON_CONFIG}" 'keys | .[]'); do + printf "$(bashio::config $k)" > /var/run/s6/container_environment/$k +done \ No newline at end of file diff --git a/emby/root/etc/cont-init.d/20-folders b/emby/root/etc/cont-init.d/20-folders new file mode 100644 index 0000000..8f46b7c --- /dev/null +++ b/emby/root/etc/cont-init.d/20-folders @@ -0,0 +1,82 @@ +#!/usr/bin/with-contenv bash + +if [ ! -d /emby ]; then + echo "Creating /emby" + mkdir -p /emby + chown -R abc:abc /emby +fi + +if [ ! -d /share/storage/tv ]; then + echo "Creating /share/storage/tv" + mkdir -p /share/storage/tv + chown -R abc:abc /share/storage/tv +fi + +if [ ! -d /share/storage/movies ]; then + echo "Creating /share/storage/movies" + mkdir -p /share/storage/movies + chown -R abc:abc /share/storage/movies +fi + +if [ ! -d /share/emby ]; then + echo "Creating /share/emby" + mkdir -p /share/emby + chown -R abc:abc /share/emby +fi + +if [ ! -d /config/emby ]; then + echo "Creating /config/emby" + mkdir -p /config/emby + chown -R abc:abc /config/emby +fi + +# links + +if [ ! -d /emby/cache ]; then + echo "Creating link for /emby/cache" + mkdir -p /share/emby/cache + chown -R abc:abc /share/emby/cache + ln -s /share/emby/cache /emby/cache +fi + +if [ ! -d /emby/config ]; then + echo "Creating link for /emby/config" + mkdir -p /config/emby + chown -R abc:abc /config/emby + ln -s /config/emby /emby/config +fi + +if [ ! -d /emby/data ]; then + echo "Creating link for /emby/data" + mkdir -p /share/emby/data + chown -R abc:abc /share/emby/data + ln -s /share/emby/data /emby/data +fi + +if [ ! -d /emby/logs ]; then + echo "Creating link for /emby/logs" + mkdir -p /share/emby/logs + chown -R abc:abc /share/emby/logs + ln -s /share/emby/logs /emby/logs +fi + +if [ ! -d /emby/metadata ]; then + echo "Creating link for /emby/metadata" + mkdir -p /share/emby/metadata + chown -R abc:abc /share/emby/metadata + ln -s /share/emby/metadata /emby/metadata +fi + +if [ ! -d /emby/plugins ]; then + echo "Creating link for /emby/plugins" + mkdir -p /share/emby/plugins + chown -R abc:abc /share/emby/plugins + ln -s /share/emby/plugins /emby/plugins +fi + +if [ ! -d /emby/root ]; then + echo "Creating link for /emby/root" + mkdir -p /share/emby/root + chown -R abc:abc /share/emby/root + ln -s /share/emby/root /emby/root +fi diff --git a/emby/root/etc/cont-init.d/92-local_mounts_v1.2.sh b/emby/root/etc/cont-init.d/92-local_mounts_v1.2.sh new file mode 100644 index 0000000..d9a382b --- /dev/null +++ b/emby/root/etc/cont-init.d/92-local_mounts_v1.2.sh @@ -0,0 +1,27 @@ +#!/usr/bin/with-contenv bashio + +###################### +# MOUNT LOCAL SHARES # +###################### + +bashio::log.info 'Mounting external hdd...' + +# Mount local Share if configured and if Protection Mode is active +if bashio::config.has_value 'localdisks'; then + bashio::require.unprotected + MOREDISKS=$(bashio::config 'localdisks') + bashio::log.info "Local Disks mounting.. ${MOREDISKS}" && \ + for disk in ${MOREDISKS//,/ } # Separate comma separated values + do + bashio::log.info "Mount ${disk}" + mkdir -p /share/$disk && \ + if [ ! -d /share/$disk ]; then + echo "Creating /share/$disk" + mkdir -p /share/$disk + chown -R abc:abc /share/$disk + fi + mount /dev/$disk /share/$disk && \ + bashio::log.info "Success! Mounted to /nmt/$disk" + done || \ + bashio::log.warning "Protection mode is ON. Unable to mount local drives!" +fi diff --git a/emby/root/etc/cont-init.d/92-smb_mounts_v1.3.sh b/emby/root/etc/cont-init.d/92-smb_mounts_v1.3.sh new file mode 100644 index 0000000..2e5d11a --- /dev/null +++ b/emby/root/etc/cont-init.d/92-smb_mounts_v1.3.sh @@ -0,0 +1,62 @@ +#!/usr/bin/with-contenv bashio + +#################### +# MOUNT SMB SHARES # +#################### +if bashio::config.has_value 'networkdisks'; then + # Mount CIFS Share if configured and if Protection Mode is active + bashio::log.info 'Mounting smb share(s)...' + + # Define variables + MOREDISKS=$(bashio::config 'networkdisks') + CIFS_USERNAME=$(bashio::config 'cifsusername') + CIFS_PASSWORD=$(bashio::config 'cifspassword') + MOUNTED=false + SMBVERS="" + SECVERS="" + + if bashio::config.has_value 'cifsdomain'; then + DOMAIN=",domain=$(bashio::config 'cifsdomain')" + else + DOMAIN="" + fi + + # Mounting disks + for disk in ${MOREDISKS//,/ } # Separate comma separated values + do + # Clean name of network share + disk=$(echo $disk | sed "s,/$,,") # Remove / at end of name + diskname=${disk//\\//} #replace \ with / + diskname=${diskname##*/} # Get only last part of the name + # Prepare mount point + mkdir -p /mnt/$diskname + chown -R root:root /mnt/$diskname + + #Tries to mount with default options + mount -t cifs -o rw,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$DOMAIN $disk /mnt/$diskname 2>ERRORCODE && MOUNTED=true || MOUNTED=false + + # if Fail test different smb and sec versions + if [ $MOUNTED = false ]; then + for SMBVERS in ",vers=3" ",vers=1.0" ",vers=2.1" ",vers=3.0" ",nodfs" ",uid=0,gid=0,forceuid,forcegid" ",noforceuid,noforcegid" ",${DOMAIN}" + do + mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS $disk /mnt/$diskname 2>/dev/null && MOUNTED=true && break || MOUNTED=false + for SECVERS in ",sec=ntlmi" ",sec=ntlmv2" ",sec=ntlmv2i" ",sec=ntlmssp" ",sec=ntlmsspi" ",sec=ntlm" ",sec=krb5i" ",sec=krb5" + do + mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS$SECVERS $disk /mnt/$disk name 2>/dev/null && MOUNTED=true && break 2 && break || MOUNTED=false + done + done + fi + + # Messages + if [ $MOUNTED = true ]; then + #Test write permissions + touch /mnt/$diskname/testaze && rm /mnt/$diskname/testaze && bashio::log.info "... $disk successfully mounted to /mnt/$diskname with options $SMBVERS$SECVERS" || bashio::log.fatal "Disk is mounted, however unable to write in the shared disk. Please check UID/GID for permissions, and if the share is rw" + else + # message if still fail + bashio::log.fatal "Unable to mount $disk to /mnt/$diskname with username $CIFS_USERNAME, $CIFS_PASSWORD. Please check your remote share path, username, password, domain, try putting 0 in UID and GID" # Mount share + bashio::log.fatal "Error read : $( + +

+ +[View the ESPHome documentation](https://esphome.io/) + +## Example + +With ESPHome, you can go from a few lines of YAML straight to a custom-made +firmware. For example, to include a [DHT22][dht22]. +temperature and humidity sensor, you just need to include 8 lines of YAML +in your configuration file: + + + +Then just click UPLOAD and the sensor will magically appear in Home Assistant: + + + +[discord-shield]: https://img.shields.io/discord/429907082951524364.svg +[dht22]: https://esphome.io/components/sensor/dht.html +[discord]: https://discord.gg/KhAMKrd +[releases-shield]: https://img.shields.io/github/release/esphome/esphome.svg +[releases]: https://esphome.io/changelog/index.html +[repository]: https://github.com/esphome/esphome diff --git a/esphome/config.json b/esphome/config.json new file mode 100644 index 0000000..459b2ac --- /dev/null +++ b/esphome/config.json @@ -0,0 +1,43 @@ +{ + "arch": [ + "amd64", + "armv7", + "aarch64" + ], + "auth_api": true, + "description": "ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices", + "hassio_api": true, + "host_network": true, + "image": "esphome/esphome-hassio-{arch}", + "ingress": true, + "ingress_port": 0, + "map": [ + "ssl:ro", + "config:rw" + ], + "name": "ESPHome", + "panel_icon": "mdi:chip", + "ports": { + "6052/tcp": null + }, + "ports_description": { + "6052/tcp": "Web interface (not required for Home Assistant ingress)" + }, + "schema": { + "certfile": "str?", + "esphome_version": "str?", + "keyfile": "str?", + "leave_front_door_open": "bool?", + "relative_url": "str?", + "ssl": "bool?", + "status_use_ping": "bool?", + "streamer_mode": "bool?" + }, + "slug": "esphome", + "snapshot_exclude": [ + "*/*/" + ], + "uart": true, + "url": "https://esphome.io/", + "version": "1.19.4" +} \ No newline at end of file diff --git a/esphome/icon.png b/esphome/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..0c8fb609a00045ddd16d3637faa5c1c038cfac84 GIT binary patch literal 3013 zcmai0X*ARg7yr*9>ma*PmP#cIHHao#)?|q(k|krZC9-Ag#!{#uD%%KyM#5OKW*KBl zmMBt|F_MXl<%vf2cb*ULr}x8q&Rx#E=iCqX+;wQPjFOJ1H4tbR!6T&pil-32*~&I2^*u*EVM=fkoTxk#1T!QY%Vvd7ZQct;C+cuLORF~2q{Qqul1#^!nbBTrLw-9w(o6Wsn)9U!a@6B6%w zm+Nu~D5rT*COkY3HN#0m&E!U|9;Yy~!=q8FD^wH;)r{ngmF4=s5@#Y-1!)9tfP-BW zRnOqv`PUF@l75_?U|SG3NKN;U4$u^%64TjU2(T`zqF7*t+=0-Ax92S1CI6K z>1eSoXV6D4mIfhL=Ka3dT4J#zZv@=%bE0)wmeM<}c0JM5zZ|owD47Jb+1n+oN8{ZFWpD#B9Z9UJ=Ww0 z--fdDv=9S%dHF@6D6#n4Kt2jrQCe1prcfxQFJBrq-~cT-=3G`W|M)}S$$E>$=b4#H zs993K&e3IpmzS6SBr4bPPnWRO0&xtHyyIe-d*S+YYxp?jZPZ?qnT5rey8CdW0Au~5 z?&|D#fk8sh4!@7XROaL9W?Z=EmvZ|e?|tSQ84rg1i4!F(R&YaW=j_!$#=wYrcLDQ< zUUH%5Gq-)D$Iy`{GK`_zvQuq^-zEVYG&)-=uz0fFy(ZNAO>6)A!9jV2*OiB)k?wo~ zy1RaQ$qlzSI5=qgleGt{9u5QNdWe$Q+1cjV=em7TQ&aV#qNpm#@~&FI6vZ)Tu%=@v zy`H0n6WhBreB$rcv|V1dMB**|$n_d!?tLcYuUpa$en1Xv3Up}+7*2v@E`pVy(&vz@ zmFX)!K9ouNKsK^zFT_RJ_^~veMsq%+sHkl_F+5B4px9Lqki$yto9cP7PVq)I|JeuD2ORBoc#m`VehXho+~e_jWIY{(hMk zArvAu_oa4nGN!?sxu1~^s3iJiiF3|>Lfv8eAis$ zfvAW7Ty<5Mjg(C*KE(`1nJL)ED!IA2MQzURxu^p+_}~&s<`8adezorRVTv%BBKqF`+Y6=O(k89g#{dWACO6Hc$D$0?b~v&sMitxgqzfew`3m$6%{*mb#_;0A#A}e+C5c2^n}%*$Btr82Mv&(yUu?|zh-BbP@Bh|m};nqRyhk2gehq9Ps3QB zKYf}UGW$UMYcR}p>CaDFi!OEu& zMJW^Jqs>I%c*|GMK7IPssQXuNy9N(w|0!0-?_!lWFCei_U!}F8T-|)9o6;?EG>pny zI*jud?}SN=qZal6{saS2QBfneDcVDr)H|xS*#nw@;CZJGGX-19P0?wbX3*8J9W(UBo|RA$tnEUU(}u+;|wKxq3YjDzkaW6@6`T#mS1No>K!-v) zKFHHoF-p-djbtvlvZ2eIsHSktZ7@%Ja++7-@r~CYv$I2vWqa8I;DhQC7;lkr@^|L9 zn%df0(kT794!bq;e4X5`t}c3y^*b}*G(iAvFMpE8V`*XWXW#LPqpLh%44&x;gSq_i zam5H$2?3n=?%80&M1EVi%aera-5gUpziZVtkcCaPgYIn)v#^*MIj0V5`Oy^8ys6z< zs&P~7+>5K;_%;mT9|6vy&RS^I#pRe z#Hm3{;@}laeJX@J-iOWL6-Nwz`Qm;OrAoc1b0S-xk8euidw&~e(`W3WLic@H&JeYU z6h7;)7}s_kLF;nu63h0#5lmdn>TKA9-RfTHeoR+!ov2A zeg(acKIUon&-Z5z-j?zMWpNFF-+%buewD2j1bdWGH*7go1f&>uz2&dkX8a*uEN*I3#8LHEq! z(E*2+5Pw|@XXm_%&uqrdp^8Vr(9W^?YDXLLhfF^YWTeUNEUZn)YfSO zuY;Y@c#OlPuou$(pkc55!0%n$Ph{B4y>UBXsZtAfxZ&OmgWZQOge)Qxxsj%l+)Q9F z+*fGJ;pHP^V`N;_0(^7WRYkX@ztMOG^ruWKYBxl$&3CGCb~fSj;zq+>XNpDRP$7Z9 z_veelz1M6`t&7|VPJjBeup#!=C$;e3q-$dpEO zI3wHR8XEnqw6fA}{pZJVb-M+WJ@p=A@~%dm|D5sI#6&4A^yg7^%sZ%4jotc^Ix>1= zVdTyXHS!l5@k>if&5|X~UK$tiB0h7EVzX>1g>rpxaPZEzH*QUP+Aepvb~KA6AB?;{ zT=H{CEf4u*h$Af4vpzI^eO;EtgWZPb8t5~1Ig3460-($|Pn|=?p2RH)tSZ>+OytU2 zOc!|9%IY5H??_Ku%*8?$c}qN%;g+B1U%&kZ2eh%Qd!PgeW0kJEWU#Kh`>}GAXJDhi zK5nG*=aqHDS+(UAmvdr&wRv^$iESxcQ&`g_3>6B2HzN?B6xSo|2zov= zPY4IC;@6x%Gsm-L;t~K@WOzF;5f;2XWW?}GNse}XLU5NdN&1FZyR#rv|Nlt5=IlXM XtMt&WRtF#Z1qUu0SsGSca*6#9nT?=- literal 0 HcmV?d00001 diff --git a/esphome/logo.png b/esphome/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b1cda931048a10051582b571d7a7ad29787350f9 GIT binary patch literal 11478 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 M=b?7(eTP^71J%5JEdT%j literal 0 HcmV?d00001 diff --git a/example/CHANGELOG.md b/example/CHANGELOG.md new file mode 100644 index 0000000..ddc7beb --- /dev/null +++ b/example/CHANGELOG.md @@ -0,0 +1,24 @@ +## What’s changed + +## 🐛 Bug fixes + +- Fix example script permissions @frenck (#75) + +## ⬆️ Dependency updates + +- ⬆️ Bump docker/setup-buildx-action from v1.1.2 to v1.2.0 @dependabot (#60) +- ⬆️ Bump docker/setup-qemu-action from v1.0.2 to v1.1.0 @dependabot (#59) +- ⬆️ Bump docker/login-action from v1.8.0 to v1.9.0 @dependabot (#61) +- ⬆️ Bump docker/setup-buildx-action from v1.2.0 to v1.3.0 @dependabot (#62) +- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#63) +- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#64) +- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#65) +- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#66) +- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#67) +- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#69) +- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#68) +- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#70) +- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2 @dependabot (#71) +- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#72) +- ⬆️ Upgrades add-on base image to v10.0.0 @frenck (#74) +- ⬆️ Bump docker/login-action from 1.9.0 to 1.10.0 @dependabot (#73) diff --git a/example/DOCS.md b/example/DOCS.md new file mode 100644 index 0000000..7fb2399 --- /dev/null +++ b/example/DOCS.md @@ -0,0 +1,132 @@ +# Home Assistant Community Add-on: Example + +This is an example add-on for Home Assistant. When started, it displays a +random quote every 5 seconds. + +It shows off several features and structures like: + +- Full blown GitHub repository. +- General Dockerfile structure and setup. +- The use of the `config.json` and `build.json` files. +- General shell scripting structure (`run.sh`). +- Quality assurance using CodeClimate. +- Continuous integration and deployment using GitLab. +- Usage of the Community Home Assistant Add-ons build environment. +- Small use of the Bash function library in our base images. +- The use of Docker label schema. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "Example" add-on in the Supervisor add-on store and install it. +1. Start the "Example" add-on. +1. Check the logs of the "Example" add-on to see it in action. + +## Configuration + +Eventought this add-on is just an example add-on, it does come with some +configuration options to play around with. + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +seconds_between_quotes: 5 +``` + +### Option: `log_level` + +The `log_level` option controls the level of log output by the add-on and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +### Option: `seconds_between_quotes` + +Sets the number of seconds between the output of each quote. The value +must be between `1` and `120` seconds. This value is set to `5` seconds by +default. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2017-2021 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-example/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/repository-community-hass-io-add-ons/24705?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-example/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-example/releases +[semver]: http://semver.org/spec/v2.0.0.html diff --git a/example/README.md b/example/README.md new file mode 100644 index 0000000..d913bd5 --- /dev/null +++ b/example/README.md @@ -0,0 +1,41 @@ +# Home Assistant Community Add-on: Example + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Example add-on by Community Home Assistant add-ons. + +## About + +This is an example add-on for Home Assistant. When started, it displays a +random quote every 5 seconds. + +It shows off several features and structures like: + +- Full blown GitHub repository. +- General Dockerfile structure and setup. +- The use of the `config.json` and `build.json` files. +- General shell scripting structure (`run.sh`). +- Quality assurance using CodeClimate. +- Continuous integration and deployment using GitLab. +- Usage of the Community Home Assistant Add-ons build environment. +- Small use of the Bash function library in our base images. +- The use of Docker label schema. + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[release-shield]: https://img.shields.io/badge/version-v4.2.0-blue.svg +[release]: https://github.com/hassio-addons/addon-example/tree/v4.2.0 \ No newline at end of file diff --git a/example/config.json b/example/config.json new file mode 100644 index 0000000..1da2318 --- /dev/null +++ b/example/config.json @@ -0,0 +1,24 @@ +{ + "name": "Example", + "version": "4.2.0", + "slug": "example", + "description": "Example add-on by Community Home Assistant Add-ons", + "url": "https://github.com/hassio-addons/addon-example", + "init": false, + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "options": { + "log_level": "info", + "seconds_between_quotes": 5 + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)", + "seconds_between_quotes": "int(1,120)" + }, + "image": "ghcr.io/hassio-addons/example/{arch}" +} \ No newline at end of file diff --git a/example/icon.png b/example/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2b10fa1747b60e65258fe6c1303244a060adc5a3 GIT binary patch literal 3946 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 CFAYKf literal 0 HcmV?d00001 diff --git a/example/logo.png b/example/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..106e5c2c724d721e19d0b532c7fce1de34c46c7e GIT binary patch literal 133153 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 Eg1@S5WdHyG literal 0 HcmV?d00001 diff --git a/example/translations/de.yaml b/example/translations/de.yaml new file mode 100644 index 0000000..204292c --- /dev/null +++ b/example/translations/de.yaml @@ -0,0 +1,7 @@ +configuration: + log_level: + description: 'The amount of logging the add-on should do.' + name: 'Log level' + seconds_between_quotes: + description: 'The number of seconds the add-on waits until showing a new quote in the add-on log.' + name: 'Sekunden zwischen Zitaten' diff --git a/example/translations/en.yaml b/example/translations/en.yaml new file mode 100644 index 0000000..9737cc5 --- /dev/null +++ b/example/translations/en.yaml @@ -0,0 +1,10 @@ +--- +configuration: + log_level: + name: Log level + description: The amount of logging the add-on should do. + seconds_between_quotes: + name: Seconds between quotes + description: >- + The number of seconds the add-on waits until showing a new quote in the + add-on log. diff --git a/example/translations/nl.yaml b/example/translations/nl.yaml new file mode 100644 index 0000000..f5f7d2e --- /dev/null +++ b/example/translations/nl.yaml @@ -0,0 +1,7 @@ +configuration: + log_level: + description: 'Bepaalt het niveau van de logs die de add-on toont.' + name: 'Log niveau' + seconds_between_quotes: + description: 'The number of seconds the add-on waits until showing a new quote in the add-on log.' + name: 'Aantal seconden tussen de citaten' diff --git a/git-exporter/CHANGELOG.md b/git-exporter/CHANGELOG.md new file mode 100644 index 0000000..c8159db --- /dev/null +++ b/git-exporter/CHANGELOG.md @@ -0,0 +1,134 @@ +## 1.10.1 - 2021-06-03 + +* 📝 Add secrets corner case docs for secrets containing special regex chars. (thanks @fliphess) + + +## 1.10.0 - 2021-05-08 + +* 🐛 Don't encode GitHub Tokens +* 🔼 Updated python3 to `3.8.10-r0` + + +## 1.9.0 - 2021-04-02 + +* 🔨 Use ghcr.io/home-assistant for base images + + +## 1.8.0 - 2021-03-30 + +* 🔨 URL encode git password to support special chars (see #219) +* 🔼 Updated git to `2.30.2-r0` +* 🔼 Updated python3 to `3.8.8-r0` + + +## 1.7.1 - 2021-03-04 + +* 🔼 Updated git to `2.30.1-r0` +* 🔼 Updated python3 to `3.8.7-r1` + + +## 1.7.0 - 2021-01-30 + +* 🔼 Updated to alpine `3.13` +* 🔼 Updated git to `2.30.0-r0` +* 🔼 Updated rsync to `3.2.3-r1` +* 🔼 Updated grep to `3.6-r0` +* 🔼 Updated python3 to `3.8.7-r0` +* 🔼 Updated py3-pip to `20.3.4-r0` +* 🔼 Updated findutils to `4.8.0-r0` +* 🔨 Use Jemalloc for better memory handling + + +## 1.6.0 - 2021-01-06 + +* 🔨 Add dummy mac and ip adresses as allowed +* 🐛 Exclude also all Node-Red backup files + + +## 1.5.0 - 2020-12-29 + +* 🐛 Fixed addon config export (#135), thanks @LiJu09 + +## 1.4.4 - 2020-10-22 + +* 🔨 Disable S6-Overlay Init + + +## 1.4.3 - 2020-10-06 + +* 🔼 Updated python3 to `3.8.5-r0` + + +## 1.4.2 - 2020-06-25 + +* 🔼 Updated to alpine `3.12` +* 🔼 Updated git to `2.26.2-r0` +* 🔼 Updated make to `4.3-r0` +* 🔼 Updated rsync to `3.1.3-r3` +* 🔼 Updated grep to `3.4-r0` +* 🔼 Updated sed to `4.8-r0` +* 🔼 Updated python3 to `3.8.3-r0` +* 🔼 Updated py3-pip to `20.1.1-re0` +* 🔨 Added more default ignore patterns + + +## 1.4.1 - 2020-05-22 + +* 🔨 Updated Changelog to new format + + +## 1.4.0 - 2020-05-20 + +* ➕ Export addon repositories +* 🔨 Changed config documentation +* ➕ Add Node-Red check +* ➕ Add commiter email option + + +## 1.3.2 - 2020-04-29 + +* 🔼 Updated git to `2.24.3-r0` + + +## 1.3.1 - 2020-04-16 + +* 🔼 Updated git to `2.24.2-r0` + + +## 1.3.0 - 2020-04-06 + +* ➕ Add export support for node-red + + +## 1.2.1 - 2020-03-30 + +* ➕ Add findutils at version `4.7.0-r0` +* 🐛 Fixed lovelace export +* 🔨 Get the addon information from bashio instead of self-requesting +* ➖ Removed `curl` + + +## 1.2.0 - 2020-03-29 + +* 🔨 Changed json2yaml conversion to own little script +* 🔼 Updated py3-yaml ot `5.3.1-r0` +* 🐛 Fixed permanent dry_run bug + + +## 1.1.0 - 2020-03-18 + +* ➕ Dry run toogle to just display the changes. +* ➕ Adjusted to the multiple lovelace interfaces +* 🔼 Updated to python `3.8.2-r0` + + +## 1.0 - 2020-02-21 + +* ➕ Started git exporter addon with basic git push functionality +* ➕ Added excludes in config +* ➕ Lovelace exports +* ➕ Addons config exports +* ➕ ESPHome exports +* ➕ Configurable Commit message +* ➕ Configurable exports + diff --git a/git-exporter/DOCS.md b/git-exporter/DOCS.md new file mode 100644 index 0000000..2f20381 --- /dev/null +++ b/git-exporter/DOCS.md @@ -0,0 +1,106 @@ +# Configuration + +```yaml +repository: + url: + username: user + password: pass + pull_before_push: true + commit_message: 'Home Assistant Git Exporter' +export: + lovelace: true + addons: true + esphome: true + node_red: true +checks: + enabled: true + check_for_secrets: true + check_for_ips: true +exclude: + - '*.db' + - '*.log' + - __pycache__ + - deps/ + - known_devices.yaml + - tts/ +dry_run: false +``` + +### `repository.url` + +Any https url to your git repository. (For now _no_ SSH) + +### `repository.email` (Optional) + +The email address the commits author is using. + +### `repository.username` + +Your username for https authentication. + +### `repository.password` + +Your password or __access token__ for your repository. + +### `repository.pull_before_push` + +Should the repository be pulled first and commit the new state on top? + +### `repository.commit_message` + +The commit message for the next commit. + + +### `export.lovelace` + +Enable / Disable the export for the lovelace config. + +### `export.addons` + +Enable / Disable the export for the supervisor addons config. + +### `export.esphome` + +Enable / Disable the export for the esphome config. + +### `export.node_red` + +Enable / Disable the export for the Node-RED flows. +Secure your credentials with [node-red-contrib-credentials](https://flows.nodered.org/node/node-red-contrib-credentials). + + +### `checks.enabled` + +Enable / Disable the checks in the exported files. + +### `checks.check_for_secrets` + +Add your secret values to the check. + +### `checks.check_for_ips` + +Add pattern for ip and mac addresses to the search. + + +### `exclude` + +The files / folders which should be excluded from the config export. + +Following folders and files are excluded from the sync per default: + +* `secrets.yaml` (secrets are cleared) +* `.cloud` +* `.storage` + +### `dry_run` + +Only show the changes and don't commit or push. + + +## Known limitations + +`check_for_secrets` Uses a git plugin that does pattern matching using regexes. +A limitation of this plugin is that using brackets (like `[`, `]`, `{`, `}` `(` and `)`) in secrets can result in unexpected behaviour and crashes. + +If the addon fails during secrets checking with errors originating from grep (I.E. `grep: Unmatched [, [^, [:, [., or [=`), +change the passwords that contain brackets or set `check_for_secrets` to `false`. diff --git a/git-exporter/Dockerfile b/git-exporter/Dockerfile new file mode 100644 index 0000000..75d648d --- /dev/null +++ b/git-exporter/Dockerfile @@ -0,0 +1,31 @@ +ARG BUILD_FROM +FROM $BUILD_FROM AS BUILD + +RUN apk add --no-cache \ + 'git=2.30.2-r0' \ + 'make=4.3-r0' + +ENV GIT_SECRET_VERSION 1.3.0 +# hadolint ignore=DL3003 +RUN git config --global advice.detachedHead false && \ + git clone https://github.com/awslabs/git-secrets.git -b ${GIT_SECRET_VERSION} /git-secrets && \ + cd /git-secrets && make install + +FROM $BUILD_FROM AS RUNNING + +RUN apk add --no-cache \ + 'git=2.30.2-r0' \ + 'rsync=3.2.3-r1' \ + 'grep=3.6-r0' \ + 'sed=4.8-r0' \ + 'python3=3.8.10-r0' \ + 'py3-pip=20.3.4-r0' \ + 'findutils=4.8.0-r0' + +RUN pip3 install --no-cache-dir PyYAML==5.3.1 dotty-dict==1.2.1 + +COPY --from=BUILD /usr/local/bin/git-secrets /usr/local/bin/git-secrets + +COPY root / +RUN chmod a+x /run.sh /utils/* +ENTRYPOINT [ "/run.sh" ] \ No newline at end of file diff --git a/git-exporter/README.md b/git-exporter/README.md new file mode 100644 index 0000000..1f3a903 --- /dev/null +++ b/git-exporter/README.md @@ -0,0 +1,53 @@ +# Home Assistant Git Exporter + +Export all of your Home Assistant configuration to a git repository of your choice. +Can be used to show your Home Assistant setup in public repositories. + +![Addon Stage][stage-badge] +![Supports aarch64 Architecture][aarch64-badge] +![Supports amd64 Architecture][amd64-badge] +![Supports armhf Architecture][armhf-badge] +![Supports armv7 Architecture][armv7-badge] +![Supports i386 Architecture][i386-badge] + +[![Install on my Home Assistant][install-badge]][install-url] +[![Donate][donation-badge]][donation-url] + +# Functionality + +* Export Home Assistant configuration +* Export Supervisor Addon configuration +* Export Lovelace configuration +* Export ESPHome configurations +* Export Node-RED flows +* Check for plaintext secrets based on your `secrets.yaml` file and common patterns. +* Check for plaintext ip and addresses in your config. + +# Example + +For an example take a look at my own [Home Assistant configuration](https://github.com/Poeschl/home-assistant-config). +The folders there are gettings synced with this addon. + + +# Badge + +If you export your config with this addon and want to help me to spread it further. Here is a badge you can embedd in your readme. + +[![Home Assistant Git Exporter](https://img.shields.io/badge/Powered%20by-Home%20Assistant%20Git%20Exporter-%23d32f2f)](https://github.com/Poeschl/Hassio-Addons/tree/master/git-exporter) + +```markdown +[![Home Assistant Git Exporter](https://img.shields.io/badge/Powered%20by-Home%20Assistant%20Git%20Exporter-%23d32f2f)](https://github.com/Poeschl/Hassio-Addons/tree/master/git-exporter) +``` + + +[aarch64-badge]: https://img.shields.io/badge/aarch64-yes-green.svg?style=for-the-badge +[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg?style=for-the-badge +[armhf-badge]: https://img.shields.io/badge/armhf-yes-green.svg?style=for-the-badge +[armv7-badge]: https://img.shields.io/badge/armv7-yes-green.svg?style=for-the-badge +[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg?style=for-the-badge +[install-url]: https://my.home-assistant.io/redirect/supervisor_addon?addon=243ffc37_git-exporter +[stage-badge]: https://img.shields.io/badge/Addon%20stage-stable-green.svg?style=for-the-badge + +[install-badge]: https://img.shields.io/badge/Install%20on%20my-Home%20Assistant-41BDF5?logo=home-assistant&style=for-the-badge +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=for-the-badge&logoColor=white +[donation-url]: https://www.buymeacoffee.com/Poeschl diff --git a/git-exporter/build.json b/git-exporter/build.json new file mode 100644 index 0000000..4ceab93 --- /dev/null +++ b/git-exporter/build.json @@ -0,0 +1,9 @@ +{ + "build_from": { + "armhf": "ghcr.io/home-assistant/armhf-base:3.13", + "armv7": "ghcr.io/home-assistant/armv7-base:3.13", + "aarch64": "ghcr.io/home-assistant/aarch64-base:3.13", + "amd64": "ghcr.io/home-assistant/amd64-base:3.13", + "i386": "ghcr.io/home-assistant/i386-base:3.13" + } +} diff --git a/git-exporter/config.json b/git-exporter/config.json new file mode 100644 index 0000000..4864743 --- /dev/null +++ b/git-exporter/config.json @@ -0,0 +1,75 @@ + +{ + "name": "Home Assistant Git Exporter", + "version": "1.10.1", + "slug": "git-exporter", + "description": "Export all of your Home Assistant configuration to a git repository of your choice.", + "url": "https://github.com/Poeschl/Hassio-Addons/tree/master/git-exporter", + "arch": [ + "armhf", + "armv7", + "aarch64", + "amd64", + "i386" + ], + "startup": "once", + "boot": "manual", + "image": "ghcr.io/poeschl/ha-git-exporter-{arch}", + "hassio_api": true, + "hassio_role": "manager", + "map": ["config"], + "options": { + "repository": { + "url": "", + "username": "", + "password": "", + "pull_before_push": true, + "commit_message": "Home Assistant Git Exporter" + }, + "export": { + "lovelace": true, + "addons": true, + "esphome": true, + "node_red": true + }, + "check": { + "enabled": true, + "check_for_secrets": true, + "check_for_ips": true + }, + "exclude": [ + "*.db", + "*.log", + "__pycache__", + "._*", + ".DS_Store", + "deps/", + "known_devices.yaml", + "tts/" + ], + "dry_run": false + }, + "schema": { + "repository": { + "url": "match(https://.*)", + "email": "match(.+@.+)?", + "username": "str", + "password": "password", + "pull_before_push": "bool", + "commit_message": "str" + }, + "export": { + "lovelace": "bool", + "addons": "bool", + "esphome": "bool", + "node_red": "bool" + }, + "check": { + "enabled": "bool", + "check_for_secrets": "bool", + "check_for_ips": "bool" + }, + "exclude": ["str"], + "dry_run": "bool" + } +} diff --git a/git-exporter/icon.png b/git-exporter/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a97dd5454480047d15ef98f847b35981e064cf59 GIT binary patch literal 18294 zcmb`v2T)Vr_CI6%ZlxDkfjLARPheN|zF(3qqnIDj=vxuZn>5CQV8r z3P=$|dPk&4?+_p)Z^!$)zyF&z@4lHgbDeQK=s9bzz1G^FRrXpw*VolJaqQeN2!c*r z*HkrxAUJr0Lv%;MA6o&v`{0kWK5Aw@Mi@sQ|Jz;;&_DK=I}SY8-ETWN7&_dxzkjdQ z;VJ~tTyils^D)!8pN3Q6MPLpS5X0;x9waVe0c6SIJtNz@vYY4`FLFH zmH14hb;NW$RUDjMGy}aHi~@Cy?E+oxOCiO? zk>Zjf;_?boQVL>XJpc2H53J^8@2Fs?s{TJ~fuEH4oPB&e6_7}Oe}7SbNl}cK6H;7W zULGkXfs~LC0dI(S-}msj9U$W2&Hrx-st(?EUM`+KE*K9UD#hD(Fup!Ye1Ow`ZNc61 zf601y|Bsk}z>opAJ(1#~V$?1D`$Zj{|L<4b-T(J(Zy!U4|HJS9D`9Wr`<@O+LkDk+ zua_NAoFhMVDNh9zFNfPc7%yWC#_iuy)OW`CV7#3%o;)flf2GDFXzJo&kMZ{w`umNJ zj>2^hZ=c&9b`IB7mG}S^Q5P3`1zBwQd3ox zQ~vk2su(+8cLxuje}8NLf4-IdkKa~+^pXDtW8FIrP*B~Fd6L6o-(HtEav{Y6$G_7D{OkebOd#tq6QJX$A zv>k~F>UWKQfEhd3|F)UEDT^E!FeMLep^t z-!ygXT~&-RzQ=x6`OO!5|0$4k?;?QvVANbbt(wO6$Myz)YnB z_=Eln4?I*_RBZeI|3Li`!X5TV!7O7u?k1Skm+!08-we)~dsh?flBsK~9{f$!IMzhr zUF1+!rMX-UsRA{lG070g?GX@3z4Pa4(1A5(1z7beL1ETe5WLn@f1M_mVVY zKGe3eiCVW`jMFUX3s^Wwk8r0>3UlJGg+EH z{&1LKc}qsUfo}CMbN*R3HgZ|eLce~t3!Ci=154qCt}Tv!d6%|-(6BL%X+2F*RSL@~ z&xyQ@9H?r=Zw|1Wsr3Ib3^as>e5BL2PrKilkRDEcSKpY@+|2QyRj?52UiJ!`SVuzM zGCvO#Ao!^8dBAiM?2FW7I?aY2>_XdOHg$HSwR9#2T-NYK%6&jAi3%6&Q_7JmY z>EYfB=8D`i&QxjtHXyOA|DLh8x`62t-O#wNU1@KX_gjziG<3V!kU$r*t|yanp$V%7 zh2wn_-0~%L*3WXD1*Vwc*+gM?|5(3)l16j8zUy9)p@;RzDMO9nybz*>$jysvzW{xu z**{t3k~!O3=~po43I$_?mYCyXC0+#9d{j)EAI6hvk}0hQIGZ;%XO6DObdxad!yaa*xWiPfd%5BV}}z0 zPGc2k@p;A(c!!U9o0yZ+LXUuL2tJ>}eq<##ge+;x1lQgwUnp2%It-#gJenc$NIIJiRx*;$d!ZgMBOlT&aNe~C7lke1yj4sC_B2a$8} z;)Rh~T6AW5u8^Qq7$j!WM3D=p{9)f-NrA#>pdU0ieO3yS_BtlEYVOB5yLThpjAlAU z!2EbVG*R?p@qN+alv0N|L`N(zhiqW@=#p?OU&xZ}x>F_gbCQ`dT9Ow+^NP_z{P{O@ zPP7=1j(hB;KyfFIqM0DL0g1`Td_)}k>9D2659~ViFN5JXNtd3)n$l1n%?sviP;9vfhJ87V82=@CG)Gc0LBtHgZCdS_)^=SGwpE(5{F-5#LilhzVs7lwf{xwhec5(HTT=R?6=1P^q7V zFMTB-g=P_m?-%G{+7}Qva)h9z7ranpqK`z{7TfW>46tmwjliVGUr|0e28-9GGb>17 zVJ<)_c*CKkC*a-OPjOKw!HTVaOuzcH6sDih*QSJ55)u1XI(ei31* zYXsTSK}TYAn^}MbY60FW_r2l$Kt=%nfQ&97{WY0wbKu>*Xd!4E+;ai#1WHz z>q^2sqn-xhC>1O1mb*eSenXR1oUbOuE~5l^Qf=jc4HAT`TEpz7P01#|=VwM(PPE<$ zi5rfKGQpi@F=#zWUySKRs>GwQSp{$}fcUp}r`b#Oe(^s|F!FhSmL~#}( zAD>yyr6snsT||tUFUiAB!Q(C$Ht=D}Icw0lam=3ip*R<*Ba_zv$AV<;xcHe<(3A=( zed(E?B>qxg&AWtj#ni|yWA&jQjVU&CM z0MMJyBn}M9!>|l!I_J%FF0kXzh8KA!&j4iYX2k`u!|7bsF7o03>D!;nwWvcsPNh`-}X!zqisE+EQ?5$)1om{LxnC zZR7YlF#%vg83ZbpB4et!Ip!!^qJvy!R47~?E>*MD^~GqfTJi3yT3di3SbXAOGf3~(+mh#yIA(f);3 z84r=daTos-tiJ$7pR(rVozxEhh0931z&pt}ivT{00Z-&ES~6M>SDeL)olg6S{dVD; z<7s)sM@_owFlJ^sAXZCNBj|GrC(f3Y^4mD1gA)1j!8Dh7zI=rUSCh32I0yfb3|fm> zZ08W8Dy{%;Y$<=e5~IO-m(BdyzNG8TPG@SUFb%W+m>2I3f`V(Q{QwvTyJGRIAtTF_ zZsriuvA-a}8kCAVof-V5tTo!A*LJ9!v!J#G;Y6P2mdFgR*vr#nZn`~<|X?Q9O7gl3kxs-qU zX~UtupXtpOLg#`8)2;or2$gH1&%;=c&~h}B->mmYb`s$8*f+P#X znypt|5^^xHf4x2=x-vTLz=1JJQ?P*(?sl%7%#C+fyL1x&C>vmDO!I|oDy~l6V7G6 z2<&S)e@v-=eF6l<-*2HFaq|>@ip+WK`xiy!4F3k91**lQ-K-I;AHk|<#Wp+l*U`*v zS-D<*TjPPry;lon8g^i>Vr-Nc5@01$dOXKQw@ThOcgJBR3`gY4?6YLtezx>lr!zV# zR_ch@wFDZm$|j1Y5V^{Tw3}-wy6xfXduP%%DN42BZRY-U@Un61%s2N$Rgz&6JcE|U zt!bi&7k>jzFgE{<`&7~I?P@W+>T_?dvNI)6S1Nn8Tg$WrMBwZdIvU2_?#F@C41^jD zNXr`yu7YG0iB|R)ErD}Lzk73xw<_0pyNpnL=F!C0_GO5iN*_M5{5cvP2vJW=|ASmT z5I48`mN#vPxpnC*#_MDFp;ovV?bG{T>mlil7KcRD2bW%eF!qr-X}K`u_-Q*b|Lp;K z;;zrT?wTgsOI5yGbH-aOoKpt5ahty#>0xYCE8}qnP(@R#Ttwz@d2upESjju+($JsL zJ7VH?Ca#(Nl1#R&AM;||?|l*?yZq%OlPEAH06--|oFXp%nY{<-RIYE#A~~=cb;M3B#otWH>ns%#+N^eDyIk|LzBR6jGxrs;Vgr-DC@!So%=hfV zLF@+0cxFm|!EN%`^Y<0kEqq`O(2M!Yfwm$|FY~Sqf`mg}`!3jh* zirtJuh2>$3%L{QmDEjNWg%CFX?>(Q?tdGilvuk9e1x_OU9XQkkxziM4t0B>S9Tn5h zzBq+>6W_PXnY1wYYiecYW98@BBaB-KPnrUU;zH3C$_WsFmq={}=POf$+%o^! z;*folJ7=-Fuyf!;S(()--|<;9wvG##z00TI*;FOl+Bac6J0?bXIfO|sw3p-4-MQwy zD3@x&_e`8X$&iW4y5_>eojj|T@mbD}Q=7RU??)n=zy!fdoH+ZBgX8Y%$ zzb2h6H7H=ev(C-ADJy(hZ<}Mc?E~NN-rUS!BBKJnO7MZ*NYf(|0Lo{jj-shCHcGu{ zpREl^3n+%{xMY>rNDTP*a0o`6b7+&F{O$Ni{P7pql`{xtXvdVqv6O(-sywRugpaj( z!Rz#aYxel|;gw`k6f4%MpyI{oRL{wTi1T(*}*`R$531BwRNs%aMDuyfEi1rB%9m*SS*BRmaNO zS$@u?cX={YOp^hjgJ2)@Bi2n$S*Ry3;63IgXVJ~x`C25OL;a|^`2%UKN7zee@h`I> ztt*hv#VI3_I5s4b=Igg&udmKI+~oza3KN58PNK@=KzLhorK;Kx#y$zB!3}G>Y;@?%`1vcO~D+` z;)eE4+<+M3F5C5fKRb)am_`y(M9C+p`6E3vI>)_+$jF?vsL)oR#7ES|>)tqg_4Czg z4?S}=H(qp4WrO2%j$4Lwiv8o=UuE_D7R3>Y)wZAEfzZw^(&p~ogxWe&i(ctmZgEn& zpnz$6zP3B*VcSfI1d(Wm5b|g2q_2L9k@SXJUTtVj5kVGzTlCM;S9gdYa@eTG(-3Ue zyQ24cmbt_Ck*KE9!CtOq0Yyboi-F4dgXZaww$F?y<_=qB90!$R0tE52IW=0W^+)n} z-TlpwE12aY>NhF{c?sP>-jUqAPe+TEyB-HCU#ha3!us5&EEsX%1@KxFWj*xdpfB8` zp%k-uQR<1260{o9{jU3ue{yoNJKcwk#~{Y6_^UE=#)He>gUP=Z5#MH~&94NGD|&a5 z^V$z?4OFhDzgZ9YdXj1U?W=On?iaxpW-^1Y%IZ0Er&BKkoHNY<3e$(EO1Ub$dI($H^nz}ty5@K8KLjD(}~sWQdm4Uuv-xY;q^8(oYGj0K7euc!9)kSlLXX?ePsot+Pz2%S2A*Q`hvkA0O z!8f+2IQC_1G>znvHuCcERtrk7wn{L={Qff_=MWuA=3aKP26vxf( zz|Kf#&LI651e$?%6LIY>C!AE!*LM-25|Adfyh7pH*vU+36irWYXi@jsbN7pSx_Dro zzCcO?2Gr~c)FuzB6u>c~^?-ANnkZj3?nI!<54AI8(NX2rX$>1ba|6B~EI!SrpZ2Fk zbR!(L3OndM8w4_@mC+yIXmXoP;je3yQxQgBBOkBU!bI#f3Pr%fh@kg zTJ0q>0KSPSYziwjD4*MooHcSH!{-)$Cvrc;R3c=qQdrk}zcYHjzjIYmfafJh$;~`f zCT3lvp7ii$TsU+5*aPV06oz}wxrNj<)f<|AM6|DTgSIwij*^`-U*6eyq_vCw+oAC* z*dxc+C;?m!-6sxs!_8y7JU?I=!Y5G%MWg|*bksFwxX*Dq>|oJyq9KlQNT9Xi$}%Mjm{ z`!kqM`Kroq`dY4YqmrP*)0@6(*%p8IlP6tEaUY*7UrGqec?o|Vw<f0`ba9!1hTfE|IDLLLx}isRt!GZVFplcgUW@4%a;3B`6pu6W-m~Mf8GG z_V58!OKF!u^@i%^aQU>=c?<0t=kHIS451S|?oB5cNYx-mnGWz!B8aPq=~|jM3Lvxl znKnK7`$L3(jeND6*cTYg*iPVRnJz99g)rAs*d6tzJgrN0-o&|ypZDpf zFU6)aF@ItfTjB22CC0=%l-j4AvjrJwQKs<}XkcJ)HjG(Jl)Dq(*Oi^wBd;^*MaRtjin&Bz8EufR`)7jh+gHLQs1JL9 ziVD5XFMB=0MHT^F61SvdM+t0noX_kMFHgxLg7qpDpiHby)-`S39Lwx&xritjeifOn zKh10_aFqO#|CF3>naCYoTloqSO70k8RJE>w}g9yfGDpTBKI<fvfvaI#<~HZE!#FUc?hP)bt;B=&CU)Wx}|1E7kx<;ooT?j(DP~2o9aMR;lVvn;us|0v7d2MgN zaj03mS*4`hR|1*Jd?>C-F^S{Rn&7W=!9sbl&l3MA6SzT7}ZZj zre~bpqz&u1rf5qr^55;aRtt*o-Zk9IhZnpv>ptt$UBNCQHw5yh>zBvMS%TQK9GznZ zf@W5gE{-rp{Yl8LS`G$K-1URi0|@g|KVGfm122zE+Y~lj=58*@{z0h9F@|~pf}oNE zI=MorysPHHoe`Dfh%@kE8M2ttVnIT96Z!gCOav=A_H^Ke%B9!ArKtG(D#>Q1R<12O zOb>RGr(#bb?#7Bgop)Z+w5yYRF&Av&dgyYHdFeoa;v_f7f8u$wE<a~W$D{jPOo;kMsT3<*oFL`WU zb+l-r$e$Ad1y|Ty)2g@LI)x8~tagy5bGywb$v?v^G)T!mdiCG(?|bguN<1%K zgABBG%UgdJ`>DXj@6Fq=lM5!p9Wl%$N!jcQwMX%mw`~N~{M>(_7CTcFF>jdHln(mC zprJ5MxIIc^d*XaIGme#dYY{rd6shnK`+(=Q)la3xl+5rwc}A-pLQJL**(BK2$p(~U z+kHirW&7XDgp?Jy%@vsGI6jYm(ak326?5V0n3u|gBY=BjU*C#ldcihNLJ19ymBKR9 zM)4RrC+9;jdk<}{yGhkHIQ7d5eEMj?vJ!CT`+JM@B%`>98__PSD+WGtai3H!PzzE- zDV<*)bkxXeKHw?t_7Pl>{clzwlJNAh3#Wu_K_Kj?(~*=bytX=e@7C>#mM7kyW-1E5 zEcr!pTy{pUhjaa8F4+Df3&hw>5PfYAl{-Z*j=@wIA-^Z6!pQo*=mXNjN1>4Ko&FDM zO690~W!|Q8BFXy#ReshsT!%lLlw#cHo<%>i5}2$6k&zw%%w>A^fm)g{RtQuVEZ!J6 z-Ft>pz6A3QlzHts);;Q35K(Iy(z2kl;p$f^v*5?L^Q>1e6H{A?X`gdG<`e{PcGo5R zLxTn(#B0mF;+PlUC~>l9>2j_0?xzi<%e6Kg=3{~{7>x|yi><4F=mO(+RX$+-%n{&+ zYX=p5T|(C}E;t`;!$!2;E6S9_{R44EdNJKp=rJ!kT`r?O_7psY%PU{o*HS<+kYD40 z>fNm6xCufE6dwd{F!>`7J2(N&f9+Lp@8zDkkV&Lbql1|z8Sb!;Z@^S?CFJjH_3%}`3F{67@B8u=?J3O~#+!3LZ z+`IFmUG#jdyJ-r_#r@WIJ8fatXvMD#)4PdJXu>*r6yi;~P0JO2YPi-3yGG`An{zKW zb}kK9EH?M|_cL8NBQ^X4x5EXUdV%k2d+@@W4uP9GiX$})-Tja*+}@O}W4ZsMT=YDi zvYT{^a(DvMIC1Y1&A|y6KAw4POi6{{oVh_8235+m;BTzcK2n(*=tH^iBw39sEpoD@ z*S@t`5UG`SyuqZwF<1ov0Y7xG0!g>^RgAMi`#Dx(w>0XwyL-{hcDQ{_(bpEeJwBD* z!1dfJn|>Z*C*zs&@NjdLk-eOGtpO6#@25l$_q6=%K#QGq@BF6jC42!am+wO?y7ILbK4vi8v7vBo+0_z8$6-cl^9s*GZB3Ua>9Lx}y!e)tOJE+gmTPneXO zWzoC(YG|vs$7WWLhV}%^2EX-Fd+vn{qK*R!%n!nIwyNj5nDZdw+uKrJzHp3Rz9Cb+ zp{lD_Sx^>}963J+K9adN^|j{o>C@XXOyABJ@ds2-Oj2wYNnuHry$A3CGWx>jJOs8h4ca_LDZT9j4G?uZ4Kd zMcAK_3fF;4QCGy?Gp`NJ&dyp)FCz|eE~8k*rkR=NU9V+IEF?O9c{hswFo;>gIa%J) z8rXpk9wZ&C*36~RdMS-jnok~OEUK#`!RcXsY8eZ^!f=|2J5jG~UVA&M^Y~bsHv1@i zM6K??w>0d=IIV3#m|;{YVEgm^^@=a_uvckrGiTGfpSt#sBN}HLRN_6Byxh`{s^9|R zz8q%|Mp*g`ImC|@go$%9uYWAn<49KBg#9{YF#ecvC9eKdtEf%GgMVtO7EeY=i1|1; zIHbFJcr;X$mfmYS>y#qCXUmHwhh1x>JcUA=C&M8%r+Rl0A1rCgj&wnQbEK>CA? zW+9{O!Kbv#4T`quiwI3f?CB4C^q&R$^c+5n{3mZ2Xu8b2{5&M43=}YN<5CRDbg%WH z!@)7w$vvYp6jabmG4JFjRlaqbz7P|J$Zw`1%960RF>wm> z3q6}|keIov<0YC*<6F1(UYwP5w5%#-wrx4e?nKk*^z==u_0!#GfXlDkWL)DJ(%z3J z+er?#JJJyRl4$9;x+Xwp2;&)OX%l|eI3)E2EY`-Sy?l&|}3r55}eE6`?kR)4dT|X?! zcHU@pjFGtVM8(aJ64g0gmgn#F>YJ+jA38|+P8lLVF}o@@8!E|ZXlNK1D74ruc6qxo zc33$w;YV3LPvK^Lo&-wta|P8$LffBC=UdKgFsieva1uPXcXuf_!zswDosp5y1LKBx z&)v#)CYs0p@SL)$$!dvEjq~1S3e|eD)B8(w)%Hf>WkyM{0%6L)dm^O~N!}6VJ2^cjd!-A@}`xk~*^_hlht(%VC%!^z?&i4fYE^K5r^cSUNFEN1-3E6wS2`8vWs z#Uz{9Dayo-0jZW`dN5ZX#7fzXCGLJND~xoc46&!az4g%ZnQ8}HN-b$%|4P&q&$TH$ zb!Yo_t^LNO@`G!X!xwwpABn4ykXeO07xG(I8^fOa{l}MRAEm)M*0asA0!y{L zO_bdYF9llG!K#&&m7L0Bu{OVoHR`Lrb-ipRJ!OTCs-RsDGRie)u zs66ufl9fi%-ey;9e1u#Ap`rCAwxumr7^A-zwCBHHao^0292CLz2h(5aGn#t+D+-B6 z9-q;>6~{vNL30)Ty$IY>tJU{QqaxF7To2{%CmK6mZIv{a`6Ai&H16-2>SBd;(VTaobVrPKmMmd~<7riWZEj{-DeinxgSD*EjP7l^Q zeEqbTX@qGTJHFkoG~;*>l}a;2p9s@)U+l_Tans$Ny&5a&7=XWf@!fzVM&v=}LD-!C z7GA}*&PE}1MP4PvZ`cL9ie6teE4}liexqu4V>NB7YHVUD7CWICPI(E(al`wwSk@g2 z-&hHLNb5OHH`$lLsJQJPI*<; zGtn-rrMCP|edC;@d217@XLy$fzmclv=qHVJ`mJ5?U1AF=k#yr$h-oD`%(TVgIkeXC z3wil9XQG#7%Akv(V5tG`@=I;z#&&vkH+7_kb!a2->mQ0#uWY?O>robipq$$b|i?P~k z3-gllmsKj&q9#%nFYDdzz*bv93RkP5Iqf^}JWbeM7=a1aKI0Gus+-V1Bymm#_-y`g z0t%d^L#7cY>8KI75awdGOiSb~yN~-%NG=yO?EaXN%XH$W@K3Tme?a(tV6K{rjQTyd{8_O$xgN$K(X zQimmOZ`udiiwdvK$R{;g&HL;lgRZP97Bx+rE6>Lb8@KG=;3Hp@cVQFqIEi>Peo^eE zuu@;ZzUxSGm&g2sbP3O?o@4>!*r4=J?97f{s-@N5-GOeUIi1AQW73{CJMB>(z39Y# zgW;fn^Rb1uib#oTb7CXQ_`7|1_qaBZX3&}n0o;yzA2N$QRAE4jcc;w-E1H}=tdv+- zFB0ym&3Ul7$h1)QCn8wj{7%>kSAd03kJZ5NUc-8?51+LN_80SB&{GYaEy2tiSJ}kV zhwqy$A9-a(BaRWXQ%&fSeUQ8yiV`9tL59pmx#N4lb_F8x+Gc@ja{&t!s@YJNUKDho zyNa6mGSTaI>(}_hfviXPOIdZ=$3lwhCUPT-USbEMeh+BgLn)I1Z#!+Yil>+GUuJz9JU3VqbCwR_;N=i>XGwEk`P zDPpA)`BJCs`A$N{Fo2&AL)%M{Y8k7GS0t+HQM0XOjX9vKT)3mlOHCmnSO*OpW;rm z{po5SIj?&hy13*rR0P;O1~x~<|0_GeWLg%EE($1a^v!2C-_qg;im>I%p~IcBYau1S zCt|XNMtes_4t~-wUG-G)_pcHm)(Vh(X$y(bu1tjUytefcf!TNDAhb)V>w(RUb^lso z@vZV%Q%rcOqW_BM)>-@-=D6WHQj2O4ho|7Pdne#fQIKk-@OvU26i#xBi&y)67yA!C z<>a(j@9pN1JpG4@z5Pbczn`-C%e*h}Mh2jFa8f3y3A4J1P0aSJB;rL)$@p({+t%^; z`h|&4EwNa=m*H3g8sJ1swCNIl$+AM#&EpfO2oJ3PkOu{10pv#R&50Sd{rU)OMiGhT zBt&BNEDpsDQEzic@1!sIpNt^MS&?iS4pwTh7um@3O5v21){vdPut%x?Tp^oWq2pFo zCIkZ+3CGGrfLcD}nMv$&yl>;by}ez}XG*4g8i>W3*W=qK#*e%_Vg8Hh230gLnTWEz5V%GI5z=p9>a$Jtd0t;aZ zT4%ESD>u-4<}cR=g+8+yABfsRsTfsTkPgKuHwGiHJTzdH$-DU5FrGh4e5mU}MT637cL+U~_^cjKY$Hd#E%R zdpLW29UGPH`H5IX_34LG_&NSyN%Da;-jopP%guj#zvL8rrPuuXn-{e-TB)yAEv4So zmHkPMjh&qG+YK^B=i3@%N&q@If8;b}YV~5|n0n$O1KM zyKA=u-cQUA!0Ef#Y{$nhKWnHt%!y65uE_|zJ%`P`Rkz;sDAhYRDr7ILE4HKbSse0L zN3QWxw|MK8W7r}#3ax3O`F1T0D`m`z@>Z1mmVqiS3)k)YO`d2WGTn&wx{OhFSE|p% z?CMR-{oh0D#MS;Rh4Z-y8ASyJhTpAqm0YE`;1_342K@r@X1TF${S;w@*t~6!X|UudU2{5&KejBU{BIcx`>1OxIWCm(Vt%V17q_l~guL z&lyqqS!H`NtP2H-hnN2bZrC#i6O^I!}50+-HQkdZ-Z2>vu3`d6}$>z1X-MOmZ9)`ERgtHw~tg5k0&D0n*RqQAAmdYkKRj*%OeTC1)yhnEh3YqFcok`o3U z3=Gm>=UAcLz1r^pP`qEIzh>X`SD?c5XL;D&D7UL5cn)u4hm` zjP4U{C{g@pFDJh+lmt?-@b}+MCu!^(lB}4Z$4W2}F4tuRnAW_%+~H%r_95px4yc6D z{__jJrPrB|1*XF!>rN%cyK6(^=W6R#%cY*w1_lQ9U$JQ*4Jeng+VNW~rTt@AZD3GPJkp|a z3BNMeh7HO+L)`;lCU>WH`tH(Q;J6;1>AOium;79wwRt~F>HK+C%bk_i`Na+$6Ss=% zcZPpkSy_22Dky}^+U%_w`yAl)u5TM;C!a$apX|BRjSnlip-M04F@b#fdu{?{j<>Rfv5zCeyb#yIqJWUhUdjmNN);U62m!Lsm zvQjPCpN&E`M3OI_rAo5`7A;m@c414HVE<~-nR98l};tV0UZs38*;U0ZQL*|V9_5P#^9ecU!7hc>p1Ui=9@RA zNs;XquYLz0#TJoLYXw!YN9kjkYnxvgsmN?TGShM^*g7P=%3Fc8DS7yVfaUmSONWnE zC!z55Mf~;3AwyD49}^F>WZ|CoTi0RhD$wz7(sB1U&(+4yeaQ9PPh2dOt-7Xh$n9TQ zOUc_eZqcT8Aj)~_q4UPVKp4j^7qyMQlFgTBg$e#MOS^A1-j%f7RhPw=$XyxB19u->0+g^GR;Doof{BMMJKCy`3Y| zcY9T%s{LpWi~gS&j4A${+`HyI;osy;rq*+k0S70KEs75%)pT+5K#|!3wlBaXl`s5Q zYm94!vrqhDZEg^4*@i}ER%4m)!S@(p3Mh$#CZu6z&-nhkVTgzBAJyMp&MaerWfrYw zcVFVOh@`O=)6;sBV$za;0=MzPR2%uGZCI*{=9MITJvI2+DxZCUHvOp6e4QMp~ zLtm{CQim_7Rx3frx2&KN4LZ4lwryHIpZAV#jm1jt?$ID{joXO#3MSvW0+hwYOPCpb z$=Y!@W2R?38MhP4cK5ode7OL=^arU}I@b0_IDtj1nF|_zAeb6CpjaPc;2n9$uMyO7 zRdmE5l1gy>I1GSxyLP#oh0BZ5chUOlI`V}2z;&n%Uy2B~m+dA8 zg1?QYz7ed>N#4~!6z(sKJe%T72&tC<9Yqs3JS;7*!enUEmg-p93=s3iTaLOxmL z>Rq6SP*%!!s-6Y?=*;q8lzGG18QCwo^Rap8q|Ho^LGpzt_csa;Gp}BbKAVMf>;PIo zsJpwi)Ne>=REnD0NztQIJ@{(8Ek~u1?`HEz?l|_u7iHf+=vDMkZ2>;OQt}VSwpvr! zXMV?N%AJ~xp`vBePc?6qg?;HY0=}lb7N*pA&4A#S+I2Y0Qu1K!%s+u}_1~LTt+_1< zzT4>$o$;Gf_KeHV1`kLvUNc?8WYE+BN~s%mDD8U@lh3^0SS|;T#ikA=xfMKfUUlW{ zKUu1`ZAWD^^fF>}6{YsF>5;l}e(`F;z43M32c_?tcj!{P{^61dN~fGQB-vzx4nOpu zGC_eJHXt~Qh{VZ%RrQ)+Ir z`e$v;Wv1?_J;cP9t8J*unYzE9F-9z}q_+l>3B+!xe|~|~G+o?$g4eY2>Cba2b3%uf zIt7%N(x&K!)0JK0v5{C^4&V4Y%amUMUj>!wul11?bYMSdCPRn&qk^Wj)-E@V!MqD4Zj6vYhF*0Z_znEEB;r+PIQb&)lrkuwbk^ED~h+_2Pnwi4c;+>CV{wAy$=+KjF z;?AJWPz{1l^~{v{foX}i(qV%qGOpe%%ERX0nV~o|PHn5D8`p?*6T6>D_%%-C$SJ5) z-fA2L3QNzTDy$VWyo&zNLdt6O0m16PPSNny=oa#0P4V`>gTZJ(Ix+d#Mu;f4vjnZf zHP~T%uf~$Wk!{=dXhPGNZnzw&BNDD85v_dviJ0Cf9kZa`+-vXz<-X7Rl#y zBLss}``bjA>H5+vzro};G+C`-Fx76P99gvpn?+Veww?8)1sZJ}D zU(NGbC78<>uEygx68b-7R%RVGy(M*3U7S*Q*PFZXM9wtobE4rI@(rGJ@0{OPQ?g$r zUWAP722HgPEfb7wW`JJ*hA0O|v7p`3vLi;QaG7OR!mAAvztM|a&9C^$5-IWY{;;BT zvS$5*vr%#Q5ccmf3sV!KNXaZBC6?NI&;HKm-R&gKGm4x9kw?GxrNyMa3cB#2v|+Ty zR(UeDuYUwzbY#|4%-!UxQ4{kx|~3~Szf_|=8$|aN+AknJkSc=Yx45O z+HRLJq?vhk$mB$D$H<^su6<#SzTP^QvE*rhjBji?koLyXtPR zN9~rS1ru3!=&C`Y5BkV|e=b_af(oIj^D)8+z!SJGfh29lJu;>BZT&j1GE{SiJ}=Oh zbTOJ01iTSDW>;=Qn%@C5=xpgqzQEkWbLj544T*!cu!%ECa8D)`h;i*HjiYefiRQu5 zF*2J0fN`ktB)sS&7yRQ<^;TV?c1ay_QYH-IjM0^{6n*OZ>W(g?-V8=YFxx>%)MiyW z8#=j(bQVI{XLd%#?ym8L-77k<>S$hwb|(IWjLyc6yE%=DJ@Zd0(T%BP9lXeeJePu?| z19lTwa7qAYwExO;=u4!% zbWi&$a;R1up+EKWd051>lo=n!)#ZdhX(ft!U^w8N@$oXC0|qpm36Sd1M$jM!$THKp zGG@P3#`b%Lac!pSuG69+!e?c|(X5WS8F$&jlYy1B*alWgyvs4@;0rS}E|BU>EJ!&c zBE$0I+}n?8fH$gr0rU0%Ov-zq9C-U0A)Q6cv=YP}&R6+HPP1Ym1QaQQ zDA=7tZ2dU*(5d#I*uI0C;0Z=TX#j>@6Un)*wJ!K81C)*`N3h5LjwY5e0>jPyc^Sh5 zCiZ4d;)&&r+_>9zbP#Q9I*aXW`-rGHzu5U$cVJgkGiQV?lALIlGNi*hMOPKm>9LUd zV_t|s8ypNFtQ;7a0eEOCHp>JCP9y#G2*Fy3x2W2;8y%VnMrl*Gk1kclrLuTt-O(ik z07m{*v4EQ4DiC`q^?;`+N6aj%nrCJNyhj4L!r8#_?fIZ1E|8%Q3LHBocqg!XyXRnz zPs=KAGbHOq3>XsR1s)rjO$5s2`M^uiWvFZOqXQG4&DRE7qW17wMvx!^%!fJxy=l+9 z`J^(g`%YT@i8xhWp`r*e0b8Fm!##0oJO@4b3Id%sU`me{GXXrs_whOG*}q%AeF6ru zvZKJrc!QKHYd}D0TL%RD=sIu?>jU&3vZNWG{iP_!Mzw@2uRL)9TZ$>Ul8DkXg4p%I z=xfGC`_X*IrW9Oo>F%B$=wIN02z|^Y{|If~zh9f$A21M8_Wk!YEY#Epc+gSk_AJHg zqI0|G159RW57Va#KrcJ`c_@x3&^MU^`D#9w`TYAbHk}fYasmpc3Pf1w0n@j3&YMZz z@TFjKj}X;>1*r>IH}F{a(=S(oip+zROM?H=R~KOtR_czi+^9#Ue`2O7y(Vz zGlRCdK_^UpB6j0?(1_FHxgaH>$eTLPVc}nw$EO^_3S?)ls*#-A|QyhL|{_Xp;wCQ*)OQPTTm(WUqm$MoR_O71ifF0=LI|&_#<6r zWtn~#`;Z?_UBN;RJ!fb5B&T)c=5OnR7kf4vEw@goR^9_wC0yPRv(|{?1HLoQ?^Epg zW=Fiv>GijpE^uH7D2p^cv3d(x-1B!RpRknTM;0hQ9c&tO($18*faA)Py6zfp+AsC?*amK%$PH`3 zo<533OPj@|E9MkL;c>tv!g3&m_^PcZUQ;Q(kbm~Z?_8B>o(pWs?>kM_8q2Ko=b#L_;BhnYZ7#@97D+yBb{00DOPFFMTB2N?MM zUwGi5(t?BE|AhxMAOp@41l0Tgd|-Y+F~x!5?ib|I*DIt;YfBuAk(YzfTm5jBn{4*BtpNf#PuP;^!fd~i)kPMKK^z?Q@ zNGU2RB9PJuY3YkVkBdGy4_|cPMGqh0e>G@feC)mNVtwy=dcYYP(RQAGzA8ch(!Wh` z$NopHhtEH50vv`2L}L+Bl1PS0|8~^V`@in$?*53$guu7WV7__gax2dP6+rM5kboTW1^l|pY!ZkGyyapFFzw6=P8Q>#!Afuxu&He1Za`Gd)GlpR$W6|T~R?(_LBA$DJgAr4Wz8Pri_*x@`{v(^d)u8 ze`U2i?fu*_9=`v|I{c5U)_;{{(7_!GjI4$6zUz;1xZ>^U4nHtk>F$5WqW)j?{Uht} z-?3=?S6KuA2EhpK|1Q}7HUSJ`{QM7ffq(u(evAjecyEB((F1P>n3!a}u4$>81`f;( zpGbBvSO2x|<8iY?*JkyzR-E;v8@Sl&TLO+AIujZo#~0WFZTmdZv3==hHqML znuXS3y>o*dD|0=D3%1uQ{501KY}u-VjQ+t5{Ibur=N(k7{3 zd(Z2KG_OC+8DCgwA-R1)`}b(ypjzFtj*B6~nW|+=0bI&-*GCV83a3r8PKJ!zxtCTG z2hDh?a`D|AIwkDQPX_Y8U)+dXA7)Ey-CUotG+^xv7~qjBX$N)s$hYs;c(_HH%}gMY z$ywGsgH`g2Ds?fFD)uo>lN~8f<%dmH)l{Ui%2n%q;hvH^tMdC{d)(Dx`*Ak5Usnbm zWjFA3mJupurVEp=r*;2vU*N%GulLnp0{Q}PgRAP2_9ga*;$`N)s|xOS)7m6A_EHl+ zxMvDl^-MOrv(^dKFK()J?oKX;ENl$o zey8%yFY?a1vMttH1PNQr_)DTZ8b5v$n8f^GO&N?2qgQm=?wZ^??`(O*@Wj4qZ1%+R zyFbeFIK!}b#k+gQMTeyZ>>loVU)>eSqeEY)B}5=2?cTi(RZVWJTG=9XvwmI?@x5ns zcXBxcrP^~nrEq$3Rx?J;+zAL|pnF`Ze$PAUtdskWGx@TL$V(FF9)ivmt zfZph-+GNCjaupMxD&5DMe_xoiGLFNgp0tiEHqphuNLXyOPp@JD?z+yto>k)6lgeC* zQL=gkBX{2BQL=6268K$k=rWW%5a^aGq4qpsGpB!jdpT~bQFHM!7ZZet)T%RtE;oNy z7B7F?6A9ZFLg4$YkK7X_Py;={fAFMjf#pF~scJ=p?VKbtg!uW63Zh|&1krH&?ic3H zUpHUCXnYfntiN#f3}Mw6TnHrrro8+G2d+^X5CRzjKnpj79fq^2Ls&JLv;^~-eHvv! zM8SKaEb%;qHs$#kBntqL$y!NFT@-vsOAt$dgT-nv&lpls8kZSTMj(&|8U$xO^mh;V z-{LH3NEQeY4m$E*t|u8#SOm$C%g}JR7DE|?0AeT$hcJ|>LxdQ^fiwsVEb38zEBk*S zgp_=J4nV~8_Q^F4GHg`*;5S5F^q(uB_%c)o1SpQuV4z_#iejLFvz}z2F-vzpjgs#~mrQ?HhYR`sC4KN0Hlp`$F6jIP=F8`=)k30R{wN{k{kiepZi=bkJt+k%ys+R3&=|~IGh*10QXvPVAS0= zXjtwn5BbF7=k$}Il)|g>U+n^}-o3F`Cei>|glcXthtPEBZ+kx@b<>g% z+eZ#Th+q}aILpWe=SqI9xLQBEAlN6U{(iwvE;CzqBbeEttq0JteLca@(r%jo_nFqc zJBqf>Cc%!w1uKML(npj$zU|n=g&?E7wOe6O7fDhtVPx^_0ergH)^YUvy3{CVCp$D7C0-nDWp~%!heP&xQl@` z8#TSZJ3Dp*hsp-!cbdc$eoM%9=Pv5` zFR`o27JDvKhX{{2a=t%VD8-^B7>@mo{w+%i_=Jdcnx6mj9#=8yXq<}-d3E{_5MnB} z??s5ipuGfte8OnSt1iuv49OFY2V~$qD?`%R=r@FNG`FP4Jx@g1GdMvtd?khYn1WG8 zp%DA^j>a7Sbe3dve$=PeZ8;g*=xEIOPqR4C?5`<7!MC<>CtXu{2_Q;?LkSd2!_qfZ zKKqb(y^JfZ01FKv(x#5!*tz|d@w!2+8A^;G(%C)tGQ>NI$W0NMSl;JAf$c*_%E2GZZy?FJKVm(%=fdf2e530^;p(0ucUDhF4xf=6xxc@Nk|yN$zSAk(gafSlxHu zy>h{C&mNKdK6)<(y?*xIXtCVA7f2IPkfM?dDPXOwI;FNP%Se-9sVIm$C#|Ld`RMl~ zZgyq!(Xg}|DCP7c|EH21?ba4IYyj7h9fND(c{MH#OA$ES)0eGcusTt#lVYx^z)6%c)Pog^#3f&KyN1 zy>kQ|LHo>&^gdb?xb9xcL)#{IOe{~L7BHRfL;!9zQWnOIj;3*wuRM@4RWGl5+N%<4 zw%*C#d0A(#a01 zpO4cmiX+VTq==%dNh>WHtO@I*x;g+quq?cop)GL6b;@)pW#VK&kre}2IY?r7d!L#Q&ipupk?YV0UTM0p{&39`6|>KZh( z(9r=~w*#=>$oVu_0n`S0Of82GQeFW=<@f|I0*8rmN zt+J9XeMiL4EHFqweHl-#pJECuFP730S*bv zgjbJzoO;Drm6aE4v%6Qv(}q>Pm`S%|V74igqM&JQ84{fJ)>klq(T*w|8{9l-%3RcQa2cu(k|FSJv%tpESMdfdT%O#!&%Medb0fDyTCpNnO$aPfe!`^OZTnfiIxJk2SKgo7XX4C_<$m1qD4A|46uaHrB?6|* z4W*MS{qPBhRL={qhLA&kO|)TK8~kJICUD4V&R%io&c=+NjMwsXsr#VZhwN)@v-V2{ z7s^l`e~Pc^mN>1PH4vQ2t~Fg-jDT{z<_=C6Ke-SM?ZqlTh>oWgwdm{wch_ro%)Wo8 zDyR9)+ivbb(#U?rX8zWw+VTT*?@)UYZdL3;s@UA%;7Ad$Pg)srkFY%FGyEj$c2XPc z8Qz?h;#8;UPwu0}_|HdD zM|kgNPerHfz08g8ZteeTQJDv0 z$*9x%3YmO8saA{EaKHjCBWuivyktvE6Xk^#3Oe{11kw^7R+nR~JYs=$*Ut>mxkzd+ zaMvmn62vCRyhVGE7NTS0agwCN4lE3Q{o*8vMN-?yhQK>*=2vTx$8eSAB1i#U{)rZ0 z&!MOj_PkAy!F44m-YZ0OYu@F)Fge}p#Q%tCoUNs-d_QNWTfO*HS( z^mP6h$Iv8rx?i$ZbbqtA@z42JQVv(uE-+ScZ?PGzkdJ31JH`_TRHIi?j8&!~^l=Qg zM$h&2kyy``mV^_O^naD{YC{qQ9o#9%thFi}Ez4`0=3RM~^pmJ>9)W}cFOv@l3KWmo zPCTLd46*kP$yf&i5TFFzjm}}=DdR1T+9gr6C@?HY)2Mud*Hj~gjujubC5|jid{Agw zhj6I&qkUe@A$^yQ11Q*^MO=S3*>S5xSuxKtK(m%Uggh!z$^Y|@%^NrM_=s-}_vkw=z0Uw#SN!p)X%i~&56^QH%u8mi#EJUI% z0rP4@fdhceN~|j8ZcY{HyHZV=JTB8-g7Uqkp^gK}Bo@&fXgk7%Nlg92j)1BQ&{COCp#EloGanaQ-jxi<5z{Wv{ z5hFuL_<=8b+Qo3mFB`W}Ih`m|4u^wwt9<`iEe7kPfC*qDlR_>^yeM%VU0SpNa25?F zV{@z!fR0OI;JRckk;oB6YmxKdSzcl|q~Y)7|6L214G(*0D3$Ip;l)m=ypjedNP!Qw z5ogbkdWj<*6Au)YG9EM3#ZVX#~9C*n~qZ*5Tr0%NJ zOWS^=^eBc4m!gszA?T~jl%*sznEmptS%8jkaBLI9j-w>1d?G)|l^gH|f%@?ku#Nip z8A%U%PQm6MI2Yw{022xJ^l*U{XdgfT!W4zf!@<~<{~cHhCI<&c{;lM5;4~+&e=T|i zn5+&<1T+ePd7vap6q$=v;|(jNAG#-rShU(if{Tk|+gtc_wpLXHNe0utfjYWWj9|S} zJSNCW^r6mFhl&t!4E^D1EW4D-xyJg{m2~=PTnKW%D#`tD8!H8vJQp&1Sf2Be=IH^?=~Q77}R&~pCz>x)$p)j4HT$PfpMvIWo8$>2$?E$5i! z!j_L)k!>c~_`8)=KH8%arM<)NlaoT7ZBBA@%#KOXOah8;c2$7KbA4bW;C<8Xng=GG zBq<&?P@C≈ydw81og3!<_&hV80^4%&(<}P_pvBbAwz1vO<4Y1yJtNR`B1(^>87A zvE5zM94qDGvC~sto7K{#Q?e`DA+$4=SMnK*&^$pg9OtH}1GHgj5CjKAx&$mQS*0{a z%eCo_%4V&tRom3s%>p}iN+p2`2cmL#97=MfUglpM3LNFzJT9i9Xj?mShVh)Fvs1bO z_OcMD%`b4(PA0)qHaJ=mZm#47Fb$zO)0b%B5Q}Rt|Jx}BghQzXSzpi=uiD1_#QYXh zZcK2NJ_{nIb#^1g(B(fxeFwPj$dbG(6G@Ti$tk`0Dit9$9=gZxHX-9kN#Dw|=l=qm zpCUSf?%$NL57g@Z(VkEb#jBc58)lpbCV?l*9F*}#8jGff!9NX0Xbxa<(MoUr#}KT| zUM{e4vHqQ609!?(UW)yNn@bs5*0=jzAi^FDxBWplrIufed zT_^n+`PxLIS^=S2{_)=J?wxGggvS1LYXo)Ry~obmBIks=ZUGuIpEzt(KgjwF*#`6u zb^V<6F4){?7+(2ms9!=coh_yBV8NJM6K_x|x&Z<0buT5dT=J(ovZbN(W+03_eyBOW zCx1^NLz*PSU(H4fDmXDYG#4`85Vk(`1eE0HPaK|=Cq0_B;mfMShV@H zu^J4koIVr#{(b*l$J zAIx^+gM*Lpk>-^{tm50XL0#hDTwwM(y|zTB*0D*0W7p17jQYA%S2s9nSH7OxYY67p zC)O5!wO2q+q5JTUsCFlgrRE1A$bvG&s1& zGNkDAq7)6fUoOu(%#r>V)uynK?)XDwtRcE@q-OG0g<)!PUC$pgS;J{0Z$rU^o=7}8 z2ru<)&@_eYXy6q3uH7J%H)mK2gJ*jFCl0&w{_dG8@_Bah-c^GO+L&BU$&#@9M_-P< z2(bfA6Gs%Qj-DZ@^;P-H+l}8ekHp?we;2mCyw^#D=ke2(Qz|O(E(Urk-vMlx!BThI zf!ffWnlnexI14!cKH~lEWb7n7e%F%NOowkcc`9O#gI!z}!so_iwYRz4N3+y_8er@pk1} z{8m~AV$T_!Rm3{ZTnc*m8(HnYvoSxtCct^d#_ZXd-BT5A^;sKqOKp__mm`Tk2`L_% z!#IL^tapyo^Vkzr52u_?ta6g;%5HtuibSvXWQve(@&_8P?JqOu8NU%M0FJHns(!A< zwkuBdlsr8BD4l@z+gi(OJA7Uh>}ll=E8T2;9jGqa%$cYEMsUwDN48a%=tTZ(tM~jN zn)iIjH@CF5!{5+>oi6$w!;;YpDmBRv=Z8WW2Ki0$XTK|hJyio5@6>+3sl!I`*x<-F zn-wgDyxc-sEmyssuq}%&&eM1!X7@Yfd~DH~biUb8uuj;Lnu6ul>&@zEJIiB55EA-` zNLj(&&*3~(V0hWsMY*xWDXSYk#pvx5mdDnP1n^EO^9?-$7b$=#05uIP*ZvTN;}Vjk zBvz*7E&VRbWbjnd0{TmMJ5zX8%T#JZo5UJMEMI`Vd1?1YtCE;>f@8|h4TUi^oAT#l z2|nCsXeJ`JFqdVZ%E7Ui^s_A>GEI!^y)^#&OuHqh$P^al^Z;2+S(p$~3sYQyIY+If zDA#sR4?OaXv0oWb9J!4-+iY=EhWPmhxhSY^%SEVYruLkzlf~|gvi;3NY#&@Fdf}3M z&chxTTBjQO(2wl9ypOff+_0Kk>CjGb}UhL~_ zUYL1Gn&Wc1<4}>RuM)q`{h&dB=O#eH7t9GNAr-4oeOqpx(z+Rz5*^kzj~&zh{IrufkhoKrrH<>X}{%VQuiAe|*Z2;R2$+#e^J{E(4q5nem85^5Dqs~^1!_Mg@8i~vgEB77|8cfjn&JiVd~{u zrm|^#9yPo3ujCAfWxzWLC1Q&j6hG=BUTQg64{V5llVWL7#nFN%?t`U%?q}ejSO|bq zpo1`Is~H&S1KoJLWLQiqq`T~;be@R6KX6?PC8MU#Cc$byC#kgHQU0*&c+w#41Fgo^ zOXqOOaWbtj`<&|LQ`Ct4O=emDR8)J}*{RSjaVGWh0eIf0fHuCp+b?G1r?7V=Zf~}< z$mIFId2IaZHCNTVtwmd}=*qZt*^BLLS8K~Ee!P0$kgD+9%*dx|{L-EYtZmGRC@#;Fi!%gL@^N>?XsbteBvwtlR?C0{m8l$PnUFj?X9m#G1pvmc(oTd>O(n z1fodWc?QQ&&4<}8U(8%eUB#E_kLh)&D>yOVJ08+Cn{wTenm@b2Ar4C5B)*VugoO3( zGIbfA9HY~2^3?H^1i4e!hT0(>6_|?sjQNGgrXQ*2Bz8WODS$S?LZH}b^~sNYJI#gI zGN$!Yh-84}H#Ci^{r2a62Akl0DY|{3cS1q=LTZmQ8%D=~;GEl3*7b#$Em~FwJW=o4 zxfo27l(7eOb+KEOF3XFQD)GT8>6HlNEbkX=d<>0AGv{LLa zZtjmS#hvEUo$6--i@xS+_W+__VpGcS&aY*)Ca29yq#VglFS!^Y?s55Ps|X%zPWG zW?)!n1q`U`DU%g!QV&56Q-s6n{Ql>M%>v3-FKV!V25R) zh?LjLXjkxLDg6r@8}1Z+{%sVZg=6!^f>N$OS2pcZa;hj;Yyg9DPKgVf71^7LE-X8* zMa^KLBF##RT*t>Ug?Qt%owdLu9iEs6$~E7 zRiny=6INID7IK~jHTlRThZ4Ilr$k^adhc53tXH>NjvbQqGs=}HY;S2nyk zH6K^eU)T_r)7Z+k@cPGlz@a!wzs=!#t)o`GTH{oZ;n%_sHS z_&6@)TpnGtPI-FyyNj;v$8{-MZZh@BlkFpE+(2q;KpV*SCz>Ab)}`XFOYLU6m^ZJD zmyIL})a5W=>y8N^O+i<{0V@j$L4_c~ws|s+s*ZtmzrB)}LaQt%UQBy2i>1WKC-# zuou&@s^ExK*x|O~b86yhf2pae{UwnsP~=kmQOVl(shYT^_|DU(XY|>H5A%F>1)U^B z-kRNnhFD{ljxz}}&W^Ppk5yTL%zrpU-J%%IdlR}rM%Hr;Ixqo+2IL>dsG{jb-W5Rl zAFx?RfRO$eC}Ow=*MjuGL9-AdPzj(O1&970u6acNwgQ9Gr0zfawoWq4mm$XEu>2mfyPaENY7ii6-u+bP9Quu@eIN5(Sh=e1@*r9$dUWn>g54OkOfa; zNRQ$H!Y7qS(Wh}fyYT9ZYmO|N>*-ieH4w)oG0-gk0fMW15x{Fcbcc)hO9M92vtL|s z{s@}$Eu(S+^xhJ}zqkE`*#G5K7{m-;IG6!=*2LqIY37Q{lMg|3AmdJLr5Jc6Zv0X zHH(&d{7x*Ie#Acu$67HUfix^W>`9=xJ@AO}dXcQxQE=XDQ78$B!_kw3?!m74luvNp zvcFp%%Y(T5c@SZIRPqk@Vrm?mxAC7FA|MXD+IZ-$l##kZfe}!9!XlXW7h~e(z|U5G z;2>WQj`19vlp?K*5nJ5$y1IH-?c3VIvLk3t(_E@flzwvy&KOY;m%d7Iwg9nvmX(7b z6*#NZAzl`YVW*5P3tw&v5d+Rd^s>&EhrV+>t z$=c@vw_bnv!>qiJgs78QYbVNzb7e#MQxk0c%HRO+j&*34LkQjDK4trxA`KaH_*0}9 zV|mh2!$-dMri6X-NBj;21HQM*4S-{*-DBzyg0442zxBP-c@-e`=_`d|(AaM+)00xx zlv(p#IeL!St=Fju=2cY;C{1AUwP-R8>1!(O`rC7Gek{D2uEkt1Tax6Mg%?*lyeA*P zrnV6~rJ z!;>_X=}egI(*y*#E%g4%;HrE1Uu*hJOc4$whB8;+SdW>5OmAsGOis2m{wfU-tzUwn zzx@hRU`!I)=o;YU`-x3lW9s7{^E8WFSt6SPNVM$V_k;s)pv*4Tuj$~HckBZ@_oPQF zr^_R6=>bRHS`azSLGj!xEGx`oB!3hbjXX}i&A-S(h5+9#W-kuaYzvOtZ)cKntJZI#12p;*_STNuRC zurRLK|DtvIcNQ#65K*UgsLZdxEjxQ+GJnB8o|C}nqfNCSq@_Q*75{P%zQ1YD=^I@K zERMch!fHL1c4UiK;yOaT(;r%Wsp^?xyk~%CQjnitTI={Rwat5(`#mEgZ(Hl|_0MN< zki`a{03glnUeQ7y3-ImlcMkDI_TxJNZmGWp_bX5%360O)SWS5` zt!Ix?HCOCRe%G9yCKuQP(dmt`ZsJ|=OFOE=laQN|7cDqfc@E*J=y`5*S5^vY0FGui zaJ1{kwB9~KHJGU9SO;d0{Xf8J9XpoKm0C3+0DUi87b{__F!2X*G3bm%c}O0kbZ_Sv z1uyxap06yzw1L)vu#uz>+gpV_MgBEd@ji5_fA?5scmGEjom)Pe=4DjH_h7s~V5bhbV4|rQth6|=w`H^g@8amPx!c{dzu$jQ!& z&^c$YplMQ4wN_>JRUOl>{EKk>1d!q8R)}z+7|oiwiXv#H^fYEegB?x+N!)7+ozGOHpK#Dr(~<1 ziRfkz?p9S=CA7^h+9c$zy!zALZry$JBQZt=812WR&@m_0+?HXA>L^>;qW&2|uEXZ? zOy3KXVh-1-uojo{2#+x6UR*bFPaW9)3dfM^(F#@0t;fkTTPf>LAPSM+Bmq! zzOp-*O|WEuSNn~q8+)M?@3c<3sg-T^Y-dVhZfAEz?eMapG^v^dq>Xd$n6JESK53RK zN>AIgG0Dzd&HrY1I;B25DA3Yi!qjj6C*=_g3@%;H!kqQt<|A zI~dVgH(>K&cG)r^B==`|b4zqWWV9>Zl7lwVf}8EZZcX;>9C|m!?6~P0Pgf1tTauNN z(4w*wU%*w*vC0PXwJgvH)*>_-Hi2t9hL|vcPLPVyINDk;;dPQS^5@3PY4mF2Sa-|o zU(V0H7?ld@P$975+e`cL*Gn#R1B;J{!$*KB3&kK<&?EGCx0{W}9v9ne)S=z>&S17Q z*+Ws}5~?hz&1^8;#WjwU-4{G`)kYI2EIC5V1y*V^l5$EjNzmI0R9&h@gRy(ztVXyKCtph^k$xK1c;da6D(e?GuHA9=@K zO|-Warw^n^fZ8);GDz&}36q(Erp<>RUKC5_Z?Hzj^+a z&3LB@CPacop5M*^Ds6zs@U$09449$I71r8sm6zenRR|x!Y0ey57az8aiOI#>K6>B{ z-UOh`up(aHN-cnFzv{j7ruI%*|1oE)Cyo7b(c48WFbHwHsbE4$^-seJO)TrC4m!7! z72^t(e*^MKk%oG$t8HsPea({+ouxk~ebj8T+~aiDZJ@lX-b^#)>ke@SDlsH`jQTvE zbo&S}-shZ`Vs2L$j7j-eBw>?mx7^fL_S$!7f1^iWfbZd@ZB3cm+T2R>`g{3U49B4l zoM9@6EH}1r2u#3{HHj0*+PRt#scIAZHVR){e>HmdsCJUz2Lb6KrqR=pM`h-{B#C`& zX~B0WEBwf2A?WZ@L&&n0<$WMg6FuD6b^>^qW~nv@N7bkE)kaL`)S7K~nwEB#O1>|Y zl3(&ZUzVZyTg@$S5k7B8ne=@|#)wt7y1;6nW4Wtit;Z{yk~D7BwyCJC%r6{a1X3dK zg>{qcgA9+L0Gk4yNFGk*?x?hGJ+wcOhIOF-C`3yZ6DR`Iv?f%_8e5P7cXdTVOwxi2WsGE z7T4KTxhvkAW^7JPGB^B|+YJONppz3UhicNPZ%$o?emqquZLhH6wDjEg0zI^L?YC69 ztQxn;G6#;fIP^hy{Gg9rAs0y&M1iQiM7X;yG2O!E^^6B^_u^@PZsxa7zI?b)aa7Gx45+^h@ZYm`ZjkIV zSqXFk|1pS&xPGNc(*8138tVw2rK0EccUEzDCZ(Mu9{L?W@ z4~H@bBnMJ9dhKEi3JYHDIQq6SfS0U^qb+#mtq$#Hx@EeqPF`5u`Xd|jG1y#PsaxEm zxn;)MLf%NqVf}31r)lk+W$x8rb9{)`=h5j_)az%B zrEfu-&8NfR2PMjhJzuzKbqF!zJR9?kd6a6uKx)%C3FTouWv-+cJ5zFhdeVzZ7j5aB z2hJpcN^Nu>O6^(WbMH$iu?%T~-)v4tXrVx4@Jio{#t~E{&W*Lkq{&n&u*@%oP3^4R zp1k5=JrJt~P#XM^j8v25`?id&xcLK=P14jqpTd4E2HJW=E-F3d{($$JriqpKz@iQH z-=ct{g}~|%ps1Gs6n+C`zepB!M#(VaVbTJsXIX$!a4p#1253SKPyyBA|L+O0YBEM- zK}RuM22@ltMkEL_Mhr)4F<=6@Q~)N33}L`jhXGTp7EpBX|92s@HyKGMbsq$6X@?Bt znSl=lU<@*VK$;9s9YO=ID=k4d_z1(j1R&20A>Knm8SaIU816m%e^bcp5JMp&M1Vp@ zh>iet{t$*jpl%&PK@t<>es5<%$4(rC|FhwQ3Kpi$~x?^=ilI1+!~;dS$P@7wJEAhK>OG-$nMLM&g9$7o;+?8zFlJFGus0 z4ZDpx1UkmACEa!!5k~C)75n%m$7kaKvqLear|&N2UFm06Gi$BSCcwhvHmMOS)B09l zdIys_S4`et#drS6*wig~=y|IiQ0^S>IpKwql}kC3<&Q_W>tVb)Af2~pK2C(V1*jcL z(e^c~U^~flp+#Wy8Dca}1E(qRGeIsC-^rCFzbM56`s}rXKMZENb>r=nNmJPn ${local_repository}/config/secrets.yaml + chmod 644 -R ${local_repository}/config +} + +function export_lovelace { + bashio::log.info 'Get Lovelace config yaml' + [ ! -d "${local_repository}/lovelace" ] && mkdir "${local_repository}/lovelace" + mkdir -p '/tmp/lovelace' + find /config/.storage -name "lovelace*" -printf '%f\n' | xargs -I % cp /config/.storage/% /tmp/lovelace/%.json + /utils/jsonToYaml.py '/tmp/lovelace/' 'data' + rsync -archive --compress --delete --checksum --prune-empty-dirs -q --include='*.yaml' --exclude='*' /tmp/lovelace/ "${local_repository}/lovelace" + chmod 644 -R "${local_repository}/lovelace" +} + +function export_esphome { + bashio::log.info 'Get ESPHome configs' + rsync -archive --compress --delete --checksum --prune-empty-dirs -q \ + --exclude='.esphome*' --include='*/' --include='.gitignore' --include='*.yaml' --include='*.disabled' --exclude='secrets.yaml' --exclude='*' \ + /config/esphome ${local_repository} + [ -f /config/esphome/secrets.yaml ] && sed 's/:.*$/: ""/g' /config/esphome/secrets.yaml > ${local_repository}/esphome/secrets.yaml + chmod 644 -R ${local_repository}/esphome +} + +function export_addons { + [ -d ${local_repository}/addons ] || mkdir -p ${local_repository}/addons + installed_addons=$(bashio::addons.installed) + mkdir '/tmp/addons/' + for addon in $installed_addons; do + if [ "$(bashio::addons.installed "${addon}")" == 'true' ]; then + bashio::log.info "Get ${addon} configs" + bashio::addon.options "$addon" > /tmp/tmp.json + /utils/jsonToYaml.py /tmp/tmp.json + mv /tmp/tmp.yaml "/tmp/addons/${addon}.yaml" + fi + done + bashio::log.info "Get addon repositories" + bashio::addons false 'addons.repositorys' '.repositories | map(select(.source != null)) | map({(.name): {source,maintainer,slug}}) | add' > /tmp/tmp.json + /utils/jsonToYaml.py /tmp/tmp.json + mv /tmp/tmp.yaml "/tmp/addons/repositories.yaml" + rsync -archive --compress --delete --checksum --prune-empty-dirs -q /tmp/addons/ ${local_repository}/addons + chmod 644 -R ${local_repository}/addons +} + +function export_node-red { + bashio::log.info 'Get Node-RED flows' + rsync -archive --compress --delete --checksum --prune-empty-dirs -q \ + --exclude='flows_cred.json' --exclude='*.backup' --include='flows.json' --include='settings.js' --exclude='*' \ + /config/node-red/ ${local_repository}/node-red + chmod 644 -R ${local_repository}/node-red +} + +bashio::log.info 'Start git export' + +setup_git + +export_ha_config + +if [ "$(bashio::config 'export.lovelace')" == 'true' ]; then + export_lovelace +fi + +if [ "$(bashio::config 'export.esphome')" == 'true' ] && [ -d '/config/esphome' ]; then + export_esphome +fi + +if [ "$(bashio::config 'export.addons')" == 'true' ]; then + export_addons +fi + +if [ "$(bashio::config 'export.node_red')" == 'true' ] && [ -d '/config/node-red' ]; then + export_node-red +fi + +if [ "$(bashio::config 'check.enabled')" == 'true' ]; then + check_secrets +fi + + +if [ "$(bashio::config 'dry_run')" == 'true' ]; then + git status +else + bashio::log.info 'Commit changes and push to remote' + git add . + git commit -m "$(bashio::config 'repository.commit_message')" + + if [ ! "$pull_before_push" == 'true' ]; then + git push --set-upstream origin master -f + else + git push origin + fi +fi + +bashio::log.info 'Exporter finished' diff --git a/git-exporter/root/utils/jsonToYaml.py b/git-exporter/root/utils/jsonToYaml.py new file mode 100644 index 0000000..a297fcc --- /dev/null +++ b/git-exporter/root/utils/jsonToYaml.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +import json +import sys +import os +import yaml +from dotty_dict import dotty + +def convert_file(file, path): + yaml_file_name = os.path.splitext(file)[0] + ".yaml" + #print (file + ' -> ' + yaml_file_name) + with open(file, 'r') as infile: + with open(yaml_file_name, 'w+') as outfile: + if path is not None: + data = dotty(json.load(infile)).get(path) + else: + data = json.load(infile) + + yaml.dump(data, outfile, default_flow_style=False) + +input_file = sys.argv[1] +if len(sys.argv) > 2: + path = sys.argv[2] +else: + path = None + +if os.path.isfile(input_file): + convert_file(input_file, path) +else: + #print ('Convert folder ' + input_file) + for json_file in os.listdir(input_file): + convert_file(os.path.dirname(input_file) + '/' + json_file, path) diff --git a/glances/CHANGELOG.md b/glances/CHANGELOG.md new file mode 100644 index 0000000..9654fa4 --- /dev/null +++ b/glances/CHANGELOG.md @@ -0,0 +1,19 @@ +## What’s changed + +## ⬆️ Dependency updates + +- ⬆️ Upgrades python3 to 3.8.10-r0 @frenck (#149) +- ⬆️ Bump zeroconf from 0.29.0 to 0.30.0 in /glances @dependabot (#148) +- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#150) +- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#151) +- ⬆️ Bump zeroconf from 0.30.0 to 0.31.0 in /glances @dependabot (#153) +- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#152) +- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#154) +- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#155) +- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#156) +- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#157) +- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#158) +- ⬆️ Upgrades add-on base image to v9.2.1 @frenck (#159) +- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2 @dependabot (#160) +- ⬆️ Bump netifaces from 0.10.9 to 0.11.0 in /glances @dependabot (#161) +- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#163) diff --git a/glances/DOCS.md b/glances/DOCS.md new file mode 100644 index 0000000..99756c0 --- /dev/null +++ b/glances/DOCS.md @@ -0,0 +1,236 @@ +# Home Assistant Community Add-on: Glances + +Glances is a cross-platform monitoring tool which aims to present a maximum of +information in a minimum of space through a Web-based interface. + +Glances can export all system statistics to InfluxDB, allowing you to look +at all your system information and its behavior over time. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "Glances" add-on in the Supervisor add-on store + and install it. +1. Disable "Protection mode" in the add-on panel. +1. Start the "Glances" add-on. +1. Check the logs of the "Glances" to see if everything went well. +1. Click the "OPEN WEB UI" button take a glance at Glances. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +process_info: false +refresh_time: 10 +ssl: false +certfile: fullchain.pem +keyfile: privkey.pem +influxdb: + enabled: false + host: a0d7b954-influxdb + port: 8086 + username: glances + password: "!secret glances_influxdb_password" + database: glances + prefix: localhost + interval: 60 + ssl: false +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +### Option: `process_info` + +If set to `true`, it will enable the process module of Glances and gives +detailed insight into each individual process running on the system. + +**Note**: _Enabling this feature will increase CPU usage significantly._ + +### Options: `refresh_time` + +Sets refresh time (in seconds). + +**Note**: _Refreshing more quickly will result in a higher CPU usage._ + +### Option: `ssl` + +Enables/Disables SSL (HTTPS) on the Glances Web UI. Set it `true` to enable it, +`false` otherwise. + +### Option: `certfile` + +The certificate file to use for SSL. + +**Note**: _The file MUST be stored in `/ssl/`, which is the default_ + +### Option: `keyfile` + +The private key file to use for SSL. + +**Note**: _The file MUST be stored in `/ssl/`, which is the default_ + +### Option group `influxdb` + +--- + +The following options are for the option group: `influxdb`. These settings +only apply to the Glances InfluxDB data export. + +#### Option `influxdb`: `enabled` + +Enables/Disables the Glances data export to InfluxDB. + +#### Option `influxdb`: `host` + +The hostname where InfluxDB is running. + +**Note**: _If you are using the Community InfluxDB add-on, +use `a0d7b954-influxdb` as the hostname._ + +#### Option `influxdb`: `port` + +The port on which InfluxDB is listening. + +#### Option `influxdb`: `username` + +The username that you have created for Glances to authenticate against +InfluxDB. + +#### Option `influxdb`: `password` + +The password for the above username option. + +#### Option `influxdb`: `database` + +The name of the database to store all Glances information into. + +**Note**: _It is strongly recommended to create a separate database for glances +and not store this in the same database name as Home Assistant._ + +#### Option `prefix`: `localhost` + +The hostname to append for exported data. + +**Note**: _For the Grafana Glances dashboard set this to `localhost`._ + +#### Option `influxdb`: `interval` + +Defines the interval (in seconds) on how often Glances exports data to InfluxDB. + +#### Option `influxdb`: `ssl` + +Adding this option will allow SSL to be used on the InfluxDB connection. If not +set will default to `false` which is the required setting for the Community +InfluxDB add-on. + +## Adding Glances as a sensor into Home Assistant + +The Home Assistant Glances sensor platform is consuming the system information +provided by the Glances API. + +This enables one to track and display their stats in Home Assistant, +and even build automations based on that data. + +Set up the integration through **Configuration -> Integrations -> Glances**. + +**Note**: _Once the add-on is running, add the integration with all +defaults, except for port, which should be 61209_ + +More information about the Glances sensor platform can be found in the +Home Assistant documentation: + + + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2019-2021 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-glances/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-glances/97102?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-glances/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-glances/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/glances/README.md b/glances/README.md new file mode 100644 index 0000000..d9230b5 --- /dev/null +++ b/glances/README.md @@ -0,0 +1,35 @@ +# Home Assistant Community Add-on: Glances + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Glances is a cross-platform system monitoring tool written in Python. + +## About + +Glances is a cross-platform monitoring tool which aims to present a maximum of +information in a minimum of space through a Web-based interface. + +Glances can export all system statistics to InfluxDB, allowing you to look +at all your system information and its behavior over time. + +![Glances screenshot][screenshot] + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-glances/97102?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v0.12.2-blue.svg +[release]: https://github.com/hassio-addons/addon-glances/tree/v0.12.2 +[screenshot]: https://github.com/hassio-addons/addon-glances/raw/main/images/screenshot.png \ No newline at end of file diff --git a/glances/config.json b/glances/config.json new file mode 100644 index 0000000..8159798 --- /dev/null +++ b/glances/config.json @@ -0,0 +1,81 @@ +{ + "name": "Glances", + "version": "0.12.2", + "slug": "glances", + "description": "A cross-platform system monitoring tool", + "url": "https://github.com/hassio-addons/addon-glances", + "ingress": true, + "ingress_port": 0, + "panel_icon": "mdi:speedometer", + "startup": "services", + "homeassistant": "0.92.0b2", + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "ports": { + "80/tcp": null + }, + "ports_description": { + "80/tcp": "Web interface (Not required for Ingress)" + }, + "map": [ + "addons", + "backup", + "config:rw", + "share", + "ssl", + "media" + ], + "hassio_api": true, + "auth_api": true, + "docker_api": true, + "host_network": true, + "host_pid": true, + "apparmor": false, + "options": { + "log_level": "info", + "process_info": false, + "refresh_time": 10, + "ssl": false, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem", + "influxdb": { + "enabled": false, + "host": "a0d7b954-influxdb", + "port": 8086, + "username": "glances", + "password": "", + "database": "glances", + "prefix": "localhost", + "interval": 60 + } + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)", + "process_info": "bool", + "refresh_time": "int", + "ssl": "bool", + "certfile": "str", + "keyfile": "str", + "influxdb": { + "enabled": "bool", + "host": "str", + "port": "port", + "username": "str", + "password": "password", + "database": "str", + "prefix": "str", + "interval": "int", + "ssl": "bool?" + }, + "leave_front_door_open": "bool?" + }, + "environment": { + "LOG_FORMAT": "{LEVEL}: {MESSAGE}" + }, + "image": "ghcr.io/hassio-addons/glances/{arch}" +} \ No newline at end of file diff --git a/glances/icon.png b/glances/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a4fe9cd88ea8692d69e9a9ecfebc2021eae56ed6 GIT binary patch literal 8535 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 bbmp zYHo3Vxib2>TY-m_W?@npD}>4XipYakd>{2k2NQD@5(DH;6FvU~*TGVl0j24Co|AIj zsrDOH4u7+ROtWE(hb3|%_1CPWMMYtJ&@UHtHXbtFoB&zrb2y~jo3=9F*-jJ8>ioj^ zU6yV=&7|#20cUu%c+fo4S6Llen@_t_O4~(I7_(GIh|Zp9W~Y0SM>U+L{t$VW!H&%0 zUWt!KOOPQ~=VVC}(@f2c7m$f9w#MiQG^hxVq{-L*OJ0Ix(erYDu85q`dbg4w6kPIEb*exadmuJOaea z>-L|919Mo{EcU!Dux^1TWYyG6XcZ+)Q%2<_`xbet*U*iF>w2_hY2DAV92*Z&P8be`i zhOK+xnS-G|<%1zueqMXhy;F$|r)v_^v7wEh*RCk(?Qkg5qW&x(4~v=6^VZwlX>a1* z?w_kraL-k5a9zS1;GMSijm!X@l+i>7jkY8ah-m{O z7Kny^_Hgyza-hOFzq2jKwR$pqtp>#C?KDR!prMM6r*whAxv%@Kq0! zbZgt4VF4&_%v5X}XR2N-C{vH5T7>vZl4e&BAcHeObSZ3-)|gyuFwpXv8n-0Mo{D43 zMe{#zOz8WS!cuf;^hL2l`izv$ZFMNrYoRh3F?;=dc~qL*5$Dw%=BS6J`I@J-R*klj z?*s!l1MSJ@rC3@|Wndj`4x_^M=RGtN2TK*?i#r>9oUp}ueDzdY95P=2@d*bwr8CYy zlhD2WNK0eXOX*>^EWxFy+6m5(rR8-)T>gtW^$lslInOqn6np!?8lV>uj+lcpC;-4avZG`{mc&$8j%d0dD~o8G99;0 z@@@Yd)P$^}BVc9r+^V%!8Rrj+7;p(TgX_o*{^C|MFC@=P|1Kqr>v4=BV$MyMC1)q7M$ls$aniDb zTlG+#=Qetcua}9>+1|7iZND7))*T}^dR&_=|Cf~9UIXAlu2iVNLlG>&$H3NvGBCG| z4aZHADW^3xw_{!RoYbmGYYmSeL%}Y?v5WLKcxq)tsi&HZ*$1r}3Ai`_YQX&e{hS7u z<~8RRPgZ@{SXWnHjjLJBGLqGO=jp_H%?2%Pq5%JCD!|W-yY>6IX;|%B*XPsePTH2g z(f8eBx4}0>eefn^oC!4Dz z?h!5Kv#@ZRKaZO#F z&Ej=uBB+A)6KgaE*H_h$!+{h=$sIsub7a<@w(PR2SW5NbkZ#zR$57OGvFHO?79oDk zGUaM6pYKlbMeSyX>-oUBV{U*ZTG9to!N|wSZYfR&K7;(3`9imQ-0YIWz^pJ%Bb;FT z+UfZ0YK}EOR>Dx{xR2z)!h<)Ku>Kx~YGgu$DyDB6VR{@UxsMdcBq3&7(2a?Uag4|T2z>p)75&?&?kr_ifSt=N=aIFX_h-x+e=)l2|`09_s; z7fEC_)W{Ij1s!T?_!t*D5ZFYXG>NjXWY3ik;9T@?*QCwzFy-&026^*Tniv(@ST4?c ze`vttRd`YyUBIxel+0YHt;LcO5>=6&@>2$f*E+#i!&w09`__F+cSFZd%Yk+Q%Rzu=sd1MQB+mWxxyBnUlxjA^hkhA(8Sv&`aq3j2E)nOzG-mnJ7 z$D+_4lo`fxlp6a#9vph|^->gMUmxWK#I6Jr?sm~(e}8=MM`knOq|b7_J<%RFDmFdi z6Qbh;54s#oqxviEW*`y92YhJL{%&**pU3cSioHFN#E0kG1@Z`E4Pl2p7x3jG)3HaB zjcZOlc^iaq(FZFcrwJSUH3^A3Mg?wX5JX9i(&|QwLR-`eP+BM+1#Ly6BtY>~!Dm_r zM*#n*6^p;>qaMcbNaYd{U^r4(T{czoV4jSoFg=j$2UevHx8*A{srh0K40#T#nqXKB zJnC4-f(jo9aAoj8@GtX$O+>}Gp5aJ!6A=@`(}#KfPYgy^1$lA{kxF6#r; zjab*?@_1wNIuVg*HcZYG9oso^gM8RUdeoye_XHl$HcFdu8Zd|^kzZ2fSq6uMKx>?j z_NPd+Yn}oW8s7_*HhB=J&uMS`NhxVMg9KPOtQR zvN=mdPv1=h12jw@wnA+md!d_F3Pxa51sOtwpxu)YR8&EwoS0=s_DB0HSdD(l8Cqh} zr)4u(>tc)h-B<{e+RG9FUhO8fARSB{_oGy5IIY>!K+bj&AiMY zrDQ_)X`B=im5M#a5(qi^Zn+mvMdH8*%P!`n+@ zL)k=ez>FXI%184_$}2^bok%ns>5x4aDBO!v=QImY>z(}MMi8y2tsaT_LV_3LTMwWJ zu#9bVSZ@>0`W*lFYUMh4WS7F|<*aEcUi3;1YuAW4rk9IRbtrlmReRTi7#M5|bnT^I z#06talaM1HNJvyl1c1amTU+?zDC6ny>3*h+cG7G0(G>xpbXY;2$P2XSwdt{y8fcQ% za0RROgrzWvg_Ck&tlMdYUNe!SW!QgK*dE49JqUADO`uHD0x1S8caWm`!mi@NE01K2 zIXr`_PQX-zyoBY9SWfxD(OW%!@g(A|tQm-RC1+>Gh7WyvOlx^(MjUj=ARb2EBLWG@ zy|>)X`!T^DVV!$_r<3RQ8)`Y7Xo89_%rI;S7>~QNkD;5vOunolqxops>?s_JfM&A> zdpvlkf4~N;K;GQNmhQ8<_p{BqfS$+hF^FrsGtc<2zT#kw;V>QX+``GSpjFT9;+5l# zMWDbG2rl0M!wLK^KYN|V`TMF%xUzR{pUO^xu#D(NOMSn<0ZzrtxBaX@aj{JYeI6{e z=LnMlyxwZ6u@JgpBv*)j1Hw9c1Dq%fS5c)N3lvf{R%H~e#9RUN0y33Dgl5MX1#~VH zL&R9MP^oa#CrYP)X%r9m*+3&tSic}HDfkH;*yerSgxp;KEc4UqU|u?8%_&S&_iuVN zWh%TF*;|y1wT#l1m6+9m%QBGR-!Lv9A`DKJxG)jQ8fmB^VPuIR-qZ|m`iL;%SpNsJW;)%lWB>#=?QU<$jh-e6^~VYk-d2EM3)cC4+6eD9jcybY3fIb_7d1o>o@*jP z^zI)lnLNx)MVEE)GH4JoO?iW@EHOkgILs5ECIFaByX&TMFafe^uHbXp%hO8?n+G=I~0DiC^+(PWb z!$PMaryO?uzcd^$+mbYwVB4T~YV4M3XW)=J>1$DexyjZ)!Vdw1vD+)89{k@uTR@>^ zhCK{6&8LBNUt|UATe+8*SAx zJw5lw@6VUyTU&3wx*v+jskzxNxIGdm%|owF^FC(B2R;5f&vmz~w?&>)y)4ag6yd5T zXkkgvxJ7PQnt&HhzUWU{IZ90$D24I}JYnULQOJ>`=3foYiYwPzuM@f=PoO>13gvS= z*SVQGc78QTO;Ts=0`z8wvr-L{ZtJ9t^qD z73fI{DZ7h$+A7o%=F41ye>-grcrO4Ka|Dg)TpFA^HV%tVHY+3{U4|MMVims;(hnIZ zz4I_#)hI29$`MnU^7qYUJo|qq+KZ&>fdy(G%ySbeU()=PXHAP1imq^oWqXLU`-S@q zO1L`81Akl-(SL!bATKrcgPHKr;G!($nNg@`Lt|Y$Qc$WO*S;t!(`M2v^Gk0tN`=>a zH$55+xve4Yns6ldIX>7~31Y5EFCaVwS?btQsSIpS!g1i>W0PIdtt1GH-c4Lj!rzNN zZqHcpjy+=wvMMD+Ld@#bzfkC#jvMS3?wmUD4XG`yk8YYW;wn6*!|KnoJ{FvCI7N#yBSPtB`0PW%}@8|CvF_C-Lll|{p425?^8RvMPvDdh4kZd8>yv2SNJd%5I6Y1aSk{=g_D%}14~s@ zF!!tfh8>A`QyP2hUcrqay^Av&F8)MSz}rsOX9DLjBkvByHCy9Oa!Enq8#{(PEC^1RXKdZI zwHB1sl`Tt#(^`vc8iqas48O0mX*h+R#RCtcbM5BiN4kpS z4wqUG_MyB*nHlB94=inm8IvGQ*Gr3Wus%Gk7!ql2a9Gd`Xfec5-ym473`crU`oW?r zYpbU@S&BqlsoBO!m5iXwmtDGxxNwalz^!@?tf@cgXR06qH{}ZKYyI6iL(akXwF_|F zN63sZ2d9lE`uiEfIpR6K%HqHMGFA@w7hPj4dgd4=%_I`Gv0UZ4S2*(27kVHtlt{XJ z=zVeZu4VK(lY*}Eq*#W(G|84Nup#JC$k(07f}#}EXQtRX409;eTF3hjC zyKLKjxQo+|yQ-BwPEeZM+kHLCRQWrF@e?UdiJy4E*G5(`iAhO{v;e0|x(qZ)8zVugfSB5eAt*vQr!F_Yf0%qhzUM^6P-`_DE`KTGi&^5xvPrCLX9mHi0$*iD zf}2R%W14Dg%S4P=x_KWK?~A9^(r^7S(!DYDjTQDW51UDU#8hq3^%*Bum^W z|D%(G&Ozj2ucBhF0DTg!v^{oDU@P?iZ5G19w4NlNB|+=X&j~OY%S>Q=(ecvW%m@IC zV%*O_v>bbdKTBp2ozdmPq=Z)x|1<40b7{PEW|>&zTWsG;|{|B zoYjWsF8Eu&N|~tUI?Cl#mrAw1tj?b~R8U#<0sfz%N&~Qf^1p?DZ8OvT2O%-u3S_~3}$kWqe>;h`>7-IN{uPFVIHuZ-seZJa3 z-dJt>0v~^Y#(PA0GfoJgT zEewV6RMZzrnJPq^?~*1iY_XJ?uXo5C{Go%h|EUY0l`_hX(=@9Q(pF7rBV_LVYRh^`R)+rod|?-kZ+c_OV_^1^SH9Vg(7MLt>77-~3?tFE#yVJ} zlM(4vVxVvj5M>bMR4#v?gD+|2+JCr=?7}Ble29?Qh2MpI5Xz7;R*#hfj;_1L-tQOT z=Uje*HprGbXLLA_Hy70`NLh$283X>^yE_ofDGI(b|$g#@osPs#}ZhGYoN}GQnKl`@%NQ+4@#=+m# zG5V_M<}t$9M}m`awmoM{FhZ8@H7@%LVI7d$?mk@dT)fouZJTnHOE?xDZBolK%2KbY zA-V93T35OL!3GZdAEt1U6H((-<;QclWOSEhifODt#5A$RuMuI|#IL0>eE-V6>uQ$9 z3Z#@DRb4Os1xYH`=`fmqpECzu-o`(Cx-U=`pJJ?`2c2lu;i}NM4~+D*(sN6%-Ug- zYX7DtCjtMoE}}@piOhcy3Mehn4E&cO1Dm$Ybpsx|XHF$gMM%xqHDT{DX}xl)lh9wI z{amA0mg4A6*r*Yy#zY-_0x3IR$0Uo_jZLEaen?emaUzM~=GE>>qjjpb_Gv3Ks6dN_Ad)Q|Vdd=V(=hH*V8DMk}DzispdPh2xTjM8+u-xsc zajh#0v_?m~WSN(Firla!%~tW6_L;9VeHj(jxqqqiQ37AtwnGl7-GUXAMN+fy5=JTK zN;OfT7uy9Hk<=xxC{gPRYi5GoO*jVHq~Lk>PV0JV{YB@kOG?I2C{HV2Tuzw`;*(b& zxEG{59!n13Y~m7d2Qf_?XpHO4kXLr%S!(wSt-SvlD0 zgh?_;)%$~7ck}bow?Vu`in?wVynmZuku%)i{62$`O^GuE>hoP?EJYmRwxXZm)k=|9 zd?9c18M{)))v=SG*l7W#=F4Z9VGvygJ*H*0#ljQ&;&~<))@6a0E`;k%Y3!i*fM;`(4^&v!ASWcSd3su|rEbOhIel zP~pSB^~;D1cV&jq!<&2NbkszXg_HR3vxkNviKEFLY%5~w5}eGraPgln1Xet;lbrZX zpQTI2yW?$&?T!S_zuc;#BA4Q1N=Cw)=ETfZn8ZE`LR*>~7WUaMk0 zr=S(^*T@5(adUl3^cKUtg+hf7%UEQzO*?#EF*D~-{q0aC3pEy@XK@s>hWFr1Hi_zu z$dKu|%06m~82yys{i((_sXrlFtn_w8BS0{#qbu3+kgacN0e%NR3IFGX2Rj`FEkr{O zBX-hCCF7AIMReROBt2xK=1%q)>pq|YhLUNL{1k{$6%lr|7w6TlMm07_T! z45eqV7vbqDS~6;Q!1-{>M~34VuY3;lf2+M-)e+W)+mbM8aS7^4rI1f>7M$JSv6H25 z-80j2ADLhz@dZ*c+~MX!EU{UAn=bN}iP7W4b}VAMg^qsSjx?_*D==`$TGb;5m~s$d zG^x~iL8eeUL0(Cm`ich&Q0i3$6tNdv9eEnoDjJUGi7Zj_9qoK^&0jR85D?RmgZT-- z$sMYC@O4K5OVt{nFx1QYQ;Dw%1&`{__NN}&$zbQ;H2YQWP7rTh#MCC~3+zDhFP`X< zdV$01${KL2B6hN&I7Qhke4F&7BU-B?Y?uZnwv|$-p;^sh zw5Pbo(anyga6T2~CICrO$IQLlQD(A+^=2b0Pci%m--sOsVRI!teke%9UT`^z;JR^g zGpFjONU&ZDnQ>0tUNn8UIQuT~S3|=vQ5WJgO{9sq6C1tdx0l3h3nRV2OvkCJQjZf3 zHl-RPD?M=kxA32bJ__1vqj1Im<8C=f$MttrOKye~wq0*`#!OGe;~p8;9ml(b8mlrq zyp{gd&kanabe;rCpC6;lFqm!WOmovP@@zr?h!*iI(~sF>m+uSR2y-7JIl`Z*f*$(EF&CE$rwA|eG3ku1zCT-;<_`r;bM9l7 z)*GyDWHwB;DHo5D!;5xr3o4`tAHL~O2-mG-`@snFD1n*K{~OdmALxHW`XWlcCDeaU m{)_&5=l>!oTR1h){|msVR%VzpQN+mqRFaogk*bw23H~2j#Z6}b literal 0 HcmV?d00001 diff --git a/grafana/CHANGELOG.md b/grafana/CHANGELOG.md new file mode 100644 index 0000000..3f62a5a --- /dev/null +++ b/grafana/CHANGELOG.md @@ -0,0 +1,5 @@ +## What’s changed + +## ⬆️ Dependency updates + +- ⬆️ Upgrades Grafana to v8.0.2 @frenck (#172) diff --git a/grafana/DOCS.md b/grafana/DOCS.md new file mode 100644 index 0000000..3b7639b --- /dev/null +++ b/grafana/DOCS.md @@ -0,0 +1,215 @@ +# Home Assistant Community Add-on: Grafana + +The analytics platform for all your metrics. + +Grafana allows you to query, visualize, alert on and understand your metrics +no matter where they are stored. Create, explore, and share dashboards. Learn +about your Home Automation system using sexy and compelling graphs, and other +data visualizations. + +Combine this add-on with the InfluxDB add-on to get insanely powerful +insights to your home. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "Grafana" add-on in the Supervisor add-on store. +1. Install the "Grafana" add-on. +1. Start the "Grafana" add-on. +1. Check the logs of the "Grafana" to see if everything went well. +1. Open the Web UI. + +**Note**: As the addon now supports both Ingress and direct access, the default +`admin` user has a password of `hassio`. **Due to the implementation the +password cannot be changed, however you can delete and create a new user, if so +please ensure to update the `grafana_ingress_user` option.** + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +grafana_ingress_user: frenck +plugins: + - ayoungprogrammer-finance-datasource + - grafana-clock-panel +env_vars: + - name: GF_DEFAULT_INSTANCE_NAME + value: Hassio +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +### Option: `grafana_ingress_user` + +When using Ingress grafana will automatically log in by default with a username +of `admin`. If a different user is required this option can be set. + +### Option: `plugins` + +Allows you to specify additional Grafana plugins to be installed to your +Grafana setup. For a list of available plugins, see: + + + +**Note**: _Adding plugins will result in a longer start-up for the add-on._ + +### Option: `env_vars` + +This option allows you to tweak every aspect of Grafana by setting +configuration options using environment variables. See the example at the +start of this chapter to get an idea of how the configuration looks. + +For more information about using these variables, see the official Grafana +documentation: + + + +**Note**: _Only environment variables starting with `GF_` are accepted.\_ + +## Using it with the InfluxDB Community add-on + +Grafana does not come out of the box pre-configured, but letting it interact +with the community [InfluxDB add-on][influxdb-addon] is pretty easy. Please, +follow the instructions from the on how to [create a database][create-db] +for Home Assistant. + +1. Create a new user for Grafana on InfluxDB + (InfluxDB Admin -> Users and "+ Create User") +1. Login into Grafana +1. Create a new datasource: + +- Name: Anything you want, e.g., Home Assistant +- Type: InfluxDB +- HTTP > URL: `http://a0d7b954-influxdb:8086` +- HTTP > Access: Server (Default) +- Auth: (leave them all disabled) +- InfluxDB Details > Database: _Your Home Assistant InfluxDB database_, + e.g., `homeassistant` +- InfluxDB Details > User: _Grafana InfluxDB username defined in step 1_ +- InfluxDB Details > Password: _Grafana InfluxDB user password defined_ + _in step 1_ + +1. Hit Save & Test + +## Anonymous Access + +Anonymous access on a local network is possible by exposing the port in the +add-on configuration, along with setting the following environment variables: + +```yaml +env_vars: + - name: GF_AUTH_ANONYMOUS_ENABLED + value: "true" + - name: GF_AUTH_ANONYMOUS_ORG_NAME + value: "Main Org." + - name: GF_AUTH_ANONYMOUS_ORG_ROLE + value: "Viewer" +``` + +It is not possible to enable anonymous or non-administrator access with Home +Assistant Cloud. This includes embedding Grafana resources with an iframe or +rendered image inside of a dashboard. For more details see +[Anonymous login not working, Grafana add-on 3.0.0 #55](https://github.com/hassio-addons/addon-grafana/issues/55). + +## Known issues and limitations + +- This add-on does support ARM-based devices, nevertheless, they must + at least be an ARMv7 device. (Raspberry Pi 1 and Zero is not supported). +- `To render a panel image, you must install the Grafana Image Renderer plugin.` + This message is shown on ARM devices, like a Raspberry Pi. The Grafana Image + Renderer plugin is not available for these devices. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2018-2021 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-grafana/graphs/contributors +[create-db]: https://github.com/hassio-addons/addon-influxdb/blob/main/influxdb/DOCS.md#integrating-into-home-assistant +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-grafana/54674?u=frenck +[frenck]: https://github.com/frenck +[influxdb-addon]: https://github.com/hassio-addons/addon-influxdb +[issue]: https://github.com/hassio-addons/addon-grafana/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-grafana/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/grafana/README.md b/grafana/README.md new file mode 100644 index 0000000..6497504 --- /dev/null +++ b/grafana/README.md @@ -0,0 +1,39 @@ +# Home Assistant Community Add-on: Grafana + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +The open platform for beautiful analytics and monitoring. + +## About + +The analytics platform for all your metrics. + +Grafana allows you to query, visualize, alert on and understand your metrics +no matter where they are stored. Create, explore, and share dashboards. Learn +about your Home Automation system using sexy and compelling graphs, and other +data visualizations. + +Combine this add-on with the InfluxDB add-on to get insanely powerful +insights to your home. + +![Grafana in the Home Assistant Frontend][screenshot] + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-grafana/54674?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[release-shield]: https://img.shields.io/badge/version-v7.0.1-blue.svg +[release]: https://github.com/hassio-addons/addon-grafana/tree/v7.0.1 +[screenshot]: https://github.com/hassio-addons/addon-grafana/raw/main/images/screenshot.png \ No newline at end of file diff --git a/grafana/config.json b/grafana/config.json new file mode 100644 index 0000000..dce42ed --- /dev/null +++ b/grafana/config.json @@ -0,0 +1,52 @@ +{ + "name": "Grafana", + "version": "7.0.1", + "slug": "grafana", + "description": "The open platform for beautiful analytics and monitoring", + "url": "https://github.com/hassio-addons/addon-grafana", + "startup": "services", + "ingress": true, + "ingress_port": 1337, + "panel_icon": "mdi:chart-timeline", + "panel_title": "Grafana", + "arch": [ + "aarch64", + "amd64", + "armv7" + ], + "map": [ + "config", + "ssl" + ], + "watchdog": "http://[HOST]:1337/api/health", + "options": { + "plugins": [], + "env_vars": [], + "ssl": true, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem" + }, + "ports": { + "80/tcp": null + }, + "ports_description": { + "80/tcp": "Not required for Ingress" + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "plugins": [ + "str" + ], + "certfile": "str", + "keyfile": "str", + "ssl": "bool", + "grafana_ingress_user": "str?", + "env_vars": [ + { + "name": "match(^GF_([A-Z0-9_])+$)", + "value": "str" + } + ] + }, + "image": "ghcr.io/hassio-addons/grafana/{arch}" +} \ No newline at end of file diff --git a/grafana/icon.png b/grafana/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e9dff3b0077bb86b23a6d8b7a6bada9aaee4c594 GIT binary patch literal 9704 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
    `HsLX64T{p=|9=kt^Aw-}@`??X)+_(1>w a000lr9Udn&H~qc<0000 + +**Note**: _Changing these options can possibly cause issues with you instance. +USE AT YOUR OWN RISK!_ + +These are case sensitive. + +#### Sub-option: `name` + +The name of the environment variable to set which must start with `INFLUXDB_` + +#### Sub-option: `value` + +The value of the environment variable to set, set the Influx documentation for +full details. Values should always be entered as a string (even true/false values). + +### Option: `leave_front_door_open` + +Adding this option to the add-on configuration allows you to disable +authentication on the Web Terminal by setting it to `true` and leaving the +username and password empty. + +**Note**: _We STRONGLY suggest, not to use this, even if this add-on is +only exposed to your internal network. USE AT YOUR OWN RISK!_ + +## Integrating into Home Assistant + +The `influxdb` integration of Home Assistant makes it possible to transfer all +state changes to an InfluxDB database. + +You need to do the following steps in order to get this working: + +- Click on "OPEN WEB UI" to open the admin web-interface provided by this add-on. +- On the left menu click on the "InfluxDB Admin". +- Create a database for storing Home Assistant's data in, e.g., `homeassistant`. +- Go to the users tab and create a user for Home Assistant, + e.g., `homeassistant`. +- Add "ALL" to "Permissions" of the created user, to allow writing to your + database. + +Now we've got this in place, add the following snippet to your Home Assistant +`configuration.yaml` file. + +```yaml +influxdb: + host: a0d7b954-influxdb + port: 8086 + database: homeassistant + username: homeassistant + password: + max_retries: 3 + default_measurement: state +``` + +Restart Home Assistant. + +You should now see the data flowing into InfluxDB by visiting the web-interface +and using the Data Explorer. + +Full details of the Home Assistant integration can be found here: + + + +## Known issues and limitations + +- While the Chronograph interface supports SSL, currently, the add-on does + not support having SSL on InfluxDB. This limitation is caused by + Chronograf and we are still looking into a proper solution for this. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2018-2021 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-influxdb/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-influxdb/54491?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-influxdb/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-influxdb/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/influxdb/README.md b/influxdb/README.md new file mode 100644 index 0000000..481b548 --- /dev/null +++ b/influxdb/README.md @@ -0,0 +1,39 @@ +# Home Assistant Community Add-on: InfluxDB + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Scalable datastore for metrics, events, and real-time analytics. + +## About + +InfluxDB is an open source time series database optimized for high-write-volume. +It's useful for recording metrics, sensor data, events, +and performing analytics. It exposes an HTTP API for client interaction and if +often used in combination with Grafana to visualize the data. + +This add-on comes with Chronograf & Kapacitor pre-installed as well. Which +gives you a nice InfluxDB admin interface for managing your users, databases, +data retention settings, and lets you peek inside the database using the +Data Explorer. + +![Chronograf in the Home Assistant Frontend][screenshot] + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-influxdb/54491?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[release-shield]: https://img.shields.io/badge/version-v4.1.1-blue.svg +[release]: https://github.com/hassio-addons/addon-influxdb/tree/v4.1.1 +[screenshot]: https://github.com/hassio-addons/addon-influxdb/raw/main/images/screenshot.png \ No newline at end of file diff --git a/influxdb/config.json b/influxdb/config.json new file mode 100644 index 0000000..5a345be --- /dev/null +++ b/influxdb/config.json @@ -0,0 +1,57 @@ +{ + "name": "InfluxDB", + "version": "4.1.1", + "slug": "influxdb", + "description": "Scalable datastore for metrics, events, and real-time analytics", + "url": "https://github.com/hassio-addons/addon-influxdb", + "ingress": true, + "ingress_port": 1337, + "panel_icon": "mdi:chart-areaspline", + "startup": "services", + "homeassistant": "0.92.0b2", + "hassio_api": true, + "arch": [ + "aarch64", + "amd64", + "armv7", + "i386" + ], + "init": false, + "map": [ + "share:rw", + "ssl" + ], + "ports": { + "80/tcp": null, + "8086/tcp": 8086 + }, + "ports_description": { + "80/tcp": "Web interface (Not required for Ingress)", + "8086/tcp": "InfluxDB server" + }, + "auth_api": true, + "options": { + "auth": true, + "reporting": true, + "ssl": true, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem", + "envvars": [] + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "auth": "bool", + "reporting": "bool", + "ssl": "bool", + "certfile": "str", + "keyfile": "str", + "envvars": [ + { + "name": "match(^INFLUXDB_([A-Z0-9_])+$)", + "value": "str" + } + ], + "leave_front_door_open": "bool?" + }, + "image": "ghcr.io/hassio-addons/influxdb/{arch}" +} \ No newline at end of file diff --git a/influxdb/icon.png b/influxdb/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e97bdce4659334a605c0fd7afea95dca855e19bb GIT binary patch literal 18345 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 Ef*(dIT>t<8 literal 0 HcmV?d00001 diff --git a/influxdb/logo.png b/influxdb/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..1683a0931dda4b970d05a99fb4009a86328c131d GIT binary patch literal 15428 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 literal 0 HcmV?d00001 diff --git a/jupyterlab/CHANGELOG.md b/jupyterlab/CHANGELOG.md new file mode 100644 index 0000000..3b8c09e --- /dev/null +++ b/jupyterlab/CHANGELOG.md @@ -0,0 +1,16 @@ +## What’s changed + +## ✨ New features + +- Add Seaborn by default @frenck (#245) + +## ⬆️ Dependency updates + +- ⬆ Upgrades libpq5 to 11.10-0+deb10u1 @frenck (#238) +- ⬆️ Bump actions/stale from v3.0.15 to v3.0.16 @dependabot (#236) +- ⬆️ Bump frenck/action-addon-linter from v1.4 to v2 @dependabot (#237) +- ⬆️ Bump release-drafter/release-drafter from v5.13.0 to v5.14.0 @dependabot (#240) +- ⬆️ Bump docker/build-push-action from v2.2.2 to v2.3.0 @dependabot (#242) +- ⬆️ Bump actions/stale from v3.0.16 to v3.0.17 @dependabot (#243) +- ⬆ Upgrades nodejs to 12.20.2-1nodesource1 @frenck (#244) +- ⬆ Upgrades nodejs to 12.21.0-1nodesource1 @frenck (#246) diff --git a/jupyterlab/DOCS.md b/jupyterlab/DOCS.md new file mode 100644 index 0000000..9af340d --- /dev/null +++ b/jupyterlab/DOCS.md @@ -0,0 +1,171 @@ +# Home Assistant Community Add-on: JupyterLab + +JupyterLab is an open-source web application that allows you to create and share +documents that contain live code, equations, visualizations and narrative text. +Uses include: data cleaning and transformation, numerical simulation, +statistical modeling, data visualization, machine learning, and much more. + +This add-on runs JupyterLab, which is the next-generation user interface for +Project Jupyter. It is an extensible environment for interactive and +reproducible computing, based on the Jupyter Notebook and Architecture. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "JupyterLab" add-on in the Supervisor add-on store + and install it. +1. Start the "JupyterLab" add-on +1. Check the logs of the "JupyterLab" add-on to see if everything went well. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +github_access_token: abcdef1234567890abcdef0123456789abcdef01 +system_packages: + - ffmpeg +init_commands: + - pip install virtualenv + - pip install yamllint +``` + +**Note**: _This is just an example, don't copy and past it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +### Option: `github_access_token` + +Sets an GitHub access token. When making unauthenticated requests to GitHub +(as we must do to get repository data), GitHub imposes fairly strict rate-limits +on how many requests we can make. As such, you are likely to hit that limit +within a few minutes of work. + +There is a chapter in this document with instruction on obtaining such a token. + +**Note**: _This option support secrets, e.g., `!secret github_token`._ + +### Option: `system_packages` + +Allows you to specify additional [Alpine packages][alpine-packages] to be +installed to your JupyterLab setup (e.g., `g++`. `make`, `ffmpeg`). + +**Note**: _Adding many packages will result in a longer start-up time +for the add-on._ + +#### Option: `init_commands` + +Customize your environment even more with the `init_commands` option. +Add one or more shell commands to the list, and they will be executed every +single time this add-on starts. + +## Getting a GitHub access token + +You can get an access token by following these steps: + +1. [Verify][github-verify] your email address with GitHub. +1. Go to your account settings on GitHub and select "Developer Settings" + from the left panel. +1. On the left, select "Personal access tokens" +1. Click the "Generate new token" button, and enter your password. +1. Give the token a description, and check the "**repo**" scope box. +1. Click "Generate token" +1. You should be given a string which will be your access token. + +Remember that this token is effectively a password for your GitHub account. +_Do not_ share it online or check the token into version control, +as people can use it to access all of your data on GitHub. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2018-2021 Franck Nijhof + +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. + +[alpine-packages]: https://pkgs.alpinelinux.org/packages +[contributors]: https://github.com/hassio-addons/addon-jupyterlab/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-jupyterlab/87337?u=frenck +[frenck]: https://github.com/frenck +[github-verify]: https://help.github.com/articles/verifying-your-email-address +[issue]: https://github.com/hassio-addons/addon-jupyterlab/issues +[python-packages]: https://pypi.org/ +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-jupyterlab/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/jupyterlab/README.md b/jupyterlab/README.md new file mode 100644 index 0000000..c7466cb --- /dev/null +++ b/jupyterlab/README.md @@ -0,0 +1,40 @@ +# Home Assistant Community Add-on: JupyterLab + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Create documents containing live code, equations, visualizations, +and explanatory text. + +![The JupyterLab add-on][screenshot] + +## About + +JupyterLab is an open-source web application that allows you to create and share +documents that contain live code, equations, visualizations and narrative text. +Uses include: data cleaning and transformation, numerical simulation, +statistical modeling, data visualization, machine learning, and much more. + +This add-on runs JupyterLab, which is the next-generation user interface for +Project Jupyter. It is an extensible environment for interactive and +reproducible computing, based on the Jupyter Notebook and Architecture. + + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-jupyterlab-lite/87337?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v0.5.0-blue.svg +[release]: https://github.com/hassio-addons/addon-jupyterlab/tree/v0.5.0 +[screenshot]: https://github.com/hassio-addons/addon-jupyterlab/raw/main/images/screenshot.png \ No newline at end of file diff --git a/jupyterlab/config.json b/jupyterlab/config.json new file mode 100644 index 0000000..206bde2 --- /dev/null +++ b/jupyterlab/config.json @@ -0,0 +1,34 @@ +{ + "name": "JupyterLab", + "version": "0.5.0", + "slug": "jupyterlablite", + "description": "Create documents containing live code, equations, visualizations, and explanatory text", + "url": "https://github.com/hassio-addons/addon-jupyterlab", + "ingress": true, + "panel_icon": "mdi:flask-outline", + "arch": [ + "aarch64", + "amd64" + ], + "homeassistant_api": true, + "map": [ + "config:rw", + "share:rw" + ], + "options": { + "github_access_token": "", + "system_packages": [], + "init_commands": [] + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "github_access_token": "password", + "system_packages": [ + "str" + ], + "init_commands": [ + "str" + ] + }, + "image": "ghcr.io/hassio-addons/jupyterlab/{arch}" +} \ No newline at end of file diff --git a/jupyterlab/icon.png b/jupyterlab/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..20e4baec6c4865be8f6c358fce599e8e00bd6316 GIT binary patch literal 4678 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 literal 0 HcmV?d00001 diff --git a/log-viewer/CHANGELOG.md b/log-viewer/CHANGELOG.md new file mode 100644 index 0000000..c522f47 --- /dev/null +++ b/log-viewer/CHANGELOG.md @@ -0,0 +1,24 @@ +## What’s changed + +## ✨ New features + +- Add translation support @frenck (#86) + +## 🚀 Enhancements + +- Remove NGINX access log from Supervisor log output @frenck (#85) + +## 🧰 Maintenance + +- Apply updated repository structure & CI workflow @frenck (#84) + +## ⬆️ Dependency updates + +- ⬆️ Bump actions/cache from v2.1.4 to v2.1.5 @dependabot (#75) +- ⬆️ Upgrades nodejs to 14.16.1-r1 @frenck (#76) +- ⬆️ Bump brpaz/hadolint-action from v1.3.1 to v1.4.0 @dependabot (#77) +- ⬆️ Bump docker/setup-buildx-action from v1.1.2 to v1.2.0 @dependabot (#78) +- ⬆️ Bump docker/setup-qemu-action from v1.0.2 to v1.1.0 @dependabot (#79) +- ⬆️ Bump docker/login-action from v1.8.0 to v1.9.0 @dependabot (#80) +- ⬆️ Bump docker/setup-buildx-action from v1.2.0 to v1.3.0 @dependabot (#81) +- ⬆️ Upgrades add-on base image to v9.2.0 @frenck (#83) diff --git a/log-viewer/DOCS.md b/log-viewer/DOCS.md new file mode 100644 index 0000000..5678156 --- /dev/null +++ b/log-viewer/DOCS.md @@ -0,0 +1,155 @@ +# Home Assistant Community Add-on: Log Viewer + +Easily monitor your Home Assistant logs in your web browser. Custom filtering +is available to make it simple to differentiate different types of logs. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "Log Viewer" add-on in the Supervisor add-on store and + install it. +1. Start the "Log Viewer" add-on +1. Check the logs of the "Log Viewer" add-on to see if everything went well. +1. Open the web UI for the "Log Viewer" add-on to start watching logs. + +**Tip:** To see more logs, be sure to enable the [`logger`][logger] integration +in your Home Assistant `configuration.yaml`: + +```yaml +logger: + default: info +``` + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +ssl: false +certfile: fullchain.pem +keyfile: privkey.pem +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +### Option: `ssl` + +Enables/Disables SSL on the Log Viewer. Set it `true` to enable it, +`false` otherwise. + +**Note**: _The SSL settings only apply to direct access and has no effect +on the Ingress service._ + +### Option: `certfile` + +The certificate file to use for SSL. + +**Note**: _The file MUST be stored in `/ssl/`, which is the default_ + +### Option: `keyfile` + +The private key file to use for SSL. + +**Note**: _The file MUST be stored in `/ssl/`, which is the default_ + +### Option: `leave_front_door_open` + +Adding this option to the add-on configuration allows you to disable +authentication on the add-on by setting it to `true` and leaving the +username and password empty. + +**Note**: _We STRONGLY suggest, not to use this, even if this add-on is +only exposed to your internal network. USE AT YOUR OWN RISK!_ + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Dale Higgs][dale3h]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2018-2021 Dale Higgs <@dale3h> + +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. + +[contributors]: https://github.com/hassio-addons/addon-log-viewer/graphs/contributors +[dale3h]: https://github.com/dale3h +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-log-viewer/64377?u=dale3h +[issue]: https://github.com/hassio-addons/addon-log-viewer/issues +[logger]: https://www.home-assistant.io/integrations/logger/ +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-log-viewer/releases +[semver]: https://semver.org/spec/v2.0.0 diff --git a/log-viewer/README.md b/log-viewer/README.md new file mode 100644 index 0000000..8ea04b5 --- /dev/null +++ b/log-viewer/README.md @@ -0,0 +1,25 @@ +# Home Assistant Community Add-on: Log Viewer + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee] + +Browser-based log utility for Home Assistant. + +## About + +Easily monitor your Home Assistant logs in your web browser. Custom filtering +is available to make it simple to differentiate different types of logs. + +[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg +[buymeacoffee]: https://www.buymeacoffee.com/dale3h +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-log-viewer/64377?u=dale3h +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg +[release]: https://github.com/hassio-addons/addon-log-viewer/tree/v0.11.0 \ No newline at end of file diff --git a/log-viewer/config.json b/log-viewer/config.json new file mode 100644 index 0000000..a4afef5 --- /dev/null +++ b/log-viewer/config.json @@ -0,0 +1,44 @@ +{ + "name": "Log Viewer", + "version": "0.11.0", + "slug": "logviewer", + "description": "Browser-based log utility for Home Assistant", + "url": "https://github.com/hassio-addons/addon-log-viewer", + "init": false, + "ingress": true, + "panel_icon": "mdi:text-box-outline", + "homeassistant": "0.92.0b2", + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "homeassistant_api": true, + "auth_api": true, + "ports": { + "80/tcp": null + }, + "ports_description": { + "80/tcp": "Web interface (Not required for Ingress)" + }, + "map": [ + "config", + "share", + "ssl" + ], + "options": { + "ssl": true, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem" + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "ssl": "bool", + "certfile": "str", + "keyfile": "str", + "leave_front_door_open": "bool?" + }, + "image": "ghcr.io/hassio-addons/log-viewer/{arch}" +} \ No newline at end of file diff --git a/log-viewer/icon.png b/log-viewer/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..145b71b68d09097fd3df3408074583b45a27d1b1 GIT binary patch literal 9546 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 a2^)Kjd75-Gxqtgl07W@f*&1n+p#K2j^FPu6 literal 0 HcmV?d00001 diff --git a/log-viewer/logo.png b/log-viewer/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..145b71b68d09097fd3df3408074583b45a27d1b1 GIT binary patch literal 9546 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 a2^)Kjd75-Gxqtgl07W@f*&1n+p#K2j^FPu6 literal 0 HcmV?d00001 diff --git a/log-viewer/translations/en.yaml b/log-viewer/translations/en.yaml new file mode 100644 index 0000000..e1b01f1 --- /dev/null +++ b/log-viewer/translations/en.yaml @@ -0,0 +1,22 @@ +--- +configuration: + log_level: + name: Log level + description: >- + Controls the level of log details the add-on provides. + ssl: + name: SSL + description: >- + Enables/Disables SSL (HTTPS) on the web interface. + certfile: + name: Certificate file + description: >- + The certificate file to use for SSL. Note that this file must + exist in the /ssl/ folder. + keyfile: + name: Private key file + description: >- + The private key file to use for SSL. Note that this file must + exist in the /ssl/ folder. +network: + 80/tcp: Web interface (Not required for Ingress) diff --git a/matrix/CHANGELOG.md b/matrix/CHANGELOG.md new file mode 100644 index 0000000..ea2a143 --- /dev/null +++ b/matrix/CHANGELOG.md @@ -0,0 +1,17 @@ +[![GitLab CI][gitlabci-shield]][gitlabci] + +## Changes + +- ⬆ Upgrades musl-dev to 1.1.24-r2 +- 🔨 Disable Docker init +- 🔨 Implement OCI image specification on labels +- ⬆ Updates matrix-synapse to v1.14.0 (#52) +- ⬆ Upgrades add-on base image to v5.2.1 +- ✏ Split add-on documentation +- ⬆ Upgrades riot-web to v1.6.2 + +[Full Changelog][changelog] + +[changelog]: https://github.com/hassio-addons/addon-matrix/compare/v0.9.0...v0.10.0 +[gitlabci-shield]: https://gitlab.com/hassio-addons/addon-matrix/badges/v0.10.0/pipeline.svg +[gitlabci]: https://gitlab.com/hassio-addons/addon-matrix/pipelines diff --git a/matrix/DOCS.md b/matrix/DOCS.md new file mode 100644 index 0000000..a28ba30 --- /dev/null +++ b/matrix/DOCS.md @@ -0,0 +1,167 @@ +# Home Assistant Community Add-on: Matrix + +Matrix is a secure and decentralized communication platform served as an +in-house and open-source alternative for platfoms like Discord or Slack. You +can connect via your own [clients][clients], or via the Riot web client +provided from this add-on. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "Matrix" add-on in the Supervisor add-on store and install it. +1. Set your `server_name` as the hostname of the instance you will be using. + This is an important step for integrating other services later. +1. Start the "Matrix" add-on. +1. Check the logs of the "Matrix" add-on to see if everything went well. +1. Click "Open Web UI". +1. You can then register via the message that appears at the top of the app. +1. Change the server address to your own via "Custom server" and set the + "Home server URL" to yours. By default this will be + `https://yourservername:8448`. You can check this by navigating to this URL + and you will be presented with a welcome message. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +ssl: true +certfile: fullchain.pem +keyfile: privkey.pem +server_name: yourddns_url.com +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +These log level also affects the log levels of the Matrix. + +### Option: `ssl` + +Enables/Disables SSL (HTTPS) on the IDE. Set it `true` to enable it, +`false` otherwise. + +### Option: `certfile` + +The certificate file to use for SSL. + +**Note**: _The file MUST be stored in `/ssl/`, which is the default_ + +### Option: `keyfile` + +The private key file to use for SSL. + +**Note**: _The file MUST be stored in `/ssl/`, which is the default_ + +### Option: `server_name` + +This is the hostname of your server. Set this to the host that you will be +connecting to with your clients without the port and without the +`http://` or`https://`. For example: if your domain name is +`home-assistant.io` set your `server_name` to this. + +**Note**: _You should only set this once. You will likely have to reinstall the + addon to change this after the fact, losing all your rooms and users._ + +### Option: `leave_front_door_open` + +Adding this option to the add-on configuration allows you to disable HA +authentication on the Riot interface by setting it to `true` and leaving the +username and password empty. + +**Note**: _We STRONGLY suggest, not to use this, even if this add-on is +only exposed to your internal network. USE AT YOUR OWN RISK!_ + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. The format of the log is based on +[Keep a Changelog][keepchangelog]. + +Releases are based on [Semantic Versioning][semver], and use the format +of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented +based on the following: + +- ``MAJOR``: Incompatible or major changes. +- ``MINOR``: Backwards-compatible new features and enhancements. +- ``PATCH``: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Timmo][timmo]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2019-2020 Timmo + +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. + +[clients]: https://matrix.org/docs/projects/try-matrix-now.html +[contributors]: https://github.com/hassio-addons/addon-matrix/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io +[issue]: https://github.com/hassio-addons/addon-matrix/issues +[keepchangelog]: http://keepachangelog.com/en/1.0.0/ +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-matrix/releases +[semver]: http://semver.org/spec/v2.0.0.html +[timmo]: https://github.com/timmo001 diff --git a/matrix/README.md b/matrix/README.md new file mode 100644 index 0000000..2dc7da2 --- /dev/null +++ b/matrix/README.md @@ -0,0 +1,31 @@ +# Home Assistant Community Add-on: Matrix + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee] + +A secure, decentralized communication platform. + +## About + +Matrix is a secure and decentralized communication platform served as an + in-house and open-source alternative for platfoms like Discord or Slack. You + can connect via your own [clients][clients], or via the Riot web client + provided from this add-on. + +![Screenshot][screenshot] + +[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg +[buymeacoffee]: https://www.buymeacoffee.com/timmo +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io +[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v0.10.0-blue.svg +[release]: https://github.com/hassio-addons/addon-matrix/tree/v0.10.0 +[screenshot]: https://github.com/hassio-addons/addon-matrix/raw/master/images/screenshot.png +[clients]: https://matrix.org/docs/projects/try-matrix-now.html \ No newline at end of file diff --git a/matrix/config.json b/matrix/config.json new file mode 100644 index 0000000..34e38e8 --- /dev/null +++ b/matrix/config.json @@ -0,0 +1,53 @@ +{ + "name": "Matrix", + "version": "0.10.0", + "slug": "matrix", + "description": "A secure and decentralized communication platform.", + "url": "https://github.com/hassio-addons/addon-matrix", + "webui": "http://[HOST]:[PORT:80]", + "startup": "application", + "ingress": true, + "ingress_port": 1337, + "panel_icon": "mdi:chat", + "homeassistant": "0.92.0b2", + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "init": false, + "boot": "auto", + "hassio_api": true, + "hassio_role": "default", + "auth_api": true, + "ports": { + "8448/tcp": 8448, + "80/tcp": null + }, + "ports_description": { + "8448/tcp": "Matrix Synapse Home Server", + "80/tcp": "Riot Matrix web client (Not required for Ingress)" + }, + "map": [ + "config:rw", + "share:rw", + "ssl" + ], + "options": { + "ssl": true, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem", + "server_name": "hassio.local" + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "ssl": "bool", + "certfile": "str", + "keyfile": "str", + "server_name": "str", + "leave_front_door_open": "bool?" + }, + "image": "hassioaddons/matrix-{arch}" +} \ No newline at end of file diff --git a/matrix/icon.png b/matrix/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..30b80ec5e55b0c6c0fec9b104982997a92a8d80b GIT binary patch literal 2295 zcmaJ?cTf}i7G9E24Ap>w6bb!FFG56-8WfOjM8HB&6huHTQVa@&a-|ytM38C}kkBC@ z(hMC$E)qbh+#p5j4M<67;qDt}9OwPpb`obxL?8)IvIo)<0(2LOQA+zf3G zzVYC5iVF%_2o9J6?O9t(j424Ee!J%9=YOKIva+9!w6yeZ@&CHNn99mZP*ze>@;?F) z_VxAsPBu0+{to}Y@9XRPyMRa}f-o*F?iVQ|BLn)QqoY5Wq@<)@p9wl;x40F_`)5{ZpS67#vogG*)KR;hbN2jo`Fd!fRWU8vFo;`a;CX*u~B64za0s{kaIGl=# zih+SaNJt2n*2>BXRNlOK6P(n+!2wvVxVShpG?Y%KgL|>KxL96ZzP7fux3{;lvchCC zCnhF#c6PwD;BXd;wZ6XI+1Uwp8yp<`<;$0bh6ZpVR4Ns0j6$J+I|!EZ@bJ*k(AeDE zTv%8rDk=gyjE;_;oSdwwsli|{%F4>Jva)k?bKTwD@$vB%78dsQ_WJtznYWWTzyp-% zXK#HG!0`ypu=WqllLR1CBR==zux;*zg*i8oqgzA7?Z5jX&j0Xrxyq5Bde6b)j7Cea zHft@`(`Ij_x4V|0ufQ@c(&Cn*thNz#Kn;T1tvNE4UhFCYpyGQ~6`=~kE z2;<$yo(>Sz(It5vcfx}e`F`AhPlw4_bB!Z9iosCtH zo5N=D>0JF+)yo@!@K`z9c0K>)+Vdtuy_l_gu&V`6Kjj!4kTr4)t$`=8yTVxNHPOZA zs-Z8RiO}?6^TR?S8kE=l22c+=ol5}!;`N0e=RVahjg61*-wKA<`YN3#rEH0lXX-_tUbVR+_PDkdLO)Z=-I- zF;IptcvY4*o8PoO^iS>~h5XsH9_O-YFTJX`Tz*8?Lt;fQC-Pc~ zx1#4?S+iZSiCeJepPP-nw5pFD2d30#6wgRm3Ff8V%Q2~{tMB8Ro;ovze(sM z!aq8>{BV^)iazpsUdKfF^2_5c@#RjWcf6aZP{i5W#Yz4>DO2? z*EoM+dex@F+JMTG`G{+g=Nrcp>1LTWYHBXVBy6$KoYD=p#WM&JUa@#Kz<3viaMs(g zEZ}G~rCqCr0Idq*c=ucFKw36(H|(6jtj3_0#4?R_ZSiK5hZo67H)5b2*lQhJnA*(9K1k1#+~fPht;VUjMV^Q> zoz!tAK6e`OHat>74=0&luxlo?J~v7K+^UQhb5wk%lC}d;sN~K~NdP!M>tfPEMRez$ zb)qGS?Gp~4_>t$uj&sut`@7iQzDpuBb5rtYt;&h~*wO1Y4z(5>J8!qXahl!8h4}ab-{?-GwHWI=Xu_OrY>b0%SX3+6w#tU}uu0v(cUgYM>#x4D?c!wOO>!xutD!`x7K@P$7BO(j9Dy!U!U1g=8ONTiO^>}O?yTux z_uf417RW&o>Ob+IN=3zH>2%?pyBT6)Vi|$~4~rZIwzr3hJ};dZ>+Mb888Axc!ng8Y zNuc{J*{Q9o#?Pg6?7i*RYwv&pJY!O}L5J%4T}^8Yt<8 literal 0 HcmV?d00001 diff --git a/matrix/logo.png b/matrix/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2beb651d1118ab9d642b49e41681bdaa04b42277 GIT binary patch literal 2369 zcmb7_S5VX27RD2$8&DBxQUb()pkM(c5Fnw*AEXmd1SCr6XaqqF!XXr|NTMVWu3|aJ z5s(&|bOdf_(gdZ6l28*m9GXZ?4tJdKJe-+3bJxsT`}cio?U%J5_CtGH3sDhS5fBI@ zY6+M*?wuKX2?*`qt9AV2!y}&|3i_Hk-x@u zb#;I7{{Ss5t)E>i7OSeN`jbf{5+0BL$p!`nzpjUdhT?EIJ3Bix8vWD6U@&{&?(S}3 zVWFd=1Bb(TJl@pQ)WpO@XJ=<#Uf$N$*38VzyLa!}+uNI)n-dZeI2_L8MNl8h8fq_IK@%;=0*xRy0sH3eDXv1}83@X5Pa!Ev8Z>?9tdz-t}5;s>2sUK{h znP4rZ=utW)+zhG1+uf-cr0l`|&YUz-#0E2LcO&o&my5UGnoz0W?(S|WSnqImwwIXO zd97t2kf5QZ85-j^yzu;o+c%W-2Q6Ye?4(l0ypn|4y|@JB0C|@EYkIkacV*csPphg1 zYp-(0&?fCcVLkJn)bKXDc3I&rN)n@{BaZtjv|Mcq z1-kHM?LkF^9J-6o4M+}-Xsz?MI<^m#8epqKVnZCSK1UDJ!@R=$VQvs>N1ULIwCxqNRFd z2LsWyYdc1;RES&uCHM`S9`?rvex}j`cK4f%o&=1B3lO|nYg%a9+;0m&3hec6Kh~^! zYvsyxThS~N>uOQNmO{7`7EZnka!9+g@v=oEqTr8H!jxo_Ja0b=QFHe;yVZC2sjaWZ zfR%d(?>I=;Cjt$mRr_KfuzSgy@D~) zhZ7y`$JCzC{brZH+eGD(a?4p?@uHZZqnqL3gy4=3B^I(h>ylf>Q3H6-u=@PSzWk(q zncVS6F6(XtCav!?>Gg|BmmkH`+UY%+RsAvdecFw#vNZoZvxxInftZvVGC!EUxTcTu zWPaxAyyQHB32jR{1T{x^tg^s}Cg&+JLDo|J&x8hj*b>TY`U*vQO*@#E_SPPf#Mqh z+s-}yNY^5g;d9BAzOgFzJIC-|&L{Nauv>GVLN*u{Ex5~QEMR*~tQW=i)xD2S559WQ z3S#Mde)-U=aT${;aHSp0v$3mj0?oP#1w-E?EyFHxre4@L0tq9-NX$Xg$2-QUoqC&R za3oUoz?Am$S8dE%h1APgZ&w{;nHn_w*VB04<$vGma=zPpSrS_IIpKGynv91ZtQckZ zZAZ#!nx4sp?{q=3^Wqz!5G_N&MX5GB*UI-HBh<|A#$dM8#xQ^)@n zAy}Mc){~shpi?ruxvS5Xo3{Cg+vXwN!Z$ihaf=tQSVJ>6B438aH2svP_J|5k8R%Z1 zB9BWrT9n0mx!(Gu#%}YchzYl9Gmp4epUDVASA8)Ju2sb)^#bU}(0H)16Fn|1F+-az z>viJ&k;XD(yZe!EzfogL1TcAq$P2LV`pK{*v;)33Fp%U+^rf@w7ZGS%`WSN@~el5L~8UPEo7JkZmK z_;jJ7KQ+GT#5oC(oVVyLXAhh_vdPwH<_iyotC1A_Jn%}~diFYyjZbD3gxkev2MGl| z^|7wuA^mobQ2G#yRYBoJ%`4{edAhM=C+QMapl*$B$14ikWZ}>chWY(q<1eQyO|1%V z3K~}3ns10eGUXw63dNe;RQ@DaDCw_d-3~XYj*nYp-07ka$Z_9F0<+9R^fS&^mwDFP zWFe#P%qBuryjqjT;J8*etjSOptlqE|RJhSlFK=0>8lp=*@?&HyzeUm7YE|$OCFe{A z7tVIP$;C*|tB&92g0q&=;!8c^aL8QmX@wcTVE!o*Mu=#SUG{_chYy2gIL{{-lj->r zU}M+4XQR0~9hfB?<>b9>ec#!zo8lmvzIlQMQYhC&>QDC>2-cEpyomwnlG|ciR&@xZ z|KrkoK5h+0>-)4(B{zlY`4JUv0Q{woc1~gT^~*~DdSA;X@o9G~oZ!chlAehIZl1I`_QIv*O#;0oJimxvSjh2#snY%}#znSQkEnXWF>@W> zRQ-Yv /dev/null" + - type: light_off + camera: 1 + command: "curl -s 192.168.1.1/index.html?light=OFF > /dev/null" +``` + +#### Sub-option: `action_buttons.type` + +Type of action button. Acceptable types are: + +- `lock` and `unlock`. +- `light_on` and `light_off`. +- `alarm_on` and `alarm_off`. +- `up`, `right`, `down`, and `left`. +- `zoom_in` and `zoom_out`. +- `preset1` to `preset9`. + +#### Sub-option: `action_buttons.camera` + +The camera identification number. Corresponds to the camera number as set up +within the motionEye UI. + +#### Sub-option: `action_buttons.command` + +The bash shell command to be executed when the button is pressed. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2018-2021 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-motioneye/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[dockerhub]: https://hub.docker.com/r/hassioaddons/motioneye +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-motioneye/71826?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-motioneye/issues +[motioneye-wiki-action-buttons]: https://github.com/ccrisan/motioneye/wiki/Action-Buttons +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-motioneye/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/motioneye/README.md b/motioneye/README.md new file mode 100644 index 0000000..367f4f4 --- /dev/null +++ b/motioneye/README.md @@ -0,0 +1,42 @@ +# Home Assistant Community Add-on: motionEye + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Simple, elegant and feature-rich CCTV/NVR for your cameras. + +## About + +motionEye is a popular frontend to the camera software called motion. This add-on provides both, allowing you to add your camera's to your Hass.io setup. + +motionEye is Open Source CCTV and NVR, that is elegant and really easy to use. It can be used as a Baby Monitor, Construction Site Montage Viewer, Store Camera DVR, Garden Security, and much more. + +Some cool features of motionEye: + +- Support for a ridiculous amount of cameras, including IP cams. +- Add multiple cameras by hooking up multiple motionEye instances together. + For example, by using MotionEyeOS on a Pi Zero + Pi camera in your network. +- Supports uploading recording into Google Drive and Dropbox. +- motion detection, including email notification and scheduling. +- Can record continuously, motion, or timelapse, with retention settings. + +![motionEye screenshot][screenshot] + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-motioneye/71826?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v0.14.0-blue.svg +[release]: https://github.com/hassio-addons/addon-motioneye/tree/v0.14.0 +[screenshot]: https://github.com/hassio-addons/addon-motioneye/raw/main/images/screenshot.png \ No newline at end of file diff --git a/motioneye/config.json b/motioneye/config.json new file mode 100644 index 0000000..f5a08f9 --- /dev/null +++ b/motioneye/config.json @@ -0,0 +1,62 @@ +{ + "name": "motionEye", + "version": "0.14.0", + "slug": "motioneye", + "description": "Simple, elegant and feature-rich CCTV/NVR for your cameras", + "url": "https://github.com/hassio-addons/addon-motioneye", + "ingress": true, + "ingress_port": 0, + "panel_icon": "mdi:cctv", + "homeassistant": "0.92.0b2", + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "init": false, + "ports": { + "80/tcp": null + }, + "ports_description": { + "80/tcp": "Web interface (Not required for Ingress)" + }, + "discovery": [ + "motioneye" + ], + "host_network": true, + "apparmor": false, + "video": true, + "privileged": [ + "DAC_READ_SEARCH", + "SYS_ADMIN" + ], + "map": [ + "media:rw", + "share:rw", + "ssl" + ], + "options": { + "motion_webcontrol": false, + "ssl": true, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem", + "action_buttons": [] + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "motion_webcontrol": "bool", + "ssl": "bool", + "certfile": "str", + "keyfile": "str", + "action_buttons": [ + { + "type": "list(lock|unlock|light_on|light_off|alarm_on|alarm_off|up|right|down|left|zoom_in|zoom_out|preset1|preset2|preset3|preset4|preset5|preset6|preset7|preset8|preset9)?", + "camera": "int?", + "command": "str?" + } + ] + }, + "image": "ghcr.io/hassio-addons/motioneye/{arch}" +} \ No newline at end of file diff --git a/motioneye/icon.png b/motioneye/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2507ebea75437066d5a3b986c3d73571bc3ef3a6 GIT binary patch literal 6527 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 + Controls the level of log details the add-on provides. + motion_webcontrol: + name: Motion webcontrol + description: >- + Enables the motion webcontrol endpoint running on port 7999. + ssl: + name: SSL + description: >- + Enables/Disables SSL (HTTPS) on the web interface of motionEye. + certfile: + name: Certificate file + description: >- + The certificate file to use for SSL. Note that this file must + exists in the /ssl/ folder. + keyfile: + name: Private key file + description: >- + The private key file to use for SSL. Note that this file must + exists in the /ssl/ folder. + action_buttons: + name: Action buttons + description: >- + If configured, a script will be created to implement an motionEye + action button. See add-on documentation for usage details. +network: + 80/tcp: Web interface (Not required for Ingress) diff --git a/motioneye/translations/nl.yaml b/motioneye/translations/nl.yaml new file mode 100644 index 0000000..c2ee4a7 --- /dev/null +++ b/motioneye/translations/nl.yaml @@ -0,0 +1,21 @@ +configuration: + action_buttons: + description: 'If configured, a script will be created to implement an motionEye action button. See add-on documentation for usage details.' + name: 'Action buttons' + certfile: + description: 'The certificate file to use for SSL. Note that this file must exist in the /ssl/ folder.' + name: 'Certificate file' + keyfile: + description: 'The private key file to use for SSL. Note that this file must exist in the /ssl/ folder.' + name: 'Private key file' + log_level: + description: 'Bepaalt het niveau van de logs die de add-on toont.' + name: 'Log niveau' + motion_webcontrol: + description: 'Enables the motion webcontrol endpoint running on port 7999.' + name: 'Motion webcontrol' + ssl: + description: 'Enables/Disables SSL (HTTPS) on the web interface of motionEye.' + name: SSL +network: + 80/tcp: 'Web interface (Not required for Ingress)' diff --git a/mqtt/CHANGELOG.md b/mqtt/CHANGELOG.md new file mode 100644 index 0000000..468788a --- /dev/null +++ b/mqtt/CHANGELOG.md @@ -0,0 +1,26 @@ +## ⚠️ Deprecation notice! + +This is the final and last release of this add-on, which is now deprecated. + +We strongly advise you to upgrade/migrate to using the Mosquitto add-on, as provided by the Home Assistant project. + +This add-on will be removed from the add-on store soon. + + +## Changes + +- :pencil2: Maintaince -> Maintenance +- :ambulance: Fixes path handling for SSL certificates +- :hammer: Updates HA Auth URL in NGinx LUA script +- :hammer: Use Hass.io DNS as NGinx resolver +- :fireworks: Updates maintenance/license year to 2020 +- :books: Update add-on documentation to use new YAML configuration format +- :hammer: Re-branding +- :pencil2: Fixes some typos +- :hammer: Update add-on config with new password & list features +- :arrow_up: Upgrades add-on base image to v7.0.2 +- :warning: Adds deprecation notices + +[Full Changelog][changelog] + +[changelog]: https://github.com/hassio-addons/addon-mqtt/compare/v1.1.0...v1.2.0 \ No newline at end of file diff --git a/mqtt/README.md b/mqtt/README.md new file mode 100644 index 0000000..08fbf91 --- /dev/null +++ b/mqtt/README.md @@ -0,0 +1,44 @@ +# Home Assistant Community Add-on: MQTT Server & Web client + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee] + +Mosquitto MQTT Server bundled with Hivemq's web client. + +## Deprecation warning + +**This add-on is in a deprecated state!** + +This add-on is now deprecated. We highly recommend on switching to the +official Home Assistant Mosquitto add-on as an alternative. + +This add-on will soon be removed from the add-on store. + +## About + +This add-on combines the power of [Hivemq][hivemq]'s +web-based MQTT client, and the powerful [Mosquitto][mosquitto] +broker (MQTT Server). With this, you can host your own MQTT server, +and inspect/publish messages using the built-in web client! + +[Click here for the full documentation][docs] + +![Screenshot][screenshot] + +[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg +[buymeacoffee]: https://www.buymeacoffee.com/ludeeus +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[docs]: https://github.com/hassio-addons/addon-mqtt/blob/v1.2.0/README.md +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/community-hass-io-add-ons-mqtt-server-web-client/70376 +[hivemq]: https://www.hivemq.com/ +[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg +[mosquitto]: https://mosquitto.org/ +[project-stage-shield]: https://img.shields.io/badge/project%20stage-%20!%20DEPRECATED%20%20%20!-ff0000.svg +[release-shield]: https://img.shields.io/badge/version-v1.2.0-blue.svg +[release]: https://github.com/hassio-addons/addon-mqtt/tree/v1.2.0 +[screenshot]: https://github.com/hassio-addons/addon-mqtt/raw/master/images/image.png \ No newline at end of file diff --git a/mqtt/config.json b/mqtt/config.json new file mode 100644 index 0000000..0a2b763 --- /dev/null +++ b/mqtt/config.json @@ -0,0 +1,82 @@ +{ + "name": "MQTT Server & Web client", + "version": "1.2.0", + "slug": "mqtt", + "description": "Mosquitto MQTT Server bundled with Hivemq's web client", + "url": "https://github.com/hassio-addons/addon-mqtt/tree/master/README.md", + "webui": "https://[HOST]:[PORT:80]", + "ingress": true, + "ingress_port": 1337, + "homeassistant": "0.92.0", + "panel_icon": "mdi:code-brackets", + "panel_title": "MQTT", + "startup": "services", + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "boot": "auto", + "auth_api": true, + "hassio_api": true, + "hassio_role": "default", + "ports": { + "80/tcp": null, + "1883/tcp": 1883, + "1884/tcp": 1884, + "4883/tcp": 4883, + "4884/tcp": 4884 + }, + "ports_description": { + "80/tcp": "HiveMQ web interface (Not required for Ingress)", + "1883/tcp": "Standard MQTT port (without SSL)", + "1884/tcp": "Standard WebSocket port (without SSL)", + "4883/tcp": "Secure MQTT port (with SSL)", + "4884/tcp": "Secure WebSocket port (with SSL)" + }, + "map": [ + "share", + "ssl", + "config" + ], + "options": { + "ssl": true, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem", + "broker": true, + "allow_anonymous": false, + "mqttusers": [ + { + "username": "", + "password": "", + "readonly": true, + "topics": [ + "#" + ] + } + ] + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "ssl": "bool", + "certfile": "str", + "keyfile": "str", + "broker": "bool", + "allow_anonymous": "bool", + "mqttusers": [ + { + "username": "str", + "password": "password", + "readonly": "bool", + "topics": [ + "str" + ] + } + ], + "i_like_to_be_pwned": "bool?", + "leave_front_door_open": "bool?" + }, + "image": "hassioaddons/mqtt" +} \ No newline at end of file diff --git a/mqtt/icon.png b/mqtt/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..539d37bc4c052d39c9da38e49b52f73441daa439 GIT binary patch literal 15147 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 literal 0 HcmV?d00001 diff --git a/mqtt/logo.png b/mqtt/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..539d37bc4c052d39c9da38e49b52f73441daa439 GIT binary patch literal 15147 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 literal 0 HcmV?d00001 diff --git a/netlify.toml b/netlify.toml new file mode 100644 index 0000000..93cad00 --- /dev/null +++ b/netlify.toml @@ -0,0 +1,3 @@ +[build] + publish = "site" + command = "./build-site.sh" diff --git a/nginxproxymanager/CHANGELOG.md b/nginxproxymanager/CHANGELOG.md new file mode 100644 index 0000000..0e3ebd9 --- /dev/null +++ b/nginxproxymanager/CHANGELOG.md @@ -0,0 +1,29 @@ +## What’s changed + +## ✨ New features + +- Add add-on translation support @frenck (#199) + +## 🧰 Maintenance + +- Apply updated repository structure & CI workflow @frenck (#198) + +## ⬆️ Dependency updates + +- ⬆️ Upgrade add-on base image to 9.1.6 @frenck (#184) +- ⬆️ Bump ludeeus/action-shellcheck from 1.0.0 to 1.1.0 @dependabot (#182) +- ⬆️ Bump certbot-dns-cloudflare from 1.13.0 to 1.14.0 in /proxy-manager @dependabot (#185) +- ⬆️ Bump docker/build-push-action from v2.3.0 to v2.4.0 @dependabot (#186) +- ⬆️ Upgrades nodejs to 14.16.1-r0 @frenck (#189) +- ⬆️ Bump docker/setup-qemu-action from v1.0.1 to v1.0.2 @dependabot (#188) +- ⬆️ Bump docker/setup-buildx-action from v1.1.1 to v1.1.2 @dependabot (#187) +- ⬆️ Upgrades add-on base image to v9.1.7 @frenck (#190) +- ⬆️ Bump actions/cache from v2.1.4 to v2.1.5 @dependabot (#192) +- ⬆️ Upgrades nodejs to 14.16.1-r1 @frenck (#194) +- ⬆️ Bump brpaz/hadolint-action from v1.3.1 to v1.4.0 @dependabot (#196) +- Upgrades add-on base image to v9.2.0 @frenck (#197) +- ⬆️ Upgrades mariadb to 10.5.9-r0 @frenck (#200) +- ⬆️ Bump docker/setup-qemu-action from v1.0.2 to v1.1.0 @dependabot (#202) +- ⬆️ Bump docker/setup-buildx-action from v1.1.2 to v1.2.0 @dependabot (#203) +- ⬆️ Bump docker/login-action from v1.8.0 to v1.9.0 @dependabot (#205) +- ⬆️ Bump docker/setup-buildx-action from v1.2.0 to v1.3.0 @dependabot (#206) diff --git a/nginxproxymanager/DOCS.md b/nginxproxymanager/DOCS.md new file mode 100644 index 0000000..76504c5 --- /dev/null +++ b/nginxproxymanager/DOCS.md @@ -0,0 +1,149 @@ +# Home Assistant Community Add-on: Nginx Proxy Manager + +This add-on enables you to easily forward incoming connections to anywhere, +including free SSL, without having to know too much about Nginx +or Let’s Encrypt. + +Forward your domain to your Home Assistant, add-ons, or websites running +at home or anywhere else, straight from a simple, powerful interface. + +Want to protect the website with a username/password? Well, it can do that too! +Enable authentication and create a list of usernames/password that can access +that specific application. + +For the power users, you can customize the behavior of each host in the +Nginx proxy manager by providing additional Nginx directives. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Ensure you are running the MariaDB add-on. This add-on is required to use + the Nginx Proxy Manager add-on as it uses the database services provided. +1. Search for the "Nginx Proxy Manager" add-on in the Supervisor add-on store + and install it. +1. Start the "Nginx Proxy Manager" add-on +1. Check the logs of the "Nginx Proxy Manager" add-on to see if everything went well. +1. Click the "OPEN WEB UI" button and login using: + `admin@example.com` / `changeme` +1. Forward port `80` and `443` from your router to your Home Assistant machine. +1. Enjoy the add-on! + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +### Option: `reset_database` + +By setting to `true` provides the option to delete and recreate the database. As +the data is held within the MariaDB addon, it is not removed on an uninstall. + +**Note**: _Once the database is reset the configuration for the addon will be +cleared automatically_ + +## Known issues and limitations + +- The original NGinx Proxy Manager has support for forwarding TCP/UDP streams, + which is removed from this add-on. It makes no sense from a + Home Assistant / Home perspective and, by removing it, it also + removed the need for this add-on to run on the Docker host network. +- This add-on stores its database on the MariaDB add-on. This also means that + by taking a snapshot of just the Nginx Proxy Manager add-on, will not + contain the data from this add-on. Please make sure you backup both + the Nginx Proxy Manager and the MariaDB add-ons. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2019-2021 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-nginx-proxy-manager/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-nginx-proxy-manager/111830?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-nginx-proxy-manager/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-nginx-proxy-manager/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/nginxproxymanager/README.md b/nginxproxymanager/README.md new file mode 100644 index 0000000..c3eb8d9 --- /dev/null +++ b/nginxproxymanager/README.md @@ -0,0 +1,43 @@ +# Home Assistant Community Add-on: Nginx Proxy Manager + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Manage Nginx proxy hosts with a simple, powerful interface. + +## About + +This add-on enables you to easily forward incoming connections to anywhere, +including free SSL, without having to know too much about Nginx +or Let’s Encrypt. + +Forward your domain to your Home Assistant, add-ons, or websites running +at home or anywhere else, straight from a simple, powerful interface. + +Want to protect the website with a username/password? Well, it can do that too! +Enable authentication and create a list of usernames/password that can access +that specific application. + +For the power users, you can customize the behavior of each host in the +Nginx proxy manager by providing additional Nginx directives. + +![Nginx Proxy Manager screenshot][screenshot] + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-nginx-proxy-manager/111830?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v0.11.0-blue.svg +[release]: https://github.com/hassio-addons/addon-nginx-proxy-manager/tree/v0.11.0 +[screenshot]: https://github.com/hassio-addons/addon-nginx-proxy-manager/raw/main/images/screenshot.gif \ No newline at end of file diff --git a/nginxproxymanager/config.json b/nginxproxymanager/config.json new file mode 100644 index 0000000..e06942a --- /dev/null +++ b/nginxproxymanager/config.json @@ -0,0 +1,39 @@ +{ + "name": "Nginx Proxy Manager", + "version": "0.11.0", + "slug": "nginxproxymanager", + "description": "Manage Nginx proxy hosts with a simple, powerful interface", + "url": "https://github.com/hassio-addons/addon-nginx-proxy-manager", + "webui": "http://[HOST]:[PORT:81]", + "init": false, + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "services": [ + "mysql:need" + ], + "hassio_api": true, + "ports": { + "80/tcp": 80, + "81/tcp": 81, + "443/tcp": 443 + }, + "ports_description": { + "80/tcp": "HTTP Entrance port", + "81/tcp": "Proxy management web interface", + "443/tcp": "HTTPS/SSL Entrance port" + }, + "map": [ + "ssl:rw", + "backup:rw" + ], + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "reset_database": "bool?" + }, + "image": "ghcr.io/hassio-addons/nginxproxymanager/{arch}" +} \ No newline at end of file diff --git a/nginxproxymanager/icon.png b/nginxproxymanager/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c19c33b8f7dc46ba0f200cc6acb4e479eb5358 GIT binary patch literal 10076 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 z zGH`0W0*f&Uug-`;cvvh7A_;i5Y-!!n!li2$fFC2kPshcf-UsNKXl3kX`guoODrN@F z1NgsDr1w^_mgl)utQISE76+O>PR7IC7Tn%u#@C0l@O=;E`$Yb37dnXaC90OMx&K%K zXhAY+cVysrVLFa&OGO1q)vgSj-Ia>kHF3y_kHQ=8#NpRraab4`j|y_}cRedT#wE6A*WGP(Xe@3HGw zaA&6lcS+d#|6l()d|kGfs(2dkLK00RwCJnS(N*F=SGf~irA~B~xzJxZ9}i2iaCMu4 z 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 RcWM9t002ovPDHLkV1j@4Ys~-v literal 0 HcmV?d00001 diff --git a/nginxproxymanager/translations/en.yaml b/nginxproxymanager/translations/en.yaml new file mode 100644 index 0000000..342aa2b --- /dev/null +++ b/nginxproxymanager/translations/en.yaml @@ -0,0 +1,14 @@ +--- +configuration: + log_level: + name: Log level + description: >- + Controls the level of log details the add-on provides. + reset_database: + name: Reset database + description: >- + Enabling this option to delete and recreate the database. +network: + 80/tcp: HTTP Entrance port + 81/tcp: NGinx Proxy Manager Admin web interface + 443/tcp: HTTPS/SSL Entrance port diff --git a/portainer/CHANGELOG.md b/portainer/CHANGELOG.md new file mode 100644 index 0000000..6f0f850 --- /dev/null +++ b/portainer/CHANGELOG.md @@ -0,0 +1,15 @@ +## What’s changed + +## ⬆️ Dependency updates + +- ⬆️ Bump brpaz/hadolint-action from v1.4.0 to v1.5.0 @dependabot (#95) +- ⬆️ Bump frenck/action-addon-linter from 2 to 2.1 @dependabot (#96) +- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#97) +- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#98) +- ⬆️ Bump micnncim/action-label-syncer from 1.2.0 to 1.3.0 @dependabot (#99) +- ⬆️ Bump actions/cache from 2.1.5 to 2.1.6 @dependabot (#102) +- ⬆️ Bump docker/build-push-action from 2.4.0 to 2.5.0 @dependabot (#100) +- ⬆️ Bump docker/setup-qemu-action from 1.1.0 to 1.2.0 @dependabot (#101) +- ⬆️ Bump frenck/action-addon-information from 1.1 to 1.2 @dependabot (#103) +- ⬆️ Upgrades add-on base image to v9.2.2 @frenck (#107) +- ⬆️ Upgrades Portainer to v1.24.2 @frenck (#108) diff --git a/portainer/DOCS.md b/portainer/DOCS.md new file mode 100644 index 0000000..1c97e2a --- /dev/null +++ b/portainer/DOCS.md @@ -0,0 +1,145 @@ +# Home Assistant Community Add-on: Portainer + +Portainer is an open-source lightweight management UI which allows you to +easily manage a Docker host(s) or Docker swarm clusters. + +It has never been so easy to manage Docker. Portainer provides a detailed +overview of Docker and allows you to manage containers, images, networks and +volumes. + +## WARNING + +The Portainer add-on is really powerful and gives you access to virtually +your whole system. While this add-on is created and maintained with care and +with security in mind, in the wrong or inexperienced hands, +it could damage your system. + +## Installation + +To install this add-on, you'll first need to go to your profile and turn on +"Advanced Mode", once that is done go back to Home Assistant add-ons and search +for "Portainer" and install it as you would any other add-on. + +To be able to use this add-on, you'll need to disable protection mode on this +add-on. Without it, the add-on is unable to access Docker. + +1. Search for the "Portainer" add-on in the Supervisor add-on store and + install it. +1. Set the "Protection mode" switch to off. +1. Start the "Portainer" add-on. +1. Check the logs of the "Portainer" add-on to see if everything went well. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +agent_secret: password +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +### Option: `agent_secret` + +An option to set a shared agent secret. Must also be set in the remote agent +as an Environment variable. + +## Known issues and limitations + +By default all Home Assistant managed containers are hidden from Portainer. +This is recommended since fooling around with Home Assistant managed containers +can easily lead to a broken system. + +Access to these containers can be gained by going into Portainer -> +Settings -> Hidden containers. Then delete the listed hidden labels +(io.hass.type labels). **Only do this if you know what you're doing!** + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2018-2021 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-portainer/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-portainer/68836?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-portainer/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-portainer/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/portainer/README.md b/portainer/README.md new file mode 100644 index 0000000..43b61c6 --- /dev/null +++ b/portainer/README.md @@ -0,0 +1,43 @@ +# Home Assistant Community Add-on: Portainer + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Manage your Docker environment with ease. + +## About + +Portainer is an open-source lightweight management UI which allows you to +easily manage your a Docker host(s) or Docker swarm clusters. + +It has never been so easy to manage Docker. Portainer provides a detailed +overview of Docker and allows you to manage containers, images, networks and +volumes. + +## WARNING + +The Portainer add-on is really powerful and gives you virtually access to +your whole system. While this add-on is created and maintained with care and +with security in mind, in the wrong or inexperienced hands, +it could damage your system. + +![Portainer screenshot][screenshot] + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-portainer/68836?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[release-shield]: https://img.shields.io/badge/version-v1.5.1-blue.svg +[release]: https://github.com/hassio-addons/addon-portainer/tree/v1.5.1 +[screenshot]: https://github.com/hassio-addons/addon-portainer/raw/main/images/screenshot.png \ No newline at end of file diff --git a/portainer/config.json b/portainer/config.json new file mode 100644 index 0000000..34651dd --- /dev/null +++ b/portainer/config.json @@ -0,0 +1,36 @@ +{ + "name": "Portainer", + "version": "1.5.1", + "slug": "portainer", + "description": "Manage your Docker environment with ease", + "url": "https://github.com/hassio-addons/addon-portainer", + "advanced": true, + "ingress": true, + "ingress_port": 1337, + "startup": "services", + "panel_icon": "mdi:docker", + "homeassistant": "0.92.0b2", + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7" + ], + "init": false, + "map": [ + "ssl" + ], + "ports": { + "8000/tcp": null + }, + "ports_description": { + "8000/tcp": "Edge Agent Api (Enable when managing remote edge agents)" + }, + "hassio_api": true, + "docker_api": true, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "agent_secret": "str?" + }, + "image": "ghcr.io/hassio-addons/portainer/{arch}" +} \ No newline at end of file diff --git a/portainer/icon.png b/portainer/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c411cf12388ea8b05a119c55b2e68bbe35054f14 GIT binary patch literal 4765 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 literal 0 HcmV?d00001 diff --git a/portainer/logo.png b/portainer/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e790cc37615f685fbd2cd2089f550b497f9a24ff GIT binary patch literal 30960 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%0DiOLRK}8%neh+ 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 |6L&+7p;m3o!{W;Ka%r*C7meMMGssl~P~ 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 + Controls the level of log details the add-on provides. + agent_secret: + name: Agent Secret + description: >- + An option to set a shared agent secret. Must also be set in the remote + agent as an Environment variable. +network: + 8000/tcp: Edge Agent Api (Enable when managing remote edge agents) diff --git a/qbittorrent/CHANGELOG.md b/qbittorrent/CHANGELOG.md new file mode 100644 index 0000000..281efdc --- /dev/null +++ b/qbittorrent/CHANGELOG.md @@ -0,0 +1,95 @@ + +## 14.3.6.99202106272003-7387-ac8105c30ubuntu20.04.1-ls141 (28-06-2021) +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.5.99202106211645-7376-e25948e73ubuntu20.04.1-ls140 (22-06-2021) +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.5.99202106201814-7376-e25948e73ubuntu20.04.1-ls139 (21-06-2021) +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.5.99202106191735-7376-e25948e73ubuntu20.04.1-ls138 (20-06-2021) +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.5.99202106151345-7374-667d4e421ubuntu20.04.1-ls137 (16-06-2021) +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.5.99202106080759-7366-33e090cfcubuntu20.04.1-ls136 (09-06-2021) +- Update to latest version from linuxserver/docker-qbittorrent +- Add banner in log +- New option openvpn_alternative_mode, binds only ovpn to qbittorrent and not webui + +## 14.3.5.99202105022253-7365-063844ed4ubuntu20.04.1-ls133 (11-05-2021) +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.5.99202105022253-7365-063844ed4ubuntu20.04.1-ls132 (04-05-2021) +- Update to latest version from linuxserver/docker-qbittorrent +- New option : use specific DNS instead of the router ones to avoid spamming, especially useful if using adguard home/pihole. Keep blank to use the router dns. + +## 14.3.4.99202104300534-7354-9f8a6e8fbubuntu20.04.1-ls131 (01-05-2021) +- Update to latest version from linuxserver/docker-qbittorrent +- Robust the smb script to test for several common options +- smbv1 bit is not used anymore + +## 14.3.4.99202104281424-7353-7dd9e7343ubuntu20.04.1-ls130 (29-04-2021) +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.4.99202104250604-7352-b2a43eeffubuntu20.04.1-ls129 (27-04-2021) +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.4.99202104250604-7352-b2a43eeffubuntu20.04.1-ls128 +- Update to latest version from linuxserver/docker-qbittorrent +- Clarified steps to check in case of smb mount fail +- New option : set domain for smb share +- Addition of openvpn support + +## 14.3.4.99202104180633-7350-2c8f322afubuntu20.04.1-ls127 +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.4.99202104090418-7349-789803700ubuntu20.04.1-ls126 +- Update to latest version from linuxserver/docker-qbittorrent +- Addition of ingress +- Viewtorrent as default ui + +## 14.3.4.99202104031018-7348-2b6baa609ubuntu20.04.1-ls125 +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.3.99202103251603-7345-332b173e0ubuntu20.04.1-ls122 +- Update to latest version from linuxserver/docker-qbittorrent ; Rebase to focal. + +## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls120 +- Update to latest version from linuxserver/docker-qbittorrent ; Stop creating /config/data directory on startup + +## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls119 +- Update to latest version from linuxserver/docker-qbittorrent ; Fix adding search engine plugin + +## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls118 +- Update to latest version from linuxserver/docker-qbittorrent +- Allow mounting shares named \ip\share in addition to //ip/share + +## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls117 +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls116 +- Correct VueTorrent link + +## 14.3.3.99202101191832-7248-da0b276d5ubuntu20.04.1-ls115 +- New configuration option : set download path +- New configuration option : set username for webUI +- New feature : mount smb share in protected mode +- New feature : mount multiple smb shares +- New config/feature : mount smbv1 +- Changed path : changed smb mount path from /storage/externalcifs to /mnt/$NAS name +- Removed feature : ability to remove protection and mount local hdd, to increase the addon score +- Update to latest version from linuxserver/docker-qbittorrent +- Enabling of custom webUI from configuration + +## 14.3.3.99202101191832-7248-da0b276d5ubuntu18.04.1-ls114 +- Update to latest version from linuxserver/docker-qbittorrent + +## 14.3.3.99202101191832-7248-da0b276d5ubuntu18.04.1-ls113 +- Update to latest version from linuxserver/docker-qbittorrent +- Whitelist option +- Enables PUID/GUID options +- Addition of ssl options +- Addition of possibility to mount local disc or smb diff --git a/qbittorrent/Dockerfile b/qbittorrent/Dockerfile new file mode 100644 index 0000000..5b0a2ca --- /dev/null +++ b/qbittorrent/Dockerfile @@ -0,0 +1,107 @@ +ARG BUILD_FROM +ARG BUILD_VERSION +ARG BUILD_UPSTREAM="14.3.6.99202106272003-7387-ac8105c30ubuntu20.04.1-ls141" +FROM ${BUILD_FROM}${BUILD_UPSTREAM} + +# Base system +ARG BASHIO_VERSION=0.13.0 +ARG TEMPIO_VERSION=2021.01.0 +ARG BUILD_ARCH + +RUN \ + #################### + # AVOID NTP ISSUES # + #################### + yum install -y ntp && \ + service ntpd stop && \ + ntpdate pool.ntp.org && \ + \ + ################ + # Install apps # + ################ + apt-get update && \ + apt-get install -y \ + apt-transport-https \ + jq \ + curl \ + cifs-utils \ + keyutils \ + nginx \ + coreutils \ + openvpn \ + \ + ################## + # Install tempio # + ################## + curl -L -f -s -o /usr/bin/tempio \ + "https://github.com/home-assistant/tempio/releases/download/${TEMPIO_VERSION}/tempio_${BUILD_ARCH}" && \ + chmod a+x /usr/bin/tempio && \ + \ + ############## + # STATISTICS # + ############## + curl -L -f -s -o /tmp/tmp \ + "https://github.com/alexbelgium/downloads-tracker/archive/refs/tags/Qbittorrent.zip" && \ + \ + ################## + # Install bashio # + ################## + mkdir -p /tmp/bashio && \ + curl -L -f -s "https://github.com/hassio-addons/bashio/archive/v${BASHIO_VERSION}.tar.gz" && \ + | tar -xzf - --strip 1 -C /tmp/bashio && \ + mv /tmp/bashio/lib /usr/lib/bashio && \ + ln -s /usr/lib/bashio/bashio /usr/bin/bashio && \ + rm -rf /tmp/bashio && \ + \ + ######################################## + # Correct upstream image folders links # + ######################################## + \ + # Allow UID and GID setting + sed -i 's/bash/bashio/g' /etc/cont-init.d/10-adduser && \ + sed -i 's/{PUID:-911}/(bashio::config "PUID")/g' /etc/cont-init.d/10-adduser && \ + sed -i 's/{PGID:-911}/(bashio::config "PGID")/g' /etc/cont-init.d/10-adduser && \ + \ + # Correct permissions + sed -i 's|/config|-R /config/qBittorrent|g' /etc/cont-init.d/10-adduser && \ + sed -i 's= /config=/config/qBittorrent || true=g' /etc/cont-init.d/30-config && \ + \ + # Set download folder to /share + sed -i 's|/downloads/|/share/qBittorrent/|g' /defaults/qBittorrent.conf && \ + \ + # Remove fixed folders, allows connection to webUI + sed '11,13d' /defaults/qBittorrent.conf && \ + echo 'WebUI\HostHeaderValidation=false' >> /defaults/qBittorrent.conf && \ + echo 'WebUI\LocalHostAuth=false' >> /defaults/qBittorrent.conf + +# Copy root filesystem +COPY rootfs / + +VOLUME [ "/data" ] + +### LABELS +ARG BUILD_ARCH +ARG BUILD_DATE +ARG BUILD_DESCRIPTION +ARG BUILD_NAME +ARG BUILD_REF +ARG BUILD_REPOSITORY +ARG BUILD_VERSION +LABEL \ + io.hass.name="${BUILD_NAME}" \ + io.hass.description="${BUILD_DESCRIPTION}" \ + io.hass.arch="${BUILD_ARCH}" \ + io.hass.type="addon" \ + io.hass.version=${BUILD_VERSION} \ + maintainer="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.title="${BUILD_NAME}" \ + org.opencontainers.image.description="${BUILD_DESCRIPTION}" \ + org.opencontainers.image.vendor="Home Assistant Add-ons" \ + org.opencontainers.image.authors="alexbelgium (https://github.com/alexbelgium)" \ + org.opencontainers.image.licenses="MIT" \ + org.opencontainers.image.url="https://github.com/alexbelgium" \ + org.opencontainers.image.source="https://github.com/${BUILD_REPOSITORY}" \ + org.opencontainers.image.documentation="https://github.com/${BUILD_REPOSITORY}/blob/main/README.md" \ + org.opencontainers.image.created=${BUILD_DATE} \ + org.opencontainers.image.revision=${BUILD_REF} \ + org.opencontainers.image.version=${BUILD_VERSION} diff --git a/qbittorrent/README.md b/qbittorrent/README.md new file mode 100644 index 0000000..790fdf1 --- /dev/null +++ b/qbittorrent/README.md @@ -0,0 +1,61 @@ +# Home assistant add-on: qBittorrent +![Supports aarch64 Architecture][aarch64-shield] ![Supports amd64 Architecture][amd64-shield] ![Supports armhf Architecture][armhf-shield] ![Supports armv7 Architecture][armv7-shield] +![Supports smb mounts][smb-shield] ![Supports openvpn][openvpn-shield] ![Supports ingress][ingress-shield] ![Supports ssl][ssl-shield] + +## About + +qBittorrent is a bittorrent client. +This addon is based on the [docker image](https://github.com/linuxserver/qbittorrent) from linuxserver.io. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Hass.io add-on. + +1. [Add my Hass.io add-ons repository][repository] to your Hass.io instance. +1. Install this add-on. +1. Click the `Save` button to store your configuration. +1. Start the add-on. +1. Check the logs of the add-on to see if everything went well. +1. Carefully configure the add-on to your preferences, see the official documentation for for that. + +## Configuration +Webui can be found at . The default username/password : described in the startup log. Configurations can be done through the app, except for the following options. + +Network disk is mounted to /mnt/storagename + +OpenVPN must be enabled from within qBittorrent options + +```yaml +GUID: user +GPID: user +ssl: true/false +certfile: fullchain.pem #ssl certificate +keyfile: privkey.pem #sslkeyfile +whitelist: "localhost,192.168.0.0/16" # list ip subnets that won't need a password (optional) +Username: "admin" #username to access webui. Please change it as the default is admin for all installations. +customUI: selection from list # alternative webUI can be set here. Latest version set at each addon start. +SavePath: "/share/qbittorrent" # Define the download directory +DNS_servers : 8.8.8.8,1.1.1.1 # Keep blank to use router’s DNS, or set custom DNS to avoid spamming in case of local DNS ad-remover +networkdisks: "//SERVER/SHARE" # optional, list of smb servers to mount, separated by commas +cifsusername: "username" # optional, smb username, same for all smb shares +cifspassword: "password" # optional, smb password, same for all smb shares) +openvpn_enabled: yes/no +openvpn_alternative_mode: true/false # if enabled, will tunnel only qbittorrent and not webui through vpn. Allows webui connection from external networks, but risk of decreased stability. +openvpn_config: must reference an openvpn config files stored in /config/openvpn +openvpn_username: openvpn username +openvpn_password": openvpn password +``` + +## Support +Create an issue on github, or ask on the [home assistant thread](https://community.home-assistant.io/t/home-assistant-addon-qbittorrent/279247) + +[repository]: https://github.com/alexbelgium/hassio-addons +[smb-shield]: https://img.shields.io/badge/smb-yes-green.svg +[openvpn-shield]: https://img.shields.io/badge/openvpn-yes-green.svg +[ingress-shield]: https://img.shields.io/badge/ingress-yes-green.svg +[ssl-shield]: https://img.shields.io/badge/ssl-yes-green.svg +[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg +[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg +[armv7-shield]: https://img.shields.io/badge/armv7-yes-green.svg diff --git a/qbittorrent/apparmor.txt b/qbittorrent/apparmor.txt new file mode 100644 index 0000000..f2004bf --- /dev/null +++ b/qbittorrent/apparmor.txt @@ -0,0 +1,50 @@ +#include + +profile db21ed7f_qbittorrent flags=(attach_disconnected,mediate_deleted) { + #include + + capability, + file, + mount, + umount, + remount, + + capability setgid, + capability setuid, + capability sys_admin, + capability dac_read_search, + capability net_admin, + capability dac_override, + # capability sys_rawio, + +# S6-Overlay + /bin/** ix, + /usr/bin/** ix, + /usr/lib/bashio/** ix, + /etc/s6/** rix, + /run/s6/** rix, + /etc/services.d/** rwix, + /etc/cont-init.d/** rwix, + /etc/cont-finish.d/** rwix, + /init rix, + /var/run/** mrwkl, + /var/run/ mrwkl, + /dev/i2c-1 mrwkl, + # Files required + /dev/sda1 mrwkl, + /dev/sdb1 mrwkl, + /dev/mmcblk0p1 mrwkl, + /dev/* mrwkl, + /tmp/** mrkwl, + /dev/net/tun mrwkl, + + # Data access + /data/** rw, + + # suppress ptrace denials when using 'docker ps' or using 'ps' inside a container + ptrace (trace,read) peer=docker-default, + + # docker daemon confinement requires explict allow rule for signal + signal (receive) set=(kill,term) peer=/usr/bin/docker, + +} diff --git a/qbittorrent/build.json b/qbittorrent/build.json new file mode 100644 index 0000000..e379961 --- /dev/null +++ b/qbittorrent/build.json @@ -0,0 +1,8 @@ +{ + "build_from": { + "armv7": "linuxserver/qbittorrent:arm32v7-", + "armhf": "linuxserver/qbittorrent:arm32v7-", + "aarch64": "linuxserver/qbittorrent:arm64v8-", + "amd64": "linuxserver/qbittorrent:amd64-" + } +} diff --git a/qbittorrent/config.json b/qbittorrent/config.json new file mode 100644 index 0000000..b549f38 --- /dev/null +++ b/qbittorrent/config.json @@ -0,0 +1,85 @@ +{ + "name": "Qbittorrent", + "version": "14.3.6.99202106272003-7387-ac8105c30ubuntu20.04.1-ls141", + "upstream": "14.3.6.99202106272003-7387-ac8105c30ubuntu20.04.1-ls141", + "slug": "qbittorrent", + "description": "qBittorrent is a bittorrent client", + "url": "https://github.com/alexbelgium/hassio-addons", + "arch": [ + "aarch64", + "amd64", + "armv7", + "armhf" + ], + "ingress": true, + "ingress_port": 8099, + "panel_icon": "mdi:progress-download", + "ports": { + "8080/tcp": 8081, + "6881/tcp": 6881, + "6881/udp": 6881 + }, + "ports_description": { + "8080/tcp": "Web UI port (nor required for Ingress)", + "6881/tcp": "Peer port", + "6881/udp": "Peer port" + }, + "map": [ + "media:rw", + "config:rw", + "share:rw", + "ssl" + ], + "apparmor": true, + "host_network": false, + "privileged": [ + "SYS_ADMIN", + "DAC_READ_SEARCH", + "NET_ADMIN" + ], + "devices": [ + "/dev/net/tun" + ], + "webui": "[PROTO:ssl]://[HOST]:[PORT:8080]", + "boot": "auto", + "environment": { + "WEBUI_PORT": "8080", + "PUID": "0", + "PGID": "0" + }, + "options": { + "ssl": false, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem", + "whitelist": "localhost,127.0.0.1,172.30.0.0/16,192.168.0.0/16", + "customUI": "vuetorrent", + "SavePath": "/share/qBittorrent", + "Username": "admin", + "DNS_server": "8.8.8.8,1.1.1.1", + "PUID": "0", + "PGID": "0" + }, + "schema": { + "ssl": "bool", + "certfile": "str", + "keyfile": "str", + "whitelist": "str?", + "PUID": "int?", + "PGID": "int?", + "SavePath": "str?", + "Username": "str?", + "customUI": "list(|vuetorrent|qbit-matUI|qb-web)?", + "DNS_server": "str?", + "networkdisks": "str?", + "smbv1": "bool?", + "cifsusername": "str?", + "cifspassword": "str?", + "cifsdomain": "str?", + "openvpn_enabled": "bool?", + "openvpn_alternative_mode": "bool?", + "openvpn_config": "str?", + "openvpn_username": "str?", + "openvpn_password": "str?", + "TZ": "str?" + } +} diff --git a/qbittorrent/icon.png b/qbittorrent/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..6087a9eafcee712b9af69c8f5b059d719e39446f GIT binary patch literal 57069 zcmYg%2{@GD*Z$04>`V5Y$T~#GzDKf$jIpFCTXxyk8cT$bJ!>L_!5~{%Mp=sN`;si# zvP70fiSNdCs}dec$K2u{Vu$s43VfAP@+(?hP$d2n2>Y|3d}` z-?TYCp93GnP8x<95J*iD<;h(V@NZtb8>WU3NU$ITf{B7aeuJ+t>kx>aBn0vu4S^^= zhd@}oa^IRLga3fv)7R00oSpwFXe~_z-;nz18fud+QZhp&rM(p$Nx{VsT`i4Ufiqiq z0lAlSf_^<3Pjwn~qiM_xkodlHDbL%8_o6y)#G(Kjhh)PQ*@g!X6MXPf)ej&#l4vTp z)-$pc$jhfox^G8UzVrp;eAwFB`L+>!Hs!@3=xbqaY(6-)Ogl0E+1Ky&!FK6GV-@0= zH_oGic;Vvw(W3kP!9%(HPgvEXAQya2+n@irqXK0Y4rfs(f~aBG>7q0)KyK3F>k8Mi zkH3o7%V4INUN}GvB6&&T2q(XsA!bp0`r#swD-aV3t%T#VZ1u5g7YsiMLo-{ zGIXDLv&TN1q@E+|-i1vXf#khs*Q{a2E8fJuBlxPnH2(U@Dg$z@{}GO z1&f4SC-0yWh6{VaiPxm5<=a!Az472WUo)oIFsGsANVs@@M+8f%LF+x`Mt?wuCc^9- zpZR?+O=IbdhU5}?x7H!oozbR0&Vgf3IAXQo5qSVGyBj7nHiWL*dE3awD$wypG&rp3JoBI5r3|K9Gq{J`><}awnkt*m8qM3Pl!D{o@A_bidb)2iP z7Zc|4UwhFRI7C^8ET5>WZiDJ*+l^oP|6TCZ|I+owK<_4Q#!1Wq`)Bd}po7#hmp-UG zS)7x`Zf+0WEQjO9i-%(WU6M6aiMu!lGN&Qp!He&QOl*`E_D4_?1%}fpYh!pkJ@9=| zbY^PI?lUrIuwCi?Zcjbx7>(y~uNLY# ztD;FgUoi&2niv(|8t2$Zlkd_C1hNu;-LCAR3|277k)=k>ybGzGC z&fC0!Y8W{f*?Ordci*aTt>Ci(lbaOw-i*ym9Hh_F_;Pao%x*%dYD3q5vSJ3Wsgo`I zq6<{U3=Vy;K31el;U!!yCRB?j5H4Q4RLT?gZyU{PxDtjduQRKWM*PwgGIEqkg~d{7 z^SR%X)xI!z^U|oGsb$=)48FYL8v|!~pKsdNGHwLD?p=LdY02rkC!xQ3NEb+r{~@p& zL>9pvfl1ScCDEOsrNDptQz7`8z1Xia zCIGXv_A$3g&l=j7%_yxKw~-c`^(q#Xa?kPfM;4%Y%#gg2p8MyH*j>I184d9t``Zt3wO;ytsx-eb z(a%V!?-Eg8q~*Iv)L(BaGZ{>``+dMzw-Z5x_`z0iD~;I3eQ5u zcF4k!i^u*aF>SHC_wG$}YAMIWvN0_0ah5Qw@=4yL^fF<_Sq)g^qPsB2H)B0-zSU^( zX!sFV)j&&p#+}{$sQR`(eQ?^yKNw({UetX%ufNyFOHhDR zj{E*dgAGT;)?{&BFZE%~%KD>}EL$o4Sb+NiHIk*QHy!P;x9Npfcg-W+KD2!^9yEkp z)4sF?Eo&PNWMn)`7a(jUUiZG9Wc4qpOK@B{1#)x|cZj?sAjVxE7%^o{u`f3`qwN%) zc6+ntTurtVh5j08-8aNw(oX^ZY$3x{X#O!@@?_y&a zl=$(R&htHSilpVbAfd=_>nls3J1{?bW{6?Y*xT^sZ>s^&&;8{;SPDlO4hz1By;DNW zbCHoNJus=xIWGJ@Gm)8s%@fBfS6r*|Gs`aFmWuhhNVbr^NGjvcM}`t7X>VqO#SIlu3^fyZ=8j$d@`>$(&;l4VgZlIeqk zRVab_F6~4k0oQyLbJ*XeH&co*46jb+Jay5hR4CNB_Ai?l&^;yV>Cv%YOYtfYo3l9X zgdBO5{I0B6F?eb1$82RP0V}+%`qfKjPAd@~)tx$eZ8a#{59lLy9C>6L2sO?9N!{6T zPmU#_p*_5WzI?LjQXQRtH@1UT=)R4CJc2B^dw5g`l7MK)M|GwI!le z)ex~=n+W;%P1q=D&C6RXvW~&>Rjn-M^|!flk}WLy+x0vq3Dn9TzIFboDSCBJ9Z1g1 z$!>Fq$ljkZ{0o<%e+kh5n@}^VmL@+XBd+#aJ`}2BEbXb2SIF*~juoqQ+|V_poFa)Z zPiC;-Ls=?eeS^3o(RLL)){3xoXWAy&F4~KM&*)D+Wx#*tavRp4mu71GF!|eAUIHb= z(`&ZAw3bomdfhrt-%_XyrL zh)8dZ$c0seu3jNKKZ;@mrjiTVD9)b^X>(>J{LP1tRO?uupN08jF0SI+(X@}q;%Fhe z&5PM0Bm+8i@~SCavBP2``ews7$3b$6-iN;XgD+pddk-&qCkQIhkukvQ?+dS~>iSXA z66*{*iIIy``#NjUoL9R)g68i!<=P)TJZF5NM=)EcLijulJBXh z3un@j3NPUmhv|&H;le>6a}0b`UM&m3dt(B2RC|6TuF#NJslbJDt-Jskg4f1dI)7i% zFSSwf@P)w;eu9(c4Wp!ib6oPN1h7=iPyC1y9rJxsQ8D#H1rggpf_?HQlhx_+CA^Em zod*%=%(zSMR=+I&DJQi-)j@2VfZ|Z30R6bMRl_E%!JGd}}X18R}#P@PvvmCS3C8~(` zD(;A@AGj@yb_yZZHXc~hD%xcwo}D0m5aubK?UJ76W`tSz70j{A6GcbykM8;O{w}?r zjPZ@d)ZU%xwjnc?uVMh zvfhWr#KzJBIpK7;Rd5cdf=U62(ezgd{B)t57%7fvsxI%q9bbwyp~{H#E?q;a2hKRr z2S2Rv17B`YW?Dkg^&@X{PMZAn#e-+ky>oL42!mSe?KP#5pTAFQo-Zt;(lce=Abb!y zh3&nXm$bTjvcU*1^_~#KNNr+$T{to$nU+6PYeALN4E7_(du5xdrjv3SCM#BlzZWs` zOwDNJkJUw=$8+2a9zs1xyhl!V!pt}wd>3#bN+;8Go_|KSy9dV)Q2 zJTJrBd?*w4f>eSJ-3gp=*Q)=Ou&sRR`{b9Omy`=gwsxS1KC?;yC_LDoHkcf|%Q&$k zBxK_8gXIRrF_QFWvDpO#>yanM2lOc;b@5=s%-#Mn9MGpOv_ow~|5()uc7^Y=wFJs0 z7z`{GRFZ71kXG;sO_aGe<+v+zK)C-TNw%)`A*ilm**I7ry9yJR@sPRXAJHQq}^{ttv&WR&sC>x%-wtD5WJ+s=j z@m)R-3KB#J)k+JdwcKo0GOUuH$U^d}9BTS<&jVcT7|t!VyHR%Dc&4E4Vw-EMu#fqdCAxiacWNUGgqSr1IrKT~R&JGjRVvYmrWi z)IXD?if|2f^%`vm4pjMBqCpX=ko8{TduTMMKh2$qo$Jh=G`~#HnON5*y8gwzWnBY7 zF)`BbW3oF$h?44hOc;q7f(V(>Yhr*Ouw7$08@{#KbvuM_YK%Kgfs*H_*SK-)?q@^>H1^$r*5BbPaqgT&9-xNm& zTtHdoyZE`}{ERfuryN2%uvB507-?9We2j^e-WA6#h+rN)(cYc4pi3F9%RXP!)Ue5n z1Hp?&xGMd@DS$VIo>X~-jPWw}Tg2y?1@qr2v1&39M`uzY-O?sUFLZv%lq*!dB-D5j znt$ZD+mPUHe`C-C?3V7EHsRJ>(@+k)BHP*zp8lo1Hhbr4^DIB4VtqniN8H|`MIoj& z#ccLl2zfFLiQoP909Jk1^vAFr+r^D9rz1lXo>HuW~@*Ve>-& z+fcL0T+Ai7&uH^d$haZ`kV1}* zf1zGWX^~c1F%vAQG!eb`Tc6{?L8jWsGl-flN8q0UxYSE04X`Xu+^NWn-RiCiotyZt z=0PL-y^l4Q97l^Cy+K|hP)rIn%s3yp@%IiO7VL5Nij;fz(ZV-54i>0GIEH6M1g>IMRX9s3iP z5P~l!D|Ue@8RuF5+8H_4_4%=C)#4aH-1hSaOzkejbJO`!(sxS}Q1`BQ9cpOqSwh-s zkG?g<#?T5$s=9i=gWjUY?T3$dkzb2U7ezZ<*aeYBul7J4Z>s?+pVjx!z}c()_g#fI zaa0gX%{|vv!*6xL{$Py>#}1jnzXkVLq&l~BVx$940x8&1kyNPZ7xw!A#4aH&V4t^5 zB!}y(jg+~&VVIVQe27ruSF1I=dUoJ8<7Ps3afF_EvWIze_r6b?g7tC8N~(X5z8K1c zS6NZ^6uq|h@ucLXavgvPv4{MCX@W{6he=Qsw|)})BVsArJ3qinG$tnLl4NS31EgZpo0Ol{`{9YU$^O3VivO25tNdnXPOVjy_8Wc$$GW-uQl1XE3s$=hMc zJ+uNpi3o;>WhC&oJw?f<>%xE=5(LZ>2K4^Xxs8wN(fY;Xl*ph{XI8wp5`WV}>#$~_ zNrvd~cfss8+Vi!qqMiFlEf{?FdHGd_7(7s~R(P7cnQkVu`R@YF6`Ap%y+l{*J}w7&L$dh^j*Dtzb>#p$ zAc@990pSaj!ppK$F)>nsg%Yt?=SM))94*Ne`nzy6oC`$2*HYv=Ar@ePch=m{^<$yj z5prAZ?{^NbuH>4Iq%DM5^M7*<_8-TXZ+jia^Ae~qwS*KAl5+ymR_9FGQBK$`BH0=$ zbDtwa23=N?%F^`+LTL8R z+n>4tPvX|+%Rxw>Y7zjx4P1F~AJ;oLHive2$0?4kzKjzcw#az+eV=a5$3fb^67k}4 z{LK>`WB!M+bSa~CI5;-$amBJpXgK7DNZ&D}#Y-?@&A9Xp<~Es4*=4lFB`Mtc-G8C+ zeI1(yL6lh2RoB&qtV|wEEDq@BsQ1cHGQ?Hqd3J_)0KeYJjvB?}AYuBwB5A1tGH;c* z?_jtf)RQ8wn#)Xu?24hTtc#c%la=+biZtK*Pi-kT!w=X9FizFTJ`Jh%2p=?SC?jyx zkj;mYTx3&0xB|3M(klDP(sc%FYUEstFBNGEkW5TQ4a~517~8O8_2%AznkQrIjEi8# z#Rt9cLgGDGuo+f5ok;;-#^QcIYqT*N`E`TXb5r0_v6B-uDjj0+RXr<3Hfb=MFdr^o zVpal2B*ua;vlO)alh9FL<{o#moEc}qgR&GYy>X|EGHADoV|I8N#l5F=F>pvJw$W|w zMoMtT1ZG9=zr6c`?xKJGkd7NQvK*6MF9jgZ^c>=<_=yzo z<+~S@&x6>ONX;h<5v-)?ko7{iQ7li(k;dqGivE5L@}Y?0Cj8beEUzWqRD^M|Cc?`^UFHWd#&^g+*@bKA!6xN1v32 zSwzfJc#EZLtqfYk^ZYF1mpF(6QdNKUc~ z-gIC!;QkpOCO|2y%06T159t!?=Q`?0Bln_?xWmQGG1;Ny@TbPMlvDZ>bUt|jS4nr< za%L`2u&zAsZF_JrB4DHc##M9~vBfL3xJRXU(md5kx9p|xzYm@cu0};N&B|8*!uVN; zCLCBlZ!lb7j}Z9s0}YQ6%jxE?6Tv+50j@&duQ}*4{_O%4#c1s^s83N`FA843I(qU{ zjm4aoPX9hI5HKLY1HWf|OxEAzmMZGO05Kp9--X6AX1ar&0I}lw#NpZ!_*I%`u7LHePN~oxcf$ioK{^TQ`&-n9%p)1g# zPWQ{5tjS#xAa0-KxcFkMt_3b8G9jn&D2qO{ zdt;xf$D6PdE}vovSTQ{N21&A1%s2 zJ$8V=bEO!Ew_I`+#ncX=M*1)6 zQBJw17hy1YWdkC4F<2V69be8`xDVcMmgAGNArU(+YNm$O{fc*BHq3eqgP=xY8H)cG ztc=|GSHmiDsq|7TCzk(vZ}As>Vh&%X|mVUB1ZgoIH@nj{K<>1=qTfC zdnEbbLe>43(~Y|rP5m>heUR_VGt=%JV~OurR6I%*E*)5Tzb47~!S6x?8hXEQ6{}M zx+jW=m$ryuwE25iKtBXNbz9;hU}$YN9s%*~`a%Q0w(@BCyNbqr7obS(#KCXEZ6^e} zfv19b`OMYXZqSR^Z(f4@)H=49U7c+Qq$R0&4RlCv^>&lDl~pKi#_u_=(s&oVqL& z>kVJ(W^8`~lR5Xib??9zVw$@h=c==Wgc^0U z;F2;=yr2W&?9&Alc_~L?kT1Q42Jju4_yOVnA7Jl8m8=z*_|Q&V`PUv2@iY}tawQ~| zjDNZrG3lQ0Oh@MGeSEFGj-78s@&{=Md!Ay?t@oW_68(JnCG1#YJirN1C@m3Y{|Mid z<5Y}zudP5_aYN1NL7+c+AV6OG_Q&`;f$l8qu3TRjLipA?>Ss4UJuswY$HmRO6q)%Z zy(fmTEgb-0)a3b9?4ItZ3c73d4DjR*K;)}@U2>!%nC=J-gA&SPBBFHe_-0s{<io$^2b!G=#^QdM!~Ty zNS>~*7Z#AEy&z(C)aZH$ZZr*iL~M7aw+(BL@p|_2>f~sLKdwUfxETo@S(J%6AJN_V z2KV4f0w0kH8J0D-b|5m{ubRosl?jR*dyMYds4u*Qne6T6ru#4~bNXjk!@hPvgPFv` zTAIbL+I{|jezAos=hY8>JWHPFSDEl1t?WHnu}{^LmTS z8L(4{;#5e$MVr3cP);3h&e;Z8D}D$Z6z7tpS}S=73oU3&4z)FV3>Sl_f0b{IW)Gyo z@L#E9#2Y6HdId^WcEsIP9fJ9n1oc{F0WQjhof595C)o=1vke0qRO9Dqtg_QuGTuy{ z&Zn!=6y!=2WJ`ohpDnvElf1X64ROs??5Pt<4O}$PyNz4gJ_EO4#frT@x92Zl35v1I zI2JWc0cc2Z#P|rm=hxAwS$_rQOSF(kM`jB*R{?-&oa z9)?`BIfRLECcO3cxyT46^>4cFqz#>`DS~^py{X#zF#NZ=bGI_{-V#2pY~YY)OPQ$1 zH;<{_o5M$CMQJdp@bXqy#^s)$vR_dkP9TIs7wxCz34F@T#Xk!0I=P~cd=+D2XuDYc zu!q>A!=pZbR9`{Jr$(9E>)i9D zd`So>?M(ut_RIwoD<)cGTJ>5SsG7R|D;8Vm$EK07{SWja%}*&`+v5twNEJ1aNPO?_ zhsY`-#CI9g%UV3eQHM)ev9w^@?nmBxd)QP7$`@*?*Bb$EhRv#JxhgA!Qeyby2LX16 zR1ffFNFnI3Zhx?15lnwdk`mn+dm%_VVq{S6^&@WY`iOKxxv}yxYuP&{eeag1S1!3; zrk&8Sy!Y&0wGYUbI3k2F1SzoDaxkTs_i?E&iJC9Z2fH`gza5G0zajJbXe;Ljv0MRmuDmG}&yGb4&&6sikcy z)e#r=!-459i82p#;V8cW46^s;8`S{)IM5`*$url}FnKIkiuC=d3I=(v;O^!O!@Z>O zS3TtvctyWBxM9Q@l+L^GWO##yPRdWV z75y+A>SmMpQZGiBK))Aj>p%wf8< z4T>q67RqR@7q2{_9TM^;4bCuH?x%K&4jC-i0(JWWX54IktuSpr8TgBbQf)_^CEj)g zZB7F7FMoq+eVQD;KvYqz_H;YG2cG3#U50#y{m_%>k2PlykpeX>pq6IXav?1#A}57-ZZ`g*kqJ6j|7UY8g-Zq@svZ%f zjST;z6GABBC)aW^T*CwUc^s(Tg!yvag+mQxK`18o`$cHv0;1GtxBxCTE*{s8xn?cZ5-R)nH2EnJ+V8=8P+5>V@swt> z5Iu^ibYu4q7tz%&IIAQ2_cy_O!ob8RBO`9M+9&SAn&a-lA_&ai0|t@O6-Mkh;^{rz zUMhlb{ylIYy5AR@hrJbrNHlg8CfT3;U-wF z<&wjsh_J;)*rB^ttA=4mp)wNe*fB<2d?0#<1OeK8w8#`+WN}`imkoY^8hK19bq>I) zPXcF>4R26u?mqr|?G0$<+*>_dPKC%Snj9G?N_;iARoYOqxd2LYITC;Qij-Hqj~Qr4 zdIPiWM^1PO%zq%99wMob)6w`)aqE`Q6eGog#8tG2eOT&&qvoEzQCir7CPmnXEK|D- zVjK+g;o=(+n)rd=&w%0gp%|HiX+7`(%1VsTo|Z`UMg}5{NiSGYr);k6m!g0&NzThyEZdwshvHX*0FadpkB>8U*73@Su;8K*o3c5dPHxm-9 zm6_9Tq8uumXpq>;fCFk72;D!Xv$#8nQ)9B24>12Mbn&y)3ShK9xq#c(fotl(XGkjq zl0DT9l}o;OK}c1?tO9|G?VV4Kb$(?Y#fIMRUxAxAmo5Mlnf zw4qD}`fjrW_>3aelfB^|@gqq^$}s;7MV`cxy-1epc^g#3?GHoaY%8Jq5r-!1k}8B; zhF@Ne%8`*QrZy@T{bRB%Dz`xA@VtdB!jHC~!mlZA8t?Nhly_|J#2In{)E~BY1T7TX1R2ftFD#bxe#k?DnA4jT9Y8ql$zRzh_&Sbq|S`M)!bFVkZF>U)0^ zuDSc@PoZxe9P9n`YFbKe>?3ISZi}`~^oYD_yFg_9{JHTUZv`Oyp6To^V62jck|+_N z0YWKBGs&m4m63Tf*XdDEY~nGblKp-QfkEoaSlJ98~XPljqlg45w*$&pmW(HeVfLRG(nbQo?p z-p`*0J?yPSW|oo$Xc{99@nWXCALid{xkeKSn6vd`XK{4noD3(tf<(W>hj3)fWhp8{ z)>SG}Onh0=0y42D5(>e1xu{5`b$=Q*n4jdk0Q0x1hxtc)zrlo=^LuN9MgzsvRn#;L zaiz?C>;le005u)>V5MR|o|IEjF7mID7L%!s63oayCy>Re(3CGB++oM_NWRT5R&t8*!evTba}yKL}v2jp}4 zI}({jwC`|~95L^DYb8AKdl2>xb+^vy|=rds4RPQS|_qQKo+Ee-0oPi zGjmq<_nM16^$xg`)`ld?sDx$&lXVDbXDTV=d}x!_9ndg7{HQKl4r&WH7gVKtpHDm} zC^{XzOV)5#S92*Jqr-p42gjv|p&MP*rqvRM%ia*RV2n-lRM>H1R$m!a$rk8`S5&=a z5_3N(w#5Q1KYOj~yqkp1r=+7nngdrLuZ9FbM0k4W03drx60KHvj|*5gIgcyodh|3l z_J{KF$9dGdKc$_XnzqRpzxz=WrVB~hnIWO_3Hzy*@3twZ;=`*zcP@fSE1U^XNph?k zP4<8e9Mp(-ub|gZi^6jdUnB*y18Wug&9Z?f@5O9YRJNm7HYE}hM--`10-t~M{J0QD zlkDJV5GVA9o@%)on3IoE>eU=J#$-9s#b&cpEI4Urk6v1fP{~Tr?D!2>j5tJ92o+w% z-Oe58&$@vXdAt9HK|-|(TJeO7yErdx$*!<3?9`rqRCiPm1rk;b)ogs;DZfXu1^kw) z;pvYzf#vW9^W_1K{tagnG4?0Zg}nZSJ)$L&AH;-yGyXT%UhZI-(LrGZVhrx1RM7(l zi9AEAs2mr=b81&kKK1emV4=8s5zYbOOtep{i4o((Td;YmUP>f$?%nj~GuNXA%2|P{ ztwa0N?w%t5+r}~bP(m0rDroC|ng?;$VEpA@HFhLX+rX&^x)Y{{eeDW;2XKK$s<@;9 z__gXCu%liW0#ucj6S5S7(g~Nhk%7GrV6e&p&CduK2#9J+B5>Tr9 zAQi>_y9Y9fcb+qSi99JF07FE;-#%go)}^GC;cU84wj9g1Tn(uF3;XR~E&zr^&?EpD zm!EE1L6sWIEg&|Zh{5SP5g{zdruOZjbbRQwkYvKV55HtrK=ZGIgwZ^9+-m=|U5mo% zm7&Ls-Htw1c%v0<_*+o!z^LgtBLTq?Tx0QY?`92f;bH!h*Wrqn(2cY1q=G3^lPpY$ zj9@y{84nx!M;wBa9ZGx{2lH?Ak|G3%w+cJTvrT6q0|0PFEkVRYbi|cceWnMh4U|JN zI?%MhFWq@7AoXlJ?EcP~8e!=P!>nw}@f2fg?RRM3B?AAjLtCI|?DU&vs>;9)io|dx z4)gVocyA076FVCi4BeFt0X}(S1XE0r;oI}^rn^C3{0;33ZsV+QDCPK`PS08OCnEXc zHYBL97ew{HiwGiXFp-KhL!aA0z0yJOxH|Mc1Vmi3EyY_t;YSDT<-U zM`=3(i~(_C(uz4BUWQ+ic6bNJLV!b2X?V4Y1=mOXANIv$Vb6=l@d}Vv6Gx{1Ob(y8 zqX|?SA<|p4o;qo=H(H))kSDM6<1Ibk%-|ve@eCQfRJa<6x>m;VSZq{1yaWs#8D32n zK(pk`zyWv>Iw-sZrEVUss9V#dj=0~9!sHz?0heCfn0=fV-8i~yNO7{;WwOWB*U58> z3C)#LXc4jGk?cUzQ@hS%q(lp(*#I2Lls^Nm3Cd~ZQ$$RU6|4VKFOYv>SHYzA<&kJK z(7Z2i$3cD_7>@Ln!*Nt*p=|}Fe;5p?7J-@%alH%D{vYU#UqT0n)*EiLEh*wmp;b-z z@@(QQqvG>I=#N{rYTx{ zz;r;LkCRBO%b04N_il0LgRYSk1LMWwAZE=G=omgA#X!v!qTOcL>H7Ix;RLBogakwD z@ZHP9^A(iCSXNx^(33AYGu^`+%J2%Hs7eJmeSDT;m{M{8;w8df;JF3kup}DdP4T%ZQ zync*pAyY74=I>)kwm|z_9%bHu2|MHgCT(*bdBz>hZ_3?#mR=cZ4z71>i=3(TiK(_b9<6`X!tA!{KXb zzx#$?^ubW4!t)x!in%{+o8j2kEx@8FZFp%Ek$w%h9e@C$NhCo^j$3|ub@?UQp{^9f zjspaNF9RPeI3+5ie*5WO-}``oA3qJ3Dw&8-jD*)8e}Wf3Eo&dBvzLVC*0wL0Y2ATURMh_7aE>*7Q&zsMxHzTvoc%9Xh7k*gu3C#$1{sXe;$X_ z933T%ZraeIqMlI4KkYU=NP4wsU|;aJUXqKgX$fW@k-iBe|A5vxQV00hqw6D>crVr` z_(cF=6NfP;(SpyAR6LGuJJX^9T<7H%VV&HswH+pSMP=PdqQKOTQg`I@FuF`&9N54; z72sOG!9Rj0Ksi+gJGbpOUY|Gb?&Ki=xgkTAziNQqWGZvlTF2^9dk7W>p5UL~UmLVe zy1sFJ5|)vI@c~zsAfz2Wd`h=7>;W@ zlc3GDKKwqZ5q6}vOjhZ$drrV1pcUYyMY4ys_E{1ybopFOts_BmlO>DkW!wOO)w`iv zG!aZULB=)jh^JbGJA>o!9>twHmVz7S=a|8cRy;3sB@KQvQ1$u9C@AAbEGKZ_Di)*A6QI*xR?g>lmEpt@L8s*MK)D&xjvzv(p)>E{+Z`Z zu-x57XJ|-1f`J-2KsL2)vueN>9~Nd-XxUYh_k|0JZF}%G5;hqxwx3?7YXRChvW;N4 zFfly6|D4U1Va8+|I^w*aWaaIlLBx)youjYi<^5Qq<-&IxhUcTPlMv>^1q-c=07tRN znk*a3e|rn0B6v9L`DQ~TP_c}-3Q}a>?+^vxa07tLD?4dgbw$P0;~QQ%S&x^ zY538@>sx))9TH7298JQI)y)=bZ~%F_y--9C@L!GbG^>38o4b2Y>^^w7~XOP--1`!NoX} z4ZC&sF*EKOFc~mR3ht17i~I@DNYFwr`~~-govz;s#n8kE6q+i@|MU+J~KNCSaNb>3EV zhQ5PTr-z+S1DAHhy@g{hx8<7Z`&E%_W!N^JCkK$Z5TyQgb5ZI?`^Wy@IsSmL_*%@$ zr=>M0oyiIphXH@`%U(d~KNBC3Y{g-ifGzNJM>>FV3P`8!Jhb^xQY!w|2@qDH` z0p<@-X}jK2HtWNwnP#IKZ%OP6Cd&egxdnBVFq4|4BZ~n6N`4gtr5F(++B-1Aj~CrX zBHOOpkqV}d5_D%qj46y+Z6gb0w={-4c^9PV4%l}8kbyashl8Ax9K^f9Yx5kn3URp# zjUu-N^^>oPq&PE_J#8j@olcAO?S5mjcB|8_(KdfuQ6g^xL*a6;^;WU>r*w#T3_@L> zCOIo@=C#kC?g)ISnt;8+)aMfK0*IrTpkr!t;WF$_ z9%Uj`6l+p?fAaYCX#QR$VkQh?zWI4sF$|KgDxZi5=I492_(!DpkpbB!5kS~dn<$CD z6!vmt4cxmgx(Pu|BW{r6YE@6ufsUbqW+;7~qg9D2s2Pawwvxzp3A_J#uki9W4fmnQ zXJ50z9+`j-^Ad6{h@2rgzAwd^cZ$Hq%2l=}> z8$E8isqNI6G!ZOe^}XeO#jlt31M$C~vD9l2)oaj(ayN7(fPKlbr!m_T6LhR&%^A3N zDWij6z)Y0tZ1emEe@>ABQFcW~uatC6pP1ftxE`$H@uOV!xaAWR?2GtClP|b;k0=_6 z2ro@BBoV(T4{h@dub4dc!Y$>JmosC(2{YH-P^Wh6=k?2CUTrT6qgZmUcaE5grJ-&Qd z@KV{aY>_OghL(&E-^*?@ebBddd|VeJwAYXm1!Z2(ox071{|-!sv?c1oF^eqDu9}WZ zYBpd@ex(^=ju%~*9{NJB9uUv7X%#`HATPO}eV0yV{CMcr+J}an-MLv`sTj&-kz6jr zrO!9$%ZmHr$GTq$cDfdmp)5lU!Q4J<9+nw79#QPW*kBv`oQq+i6&VF--PYK$<>;QM z;%)GcraP(_cT$0OWDBZI$Q(a#_x!T78{nb*xQK{+OHC>MuanaSV-xL;-fnGOYnofM zSZ237cNl-!OhVf&ZoZS*TV-H)bJvGqkvTAS4;{4Yf0J0-@44MIkymwTtx|0KE!b^` zu5a?SUzSD5vG1WoIf|N7a~HHiI`8ZIaA#bdgUBp|*-lm)GgZ6&SJP zlxJcn?cyVI43~ovQrI!tdzX{*mKTm0oxohMQp~&=87hc6qMu9S!1pn(L}9_@wWxix z#%k*Ws7*V6L|u_Cr-E9%^tDex+Zl?mqi)4JS^04@Fn^{FmkT&==7Wbc8(3v{N50?P zxi^(G79Qn~zgk;zP1w=7ZBl?Y?#O<$wK0`mPYwJ&C6lkn{^5q0-Qu2k4q%cwZK;X~ zMEk?j^{AUQN?CU7#~8oBG=I|tM-w^O^pAJZQXfptyW4zHLymuJ-~7grDosqFtpmuQ zFW&Y&TDnU)HN@Q+eZ))e%%C&Szl1My{w(MNCjAdIihG^Q{n&AxYgCLR$oSEsrP-_Y zJ|&g0ro^avIfB>Z4w=UsG6v2PT#j`Q8MRo_BSW;etZUuy%Ae8+O9c|7{<~uz9ia!4 zOxsJgtYq^7Ot|wmAHLx%ZV{;|<#+gwh@IXS0KB{Jou~z#yKHai?e-x%R&1s_kxuqa zjMvtQSiTbX2j7luZY@tnJpgFpXVkz(aR-}Z2RqV#do8f1zJF?hZ6vQ|j578szSTl@ z`7rb9V#nW9LU*0rbKOVg=sM4HjUU-oCU#TfJw?8w8Dt6~BsgV- zlcyh}!|Wv;UP^&_UxHCtm-f>3fGfF55o^R(nCK40@v#M3GV``C%w9yL0Niun&E#k z`bX~W;P31fCarDRdwnqfWCbFql7eOB8r7?bzMA|_dXg&zPqx*rIQUqcr7Xi(mL-WM zhK0Y7Ets0fdEb*su+LzAc`5peEf}7uL3jBm{0~j%9Z&W9|9|J$TlUU~aO~`my(#NB zX2+J5y~{B&la;-RjDuru4w98)WEY_%dlcne>3jM7ZomIIUe4=vy{_l=cs?HYXL}rq z;a)XmsLxLZ!%pYmSG7F&MeYBwiXC-zQwH0uN0%;bfH$=mxATq84+Jp#Q2ZKD6;(gb zG}3o52!C%rxQ!LRx>DLdU4#|nzJKp#?NxN+-qjbc{S%Miz%p;;tvRjy@Pc=5Ue@#w zAQGQby~KkvHYgQOY>urwN?&+70&-Ku=g6;oYWN`qV?A=+PN5ITms#S&iDk&v7CGLY zf7st#z;AP0?BRco`-=DU&zu}CmG9XxcHL~pbVHPZ4r4lbHz<^Y>??|wI9 z@6}wwh4@{!jw4U(Hk-$(*ge)acb-TzFwp>|pC8%b`1?QpCJ)EH>OFpC0Ieu-`EpC^ z&WH$g705Sh-GMKiGYhQncuk%mL|SjTyC#;-AFhOSOnm1p$=SGAyYVqXHzux55&=pN zS=$eB9>E$LO_FyRL+h>otC`k+z;>qBdq?44zVhJ zye}pm#o~pB@A)2|dyx<;whsz@N?SmDjw!r^izCV;!H=4R_E{_v<*>CcZcazKh%Czd z4!kYYvexzbM&!?8LqvyUezya5B7<$BTxxV^!5_6SR08}5gQgPc3lVFZ#;cYx*yyNm zi0|i%(?R;e8<-CcY~d;8t@J||yEG^69a+NGOSIV6>wPzX zXI+;7hCQM>&?8+YL@msTe)o$sb7Ejqrals3L*9s%O=d#~;EY}!D&feUQ#cK<_m5#K zgLbQ|J_d%Gj%;)LS1iOThD@FxE;sYrw9e+Z-*ryrDjZ;qGk-S3XFU5sw0gVEN}kG! z5SG*x`!4dNN;>5Gy4IQ{J*IRTd%WJl_;{eoIcrCi00D6zIPiW>(TWcz5Bl-3b;eok zJ(dj!5Klh0a$-};MgM%!A(N-O5HjUQnCm!gOvr9p2W$GAXDifydN2km=A|RA!D7R< z3+vy1sPiXC5VgRSBtop`fYGGRCOifViNTWoHn#A^-9sibNj22ZkIQinBmc67C~3Gk zl~!+K=ZY5JK7~6cQ3!us6EM?|(f0lJywh1t&3Av+*lI@(IT&*nLSlVzPx zm-Kmw$h7ZKkkzhE-DN#V>}XK;kx(+f0RmnBJ79+N!5Nd5BOUad+K3XEg5{_Y^p9x* zM?jId+eE?3m;8c)pjH*zPtl-=Ey|H~FztzhEqFbCtmM7EW@huNvm8emQ_5|lB~oNf zcu;4-KH*(s@W{(HIP+%YV%$be&3jUmpp8#WGiyN7>$5B5}< zQqvHpMyN)Osb~@$z(tCreZM^KG}I_>=NA^R?(}Ph8if zJ0(tH=Wof|oiAn6bu<-X%HiGns!5}0`pGQfb=B+PJdhqFs3Wx2;V(Q61Lu!l!?KO4 z6)z3~i@dz4x9+d^bC%Jvh}TNDrO+YUS_K9tW4%Tlm-m^GgTqy?rd_K@3pw>cz<;)Q zPz?D{rY0(y=K95ieoVPHJ6##H@-@t+tFp{V-GmZTsP8p=;eMZGl=Zf!jPq9|5AbZ= z9H?aTIuEm)sc)~m6Z`LXcHl`kWq61QXx{-)0^#GS%@$K}!>GS2tsMq#{)rDho^4!? zQ_$v_G^PVnYr9N81v>jkFW~bFBG03ld|1bawhz3^O${=S)e*leOzT-Qo86&7?UZ7L zMCb+X?Wbac$Gv6b9F(jLAH91P7dASMcjF{(R@Il|l7O0q8&gTZuX`pR0M5NNWu2I? zTQV$T&C{2N=j~kaO68(I-smLVcO*O^Ef5lRMJi*g9`(r1JB+U8C$VEqSm^GIvx9T& z_>Yf~QC&ZH>FMoKA=D74GClzTETtC4 z*H#KdIV3`{Nqw&^e;~#?^5*?086hXI#$7>T^0bjIt<@tZAX)kVCEBDE?hhW+QX{Pd)15;-Rmis^2*W8RDzl-h;RwH$5h8 zgoBG_kAdH>;-@C@QdC)uyM7)4RhU+d(e>?XnqbMH2jEA=e{Dda^`1GQN`l_d(Lp9TaaXwfnv^5|#ULqU6}&i- z`I}|NY(#Oa1J@`X!$9TM`LJ25WA$KvJdXl=w}yI(zbi`N1-|w?DK~o+2Q?Vy=i=w> z&6pOPXw%HXKh6@_@X=M)nGx!MIuvUX4)AVZ1GZ?-50=zaYp9DhIGuO zjkvTN&40zGNZWmEdOe#}kYGYaalgvf{ZP2RC)HR6_t{y$e z$o1e4^u39O$u4Y&SV#*Jn`#r$g5&PS7dNukS{dLV|E1uwXTc+AQwSqC+Y^=Jr6JA> z@=?TnMXH{M6!spjBw*=J{7~(=Anyo9`beha+`r$$gbwK=2T4FewtNEzseCmLjRy~w z*vS(Kg;m&*Ma;V95{Rs64?;5Vyfp^e|5q@JAkv=3ZM}KmaQUH6Y0F8MqkoU<{VV4D zNc~Tdeyp*0UX)Kg_b414wMnKjM!uw5-8|}SCHxd=?{vCaFcD#xtN_EQb@JfrbJlPo zM1CTTTNf`+(wAD*gC0u@`UG%AG2O>)U{~afQu*z_7R-l~uvKO!=moPoKY)gl^QX0@CLq&UEd!O?2W~FgUe=dhl3;lN3;Ea zj6(Z8Gq3`^OBcxBi&*Y&AhKSXFXb0-Eh#USwzpBROSLe1^9ql#1633s6cPYWLet`I z`Gcz&cp7}$ov)2sFG`(hE9Ah3LaZ=%@JBNfn>^CI8YgL)gzxI=yKx|Vwclj#3F_!< z4$4kv?HHJp?KwB~(;dV8lb(n2iJmyEy6ss@U(qZdu!BPDG_eXwDFwkDNwxiy|NrDb zfJx9U{3%pW(fNRk`8+7lU^Q)T1Qlt@Os#&^b}w+HEBjyD`k&u zZsHsN`L$ujnVMvUH2*g7g6fTL0M`pKWr^q3!BQJ3;RUk`-z>T>AA^4fvP;bX4@+R#!#SNDAX58NAo0&Ec&Cz^!n-xQdcfV8!orx5i)W$fEX9iruJ}ZRIVN zyg?<@`??nT{xF_JbuSAIX%B+>c z>!TuDhxCSP!y~|6>ShxfxH{wS4RB|j{&^pq?(o3}?V=M+)my&V^78w{=64#BAVE;_ zA-!yZ`-9h`??DGQ+!<`LOdx*mLZpWJ5Tw0f9`YgT6ai9?xo>==4oxsZN3tx12Afx| zT0p}{*bmm4nMD+Zt87w*6#<;agid-$P24 zZm-=r12V;@A!PSC^M;DTSx+0-Rv+9n`Cj?CBDj7~TlrIJO$Zz$;k8DOzvZ@6xH=Bu zkrR10U$oE$IndsPw36VXn|{xT5&=PKRPk4?<| zSMxfM&gNpwWSH%2hT&NM(!?q}i|H*mx@M|}e91Z;>FcVUW54gEo;(nHG9UU3!LNUM z?mBupD^@(j8((#XT{t^UK2v;k2^E0ZY#UO0_%B_B&V-$0>He9Ey!aeX%%6q+u9Lzv z@MpCl!#}A~d;4r&Mt?IY^8Hb=zX0J#dJFVBtw{iT;;hI=PBgnui@?1x&xtn(;mPBs ztxBgHZ6d~&Dl4&uy?RqWR0)Wa59jcUOO5Ze`I%t7&+8|Q2-2aG(&u9Tj=C$ps`rS0y+KUjeqxAs4mlMD_2_30JYQOiJqdLL%eH zoQ~~48)t`S>PFMBvGw6~|F{pgK!afd9^xQxsTX+~jBVT!st@B53n1(}XGj)M3bW4U zok|%LtybMa7#DEXY1R_?e8weY6gU)f=x%x3e@>5rh1=9op^ckx+`JXivY(^cS6%mMSmx<)INnSo{CTwEHK}U_gT{b*7pjOXberp{o6e;Kfx`xUZR!aqf6>0Zo0@4umpFB4SX&`w%JRu@*5kM({}zuTJb4}`Oft+w+& z_h?^CCWOI{qaR?(q42b2;26-pO%xl})Zjua%tM9289Egb!b(Au^4XI|^cENMFh0-7 zs}N5@o5TSAYC&WNIegL^#B+NUUktm>)2;iZ#_~NCGI1T*<@Z;z>GN}8jQklBb;;Mb zM~As1Lp2jR_FwYj5?D8Bko=+R<0Di&jV|;eIZ}@h#s-{YF~I{^2K=P0=VmmRYhM@H z0nOJzD2wNcXVi*|}-#p+g2I zF7(N%5tgyL%1xYTrQh*xDPGvKkR~P+jq!a+M+Z*@a?p8Xo3*&q$d2$?SPY}lEVRI< z6IAqdqjd)^f?MJjAb;q%LY$fL{Tdb&<%n?#jsJHQl{hf!68KVVDT&7)Bp<*DwmnH412+nu#~_ z;sagz@QAYMZ6vGn`MZPY4V#D|Q__da=gB)mvE}G_ih16|}HN1pI{#^5C zHbs_nci6p8QaiJ1BREJCMT!9-_wYv=cFfBvH|seMQ*f3zHpvD2-$4biE3A7A=Z}E6 zm&{)teoNjQ3Q1bXL#}Ka?}Av#=lANMpTgp=gy_=3dOs%C<~yi--|}l+pN;E|QU&Yq{|`0yWn@*Pzrj9M3#j1Z&;i0^aessy}! z($m+Y2da-5=kre?HrWO{8fMeOzxSxF9ZpY`&$T^|3*wH zP2>D?V+En>)^Mu;&;W3+e$DDTHdwYb|NX%MY>!XmXPzXX8~+5*10DZsQf>B_3IK~* z;dXAa4RwC09Gc?b234trvpd^waj(O}2${T*Wivel$F^VRyd?5Q0zNvbdg`s9+O_Q= zmlwZ2_^RGx=p=MIyb+{VhL_E(F6U*+v+=L9Qr}{p74(W{ziDdmUb|TryQIetHcJjT z_g$s@A!@r~Co~m^u=&s-q9pGwf~HAHWPnas(SZG9e_(D+D_(uu-Hyvpw$Ce~ts8Ep zLU3J1z9T{~erk>-UmnpSf^H{Lv^v~f9RF!Ib<01bNepgY;}t@Z=E}EMqfR&WdemB=`vvnamW|+;3WR3{Yk}QDF^EHvX;k^HHHlfs|3t2><0$%)f8%NM z?VCW>4N85Mq74&nOYy=q8}ICB5kMK6ND#o5M1a-e9u^_ga#-2A2b{D=Oc*AZ>j$gL zo_1=(s@Y&}(686Drt%acX6$!PVtQf7xK1?u>>VE{j5yE&)8W~)7X#DJEw6n`t`}DI ze@0IS<%*9pe`omn-bZhVaW9A>JHl$eJCfR~1(W??=co+igTTlSAa6VyrC6rFK3uKd znwNQ(DU8>sim9=^TBMlfC^FH)iUNw@cJ{FO4%2U4Nv|zbLA#evBC0O|-$s6)O>b-F zGGu%QTp8di);zf!x34h-U0WKk<3@`$0N?MiWM+-9R>e^45s~7uEiFa>{x4x6?sfAP zmdvLKRRsE+SIhG^GDN*^7V2z%L}YBAFI`o%av@!bVNJl8jCCJ56+6E_b^9z3a%~AE zSE!rIM2B4*GQHLBk2SM)XXAu~Us01Y1-ai!d~&<0vOUULED;!72Q7D)23jKi zvNxC%LiRbQ8cAM-CVDA-np9 z3<&&E3LH~!BVTq^Zee#Ve^B$iYKs9?^xdUJkY^ByG}v6ToKB|i9wtMovLi(pI>C`; zq}^JD7}KP5>&ebVjz!lfNLjgN^pn6BsW}Vu9DNjPq$sLiuD(4)629}2`~5j)cKg~v zQ)ma|_20mzo&ktcPh4K%U=!FM}t-W0b8^knkGV z3c=$f(m{EsT2mAzlc)Xb(><$mjtZ;!m)%(EI)QLm_F|rh;9A2DPnO-oKd) ztk|*$%l#j4#Pyr@O?q|f1(1D5t6ro%qY?zqAU>L&24meesOxJd%$s~j2$_6UXKRC& zagn|ck2+`cMQ&3;!kdN`+le;M$80$jgPv+pAVl{6C}yH7S+}acpOGz#WJyGZ@ay~f zJvhS6wOjQxLobGkP0fW1Dni;Lt*#gTL^p0iFDBw(=GACLre3@uHYz_hTzGUbiqf5MtAzPy*8G)@AUC}1@xb?3o9 zL@hY<<La=(Oolw*hI36%CuM)u~WJw@+#aX!uqmDEORu=f+I;r5~ zGIF9m?6#Y)tO(HBg6B|#*cSWv^TfPo0^}CgI|D5yC*R2#M2ji-(sHMxZbQ*{;P>$1 z`i6oW*$4A7iV84I=_A)sQ|3fx;pu-1Y%FeG0nIx#!hYx9b0UBJIoMhj7#972@c7q< z9RUfIUigT8*wOHKo>ayoiS*dgWgWqDG!%V3HeiF!_r*8Q1{LQ{;QyY$hY8<%((&cn zAe}mC8SoN{5T6aU%0YTSuJ$ev6<)`0O+4OyWd))vUbgZF3oR|}y>Rf?zdgs*&i^T% zGG>?Ky-(g1u5LR5-d%2(=(Z?FPd$Xu5H?+)+XBK!u-C}{Sza5sB9BrjTIZr5NW)A; zYDPkzpj(eBEX)c}MfW6q0yA6emJN8~$9DtHqZp729AEW7F%h$~m5ogjqGciJyeo+j zU}TiL;7bgjtA9*cF7s`Z0M=&mApvk?yzcOBWhf7~#8xswCf|_~pq-(?r!`(ex>!3j zhxB|1fYr>u(kA4#&;Q%)ZYlt; zvUsb=YJcXLB7y+BC~Z%a+rSBgp~0tST*w<=Ai`dE{He142o5~MW$8V%4{zLb zTFrA<2fLTpJ%s)FtvXty`3sb-@-s?9shbyU%SF4Dtvw1`gMCcF+3D{PW0CF!Jv>j zw&6wc{uiBV+7gy*!%E0LG%};hppybq%hi?wD35Y&V|;39$%E1Q5RZBttRFj?9=Kv_ zCF_kOI1HaY;*iahmXOO6J;7r}bR?O6kORv~reMqg{y3q= zl1~Tgy(9XfI91={w)Il1s@^xWMz6*7%eeuyMrM#|L`H~itHYbT#guhyL+Ag(q5T2R zJ0V>!#{v9C(P?p#e2;CB8^vsfgHk!(th<~=StRkXW5Dj28A6J&`Y&asLu>`32xIlDB~phIxj>}k=5^8%T5kh<!^|X zE4HQRKzj0#Z6t^a(&}4CvDKML0VER@99^Izl4pf`UX?a6_JP{NG#v8>xy=Ll4M<`C zMfhpuW;cANsk}<&L<b0Hk1|fKsK-?DoX&| z+t-cR#C7kG&TLf+L@+$&5*$*fxWyk9RFYe{Q}w^r3)W_5^6t(YkAa?Vn8vz3?rnP- zNEXT~d^Om}mW{iixul6L-}+&Zi~<{=XMM!g{@1Wjl%}A#LY50Yc;4dOip&$IJjE5u zph)?fEMprdJ`4zvutq(@#p|5Fua}YXn6$Z9kveu#$8qhYZ6DG|;Q)0pzx761Ld2V0 z`fHv$_jr*CR#GI2!9!i(kLg64@XN>_?bQ4>A`#;yk`S0efofRdWWf`Iip2@cZWHvO zw1~XHI)B;a-p7mKynjNB(>&=D-1H{`#N<3u@Ce(?vwn>_d_?vq%@sSVn)5i(Qd~`+ zpWI+l-F7zap>pG}d-mr+cWU31dQD#ZuDwE2#}Nqe%hdt*^a2?%0!q;k%wmF2NVkqg zrXw_HPZR{tk2Ot;6tS#%pOz|x!4eim2J=g%*-JGGAUpoca#ssp;K5&c^Um+!kH#w8 zRNzwm1~kY%P*e=0Ge&F8BqWs(wkZ(i*kw*@^04|_ui6EvEXtMOm!tcMEK$GnSo~FE zi0~dnQyFhF&QV=Eag`)z_HONer-_X@>%B3YSwm*%g&%M7Vfit(9P7SW@hw2h7UOVY zW!{YH`$CR0dz*1bj{y?Sr$w}Co(~A?LoYQ>?5I`4-%L}(4~`Q*0vOMScN1SH6xEE8 zetM z%Kf-Yaxkk;p|N31WfH}p|9$tGP~4t9DbeQSPwyxZDkg86a#j0+;?+fC*urS$ovpo8 z2U4W55H3dg&H!=te>GmrE}r^eoq3p#vAXw}+#YX=KvnYMhkl~S1siV9%siTvQ4iQW=?52<~dI-J^`f|Q5dkeo&~}y`E$y26HyE7n3MltfbT%V zg793ny-d#2xY+u-`e%{K<~a|2^Y}MUg`9tH0WD~u>dww!Z8|ZcDWv@kq4mok({O1% zcR`E^*tv}?<{-(dk0~Mo`yKW+(EiD~n(Q5$p?}RS0gyzo!yVWN=3KI`{N408k!_93 zQ??pTTm)h0kk#jXra9or`8y;f=#nWvPwL|{6S|W1(^#)BpV)bt{W|QXzq=hQPn(8L`|ctTm~I02i<4299cZP(qO@2 zfno^Xb`}X_R^%Vn{FhAQ9~5r}8eJ06mm$qVl-naEUiP)E)&e<#mjFYe39FoU^kmi~ z&;D}j3l#l~Jr-1mqnllOrL2iJVogsyjh8g|Ubh>YW9^!!gy)M)6of~>TAy2Aa_&e+ zbV~(-()+Jq@nd((w*IU}_B>W}c326>*s<{^ueQo@WWSCiGF&fY5-Ha!G|U6<;Hb$c z&j77MYFYNjTF+d!t!hwNzGIH&SZi$0cC>J67GGo5U&=tiQBubi%T`UOdpMeT^|^TJ z0uQ3b1N2bmKMBlN-HRG_99f?d+&{FwK-9OYg8K>FFH3mMRa~hIpJQ^mjH}OmyL>{S z5ONo?sdeEQE_Y+@^obR;0RU>s=mIe|&i?lCy(hpyoj9pz+G2@Vzh%aV5NvFrrGzj3 zHxXddPOJ|Sux=P=HMttOW1{Cais816?tdyLOEn^t1CozM^^#P?#hn zF<6W2j)$!?>~y>AW)kUlG5-5#fj~kV2=<)`2kgER7kvUnz#!GZvx0}SQicG4~HC2js?#=886*BOuywQ(JsD_$`;_1KfE2Tw_1dz{P++sVMwB|H;k2;rL{EwPH>*nR)*KteE990_J-aa3U zqeX2iBIF?!TY>PAw-+ILHd+)=jb0iO#5e^58T=CVehp|)+XT)~c+!&s066TB=J!cq ze%5bPi_!Q7hxG6?G~_uMfy!K#-69UPwpTy0b!GxzU|L?+1`Ou=Tl)8CyERBOdI{WU zx-_amR*UmF3S5}rO^{$I%7eTTy|KC;WqSj&#o9XZbD;21+c~h|`ah8%S*}0#7c!4A zzj@(?aUcLKNIz`M0#_{-?ALoAql$>pjKbeCUk~b4`M3KM!Ko1|x2yf47KW%Z9$k`_ z9DXFN9h7%g3JN zJ?+o~yNmpck^F9JXO0;(w)Z6ug(|+E%p^u(PXJ+AGUWt}-xQ_a(Z&|eK7e0U0{BOriz{P({79F&@kXIG92!V=;vpVB9zs&iJI*$ z|4_eYi9%`8TtssTyUR`GD{?GrLW790dpyYT@5uV~Q3GwFv#6}|yrFLV_7K&TLQkIu z9O(Jjy6wQ%3WzKe>{$SO8@Tr!oi7Hs)QQq+i9w9f$aO^I)FcVRq@pvwp^_)mat0JU zoE$xB2{s**Woh69E;$Pi#@4bv)WM%6jcpuz&vh4MXu<7xQC9V6e{dH>UH@tT<#poJ z1Tq=7(`^FI4bZxgyd>xfnzWI*#>fp9!&hqP)I9Iv3@-sc_e0b_Q9P%jj`*c}3WZaH zzdW+7mufq&E)bq^IqALzB1ETJJFU3de6 z?p-B3sKmP8$Y>cNn#JVM5|A?7m3v8yMo+tV1KY!$TYH&Pg{UceP?{TI9NwsP;~~5! z`-uU+ z##K<4Z3v;{IO;~pRT8FSO&}jc&8k61;`hrA6}L~n%YaPdC^_wij8eCOAS4M7-UZqb zfsl|ta)i_(3smqszakz^5(p1JAVKHuf0PF`vY&yk`8Nh41V3TUQY|Z}N1m!sgmMbk zQRXXsRh8ZKq}6!7n@_2 z%0$zmA!h+I2ShG~fdmOdo`;rxDM>UKQ=@ceb1*DI>?MJ)CXlmG#~T0c=%?IY;73~U zO3siWM4mZ;FKu;RX0ggudvLG3LKVS5c7eaR?? z_|$3@5H%2s!dI_&@%0zGT7aaHuD!)3nYGIGHXT4I`|nWd5OWZNi9h}D5t1y{{EZoC2i zVDt<~B1*%EUr~8<`-6TTMNGy4P0_nvr=ya-nUPE^>6Wc9ve5;Tu{%_bS6Qn~B*d=P z`77EKyu3iVReaDq-LX$nHmM!VfFgYhRBP{CKiA#Mx?dCX`vn#UC4?onCPPsnhYeMLx>IS2W93nW zgR4(9*taO>ZZxsG$(~t#)oSw;uYc=TO7?Egmc@w&sbvfp8so?|L_947mM*hK3496ku+7XZ;#tp=r_ z`T)fN@nj5E|5sS}#_Hh%5FqdHgQn_GGnVNj35;92KLW!PM2ZA>jbj*ogzLSN1?1ma zaBp+KF782iV3yc6w3_z18(ZsE)I*NeTPpjW4Nw7K8NP-`n#})Ews&+JB9D$u7#y)q z_)kcwjZzjNa?@yzC6p7L_GyC{rq6+R-9CQLttDn*=-!iNDMZ7(rE#SOB2cxl58eoN z(wk^K#b0q4Me4->o;p!PR){Y{8SrM;5z_t2$UlkZ5iNgZjvo#*t0uWX@#uvu>jX3G z8JhVns4t?rM4sr%uNpMDfPDar^|*}``Ti8JhyMhM0w(tM;G_-D^N|*s9(F`1*xv8> zseEK+{Rwrzo80H-f~{VI-bxQIsWWy9Td7!WPLLqH7>zV%ZRq9Xk%Y!=PJmk$KgX6r z^yJlsKHQmXdAsU5OP-A4n~h=6cOsOzoS?_#xIZI;^a2YX54Xc-ljttzA%hp$H_>EM za%9owHM%nC8T;447oWw@%RzVFXt-c>8hJzEvR{;1TIL($I`U9BB%4(M#-v4bHpGBG zyQupU2`1SoYXPjJZN&JE*JZo}q+;9&$*d0)Iip+o(t`rYmh0WTox(7T(uhBv6hOne zHsfMnizB-t0qEmdNuHSb92f6Vlh%`?{NOte7`N zCB3g0ANXYRKX%a?s~}Q*qKyL|&i+ttele8XYGqgxJfGsKrMTL(1)YfSAOdvf-bY(x z;0;VKyMHebsc_ratZnAlv2)~<%d;qk-)WTq;+~yrs?h*_z_rO|R!Hn|M5zFBpb${Z z6=&=Yo(T}Z7hTD+0^pKZJzcEd9fa%`d*^qBz%duBwDCv|qEg2e-D!viyW>zKv} zWY+6hbI=%4HGrVX>&C_E*Pa``uHWWH18My3Xgoet^GIdBbO_?1xijsbdeH~JjNi=& z)YOl(KXv81uVI1Pf6mKEIO3^R%v4vl*yA}vM{j; zj6u)qoa$?0P#}Zp(?;_snfJ2-(=pPFlL)qlp} zvl#<*Hb-OD!I+9r>3ap_;f=`Co*BTd3PqnOHk7;WzU3+hEo^_G1Q}m`7BK<`y5^VQ4*=^hFhkcE z;J~THvp;B74>X;5K$(ZRC3?e-`F`0R5W+Y(z~(dNFtJ~jV4@nf=QD!@0!$_=FCww# z-5F{j+R$hcAFWfLL)svPu*8cf4lQCVnFk>T)?MRRKR}YI^AFr4%biS^UECP%YAOT@ zq+KmO^diImAr^Gwdar_?DuUYVqit+?zgD5t?VaIQn^X2SW>IaB`y(JxcGJ4l7(uhG z<@yBzHyrCx@C{B6Ujo&h1-Bm7PEX;Z*-gCk4nk@K!2zGg+?GEbA2LVGx1{CbT0dy9 zsf__=zQy-9vR7R|E@o_ zKlzzRRxakq^YcL&Av4`3#6$RSzE5$J*FYcR2^0ewtjIR0G4dO(MNR<8IOfIV8Jz`< zU0^&V$Ae8QMmR?^ID6W$BQ=w0ySKfQij6{1Svou75}CeC2#LW~Bxd4{%2MKYq;t5t zgg1?vA0B@!9vtgKgnl53QM1Q5)EmU%N+xo3bl&MMuQLmWeQL)hNh{23p?63SE5&Xc zcrZOLhFP0N5~RfR@Wo)#YOeS}xY(DK|FV&nAc;N3poAJXM2XX{|7N= zv?RE4a)~8d#7@AAtV>K0Am79KCKRJZ%Ka63gECn_g8c-`MTIg?Tr%@TYK}xP2;`K9 zD)LV!FL08Ids{kzZn)!4$N0zW{#Wc?TEd7y8BpQCV-%xA9u`gF!?Jqe`dDr zMDTX|RS2e8zFz?-`0biJ$aCru`Chops5ALJ8VEd8VoDVQ#T(`ViaTVH1doJJI0mnb zkl|?}+ZH}7eKv|JiXr}MoCz|(a@i}i-chr&2^Ii<4rq{rWABMVfo`PVUSezw%QK*GnV6#oTZrF@=n zGz@(D>xmX2$+9Lei`G<7fTxN&mZr4HNCayFq^`ARLL*=ydF113et3Qd8YF?_)B7J@ z6m+d?On(N%*)yN<7#LBE6cNIf0EZxNj6_W@I}B3|gh{-4VkJOmk!f6*qkelU3_}80 zO%j#w(!`3gqQ8(V>#qerNugG5gqRzEmh2~1ofWj}wj?)@b*^~Gj!Av!aL168Ex#;^>8Q*p)N+^lKCPm!L z&uPQG)9Q)39d%dd<2*9twvH1rGyvZF;!!%B?g!G=D!wg>h!?5~n$RfhT zeP<1E>o1sqVakerBLciCr48BQigEMo@{?@cbLmm7ze?+K4_6+H{t_oQaA!xFKdSLU zKQ`4#UVpdF89EuW!mjxVD?ATESB1bLvGWaK7v|q5P7U{Nz7dm*YRgQMVrVs2f3i$o z4n>?o8Zcuj6U&#XI~mHi-&eI#^)^++;iFN_C-H4J-7*0oW!U?eeq@DI(Ot zfH6w~VLUFgcamk(>RuZM;`wdKvOd#P= zP#^qS+5j{j2<$kn0)S|CqdS41ff*`J2|Nk=5}Nu@`9_P3$xCBw13jWl3e<~^ws>~N z)@x~9+k?(1LYqHnOZo17n#4U|#2YW5$+eE(89u{H#si^qMsTQkiA!pm60YM;tnq@c zCmh!E3by@_Jj27Y-PYAmHQV4O*rz8JmIuRz%36e+1G%Z&gX2X$W`olSGonl!_7T%( z?EX9C^vz4~4FYoG`n(JcDO{%YHcudWzV{niGTWfaRig+DKXz^VAZZqt56Zik1)lR4 zw_XKptviVN0K8fi6*z1ET6v3O{qEw&MWz70d+>f2geZSGos zkEMH0NZDgO_Upa!&;RO?O;<0&t>|Y0qRsOr)bIg0>TGbH)R%G~PevvOIUwQguKi9= ziU8!50`2+nL3(IukMwh&8FF)j%6S>jz=no`{cL?6@K$@{;cSbwd*>d_`LR>I;c9P} zH#7UUo+iNfF@vw%6h!N_zlUIOvKthr=LvLRtQ8^3d>d3$YwUzZ)Nj-8Y#ZWvSgE@` zIsy8f3Q>G~43f_RYv;g;l_AU_4#iFsU%Q323vKz9>vN={G54|+JE{l|U^kx?)ebxf zri0S9rQVMJEO#&aB^ZNx`b0wj(RB2&b4df5K%a&E@y4LH4GlTvZd_?lO%cuRG$}z^;kyWvI{3ZFN z3X{8t*imnk z*@54No;9yuT>*m$%u(|*12H1->166d8+W!q013QqWnPiDi1Ufk5&b2)@buo8u}mbY zn_$4~{QI>vAbOZy_wNA_8bNpl@6}#~!Hx8whF%Ynvkju#J9TYv_eXgLxBu z|M3wA$`bn?E+)(eoebxU=9p=ogJU$Pfj%`ny76t0N6v%>qvC^@4_zgLW&=v}y>Z-1 zS<8EqyTMPE<2lGzZ*s8Y?o1Sd(_D|A$9MNJb9S@_5ZUdh0=R((9XNT3B8vk!L8Hm~@p_!aYTqU+C{D6rKDbkCqfz(|}x zkLiI)&Sbc+z$?a_41N^lz=9rEpKfLto@WnUlVVk%2$6{1U=KPq2(_6E2g^5f-{=2= zLMY1tL)2e+rHCG0wEMRsaF}-`{QP9n5p3CsId;~EaX3wy#e@&{eSBQ;^8`o`-}ycB zFiKl=0>~Y(Pdfkr(WCHjYU;w=4CS#;m^wnpfbj_n9H`uT51f!S{=|PcZF=e|&j!gd z2K9V-_T9-gj`~EZU(L&;v9OR>`Pm#DQt1D*uro@_T%f0Wcp$Ax-LNuC08q}cAPCg7 zbl?VG4>!LWQ<1}i@BQvwe_}d%_NP?zz85d35eeXo%;y$%1DwsysrMp6DOzgSi481X zqx$CG^z^H{bvF(3L6Y;g@akG5K)u&qV7$BdU2h;lY>~m5ZC0wW1;F(gG0jG6lx@m3 z{<0GzGo!do{29bC zWQxq2QWx8jzav@Xd#zY82E9D)=tm9Tw<%$wq;T++ddJ6@DIuR{}jua-rP>jBJ1UH)WrU42)?gsLX`sMhi#oHnh2+vq~g3 zBTLv@ucrlgA67iT@=6ky_q_n>sw&>aTnuE)-%NG zL&_dMQq_<7bP>}~H7_HK)P%&w*!5nmHUP+3HSlEt#jma2!~JBv;I6*x6hO>6f(Xi( z_s7|Ur9-bQyHQsy+K`KHPN87fr#?wZMGOQ@0P69!hQPx%uJYDEg3;ji^t=p|^kcC^ zcdnw8E85RRtTkQ_yfMui6fih0Krwmv_3KJ%yr+#(vTK;C*w?^JRWD=Mz5Fmr*6!0Y zOef8jeSaHtkherq16)G0Wq>VrI3H@=cXJ@{Sc`A(=VYoa%F?g6 zx&e$R6R1VV@4wNa>CZS;uTU8c0n@#gq=*6jZyUf8S~(}fHg{4DPDC0>o3n}T9rf07 zyaGj}J@i6N+qR>Jp>NIGhV|W@@n+x(RO7{mdEFPr6DJwG+3Ur-3U8nXkXd|MoY&Xi z+W%e?2XbGE$;4y|DmF*<5&%lt-F?~V2(GiyRd5PQ=u#$3MV= zXV(rRBo0-+++#K{P1*hYpRLGpSCjW8FIYs@f$M9mLw&Nr$?u6enb8xX$l#`A4@YZ~ z$TOT_c1#j{%{z;9`TO5rYqG&xZ8WEYfcU#Vdc$a$vz#?o-xq+}};t zw-$KBfU(B;-C{)Jl~w>2#>b}h#alI0mR$&}9k)k(jyHO^%qBs8(o8W(vidIMuB zM1jUj3U6>9A%55c&+Gp4Gae_}FIUIRA^>)HCN%of_!;@9TZ`d={T(l!Tm3{%t$Z)X zt*_D2NV&Bnrh}oX*-wAJD4}ZMxxL!qa)&PCRSy=oE1>^%PJx; zt(>xHsNYV&YEwx)X5jHx{x4*{{9mj4m7R2;n7+X>rY=oQ%x%Y$-$!*;_&(TaU$331 z1EoX1XU_dSv(=x~f4)1-azbNuSA$E)_a_b+NdQHq<9-j7*i|u7b@n=vn>@Rp2iL%* zq5O`%vkNZ?RF9JWLq)z>V=MiBi@)r(T>ako(68DgLa2y5><5v%tN9e*LIBx`2yk={gt zSbfnFfqgD{Wz#k(pe<^wLEs<6<=jbA)9hcRS;IFm4X9jSgpJzqEcx6wM=FsISLl{;E^p4Pq!A>;^ z%vY+9FX&l8xy3UhO?H@pHb1as2ZKja2Ux&q|I*o{F#hs#azy)@HM7K>1myomL*f4s zkF+CMd*-s!&Y8&$JPf}xWF>$xu|)uV*t&U!P=AVNSOJBi?B|w|Ff`(u(Pi=Q(?&e02uZrydy&Htwg!=smc+>8I0W&Z6O?!~~f9?9u( zARp<#$$;c#E=!$LlV&)~Wu1wd^Ae{^b7&B$ReONK!d&#$W4zf-6KvmzM*%qVPNlNU z^(c=mT`|Btd$yNoN*Yax5|lMrnE9wK&%DNv9kV_@S*vrk z4l}at0*aowEg~V!6~A?z$q#)9_8JP9jV32oB8SP$J$Soen>$XQ4|*M2TkgZm1*(ol z7oX32*fH8ab5`;1{As^B2E#1HlJyn~F(ZV^z&AV{N={bJ7Mmz4+6r)U{STNf@z+X$ z_ly+v`YYj=!r1&b12y^lVP=72J>4l!OAPpOx|jTpKb1MDr+QJ4CeX||_AFOcomQSm z*-CK`VAe&)-uu)YiWw7s%7U%2{_@e37UNM~@la$XETWjvFou|#@V1iy>H++SXS>W# zFk5_hBlsP*N2)(V`!TIeeDBKtyNvTboW7qUDG}k#Ym5C^(FZxr7^#Pvt<1+1-?LME z{R{))6oRuO)Lx?Ecy=juJs9b=T+EStzWNbcLNv>j8@6sItXc-#yP940I*clIgQh-~ z4;_w?Wp%*#Oyp2lkv#*R**cR6VL-sF%&z!}(=<17PY6dt2zzn^Z`8{#i4@}(rQ0LM z*^pF5(1j{d*aWmKh`j%=3-jyi?WY9z6U2YTi9<^3#8*ah2y*0wg6ZPbjg4nN?ctT? zErpt7ay0nZ3bWU)8xh48RY~|r;bHtTFpBgE#wJ{1to$3mZZU{Em?@w;WxukTc^xOs z;MRHiT*gZ#+C@${Bu%~NLytbF*I)JlHI6gWxnQrwk*JKkS)<(RpJ<7I>wym^Mxdp{ zm-+zc{{b!4sBtq)iTaO;S>|}i#+-NDj}O%;^s9?G!sxCnu^yx!O}cag_>a5|m4VE` z7-q}bWUWe($>A08JgOO2fA>{KK9!F5$}gNA%UebJ4bRGbXEI9-4GvF7N1iL^9cnbT zMpp0P#e52Dz-t!+%osDY03~vMy;jP@6K`#d-a`ZrRan|`dGBeEL)~-N?~?@T3HJ{U z2G_j7V0((jLV(Em{Rc$INfCS?6*YI*)LK?P4Xzt7%E06ARASBV?xbPU0L;f6kW%G2 zfE6zR*n-6>p-LA96x7$kQVx!Q0OTV-E&G$hZ<qh=#QBQ{BHP?8NoQS3tS0lB*@khh_R;|AF(4zNkV!X zG4D`oJl6b3f-m#y9nM3Ebl!`H3Y?a-KYV@$BXC(?M#WtHZhz!aAAx$(-k09;m@E$@ zs(W?hroPtrLkT@U0?qNb1-`)@d25-5Ky#h!Qudc4X+gDQSnaMka{r4KyUQ{f2I#yJ z9+kPcvRlr^B@II*^9*N)zljB6hvOpqYog>YE(!fMp3M~sIML&^1DQd$iwz&YKPTI6 z_7cJR>fNr(e?&;L(%V0+lf-q0(y*Z~C&|ly*`aIa7%M@|cJ#93>FMt)jg_wGd!f;o z5Yq~pqM;Ja&mlmU<_pDLD=TuDb`qGZn#4R^H$jjXn<;W=#2(GtJT!1=QAL2+%mKH4 z(~*bv%4PX4v?ogCmg2E>-h)kwk>=TU3TTKe3rVmc zrn)dr0siL0Iww&6su%t|L;Fl&-2HR00Y)@p!oY*3$M8+92c&Ip}`ynT=vLTTkAb|XZB_p zu3tGEtTj0$TIXtXSAY001X|lYKVRZSd5}f{1>Q*oUI+G^0XEwqCr)AUdJNGgg2Y(k z;Voat-fGdE=G87H#J|AUO~mk992jsv7z43&b3gY7uzF9!dIJrQZ?LMCKnr~v9Slvy zaQM2)!l^(EFLSxmVM}i1UbtulXl}q(d)AvT&P6T&6XZGkGBha}-InAclUES$wV{sF zgKBIE;ToUK8!kPJL5gfdL*L^WSJBP(jQ+Xdwm;JthK$z@+f_DGHN6qw>zh}Ikfd*U z+DpXCUm3E#Oy2m-o>H2tb)&9X30K@SD-Y-L7CWF)y=PPWP%z;BRtIPop6upt%?4)| zbV-><$$F#<%?e0*+?>DWaFhA7qbd5lP(Mr7_Z6`q3-j<*_RGq@CC?*;03D@aJ75t4 zsm5@ykP1Cs>u>p+rM*11Bpc_?ZP8SzA4Kx<{$XaWbjXaAfCk+P(7LL{ZnpM%asg}# z<>=_-k4JNzmPRltrV&xBcd(I8CqM57jTMw5>xFfhfgJpAK$b+UdfY?J-UyH3Mx-{90TE^Si`ghW>2inHX>sa> zhn4>%Vk<9pZFxm&Nvzvkw--hV&MelseSN|N-J1_SjHTOJP{-PBjMVBQYrd?ooFu}}X7 z>WF=F#9DniS7gTANoIDp4q>I6$s`>h5K$rPZWACKvAPD03kw@%M-LPX5S>n|%7VHB zNNR`TIQh*qLE_Wf=4vcR*VH8t%YB#_C>sXE3j$CUaildQ(3JI$9qYI8#FV}h!7%;_^2ucIrB!hw0)sysAlYa99jhU2K@cxYlJY8QQ)9`dFis$QLAHCIU zn_{}B-ozn6B}Q&3%IKW4-e}Mf-<6kbZSa3Lp)5u_ylR;%9ld$=*`r8v`u3dt5hxuN ze0bj*xHx8GkOT5C3A6(Tm=Dy#)0`;oMyVcLUlOEKlfsU}+tun*&;*%=+;tnvvSJz-+CI~Sdn=R<3@iK4}vA4nrxG@YqP>3{-lHyk2~NYLe%zWCiHH$N`BIgmg)&$^B@SCPmu{=a zh24+bk80BFy!UGt39e^=_?yn%e63^nFPz@*_sZCZjPH*#{RY#i<AUp#m28tSyTuy%KbTdNLVX}IetyP&5JTp{r4A6Zhooc9=ZTmEHYVX zxMh_234{-K`K&nki{V>L-*f;rFqIT_S{ol9y|M*nH^TA~F=qd+wTNGS@+fj2xs4Jx zY4NKS``b!FPP6tw2!Oijm&G0aMg|>Jih|VFMk7ykr7ZdX-J^r=I&ui-O$sR+Re~nR zfj2=HAkv|u4Ow>phRybEt=V+4bk4x)O_9K|LqgUBmUp{N2K6vALuXq+Gns9q&91&~ zju!<$5x&hv+y~L3*xS>2P5DYcyZ%ytHh668eA$+C)o7S_yG&o9-hoKwVE*Cav6tXl z|1+vRUNQ%$X${RX7sFIjdoHyxI5s4x6CUo zE)xTGELH?}k|RP7K7Z`Hj+sgjr&lS~w_9oW;o<$+V3|vZs`!gC`4FqwF8P1Ud;usI zYSu0 zNHM|nbseOO4V+W3c)^}{NbCvt=b%K`PHNoH1=41YtBAwV zL*;o-1ID`YDeQWa%q;b_%Cv|>`+uL}nv6`e!sAaae!fC|31Za~0-e{DzZELYgkQch zNJ=vGx&++t+}26SmTE~&)G!w?on~K%ga-zm^9B4l;@OeF5ry?*g3gD1b0shs^|D#?By-C5h3mw<8QSEOztRNcL5 zkY)I}tsoxQb*}<&1u)D7Hc<&H@v`5&r_@YCf?yM)y@VhOB`Px4sf~B`+iTBY8d`6iih-%nuV26Kh)q`G7>AO zu)X9e40ya8v`x4LX}MEfwB+D zN^D`Dx*|Hd{tDpo9=#LY{njhWCg|zpOfC6YwyiNLi(eZ4eQHdckOCWKO4c6#rgnOY z)zYV`An8#x={b=71={oweuP-%{xr@hbLQjMp{&y4V({JwJP~o-oKudRfr9;c5z?I4 z)vgPA%{eOBwkiAHPZYFz^MNetfc%~5I&8>^J|&uWDdA%^z29yz=ItMkdK|a8a+~?8 zQhLTY$o~2(sl;w7eC~t3n@2m+kGg9Rz%4~Mh^CVe#>A|@>lm)_iF5*P#)2b}c6JGT zN9+nT##^)Q#;(Z+dbCfLS_7^2Mhk37+#MOX-j>LB5=_Uvazzb&{>eAv4eq7*(UKY_ zOO1Eqb2ED`5+&9Go&iqKN<#f&6HBuX!{Cka*UOJO67E9wwtc#^$c$~EJbHZiP48`) zi|gsC8?cRLZ!gg$sa3jeC=mxm7X_5pYuSzxPRe>I4U(bNi!~kZJs35x*=1I*<7K+RKd0y z)bdX+E?4Cz00^?8_p>(Wysb1oTLVJ1NGCFLHPyQdW#(YJaV+Z(|4jns7ClrFAg~HQ ztCkRFQj$Te2iXCSwxSCE#YsRk-+Z8}|?l9PZNlrR0)b?}bzds^9pGTLs?4o}o zOW1|p=Qn{2*U@C@p8K_r4FuoV4SVw1`-X;>0N}g?mW(5FnLePFc>a@~GO*$D6t&LJ z{RAvHf?FQzc#W3O}-#^N^JaBCx$noxh)ujA)YDxNHV+KiZA@fE22&+!q}Hw zkK_=BwPjfAj=~mb-asctB5&Mul^sgwupyD;MNd6eSFi-~F>M$LTZ23}gm@gn9uIEi$ z3WZwt1T7C>*2z0y& zLv49WsAiL2()Gg$E-&zr0AuqD1TJbcGy7f%XrGhpvSl%-OW;G9DuMt-#x_v6;9K&J zBYVt@0xkAO!a153GfK3WuVt)T{pW5`=Hmw@gqV;Xe6tg{-YT1`CvM77L(wSL5HYu_ zjfDB3P&#WW?AF*N8v=Xuj(sq+Z=}3#~N_im{SPic;QeWORtYV6Yoz*2bu3X0*%6(7&ty}Zq zInR0rjfRj77>3Mn^U0kmPkSQBVDR|f#PNEq!0dr)s^uYm%Eh_g2QGqg3H)Cj0Jui~ zI@rv0;_YD%fGOP>&euf~-i^O2zH5V6qh=Gw!4PyWUQ$m^9aeo3ML z8pk@Qp=fQ-LcK-O9V}GH3slvODVP#EC3N&(-0z-FrR@e)XdF3#hBi@vDN; zv`JejGiIXl9*LiCjve(O{5y&EKTdb#R~v_}rJD@ixHI1Rn9gNd zIi1hlUYiYVz%%A~;9dksUQ={A7Ob+4eh%xD2or*5=mp^0-<+v-S_{ydglv-Q7q= z2Oee9Y@_%8j-_jBD!F%UPeOTdGlczrJSs3y(dO5?- zT;FQQR&;)J{YVbPA3ZUfMNn8-QN(=7Lj&IvgB3ReN>Vll0OdbOI5Aik@JLBYpR!{& zregEwf3N^_Gam&d(5VAO@aBsu(sRG36dQ+&1d{oD@b7b*inN}frcO`{I07XvtnS?d z=mie!m_~DjP(+6*Bq}jD54ZyW5YIp{FYt*?C5!U!s}-rM0xqkM(L=BaJWS{2r{_m` zBada3Fd*6OQ^wlIZp4jTtkmid5#ceaqG#ij49subQRqU_t`Zk-( zcWGta{VPjjx)AsP5#W9v+n4{f2of9L6SSMI3^Ft;HdUSOQtK2SBF!etCB>UM6G zOPbZ4LWzK_A}%x~P%fvw)=6~wD;vAVIXl-)Ck3s0!N{VG`(5-H`(R6e@5l8S#ZN)m zf6o#6z_N5Y%WNJS8f1*w>~Qo8c5Ci;Yj}6A090)N_!kg_rnk$D?y!p$|FvxW{`0*9 zSXTtyZP9%DM>#&@5i*KK@qiZ)-w&u?5P%>9)eWG`^6(a>09t!|n9_nUOeB`)4|rjG zQ0s?@sY|y7PA7}r`_X}~?OR?Gqek9cVZ=uB4sEkF*sFp%GZuiNylDcgKuxfQQ~|OH zX9tmcJ0d_U1R)|KzvcYb`pEg83`moL%lC&#PF?lJ_^{TnPmjBuXIvLffj`=6kfHbX3NIu8)W0`lGV5nT9YTxvtO!CadzY~Oi z&KHFIas=wm#y`gH5da=~E7&Z+K3TZm@YpcwUU*e74c$xqM=;E2!s)kMGwjJ3L3nIW z(R;vXHHNMbEMc5dPW~cd?2+$jUU^@8xU2e*Q(bKmZ@S_x)1vFc<$jucf9Or^ zjD@=c;CsNU{^hOq7oWrSPmWYt)JJ>VogrW~e?!Sm0{;00NzF$DrhyBF`PP)tEu-*)iT>@6h{QnubZis!fx4O56kR;MaI`zoC1Qc3cc&#yd zi1Zfq0andrwrhx9dm1?)N&-ExN6mXlVl@gO1^7q}Y0?PwT(}X{TL$zoSSLD(AiJi72aOFf2?si0KrXOdMa%QTA^ z@b%}I&7T0Yi-{gKaQa8Y(qE};L`W^V4boeihKu^laQFseQ!(`-W6fLCY`X%_$!%;s#qM%^Qk?la@zcfcrv5cF&ELd)8| z@`vRNxw7165i? zc-yPyPbLSb{4gtCJQN1{jvpR6rB7&oey-^g8z6RNa#BTTqIi@4^UtIgGHIks{VU}K z@>hV$PF;kW7dtt&;5FPAdSCUG1407sZTo85igfhHQVp-0MbNYJ3ZEZ$bLko{(RO@3 z)kFXnWPr>DM!7(w1=!UftT_J*f@N92|6=8?JAYi6lo0CWV(Is|=_b>Lvn^ppM&+7S zuv7gEu9B~Uyb?|Z!N z>F(7W)cUxY786=)bc-LqyrzDkPRk=vGBm~3 z0k1fywk(GU`+zyo+Ifq>axTM=@s=-IDcRP5j|?iIK#lp4nXY~*20T%Gu$4^6VIWwl z%r2Jk|Jp65+iodns3;2lqb~!;40>{qR#19T4lzpG-z#^u&s_CaD7v*p&MdOvm~~%E z^S(8u91_qrxJ5jH5M@$FkK=u{%NRx`$JK78+{jALy&Lu3ALFZF)i=@aPj(h{D*zj$ zT_tK<3^=2C3Euw8z`z~YY(Cpd`r7d$t~RKZ&vUoj6X{ezW3uB_CzkYA4;xGh!OaVg ziKVx1A;h6S)5jG;^{ffNgb*#q5{F^I*8v^}aHIh?9;A4H^o9u$1;9kWz9uLK1kd`# zt#@Zzg4PSkBIvES_i2w0^7@2~Ko`kEH57cOw{LCTb{`{eJwQHi82}^*$rx!6V$^k= z7E^lozLAyo8cu1;2QEf1Q_Oo5s7_Jf541ZuDE(uRno^cQ7RCS66e)$q!caNjE*NY% zK7yXNDmdLvOE=Dr7`g-yc%pB;(CbBHqel(ghHC&iVH6GGf{FE$HvF?i_C;T7^6TPn zS4l)LBgVetlx4O=>&eJg;D9AOmS<2mE(VJ75`m>a*8-S13!p6AV zJvx1}$+Ho7kO--wmIPG+<0l2Ty9cU#o8UAqS+9rEV3&c4y1CJkR?N0neUyNh(o4Um zgmqdg>^>QNPl)^!tn|AR*8qp>+l-5n4=0o^5IOiC`KGrkL0Wp#gdHr=3a7WmU`zgYC zuJL32>+f05bD6L^$mlZ)=36iMX&IV|Ad^^aXnex0rok_EkTC4J1Lx(WjWY)CDF<r5*pa+K z!1Zi`5>MvxX`EI)f4e)`EEy)Geo zKT0&%R{kv5E-fXU+S~xO9i31EmM#YLDeewXq5x9hDb8o1=E}YqtdSg#OFAc7?JyusrGb@Bzrr@dfbEjt-&8 z)0rd4iuBEJ?XIKcj=l+%WwwIWUWw`=!}v+gWiU-?O!kZ__6^y+>qpx_V7fEyl%rA* zWU?1jb~^$J&&g|s<_!?ik9 zBR*mr@L2#)feZ<-uZ2aB@nWaD+s5Fb`cbr~=Fz>@x3W@39i$l80pOxi;yoNuf~e$w z8o(|^A%ZdQX$P5Q#{{B&=x^YIqsAL$Fq`cg^Jd_NAS&yDG!f7rK)y2wp3pFdX)cYs z2b#6=(37tu2uOF|${I!$`yk-qEV@7Ae#Z_k%m^~Ud5}Va8Z=AV4|q=FY9T zFcE+ulk&s8(kQU}e&v)MybWJ_p5b#Kts)#dKsPn_k`(hi_Q1W_-nBcG0E9Des5k}b z(c|oNv=bq4p?+lfQaC&F!e#evZz(|Nq@*rWaKCHvghV}-J9iPP5pRcHeMr{Lib?*p zzFT(6Badqt?D35#?Onj)B7~CTK!YSOef2^S+qW*~x73eYU??yd2PeZq_N3-^Z?kE2 ze^defw=Ag#ZpL?DnVEgmK}%F7&T1o}^~Ouqfl0U^DB*%b3apRZAd~jQ)>)mokpbW@ z2K+ud(nVp7odKtNrsH9L9fO?IZLMX9mkwx3IQVRsIK$BbXH_|PJBzU4U$yRu|0Pl4 zMAOWG>1hh_3P!9eLqXmy2m`ih%A*F#(ZpfEF5TX@zHWIdyG)%}P=430OMm`=7>Krn zk=tXmVLkTd*)Ve6c`C8&hJ*Z4HZ&~UpL*9$6gDFdLX&3$??^dNCf@FQ%%zlS2=9Kp z4H9UUQj)8KVBb0ktr}&*fH?BiXl|E=!VVvHE7tt;tY7Zi&rDk`n$$OOc4Cu1fgtop zzz`SQ0u>#j(TMNskHLN|69W0!dawc$?DzU($SGKtdHIuq0q@w(r<^E`3XF0>S3aw# z`W`f6JXc8b1>e!r=}Y~>MN9}FZ`UM1^#HSs0H#IL;|ILR)!D$JO$K#@r9>c)G+Stt z;nun5$-QjPLvU>-E_+8Ga}roXJ>dx$i>g`ziwl6A)tx?q?IGa+p9;4D3??R|F2h;r zQ*=3qQ-VM)7TPiq=69YatQv}OPeG7G&d7)Cg{@RKv2ygY=#cDjXv)F9@m)KzR!A zLML%{${Ei9o@MtlShLnC;O&&36C9|z%xv^U6kw3P6kYz;crw#Ki}IvQ;^LCSxX0bJ zQ|92{_IJnzd>cwwF(;hvag8+~lQAHvKXCH0-v$_Aca3&oaI{&^X6t)dZhn5w9X*tR z!`cw?J{FIUaB}Wt4kx-Oo98OWLHfr86No}qA&3|tF+|jybyfO6c-F26mU*sRu(!hhw(|hCKiSEz)lu@&6(W%8{N zI*3&jroKxHvcK#JrNNd7CUc&Dk>nis{5hwthl}vr2#nk}1v}fGVk=cSFZx-4*@S|^rR#JeI%kI-KEO&mam ze!x9&lb+c$0^8J~Lw=b}3{IiCRgx1FQ!Wt>)D5^*!2Q43R6#otIKxWj3>ibumt~Ez zd2bYi!sU@EwtA0(YOCYEVR*|k!FY)QEMaB}8QOcV6yK>Bjtg{Bh!aYIL?>_|f!u)x z0r~#M!8@3cfq<3C=6uEd@_1q-%drpf^}w9xJ*GcWT7L1`ErA;N=@UVPc}{lsHG)=M zvUz-;`QCMDsnY?|eM^2)2^&(Wy?9nsM?nA$asbIk84BRcoomnLYw2YdPHtDMoWTRt zP#R!~@|fZ9-<(4i$s79EX!FO;Y6lcqJVaCQ>-UA$dVw#e(##qH}K?ypocc789c zogK^g&u+|I{Vi*qob~lT+FLSgtH7#gcH0%ERUXP*6`*cKhJu?&oY7&_WPaz zjSWAk*_*Z5x2BN}L&b#qetd{J!hhC1s>pkBUU)qpY!TnOpBFlHXjVEd(0{=>_23%b zUU{81Ty$?3(E=g%vvY2ID@=7Y)IYAQWj1gY+y>t1!TN=<=cR~Ow+i7-;vK^d%IP&e z=%-4UqG&Awy|*!hMwNdY6=Q!{-u#MmjQ7q$Qfbka-?i`OQD9zDA>KFv+;PyYC|qsF{(wyb_5I=M(wzU;sx9zk8Hjpf@#qOy(S8Kvj3tA%yd zV1ZyD+~IXfcH9^iSUak=Z9e@0U(T3yujWs_8tMO|JgVu;QW-I4@>{0Y^}D2~F7+mF zuq;ERwq540t}UK^o8mfBFho*|Lhx3EFaN9`7prcrFu9*vW?h*3r@wtTcJ-q_qJK5z zNYYrUDgU8-q{EW9@KH#b!FzQ1s92;x(jhG*bJU^`$Fr)wMs2*aP^MJ(o_O!d=fO=K znfC306OtB#k-@a84%w;|MHZQ+6{5VQxNVJ07<%1SottmUtF}hXo)gu}3w@6XzIg^Z zN6|ubK#=XnJH5}GD5YPrN^wXW&qpQKcNj6uVM82v=Tqq@{ayNDOux_P~FH4UeG6l`jn8*1rShm~(m$H<4 zWp&K9%A@_h__O(Gn1z^)YM|7N$lERd4fSP#`trcVQQr89vp72<6?lRka#TE6);&Go zEL_`%8GHg_3xp}*PGvNLa#|-Lc|*VIC^o&^WC=aYIPlG6X1qwfPK~`HHvzk%NhG*o z6=`pyp0jL-)vSlr>}!GhI}@D~aYxVic8T!>n3@P}ncZxN+Pz;%4O5H7T}x)Zirt?GIyeZh(tjH0Gqt(Z8~! zhG=44!D6gBx_O!R4ZH1Z;V;ebBi27ZNJX>Q$Q7u}y>sm!J~;@7&}tf{Y;PFd%=+Zc zq{RK*w%YEJ^2UpFQ2L|sV0g20b38UM{zYnPUFD-_J*z?|V-9!o<*H3IUdcmCt0~ihSG?GhMFt#Z%I+s%sO}#57Q%lRm1~GK5(h(Adq%H}1na zbL=VtaZ2$tv5A&6;V`#PFvZ5c_*SB@x7o0LnBvKu#<*5UZv!*=psLg#OvUiUkGcJ{ zV;>U!p8x&ZNt_VYLw|gC57vDY!ro*_vzXwN#Z?+N_E_OxYSoJR4}vb<)XkVMzH2;Z z*pEKDn9_OT<9cSfR6${`d+h_-VrR4c!4#%gB@5Aqn{-~sX>?viZ7{_L`UZl~$^pF( zWT;2q(m$F$NFAH9q=8txFikkOo_-aW;$uOh7&P6z^Bb zZ(Xa<3B*^1%F(Id-yKzJMGX-B)b{r)e`f^rDUqS$Y3cfL>v-ap#z#4Jd>JMT*@m32 zZ126YT{e%g8rUO_ZG#opknlQjR1SF4it8RE9y899Se$!*97bxnsG=4Vk?zNkW&H9t zHIIz_)k&&Lh?LC6EyzoCRpAL%?eA8((C2~=vsLF}FY>%&Xn383d#F~~pm`u#h<*_M zn4)2}VUKA`>?c1*O2u3x-!&)W!7m*hjm2-C8*x zRta~+K5w#Kj8OMiYl8?jtclh94v|s9{?+fh1<~Y6VB)@L$(e>#i8T4`>1ap z(C<2}@iOM4AF&O07D2}!74r#}EIkKP=2qy$o>t1EGNeNAj2<=lL|)YU zX8xX+XPS)M_%P^Mw?`aycc_Zp!4pp?qd@TibpM)TQ5w6m#YV^rZ}mn$xH7KM6EC{+ z0c2=xdy08b!R%|Mxs)uas)MRpwa>My2fhO}gP%=xEfOcfB=cOc(eJv$km%T5ca|%| z7n9y-mg^1Gv=)}MRxOAo?1a=B2S8lU>A5hDmkpMMR)!GsI3?>5?m!85EM?f(EZ&TpJzeDoXA51V4(xp=e<|&wvZ|3? zP1Z7qutsSwCyYX8U)amyA}8~a&C47#H*`EH@SRm-sx8ggs90jU>8R?Q!Zu?+bt#XP z)SiX)m?rXG#Hd)8tu6e6SDCg7^05VCgZk&X>mVZLgJ|LOghbDQ)9ziSqJ(kWHUA;Q zB9PppyPbPxYO2#%Wl>Qpj|sBTa+e9onYPv(ZR%hy6}V9eXR+h`)m4XgofFxAZu&G> zPp~tTs4kG6MEbC%FaPW&xjjtcDuo9iY*^0alff23*Mu--h6=DOqltg*p4rE&7UFy`<8I*H28y zS+;#0!@0Zc`QpGBQDu?REQ{Y>+`Dcp%?^%~(UQjg$an^GG4FEEL3rXtFe^x7cfb0% zA>nru9nSZK|F!gZlT2r^sN7hgX&Ss6u|X=mASHwU(o1wG-qbk|6`r4X$T|2o^ywNu z)Y4ekq}zTTzpx3`?V0$AncCj+_mFqY#4mXdMPvbsK$IR=(&ov*44D8t|H{2q7=wEl zB5X9VP06PZTe73`As)smUyNM1okn?7RDL3SAZ9|s0nrSOMJi!^B)d@3!(L+xnr7oh zFRbP+l~`_lvjz*yW1D6HeOdHx66+1olO~)&y^O!7X2^B(ds9yRm;IrccbQ1JG?DCA z_n~%~ZnU)$eTXhz-lb^os*;+x7u-Zg?hO|uVLy#Yj5-@%`)w$LM?lydcYrJEIrg%f z@K9ar-}%#C+Dkm_AG2{?ygBX&v=u;U)$MZ_*r+A@p~%{>5~v=(f)$DQtFbu80XZro3}3J zlXi|CbcZ!u~#c5^w~+lj(J;f@DXjf@DW(Lj}%yCI#li__L=Ep?Kgc zHbttIDBwFddC~B^s74i~tyLwXW^&zgSKzhuZ z=A!!JZ<)IwNIysR_`g?~>yiV5N$~&137zSq?^Rowy~E&|6~;GqwtsLKY~6!1eoTo> zv5Bi)q?A9yqT^y;v=rRkXb;?x;8C&Dp0!EgRzY?+R#8q{p5%O#Q?=ks`pU!Da2}i9 z@-H?$s__Bbd;Ed5V(X)4TmFPlL)7G~aYgP`@G&LD{>2;S>#Zn$oKSNC{Rb(w2r&y9 zb4vu81>vG7V<22t6ZeyM+m)$PX~+dWbErc}HFBiyB2M=`!y0emiV|64aph?=V)pHC z&(UJoi-lC@fSbOJPL=IXRWL)jQK{|D*{)(VX_%S0z3D{@z0bZl@gU(fZaE_kkYi^tc>>9 zc!8`+I!cm}3+#Ssqy9iew@;}hKp@dr88w;{DrwM$3*}-r_4-HPB{SWTy5K(plD}?n zBwb2rf`f#Vy^``U&)J7C_i7nSCB~hK=E!_)O?w^uS_sdftf+t3Buaw&4*Wj(>Ry}k zN;gUNkMwt*cwEXzi{=+lE|i09-U}V|472`T=n$uPukwgg*Zx_W+d8G?^Kmd4vB^jq zc`qz|?qA=#IEMFsCT@DgyK}2bV_Q;{zKgZG<^sQWaObR~d{BSDAn|XU-q>@Jk109N zdfIh3UK{$G2agc?TotNHS8vpL5*2+h+M~V~;CQDqn4H&%D$`gQS#VVLV|U5AQff;> zZ}$29M45`ngz^uaqqxbGjiXE8QpNq|X)_Ll@&2HQ*P#<}{e4~=BVYM?`SGVpXPR5@ z^pNi0+9435caDw3Ieqw3#R74noAUGUHZ)F-ui^+u_!Z^P&zCHw!L4c3OiqQ-ZJhQ@ zmv~s$JBezJ)04tE9LmV&ZD-`o#>F*pT`E?buWc{S{}dkcC>skkce|>F4*Ti13bqfZ zhc`zN*3@%@;mC?KG#VNL67?cnSIa`7Bfym*q-ZkavB*vPE zgyF;V+~PA%n1NdLlBo^97dGM5#K!Fcy*#WxuIexjNrA=@-xfi`e#n*2wB^2-BQChGmYX^7Yz;+?= zM7Lc3kJ-LCQZPP4!kq{Aq2{JKggb=PrO#~QyHuD$*6s>Ozowno8Q_B%3qCfflWav2wjtVQRvjOEgm&7O{SfLa7`Yl@{@bh zFJoVnc3-1sGo%p>2evkd#7>1PpH{mA4ZYaL9nzK_LPD;d_Ufn+}}tD!A@`1zHUu#!9Hb8{bSHgQv_gsuMY zC{kJC`4LTGSB#GiH=g*bv9?EJh4z_kmf!nX*`|O%U0`jBs z3J?2wG-8aEu@=wYb6O5b$G#ghuiJ@TM}y8pZ7Vg*WN~uy(-GX zQEiB=ogAC*u75b66npL<=6O`wYxJ9u;L|&pqSgI1aRX^=lVnH~;)OWZ&rQ_UypOuH zjeC;Z!Nu=*A-TqHAA+7g3*n?xc%9ZdU>Fe1CjX=IZ)@lEQ6+S7ekZ}328!jI)y*rk z#PEIEgs$}Cjc%cn0#S8Ce#o|fV;)jMkbVUpWjv+n9Plv_tdIL6ONWWFPw%(_M%wx@UK8r}s{mJN_ zA*M{`+WP42we0qFw1fV;i(W$x(yijQRkx)ZHv7wV_F110?i{{{fO>`81_&4|h2X3B zJIiu^uXqWi;!EA%=UG!7s851NQGaS2G__h0K&Qo?`-fuQ{7DeY@v|0ZVN)-%#~pKU9A(xj5;I0FHTcz81&$vMhCc-OF!?nOIRr zd;+y3nU@x#rvTExNvWo&%#xNPEBzKf;%ld2ulrk*#d+UVOB}EKrYy@vEzQ|+J>&{N#hBqhjBMQxQbop zI9cB?kBi1pwR*_UTqpI@RovC5YOX3kRlF_G2Qqj1$2tL~xM5_+58c1ar36M0A4F?E zkY(!(&ZmFXg<0hi;TnkA7R=-)g307V8#-kC^d@#@L+{fg>l4wtuh!iDXqP2+E^u;N90cn}M zkedJa9rx7EYGU9X+*RUyuiH=>TSpg38u%W(PzE@e0}Z6&X!eWQ4k|he{rtZ^>SSOeOeM!~+^H#|?-UF&C?3hVT_uOfplcMPLhWDf8GhYa>Yk-4=0(DRu_wP%-f{o3OiTd?RORVS-aB1% z_d@!b8*^P9ZLz z3MdN08bK4!xctr{&_xvT`}lZUUw2w5iVw7~&+Vj+WasT48P-;ja?(r21`w|_MzXh! zy6$)bI_8T41VVh61#l;!ardR#U3LYNqIxp8f5FH^*gqr50^8 z^!qa-*<-#?>Z;28v8tMz;VT$`Ka$2C?KTfuleklSV}i21{WC)}c=Lb~j4Al3Yy!9f zH29Fes?7n|psLN^S-sh|IsUZTjliz<&IMxTABn^iXUKKWwK`F|c3NxQHLr>0HMyhx zIg7loAT5LFD-T?Rn=dLx-&Kl&>}e8tRAaA!yFKJd(K%OF zKml|*O@7QylzM{Q6$-dXa9)X)5&SNgJehn&CAlj_v;1(RgL{#>r)p%>)@F{9`)P|D2hJjG`qC5 zoy3M|q6~MVsgpe`&)+3!TPr1={0g&`PtxXC{>M~jE3-StzxU>5Q(mCQwgr@0syc6h zH@osm0p#3iyT&n*u=kVDyL=`IP60c6oc4zuj(PX+{PcGmL)H~9iKic>hiav}?&Z|K zeY^uFy&TNQSNXh#+IW8?*BoM&zBHu34Iy@!+}NR%M`fsDcNJ2e^Lg{xe|iVg@G<+a%M}~lv z0KA=%HOM>L!AacWw~hO7hcur6e`kd*C5b;naex2mOWudDVZd*4(6QVi2mR>eg2fpC ztv;$BSawc+zmGE0SV6r6s<2g6Pvkjc?(%A@N=={?e4`cXGl|5$SJUHzefp`F zzlU9b`zS0v2uqioxRRP=wY3dBdWPRM%I$BexGF3Nmovh}QdRumPV9Y_V>-GTf^&&P z3&-iI_awy;Y> z#GAkTQ1{Y!2aGWk(g+#HD<4=o!)6NUE8`QWu9eSHO{0?^J1VD)_s)HRRX=rb*E#pYQJ>(|m3G3*_u0*Sy+8PUSpg~InX`mnGn3(QqbtBS z+$cS(9scoJt^980$VSvM!$KAhT1|7*Jbv`fX@v4gr*8nJG<|4phqh>mH^H^umednP z5rAg`Q_`*S#~u}mMSjJ}9pXho<{NIyJ>KdB86CN`Qe~~FQ}-BFLcmKev4bCBVm>Su zz2C=l5kfbIlB91?!oLpJ=M(Ftw|A0FDv&8pF{g-ZgQUG zr1!k_eWZ3eo1LNCW_>w3V6&d?~9M zFK!dpn`320t8)P(*cBVc6lGPkv+~ZLM4931nTr|{06-oJEjWwkSvtSv$V@W_8=t=p zp;|}(et&zMoL|`(K3-pvOgc2k7E{!>_mfsH=PoNd=dzIIa;sQKt)W6TcbWb%;r-}F zzK)#FYh|qo4RwY@4VOxCL&KEAO=TJOzE2A}RJ540v2g=dVnoR4m z*T=UEj{5f}OtJa7o8j|p#Wo^HyuTdmV#D|}N)^BB`5|(RMABr7djj3GkqLN$Ap-~Yf7O2BzK}HIgdMwok6$o5sz0NwaoT^}Zm4{9zEUn4l?yn<`nsMR# zMn5E=2!z-RUxYqYKk6vMP)kf!s0IpUckssk<;a(WSLp38knIncSwD~j@Hf2| z63GXPbG#eZkS4TfWpzit;)$NrD_4mP9%u+^x7RHw9#rwvk*ChNL}?chj4phLZ3%e=_sxb;|IUEX6R%xkv@vN^HOJ@iWD1S4d2 z6}0+!#~xTm&8N2R@P4ijJ*`vICn8HWQ5ch|2M@ErV;AokE3YtgmEpQfD$EY9I(O$j z*U`Wa^-AEjGj^D_7}NMlKAj4-KF&T_Q;S4VdxNgl05NGz0)6?ic>>s&2O}Jgo|PBfcd|fIpn|{EOGe4;XGh{-^R|9rhmfR(iDOvT$l!9X51W z?Yvn^XIiNWBXfsa^TzaoT|>ICmQ=%Jd7|l=*hY<^#V_dC|PmpIItFj|70DkVLnZO0pagYe#60cv5uv zz5HCO3O=ku_q=dSCwaw^p}xKOGiqNw(K>Nn2-*{Ezbt$r=?e2d(f73pBm0#9zTpDZ z+@-;j=Z8~pWz}$Yk%DisHMu8PU$d$@heiIovD$>JwV9F!7I2+_{TV`m(0}PnYv=sS zJgW=IB;|E`P@+WP=fU=F$h{_qzr8tzl^GTYs0>nE@3j-zJMJ{aedCqn*I+3R%!yoO zajf5{!H4ObZ8g2GXG$peQr26LtMLUK1}LJqzVQC1pC*`AA1K!QA&sMcuBsbjIxvVF>kP)5 znM|Ew7%OMw3aDocdPuS-kn>hWyGF#!O2=i^XS~IJKSR=L*TKb7A;CXe1;E<$P>HsCkJH`sagI6q+|chNKL1zZUk ztmt2M3aAvXf)rLK8xd*0rMoX?9_I5h#Tp+}@QY~fv&oEe^+o}LL$_( zl-1Ofk;rQZHC+vDU6h&<0-=jQ_|!*<{GS8fzBfJH!v6mQGAr8U-~iL5ix!3?jC0KY E0Lrq4#sB~S literal 0 HcmV?d00001 diff --git a/qbittorrent/logo.png b/qbittorrent/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..6087a9eafcee712b9af69c8f5b059d719e39446f GIT binary patch literal 57069 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 E0Lrq4#sB~S literal 0 HcmV?d00001 diff --git a/qbittorrent/rootfs/etc/cont-init.d/00-banner.sh b/qbittorrent/rootfs/etc/cont-init.d/00-banner.sh new file mode 100644 index 0000000..71b1a4e --- /dev/null +++ b/qbittorrent/rootfs/etc/cont-init.d/00-banner.sh @@ -0,0 +1,39 @@ +#!/usr/bin/with-contenv bashio +# ============================================================================== +# Home Assistant Community Add-on: Base Images +# Displays a simple add-on banner on startup +# ============================================================================== +if bashio::supervisor.ping; then + bashio::log.blue \ + '-----------------------------------------------------------' + bashio::log.blue " Add-on: $(bashio::addon.name)" + bashio::log.blue " $(bashio::addon.description)" + bashio::log.blue \ + '-----------------------------------------------------------' + + bashio::log.blue " Add-on version: $(bashio::addon.version)" + if bashio::var.true "$(bashio::addon.update_available)"; then + bashio::log.magenta ' There is an update available for this add-on!' + bashio::log.magenta \ + " Latest add-on version: $(bashio::addon.version_latest)" + bashio::log.magenta ' Please consider upgrading as soon as possible.' + else + bashio::log.green ' You are running the latest version of this add-on.' + fi + + bashio::log.blue " System: $(bashio::info.operating_system)" \ + " ($(bashio::info.arch) / $(bashio::info.machine))" + bashio::log.blue " Home Assistant Core: $(bashio::info.homeassistant)" + bashio::log.blue " Home Assistant Supervisor: $(bashio::info.supervisor)" + + bashio::log.blue \ + '-----------------------------------------------------------' + bashio::log.blue \ + ' Please, share the above information when looking for help' + bashio::log.blue \ + ' or support in, e.g., GitHub, forums or the Discord chat.' + bashio::log.green \ + ' https://github.com/alexbelgium/hassio-addons' + bashio::log.blue \ + '-----------------------------------------------------------' +fi diff --git a/qbittorrent/rootfs/etc/cont-init.d/30-nginx.sh b/qbittorrent/rootfs/etc/cont-init.d/30-nginx.sh new file mode 100644 index 0000000..598887c --- /dev/null +++ b/qbittorrent/rootfs/etc/cont-init.d/30-nginx.sh @@ -0,0 +1,38 @@ +#!/usr/bin/with-contenv bashio + +################# +# NGINX SETTING # +################# + +declare admin_port +declare qbittorrent_protocol=http + +# Generate Ingress configuration +if bashio::config.true 'ssl'; then +qbittorrent_protocol=https +fi + +bashio::var.json \ + interface "$(bashio::addon.ip_address)" \ + port "^$(bashio::addon.ingress_port)" \ + protocol "${qbittorrent_protocol}" \ + certfile "$(bashio::config 'certfile')" \ + keyfile "$(bashio::config 'keyfile')" \ + ssl "^$(bashio::config 'ssl')" \ + | tempio \ + -template /etc/nginx/templates/ingress.gtpl \ + -out /etc/nginx/servers/ingress.conf + +###################### +# VUETORRENT INSTALL # +###################### + +LATEST_RELEASE=$(curl -s -L https://api.github.com/repos/wdaan/vuetorrent/releases/latest \ + | grep "browser_download_url.*zip" \ + | cut -d : -f 2,3 \ + | tr -d \" \ + | xargs) + +curl -s -S -O -J -L $LATEST_RELEASE +unzip -o vuetorrent.zip -d / >/dev/null +rm /vuetorrent.zip >/dev/null diff --git a/qbittorrent/rootfs/etc/cont-init.d/90-dns_set_1.1.sh b/qbittorrent/rootfs/etc/cont-init.d/90-dns_set_1.1.sh new file mode 100644 index 0000000..dd80ef4 --- /dev/null +++ b/qbittorrent/rootfs/etc/cont-init.d/90-dns_set_1.1.sh @@ -0,0 +1,28 @@ +#!/usr/bin/with-contenv bashio + +############### +# DNS SETTING # +############### + +# Avoid usage of local dns such as adguard home or pihole\n" + +if bashio::config.has_value 'DNS_server'; then + # Define variables + DNSSERVER=$(bashio::config 'DNS_server') + DNS="" + DNSLIST="" + + # Get DNS servers + for server in ${DNSSERVER//,/ } # Separate comma separated values + do + DNS="${DNS}nameserver $server\n" + DNSLIST="$server $DNSLIST" + done + + # Write resolv.conf + printf "${DNS}" > /etc/resolv.conf + chmod 644 /etc/resolv.conf + bashio::log.info "DNS SERVERS set to $DNSLIST" +else + bashio::log.info "DNS Servers option empty. Using default router (or HA) dns servers." +fi diff --git a/qbittorrent/rootfs/etc/cont-init.d/91-qbittorrent_configuration.sh b/qbittorrent/rootfs/etc/cont-init.d/91-qbittorrent_configuration.sh new file mode 100644 index 0000000..21eaa51 --- /dev/null +++ b/qbittorrent/rootfs/etc/cont-init.d/91-qbittorrent_configuration.sh @@ -0,0 +1,128 @@ +#!/usr/bin/with-contenv bashio + +########## +# INIT # +########## + +# Define preferences line +cd /config/qBittorrent/ +LINE=$(sed -n '/Preferences/=' qBittorrent.conf) +LINE=$((LINE + 1)) + +################## +# Default folder # +################## + +if bashio::config.has_value 'SavePath'; then + DOWNLOADS=$(bashio::config 'SavePath') + sed -i '/SavePath/d' qBittorrent.conf + sed -i "$LINE i\Downloads\\\SavePath=$DOWNLOADS" qBittorrent.conf + mkdir -p $DOWNLOADS || true + chown -R abc:abc $DOWNLOADS || bashio::log.info "Error, please check default save folder configuration in addon" + bashio::log.info "Downloads can be found in $DOWNLOADS" + +else + mkdir -p /share/qBittorrent || true + chown -R abc:abc /share/qBittorrent + +fi + +################ +# Correct Port # +################ + +sed -i '/PortRangeMin/d' qBittorrent.conf +sed -i "$LINE i\Connection\\\PortRangeMin=6881" qBittorrent.conf + +################ +# SSL CONFIG # +################ + +# Clean data +sed -i '/HTTPS/d' qBittorrent.conf + +bashio::config.require.ssl +if bashio::config.true 'ssl'; then + bashio::log.info "ssl enabled. If webui don't work, disable ssl or check your certificate paths" + #set variables + CERTFILE=$(bashio::config 'certfile') + KEYFILE=$(bashio::config 'keyfile') + sed -i "$LINE i\WebUI\\\HTTPS\\\Enabled=True" qBittorrent.conf + sed -i "$LINE i\WebUI\\\HTTPS\\\CertificatePath=/ssl/$CERTFILE" qBittorrent.conf + sed -i "$LINE i\WebUI\\\HTTPS\\\KeyPath=/ssl/$KEYFILE" qBittorrent.conf +fi + +################ +# WHITELIST # +################ + +cd /config/qBittorrent/ +if bashio::config.has_value 'whitelist'; then + WHITELIST=$(bashio::config 'whitelist') + #clean data + sed -i '/AuthSubnetWhitelist/d' qBittorrent.conf + sed -i "$LINE i\WebUI\\\AuthSubnetWhitelistEnabled=true" qBittorrent.conf + sed -i "$LINE i\WebUI\\\AuthSubnetWhitelist=$WHITELIST" qBittorrent.conf + bashio::log.info "Whitelisted subsets will not require a password : $WHITELIST" +fi + +############### +# USERNAME # +############### + +cd /config/qBittorrent/ +if bashio::config.has_value 'Username'; then + USERNAME=$(bashio::config 'Username') + #clean data + sed -i '/WebUI\\\Username/d' qBittorrent.conf + #add data + sed -i "$LINE i\WebUI\\\Username=$USERNAME" qBittorrent.conf + bashio::log.info "WEBUI username set to $USERNAME" +fi + +################ +# Alternate UI # +################ + +# Clean data +sed -i '/AlternativeUIEnabled/d' qBittorrent.conf +sed -i '/RootFolder/d' qBittorrent.conf +rm -f -r /webui +mkdir -p /webui +chown abc:abc /webui + +if bashio::config.has_value 'customUI'; then + ### Variables + CUSTOMUI=$(bashio::config 'customUI') + bashio::log.info "Alternate UI enabled : $CUSTOMUI. If webui don't work, disable this option" + + ### Download WebUI + case $CUSTOMUI in + "vuetorrent") + curl -s -S -J -L -o /webui/release.zip $(curl -s https://api.github.com/repos/WDaan/VueTorrent/releases/latest | grep -o "http.*vuetorrent.zip") >/dev/null + ;; + + "qbit-matUI") + curl -s -S -J -L -o /webui/release.zip $(curl -s https://api.github.com/repos/bill-ahmed/qbit-matUI/releases/latest | grep -o "http.*Unix.*.zip") >/dev/null + ;; + + "qb-web") + curl -s -S -J -L -o /webui/release.zip $(curl -s https://api.github.com/repos/CzBiX/qb-web/releases | grep -o "http.*qb-web-.*zip") >/dev/null + ;; + esac + + ### Install WebUI + mkdir -p /webui/$CUSTOMUI + unzip -q /webui/release.zip -d /webui/$CUSTOMUI + rm /webui/*.zip + CUSTOMUIDIR="$(dirname "$(find /webui/$CUSTOMUI -iname "public" -type d)")" + sed -i "$LINE i\WebUI\\\AlternativeUIEnabled=true" /config/qBittorrent/qBittorrent.conf + sed -i "$LINE i\WebUI\\\RootFolder=$CUSTOMUIDIR" /config/qBittorrent/qBittorrent.conf +fi + +########## +# CLOSE # +########## + +bashio::log.info "Default username/password : admin/adminadmin" +bashio::log.info "Configuration can be found in /config/qBittorrent" diff --git a/qbittorrent/rootfs/etc/cont-init.d/92-smb_mounts_v1.3.sh b/qbittorrent/rootfs/etc/cont-init.d/92-smb_mounts_v1.3.sh new file mode 100644 index 0000000..2e5d11a --- /dev/null +++ b/qbittorrent/rootfs/etc/cont-init.d/92-smb_mounts_v1.3.sh @@ -0,0 +1,62 @@ +#!/usr/bin/with-contenv bashio + +#################### +# MOUNT SMB SHARES # +#################### +if bashio::config.has_value 'networkdisks'; then + # Mount CIFS Share if configured and if Protection Mode is active + bashio::log.info 'Mounting smb share(s)...' + + # Define variables + MOREDISKS=$(bashio::config 'networkdisks') + CIFS_USERNAME=$(bashio::config 'cifsusername') + CIFS_PASSWORD=$(bashio::config 'cifspassword') + MOUNTED=false + SMBVERS="" + SECVERS="" + + if bashio::config.has_value 'cifsdomain'; then + DOMAIN=",domain=$(bashio::config 'cifsdomain')" + else + DOMAIN="" + fi + + # Mounting disks + for disk in ${MOREDISKS//,/ } # Separate comma separated values + do + # Clean name of network share + disk=$(echo $disk | sed "s,/$,,") # Remove / at end of name + diskname=${disk//\\//} #replace \ with / + diskname=${diskname##*/} # Get only last part of the name + # Prepare mount point + mkdir -p /mnt/$diskname + chown -R root:root /mnt/$diskname + + #Tries to mount with default options + mount -t cifs -o rw,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$DOMAIN $disk /mnt/$diskname 2>ERRORCODE && MOUNTED=true || MOUNTED=false + + # if Fail test different smb and sec versions + if [ $MOUNTED = false ]; then + for SMBVERS in ",vers=3" ",vers=1.0" ",vers=2.1" ",vers=3.0" ",nodfs" ",uid=0,gid=0,forceuid,forcegid" ",noforceuid,noforcegid" ",${DOMAIN}" + do + mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS $disk /mnt/$diskname 2>/dev/null && MOUNTED=true && break || MOUNTED=false + for SECVERS in ",sec=ntlmi" ",sec=ntlmv2" ",sec=ntlmv2i" ",sec=ntlmssp" ",sec=ntlmsspi" ",sec=ntlm" ",sec=krb5i" ",sec=krb5" + do + mount -t cifs -o rw,iocharset=utf8,file_mode=0777,dir_mode=0777,username=$CIFS_USERNAME,password=${CIFS_PASSWORD}$SMBVERS$SECVERS $disk /mnt/$disk name 2>/dev/null && MOUNTED=true && break 2 && break || MOUNTED=false + done + done + fi + + # Messages + if [ $MOUNTED = true ]; then + #Test write permissions + touch /mnt/$diskname/testaze && rm /mnt/$diskname/testaze && bashio::log.info "... $disk successfully mounted to /mnt/$diskname with options $SMBVERS$SECVERS" || bashio::log.fatal "Disk is mounted, however unable to write in the shared disk. Please check UID/GID for permissions, and if the share is rw" + else + # message if still fail + bashio::log.fatal "Unable to mount $disk to /mnt/$diskname with username $CIFS_USERNAME, $CIFS_PASSWORD. Please check your remote share path, username, password, domain, try putting 0 in UID and GID" # Mount share + bashio::log.fatal "Error read : $( /etc/openvpn/credentials + openvpn_password=$(bashio::config 'openvpn_password') + echo "${openvpn_password}" >> /etc/openvpn/credentials + sed -i 's/auth-user-pass.*/auth-user-pass \/etc\/openvpn\/credentials/g' /etc/openvpn/config.ovpn + + # Permissions + chmod 600 /etc/openvpn/credentials + chmod 755 /etc/openvpn/up.sh + chmod 755 /etc/openvpn/down.sh + chmod 755 /etc/openvpn/up-qbittorrent.sh + chmod +x /etc/openvpn/up.sh + chmod +x /etc/openvpn/up-qbittorrent.sh + + bashio::log.info "openvpn correctly set, qbittorrent will run tunnelled through openvpn" + + ######################### + # CONFIGURE QBITTORRENT # + ######################### + + QBT_CONFIG_FILE="/config/qBittorrent/qBittorrent.conf" + # Define preferences line + cd /config/qBittorrent/ + LINE=$(sed -n '/Preferences/=' qBittorrent.conf) + LINE=$((LINE + 1)) + + # If qBittorrent.conf exists + if [ -f "$QBT_CONFIG_FILE" ]; then + # Remove previous line and bind tun0 + sed -i '/Interface/d' qBittorrent.conf + # sed -i '/PortRangeMin/d' qBittorrent.conf + # Bind tun0 + # sed -i "$LINE i\Connection\\\Interface=tun0" qBittorrent.conf + # sed -i "$LINE i\Connection\\\InterfaceName=tun0" qBittorrent.conf + else + bashio::log.error "qBittorrent config file doesn't exist, openvpn must be added manually to qbittorrent options " + exit 1 + fi + + ##################### + # ALTERNATIVE MODE # + ##################### + + if bashio::config.true 'openvpn_alternative_mode'; then + # Remove previous line and bind tun0 + sed -i '/Interface/d' qBittorrent.conf + # Bind tun0 + sed -i "$LINE i\Connection\\\Interface=tun0" qBittorrent.conf + sed -i "$LINE i\Connection\\\InterfaceName=tun0" qBittorrent.conf + # Modify ovpn config + echo "route-nopull" >> /etc/openvpn/config.ovpn + fi + +else + + ################## + # REMOVE OPENVPN # + ################## + # Ensure no redirection by removing the direction tag + cd /config/qBittorrent/ + sed -i '/Interface/d' qBittorrent.conf + bashio::log.info "Direct connection without VPN enabled" + +fi diff --git a/qbittorrent/rootfs/etc/nginx/includes/mime.types b/qbittorrent/rootfs/etc/nginx/includes/mime.types new file mode 100644 index 0000000..7c7cdef --- /dev/null +++ b/qbittorrent/rootfs/etc/nginx/includes/mime.types @@ -0,0 +1,96 @@ +types { + text/html html htm shtml; + text/css css; + text/xml xml; + image/gif gif; + image/jpeg jpeg jpg; + application/javascript js; + application/atom+xml atom; + application/rss+xml rss; + + text/mathml mml; + text/plain txt; + text/vnd.sun.j2me.app-descriptor jad; + text/vnd.wap.wml wml; + text/x-component htc; + + image/png png; + image/svg+xml svg svgz; + image/tiff tif tiff; + image/vnd.wap.wbmp wbmp; + image/webp webp; + image/x-icon ico; + image/x-jng jng; + image/x-ms-bmp bmp; + + font/woff woff; + font/woff2 woff2; + + application/java-archive jar war ear; + application/json json; + application/mac-binhex40 hqx; + application/msword doc; + application/pdf pdf; + application/postscript ps eps ai; + application/rtf rtf; + application/vnd.apple.mpegurl m3u8; + application/vnd.google-earth.kml+xml kml; + application/vnd.google-earth.kmz kmz; + application/vnd.ms-excel xls; + application/vnd.ms-fontobject eot; + application/vnd.ms-powerpoint ppt; + application/vnd.oasis.opendocument.graphics odg; + application/vnd.oasis.opendocument.presentation odp; + application/vnd.oasis.opendocument.spreadsheet ods; + application/vnd.oasis.opendocument.text odt; + application/vnd.openxmlformats-officedocument.presentationml.presentation + pptx; + application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + xlsx; + application/vnd.openxmlformats-officedocument.wordprocessingml.document + docx; + application/vnd.wap.wmlc wmlc; + application/x-7z-compressed 7z; + application/x-cocoa cco; + application/x-java-archive-diff jardiff; + application/x-java-jnlp-file jnlp; + application/x-makeself run; + application/x-perl pl pm; + application/x-pilot prc pdb; + application/x-rar-compressed rar; + application/x-redhat-package-manager rpm; + application/x-sea sea; + application/x-shockwave-flash swf; + application/x-stuffit sit; + application/x-tcl tcl tk; + application/x-x509-ca-cert der pem crt; + application/x-xpinstall xpi; + application/xhtml+xml xhtml; + application/xspf+xml xspf; + application/zip zip; + + application/octet-stream bin exe dll; + application/octet-stream deb; + application/octet-stream dmg; + application/octet-stream iso img; + application/octet-stream msi msp msm; + + audio/midi mid midi kar; + audio/mpeg mp3; + audio/ogg ogg; + audio/x-m4a m4a; + audio/x-realaudio ra; + + video/3gpp 3gpp 3gp; + video/mp2t ts; + video/mp4 mp4; + video/mpeg mpeg mpg; + video/quicktime mov; + video/webm webm; + video/x-flv flv; + video/x-m4v m4v; + video/x-mng mng; + video/x-ms-asf asx asf; + video/x-ms-wmv wmv; + video/x-msvideo avi; +} diff --git a/qbittorrent/rootfs/etc/nginx/includes/proxy_params.conf b/qbittorrent/rootfs/etc/nginx/includes/proxy_params.conf new file mode 100644 index 0000000..1990d49 --- /dev/null +++ b/qbittorrent/rootfs/etc/nginx/includes/proxy_params.conf @@ -0,0 +1,15 @@ +proxy_http_version 1.1; +proxy_ignore_client_abort off; +proxy_read_timeout 86400s; +proxy_redirect off; +proxy_send_timeout 86400s; +proxy_max_temp_file_size 0; + +proxy_set_header Accept-Encoding ""; +proxy_set_header Connection $connection_upgrade; +proxy_set_header Host $http_host; +proxy_set_header Upgrade $http_upgrade; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +proxy_set_header X-Forwarded-Proto $scheme; +proxy_set_header X-NginX-Proxy true; +proxy_set_header X-Real-IP $remote_addr; diff --git a/qbittorrent/rootfs/etc/nginx/includes/resolver.conf b/qbittorrent/rootfs/etc/nginx/includes/resolver.conf new file mode 100644 index 0000000..6485af1 --- /dev/null +++ b/qbittorrent/rootfs/etc/nginx/includes/resolver.conf @@ -0,0 +1 @@ +resolver 127.0.0.11; diff --git a/qbittorrent/rootfs/etc/nginx/includes/server_params.conf b/qbittorrent/rootfs/etc/nginx/includes/server_params.conf new file mode 100644 index 0000000..09c0654 --- /dev/null +++ b/qbittorrent/rootfs/etc/nginx/includes/server_params.conf @@ -0,0 +1,6 @@ +root /dev/null; +server_name $hostname; + +add_header X-Content-Type-Options nosniff; +add_header X-XSS-Protection "1; mode=block"; +add_header X-Robots-Tag none; diff --git a/qbittorrent/rootfs/etc/nginx/includes/ssl_params.conf b/qbittorrent/rootfs/etc/nginx/includes/ssl_params.conf new file mode 100644 index 0000000..6f15005 --- /dev/null +++ b/qbittorrent/rootfs/etc/nginx/includes/ssl_params.conf @@ -0,0 +1,9 @@ +ssl_protocols TLSv1.2; +ssl_prefer_server_ciphers on; +ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA; +ssl_ecdh_curve secp384r1; +ssl_session_timeout 10m; +ssl_session_cache shared:SSL:10m; +ssl_session_tickets off; +ssl_stapling on; +ssl_stapling_verify on; diff --git a/qbittorrent/rootfs/etc/nginx/includes/upstream.conf b/qbittorrent/rootfs/etc/nginx/includes/upstream.conf new file mode 100644 index 0000000..b292326 --- /dev/null +++ b/qbittorrent/rootfs/etc/nginx/includes/upstream.conf @@ -0,0 +1,3 @@ +upstream backend { + server 127.0.0.1:8080; +} diff --git a/qbittorrent/rootfs/etc/nginx/nginx.conf b/qbittorrent/rootfs/etc/nginx/nginx.conf new file mode 100644 index 0000000..7e5bc6f --- /dev/null +++ b/qbittorrent/rootfs/etc/nginx/nginx.conf @@ -0,0 +1,56 @@ +# Run nginx in foreground. +daemon off; + +# This is run inside Docker. +user root; + +# Pid storage location. +pid /var/run/nginx.pid; + +# Set number of worker processes. +worker_processes 1; + +# Enables the use of JIT for regular expressions to speed-up their processing. +pcre_jit on; + +# Write error log to Hass.io add-on log. +error_log /proc/1/fd/1 error; + +# Load allowed environment vars +env HASSIO_TOKEN; + +# Load dynamic modules. +include /etc/nginx/modules/*.conf; + +# Max num of simultaneous connections by a worker process. +events { + worker_connections 512; +} + +http { + include /etc/nginx/includes/mime.types; + + log_format hassio '[$time_local] $status ' + '$http_x_forwarded_for($remote_addr) ' + '$request ($http_user_agent)'; + + access_log /proc/1/fd/1 hassio; + client_max_body_size 4G; + default_type application/octet-stream; + gzip on; + keepalive_timeout 65; + sendfile on; + server_tokens off; + tcp_nodelay on; + tcp_nopush on; + + map $http_upgrade $connection_upgrade { + default upgrade; + '' close; + } + + include /etc/nginx/includes/resolver.conf; + include /etc/nginx/includes/upstream.conf; + + include /etc/nginx/servers/*.conf; +} diff --git a/qbittorrent/rootfs/etc/nginx/servers/.gitkeep b/qbittorrent/rootfs/etc/nginx/servers/.gitkeep new file mode 100644 index 0000000..85ad51b --- /dev/null +++ b/qbittorrent/rootfs/etc/nginx/servers/.gitkeep @@ -0,0 +1 @@ +Without requirements or design, programming is the art of adding bugs to an empty text file. (Louis Srygley) diff --git a/qbittorrent/rootfs/etc/nginx/templates/ingress.gtpl b/qbittorrent/rootfs/etc/nginx/templates/ingress.gtpl new file mode 100644 index 0000000..f7dc63c --- /dev/null +++ b/qbittorrent/rootfs/etc/nginx/templates/ingress.gtpl @@ -0,0 +1,17 @@ +server { + listen {{ .interface }}:{{ .port }} default_server; + server_name vue.torrent; + include /etc/nginx/includes/server_params.conf; + include /etc/nginx/includes/proxy_params.conf; + + location / { + root /vuetorrent/public/; + } + + location /api { + proxy_pass {{ .protocol }}://backend; + http2_push_preload on; + client_max_body_size 10M; + } + +} diff --git a/qbittorrent/rootfs/etc/openvpn/down.sh b/qbittorrent/rootfs/etc/openvpn/down.sh new file mode 100644 index 0000000..50d463f --- /dev/null +++ b/qbittorrent/rootfs/etc/openvpn/down.sh @@ -0,0 +1,33 @@ +#!/bin/sh +# Copyright (c) 2006-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# Contributed by Roy Marples (uberlord@gentoo.org) + +# If we have a service specific script, run this now +if [ -x /etc/openvpn/"${RC_SVCNAME}"-down.sh ] ; then + /etc/openvpn/"${RC_SVCNAME}"-down.sh "$@" +fi + +# Restore resolv.conf to how it was +if [ "${PEER_DNS}" != "no" ]; then + if [ -x /sbin/resolvconf ] ; then + /sbin/resolvconf -d "${dev}" + elif [ -e /etc/resolv.conf-"${dev}".sv ] ; then + # Important that we cat instead of move incase resolv.conf is + # a symlink and not an actual file + cat /etc/resolv.conf-"${dev}".sv > /etc/resolv.conf + rm -f /etc/resolv.conf-"${dev}".sv + fi +fi + +if [ -n "${RC_SVCNAME}" ]; then + # Re-enter the init script to start any dependant services + if /etc/init.d/"${RC_SVCNAME}" --quiet status ; then + export IN_BACKGROUND=true + /etc/init.d/"${RC_SVCNAME}" --quiet stop + fi +fi + +exit 0 + +# vim: ts=4 : diff --git a/qbittorrent/rootfs/etc/openvpn/up-qbittorrent.sh b/qbittorrent/rootfs/etc/openvpn/up-qbittorrent.sh new file mode 100644 index 0000000..0462645 --- /dev/null +++ b/qbittorrent/rootfs/etc/openvpn/up-qbittorrent.sh @@ -0,0 +1,5 @@ +#!/usr/bin/with-contenv bashio + +WEBUI_PORT=${WEBUI_PORT:-8080} + +exec s6-setuidgid abc /usr/bin/qbittorrent-nox --webui-port="${WEBUI_PORT}" diff --git a/qbittorrent/rootfs/etc/openvpn/up.sh b/qbittorrent/rootfs/etc/openvpn/up.sh new file mode 100644 index 0000000..82a9bae --- /dev/null +++ b/qbittorrent/rootfs/etc/openvpn/up.sh @@ -0,0 +1,94 @@ +#!/bin/sh + +# launch qbittorrent +/etc/openvpn/up-qbittorrent.sh "${4}" & + +# Copyright (c) 2006-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# Contributed by Roy Marples (uberlord@gentoo.org) + +# Setup our resolv.conf +# Vitally important that we use the domain entry in resolv.conf so we +# can setup the nameservers are for the domain ONLY in resolvconf if +# we're using a decent dns cache/forwarder like dnsmasq and NOT nscd/libc. +# nscd/libc users will get the VPN nameservers before their other ones +# and will use the first one that responds - maybe the LAN ones? +# non resolvconf users just the the VPN resolv.conf + +# FIXME:- if we have >1 domain, then we have to use search :/ +# We need to add a flag to resolvconf to say +# "these nameservers should only be used for the listed search domains +# if other global nameservers are present on other interfaces" +# This however, will break compatibility with Debians resolvconf +# A possible workaround would be to just list multiple domain lines +# and try and let resolvconf handle it + +if [ "${PEER_DNS}" != "no" ]; then + NS= + DOMAIN= + SEARCH= + i=1 + while true ; do + eval opt=\$foreign_option_${i} + [ -z "${opt}" ] && break + if [ "${opt}" != "${opt#dhcp-option DOMAIN *}" ] ; then + if [ -z "${DOMAIN}" ] ; then + DOMAIN="${opt#dhcp-option DOMAIN *}" + else + SEARCH="${SEARCH}${SEARCH:+ }${opt#dhcp-option DOMAIN *}" + fi + elif [ "${opt}" != "${opt#dhcp-option DNS *}" ] ; then + NS="${NS}nameserver ${opt#dhcp-option DNS *}\n" + fi + i=$((${i} + 1)) + done + + if [ -n "${NS}" ] ; then + DNS="# Generated by openvpn for interface ${dev}\n" + if [ -n "${SEARCH}" ] ; then + DNS="${DNS}search ${DOMAIN} ${SEARCH}\n" + elif [ -n "${DOMAIN}" ]; then + DNS="${DNS}domain ${DOMAIN}\n" + fi + DNS="${DNS}${NS}" + if [ -x /sbin/resolvconf ] ; then + printf "${DNS}" | /sbin/resolvconf -a "${dev}" + else + # Preserve the existing resolv.conf + if [ -e /etc/resolv.conf ] ; then + cp /etc/resolv.conf /etc/resolv.conf-"${dev}".sv + fi + printf "${DNS}" > /etc/resolv.conf + chmod 644 /etc/resolv.conf + fi + fi +fi + +# Below section is Gentoo specific +# Quick summary - our init scripts are re-entrant and set the RC_SVCNAME env var +# as we could have >1 openvpn service + +if [ -n "${RC_SVCNAME}" ]; then + # If we have a service specific script, run this now + if [ -x /etc/openvpn/"${RC_SVCNAME}"-up.sh ] ; then + /etc/openvpn/"${RC_SVCNAME}"-up.sh "$@" + fi + + # Re-enter the init script to start any dependant services + if ! /etc/init.d/"${RC_SVCNAME}" --quiet status ; then + export IN_BACKGROUND=true + /etc/init.d/${RC_SVCNAME} --quiet start + fi +fi + +############### +# ALLOW WEBUI # +############### + +/usr/sbin/ip route add 10.0.0.0/8 via 172.30.32.1 +/usr/sbin/ip route add 192.168.0.0/16 via 172.30.32.1 +/usr/sbin/ip route add 172.16.0.0/12 via 172.30.32.1 + +exit 0 + +# vim: ts=4 : diff --git a/qbittorrent/rootfs/etc/services.d/nginx/finish b/qbittorrent/rootfs/etc/services.d/nginx/finish new file mode 100644 index 0000000..4442401 --- /dev/null +++ b/qbittorrent/rootfs/etc/services.d/nginx/finish @@ -0,0 +1,8 @@ +#!/usr/bin/execlineb -S0 +# ============================================================================== +# Take down the S6 supervision tree when Nginx fails +# ============================================================================== +if { s6-test ${1} -ne 0 } +if { s6-test ${1} -ne 256 } + +s6-svscanctl -t /var/run/s6/services diff --git a/qbittorrent/rootfs/etc/services.d/nginx/run b/qbittorrent/rootfs/etc/services.d/nginx/run new file mode 100644 index 0000000..daf56fe --- /dev/null +++ b/qbittorrent/rootfs/etc/services.d/nginx/run @@ -0,0 +1,9 @@ +#!/usr/bin/with-contenv bashio +# ============================================================================== + +# Wait for transmission to become available +bashio::net.wait_for 8080 localhost 900 + +bashio::log.info "Starting NGinx..." + +exec nginx diff --git a/qbittorrent/rootfs/etc/services.d/qbittorrent/finish b/qbittorrent/rootfs/etc/services.d/qbittorrent/finish new file mode 100644 index 0000000..4e4e802 --- /dev/null +++ b/qbittorrent/rootfs/etc/services.d/qbittorrent/finish @@ -0,0 +1,8 @@ +#!/usr/bin/execlineb -S0 +# ============================================================================== +# Take down the S6 supervision tree when the server fails +# ============================================================================== +if -n { s6-test $# -ne 0 } +if -n { s6-test ${1} -eq 256 } + +s6-svscanctl -t /var/run/s6/services diff --git a/qbittorrent/rootfs/etc/services.d/qbittorrent/run b/qbittorrent/rootfs/etc/services.d/qbittorrent/run new file mode 100644 index 0000000..777edec --- /dev/null +++ b/qbittorrent/rootfs/etc/services.d/qbittorrent/run @@ -0,0 +1,9 @@ +#!/usr/bin/with-contenv bashio + +WEBUI_PORT=${WEBUI_PORT:-8080} + +if bashio::config.true 'openvpn_enabled'; then + exec /usr/sbin/openvpn --config /etc/openvpn/config.ovpn --script-security 2 --up /etc/openvpn/up.sh --down /etc/openvpn/down.sh +else + exec s6-setuidgid abc /usr/bin/qbittorrent-nox --webui-port="${WEBUI_PORT}" +fi diff --git a/repository.json b/repository.json new file mode 100644 index 0000000..930f06a --- /dev/null +++ b/repository.json @@ -0,0 +1,5 @@ +{ + "name": "Home Assistant Community Add-ons", + "url": "https://addons.community", + "maintainer": "Franck Nijhof " +} diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..f2aa1dd --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +mkdocs==1.2.1 +mkdocs-material==7.1.9 diff --git a/rsync-local/CHANGELOG.md b/rsync-local/CHANGELOG.md new file mode 100644 index 0000000..134210b --- /dev/null +++ b/rsync-local/CHANGELOG.md @@ -0,0 +1,20 @@ +## 1.3.0 - 2021-04-02 + +* 🔨 Use ghcr.io/home-assistant for base images + + +## 1.2.0 - 2021-02-27 + +* 🔼 Update rsync to `3.2.3-r1` +* 🔼 Update alpine to `3.13` +* 🔼 Update coreutils to `8.32-r2` + + +## 1.0.1 - 2021-02-09 + +* 🔨 Migrate to new `devices` option format. Thanks @LiJu09 + + +## 1.0.0 - 2019-10-28 + +* ➕ Introduced local rsync addon diff --git a/rsync-local/DOCS.md b/rsync-local/DOCS.md new file mode 100644 index 0000000..1d0f1e1 --- /dev/null +++ b/rsync-local/DOCS.md @@ -0,0 +1,45 @@ +## Security + +In order to mount your external device the integrated AppArmor feature is disabled. +This addon has access to the devices with the path from the available `external_device` config option! + +## Config + +Example config: + +```yaml +folders: + - /config +external_folder: backup +external_device: '' +``` + +### `folders` + +The list of folders you want to sync with the remote machine. Those locations are getting synced recursively. + +When a folder is specified with a slash at the end the content are directly copied inside the remote_folder. +Without it a folder with the content is created. + +For example: + +* `- /config` would result into `/home/user/config` +* `- /config/` would put the content of config into `/home/user` + +### `external_folder` + +The base folder on the external usb drive or usb stick for syncing the folders. Sub-folders with the folders from above will be created there. +This path should not start with `/`. + +### `external_device` + +If you need to pin down a specific device to make your backup too, here is the option. Per default the device is `/dev/sda1`. +Make sure to adjust it when for example running Home Assistant from a external drive. The `sda1` will be a partition of the Home Assistant drive. + +If no device is specified all available devices will be displayed in the log. No sync takes place without device. + +Available options: `/dev/sda1`, `/dev/sda2`, `/dev/sdb1`, `/dev/sdb2` + +### `options` (optional) + +Use your own options for rsync. This string is replacing the default one and get directly to rsync. The default is `-archive --recursive --compress --delete --prune-empty-dirs`. diff --git a/rsync-local/Dockerfile b/rsync-local/Dockerfile new file mode 100644 index 0000000..eca34cf --- /dev/null +++ b/rsync-local/Dockerfile @@ -0,0 +1,12 @@ +ARG BUILD_FROM +FROM $BUILD_FROM AS RUNNING + +RUN apk update && \ + apk add --no-cache \ + 'rsync=3.2.3-r1' \ + 'coreutils=8.32-r2' + +COPY run.sh / +RUN chmod a+x /run.sh +ENTRYPOINT [ "/run.sh" ] + diff --git a/rsync-local/README.md b/rsync-local/README.md new file mode 100644 index 0000000..6e66858 --- /dev/null +++ b/rsync-local/README.md @@ -0,0 +1,25 @@ +# rsync local (Home Assistant Addon) + +Sync folders to a external usb drive with rsync. + +![Addon Stage][stage-badge] +![Supports aarch64 Architecture][aarch64-badge] +![Supports amd64 Architecture][amd64-badge] +![Supports armhf Architecture][armhf-badge] +![Supports armv7 Architecture][armv7-badge] +![Supports i386 Architecture][i386-badge] + +[![Install on my Home Assistant][install-badge]][install-url] +[![Donate][donation-badge]][donation-url] + +[aarch64-badge]: https://img.shields.io/badge/aarch64-yes-green.svg?style=for-the-badge +[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg?style=for-the-badge +[armhf-badge]: https://img.shields.io/badge/armhf-yes-green.svg?style=for-the-badge +[armv7-badge]: https://img.shields.io/badge/armv7-yes-green.svg?style=for-the-badge +[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg?style=for-the-badge +[install-url]: https://my.home-assistant.io/redirect/supervisor_addon?addon=243ffc37_rsync-local +[stage-badge]: https://img.shields.io/badge/Addon%20stage-stable-green.svg?style=for-the-badge + +[install-badge]: https://img.shields.io/badge/Install%20on%20my-Home%20Assistant-41BDF5?logo=home-assistant&style=for-the-badge +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=for-the-badge&logoColor=white +[donation-url]: https://www.buymeacoffee.com/Poeschl diff --git a/rsync-local/build.json b/rsync-local/build.json new file mode 100644 index 0000000..4ceab93 --- /dev/null +++ b/rsync-local/build.json @@ -0,0 +1,9 @@ +{ + "build_from": { + "armhf": "ghcr.io/home-assistant/armhf-base:3.13", + "armv7": "ghcr.io/home-assistant/armv7-base:3.13", + "aarch64": "ghcr.io/home-assistant/aarch64-base:3.13", + "amd64": "ghcr.io/home-assistant/amd64-base:3.13", + "i386": "ghcr.io/home-assistant/i386-base:3.13" + } +} diff --git a/rsync-local/config.json b/rsync-local/config.json new file mode 100644 index 0000000..c7e1414 --- /dev/null +++ b/rsync-local/config.json @@ -0,0 +1,48 @@ + +{ + "name": "rsync local", + "version": "1.3.0", + "slug": "rsync-local", + "description": "Sync folders to a external usb drive with rsync.", + "url": "https://github.com/Poeschl/Hassio-Addons/tree/master/rsync-local", + "arch": [ + "armhf", + "armv7", + "aarch64", + "amd64", + "i386" + ], + "homeassistant": "0.115.0", + "startup": "application", + "boot": "manual", + "init":false, + "image": "ghcr.io/poeschl/ha-rsync-local-{arch}", + "ports": {}, + "map": [ + "share:rw", + "config:rw", + "backup:rw", + "addons:rw", + "ssl:rw", + "media:rw" + ], + "devices":[ + "/dev/sda1", + "/dev/sda2", + "/dev/sdb1", + "/dev/sdb2" + ], + "privileged":["SYS_ADMIN"], + "apparmor": false, + "schema": { + "folders":["str"], + "external_folder":"match(^[^/].+)", + "external_device":"match(^(/dev/sd[a|b][1|2])?)", + "options":"str?" + }, + "options": { + "folders":["/config"], + "external_folder":"backup", + "external_device":"" + } +} diff --git a/rsync-local/icon.png b/rsync-local/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..066dc71fcb40c09fcf98b3aded18bcf931666c19 GIT binary patch literal 14007 zcmV;oHb}{dP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3;ua$Grfh5us}UIM0zVL2EhyaO-a-$9Zpsif*| zM_4Q|sm#asfIFN4K)Lfj|9#zm@u!s9T(;UuFU9jG_uS*)hvq+j`uiSye&64p?~nNR zFYmkd^@ESRm3U2`f7bDJ{osB3{YGK_`o3#lpTzccqwgDk-7x9NkstQYgXI1Ac|YW@ z8};+~q4ZXN9_oyr*Y$Pb8_L(;`E}DbBLDff`}vJriPAP6lwv$7B>%p*&j`}z@6h}2 zd*C`g<>!>LdoSf{Bn0G_>3zR?|8szT3G)4#k^6h}fBf{f;K%Xxe)?N1%lD1SpFarp z=it8(|McMW^^@c6Up_cKwBM%l_4nT0?wbpf7`YJ9@>NkU*x~y&TsR4NdcRiqs{A#6 zuJ5b!)%@^_lyATM+N}amDoBYpKQ_S5ls`zQT<) z^|Z-aOe-Fz)TQ`iEa5%3zvnF`x&01Y8Ur^A{K`LmxqtQH|K-cwyA-0}+gF^95*$_6 z3`3dIcdjBK;eO@KUVy*9zS8f1svk;~4B88GV}ira&n>2fziKPJJSVO*UOz1qT-{$c zAVfUd7!1XqgD)XjD8bhlYY4=#k)XlIW6E)ofnXLlgN&Khh_1#K^=y8phIehWSfbtr zn@EJEk}A3BX^^a(jrys%QA5L$Wiu;QtvTy9N-DWn0qBZAZq!tBwOVSet@b)vYPne} zt+v*B8$I>}23jw@_SSnJBf7zZ2KO3VKX_-xnP#3g%dE4_KF6YbR$jKss;jNO#*RB} zU}BeDciVlB6WjqQPCjSfp z?yt=KM|pGB{-eCbf0sF@)ct>C&XKy`^Y(|VZSmZC8T)jhV(Js!$LFUF7uyi2jo)5} zF`U}t8DwnbIeWWh0V}%^#@W-1doh8_hc`~g%!sJ9& zPc3L;&%d_a)>q1Q!rb6vyL}MmyXkCE`egs3vXzW}jaD zBAKg}Ap-Tq(qtkGA&?ryj3o8BX{nu0w>0YYnM%wQVj`mamtt^j*V21fb5_#X&$VcQ z>*9{85&){5$`oOaHE!)x+pd=~AE%I9vRA;=m|ab`)m=uXBlqbsmvj~cG!JvRV)1RH zkU3=nuojxC!t!;&AFQ^TxPVD(=woY`DvKN@{YqV1cJ)LmInZcOJn(x1{D&62MAAr_he%I>AMjhTlGc`)JbD0Ylr zZj(@Vn1E*!;%<~1ogH4h{Xf3C?;nsMjJ(=_HPWJZd3%NngeBVu);iU;%_xltY*jiU z+*2T-o%1Qf`El0ikasA9U=;}G&b9W2<3q2;EbCf+RXX+dNseOODNs5G)ken z;+t6j8UUo)bV1EK*r_zej(w&xukXF?K*LnTblqEJVZ+y~a*f=a`gMQk`xY8q?%$;C zPp_ruDhW+Sn&VZ3Aru$>`adbJTBxO6=45a*9Zw;Fg_clP_&#?2#9*M;Uw{yVpI2H$2@f8L6)2#e z71Ks4Ls$EHpBI z0JuhNp%lqshfDZ)PM6NE9spyw_`=O62te(F{NvCEL1AGEfJ*rftU9QyyJ zh~`PkpEtNzWgV>TVP_Uv=gb-@?W#$7@g{YP=%h#od`Z@Zp-#s-(;y6r9b#=0tR>yI z(%uP}+_$B9PmT~3#mF2U%#IK@O@$Vo*=?qOXyCXO%J#$&z*EYs?mKlcR5r_}f(c%2 ze_}4Zx*u=MMxqmis=;4)1UwA*fSYD06veuBpoYpsW*|I^P9j@D7#DhW7jcIcfExUP zXY<09p3nw0yk@l-4%GxspV>!9R6ChXOvOXa9*REq67iMYxS0!36)HZSN%$Dnra#Y! zc(<1@^v7#82(PO_&W0L7xciiQl-~)|P7)9*_(2mvp!4u~1o{R*NnuD2N5Xy~FsiSH zwUH=10K|(@4;db7%UmxBr+{K$RJ7VOX__^FktylkCcwqT3}b!5xm2vbwufGUkp`QN z)Xbx0v|wR-nW1=JXz%Utkl zC?HjVift}(x0FDVi9QI9$Bi}zTtgkKQ1DG^#;!#wV27J)0Ep zc{=*;f<{6t2|`hVPet&Z7H6a7vSU?2yAJRPRJhCfimqTly{ z!@#3b)k3B87Tl#z!aB$*>Xh7#*kSvTo7zN-eVX(pVJTqA*=Cu{ga5<<90EEF%^JNs zpi9JjlZw11ia*iqiN;pdi~_EqW@s>8N$5tJ6Ge6KDF|=$4ap!u)pfucnK08Bw=`;z z!gv9qK?LRh06$1CC}Gf(2#7G~UQL-cJ2ONuHMg6rJ4DUOa?ZLkgWNBrrU<oIvvoe^@rftzz6$y6eC?I6=}a5rpxlS8ES{3xv(D4o2j)S3fc%$ z!CtV6np-Fg>*=F>3|nuAR+dGh=M^{ijZF%OQI9ynZVUzF%v0j3jo@Q z5e}*ZF@Rd!gQAKH^lJ|4S*B%$3F5=L`R-CS9y3Cx_4Wn768eU`1$NNE)GDPMfon`( z)EZ92zD?&T)^0{nC?-6@T>&3y)$bx*k~Z=f9h(R_)8HKd67B>eh@l}dQN`^dA|#9e zMbM5=&~iu)KoC^kUcwtb{+0scFA0EF|NMxsz(p0Vb#|_qhM}qq2h+VwB|5Plj#q11vQ`1qTte`O$2-?!btg?T#+I_}6=NSJ z93^n0+?kk%lXmfL4vh6CN>I?2Zz@=XjB@kkPC8-(hYNdh)C`ICEeT? zIib$Bz@^{9k0IgPVH>X*60L4mYX=aV$)j&FMJX8u6?2N(@^LxJs{q&1BP50j@KZV(6%aU24=CVTJ*J`xFeO_4+Iuw=E7Ltm?u5a64Zng5UDJ>A4+W?5yHNq z9y&P?eIep_HoTinODZR#o#+D-`A8lS2Z1c;gRP`Q8gK=14F7x5s1Iis0;+5fDxZi?chh#yP7(DVHIG{`6Bs3)`G5B2oFA=VJ-m=b4 zbHP?P$s28=HWLETZ2RL7UOXQ&4_pF=Xw*FYJS5i3mUKplDz^d|2iWo1uqBqm%D@l( zK#qiVIEb#JtcqmxWfV8W;TmZ+98XwO{JPDJEr$q}Q1V4h4(ghcDKtJN8wU7c|KxMoT2+- zY)7wLa6SN>Uk=5gSbmaWT+al`NwiXLGzHGKK2k?uzM_@x$(6c z@;5_`{;)6?k1F&!IrQ3rSru^-tA>gMnpk>N&ZKuja1cYx+lTM`Jff!ew{&51`q!Xm6krVN5sQBd~?G4hT!JJS6J)3YQiZiH<-NOhXBFHodh5W!j6PuNhzFQ$34}|m3CXEb6 zTUr%D#Zx2!`Z)a*?bm8O$uEbozz1%lAPNGwdYVZ5ppZ5^-jB6|@vrCXex5wOGEWBm zZjws`$6E(EH{gne-m`6BL+iP;r4V;uRx{9qQieq!zpXMmQfLcQMI9ofDFhfIS2^wp z0aE}Zs7x)7G?ML_6=3T0LD|ky_Oa+boii3yd4xm^0DtI_=EzNIjNHS&`CaTve z5(nXRu%!WW{9w7luxQtRT;}`rmGo*u8LbRPB1^7v>t1rf*agv31zNvt38Rn)7f0?4E=T*0j!M2Sdf-I@)R|dVTdR#g4d!RVXOsl!9bH%eKp+}urhy`9<77puZVaQAbbQYHChB0c{g(Y z59SW()yrE(F^L`_E@>tqbCfFr0F15kS7dO$l)dgIYDX* zN`y7gBIF!77BHMk-g$&0e*?fdg#)_R>exa5!w?-&7zqYOgOOl(me(rX!cO82d5_Wq z^bWAs0Y!4JjdXXlFa-t6c9y0BT!IlqDfNcYf|!Puw5qfhl}s`&p14aG2p6!^}3=3qgsS%8mbUJz5XQpY4sGeKIT=F{0<0SG$DG(2z*SrlkdL0iyem(EPvY zh}tnNSBu4}7KjEd-x08Q$U7-}f-OD@R7l-uIm85lsKlnYKn1WP#^hqfAat}kok-)N zSDr(}cVn5c26dRrxFb9vjiZWs#Kb`A++RHVQc!{d_Gu9KdVX+=W8d+_jbo`p3gddtshg$ypg); z#Grf6g1NlC=?7a9y8utt5f-gxad$&B`X3qJV!YFn8w#n8SCiUkI&T3*SICfW;^`&A8K zhjEDN3?LYB0}3IuNWU5&q%HfR1j>m^h^cdvFg;`G(g-Z~}) z9b9dA*D3Vm0v(%Jv3&MRDvu4A+D<`tbkuvmeWx^lXl%J-lrbq?OWnVEkiH2LPou1H zX^Ik8SU3>C+G|+^FOL_1s8QX}QIaP2!*Sb7*h(#L(&1=s%C|;XjBkn0$ zYI?)lCgsQYEB}DD2-3k-F)(7)RB==isDjImFC*s!t*~2gK`N2>SiuPJJN|7VKGvf% zYlhgM_{%7GOl|Ng?(%5&ITJf*M3rl$%a3 zP$DtV^f}|iE9!u9j-)xDMphp*=|67eJ@^`D8CXStj=VRuTC@eN-8$Sa&p2i2G_SbqKD)NdTe5>3j?R?wR{!}_pES);ZaW*7i-8vhj(;(%Y2JsjC=-P}3m?2ux!MxPvXJa7QU4tmVjXLM#wR)8SyP8pO8~7cs8&$4=b7&~QS~YOkim z5x7$aO1k!9wZcB3QdH-6p?RHIeTz*x2BUL+xOE%0rIV3RS_uFgy1jKtkOS&RU;FGV zV@7EI^*I<5-$5lRRPd%VT5x27Na@8(MHYnJ@VIyD_Boxal|VT#_s-sGZ3sj}-evxJ zv@yf~G|0$%{VRmgtM+Z37CfmvosP24sTq8u4q-4dKmhp{fm^!rfchPY1_NmSeJot6 zmghs#DURbNwMwnyUbSkn{EUJ2zdFssEh#wEKZ;1JTwoBU2)~?Op_t6;nA)vbZ_zi{ z(&?gqHtB-Uc0BD$WLjL9;Hafoh+=9-Ac^)|s1b@B3+r{!7ldYWZf!9jNVWZ8R|nsm?*$6FNt??%Y#p@?oewgeHlv18Atut*yMHt-Ou< z%%2lzIx86~G*8X8rX5#k>mBzv*bm7(#9B0M@DXDiQ~9>6qpkMuXY6i}(p^JJcekSD zl$0eA@iJTM(t6SAlK%e%CP8KxdV%5zG_1h{5dv_(NCBZGe+$avlE5SXY5;+?Vuw%S zg+7uT3^J`1+@-c-A@hJ&r;a-K0v;(E;p?ms4h>frw}X$U%-{@Tp)rt|Lk_Pa9SIu- zRJ*8A%NRt+8+ryWqHP!>V^AdS2#rQ*t&N6-K$DIvg@|YXL63G6WWKzPy5d}Pl5r#N zu%x7#*@btoQ1!bVzHg%bf!(`x-iR_q%onbKX1G_IUQ0K0vX1>u)5s^#*d7t}p^eQ=%0X~st?f%Ws?u4huXp zWTaE`#35p_(8h8bv!bCAPZ38HRik_%)^E4>|rMxny#cz{s(H3RFmrAN&t~cWdS+C)}i94Cs8Z?T-YT&7<|$tLvkcPO(CBL z-p}ZpvcSMC5Lk12YwqLp0Z3Cy{D4^000SaNLh0L01m_e01m_fl`9S#00007bV*G`2jmJ15F#X7 zCv6n~02up8L_t(|+U=crl-$*I=Rf!TYUxe;z90$F>aNy`79_PKB!s{ia0nR^Pi*JR zBsg{w1Kx-|@tE<%XY3?)JdT}%nRu|VoeXnq#*PO}*ai?1YN-K9NNOZiw~!DLNN8Vr zsjjNudw2f$wXiH}scLoo`d1C#b99bQcUS%1@7?da@80+BA`CD*Giw%AzK=Qc167vn z-%s;|38SpYFcBF6Q~+^ADgc9Omx2?K4pdJ$=MGzIkHzD01W-UdkEPqU547n*%5~sP zS6v0Fn0OpD2B(@ZP@^I>zyg6)z&upv0f}Bd=D0wM!d5lrX>o3=K&LgPQ&jWDIXXHz zNayq1bNKN41PB9<0F&zKu*Q&2r@dr-{U;Flm_iDu1}aPVcn4&FE?}pqJ`hhPf0oVX zNjS%X*4DC{(8!PXC1BA_H?d*gKBTh~S6%%9RBr{A16N06n6C<~QITJ&b88VnfF{sVCI+H3jGM~+~f^D1GSHRf{)pD%+&l~?$Rz(2?0@pr86J5gnEM9C020z6S$ z%OKCAJ07Rf_djjmE5I=LwOv;xust@!XBGapiN%N|lPuV@>3ss65346kAUSw2p6YlT ztn^O;g9eDPeFFHOsD4|GIlOe|&i4rb@R4!j_|n0HWa{hjMMfg>SyBBm0~jjubrJcF zr+Rek@Zo&CsflObs|0A8F@sopJGQFo$G{%~N!}aC0^d)>I0bxOjCp8ZJkIH@TlvI5CcvgSbI5jgqw)9z@%_gm$ zzMz|9@F8o=LE77CeCw^y9vzxx-8^FkzVCy`x5fA0d|&uyFGHE7%b>xjfVG8ie_XU6HDRai$F3!EJsw``5Enf|=zM+9wJPvRx@J0lM-x@&zEHKW! zC2)PbvXb=;4dqFIf2*xUfG%r)pzwGEC%U~N9#2JB6Fg_TyMGAq+{~HfMSvG)&&G@y z6I0cVz{evvxvk`Kqq_6?sBZ^%qWZ$-*IuJ(!Gh@90P9mJPz9KPNE=WU!AVUYOC%ab zSPRxdaNQqm8xc-Bkp`SQpwOpwL7!>>4J_Izi0qG~@KtwpWV17e=W=Bg+@Ua7RNr>0 zSBmtl-QH&eSYKa{QJn*{5y49)g%|gBbktROo?V(wM}OI$2c9u$1G6`zQhljiE??~n zpsJ0CtdHp2J)5=m#v0(7UAumB%c3l~a1E*(1!%m??ZEWW>Y5Q@;Xid+^~T}d-7G#! z_+^e)jB1~_2A4&E^>uZqwUdC&5jCD3HXR)|CyyRw&i?&a1`eDtFMA>*Uzt8Vd;(lo zS&80$J7Ua8@w_+beb8ko_xvAajrpT5PMN~WW5*bPsPy50Qyr$j%@q~l*#O&Dt>VPq zy_k4>4{&AVR=(;3z+I;j32ts_x!@*W#x}s&c(dENDRmVUOx(7u^crCO^y#!8Jcx)bM5CKJ5eRxXf^4 zE}Olx=Mb)hTfoYdY&dvug~AKbv-sqXfuFSJ^W60M>jk^83D2wO78!)Kqm1elfmsR* zf$M>x<-`IJS){5j7ZZ+NFacJlQe2l#vmuo_5xI#`y%W#-5vnXHGT`#H*|RyJiugW8 z_1#pk9@HQ*71ajd4&VPflhyYD9X5hu+xbE)fdR9i1@JFaV ztiaL|sr?u0>hL^|d@M%X_kSPNy9u;JWdzm06LH_a)dw02IQJ-+0Kh`A_N7Sq!p>c* zu)b~K?kC7Pjsm)kF{7<&`=xRaF6ssR!}#&2DlUlJjYUTE zBC8xcYpm@T;R7sgYojrp#<#Z1ss3=skResTKS$(Tp~5-$Re--9J-YWApy!|@1wzt0s+64<}=B3{7-H9&K1Em~6p@NkqS*%;I8 z#bT3MCQRUylO{!u1V;5(g>#dDFZKIa;HM|8W&1@Ah~%QHUv)kr8zboMoW%3yy6*11 zCYxnRh;j6Vo-eq-rTl#n`7uG=g8nfGRZ{}3i!b0IomT_Q_B;|NP5`WlsJ}ZDYqxta z5)tZ6v=WDxq|-szmdMYIbNw24>O@{TT~Wcf3q%r~_oppaT}4McerrUddCx{pR2RqK z)q|?s){i-M7t{vz^*9)5M79H?`^jv+e)5zlt0z4D^rbbx?^RXNl}MoQw?rQa71@+G z=9)3i(Og>_xdAR|Z6z*pbaOgA2I!Y65i0W6yZ7zm_Mt;BtpS>X5U*9xuUX5*YdULZ zh-&&5r%v(rM~)P{R|B4?s*0eX`ztDRQYHh&@bR`bcG|uPBWbFwCFyw;IXH<(_*u{* z^MF^+Ju3fg0yH#;sICK+P;LpXe}xFkE^!K0 zKtRY*;Jd)1lFPNI=RqcOSzgD6h6V(#cB-$2Z7*pyJ4mzH+_D1)&Tj)aV{jt(m8q4sFAyvIgRcY#lpe}-i#A1h4tSBV-|c3pifFC)^KwN>%C0Y?>b9>05Tp zm{D=jIV+l`fGl$lGtDaLT}fQj$R7E2w^JMpYGSE;EthJQ(MB-dol6^-~pCecg41 z6JX!IAX!EA-q5BUMjLAE_~E6(y}&ba59@M#di-+?%)50bayA4i!=;X1VsL@=TIsP+v_IR zGykT!ww7^0z`&G{2yiIpd2RF0Igx4%QnpX`YzK!*`0^jMzW?(z)25Z;+piG#hhmTS zmZsBaKEDgtACe5Na-E%QoIf9f2=7drHiD2sy;b#Vp0)n@CaE!rc$|NoH?QE2R3s8O=l&Pa9)=)nHv4;icQ-~wP?6h1BEXXp zi_zH9a?w9(Os6r>ZeV^%w*$DXMBh6$=lkDn@9HY}1M{|R!vwB)I58Ni9|bT8-v`yD zp*&OMQCndCT8~X|0Ow{B+|-pDK4C?M7Gv6HlSvf9IUW|d#m{6gInN6%N+qWHWHHyO zP6YM5IYhAjKmn*!_;6NnIC=h<1`KN*%cpvH_as16TDSV#u5i&JDuI8p<02gQMgGSaQoP z#eU`p0|!OLJ62gMgb<#u;2R@yI)n-Enjd|%@NA>tih97*c6YF+m>YqdF|jZRAgXzz zs>ef^gP3!!s2e>ISvyb&P@hh(?yf4lgN|66B!u)l5jkWKITXSi#H9#tV~GgrTqorj z2XHQqwKX)*QcSe4Y6T%wWmDK^2zvaK8VR7X-~tXicAW79HVyy+Y(bUJ?%7k&A2(ff z6;7lw4DU=t_8Wn{Vb}nuUZF+Q@{u4sYD3wJUu1P-F~ysWK~!tQumMm#Xf$YH9tJ+7 z#YEu-uHa*3?*TgZ*k2VQAwBeW z@`=Ka17-)7&`ID2Wk`So#%wn*zR=nPE;s`I-H^8AwbojUQ^l$N-;gHdRsmKQ5h`6( zT}?b5|1?3CP$^K#_`A^#HYyCh6bUxWnsug`btoD@Rez>{NmxtV+Fyo5fFV}oqs1Hv zet6?Xy1KieL`9WUPBj5x>S*Iz#d zgwkD6RR6{|g<9tjm{)acieE_o9Sb%-YXWf~1M%+qR*ecRf(b{>Nj0jdGstU}Mm| zte)^{3Ga;!8Nz~1n|e;0f-!?CSz^3EuEgy*V;;ecxNY#>GV>d zrIg!&gEs`K&n{or4QK4IuqubH&*g$^76Z_@V+UePc#R=cugAH?>x$F@+xP6Dam5O! zstfwkHB?~X-o0dI&*pR{GaGoZgl|90!5#zSHl$MW@}NO@BDWwCTBU1Iz5lwN0v!gR z(irlvgD_9sM7|-;vF^&kyU*SQ)UR1XS8MBDYwZO3xUf{!wrvcH#ZY6G15G9N4mJr4 zu@fhP>Ni7lPv26JJrmEa5|(i;NWT^N?;#FkxiRJ=UN5>{|GcJ#L?Us5pfArWeL1Kl zyLS`MWH>f%+_DmG2lQ+QyVbeB2WEt}?%*`tZu_+j;!R5u9_!t5la*)hmHF`eI;>ZEXxPhRmQr zD@wc_goQ75cXjExuF1Q2Y3^Lq+JwvHP7!h!Ob2s}>b519(U{?h+FEL2G2*!#nn=t7 zZbRfAR42OztcK5Rpzfa}bh6X%ULQs*UKEtZ2HUaa>N%|_X3}{+v46PuNUmZR*wY_ozBA0ronFuL{QWtFdF8 z+fm{BcmAJg(`c@%i_DBVVCI%BEE+tRiRttLN_%&3S@4XxuA-)fBNs?cz2Lokva%A* zWL~F#lQU|7A7aekB$CNk)AZ@A>-&Zey~ePX7G%*P%~`vg(#8|?7VBTxv142EB4;cY zy?)#fbP=8EV0Q#w=79CQ1)_Rz*^V92o9R?)BoWJKjs^D(?<~HEmvhm`oV6!UqOb?} zS_Ix_yl3qJRS&ze>7;*1%Q&<0JZ6l+tdN`hnbDB*7{yz}_6i-%5JG63PFR0?0U zMnsMhW>2AuBda2xH>!^~k)uOvYWT=2uaqpX?_$CShDwlMIVwWJ&pQ~M@Vt`?FVRA` zpa_(v;I?j_sBVgy>J|9Mu_H%*=B?w$G0w3xXg^cZ`YK7_`BVyp!6s-g8>vpK#`ER^ zTMFr)TySuv$!0eTJQ+0tD17?h(W4p9xitnpym9hm)~8Z5&zxDZXFeYsmsc9tN%Y$6 z{?Zz=rHBPo;7iY)%NXZ4mCe3GSoMW_kDmj-5ZEEk?XjNMApp*yB6zCg6A2`nWm#Ks z+3{zo{Z_&Y;w%(LJ3MdHm7SeT+q<`K2>`)8fr?xMyi9rFG$POA+$$=w%~Rd$$K!`2 zpKlkD?m{kuhKcZaeLV_8OknLtvBCE8B~zxn$Ww(UdKDdox}mNPCvumF+|R&(6heTe z9=N>Svtt>9aUMTiC4sfd91OAQo2$}+eZ%8Z%G#MAcAwFZ`@dxm{ zqJ-Zo4FK@{1q*2C>LTvkRt<7E2c!lVA;M!3SNjTYn9k0rjr)6-FVm|sB;VY)krPLb zV2xQpSlurB0gu(!pRxAS5#95_^Ax8L*qx`DFl2Z_Av>h-AoC<-3~^JAWOS;D_; z0=&BqdES00vk<8Z;i(?AFHu(eu+)ic?~6pjK1)X2(9nRwTvT5sgd&Hf*aDhSAEi(mslr?6X>QjXQUus;^pOCTp2h_%v{~+CLgm;XCVGy^8di@cWbi04jo5 zd%zQ!Kxw;w_bFcNIppa%-i@Bx7s;r|6=KYuzV4w=l6>@?^X8EnH%>O}-n{`>6!k5@ z1!{jM(d<&PAyZkoJdw})*PfNq6=?zhyf9$`$-#rs;MDL_QI&oLNO!PhMbY5@%zt0*0Bq5C{8p?z(C&GBuqC`qbQ9)V-rUkc z%g&wbuC6{TumF)ir;qFWlo^ho`p4?~bE{ig4zyNQhARBfHNd%Onl|lBV~DQ<_Y$3` z<5D9F{2*`4-ErqwQba?Evep3SV(G43K?JXJUsmTP2>jhZm%OU}7lDbsb9Z;eV*FJ< z3cueqz}aYx#W+!03!Yc4&i$pT-bJ)x?Jox>5qUuK`ETKQCo*&Aa>Gx58i|2Pl< zwXTk?pm)xns>s&~+Q`SsOz1vvL{vYg@H1Oki9d8GD_@A#afn29_L}SJaK@0Wu9jqH z=U7BOh3b7}Ab2P6HHH6?PbLq=vsqQ=SlZSW$-zoFETs+8r=zMQVli^L+zJ)BNnjPQ zFe+{w@Pvx|%7^BpDk?%_1dCggB>~RGx~Ws~5(!*Y6=X91QB*%h5S&`w^RHCzr35vK z+fjX4jQR25_V#}rJ!lXHSX2fA9}olp_{peI)T!b|jY6D*c-$kOuMuMgIp^ky$U=c@ z6c+T@5WPW$pcL(D5n1D$YZGI-$miP;@g){xP$I#BY?cr7vo-&oBfy2Qefe@u96E#v zdLf|%aegO7hI_t07-NQr$RJb)>6vC(B6+da$Mdodj>KcJ!>D%pz8@@m5jm2UYHzs)t|(->0^tT@V$8;86ToN0R-NZa(%v^8TGRc@3Z zX9niR1s;F#HtnbXsQ>nb)GVc{c~18FZJhs+>#5**y63|eI%oTGI_l5f05E;mwt#dIe~9`OpkH1pMNiF`r`Jy#9qR_`Np}uU9Tetz6(4t z4fg18y%Q+E-9k46-=rLS`(13FZ{4PCj)a8&vJ>wz_zaIn$_(b~s=*{mCf>VzAm(RODAB$mrhkq_~;gpq_Wj*SQbd+5tnUlER z4`|TPE;#KTz~1(*<$FGhYH8G2Etn=^V37m`OH#2uN~`W}GP$PQKN^+nUHlYBcl7EFbWG?KCbJLc8Z!5hJ6= zd?`!F6RvmUI4L=hKtz=NHCg$s>7a6*rtGg#QIa-p*ukuUH?zUagKJ7{@_YoI+si+zFRhbS_ikVB~)L+bO zf}5Wzuvo&MlU^$+!6Re%Tv3bVpCA~tWFQd3(wA1%`tIX+h%hYw}eV_A_S8NO5$ z2rWfymf9+d(I?YI+m0GkuvPfblrr7x-2_$k#d8N&@>x2M7>vx1D9u{c_+#C?o6OZY z3lC!pmv=FYI)s!f$pvX`Po*s_oUACh7dUh-odcwZR;rluL%82FDzYNUj>HlTm1}rz zZLow9>z0yYcg{QKs@U#pX&_`~ew1K?H$g{LVn`@DuxQ4n**s@|&o$}Gr%;P<%7NKP zVqT^{zuGlPXHoeA?JS28-lnaf1iNZVAJM)_5jXKT`Xs0{ct3CB

    !l>;#xYFHJQ@ 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 dE-~wzc0-PABZ)u`D<{~vUK4r%}Z literal 0 HcmV?d00001 diff --git a/rsync-local/run.sh b/rsync-local/run.sh new file mode 100644 index 0000000..09c66fb --- /dev/null +++ b/rsync-local/run.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bashio +# shellcheck shell=bash +set -e + +FOLDERS=$(bashio::config 'folders') +EXTERNAL_FOLDER=$(bashio::config 'external_folder') + +if ! bashio::config.has_value 'external_device'; then + bashio::log.info "Detected devices..." + ls -h1 /dev/sd* + + bashio::log.info "Select your device and insert it in the 'external_device' addon option." + bashio::log.info "For example: \"External_device: /dev/sda1\"" + bashio::log.info "Then restart the addon for the first sync." + +else + bashio::log.info "Starting sync..." + EXTERNAL_DEVICE=$(bashio::config 'external_device') + + if bashio::config.has_value 'options'; then + OPTIONS=$(bashio::config 'options') + bashio::log.info "Use options $OPTIONS" + else + OPTIONS='-archive --recursive --compress --delete --prune-empty-dirs' + fi + + bashio::log.info "Mounting device ${EXTERNAL_DEVICE}" + mkdir -p /external + mount "${EXTERNAL_DEVICE}" /external + + for folder in $FOLDERS; do + + bashio::log.info "Sync $folder -> ${EXTERNAL_DEVICE}/${EXTERNAL_FOLDER}" + # shellcheck disable=SC2086 + rsync ${OPTIONS} \ + "$folder" "/external/${EXTERNAL_FOLDER}" + done + + umount /external + bashio::log.info "Synced all folders" +fi diff --git a/rsync/CHANGELOG.md b/rsync/CHANGELOG.md new file mode 100644 index 0000000..311749e --- /dev/null +++ b/rsync/CHANGELOG.md @@ -0,0 +1,28 @@ +## 1.3.0 - 2021-04-02 + +* 🔨 Use ghcr.io/home-assistant for base images +* 🔼 Update openssh-client to `8.4_p1-r3` + + +## 1.2.0 - 2021-02-27 + +* 🔼 Update rsync to `3.2.3-r1` +* 🔼 Update alpine to `3.13` +* 🔼 Update coreutils to `8.32-r2` +* 🔼 Update openssh-client to `8.4_p1-r2` + + +## 1.1.1 - 2020-10-22 + +* 🔨 Disable S6-Overlay Init + + +## 1.1.0 - 2019-10-12 + +* ➕ Introduced option for own rsync flags. +* 🔨 Updated Docs for folders + + +## 1.0.0 - 2019-10-10 + +* ➕ Introduced rsync addon diff --git a/rsync/DOCS.md b/rsync/DOCS.md new file mode 100644 index 0000000..5f866f2 --- /dev/null +++ b/rsync/DOCS.md @@ -0,0 +1,58 @@ +## Precondition + +Make sure to have `rsync` installed on the remote machine. In case the addon gives you an `bash: rsync: command not found` in the logs `rsync` is missing there. + +## Key files + +The addon generates its own key files when no file is found at the specified location. If you use your own key make sure it is passwordless. + +## Config + +Example config: + +```yaml +private_key_file: /ssl/rsync/id_rsa +username: user +folders: + - /config +remote_host: '' +remote_folder: /home/user + +``` + +### `private_key_file` + +The private key for the authentification on the remote machine. It specifies also the location of the generated key-pair if no key file is found. +The location of the file is fixed to the `/ssl` volume. + +### `username` + +The username for the user on the remote machine the key is accepted. + +### `folders` + +The list of folders you want to sync with the remote machine. Those locations are getting synced recursively. + +When a folder is specified with a slash at the end the content are directly copied inside the remote_folder. +Without it a folder with the content is created. + +For example: + +* `- /config` would result into `/home/user/config` +* `- /config/` would put the content of config into `/home/user` + +### `remote_host` + +The ip or host of the remote machine you want to connect to. + +### `remote_port` (optional) + +The ssh port on the remote machine. If not set the default `22` is assumed. + +### `remote_folder` + +The base folder on the remote machine for syncing the folders. Sub-folders with the folders from above will be created there + +### `options` (optional) + +Use your own options for rsync. This string is replacing the default one and get directly to rsync. The default is `-archive --recursive --compress --delete --prune-empty-dirs`. diff --git a/rsync/Dockerfile b/rsync/Dockerfile new file mode 100644 index 0000000..64f6ce5 --- /dev/null +++ b/rsync/Dockerfile @@ -0,0 +1,13 @@ + ARG BUILD_FROM +FROM $BUILD_FROM AS RUNNING + +RUN apk update && \ + apk add --no-cache \ + 'rsync=3.2.3-r1' \ + 'openssh-client=8.4_p1-r3' \ + 'coreutils=8.32-r2' + +COPY run.sh / +RUN chmod a+x /run.sh +ENTRYPOINT [ "/run.sh" ] + diff --git a/rsync/README.md b/rsync/README.md new file mode 100644 index 0000000..64abfa3 --- /dev/null +++ b/rsync/README.md @@ -0,0 +1,26 @@ +# rsync (Home Assistant Addon) + +Sync folders to a remote machine via ssh and rsync. + +![Addon Stage][stage-badge] +![Supports aarch64 Architecture][aarch64-badge] +![Supports amd64 Architecture][amd64-badge] +![Supports armhf Architecture][armhf-badge] +![Supports armv7 Architecture][armv7-badge] +![Supports i386 Architecture][i386-badge] + +[![Install on my Home Assistant][install-badge]][install-url] +[![Donate][donation-badge]][donation-url] + + +[aarch64-badge]: https://img.shields.io/badge/aarch64-yes-green.svg?style=for-the-badge +[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg?style=for-the-badge +[armhf-badge]: https://img.shields.io/badge/armhf-yes-green.svg?style=for-the-badge +[armv7-badge]: https://img.shields.io/badge/armv7-yes-green.svg?style=for-the-badge +[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg?style=for-the-badge +[install-url]: https://my.home-assistant.io/redirect/supervisor_addon?addon=243ffc37_rsync +[stage-badge]: https://img.shields.io/badge/Addon%20stage-stable-green.svg?style=for-the-badge + +[install-badge]: https://img.shields.io/badge/Install%20on%20my-Home%20Assistant-41BDF5?logo=home-assistant&style=for-the-badge +[donation-badge]: https://img.shields.io/badge/Buy%20me%20a%20coffee-%23d32f2f?logo=buy-me-a-coffee&style=for-the-badge&logoColor=white +[donation-url]: https://www.buymeacoffee.com/Poeschl diff --git a/rsync/build.json b/rsync/build.json new file mode 100644 index 0000000..4ceab93 --- /dev/null +++ b/rsync/build.json @@ -0,0 +1,9 @@ +{ + "build_from": { + "armhf": "ghcr.io/home-assistant/armhf-base:3.13", + "armv7": "ghcr.io/home-assistant/armv7-base:3.13", + "aarch64": "ghcr.io/home-assistant/aarch64-base:3.13", + "amd64": "ghcr.io/home-assistant/amd64-base:3.13", + "i386": "ghcr.io/home-assistant/i386-base:3.13" + } +} diff --git a/rsync/config.json b/rsync/config.json new file mode 100644 index 0000000..e11ef88 --- /dev/null +++ b/rsync/config.json @@ -0,0 +1,45 @@ + +{ + "name": "rsync", + "version": "1.3.0", + "slug": "rsync", + "description": "Sync folders to a remote machine via ssh and rsync.", + "url": "https://github.com/Poeschl/Hassio-Addons/tree/master/rsync", + "arch": [ + "armhf", + "armv7", + "aarch64", + "amd64", + "i386" + ], + "homeassistant": "0.115.0", + "startup": "application", + "boot": "manual", + "init":false, + "image": "ghcr.io/poeschl/ha-rsync-{arch}", + "ports": {}, + "map": [ + "share:rw", + "config:rw", + "backup:rw", + "addons:rw", + "ssl:rw", + "media:rw" + ], + "schema": { + "private_key_file":"match(^/ssl/.+)", + "username":"str", + "folders":["str"], + "remote_host":"str", + "remote_port":"port?", + "remote_folder":"str", + "options":"str?" + }, + "options": { + "private_key_file":"/ssl/rsync/id_rsa", + "username":"user", + "folders":["/config"], + "remote_host":"", + "remote_folder":"/home/user" + } +} diff --git a/rsync/icon.png b/rsync/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..066dc71fcb40c09fcf98b3aded18bcf931666c19 GIT binary patch literal 14007 zcmV;oHb}{dP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3;ua$Grfh5us}UIM0zVL2EhyaO-a-$9Zpsif*| zM_4Q|sm#asfIFN4K)Lfj|9#zm@u!s9T(;UuFU9jG_uS*)hvq+j`uiSye&64p?~nNR zFYmkd^@ESRm3U2`f7bDJ{osB3{YGK_`o3#lpTzccqwgDk-7x9NkstQYgXI1Ac|YW@ z8};+~q4ZXN9_oyr*Y$Pb8_L(;`E}DbBLDff`}vJriPAP6lwv$7B>%p*&j`}z@6h}2 zd*C`g<>!>LdoSf{Bn0G_>3zR?|8szT3G)4#k^6h}fBf{f;K%Xxe)?N1%lD1SpFarp z=it8(|McMW^^@c6Up_cKwBM%l_4nT0?wbpf7`YJ9@>NkU*x~y&TsR4NdcRiqs{A#6 zuJ5b!)%@^_lyATM+N}amDoBYpKQ_S5ls`zQT<) z^|Z-aOe-Fz)TQ`iEa5%3zvnF`x&01Y8Ur^A{K`LmxqtQH|K-cwyA-0}+gF^95*$_6 z3`3dIcdjBK;eO@KUVy*9zS8f1svk;~4B88GV}ira&n>2fziKPJJSVO*UOz1qT-{$c zAVfUd7!1XqgD)XjD8bhlYY4=#k)XlIW6E)ofnXLlgN&Khh_1#K^=y8phIehWSfbtr zn@EJEk}A3BX^^a(jrys%QA5L$Wiu;QtvTy9N-DWn0qBZAZq!tBwOVSet@b)vYPne} zt+v*B8$I>}23jw@_SSnJBf7zZ2KO3VKX_-xnP#3g%dE4_KF6YbR$jKss;jNO#*RB} zU}BeDciVlB6WjqQPCjSfp z?yt=KM|pGB{-eCbf0sF@)ct>C&XKy`^Y(|VZSmZC8T)jhV(Js!$LFUF7uyi2jo)5} zF`U}t8DwnbIeWWh0V}%^#@W-1doh8_hc`~g%!sJ9& zPc3L;&%d_a)>q1Q!rb6vyL}MmyXkCE`egs3vXzW}jaD zBAKg}Ap-Tq(qtkGA&?ryj3o8BX{nu0w>0YYnM%wQVj`mamtt^j*V21fb5_#X&$VcQ z>*9{85&){5$`oOaHE!)x+pd=~AE%I9vRA;=m|ab`)m=uXBlqbsmvj~cG!JvRV)1RH zkU3=nuojxC!t!;&AFQ^TxPVD(=woY`DvKN@{YqV1cJ)LmInZcOJn(x1{D&62MAAr_he%I>AMjhTlGc`)JbD0Ylr zZj(@Vn1E*!;%<~1ogH4h{Xf3C?;nsMjJ(=_HPWJZd3%NngeBVu);iU;%_xltY*jiU z+*2T-o%1Qf`El0ikasA9U=;}G&b9W2<3q2;EbCf+RXX+dNseOODNs5G)ken z;+t6j8UUo)bV1EK*r_zej(w&xukXF?K*LnTblqEJVZ+y~a*f=a`gMQk`xY8q?%$;C zPp_ruDhW+Sn&VZ3Aru$>`adbJTBxO6=45a*9Zw;Fg_clP_&#?2#9*M;Uw{yVpI2H$2@f8L6)2#e z71Ks4Ls$EHpBI z0JuhNp%lqshfDZ)PM6NE9spyw_`=O62te(F{NvCEL1AGEfJ*rftU9QyyJ zh~`PkpEtNzWgV>TVP_Uv=gb-@?W#$7@g{YP=%h#od`Z@Zp-#s-(;y6r9b#=0tR>yI z(%uP}+_$B9PmT~3#mF2U%#IK@O@$Vo*=?qOXyCXO%J#$&z*EYs?mKlcR5r_}f(c%2 ze_}4Zx*u=MMxqmis=;4)1UwA*fSYD06veuBpoYpsW*|I^P9j@D7#DhW7jcIcfExUP zXY<09p3nw0yk@l-4%GxspV>!9R6ChXOvOXa9*REq67iMYxS0!36)HZSN%$Dnra#Y! zc(<1@^v7#82(PO_&W0L7xciiQl-~)|P7)9*_(2mvp!4u~1o{R*NnuD2N5Xy~FsiSH zwUH=10K|(@4;db7%UmxBr+{K$RJ7VOX__^FktylkCcwqT3}b!5xm2vbwufGUkp`QN z)Xbx0v|wR-nW1=JXz%Utkl zC?HjVift}(x0FDVi9QI9$Bi}zTtgkKQ1DG^#;!#wV27J)0Ep zc{=*;f<{6t2|`hVPet&Z7H6a7vSU?2yAJRPRJhCfimqTly{ z!@#3b)k3B87Tl#z!aB$*>Xh7#*kSvTo7zN-eVX(pVJTqA*=Cu{ga5<<90EEF%^JNs zpi9JjlZw11ia*iqiN;pdi~_EqW@s>8N$5tJ6Ge6KDF|=$4ap!u)pfucnK08Bw=`;z z!gv9qK?LRh06$1CC}Gf(2#7G~UQL-cJ2ONuHMg6rJ4DUOa?ZLkgWNBrrU<oIvvoe^@rftzz6$y6eC?I6=}a5rpxlS8ES{3xv(D4o2j)S3fc%$ z!CtV6np-Fg>*=F>3|nuAR+dGh=M^{ijZF%OQI9ynZVUzF%v0j3jo@Q z5e}*ZF@Rd!gQAKH^lJ|4S*B%$3F5=L`R-CS9y3Cx_4Wn768eU`1$NNE)GDPMfon`( z)EZ92zD?&T)^0{nC?-6@T>&3y)$bx*k~Z=f9h(R_)8HKd67B>eh@l}dQN`^dA|#9e zMbM5=&~iu)KoC^kUcwtb{+0scFA0EF|NMxsz(p0Vb#|_qhM}qq2h+VwB|5Plj#q11vQ`1qTte`O$2-?!btg?T#+I_}6=NSJ z93^n0+?kk%lXmfL4vh6CN>I?2Zz@=XjB@kkPC8-(hYNdh)C`ICEeT? zIib$Bz@^{9k0IgPVH>X*60L4mYX=aV$)j&FMJX8u6?2N(@^LxJs{q&1BP50j@KZV(6%aU24=CVTJ*J`xFeO_4+Iuw=E7Ltm?u5a64Zng5UDJ>A4+W?5yHNq z9y&P?eIep_HoTinODZR#o#+D-`A8lS2Z1c;gRP`Q8gK=14F7x5s1Iis0;+5fDxZi?chh#yP7(DVHIG{`6Bs3)`G5B2oFA=VJ-m=b4 zbHP?P$s28=HWLETZ2RL7UOXQ&4_pF=Xw*FYJS5i3mUKplDz^d|2iWo1uqBqm%D@l( zK#qiVIEb#JtcqmxWfV8W;TmZ+98XwO{JPDJEr$q}Q1V4h4(ghcDKtJN8wU7c|KxMoT2+- zY)7wLa6SN>Uk=5gSbmaWT+al`NwiXLGzHGKK2k?uzM_@x$(6c z@;5_`{;)6?k1F&!IrQ3rSru^-tA>gMnpk>N&ZKuja1cYx+lTM`Jff!ew{&51`q!Xm6krVN5sQBd~?G4hT!JJS6J)3YQiZiH<-NOhXBFHodh5W!j6PuNhzFQ$34}|m3CXEb6 zTUr%D#Zx2!`Z)a*?bm8O$uEbozz1%lAPNGwdYVZ5ppZ5^-jB6|@vrCXex5wOGEWBm zZjws`$6E(EH{gne-m`6BL+iP;r4V;uRx{9qQieq!zpXMmQfLcQMI9ofDFhfIS2^wp z0aE}Zs7x)7G?ML_6=3T0LD|ky_Oa+boii3yd4xm^0DtI_=EzNIjNHS&`CaTve z5(nXRu%!WW{9w7luxQtRT;}`rmGo*u8LbRPB1^7v>t1rf*agv31zNvt38Rn)7f0?4E=T*0j!M2Sdf-I@)R|dVTdR#g4d!RVXOsl!9bH%eKp+}urhy`9<77puZVaQAbbQYHChB0c{g(Y z59SW()yrE(F^L`_E@>tqbCfFr0F15kS7dO$l)dgIYDX* zN`y7gBIF!77BHMk-g$&0e*?fdg#)_R>exa5!w?-&7zqYOgOOl(me(rX!cO82d5_Wq z^bWAs0Y!4JjdXXlFa-t6c9y0BT!IlqDfNcYf|!Puw5qfhl}s`&p14aG2p6!^}3=3qgsS%8mbUJz5XQpY4sGeKIT=F{0<0SG$DG(2z*SrlkdL0iyem(EPvY zh}tnNSBu4}7KjEd-x08Q$U7-}f-OD@R7l-uIm85lsKlnYKn1WP#^hqfAat}kok-)N zSDr(}cVn5c26dRrxFb9vjiZWs#Kb`A++RHVQc!{d_Gu9KdVX+=W8d+_jbo`p3gddtshg$ypg); z#Grf6g1NlC=?7a9y8utt5f-gxad$&B`X3qJV!YFn8w#n8SCiUkI&T3*SICfW;^`&A8K zhjEDN3?LYB0}3IuNWU5&q%HfR1j>m^h^cdvFg;`G(g-Z~}) z9b9dA*D3Vm0v(%Jv3&MRDvu4A+D<`tbkuvmeWx^lXl%J-lrbq?OWnVEkiH2LPou1H zX^Ik8SU3>C+G|+^FOL_1s8QX}QIaP2!*Sb7*h(#L(&1=s%C|;XjBkn0$ zYI?)lCgsQYEB}DD2-3k-F)(7)RB==isDjImFC*s!t*~2gK`N2>SiuPJJN|7VKGvf% zYlhgM_{%7GOl|Ng?(%5&ITJf*M3rl$%a3 zP$DtV^f}|iE9!u9j-)xDMphp*=|67eJ@^`D8CXStj=VRuTC@eN-8$Sa&p2i2G_SbqKD)NdTe5>3j?R?wR{!}_pES);ZaW*7i-8vhj(;(%Y2JsjC=-P}3m?2ux!MxPvXJa7QU4tmVjXLM#wR)8SyP8pO8~7cs8&$4=b7&~QS~YOkim z5x7$aO1k!9wZcB3QdH-6p?RHIeTz*x2BUL+xOE%0rIV3RS_uFgy1jKtkOS&RU;FGV zV@7EI^*I<5-$5lRRPd%VT5x27Na@8(MHYnJ@VIyD_Boxal|VT#_s-sGZ3sj}-evxJ zv@yf~G|0$%{VRmgtM+Z37CfmvosP24sTq8u4q-4dKmhp{fm^!rfchPY1_NmSeJot6 zmghs#DURbNwMwnyUbSkn{EUJ2zdFssEh#wEKZ;1JTwoBU2)~?Op_t6;nA)vbZ_zi{ z(&?gqHtB-Uc0BD$WLjL9;Hafoh+=9-Ac^)|s1b@B3+r{!7ldYWZf!9jNVWZ8R|nsm?*$6FNt??%Y#p@?oewgeHlv18Atut*yMHt-Ou< z%%2lzIx86~G*8X8rX5#k>mBzv*bm7(#9B0M@DXDiQ~9>6qpkMuXY6i}(p^JJcekSD zl$0eA@iJTM(t6SAlK%e%CP8KxdV%5zG_1h{5dv_(NCBZGe+$avlE5SXY5;+?Vuw%S zg+7uT3^J`1+@-c-A@hJ&r;a-K0v;(E;p?ms4h>frw}X$U%-{@Tp)rt|Lk_Pa9SIu- zRJ*8A%NRt+8+ryWqHP!>V^AdS2#rQ*t&N6-K$DIvg@|YXL63G6WWKzPy5d}Pl5r#N zu%x7#*@btoQ1!bVzHg%bf!(`x-iR_q%onbKX1G_IUQ0K0vX1>u)5s^#*d7t}p^eQ=%0X~st?f%Ws?u4huXp zWTaE`#35p_(8h8bv!bCAPZ38HRik_%)^E4>|rMxny#cz{s(H3RFmrAN&t~cWdS+C)}i94Cs8Z?T-YT&7<|$tLvkcPO(CBL z-p}ZpvcSMC5Lk12YwqLp0Z3Cy{D4^000SaNLh0L01m_e01m_fl`9S#00007bV*G`2jmJ15F#X7 zCv6n~02up8L_t(|+U=crl-$*I=Rf!TYUxe;z90$F>aNy`79_PKB!s{ia0nR^Pi*JR zBsg{w1Kx-|@tE<%XY3?)JdT}%nRu|VoeXnq#*PO}*ai?1YN-K9NNOZiw~!DLNN8Vr zsjjNudw2f$wXiH}scLoo`d1C#b99bQcUS%1@7?da@80+BA`CD*Giw%AzK=Qc167vn z-%s;|38SpYFcBF6Q~+^ADgc9Omx2?K4pdJ$=MGzIkHzD01W-UdkEPqU547n*%5~sP zS6v0Fn0OpD2B(@ZP@^I>zyg6)z&upv0f}Bd=D0wM!d5lrX>o3=K&LgPQ&jWDIXXHz zNayq1bNKN41PB9<0F&zKu*Q&2r@dr-{U;Flm_iDu1}aPVcn4&FE?}pqJ`hhPf0oVX zNjS%X*4DC{(8!PXC1BA_H?d*gKBTh~S6%%9RBr{A16N06n6C<~QITJ&b88VnfF{sVCI+H3jGM~+~f^D1GSHRf{)pD%+&l~?$Rz(2?0@pr86J5gnEM9C020z6S$ z%OKCAJ07Rf_djjmE5I=LwOv;xust@!XBGapiN%N|lPuV@>3ss65346kAUSw2p6YlT ztn^O;g9eDPeFFHOsD4|GIlOe|&i4rb@R4!j_|n0HWa{hjMMfg>SyBBm0~jjubrJcF zr+Rek@Zo&CsflObs|0A8F@sopJGQFo$G{%~N!}aC0^d)>I0bxOjCp8ZJkIH@TlvI5CcvgSbI5jgqw)9z@%_gm$ zzMz|9@F8o=LE77CeCw^y9vzxx-8^FkzVCy`x5fA0d|&uyFGHE7%b>xjfVG8ie_XU6HDRai$F3!EJsw``5Enf|=zM+9wJPvRx@J0lM-x@&zEHKW! zC2)PbvXb=;4dqFIf2*xUfG%r)pzwGEC%U~N9#2JB6Fg_TyMGAq+{~HfMSvG)&&G@y z6I0cVz{evvxvk`Kqq_6?sBZ^%qWZ$-*IuJ(!Gh@90P9mJPz9KPNE=WU!AVUYOC%ab zSPRxdaNQqm8xc-Bkp`SQpwOpwL7!>>4J_Izi0qG~@KtwpWV17e=W=Bg+@Ua7RNr>0 zSBmtl-QH&eSYKa{QJn*{5y49)g%|gBbktROo?V(wM}OI$2c9u$1G6`zQhljiE??~n zpsJ0CtdHp2J)5=m#v0(7UAumB%c3l~a1E*(1!%m??ZEWW>Y5Q@;Xid+^~T}d-7G#! z_+^e)jB1~_2A4&E^>uZqwUdC&5jCD3HXR)|CyyRw&i?&a1`eDtFMA>*Uzt8Vd;(lo zS&80$J7Ua8@w_+beb8ko_xvAajrpT5PMN~WW5*bPsPy50Qyr$j%@q~l*#O&Dt>VPq zy_k4>4{&AVR=(;3z+I;j32ts_x!@*W#x}s&c(dENDRmVUOx(7u^crCO^y#!8Jcx)bM5CKJ5eRxXf^4 zE}Olx=Mb)hTfoYdY&dvug~AKbv-sqXfuFSJ^W60M>jk^83D2wO78!)Kqm1elfmsR* zf$M>x<-`IJS){5j7ZZ+NFacJlQe2l#vmuo_5xI#`y%W#-5vnXHGT`#H*|RyJiugW8 z_1#pk9@HQ*71ajd4&VPflhyYD9X5hu+xbE)fdR9i1@JFaV ztiaL|sr?u0>hL^|d@M%X_kSPNy9u;JWdzm06LH_a)dw02IQJ-+0Kh`A_N7Sq!p>c* zu)b~K?kC7Pjsm)kF{7<&`=xRaF6ssR!}#&2DlUlJjYUTE zBC8xcYpm@T;R7sgYojrp#<#Z1ss3=skResTKS$(Tp~5-$Re--9J-YWApy!|@1wzt0s+64<}=B3{7-H9&K1Em~6p@NkqS*%;I8 z#bT3MCQRUylO{!u1V;5(g>#dDFZKIa;HM|8W&1@Ah~%QHUv)kr8zboMoW%3yy6*11 zCYxnRh;j6Vo-eq-rTl#n`7uG=g8nfGRZ{}3i!b0IomT_Q_B;|NP5`WlsJ}ZDYqxta z5)tZ6v=WDxq|-szmdMYIbNw24>O@{TT~Wcf3q%r~_oppaT}4McerrUddCx{pR2RqK z)q|?s){i-M7t{vz^*9)5M79H?`^jv+e)5zlt0z4D^rbbx?^RXNl}MoQw?rQa71@+G z=9)3i(Og>_xdAR|Z6z*pbaOgA2I!Y65i0W6yZ7zm_Mt;BtpS>X5U*9xuUX5*YdULZ zh-&&5r%v(rM~)P{R|B4?s*0eX`ztDRQYHh&@bR`bcG|uPBWbFwCFyw;IXH<(_*u{* z^MF^+Ju3fg0yH#;sICK+P;LpXe}xFkE^!K0 zKtRY*;Jd)1lFPNI=RqcOSzgD6h6V(#cB-$2Z7*pyJ4mzH+_D1)&Tj)aV{jt(m8q4sFAyvIgRcY#lpe}-i#A1h4tSBV-|c3pifFC)^KwN>%C0Y?>b9>05Tp zm{D=jIV+l`fGl$lGtDaLT}fQj$R7E2w^JMpYGSE;EthJQ(MB-dol6^-~pCecg41 z6JX!IAX!EA-q5BUMjLAE_~E6(y}&ba59@M#di-+?%)50bayA4i!=;X1VsL@=TIsP+v_IR zGykT!ww7^0z`&G{2yiIpd2RF0Igx4%QnpX`YzK!*`0^jMzW?(z)25Z;+piG#hhmTS zmZsBaKEDgtACe5Na-E%QoIf9f2=7drHiD2sy;b#Vp0)n@CaE!rc$|NoH?QE2R3s8O=l&Pa9)=)nHv4;icQ-~wP?6h1BEXXp zi_zH9a?w9(Os6r>ZeV^%w*$DXMBh6$=lkDn@9HY}1M{|R!vwB)I58Ni9|bT8-v`yD zp*&OMQCndCT8~X|0Ow{B+|-pDK4C?M7Gv6HlSvf9IUW|d#m{6gInN6%N+qWHWHHyO zP6YM5IYhAjKmn*!_;6NnIC=h<1`KN*%cpvH_as16TDSV#u5i&JDuI8p<02gQMgGSaQoP z#eU`p0|!OLJ62gMgb<#u;2R@yI)n-Enjd|%@NA>tih97*c6YF+m>YqdF|jZRAgXzz zs>ef^gP3!!s2e>ISvyb&P@hh(?yf4lgN|66B!u)l5jkWKITXSi#H9#tV~GgrTqorj z2XHQqwKX)*QcSe4Y6T%wWmDK^2zvaK8VR7X-~tXicAW79HVyy+Y(bUJ?%7k&A2(ff z6;7lw4DU=t_8Wn{Vb}nuUZF+Q@{u4sYD3wJUu1P-F~ysWK~!tQumMm#Xf$YH9tJ+7 z#YEu-uHa*3?*TgZ*k2VQAwBeW z@`=Ka17-)7&`ID2Wk`So#%wn*zR=nPE;s`I-H^8AwbojUQ^l$N-;gHdRsmKQ5h`6( zT}?b5|1?3CP$^K#_`A^#HYyCh6bUxWnsug`btoD@Rez>{NmxtV+Fyo5fFV}oqs1Hv zet6?Xy1KieL`9WUPBj5x>S*Iz#d zgwkD6RR6{|g<9tjm{)acieE_o9Sb%-YXWf~1M%+qR*ecRf(b{>Nj0jdGstU}Mm| zte)^{3Ga;!8Nz~1n|e;0f-!?CSz^3EuEgy*V;;ecxNY#>GV>d zrIg!&gEs`K&n{or4QK4IuqubH&*g$^76Z_@V+UePc#R=cugAH?>x$F@+xP6Dam5O! zstfwkHB?~X-o0dI&*pR{GaGoZgl|90!5#zSHl$MW@}NO@BDWwCTBU1Iz5lwN0v!gR z(irlvgD_9sM7|-;vF^&kyU*SQ)UR1XS8MBDYwZO3xUf{!wrvcH#ZY6G15G9N4mJr4 zu@fhP>Ni7lPv26JJrmEa5|(i;NWT^N?;#FkxiRJ=UN5>{|GcJ#L?Us5pfArWeL1Kl zyLS`MWH>f%+_DmG2lQ+QyVbeB2WEt}?%*`tZu_+j;!R5u9_!t5la*)hmHF`eI;>ZEXxPhRmQr zD@wc_goQ75cXjExuF1Q2Y3^Lq+JwvHP7!h!Ob2s}>b519(U{?h+FEL2G2*!#nn=t7 zZbRfAR42OztcK5Rpzfa}bh6X%ULQs*UKEtZ2HUaa>N%|_X3}{+v46PuNUmZR*wY_ozBA0ronFuL{QWtFdF8 z+fm{BcmAJg(`c@%i_DBVVCI%BEE+tRiRttLN_%&3S@4XxuA-)fBNs?cz2Lokva%A* zWL~F#lQU|7A7aekB$CNk)AZ@A>-&Zey~ePX7G%*P%~`vg(#8|?7VBTxv142EB4;cY zy?)#fbP=8EV0Q#w=79CQ1)_Rz*^V92o9R?)BoWJKjs^D(?<~HEmvhm`oV6!UqOb?} zS_Ix_yl3qJRS&ze>7;*1%Q&<0JZ6l+tdN`hnbDB*7{yz}_6i-%5JG63PFR0?0U zMnsMhW>2AuBda2xH>!^~k)uOvYWT=2uaqpX?_$CShDwlMIVwWJ&pQ~M@Vt`?FVRA` zpa_(v;I?j_sBVgy>J|9Mu_H%*=B?w$G0w3xXg^cZ`YK7_`BVyp!6s-g8>vpK#`ER^ zTMFr)TySuv$!0eTJQ+0tD17?h(W4p9xitnpym9hm)~8Z5&zxDZXFeYsmsc9tN%Y$6 z{?Zz=rHBPo;7iY)%NXZ4mCe3GSoMW_kDmj-5ZEEk?XjNMApp*yB6zCg6A2`nWm#Ks z+3{zo{Z_&Y;w%(LJ3MdHm7SeT+q<`K2>`)8fr?xMyi9rFG$POA+$$=w%~Rd$$K!`2 zpKlkD?m{kuhKcZaeLV_8OknLtvBCE8B~zxn$Ww(UdKDdox}mNPCvumF+|R&(6heTe z9=N>Svtt>9aUMTiC4sfd91OAQo2$}+eZ%8Z%G#MAcAwFZ`@dxm{ zqJ-Zo4FK@{1q*2C>LTvkRt<7E2c!lVA;M!3SNjTYn9k0rjr)6-FVm|sB;VY)krPLb zV2xQpSlurB0gu(!pRxAS5#95_^Ax8L*qx`DFl2Z_Av>h-AoC<-3~^JAWOS;D_; z0=&BqdES00vk<8Z;i(?AFHu(eu+)ic?~6pjK1)X2(9nRwTvT5sgd&Hf*aDhSAEi(mslr?6X>QjXQUus;^pOCTp2h_%v{~+CLgm;XCVGy^8di@cWbi04jo5 zd%zQ!Kxw;w_bFcNIppa%-i@Bx7s;r|6=KYuzV4w=l6>@?^X8EnH%>O}-n{`>6!k5@ z1!{jM(d<&PAyZkoJdw})*PfNq6=?zhyf9$`$-#rs;MDL_QI&oLNO!PhMbY5@%zt0*0Bq5C{8p?z(C&GBuqC`qbQ9)V-rUkc z%g&wbuC6{TumF)ir;qFWlo^ho`p4?~bE{ig4zyNQhARBfHNd%Onl|lBV~DQ<_Y$3` z<5D9F{2*`4-ErqwQba?Evep3SV(G43K?JXJUsmTP2>jhZm%OU}7lDbsb9Z;eV*FJ< z3cueqz}aYx#W+!03!Yc4&i$pT-bJ)x?Jox>5qUuK`ETKQCo*&Aa>Gx58i|2Pl< zwXTk?pm)xns>s&~+Q`SsOz1vvL{vYg@H1Oki9d8GD_@A#afn29_L}SJaK@0Wu9jqH z=U7BOh3b7}Ab2P6HHH6?PbLq=vsqQ=SlZSW$-zoFETs+8r=zMQVli^L+zJ)BNnjPQ zFe+{w@Pvx|%7^BpDk?%_1dCggB>~RGx~Ws~5(!*Y6=X91QB*%h5S&`w^RHCzr35vK z+fjX4jQR25_V#}rJ!lXHSX2fA9}olp_{peI)T!b|jY6D*c-$kOuMuMgIp^ky$U=c@ z6c+T@5WPW$pcL(D5n1D$YZGI-$miP;@g){xP$I#BY?cr7vo-&oBfy2Qefe@u96E#v zdLf|%aegO7hI_t07-NQr$RJb)>6vC(B6+da$Mdodj>KcJ!>D%pz8@@m5jghCvy^WFKY_`z-z5KOFK=sJyraZ1s(-#Q=E;U$@VuQpYIif1Px{Rxr>H2X%yn^ z4OrWhHK60}>9hUP@r~tf*!*Ypy$WA|%M3qq9`N&dVf(ZH=;`w){m!;iME)zr9bsyWR^vzq(%U{p}!oSEcW*@#K5H!0-1be#73) zhgJ}@zzpyspSj|D;~smu^tgJia@ZFUo6r>RHj21fclxuhapG5Xt@>=qS9?`{xA1ly zQ`lnYf7>X6l5}i{?XqGVia+h6XUsB8pjgE>(q`ga+pK1q@Re3kTky|FmiL+&Lm5^A zxjXkTu`8V8#>a?mAZryti}u(E&zkVrR;V z8GzgqYE}qoXj(;zIw}zi&6YqrDh(a1y&=bXm?GoG-twdVSq|xH&8l9k8<8UkR+duT zWnqCtn;ZW@)wMW0oN~fKqe{nh$v#ERrCvpb0lZyVb?UcGMRUvAnN`JsMRn7f&YAuF z3I>i<_x+mgm0#>JGz8Kmdz=6Dcr4o#pM9FPWwu|u_;Xd4U8=gKu3sFX=UU$oW9Mbd zD-m@Ygi4O@d5Wqc?|ZCl^`_fhv#vw;#Uro3*~QnN0WZ%8+6ac)F-)o*H6LSmwH-RW zj%bk7WjRUp84$R&;{YhaRJLuAY2{4SY2O53m^hX7c-*=$E_v8u;>a!H{#{kl?|(dSW)lYCZcw27F+VB z;YJ-XghSQK#xz74j@!jy3*IMZ^hSy*wA)q26@j-V=BFGFK3JW19QUhl*w)$~EvX9k zuPM@Hk9BGDc}rFe9TE?`Ew;aMM|>JjK0*p|FBgL7GB>yC^E0N~IZIDGdm@@zJT47d z5m*qKops7RmfStJ^-Q~+wdLKmNe&C+jl*~eG%iF>S?~y<+6+kgcUK}l=&H<73+jI9 zd+dUbo7UUyTF6mPD`?O!u`FzfnTHan+E18JRd7gACHB~AlN$p2IM&7wctsqO|7O?5 zasM`d3Qeswd|g?o;;f}bg{Mw$;-^%mUdV4ZlrqAI%rZvniw(6mQHJ^2Ljg>&vA%WT zDlUe#!CuO0>syur?U6aw`VmK4-~IIGpaUHUjWtP!9Vh zZ9wM$bg$J zPjVTh`qYmPy%z>c^Y61A&dNpmofi|o;VtRxk+&Crxhwtww?#3|KIkYs?_5CIdy%%U zm3vp%J|6h39IVfsmDw-Z-QArT1aKc!s@Nk$w${q7%wU{eS<|~v!xW~@l8f>Fo$J^L zYZKXA<_5`hlWy)^iX#<=R;R|J{6XLK!Z3vy0HESWw2#1IW}w{lnlN8`=9w&jOjBFwr=In=RDjsEAn*iFrc91j$w^ zI-LjSUX<>kkjY((HxDptQpH2F7*HWf-?N(kESRy!)%2K8HCJR*cmQaBZw-b)Ge;=w zV+@FiGvk0~06)@CuD6oALZm$iu)W(~sW^o)fYjacB^HagB``Of}|En_8tJ{4-@ykw$k@YFUJ_ zg-+G<#8a8VI;_Yy@WmlzglwJU`!U{1vIRBbMT-mN>!_Iu;>a2!4f`d4p)H``r?9Ya zZy0YDuX}p?IqX9Q`rsiO-F^MUTBB98*y|+QeB59YDqU7pNKXkyS5@J3cCHW_H`*wd z(l8QPtH^!43{%=Uid66DibVA^V_Qf{`e|}6{cbamZ1?q-p&z7tMRI#;e5Z^HCPyk} zEVr~gwaVhe=5wE)=nu#NPo=|worHRT14-;s0lH5X$ql8tL@h&|zX%|kRU#s?F$wNh z{xJ2>6vtIbmj}fpFQc0JSoC?p&ptrcir%lnDdEtDrRtqfb26!jnuaI&3p=-oBI3S9 z={E<%PVpB;CGZ|_tVD@zEGJJ0D&}Z*RSq^dJy}UIQhA|S4?GCTz|&|_nfW}@8>%D*bHfi!2}2ZvvjU@KGP)lq3nAa*fmNXC@%D`sN8 z3?pT>WyBl`-#~pI+lVZ&q#WdBMWJ5wup}4R%d`0!T-&GFn^{Q*I|D&Yv4}22#M5Af zKVQPQYjaKF#F`B8m&exT7OW4&DSkls3>DLT;KFH4;aCdrWrNQregfZpYJ8r=1l)Y5 ze(z2kPlXFgRjEdZhe=tykN%0->_pC8{Ictjr_$ezvY=g(ssN?b*Hf(@a6r2uk_r|V z?jdYmT+|VKxnMxJ+Tb`5U0ITbPE8&C}Sj^ak`Efm@G3f#cbD+sb<3d2y)e8 zY5RWtZ&*sZDgWpm9EcZs?2`yWTS~_8=oA@5H0D(<4mUz^Ij96rS;3RXAC@!*W?VA0 zw7F6{9))T!OXNmm<_Q$l5#J}#R%i4p=FIS6Ma;v&8HG_1;Bozd?r`RC@=CvjjA*85 zxOfrhisfs+z$=pW1B`xP){G40!vPb81udv$*%AlAfoO>bl(%SU3d;+4Nx_g|1wR(S zY2fLwbuweD`(P)4sUHW0lLUCCDGHuSA&GZ3rX7dN3-F1EUO`RzkVYYcPIOra#)uEH z4-N&8?1`n+=x0Sz*Cv=yI|Q;$BtB(dS?J7Q2@uuA0=;rRIfighQvlT!b0$_8>b%zB zS~~~mF+d;>k&WJbqSB<0T#%gv91{)kfk_ibi9)3;u(|X?DZ7}PAHHH0DjCj#xDR)D zV@y%`$@O4>vQM;;=3FYLpgUnU&>t0Jm5f17I2do&K8iKUfL75A=ZcZoo_&Z)C$qAM z>o@_iu~_t57ncIyKs#{l&qrb+nI8Y%O(-D{hN9 zN+Vv<8EGvzmLVsRX$C*;ro0~;)R4r=E*xl^F5#&bAbiQ^X!E7NR?~|2n$ylZdGVi9 z*S9jW^r=zjM%x($cO96UScC_;qT%gOmNeUYu4K|Iy|J@X`!@w z#5vl>PNb2D819<>nT(2;Rg0!4;Ji%hX1<8wT&vEYqSC{Nc+e|dQ?isOp#kn5jUm(- z>O%;+*;_b66sqb1=9~mru7)SrU0#%uASDkbdG8({E_%cW@A!J<;av^>c3O! zRq*b^flU<0uyraekqQ^8?n!`g@4lF>UMG>ZIDKZGD4IZXFsi_9Q@2GpB_=e>Ne>p7pR^9nN}%u)nwzM_X<`-EYBXifPTq(lmhOZI^Trj ze8h7hhLgXw4Pr09M+v0@z_Wq2%t%S_s}LBbRWc4NfCIasUA-Myt`su(<6GjK-wiNu z-620%ETE*);{fNHVlGBRxRSJBTvnUvPRbwg)!&9!)gAv%lVTZyz2I*y(Y2OnkW3PV zFwyFk6oX&gObihJxi+4_5;V!pym*< z(L=hLSRf2rv(0^MEGP!#VA?T>*N_jREA4e3RQYQ znI`W^wPhhoP-$57lWL(^a|x%3WuJeat;A{D(q_FQD_Sr`u|dV3I%VPc!F7s7^Gh-t z8%%^IK7kx*9;4TbIqRbzq3D%1D3IqjR&p#Y2AfG;zYThnUYnaICj}w$cM<&X@Y686 zKe@~{X^hHe8;W&c`bMz>l0u|Y0_dl3G_-1vn5$ZIa~x305fg(xd?yic1y6sz+QeiH z^R#%dq|QpbPogJo7soO%{r#e?;R&mv$5KsFF57Hf{(}XE1TZ0aKtjUFK3;IbR{SWD zfrKeJsu@T`AVHKLtl9=#AXN7K{=?Qy@HdGC|KIdb{qptMOCeL1W0WX}GH){oe;Ql- zX##t}$O&I>{vsf`>+gE0y)TIPyc)a&81FA)K@EvOxq&hyZLb&SsrjT)kw08@&teBM zvI_<`H?;Yd(c+hk5`%}ORoXuWN$K6-H({2&ApJeSS_V>rX3&V+PRcgkF4D-@^`-J? z1nR@JqIA8o3#%eBm7sizZdjg&rWkYs`_q1+SrXbL(0xA%#Ppn2(%pF^`FdFa<<)J= zq(_5-Y=OiF8OV4cEG(V_^=@U)QHZ3#ze9xk4Q5^ltr)|qv`in|O#ZK(THt889p-QG zXU+ayvbixwT^qCpn_~N=zEOuANe0s>ryvj=aLiaLdU@T)LHK1{R;7D>&<|=#U<@k!nS0Lk zuQNVb{38-8qOvZwv{cmAS{9E6-1Q7mwSL`x`rBp6yNTIk*kNG1t7RVZODK75X_phf z@asS#1sL$ui;Ex>Vss_@CWSmiMsdp`5D~w9 zc>m$$2w`2o!3u9YV~?iCXHvHYk#dd}fctTt^bHKM!Qm82htM_%TUfDl%ZTlT2hA31 zp=a$JOkqu}yjX)|Y?ef*eGA(0c`6H*^}2COqAo@y@2P0vZ*Ix7-_Kv9G%jAF3QPo1 z29Pux#o*wRQTZHP5-LOKRB#s9TEk{nYLQ3{L18C!QfMd$y%DqW3m4jhH1m^tQ&FNfcHXJIBM&!QMNHKgH%Kk7e1J=t(=WzeA)ZID(yE z8=L=yOR<)&ggwL{ow=aw<@p}Raj{0`m+dZ<&G7K^VjR$PST)tW!$TwT1qQthFt;4YjHYno;@x>SA(RcL4q3ORk~sY7HSHZf#WeaV4O`>GL~Sp6CQ=| zOyTjJr+%d9^J1;!(o{Mr6BRDB!S?NCPIN2cIKWQBdzOJ1u0ce~B{w@S0qg36=jbIx zLzvAJ+LonA94ULZ!P$zMH*C6tK93H`NjHKG_L_ zo?a+q3hIb#hSm3}y;G*-Dt@P4#9K?ru<56nQeuYLo7xE~JwOXlmqIQKI z1OsL#*C+@&%Y!%suDqJ_hu)NcUc2P>{^@#9)ej1O;JN!??j_WeWX^@T;bh|!Oj0!= zb@W0Ee&J$x%roNWJ4t3$LOIH~b^v54vq{`aa+HI)A6Od|e=ZxUD00QkiOOMKh`s=$ zbbKSP1fU6RcM>3HB%ZyR(7)9bdPOlKVtN(ak>bev_ab^WZ^mP<@tAxqRXvEAwUPA9 zKhw2OB`bL{r-D|&`6~orCj2hpC}=ZG#7oEsZ68g#I{1BggpB3@X0cyY6=y9k3_Aun z)CvIk%pn}{cqyzFN|#c}|7jPL;%5JSC&*bWvi%1Q#~-F<8_NQM6l)6apw;HwvRr!u zM+garTQV!7+*lHtdRZ~e81%2;ZiVn!9>dMj-pha0bkHO{wCN|Kr>>pMxG?i)nocNS zJj*c=$*DIb+`)5=0(*GBH$l_|Uizu&(w|jmzb*U1lx#@hHwp26lWZ&Guj?sj<%`*| zz}<(^epyQz<-+<3moC~!#%q;Io^Ziga^+Gx0triDbG!fto_2&`cZQo+6Ka4@Y4Fxd(^~UMf5@0H z$%&rHs%-MFlND<2q`GZim5#i%l*yFq8l(+{`VvDPussmdbcIpDT^7kw|6p<3d#Mn{ z{R!$7LAW?B9jKLMJp-c}DW7k{4<>cwIV})r{waKytYA!!9{qUhWk0#KG=gE0z8lYv z@)_@|q@J6ibruIC$>DIx_MaE%EqBA1A1MQpBYYE9nf&2Tj*gH;HmdM}E9{aUvDAso zGs}IA-FSXG_E!wATv9E8gGlZWS-xU{V`!ZqnzMsQF}rSdUY%!jr0gk52OptMI9J$W zpZDy%WD3%emA1`=i*EdMSa<4!yg%8)NxTUEf))q2VXz+R39c>HuJT$Yn z*S2nZ?oaf6ox*aLlB3C<6fAvs+326DikDE!Le?4ro|(SZLGl~>wV-ywU`Y6q9}V;n z#VVFizsm;qAj?bJG?qQ-?sIVoR>t!ocwl`VV9wESeiy&`-+p=%ze&k~P#lPqp2+w;|maP7d==ZK+X7Z>D4lgLpWjZ%^`5V-s1Z+f^*+DRbK z&q7k6zFFrRSXxI)wCE}0$>#r0f))6zVc>Dt|E82hQrx4Z)Ajp9+J4ze@06CR|$X*hD(S_vU|fX&E^ zJQ?&>7_!@a<4mM8uN5V;lsGQq(PRToEa^|fV4>%Z@iLpACw32`xL?ysOo>0hVAk?3 zv-M;j0RXU2Yf(`pX;IPtzUtRC%xRb#I zlDyJR!o|CU`MRx7a-O0@t7vG4j)qL3^%MUloi$82<{%&=@UfYdsNM~cn$*vZxZpPy z6{0JmNn)xO`;zW8419}e)TwDWNyQVtq4;~+9#T_plo%l%`_^A1pcU9+TP@nXzOJ<3QwM(H zw$1B&$Pi{cQ*P^n=tBOe+801|+-n6R4H+C}a+FM{8x zkK3+4e>3QAt=OCL;^_XUq*%vcQjz6K>$kI5K}QUgmg=!X9b?T5G9EK)kY|-90Sl)b zWTh~MH8vE%Ndq$pVQ4nf^|JL$O^oa3kTCkPF6Gg>sDJb-3NB|-r>6hA@>HPr=;SCW z>QrOXb*B5N`;62goEb=8U4g5dHbqnc76HyR1cppnBnlt^CjmE7`^+B^0=|X7WNt$N zpjk=QsslGCyD-EYT^OHqw6#~4xPO_IYiXfE3gg&Fg-U=8h3+lV9G;M5!SB#86GQFL z03x3Mo)Q7p``++qAL!T|$qP2;n%L`aZ;=``s!vnr(IACU#jHXjm&V7H+oehrz?`8i z0pg7q#E}CTJn=KA{CYkK2MB}8(rKCrS!1DB$2Z;s3@q`$!_l}1al%L0uVw3fpqid zmr%1qVly_AGfQiaHq5-cP{Aay!LUdu+8sv16ich$$Rej9?p6WFjLNEZFmn)MZi<`X zNY%Tz|GR8igEWnXF}{A z>pmAA4O#AcpbrgtdogJA#5qLp-*e&;v;x(VjdNrsu`%jk{hl;oL#QEk1fVvQY_;u8 zkU_c@mV}KYr>54kn42GkJj(#e+JeiQf{w$Fum3!a`4RrNkjzh*s!E%Hoh_lV(1ZkC9Dn;55*#2l+C{T|Y z{GSYnQ|#=cDvX}IfvYMx;=Nnyq(lSXTQVL8x_qAG~670+p?yIUowc!F^?i%r;I%e+b~d^%_Jt{Sah zNjGCb3d5olX3Sa5Kdkc0G^f^$d5szyXzliRCy{yAw^!Q4tAStv$dmJun5SYe=MVr? zsaCk%nXWk)`4MjI(L`A;-E@ODYllgUie@r9EJTrH&m^G2vFkKG<>M)dIh-G)~#rfVf_ z@nLavG!0Zp(l$s3iQ-}A_~_CFc}hlB4%^8%m#VvDN?WI$ zN1pW_$jND={M2mW&Hg@Jw1R&sQT*FL8hWVgIV+afVyTKz8ErG>xqx;oToHra%UOc! z#qq4HdJ`m&gk+d_)v2k)I9`ZCzc}tEeck=&+$$nuNljfi(qDU9XjLU*{y9#xlvUGI zp8la2846g2MgzIcq2bc{W9qJh=yX$_)%_ned3m+}G@%eFZtZ-v0F-*`l0&o=O}BiC z>oG9r)O}5VZO-_YgkVD@K)xRo1RBeX8GSfxH270GeBtU@tvbucW&`bhsFoE)^m#aUjy9Yk?X>20kDbJAIoeeTd;qgCztM`h8&_U6)YrWB>=07NZUp0*zZO zpXmDucJmK(rHj@^0$4)iGQ2jIJtdh|3Vw8{|A`H$X2qwijf;;FRRv(~9fsIeZz&MkW5HZSrW zEmBK2-DIYgwkli8vU88rq#+b@bLiP1mJ5M4Xcq%TirdQ$wZ;!Likb#`dO-;zIl$rE;?vDi%WC6<8spO|ItFfSzw;q> z_81^=?eX!zd4eY-(jw$o@wjudNiDLzY!jS}QvTmo2!%>GdOl$xPSTKOcaN{0zj^s| z>Q81?$(9<#maACuPP&5e>5Ck^o`f3vie^EBJjHR$_N3%D@GIe=J58=C6=8fCgPjyr zYf4rzF!PXX*q0%&5`FB_M-Esmkm{|T1q;&uZOm3;(72~2R7`?S7TAj^4h;a7s3?kk zr7J_5O9ecB`Q{;s?i2?^0qOC)=Pf~Qj8hKqsuVlF_u$B8KXi9HM@7RVw+WR)P|#V2Fdf(mNlmZs_2kHw1g0R6e=2z7^@U3l6;vPIIS0907mG#axL*T z@EWKjy*)-yOj{Ky|Ep{Oc1m;FLs|52=T``^tTrToMZE5kJ>V2zM>9?j?hZ;dxU_a4 z+4&^wL-cv9tE&hO#K@Q+xJtzAA4exw>J9Dm8YsSAE{t~Ive9+0X7WZJzmZKEj9SV6 zWJ&%-L~9MYx1a487l|7EIRgC)F2KpSs`2jQUqEh@C!E+Wdn~U%LTz}mRjHb-{@lo% zG9dehWp?6)r>yAn1>Q-j%a6=alIjidyo=^6L56{ep%o}uYFNXZy8#%`ey5L%OG^(BmI0NYewe}= zGjsD;u&B@L8&HL9wac`Q$51^d=TNCYp0>aSKc@dqug~aN@h>ru07t~g48fg3GtMwr z$R}lWzJ8^S1UE4^d7z)PT@;EhjPu?T6iC z(36PZ;w%>Uax;jrRgt0@W}7hnp@f965o#=3{Wt|w`0g0pg#$;q9RTADQqqqq2J-15O$*n+XlZQA3N{> z6;Aa5W=6;PhZ|vL8GSl;Vl;iM#{u`0m-x0e64-&hzeBijV(Pz>luoe#Xe_B;J?hGG z_44IvZpi8(CarwYxdAiaZES2F=MbXae%{+E8~I>4M7u5*f3~)w9`HGPXc<8+e*MdL zHx?S>T@VfTn=_7iqimL3qeEn`D1;Mypx_7(FDI4TJ8x7JMg-EYbY|C@s&fR`r}|}@ z)Kq`705&wZPhedtNX+l z*b6g@zx(~YGBgnzQg}?%ibBp6EU~jm{)N26OTT@RLDwf*I z055?msPV~sjMguZ!cL^XG)65{;~hJegrgJ)uQu)F8KeSYJvp(TS++Lu3}%Yezzda7 zcet?Uw?Zv%bP!VOo{e<($b;RfOXT?QM7=%(1Q_F@Z7zVS8_HS)niC=j;e65WEm69v zlBZH7=@2M+uslyvSHCO81$8huC9{CJZ=_Q*ovV76l{^z2d^;xOB4VB`8Hbt>f9((C z?hWAv+e(#+A7WJm!Ri=dktJnvX{RDV79|NCfe^#X80@gS4f#e$$O|BWG!bRFvu6mu zsSfnt9>#Ec|0qqSPJewb8Zm2#$?V0Kh%h}|DEV*M(AkWFvu3~m&aJP$#rcZv<2wo| zD*jL((p1?ubD`cVHc+2Mt^4(>~j|E8|Do>GJ_f4ybxHX5?}yXftvM@g}cKG*x=oSt*;+3)atN_ADUpD&EHv7-l=Q3gCh=%BD6%0q$+Tfz9#{g0%F0H zT4oeQw^{bO0UdyIvm(!^XL&#^MqO^u6!P3*WSM=9e(y(I;q=kJ)+z*O&w-&HG6s1! z2SA2#5)1e+c^8Cs<&1m;9AAEJcjBxd9?FX~MWuLi6UMc0));iFc7zQy`o7$Us8O+{ zrew+VnL&@BF;A271ZPM-r5{NF=KOq@!0O7kEj__k;ENcX2(nXc;*f}YY?dn3eFio~ zlWnSNmblZi2Paj9fN*_c07>v40OqPsO=Ob09)6q^(LP2%ZLk#^_p}9-w>E^vRC85p zgqjrv;+_b=Gop&dAa?!Hj(}#%FJlOL&aqW{X&IaC2%HKC*!kXOzIl3tfF52C-j~D7 zT`212ElT$=q}1gTR--r#9w!DQ?sEp*e}u0XIz!ok*C9{Z5|pOdw^pSFTr?Uqx~w%t zwcB~HKv)8PoH-hG2jd=-9BPnxGmgH=h1fgJaL#=h{QCuhv(496a-$^y$Lf_MlE(uf zFh-wUu`l72{%rKwEvMb?kqdPSk~uEW8Zh#*!>A3IL3c8Ye=dYx_h&-1m;Pz3!Rn;& zc{*SRAn&?&MqM>B7@3@)LH|aUC)cB@R0#4vPPVyHW1F4K40ufpksuU`QI2e+Hs(Yj0WdEBQ%QG=j5@6Z-A`R=jN zf&$aXR^XX=C>Z$M0eC*n9(t<=^&x_=#0w>7dsuVofS&!E$uRt-Q3l%%Vz_`h?BeDI z7fc9tQhf1`rMNMGi1R%bV0txoN`TdjbW<>|GGk9~&$OL2<4UNFtHu7&PBHy!R=EOy z*D$kx26L=C@}2DQ`YhkqJ`SyuRanQz^M+7sgX)ZI2ohF6fe0G612NUk=dD-EoGPKA zvU84X5*R=cMa>K{Wia!&C)9fDkGmfsqO7fr1juaE(LW&iI6-&ziA}uAyh0TI5hHWH zw}(ZDn=FvpfAmF%9h}po(g{T)&!cneYXpl7s^!cqb0icJTkwx?8WzG`YV@ov7s)M} z^M>{h?O{Lf6BWyYjVoodj6XR!^+ul5EO45jfcUlT-8#eb&Cbaq@HsC}g1mC7nBN(z9I%T0s^1=xigxK5eW9vacf*<)|%uF9cos54cPvM}wjnF?i zQjRs34E9P@n&EhRmURmv%BTaK^mh)pT$KhA_o~J?|64n%bYUjM%Al{IwS1|8qusBq zyz7k{Q1e)W>SX2W-fStmCb!>GZFzssr!U6X$*f`EuUS}w=@lp?3(B_9$J}IDILx~H zto1AC+hGzJj~4fuJuuxeUnwSNkig!`v@w2G_8gkxZe!O7qo+5_t~8c*`-vKmnf3=u z(dYVO_T2*x9YqCXq2qpPUX}2rrO~A89v2pm=nJfB{3B$<4_l9@+%})GGnc0_lv(O4 zPgwxzaY-AQlrOAJ!5p!mj zIlf|~Pv>x#b(UMwVn97Y8(a8~%-mzmwz5D?CW|h%v->#r_yw3iOnM6AAWFtZiS-;y z4*XNXZ0C9QFQw8ZhtK2n_j~Zeu1CwJEDOpPk8POLt}tkB1%aokN!j0vVs~G7v%YwK z)~QyBkjqT=-in*aff%DHvya%GSLR?|mu28*m;^9AI~;WrT4plf)_I>5ZosI0zV_@F z7HZiD!}rTmR@r%o+YQ(((+|>({7~58Sc$jNbPe!hx97jto9%ktFwah3fgYu!akdO5 zC<3Jw9cy=f!l07e8TI@(@TmKz?@Ha5?J(#tGtE~4;){v0)Q^+KXH@8kxjD`)uI2Pc z{RI*B==s26&@#ZO2Z>p%aA#Psn2;R)X|tuHd{{O%!OItC$Fi+W5AT@^CM$E6LV~09 zyhrMe4|_m9obXcmv`+K*GKPPp;ei5D94GVDhRM3E@5y3DFKt$T=|y17n^Y@DrW}|T zKk!moEm~x6^KUp(jiMQs*iivfxVX}{g`e_?(Z?)L)5GOQcb6aL-I zQzO2yTTvDnh8N2|cm_aUf2f&9K3WP@9KE;gwn;Bb(iI_yv$j1hC2KA%#$E`foi;~W zTkJHF){D)asxSpM15_qAz)Csj4izGfs|l_jujMQh|Gj+ITPEj6B;2oguZBDx9^>Z& zMI)c3EQo3YZ>kpOhU{34066bSMKBr%7%_v+IblRO%yyPL0sT2fJ6Mtx%SGMYo8+eT z_u)wRE)nXQC=0Ba#&cTd%pN&6fOwNbTsb#-mYH|4!ojYsMw|KH5A+hTD-fPf)ENxn z&T6^l-MfdInKd;$WG>Bo!(xgk!r3k`ksl&`9#D2OsNI}=$*XL3D|OvI6BFbhb}S;~ zSqfSKY|avFztc|p%Uly1;B6^H_-yK$16eUZeJ}=~1E_M%;02DJsAWA`d;?}V7`8GZ z0U`+9)wHXMOuTAZJrS+f{$%aRxkSnV*x)iEditVYr}r_XtlE0y4JHXRi8%?N_&lPY;09#p`EnHcRnt_tw@k zJQu{IB^b_=rnDCoa96kW(w-yM5{_%ZJR*Q6Fk63Z^`aq4KVPPs2Qp-QbgyD@beQiH z>{{lt7EVmih9&lj`EF(wdus85SMir72<+bx0P-Ja(a(h3bX!`VKK>zGfy;zPZVu3q zW9Vz-!1UL!U#|)U=w;j?8Hy%{jhWv>KrvJWV&S2wU@ncWMmhI?`bno*p=FTnn-AXk zq2a|hf@7kiP-YP%HfUihmZrTVd31HZvjb}TJL5VW(zCt)a8aWG`<6#JX8nRn@&MP6 zk&O1Nu{yu0xuzuyDK;LqI$-&s583nuE_JN>F7)|CS+ZIF`uA5r)Y!62T}=8q5}g3O zuNgism21{ApU1t|Ka$fuq9K0HJ#}^{mG7&8Xex@G**Z6i@jV%odwopEQEu%Lku3#2 z+kcd6mqJTbE9Yu?glK{>dn`SPwK*yc! zw=tnfBkx1t*C^@G;~4aFI!LPj;9@3aBFrK{0@MH+=4oOQVeX@is;TjfZ+am@pw5$XxPRf8Tzfd%2Dm0qj81^6oFa}Jj8zsJAlBuk z2Y9vG2vk!LPtoj?TmnAHev5b2-pWVu?c8eUx!^FeA_0xD=156h3fu)seJg>_L`bly zJpJVjieV%2>=#Zqp+Psd6HJ~5ET_D*AnMPFhE2gOfM^E!pzl~v_|PWpd!T62)Yi6+HaDH!bG+4Bh*P`oKs?*=bnK=BB$5I1Xi$r2fb%C! z=NelHZ8PjM;evn9R!e|N?1NstN<`SGr&qS3v|_{#miMQ3U90(aYbPIlJdezVkrKrn z&Sw6x7}-x9IalKh){Ou}-}X-Wg&__7d;zI^w^lS@I>JHo9%R+{-YOg;@p~tqz^ZYP z;~_>H)2s+YysJ}W&gk7=s(01ey^`vu*gx{We`EO4ylM`b0MgzCLN2({4>H9l*#wiB zV~;=#^u9>g`y1C-yPJpSmbm(_*kbJq!vGE}6zI9t! zDYQM0cQVo1iAFycSZn8*q3HA+KMSoKW2GY?TOINR&t6?Uf~@x%qW9||Pfed5QC5Qa z;~Sj~S!L)>GtKoz8Cv?;Us1MFQqc1Y1v2$S4Mvzu@&@{5fTbLih^FQ-HJ`Ss?(Xih zx0}7byB-{p#8y_W76v<&_HH@UgQu#x-+#60#c*M_wmcrXsz8mI1MRJqK`6>2HYmY^ zW6rAe$q#%2*m@+Yc9p(Ia5xK#MD`swu73@&4cxDl-+RiA>ZQUZ$83Q4J444u?Nn;2 zDtO9+U`I>lUJj>FfSp^CFBM_b8)el;QwBH8;U*(-Li@4gZRV8LdWM__mg~EQLS(1} zPwwNJUcDQ9&(5>@WxJN0q895_TW4)SNkwxN2kLwAOl^flQN9XA1B)@vR~@;#&S$;p zeW=Xa+t)cy{if`Zv%m@JcQ$UxHYq>pV_reB*6pi9@OEDZNCixvcMUO2yuzfIVLri` zsYw`VwyS1M+L^GCIx8SX)_KIymjxj-#ZrgqJB`tP=7`MNFcn?&@Ef@pY{NSz5>yVd~5HUe6Pj}m3fz-LCf>n!fGWk)PW zf|RN7qZ_*$1SHh3GUXg*DPc4UY|(10W8j zK?ZCZfAoeL^VRvjxNWCv;HT67Vs&a=cYJRv?cHx`zU8DD_k&BW@wp~!Xm86fT^oBJ!a$Dn50AMI z2T{r$GwfgXj#iG27&G{8q-}yf3e@IcjMWOM=_UXG+<|{*0itPuqtMc{SB@-{-nuqX zM}*Z!Yb z2bBS!AgfQk+wHy!zyX{<0NjF`oqdHae>4`KMUm0tl?L?!d1~|p)jI7x23EI$E9#EA>9%Gahbtk39#M{ zK*8s*BMLNT^nDV(Vb*-~^b<=B(iUd|t~md5L_v`?jAmK(o3t&f#aATXNy%`^Pq8M^ zuD$>~kR_LzTLrZ(wG9*2AHASY!QQ~d(wK@hio_YpzV#SBTi0DYWjq_CLzK;chBae; zYciY@RE`eK7v{U#4&ExMinF8K?`%q}#b}WUlv(@F$72mG;45F*hrjao>EdhFZk>n@ zV2GH7at>j@UwJ*GrAF#5so$uLhnA_cI&lY5d3njD1rfh^*JIz=Gv*W2L<+Rd^lrk& zNn%fYkfjsSa_rxDi37jzmac@2WEWb?-gX{7?9sJASY-abwgJ|r7-m0=M2y1zsZbr3 z0nHM$9JPBv1A?0*seRSs&U91PEjTuO`LflWWzXf-)>_EAwS&EMz`x@FFwC3cuP=#S z@w_$+w&b@f*%C7PdW#|;EX%Av>5{?(9xhde(2Wto^paGAQAE>OVoe4FAIf<+YaIav zhVyzJ{Ei5qc3-_G-nFInW6xj1)I!$Xy&7D>{pOsP-*ogtylc1_U=I2(iP5`qj+2-3 zA}qY5h6ZLhq=kGi8iu5--AtDU$|hhtP9aj}?AU?X2}MS35Jqd2PZ2-=D7aQu1k=kJ zX$g6fAi$});9U0q-~RHP1fnqIS5aqrheUh zKUp%*P10`+V7Z7dIfA#y^OA^>6R+Ybn?c0qc8rSEeSW4t1AWn4lo($x7YMHOKs=ol z4MgxAjQ)@kFJ2He3n9EFU6N&K9AJ*OuBhaxPAqN*0U-_u2gg3Xm8+{50B8Ru)sis) z8lUDiZrSdY`)26Ps_w!AP{EhnPG_8zj+H-qY^rP3lkqKH@nnlyozf8F7DIs2PtPh= zh@$@ov>-ZPSgN;4aE+sU#^G;J@%|0vqSfkS4eU)IpKh*72k@z)rbAsOFHq$@FWM88 zII9jY`}eqkI&5V)Bc*k<4A4zH)PhI5)E+3GlE;-MI_27+^HOynX=KcXA zHUt^9O7Y2dEV1mM!P2{!dg^5|2?ZHXzdbEy&u#S8#MC0^&p*8&+Gle&Y%39$<6Hq? zu+j3)R6jl4VxccsNJ89`|Mi?78xNDJuwU;=vH>(gBn*@z?s!l=?6l$K;pq%y~Xs;U2m9gZ`T#J7oZMM0Xvv)+&i`CP;< z{Ycx6GrQLSugm`2*ItsarCS$sTDh`|+Q^UFB!pz)_O$ELz9bb)3!-rl^oAbe4b z5$^0f03?=IQ|~@5*C%@y8AP5tc$DNg@mBxz&RBjUx@7F2{pOPOh%Y!FXTR-Fkb;Nx zg_mX&t&pWHUO{*nrAbW%sURzmc!-DBlN!+!Dv({S3Ayj50%I#u{YvN6#b)PGQyjie z8V83>eH{Ko(O`t;eM)NFAH7Rv5Eq>J6EOKZFbrVwZ4!uixJ76IQ}&HKqxSBGkTv_y zLzM*mBXPak%LD-VhUV9*Q63?fgA7hMQjvwp)(&bj#+=9Rg+}t9)}6@FVyuVZNZpDG zxp;&eCPQ`6TU)nzb{yxAMN!-@IfWnTmS1pTu zB>$7UdVYnLx7Q<#=5Gj+ve|%o9R$?Dg!CinZ@!;z5xZGpa}?GyYjz>tb;{vzsSz-;p zWfrJvcsS(ShD$j8YWP*4OM*pLDBR~B)$FB<7^_>YTp+U9Err;b-B^jw)6 z&wF;Empka7Me3+WZ!IW;p~Kv#e{|ah!0dFR`qq4kK*&_XY2)VYJ~-z;X;0?3W-tl& z)lk+(N+^O~i_8v(V^7dTWo1Rp3zVLKop`)m@Sd%-3XB3IVCyDEVgKZ zwed^g=Jj~kw~kxPz`jgE^Jz(df&w3Qp#g4|5TBdX&cshD>cC||RAq$QqQ~jSRW`}! zbEc$p=_$ikQX(y`e|UwU99hV<04BOUhp7>d7&cBjo8v-cY}XIEMZqm3XI4B+b z;Q!Td=7CUe?;rn+VTh3#`<57MA^RF(3`!~{L*v?)u|$+TWRz;MkHnzt3Y9%VmwR4lA+zn9}K*Ig<3!3W6`ZtPgl!-l9G6A$#g_LS?9hQv+GcX! z*~wo~!>=#dG&;kXAZGjqZN5LVYU9awermb<*Ns5axv_G*<9T`*n-ur#k4-i0BKyfi zgy5>lW)&8EZEEa#4S#oO98kiQQ91-#H_R(PzfIbY?^V40*If2`Iw)xyX~av>8@PJD zFIuv7*as5}m-sFSi!R_RePNAEYS+Q7QUZ^8uk*m=$~X0Id|u@a#QpObUKf7;L@jdagzlv#ZfE{~YH zw>6@$a?2pAS52+<3k!w=hQeuHIORPVGL%f}c)KuzA#6^N3=}SJ|*Q3jD?u zx5jU7$s456XPLBkbZh3NyH1^v*B=A~lpGChd9_d9U#VWS`BD1cKU**Kq$DjB6evQm zhO_eFE+6VQ+5`b&8A{&{nU781EMzpr@v^%eovc6i$nua5d~h66U=!tY2V6LplGO|- z_NnF>gY>-g!F&$``aOCt|2xYf6~EnIS%Ih#Wgems zDU)H(Kf=yQGo@1@ONM!;+H#?OFWbD2JKuVcH}G!ucZ|0_W$p@_yUBo3-Gp1GN(u%}N1(;9GV`gHH5U(Qn&R}5dQoh$ z+Vua(^9i=38=DhB4Zb;>I|V(j^GBxxe;M^6?9Oyqu8vjSg#WY?jZ3>Fb%%so$!9SR z2{kQ`&Ij|VDYu<^q{MFJw^lh5gUvhG9ywI7EIenCoEr*mdv>}!^wvxhJK2S>!0f_G zG(5ueQ#aB6mh2_~Gd+CiuF2E50`hsEhI;j^;aB%&twk+4$(1sLqpp5aYf+jlb+&4O zk1I9qIWJxLX|x_+WGo(kilR%oaVH4Gw}O*i8QA#~_Jn_J7Y;#%mku#!7DgKT_)SlV zT8}B}&+o{*9##Kzsd+0}XLDvyTJCmb%Kh<#d0}=XR~yQab?yh&oKnJ68OcdI3jh80 zdFrp@{qi+^)=Ufi->nasS1L4PN;?yFTPR46-iLI>K|dRK?U6F9hCgoi{Bh0(MKjNR- zmv3Kwy!Z2oPnLw*um4j$MNM<%*VXhVlw*#C)_*I@OCxm_ z1PEL!uTWneOVW+Mk_Ic3){;TxcOmdsHt@27kO({~x*`>w&08Wf7om}$j*={yy4sl) zol8N=NMdFATj0-meUGB5+B9=zcy7fySy?GuAU6B-q&@a58G=P|(=%LxRXks6wMsH$ zx{xnSrJ1d4otgsxM#&aov*$b(t@hUo^(FQYJDOG>{quVE`d8`L0nJfK$DVBi1;c}b z4a1Q>-^snc|9ZQ5i^&gJ!#{xA%T44Y7bk}0BLE;GVOmE1y;*8FuvK@?jf*<~iVrbI zhanxC=eMHGer88kj(r73CdlYc)$6RBgVuw-#cC1Hlc5d4ISFr)tcm0+s*iw&dxvJg z*nik0BYkx0jzvj7SOsNoNmKLQ)hT$naJODy)RCvA;DI1{JA>5J6n%Eqh*dG zkNXR(^4bVS6r-;*jNS%_@&u?V)65vO7TDy~jv1{hoz>uA{s5rY>CDoaYf6~%Y9VDV zxYSW7oTJsRd|JlvEbayhH)i@<$@s#DmxIp8{YILcM&rPi@N024pg`P)5qDvq<*4g{ zMYnvR$a)J@sE2qgyo@vaRh*nV6nMPcscR1FciobaDNn>~oua0w?_JiIsV73 z>(__1G+Z;sIgS(G>F}pE@EL5iE<>5sfJLkpu0ee-W??N!IHtiM z0)0x}J?UkvI+~Z$7ADPIbTi=y+ec_b7&@W<#u|qi>b~6<*_DJn!IjD)A}_bL1wmFK z#l{5$YVVix6E*SX&gLZ@8x4;!;^Pl$T&7i}0PL$CHRgVh_9TFy1~WN?k5LJ$e@}Q! zAiPRG->YeDva5nI2b3%syl~Uh#zCkoX-q)?U=@utrpYym_1|XJ+w5K;gPq9HCOA6gwBBaz3BoqOEKian)@tKFfZKfH{5+Z_Z0V@L&&$2Ofqu||`cY~vKQy>K1ALl}KL#Mb-_1X-)*`lL;lV;JsTgGJ zU+DMX)2w1lvJ7yQLQ-Q~b|9_x#pC=9BqE>OgjMtRJ> z3eD_0?JvdZ@8);cs|xsiE^dgTj;_E799<1~^>3ceuha-sSdpre9l8*#O3fafX@(Mq z@=i6}pt-TzI$T1qztbFfGOhA;2?ztwV#NxNwSydjG;=fWgYjidv88T-+gY^TCt<25 z^69Zw+4DbE@s$%6-ih_dPKh(+)j1?qJ2G}p5AglX8y{rWW!#tw*>~SlH5b?4evF0j zqoDQG@{7~Q(1U5(0J7tP35r9t&#D&uPF0S}PuVS|OCbsz>1WIQ&u~OrcXV0w#E7q^ zv^2F7omucZ9qgA=*v@k9JfG*(&f62F;17sq^_BZC$J}nv4Vse2c=>tEeqGNFZ+rRx z>>F1i!d6oxI=Wj~y1w_KuGR|op(pZR^n)$Q%?Fsxp>>l|3;*_Qg%fEMq>)4LwC@0K z5txz;zc>qGz=gKxvZbK~Vyr&Y8>P167l7M-INZpP+in6he7uqge~^tr+pK;eXNIr< zrvO^)xOrtL&Kp=jqAfVTaWTKFJ%1lg(p$-+q@Z37=JeTn@eu}~u!yv$L>Iv-J zq!DqJbo-ulU=ByWApnkSnSnu_$oWhBx-X|Q40I^+sE)hW{K6F^@L>?h&6QeeL27uUADSg5{!egRwy}{j>f9_`L9Fa<3A~|K{dh z#`N?=k`-(Cmf=7AasS2BLUl5jQfQ4o#PwQ`8akZ?!lR47B}_^ia$YLVp&)mAHAXDL zv)6sUv4~-Q0ddGS-`d!m9t~YC6UBK)scJ&b_J!7cbphZpUI;w)CB`F0IG|5Yiz&#O zc@HKJi0iHX{8~gDLY*m>l3@<9P0Du5U}Vp{wOPvrh@36!t<4g9ILF>^cqEp`}G8N0BaNd&S-2n>>?k3Pci&@7o8h9wh3i7iD*V(0Z7nya z;OWlW3(BlHycGB&u`z>2ty^kEE7UGh>p0RH^jW!^s%o$^`nDcFdqJKIZ=o%&SYndZ zcv!`Q`kd|ssvBY$O>pY5?;@{zSbDkf-;YMqf??`5Ni}klaOQIN^mMT4M`2f+n>w$TYnRv3AT!i5|zVXjY}^Nv?2!6 zXyC2{tDI5y=b%o*?n-wPky0m=GX~-`K7PEAtO2Hg^J6a$#RDA%f)>Bu03qQJfnK@2 zHd&{qeT0Y^i3NZ%Xps(dFM_ZM@}@H+*Db*}!_TT{HW zG|d1N^#2zdIpKA5MqJVW{~8Z#kU27|TtnX6vQY><&qAmFC!6B$H>gbXxXZy*hPt|i zj1r@HmBWLE&{iL0tq6NBob?Rt^sp)|GHYu;Sqp~iR&^e+pc|(#KDdHp0e+CBg8}BL zoPDP7O2)hCHc`5s-JHz7oMsZV<$jCO-OxQlVl52I7>mkVTeEXbIGL+Zia>H~qAI%) zcgfMOtXTJtIE^>Q$h7PLk)TsZ)}r~LVXv|(4(Y0ol!~v)K55!1`4InSyp;rIfB&Jw z{KPIg23mz7mES%h!5aBTyx5KK`PSjb|7Bgwz#fi!&UJab>80`rhG^2hu<7e|y(pC! zRK+!>+;MV6-)ihFcLEK;Ie!`0w3o)p#?E;~wLTmeBbVmR`>~~wn5AagVsyEK7RQC@`=M#5jMj@!^P=M4 z2@hP32C@rlD`0>?@Ybc`QY+2>z9WtwU>IFSNi?f#^U_c$#ZQ}N1rzNvUA8)zx{=9P z`@6ByzJ{THv}g=KbFFV14;beTrm=EJT`%@#3?w ${REMOTE_FOLDER}" + # shellcheck disable=SC2086 + rsync ${OPTIONS} \ + -e "ssh -p ${PORT} -i ${PRIVATE_KEY_FILE} -oStrictHostKeyChecking=no" \ + "$folder" "${USERNAME}@${HOST}:${REMOTE_FOLDER}" +done + +bashio::log.info "Synced all folders" \ No newline at end of file diff --git a/runtime.txt b/runtime.txt new file mode 100644 index 0000000..548d713 --- /dev/null +++ b/runtime.txt @@ -0,0 +1 @@ +3.7 \ No newline at end of file diff --git a/spotify/CHANGELOG.md b/spotify/CHANGELOG.md new file mode 100644 index 0000000..b96ebf2 --- /dev/null +++ b/spotify/CHANGELOG.md @@ -0,0 +1,14 @@ +[Full Changelog][changelog] + +### 🔨 Changes + +- ✏️ Fix docs link in README (#53) +- ⬆ Upgrades cargo to 0.44.1-0ubuntu1~18.04.1 +- ⬆ Upgrades rustc to 1.43.0+dfsg1+llvm-1~exp1ubuntu2~18.04.1 +- ⬆ Upgrades add-on base image to v5.2.2 + +[changelog]: https://github.com/hassio-addons/addon-spotify-connect/compare/v0.8.1...v0.8.2 + +Questions? Join our Discord server! https://discord.me/hassioaddons +Enjoying my add-ons? Consider supporting my work: +https://github.com/sponsors/frenck or https://patreon.com/frenck \ No newline at end of file diff --git a/spotify/DOCS.md b/spotify/DOCS.md new file mode 100644 index 0000000..046edaf --- /dev/null +++ b/spotify/DOCS.md @@ -0,0 +1,164 @@ +# Home Assistant Community Add-on: Spotify Connect + +The Home Assistant Spotify Connect add-on allows you to use your device, +running Home Assistant, to play your Spotify music. This add-on uses the +Spotify Connect protocol, which makes it a device that can be controlled +by all the official clients. + +For example; Running Home Assistant on a Raspberry Pi with this add-on +installed will allow you to play your Spotify music on the Pi. So all you'll +have to do is hook up your sound system to the Pi and start booming! + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "Spotify Connect" add-on in the Supervisor add-on store + and install it. +1. Select your audio output device and hit `Save` on that as well. +1. Start the "Spotify Connect" add-on. +1. Check the logs of the "Spotify Connect" to see if everything went well. +1. Ready to go! + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +name: HomeAssistant +bitrate: 320 +username: frenck@example.com +password: MySpotifyPassword +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +Setting the `log_level` to `debug` will also turn on debug mode on the +Spotify service. + +### Option: `name` + +The name of your device (the Spotify Connect target), as shown on +the official Spotify clients. + +**Note**: _May only contain letters, numbers, hyphens (`-`) and dots (`.`) + +### Option: `bitrate` + +The bitrate Spotify should use. The higher, the better the sound quality, +however, the add-on consumes more data. + +Valid values: `96`, `160` (default) or `320`. + +### Option: `username` + +**IMPORTANT**: _This requires a Spotify Premium account!_ + +The username you use to login to your Spotify Premium account. Setting +this will bind the add-on to your account exclusively. + +This can be helpful when experiencing discovery issues on your network or +to disallow guests on your network to use the add-on. + +### Option: `password` + +The password you use to login to your Spotify Premium account. + +## Known issues and limitations + +- This add-on does support ARM-based devices, nevertheless, they must + at least be an ARMv7 device. (Raspberry Pi 1 and Zero is not supported). +- This add-on requires a Spotify Premium account. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. The format of the log is based on +[Keep a Changelog][keepchangelog]. + +Releases are based on [Semantic Versioning][semver], and use the format +of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented +based on the following: + +- ``MAJOR``: Incompatible or major changes. +- ``MINOR``: Backwards-compatible new features and enhancements. +- ``PATCH``: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2018-2020 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-spotify-connect/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-spotify-connect/61210?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-spotify-connect/issues +[keepchangelog]: http://keepachangelog.com/en/1.0.0/ +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-spotify-connect/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/spotify/README.md b/spotify/README.md new file mode 100644 index 0000000..4561aa0 --- /dev/null +++ b/spotify/README.md @@ -0,0 +1,38 @@ +# Home Assistant Community Add-on: Spotify Connect + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Play Spotify music on your Home Assistant device. + +## About + +The Home Assistant Spotify Connect add-on allows you to use your device +running Home Assistant to play your Spotify music. This add-on uses the +Spotify Connect protocol, which makes it show up a device that can be +controlled by all the official clients. + +For example; Running Home Assistant on a Raspberry Pi with this add-on +installed will allow you to play your Spotify music via the Pi. So all +you'll have to do is hook up your sound system to the Pi! + +![Spotify Connect][screenshot] + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-spotify-connect/61210?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2020.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v0.8.2-blue.svg +[release]: https://github.com/hassio-addons/addon-spotify-connect/tree/v0.8.2 +[screenshot]: https://github.com/hassio-addons/addon-spotify-connect/raw/master/images/screenshot.png \ No newline at end of file diff --git a/spotify/config.json b/spotify/config.json new file mode 100644 index 0000000..c47fdda --- /dev/null +++ b/spotify/config.json @@ -0,0 +1,34 @@ +{ + "name": "Spotify Connect", + "version": "0.8.2", + "slug": "spotify", + "description": "Play Spotify music on your Home Assistant device", + "url": "https://github.com/hassio-addons/addon-spotify-connect", + "startup": "services", + "arch": [ + "aarch64", + "amd64", + "armv7", + "i386" + ], + "map": [ + "config" + ], + "boot": "auto", + "hassio_api": true, + "hassio_role": "default", + "host_network": true, + "audio": true, + "options": { + "name": "HomeAssistant", + "bitrate": 160 + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "username": "str?", + "password": "password?", + "name": "match(^[A-Za-z0-9-.]+$)?", + "bitrate": "list(96|160|320)" + }, + "image": "hassioaddons/spotify-{arch}" +} \ No newline at end of file diff --git a/spotify/icon.png b/spotify/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f12cb2693d9735e67c89b23fa7c363b253d6c4 GIT binary patch literal 6424 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 N002ovPDHLkV1ipS+sgm| literal 0 HcmV?d00001 diff --git a/sqlite-web/CHANGELOG.md b/sqlite-web/CHANGELOG.md new file mode 100644 index 0000000..b9cba58 --- /dev/null +++ b/sqlite-web/CHANGELOG.md @@ -0,0 +1,19 @@ +## What’s changed + +## 🧰 Maintenance + +- Apply updated repository structure & CI workflow @frenck (#138) + +## ⬆️ Dependency updates + +- ⬆️ Bump actions/stale from v3.0.17 to v3.0.18 @dependabot (#127) +- ⬆️ Upgrades python3 to 3.8.8-r0 @frenck (#129) +- ⬆️ Bump release-drafter/release-drafter from v5.14.0 to v5.15.0 @dependabot (#128) +- ⬆️ Bump ludeeus/action-shellcheck from 1.0.0 to 1.1.0 @dependabot (#130) +- ⬆️ Bump docker/build-push-action from v2.3.0 to v2.4.0 @dependabot (#131) +- ⬆️ Bump docker/setup-buildx-action from v1.1.1 to v1.1.2 @dependabot (#133) +- ⬆️ Bump docker/setup-qemu-action from v1.0.1 to v1.0.2 @dependabot (#132) +- ⬆️ Bump actions/cache from v2.1.4 to v2.1.5 @dependabot (#134) +- ⬆️ Upgrades cython to 0.29.21-r1 @frenck (#135) +- ⬆️ Bump brpaz/hadolint-action from v1.3.1 to v1.4.0 @dependabot (#136) +- Upgrades add-on base image to v9.2.0 @frenck (#137) diff --git a/sqlite-web/DOCS.md b/sqlite-web/DOCS.md new file mode 100644 index 0000000..776ae2f --- /dev/null +++ b/sqlite-web/DOCS.md @@ -0,0 +1,91 @@ +# Home Assistant Community Add-on: SQLite Web + +This enables you to easily explore all tables and content that is saved in your database. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the “SQLite Web” add-on in the Hass.io 166 add-on store + and install it. +1. Start the "SQLite Web" add-on +1. Check the logs of the "SQLite Web" add-on to see if everything went well. +1. Click "OPEN WEB UI" to open the SQLite Web interface. +1. Log in with your Home Assistant user. + +**NOTE**: Starting the add-on might take a couple of minutes (especially the +first time starting the add-on). + +## Configuration + +This add-on has no configuration options. + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Joakim Sørensen][ludeeus]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2018-2021 Joakim Sørensen + +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. + +[contributors]: https://github.com/hassio-addons/addon-sqlite-web/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-sqlite-web/68912?u=frenck +[issue]: https://github.com/hassio-addons/addon-sqlite-web/issues +[ludeeus]: https://github.com/ludeeus +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-sqlite-web/releases +[semver]: http://semver.org/spec/v2.0.0.htm diff --git a/sqlite-web/README.md b/sqlite-web/README.md new file mode 100644 index 0000000..ddb433d --- /dev/null +++ b/sqlite-web/README.md @@ -0,0 +1,27 @@ +# Home Assistant Community Add-on: SQLite Web + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee] + +Explore your Home-Assistant database from your web browser! + +## About + +This enables you to easily explore all tables and content that is saved in your database. + +![SQLite Web screenshot][screenshot] + +[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg +[buymeacoffee]: https://www.buymeacoffee.com/ludeeus +[discord-shield]: https://img.shields.io/discord/330944238910963714.svg +[discord]: https://discord.gg/c5DvZ4e +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-sqlite-web/68912?u=frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v3.1.0-blue.svg +[release]: https://github.com/hassio-addons/addon-sqlite-web/tree/v3.1.0 +[screenshot]: https://github.com/hassio-addons/addon-sqlite-web/raw/main/images/sample-view.png \ No newline at end of file diff --git a/sqlite-web/config.json b/sqlite-web/config.json new file mode 100644 index 0000000..867acba --- /dev/null +++ b/sqlite-web/config.json @@ -0,0 +1,21 @@ +{ + "name": "SQLite Web", + "version": "3.1.0", + "slug": "sqlite-web", + "description": "Explore your SQLite database", + "url": "https://github.com/hassio-addons/addon-sqlite-web/tree/main/README.md", + "ingress": true, + "advanced": true, + "panel_icon": "mdi:database", + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "map": [ + "config:rw" + ], + "image": "ghcr.io/hassio-addons/sqlite-web/{arch}" +} \ No newline at end of file diff --git a/sqlite-web/icon.png b/sqlite-web/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c18dcf56381be312936e185221a0fcbac59352ad GIT binary patch literal 6724 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

    $HlB`u|!$yO0;iXRWYg?2h&9Rlu_` z>d0mRk1XRIVT|F|NBp0m|M~_C9kuN{+<3)T9q=OR${~{+;!0MbL;Mh;$Wq zkqH<=FY}YwTLbbKx=sYta=Usw2<;nWjCbWeeLb}o zuRJ_jn)=Gfe=UW3cZ9GdQD}0URlm-v(pDN@1*$xW-%9>>6sGt!rdGv(I$8}DGrin% zJGZ<1g0>Yx_9OZ|8x8DVvr!4+=z$cdZkBtm3DCL4c?k;t7s%J z_?GxuGibMhaC9z6t7FWAukJ6UpV&s#65wgQo=!eXMtRTOIt{4j^0aE%4`Z=mRF(*c zqs-TY#-u;q-CR%NW%#+rJr&iMIKJwHsD-JVP03;fR3w z6*afdRvKsIIrRfil0YjXH!vnRMSP`sv}HwhDMtyIz~|k7bKkSFl-ewi9XI?_)uP#D z!~BItFFcxwe1t;Nu;VKu%k@0PE;25U9A2-T3~O-DLg3s&P|sOc;6jha$9?~1GQD$B z{_m#4YX$s%cCUMw{b#Z;aMEDAxFQCdUnE#gQwVwsYdi-Tb-sDG#jY&>L{uDS_;Mi2 zr+f#n^RsM@7DYmr)A8ip>K4 z_*xUZTOlY9Q88%Crayi|*cupLYa*}nNnrSXZ>`QUmsNup|AQE8{O>eNUQ8Whl=0gA zUt6Z?`(VXMTLb?UWr3bs2yfC&*81$fd>1E}J=e!9R%sflwS1*QcoNip#`{26s_VT5 z^I23)k8wV8Bla83c7Wdq-12E_@h z3fae!CW(RU)<6FDp<7-YF?r9-g-he2Rg3k+ao|%Z@SoAG`Yavawl7(lsf}!EgF>Q* z{O4!^5*O@fMe66xO9HV`>YpHQiw1a7(lf*9^H#K)6NX;=rTfC_TGdF3JCj85rn(?! z1E^{dqv}A`O6Sk>Pc?JH!fnhIMy@D${w9{aY>1|sMQ}u# z&!Bln!+7h@h~c_dh%<=4Hde}~{yoJr+W9r+0Z>G@pv3Og(>U)M`CIQ|yC;?xCne6T zOmuqQWkoY3xDgc~&M#x%fZ_S0?rqP42CTUE->5+F zN)V_S+}(-|6s6w?R5FsTU6p$7dG{Je?J;&W9T-OJr0@B|LiPE(PK}8S`TgbgYss+B z8ysdYncGs=9L_)VyzF?o0D;y!nXE8y4~rqaBS;(tzju1RIRDaiuR0sl#%Hvk&d0DTRYt9_1K|PeC_F!M7qDyA^Ymwx5TD2iQ7g(Y>RQypIj$#NaAT;>7u95(g`V z3m4YdBEKAlirqvRc?I-tXI^l8R~zI|i-;NARmc5tiM$R$LLj5rCxs&4EF5@b4)4`d z_wzrG(34{)r8> ziskLPk)O=pS-V4cb8FH$XlVJwj+u;1WFl~qfp_qyf9L}pllwK?t=>8mj3t&W3*wm3 z48xP=1(s1MOQ|cX?cZFlE>_~QD?zQ<1s1OJQ|{cNzp+)y92x%$&d}6fvN7O9!%meCKUrIVM%~K0@{Dy5pN4ejRcu=T$6m1L? zTz_=0Smw1-pgcwqBw2MHS9J}@Aew782|vo&udE?(T8;Q~vIeCi32Q&rGWt@=Lj9a%x?9K$ z1nU0Qa%r`Ma|Vt~14|Ca4LbIZ7u^kcetF^5gM zG995V4kl#{{77rP{yyT=HW4uUJ;A(A7ejCks?NJnI}jh@uusBtK7Y8Ql6{S_0fxMJ zFe4mdPxuutq5(FB1U|;FX0z$hR^2$TD|> zWfFO1L0X4?+|SsQzustZ>s4(ER?>*j;yx-F3Q5t8!g+*Sd~T6Y6!@FL0jJZx6u>hj zJC*A$veZzbETMTSCewb@_C8=_H?ei+j-qt2|5*9 z>fk;5(Mf;em%=1^JQRQqH4XxeXxuWbn8FLCVt%?_P~AfSWHBwcqrXc$7pZf{pTQULU;Cog z&@*%F1R;T-dtPc-87m^si#}b2h25%WJB;X%0BqE%wq@#{q9#35rrhA zJ2S{sM}d#DxojifCChMl$oEnho8P^Aa%!;W@IOUWU)aW79|WtiA;`oh2{uX=g;LWN zmRZHolO8O2qd7n`Djc1qjCcn%f)jPq4~BXFKN5o9!&1KhkzjTKv%Nr(cQNzV#b`n| zr#_br8DDzjB-ibCw4+7Q z*IMc&(tVio4J?1D$LyUNq$#mbQ{jGg@KKRatC34cPz}+HGNUl5T2m4Ya3x|%i>n5! z!%;vFA!hcg7K0IsLPFFCg8h}w9wxT}{`lXY->rUa_vIDxs#H<-cHVGuVg}+Oja;Y; zHngDxn?C82TCX~u=RlV}m#0ux9j_oyXl?Ci}F%#1rX!-D9|2&RVsVUm&I6P#bh z4xGy_h2~#vV1R4sFu*SQUh@oi5Q`7e6r(t)u2P{=kvC6Wjd5r|A}(04l3Y5>Vc_N( zZaoh#xk>jSm0Ne@q8JO1l<#R>kW<|*Ih*J6X2(!Iu0H>+=9dOTXeDO;g3m+o>K-5$wB z(a~txHr<;jg3I#NR|63#bg$%KEOG&~y8yfq01Z2Ni)mNa+_riNV6DyAFkJx ziPz>B6v&?U6^xSR0`r~EqL1+tkjk?2mn#I^wdjl#bbOl;R40lk8mO+YCjO=7ejg8` zi12gjDB_O@j)g`<(A`eNjUmCmdG20Z56EX5Pd`q06~FrsyDyA0(52TUV}irq50v3D zfAgd~E;NrKh+PG^?0Blbtn+`Uk!yWUWK+27AlBD*Z)vn`IAatx=LT!Lk+w zxNoKbqp-Pb+T^@>rfssdyq=Y}4c>b9ZC02dO{L^7PaV_EWScU-WD0C3U*7t=`JH({ zhPfXwuO+0Pt+ipm{qIAC&z4b}b!ky?TciR!9NqkX2f>MIoN0wQeF;MzEeuwsw>u%A_v2 zXfRrJAfU%&hBFsP5c*%T5?T_8*r6Qvbo^?ED7LuNMsfy(N;@|N&5 zaN3J!7(jtvXh1akQvJ&l^k$y7|YQBJ>0o5vG*);?Ko<-89sf<$5AeV;LJK5f8 zKcazJ$<&~&z5NY>4R*aagNO$~M*=eroVNzdzsJ2^jl1dUcF>#@dDyOt z!vNNT_c$R?er{tat~aGNxGde%__Du)F|#UG9V@$Ox(xnns?enbiB>>JneU0#`hWPy zfl1r}*QHl-J7_<Mhvle<0|S;8^AbE>{!0sO8mi_ss%#twDmm_{GzWEC6-sS5 z@O8*L=kg!k&8XgRb4_AIptnFMz+R-Bj4!wkSN@KTeX>Hyp=y9f`4P%-kt!|J+)-zT zBa=ak@{?_!`0;l)b@-`ks$_-l+7iYl7- z3bBH}XPAu2BPuphrSYPn6bj)F7fNz#zlTd@MJMBC6#mSOXoHS867xU<)@MSYtLcR} zU_#hUO7FY#Vie3a$51;~Fo0BhIdG8qt_~jAOU+>}zq5xV0L7agq~3`D12TcM^v6ew zlBQ%!RL^Ln?VYy|moIl35LDKxG{vYwJEzB?u!H)Uw3^#^NXVOc!5POke(!fl^6ZZk zII?L*ORIYZlz&t+HhnN@YIsbL{uSe66pVfEIX0h}gYaUd1I>CEu-4w<1>rh$u0ux; zJ3{@HUz|hS>91NUVh*n>a=&#_@OZQB={P|MAbQR?BeBJf3S9WWVBiif#HeRp9hzoL z;?QExKOFy8+dP-3ruIF~ZhD)=>hiW6YozS1dPZ(1X};^&W<*};i|NpN^R2~oh}#2u zTT|?7jDzj1Ou-v0v2=k<>*6@acUR>L-J{DzmEDb2UV}?1)=JT|cEYoR-V`6{-G#)G z1@w`WNoz~&e>!%kmK-@{@AHJ83B5nz0v#scfmixaaGzu${Z4p@kck^2ea))60iJ>M zVG$F@W5ZETXa8AVQY9OOKlOop>X8>E2_A95xqF~bqAsDuXVf24UU25H)k5PUKvt|k zRRVQP>cB)gXH;|gc2!OL9-=$_*c>B=!V=V|lpnJ~IELWrOCeHtbTjy zr`X&Cywu%5RiQ>2ui?w${I&8TCt?n#Yr0^dDLLs7#h{H(mwecl=dTT?;Z~&=r(^BdV7)*%mjVipJHb$Q(zR4^{X66phom`&|ohx!|jyVZkN|A$p_2GVUJ=q*nT2YHk z57cm;KO&6{{hK6lqA)|cQD0RpP&)pA^+HR6_O8o-RTPx+k=nY}wyxZqBHHc=nBa}U ze3SkoS)Z$g%5lvuMKOSQvWkibagCM`Uqv_Xg~ODKPFyMe3K4YhYuQzBRVx8yMUJ8gsk1&9oV(XpI((=-eRdg1HSXr&^&9DEFM zM8_ondfcAIarmev$jGk2Uk0e*YI*MAaFNXso<`ifsQ53KP4@Ke>IquBbr%Ky2Q=Dd z&UIa~*^AVJUT)`KbcZt>ZZao)0tXMF@b9fOBmi64fU{v)j?XT~G-k3z?7gaTcDIJ< z$KWHjqyT6ZJ8TYqHWCO%Zn@w+d^{oH0U9~xA8)K9t9v~=AS3>xP@5SeDbTyi__^dP z#O_lFfUT8|?{a>op2Y9$X?T;dvq|hylYl0eBp_Ux_EUM%!N!HZLD07|w}+~H9!>ii z?IHz{sGwTv(dZLY!OPvMMPAmo63Vzhec{Xkl&)|0HiI2CJ0c7*RLhF3*Ee4ZRg*c7 z&?wYYn$j`E9vP-_H80#<44&`Z&vW~g0I;aae!CLVRN(x3x48h7A|_spG-9L>@4x28=*!PKTWCy zLb)YXSCgyvPF$vZgg$1xkI>isEKjmjDxE{GG>4@&KKi`yNrp1Hnc_vL#`^$;iHqTZF)=1tzVWBVEN8Rce1;cUErJFf<5ius4svWT^p zRVz)6Brn58RckhpbC_7K=k+fKugvhCj&#%3tS@gfEf@=3IG|GYS04I-1NTdm@bb|o z#A8@+u(R})9S5-gXNCHPE?yZ>^qQ+_v@3)H`KjX&{T)cWIg7mP>WLOhM9eB9mUWupt3K)h+ezM7pplh0 zkx3pd_{+_|IP^XZx(9vn%?cKoa6iz2kjs?nhH^%Ig?y+<=$w2WFISERh0~%UXAS@7 zm1%~t9Fxd8d;6+KqmO*?ub}zRn%@1wcmzZ>LBwpPXzns0hE#G=I*T3(GujX-PRfR= zp*&}~Rw3fw>6+4?T!yI_NvG8I7+kx7KW90|dtE6;jf5}S!DUn(+Cp2*nh*OfSqPxq zx3j;S$Oldum+t;{eYpC@S})4Hn-!S|tylF&MqeU3lc^~e;40G2&F|zRG16RO6Si*3 zwu!tn3P|aDk#|&}{;}JChxvlgGZqZ6s%}Qb2MZDkpYKCp>L;ezZ$(v-wRXgz7#6Sh$}aQNhng9W!nd;Djy$!y<*O!tf431`+Tu0A;?fRAjV2dfY@L5W>wpY3gyBGa%x7}E_ zCl))DT9(BA-P+gCDbDJjCz+cHs4g52M~uhO}1_ z?u%^@bBSsC;%OCyRkuVB=OBGby&9(IklpoyKs^%el{M==?{-GEOSrmvp>P}AK8+H( zO`GQS8f-2Hz)pkKJ{k%-RAxFVR`?}bz&qOm3$%O#$Kg5d@8Xw*ow^?->>;o0Bayrx zo^2lzTJ{vr=hu=;huk{%9o%o%tc%CMPexGD4@eoV=;0P^9^fO9jM#?jve<5=%3Ap9 z1CjyBF;H3p}j>A7W=S3UJe1!yVZql{wc$+n=b2uGwg;h zzm6($Dys|s*xEQyw)yhGN$6|PhHXww(9`ZBV#7f@KqF_Ke-leKR|B2Y2g!o8(B5zJ zby1=VUIu^Lr}x0&B&o78?2%SbCt6&buZ!HQdQVM^{Pa5SI_+{hIL{S65awIT`|i~J z-Mi<&cjLf+ohM-V+|U_95D)(cJ%MX}Id_wh;-+i9IJi~PT+)mN3;ikNdiDaVt3rYyRJp?XYW^{*1Fr&^Ph3UEq zh8UOIa+9&~)(x_s#|1q#2kvbK2YKJ0!+^Xc4Um7PQ-j zpJOnO#z*%-d1U^%yeYp^n6MO)hn~_He#h~!Zi`Y~c!u}hJ?_yXBAgLiHX#THT+^AF z7WF0Ftf=zD@-u5k0TPGJ;LAl+Xx?=;mE^cPF^K6olWSj;W$A-jKkxXIC2KRZzJK)) z{5cUN_+%IB=A}4Zc*Mtr1TI5+B5jT&oNk9a#^gihS=*2a- z+7u~416D{cC?kLy1VA9O*M}P)T3z}W&i_O+rLf}f8M8qO&XM>I=GeY|G{R{SO}P;} z;BmHD{-9E0M1GfP${Vf>0SF3C=Z^cQjppi)uor3?u=;X?OYdeYP(CzPFYaQRAJ4D` zH*suUHqdDQZ)SHop2q5~DU)wuBL+0mQA@7f8v+Ke*nr|nBAbk*Vq(J{tqsCsi^ zFxEJ6lG`9aI8WSj%j#FFq~Sob`$xy48nvTS=RTozxh?ZXd5w_;u2JgRwJjt=2eN1p zydKww2rEg;2P1~IeQo{xfnL}{iaboX$lCLRdiOtbH=}^nUjpxg%L;$C(St(>H0}CQ z+gJULf`Sn9i0!l?Q0mhwgafXu{Jeg`YCpy^x<#1Y z8CuzQbq!wv#U5*B&&(>e{1}p{@EoAFx2km@Ud?pbp^Vsk)ph3Rgaj;*Xo#T(&2lzC zm*xg^*Who;OEkfNKE!w7rc5r`{k6EQ_WhojJGdk(0a?RwplHK_yB&Qxj_G;OsKhDf z3_qDdu`LIa2DBpFbS<{*IA{Xqy5vUxaRzgF8*Rcm^Up@8!c`|{Ue58n_hM|UH2MY( z8x-rNvw5oMNtC-0n7ZruYIK4$JEHA#o?A2C6IHo;74l3=di5+M>TlHzSOsr>GMC#{ zs!j$WQVuY{5>EAD`IXRI50Yn)!9lJkVL|I>%_S%~C;HhfZao@8*Sp-fz&-SMRllLN z1?6ghQ2T^6KecGov(jU7|F)OvpO-MLfZ}JfaloNqvdS8nAip8p#?cnCr^-f0W72b0Zq*B66u{8O}A1hVfeN)Pi(HytNFep|%X$e-6Am|;h;XilTI*A`L z={Jv(eW4*!cwnCy!0p$~F|IVXnDfBPJ$t9yF$`tGTrKxYd@EiiL=ruyz$m0?j_S_5 zyQz7DeuM%o=v1Fp^vnh#XZzeAM@{93_uEr)Tnkahy<;R(lQ6#(&|*paARV#V9J#42 zb2l7~@0jd05v~Bp7?b+v*mgo?XwVcHPoKt27cX>f*+&QCxl4-#A6IG#`>So>Of8yj zh0vrPrMDYlGsGP-IJ-a9UMIVY!_^h#LW>T02#3FKhbW8Q5w6t}OA_1o={H#=^*=;e zAp>9goyHP_0ien?#7)}NX_K!k;0jeD*{A&JXj&!fg8k_fXHwoE{h_t8+p^Q}Ea6A~ zo=y725xMsa=+c;ToiEga=Iqirzv9g5L8U* zHaq{MAsL%3VJpLcvWhO|p&{Mtvv(|!<0z3jIz(Pos88TVkZ+zx*Vq-rR0RBKIp7oFnn!{~ zXW7vL5z*$6CIwI!^ZH_j7<}EI4!}OgA{|*V7+15&DehvfI&P50NP+8jtt(aUcvc8Y z;4zl&-lRiO&>xW#bxxiYgl<`*mR+cZBniRgNTq^qm)@`lEG2PSFn}&szWCFBHcH`u zdo&jZ`1oWkd-&^%5umrV(vY$cw}agofndPf>C@Lxfbji%8na+FJS2-%D_^s*!tUTL zYb3|_Tj1)2i;Bl;Wkm;_%aKX5-4b&fDg<}L+VxhrwhcDXpjLvyg_#bxGCbbH33y@+ z#Uz{I;(jrm9u^k4uxUE!lRXFpz-&n_KmlJTy;X?-;HU3BH>15Ny(vPD%&03uKkqbC zS_xgTvDp+mc2tXO9k$~K{sy@c^&xpxn5Sg$35n_ygzWP+Pe*;HZcV_>mx$ zpVr>K{zGbnMH-AxICxK^sgJ*(v*M|yQ8L$$K7dpUJ&crijwn)w27&tI{L*3Gn-VSO z$jPre>D2pN3j@-c`vQMY5!X|FL;95hWEF=(is!)XYkK|ZjDrC5Y<^cylh_p8I=b7} z@hWz{I3)Y27d_AER-)GJY{(GC@ZzCJg;r9@TGAQFpAj>7M6dK%q8ho9t z@)X-U#}%Mwg#e+~iqNJT3qT>s3Zl=mu0$fuHf8x#G;7Mj;UsjlaX$QJ<(^NJ$8TZS z>j3pHP`#DUGpizs*QV@borwRi!GmlI#y2Rb0zOZ05Ju$;3Kag9AfGb_<$Kjxc0d%R zaxSotK~{2jvwyWz6RQ{!8@MqM&Gpdzle25wT!%*TrW2F9$020~Vb2yS#dfu6#+0VP zASi5FH;tkB-`m6$N-RQD5nxl(9pSWo@Knd-lob z%R=8!27IRE;5dZU{tlNwpJkPLRatLgQ@J&=gwZ)gVV$#U!Yx=MObJ19ps;Sh+!!G& zkoB4{G;ep`=VGEa1sP%wCB1ibgBAf}w?zHL)qW~8j&a)zr!E&~IM7GX(=cnn*{q-c zT@N)8JDl^tGlUWOrJJYc3|5)?FfX$HtS+l4nuL%yH9-F;ffpLkp-{PL-vpg!Q=euD zquQFTT~<dfu(5#;~?ya@B7d^Bk6@;)knES~94<+%(MSssg^e|srY>d%Mmo7=-o z+wdFz=*r1J_E~&&5FlTkljEcb9{()|^Je4Ogd$YzH(=MEaUaU%fXWiVxp`r7-5FD$ z=$&=~Xe>dm0}-3}Bj)xx`a1AIEH`5N;v9#a8g7K*_&611XVTuyStq7oZL7ph`m@4q zf@v&*EZsVojkfXfyZi;L67ZA$=XE@@-x~%anWv~{Nu#whA+;{`a{UJUd&)4wC6maO z!m7Qh!p)397oAM;0)FknGph>q-4p71lYhn)6r zE^as5@Bsr|EFL1i(?2hEk0pp8i&+X^2x0)$INs`}9aww3uYT*EFKWDGcsSKK59e9@ z_b>K|6uoj;fqrbZO;Sq}A<`!l3P zN}HKPG&y~tfvZpRqV4H8S%T0+u{AMl6~;5b&+UE{N>o)S*qoSY=7Wj1gmIVI(_01N z7vg)Z|FkX51D_6WV9SJH8TEM#mki=fE=_vMx;46t|Y zGYYonVhiuAq9UrrGFXV@0=1nLg@x)7R-0Sn^#>&X0`-hsVoQ}BK%oSogc zD@+VV>BCjFfzg#3um~(B>vP*Rk#qanU?k}I6GoczRVfCtXD@vluCeL8r(^^CIq%0N z7g&;IR0x8=KY6H7fFjFORKt696wdZ$D3*cTv$V!o z_MvbH8pTqz>k*QqUTNtZ9y0k-{r;J1*r|EAo7`J5F=VrrepBMQ^m5GLdzT6NItV*6 z_gbDRbl01eh>2|2S4Cm!LWS>Kt}wHnjoxu^qGm}$!I{=mU?Pt@$kuBGRKmd{7jAy+ zc;HN)=~UeOxu$wQm|S-a0jkIv{O@2aO2$E2_kbTAb>x!_>6s=IpFy8@;9%)0<6W>P zoUQeUbiheEB(CF?I}vYGQIE%1HV9Cvk16u1Xx?TnqW{&Y!TVRjcrR{WN}IDOK<J8o}n5niQ@n})Nq1fq{n-C|L4bB0&qa(Hz7!`CZ?7GWHD{13#R%Z{E!Uzbv6`$j=W@B| zkhk~>`IJqcw{A=#Q{j5PJdC8EEZa8lzJUo18#M9f@!@?*33EuVPauzy=*aPUBl?`L z!pHcQ+`L^$4O`^G2cgO(1`jCFt6w&p@-&PcB*`06L5-)KIEaQd*v8}|V`=13WTFap zh}cOl6(cwN`IbT%-a9Ass7!`h@WIHRvmyKh4=XBWUl)p2X(!{5i)p%{(1Y+72x*tE zpth(|K$iMGzL(zdG@2TjRB!k~XA2VbOn;@f3fjq1fAw$^=nr1L!e;3=u&R>8vmMY- z*u$1n!$mP=I*j6j=n0~2+K~1V@^S`@jt4UCeT8U#Eq6bUzV~1QCtH)|T66maq8sn_ z>=&ZT%2Tx&UmQHNwJD-N|Cus1JF_YwriOA+N&Um=mO(y-u?c@q%HL{GoDgP?$~}gB zO!}@OyB2l4%KKXte?@v#I3@)fy4-yjhV4bvYjMFeUgrz>R}J59Gg#zYcb&9F6fsE5 z`szV>O`k^IIPIC^?;B>_ww({jfB2Cd_{PSFp8tqn{A(-dPo*w1BX`$5Ljd9u@Xbv$S}se z*BqfWz?7(fjK6X!Og%InQ?tvu0lH|(GcVmGx%Qmiw8@NrVsAxC6S4!&!;AV)!ac8D50A6cpE9Qv zKGszQ-6#GrS;@$5%TEr;Y}^htVoM$??RC97|C1uXe+Pz1BDgb}BGK^eLlyRF^OTCk z=b4U@F#zNWAfHmY_7M^tzc@7C}?D-Cil%O)o2&nJIuYeWQJ${ zBSpEnHZ|*ROWrGR!%g(v3!Dpl2;(KDj90h^p*4#0zz%?-L~eZX`}Dei@ff8p2euHyTrHp|3FMMxS2l6vN@*m(n{L}SA2uM=-`xIc3~hmZP- zDri)W$1bMAacj{L%X^<&RN}+rv#wh2nJgGSN|b6%x?suaEr_e)8^=K9L+9)zcmP8j z4gyCb246hSeZu8qLdt(u2i~3uhtmA0oZ2Zn6^b-H_5 zvGU*HYwOWhMIO0l6)nx~Ot}M){SKH|f%Sh`CeWK}Kf!UtwEKqFX5` z_4+nWUQhuy6boG4a;x+%={GaGK?hFA65Q;SQbMxl=6U+v_t|c2NV>NZd_Mf>KfbN! zH@ijN>+QtPdAtFMAAAIDGr^0sh?>{h6ikv&-B2^}%24Vi!A22*CfQ5xjb0)J9-3x& zfsJa;I|^rovvHJ#k-yWAJH3@FBjJugJ~Bd77hcQ!r$PGaJb>4z-sHsquMK zYhw+D|M;7RQrKGmndJ+etwf%c%J~Sp;nS#+tsvL^%cg`Rr}8x?*Tsa_v{$!5*Mk?o z*Fkp1)T-y{DZC86DL<{FQqk|hlvfDB@CcmQy3&pL`rMD#mB7XW>4|D?DHQfm9QlnJ z+j@O(>RqN+WY3~xqVYhaj$deSwV@ zqzT>QuJ0?JG55ESmAFTmgFt~n2eHklQ_r<>#jC{P7{Be27B&hf{q95bL0i|VANIiG zE{xaS1lZnxpqU`I^&fX>n1+Fyon5DbcnNjhmd^uU{i$Hz0Xqm^H2ro?Ie(`9+Uoja z`A2;PCho>$acrcz_ZF`jw_M40qn1LcNJ7db>b&k?Q#_-s@z_;V;fnU_CNkr6{`gjB z5ewUT>RQ~H#*+`ux?H#0i9waq;@S{FfFqCa&VGS3m!k@FXU+PBEvzBt)lvI)%(CX* z07XYqYqeIlOgNlco8me4X4ctLTn}(2=ECwai0DDxP%S1KxJ5 z+QqA$WN`Dl)^uMA-4I@&(xr{Lff+4M4zE7VJvIZ*YvmqkyZch>z)r0E%q-hx8?8>; zn_rlEl*E9o2v$g8w)0KQgwzr@`&@iVWHpvIOm)<_{DTB@<(;r?(ww1v)7RNADyO-UudNgp1fO=q18{7z}EyP$G1q7=S5?; zu5%tq`0A8#Kg&sYJltu4OFVLBT&pMF$d=!P9E>h3J~NiXOGX2yI6`TO%^HwZjoiUP zNf@T^S{6IQ;D&S?Lb0cC4}JAb6sj;Rd`W7~(8c~3PoMp*)MEu>o|yop)kP_v79byi z>WS{(Yya+61ls&CED7*-R4@1!u+Yp$dt2UJPpsa~s)-Kwu^pMcMJ{6@radwoiyB zCng+g^9shwhhD9ek3-wVGu2Uz%E|~fM52N#k1V5;I%u3LXHQfFM%C!#6V>r4iIzdH zPHcL}2J41FhboQS|9Ynl!=m1XkD>+Tz}=SrS;bT6n8%#L_=>v&WAjMu|rBi&^s=O2KnR(<;$P83rNJcq2Jl^n6 z>!^v_(&mFFthW(R%4+4rkg22&LHmm}Zr$;tb0xDS29`JYxmiNX1 z>IPs5B}Su)^b)5C+rjQ|3dp$0W|I=ae@;yt!Bhi zy)_myTbX21MOWT^-`3?y>0$a$E?ZFm5<8b*`5l+L!Ul*G6n;6O^VIvE$JU=(F=YV_ z%!OoR1|z2$isG6-VZuonbo$yO$IsTsdDo+BsHnmY z>o1NjKYv5UnENs6>*H*ihg*1{rGo;YeU2q7+Yhbeo3flt9(6%~4ST=f@6dKij-2Jq z$C7ATzE2IY<_#kbbQ#ryo>ij3j&f99z1Zs z-pG3PE4?AOP4A~GOBt0#N_g1dN}zm+(P9v~(;QtL{QS>w0x|{TFbViTA1~{)W z+9RGP1>s1%EUb4m%3#ZwK|xsIX(B!Es6*27PtmbS#IdCKI-;~@7ngLSaHP9kKFY!#nMtnybXqZg)n(`thaE5UZc^ocY$bnih zI9a}kg1r|i$HbY7h#Da-q=wt8?ChiMP~)MLK0Eyr9z70~mRpWy+?KbTU0%k~-E2t|%}v-q@>1w0S{nwfJDO3hQZpzTxiV?`S`IM6$e&vM znz1(X9f{kErq^%$GIg!|Q?a(!vRPLPGd});ZMkjj>%$+yf#@!Z-hK<+@aS zUe&&@n(j7EQgz-$R0j_82j#Wc`N!-==n~$mCD-eofz4=&mfdC;C;zl5EC^eL1h>49 z>)<58ydzw=AW}#^j{u~&jgc$K73pZEgB`D{ z`xAZ?v_@%8$~*#8ziK=C6|y6r5gm6lZn8fTYE_qP}nIVNb#hUUZXO8?Zn|=-1+jx9Ah0( zFPiZ!Ty~qe%TnQ-m-B)HUEJvG-jBU!E1Lzn-oJj$({{T7;`#Sgx~59pdp~aTHbie% z-60$p{T#9F(&Gr>8WbKI9UAIW_8e7pS^r($fFgfLTeubWKFNmZ8- zKI;7@IwMt|_E`p{^n@e5*0|?2ycfF8xzC5cNIgYWM|dSo0?!|w%pyhPLGWH*7FiaG zL-RSBj38AK_n3HtLY=;d)E8|_TV0YO5}#g`V8Q*~vbppl$y*RcQH}n?GbYU;JwmPI zmnH_rFK>Rmwkt)ul(D9?ORpH0$bcJ1SOz&q2Ph+QL4ss&(3g=L^ioQ-eb9bC7sfIW zsE^RTM|_2!8Zh-eCMOQBp99XEM9Y~Nwl?tz1&GK^P7{1FJTO*yXFGxo zlZQGH+;!6#0U=VzGvvg!6ASc=_WU|9Z%Ay)-O55y8^Mp=z~MLie}g5DHJsi=M@Kx+ zsmT~dJwXMCw(C)>Eq*R}YnvWRBpV!;4Qmo1Kd0(Z)xj?^)nRU2m;F*3@s4Cd=}Kqe zv@rj-NvkJ=hc#0;Tn$9=$WS&y;@s-IP82B5sKvvZuO$K9C)sm@sgZ8+QZ-LW)W5DF z+pmubLn0)RKjEor9CtOXAcR_EfH-2UN*_CnM08Ri2{Msc@7TQHhM5seu{`w1I~U2b zJg#2V9@9K2>zu{}oYI3Mo)mJWwM9L~eiG4fVBmwoH7u4yvk?gpv8R+ml$fTenbaP5|XjDbizDvs5 zzV={Zk=-$N*(+SHxCoyvtA{$NYX{flt+KbtYj?qK`9A8bag=R|9CwY^Fp&Opu+4sV zhu$nc_L+7D+x|#d6`la10END_ZiP4j-{&XND^y&*t@mAMD;jY$gssPJF&8~>h@OU2LpN?sBr7Ay@3j`nlZSq=U~r1NIkZA23vJ{%R) zpYefctx-0>HI#-^&6AL(r`9F+_$GOfZR_&rr_gWC2$nXlisXKn zZCRmBa& zcOm>0M|b^d(Af(8jMnwRn(zQK+QMtQnOOw|utMx%>0^xwBdSM@`#Kf;!m`r_hbfLh z$|?FoI>ctr*9tJL!+!&6FFC;`tMll;YmX#&BC-XvMt2TXS(0owsaFQ6$-ZEGM;>g}=0Um=BgXX#*UBNRM=?vOPCS?~@v{C=3w@&J~?A5ZG= zx7zw$7=KxuGXXPfjJ8lF+0bhv+zI+6YQ)yc^cleDc9`%>p1@t)w{-A=*5tl3<&I z@tGOK@T)Mza_jNM$*0T#V8^kw+dYBV@;H2-Oi?eeHhEZzHaIFmaeOrYFh{S`H!!e?UF^=$=#2IvK$SKu#T*eA92(-RfheJ;rw#C0SOz%W*$+-Of^`>m3c zuk7FWZ$j7pw@C9pYh6(p9MY*9IzE^#Nd`YT9O6quPRq`C&6a-o`+Bb{TY@2FR%xqq zD;0f?i0dEYH#iPIRfEm2bYS^7WQ$%uX~wXD31{(RPM0z?)Q51S@l?{INkrDFh|z=L#z_cxXjv-EL1Ht44CbZNcMWn=fc}`pk}?Y-Q5NcA0!u7 zf8|dmg87+Ec8c8$+wu$Wwpg^l!hliV05kHA7Grx+B*3Z7^+!Fn?w?CfM6}o6{Sd9S zAQ^-Ws)exoPp+-_&s|V+N1%eNq8oNg4!0l|?vU(33Gf{w977r>2j0MBdy-`m#Fc7NjGHgv zL$R5ygV8U5)s6hX`DFf_rj)L~VgW3iw_(3V}-B4eJNEEfcE=_yU9E( z!c$Vo4RGf$izUe*>MrA^jYgNJN0smG3z@AE4+J5EGm)k9(shd7GpX7W|L|YA-D9gY?d?_~bZakT z>OjPaQ8Wsmzd!o%{)Smk-<=v*y-(fUqzX4qjV!e2TjK;xxP>-jfAkB5PwN}uG^dp_ zyn4G3;J|$me8~fKCQEK$J+YIk^1T%g0>m-J@!iM!KVdJ4!kk5E$(}-gs*8;O~zm9`0>e268uwtD3@{b)p3HmLNydCEESnZ^;ox z**zCD-_jl0A^m+4CZX_mxJ$n@Jl>5k(jga6z8H=O%Zq8EB~spFTvSE&&3x)5D#$8D zd9d~j@LQQ1yUh{=TsGDJse_O8I#mti%;7luHMv$`xu5O4PWp-|_<`n4U;~$D&^3Q9Zo46&5!T39C!&B&ifGc z`9AW)&gd4k+xz|o28LiY*9s`ZXSbbSQcOxo6uh(K;*xifM0ay7N9kW|umF#9>-)$% z8~?h*6{B{^GkAZfiB+1OOD6FeS{LBUk97bkWz|@(Z~Y0MWl70swy!*xk&E{4Hx+n{ z{xb)`pkR{wJCVMajxMMjxtNcBFcpE3MlSs`vUk*x#UmvLk1?ewU{zgg9aQU9Wua{E zr!Gd=zJHRtP({xBk6J?Lyqz4hph%maA(oB91S@|W1raE9w(b?p6z-uEfmWNp6VEc! zQ1+FP#uXks-om#}bJ~qH&AphFr=6I$Z?%wv58enKVF7k~`@3AAPn)D%*212M{DoTqi|a70eFC z8*#+I#uh~7Zl%~z3?H4Xt=~kqc5#nQKLdC92K0aDn9C}CI@v{t3zZi-JNxJrrxu1t zf<7jQ;O|c7$Avg=d+~viaXKA)B!yi1OQiA6nJkJ3=ZYHU3GzMJ&u5nvop~h)f<)Kf zhtqZPWQKNy!~`pfr;7Q5l-fQWulw#_nJoDe>`uyc?R32(9~IMh=@qhCGYO=0{36h+ z$e7Ls)bpxoWwCapZ=f`C{V3nuC^SFRSDLnff-&93<}2GT|3Qa$B1yQlB=xMBfeM)@ zOSa;DM6KF}?`@Zx!VhX3o9|$o@0R0A$T@R~yWev$d62yNyO?CN`)ZNhpE}vcO8$T! z-Kdc-sNsJ`{$fl#Ow2;{GFI0i2fgTO_q0O~p`ZVoVx(||e@fyi?prX*ILEeHcRvdA z(gUiR9m?p!QTsF;I_cK9bF8bMQS{7mvS)S~f9e4R+r^@Jd|W@GS3>GyCaWt46_>6e z1A%}h&q#&`SM&?*aLcCI_I_rVV-Z)Q%GkxFH(qpP zZ&!U#Z7Aa$EF2UVGs3eeBegWE87TQflPw=zHMMgvLa;w3k3m3-mPlJhpx=NhSWXbq z3?c4%X2t&KJEVL>YYsMdXuOILHO)wMFE*aOWrFZmDvPKVY?3ER8I4=nFbz)c3fQ)k z3O2L$J`DWN%bPu~V!CALL&Dz6T#5;sPnH&EI)v`pYSsvn_8*o9G2?{j!>z^=@Lf zw-coWDFsuk`qlHUGr`E0)Y5d`#acxwC-{SZnlE1ui+_8V`?#QgZ;lU|JA889SY#X) z4!MQ<_@Oo$iCE5MNBF`!lhMQhf#Q$aG2Dt6>svtQ~1es`1MK^Sp?M#t#&X z_2OpW*Va;(GBF`6XU=5-K`Xp#T{c9(pu11D=odko6e*4m*_Yyy!Y_qdLdkHIMtC{m zjfs~f{2cTYMRZOvb*@{CGNUyg63xiR&&`nKmcBC9Sye?w=<5vQDV&B-_ zujk^(xLFnF<-S1BjKW(BQ!_<78&u?x>(jq_r8D&SWqJ$#yC7pii;**iAi6QEFH( zBn9H*&OSQSV$%4OZi9vo!tc5?!+c_N$u+PFK(Z`*N3ChNC3Z<_nWJUjeR+`?r<*yE z;U?nZ5*zX0{&Y~9a@+#E8CHLGlgEwlg3&f!<@&T!{38`eCzhNu}z8ivE~M zQ3->fHE`mnj>({hVdMY_cCK&wLoFkwX)lJ8bR~CV*T^_3Pz^PeWM%Y1?d- zYd~1Vj-FS5z$Pr_X+9lOE)Ja#V|g~ypvymk9sP$bC1`3 za3-TND3&?KX`>AzwWnnD_mqz$4TUjXud^=GCcweQt8)X)w!B%cvF+PYz2uJhq`Re$ zgNuT?GE8*gA2r0-g5UyNR(Qv#c(gJ=B>A~8Z@wDPeTshH271X3(}XXcm~B&OTU%w6 z<6iS3VLATmy3s&fCOrmhe))>0&;7{7hWDpXS&8_t0&M=yL|YcDh}wqx3lA-FtEW2v zawluTqwEiZi)JX2)K2)@K6jaDRO><47cf3xI)Uz7*m7R7&Yf16<2dP%SR0K_Ljf1- zL1R1b$d|@!ALuv|5s%@Ibt^*kdxa6%_<$V-8EAB*Eb{$uVjTIB`pB2~`no6Q3sqF+ zK4v$lEv_ztlz!BJ#8N%7CJ|gHN+?P%+hbh^dJ;TTR&dW$+&f_E1pWF=Pd@$ztP z^I!Z|nbAL&WT*k*AM42s(XGAO9nVjZ>27(g@lwV!yQoKHrMsK2`4KAph%fFi67fZ0 z;F@*Yp=mDEW6yyh+~3_ermZ=baKO35P6li7@8`quXXM6X>X5{cUy@lG3v@(P?(sD? z@G6dSJ>@kXp)cjf?2n}bR}pZ%-PkByL1~eqso}pgpa}dO$Au7 zFUB$A+_SJM+nZSSE5VK6d5uqEfwL}mrxCJJRTt4pP&G3ktX{?!J9f=K7ztSd;#e68 z`951Yu5a9g9JKa`Jo#kD2NaBM3pEzqJ+@(af57$|joS^xg9#xCPCYjFwEs9j{^zID z4}bA?wo@D*SJI#)#O#Qsyp@SZyRB!@nQ^;!jAq`eVutVc^b-Sre3kyv(72I}&a5i_ zMlWi_@hAFGBYEqlj!o6sUv9tLouAV8W)~RR`Ij$(H1b<{9HIv^sqvi5guhbbbr2+D z@8dX$_y+8o9fuNmvrfpx`t9)M;~!~P1Hki7oygiJ)XI>6EUsmMNwVLN4vz*!FPWr)69hBV*ZY%4TnS5j8^@Z56Gs7 zP%NMsMVkcJ8JQI*A%g+{OvW7}8_O66SHnqIIeShf2dNIH+*T$r#Mi{-%)|!pSrpIq zT_NJ|!S&BsQ2&2dbKdroKPllld;m&8bHm%rz&zW{9VuA^ReL43rJT2H`7`6I;SY<~ zRO1m>&@qcA0K9yd#EW8@@121Vo|wznO}=4!+thc+2L1YX0;>*#j-NCE4G<0=C_jv= z{>)e)v2wM_`8k0~#5b6ciII^QJtvD>9x64^?y6BF^}& zFaBNT%tn^q)KwQ_2)4R$D#PrsYefdn+0`|mhnAe0ICfFKO+VpnO5ut4e;Q1umY@EY;`3>nR{)K0-nV;(iYGNWfM8H#KfS z6xx&TKf>jO?1NHQ;q+dF{-86O0ciw_eYCr#QIhops;ZM(!?yyj86P?6p((7`^9c&+ zC%aRUJc(%`OiIjt2>sl7f^dyl9ygr&LI*64_;Uc(ev9w<69Em~398!F7NFc~)@9|n|Bi0))8k)oTE z7eP{6kj(}1X^@1z`MW?D>xlg^Be3&%+#)KAXHPFesuUaW;2{O6NU-6VS(;YZO&S*;WBA=X+Sxv-S z1T{H_g-XdVohi4y>=sZ%Xu+pzULON*Fw4g3>+Oz9elR^OK;rnYgJx>XUZJPbskqi; zZj4*IXBimKj_3esl4zz#0`|^5w1B(|$ZO)$)L%oGE=w>>Wt9;tw41<-pM%Q5G~ z;hp;8U11AwfPzsBmFeMUaoB!(WuIlGCB6gOFCae(M-vgt*sc#1d32*gLdT`~dewFD zss}SPi)!PYU_PDpcg|f-+E;a*biJ=;H2>uWtCKuhfg8q=qdExAOMC;^w{dtvbkJ-R zA4(^}E43Dr4$D#?^Rn(e&Ys@75`_$fHpSh;6h|2IQ21Hw{-`J|>ubPwydXae-Wiys zMPTnPifFzjOY1nePwO(fl`-sI!t?oxB?26JUk&+a?$YmV#g)FJ3q*^YhFkLhxF6Fb z!4Rwrz1{C&_r^=TN znV946RMy_5Z)|Y)>9u0G1)C93Mc#ih+&}v97wN@Zmj_S)dv1R6I_I|Ud+-MzheN@^ zSUI-ak4q2iRDxh!)3v!_l`)|<%ad6Qe=%O&tw(>k`_WxEr!~$2wc9vX2C8WsAAMoZ zZT)iuyzU`&&Mm;-3D~$WqKJ*(yyFS)WzEta zZ{jWhaQQb*v}Q9#wOp&LUCXUkX`jwvk_{J|;+6&nNeEM8%*)rP>x+@hcD zjujp$tF$zyOF_pM$3ULSfIjc^0sMk+C;i&S>fsG4)8F-&X`w z#)7#UnR5c)v+f9T8*GMf#FvFffglWnkRp*O)HX_GaNwK7&ZtTh06O~Cx4ui`NHr$E zr1l8#rd7vS!+U1kBRjmY0cr0emS{HK88Kwzw9V;f8EQy*^J6gY8DiBSYzCi_gjta7 z&|%ADtkm`7s@xO*;$*FVwb?O4{=uDmI5pBY&-#ii`9wxZ)jrxcXDM+vsYcGU@tfzn zsKfO?;QWonsgJ^3#R1r3>48Ln5dUpggBkyy7gU+ES_>7MCgYT`qj03JnvI!?1O3sEk%62*(k8JjjQ;j{Zcs zONBEU=R|5H=B&Ru=&$QhS7z_fq_DDjLK6B6L5T+F zgSgL|#@(2HAZebv->9c%W2%K0Lwj=+IP0gWdUK$R*crIQ^D;H-?f{KhljW)>@E{{OGQ%b|;V>43hrlJioP=D{Ka%vBeEJbbD#kxy}zs{%{-$h=q-% zrT4=lxyE9xncAu8T!9W%!?yDjJB~&XK5iUS`XjhLQs#extVW| z+Pt;#e+TgI!Q9bPurI?9G2fN@$_+JeJKcS+hdANJW)Hc}f*B2Af*=0vfJokotry)9Cm&FwDC2RcJ~Ky$Q*Mt`34v>W zpRQP4#pmxj?fyV!egAmKhlc#y={a}#%u0fO^O)je9xN59up z6NgO;ON`@NYA!T`4SwUFdZaMF+C7_Az|%@lml<@{A~NOnl;+>xPc8{Eiu_v|}J#evR` zODYDrfR9HwFmGvb;L1Gzi5G#f-Fg@jjkB1~e7-Lc{~|S9Sb{K7e`r`i22KE6W0h$2 ztPUq{B7bdDf#cZy2RlgYshXWg8IBJHTMYfpp|d9gED@8UHfL=BSx?PY zhwuc4l5F_W`w06Y?)Vkfduhw=*Sd=19Pxfxk2DzRqk)Jmu>||d0~rhYCanlr+hTyK zia|s>uOriq;`s^<2TI`D-gw=fJ#Rg~E@It|q{;~Qweu!020;v&rDEtyZ}J6UyWXVJ zRssOIStb$MPOCkRf4jP+BC)F48I1~RDIpuIXP=}=$!Tye9%wHRLDS*iTfq}k${wTH z{QW|Xx>31se*({Z?(@3Q=FkH(hYM`J{*f$O8zl`gF--`w{%I`a9dTjYD){`v zkBw{KK%ct(xe(P=UhsDJKmv~%M8(F{ufANY~!NZl(xLmNr&7e{h))-_BfVdm63 zS_#*#M>iPA?gexYuLgZ4gMnMW{@3qh#yZco;fi^L`IKG&@%1%*NrN4IaJ>)4|KzQig2P#%P{PKRC>?Mf)$~C_zmo^mfQ-v6K^Gp|x zs)~P)U80xql60%n@h1;khK}fD&rVA12g=PUs#B{qAW1OL0;1<(CFF@ER*> zQukR5ycIzX-t2~4fs#vR%aPLq^w)B>(%c;%X#Z# z9_^@0ae%QP{f}*rdJ@Kymkzn?|;zVc85BlAXskWs`j5`fb06n4Hekpd@^_a*SalW*YMYq=(U!jkTjtdT77yFz z2@Ll*m&YS{UXogMdfxMxighF=6=69d46n@kt`WicQ0~?kq=SBFeD&6nUwC<^nwf~@ zvr&P?mNjEcczTd$(*Ly9{`tx#+Q;(x3Db%x3S<_h%vi{;g;2osE@Danv57u_4+|>z z75%7M`%XEuH?7jyPv9~)JBA4EZUd?2GA(A*=xF4gim1=oaC#DYX;`r(y4K~G(c@c~ zFwrl2*ccySp&TfJd-GoDX?rlpY2BxcX?IpC39rigTJkDcjxoe1(B# zy_2XU%AqCIiTeF0wD-x}>J(Som zXiFdN=+X>*PwHqx+8ab<@fH4XGc!*aQVppIS!|p6bz?%$9AID^>NTb(3sIHHKS|ru zf)kz99l1A5Z5@x-)zVMb_naareRI{Eo*(t}FJ_@1*V78v-h!av{UVAkRw>tgZky zyp;1JxW9}-1lKLq=@V_i_Rrh{#fbsuSl@B`$je!~sEK~WtsvhC!Q}-4Ihps}#Fr;k z;c30eY@prhwZEUc(e6A%m1W=np<7it_O|w9v#+K^u?Nq6Y@WIsNNfU^>d2ECuctX2 zG!b@at;bvv3qJ!bg?g zo&I5;q|Ad``A({E>+X9)$8B+^Q#cmT*HW=VE6=70=q$jU_~O37Aig3#*c;%pW2^nl zDxH`eiY`9#$NK(?6TQwEvnN!hB@iz>7e6YBblYlPt1Cc`$W8lohAaLQ~VsaAk)0f=sG2T+zsUZN>whQ6LZ2jL^48*de%$(XD0~M83zQp^| ztP9;o<>ReAJbyGo6mdbU={=RWiTrR23l9kRueIEa1xllCYx5?nu6C~Zms1$eh!bwl z7bQ-H@3SmOuE+i;KLCJOQAnhlK;7k;mBVg<;FDTWDrMp4tSv#xXEei9fvyAf$P^#X zvJkniEO}yI4IaOv_7DjO{zL&AFr4i^xV+$2t|WCf`;#iY)iAl;qZMnd$v2}MFLXc+ z4!02LQjJPk34%ShfBrDJ<9K+9n8(3Q=whKq8+=`u8SoIBIqn$CO)6ATjP(1o@I~>m z`-gSk^Ldy&h$z6_igq}gu%_ZVO2^}!-pwc>aGPl=MZoO55ilP-F)Ey?cS(ak-&2)mca#?{(c*1hgkm7XOcsObq?DzAk zA6&no>X8@Fb5jJA&C{naeLEYi0fhSnuJYuA7_tY04%&YG{qcLU@N+WqH(?b|K2r?& zL7lZW;mwa@R=?Aci48`xX8<<^gl%)I3XLg~nmBrPDYWe|ksOonGYS1E36TQ`#0#od1x zB_LsuOExr6*UmDk3BJXqzmS6fqtm1cR&@5v(Hbw0gu$3LBlIT9Oz4q;QGzCdlL z&JfQOXpsX8?*LR-*##fa?ES4pyb`6SwJEnpAn zZisKIlO4|88y7EDYzDZ&cky~t_FK8k!gkrkY{A%6;}@-JSM{F7kwT6B^i1%`QAZRIlFCB$?*5If^hg<3ECO2 zdXM|@aS#RmsJWjn*H`FSI9YdCQMdXLW zM;qqf@UuA;IVMTLu&=Fu`1Vr+8PC`qfQUBNigD-2%X#RG{(4qb_SAC=^!Vu{Nf)nM z-hQhQoSoaYAaCl?he??;OeOX>e_gmw6B^^_TbDxii~>|NwmLJDldpS#z~4;#_t5U2 zfS>ow;T9z9DGCL2Czs2z)j$#G$B7t>sw!);B@xeCG?iM@nnvk|!hOZlfxEK_3{taD z?FM9?o7D?iJ?A?K`R?l$;N@F3s^%jvp|Zqy17vt!$gy@Ive14|ZI;0>8s zNd{2f)ZQdHO6+7P7)Qv8+831o9!Fy9OU5^p*+uYYcIF#Ca`62crV12zjYUc`lj+Mh zr_%YZF1NdA8T7x4_jAMtYvBs+@*q5o*ynl%=Crl5j+}b8&Lmzjs@9?4{6W$%;W#y- zuVI6r;)C3seW&F;5nW7KE8nYyrH|WfelmzlzMu?hvkepWvLRtM$TS05SZ%dtNU?pk zle~1BOAgm5Yfl`uzH^f)JgkQip=w&=R_sN`sOoDjMa6)8rWuAi9DL1XDgfoQv!OET zi^@4F>{(boCLnO^^@@D7*8uR`QZlLrDHX}L_3kOInY=0eW^G{T_}Gm7l! z$wAI`+X1xb%%K~;wJr<@zD3zs%Cu-BNX_j5T8>?v9KhJB`Dwe}HoTdVd6Ip^Y*{Pg z;~pW|!^tuJv$@qYU1_OpXnbHEV(&(DC|UuT6@9n+ij0WuCP#dXM=p2i*>EB z4p?H+c4sC~=WDapT<<65C*LaQW(l?Re8KD|sa@--D;Dgvr%1cI&2IBi<)(--@2f== zg7zoQxNdxm?*K)s>TWlC}wepcAtA9viVNmy|qzogna)y&q8~y;omq^aNoY3 ziKu>5t1paadZA#hHCi3*93=UTkd8uhMPue+s)HWlyP;2o&CrEwS2L$r2odBa^_5*1 z$WQ!8#d;CPD*d-nvj^B6H-%#UOzFxAtkv}-R*ux_MJ5I`)tkMy-X3H;x73CPBD7@c zL~`KfGVvJwR3ZRi=>5Z+oWy6xDe8I5UB!$`ehe!Sicm=B;9~I(j|wka)`E;tU;Z5> z+$bR>S55BjpbBXGhv( zXp0YIHC&)xF>*NCB@;PUhZ;n*zRcV`j1lVSa4tzqW36fx3tVi)jC}RUJIH`kJF<=& zow&RN9GLBREjlQAP$+{@S1D@Hz)v~P5enzwN!~B5FkeD0C7`Au9 zS9A)mD`%3yDC0da_A=i5)1JP)8WO_#8&3;8QcH~&9rvD>0awws?HEv*(zl06!+^GX z1%pNMy;Ktw{BHCf_dSjyE9oO_>MPz;uD>Db^4#j0iwZU#0u9lF z!btk!n#-bP&2@~D+-;OU%=P$tC!Add7Rdm;xKkXl`0=Nb?yEGQp%1N!rr!`vQD0mM z*Zq6J=98>Pfty_4cBAFfbGSrbolR%Pjpsq)gEK7$0{!KITIT@iGif-dhA?HRuIb;! zFUha_iivFSS5GH?K)<9TVZ~eh8VGHj-T938uOepmN!Uu%k7MXFa>LHMcYXOgiPj`? zCIZ287bQbNv6Posok=W%JJoX)&R{X@l(#J4x*g{1pWf@_o3V!eWr;>A1p>fV-cc6t_rlr+--f zG1<>@%ORI=3+49+-}X~Xis*oK;4onj7hQa;9x-dQEq8NTSeU116c^uxNfMZ)xQF;Q z->AnVHUN!j0Nd05^(M-3+l$9o2}du6pSpPgMlwhE)_HO~k_8ed@f3FZJCepAYlz9; zB7``Z?Dp~yMF=XO#mYgP)xHzg{LXuDSvYwW#`pZg-9P;CHo@>W6`;Y9V^b3|iAwtd zYx$Z$-XW(%K%p%=ns!Drm2Bmt@2;%cd32JB} z^mign;jZNo;M_h6WZAvHD4Qg&7=>lC-wd zyhaaAb~vyQ`XUjQTuNsk6lzi*)M=X{|Iqlqk?>?CN(kx&wK$B(>9Qlx-}jegjW$n! z4T7r9Bdzd2llD@njgH3_L^MN%y8^X&+^!w4UyKPrtMP)}NX_%Ba87$4i4vUi#e$qy z+YG*E5RxKUd0tNk;;Zj8%RW_8FZwqym2brJ)1POf4}jhoLC1#y9p0ci_A%)|11Vcx z7-oNl@(}g=Xxs!!9yph#r$h7j-@pFo{N7dhld9T$t^bl=Gzqug4po%Q3?DUU_Ru$R zduRLo1SUfV`=WXe?PXaBk4ZL?oBsEW&lG3yhgWRB^05yT3~eEMR{iFoCRVcAgug46 zyC=?Pjd=FN=TDcPJ1XOuus6#@^UC&6*T;a(34QTZsYgA2Xa!W_CEX@B_P(T6(mquFmzCUE3One-$rm!vs+G(|`eiveQGCmOr20 zTk0`iStqE?G2`=nSw*c=<*5np-qBIKgS@{s7((4GT~l7YCO#mVKv<2c+eAnI_x2?K zMgkzC7+i0j4J=Bk_-njxXOJQp?4sdEm7P+CMo{+UhUj>Bfr$DVf2%e$tB4gnK>Hw% zhLpkBQ0p-L;vUw}@&*&%BeRiTYcn0WaYtI7>m(b*fnlYY1B=y$tmr9kS2LFw&|GM! zyN#L%hc5~1R#a35_w;sj?Z6sucU|3bu0wBceJdVLe)wV8d#p5I8KqepA!VDZN)IcU zC#$59fBnjW1HmzGeDA&Sro*=}`}2EzJUj?F^`FrORF*J_K8s;Dk`DpH^B*34>A)g+Yih4ykSA*GNM0am5~EfM_M0FZx~aS zF$gTbgCgr{Xh&|k_Zwia)ACndYT6@91>!_8-w{bddG8T=S_1{WoevuOU^MrGQLnsW zb^6v}F`EIEaaYW`L0%i~qu$S}=yFYwoo}7y#UT%q1g$sLG=jU@jlTy|Sf3m9Sy&e@ zWz4PgvJ$%Oc*O(bRBk%--yXr;<}tXoZ?PA4vih-@T zFT!qBry8uPq?UiToG1LWjMBcNPuaSG3ZD4>X7Zbf?_x-|e5PVQuPwDHdk8Pqjj@Jx zS2AuqGhcuhRFK-lRQYG|Elg~aI&{5cyvBzHE6MZin`|#pVt(Q&Vf;$`)#(&SoZs!( zO!$&MoUG+37HFPy?tp^^`zej>GBG;!S0nuxPXBzVYm~&a>@^=_A=vKw;;&T8KwGXP zs}qvSv;BeN2CJyP)iuM2Vyxl51iOD;(p0$Y71nbL^jsycI~U`% zvCi@p^l9t@1R4u%cJ264DV+3SKl*LO`KF5)B zIEbJy{MeL*4@bUuA?L&jqW`{5x*xz5`;{g z|LB!kpZjp2IFlJEM{>$MFCa7nQGIUKXVKHUix8Aud2C#D-*aGos>P``=Qx^9jLa?Y z%4O*KnE*2!XI|K;s?hxGFgS)#s2@>4h-6245cXxLS5Zqz$ zd*9vf{)gRuvol@YRn_y1sPiZ|5dulz-mFrqLtH7siE_{$H|h%hG)AH@W|X*1P@6 zo96O_@*NgjxUTu9*vJUlItZ0sB-Y}~!S8%N`K84)TrXR!X9=QC%sKi9Iza8p_ zQgSf49?VCn?g~arF6DTu#;K(FGAg>I4&U{oAW7@xL&5{2BUM3|(lA`Z5)h~(+!-8C zrW6OBSld?vYS9T6|Kxd=pbYD@7(Z{r)o8q~+z@uR+64l_nT6(qHq*}Oumw1mPjZD# zdB3EKy;g61P_gRR)I>8Ps}e_CHGA<1nh1WN>e_eq$;1faA1nWh=Lst$e*rdbYwh!Av_f(Ts`nRLZc^GP%~!+wF>d)4Bv$0 zRti2UYol^A-6RmpGQ-Ej#eTm7e>3_H9zxHK#RK)vjS^$iHeQ4j3%wyvOv%_CBpJBRz7!D;m<*6aNaKooSOmWRmK~@{0M&qxWB_>f?#qEk%@-woiVE*b% zvbm~ahI%XXrgT_NlBk7BqBA?zcAPV&2mR;dkPve-!EaNGYHy?p6$iIdkMkDPps`;O z>M((D0@7jk*=X_~nKicyt|oPg@%38tXnO=-$~l^u#%~C?P_Fto~-tZn1kch;!QnK9%rFe0nBxT)@sQIg$EbGfZbVpQUmJ)XdwdY? zqpI?0)u!ERc*(!!T(0TBD<|t7{30qY*cFg9Zx$OA0eF@zwW1h^6j<}h9IR?wk&$CD;RY5 z2LQ0WkRgLElEyP@FAuW09^!50qxW~zvV9(6u0u*o$_Vo5j)SqE7dclLuUx7zC1sEl zk_9vv9XT`|*35vLQgfP7aj_SqjQFTAFmzm zbMD|El6HnCszhTXGk*a-xYFVpL>>5j?=H}dO0VWLg7Q6};>^jl#3-a2c#IT3nzOU! zI=(@N4fdYy&L#oAmnVsqfT9VKbKG6NQuAZ^<{GvR6-VEt{lB(QWFxUHHFV;db4Dd- zdHX5|q$epQajCa-paM)s7hMW1(wX!H+h3NT8OKG7s>AQM+s1XehKlGaF?&t#gx!sP zc+;oT!0(cR4^&8LyNbjFM$4YbL1)Q>FSVG_1$zV%6|;XKZ2!s3rOz0dN$6td?k$ym zrh3$ULP2O6l$hrfv6wS5@nFCH*k?lmP`mmQknVEql_O{39l@g<*{=@|X7mp8Q~ssn zM)li3=3&vf|IYYG0r16DIitpkSSq^S;gfH5m%miO(*O)>S9R#(TB0DpeC>p%O`lTv!y-5+YP{B#_9}+pWrS+YW#*)}oR?%>XzIhi zUP=Hi@lB3kpjZ7CpE%o!S?3l<7eb0RV=GCtqoTEV9xWTjd>X(THLkeuK}i^N9hS7{ zp&->N*sQGktEjjp3=jjhY@!5d)w$G7PUf@Meu>C>&Jj5P@xDj6+x*IXixuY?=`a$w zv_5ibg;p~SP2}QBi|kQ50|RBMd%7t6{EzQhf98eDC!M_hL6W;t6hs1<8jA8Xh~W(= zMJ%G?df=9E<~lB8u~|e>usIY`?{!T7UPR6)w+j&xW?`ivO0f7*O!JKRTwVU;t?uLQL}K< zC|?TVK&7EuL>S?|7}(|VG-}Wg98rzA2{eK*12du~zd6CTe=2qMph&aPJ+ATC0ADxQ z0MB7kz0rrLM--04xA(I;<%+KS%E{9$j);1ki^fG#1Q=53uv64D@YykBCa~&d%tL^? zv=b#-*kWuqV~QFRWYn@3MhwaXS=P~Op9KBp&E2^N3M&^I5}sy(%ooD6itB4X4Bx{Z z3bHt>m}@(WKR@anaLd7J{Gvud%@0#Wq5(_d!xfd4Ra|Knw4fmt%R-IeZ}VsX&;P<^ zPf?RuZ-HyqR?NGuw*FroXsxY$iALdB0p1$n2xgQCZE(+$;_1*!*?a~(ITY|6dh zFjrcx?xB0I{tq*mr$kG&(6~W|BUY`0>aGKHmwVNK!&X2?r$EgBJA{`<6EUZ5)_wH~@8WwblnoHo7|O`UCp0 zVn5t|kB|uQLjEp$Noql$w1McyLNS2$2->{)$&;$q!4H!DSp{;>E(B4V@|39oVOu?{ z>!*D8LMI|ri0ys=!%f!xI0t5{N0^?JWN_SHsiNGjB2<^BXT+lbD{#pS)p>A(^j8U=#7e^o?2Gng zSNbzQM@+;by#yJf45L8t81$lP=w5A@yr*;oeml;d0yU7Bl(l#OC7Lu!pfSVm>ww6w zhkZi1Gq3HZ-r(%@6sDF%uhuL^pV#w!jMsw;<+vH|XmXci(BN|)3XJp7ePTIG-E09b zp9UswHU_xgp-nnXlb~fq00b{Nn;KIBuT*!zrj23?6F7*@CML2glqP$1%5{Gm){N3r zeI>-Lel$%?usiJ$6Bzu1F6A+Jrk@W7Qp*xuXExVe`b0||vgmYw@h=`qPY;y`6{@q7 zm!)3uKWQEcGNr(yFpw>DkFoY^S;?Y9AOV8ambWNL_d-eHtJuzaJS)kTz>sFFLZZ9c z*-JckTkGXg;W5lirn?k(U0Vsy_AOsfoq0;u2`D@aQurU)iPVXd4j1+*M53Dz=X?Qu zN-^W>sf1FGtcLs56v2z^ti+fr1^W~_vlwAd%{PkS zQz>4fVo6^{+fQawv>+J@SW^I?%6=n|B1E|5;!V$_y4PvZM`n7HQVQ|Sbh^DNNm5y5LkP^9qotG&B$W#c7lEMm3Duq+FqKIf ztY=4qC-7z%r}TV@_Uo{dHCVR?D=I8|eVCB@zAK?=9*b|UUOK}|Lcyx}8s#^z&Baje zTO0qGEDiQT2ozxz=0(nxqmkmFO+Zhp7b*p<$S)YTRvo!1z)g2fNwM+VelPC3Jp4Fc zJ6yK^x1YMszRDEm7E&Q=Z{lHPzvY6lKw^r9CU^k(S+MP??Quw-*43k$>GzaW6#St z)Bt%tNnoC5S8Rt&ezT%++9Io5THlh$6AHBM4OET?n|#XtL9PBm5w<>76{|MXPb+ z)-{oB(0z{*N?(k(08N<4R6hA`oGiENSB@vKf7WhEeQteIHtO3-*GO23Y1fbdjIbez z)?KJp!0rYTQ2FX1GzyPUVAg)$?*HC==Omgh(A*s#F?@s~f6etW%)_m2LAq~TQ$k>h zRttos1(pdcT9QWr{R$r(l+8b+0a2^KMGC{hCkBM)S|V<}7BYDYE8#c6dt7|N(=f}rxY>GFu-W9?WBHsY|7 z)BifOf(^s6voDZVnzy>K{^Y1_s>lwjbN?08CfZE`3@1Q^C)i;THBCaxs{Z+9i@?TG zcpgg09$M`+Bz2^`6%~X)qWy{tf*<^=4MU3gKFUpxSlpM1H8^p~gA%9?qEB(TyDIT9 z&`Oa8ikit3kqn^sYH1W2AJg5dN3TdR)8o9)YFr?Y@N}*iy12%Vjn-Td&^P-qjZT+9 zrNwwo&t5+bG7@JTZEwE6tz5>DI(e{7eG#i0$`#}t(~MClM4hW?QkS^pPK4SKF9iMF zSUJ!w0?w%sb_hmTv}7f-4IAD!xIETWsK7-a7-0(f{>2D4BI%rF`r*&1N1oSX{5IHz zma-~zO_;2TwjB9ZgH)5VPDhz-eV`!eB1fBSt&kzG&k(2~fA%4Ng1f5coIf82e+fN5YFmhm-x#C=3cK33#gI_Zvs475&xVC;a*b6e5pQCROl zPq@VjG|j>eEBsZ&*=ueE~s9W5uE@s)71U3qpoceh zdHX!aSgXH0$nd6J5ARo^XW#Brw6H_&GYk%+icG=}y+{HGTwKIiOi}JKwt4-K6->jT z=Xd*3w#Ppu`}Ndnz_Ru+kl6y@JjUPMRGg{_T$gE;Xvi4pqd0LDlwIiiaYw%z+=L;{q|HqC`fHEE z<)EB}45G{3;dOuCTCK#DUjzhM;Hb_n9T zb64L4&>so9Wm&LH$a(XAJ{G4aNLdYHA`ZAwnL`}S3OGUv1dd_Tfk^E{B3B}Rkt%gIhc$BXJyC5^~~M7TAXHC zvp{%o7z#DN3429{NH!`YfB}^k1KFW9Ka~q$q*r~9%dG_KeWE0X>8O8?`fEBxe?nJC z()BD%XiBqDy$;KGxV@&f5Dd3Ma4vzhJ#1yu5azx{Qfcme8?zn&@^${ zj-q=MtFC>VBc=r`?t16LNtODy(LMvkFZMp2mc7)PbP(yXqVeM0q|o72>;nSx1Z%Vq zDd3&RUar1r{pEf>`;%tvlhj_Z$)ovL#hV~K@+1K^2i-c<*v=**_ZMcK>FAz9blhU9{qm3ES*j-=*f?BxiU@N;5QzG&}~1i_LP*qmiLF1Y#L zfYkE{2lVP_$@j@QFi`F#g4hK>XcVCnNJQv${vcUIOc1#($;i!`P1~{bYRkvq9CIJl zW30>c1&hLzH+S3WuZhqn9QR6`a3zSHGm1RVjrATh7W=i)poJe=^bzJc5?c7^lW9`% zjugcjMh@2U8x`X8vJm8PHcd~Re(7#+2K4jMfj;iB*Ruj9YWyyoTMi)s6h3~gU$+l! zkq!ATs#&_oy@x9`;dh3|62hsWe>ZaVGdWxw41aQ|I+hD9Rza}t%E!iyx<}N)hHvco z?MFIZx#TX9poRqtuo16YKSg~VkEqS2S5BAkC555K>ULxs_GAYS`(RquCOGbDhKCY% zZGA>U4pZLgD{rJF=!h}gasga?kYD1~s&c7PJ5pOMJcGy6jGt+`O)d7rI@A@pt!T`) zy{LooXAC7lN`0!-EA-vh8s&VnLenXi(&@@%OEz;7IjN}$K?oEkXUy1HMeXS$VLPVQ zIK-%$2rE{Bj8fwtq7?)%nx9?e5a8|Fhb!ecAf4gmMOMAGQy#qS&GADu0n%69#&&Oe z@G1bfhT~t36EQJE;>_-ya^;3(yE#Cp&&Ed?bKOj^_J{{`Be}pvIa-68b6UdfT8 zc3}TGR`0p7{c*4g{r!ct!_+K?y!caWl*WJ6@MTt((cI^MGQ6DZhE|__(Qe=;0g!UE z(;U-}v&cWg6KoCm(Y-1(6|a(=v_x&z|5m+n3Kgs?5+9u>TFfM}iEEq;nWy%)P}?ar z!C1pH7Kh3YS|Kn_T_x-p(15TM+Iy8 z>eY~PDfx{5yMmj93{c4f+UbxJAZsIs1vM7l+aD4-g zAKUBaN$WuOy&jGK$(sEq)^oO6U9_C#=NioaYQfK8CE&h9@t8?=sflDnZF+{^MbIl< z^utIn1TO&^bTa^1s|GZS1eXr5Fg^6Gu=XoH|Q?MxG54Z1Jq4i9-@!TQy)7~KH6WZ6_0u>M> zIXk40>X%6ZE*#Huj?Jo5+mF~dCk`PuI~;;`)z{0PiM|)Y@$nIol=*h{fd>&VFKnE$ z5I<4VT7xOSiIputHDS)_IN`Z=~ft=JMH&<7BO!Ybf)vYPII; zsFM!ecOH5P->kUQKxenBb4R^t%w8N36g}RCWuBp=fHb`{^Epg6oVN<{ z&sJ#I2oAcB@3!6eLAqjJ0z=Vg^{bpg)_GIjpp1(^@qEyP+j6@NK!4rzC0AW&y)H#o zV$}jo-=9jaZSsD8PMvT0wz9i}os!wNha32N%tq=NHBYUV;?VP$?=+IL>AZ9!e3=G5 zY{(&p)9otumM|PJzC%b11yz+JZOE-+V75v*eF6KE@vHv%2KFd*2pu|Dih5MxMI7sI z+{S{Gb-8Uhmk=`%8T3Ew16`&!^lW&+g(Q(-SGoU{kUMz&BtrZXIpO#^~|&~W2T61#z9di^YFlg_8H~f0tHb> zB^C{p?PZoTJ3LZNp|q7aW&S?}-n$~bwnSti>9C6;QIEBJI;=K&z3PlUy^tlJy(*Yo zCp$7rzJ_u>qE%?#@sQlbqCy%m%(jes#BUq4ATglshcnC24m!7ff+g#4HG}QGeeGRA z_?RIm^gM6WQ}gX7;b)&1UHzo3xt_Lv0O#SxseEBeuLmdh&svC&lh>9m!=-=9_}JW+ z|A^NVBO%u39}HTA@aRz@44~jZk z9X_oOMuB5X2@S>NpN@o%zV<%yN(Vp}ehS;rRcWz)Eq9cVZ%<$3by*E%d!isv`4tD2 zuo&EmBp|oo`+gLIR&pAo4mssA9nvuB^sY<)M>lmxQ{Sx=8oAfw7Y&HKwS93!};4LY~L9 zh!806X(Z#_`{$Z<=QnfQMV4Q5`SmJiUiPS`d>sTjQ*P_XE}d;ljNU*DtdNl8cSVHW zDxYgXU0W>D;9hLz;0&;hl68_=_CYiT)0cJduu9WwY4 zQZIpbk8cVPd`3DPa&jPqQiUxJ&27gw9w*a$*!n$46Z6=Lj}_Z7SsCB(Qm2ATxDxZ2 zFm%rG9&NFG$I^3QYNcBl!8eEOUw1ERJfd7T&1p$CB*dMGWV2>8}6e!&o|baQtNGSZhR|t-_tHB;%zmbx+-! z|NKg7TI8u7;1W?Bi>82QX71Bcg^(Ji3NO|5ep%Xyf}CNWr38^k{fSIjPImS@O%ddD zXF6vouI(&|3=5_6y`EXX8Z2O>V4K$3pF{+=_R6@7y0~B|hMS9g9}5c3k#(M@$Y!SF z+P7>|$;e5P6~yyDm$T+gWE8NHR~-AY8?52gmJX9^rE`&9lDUPfQ}>6@N|W5U9in-R z8WC|)5LY<~gkNIqpQieE!2IF%Z_luM`E0Y@=V6H0F1yUT0M})1gjym@Q2g)EXRq=4 z*S?az1cTd6n$%qV?a7!~T17bx<=fyQZ{(nW67?z`x)mt2*H%PNv_Be?6CUCga{$pb z!c~3YD>6Sj;X2)xQIjM)g_L;GmQiii-#tt5hjMkoH?cHKER$!PL?q3_Q&d2 z);|_>TEmbeSz1UFqoO_K>&&l#=#f6eq*0TdPSXgV@sb^B4Vw;ts|>sokUw@)%sA01 zNA)WCz-zNsF>=dSU+*BZtkBjcydRI?pV`biHC&7PJhe5)^6B!At=iVxRT=f9N#f!f!mZ;ffl%wJl{Jl9&>z~T0@N&Q>Q8_L)*?^M|Q&s|-7l$0iD&BkS z{4;~3k{FcJa|{U42zVufx1gxtnghO1E*nZCD_8-<`mH7N$nf=AIwMsUXX2K{L1_q` z+40n%2I59xvTIJUVh}Z;T7VAeIFa&-Cj-TT0l9e8O^?EMd*Rlm_W{tb8TLKPgGjU< z11b>*k~HYY+gvFMt)P63o17?NNh!fcnxMW}^L_@5_rRs!fV1Ess7mh~@RFT#DxGrOXU+ZRB9HZX*cnEs-qT&zMnIBoOK~;sT zx>D=Aw7|DAtg@)&qy4gjoI!x;3I4Lzt4o%^ats^EVNL*nOsnwt((}r7%Sr=q7M4gd zy@p$6k@D|=Va;yDlwoH@j;QWS;1X^vKTDIzqi0CCwIP!j-Ct~@kd>1d3O_V;P*$3i(!G3#2uOwq zxBUg%D-;s-T_FbJP)96AVrDRiiA^@+6o}&s&&}%2C!1=!?_vdp zXH2UJ{L*`I{>ksJj{*`Vt%0pBhX(vDjYQJzGynY~i#o~*@U+A$h&@YiH8W5^KM-*N zR{|oYU!vjok#8a~t_M`9ov<%=08cCKoc|d)t6O$4^ z9jYY8Qq;$qcp0VYIVOID8QodQ4|EvY*WfH)$ zKMQu8Dj$d$9PaT(h^*NQ0;ZQaxZqG0Pl+qYt0*O|(ACg zZw`eH`=`Q_Res>@Knk>|Si6#`hrV7ff!g#I<>1f=i!yNNYHMwDV0tK^_A5OgszwKv zd-teqmM*{ntUu5iAGay4a^VK`1dFOc##{J0hzW<}1Tqn2>^=1IFF&s6W;GC__Y1TS z&rF`rxPyKXZ^ON%L;tsgzaHh6aI3+2Y8@BNDtyD+ZSpzl5Hm5JaIsKaVqW&{j@4%6 zJ1~7}0(n{}3|HY9BswRJfyds$i(E;5qN|@ndoYx?!e^#f5w_mBqH%nC!3|A=pW z%s0e=C$KH&5tRrM$;Y(Bj5&-7PgJ`akqW6LNjLYipiNM)i3}17a82r;N76Mb4yd$* z?i;$m%p_BhL&36%(tOj}bO_0S7n8ryB?e(>wDMEZ>cI3EheH8tZOmZUvd5xwjaTU@ zw*(bBPQ0(4+atV*djd51a7g3}z8GDQ`DnpQt?WPDBrN@zZnwtyi@TmYr+qGI8NFm?Vt25g`M zS5MO{D%daBK9rz6;T8zU1Vtl@?aILrr51jnV@RRnf*2gRyAjhfwm*SD37th@C5YbG>s zP;aXJq5u5IVDi1c`Y#zits)7?KGeMqY&p3{X`G498=rP#!!_TPtj-ZczkGO>_m*p; z7-WpO`+CMjDuaf$y&~^68*aH#g~hgN%?lC+oy$Eb|1_NjS@|P%*LwE-IRcaqKu#aZ ztW^;(?7(JLzE88qm5By@!TjfPeb*|+!x&#|8(|c}XgSN_VxkK7NJ z07jOnVC-%*X1F1CljGp-T&9&p{&78;K@~#zcz2G+?2H2ppW&xXzE9)?U2_U4M+6Sk z0I9j!^ltYh2<|D^SoMpjCiE^fxntEr9(n^sW@LaU$&@R=lAdsjeF7~FLISo>JfTZ<=CXw?3EKuH;D_r27-E3oWREbK#)AlMrLAs6t zd?a{`T)5@I;m+h(vH20x$0|RqnNtxhEOGO9Kf95$`~I}(%dnZwnheaH9~0+LRXwm( zjdLMCyWO~4EV+ zMipIv^@D;7vjEsW6@rQii)CPlW87-DZ|CCDZ+lpvV&9Opun8;@hSyETmr&6`UZ&p% zl6GMZ!TBYIB(=|gUM;ue8#-pB@d}{2j3L}ahZqkOgp0KE?)b<&&SA(F|Kvi_laq%{ zt0X0Kqj3}3Rj*#*otdtFckAyW!GNJf-@5}F&ubjy8MvMYn#dSo0PGveH%lzLnFW!=iEhlqeZG zi{Nh$ygCfN4@to49XzGpanw$AMjr@gg=^#{I6C=;SAWs>egDUAmp^@K4EE%K*O(_| zZNm9)URZ(G?G7njKE&C=*#q|J-))Fe=wtlv^)fft$_{q7bAngFMVX_Lr_rpz_UCiSX$DlElbh5 zSYmj~|8~#^1e&P`+Ec=`D9czny2gv`G*Pbv=|aaMrat}ca*9dDFCtu&i`ln@%pTz( z`a9LQr@q3tWZW8T!498H+-E zmRfn6Hv1mHS&zN|8#W%L{>ts`iTp*SBQLFc2dXxi+7p3V+$jZ8ZprUKeuY0U(r8#J zz0N#Sg>4#jnU;Rv`A?tnt}I=Mz4-{8S^s&;xF)1-HDK`C=GWPqd?el_kOXcIIQm#* z=(S-c!Nd7sN-;WvV9*)k+ZUxNge_f^M^MAZiKaq6?AAP zhI$0Ywjj*3$R-z{Y8thn#m!jkU%MOBiv?-y4)hLFS#P}64nH|O<{G!`4Zgcj{n>kC z(iR5@S@GXWp?Sf}PeWaZ1Z{=aj6~TrF0O5Y+gA8ELomoA4baw1WuU0;eRBw8$kM{O zXMDuQN>=0G=}8_2pbf~I7=k}0 zpY4fpPxeLmhRJA@zsrCnR@9`#d4KNZ@3I00C(X*1^U`5V)_2>0tFubY@Vvi9qzOG8 zg_!CjUG7C<y+W0lFrx#- zpwG$>|B``7yX7Oyskv<=pMS98M)`0wO!%4Tww}8&m-0iIF6|!aKSX-t3-y}sl=SLf zM!r3M+eb{@Po$bjbOumL<2QXGDe7rhJ3c$)f2p<^MdIkK^U*TAADDG$`>@fugVMP> zpaT^;Y%`Lb;4)(`YPahsTSIR&*xcb&o22r_MyY|P!tqXq3}524*3dW{RB2v9`{&*M z_aWbVP;0?^-}Ijbf4=s{hJxQm@ywa#$B!caV=G@T-b%fuJ!08b3yOA02qtbXzQg{$ z`8cTpjClXC>;P3s&UdjDPMdg7YTh3p;)n262tVMc$wDuC8m|bW(051BP*u&MCa7N( zN$_rk`m)QdN03Oq%k}rjJ_ZLm^?Km&+ylWgVGvxg_e!#}>5|E`WpeBpz9YV8;f| zA^c>52n+ekQ~NL#cyJQtxuNOo(C7cu`WzOgQ*}FS5t$%R4qOh2`K%^?ZvGA8$zM6{ zJ1cvuX&Y6qp}w4XpChEOF$(tXkHRnZ7t>C|5xRe!HULS4tBJ`3Fg}D=Fc@@gxG7&F zHKQDQKApsj#JsFnhL9JhX=H`JvR!4t(@vMODt7E+7y7-~kB3jBYd^&&E~^Ud5(6Su~tTy$<=_uj2AJ$A-V-s%FVH! zG5I=`Ow?g#(>)2(A_s{E_=LU2U2GY}7GJi1I}}Ki6Aw5ms*@SaeserP00nZF)L;rl z+(A*7z4Ubs%e?0P9Q^tg_`08{>U(M#u48C>*!?vJ0m6b$eM%GY(4)3vX3nE=Z+90V zcZF>$K@eJ}x80s-rv{*jp(>$uW9|d=JTh=O~c6M@oY%i)JN>&HaAW`=twPdM&px516&n0Qbc`xvKBQb$AN=Zfe!Z zjzBYg;mLQVoW{n?egD+?HUr`wm=S-byS1yam1Wv7T2rU6DZFe^q`yp#$w-ZkR{y(U4^zdkPX3bF*&l z2>E?r8hFv>RR0ia5BTvY#5z%)9*XsjJ#Gd}`h-Pr_#cH)eP>k_gQ)FliVSG3ql!T? zuSv**tlo{m;*%8+FItg&frLI3c*22Rgsu ze$K6dJtL~Er%yFh6>}?8zB=yQf1M7K@l{>A=&| zB!A5+`N}=SXQ3Sfn@%PAS*E427r%#rOfREZ=jcM;r*55CmNn&NmlTdzF>$L;gE}dLNJ69}l@Xdts&KIDi8!|Op|q1xLLBI0v1LEBTvWXM+@W@^G`a@#Y7TQ-6=at5dOi%~p( zcC{fc5xLvSus^JiU(usw^;f122pR4(njvjJwH6ZL;0HUEm=yEo3Tge#lq@}#Y1LiM zwq9@Bs7dPA8U$b}Il{rQ3fr(w*G;j%eA0zSgG+f2D;Unmh{A7OLLuk5tA;8ni7S zTOV5=dB54#Rby$(dBFJ*6rY5ralJ&{VY9lqy$YRvYg6Q;fYrLdgt0cMO3dLou)!R^ zK39NXY>y`$ADjGHW##%Gqkq@14OZ417my!|xo>ptt6vBSjLVV#s#L}T861+8e&}JL z2;ZNQBu-Rrb3%4Ni05zC#%Tc4U=ixM08Mr1@ECQQjqx=m1z&C%N(M=^^%&c=(OUcR z?Y(MTY1IVSB^gZaptwQj#*p7XRLJwRK6|d7OpUDf(!zXyY2a6`sPr; za`)qMXzAi&Jtf&0SHylQ1%{J6DQlL!*W4xn;;pXJndbw1bHs!|eC4&%j5D6>oJ5xE zh-$d3l`I)bXIV^bN(g9-+Ubg{aq=_q3q^W^je5W&TT^1MFImE^OXJ?~vfIrj##evW zHbi3%P~<_yXCr0bW5akpP4}xdd4c%m4F$`=+%8X!SY%CZe!W<~aR-y&dte%_u_kf~ zuKGi@0jbNyH*~h1Wa)i)rh)cKetJIjJiOZ$#_(pdnG=D;_iydDkB5SFPzK8G#!s$O zyaz?KRX+bFxe+drfFZLImJvP&ykBPTzoU*x(C9K5K*{5@i z^3z)Pp}Sio(;IW)E%Kd=vl9xwT8d|vE_DVNP3dy08gS%U^V}tHE<48u3mcy18(+`F)RITYh47G0khKeIFOpXb*JIB`FSUI%XzIdhi~@~ zs0P!rF}l0X>l0UN&c=SRqds}+;yA3$p5a$tMU&4e5T8x9yiN=eFS%0UxJ8;o7H0zv zTcD|7-saKobNF^xU5F{vU7osJb(w!Se97}D{!f9g<9UsdQbnRgt`B9L6yi-u6Tt#62ygeK_$b<8w7_(W9|(`MHCxVxpbhi=IgZDh`l5SWRs zf`G}U3G?uO!5x-~PRSB=7&_?gGK}l>g%mPJ@g_&rudhfnSjVoucMt>LB&zbWXp>`T zo{}i(1lZr`t$!~Cf!JS7u?C0t+P(puGD$Y$Z7UTexzKxN(}UA(J)%0F)PS)zs%~*w z+0*NghXV8ZuXi3*1mM@ad9ZtHnIyh<%G)ETIaRo&<9bMN%a)3Ldx8@0@^A*U@cj8VTp`xEgbo5tx~-1JT%gSPHTZ8w_&-4?+=jQ+M*dHDKw@KHElJMdUpewAzYnwp zs_41aJ&wn^MsMYJi{Uta;|@`zM=fWI~GjY+q?YS2;bNEk+L6|!L+JzRS5p#w1Z z+L_1(&EPrHHjmu>QIPyMajM`E(lf|WH6WC0V}`&B@qIij;&o?1t|~;xk#NO|vEgZ2 zT^$6{-H)PC{-CPS{7zTq9U1_zs+feDYpu4O1|DP?LDxU_B{yp4Q{jJZu;) zLvxAj&Y?)g$9rG$!s{Tx&21EOocvV-!RL*Q+~~WNVHu<@AK%c?43g6ut8aeVV%dzH zr-yXdaGK%}%<$Wy>$@4lsh+xZsNsYOb^L!Xz-i1YScspe|EFjJv`7|g z1q?!~BAtu++Lb}_S=7n0Amu1YfR8p!6U6fHoQP6HgaxYd#!9M@HY3_<-FyvYs^bcW zj*;h*=<1;`_V|zVy%(yA4gNSYJxx|;*}2)>mJKGNEaQ57`ikpDm$&!JE-yTwXCZ5T z7pn8gA|l6f?KmnIB<%|mh&A5dqMPpQwzf);8UNGM+=Ac~&bf)h49O=c$|Ssy0*=%; z01y}wkcxZSAm~$IdetLl>!(Qs9eHm)8M?R@6TZKiRZ8K zpde4)%v{mm_n^AG{Ckmc@_y)S)=y4$TEq-2_t-w6iLZr{-19zAjWI6TyS^u%C!}8@ z6MFyNbbr0K=!M8)*I`)q2ZBg?5=CM1W*7yzk%IV=dQcW{x;;)pv13b9=b_=+f6v*! z$b=;mdT?CbuT+$Ga&1FtM#TBB}F zW_|qZ?9S)%_MN4@9*I+`$=ze@>A4|yb5!XR*IDrY*v z6ue`?M$l=MwYV9RRwdJ3m+wq+N1@p_8j-{JJX}wuVDtu&s^E;(c~HA zn6Gm;P?-Gv1&7Qy^mfHx_o7~2gz8;><=PSqaDA%mW0HV(E+q})zdDQi9N62&_Y-^!Cc<+q1Jqeopa}4KEirHdd1jhE!NPZl2-eWQ0{xpz?zg@c-Xir*61I`u zABF^t-@;Tz(f;Czstz2^-{SLBSG#X)3&r1puTvm6@6Bl2cBbK=7%xzsnY4UIa57lx zvM#l)_Q#Quw`i4z_g4M-UtQOGf;&D)7%lg*R^7xnzQq+p;l+GC!ymg{M9RK18x|t& zLD%A^8H*-KlUTc_+}O9EKBVLJ^3Gx+T;%@}JmJh_>;^^Nw4_9$+rrf#=_EUZfG3roEm ziQ#}^Ca6X_T5ofNo*%DDHCltGmgfpSq5&Pu33V#l-C#M@Z$9J)0wK!T-hsrLtCe;{ zrJkB~5E$qWw$u*J@Hai&*g3s!nJ3E%nU!+E2o~|(__fM&pa;HL$p6gU`R9*P0SP;< z>Cx!rehqCD6OG3Hc@*~^eP#mv~rPQXr@t-?WKw*GMY|7*+XQ*!u?V{fM z4B=S4yU5U*Y(QNm!X2dB92(NQ@LFg_)emF1%$Eo?y4L+?mO7`w{AZk$gg7 zdD6L25fjKeB!qiFSs5G*qZ49Z9wntuh7Xk1E*4Aycbm`cggS-i30Fr=+a|q07MQSV z_dezGuLTt5CLCqzJZLDeP}gH4VFX`HVm;qBUd5se{uu8_Kz&x$Q`zkqyuqoXp>mH| zk`*?eBEzh!V}Wh!hdk7&f)@%I%`HMayP3{Nkv*tR*?}k4mx;i_ z2F_cO8|%Ps?nZgjwsX9twAY>DxU|cb-X<|=C4=`spipy)Z~P)6tGz&bME1~#B)+yz zsxMj|Wu%rfVDYCAt^RRh?d^FYrpdLfNe?0Qy~`!ZDYTCE@%-?T0JIpbo4XJ_al$tw zyI!W`Tob~8v1{zdM}?kC|GhsPkj;xW_n=9}^jK;7Gbc@06cX!57OJyv6I1U2pZ$lN z5V3Qxg51IeV1U#)CZpwin-o)cg={-`-y_+Q3VJ@^yY`{gwQ`M8I*0)?fQoGLl1&+7 zm=x{~p^?hb1DC1;D<8YDgQrjupwXe`3_tXTntkb0du4^oIV5RWz1}#XF5{UVs-?mF zx2USCn1NA-A*%_a=Hq)XgC;`aMCaH^0yp7iff1%%f%8QqRSGc{QQCrOklET~|E=JS zCVpLc7)v!M0Ml3WanioF3Q793+y7~3ajyx%7T)R8s(X_4gsW*x$` zMJ(*2kA0aLuLm9y2l_Mdo`=jxX)vE;`qf{-lg=}x-U6R7%uo3W3ZXZmb3C4C0N#+V z3{@kY#}&a!qIa&FqV#+Jhgjqp#^@~7K!eWu!uY+P+7XVGqHUjsOq$Pqcf0)u#E)iL zP(zNxZ+$l!Czb^^k+QT7Fzt+bR;}s<|HQG>yQ%AZU|uDatdi_=kRZKbM1Sm$En<#N z3Sl^YYczW&15*6)W>A2{<+`I}4l#QgXZOB_z@)s#U+uY&dE_U4Gsm14)-(}z zy|0!^ZVBBRkf8&&5;6*#<^=*H&W!62agn26tjHcdWunc}o?Tof0FZ!OslK5F|x9uhYS zDrBb;ec{^pI4jMLHvrUvf5V;uMH*$isBguTM`+H#2IM8XdTDAc81%*}lsjIB6f=$e z=JIUpkWyBite_(wnTH;dp7~JTrYqemp7Eq&7Zku}!&8`Gs*I1psZ4><933fEpwxF)7w(}ZE(>60�|5|C~tvWEUAg|$!-+n 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 literal 0 HcmV?d00001 diff --git a/syncthing/logo.png b/syncthing/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c01ec063ebb75c8e969fc2338ab15483175c4925 GIT binary patch literal 91573 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

    8*ITtl`L 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%0DQRcY3w>CeD6=+xFQiX52^) zFN&ij!rED~*yVsmXzRo;V*ab zMG}o@!}xBbQNug}H6s&VBU_eW45MKrZ>0@9@U${6C2ZP9!(?rS~Nk)GLN1da`arNJ&AVJ@QykKe#&qD%)#w4P6XLyhGe(H z8oF+WPH{bb*|Yb47X>KHJREx{UU_=^y;wdW=4N-CA4!PJQl?W!8O~LW&SK5LyH*%4 z|A&~*2)4cW8fd0RwsRHjxPKCQG2Bt0=BW7C?&56F@+ri-fQFUQCs4&_x;Ai{yZPorzc)z zH!{&~RF&QEV=wkBeh$ z6DXy(vXJ?$y;{fdH%%cuV_Iv<{BUblGr;I5=*&1`*SWPOUVA+h#Enk|U@El6=j@Jq zm(KP277o?uykfJbT&D0Q=}NS?20mlVCekkE#Mcj(x1C#24)eJr+PRx zY-IH@w>Iss>z{$nD3vJZzb{~mclX-T*cw_HqpfL~t23mq3(MXM(8HpI+uu!ly4=r*AR060ep$$K=W{$8()JB3 zXT_8e=cC7OU#)kjy85amWTzE|{ji<-*@{fxoigj&-X3b)I6vk@d**3n^T>@9im!s5 z&ne)Dr`~s5ZUfGnKFu!L)kZ!@4RR!$NhE;Xl|7IMk4$3)DU$d;9WC4s>NF!3H$CCa#eT0-8bU?X`SV z59DgwJB7x<2C30_L^37E7bE*zWIF9srVr2Kjt^|5*}_M0r3jSbxBa()B)r9MsZ5(U z$6d=Uqj&nysDZ|Cw@?$OMUje(X?|zAm%VUqX3{_Xe#;v3FDnH9Pbk1%C&kNJ%|@{A zq=R3zh~b(IPY5qOI8(YYDz58jKHs%VZdvQG;#71lprIO5f46C!#^r&2C9PX>&+4XnMWo<@>xm|npoMq|jm9R|q zCrY9ld3;mHE0b~c*5_tev{GjG2WQsIG8CyTtxr}(uO?4;crie!MTEQ3t)oc#gb+Px zX?qj6Ax1P#CZ7D8Z&0(anJd%FNR?<4Q}>1B{0iSe%@s?yjXa2f5pm6Y?jO|x`rWC9 zY2zCx@Zv%`F!U5wVKAv`68p@F_ctH-8l#myRF1{G3rC5B`||l4sqkS^zST@37@lP) z{4M#rn4{&k^xm=Z^^CYQ!Q!UmXHwx%0pp>s8V7~iblgp>FxRs;Svmlf0H1JzHy;Z> z>R8fyR@zfQN2J(@yff~zs|q~XqXDsf)xl8gHOh8w~%OhQOeg5xCba{8y2lOv6hZ54?2QJ3$iXjQZ<>yJ9pf0c+`it zxovIN^E!e^A~IIcXW|7o^s!wDLqd(}n)t4cwy)MvL_wpMuq8iE{pDzGNaNX)8b8&8 zI-R-(($aTSCJ!^-$xLSlnGu%yh0!@lOru{H^wOal&e|RfUzSaOZ#lDjt@Rwc~@i5$kq}lQ7QFf#GR0+Uhu1?-frQB`G2Dc&}(6N|psn6~6yGtl_FeZOdT3F0 zgDtEc@w=r)@;H%;&R13KH=^HgaXJ2i|3I7m^5Ue3yiYpXr~5vNz%$8BtDrS}(A2|K zmDqi3vD-AHXg4!<29wTgGv%q=KHBlnuj4&=%;YI9v)|3Jg6L0NX%>HDWc$h^gX00r z`KCdQDe7{iW|nHmMZQ)IUXpV*>qO?*q1%qNZYx4}@Yx2yvE zxAb!~Ci2_K+6kZ-9+Q715YFmR$ZbXS@12c6GbQQ_LWx(3*nk$+t%~gQW3VZlf1U3$ zL8?i_0oh4JFsM=2^S#{D%cs`hm8kV7+SnbR4dPUl>mXJvD(f5JY+-k6CD-0SXSnxc z2PtUhHf)~RtLf{u9*(B;Hym~!HBJ4UHCU6$S+UV#NJ3leS__=Qc`>=$TcRRKYs&At ziM0-Qyul9+52z1k-6g#q8wrLaP5R7yMyN~-M}yH4SJIk`WX}%7{=QA$5TX;oM-klR zl^>?O6|{5I>wxjc#SqvWE{8=q?6}((Zfb{?Vq(!q*1l&mb+dB zSfzG+say(N5n34ySvs~c87R#uw+5JRa(A>OQE49~9ImrDINrf^Iy<07MFHdVWlo#@ z?I>R2y7Pr|hTb6|A!?H85aCR>w-=M-`do&H?uqaNibMX8H$C&8Xfx&vpP*GA)NL@gU>JS)h897 z-|l+wIlLNY_6Ckj90Z^~lH0|)6746Zbz8>^^_!h)AwP}^ASdGnc6CDfW=6GY?|B|> zR}!voW+qQQY7$Zlb$w2%bk%e2EB)B+kMNsYH~WCTfK7S%ipt|)-y6I;NazN>qJaZ? zs9N9tFH6uSiut%+c@%LH;O%(5tw;9%-i6~irVep9I8Vn62p^0UX5=nJn8@Zzp4fMM zwR)Y#z3bHR@^ZXd%mP39N&pT&`k{}xO|YaDm=V11q;ElrC14lpp7=UU6dBkrZ)mk! zV0XEc(<9*L4D);Ct;_RUyrOk)-Zs9DXu*u8*>?hIzW&2iXrl_L-G;rV*Fm zB1FofURR|ppm5}+?F(Szx2h~fuo(vL=}tQU8;Fk)Mi4KPZFu*0?~!k<+UDWpd6>51 z^oe@s^!Kq|ssk19+IaT7BF?z8+xAvF=anXYTYKvVI2W~O;1cR~zfbmOqaVZ!r~YyQ zy8lUaBQZ+Z>%%?r8DOXuWb-#3?b{|2AO8_1IUGAxI{bv-&bTo2tI%QO+8^fE(Y!nK z&$cF#WJo#PoUH&;Z&{gki}MfaBkNTIG06yRvnrY_ZRNBoS9eM)cr7tLfC*0r5+=4L zMo~u`s_v_LN1nK-k@739h%zr}ocj zP4Fxdm2ggGDN}_}JWXSI3f>G;TMbK53ju;rK<-qA|^YgaokSB#)9@LsEPzu|8%44&K{#y8iN5FLOw%vQCRZ}AS?!+oYk zYDpg^EZqGBqNdenZe72?Ui0vYMepjrF&l-K_xC#h`(c5a(dGPr!Wh(!FWA(cD9pSj+B00z`vg~Y^G|@S zs&NC(`-09__O=~&?de$^kDSg zV9$?kXjBTDpyu}{_s-s3+2|aF)fJ~fRy3yqF=}xDLR?%fB0Fmc`;UxF;YvHqm6f&l z8{+vjeN`&;=0T9epxsz>#+)+nkv>>9&bVJd_Gz9QuuaY2wPVeg!zFr%UUR*$#N5{^ zl_}|P$WzvScI}H8Oo6`3t!-ItAlJ7QbSoyY!Y3l1_|n}HK;PSQMdy%2`qE}9DepgA zq3PG90}*iyAGA7n-Jyftbh%NvICVCcfqc@Qp zgQ5`5*_vr#`UrP!3@U5CGCwJpOczb+%xx(YKdj$j)}$Ro)I}OzF-F}NPKo-W|laH@z0X%-1u%yi`aD`7e7Ewt|LhOO#vEq0ZZU&OxzUZ(L%2f?h(X719Xv++Hwpiu2*Cge&aAHp>fzJO6+ z)>~NANYRopWv-?g_DUgBcunJ6jc)Ykj8-11-{YKb3tPW*5@I^v-SEt)<~;5{Go>=F zGf;Gv>bKFz3W9$+)fOVx-2fQad{AJ_TR0f00dqrR9E9h6G*dtFmn1BCbB7P-@4Iwg z(01t|>|%h=TQ%79s~ZUhYkr73;MCBAYMAdIIxR8oG%j&A)2Z*w?AOsTRQVm!NME+6 zsW*jcIMj2I{mrjzPfK1sxlYaP!yY&KH|$_GcG3}3g9_tf9I%20>WoRqNZO*MgAOo= zc2T=tDR;}-i?q>yc-_tIYnbJj0gvfa`$GqfB!)`<7b*WMg067a1fqV|3$(~y0FpVE z)Jfp=;H{JXkQNJ9(u&fg*Gj#Gy##7zmp*_8O1X=&PNFs@NP|@nJy`+2h!LLNlW}{B zd)U0aG)m5F;ArRUU=!bnP%yi8i6}ky+=zLLtpU%#9lY~aTU_o%D2g~bE@%t!Wxzk( z9vdzO&*)fl7aH@=3yB5k^>Y9N>W@ZMt^pF2kvbLLSDg|fG)?fit zwb)9wcrn)EaMt|nRrr&on?T|niTQ?4;FsEBX-bmKd<)eL)Af3Z!~NRH$7tpI^45H_ zH3%ZvJLh$ib=!B<`mrJY*}g0f_?}8yN#;on4rk8v3uc4PRu!TJUgce&C=_mzI_4iW z4>_wgka|hdkG_YXH#Ubu4aq`1M$N@k9M_XeFB6o!m+h!kg)amUUEF*l<1*HYUYweL zDlP<=16NB%f06#fVY^ug0D6d;zh3GiyP*9<;Yitr08B_9L+hP|p`ypZHqJEHkx`bN zAcaR&y`vsOyL=r3hM~>wSdmX}xWbVEdI@Y1Wy_tyG%c=ZuA_)Cr^O2$Y(7@Y)%PHP z0%J+$tAzVAhh$zCV%b6cg0J3q-diN}9lUD+%u?)PuycV*x@&^$pMD`ejMK_y*v{Mv zq?s2V>(Nxl)0{&+so^zbynu@5Bk>m{tExp=={cLGH>}VlRnuo^`dWZ4;m^>&I(c(G zH;?=SmNe!q-3(fgW1DJ45(7su^rc{}sM&aW?=;T~-sJ(L<_oGHh6F{kZwo%t((uyH z!R08t;r@!To%-pzueKtaOY~+YUm#pfiT%dohXBImWWmRDbHYkqD;8B?rf113zOiRI z4!hmk5y$%u-b>g=a+D-kgbZp6^U3M!-6CLhG$qpOX@2mY9c~b_XCIf5AiNIgqT_V>B4`Fw&HtZZ-`d;IGY%D{VysPp~KfRJXo)(t&G-yNLuj&_2by|{r^vY3z7XV~vm%AU~+V0){?*$itVsr^D(Uht$O_=b& zIiC}oa1eh=`Jg~{al3ul4`NLK4O=R+5-dK^gHUR>o@FN*(Ttn%!y!I1M5z8h_)7Wf zl(hC!otq%bi6|9P>ZH5fX7E7Dk@NJ$px1gwYcB$g+#lTu!RoWu+*T6&U8wDDUlYVq zT9rLIh&3C#k!>u?Ghx4`Gx>ddbG!a`%iPEBC|z*x)9wqo0G6Fh$%)Oz$%%cz z+sTpsUjOnIufu0juYSWf{P>8!U|%z|wt2zS_3lA(z(-~fje-$AUZk_Y?6PHcAuxaSK#c>Xa(Zqhbp zxF|EV#CxS*Q4Z79MjwgSw2S7RUM)|u09aA{s6FzPmre^o5GI2%#%b2cTiaIvDTIhv zu+f`Zgi@n)3OKX&Cz6#g{9>FSwuo7l{^FA&!wX+hQ-<&i_rBTr%E=e zg4PW2fdg@T{5Nyf-O^pf{sAFK2kH-;rT0L^!kH}@zg$W3`bxoi*5I%ECJkQ}+#eL*Hl?~)sB-98U9SDNX1Gwir-vIU=z>GWL2W9BSCdxn49 z|CDcHuJhClzL0q^B+R_MsndDfCz`MCcWR6@7`qy5P`8oxE41eSBvUe5T`8||Ts-j4 zf1TahXi^#K34k66MD0wZ)bF2$rOO0_c+*A|!dS25`KpASqMsF)#wkegOOVZWjVg#h z;au)c<7L(sk(ATl<<|M@vABI*Q66D-q&20pb_+D?z0VQ*MS-^@A=g*&(2+%xUwN44 z=kZDJgn*!Ll6K`Wq{~_diDgN@K4*&aJQY)xs{wKD__~*a0PD(w>!LxFz1<6DlYEY6g7kCAQ(BWA3h&tgg-`PTLXJ%NWrohY^+u zl24-Ea+2kASC)W3&&D8JGoM?rxcxvZc#PFabD8=XLGE^5Lrn}@xSQ=IY?{=nBQBXMTRd$0k^PkBSgx)VJpWU%mCod|o4*GVVNfc%ioW{WzQ3j1Y6=Iu{!Ckp|oSea+ChVXZJ!U?1O zE>6~^K=HMDvn^+&ik>^aU*oEEAybmITT#(9WKamoBEkB~_=}HCiL><|?XUj<-<^Fy zCvdDH+wg9cB>=LS;h7@k)HLjV&8zn$C)&ZC&T?U6AYLz#D=haP-m7+qI=lAAcjvX} zJfPzE!A?vW>|Pehr{3SMuDFjV`f-#pd#0(V?&JAh_dSMlV7Cn!@OViXE|pWPc9>*Q z1CK<|&5;Y38Rc8Kd}%Vv9RTj+`FCraWZ7~L0ZWmtzboD~{$7aUfRbXNZHAdQSC;k;B z#srDAYYmLS4grN-EL1Jzk?Xf@F86xljXpU`y)yPg=}t&)m7dnDdcdH)KlRBixy{AK>NQP%MaAQI_g^(%AVe+t#CWln!c*Gs)L+S!LXL32 z!D4yh%DO8DkVolp?`3+_wI^#_PI^7*SHZQ@P2`z#J6uEcI(B`*CPr854hA*&#vEm>-sIxJQ;)uswHGT>fvjD26+~@c?Xl)Z z)Bx*l8X`cIC>@!HtJf9!2>$+`tL+ODia`@!-vVRh3=Sq-;5-hc+AoWsK~A1MX%=;O zbMeonb@1o=Zwy05+I+h#vsI{g5CW2hLnh((om%xlOvWC5o@nddMwUy7_Sv5W{QS>Z z{8;^1nB?h7NRILz-gr*UcRfhljM8Lfim9FqzRpHuaam8*nv$WNtDC3LA;3)PLffdS zfcyo&3HNfF2E0#8{cz%R^lBPR2Rg=boY+&p^CSC_cvsjaY~9{hUj@-WVYo9A?T+ z;@BI^NQAfk_rTdwS@5QTW+Vtcu7y^Y^Tc#0NtySHymjcx7a z_szbKq)@0<%ne^fr!fBFBQ>|Fw%+b%3Cgk-F z%)(CTd^%V5Pc7`UpF7OP3T>x71aR+EReaX_q&_e;y$6ZoVKz8(#Q_zLkd?zyVoe`( zS6vco^S7_JOJ zvLInU7w>d6iB*}89z@*1c@^}9Z?)>L#LUdN42a$O5D^{%jhC3+;Da0Cp#Cb zeVuwvQIX54)dHvT`s@X2FFNV8aP4_u>OvR zD3^KoGy!;>ks%}bpreBe{;D?h0T&chp8Wb@vM3ohyFFx9sZ(a(# zKAkH->P?fJ+uFmOPh7XU znl0sv=HrA%TH@~)F;87!33gK*jBME5)=Hg_WG;cDL$-`AT>ha6NWU01CTI^1?gACUg}`Be zc?vK$C^qai%qE2Hk$snma@C*Bw*#Zvg2!HUF&CQ1&J9A!;d2gPmSx11cKRfnUfulx zgd~So`ZxC9t74qSX&+dvLf@3VP7UH6RM?hB=5pv2Jh;2J=Z=$jKdDhs`YO6jkF=ab;DAC z_;J^j^WE3H)@79~A#16FKi%h9h2i~_JXd|=je0IcGXB|qVL+!Sh@iBHQg7c@E*I8c z(2}a0z4+8WVttZ#vXbYy0WP>0aFA|N$AC1>INGtxCkrOND$9B#qImiud7MK)L3O?h zBEGG1Cy`TivtZ6%7F66$R&c4^h-xU;fQadO4n!8m&BQa;{`yj7IC5*%>%j}9-%-Q6qB8ps4qm`IR;b1AOO< z`*i{`d}YbEv39e5@!Y+BdK4h`JeGaT3wOA!wUbbjyJd9a?%|GCzUXz!(~I4(M(HK(S2)y>!Q)M-iAo@ ztgsYVj#Pg<`lE2f67G9Ch#OSX1FB`G(-0`~*70YljFh>5>`D8B;+n5U{K1Q^v1je} zlaT1s)ph&Acgju$R_dZohw~SOLOqr@KgK@_(^^`THa}&tgErX{)Jj@8v6;c=kpw-3 zopnXq@FP_%A%Urb&7Y|L7+e8`gq4slzF-B-VROm-ep`G!gG$_R!k}oYegGZ_ruwo9 zjV0G4ODmLK6uoH>`$Q_fnL}BM&nOi1cvd4c;R%U)NYrl&3v`aAyOZZ-Si4>qnlpNg zYqSiiUIAY!M5$kw&_gB7Nd^KjUQ?Z=_}^O~Lm!+Bm+I}7spIvI>~ z_s4_e`YF#Rj{PdjY%!Bq$*qe5oB>tyyI;##+ZYd!^W5H&47-jB{H2R)s3X^`I zE7_%I;#>acZs=%H?3AkJn|3?$HUHU^xW!uqmrG~e<+>Hvsan=PNe%<*$BI&l5(2Ps z>B#MBs^q6sdGu|n`<<=K_Pg{h`fs!&*;`RI>W{=+O=MgFP_Q)BM)c_L$bp(X3Wcw3 zP<)_RfN#LC$Pt+b4{@M*0B5&-pg#UItm3P4`U4zM*OOIMD30e|#UgN3VR z%{zUyEJ{^Y@vuM{l;t&#$RKRAMbT+UHU@1+%Sv}Sa1sMHE?oC&B8~O?1*zVNiq9?u z&w=88m0k@Ns~^6_8Mara50Pc@(CP5j0Q*Tpyv%;h`k4y1ev3V5U8Cch(aRmeb&Hvw zGeB^E?3Hv{2_owC_+|zebhdU)XF}B8pb^pf9H;kE2L{?n-WCGnQ=$qVT~$YPr*pRd zS}E+X6lwbMEm9HglKb)%eD^jS9yr1rI&UOTQU3K7z50#E3lHobJk~x=(A`MLmS+go zEhz0z)RC@|>xBaUFkAn}Ljw2ei=u4182=yDwgp5<^(wmv@M(joIV9Ot-fQ=O#o8}6d|J2_uzZGea*?!{g1m;{Z{FaCU{3| zDgLY`F1XzgA~C1i@VQcR5MI&W^}*&HS^yjO6`BnUjxpZqF58`4#@5qPUNvpB2(~-S zwEMVEt7ba{m{3NbvbU-}h3RwfOCjHBlQmb5_?hQUaV*>8t!CmA=EN;-gzP^{UBX@++`L+Nm6Uk`4$CV|aEM(=cn4%V`~ByV_~K@e0ojzN;?1-Ziu9>`)aUjZgSq zf(?~~w=j*HTxAkDnr!q(?Z@>H0dGo+n za4O?z2K5|&7Bc%pObpd3{x@F$uu+QR9bMt$(-HhUY}bvbknG_MMc<*WtJ#Q%*F=RX zIjbJ)gr~eFKU)^a$01FZj$6LKH3gj*Uv^5t>Q}f|_~5S`PWwMFGG^FfArTcu8l=pcOJo1q9^{);)(zEa9zo9 zL{eR{7|gON{|x;Kr+xnt20O!~V?zbpL-x8w#RQLfKIsC0LLSebjDa0LUQfyEN{L%2 z-=BP67>m7;8Nzv1;Z8P|syyf{rHsgF`fc+N0jJq;$II{hw;J1Uj9nCs{zPTu!Ax?|PRPM>dZg$pd$@-u|(}WF7C* z<^$G+xTJ7uEN-N&3dU2d57BUNcgqaT>9>-tR1Iye@~m|bvG?5>m~`dI z1b-Cbb|H5Ix04!F+xOX(=NtORqhZeYk0mPEYLwM1om0$j-EUTrm{ zj~mDlnbB-d>a38`H~av>YJ)b{G2yF!VUt;b|b+fmb$+x{RfT`Y`AC}YF z@%%N4Asq>)v0uxJJWz4C{YtCn_kI5E>K=R3D3OVT6Ion=n(Wk=Gf;xXC3O>9_bhF) zlkH_Jn_m+&ZSN9Y@S(Of*_5qc!9J5WPou$uw!_)1dFubd6Qy)F3Zp7~X=O|NS}KjA`%V~J zC_eVDqE%A8EWk_e0=(=5jtqbh8FF+X*MwoB*HM#9e6rl_FI=69A?V2_-Tk9XZ1TE6 z>41(6Hf|{I^ZR!Vf8n*O_mLoXxla;rlTgc+2ay+Z@Mc-Ju=|A7afyCy#>9p8ip5_G zB`qfiXe~>I#05{nle0u77o|vy)S*JMYROLoozP9eCYS5F3a%GjSa!SS(QefxO(Ool z?n}{11fOfg_R6e0Nd}x#DyGU8R}GyO0{%OgE1%&bB8VwLN_4E3yk-CNaAR}Cj5!x_ zi?-3BTUS`&ZvCGQ;`D|>t4M%)amp3Ip_O`E-#G5rPO06)lW8Ofq`*a_(?ctG)KdaA zX5vR0e=;Jsf}7)V+DEd5*}*zNPp<9rS4u-Kq&|bS+~@p~2AcDl$&?dKMQsV=4@Odj zN|KZ@Z48$Bh`tbg9vl>Y+Q3n>{Y_d*b<+{J-H}-r)z)>kuU~i74r%$HD*Ss&k&E>m zXfiJpa<0=}hXfmW;W_}LCL}swlO479&vvpSS zC{Wvw9m0KcrUHSp46?x;qK)vZ68!q>gqgx!01B6}u^C zb0iBIh8kkCtyu!kmwA$R{l=LISmP2`mZCg)2e4iKYfTq+g{#b$6=dmul_k8>HVDVc zw)@M}rrid~Rh>~VF6EAwW!ONk(}*M^y1`SFGdqJT@TT2sHgw!5hd>j;-d(qfn02@h zbtm@L1bk`4RZyU@B|FB3Sre2>8FBliraDjLYkkVJV&YB;DyLkg;&=_7)k0V9=d(G} zh$`B=8n&$;Tz#&W__rHaWLxIZcBG{b?o7cBRyXCl`tYZzAsgjls}6q!#5XBvUBx(Z zFk^>vRd47BBS`wEoI52`IU;r-jKN;0IFNq5nc28(RKkZE)GuXEL6yv0Tj(6n*dVyl zBs3^^;8ea8lUEfJhY?7LY63C|KFj!FNwOjtW=WDk%^L_FRADvs;Zz<_pAo1@0uj*{ z)5;c403#79G8L+P@0_9K&MR-g>WIH9>q~}iZddZo_#yuEI9jz4ywTv!_|N6`CTmrE zqgcc3&9^e};EOeDZDiuijz4Rdvhg!Z5a?#^#Kluzbmk2x?*95dISJ(@ui85_-&0;) zxv`0AH1`4`lB7Q?DHrm=H8c$lnNyX;)CYqR&pL&#CfIlYqL_*yt{_8Y@5?kv-1P(( zZBJ@YJmHi{oiXqHR8J1C!mKB4H=*+Xh54|k-yTqEeVp&Ui#p3_=g&^zhg{5_n28T| zfrhucW%E^fUp$fUHing!gR%6(Dtr;imZm3-wI4hR`6suuA3QxqH~1>j@7cKQmtNq?bVM;>4{WUs8ot^g;VX4= zV4N+K!L%%Oz?d~WoTuTt8yb(U?JQyumn>F_h>bpZE~|MyTc9N#%H$r8r2fx&y`&jb zpFg+u+n&&z@-nFD*900-;@^K893X=GWsGmUcO!c z!s$U{bkpVQy{#P1e{n2`JX6XOmcS2llcg<0hWoaj&(-esvd;2cXR1PaBns z7fdDO$xMFtpc&<+|0_D;DED@%r|;RV-ZadxyDt-!g)dJ~ItXrHx2eBJcm!OWh|Xi( zTH@jbP9;Rw-2;#jsj{QFg&CGv-C{ zP>^BA#DO9Z8@nND0Ccebj*|UFh>QC*zNW*&jL-8AMuD{{1y5?i zFy{BmX5~@I$v1DbxpjSfa<50YTFtfp0>wBzGVSuNjk|uU2X6|$RTZ~P4pCDsmO{Q! zVRG)kx}r$#SCQ|zh3gY#?YzS{NkQA^dr=KiGdw(ex7D8#$Alf(ib$7uD9P+8B4NuT zSATv4=6FRYBE@`&P8=*71#b2#pfFXfE)U*JXRVdJzqyY&y+S`@ka(?Xu)tFKJ>yK`*)Z6N4=l6N(odg$B4+hkiz~%^|EB4Uhd;{aV}KmmJEi% z*fpP#2;cqN!92-}>n}uvs)+@i@9MP4tSKU0FkX4K(oX`Z`5W=cYIl4lNF~|y{Z}DQ zq)K|TlsRr^tsjDa%YsW8&C=r_cYk~1+dHx7Of&|#QaKX{@p}oRu-Go4`q*d%QsA+H z*=duOQrtN~MU#GZ-p&RuJpE305a8;nNr$sHBlzIQ{)B-Mh9a`*p@W+$XiVYD>k?*j zCtY6EMUx_OXi_Hv0Mg5W;5B!z=l3X1(|*uOr%~$c^V%Z2mvyC8 zo_Uh>|F;H0*}3GBr&2dQbI#tuV{}gBWM8`O1`#8+wn5361AtzVTsLPwlZ0CD!xPML zN8(ueAaaj*;lm-aZBTBgRi)0yNgIe_;(rS6a7rrW&-MC5+|n|$(UvZDB!<-$jooQQ z*QQ|NKsVibj*iUn|C+k$xTd@BKN=oDN=fM{Uvb1}B!vgqfWbtNW`Igamvkwi64EUp zJsJTer4f+Y1f)Ba5^0#fkB?4&`+Mi!b5Fj{IrnuxN&5gyk+Pd42EqqRbXXqFa#_RE zX+FI~^4o``0Er{U4_-}c%|+PTwK2nE855s zG^x@*N4?NkP=D4%{xDS$Vc3r19P2Dy;&Vmb4{fu7t#iOm7W)o<7Q%IhOzT2abs4@( zpJ;zfM_Ht_kcT)wmcJ2D{^NYZc4l$KeZb}a?NUYR7y5`vpwQQmQaoaEjzj4j)w&Sx z3uEP-0PjkMi@S`#<=hG{ ze76#}+?~!IGU4Ic<7;y#bHM7guTjXSC^nJe;D5odUQQxWZbRWj+7zfsT@*omzT+=*zedl*c5cimG4mU@#S#DGK zrM+$Bj(EhB7WHmLEAIN6wSRdoLSfudHJa!Zr%O(j-OEPN=?2QmD&0Xf8q3%Z%|om2 z_KO7rj^`O2{a-VX>sk@ENqA^;9;9<;jLTV1CKGG|kzRcK&Yx;*ri0O(so11Cu4TWF z5CGfX8166MY`qO^1#|;)m|0N9s{MIJTGEx7Z`r3m+(smZ<-Yo+>6w`&Tb+oKn}wf= z&d4_9zf{bIEV*NSdkYj#7s{nY13<|C+8m8xf3$s6Me{lIkswNasEGxni>h6m2MYvH z+K|3B-0_AgaYubh0;;E*Ybkr;e&&4!v(Adm3+vZxji)-Ij>@ekursow;;myXZ3jB9 z41Fqml4!NQWXhGXXK%lF=x!=Cql=H9jftbJf@8n&4d_uh%1}FS?+bVLdx_NMn}qP7 zYOrtve}8ef*dCD6oWBCyy^($U_1^um(e&f)3$~MsZuu8boybf`_=n)8hM3N`hXa{7 zu;S=qKJaaK3qd@nn;FbB_k2#LlKFa+&6M$yf{Z?iVroS2RrGjH92$JFK>TD6Ht`xc4wf5pK^{ZMb-cM5T zR&dCC^XW{H)rhOlY8~>e`9qbDjOB##ml9Gx4&RB4#VO^w%s)uKyQ zV*rrEX$tSIF3T(10A}y$rv|n1Jud*{dg9KcZNJT%j`-gYI2y^(P+n+|GA_3hk~taL zzuwY%a2KEBeKW<|IVzhCNQz8rzM9fHg1SXMuhdhArHBDGaru5;u}FV#)Rn8B4BGB2 zm3VKpcxa{@Xdt{Tk=M*uMCBl;DZ~_3PPU=;C7I+=RSTasdCZJNS4CK9FmtjGb#O@C!6 zA>dCg&D%LI{<~8NMDOTHTByT!6XB>nm91J9j1VZ0<^iHWOeH%-^~F>HwR}<4lW|Vu z&|dr(uM3=qW|06dMQ}AZ266SqiR&AIJeM8-JlUeAI?A-&UB~a5)|74KFfTFNAxG)<*nh(w-3ELC&k zW;ZNH%7BobF#Kit^193DRcPG{V5sV*cwbulA_6)~6*1u0V}HB>C0 z44DB?)Q_^cmKx3VJ4r6XB4WY&;c-SCNN zDr9ndjRfd8H+r4;S}t48i(eOQx{QHAqb~Ers8&ye_;2<}XIDKTV(t4G^MQH^Xz_Hf zZ$ffQNQG)wI^Nn3tlX72VEjC7Y<|}%xORr9^h@8q?i%Q&>O3avz0LI`E> z#EhF!01?vPTc+OouTiqPmO{dwFtd1kL)ha+Sw5N7+iPle`0-e?eI%cvCiNuY+CG*_ zCk7hK)tXA)*O4t-`}Xujeb*z4Ij+v!D&X%}-xTTAwPrCk1%xL8G-HYdw2MAoG85rO z8fP|r?Mdt}T*ks$n1PyRW1!If2GaCM?)>(GQdKL$W|L(O?q z_UVk$AzOS|4!qh=`Eu!wH{I^CE|$(pW5+?mJ_;|js4V$-9w9l+PP{J3+ zpo8&g_}WJXO_kq?Kx}y;iwellNuinb*!u$y`_+2v&tEEfu^}x);?$Au-V#TOY*7>MAvm`(3x{ zV_dOfpEC75(P>y4_+wf+@G4#Q#coK;t0*@uV&KCU)f=?s1Q|kibtsVz@~;>u_7SQWx{R~w7PEu;sbR42hX<}z0_Ng-aJFyH=_%E?o3T7N6ry$QmJBSb-=qLne_sagkp8G z17l?R)p~z8)-Q= z5mCcYjwkH$~_DB4SF{@-brhy55sn4#TlEP>Dj;Q=c6eXtbBDX0? z$BoMBUvCjVTO-;LVS)P&mqDw+k`*gGAdd*goc`KB*`_0M$0zw6T4n3|paUs@9aeH9 zIEK($oq`=#JZVc{$&b-9O5OR^Qx# z^%Y44DftNOUh0UgVVi!{y_}_#HaqTnN5kUV==rtUvYZ=_GCsO%Yq*dH7tg7JebifO|Pb# z+HM5fF$v1>AWp6ZTV)TrgSSEg%=K88r2Y4;rU|qTeoeK2L6adwFT8}gxOw++15+lk z;=mP+A5eNL!XD=6yyOMwd_;YZqhTkL(6d^%K#ikMqt2%rzb>Z$d$K|S+WKGV%Dl?R zyQ}&lzE$nHAH9t*J6z~BY*~S5dRWxyR6VGV#B*5kN9|uq7l@u(N&|4$Ikd&njeJ3e z$4P`y(>}sJif4CiC>@%Q@_Zy5MI{LC?jp!pp=0GwhjpFF*#=f`|e>+X=53ul9 z5SV}{MCz@9&G~rWDK!zhbrvzIIqS~L$5r(nVHQN+vS| z!69!56H+6^c=CgfFRBSSXMFY|5eNFXn89h=;Z2PYy!DtD->RM&zGN*ygnYAG&S05l zLRtf=4daa>Cu(gDcD5aAN=heCtrhgp#UogFV5g2pNQqHX!mRYvKMBmm^_C}OJWVuG zUG8}n4l3XPQO04L+NlI@vv#H#OUat21yk1#;Vr#73{~r{a{88>w^lJipZf-cn6MPv-M8&8p0i^bjH6@6Jvt zKIR%GPDqWZx%)y>d*Xs=!0T%EDJFkeFw^4JA95>zT;NfK0sJWREl+5eHcj@Ydr6li^>c3jwB&Y@4qbY0vK2o)qpB z4?H-XBW+@kB4M_MVJJ6=11J`(ZRwr1-#edTr`{vSC$;oTuor(0&1VSE+eLkP5U4(M z{+0ka?>mHGWJL9B;WyL=|n8NX!;oK`5zgFd_3kpD26dtIUM!ztS1Dsr-1THfvst zmP4;%WH#!Li9xK40t1IkO8#70;m#bpstlM9vUEMZJPV@G4s9j*nMvQhJ%5lMWfE5A zeOD0P#wPnAdbK^`0*|cwrxhaKl^9hfhzZ0z;J@^|)0?|nG>AVQBb-d;7!9q5P;~k7 za32n4wJb#>Qf_BE;p`B2$IRny)zMQ{I#}6SUZrL%)1#a$;n|oYTjUES3i9EyQ|EV~ zTPGYNTYQTJpV-fZ3JekInv7}vP|@1LhguBsVKF)pb?1 z-Bq2ZC8fMqoUk0E##PQ0vh#f~9hbX>V!kMrnfT5+u8z+vwncA9-v{f1K*TNZe{bvR zjt+lnxNKzo^|;2ht$L4QArF?JwOj#WO8Yb{o7>IKSwXrD3ZR~zl?gm$nA*ALcB136 zIv^~BKa@J)4eEV)+Bgw=7UMSxaH#~^Ijv^7#nbZ%^U6 z&?FAu2eYj3`UNL4Yv?6LZfYdQH6GLCo}q=_mxx@uM+Q8A*1aM*O*0sEHE zjFE{?D4&gZxif=He9qY%VV%~Wv8a!aKJ-?_Xp9FIA%=S$TJ|HLH98##Z*tEQUebB- zA(sNmP3_N?TZmd6pkYpjQ5*;2xRv4aXkSPR`)Y=b4&Kg=cgV zUK1EewRYd2ae^qSXiEV}NVDdRVFGtL1GyGYX zSZzQ0JuPEuKJu2-H*2t0CEufNwF5MLanb?1xABr1^peOf=!|PNEpH(@Q^U%BA|Sk@ zyg8Ok#why$hW)$P8{N^$UsAuYU?2NBsv)}4yfq$%maKr~T4&h^~3ib7m+N$qBJ6)h*Phm@Y+|KmQ zJTcH3I%mR22ye&~&&I2eU9V>@%1(L)Jtw073^k*$uOHWabdV6nucrDx4ZSE>ZJFor z%<1IX3~&)6{~=t71j%Tj&ee2f(KzV7ru}Cx+GAU)UTtMV8%qB!`8Z*u*@)aQ^eigy zGgG-iUu$SI3~!V0rx3k-1s#_Ool_wnt(-%1s>C@npR2p8AU>7$J;j5%CBBKrBg3@8 z-=&l1LO%%cE*$dovY$j0mIdOPd5N{3;>ESmHE|s#WOYZTskNr!N|`4+8-0PYRCHTx zDMFDN*|;@%-)?B#doZ7ubel3ZF{UQUQF^nyaL(vTmhaj(jbu@0mxyBg8S|367S(); z9UGoQ-^_M&^WnZ%-gy6Dq6pkk!sUMj9IiY~#!M3FKbYS~i;6|GhOL=of;gyR=N@8~ zJ!i5U4Uc*P7Z_XG*c_#(2HoZGm1A7ZK5$n3#e($t?^x8XMs2cSnLtb=4V0aeXo=`6 zBd4^yA}N;5KC`*3zWwW0<28V3h%Y#5O8wiyZj%aE$|tr*z2XyOt_96({l?;PjO6AP_fqOzV7pN@sy4R8xz-yRZ`;qe*3(LCerh&q5vfMEIY@ z{~Zn%jq_Aev|Bw(r?9`?O-(zd(%t~>EW{>wOla<O=UqNB>H10~usCK{tiIW5;9H7URNVwnP)eG1I2qLsP)jpdnMZ{NwL;Sn z|J`n}NZ%5~uQXZ4F8*p8nMQ7NH<2SRZck5=RE93K{Ml%Wf1>n@Yt{j$jE=6@vR4E- z&_eczq+oYq#)-Zc36UhGkf~gK-Iv(=F7dz~ek7Qc?}JwKa2hT6^tTG!d~GGi(=jW6 zAP?5*Uq|noSzZ=GX2X^$u4W^1Ba7rbsIm^?h3?<7*!_k{;djr>;rm-C!f_DA2ox#q zL@z0f7Ca`eYKbpN+gCls!zDVftPoZc)!aVHi%@BAj-ok5rk!3!<|GntDPmv(|1Opp zVqR;Ow_ft?<)CN$bwKOU-`9AOU)_H@^~E@3?gm5^5IyO2R1iIrJ-%+ zhGcQN)_QxOQ?v~ttLM5haZJeXal2o&^Vf&Sa|FTIn6MP#CHCMTuGXMzpMb%KTyW(ag1H(AH9=IqS3#+ROYq|Kjv3#O~w z@4vtRt}!!c6y`565XwT+?Zy7lm2zQjRH`HLh_cVrwGOl>)FzpgP!pHD2i-LMo%psI z0Cq;?5E{*!D`^4^VGx=W6E#Uw5R_XwaCtp5?HTtDdKH<^;dA}|N2}*@U)^m4e{yU> z^vDVcNCiz~#cqHgr1-|Bc~4j+O_EQAYiMV$DBJM#x+6(T53UE_S(ZbM>MUi|Z1T*2 zG z=f_hG`Y!`>G%Rt~Y75#})r~wx(@5x-gu0ogo1rZ zMXcu0j8;NEogma!p;0$JaIawCpDtb3=`PAK^&B`95!?{%Op!tj z)v&YwFB)zXO>v%(mTS0bKFm^<=>-OuP^@3r|RCtA*3_iDYF3(g32PUJRc7fkwdb%k!*;`mIZwg zHe9)s5^9*Dq7beqwo5FR%P}UenU@z@%`KbumGIDPvzJJjoiWk*OrVL@$luHy%+J!Z*yylY1Vu~?J$3O+ zHqq!hNy?}6UoS|T^(`aKNen1Bkq9uo#xF|TWXY~7=_qCXx12%fSJU`Ct866z5GE<{ zT8x$MfkVcC8ampdkXY$+aFmfSvI~>%cZ|xXS~HqyID~^;!KIpJz&4_hoX34o)!R#s z*tMPDd4JOzoV_x609Hxv7%@Qke>|OKTvYAW#)obgx&|bNAw;@CU}%PJ1SF*!Y3c6n zkW@O9M!Hi z6Y@tVVC6>(Pf1z)wP?Hd(E+*lWA2NhqM8KDvchOodO9$mjiQ~Krs&`^o(mml4~bu8 z!Z(#*VKCZ$E!cp>4{Z^Fgftk*duT(26VZY_Der(EwS`WbFP?BTz_=Q=IzTIR3v}{U zc}7NiVVPyqU7$isP5H-v3m-U<^Z$|2NgWy`Fjn8kao_?9qDgnS_WSv*cy0X%MQ7`0 z(_O6*c@}fvsD`UFS((aE%SMARdXww+W_^x6mub4c*MrZ_x?euf7!3c&nVbHx(RD{i zR`@B&LqJg=UsNQHI|$iIRLCb>CRx!+ad-|^!G(tso|86{(Hy$P|FKYKIM0ChBjZH7 zVb^0sP7$C7pw91!X{{AN2_`T(M! z1*pp^A8u%gba4{*l+Z|CsAdd;0Y00_w24X>k>#&b=s`bEVg9>QV5Puzcd)@x?0Ozs zRn(eQqFa{dW$&pbNgsGNehG|^agK?jogu@c!j|m$QmdgG5yW8y6=pI4Iphvg`3~Gv zeCyX3ole#qO2OOpqdN^F%oh&&E$PXY5G~AvmjMz@DhmpbG*q)rrBt0B^0O^MlYr}z zmlt0OpMqs1CeIx|-Ti!ix}7$z`i6r$;`71`FL(KpMV{L3$N(=4tuM$3nmC~x=9)Bv zz1mBCF(Xu!oU!6-a_F!>NNRuZ>%e-fIwRzO^YStS;8+u3W1Jg6cj?oWQW2$GVUkBp z3u<&}ONGC@q?FQ9-fOpE%38sVevhDH{M2q!?vv7~uNceTQEIa`IGhMSGo>tOv~t2H z3corr|0Ma}uP_5_s*^)VRUW;#-}@PXUxj+YA1NPU(BX-b?OzbJIJ`Z0iK!DgvRe0D zPOO6Ddr&4I)xPWY3v%|q-S;54o};SxvGdHAJhS_nq47S>9!dxi*Nn@Z?=|knJ*5qP z-*;tbsU>_N{ID6<1se8T>pJ{R*@Uonr2j@~>TZpZ`_1{oTVLXgVYq~->y=Cq*E`x< z^@7EnU@@jSTcQf>qW#vTH`Pf&S?~X0sjh^Eid-?%l)cb-XsK1wIkDG@6r$(s^0MMZ z9B5Os_Hdz=*N=JLurm2^MJ_-8I{Rz&u| z#rK^d^Db1uLMs9LSsB6klXI)z2{6SZaK?FD554KeWtcgGmQj(X>ieN?s=l6{wQ&f}fJC7zL-HG9 ze&qi(0@B-QJxAtdQ(9RdH-$Cn4 zj1et8EE$!9el4%XifqDFU|+Y5l|;@poKHz44Tp<8?|js8a1esM`4xWw>0^H$FvUe^ zXG!XD{f0?a_T934WQx}O|K~~>>v&HXlG%^p%aPh(nKG4Nyqg9eAU7R~69^%EsriL% zlEf+V6SM!?)34S0!DoM!&~pd1-kkRme92#CnT8fnv1iHm&Olk2kzNPQ6lk;y9F>=s zpH*y&?2MDTJVNlOJzakLC}RzU z>;m@?7jy#N!A&p+qRX95Rk9lXI~>L4VDtGlNF<3MO!*+pn}OHpw|6!MOLu9BTffY~ zoMqWBy%PuB!DqurN@k|&<4FKe>OZAwh$Jlhpwp1~Z#h@=u$ITkA&Sed?eYnm!T47S z`=l>}tbI97KI-5-73b< zRqmdvL9GTc^!v_u!JmWFXI%9bK@D9(8H>n+rDdh4SiO~WbNkJ+6qV?v$15sVxA;5P zzU-=n&kKhijX@{Y${%`87rKWTR_OrsrnF3=P?_!MAOLl5sKMQzN7%lH46?J*yR?At zk0C!gHtw2oc?E)6x}KE2pWTd~qlz;Pr8o)P+N7n#NRABa2jTw?MI?kDr%M4jhCpKPFu0xWYr@c3hMOB7hRdQY`_kqUjhU2R-Xc%VGlMg<9MGw zIKKzxJ>EQM*kDLHQO4E}Z^4%x=`~f&?#rT6@^>n0MuJXc+4}G>f2jP%jYP{gz&9u) zJX*>`A!zb;&d#>Fg0X)5y_a`X!m%g-r4}=Bwk@L`RIDAgkAI=BvH@wB~5)^zdpWo&l?jRG9jnN{2QEZI!wbod%3G zSwS+rX^75kc&6@uR|PZbcZV|l@M9s%#_+WdT)?pj?&m^)wo9-gB8EU`e&S(_Qj$fb zzG$ngs1j;HI%>6BqJJOQ(dSC$!%8~;iVM2+3CE5I3wR0y&JVG2p(ZOtB`g?=J!bAl z4M|TJiliECeJzm&sG?6fTw^3xpKl3IY0B)B_<3GvD5;7V7Ns%FQWRM!@#@&ak2GDI zolY$sm{dPPWjIseK(KTVFqW5dJ;@zk0oE5-I6x5jcA6z3elxQu@S6q(d>ze>a+nec z-mVm+lD&|g494`JfGh`KSQX2RqJ3W2`f@t2r4zw=H1L&#NhceE73%hV|7p1XwdI68 zQ`0qF+GD8_sPLd#%>YI9H%1}rRaoXUcp!rcZQH0XB|D25Y2}F4*G# zc?>Z%eE>%gVP07}+dn`gHi&O{4oS zRZr(*v!TWV3KQak5k*5L0OG@II?Gj3kYh^1^R=raHsAOihmixmp7IKYF~MrgTrjaXM2S(Qv&3&`6BBCoLH(-HUS#g zfx3TQrW$ssruKpi<@)k4P0Pk`Lhrghg^~ODeV+f8xkEa0=A;E?Xo*T?{nN_nwd?6A z?e@uQv5}BLccDkXXZWXFbeU9|R4;@bQ^tS5j-iyuw!P(qK|GIPmTGWR2)0`q(4?uD z)>9K(RZ}|zh|koNZ>$%c7OQh$bCyiiHzX;<3 z1+(#Ir7jtIVdf8jE_%p3K4R6?u_dJHP|iJ9%CN&xHx(6zWWRV;1&%n@=wkYBW!@l% z893Bup=T%zQG{ya)C#SmLh z@6eoniBRW|5z7`E!`~vsO9dG4_m5(ix8(Q7dQS>W6kB6nuMx-9R2K>HR#`zkJs>0{ zn7_u0w>58J@R_!T*sWR(bFIoAFda*`lA)5~XJI)D3mTx;fP3aRuC^=24V_1D%r=L@ z)+HjrN9m`YrI6Q{jHJ760{5M~MNPb5Al(@Vpn%(_=7Ou<`Q^oWMZbH^Sk(DJ*DqVQ zY2#N_GjC?+Y8xbq)Zmb@>r|B&y$#roTf~6oGxU zNnYycZ}JB#&AC(Y>j-fl>~dREwMH*PVeA8imebavri?6>0d)x#>qXArzL8lx-SG}= zu^hAla1xkp!;(FE^&06SV4#vw<=W%t3fJ*Y&lzCb*ZdT-vSF#0o`_KY?ot(9Pz2*| z+N0vT;W9Dz}13Zo5O{FpBw-3ych~>jhU+zrwj@4hjwRT!CT|h^6bmC=Xkzkr~eYHzZiU* z=W%Z?jYogvUjSU0M1>o0M|ZqrNs0@Ut1H}@7WW{^VHLDF&@hsWY=0$aj)aarb8PEJ zk_K^>I!YK;A54&*Q}%fEgzFyH_2858c9sO3Qt**?)Q|C7=o|v~mCh0_<}hH3xVw z-Mdxaw!cLzloJCL_;RhgoxE9X-XaziOk>IN>B71v5ie5}U_-Sk>wh*k0!MKOz6@B^ zbqB?Me=D$+QNM~CQVQb^psNGFOhT;+MdU9dXINgB;~jnfHty zjRwzSHPczvi`RO;V9|oZG2?eEM=eufW8)>&d|8VBn`6iGH6?_5DVP?!WGQ4jQ%qB|{X{5mI~re&m+x?`2!z*>Ly9AX=>2ekFmC^!PT}>;bS26rdKR*;gY82ZLg)$hoCYQ^kf(t7M(2`q=WWF_-E?*?>~;Iy)b!= z=<~)wgSp*94jhox(+wSnR8VJuPT(JoiSRcef>MA~*QcGPA>qtB|1!qn8QG2@*DyFC z;$!?EXk_=|Xl;GJEAyU*N-MBucxjXC_T?Q(e&{=I+*tQ1v1}ifN#<XYOvV_w04T|=@w-o;0sAD;xIqb`hFHR(B|9PRl(eNbh2&RcEx zDR|yxHeZPm`Y7rdJs)0CQ_Bz}YqET_vaamL5pR_prJ0(L>UA?FC&qgBUD}m$LI_;jvy^yv8$uu>sO926$GfS4=?*icyMYQaM6-IZBhNOocZrv z{p}7?s1^95h#sY%l{|lJ@8aqj&upI=h>TAv1CeYgWaS*%fg0~QjK#m4SaSWuaa$?_ zAxR`Ak{7%hj7g^kWeHkQ?dJ!wMNG>FSmNr1lt=^HXvuUD&s!hmZ_nZjpOAxlJ2t#f zK6IP0dZT80qr;=H;>pk$S<|J9*W%8vY-{ccFB+SwQjKZ8AdLCYL^BJu{UTGa+b{wL z)O1uxk+xXMh^`3m37^GxoTA9h_+ST1o1R)EJg+0~{|pLtqswe)u%eANhU%KNzD`GF zDvKxHYsA5q)hLRnu?ZtAzCdlcV^9xTv1WJy(*Uvy!R9GC&e%cc<%tfQvO|iRssVqz z&vCE6TK-SCvd0V)iI0tt+#S!^aY*LS-cXo=*J3a zP^V9=#INEOK%h8`5)+6|x7QqlIE>q)h%;y+ncTH?S`_8mBTxM^3WxvxCVBldL~t+; z_5N$Mc=0>1mE`r?AZ;<7ACjf^46#lcAtg**QHdG0lYBCEOHH35pHsJR+mCwS_75Zr zAiGK`n~)GOGXuLzhwT*fb%nhSAzL%t5s`AXgp=XADaCDkJ&stTqCVJtzpl*<(Z`Zo z(ZB0rYOIh}$IyJqiXewa5y7iS&UiR}fXfmY)1;9q5&dDXwl}~8LZ^I5KivRfPJyn; zwg}m`YPXy<@h3mS?!IFE+f!ro0u8wM|5;5PrlV!(_#<%E=T(R%MMm#dO5fz(_PHTYYMnJHzx{d>*EBZsb0jEkpG;_u@yjno|>pq652Vd{kO^R}^8~e|^2e@t0q7lJT zbenG(DTtzh0fz}gwtgS~Fj-vg4v%K4w@r!$`sl9vic(vU`GqENpl7h8h(Lt{`l?v!gTQ&x+o`F@S_T{Be7-=8Ne5c}E9RN;38WnF%#R2uM-^M+jm-r>q^DR4xv#yrCv`n_9Xs?O248wEQEsgK0ZaZ5cM7w0FLF`@n^;=zOHl98bmM3gBC>G*%BAJl^eap@v2lqOm-h2`&$E#TR z$4u3zF-XBUPDTXj@TctuObiPLgSPC#$3JSgW!oJ25|LhO{xl6g*k%tVkn~QX-}&_d z;EHg;!;;9TE( zWNJJ@lorWOE)p#TOt^vz;t#I*vTfEA84Mf8T_3Be}cYB%~wvvJNbzR*Fn43Lne=#E%Oa7{t@F*6N9C%z{^ zZHohXA_65AiWhAm!Z$ux5hzYwhQ&z<1IEYC9ib`oommmVFzQU$1}O)0Nx$VKycz`M zsYrFsf_*2EEW2H?mgb15Lo@i(##W(VwOxAIpOzYp@iKUwg%I(V^uHeq#hz|$Ciz(h z=gT68nAW;A?1P%)e5c)B>dPQ-q=TWOJW*9F0AFcCE%Zy1k$~?jB#Mfgc+N!Mh0vy0 z-186ykHJW2$EAg1uB%oLp3x$i_VyVda@Ql^v}Gii3El=7(eih#r{9O~C!d`%yr7wS z<;mmhyZ9?9gNYhIY9bSByw~sjah@YX&B*udn`F1SvL6N`+~RW>H8vhO#?vP~%`KdJ zOw@P!m~Jp&d%>%Z1}h?V^*8R;kO`56Vv7jag^{$^6l6vLvtqnVL5L_9tc5LDL!spd zNN~F3pd4={4$>ISiZLzoc_gbSsj<*Fl@X<1#mXD%8Ec?^@KS<`m?%OHI$nE-Pnd4f zXI!}BKIN9-KA}|dZz9rLr@EbW@c?8C$uz9ARACX3b_HB!+mE$_T&PNH__7I(I|L8e zEiM8&UG??}yi3)_P2m6to9YceGAq8UG$vw>A#K_ToVB}TLkspl;tSngz*ob~(s_h)d`O+QSK`hrj7<{?kU8w>-3C^V2jwx)I zzrr?4Y5BzTiE(Kb@INvn#Z_*edT53J8%*s!vBNS;NVn#^<;d;@t1Gc4|I&eOn`iJ! zpW{7vTOEH-*!$7s2jpdb_QIqG3p&XApzQkS=x33w?y8xAo+A~sq=a%sRAh9?pz1o5X)(7`_}cAeDk$&W1(uQLWShbTOrG0-GNJ(^7+m>th{;rv z?#G9A5xFE#NiXvn6{-K^!;#3}R!#)y6`@TSC`gi=nQ#5F!nu0BcoFo~xLWWL4$C2d zvF~reGDVV75*8hLkL7U;d0?h+40GWB^T3$^wRaZfOTLhQ&tX| z2e?yV#$SL#;%)Z_^GWKcXt6zsS4XJKYSrLEb>`d5T(T-`LhPo$Vy@Y1pV&IUGN$h# zvH)CxN7V3~%Opv`E9wW|{{~J|e`$JrGQ5t@w$uj3vvv>y{pIniigBeM@rJS6rr_f! z`|dt~XINRaaJqVhY!QOedDlnP?0m3Y+B^i0(*1beULV|Lma@zTYHHGv>7$n{2Dye& zTO=+rnI%tb57FDTAbd3Ca59X&G=+c#FwC5r~i18jUI;>$4C4uq$PKBY#thfkl zS>)$MU{RuIM^(kL7mtS)fh5;kjr7k(#;cL%jD&sCbP5AnOuULQKbE>No@pXuH!h1E zAkgPgt4ds3c8+^t6wWc|`k+d;2z`=QQ1#S9MqLbo;x} zA21X}EkMMz2?^@Va2b)n9+ew{HUm-Gf5ic+cd!@I{Wsu-EjP|_U4h(YCo``_5R7XA zzLtie@XCCLYwylB@9nmtcLPYj#e%xZWDT^WFA*E6U1Tf;EZ-?fIHQ1T5?UjSiiA>_ z%RDS_k-9VY3-t$yr|Tq;o2x`H+PWHB|&KbJDD|L#z53_H{(A*P_9 zE(yFfE!tlxE=CQKX(z--nd2L_AZvz(!beWxCzIk-q# z_xa^z?T{<*KS82x&CWS4JhwKc{?Py?)$sC|GljUy*O+1d=v@DR!g{o+PNIo^;ew0v zJg-hHFIVu7@^+{MNg|=qs}zJznC?%cALhtvP)wN$w<}omxavz1CAmP5qclT08d;w7 zK350`u!v*~OKt%KBFrthXBW1SFaMqgth9K6Z%|v$I<>NzO|j3lu`71X)WTu%AwlXY zNr(DzAX>p+9iKWd_F!TeSav+I$`j%gB)d_<1T+k?hb9>nC8h~iSB0x z`k<7!4~kYXKUztM$1mtOh-Eb{_9npYV1vzKN(paPwlNZD^cAe+0Eul>xxT8PqQe!K zHUCS1`3l$sqL#>>^}5e7g&^KHc;qcq3A&p7(XOO|TaGY*BP~J4d3XV%+wNqpD}Ta0 z#24jhM=xL0yg81|6>|Q)Oi|wBI={Q22*OSi#p2M-C=x0zBXLq){ME43+MF+6;GdD_ z=zbBhBeWMs+{@SSNdOrMm}|N$uQFi+;2fE%64Z0T>Aj`4s_FdSRDDA4C9L)|jRZ9L zhKWQ^>Cz|?7Zv1rgoLCyt;umeDRL0G=5k()_3{r}uzJm{%J77R51)}pJmdV>-`$kp zcE5$S`dr(<-AEX2~sw}OAsj^WCd!3e`0`sTG5eTW*$So zae*z7mzyVZ7IG<%Xv&&}J@qTULF55z>coJQ zDL7lQI3}Y$6<5=xz^rgzM|^tU&Up}#*!7a~(a-OAJ&jt4*55)7c6HE&2KvK_kAC9= zeE8%;a6l*St|qW_+nRek5oE2&ZB4&4uAt1EJc~4cx1%~`=4~05mybbb^BdssIYIh| zTvdE{k{NQR<8!-b6)VE646^!AnUk<(!d1=7@a+`k_f)t09iwy(RK_~LaXr8AEST|l zNy%a$;0!4nidJtb$#`{fMupS%QfWo(X*agh>~U{G%og325$ABTe2#W} z0E`R_8&m{xQE=5E**rZvm)tyAE`r;5gTt79kAT^W$XrDyZa|(e@(wPjf)WOcM}sA) z7Bv(@g^M*xv89^5caF+yM8cGp9%yN+8q<`qYSI34~7_zjLmUxI5nN@us*#9|?L~X8f5MAjp*=nWF z)EF99>dTI<+$V!>KJRD(q&?gIClEPieuhs|W%3)yERyGtc6~5*x|UfuW$5&_q*QEI z4xOctC3Bp6C(PF9?ZW+hq&Z0Ja+|Hde-}*>h{J2N~&upu^A}Vxu!@j=1Fhvzw*ll7BC=oZs^{kk| zF09yn14HKX4u(_LKL7Oq@|8_kuDov6eE0_1YO^H@!J4N&-5F)kbKN5SKvaFsE08z9 zH9$YjwZ1TK_JaJiw}{vJB_{hyOT808qSzIQwXtiA{lIaa`+KOnzpuU)d5H)`Iq}bD zltq3IoazGQR+|DWbO~7%4QAQ36-Ue8`*W^y)nPwcRII;s+ESRr{)u`wfhEpW}!Cc&|x6JV5&p+Jk&XT&})l%mOaLHjS{-z)#096T+hEX(%b3{ojV%Hp`v6tSC4_v%2~+}vxD@=X`k z7jt=nJH9fCV4i0OC`=s-bI!&pzn-B=t%$ueF(Ny8LL?6iNL z{LOHy0g<*-@3cVXd2@|YZ#jx=Sk70R1l(*`>Adm}f4`%_DnMuGU!0~tV~ig|X(_1Q z#@G4;bvvW9R3>_G!f7!;g^N2+YdZ87+e^@A4_$Qct~kl2M!g&t+gZZop}u-Nja1 z*#WcbhT0iFKnnsqnD0HNY79jI3<;0SVWsftk(N#TJW~CeelpsweOnGIQwnGlO5uQr zkW6JC!rp#}T}+|OW@AOl+3T6f+$*kC2zMh#tOL(*J8+vSGjWIay5d+9RYfOxT~LJd z!?+tlNlbm7`#b>?kh!)1$^jm)#sTc&;t%2-L1AgbQw>^^hR5WPYd%OhRx9 zKII%9QUD%XHzrk89uW$b0!5x=gxOXTfZW3X)3FY*?9#>r%C@ErvCK-2(otyKoeuiAbU3-2m~!zcs{_zWHt=%rfm=)J`|L9(NBRS$ zgiTy&DzYS<(%}~F)|&+G=Qv@~YzBNKLF&xO(dN^xd$hZuu?TJd@X+u{TS zpOxgmAqU8?belo@Kztdl-s5h+c(Eitz16_6SkGF9KY|Iw0p4&=zZS}^bU_WeG49ZB zvEyZP-Z}S`bdeb$fl5mSo`PPrconPjX)p3v$?=vi_POT4r>MzWz8wei^jh?MMtJ#h zaH(r@3#7P^2S+J#{2eKGbE+<;^OrcK{iDFt2QJ;A{OyY|!ie-SUR&dpR`>z8x+FB) z>|GZCl%dkChj4_6`@EFn*G|i-IKqRn${CJ*argg^LktM9LQF%#SjczAy zYg|nOAXn@kP;86tXYRl9W|e}NxMLNfGm|I;;wq=jQpiXzqWV9H2xpE4+q(4*TDz=l z4}v^yZ(Sc~Zh0ErNxG+F&8W1~dg753OmAFyvvlV`lG1OyZTFx6h2Z?*3+6zwE5-DV zs?GAkjIx*73y>BS^+)?^G|82eeg>onR`4DV6*lg;3&FHOABc`ntv&TSN~$F0T#cFX zn>iAhk!OH2nT$4arZ>z_p^@(JmtB<3u(~vT8nA*@6ljB4afDSh%h4aZxHHHnR#x7` z$D@I&UIuM5+6hzENR2~${Nj}H{iWG6w>D*RJ)he|K!jTem)1~S;2W^F@ply#-2JbG ziZ8t_ZAb2xjXpK>jh1fA{%fPjL+ciEQ@SuA2%IY|#DjA(PnK8cHZS#@iq?TCvHObX zg+vz>JnLjYk5#9wp-)$+89o>1n~=*-{0s{ECFo=|9zlaCMu%G0PLfp~oa*&+d12Z{ zBslneO;fl!Ulc$N-TqnzhOOCzE&Zj?X4Q$31(<4GUuC3uvY~}dNJt@#M4V&B4|$wa zcG5*4lRBLdl>U)TOvX_rG>uoUWQEA2fv7zqxFUL_ToN&r1WMwTJMVBGSL`uKSw!pE zZRiM?U5R%95=LK8Ur}>KRpzB)M9ETLf9d0i?+DFL%mj@5-WBBme&X>j|5?oWrwfEo z2)cx7$^ZJRtRH~;p9o={1O23=-L4gVMlYVz z3uJIsx>?<$MK~jAc#mL|g^oHmt;^+`dHu z7W1R3P_psW?hMe7m9ydoF@7pL$eXLR5)#lU2vjS9GVZcqtt%eDiy4`qk&UbUfER{wcIEF<0b3(V2l3gn=6t#%J{bFnWT;9Di$a zgTu=`OH&QF`zdX~Bfa4M|3B~)K`X1Vd_Vc2Ee&Z@W0N}jqT^=6gNfuaq`AhuFJAgxWm(JxaKxB{=?bBAG(i_8W*NEhXOQ~X{&?caBnUo{RTJjs)ARE z!31V!mE)4FKEHa4G)S<=xjx2(H*gTMGDpgWOYrt{f&E~W^AuDOTT~u!Opx2XSX&<6 z#|s}Tq;jOO-ba(!Yz`28V&S3w#22U}G~Z0mE78vwL;zKZf9n)rtfVMlF*nECW8>t| zr^G`{Tqqbcd|_rvm(IpLXa$57Sw>Y*__#QqIJ?DF-hJnUtXcDe-{Z<{KYHNS3}*+7hR-;4)ZA@B}DP;!#Yr1$Xn(5Yr5jp;(=o z33KBx5GjnE62}Y5vv9vHN&Mtm3Cpf;M&1K)4q^t2GFe#k}p?2V>%@((QUh((g6W*CF&h98@+A2T9{^G!kUE&UX!3 z0};2@5i6SD}V)Y2JCL^{;pzdkxk(RSX zb@=*@^|cC+i2QF*Fm##}LSFY_>m0^UiLLo@Hqcw6+Nh&|<(Xmh;%Baj{y80HTq(Bv zVpk;^^4Ffwg(n62{k6$=USe_*>F%pgHrfex8B8W0)$UCuGR{0aNjZ_udf(^bue^2$ zeoJAcY1S18%9)DdA2^hos^W>2W1vO~>e8>B5;K!Xr~SRp%|OD|Ywo~ak*nazwvgRw za&pSs+9KrP!I0#FFd32#a-qQnmlRUIcS%8*KuryHmGfG(Op^tByyE3N(}X zW;uUv!Lz^qdjUS1$Q|xT{KAzyt~IbEI^Ah=0I%NLDZnJY_kP;jp1UYcW3%T{rmcl! z!qnT=i?6PM&4e`WGiC*jab=0Z5_cDr{$*qB6&uPD0b{it92~6c|5`9@@C#V~+$!K` zo#GKHYRUPe?^lqU>?Zq}^dzC16lV4_go`RV=6vs=c5aPpmtGyHbbQr%sYZ|rQ6j>{ zFxt^oywAgn_-9*w@PLJuK+<}{>BMIfOEVPUYLJ(EH$5a6gP5>~UDady*9NNr#yvV+9N&BhgVN6-rJKDZukksmHWjzKqL2fg^%-? z^SZpTkhcW%)_xCnEPuA6&Nwso#l@Fd_K&$&e&as1{9$vDDY0MKe(}@Ia{S#N3B;U? z;$RhHxMCu^ddtTI zRnx@YhB$Dg7ZaxzlJWMQQA@H8AHSWln)A4>asM=wp2JybtKP&{SN%p+(2#1drc*rx-kB*{FsZYxFLb=^QZZ_BdyO9CGGDAcYu66ZXBAY_=e!!UW4|on@`RM z!HXgL7dxXm?8bASi!FF>|L$=oh`Iu+l~H#JkU73F0X@r4KE+!U`*|I4tEa7nI;$=9 zO;x#mf1iYur(T5(?<}*6oW&@T0^F<&>&_|8e5Ddd^cgmOB5H9Ez0AEemP^`z?w~#j z=bjZA+XDLU2!(Q>(&He5QsB`Ad59@{Sra5^g6=qCzm=o^L3%Np0YnfSeP36b1v(;J z+)mn;1>%^fnq%89;+4{E_Y4>2OZ6l&sot=ez-cxkY>SwX)r06!%ej{L8$+kInm|^5 z@p!;Fds0<$^Ag_zh`IkynJ=ivv6&WWZ)5i%-034u^y8|i* zXZs-{gHy~&%+m$<()Y?feB0(np-BHQtT5cGOQ|aIE;(16tVbW(yG|h9o3N07*GY>= zysxC0xb#MZ1owD9c{^}KJC5sF4>ozMO4T=H$07P9_n6;xpevL$?(n~DYT^&;r%yvE zfm?XIJ!YdYj6#R=HSwF@cf#a(R>-Zb)d+kV5lq3+8{}>+JFLtaoy}IJo7|6a%#lkg zEg`MqGRzBKnW}7keA!qW|7*6Kfk*`O?MHmz-me7}F_B))ACk8{wh$!IjBj1~3R_|= z!cs;pZL{Yl;ul}bst95C9MZgMyS%|r#KR|!L1iCSWiBP6EXG?fa(S}-th0zx?zD!HS#-mVt3i!)-bxhG?eb0pm z)zijKOY=rCsXQ#k><9L9(SJv-EAjOURXc}+IUkH^YhV;Wk!E=gD(I2a{x}VmZvC-z z3_GD_`n3y+LY1D^9Rx-nOKoEBIvyxFcBAo7YvS<+D*I2aUZzeoyn7|sfiaeAk$Awk z8Efh*robGV&^5xuGjO;!3D)BoRBDexX3iu+FF)fU*%-VD*4fo5H$N=Nkkf(hTnhW= z{;#HsEDRrzTgh^lkE%>o!okpWem(6R=*m(eu817)Ldj)BGl3y>dPblnyrt{FuJ{QI zvTt9xzjVAMKBZ)U;Av@K6IC$PxEl)n4VlC8c?5N~+A^wr|0_nf)*P?LV@MB@2LyDo z>-eVH-ZTZz>#Jmia>71PC_Ga$sxLw;j9V&2Ki&(z+B~2^1k%VdA&Xox@9X!D-eP)u z3|&$HRaTnM&+G17`;0KTd7K_G%Ho3(t!4yj!cBpt+w8a-=B01n2S4)ap8RBxU|0D1 ztd9h$si=g$_8_9Eaj#Be*Jz)ooE_%OsTz&My)~?H5_6;tmGV2q{yj%S%rqLybEXcr z@FLZE`A%?S>i>TfFM$bArt5dTSK0TS1TVSH-C__D{mxJR7zBUz430hzkYCZ4iS2&h zabOFrN7d^-FrSh*kU=%wIot2vn0^-+03pUn+^B5je~~#EYUX-#KQ3f(eh$JNl5f5K z*3J7>IB0qw1%9TaNZ}OMcO2#9R6D$X4*I&VIxcz2C1grP2E#Wd!iAGuY?@1#>?_C$ zI5WnQI_hTxv+LN!YlKq?(o>vJm%WrgNX>s6_*hZrcDZKJZ{gvv8m)~DXv+Qbwm?dq zgk-(@t7oes9qK|r$rqYbhu!@mP92$vqtXn;v7$+pkNRy@MCc^3arE5^j81H%Re(U z)d6qVCHiB{u+$@S#61l!ufIJ2s?v78Nl!nKS!~W3AFk4ii8irV@3>!kgao=4m9V~J0ND)(1ZSO^FgpWu_dJTNe??;P41 zm5!DEgM`G%OywLnvgf7{&OXjnk09;`miJV0BapDs(a|YK%VAN6Ic$}O<}kF-FN{Y& zmlUN?{{)mHY=`!5Ta{mXIxLS)t$!iy@GA*6>@1)oGT6qy?PyBq|JRFmW5Jl}uEqL;rUWMBwx zj5v;Nns$9SeP&uJdcql`4zasgqAQ$Cow91%eQWJ{!^%SMG6+`_A2$y4#bomKFNld{ z119OZBh$9~`6K6Z)+k>E1twnqy#g`5W4wDO0S?iVmc}e)G}d~(sxE8n$PYRv*L>vn(U*eyC=gY101rUw?ftBWD7VhOazxXi`SW#^D zC?Qv3>6@n|9B`T0?J`ZH#?T1u3Id|P-gC`-j^@{M-^r~tJ()iM#R;)KdG9|~`#8|h z2bP)&j4iaYLacbbwm53L{vac8Aq3LK<04 z$n91cpDt3+O}LyPUy&2-vTTMr#-+jk)xW}vgHoP|HXGrf|iRkrc&B@tqK zB+^N$r}{#%t7&qp&FFaRcgD{4v*P;2S;^^R@^O_f zCh8xG453m?WLV=U$CFJGwNqW@hjy5rruU+V;yo5zX7XTJgF-Tc7f=)NNaLY60# zS;Z+#P-jN3@#i=>(&xwjmG)K-Q9$eWHzgn~-7PH)4FWT?bSog;(%s$7fPgeei%3gJ z*9?s`NC^XsNOv>8@tp5@|ABYzxS5O1p8f3oJZpW{CYiZv5EH{0SuVXqiX7t~yQ6%2 zmoco~-B)x6tJCNl*Z1N)I_8W-z4FWM60YegNW0(0zB}O*)78ef9VI4PL_;5j#QnWi zTM6);x||h~iUjUki#+)Ahu*dK{lmXU*oyv?_Y~% zgQZ`|1*0AOU^V7Mz+mzB zcBZI!09&>^O_-a$Px`1e)Cw0^M=|DDOvGVG{hS{URTfYmm>oVy`D}VgOVvb9SQb0L z=W2G^Fdr{AD5PS-X^7bc*H{FC?KIvjU9`bk103jM|)ZhgVCf14YH~r<=)g2)dPn?$G$b= z2=l01F|C$$XC6@qVJHIY>0%5^i!)MsIFWluhPz;tiHFcNU}fIeV|Nc_N$Du?uYJh* zGZd`$#}N#Q+?MMR*kBZ6j$ko|VHf|ofOV46u}k%n+#e9jo?7EmL3 ziR>y7#_J_Sd~m2Ot*y#+5|D#l6&%q2EoFS~_}9K*db`^Pz8lhVc)AP4WRDN30HC&HOF6#wo@ie3ANe#- z=Y@ZvrGbgbABtWqO@@s!!p(H*@q}eaCh|mOilo5i`2aQVesKpF*|ylCo!a_vs#G4ESOxh z`xHl16tBL$HSaj|Ui8BGn28dvZ7Mpx652BAK9iH!evsb;AVQJ6IPhHcz90C~nGD*7 z*<_(X-^rI+d@5{9bpv4c#yGF+t+vph43NeaQd01SNoVr1%BUbE8Elyv=;n;rF=z%r zTz!X7$I@q2^1liQ>^zoFZRlPld&^hL9?AO$!Y5C&?z&8O#|tz#s9E__tzkdtk_Nf; z+Me^x7h`s=qa4i{WL8CI2R$>gXLrw`Ziy@;*G;g$t9Op2>vCLPx@Hy6*^<^%C~&ZW zB#7)jzVoGa{BN;kiR(FETc=VBHAB~h>5+r$f>IE-cXdmrGcNtzjPx7DuU3_kDzG8U zt0$kh#cVcZakdKKMVp#Eog{MMpzSxARlZ|of>B@50&Cro@QC-QN@C(q53N`R=i31h z>i}e8Re=9}iZeUdCWp4?L!skG)E^{|-(A{fPAd{2&T=>DY!z**!4WfK0--oaj~4|w^!qP^$7 z`-lmtm{nS~A02VUKn4f!tCN&(V^nyakvXZ=H>6~Z5mhsP+8OFCs}3ch2`FOaCV|b~ zc{HBPj(@KWa9BS#>XsZ&d->neTe`wMX}O0xD}J;Kc1O(lxtqWJM7d2&z zngnw)A!`gt^}CafB1H1VZ^}(2qUf!ii~?U2F_%rJU(_@x_2mP(-bR#5!m_<^P}FLJ zEH+WhUaoog(h4oNG0c9&9~0}%$QQ{liA^ws*=5STitsHZeRyg@VJ*;y@KTrP75=4A ztMKPCOC*5)M}UtmQB5=cc=lq9R>YO}n$yO7bflcPLJ+=uWHYw>viHwSDZw3mF-@SR zvA>Y|9$fGhgKUo1wX5x6?HlDK^ti_5M`q{oxK_Y^q_6w_`~O`~)1V%oR$O5$tyAWG z6hWEiP}W1zo~~=Ypi5AQ;&rZRYrsT39@iH&J9o^N7>lcJFOGv?`_R%C`#*e6b`UqH zht;hl7x&j@v24=CN|jB1vZm|jgs#@hThS=i4YzBDzV6pGgjT=ZOP}#oBBAoMd3U=3 zpLpNLL6N=vCR@S7JRkF|XYO&%WYK?xEwG91H8SyAt1P{Q!XvqTE$M4;to$YKh09IH z`X|MmR%S+&1Y~5?iq>WKGcbK&zabNctob}Bz}bQPWx)>)j;z3p-66Y$8Hoi|@f^P| z_$|aI3T`jwtqGSh2VW8h3-I@$ljQkqqM@nH;u8PB5@~3>mr?YP5Z9XLe+kOGE&96q zD^Qx_|67`oH*L&;lJJnqwH&ti=ljjLBlWN-BEBwmk6&N?UP8u)%YC#&U>db6E)|qOV-wjH z1@L_zo1j)(!#Y;>)D?M}>pz;)oq(D$YI*B_7uvji4y=(KQc`(VQp>&wDvVOp*P>S^ z{fX7eBX~R8qH=Tcxj19mv`B#0tXxnV9)G&4;@svC2oNkAN8fW;fx)s*ul5F(8sc;5%JHL1;L zPYsOfa5ihje(d6Hg@l0Ko?vY#IX~cJ>(>oM|j@$a!*=-|}Ggy77+WdgoE?(|BgtF%npK zIAN2W+@oSxu3RN@86rs%7}l!O|*7p`<^T6CoEjIu7vRAh6|y<mcU+YJjfEc`!k)HE&KLvoRG?qs~HgZZe^-b|Fv z-BxfA!nbEPaN`EOV-cU2AO_HtE;<|oSPd~9a6F4?HSL#hX@dy+pmebe1f3g!U{&`; zEWeXC*EX1>k(5;AvoE>ny&rVNbZY#Q2nystsOSD%>R&zqHWqWVoW)<8*BR_-O12Yu zeXCWvkl>rI^ECDwZRmA-1Asx9uAa|fZk+yFj7l#B@RE~sQjOXvs#7d;(cW-kL|7^= zqgDOcKdS61rHRM*T-8#z=UEYfzQ5>V0apS&n>N;m=06ksvroNQ1vRzg5SA6s>6df< zl4;I}MyelC9q%!i8QY0v8z)|m$DcvDrE{*nc~T&>Jijsds{lNc3DU74JMc~nPq zw&$M?Vff?~05O+I9tWDg2Im*#@0{MpCaa4-`v&lCsPdBn(z3oO<(Z9bd}$J#XR!82 z6kJt9GUt?`Vh%{ZMW4;~9N4&7d!3^4e{Z8;X-(69C<0jUi~;w>1Ueb_S4^GAhd+cp z@D+qzs@Y$b-}q`jb|((^nqS6S=kMX#oiu>E)9t<0Ne9gs{F9KGdyA~GkU04gj$#$I z)_x*Zh|bM`#ro6LqWh6DJ1Vl{bj?l=uiSV-=Yk=#;k3SFRUR*;Wt*nkRPq#ecVmV< zT~JOTrMbmNFCIb|uwEjaBLJ1IY=Ci-revYHmsdta+_T82QW>IX`({dC=+TdTdC8$& zbvo;Uha1#xD#6O>pIT!rH6~s@hZT%}t>$Ta{AyQ_(PE|5OX7_kB^KZSnlCu>u96u@8^+oDQ18lIdvcB#1!RhB&!hmpW*Qahf! z62`AA{7BaePJD*O={0*Vtbvk>(&jwo$~_O>BsreDrU;-lfBaSBMK;0z${Bw=50rRF zawVQbNMm~O`GS~Vv+&3 z^>}IRNz_IISCxWq(A5y-o9o6XiDoBu3d}Z~P%(yyD2~|IE;k}*-Qt6J)c0}l8&(I$ z>QgLqj%O-5LETWP&u^};)|`%(_(Ph1d>})f=gJ~!u=31(DkbCw@`S6ER<#$hADi{< znyheXtjnz<8N##mJcPC4yEYjf;ul>fNJCiU8$abr$cK$fVn<)l0X1yoOYSEp8bL%u zvS3Ja{*K6hpIOPf&3&4;@Ed{Jn=>_XASEj^S%M0G;_lb^O3%HN#FKG7&fQez`QsixnF)$N-40 z|Me_t&Ye~iB;oud^mGb4wp=bzARSD1e0QFSctBmzKXTh2QUe?Q3g=-eq_n+y-qgN_ z?ppEk9adQ6c1y?6&f>;Bix2Y~fWcB>C4uXyndz>W`?C9Zp?Gw}QoXwb((D}@o;9M} z9vTGz$lFsC*yon%D#u{PXv6Sv+2*|)PK%O1a}-UDX(2fBM4SeYgNC|2i#~VHFV!`+ zYk$=be$A`OjAsi+FALh%yX=T8xNao%SJm^rmX-74qBkSjquzM5i_4K;kza=5+P2B7 zWIB73BuH`KMM?0JkD9xEk43)Zn{57w>v&k}IH$;1s@dF~>53i2g0^G->4=dFMm^z} zUUa$>OYVM0V^@Ddg?ns@PmZ>!!!?Av^6rcQaUL9U)(mQLoM+sWj+0&z1=hU%8ibCH z^RbG5vi-oz<@RL7zS{9K<5B1?Rrkg1F@L>t*axu~d&58)YxJ{Q$(C_9q~GRz^SWnf z?F19>QRA$J;VHMnH4p<_kF6+MO9e8{bivv2A!wa&usQAb&+bPt57egsOFf}!@W$>m zvl$k@GA41#RkVjT*nCW|qok+g%(Vh5IIGVEk9TR3ouVzluh#XQPq%b3awoO;`G!4Mv>&P6`Q)r&j7ZsK)@POTeE4 zXH%hhZ;pegd&mYEu2{;q>XkNIUQ?Qa;Dw$zo)v1(8089~MZw|fd`@26J9z2nDPGt} zNumlN5e|R|4?krZ1c>S<1A=2?VqUM}N2EleXqo%3;fRXVI#!mtvOnW5FHVDL=0Yb^ z=uHjUKOvnQaTsX%Vy?i)4n@DMa*8yi(UCz_s}GnBZm)3s4YItXZ26Z&OMxw`>vecv5t;s2QAY)N_i`l^3&`{|)N+PGmU7+{+Jdlm8|b+#RhM zbYl|rh>D`)^NHbc&!_t==a__nl8N@YocjnS_Ug*1d_KfJIq2`k`qXVD?|?K){Z~(J zM8iYJw-Be7Ore7Xqa|Wa9!gCI<1h0AMn779w>%elda8_NWan2u?_J@_ki{mM{Z2IW z;aLoTsgCjwU5T$-Y6SK(beCPqVx&eG4Z!&On!nyLF0)$XV@nh470sB&d*r*24asnR zMknE`OO!}HZsPzWEesA3mVilAm2sH~;=dK-mjae$q)!p)I>aPqsKs*2v$6d$V+Y{j za+0ABtbIESO7IQ_3uLc^_vg&X_awy38Gi~oximhxEONB^?@Q=Iid4vOPf}qo&AL$5 zP|+ochxC!KFnOGNLIkZi{rUx~+0!oJ&C!|B@{Iun61+y}&p(=@gS03^6ctZyq=NpW zyTXHAduq*zm|l54oLsjaw(m|26I8@Q`UBsVQ^hbAjioD9X19O9MBMR-3YIo!M){$5j~umWe_&YaP&vHc7vE1RpTjIg!L!*~y*|{{V@JS_xDlv0TTOwCBZ>AHW?Y@&^T^EUMnm^!=kA$9Qyr_)5ZuS`H;i-#l^k& z<=jwhe8|=*1*I}1F)blS(ESW^s@6bZa^!73^@h_V#;rR470*M7(Q3MG$PgKl z1*$z#SuYvlwF)xZLW#1!2Yoc@OJ+dKuTdXuvatNT<}P?cr^KeBVpM zpuZ%d+6*;l(j{$=eX%z)@KEXFU6Vme;q3K+CYh;8iLmW_Pfgq9kI|%qe_t83!!^O? zmYak(92DL348+{gHrV6AmSmrxjCrH=j=l`y5}+qfSC=oo9iPiT!qV;PraY{;XcnA` zyE+mhJ~%sBk2F3zSehA1+!tleMEhLa5>wS&^KGL(*;_(HSJ}dqPW`Rm>3yV9J~~jZ zl7rDW;k6bLak%W87eg_2lCGB0Sbnb{auD*d@WS?tOUmAAbvUWPp4N9QGygGmrL9lq zf6CgGht#Rc$(;#M&eTln-0Uwb#s>b+VhXkh>fy`t%F5#{P|sCxch7@JVUH(^Kuw%{ zq~GJh&Bw%#38F><#*mhm0o#kKttW*AJSiYDQ`KsS&aaxceOa?R!Un0<6oT znyvhS&y>Q_mu!vgD`7U30yOn=dG%ZZJ~ zdz>AVgB?9R=BM6Y=2zJ08D77o1tI-AHr2`eYUpDppREg@!U-09fqfO>aLP$vrV-6i zN?g1Oe!CS}a?=M)`ZiU~B;o%Q-(=f-*YmUkkUPRmV|#nC8DJ%dP0MP|2+*?myMAWv zS9`C}eYtOTQa<$%2MXS|@TsNmEvSg;s(qo?_`Q**s7aYsG2469tNUh0(_>(tx17K#_`#)w8MNtxvu^$@P_~W}n1E&Y%)EXJ^OL z9qox9SaC38=fZiAS}yS@8~4*4xZ7?c$-ft{>+ck^2Re2;7$L@&8xdLaZ1PVwWYqj9 z7M3`X;RSLBtIPV5N$^X6l`S{Y0?=|O`_SK?fw^zGG@Mwys7r+OS{wUK@8KQLZ*M}2 zm|)we$SejS`M*m`-N|o_7PXaMXiB|$>v?i7E2dMTMYihPPBzJFW3(3KQMGijYx})? zQzKC#V4wzbUtRyXp~D#*zHrK^HatYM2}8-*#?) z_&j}3&&o(kx|0Vs9)%V*2F^}n9p*ersF645kgnicz$qj4>#a^4O64fq>0Ps z5{?`;k$EoWvJ<^RehyR}j*B?u*Qvq_?LxdjxjWQ;g4^}TDBt|FTUVY)3fLOq_jN3= zr&Owdf*J7y*aeziAZEoEbTRfu5eLVn5w(fTY(BFt(l#ewvKm~U^NiqM}v$7=q}TL9IJq!@b{$e0{d38ZNC?KPH#z(55a%9E$WHz6T9vW-)BVuFf@%2J34g}G!iT< zVPIA1!B#52aKDvA;no=F78P-IdVEq{w?35nrX`)h6FCdQkOkt6am?jD7qv_qO=|pI zHWakOU9|m!o6kqI3pHs;x%(Wtao!FNj!f39VcGWWNa7@C+$Bfpm0!sRbP^cuP>Yg4% z>F@SQ{P<6AgNOFBSn;E1s!r}Cu`R+-#?Ao0K#KPZ8Xvi^!WPc}R`086vQkszRiZ(^ z+1HA;8r~FIJx*?U`Ar_|<@-)@N?tE<6`Hk@$D{Sy`BBlw&kA?qz7Z#Dg1nmcpM(A) zijh{K!Kf>P`F`VP%%YIlC1D<~S*bP@6`(=?(*wm6kTen`VQ?1f!iPfd61j@cu_ zr_e2lho_F~hQo4`;iP`}^%kz*iwYFRg7H)(0zt&!ZP4RB0;xna4d2*DXDmH?I0%=x zy2;r!hi>osu1SkgVlc8hhukl9J&e8S?$-?s z#w275S3()c@01b2!%4SGSFIDvQ=Jqqi11S>)3Mll8bppfHYTQju3ij$A^taWV1pF za@CNfG*WDtWJyc{W1Jor+69Gh>6<=~`U3I)2f{_R%mzH79wd4Uy}9&_g~24p)x}Ju zS{(VO&pmd&Ra*LX$4Z#~$eVhCi{7k)LckIsC)g5;R~DSe0wm9I0NuY%owA{#qO<+G z`mXz72i&1+UT2@&GetKg2?2#(a7&)-Lr;_<4R{jj)lkY_QPI(qxI3VaAz&;)CsM9# zwAd)0!vYs1$JjwvFOTj^?@zFpDd$B(beu9_@dKdwbZ7b1w>N ziyV}W_#pKDi<$0yQ7ScBukfB&Lcxk}gQLFLH0>MN@f-;{yl^j4dN7tmA^bG9(CYk( z0LSv~LS*vwEo)2NT3>p#ev+sOHio!;y7qEH4+~+)dn?a)1!`%fjEu0?^}>_1olNAs zXafL16qZDhmG!rx6l9-l<&rfow$OsLha^538Bw{73QyesKvxJI=>evz@*;2%D?^*9 zNQLizb}H?ebC4BW!T1`YkRM{gqU)RMmnz1=iYCL9F4?!0$}F{P>JqxE@r3Mgz)3_y z3(SHqkDWr@MVVcR2%g0c%DOy>1UZ(f?3&#MFwV-$zD%{uuN3`dD!Vd=%SnAY`s0O(~`HmHoWRTgt8DGEG3;_O( zRD0`rJWhFxTD@oTC`*vt+qY^(^D&1?QDNr8Q+Mnlr%Qr-0L9!0v7K#&ahJUQB7`5q z<1&9(iTFElCnv5dUa^ARU+sQfsAZ#(A3t+>5mV$mL>XYO-b7i1MHq{W{rLc*>kw`5 zfy10A{qno#-kk}UbdItTtld86&lGpm{JrgIHYF~KNT_4~pVTyWU_|uB?@s%u?Vh$) z!j+dDNLCKSWg|BH^~$LBPJQPO{r+wW{CH>948aF{Sm!%CoO&p_kzeHFY zcvltryV~rA^}J#dMH&Gpa0TBg83{d!O9#8#FV@p$_1aG|l&C^H}AEb0{%`7*ic}o+=T z(IT7D2RtzXeouw-k~a@cM_xY|d0!u^Rm_Q;4Imz+Se7vqI7u^Yeiy&`ky`OQ&O|5{#_+*fg&dC+MRCu)3ys8{RTOeg$9?-$)3a3s zx)cW9gEw}rH#)%+nm%c?DOTAbwfalr z8y=lQ#h0WJ)5Y42x3q8*|J}mHCmPqlflL_k7WM7VuYNcJ9vJkn%XijW$Ixe&r>DR8 z8{ZFyf5iiHnK5fDedMM1V~I`B8Ow3W6@p=Nsk<=r{y?<-9P4_M0{GRjgi)F^-X5ou z-uDHzPrvQ_-%GCxvI%!xT`B0R+~iVPv_2F$lY!M!`28Q+eQw+2%I|JZoa{~Bs#xF} zqrSc`3mcH{Kca6sWt?*I2BX?mb0s-65>Q{J&9EVx8XD!4w0q^%t}J=JpsC$H_@1&W zD-)LXwzz>Xzc=z~+v)kDvJfE_YFL-t@Sp6nWX1CYT>#^uD?EJ>Bd+kR!r|imQnPs~ zeUo*-0a{7Fli<;y;dFbr@}E#Xc5h@)07Wbl%>Qvn9_{AnLE(g zXJSdCoZD$y-5qcuy-LIVk*!jr>HF_W+@hH<^i6~4U(I_5JyL*d08$WZGJ)zG?Lg*+ z59lgNZlspP1%u_JKT5SZb|PR(XYI5(P6^hw8JqHia?5M1jp)`kw0S(SCD_e5A{CGN zQi37V!+9-h5PSmUrS?BVAaupg-b=SV0~(s{@ZdzT$B5hfn{`8;gKs4-NUFbk;A%^2 zYZwX~Q2zaW1ZUWy0o_p*-CiShOBtS+Hy-9R_gpnk3in-pgPv}!^1Cir@#Ihd*>td0 z!qox9{oLZsROp?EBZHB8FRb!w1&&0Pos(0xy=TQqyk-v=aSN$z-z_;mrJ_f1V&(RA z+U*Is@dTcZ@SV?V27~7bYkJcu220*zl*&XwrH=$P$k8&Q8m7g<-BQ6%J=Z5-WIrN~ zPf6z6ujR=z*C4RwBW%(C?<9LYi6M2KLzQb)B+tX+WUOJcjo`ECcN@dVkkj(7ObJ!L zhp_ZdIwX!PIY=rQHB1{*aVNzxD+|p=kn;usL;vRj%?{5egq!NsaQBwfOe0D-E6ih@ z&wNsxMAQZNA-yLqzAByN@Mj{IQe!RCS$|YrnK-c$Ae4R9WXxYH1mNY%`EGp*o%^`p z)5=%BC>@3F7`!H4^y0IJ?#lIsq5^wS)xM`#7otygTt@R%__vo;jzFk=rhfJ9)+Gbn z?oc{t6sgcydx5y}(#33PsnOW{yBc|u_LcdA$XSc##-!;{z=ifZCljdBw4^0d+lLVW zm!SRqwu?*n4}Z%%$NUv?&j}4%`7@EKu!pX2bWCWoy{%dwjXQ> z8Z_4HhQl3-`ff`K257XEM|oan@oYCC?qq>w0FO*JEDtJ2!R~55@ z9*&N0*1=D`3&BaPs5}mN69@jY_8Se6-YcyZs?ViO7$Kn{x9OdSyN(8zH?NAhp%OD5d z%*c;8&|6TWwTHbq1osD_P3x`sMLGTR6vh)6^rAYbuv!k{<7&ON6J}mHl{_{WNB6`-7}$=;O@nG+;O<`_I1&lb%5waZZ$Mi|xq zPUQB1-YND2AR>LteUX7-*RH1x8G9K}7%tyA7o?-tyALZp4y9nY4?VVoLNvNBcZ%Hi zBMDQvsjViZ{5cV4X?cFz({{IzsZeAKTaZd&LXlj!U~CQo>qUuArk;xBh@#xs($C-J zLW#}@bStAN7~b*RJ`k!h{-_s_-LOg&e?V0AKtx6MW-DVdhJCFZ6;&4FxocI$Ub{m6 zO%CY1iNHAlxm=JXjQlSXr_NlI=iG-n&>1T$7m7Kn4VSdg`9VayO8Tvi0aPj?Chqf zgQc_4z+@N^7sp3i3ucf0;M49R^_ACu7-*SYS4f}XUp9B1{#9+it)SW4KY|&VJyQ9C z5Tri*N66;S?s*P4G%Uq=EeKZGQ&!!RHNxSvz~A$PXDh-7ISXhg2%0X#(Ha_JIC6gZ zQs=c;%3uppg52Z-sWDHqi&frrMjP8rLq8{t2>p@dVUdbRp` z+}HS?LsyQh38NNGX7B8Z3Z zYYRK4?uRahrUp-}bnTztY+Vkk#y77V$c++nXIzlC4&@3uuw< zUp?C-J)j1csEPnc?H4_hCT6_JN4s?+2b~^1P@geAKArb>$r;G%)KfvxWj9y4rE`iV z%Dd0rto1L%PCp1h|7Du5>H(nh|MuD{mT^0jcI89YSL4Z7K+s-J$MWSZMr0-7&kZrz z9(K8)P?F7$R)J{0i6$DMLRGj!Vpf}$ygzQ#CV%)*36f7R>XBgtg_SuPQD{ot@%TPI zYSa7Qi6cQE%C-V1FZVycnq_plt-{ymZ*GsLnqA2jX^w_01ms@*Ts2mG%aic2K46~w z>7f!URbXm7M|Z92K#;F?Yv__D9-hFRj;itAi?-+?)|bUOuPy`*{kFb7X}wKiVQjVf z9ixs9Wz@a&g-SR~Oo?-?M}kWeSi}OiUj5sw=aQrsl93^$0!c|v=cLV)!=Wjk1EyQJ z|BPAckBk;w@6D)vPYo2#y9KY05<*Ph>VBIzl{6oy-UJD~JP+##U!+q+w>NNDZeGP!cZ_y4~n9|%s;w&N#lRqWk2I79UB%rxI`Eks~_&jfveRw;) ztU%0=J^Yp65?3s%SuV<(jLCCtHAUcqPqu-XR1KfV&zpA1b5Y<>s9g#+a$Vf9{V)ym zEEk08zKa8G!2H0!%)H1A6dAb^RAc-H1!N`5C7SMffHSoHAr)SksmQ4NcL} z6~wC|6U_VoU*ZR|->>vWf-MbSiNR(@g{*~4XR?9B=bp&$`MK?eU-0zkVuEwvRV zS`MO|<~g&ZftiQrpYz7DBkY%}ivbF8boS?SKY_t7nc5`A!JncRr`ti;0_fk?oOBOQa-)&Nmw)9e!fZ}1*GTDzQ zIdVxMLJDVt7%WYSlmt*JHdX4>a)?V0r$NHVPGoja000@4^QEr3qPaU|S+Jt%Ph0!A zkx(p^;QKGGwGfJ{^bt4}UE=HpXn3;L^oQ@ErSBADaB$?s0ll@GTlVy{*Z@nZlF^Ij zF<)vD_^pmIkUzGGgS}Y*T_lD6H`w}{BJ;~Tb?ZziPAeyK3#t$`8>WVa5td97ow|1p zab!5n`V{;e1n*vawILH;LuH=A{Bj$R`l|*=o+8!nkyk47i`J+YE6la{(jk@Wp<}*J zn+y3rm8nH7#N72@Rk3TSMSc1KrR7d}XJ6_h)mNLUjJRN34owpL!KiKt;VAVk#mhC+ z;mCjPRD>cwWW!=fd~QSX_2H3SLup<9EF=V@MqdC zy(*Gkg{o`BdDpCP&y1HPpZ1`dEnYg;k$HZ@KV$yw-wWoZ?fuDiOIC6L?<)VP#UHic zNcyrC4tt_q{vjqMNNl}c#KO-GHPFrX^3Jv97@=HtZ~AtH!$^6ge}!YB1rhSh9xum| zp&y!N4OfVY`+hhLc&V^NhL_Gd-($!kP00p1pQXomoNF zeF0X78S7HRkL!3;9@c3~L#&O7(uZWw&)d?u{W6(q7G{o=7|*wcibNV>9x<@`2YsH! zJ3D{AgKAg!zS_PRgtr0fsuxqJB7<<;M72yT4+yd@dW;a5L4ja?`W<29=Jbvn0*9-j z627lvjqF_s$GW0~Nxp{)jrlLVhn9v=CcmU?1Ik${=IR;6cv;0*JAd-xc>~N~+0WYU zG!)n#ftkY?wMl3#1##Zxx^vg41kiC6Yjxfc-<-hu@+h)7`QFW_nhPm?=aVjzP<*Q& zm0PsKC-ihvaVX*Z3>qLV~gBZaL!*9ROnDxjN zQbH|=&R-z;F=n6(NlnPREzY#|?X}<`udHNJKZ4-pVCJb=ee&{-ahhYI8%-m$8TLEh z=E?iUnf9(wk{ByqzMX@^&059W($WI8pPVu!o*n)&^&F;baHAL@j~RhnGHjo>+L!m3 z@9(PZ>61?zob1(PBSnTo%=z73oPedft~jw2i2tBHbpgir;FRei&|j?j=tUU2C_w49 z4|F_e^{D8Sn1xs&WrTbm2nb$&I`{XaD=n0)514&c%opPWJnEt4bImUf=Ft| zJ(W+->>AM6)C`P_8G4pZ>+VjS`=4S{LIpq6GVzuO`F*_bLnorPJZY57i5pC@9l?0X zDJjJObZiDI=mP|HYYpqM2SQ$$1fwC zNqxLCK27w*`qj5@(l7hej0`wQSnQEV@#ll;!W?=65*SS&Ek0mE}|Xhd^20U za8f=yA=y%d^X#9{j{gYesGZB6MeOiU?2Bn!G?~stru{bLmtFc$x{kNmtT>WKg~uZO zYf)7nZ@lTH?Rq~E4lTNBKyN&ezbq3iiLOn(bF>@YLyPjlCxev8sXZ2MmhWEzQgm?* z>pq=}m!pJhA + +To find out which protocol your device uses, please refer to the Traccar +website: + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2018-2021 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-traccar/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-traccar/81407?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-traccar/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-traccar/releases +[semver]: http://semver.org/spec/v2.0.0.htm +[traccar]: https://www.traccar.org diff --git a/traccar/README.md b/traccar/README.md new file mode 100644 index 0000000..a8943da --- /dev/null +++ b/traccar/README.md @@ -0,0 +1,45 @@ +# Home Assistant Community Add-on: Traccar + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Modern GPS Tracking Platform. + +![Traccar in the Home Assistant Frontend][screenshot] + +## About + +[Traccar][traccar] is a modern GPS Tracking Platform, which is now available +as an Hass.io add-on and allows you to run your GPS Tracking software without +any cloud. + +Traccar supports more protocols and device models than any other GPS tracking +system on the market, straight from your Hass.io instance. You can select GPS +trackers from a variety of vendors from low-cost Chinese models to high-end +quality brands. + +Traccar also has native mobile apps available for Android and iOS platforms +so that you can track those as well. AND! With the Home Assistant `traccar` +integration (introduced in 0.83) the data in Traccar will be sent back into +your Home Assistant instance as well. + + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-traccar/81407?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg +[release-shield]: https://img.shields.io/badge/version-v0.12.0-blue.svg +[release]: https://github.com/hassio-addons/addon-traccar/tree/v0.12.0 +[screenshot]: https://github.com/hassio-addons/addon-traccar/raw/main/images/screenshot.png +[traccar]: https://www.traccar.org \ No newline at end of file diff --git a/traccar/config.json b/traccar/config.json new file mode 100644 index 0000000..5a48544 --- /dev/null +++ b/traccar/config.json @@ -0,0 +1,45 @@ +{ + "name": "Traccar", + "version": "0.12.0", + "slug": "traccar", + "description": "Modern GPS Tracking Platform", + "url": "https://github.com/hassio-addons/addon-traccar", + "ingress": true, + "ingress_port": 0, + "panel_icon": "mdi:car-connected", + "startup": "services", + "arch": [ + "aarch64", + "amd64", + "armhf", + "armv7", + "i386" + ], + "init": false, + "host_network": true, + "ports": { + "80/tcp": null + }, + "ports_description": { + "80/tcp": "Web interface (Not required for Ingress)" + }, + "map": [ + "config:rw", + "ssl" + ], + "services": [ + "mysql:want" + ], + "options": { + "ssl": true, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem" + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "ssl": "bool", + "certfile": "str", + "keyfile": "str" + }, + "image": "ghcr.io/hassio-addons/traccar/{arch}" +} \ No newline at end of file diff --git a/traccar/icon.png b/traccar/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8d597f75c32596d20d35268ed441935b8414eeb1 GIT binary patch literal 3993 zcmV;K4`%R*P)cK`qY8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H14<<=O zK~#90)m?db6h#*QP0u(cyo*Be~%=37}6@nZ2}VL5{VMRW-$mk|skFn?Qk@TCo z-s|eFs#mXGI}j$w?uM*}QME&BlWXIvFQ|$1NDWfGBbr;ZR&(uwGZnCbO7W4qwT`{lh&XPVgCYGJpH2mA-zsD_?o6IZI5-b=!Wox(Q_T6=L z>d`cP{i2KQmQfXj_l`d1v`F-G6hS##r~Y@rXwkbVU~sY5+8$9@RL4!)P>6@8J6ErO!TPyuGHPcx=`&J$Edg#!?Zj zpzTyg{t$GWN@x`o(WT_p)e}bjT70!_!pohfZHUllpo_BU5!xA2XfZX?Hd;nkl1rlo zH|1@WyVxN9?808Y&<&eP?@>(~L}%#)y+V^Hw4#%Jg|ovdyxci=rxc<=sq`crZ@1{d zR7=lMYKR&gGCA#`GsPd%3&C5~v`*EfeIq*F`D{$|IlcB5JE(oTA;){^A^i;>(@;D^`3XI_R^{lZUbtDoFLp zv0_OjF}q}A8MmZJ!Wx`!P>uE=0;`e4@%BaR`piHPv*z$~t4J!b{mvSpQsN(AiF8|y ze? zh(GrR-st#%?Si+^L5e@yCRul`*@`zoQ9(!rWLB}s(>uu2$4kSRb}iMJua0_i3K&uw zLi~aUd3}9iyXY-+r{YdNtTX32Mb3izRTaSR@Lq1a;4So`LI@COna0`ZFn zuzHqgzwN@e&^OdeRRx1|ndD12v#E=gjBJ(r>`d^;Gd@Nk6VNxr>oS}ege_3BZtlSx z9VHCMWahdFKk$wfvb%c|tK0Rq-}zvwr)-rz;GoZRe19{C=2v}%9+QV!3s&k zRXQ{qK6Jt-5btyl?uJJ*e>PH?>toK7fu%w~0f%pAGt4sDLd($!A7QZYmxIvbFZFxw zy6g`ve_NcS9Era2AlqpqDiCG7jh5puMxa8#cj3S2qmlPlBq7+#GLDKm$&G;?F!$zi z#&n$1A;kxJ;T?!<+)a2yGjBIcV6IO&D(?mY3OF)@O>Fn-zZrEZzhvW&LjLP0(=7EC z?)u2BXa7z0vZLe)o8S4xltw?P{N|$!;b?HPW~o)&W_o{bK>Q_%>=Jma&El^n2Z0jk zTb18SgbM^-YX@evw@SclK?fPgFGfPkASZ09=7I@q~ny~8_F@^TBUOEe3y z1`W6w%>up`3xw(UsVxAM<2#L7c;~UY(NbL+%j&05gjI;b^C}PD8k7jQ*9+%_>osZ_ z#9h}7lRVtAzn4Z4YB52JF#-x~|eGM&h0t1&C0JfmnfhENMet9@h(> zZ6E$2;EIlllnYfAjCkg%`U0tvIqhTo0a%aA1NZ)Q;j?NKPe641=u-i2n9#Z5TaEHr z1=K}Irx{C-(X%HzFa`C2|NXevU~UoOg_E2w;ZyKBA(^>$q7QQ5RHWm}4@SMqb%uE> z81ppWj|uPwU2nxIXdmgT#fLbAIE+&qlVVHuOjw%emK=ef)Bx3+N>1Z>1 zi@i?7Gv_?>4XoOHl&M&gC2E?fS5nN`)z}Q7&zVo*-2no2pp##UX3Rk+bQZHl<^H$e zUg5F^_>F+qLuZXB)Uk0V`dY;Z2%>rvlA_=N7>mz*-z;uDaGqaW%mVt(kNS%21<`q5=;K`8VO^vr}CM?!?Qw z>N5|`ILchdRk&g*gI7Q&(V$~jXpfGnp2ZBL2>5p(4*)Pb>@Jq2wVDEeQ@SeqNQaFs+~Dnt zk$a`6|FA4AtC|ta6B@Pc1b=!aYKIiHDVmuI=}~~*gZe+T5Sx}m0idLKw+WPIn*W4qSxEqjw zgnzTi{-s&a0HN7Rj1`)O%J6{?QP=e|KmsmY&aMHqZ0mpnm+G#x8FO`~wHhBXS5Cyf z9r%}x`R3BG5?`+3v?iw2maOcJ(sAzeK&l4_xX29rAy_j__(D^cQw(jP-iOl$Qd@~8rR z*j(wif=#YxnffOK^8w%uY&MYEe7wM2_g>!eH=uxoW!;!JL>agxf&gy3X<$A;n6Epn z`S^(QBTQ_HdzDL)x0M~brsx`4KGBT!7EG_(HU#EyEt&qYLPzs2Wk*Se&L|;o>5Tjb z0wroh6SRu#Rj|Ys1>|w9xF*OIEog^1<8l7E*`e$C zx&pg&pDuV3Kk7_r9=0ib&jzR+oXe_Vw zu?q*!a=K#}hGU`*W2^b_VF>myoQ#^?p$u9@1$?J1YIE1Cq61W6^V#EK#X~ro4=ccf z9}6T4Lu6V_TNKCVl}9EOenumI$2v*)k>4Q}v&P}UZQKIbjS(UTBp%bgQgj>J?`2zP zmZJMl6>Mn=Jk179NoKt!@Hc@YOGn2)6(;$dPUR?^SZL(%CXjvKZ6B zp?G|>B7kzv|3Ne{Q9QXQny>fi55`@~lymuU9b5&Cf{20+x=VcSMjN@?l`5Frfg=if zX}n+oHf3ul8CBi^Ef{)P)^VP<7B_UzcYz0!1s(}m$A^q*N1<{;TD?-I!*!g}3^yI; z&V{znpgOrNCqRO+=;FSDn9_+IB*IK9ZMQ0{E&wdd6bDxB7(0G`^3yBAFHrRMEgWuw z_yDkAbWcHWWe3f&DXe-hHBx~-rVl!P37Z2_y{AyUTf$(-#&=!>-`+XZt39HSh zAU$31Is`dsp-ls09Tlp4a3j5bkrgh8a>A(NqUu1Yv?lE0uTu@LlwB@s?d-N$1@7Du zaiyTFFa}=Sq6m<7?!A<^wH=|f^&tOgQ7HSC%BRr}mJ45^hzxd)qWv>@Z)__te^RO- z;(V(T#?i;rY?1I^(qz>y%z#ooVf*Zs96PyGy&<3!dYY`fJjuM5>==~r6JGajM_2xJ^hlw##)7f2Zx=~bH~i0 zVbuk8dtE6pciQ-U;?tyNl8dr`He}!qFYZs7zE1p6CNro<)6|WoEpY>|;={|XQ+FQ9 zFU>e=;*_)tW$y3)Lj1EG{=>_`n0w>Yjj5jYeTmpXsovZjvkPU*qB~jt@%0|H(@%~s zAG|N2BBTM9MGU1>C;ixcLzfkgX$J~y7c5u6IV{ZdW;UeP_pQCC`oa^jjm|o!$KeCu zL<~hWcWR1hjH`~S>U)h}2{b*cWyY|^wwX05@S{)`Q zBMJ|L0|NvE1TQWoqyPj2dI9+U3Izsu_i?tN0DM5(iK#mR0SV-PzkvPLE|vj5Vmk?| zIVswjIJxRO7z4Swx-yvCSUMW&+Zi+1I+&(k^5Osi5dnz{{ZewvxY%&jLlb_3yte&I z8ib_5M0_93`U?pdw-^Rqn)nshrZpAktJw3H!W6ZIQ=S~XjcT$(ctMCf^4;<4)v9h?N6m@o5Zd&eq zDHA0Zu-KS+D4@`v;25e%>4eFc>GYcRCcq*@w#;}-5~RF1RL2bVZ};#B8J9$f6Bg<5#R^ZcIxzH4DaJs#nb1;zFxr` zA2eOd_HM(2PSt&9SNBQQx28&t!`4k$i$nhw-?G#-$D89#8DAYh=TOTiS?p`!2-afI z#+eH9)l9`9N}i7uWIz{&ABSn_$x3u~+*0Wqqv%>)K28F~0)l{+e)RVl!EAF+*4~?I zD{sp<_I+~S`nhaM;y|QbBHtCi_%mZ3{J+XJY>scd#zutYfSnbQ6zF8V{&Jn8}spRHNo!?N)_)Y>EerLlTHavwf+&!N2+)t^+ z2=mh9@Q&tL)%Z#aL(JNPU=Po30F%|?nlv199L7EdLlFlCG7ky9RTrD^S1b3))p4>4 zkp@fTX&13gmw= zkI63O+ml!RrqqJU4!02>?%PuPqgw;DsOl8e7v-4l{8UVRjPV`Tf*Eg(tXl3(-na+T zIdvLZJ2Rf1q8ebjk=y1Mkrl%$mshv%G-EuEJ!tLMp~2DCYTeW9XUuBHtLQXI9nGyM6IMJL@swCTKQp z3OaW&dGr(9i-febd*%EFlL7=^yq<;oq8odfwJWa{?uJXv3|)_sU5sHsm(#1-w+P6m z!-i^_dQJn0X9B(pF938h)u!sZi;3_c)|3ZuUK9Nal{ z;qXRnc!)#)nhdSzesFUT{e93rZlWC^0Emzr#&qaM%~&o>T1D;Yt1UIAI&*kk_zVyT zNQaODa)Gd?$iSsX7g<;xgNNAF+O$$0)U&-w^00H4$)5y>2h^a>EYX-4&|QuEdBL9F zQZ#*tG^?9sr_N(av<#svz*YUr9$banNU*9!tHM3vrAcehwthJ~0Y=|(qT(280IHbS z|M?zxkuIH~szvYhEMC%QcTA3ALtWlj^@GX~s(!1m=pS}~plD;$AHzeeld)cd*KQN7 z%SFxPZv>doJ6%n=uPP9sm#e3L=_k6Qc%a`mGir67ZrM9B;I4sSSqrE z@!KA*lKhOB7*)htT)=>WF>H0wM|G(2-Th-IAOt-nJ+%QxUgy$7Rq-3m-aWhIRqK1p z!^kp(wgBUaZJcCR8kSL4c!vT?G@BO6i;V1Ksj$2OSEAGLSM9I&tF$&j03zz>0Hcr1#A*|bRyN@K-Q=oB4*ibw~oe&`Q`JTXiB+y8ePp<;0f2M~&3;d`k#mECGeq~^ejUl^~3MP14T zf+ZWZE}MUvbtbgDLI6ljF=IPlc^~Jur3$r#+~h69dFUTW0Ns&~ekl5ywH*9#ehLOS zxs(EPVaSmAsva!VPY`7~p+xw|O$<>-K5Bh_-CZl3-ryPnkSb1ry7&y=s#ry*XW+n! zk5rWb0!k)EgbgZmAVGM<;d0jrhQ}uXfD)VHcbo0TtdV_bPl`dig~C1!-XM#9sbS}F zmgWg28URxUa51rj_m6a8<3GHaR-|mjnB(o*gi5z?;k3?Xu`6fyb_>ekter##y1Q)p0b8YS6J$7~K1g6DAb#KAd3g2I1R8E*o^7f^;=h z;`mc2T6|D6O49+Z(No!}fWDw>`Pk2lIqhi!o>Q(3@ZV5eebewSY>xeYeBc6#da4u{ zTe+>(^GPXeUCYzh0AOV45!J`w-DpF~r>c3ytg5^UPR99Pkuf-#))TVL2Ty)y6X;}` z|KIKtBN~)sM-Y2btDuBsKxyw0#Y+nFNVburE5MWH3@5X#n>BjQKxQ66;DBbH;~LAV;>v-U4GnFfF1n@1tP<5hF!d^ zxpZApEGk68!ZBh$-)0~n!HjW?zlv+OHd;>10(pr8%_yB0KCd|Px(WOcsjD&L)H#Pr z(7b3eP&%m(x6EEE%mm|8@UT4nAg?M+Jccnk+GMaIBS zC}OgD@xVu8-9lKKHI5-g3lCHfnH);?U58^e32)w2Xo&*-PgNY8Z+*nQ)BG008QkwE z_9-&v#<0xyLn=V(&8RU{RU08sK{5X@m2eq4n<)X~xfd*V<0}2G_ITtb-mJWwN9Slr zHt1{Mn$?3;)BZ#Hx}bX8Hs;w7okJ4fv>;fn_tAdC%{vOFVPNZ~+j`6q*ru%=TQrT0 zAzCF;!ZJ?X9sEEP3Lptcmx@llFC#;bjv>Zx*O(fm7jdT6!kP&>`Gs62zYW|y1uyD< zVl)XYyz47}h$gWAgOT?}1nyCY5xHux1T2qIleb$0R?B)8zrCcH%#GL)Tk~FMjxLaUh<#s$72f z%YKu~`PB_rQYZ!&I3dQ$wxjUS0Ta}mJL*EVc4A0Umm?jT_FHKW-d{#_ZRN_ z(K$NnzQ$dVyc&tN3&Uqw^?|5->f7s0D83>ZJHVrUQVUZgM=iN*E`q*@jzZ{Cst3JczkM~N?8d>o(W9Gka9te#ya@>HW z0BvEfTf}_Bfj{Px{tt_@^B7TUA=7iV=Pb+X^uLWUc@(a3ORX(yeWVKl^oW4T1V}== zL0~xwbJ1u(VM7aj zTJtQ=S-DEF?bi*iu;o`}bu+Zi!b{;(g>F7beo?JSGHlx$RRa`xiT?RgYufEy~dTR9NBD<|RkoHUO zPNQ$kU@u5?pd6RV;qYVdHr0?|U(CQs+w)I~w(on+-Y|alNQ@6zAbz}5L`hB)T-X!) z^R>ezJdGH`Cfq*o(%VJm-o_?_iwGYG;))pXBkVw zWf)^G|9Magdr>>ctt+n=)AGwYj-)8mfxfq%8n`u3z39O7a(2H?quu=zR&KdNO{mR0 z_w&WxZPXzh&bd1M?lsEN$I83~+4Zhh`E4|(PV}qS8RFDDEbbWoQUkG2YLH3rz?k)y zsFpv1nO zSY}LEE7+T(d{pinP#lea2b>tYo?cO?;U46V2p-_>XAUpKa#c zYS-38v^mlqJl+2s`NtfaI2%QOr5m&G zs6fkCoLVtU=-I~V&lr4G+++NE_kxd*DtuDH(P1AMDoTCND#+`3T|5K~9Ssu(aS#ao zRN(ZLX!XpmDtt#(mTo-tV^M)-f3BpxCS+|nXjTHS)&oz5nKoc&9uZ&rC@+Jhy^bT$ zS059J5xaI9bDAENLwks7sl%x8Er#cC{p%;5_;Su zi5ub$Hg$tt6LjCeSJ`)P#=ILC5T0l{4d5CtdigXSb9f1Qbu=IK;(K$|k_}j*SErBY zg9-dndtfhif4pOyH&wfWhM%?=AXe!K4E2>cuDR0r7giewZzYeUVR54Eq1`)yH3cmW zIcE(pY(Gp-`u(q$bVp3U&V-w%@ z;oy7;PSI+6l{VVdFYkAYI|4QQg7iRByZ%G|A57(O*r5gTnX(zA1r_TNWQZN3zuWY{r^K{kSPDe$1p$8yTemyl_qs$q{#us1-+I9ccZKWx z;sOmb-C|X9HRtaE&G_I@xA8wl<*XOo!RO7_OPQrWy=p;Ry9Ub8^d-U|Txlm!hT9y_ z+^+N~?Jml2w<&9D^ei(V_@AVYb!yOcxQdDJxxU$4K>qb2fdEa>6+%8!B$&OB* zwlUE`ZQpT_)PBMx#dz}t=enmT$VO(6;j}XGydk&Yr#0d2EJ-^CkK_&Fy^_xiACNHL zxzg{M65wkm8_}&9{-`SgPgh;jP*)B%_!nnS_FhRPy&S~L=48X=D}lxu1!8U8V0-!# zYEy}2ZQIIBS2sZQ5(eDbeF~3P;dBeej+K3!w~cVIF;KT1j48Wc-iL?QO@B{ z9Q)+NiJp;kdiJ09Tu);Jey;WrwW||a4TJ(mjfp?Jp0Skcn`VIl_Y4w5|0-9i29}aU zjZzG)5oKBp?Eg}EGG3LAvsw#J@t;KZ%mKcTaL)&w4n~Oa_$SzinIvG zM&sRK%?HY+E-i-btowj|Gf#b9G=M*yWT6!|iieMhZ_Hycka+)cPARB6~LW{S!&PMZ@7g6>3O*fs4em7+GMd8<^^^ z4k*U9rJLZTueSMqg>gL-X2n+8LQ(9ND2*H}Bk7qFl0GBKHjW8AQ@Tk0Hk$d1JaJ=l z1D?zky^Uzq?O`Q?Gi#q`XFq9C65eVS4J$_|&&0w1Sx>E?ifaB08o@+3#wi(WWXRKK zNDP#N(P{|Az%(6WdRPX z*d>;M+2F_Ab5G-eYZ*q+hz8RnVJRr4*{W9k8Bg{8)87@K3)c)M*pIU8E356?%U#@*_L*o*q7!Xhq@Q&^ zVQ6fJyl8&d@(t-#T+(hQT%B6~>7`js`SJ{-Dyg%e`Q#I;bKd(SxUvm2tQ+Wr*Aut? z{HE=1MfT?G4a#Y%4J|U?4NfCQSVm!nq7aPP;Uui5gx-|yv zJJHz&nZ{9q07Mt4DbUDm9$7sa)J>)siV+dDu zF_T8RsU!o=Y_!JCx~HN;G~XI+;pvVXJaEahpQtZ?T<@kYypc(^G`Ox79+o>3Uxhp} z1HES~bvc+FKG-oap>1PY#{er7U=U6yW!yhPj$FC(6FAS{+?opS%8u|25Arqgbu*uh z<0ouQt1Ifp*GQh$DJ0_mAzbYOvBN)lU`rx&ZP=@9BK6fi{kUK{BYP62Ud>w;Ia&3T zTudFlrN0<}wz-gIQOc;R-2a&V1W6;J9kz7GI#H_{+vDV~dGC*}>X?5h9`(fFBkwv$ zg+YZZb#B@xz(Xx4bqWE)>oX0e=)qpX;6lk(MHH^M5qu-*H}srV-Kz5vg)A9)kr1xa z8Un4%)WpCgdNQV7g%Df%XmQFcqrVhpDZX?&RDHM~{l)|$CchtjN1=bZiUbeOYzr^r z&4yg^BIz#&w!6Mief>l;B&2zE&KLZChL`b$R4 z0rSopz@F=8lmOhty7Xu32iBeV;!F4dUvq}$TQfV13@*p5j~QZPCRBvh)Xgv7<&2H- zf-(4W`%+nc?LCW473rkafP4&8cj}^F%+J_5ILX68tKtF;+R&)g0c- zM5@FXpJzpJ&(noi7$Egyc`I!T5F;@oiz-7)_Lsj{mp!61G~werpGA8`rHWQ;41LOW zefitTGfO{DO382WZigA7Esb7Mf8yBbPSoG!pp@0x8R|ncO+T^E1{%-v-gJptpe(zs z%|_!q<;+VR=?A&5467^JNvI9B98?j;cB-I-j_*?F#cD72|MTJvX;cf>MiE%QxbF1h z$q{81tSvaNU%&WkZXQrN=*^ZNT{s%naoM9)+@_bVh@wl5?&~zR%O9o?ah>PicrTWq zq58?gw&Y7pfxZPj#)-bVrO@=MY2-n_IcCAa8hS1$8c8d)@fJBk{%<~fAeo9%`_+5I z!5W!TIa{B<7&e)rsprgAleNL=j@?bUKry{Z=!#W(8_^MHqx ze8n*dyGh6cpBXw1d!18nh%`j`_|JgwS8{NOwV7f$Le^gf9>rUlHA+4T(*~zCziZ#v zLhdKLFswQ-M9vNH^a*7Cjeq$$iMc4opCR}#8nbb zjQU-0p;CK??=!v&pL`5lrpkS?S}YC+1Sf4Q;LqB%`$2yXJ`?FMvA+I&C<#j@qP7_s z+JykNM6ovH2?O6t%mz~+@bm&UIjWA3zjO!2aK(=TcxxvadFYc~Y6y*o9w6e5RpEbh4%w{1hsOr>%PM#Lo@#;1JNO1n3D zB#ufNNxn(GT9ERFP1YXgfhS$W5kJHZ#}3m?5_%|?I)T2SH-Y09vml&ktR<1(iNOLP z=v64SQ21MY&6ow^+6iP;bNYvH3{uQRtyGV+5Wu&k-xP;kDXD3;l}Gdg<&7{9{Di#! zixu@&1pjf(vSFGkUu76`O5?4bA#l$v_$IPGh|OF_C~KHExM;lL4+$tZV}&-2$->@N zG&hX=^S}A#g}vtm6lM{{S3${d&~4fI>*xJ#cKJA? zPuTDK#+oZkF94e$zM(*ObM9NJN6G~A00qlo|;DMp?9@RgJKGEoh zRoM?Kz@W6>ujQM`&Fm)_HmOH2g#^#mrv$eiK8T$PN|GXtTglKJzTwsYyUv=oc-m5v>T`y| zzoC-JxT{ik1Hp$IXE`QQmwEixLE?JfO4H7crPcDt%4I2`7Gr}!p5EZVx1g>@g3Dy2 zss8`Z0@TsXS8XlyqJ&h>2m82XPS%a5WZ!E!J-hh|-t#8#g);vo7u8EVp-Kp^{8c<$ zDI!Xj*v{;)`(lb!S@*en#n?9U*@tC$#2%X9Y$1E&P*#rP;byuDrqb==UV_%7cw zak($n=&XAZ_77p%2L4TgWA}BA+WAB$rn4J{;8ZJPG>)eM47eUug$JR0`LLaYnG(Mu zvtW;skX8v1&|{>@Cr3V8egy6faM8^4$T&H`I4~?7?qI?`9B(rx2%J(| z{dF`b(6;53CFQDyVYmZ%PIO??088&8D#a_;rz`jVd1vI#4l&KlD{$IM-hYsfOn*j) zJ!YD?(vas(%gVSC8HF7c7wr+^zUpUj9xWiKmRAWIedLtwih0@&e<@fIV{zH)1?;F` zb;eP#%`LQ$RoIWoDi|!YTiLh55=-K(e(l1Q+k@T^G#dgVkVvlOObk=WysLb1_PSk; z^G341XIU$d>N`}=+D+*6q%WQZWSexfF6ja;92i#RzVUhD>5C|4&vSnu7fLqRZCivig9V-|%bJCxl{-9B6_)Yo`yG?ei zDGfw*Sl)U+!D8Aoh_iQT9&a`t20e17;p~~9tv(=6$vHpu#bSjy_iuDS7Ld)L3}QSR z+{#fbM-(TpC(d`0gSZM_M+ z4|Uhqt%}7BbEqP~OFa!;xaIOKZh!{$YBC@I%0D?tTp*c}D9T?sf}2oLa=+ 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%0A=qA)g}XG|2~lCFE&h8U*K#?nGn4zF0W}(` zgLlX2gJ$rko5sQPxHcx>24;yhrLLf6VEUVyLHnO$J9kK-WRo2FX+%tmn6 zoC>>=tUJ?G+{jC8`u9wY{_V3%^8 zBvqhXa9ZQM)k1(2I=@=%=HU(6E1cmLQw3w8TTrd2{tGVThJZn}8N>^$RlhQ??%eb~ zk#~#%K_db%)xqPZbqaVBukVbi`3E1q2~O4!;s?sE_+8R=Hnl3{KYh@uiNF8p$x!DW z$D|A8o@lre!!;nX5$21(njCWQ3TCvEd&RF&L)~}V)PKt`11gE$JPvc&t}G>1`ty(y zK*+S^hkgGrjmtMPXrOcLRX&LK{zo7%-(#XA#_u@dm0~M1Ch-|A8#kpJD}e16f6T8G z(^^c^4id4?Hs~cy8&WC&ZQ|$&W?o+Ro%C0l~ zG`MPRgVW+YD_tMSyB|3LRt-HVM8ym+{`BN@Z6)|}aD!Ti@iXX9{e!fOx>g{<@t=q| zgKcg1Wq&|J*LBEZPh#-`Blp<;t|HFo;BUIYT_mot1SU5@W2qr(M_HIHM{pmu=20+c zGDHr&qG~0)%ac!kRRyWP({jM{@`!*l!EACE_MyV84zYe#89y1K^)X%aAYGQTm=^i% zOB9>Qi2hiZPlg;zgCuwxAxmTu+BL4gUnlh6oGC+t$itxIhQDrk zH|9Gmll>Vt3Vt0rlLvV(J>Lo<0e53lt%qr&D5+_i5EDZzXJ6NmLZx7fPeqg)Oob7E zQ|J-b#jxNtZdWG$^3iUhd(K-wYIJOi+OYNg}3{10H_7 z3C%UNk$E_85JvZJ4##-vWXOF_=0;%>f){2$!#+EdG@Rf~xzdP?XWB|;;`c=;)x?}r zyzC)M)yoLCRa9lpoU-xWMOo&|&gL)aKivP1*c49}_~`1u*jAmZH2w*ZX+Q5Js80gV zu_Iaf_ral6mv!}|Tm|5i*61t<_|(;zv$}Js<;*D4{+H%(+$n@CyW*%-Gkj?(P5Mm5HolGP-LLob$5x-Q=7GTQ}aLx>QrKKcg4N zFn=e{@#^EY>40>(gKq9-`gA{OV6a9ERP|gi+wt`oKsbRGBn?T7?{t8)>{a0=(92w1 ztX`bWMpeVZ<=;Fp1dvzAq&5WPTY^!DLyqhoFDp)-Z8t2H4t%{n_|0I* z2qV|e%ljJuZ{xQFwte>bEVF5ogB35&p&O@4Lt!m+dB)D!0}OcI=h1!5w-5-2o61P^h_q$z)V ziY9&8vbyr?nU>po93X_`=T}9BC1&L45@Fc4Y%&||y3?b<^$tp))@YFOF-basrF<#nLf3ua2J>bElrsxT_Tz~P{ z=YJ$rG~bs^*on<*{*FY$j}=)4btQ^qdc8jNyuyz#1HR8ZKSw|yc&(kLFeoVc6W4cF zqO4ff&eY^&4Sy^nsVwa3{9zlxa!#Hb3IM>=EX*!X-uM3SFPndOFr*5)iQHx2UpF47R`bvNcFg+Ss;!`_W>hcmvm7M+G?H^{B$|@2 z@(#K;#N!^&;||cHJ}tXGYVEu$Y=dK!d)=T}*QhScf2JaYxB$5^eQqbDHW7r*ZpfgG zk^=6SzUfc%IH-{0A4#Jy?inv(0|T z9`o}hD@{3byFsq~y{*y}a0nDoXeazOMTbF5-LOA^?-6ce(MI@yx0pwvK*eV4;h{(= zZP!&c8GzG3wwR#DIRgH#?vJ%9UCob@0M!w6^@xB5Oy%tRbC9D~Kur%!I2@Vw8BD1R zdAn>m&rW+|+s{Fy@N3{yay7rjJSd)X<^}+s- + Controls the level of log details the add-on provides. + ssl: + name: SSL + description: >- + Enables/Disables SSL (HTTPS) on the web interface. + certfile: + name: Certificate file + description: >- + The certificate file to use for SSL. Note that this file must + exist in the /ssl/ folder. + keyfile: + name: Private key file + description: >- + The private key file to use for SSL. Note that this file must + exist in the /ssl/ folder. +network: + 80/tcp: Web interface (Not required for Ingress) diff --git a/traccar/translations/nl.yaml b/traccar/translations/nl.yaml new file mode 100644 index 0000000..7db387e --- /dev/null +++ b/traccar/translations/nl.yaml @@ -0,0 +1,15 @@ +configuration: + certfile: + description: 'The certificate file to use for SSL. Note that this file must exist in the /ssl/ folder.' + name: 'Certificate file' + keyfile: + description: 'The private key file to use for SSL. Note that this file must exist in the /ssl/ folder.' + name: 'Private key file' + log_level: + description: 'Controls the level of log details the add-on provides.' + name: 'Log niveau' + ssl: + description: 'Enables/Disables SSL (HTTPS) on the web interface.' + name: SSL +network: + 80/tcp: 'Webinterface (niet vereist voor Ingress)' diff --git a/vscode/CHANGELOG.md b/vscode/CHANGELOG.md new file mode 100644 index 0000000..d68d050 --- /dev/null +++ b/vscode/CHANGELOG.md @@ -0,0 +1,10 @@ +## What’s changed + +## ⬆️ Dependency updates + +- ⬆️ Bump actions/stale from 3.0.18 to 3.0.19 @dependabot (#257) +- ⬆️ Upgrades Home Assistant CLI to v4.12.2 @frenck (#260) +- ⬆️ Upgrades code-server to 3.10.1 @frenck (#261) +- ⬆️ Bump frenck/action-addon-information from 1.0.0 to 1.1 @dependabot (#262) +- ⬆️ Upgrades code-server to 3.10.2 @frenck (#263) +- ⬆️ Upgrades keesschollaart.vscode-home-assistant to 1.18.0 @frenck (#264) diff --git a/vscode/DOCS.md b/vscode/DOCS.md new file mode 100644 index 0000000..2fbe7c3 --- /dev/null +++ b/vscode/DOCS.md @@ -0,0 +1,220 @@ +# Home Assistant Community Add-on: Visual Studio Code + +This add-on runs Visual Studio Code, allowing you to edit your Home Assistant +configuration directly from your web browser and can be embedded straight +into the Home Assistant frontend UI. + +Visual Studio Code runs as a remote server using `code-server`, and is a +fully fledged VSCode experience. + +The add-on has the Home Assistant, MDI icons and YAML extensions pre-installed +and pre-configured right out of the box. This means that auto-completion works +instantly, without the need for configuring anything. + +## Installation + +The installation of this add-on is pretty straightforward and not different in +comparison to installing any other Home Assistant add-on. + +1. Search for the "Visual Studio Code" add-on in the Supervisor add-on store + and install it. +1. Start the "Visual Studio Code" add-on. +1. Check the logs of the "Visual Studio Code" add-on to see if everything went + well. +1. Click the "OPEN WEB UI" button to open Visual Studio Code. + +## Configuration + +**Note**: _Remember to restart the add-on when the configuration is changed._ + +Example add-on configuration: + +```yaml +log_level: info +config_path: /share/my_path +packages: + - mariadb-client +init_commands: + - ls -la +``` + +**Note**: _This is just an example, don't copy and paste it! Create your own!_ + +### Option: `log_level` + +The `log_level` option controls the level of log output by the addon and can +be changed to be more or less verbose, which might be useful when you are +dealing with an unknown issue. Possible values are: + +- `trace`: Show every detail, like all called internal functions. +- `debug`: Shows detailed debug information. +- `info`: Normal (usually) interesting events. +- `warning`: Exceptional occurrences that are not errors. +- `error`: Runtime errors that do not require immediate action. +- `fatal`: Something went terribly wrong. Add-on becomes unusable. + +Please note that each level automatically includes log messages from a +more severe level, e.g., `debug` also shows `info` messages. By default, +the `log_level` is set to `info`, which is the recommended setting unless +you are troubleshooting. + +### Option: `config_path` + +This option allows you to override the default path the add-on will open +when accessing the web interface. For example, use a different +configuration directory like `/share/myconfig` instead of `/config`. If set +to `/root` then all the common folders of HA such as `/config`, `/ssl`, +`/share`, etc. will appear as subfolders for each access. + +When not configured, the addon will automatically use the default: `/config` + +### Option: `packages` + +Allows you to specify additional [Ubuntu packages][ubuntu-packages] to be +installed in your shell environment (e.g., Python, PHP, Go). + +**Note**: _Adding many packages will result in a longer start-up +time for the add-on._ + +### Option: `init_commands` + +Customize your VSCode environment even more with the `init_commands` option. +Add one or more shell commands to the list, and they will be executed every +single time this add-on starts. + +## Resetting your VSCode settings to the add-on defaults + +The add-on updates your settings to be optimized for use with Home Assistant. +As soon as you change a setting, the add-on will stop doing that since it +might be destructive. However, in case you changed some things, but want to +return to the defaults as delivered by this add-on, do the following: + +1. Open the Visual Studio Code editor. +1. Click on `Terminal` in the top menu bar and clik on `New Terminal`. +1. Execute the following command in the terminal window: `reset-settings`. +1. Done! + +## Using with ESPHome + +The add-on has support for ESPHome (and its vscode extension), built-in! +It has been installed and pre-configured for you, however, it might need +an adjustment to your ESPHome add-on in order to function. + +1. Go to the ESPHome add-on configuration in your Supervisor panel. +1. Add the `leave_front_door_open` option, since the vscode extension of + ESPHome does not support authentication yet. The ESPHome add-on + configuration would look like this: + + ```yaml + leave_front_door_open: true + ``` + +1. Save the add-on configuration. +1. Enable direct access to the ESPHome add-on, by enabling the network port. + This option can be found on the ESPHome add-on settings page, in the + "Network" section. In the "Host" field (that is now showing disabled), + enter `6052` and hit save. +1. Restart the ESPHome add-on. + +And you're set! + +No changes to the vscode add-on are needed, since it has been pre-configured. + +**Please note!** This opens up ESPHome for access within your network +without authentication! Currently, this is how ESPHome advises how to +set up your system, but it surely has security risks. We hope ESPHome +will come up with a better solution for this soon. + +## Known issues and limitations + +- Can this add-on run on a Raspberry Pi? Yes, but only if you run a 64 bits + operating system. Also, see point below. +- This add-on currently only supports AMD64 and aarch64/ARM64 machines. + Although we support ARM devices, please be aware, that this add-on is quite + heavy to run, and requires quite a bit of RAM. We do not recommended to run + it on devices with less than 4Gb of memory. +- If you get a blank screen (and it worked before), it could be that you changed + your workspace. Reinstalling the add-on will not help since it keeps the data + in your browser. To remove it (in Chrome) open up developer tools (F12), + then go to the application tab and click "clear storage". + Now refresh the page and you're back in action. +- "Visual Studio Code is unable to watch for file changes in this large + workspace" (error ENOSPC) + + This issue is caused by your system not having enough file handles, + which causes VSCode to be unable to watch all your files. For HassOS, + currently the only option is to click on the little cog when the + notification appears and tell it to not show again. In case you have + a generic Linux setup (e.g., Ubuntu), follow this guide by Microsoft: + + + +## Changelog & Releases + +This repository keeps a change log using [GitHub's releases][releases] +functionality. + +Releases are based on [Semantic Versioning][semver], and use the format +of `MAJOR.MINOR.PATCH`. In a nutshell, the version will be incremented +based on the following: + +- `MAJOR`: Incompatible or major changes. +- `MINOR`: Backwards-compatible new features and enhancements. +- `PATCH`: Backwards-compatible bugfixes and package updates. + +## Support + +Got questions? + +You have several options to get them answered: + +- The [Home Assistant Community Add-ons Discord chat server][discord] for add-on + support and feature requests. +- The [Home Assistant Discord chat server][discord-ha] for general Home + Assistant discussions and questions. +- The Home Assistant [Community Forum][forum]. +- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit] + +You could also [open an issue here][issue] GitHub. + +## Authors & contributors + +The original setup of this repository is by [Franck Nijhof][frenck]. + +For a full list of all authors and contributors, +check [the contributor's page][contributors]. + +## License + +MIT License + +Copyright (c) 2019-2021 Franck Nijhof + +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. + +[contributors]: https://github.com/hassio-addons/addon-vscode/graphs/contributors +[discord-ha]: https://discord.gg/c5DvZ4e +[discord]: https://discord.me/hassioaddons +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-visual-studio-code/107863?u=frenck +[frenck]: https://github.com/frenck +[issue]: https://github.com/hassio-addons/addon-vscode/issues +[reddit]: https://reddit.com/r/homeassistant +[releases]: https://github.com/hassio-addons/addon-vscode/releases +[semver]: http://semver.org/spec/v2.0.0 +[ubuntu-packages]: https://packages.ubuntu.com diff --git a/vscode/README.md b/vscode/README.md new file mode 100644 index 0000000..235553c --- /dev/null +++ b/vscode/README.md @@ -0,0 +1,40 @@ +# Home Assistant Community Add-on: Visual Studio Code + +[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield] + +[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum] + +[![Sponsor Frenck via GitHub Sponsors][github-sponsors-shield]][github-sponsors] + +[![Support Frenck on Patreon][patreon-shield]][patreon] + +Visual Studio Code, accessible through the browser. + +## About + +This add-on runs Visual Studio Code, allowing you to edit your Home Assistant +configuration straight from the web browser and can be embedded straight +into the Home Assistant frontend UI. + +Visual Studio Code runs as a remote server using `code-server`, and is a +fully fledged VSCode experience. + +The add-on has the Home Assistant, MDI icons and YAML extensions pre-installed +and pre-configured right out of the box. This means that auto-completion works +instantly, without the need for configuring anything. + +![Visual Studio Code in the Home Assistant Frontend][screenshot] + +[discord-shield]: https://img.shields.io/discord/478094546522079232.svg +[discord]: https://discord.me/hassioaddons +[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg +[forum]: https://community.home-assistant.io/t/home-assistant-community-add-on-visual-studio-code/107863?u=frenck +[github-sponsors-shield]: https://frenck.dev/wp-content/uploads/2019/12/github_sponsor.png +[github-sponsors]: https://github.com/sponsors/frenck +[maintenance-shield]: https://img.shields.io/maintenance/yes/2021.svg +[patreon-shield]: https://frenck.dev/wp-content/uploads/2019/12/patreon.png +[patreon]: https://www.patreon.com/frenck +[project-stage-shield]: https://img.shields.io/badge/project%20stage-production%20ready-brightgreen.svg +[release-shield]: https://img.shields.io/badge/version-v3.4.1-blue.svg +[release]: https://github.com/hassio-addons/addon-vscode/tree/v3.4.1 +[screenshot]: https://github.com/hassio-addons/addon-vscode/raw/main/images/screenshot.png \ No newline at end of file diff --git a/vscode/config.json b/vscode/config.json new file mode 100644 index 0000000..218d0a9 --- /dev/null +++ b/vscode/config.json @@ -0,0 +1,47 @@ +{ + "name": "Visual Studio Code", + "version": "3.4.1", + "slug": "vscode", + "description": "Fully featured VSCode experience, to edit your HA config in the browser, including auto-completion!", + "url": "https://github.com/hassio-addons/addon-vscode", + "ingress": true, + "ingress_port": 1337, + "panel_icon": "mdi:microsoft-visual-studio-code", + "startup": "services", + "init": false, + "arch": [ + "aarch64", + "amd64" + ], + "uart": true, + "hassio_api": true, + "hassio_role": "manager", + "homeassistant_api": true, + "map": [ + "config:rw", + "ssl:rw", + "addons:rw", + "media:rw", + "share:rw", + "backup:rw" + ], + "services": [ + "mysql:want", + "mqtt:want" + ], + "options": { + "packages": [], + "init_commands": [] + }, + "schema": { + "log_level": "list(trace|debug|info|notice|warning|error|fatal)?", + "config_path": "str?", + "packages": [ + "str" + ], + "init_commands": [ + "str" + ] + }, + "image": "ghcr.io/hassio-addons/vscode/{arch}" +} \ No newline at end of file diff --git a/vscode/icon.png b/vscode/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..b3225e44d933efdc7c90fe49c050c651dfd88fc1 GIT binary patch literal 4604 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