From 7b882a607379e9936ee217817f40dbd1c0ab7859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20P=C3=B6schl?= Date: Fri, 20 Sep 2024 21:21:58 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=20Migrate=20addon=20to=20own=20rep?= =?UTF-8?q?ository?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dive-ci.yaml | 13 ++ .github/dependabot.yml | 9 + .github/workflows/addon-ci.yaml | 17 ++ .github/workflows/addon-deploy.yaml | 23 ++ .github/workflows/addon-main-push.yaml | 14 ++ .github/workflows/labels.yaml | 13 ++ .github/workflows/pr-labels.yaml | 17 ++ .github/workflows/pr-title.yaml | 15 ++ .gitignore | 1 + .hadolint.yaml | 2 + .markdownlint.yaml | 10 + .shellcheckrc | 1 + .yamllint | 36 ++++ LICENCE | 201 ++++++++++++++++++ README.md | 44 ++++ container-stats/.README.j2 | 48 +++++ container-stats/DOCS.md | 21 ++ container-stats/Dockerfile | 45 ++++ container-stats/build.json | 9 + container-stats/config.json | 36 ++++ container-stats/icon.png | Bin 0 -> 31502 bytes container-stats/logo.png | Bin 0 -> 59607 bytes container-stats/root/etc/services.d/stats/run | 18 ++ .../root/etc/services.d/webserver/run | 11 + 24 files changed, 604 insertions(+) create mode 100644 .dive-ci.yaml create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/addon-ci.yaml create mode 100644 .github/workflows/addon-deploy.yaml create mode 100644 .github/workflows/addon-main-push.yaml create mode 100644 .github/workflows/labels.yaml create mode 100644 .github/workflows/pr-labels.yaml create mode 100644 .github/workflows/pr-title.yaml create mode 100644 .gitignore create mode 100644 .hadolint.yaml create mode 100644 .markdownlint.yaml create mode 100644 .shellcheckrc create mode 100644 .yamllint create mode 100644 LICENCE create mode 100644 README.md create mode 100644 container-stats/.README.j2 create mode 100644 container-stats/DOCS.md create mode 100644 container-stats/Dockerfile create mode 100644 container-stats/build.json create mode 100644 container-stats/config.json create mode 100644 container-stats/icon.png create mode 100644 container-stats/logo.png create mode 100644 container-stats/root/etc/services.d/stats/run create mode 100644 container-stats/root/etc/services.d/webserver/run diff --git a/.dive-ci.yaml b/.dive-ci.yaml new file mode 100644 index 0000000..f0a1e80 --- /dev/null +++ b/.dive-ci.yaml @@ -0,0 +1,13 @@ +rules: + # If the efficiency is measured below X%, mark as failed. + # Expressed as a ratio between 0-1. + lowestEfficiency: 0.95 + + # If the amount of wasted space is at least X or larger than X, mark as failed. + # Expressed in B, KB, MB, and GB. + #highestWastedBytes: 100MB + + # If the amount of wasted space makes up for X% or more of the image, mark as failed. + # Note: the base image layer is NOT included in the total image size. + # Expressed as a ratio between 0-1; fails if the threshold is met or crossed. + highestUserWastedPercent: 0.20 diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..66744e5 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,9 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "monthly" + groups: + GH actions: + dependency-type: production diff --git a/.github/workflows/addon-ci.yaml b/.github/workflows/addon-ci.yaml new file mode 100644 index 0000000..4066806 --- /dev/null +++ b/.github/workflows/addon-ci.yaml @@ -0,0 +1,17 @@ +name: Addon CI + +# yamllint disable-line rule:truthy +on: + push: + branches: + - main + pull_request: + types: + - opened + - reopened + - synchronize + workflow_dispatch: + +jobs: + workflows: + uses: Poeschl-HomeAssistant-Addons/workflows/.github/workflows/addon-ci.yaml@main diff --git a/.github/workflows/addon-deploy.yaml b/.github/workflows/addon-deploy.yaml new file mode 100644 index 0000000..2462181 --- /dev/null +++ b/.github/workflows/addon-deploy.yaml @@ -0,0 +1,23 @@ +name: Deploy + +# yamllint disable-line rule:truthy +on: + release: + types: + - published + workflow_run: + workflows: ["Addon CI"] + branches: [main] + types: + - completed + +jobs: + workflows: + uses: Poeschl-HomeAssistant-Addons/workflows/.github/workflows/addon-deploy.yaml@main + permissions: + contents: read + packages: write + secrets: + dispatch_token: ${{ secrets.DISPATCH_TOKEN }} + with: + version: "${{ github.event.release.tag_name }}" diff --git a/.github/workflows/addon-main-push.yaml b/.github/workflows/addon-main-push.yaml new file mode 100644 index 0000000..9a0b75f --- /dev/null +++ b/.github/workflows/addon-main-push.yaml @@ -0,0 +1,14 @@ +name: Draft release from new main push + +# yamllint disable-line rule:truthy +on: + push: + branches: + - main + +jobs: + workflows: + uses: Poeschl-HomeAssistant-Addons/workflows/.github/workflows/release-drafter.yaml@main + permissions: + contents: write + pull-requests: read diff --git a/.github/workflows/labels.yaml b/.github/workflows/labels.yaml new file mode 100644 index 0000000..436ee9c --- /dev/null +++ b/.github/workflows/labels.yaml @@ -0,0 +1,13 @@ +name: Sync labels + +# yamllint disable-line rule:truthy +on: + schedule: + - cron: "0 0 * * SUN" + workflow_dispatch: + +jobs: + workflows: + uses: Poeschl-HomeAssistant-Addons/workflows/.github/workflows/labels.yaml@main + permissions: + contents: write diff --git a/.github/workflows/pr-labels.yaml b/.github/workflows/pr-labels.yaml new file mode 100644 index 0000000..d0de971 --- /dev/null +++ b/.github/workflows/pr-labels.yaml @@ -0,0 +1,17 @@ +name: PR label + +# yamllint disable-line rule:truthy +on: + pull_request_target: + types: + - opened + - labeled + - unlabeled + - synchronize + +jobs: + workflows: + uses: Poeschl-HomeAssistant-Addons/workflows/.github/workflows/pr-labels.yaml@main + permissions: + contents: read + pull-requests: write diff --git a/.github/workflows/pr-title.yaml b/.github/workflows/pr-title.yaml new file mode 100644 index 0000000..f321383 --- /dev/null +++ b/.github/workflows/pr-title.yaml @@ -0,0 +1,15 @@ +name: PR title + +# yamllint disable-line rule:truthy +on: + pull_request: + types: + - opened + - edited + +jobs: + workflows: + uses: Poeschl-HomeAssistant-Addons/workflows/.github/workflows/pr-title.yaml@main + permissions: + contents: read + pull-requests: write diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5a4addb --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +**/data/options.json \ No newline at end of file diff --git a/.hadolint.yaml b/.hadolint.yaml new file mode 100644 index 0000000..db03439 --- /dev/null +++ b/.hadolint.yaml @@ -0,0 +1,2 @@ +ignored: + - DL3006 diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..550a934 --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,10 @@ +default: true + +MD001: false # Heading levels should only increment by one level at a time +MD002: false # First header should be a h1 header +MD007: # Unordered list indentation + indent: 2 +MD012: false # Multiple consecutive blank lines +MD013: false # Line length +MD025: false # Multiple top level headings in the same document +MD041: false # First line in file should be a top level header diff --git a/.shellcheckrc b/.shellcheckrc new file mode 100644 index 0000000..6eccb2a --- /dev/null +++ b/.shellcheckrc @@ -0,0 +1 @@ +disable=SC2002 diff --git a/.yamllint b/.yamllint new file mode 100644 index 0000000..a8fbcf1 --- /dev/null +++ b/.yamllint @@ -0,0 +1,36 @@ +rules: + document-end: + level: error + present: false + document-start: + level: error + present: false + 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: 180 + 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/LICENCE b/LICENCE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENCE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e386464 --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# Docker Container Stats (Deprecated) + +It contains [Docker Container Stats](https://github.com/virtualzone/docker-container-stats) to monitor all running containers / addons. + +![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] + +[![Add repository on my Home Assistant][repository-badge]][repository-url] +[![Install on my Home Assistant][install-badge]][install-url] +[![Donate][donation-badge]][donation-url] + +## 🧪 Experimental Addon + +During long-term usage I noticed that the addon fills up all available memory when getting the data for a week. +Especially on a Raspberry Pi with Home Assistant this means death in a few minutes. +__Use this addon on your own risk!__ + +## Security + +Since the addon accesses the docker api, the security rating is this low. +Unfortunately there is now way to access the docker api without disabling the *Protection Mode* of the addon. +Technically with disabling it, the addon can access and control other addons and the core on a HA supervised system. +But without it we can not retrieve the statistics of the running container and this addon don't work at all. + +[stage-badge]: https://img.shields.io/badge/Addon%20stage-deprecated-lightgrey.svg +[aarch64-badge]: https://img.shields.io/badge/aarch64-yes-green.svg +[amd64-badge]: https://img.shields.io/badge/amd64-yes-green.svg +[armhf-badge]: https://img.shields.io/badge/armhf-no-red.svg +[armv7-badge]: https://img.shields.io/badge/armv7-yes-green.svg +[i386-badge]: https://img.shields.io/badge/i386-yes-green.svg + +[repository-badge]: https://img.shields.io/badge/Add-repository-41BDF5?logo=home-assistant&style=for-the-badge +[repository-url]: https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A//github.com/Poeschl-HomeAssistant-Addons/repository + +[install-badge]: https://img.shields.io/badge/Install%20on-Home%20Assistant-41BDF5?logo=home-assistant&style=for-the-badge +[install-url]: https://my.home-assistant.io/redirect/supervisor_addon?addon=243ffc37_container-stats + +[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/container-stats/.README.j2 b/container-stats/.README.j2 new file mode 100644 index 0000000..50516d8 --- /dev/null +++ b/container-stats/.README.j2 @@ -0,0 +1,48 @@ +# Docker Container Stats + +It contains [Docker Container Stats](https://github.com/virtualzone/docker-container-stats) to monitor all running containers / addons. + +[![Release][release-badge]][release] +![Addon Stage][stage-badge] + +[![Donate][donation-badge]][donation-url] + +## 🧪 Experimental Addon + +During long-term usage I noticed that the addon fills up all available memory when getting the data for a week. +Especially on a Raspberry Pi with Home Assistant this means death in a few minutes. +__Use this addon on your own risk!__ + +## Security + +Since the addon accesses the docker api, the security rating is this low. +Unfortunately there is now way to access the docker api without disabling the *Protection Mode* of the addon. +Technically with disabling it, the addon can access and control other addons and the core on a HA supervised system. +But without it we can not retrieve the statistics of the running container and this addon don't work at all. + +{% if channel == "edge" %} +## ⚠ WARNING! THIS IS AN EDGE VERSION! + +This Home Assistant Add-on is and bloody edge build. +Edge builds add-ons are based upon the latest development version. + +- They may not work at all. +- They might stop working at any time. +- They could have a negative impact on your system. + +If you are more interested in stable releases of our add-ons: + +For the stable version of the add-ons: [Stable-Repository] +{% endif %} + +[stage-badge]: https://img.shields.io/badge/Addon%20stage-deprecated-lightgrey.svg + +[release-badge]: https://img.shields.io/badge/version-{{ version }}-blue.svg +[release]: {{ repo }}/tree/{{ version }} + +[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 + +{% if channel == "edge" %} +[Stable-Repository]: https://github.com/Poeschl-HomeAssistant-Addons/repository +{% endif %} diff --git a/container-stats/DOCS.md b/container-stats/DOCS.md new file mode 100644 index 0000000..06eea11 --- /dev/null +++ b/container-stats/DOCS.md @@ -0,0 +1,21 @@ +## Precondition + +Unfortunately there is now way to access the docker api without disabling the *Protection Mode* of the addon. +Technically with disabling it, the addon can access and control other addons and the core on a HA supervised system. +But without it we can not retrieve the statistics of the running container and this addon don't work at all. + +To make the addon work you have to disable the *Protection Mode* on the addon details page. +**Only do this if you know what this means to your system** + +If you want to review the source of the contained application [here is your link](https://github.com/virtualzone/docker-container-stats). +At the time of writing all docker related code is in `stats.js`. + +## Config + +### `persistent` + +Enable persistence of the collected data. If disabled the data vanish on addon stop. + +### `update_interval` (Optional) + +Set a custom update interval for the data in seconds. Defaults to `60` seconds. diff --git a/container-stats/Dockerfile b/container-stats/Dockerfile new file mode 100644 index 0000000..937a14d --- /dev/null +++ b/container-stats/Dockerfile @@ -0,0 +1,45 @@ +ARG BUILD_FROM + +FROM $BUILD_FROM AS REPOSITORY + +RUN apk --update add --no-cache \ + git=2.30.2-r0 + +ENV COMMIT_SHA '586ebebf16195bfab7ffd2b3dbc4344077e72a05' +# hadolint ignore=DL3003 +RUN git clone https://github.com/virtualzone/docker-container-stats.git -b master /container-stats && \ + cd /container-stats && git checkout $COMMIT_SHA + + +FROM $BUILD_FROM AS BUILD + +RUN apk --update add --no-cache \ + npm=14.19.0-r0 \ + python2=2.7.18-r1 \ + make=4.3-r0 \ + g++=10.2.1_pre1-r3 + +WORKDIR /container-stats + +RUN npm update && \ + npm install \ + express@4.17.1 \ + sqlite3@5.0.0 \ + body-parser@1.19.0 \ + moment@2.29.1 + +FROM $BUILD_FROM AS RUNNING + +RUN apk --update add --no-cache \ + nodejs=14.19.0-r0 \ + docker=20.10.3-r1 \ + sqlite=3.34.1-r0 + +COPY --from=BUILD /container-stats /container-stats +COPY --from=REPOSITORY /container-stats/stats.js /container-stats +COPY --from=REPOSITORY /container-stats/httpd.js /container-stats +COPY --from=REPOSITORY /container-stats/html /container-stats/html + +ENTRYPOINT [ "/init" ] +CMD [] +COPY root / diff --git a/container-stats/build.json b/container-stats/build.json new file mode 100644 index 0000000..4ceab93 --- /dev/null +++ b/container-stats/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/container-stats/config.json b/container-stats/config.json new file mode 100644 index 0000000..c1817c7 --- /dev/null +++ b/container-stats/config.json @@ -0,0 +1,36 @@ + +{ + "name": "Docker Container Stats", + "version": "1.5.0", + "slug": "container-stats", + "description": "(Deprecated) A web interface for viewing historical and current statistics per docker container", + "url": "https://github.com/Poeschl-HomeAssistant-Addons/container-stats", + "arch": [ + "armhf", + "armv7", + "aarch64", + "amd64", + "i386" + ], + "ingress": true, + "ingress_port": 8080, + "panel_title": "Docker Container Stats", + "panel_icon": "mdi:chart-line", + "stage": "experimental", + "docker_api": true, + "image": "ghcr.io/poeschl-homeAssistant-addons/container-stats-{arch}", + "ports": { + "8080/tcp": null + }, + "ports_description": { + "8080/tcp": "Web Interface (Not required for Supervisor Ingress)" + }, + "map": [], + "schema": { + "update_interval": "int?", + "persistent": "bool" + }, + "options": { + "persistent": "true" + } +} diff --git a/container-stats/icon.png b/container-stats/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f5d55d29411843012f543df8c7edd5a2dfacd77c GIT binary patch literal 31502 zcmeFZby(Ex)-OIocXxM44IR=w(jC$;bV+xIfV4D7DlMgif{dV~^iWDErGRuwoi9Gm z-uv0V-+te7_H~{2{I!kC`QG2PKC9Qg?)w@{(AHGJ#iGIjfk3!WRYhG82nqOz1j0ZA z{y7dn`~rbkQ-bu3eRQq;89co_?44X;3_gLLFa}tFlRXF&@cCn*Q-+ynM*XcVX&1_; zUau93PeJG&7uU3k8BClt6+zSXJc;V}1P;-77p`&ey1h1Uug`pMKguwl?s_?OrIS8uj0 zmlLkH<-b;roj{B0y7%bG2e%K7f(9(fsWy*tB!Vs8BjKAlZ~eP?POmR5nqF3Q+EXSL-mICUuq-sRXSKaw4h!Woy;ZOx zCgk=gxGyT!70PSPdX@h0$4BvlcRjOOn5eU-v#4`S(r+6n9x$L=D%>kYTefj!Y)mZz zX&BP!r6{Awb3SSr$knTvcs*AxT~O@wwM#VHxZDD*07DTfENmk<$zm){eptD#iKp>^ zJ4e^q>G@lMp}Oh~Q|J16tTlTzp0-J6m-@B|do8K6Nf(c_2u8+eHEEt?*An;RZ7bfy+Z8bsh-yT z>nDPI9ez_IZ3{tPe)=z5NI6^TTu(KGGdq9faz0Rcu;;Q|-dFqbwMPy{RAyN&VN)(L zp+_PJla^F)Sz%NsUGLKs!HcW`rX-tHKkW|~*3yjG)bILtQwOfg+dC$2br!xYD~)pc z+)}4|$Lx+hy3|0l2Do=U4z1A+-XfmvKhrAaJ>}FbxcxDETaNvx`##nF1G(MLd=prY zzHAA<)%p4{TN9P=IYVE^^Qe8$dwXonFM^hSJ-eUJD&!&ZZ)?9id%d`5&wF-A>FzGG zx6pDTaDC7#L2s>(`2$&-fFk4hJZrjZ+pDON55hsrT)JIhz9pS8U#W_VjaA$+L)>k5 z?Kz6x+j!;OZwq$ysCU{ISY}0hc$XuDzF@R<+GbklPSs%7V>wpT6=NnZ9!s;ox2HcT zbGdahNIg6+!uT_=qx_SFDw94oM_wPD^6<2(YHMLKPTmLS3MSEs@?EzgA?GEYnb3TT z7t$A{QiBJ*qb0{wv7sAg(kkex+I_XfG#idj!#QV*6GQdOmSEsYKaQ$%ep-^P(>dD@%2EN3Sr9 zhIB}v_j6NB=9#%JR%s^lhpHwpu88GO6BbtTgHJX!>wUs_xf$ouxuHuBY?zacx6NJ5 zW_oSN3j$(u;<)EL34$tq>da&8($ds~47mozd7*dO4{zy|H5%@29%rj|d+mm8+t?;Q z8NH8$C;kQH;REWX6ccYGlo748{q{@~xi{N$pDUI?WgfYC22XH>wD#}EnSw`tS}M9* zVMnv3@jqSg5V*hpxIE%shvWbvs83*W+87T;a@Fty$`%=bGUIURsGlvT32W{VetdCg zLSn`v=$<&NxAL)SZK4hQ)gND8;tYet2R%}aW*bKk)OH53#&37sb8!6hGRf|I zIh-eZYel6k(dB-WsI0wJtUQ~WVJw?rcdXsfTkcS?_xpAqWAfOxQc;mH(fh`ychwlw zM}8Jz?S1V6;j@NHxvD_khGi&fKl#{vdM^~t%()Utz=KIu^g(#0qtun7TsEU3j7g%& zFN~n|4elH#Pyg6@!TR&=k%Id!1C2~STDE=!rwpGEiwrX@vn*=hw5{YRifWU=Xaz6J7^H&pRWZ#U zr8xszH`5h6sj{Uh)WFWsAZJVIbQyC&udzj%O5$TV;7p&E1hYBZQT6^{g7>B8db*i za@OrtS!ma5M&+?LCCgn_eouXE(J}b5Y|L8UB`;Q=F7GkawC>TW7f@vJyB1(~QmbOO zrzAvB<=l=&^|rDt9ltVRet)r^g0ixgvNcDTH@Or`KwG(Qy_Vtx8*CjQYquS7kuzhI z_TtHOfd?;OlC!h(U9z8hpz}r96r*d-sfvkIXKTbI{#+V;GFA1AvBIh8Jv-x$;aH?v z-PxOFO!E)dS@H%Q?n?f0uM-ezv63u%mR&piDUn@CU6hJ(I~j!!*Z$>oj!y8PX zFN|7>6U}cMZQPo^ODujnQmW`)ikM2#k)@3-5WY1 zOjhCEzKiy1uD2PiBV)Q8uS8@wL;DZ?gMYHBN1ju5<)9^C<;Tl@3+jI-XI?cSm^mxq zHti?7)&eCYA`KD|$-?g7YVop=G*Gg$6BvVviMkuxF>3`Tp zvi)=~Ev@w%3h`#q{3jJp4qAlv5MFZ}4X0XkQfXJK@dPj3bKfJgg%b>9bDE=sn3|t` zmJZmgy5B4kA!YT~Q)y-67egAM9$@ua3=ajA~;#InU_?)iEdcW4~?63vbKW?H_s7f2qI5O4IVLUi0R9&=+%| zTb1-oG~rZ*3A2eD%dM%w`>fV4vsr4{ekn4@H|vYgBRhlJ(vvGctZr`PFpc_7kj5_>p_~#r2Tv zo?>S-LaO%1+c_#sxBZM%G3;c_H{4qA$(k#4-qfvC(PI=QDoYH+UI-2w1Yqdv=1=jnm>3k|zk{OB&{1=+lUZ+M~-gUv0)f zOJoW!1X_B&`|BQ?Xq=eO#6*rdueR5>ubz$#o>tJOXgrJ3_cFyYm2|(tK%uc6rR5f> zYY#8bXP(BTD)PsCqlLYe7|PYGC-`5PB|9u) z>lrj%hvW8K`RZPLn)}4-WA(v8ZO>1vyDHVzjMt!UlKGHs3AH#xI#cUr^4<+9Mah9@ z>)SoHhYrJEdeoKVBfpHkk?=T3wkf%HxLkMA4&Kv0q9E})4149B&5bol^!RjBN8vUC z^GiY+PnFJ>xEUuF3)%NeD+6UGe%V&Kk&nK3k0B?Rmi}B_rsi1@yTy2K7z7py^%{B7 zCze&USpI_UbxKH`-6XfR1R+MEI_kud#54(V$s41q_2kk3uqx^tOC}*9R3|4#Yk5Z5 z?N>upJab+Iulp8WD*nEbuIQ$>^s|ynrEGC-(c!Z>?QFenEID z+LT!*CKW-l#Y$Vci_gp*o=XtQS%Ps$4d$f3!q7EgnVt;}L$cx0g<~mj=m!pZ#ZCQ! zda;R5AciJ&hSGdGtB10R9*}}->`pBYsdg4O$p>5O=;SJk_3_`$#%L}<nSL!JP_S?S%QpYK`ypKj}VBgyzqXW3ZKadR+@O+k>Xm=G=1l#JOI zjOH5itZtZumAWr;?sNJ^0F#ef>4@HEac zqXIKlQ{Ey^;~bL~*{wN99ji9rJ@2ZIuK_t0qAvS2)jD5O?=}Z5i{0Ap2wLJ#Gcl4I z$4e}3x5i#q%9%LP(o>`5bImE9pB=+VmXFA;)M;ee*#;B8uIxK}!JbRqd>CZXRSkd~h{fVTz17r&+`QxbDRzA>aGD(F@Z z+EP$epye=^%`NCzkG5@A>b(EaAk{Z(gn1fr|FHnhtM;s)lDV8ASZD=BDD0X!g?XZR zJ2Y(q!9&J`WSGf(MMt!XifnC&dlC{3AHw7#Nr-}VAx0W_?}{;}W?vebUTXhPb`Oba zAuijHah|sQ`L{20B?Wde5}89d+OtfvhLp~gn+l7a*=*?pcDCjZugiXFm8$jJ${l z&EqJ2{>+KqZ-67`X)FF@!u>si@@ibmUFDaLgUaLW;@A_LRmYck)sGA+`^IP}tVX%a4xwF&s{TxkH^FJBUn(3e z#GgjZvVyEVb2c59^~Ee4*s{-o(Iu747-pEm`5!S>#Xr0s+~UxnhaA!)NZYeM_p69%Iw>mn(W6oH3VIBB>g1)RsSGHe(ZHeDu@_NKlz`|ctMdhx>GDS>`P z^C3^fng)mUEfM?e)%5jMk1}z&r?PDUv@;e&0%o5Ua;5E8mrX+-dBAjl<^R{O6K~er1MHv^~hBHM9m@R8oH zAp)1w%tsDaY==*4{NpiO_6a4gIZI0fAAiBc#P0$LQgnpj1zP-aaat+JUocg2eyWTq zVz{xX-|_lORB0okRjzae8LK^3Q{ke{zL{~a_m}TVMhcjJ=j17=d{)&rbBw1tc55DZ zwA3YU9AK)B2$d($@3nVGtwgXtH;~$=Eqk+Btaon_Hsor z4fpgMCNdDH=+MCqsVgSm1{3?YAY2TB^|&kn42)idgK3kVX-4d0M*i%^_P0-3rOoYW zHpF<9YQ9=1S*C{CpcKdRW(a_3R~Q-?2BN33A70gH%in0} z{EBaAu|^a!z%tV%)aYfY#Hh+yu#`hd1lm<*s*lhWNeu~iU$GA97oha5YdkC)3|ylL zm+Ra-Ey--YWJj-wjT%P#IA~|3Ux*698(d6NGXL48slyy0%4tQh&duNZtk>-gx%^S^ zFW=kIgmbX6WQ?MjivnF|aGrZR12FN3+2l$mE?B}D{V&Z1@V2N91kZYNAhjN~`G zn~vYOR)`Elt?CoIv}?tp`jT$-Zy5%zh@rp|hFq+3Hg3$e-(Lh=1@V5v)-UckJ3ajguZWv5{Krt0JdoSXAN?ijnzV|4OUZ zn>ZTa;bWW&7{&bnt>bVakH{-R{o%Xpv6$*i{}9IoD~*730hOihmy-Yj?r7o+Lcr_i zlW*UhKh8%Xbj(n~+_jl^uSw2A1X;nX(kjpK1F{D@bE6wbqE##fc_m7g8D*dB|7+~dM%Q9O=q z5gbAL-7o4b7m+=;H$(cw$+N7Lx=IS1^EZ^fQ+;g6 z@=t8*^GgYnXBoWOD~B}LuB;yogd-2@kSZNkt#m^ea>c$slw!xBpB9FodMd27jl76t zIc>CmP1e5r(XhQ4LG;i$EC-+V0LECTdwdUJ8*Ywv)k^*-mDY$u)Dk^(N{05g%xW+He@3i}bBzGK%fik_Hor~u^?56I*|B3eKTXjjbAIrvk=Nz!ELBPFJD)%Dwr{wV<>dRw zQ9Rb&((X6^yp%pp)y6g*qxs2yT1(eBn42+Oo%rE+Z$fXZp@y@Qlh*xZ3}W}FEa*{B z76WfK{=fiNT98EL14pK(ICK~K&F3d+pjKK|iT2siYbR=!(|kCXqXeS^#F-_0o!A0x z9w*+$?(MtopPWEodmC`jf5*1%_vQTaOAZ__<-wPcN=GQYDX>PxcBw$VUU~Wmfv2#x8&YPPjF7Ovy;k+M7ZI zpquOnboxr~?AFCMJLatMuG>D64yA3gLZSsi!e`~&2GPmSD;plMyO*WC`Gxj|xV7aQ z0vv$LaiE0i^f(lxJh+->C%aB3wB3ToS=x$CSuHK!y)ZF-a6+{CW=!=n?}3xJc%J)C zXcnqUvx^8uOh<_pTVywFQL#$VrSn>EG+36$qTTr!PV#Y_bdE&wwMK^(wVw6cw}tN8 zxwkPj@Y|5>c6*;749;ydTuGOhkXLRm-#U969XP z5HwjbvpwM_9eaMMq$(R5G0Y|{=)_WM|MU^E{ISLF<7C--Rj zv279M6<3O#v*2bLD#i!BevEghDrg6Sm*U|u;5GM{QNkzE@IJ~AhKq3}F2@i_oFhmG ztaQs7K~wQGokOkypr2?z)sLM&Vooa&fu@7`?5?ZmH)N<1tM|b#A|FQ~YZI1gPb`}X9#-}5rw%5Xr%Jn*gxdOA6=KbkXV+%KI|UnMIn)uuj@^6~izXYehF3Ua`!riSA) zuIsA@mSO!q`}oTkPSYttDxqdCR+Fipk#RdWGnKozS3bJ+H5e1oo3mQq-J{T-uVI@q z=}cgipUU*@MsAV2zF(HaTSmm<)e(@$@&zHDdG3eR#yMG!)Gx0hK8PvBVwgL|$@t(E zOE^tFYtzF`-uEbY#DnO9sZYj()HCB6EJAStFt=5Ozuw>?He*Ax?R((5!Y2Fv5*oA? z@%>wT9s(Mq>ZkgTDpeCP{H3|4U-?!%v*H%230;3^oBH|SF@G9bKcf?Yx3ua(U9^cT z6|efG?aXrz%iZJ#1aa@<;C8t{!p7YnxfjlPsy3ZZ4IgcHG6qPU6Ipi-;?Y@7QdxE? z|56Y#Kwl0JtqdbXLPO9!w+(``M$tq2lCj-2l%*JSK+@9Qwvk4&Q|J`>^L+snWFuZ1O5m>%fk9EW< zGLE3qgDYyhPg+x$bTrj|@W|yc4FvtO>w}^M!`Z~S*XIYWU-mK{^*tYeq2d-`F%p-# zJA3e-aJ50rvw>K0faj1*p(KkBs`I`Vhso$=tUyl-Og7 z%$4!F_^U!RUrsJvGU!eTCvJH$>JZy&waEUdBzkD&sF5BCh16A`+xx9ep@NU(K9l1m zSNg-58GbHuE=r54`iT8J6nLeTW|+)O(tO+$$7{c@(zs5l>Coid4L)CPZBt$Rjf#pz z;{3*fp_)uzc!EcrYg)rOqyEy+dBJtELWe`8t#3!RBUMvKGnQ~-85LF2#=SYOdrI@> z)tD8BHNna{H^OUvQ|*jcBaE1D`-Pz&J=UV*ev%fvKz2AJxGxO*oTA!AXk(m7kF#sZC}%uPc&neqRY4+x*w-Z4N5>+Wvh|0ZHgAvkH5Zk3(*X=_8fecE;-T zZQ7e6FWq*nF>50D7{<#+5tHE%S#l&C+RRhSe%yC49-(CDXg#<#iY zo?pvh(DFIW{0y@{Eq`G+J^pzrww96A7sWbV&uy!MTuwX@@5^x&UZRkSQ@=&As|icI z#I(E|i@JL3A=S$klUkF2M@Q6;KFFHvgQYTYRa5CTIqg}Jn2XwVoL8b#iv-z!(uzAMqEv2aNrx-m_XM+eYhZ=J~>e-=- zgb=GvD;@QxhawnRK_?V!Z|t>CH-}u5E8JPC3r&S7$#3XH#rY2NGf&tYo%U}$Jl0;FHgoUmSU!F)iS63T9={GlUa%4eL4S0-IGUdCvQVmi^~|X(n%i4sXRZRyPU)nd{okE zhrFuYK-fU&@#zsP=RTEDpUhTT!G3YMJv*uom23^#M0Q%Qp0&8c>JjGF`Dy|KZDRCo z%9rtITW3Wxee4%5=?}=pg6;8$q&@@(v8W>$6&Pt(bvIsAc)L7*MmNTPtfT1eVobqP zI{4uTF_w?kDyS}_R^s{N2Nko=Q8x&tew-vA z0w&EUq#b3YJ|Lf#ym`)En=e33q~UBnN=Qpnr`IT(g8E2<-^YcyoP0)MsMyj3-Q;_8 z(3)PFse*h2iqV=Hl*-GyJD9`afg-OsW6Xhu!6^wgzK-t2i`E|mRPu9ry;`zoPH>Eu zsvX-2BDpAhbY{_UBfgGxPV`~cn(0>(>2g-MMb&-NkHHk7!j{wfOd+N@NoiB7tJXc6 zKiG+8wpEjH+nWbI(3ef(h|Wf(?7z&Dk@eK}uwq0o+Yd85^Ik8Xo_%tUnR_XdH}hU; znDBJ!2>cOqLvbpDmP;nBE&9lhYBn#dB_;o%Wy@ret$G3M=&=T_xYUuLm}>rx=N359 zR`0-iU${J^up_Tdw@ypV#Yjlolfse2EyE=T z`E(gQN*ucNDWhsrGKQ|cYb#k!B0re^l=BmvFCcxN5;f%;?TX3gCkS>sktGFMG!4J8 zYy2Aj8rFK`j$&fggcL8XbAIFTOu=+J#$lb&YZ{#HxQ8`#Pwq*)b5mme&VYW3jGx@g zfEGa8PP$%v{9#iFw=R!uKJ|rnBx8rD;X2fI3TJ+L6+_}z&|>d(78eN;B(@H-q4Y6~ zQp4?M)C&rXsWimBPaUOWLRdCimd@m=W_iNv=GwwdOKd+kzbRkp(yHBLrj@w$B_WPIyPOJTl}83X{SEk%VI^&5mhIu z@d3N+q+(dBtA}`bDr&B=qtrqP^`jbhw4M>_FJkJ0JU3x(>|iWG>&Hz#Ho6cU2ibW*b_&j1!)vdXZ?~sPdy-sK@smj%rY8Cq(67UN;EUsx$f{mm{)^(Zvc=W!bK)`DEEzmz4lWr70UF*~!yu#z5MwM#$ySVqFJo9Jrs zkR%187@g~sj(@tk3c(q>U`OV!uR_%vnDwN2M5;0&h<3}{<=M)+gpLwBs;%}PkQUol zN%pUV*dnq*iLZjvRH9X_(*z#_!{e)!uu0wL(`$?T)~e*RjEzA*KMs7~@n}y)QhBB| zyjlCWT8oy2W#s!e!^R4Y4vZ})MvkDUcs{(O#}z9KuRasM`Fvbh^eo~^(p9hWTT6C= z){1>m!e*sfcvxJ{tMI7z;IFdZ^>Fg1y0=K6(G0h&?+2drBW=@4Wxc%hP*Hy6sCZFU zcYm8QNVZQ035qO%RPp`25zGPJihCW-ojtlGx088%+-qFh*r*VP^CS8>s+HZQM5?e*?WK&I2WvXK!h4@8Dq#$t|}fI#3FCj|v`T2(%*g6I)rra5U;!}s?PG)Qvp z2lY@*lFWS?%d`E16W*bg&arFppsd0{P_eA!uum`362r5lS3aYcAFK_Zl6>?2_9&WH z^=iO(eqD4FHU3&s(6vJE=!3OQ>3E+PbxT<(krtr}i9vZtcpohGh|J-&8Eho@kUY-o z^N_%-Qwl?*61Q9oh|=Jxc3dn+JryUL?koDUeSGn-bTfgD2UcswvZ(i1`tfhjyWa{Q zWfHsVa^U&An>+32AXq@968>@{-TJc+lOO=?<*V#&U37bCXv6DQ1BBykxMpT;LV@`0 z3t+TjpTRU5PT8sAG2}gmV-1s%Te9yK-oY-rtH)qfJ)=SDl@$UCF74Ad{cqoX4!%57 zZ|SDLIrCa>nm;@Sfe1pKfN#nfYp6@udbsgg+j-c)cmv!#fp5}*K$0>6p4PT5FdqgR zn1hqM6w}_@ZYBmNJ1Hh3VGW3ervl8;Nj1m|rWd5CZyV%dD{jXmBaI~)AOQfl!F;S4 z0^D5Py(I#qn116*0H5!c`Is1fllZtuF&S%UGbng?!5D;ig?J%6N&!xO0!-3a43b`U z_7b{^%6~!tPf|>dK0clje0=`?{=EKzydGW-eEj0#;(QPRJ^=w9fP%+6(A~#6fXCgN z`3~X_3`Ll?t(TLhkCTTx!yTrzjfby~6cZEhp5ae$;H|Av0I>L{fV=14@ZLUld{E#) z2(Skr;1hsA#CRYAJObi;f8__>YH0kO+ui$5F9QDL3$XU&+;0ud|5d08R73mkJa=($aB}nf&2dNlS4unEzteg8db$3lv9slaxx(B4OS}PO z{(qte`2WuEFOB&P{@c?MiXOJUcPLOrDJEcr*UrgKLR3LSNt9nvQBD}5z|XHFF0KTT z7w4B36H*YD7Z(vy_zOGK-P_07-4^yYb|-+HU&va}Mo>hMM?l!tmPbh3Mv%u^T*RJ7 z9Aa%PYG-3@D`0K+7YHpcC!ijzUH__yuP=ZjtSA5x6BiH?7nE04l;`Ic=NFO_6BdUk z3i1m>#1zDSW88UBLQWeh#U#KB`NxX3tF@24hnJfale&|;Z@@oZ=sUT=^n9%EJj5>o z5fSDW6%`N@6^1~>1^z)~2=np=a{LaHAHvK3ha@{&31tA$8pt&#H){tNpQpRSZx+C9 z5(-{0Yab6UeGd;;DW*G}817hqR}O>ZpEV(&?qO?vS3AFnVRmNO$Rxmzf4s7F zw03uZ0ZsMKg819I)4#}5F(H_+ppCdNkF~HcKaY?##D+&qSj3h`z*@jgP!vczVTkDO z0RJ7`+r!?+-`Wc%=Kxd;5NDuZf5(}D<9C*E{xh||BMeZI3&Jk}fiV3MUIt0NyT181 z^Ca&YgNBC0UmftLPZVKZPJngFULJ10ZU5b(B<%i0werJkZ23iPgm~=5g@k#8>_zQ( ztZi%{Jl3MNc0vL$aeLt9ABz2f@mE*;QD^ox0(SO7qCB=@wjw+tg1{$hK@m|NJBXmI zwY{x9fFS&*{*rfHO#*tC{(8Qio~}+XuYZo(-?I3>p!*B|pB3}JWB)7JAKVHao`FEi zaP-mgcmHq2{|mxD5Y(M)VeZ}@|DEdpL?Q{4zK@fSE9@`I%DMhoFMrF>yZukX705oI zkMh{T?5%xWeVC;EU|v2>w$`qH#NE~DPlVrD@HYrazQ5xCLHU=R7GU{f4cNhffq?Jt z6Tu%?cRl2P^4Fi0_dh9uf#E+w{w@Fh$6fz%*T3a~e~b7(+4UcH{aYURw}}6fUH{kI zh4qg+1(-W9^ZElf26!*ejDXt)G#fP)MbPct?~<;{Okf4mQ`N*91i~i1`wIr;7g7L= z=sr*lCG<6HYBEt89y@;ENBbnpu<5k$!-i?%^ZLsY3F!?)ljP8KhJFlMNOSPb}TAI)zd`Rx-x*+3cho^Gsz zAmJlPc>xtH#2{#f9TEfdjtrWC2^b^*PGcEFffK0yi}gEp;H7K^OCCryn@RBUOy47}Jq`mJz{KLe!Y1uPgvY(#;@zyVM#NGU&u8XSzQ zHd~<@4d;QUCUFOTV*ZzrsE}Tf1l42-@yUQf$O1x>6HgfSyO`8&1fmWbFhgjK>y>9` z_23Cg*@cj(!#%tZDphCQQ^pnEl`l%!3p=Dtd7vs$uG{*^qv}nZEWrrhMD7k>k#$SF zcH-Rb7mPP%>8vUvFRp@-`e$D4jDcOqOaunGlxpJiz_o^?`pIL1m~gQ7`6oKzmsj9Z z)g!Mf*PH7Ss+>?pD{50dHFdWnhmVkHGvo8=zU|~euPK-61o&Uxk^(9RYgM%q~?;wtfZ_Yr{ke<{rY?{oC^$RBpUYp~))ETL}vQ!BelQI1Q5`7-n@k~bu zNF(8~Gm6WtR4ybVU@6J^_tNH%+afr->B6T4_zyt0{>S-1CT&?>q}sY_+_oHcJ6Sv{ z+*nsEcL5ZrX{e7#=33h5k8GLhEVK&H00f-`|Dp$lAzqAl;F@J@tY0aA2GUWV?>?xu z_0eSk(&jvo)g5OJpT8A-0g(mzCs_L(n|b!ex;#v)ivmJnOXJ=99uVRdy`HxJWkgwQA zhEb)c?z}xZPikB;3^T?Qn^v&C<10*^uAuo+8F=vsKmN|eBa@wGRCA5WN)i$y!_OrJ z?wC$LCpJ1;nt#GBq#$Pjavq@<$6dVMkgkPjRNq5wJsQsisWzNCjtrlj)7)HJ3iI9S z!BBil!>4O!3Y53#E3Nbp3SC>73 z42^ENIP;io-x))82uOG`cNr0xpX~-+VZhfp13Jp|&fq#SycCWlEH2}KMJ z=D4MTr^7$P&+}tWbXL&s>Lb1xpCCUOA0_)GbRIpjAo4ni`y$?G;BiAaF$OVcdO8W7 zsFW@FW8$uZ80cMSf!t9IYXfz{E$jxv=$dv9NF!KIvX!W{FOYY#Hr5a6erJ@hh@-0b zCXxVt&YhpA_T05iWL6)8?vhPd#97;f98G$iQ4m0U?LHlsfty@yh6+lc>&DD{@OzoijQRm%w z=S2H#TY{fXomSSE)LzoaU5K(hp|^a+2BSyXMNQ#oUTY$J3Vi=v%PN5?>sD@s9k6RI z^19x*d^=1CzlRtOA2#ew!rfN9?613 zKAZ(SZoS?^d@wy{^BR5&=j{wUR#?iP4cUd%1WRuOvvWk@QTG7`?R`~`i|Z%X1jd<>EdLGoC~V@NK*oanLQG@ZT0G1z3j`+38%Eb z{oJsd)&Icz{49&w;^x72Ev>KwomRdUCsQg6Ny;_XXwCEkDAQKC5kZjBY4C z3kW`rV}()`RJ?~-vig-}0r7BpO6C|aZ*)R%SIo*DyKy<;$oQpqFOJ#rL5>xL7^)fi z>#u&x~xjEy%_`wwTI7osRnQ0o}XUNaM&rs-4>7FeX(%luw zi@=Vr>z4OMhBYu1oQ)E~YbWC<@uoUa0zmDk?Y?u%Ft4vW&=@~Y{Mtvvl0E1omU1x&lUxwPQUMs zE3qAfkHUqWEG*JC)`v8%2m!Sb_t_|;Qf5o{kng(k0MMx2O~0~2yS_47y|Dh?ju{h% z+eJo(7w>uut)AWBRLuM?Lh1;qvLf)JONh@!3bBMDn-Mf@ zi7UrLgJEX683w+S^N?2%<#p3N;oZ!;w$rt)tDsH2Nn)b=MVj*WYdY|*Ada~xN}590c59S5Epon`ZF$2g#=o|>cos`R5 zULx&609$=~`EccCuNnt3es3nC3piK35T6Aepfh}liTVwGuh}jQtuuaC4qfPZ$sOL? z6!0?v99nOabk^{@t}tCny7EQ2j2SJmD_`FV=oy0%jA{4$kzNwaVaAi0cy(h&yjjmf zdwTF={_5dk!M)<5-tO71t1-c(Sg1|v`kPehV!e>t#TD=FqI%F6X!+=L&d?vU>|t7} z0SX%Sl`Rq+-%jGrTclZMpOJj$y`}AoW_`2wMxtdPgA(Y0oqe!k@KqR4AYB`qV+ZC7 zXX)^+C8jSn_x2~4)LsbJuMkW6b(IffycgnYOBC&yc7D1tg5nPHE9%|UM9T)BqHk0~ z=i?*DBO6AYEcTex+@VK@*G)_sRbyPqKVqDq`1!q??=ZP>LWpu}l@G$P&O_2!+eW{( zh&Qq{(nI`{hi)Z3Wz$)W{4SO}L7rsqoNGTv0%OL~hp1qt<0@eDuAR`hTA#xapKKmO z0nZ`pi-LOOh}OB$>?WNdqxA>VMj`u`F<7H%$wO$5g5qT z_`-i+=<3ZtMp1!j0Fd-sKjR}4;AAlqAQ#H?p#>yYNdDU0hKWc>47Xkpgwx47E8aU1 zYxGNJO%=INnL`J1ta8$lW{%_>qcIvk(Cq-HF>s129Ds86igZB|HcJ59K0b)m4ToT1>Yw% znIy+%&jaaOUa-SQ;9klK8C2HyJXO5!Zr7)-!r0-&>zyN*i$F-l#q&B*9CYuY=KRcEYwI0-f>Ry{6 zU4hy=2Qu>FdQnOqV2%#*Kz$D(o@D!gGj;`N*g!v<6B*MgUQ#h}e?CI*VR4;3J5-cr z1D!PG0?R1{m}dB9s8^WnWk6!beMBjl%By6l4n3Qzh9AXD7|w!okVQdyN!$l?u0UI; zsg_$=j#*D($E%&I1oIK*?-hfeq0yy=r-CxSE%z#AUkyX<8h8GB8I#(Q2gR0kA!F5( z-UlpBr(y2E)Dtuz1enrte0R{GMk9`}IBo`%F!`0o2myaLND#}4U%^K#5iDK5e%uE3S|N>Z+k^Nh(4fC=&pt5YMq|p#P_WeLvO=SdfQf$& zk_$RkYrUHkBL#2sK*#Y+YW74DovOOsmkvOGqXcvfJABHR#)2n|!UnqDz*JzU9+Lu@ z*#WBFNkzIm9nFi?B=xUs-E`2av{0#t89Zrb^4c&Rnq*h3_h*H9*A%K$c3qi7C ze5X(Y-R~z4K>mk2`OkqmWU0esfL`0Nc{biz;QtOS4dI~)G{ffKkN(sEnjPA{Ex^vu zK1HCq#k>jhy0^ef0un%MF$K~)8$cuA7*^eVSG&Q0p%GD+xRDjo5aRO}0Nr@_)AoBM z6-)lk>8z)L0^o6o7P1x<8dPcrwgLfQORRyzQ_n0YBj}5hQg%SGAb8xRy%&(AqZipg zg+>hOYApcZ=zIgxS+yvBKX2bXAA78D+_9T*G*^ILP+~%*HtqvsiyNSgP_QWA1*tXO z;u{T+kihKSgAK;{GT>qgEMm~e{PG>ZBcQ|`fSdp&f0Dt}gFVpA#6>FR#{qWB4y1q? zh^lk@Y7+M&cVd8`{d6pY9J9!trMmiAFEkvGz-9y-XK_yf4?eh4V&W}=K-Ia5Ix-Un zu)lA^R34oQ>YRT~bLxOp(o{f}3G|?hVltC&Pd5Pk+IFFR17&&LXh}4hJMSSRfF7mM zY?;nFc4y%0T`H?L)@cY(H(&Fb`W-wLiOC_iXLNd+zV{f|5(4O0BUUSdlHu%L%%nzl zr*q9rAP|n^BK$&Y08qaR3h#=O)5Yxq?U1VQ0B1D=AfytWc>sb!@xA6X{yWsu1L25@ zHy7sVtlfeDgmXhuWDZVrMScLv+!T-=RU?Vqd6-x4RaI*uDdFyqa+?87!IeN^2=A{l zshPb5MlD(&+Wit=K~qg zIC&6qT*=X7X9!I|QFu=7x5IBk-Sq-wH-hr1k9vGw)VU(t#9p6GGY1u^T-3z2GHaP09;(j<+N+@hY=U z!;~EXyhr4j2uMTA0bNp}<$(~h33HU%y03RprN7z92!N~nx!}ogTmV{$4!!kBOUeT_ zkgz|{uJj{wBJs&g4ogY_96>Xz1t$uY*H#4Qj==6fg_Q>qQcPzRjIgA@g!0_&mzz`o zxX{=Hd@4?Ek|LyQAfuT2Zl#6PO5zkXO(;kP80ZS(zAZU<))nexeNfuktMGEdUOi`DqXE}!bSt2La4EPql-Y)zyWp))D0ohwe3RL0rqmIyVz5? z5$#j2lq<_S7eZrDL)`^PwnQw!LQ@uSg*Z9qr%92o>#kr(CHz1XOsuGP@EL^PtFO4g zTLE#lV*2FokQ^I@`23MI`H6JhG|;30Z@}W@TR~Mr*%5k?y~#29YB>b?SM^s0YQT|g zl@_Oya&A;x_4U5M-DIRfi8YQ@BweqlH<_e!j zDv@YIslzct;|8d+i*Q0-4`is^g$WVEV&$}gwW6V{K$ZCgqxQ_)g#)1$f;ztXZEEO# zWH%MAll}uM{1rFDn`Ts54R=fm6=P8=qjJWP8Il!>6`;glP~ZV~OGX(Hd`L1vRFf_e zm}0L6h;qIFhk_sh!a0dnG;Vhx7SJdd4>*q(-$iEYN+^ z!{HY21!YBHeiTW(E1Gi{Fm6&40gOMPDA~x;_&dm-9260(QxP%*$}i1;wxq6bckw2e z0FQ#_U~HFlFFme8eu3PE+z)04PR(V&4-0}2U5ZxHR>3PRF{J3vYZm2lTYnY)9-e@! zl&u_`I;8-qMxMqPLY<_n8&o(aV4eM)b;8Vq#u#&j`$1M}%w>eX*!Q_sTvwKu)X;Df zfLhsLLvBF#W9wuKAcrhfaRi~YleJTby}fI?iUMHmJys;-nCJ0r=zhpcV09sZP#D_2 zaY)ZC@_yT0K*<1$uCoYO;4fl~PzsQ_sIs0NGgx;lc7uRJrdPwA))imtk-0$hD6MEq z%DG{4-Yq5;Xg9c5r0po}7y)&6(PRd$R+*s~8_0&pOL(p*t~lIocFqoHp17XEo>HC< z(^=1`@8r}7a2iw1#ffTUSSBDUg&hT(V1p_^aDOJ3 zqz;|i*2naez*Fz)Z5D*>7HTwoMPhYiOj3e4=|IAq$m>D~xNZ_+N*{Zm7$)BO$DW^|SrPU~qON|k)O(rCXtmMU%?YnC z?vNq5J*zMtltJl4QEw^B0eG+3O^hYkFq3dE9}3;@;Bb@NlA&y*h97fFKbj2rjDZec3eU4&qa3;PSJu?opg_U!u?M>BOXRi0Un5u#9Mlp_lyt3~y^=qTqRnZn+Y*)WQ;IBHCa zaga+3cAqQZyzQE0OsDK@7nE4BglH!GQXfwSkohsWw~zFdBzcKFWm{F2#f99SYJo?x!AN)t1_r6;W=k{ zliPRmrVcbYB3j5RBndWlKDYt4XF(!f5?)umXuM{eBUt+C#Jnu&mh0I9;JheuK)p)a z;NdVh#4|ZnpUoq_vQ5$S9;r6&P@~fJACU%lcUztDTycGq!)KqXULac-`K>9GGFo9f zL~X~QK(eR^n`2l z=%0QJHH3^d&r$*qDRLVz6L1R1e}X zh7U*IB+>*5F$$l61&NnTLr~dGnlDI=tjrmZZG*g=Bv$qKxk2(WJ9>&3i!{uKsU!%$ z*V}#WV&{pAkQw2`hNBL6K-m5}EI$b-5PuR6mo(%$H0$~V(GSpt05DB6(rCKdO!HzG z&5Po12g;~RoK<~KQ91cETCRsLfb@{{fI=~oMzhZ-zNhvDOudHPn6e_PZniBcDWRn(si*yep4xZKQ# zX#-c)hv@8ai$Y?)fz!X_)39XCpIJj-i<_}KWHa{-c0*0JlMg-{yAixzKnblf!FwA5 zdh!|CU8E~Gc;q>`uMDf=rNdLPyBN((Sd;rHv1#(u=8T0Ph-xCa&8iT^{6g*7OP5ZJU@CwY z7VdC+-@1j8$y`!q^im{P6d|0Nc)e`6e<<@|s1Et|T#1>f<6#K?yU0b^32~Q0IxuP{(5EEkfBIuLR408dzOIlq@T@LS*9vI?7KbMteP>bKb;i$ zA}6k|Nw4|9V;EO4#CWPW&=>DWdT+S(m5mP2+vXW*t4ubGa$D`*ki&2F>_)BOvQj=c zGlo7@C#SnO+Kw+#jo6ZX$}$1{*%7)G!Rn4*m3O}mRt_y1PmZdwoE*^@RB3E1{XnX8 zsIqT0@1wqaDOqy-_&kVl4uPec1v23b_x*|S@J#CR7a6W^Xe6@2=*Zdxn~m1we3<8F zwY2`P7ohvc5{_) z(k_|wQzERbdm+I$_KX}isb+b^SjX$-ho8l4PL2&m@~!i44oeO_t8CU|67df-V&s3< z5N_Kw*zStT^>$Q*rcs{XOCNlc-C{AIonGVGqkhy|3{?PA({J*Gw5E=p&5s2`E?868Pe7}a^b$&q@Xjx)?&aL2Y=ljtxmCA%-deJ|z? z_0op;UEq7nGAy5#z}-bt53zqu6+`E{kbj$Vr7i>&ZP$=aE@T~dwl3TBb;w-eJLc)V z;!WSTEI|kSy5=sW#$~X1^@8;tC*$odn$7p(lLeEcn=Uqdj}7h@a-nIKbOK<8@D57*IHnk6{DPzmBxtKV`(Afdr3MVhNq z`HvSeQc-(>AR_Uv%)tFqU_1QStf+P`ouLgH;mnDi5$ z0z{S(4Lj7rhhE@fu=?qVJ1>D&$-NwPT_JaDv^KKxli2>9 zWs+$J-e${B!(OC`F04FS+5d zT#lr3`L6TjXd4wD)``c834?=!`xgnz0(wcscJPz2_ZQj@SZ#J}c!t`YbOMv7Suoc` z*0$VpGc`GR|05Ob-H9S85(+Rse2C5t{7Y?j5`e1twEswMqygOnn9*1zYff)2EVncE zxI6))*I-ahQ8gJ$JW*Op^HLC1l*9#mrs)7MP@iRWdTyiEUQ zCU(CRqQr{vJOl+MR01xN`T2&FzL(p6w>?7R<|0? z`}*^SdAlvkLojs!7g*U&qy3phgxn_OWT~@QcUq9;Ydpbf_Bx|vVSawoEdZZ0Sc-4b zMD9s9E~8|WTI#>2a9nHldhUF5BHt3qNOf%U-#wpTf_K?6 z?yiv^MF{A{$!8;%XvEq>YYf_;9rs>hUF=|9j?L#oZmWh4tIG=C8uu40)U1Xip@-~* z8u_`uix_Z&FSko7>ac}8Vd{zBIQhp+clJRTtce0osu668=gwU|*&Uf?lM z_j$~{1F_o97fPqK(FO714J8q)XCmm{gqDLtZS)2Js)dNZSyzXsiqNJiC+1>CEB;cg zCIR@Qe6=xVTZZ5&Yc`VGX;N&Z9PV(MsaxRjFmCDc+%i-JHE zu-zOv-CoY3s!!WcX+47}Rutv8J~+>h3gf>~JMk$SNIHAe`y(~vm(N@IyRehJ{%63e za3WQB7|_zJ-~U5I|x|%>h^DjF?5e!sqdsgFUt@!ZVmKrJUx9A zCq`nyfI7Uh>A?{h;5-3%Q|U>l9^4$OIs6!HB7WX*X*Mwx}oE$1uKZLHew#O^{IE*Ccw_{k@BeyS8a$VymcQodtQJViXD98atd zpb5ZcDSP>@yWp%NE4xjOp5p(E#%ULN_|-c(Opqosy3X?j^h^c+{8W!0e*N3NoD$#y0mEBBfZS8^>4nh7Z6M+1ZHg5lz(|C*Sq zdz5?ZgAyV=qt5VjlIe{vHE&E&5NtZQWX#qNcdJ=?UO!Z~#=yg|1uFDtayR&2>77G1 zxx}+GfPQXrIyBl*WCl~&SG{%X;XD!k;_(BS-%F`T?O@a^)Va;1%(fQ;yNF zecVfwMb}RTz)G(<&Vy)kvT+KO5GA_9AcMHCboTEGuJHgapg}JA%sO&}>qgP>fJE?t zBb%@QQ_!*PWMsUCd|&I&updZIaCDrg7%7dqJaS@NbJ-}$h{Ool$sYTjcqt2^3)Lvy zxOhdM+>EM+!{WE`C5PFHc=ssUh(n+`mU(v1uwTl3O8ZIz6o@7T7mqT5FYIG)zy)00y|j88_S8^(rS`fshD)--)Czx|FoP>^G1! zl}{CRvm^56kXc2;z@oN$oxZ4kr3&Vg+txUZX0eS3y`$S(Mc>ucM)Sxb)65w_n^)Oa z^25|`%H>_J<=1vX7kRXz0-l6Et9f+P_I_C57Xp3CJG<9~F3R49a7~J1@?RRv={rp@ z6doTVIS<`$XU=?%*I14*8PFXi{*97P3ZJG#vjYCKCHElb2DMtQN=RpBrtADO8(rt~ zf^da!MEJGttL3`pSKU5UqS9P#5NG+{Q{3*0Q37L#ygl2nuSz|(fM#F??(Y)*zUE8* z-i{uKpPp-#8Vp}PE<0pOGSFnv2Y-zXM=rapce1&=(aQ0usCI~sbbj#&_;IK7jvOnA zXS8~yz)b1wFtNx4p1An6c=-66#tj;}YcBYeSfexB&n?BhXJ(6(pG*c8G;~a=n{B3l z2|r&7DUKV&Y(nFG7er4#6qX{(g&-!fH+g4142phLW+vS-FaGdm-nL!-d?MeXSDEXi zAWTpU^OH)4I5lt$gAM%4k@C)`G`L_t%9JmA+Z7Aw`4zRRZIZFMFA?%l5bxF$)0n}* z+fFA5nw;CA?#4^%lJYm}8t?aA_EK$GsJO6G9+ygs{3%$ekuz}ub61TU^02)5zRm4y z?jPNrf^!YOrpw+Q5vCkc*Va0U`{a-84YmvNh`WCMv{Sw8fK>U^wKY4cZFCd)ak|iT z^%t*1XdC%ChAupLSH}vw_;dwS*L%#N`*RZ8n;so1ZsS-oboA|a__0!7E}KsH(NM;g z1SnPFjBgk#w43rT$0(@uYiu1=DwLcP6M>HmCiiZr|2kYv|;eT z%hpN*eGMwI4dVlm!e6) zKa_Bo*U5LhlbI@p!zx@UW-vXSC$@|bF|usu*R56dK4qtA-qrI*D}1pSfox z=I!#5_|NDbLyJol}%Y!$gJxwGOw9UQAJW~%$Ilyeu&^< z-^s=u>zO~AiH;Xp3;H{<)q+@jKl)6jfHg3SLDd8qw&W<4U!QQrd+w{xD8eBG2^2s^>6y6Yn^rl+Na>5DhpBdz3vwYxuKvEv)GPDX#6@ua!M0}j5Mu!;|r zJ8;{(yHzvUt0kwK2wUD*U4$^yc`qB|10J%**V)=V+Ffpc=)f6o`=RFQd)@2V?!`;x zs6F)=b29W0crCp+`lOR%a-S)W4CRSN+axcM%BU6DTc(*^bz&Ah@uV5McpCH}bMVub zl{;=rVa8+4!MbVt8fh^fMk=!>#5mgZjegZWViGL;mT*?$h`py<`dWzbMncHatTAza zg+fw)_xZTw>ARbZPBYEU)H*qk>Wp6TpLvxod;SKfxyD5z)-oi{szTRM!xr4=Pn`N# za%Fj56OD0m8Kspqv6h2EGH&;`|EM0{MD11j_V27=rr0OqBj5tQ|McE@%8MApwB>if zPtSJ+ohh7s)enUqG%-N2R1-iNO0}4*b<@^E)1p5E6X=eyt5MdCH16ovqL5NUq1|Y{ z#DO0Yp`>-@;QaAlZc%)RA;qgdZ-CXv@$lvs`{>umhWYS4MT!yC2~b2q_yOdN*gQ4^ z{ocjKaBX;pn>;@#UCbX)caxm|x#R^W^BP^puYU1ZWb?*CS(Kl+vs+c5 zd<(dPohgiR--sReyQAJZS|A3F!6Uz(+G~4dnY|HMdO=-cKRz>T4@u;Gn_ryyv$zx4fTK`~SBNsbEq@bb)k z+_87Eqqe*{_~PTT@y5@w@HP@18_)tsMwUvoPGwChRjE>#ct z-c81kzNakg%N9Uy6Ql20)BmuSItiI)JgtgZtnvld_Z2#TYQ1q1GfLqnA6(1D?A&jc z-!57^?C+JwEPSDrg6Jkx3aCj8^mX+dpG_%VAL#1^zPYh(Y={~7_RI6kx32#V53OFn zRRMW!L0ER59GAm6Oq6h69cxK}0O^5|FmGx!ETFfNZq8=$5SRj4N*S&qi~wT>OiN-n zu5XVn9>j3AJ7@t`5zz1Pnqq2gb%wjY`)GdnaHw4VJw;G8M0O&68~VZBTV)dz|CY($eyO3aOL#cS_D!9ac7+JD35omOZ8e3+ zJA2=_!FhBq#H^;ie7xd@oi&~@%Z4bw3LDhhz5dMjy=U$oO`-Zi?qoVEP&M*LkE^O! z!;JRs=(pOm%j@h)Zj93IA9V4>o{74IB>jQMi*v0DiJ8b^kzF%)4!V?J`;ha8#C#4i zNu%B8>+)}p)Ghg=TXcW{8$sz@A_0MLJgO)S8Etm|QxXQCoYtn=F!WqDZYamB{d^v9 z`-n??ClukNLOWxp25OH zUDJn|Lb%&nqVq**ZXse`9vNvS<+2AcAWHy~fal(tn?4N?wBJxWdckX)GSZ4=|Iqx= zjy&py`x?9!7R*@yvz}JCB8P6G&XdXDJW+s|lnmKO$GJEx(fgQG!-B;J`h1(Se~Qqg z>#z0gzUa!Fr&m;#T((XXE6nF0F*6_`_c`DYNT^x+{t7g79!>iXH1xs9iXm60f2i3= zD-z6w0D~%{kw8iRL=oMpYol)Q;7X z|7M=LAtY2!&MnIm@G5DS*ke#+<;8X?Ml#WpKtVla4*2x)OzMHXz*yn0O=MW&wdq-+ zFRC8m0hx|ghv(F?DVI!}12>fokh4)ehh_ zIXMSSHf3PlIRN(y3Pz9*R0V)J7w8@RUu$nr+W2aAGb?|7G%keTCkz6&PRT-V9gP=_ zeO2Y+ z!wBgkn_)3+wn`Yb*cR!aj?>kdiDQGGSSk$xl_Wv$tai5!1;sxiK1B(N+r99Qe*!13 z&vdo9trbvu)S#%LH8Sn#WITqN!pe%_dVp+)_Y@2jT?6)ZG;OU9^?0d=ycD6JaexsNF+b2XY^LWBtn26B z{Ol)J*;1XDaYJBE;9oK2TIv3aH*rppy-n&&o{_rDrgu&aGSc++*T{xE9*r${)JKKI zk2Sj&E+z@a6yY^nq;icw7eRK!4AaB{=B0&^Mw_NSM3UgEL&X{vAYgM#PCL(r*qu&Z zV*7^G%d_Jb_pVv}R36A2U&a%GmHFW_-71POy|L!g00W0MX8Vn$WwBX&A_$*05AaBH z`v!KZvO+yn7~n89(}Vmnm4g2WqBRiS&-3b^cE)@O{rG{+p{m6$enyEWprqsZ7BtH` zjb<8bBsKMbL|MZf3d64%+jcOfEh_zDFO71tbI?@+wN^b^G1~q80_SXr!aLQkE{!>w zfC^6#7R|r(2GHL!k}rOi9`fs_U-4d`RZzK;PS$!2OU763h46v4fiJGk1*L!;W|fhq z%OsM;wNA7Z5J{pNa|BrtipknYTeN0X{F3OXna#j!7ujDc3qzAx z^XbbPhuT-rg{3dhz}7Pvxwj>z#uk9Nh`8aQdeY;q_EM}R$6;v{{q5-qPk#xGZ8He-0|rv%b9?P z1k}UQVprQuZar z<$%Gt4a~>gewJd@qgtSc=yx==N_?s9C9xSnQO=H1GeceX%3R4J8%B3PuB-$3#MB!< z3I1G-^d3NYbQ)`*nJN(O5`~QpoC5lKstpE{Gk%&NFq9W>f8dHS;k_FW^@qlC=T{?j z1-n`ic-0-E)E*J@+d%XTm3X^pkNf)Uc&d-Apdc_%HzN%Nw!}!>P&*sg%%;uf2c?8# zUMG379fz_>G338t$ovF}h zJBZdQ?I%MDx-nP^ecs!^IIhQ%-+cDCq@;Lzuf_AV@Db0CkyrL%pg~1FlJC%D{>D=n zKj2qp*?;W8wF>(EGPInpsJ*Xv`#U}_@Cz6S%wFi*MC1cu?wa+`y&S+dd?BQ((0hFn z4bDgtg*N$DSiM;qAnSiW`|4u&Ivt2)NlK^MqwdYo0` zSB=Q(dN3N~sy8_|Rn<%->6n7*rKp-?hpSuksrvlYD?&uO6?zKl^IR{U9EA&Yt0z_> zwKMx(fE25NUk0>awC97fq9iFYctQ>8Ua&1vqO_%(E72t~Ro@eth}f}fK9JO36KXuI zKXSW{$hdPa=?d9#KUg-mqA1YL;>E9adz~AA$x*>|r@yG1 zxndul0{!;Gp4(dmpEUe}&zbDk9;d#e806kmaauF&+L$AkW@6VeNSr2B3)6YIznK4<~qwqv+ zf}UN>NSXfBzi~*gdwU>eOgei!chf(uGXt+4xTVU-`Ww^yl3+^AMa42Iqt^Fm4nU7K zCH1+04l~eP65`;e`ZI#4aUsB8AtowOdjAGOdSBzpi(34up;I}}W*hVI{G$e;t!}or zoBWZVvpn%5!^q0-DJ>fTJEhFYePY+Kon1hiPbN_k!+pOc(l{U`+yeDkJZ4|Mp z*xm;UMuy}wU-Yzuc=4%K{0aZ3?(CU3ai!>q)dOT#HEo|9@bS*k-1s2hVvANnTbf92 z%e{AO8ckI$Pf=ODki3^TziGip zny2cP%RfSSn{S?hU6cGRq0*%kD#apVZvoJ>3ee}lo_nuQDu)ZiiTyRe&dzlBiHuEe z{woULMBz%$5fd(wR^AuR{bL_t_atLV>F_Sj`1ZTt%VndOtEGP8t)2;3c&v0uU_ild z-f;eJw+_>YZF9HNU23?%qcA&lD@{*c{(~!NT1VIYr(f?`=M85dO|UKSjvmmAiA>IU zI^f&J{~Ux6*8^(;t|(mDclw4wmcL9gHFhr5CIm7l^`oxzXJX@gW?r1D0R@4I+NWj~ z8)iNzr0?Bo`C3@i&z@9jc=+N89i!?l0qL|55-mM`uz6@iH*#8jk7fE}Hr)!qXVGXg zniiMM$CtbW2-yO9A|nxtP5C4WbwdP4HPi(<1AdnM^%!kIt|--)agiP~N1 zM|nuY_mmw4e7#7d@3yW=J`!+{=a}~AhC=#wd%hj6g-eZ`wH)ELP;Al|_vC_NYpnG6 z9xU&0`UUQpqjl!xBqEaOA8J8;L$X%O$Gs9j4HvDYZ}ewffdD!J3eNXx8@Eoo_C8>Jmlg{CMwui>4mqAn_>{$DWB@ zOE^1O3T#u$rKw<*yz;_bt%;S!6F?Bwr+QY1NLwXJOhIg~ox6QgbOq1u9X!wgn61Tk zg3yLUo?vY%|1({!n7SKF!^B43o@dnA0lK62l<%Zx;_&PTM;EljMp5BIz$NN`xQo6oidY1?_m&0_Tm<1oFv$M_?P^-m?GOFzGml)%L zsZm7)%H1X8^e^GU=|fzC%{qcL^F>`8+eRZXR4z)o_5_AI@XZ=_H9z8jnkKAbU5UtY zCjRd%TDyne%+2Uo*oA^Jqz!&Q?pX9X_=ZJzHdFPx0q_!^94Zgtgfhi~ zjnq3!n?!}4dZUDc5%`9>fX@HoQ4n`ieln35QzRa{G@Ga8fnzWrcW)csD$}xi`Ck#E BZdU*R literal 0 HcmV?d00001 diff --git a/container-stats/logo.png b/container-stats/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..674892bbeb9d241ebfc50f80a1ac2885c9aa9eb7 GIT binary patch literal 59607 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 Uav@y2=EtQ2HwF9E`4Er)8xVCMssI20 literal 0 HcmV?d00001 diff --git a/container-stats/root/etc/services.d/stats/run b/container-stats/root/etc/services.d/stats/run new file mode 100644 index 0000000..8206c05 --- /dev/null +++ b/container-stats/root/etc/services.d/stats/run @@ -0,0 +1,18 @@ +#!/usr/bin/with-contenv bashio +set -e + +bashio::log.info 'Start docker statistics' + +if bashio::config.has_value 'update_interval'; then + export STATS_UPDATE_INTERVAL=$(bashio::config 'update_interval') +fi + +if [ ! -d /container-stats/db ] && bashio::config 'persistent'; then + [ ! -d /data/db ] && mkdir -p /data/db + ln -s /data/db/ /container-stats/db +else + mkdir -p /container-stats/db +fi + +cd /container-stats +node stats.js diff --git a/container-stats/root/etc/services.d/webserver/run b/container-stats/root/etc/services.d/webserver/run new file mode 100644 index 0000000..2b5205a --- /dev/null +++ b/container-stats/root/etc/services.d/webserver/run @@ -0,0 +1,11 @@ +#!/usr/bin/with-contenv bashio +set -e + +if [ ! -d /container-stats/db ]; then + bashio::log.debug 'Wait for database' + sleep 2s +fi + +bashio::log.info 'Start webserver' +cd /container-stats +node httpd.js