From 112b42d5689eff43a53b1f0c8fb085cf4ae987ce Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Sat, 24 Sep 2022 21:38:13 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- enterprise/littlelink/7.0.0/CHANGELOG.md | 99 + enterprise/littlelink/7.0.0/Chart.lock | 6 + enterprise/littlelink/7.0.0/Chart.yaml | 29 + enterprise/littlelink/7.0.0/README.md | 107 + enterprise/littlelink/7.0.0/app-readme.md | 8 + .../littlelink/7.0.0/charts/common-10.6.0.tgz | Bin 0 -> 48413 bytes enterprise/littlelink/7.0.0/ix_values.yaml | 39 + enterprise/littlelink/7.0.0/questions.yaml | 2683 +++++++++++++++ .../littlelink/7.0.0/templates/_configmap.tpl | 199 ++ .../littlelink/7.0.0/templates/common.yaml | 8 + enterprise/littlelink/7.0.0/values.yaml | 0 enterprise/nextcloud/16.0.0/CHANGELOG.md | 99 + enterprise/nextcloud/16.0.0/Chart.lock | 15 + enterprise/nextcloud/16.0.0/Chart.yaml | 45 + enterprise/nextcloud/16.0.0/README.md | 110 + enterprise/nextcloud/16.0.0/app-readme.md | 8 + .../charts/collabora-online-12.1.41.tgz | Bin 0 -> 59654 bytes .../nextcloud/16.0.0/charts/common-10.6.0.tgz | Bin 0 -> 48413 bytes .../16.0.0/charts/postgresql-8.0.78.tgz | Bin 0 -> 51868 bytes .../nextcloud/16.0.0/charts/redis-3.0.75.tgz | Bin 0 -> 54027 bytes .../nextcloud/16.0.0/ci/basic-values.yaml | 11 + enterprise/nextcloud/16.0.0/ix_values.yaml | 457 +++ enterprise/nextcloud/16.0.0/questions.yaml | 2942 ++++++++++++++++ .../nextcloud/16.0.0/templates/_configmap.tpl | 36 + .../nextcloud/16.0.0/templates/_cronjob.tpl | 64 + .../nextcloud/16.0.0/templates/_hpb.tpl | 164 + .../nextcloud/16.0.0/templates/_imaginary.tpl | 40 + .../nextcloud/16.0.0/templates/_nginx.tpl | 54 + .../nextcloud/16.0.0/templates/common.yaml | 22 + enterprise/nextcloud/16.0.0/values.yaml | 0 enterprise/traefik/14.0.0/CHANGELOG.md | 99 + enterprise/traefik/14.0.0/Chart.lock | 6 + enterprise/traefik/14.0.0/Chart.yaml | 31 + enterprise/traefik/14.0.0/README.md | 108 + enterprise/traefik/14.0.0/app-readme.md | 8 + .../traefik/14.0.0/charts/common-10.6.0.tgz | Bin 0 -> 48413 bytes .../traefik/14.0.0/crds/ingressroute.yaml | 209 ++ .../traefik/14.0.0/crds/ingressroutetcp.yaml | 169 + .../traefik/14.0.0/crds/ingressrouteudp.yaml | 87 + .../traefik/14.0.0/crds/middlewares.yaml | 587 ++++ .../traefik/14.0.0/crds/middlewarestcp.yaml | 61 + .../14.0.0/crds/serverstransports.yaml | 108 + .../traefik/14.0.0/crds/tlsoptions.yaml | 92 + enterprise/traefik/14.0.0/crds/tlsstores.yaml | 68 + .../traefik/14.0.0/crds/traefikservices.yaml | 289 ++ enterprise/traefik/14.0.0/ix_values.yaml | 387 +++ enterprise/traefik/14.0.0/questions.yaml | 2856 ++++++++++++++++ enterprise/traefik/14.0.0/templates/_args.tpl | 166 + .../traefik/14.0.0/templates/_helpers.tpl | 22 + .../14.0.0/templates/_ingressclass.tpl | 24 + .../14.0.0/templates/_ingressroute.tpl | 25 + .../traefik/14.0.0/templates/_portalhook.tpl | 26 + .../traefik/14.0.0/templates/_tlsoptions.tpl | 12 + .../traefik/14.0.0/templates/common.yaml | 24 + .../middlewares/basic-middleware.yaml | 62 + .../templates/middlewares/basicauth.yaml | 34 + .../14.0.0/templates/middlewares/chain.yaml | 21 + .../templates/middlewares/forwardauth.yaml | 30 + .../templates/middlewares/ipwhitelist.yaml | 33 + .../templates/middlewares/ratelimit.yaml | 19 + .../templates/middlewares/redirectScheme.yaml | 19 + .../templates/middlewares/redirectregex.yaml | 20 + .../middlewares/stripPrefixRegex.yaml | 20 + .../templates/middlewares/tc-chains.yaml | 29 + .../templates/middlewares/tc-headers.yaml | 62 + .../templates/middlewares/tc-nextcloud.yaml | 25 + .../templates/middlewares/theme-park.yaml | 26 + enterprise/traefik/14.0.0/values.yaml | 0 enterprise/truecommand/12.0.0/CHANGELOG.md | 99 + enterprise/truecommand/12.0.0/Chart.lock | 6 + enterprise/truecommand/12.0.0/Chart.yaml | 28 + enterprise/truecommand/12.0.0/README.md | 106 + enterprise/truecommand/12.0.0/app-readme.md | 8 + .../12.0.0/charts/common-10.6.0.tgz | Bin 0 -> 48413 bytes enterprise/truecommand/12.0.0/ix_values.yaml | 27 + enterprise/truecommand/12.0.0/questions.yaml | 2546 ++++++++++++++ .../truecommand/12.0.0/templates/common.yaml | 1 + enterprise/truecommand/12.0.0/values.yaml | 0 enterprise/vaultwarden/17.0.0/CHANGELOG.md | 99 + enterprise/vaultwarden/17.0.0/Chart.lock | 9 + enterprise/vaultwarden/17.0.0/Chart.yaml | 37 + enterprise/vaultwarden/17.0.0/README.md | 107 + enterprise/vaultwarden/17.0.0/app-readme.md | 8 + .../17.0.0/charts/common-10.6.0.tgz | Bin 0 -> 48413 bytes .../17.0.0/charts/postgresql-8.0.78.tgz | Bin 0 -> 51868 bytes .../vaultwarden/17.0.0/ci/default-values.yaml | 0 .../vaultwarden/17.0.0/ci/ingress-values.yaml | 7 + enterprise/vaultwarden/17.0.0/ix_values.yaml | 159 + enterprise/vaultwarden/17.0.0/questions.yaml | 2980 +++++++++++++++++ .../17.0.0/templates/_configmap.tpl | 116 + .../vaultwarden/17.0.0/templates/_secrets.tpl | 36 + .../17.0.0/templates/_validate.tpl | 17 + .../vaultwarden/17.0.0/templates/common.yaml | 39 + enterprise/vaultwarden/17.0.0/values.yaml | 0 94 files changed, 19544 insertions(+) create mode 100644 enterprise/littlelink/7.0.0/CHANGELOG.md create mode 100644 enterprise/littlelink/7.0.0/Chart.lock create mode 100644 enterprise/littlelink/7.0.0/Chart.yaml create mode 100644 enterprise/littlelink/7.0.0/README.md create mode 100644 enterprise/littlelink/7.0.0/app-readme.md create mode 100644 enterprise/littlelink/7.0.0/charts/common-10.6.0.tgz create mode 100644 enterprise/littlelink/7.0.0/ix_values.yaml create mode 100644 enterprise/littlelink/7.0.0/questions.yaml create mode 100644 enterprise/littlelink/7.0.0/templates/_configmap.tpl create mode 100644 enterprise/littlelink/7.0.0/templates/common.yaml create mode 100644 enterprise/littlelink/7.0.0/values.yaml create mode 100644 enterprise/nextcloud/16.0.0/CHANGELOG.md create mode 100644 enterprise/nextcloud/16.0.0/Chart.lock create mode 100644 enterprise/nextcloud/16.0.0/Chart.yaml create mode 100644 enterprise/nextcloud/16.0.0/README.md create mode 100644 enterprise/nextcloud/16.0.0/app-readme.md create mode 100644 enterprise/nextcloud/16.0.0/charts/collabora-online-12.1.41.tgz create mode 100644 enterprise/nextcloud/16.0.0/charts/common-10.6.0.tgz create mode 100644 enterprise/nextcloud/16.0.0/charts/postgresql-8.0.78.tgz create mode 100644 enterprise/nextcloud/16.0.0/charts/redis-3.0.75.tgz create mode 100644 enterprise/nextcloud/16.0.0/ci/basic-values.yaml create mode 100644 enterprise/nextcloud/16.0.0/ix_values.yaml create mode 100644 enterprise/nextcloud/16.0.0/questions.yaml create mode 100644 enterprise/nextcloud/16.0.0/templates/_configmap.tpl create mode 100644 enterprise/nextcloud/16.0.0/templates/_cronjob.tpl create mode 100644 enterprise/nextcloud/16.0.0/templates/_hpb.tpl create mode 100644 enterprise/nextcloud/16.0.0/templates/_imaginary.tpl create mode 100644 enterprise/nextcloud/16.0.0/templates/_nginx.tpl create mode 100644 enterprise/nextcloud/16.0.0/templates/common.yaml create mode 100644 enterprise/nextcloud/16.0.0/values.yaml create mode 100644 enterprise/traefik/14.0.0/CHANGELOG.md create mode 100644 enterprise/traefik/14.0.0/Chart.lock create mode 100644 enterprise/traefik/14.0.0/Chart.yaml create mode 100644 enterprise/traefik/14.0.0/README.md create mode 100644 enterprise/traefik/14.0.0/app-readme.md create mode 100644 enterprise/traefik/14.0.0/charts/common-10.6.0.tgz create mode 100644 enterprise/traefik/14.0.0/crds/ingressroute.yaml create mode 100644 enterprise/traefik/14.0.0/crds/ingressroutetcp.yaml create mode 100644 enterprise/traefik/14.0.0/crds/ingressrouteudp.yaml create mode 100644 enterprise/traefik/14.0.0/crds/middlewares.yaml create mode 100644 enterprise/traefik/14.0.0/crds/middlewarestcp.yaml create mode 100644 enterprise/traefik/14.0.0/crds/serverstransports.yaml create mode 100644 enterprise/traefik/14.0.0/crds/tlsoptions.yaml create mode 100644 enterprise/traefik/14.0.0/crds/tlsstores.yaml create mode 100644 enterprise/traefik/14.0.0/crds/traefikservices.yaml create mode 100644 enterprise/traefik/14.0.0/ix_values.yaml create mode 100644 enterprise/traefik/14.0.0/questions.yaml create mode 100644 enterprise/traefik/14.0.0/templates/_args.tpl create mode 100644 enterprise/traefik/14.0.0/templates/_helpers.tpl create mode 100644 enterprise/traefik/14.0.0/templates/_ingressclass.tpl create mode 100644 enterprise/traefik/14.0.0/templates/_ingressroute.tpl create mode 100644 enterprise/traefik/14.0.0/templates/_portalhook.tpl create mode 100644 enterprise/traefik/14.0.0/templates/_tlsoptions.tpl create mode 100644 enterprise/traefik/14.0.0/templates/common.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/basic-middleware.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/basicauth.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/chain.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/forwardauth.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/ipwhitelist.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/ratelimit.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/redirectScheme.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/redirectregex.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/stripPrefixRegex.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/tc-chains.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/tc-headers.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/tc-nextcloud.yaml create mode 100644 enterprise/traefik/14.0.0/templates/middlewares/theme-park.yaml create mode 100644 enterprise/traefik/14.0.0/values.yaml create mode 100644 enterprise/truecommand/12.0.0/CHANGELOG.md create mode 100644 enterprise/truecommand/12.0.0/Chart.lock create mode 100644 enterprise/truecommand/12.0.0/Chart.yaml create mode 100644 enterprise/truecommand/12.0.0/README.md create mode 100644 enterprise/truecommand/12.0.0/app-readme.md create mode 100644 enterprise/truecommand/12.0.0/charts/common-10.6.0.tgz create mode 100644 enterprise/truecommand/12.0.0/ix_values.yaml create mode 100644 enterprise/truecommand/12.0.0/questions.yaml create mode 100644 enterprise/truecommand/12.0.0/templates/common.yaml create mode 100644 enterprise/truecommand/12.0.0/values.yaml create mode 100644 enterprise/vaultwarden/17.0.0/CHANGELOG.md create mode 100644 enterprise/vaultwarden/17.0.0/Chart.lock create mode 100644 enterprise/vaultwarden/17.0.0/Chart.yaml create mode 100644 enterprise/vaultwarden/17.0.0/README.md create mode 100644 enterprise/vaultwarden/17.0.0/app-readme.md create mode 100644 enterprise/vaultwarden/17.0.0/charts/common-10.6.0.tgz create mode 100644 enterprise/vaultwarden/17.0.0/charts/postgresql-8.0.78.tgz create mode 100644 enterprise/vaultwarden/17.0.0/ci/default-values.yaml create mode 100644 enterprise/vaultwarden/17.0.0/ci/ingress-values.yaml create mode 100644 enterprise/vaultwarden/17.0.0/ix_values.yaml create mode 100644 enterprise/vaultwarden/17.0.0/questions.yaml create mode 100644 enterprise/vaultwarden/17.0.0/templates/_configmap.tpl create mode 100644 enterprise/vaultwarden/17.0.0/templates/_secrets.tpl create mode 100644 enterprise/vaultwarden/17.0.0/templates/_validate.tpl create mode 100644 enterprise/vaultwarden/17.0.0/templates/common.yaml create mode 100644 enterprise/vaultwarden/17.0.0/values.yaml diff --git a/enterprise/littlelink/7.0.0/CHANGELOG.md b/enterprise/littlelink/7.0.0/CHANGELOG.md new file mode 100644 index 00000000000..208a5fa3d01 --- /dev/null +++ b/enterprise/littlelink/7.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [littlelink-7.0.0](https://github.com/truecharts/charts/compare/littlelink-6.0.65...littlelink-7.0.0) (2022-09-24) + +### Chore + +- Auto-update chart README [skip ci] + - bump major on new enterprise app to seperate helm updates + - Add a copy of Initial Apps selected for Enterprise Train ([#3749](https://github.com/truecharts/charts/issues/3749)) + + + + +## [littlelink-6.0.65](https://github.com/truecharts/charts/compare/littlelink-6.0.62...littlelink-6.0.65) (2022-09-22) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) + - update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) + - update docker general non-major ([#3839](https://github.com/truecharts/charts/issues/3839)) + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [littlelink-6.0.65](https://github.com/truecharts/charts/compare/littlelink-6.0.62...littlelink-6.0.65) (2022-09-22) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update docker general non-major ([#3839](https://github.com/truecharts/charts/issues/3839)) + - update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) + - update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [littlelink-6.0.64](https://github.com/truecharts/charts/compare/littlelink-6.0.62...littlelink-6.0.64) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) + - update docker general non-major ([#3818](https://github.com/truecharts/charts/issues/3818)) + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [littlelink-6.0.64](https://github.com/truecharts/charts/compare/littlelink-6.0.62...littlelink-6.0.64) (2022-09-20) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] diff --git a/enterprise/littlelink/7.0.0/Chart.lock b/enterprise/littlelink/7.0.0/Chart.lock new file mode 100644 index 00000000000..00e1d98e227 --- /dev/null +++ b/enterprise/littlelink/7.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.6.0 +digest: sha256:60d8634057a317d5912fe7e182913e53cf7044caa196ba4d2a5fbce95fdc85e8 +generated: "2022-09-24T21:35:31.834021003Z" diff --git a/enterprise/littlelink/7.0.0/Chart.yaml b/enterprise/littlelink/7.0.0/Chart.yaml new file mode 100644 index 00000000000..9927201619f --- /dev/null +++ b/enterprise/littlelink/7.0.0/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.6.0 +deprecated: false +description: Easy platform to combine all your social links +home: https://truecharts.org/docs/charts/enterprise/littlelink +icon: https://truecharts.org/img/hotlink-ok/chart-icons/littlelink.png +keywords: + - littlelink +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: littlelink +sources: + - https://github.com/truecharts/charts/tree/master/charts/enterprise/littlelink + - https://github.com/techno-tim/littlelink-server + - https://github.com/sethcottle/littlelink +type: application +version: 7.0.0 +annotations: + truecharts.org/catagories: | + - social + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/enterprise/littlelink/7.0.0/README.md b/enterprise/littlelink/7.0.0/README.md new file mode 100644 index 00000000000..c1a47fe1e7e --- /dev/null +++ b/enterprise/littlelink/7.0.0/README.md @@ -0,0 +1,107 @@ +# littlelink + +Easy platform to combine all your social links + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [littlelink](https://truecharts.org/docs/charts/enterprise/littlelink) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.6.0 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App). + +### Helm + +To install the chart with the release name `littlelink` + +```console +helm repo add TrueCharts https://charts.truecharts.org +helm repo update +helm install littlelink TrueCharts/littlelink +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App). + +### Helm + +To uninstall the `littlelink` deployment + +```console +helm uninstall littlelink +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the values.yaml file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the command line + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install littlelink \ + --set env.TZ="America/New York" \ + TrueCharts/littlelink +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install littlelink TrueCharts/littlelink -f values.yaml +``` + +#### Connecting to other charts + +If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/enterprise/littlelink/7.0.0/app-readme.md b/enterprise/littlelink/7.0.0/app-readme.md new file mode 100644 index 00000000000..f36529ef46d --- /dev/null +++ b/enterprise/littlelink/7.0.0/app-readme.md @@ -0,0 +1,8 @@ +Easy platform to combine all your social links + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/enterprise/littlelink](https://truecharts.org/docs/charts/enterprise/littlelink) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/enterprise/littlelink/7.0.0/charts/common-10.6.0.tgz b/enterprise/littlelink/7.0.0/charts/common-10.6.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0308b85a1a8c5cdc7a0461f210d9fce394ddcc94 GIT binary patch literal 48413 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://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/docs/about/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/enterprise/littlelink/7.0.0/templates/_configmap.tpl b/enterprise/littlelink/7.0.0/templates/_configmap.tpl new file mode 100644 index 00000000000..c4796957f01 --- /dev/null +++ b/enterprise/littlelink/7.0.0/templates/_configmap.tpl @@ -0,0 +1,199 @@ +{{/* Define the configmap */}} +{{- define "littlelink.configmap" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: littlelinkconfig +data: + {{- if .Values.littlelink.meta_title }} + META_TILE: {{ .Values.littlelink.meta_title | quote }} + {{- end }} + {{- if .Values.littlelink.meta_description }} + META_DESCRIPTION: {{ .Values.littlelink.meta_description | quote }} + {{- end }} + {{- if .Values.littlelink.meta_author }} + META_AUTHOR: {{ .Values.littlelink.meta_author | quote }} + {{- end }} + {{- if .Values.littlelink.lang }} + LANG: {{ .Values.littlelink.lang | quote }} + {{- end }} + {{- if .Values.littlelink.meta_index_status }} + META_INDEX_STATUS: {{ .Values.littlelink.meta_index_status | quote }} + {{- end }} + {{- if .Values.littlelink.ga_tracking_id }} + GA_TRACKING_ID: {{ .Values.littlelink.ga_tracking_id | quote }} + {{- end }} + {{- if .Values.littlelink.theme }} + THEME: {{ .Values.littlelink.theme | quote }} + {{- end }} + {{- if .Values.littlelink.favicon_url }} + FAVICON_URL: {{ .Values.littlelink.favicon_url | quote }} + {{- end }} + {{- if .Values.littlelink.avatar_url }} + AVATAR_URL: {{ .Values.littlelink.avatar_url | quote }} + {{- end }} + {{- if .Values.littlelink.avatar_2x_url }} + AVATAR_2X_URL: {{ .Values.littlelink.avatar_2x_url | quote }} + {{- end }} + {{- if .Values.littlelink.avatar_alt }} + AVATAR_ALT: {{ .Values.littlelink.avatar_alt | quote }} + {{- end }} + {{- if .Values.littlelink.name }} + NAME: {{ .Values.littlelink.name | quote }} + {{- end }} + {{- if .Values.littlelink.bio }} + BIO: {{ .Values.littlelink.bio | quote }} + {{- end }} + {{- if .Values.littlelink.github }} + GITHUB: {{ .Values.littlelink.github | quote }} + {{- end }} + {{- if .Values.littlelink.twitter }} + TWITTER: {{ .Values.littlelink.twitter | quote }} + {{- end }} + {{- if .Values.littlelink.instagram }} + INSTAGRAM: {{ .Values.littlelink.instagram | quote }} + {{- end }} + {{- if .Values.littlelink.youtube }} + YOUTUBE: {{ .Values.littlelink.youtube | quote }} + {{- end }} + {{- if .Values.littlelink.twitch }} + TWITCH: {{ .Values.littlelink.twitch | quote }} + {{- end }} + {{- if .Values.littlelink.discord }} + DISCORD: {{ .Values.littlelink.discord | quote }} + {{- end }} + {{- if .Values.littlelink.tiktok }} + TIKTOK: {{ .Values.littlelink.tiktok | quote }} + {{- end }} + {{- if .Values.littlelink.kit }} + KIT: {{ .Values.littlelink.kit | quote }} + {{- end }} + {{- if .Values.littlelink.facebook }} + FACEBOOK: {{ .Values.littlelink.facebook | quote }} + {{- end }} + {{- if .Values.littlelink.facebook_messenger }} + FACEBOOK_MESSENGER: {{ .Values.littlelink.facebook_messenger | quote }} + {{- end }} + {{- if .Values.littlelink.linked_in }} + LINKED_IN: {{ .Values.littlelink.linked_in | quote }} + {{- end }} + {{- if .Values.littlelink.product_hunt }} + PRODUCT_HUNT: {{ .Values.littlelink.product_hunt | quote }} + {{- end }} + {{- if .Values.littlelink.snapchat }} + SNAPCHAT: {{ .Values.littlelink.snapchat | quote }} + {{- end }} + {{- if .Values.littlelink.spotify }} + SPOTIFY: {{ .Values.littlelink.spotify | quote }} + {{- end }} + {{- if .Values.littlelink.reddit }} + REDDIT: {{ .Values.littlelink.reddit | quote }} + {{- end }} + {{- if .Values.littlelink.medium }} + MEDIUM: {{ .Values.littlelink.medium | quote }} + {{- end }} + {{- if .Values.littlelink.pinterest }} + PINTEREST: {{ .Values.littlelink.pinterest | quote }} + {{- end }} + {{- if .Values.littlelink.email }} + EMAIL: {{ .Values.littlelink.email | quote }} + {{- end }} + {{- if .Values.littlelink.email_text }} + EMAIL_TEXT: {{ .Values.littlelink.email_text | quote }} + {{- end }} + {{- if .Values.littlelink.email_alt }} + EMAIL_ALT: {{ .Values.littlelink.email_alt | quote }} + {{- end }} + {{- if .Values.littlelink.email_alt_text }} + EMAIL_ALT_TEXT: {{ .Values.littlelink.email_alt_text | quote }} + {{- end }} + {{- if .Values.littlelink.sound_cloud }} + SOUND_CLOUD: {{ .Values.littlelink.sound_cloud | quote }} + {{- end }} + {{- if .Values.littlelink.figma }} + FIGMA: {{ .Values.littlelink.figma | quote }} + {{- end }} + {{- if .Values.littlelink.telegram }} + TELEGRAM: {{ .Values.littlelink.telegram | quote }} + {{- end }} + {{- if .Values.littlelink.tumblr }} + TUMBLR: {{ .Values.littlelink.tumblr | quote }} + {{- end }} + {{- if .Values.littlelink.steam }} + STEAM: {{ .Values.littlelink.steam | quote }} + {{- end }} + {{- if .Values.littlelink.vimeo }} + VIMEO: {{ .Values.littlelink.vimeo | quote }} + {{- end }} + {{- if .Values.littlelink.wordpress }} + WORDPRESS: {{ .Values.littlelink.wordpress | quote }} + {{- end }} + {{- if .Values.littlelink.goodreads }} + GOODREADS: {{ .Values.littlelink.goodreads | quote }} + {{- end }} + {{- if .Values.littlelink.skoob }} + SKOOB: {{ .Values.littlelink.skoob | quote }} + {{- end }} + {{- if .Values.littlelink.letterboxd }} + LETTERBOXD: {{ .Values.littlelink.letterboxd | quote }} + {{- end }} + {{- if .Values.littlelink.mastodon }} + MASTODON: {{ .Values.littlelink.mastodon | quote }} + {{- end }} + {{- if .Values.littlelink.micro_blog }} + MICRO_BLOG: {{ .Values.littlelink.micro_blog | quote }} + {{- end }} + {{- if .Values.littlelink.whatsapp }} + WHATSAPP: {{ .Values.littlelink.whatsapp | quote }} + {{- end }} + {{- if .Values.littlelink.strava }} + STRAVA: {{ .Values.littlelink.strava | quote }} + {{- end }} + {{- if .Values.littlelink.buymeacoffee }} + BUYMEACOFFEE: {{ .Values.littlelink.buymeacoffee | quote }} + {{- end }} + {{- if .Values.littlelink.gitlab }} + GITLAB: {{ .Values.littlelink.gitlab | quote }} + {{- end }} + {{- if .Values.littlelink.patreon }} + PATREON: {{ .Values.littlelink.patreon | quote }} + {{- end }} + {{- if .Values.littlelink.devto }} + DEVTO: {{ .Values.littlelink.devto | quote }} + {{- end }} + {{- if .Values.littlelink.umami_website_id }} + UMAMI_WEBSITE_ID: {{ .Values.littlelink.umami_website_id | quote }} + {{- end }} + {{- if .Values.littlelink.umami_app_url }} + UMAMI_APP_URL: {{ .Values.littlelink.umami_app_url | quote }} + {{- end }} + {{- if .Values.littlelink.paypal }} + PAYPAL: {{ .Values.littlelink.paypal | quote }} + {{- end }} + {{- if .Values.littlelink.slack }} + SLACK: {{ .Values.littlelink.slack | quote }} + {{- end }} + {{- if .Values.littlelink.lastfm }} + LASTFM: {{ .Values.littlelink.lastfm | quote }} + {{- end }} + {{- if .Values.littlelink.untappd }} + UNTAPPD: {{ .Values.littlelink.untappd | quote }} + {{- end }} + {{- if .Values.littlelink.stackoverflow }} + STACKOVERFLOW: {{ .Values.littlelink.stackoverflow | quote }} + {{- end }} + {{- if .Values.littlelink.gitea }} + GITEA: {{ .Values.littlelink.gitea | quote }} + {{- end }} + {{- if .Values.littlelink.polywork }} + POLYWORK: {{ .Values.littlelink.polywork | quote }} + {{- end }} + {{- if .Values.littlelink.signal }} + SIGNAL: {{ .Values.littlelink.signal | quote }} + {{- end }} + {{- if .Values.littlelink.footer }} + FOOTER: {{ .Values.littlelink.footer | quote }} + {{- end }} + +{{- end -}} diff --git a/enterprise/littlelink/7.0.0/templates/common.yaml b/enterprise/littlelink/7.0.0/templates/common.yaml new file mode 100644 index 00000000000..214486b3b19 --- /dev/null +++ b/enterprise/littlelink/7.0.0/templates/common.yaml @@ -0,0 +1,8 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} + +{{/* Render configmap for littlelink */}} +{{- include "littlelink.configmap" . }} diff --git a/enterprise/littlelink/7.0.0/values.yaml b/enterprise/littlelink/7.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/enterprise/nextcloud/16.0.0/CHANGELOG.md b/enterprise/nextcloud/16.0.0/CHANGELOG.md new file mode 100644 index 00000000000..7d7d635c2ac --- /dev/null +++ b/enterprise/nextcloud/16.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [nextcloud-16.0.0](https://github.com/truecharts/charts/compare/nextcloud-15.3.17...nextcloud-16.0.0) (2022-09-24) + +### Chore + +- Auto-update chart README [skip ci] + - bump major on new enterprise app to seperate helm updates + - Add a copy of Initial Apps selected for Enterprise Train ([#3749](https://github.com/truecharts/charts/issues/3749)) + + + + +## [nextcloud-15.3.17](https://github.com/truecharts/charts/compare/nextcloud-15.3.13...nextcloud-15.3.17) (2022-09-22) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) + - update docker general non-major ([#3787](https://github.com/truecharts/charts/issues/3787)) + - update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) + - update docker general non-major ([#3827](https://github.com/truecharts/charts/issues/3827)) + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [nextcloud-15.3.17](https://github.com/truecharts/charts/compare/nextcloud-15.3.13...nextcloud-15.3.17) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update docker general non-major ([#3827](https://github.com/truecharts/charts/issues/3827)) + - update docker general non-major ([#3787](https://github.com/truecharts/charts/issues/3787)) + - update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) + - update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [nextcloud-15.3.16](https://github.com/truecharts/charts/compare/nextcloud-15.3.13...nextcloud-15.3.16) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update docker general non-major ([#3787](https://github.com/truecharts/charts/issues/3787)) + - update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) + - update docker general non-major ([#3790](https://github.com/truecharts/charts/issues/3790)) + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [nextcloud-15.3.16](https://github.com/truecharts/charts/compare/nextcloud-15.3.13...nextcloud-15.3.16) (2022-09-20) + +### Chore + diff --git a/enterprise/nextcloud/16.0.0/Chart.lock b/enterprise/nextcloud/16.0.0/Chart.lock new file mode 100644 index 00000000000..5a2773a8306 --- /dev/null +++ b/enterprise/nextcloud/16.0.0/Chart.lock @@ -0,0 +1,15 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.6.0 +- name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.78 +- name: collabora-online + repository: https://charts.truecharts.org/ + version: 12.1.41 +- name: redis + repository: https://charts.truecharts.org + version: 3.0.75 +digest: sha256:77988883d5b70afb363971b65b3c0adb7b8994c3e0217ff9dce425d3ed2a7f3d +generated: "2022-09-24T21:35:57.958721531Z" diff --git a/enterprise/nextcloud/16.0.0/Chart.yaml b/enterprise/nextcloud/16.0.0/Chart.yaml new file mode 100644 index 00000000000..e4ca1a61f5b --- /dev/null +++ b/enterprise/nextcloud/16.0.0/Chart.yaml @@ -0,0 +1,45 @@ +apiVersion: v2 +appVersion: "24.0.5" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.6.0 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.78 + - condition: collabora.enabled + name: collabora-online + repository: https://charts.truecharts.org/ + version: 12.1.41 + - condition: redis.enabled + name: redis + repository: https://charts.truecharts.org + version: 3.0.75 +deprecated: false +description: A private cloud server that puts the control and security of your own data back into your hands. +home: https://truecharts.org/docs/charts/enterprise/nextcloud +icon: https://truecharts.org/img/hotlink-ok/chart-icons/nextcloud.png +keywords: + - nextcloud + - storage + - http + - web + - php +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: nextcloud +sources: + - https://github.com/truecharts/charts/tree/master/charts/enterprise/nextcloud + - https://github.com/nextcloud/docker + - https://github.com/nextcloud/helm +type: application +version: 16.0.0 +annotations: + truecharts.org/catagories: | + - cloud + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/enterprise/nextcloud/16.0.0/README.md b/enterprise/nextcloud/16.0.0/README.md new file mode 100644 index 00000000000..a0c9f40f6dd --- /dev/null +++ b/enterprise/nextcloud/16.0.0/README.md @@ -0,0 +1,110 @@ +# nextcloud + +A private cloud server that puts the control and security of your own data back into your hands. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [nextcloud](https://truecharts.org/docs/charts/enterprise/nextcloud) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://charts.truecharts.org/ | collabora-online | 12.1.41 | +| https://charts.truecharts.org/ | postgresql | 8.0.78 | +| https://charts.truecharts.org | redis | 3.0.75 | +| https://library-charts.truecharts.org | common | 10.6.0 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App). + +### Helm + +To install the chart with the release name `nextcloud` + +```console +helm repo add TrueCharts https://charts.truecharts.org +helm repo update +helm install nextcloud TrueCharts/nextcloud +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App). + +### Helm + +To uninstall the `nextcloud` deployment + +```console +helm uninstall nextcloud +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the values.yaml file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the command line + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install nextcloud \ + --set env.TZ="America/New York" \ + TrueCharts/nextcloud +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install nextcloud TrueCharts/nextcloud -f values.yaml +``` + +#### Connecting to other charts + +If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/enterprise/nextcloud/16.0.0/app-readme.md b/enterprise/nextcloud/16.0.0/app-readme.md new file mode 100644 index 00000000000..aef2981f632 --- /dev/null +++ b/enterprise/nextcloud/16.0.0/app-readme.md @@ -0,0 +1,8 @@ +A private cloud server that puts the control and security of your own data back into your hands. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/enterprise/nextcloud](https://truecharts.org/docs/charts/enterprise/nextcloud) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/enterprise/nextcloud/16.0.0/charts/collabora-online-12.1.41.tgz b/enterprise/nextcloud/16.0.0/charts/collabora-online-12.1.41.tgz new file mode 100644 index 0000000000000000000000000000000000000000..40e6cce2b4d63d9f46157de8809c3ff8dfd9b2af GIT binary patch literal 59654 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 P009606#Q=o01^fO`$-F4 literal 0 HcmV?d00001 diff --git a/enterprise/nextcloud/16.0.0/charts/common-10.6.0.tgz b/enterprise/nextcloud/16.0.0/charts/common-10.6.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0308b85a1a8c5cdc7a0461f210d9fce394ddcc94 GIT binary patch literal 48413 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
KPcWi?AjRt8dcO>Kj{^;Y=)xFUwY} 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 literal 0 HcmV?d00001 diff --git a/enterprise/nextcloud/16.0.0/charts/redis-3.0.75.tgz b/enterprise/nextcloud/16.0.0/charts/redis-3.0.75.tgz new file mode 100644 index 0000000000000000000000000000000000000000..3be8a6559921158fc71eaf1190bbc72270f72b7e GIT binary patch literal 54027 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ఖ?@+WSb3LqH$`ITpHY0lSlRPhsvKO^W&&cX2v z{2c^>zLyIHk|R3O+wZ%}MJqXB7!As-(>ki{y6Nh>93K}|9&I$JzgM9ScS7d-Dty{6 z!r(EUre)5YcXtmt=4I8;rduc`r4=QGw;70`4RCx4Cy-&QBO=J2wW%Fq)DTa&r?G45 z5q)C5CQ&Yq@|tuA>7$fTk5kFBAlYBXszOvmrieS=ky%3LWmtZqy}Khe$j*MU;?`MH zD9NO4kTM1tQ+ybdfGs8hv!;FNfCjl^-t)lLM38^u=F@;{Vk36i;ai^g#hf`}As?JH z=HP~?^BUQ@3gnSs(%a%ck>SOukO<46_La-}$;a6g#nA=H3m(PQlCK{GdDjoi*Uc1? zRb2Ex%BA>OPy|&fDLPQR^#JfaOO(R(R04;_tVLVyG2sVDgpUxq?*3Cy07``I?@D zDE(`b8v4m%!gScOVb>9zG026GV=ZEg|^OYl37MA!0BYH4+(TyppKOEC+xJh)QgOz&=g4k2) zQSI@p;ycBR`8F}?7hMl|uMyLpu436S^+^SjgT`C=8G^=HAb4pK zW#+O+I31~h+`gR|^bQuNKrQcX%^?U)75(#=tNPwQQ>}wr%SNHfB#nH|Ivm21S!;f;Me`Us0hA70Srwn_XL{s2yJbGvLTcRUvrg0VKu-W zkXIQAg!Mg2Aud$?8R>;VUWa!U*JZ5j#T%Op;fNzbr~I@NscVFAeEZG5DVs78>W|@3 zIJz4IGT35fN+c%^KSJ2O#s`lh+QEhfA>ym2rUyIRR`?O%(+A0hd#Du>CIS~4~hD$^J1%p#uQp2 zk0#2rftA&TT3AEbYi_8`$Y44zD>8zuQH?V;PWr#!n_IzLWP_^U>Z>O2dK(2GCNpxl zHSCDNW}X2VU(ygoNZ4WtkS0y8k;V~8H#KNTzOpP54j$TqvjaUfVb)k|`WXpod*^T% z59bKQs$L^eDha)R*RW!K3<2kENJvS0`W3xn;w-`2&qL!3O34aH9y$ZP@j5-F?TtF3vIC$N$mgrNEPB^^iJ`T3Sy8Sw%sLg=Rr;-G+$;#eW6lstNXe$-K_ z5-7v@<-T`ZR@F8^$nB8r#@}jLf+NbABe*U;3R>9qEBWsqX0Nzkn5(;KlosY7oLWqRp>fJIK#=s%tX=ps>__mBo6IBH{4}0VZoyO)RITj&WR{aLL@qxT} zF>ZH2Ku*GEY4ii+ioaxkJiVDPgSH0w%&FP}#Ai@G(aHU4K80m4mV`*?#<1>!jUA4fZL|Hz(-o8aG-(tdM;My zzSoq$1D}vT(`!e z#;?vbsVrrpNzZqMt784yiZB>S-I4K8xkH=ATQ=&%a74^r`xDOHy|*QIcn3Qargn8X z#-&x(+uFPGF<_$3iawa_F=#K|(*;6|K||;Y7^WMgMlZww(3n3q!=9Sbhkho!8z345B6m{DIw3Fx~2nyJz-1jgwHZx-G+;SkkD~=NL|rd z8dqXm!pld7A((HibBtSNe^U;3YUtL)oj%XLeGQ{I{KDsh%6h2?6> z@pBL8r^=C{6hRF%K?Gh$PreJi?f1E)0v`c64!u-GSX6-Vmqa|58>0XU$Bup@|3cod zd_UM@+RG~+NRN^@7wkxegL!BKF&5OZY95H#!dI2JJT&D_NwN@^{LWB7-7|97Oja%( z?7LH-`O7ziKRPEsBA5RxRbUvm8BvsIg;0M$Zn&v9DS(zgiGsb`S^5?9!Y-T@_lLb|EIl@wdnAugUZcd+t8p>hI{f zZg&~`qK418_IUOs>czDV-;EQKJpuoI#;E-;j;JS4jZ)iQ-19xhd5*$)uGE(2W(DUN2MzR}@}}(PfS(+V z2D1}6mFZnAlLB1Ys~yWxSPCSh+%|VFFFSdkwnA-{QnAFE&c_QPbuFHqA| zZ2-Nb;4w(1aS4_B3S8({(`A|6I`!}Mm?}G)kvbzZe>IF>dT~{>FPx^sejr4(mj?!1 zgwA4*yjzUyyvk@`k+n*b7*tbzkq}kRBKmPEgEo6HH-*ne5@WlKn^}adD?9R_KIq`L z@r3A|G>xaO!msSb4WSzD)duo2Qqo1ONes8f<~gAnO$MgVlIGtgmfRJ;=1E)6|AoBC z^vDW1mD5x=VS=1R_->)p_k@DNg?W_Y?>e084vFk-JR;TCY?-Yy<#R^9)7DQq>yunW_cE)^A z=8mVDK!LV{wG~2pUE%_ci3LXV&%SKLAi^H6y*>ZGfHI zSrPc#_Z9)p0{$hw`gcujp5><20421kgbERvu=xeCbUZVWLDe_wvkgzF2d}3XG#8!U zqTZI9*b&uqWNMGl?2QgzF!ty%M>}HwQ6=$&qTr1-McM<@(WbF!*R+#A11U(01@0?P zI-wZJWAL)(c@!lK9y7+e^ry+6#RqhK79+IoGJFba5!`rBkYd*A{(U*IiwuryG_4LZ z4}~t-UE$kZRoamd-Ve~o1bUBC2OFXqiYQw*pln^q{0L@ncs5m?wI>WkBh_y4QYJXh zS-S#+YlIB;G;*a>L&t;q2d6VBJwTo_fJgKfi9A6%PgQ555Os|wi`5TQ>S2MjlY2wM zrxB}+hGL(4Zm@es<*POHXksp+k9@Binwq}cCX$bOYf^Y=Ym;}XALMXgx&Vy5lbGg= z!KinYghK&zI}(mxruBDIT(Q;aQ7<#?lVa7ACPQ)fE^pPk0-uHZl1SOfwU&)yFVQ-P zJ@w=t!x1-xE^pDq#08V{l5flm2D9d&XoRge#wJ1a(VXNfHsCC`X+3 zlbypb_XIW*mD$n)P!A9jkJgSXizhFTj0ih( zhbbXuy8K=@NEhr*Yu3UYql_>RM@UrZk<$wnep#|HBb|Ne6cz@sL1*Oj)*8VgE|pzY)$Y_UYaugC7>%AVg|QzLRp#lwW_6P#1y z&WH#;2Qi$a!#6mgX~yJ0JPMSSWk-mojkU?%<`bA|+|6E17f7Gkjj zz9|^OQr`>kXmGXf4xav{nd)uU1YP^DSMxihPdyS63>un&ZQdL-L{&5k)DR=FypX1F zcPp52T2Yt*?%+`x?Et^2GJ6=~d7RAlr9EMr`dr?l>{%*bk;OHd8P(>-$Fz#0&;7?o zpnKozpHFrt4%{{#bjNLLo7vXclU8#|CR*(7UDm25=dC0%iU0rhCHuyq)?NeRQ9;XL zUm6we_shRY>-si_Ef%AfIVBrUF^nCZocnH()(6V}<|338afj0ev3xX_9DM(v6zI@_ znU(HuN)O?UfPodyc@B$`y|<3`13C>h&w?8ek%Px!Y70qYVq&V}73gERiJ9@;EN&sk z(!yW<4H;TBF(+<+K|@Ut2x~hZ}=Pl(0so4m}j;!!wrm(pJuLwId#LwkXjwYMuQxV0Ea~ z>jErm0;=oYrcS*F%K_UFS&dPici;XrbWL)p4PzdcAbguz+)7#Nb#kBKUgNK8Y28GJ zDIpE78NIA=8o0@>=l2dpzdnmi$>;}N!TwfQ`y|D$V6<_e3iDrYbd>Z8HrY7?S1cPV z=pNQRuSP!233l7A7vS&%Vz`z!avPgpr5!-;ubK14vk!&An!ssbPHa z9##tSSA`V%{W=_7C0b{tyxrBeKrWF?j9H-O<^Cp1*zf&95b@?z8>sNCN3Yk@EW6CD z+TL9;_bAV$kcg~#%fk<+j1~Dn|JRLQX_Wp55-$%=0zBdaIS+m?zEOn9r+Qo4;GFPH z+t1i8&g*8SEIKBGv3(Y>Sl~x2Vk8F;43UvvW(~EWtH{kDquF@X34lk9 zEW%FXn2B{(+y*auS=!=)F4@jo#Uw5KLpjX$1L7x@^aWUdE zjwMr|U(CE$3jWemt4AiuHR2?~Jag*XGk&beh~kRVdUV}>&F&LHxt>u54uz?@ja7 zr$HKmU}-AXwaT(7LxRR|4uH`i@szJlhR|AalMFum#PbD*bFrS`^lhuh8?*cq@3o5C zlc7gtL_FwxqMvli9;6%soLnxs1kTxD_C8=91yZmI#F%6jN)n|N~!H0%foAw6kL49vj}(+v{ka=bj;_29S6Mp_oyfs>dArNef&xO zE{V!bE`!&KMB_6>)odKI$@$?WNPk;Hkxtp|X?=zjPuZO;l@eRl=EawDs571x+;e8w z33#karck65UETI(a;WW^Y4-iU#OHH1=)$64xC98eT}Y#yv;R8y9BlD83C*@SZfARt zOK_}rV6SuA__kJ(igr%Se?~Sj*#M^#4mkv3geeUp z$68uN+nmxFO+saU*xM+_x+eavN?%AZdDu8dRA=Qe`FY=&`e`Jl@@rHpIXd8yGmEM#LW>P#X^Bnd_GzVH3%veuBZuTq%b-{|&hEpL(b2xbbf`nq%<@Y+ zij%JPqU1>1TbAcN=`?cY4u^`2nl77$_LCC|o*ZkCML{Tz(y_UZX;g=%oaL8l6sL&3 z`#(DtyOMIG5=Difo^Fy9 z5rPpvv-<$-B`iD@h6rx?+k9%l@#V%<@IG=DH;KPQ{6VTBByc2Fc@@e7L3i>4nNS?< z?J!?UYAhHj#hz-05%F^@%x{gPzn6SR)tO=}MFW$WKdDddHq-HZpKR_2inmy;rNUf% z3-}3s2|a^5Eqk6Vjg*H|LW{Gw!Bl0nu?RcK`@Qt)9^%ZWVA? zd!^GE>=h1M;uQ`Kh|CacLzSNS%2Q?{`3zohSj^ z97vNyZDQ=9HF%{)=Xj<0==&V1CRq!T=H%AFypRR{KfAG4k1I3j2t|?-G~1+;zvTtV zus2(>I1$u{X{avLxvDPAghdck003PPgy{Ccz~{Q3GKwC1Vfr|GI6J(ubm#eFEXS4bDg2!d zw(8TCC(?Fh>2bcv1sl%)ii+E7DVto;HOnk}bbr(4|Dl9fwkWMN2qUrf*l^nswC8U! zC?^+e%7K9_bPtie)-?WN9tsx9#`O)`#|prs#zM-0!0S!BR=8=3nQ*fZ`nWL0-opK~ zYJ6PERUc$|B(%qR7?KQ_6l0cT5LPWIr9zjcE3#}s7{CG?TdrV#8U3>n^_c8tC4hA0 znCLoT$8Z4q8YQMwj=xTM5}^bCf(Q+eF2BC{hN@SuGLTZQ(pmEN=Iv=%dNT^1Ll7go zr>k=cCppfcSd!IFEhZ!#J>%YxJnd)&gw)Vh82zKASHE95$;ny! zp<+@6?5Ru&n_V&CTevhPr??p1M&xX-R8l=_Q<2anleI9H}mzXEzXUxd| z=5MpY1$uE}t(Y_uj(=I3uT~rNdqia6^cUpA2mV8of`e)`O#VaX?`$FcJcEwTX-kN1 z2DOix97el}z>m+w*wBn&brPpyV{s(MgQQHlH=7z8fvQ>$8Jb}S7-dT+(V83ve`B( z)|nkF6S%3VMduE;ChjUnYTHPJD05VSLN7@zYf(;2k?J_~%IVT(H*8g1{ zosna-@PJilj!5^kd)lo2*QL6L*<4%mvDAza(~`<1mze2;c6Gd{2rydF69|U-D`7 zwthe$vwiTYsd*)vz}Ve7Lhsp(JR{s~!xs3u()=ml8h&qO<0QyA__}~~>@#v3g~}sx zk1Y@3i;CAnXd6@32^=9{qxku^%%R!ab23MytKDDDldNDdo9F%c>P~bRvEdb-?!{kN zxIjpy+o-Nb zetnM}O5v-OtZpocu|!&fvzAnBrDJAQ!9c4brbN%F)Dr$DX64u8Fy}0i))mVmCeixm zzDj5}yItkAysM9e^$CB92qq!+IS<=6cio3ItU@cDAAPd8O`s$u=Dwe11e!PUg(50~MOFD^qCzY_pwse*;{+uQw;_it4SaHRF zUC3uwTtACa(X+@R;4@J;-f?QY@i##y&a*HZ1{@k$)nhXAHEIbA*TaqMtW2dki7pBB zhXaF!(ZU1FWD*4(3v7vr~g@i_AEK4@Fw)*K>#T3s09iDx!}dj$xH6*{}-$}w8i zCZBAUo>KmBPQc+#j-Z!Zj#ukfRl4*=(+46<=JD7*XK$>foU)3w8O`M;$QvGwg$%OE zr5nfXfxT9t8w(HwhZ1!#HDvJFW?AVFT2!p_s0<9#xl>Q`OhM7j{~<%I?EK>re{6+* z=Nck52$_wJ^kQ_Y%XdFzISfB6W@8^^ik)48OW98GCsv{_Xu?q=gShG-{@-vf2Rn-{ zu8{(<`gT+GA~!43Kso`AL437lc8LaU@z{7N#VK^|#m5!lFherfYC&a0Inj>%87Kd= z>jmEwr_*K`yOmGj)SqqU{O@1kzlvjK8UKb+z?<1k$D(c%7ZXeKBT@`diF4P7aLb)I zU5x+wUf$H&X%`k;wl<$3xNw=C!){S(`%Qw5Q8cwK?B$1jis!*fvWGaviLL89xDXfN zC7$CCv0nNVnlYo%O+;;h)K2Q)WB&k9m3fwpIvEOk7=C-Vo$IvR=lA)mS22MP%Y}R* zN!DtVTK)gRMI_wu1<+#jYnL;lBtL-qwH9C7q^PidXR#rlTOI;<3Z;H$k5YwS2TFO* z!Y>TDYO+RmrCVK2>Cx{&0^9!1p7Me416^IImC}RYAun73V<9$d++zsYV{q+u&^4?= z=8&TO#G>->^xY9Uo9QpfJr;j#DA0;L!o|}3@suMHPU!LwvyONKd$BfZ97iRb17GrE zs0Ps`&`nRg6F|9wC$N7g^4;NYHgtwm+36mv8o*}^44cd;r{IzBqxbgSjx~VuW}TS2 z;fTd}jq=Y=U+wJ@GJj}gm3odzL0b&^ z$92osSuo%+N7=?qL?r(Bipp!7=l(W-Je>W$;J1x%LxQ?cco?L;VpMV|MF4zg%Pf*yw6A^$ z$_RyE)B(NpEUtZ?lqYlUH?~BOV$l%v zQ@;{|LbftkVu0`;dtF_;_rBn{y_^MPJ!@DSJ5+DD;b=isX*ENer8|i(i)>^)K1XOT zjOB!2h0%*^3Vje%A0MRbZmT1vkSr4anh^Dc{fxNd=b^QNU)5~rp0PLc6*QzvC{q8R zesg5tQfkLvoH$WEG1Ud)u)YGr*=Hw6hhP;-tfWQ8sWFkXK2gHwm>9;H-}Y~U8O)ON zz^V$ssEi?;0uhSza-jkZXsCS`^(p}IkC1y_zLy5dhW6l!PHr*FHUjr`7JYER*KEmJ9-BWJZ<9jPQJr-u7pQ;NG~gU zie5s7#vjWKBI{;~K4x7R4I_S9{<{RY{`mn?+znqz3^m-b37BAjj_8Wv7h8}~1l}QY zk-;x)i9_=5C0sEFi-7@{Lu)Nl9>4sN|7Sti)3rv%oNz3;gXxDLHgHzFsT~44*ze`f zDJO;&_IzbUfGPv!ey$2&9`RAlU8bQXK3vmHP9#-F6-P{^wzn&*c(}hlN*lS&8xQ}w zL{2j~)82M4?vwdLWJuqm$&A+7k3|{0<=wG6hGlBZGHQzYOl4pI>{X8@bk-nx#of>{ zD$B~$??WXLg{h`4x;BcS{)Q-Un;%4>&dws@-lqi8p6iI>j`xZ<*<7k@O@~v4p;IIj z4#D4{H&Vp~xt#H$QM++a$;5H@(hiNRa-jCzv!eG%S}^VaMe6>T zXO{nUMkSabh)xb-YQw|(k8UERBs#)@3{`SIphgQ6kt$xs(@bR!9c2RGop(I=tq%(P zGHDxCr{m7TQY0(D^ffJBSP~B_K@^pZYzUtDCxVR;OKmzt&E?0)d^f4mVc5R&?>PaA zvp7HaN>boQsUxA7MqaDQF)wvuYGoX0SmJRT!QE}Az5){ojj0Sd3aMemL0(dM!nqWA zI^rUqo}q6g`0|z5uh2}TL?nQW*Vtlm7FI`tG4zt@6x~hbaTY|^X4XH}bZ5oj4`FAf zkwwR;!$*Rtzf8GU)SI?7Lvc*XtRhDr{xo9W(y}3Eh+D$MVa_fWZD39~nE|SLBY;af z2R!Q6KYs3>@&6KPWpAe;QTfk#_*gPFv7x#L$>%JJXf*uY`-@IhnAaDc6gvl8iHOZz zyY?{IL%J|y`}U|IQ^mD>=mn1qU!r=FxVV$XoNjyK!VJdR6(+uSJ2P=4O#HD>+1Wgl zSl-OC??$dgw2$_X98^NQV1A+ecZ5@!p5E4~e02s>g_!yPOZ(#CK-(Ue_FdZ(4@w>y z2XhB!awRJdo>?Zmmq{I`D3U2RE0}*xGsw1itcZr{*QIy&IGeo>6nY*762fB@r$PN`P?<@7yYqRGR(w${pT}-7qZ+E%aP*x*oLXK+~aY zULjys-l|YUbWn#kvK#9z(c277e5`Q>Ny!%kbS0Y9J&HDB>l!(`#W8?}T7-rIobQ8r zU@-tN6M#OHeGzRsXB73#WvaBm#4Vg6Ik6IKE?UFLLq_z1u;upkB5+2|=q&l|Lp2YL zAy5RY9?D2qX+e(}`ptWnrYdw{6I;KUAQ?WV|1XOBq%#%rmqWXM(CvY#V^rYoNg1pc zTy#hyU6w-38#`815a|E&VPyXcYHRB4t1Q;gpL%4VaJ`R`=Pvd$K!}(Wxw3qB1z&=T z`2Iho5vIw8hY1xMKRf$Qgj!!f6|Ia9UPQ_PtU7J@%l{?O>0IzpV0cWwZc^VH>AxNtbtTtdJq)H%Ea#N%=RUy9+oB&Fy3!H#- z8-;pgA8_r#MnWXE!Y?W{pyNV_^t%fHMw2*;lyBm}e;fPm!;ulanp;>%plWtc+bB+7 zn()0Tm&7*xrvzob2||{cwq?Ah!EKvkaLU*WQ>I%)qYwj~s}{MI19$LLr7iwOzCyPT zbMR~~beND_Mmt}%vdd0^?1Db|)C>Ms!)d1G$(c zB za=E*0nz!PErZ5mm#^z?jl+yo_mwARL-@r?w=DUaGt_o89LpC^>b`0(zMGH7I!}iFq z4w2LTjFfgB_9bnCFbYJif}3TyP%SCiXebS9wLI18{~`u~EM?Lhx`%>+J6P0DfD)K?Dpg9qiVm8~= zHMp@U^26G`A>svPX8rv7ennrR`~HV-t0itOc6d#R#P3D}^aE2z|*+9H!>B&gM`oNf$5ll6DUsR8Z0Q+Z^{ zVQ-?|otf??QF|Z3yQ7*4gpAr>M3R~ojYSoHQVeEr92o4MFu5`ihAPjZg$_%sv7Jsi z@+U+RmJ*~lH>gWp-S1fX(h{Q)<3)-AY|Ho?c6Pb@x2G=*+l5!pAy*|c`Ol=nzVUDB zIjSg6*SyZQL}_IC&qF%iw_@Hr9U*!9fiWr7*82VSh4}hdcgXXiswLUEP0JMm;%8w) zzXTOL{`>R&kQuCf)AswzdxFQb;MQP%G4ZMf2@B=<`aka?+HgY;5KUhMeO;X2k> z8146IN-zc&3z9yXviCA^v+=zunV$a? z08ik!Q8X$NkqTJD91h&+0dvr)o=uv=b5P+?2CUxyncD04b%M!F5dQ9}kW&N1odRFr z5kp|5g4f9McU9T8?~DPFiz0B}gc~Td5C(@_tWBCeaB>JXp_}e-KR{hd)$oBTqxgAs5Ur*%eHs1Tm(TYx1U>H z-un%igVk`;_sPajCwwZ6G46>q63a5B|*^Mul zzRfr?Co1UJgCJ&>!jDUCD7wE~dtKB&&IhC_!ukjcA`_45D8-rQ(Lj_gDIK6ao;Dmi z8?SJ~ivA#c&0;m09RGu}8~g>aSLTeUauK;BS_6@oo~NiDr*p~?0A%)Be%k=;LGM@n zpkrU_oRY;83&dq=vdd+&Hq#fV@RKhuHWn8b;3!2RaU*6hiW)OkKdyBw1>gi9>$03m z3Q)tT0ym>I3TIEgz@=`bKH+r+gfZ=Z`WLI45jRPC5(y`*Vy8`D*_tn|n{}KokP*8y z_F0Y6-OHmJYX8co$C2t9Beg!)Bj3fWAcUYZ;QiA7*=e*yAXp36U-S)H+ytH8cBAi`yF^;uoGKx=1<2v2oyb62(11CMGG#`pH!u*d&b1VD%YoLnF$v`oHg}N zXf3b^$I;dk<8E?)5&HX>E@M9}YPwN&!iHgF{zUuh7ym$g*6qwzXnYjIxwcc$VXsto z*4j^P@E>q?cq+a%-e4Nilbe|gNn4qfFUo;o&v-h&wMeF^Ay2R|i;Ki-uok)1<0v^D z#%E3=Z2&U`7v1fin>FS|=nUn)L$W1+L%kH+LxF&GQHep@72+RjhJ%ShEsWl@-nhX;YZsQLRz+xN1tw$=?mM-t5xS9^Si-n6Oz6ZsGZ?=TZ)&Amw|H5^G`pjnO} zGf9(e`54|p*+(3*l~XWp5kF6wL!vZfZr|Q0^F=kmE4D)O=-K!3u77TuGux@NWez*#4A+-b99(!O1*&_CdqS-iJ{TZ2RMY}v7` zspZPUWzU_CUEi@$F!4tIEb?6Bhi(|5(byZ!XMyKUXF-JhIi5}?^T3;oyh${%Jg=DF$tSd>4cTgO$MvqM(mtSXah^agOXC8I|HThOT&|oc33X3QU9-L?Av41habc1cFLv@k zu@u5sxFp;MCqmqMC;1+chdP<#RIrS-3zE2WGu5Yih0Ou8UA#Bs#P{Rf;J0Jq`+
    yqaeya*H;sHd7}@j4o!PE889CSwUB?Tf5t@eH%pZ>?{yZ4ZeAnJjDmnct zXK1@7zh3xZ7UG^^Ix4e5<18Xnx}=qf&vjXw@!PbEw8c$~cciw1F|RQSf6n3@|C9#Y z@%geWsa*191}V=7u=s|AZy1P}p|CaMmdu)jSnYm96hCjSEh#c}p_0f3&;IMM>CE50 zD5V+-$XIz4He~$id1qVn2Sc%~XEh*d@sBH2texZ$id^qau-CgtizLIV1jXyN?dO{a z-2II!Ixw^h!_Gc9u}ebE>JDxh zMj=GDw+wHomg7jTR3op$U^Is1Ca;AHjen~Rsrh{VL#)z@5bqcgDg7ZUli`0BnC7ZR zts1L~tA6ojo2yRn;svT;lZy762u|DBKo~9uMz~GUIu5vgqcKUvrGYZ`xblL!i*Pxp zM4zgcan|DK7G0=QqGXNv{e(E7m=lA9*Xre>`kO@xN4z*RUTCb(VM=nMX^|uYBPGqd z5t+#Y>K*3;1E70ks7Ol*o?8-+y^qas;SDMcq6*%vb-35ApZPuF)%jw!N9=l zO}>2{X9M8~8+dQt+%}FaE&(2eW$jHmhC9ooTt!9wYOV>$5yT|XojMb_Zb*`ly!^>joP1LKBq7)xqyf^+K__6ZPu*Vq8(n@X`#t?zx$DIjwKN6aQQsw9fBu+JKV-*9* zY*>96fx2CloT+Jm$E*~c7Z~Czn3;p&BEn5 zO~-Xf)YS>2wOgm8BW1A}WFAT6azhZaesJ=e>3)_PhBJZ_P_nqCl7f zbHkBW*4rWA_Ft^GL-q9YFEztlu;q07_k1-`{sh~mT8+9l(Y#>q23j=aUc2WS-$&lC z(G|+Tr{8{tq!PuX14lB+i2<)FnDoj;RrEpn4S0od)-)ivwALDjanX8CAcGD?iJTbb zJG>^@)-1;xGV=8%qQ;Bsm+yu?0v!nlOIw=b^||ghgT52aQAu)za)Z4kj;cx6;&&Bt z()c$lb7b3&G#G*9P5c|?GQI*?_%@g>jR+&SYUYl00RXHBT#_v*;4Fj6h${o!%8;uE zgbYzD(V|WHa=h+N@jtrHL0jSVhHxY|(Qa+L+j>xT)D!AP5cSD+;yua)(%DxrcZIl5 zfAUH}pK`}%MW?m;1p7TJ(ywI33t^vX*FQJ|{Df)S8xp?U2@}$S*&(4UtM4BP0HP6l zyFWHZ2P2l{qls z_C5VQ_~8S^nfR_>zy;;XT=#1DuoTXa(#cV=P!-5>lypHhf~omgpP(`>U%b~mwJnME zMT`i%m1>$fZ&;wKArS#Rn%`xZ{<8rnE4ALDEYTa~TvGaifzBn<-atF8mOZg{HDbqw z+i9%YL+$EZ4v4lZU){~Nja5qkbOl|@8GBCXBHx?ZQ4oxs`N$3CqsVpbVD66W*(mb7 ziHmL5!8i(?AaF*`$VH*=jO@q`ngDGLsZ^9*7897+eR)n-{PaqeH3AhxQD)8NY)u9f z0)aRx!Zk(sK2K@s8WwvTgXM^Rgw>hPdPfQ%n+Zx`ZC8F3^bZeR?s=NIgs8-8gXbWdEZOM)c`bzP&{ zR*!mciFtdqVC_d$XbChQ6a#Ggl;pyDt4``0eWM0&R|{R^5XJipPDSaoqf?P>49}9` zUgNW@X?G)h*%4Z@J@F8&w%N(XXq{|pRUT!O3gz0>L^tB`ju9%ToOXN)qK(lhne8<; zX{7=!RKDoAluS=ND)p8+*_f;nZK=e`$0I=6_uHQesK3Yh)CnDFdscD%8J8A++b2IZ%=eU(#9Yf&TT$6-n5^LXI#c3$fX&5alD4*@#s#o{7 zI-53ng4YAc_DL(A^=|23HoXCRQhxy1lHL*75QlUfV1;*xcn#0`grfz#)|F479*Z;5 zrXZFPr$JIklnCULdn}IBLaB~X5UA5nxc9Ti6pLy9wjAF7f;;jIQ&MC>1J)4`N~wAI zyBTZ>^U@sKw!Jn7CU?)7m*(t;*!(;&MKr!v(y5l4*zaQVbH#HadCE|JYFuzcRN9f+ z%|%sP#jXu#6Szt(0OdAQ;fu+miIsK0<1*m15}+F(u;xCdv49&w>DDLVmNS>Vs2%HzivyxK z5o@Rf+pP8K;=`NQ!g2QD-OHQ*HZMn&o>>SCh7S~H#+%p13--dffz$ipJ<1G;u9Ivl zOxpc@5EZh>;`=zkcld8KKnV z?`Rz-aSP52GgRY^5y|H;waTM?p5CJJkl!rs#{>4S*U4ntW~ki&P{mD-f{zU=CEf_L zOyi@K9~cYBIeA^6MEoG&d(sUDIk3Gt!>Y^o9vBg^rSEU7Er5){5d2}%Q;!GiE!mXlo| zlI|Z0QmL?H89m5|XO%ebty>p})~#%ql;fuN(l`+D2Lo`$6pa zH|SGpAmjFGQ9(Vt!+AMV0j8GCpAXk>;VH~(?NF(&QaQ@*aK3BgmY9oL`I>WuJNhfC z9vUFZ$eP>FC8jYv0XM?3B)EhmLwOCAa3bjAOR6UkAXl!{nrESQ{Jq=&Vdw+^PZIVO zYobsn9BG}E>FY}WfeWK+R8-GP+ZCXu$#>|%CXWMW46R&Lbp%G(j#(q=?>TX3H`s?- zgp_khm90~0=46U(+M7isVnWxF`a-?lB=`kWuD(#N=Yxu_9Tqk>Z9>Kjf0y4kwRP=FUWiy?G^q@jKniM>=Oo_!0w%68Ts4$&sQV2gc1 zP&iaO{EH08RwtIY=H<~L3^58;1`cDmEv4XhxybBrrbxInJZ=pj3vLzc zVhf6W2j)TT)|X5DT9&1DaY>wp@qHW?C}CTbj}o#Rpd@LI)SdV0*2dmrkDucV{{VM8 z_MCfENga3aQ8H>j`Ka+Y;OIlWxszuLpO$zV%eF@L$g$_nSm9eu5gtb~+nKqu$qa{{ zJDvMpG>fKQG{ez2a{Tdh?2kqxe`Zgn*q%E+vi&ihMBZpVpYN26pMspdOcLWdzFXzg zxaQZtgvJn-+uN+bS5RMLkrCFBXV1QUp4JEa_!pIXq%Wku)LMrp;bGgh?TyFqzir#~ z|Lw6ieddf^$DT|^UsY><9CzSMDqM42Q$BRUG2WGs74f zISJ0#FK5q7-!t0*-N*RT+1X#=ii1^#qwh?)@RmBwBH7)=uWSK`gNrMw%XV0Gl_U{nX1^fE^`E%nYKq=EHMUvCAv$L~* z8}EtnE~XV_&(@M64dvZEOkZ9OcYXd19LqIWa%9Up1PSPm+NAlTyY1WO+vnTo+vmZb R{{#R4|NpzbO{f551pq}6!l3{F literal 0 HcmV?d00001 diff --git a/enterprise/nextcloud/16.0.0/ci/basic-values.yaml b/enterprise/nextcloud/16.0.0/ci/basic-values.yaml new file mode 100644 index 00000000000..0e1ca145546 --- /dev/null +++ b/enterprise/nextcloud/16.0.0/ci/basic-values.yaml @@ -0,0 +1,11 @@ +env: + # IP used for exposing nextcloud + # Often the service or nodePort IP + AccessIP: "127.0.0.1" + +service: + main: + ports: + main: + port: 8080 + targetPort: 8080 diff --git a/enterprise/nextcloud/16.0.0/ix_values.yaml b/enterprise/nextcloud/16.0.0/ix_values.yaml new file mode 100644 index 00000000000..7c23c2a1bd4 --- /dev/null +++ b/enterprise/nextcloud/16.0.0/ix_values.yaml @@ -0,0 +1,457 @@ +image: + repository: tccr.io/truecharts/nextcloud-fpm + pullPolicy: IfNotPresent + tag: 24.0.5@sha256:1516301290268ff9738acc2c669e8a4fb8f8f78dbb64c0b8f36ef4c791c9f568 + +nginxImage: + repository: tccr.io/truecharts/nginx-unprivileged + pullPolicy: IfNotPresent + tag: 1.23.1@sha256:bb6daed37713a1870831e7fde3e6c281419ff522bc244926661777e592978639 + +imaginaryImage: + repository: h2non/imaginary + pullPolicy: IfNotPresent + tag: 1.2.4@sha256:7facb4221047a5e79b9e902f380247f4e5bf4376400d0badbeb738d3e1c2f654 + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + fsGroup: 33 + +service: + main: + ports: + main: + port: 10020 + targetPort: 8080 + backend: + enabled: true + ports: + hpb: + enabled: true + port: 7867 + targetPort: 7867 + hpb-metrics: + enabled: true + port: 7868 + targetPort: 7868 + fpm: + enabled: true + port: 9000 + targetPort: 9000 + imaginary: + enabled: true + port: 9090 + targetPort: 9090 + +hostAliases: + - ip: '{{ .Values.env.AccessIP | default "127.0.0.1" }}' + hostnames: + - "{{ if .Values.ingress.main.enabled }}{{ with (first .Values.ingress.main.hosts) }}{{ .host }}{{ end }}{{ else }}placeholder.fakedomain.dns{{ end }}" + +secretEnv: + NEXTCLOUD_ADMIN_USER: "admin" + NEXTCLOUD_ADMIN_PASSWORD: "adminpass" + +probes: + liveness: + custom: true + spec: + initialDelaySeconds: 25 + httpGet: + path: /status.php + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + + readiness: + custom: true + spec: + initialDelaySeconds: 25 + httpGet: + path: /status.php + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + + startup: + custom: true + spec: + initialDelaySeconds: 25 + httpGet: + path: /status.php + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + +initContainers: + prestart: + image: '{{ include "tc.common.images.selector" . }}' + securityContext: + runAsUser: 0 + runAsGroup: 0 + privileged: true + command: + - "/bin/sh" + - "-c" + - | + /bin/bash <<'EOF' + echo "Forcing permissions on userdata folder..." + if nfs4xdr_getfacl && nfs4xdr_getfacl | grep -qv "Failed to get NFSv4 ACL"; then + echo "NFSv4 ACLs detected, Trying to override permissions using nfs4_setfacl..." + nfs4_setfacl -R -a A:g:33:RWX "/var/www/html/data" + else + echo "No NFSv4 ACLs detected, trying to override permissions using chown/chmod..." + echo "checking ownership..." + if [ $(stat -c %g .) -eq 33 ]; then + echo "Ownership already set to 33, skipping..." + else + echo "Changing ownership to group 33..." + chown -R :33 "/var/www/html/data" + fi + chmod 770 /var/www/html/data + fi + EOF + + volumeMounts: + - name: data + mountPath: "/var/www/html/data" + - name: html + mountPath: "/var/www/html" + +env: + # IP used for exposing nextcloud + # Often the service or nodePort IP + # Defaults to the main serviceName for CI purposes. + AccessIP: + NEXTCLOUD_INIT_HTACCESS: true + PHP_MEMORY_LIMIT: 1G + PHP_UPLOAD_LIMIT: 10G + NEXTCLOUD_CHUNKSIZE: "31457280" + TRUSTED_PROXIES: "172.16.0.0/16 127.0.0.1" + POSTGRES_DB: "{{ .Values.postgresql.postgresqlDatabase }}" + POSTGRES_USER: "{{ .Values.postgresql.postgresqlUsername }}" + NC_check_data_directory_permissions: "true" + POSTGRES_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + POSTGRES_HOST: + secretKeyRef: + name: dbcreds + key: plainporthost + REDIS_HOST: + secretKeyRef: + name: rediscreds + key: plainhost + REDIS_HOST_PASSWORD: + secretKeyRef: + name: rediscreds + key: redis-password + +envFrom: + - configMapRef: + name: nextcloudconfig + +persistence: + html: + enabled: true + mountPath: "/var/www/html" + data: + enabled: true + mountPath: "/var/www/html/data" + varrun: + enabled: true + cache: + enabled: true + type: emptyDir + mountPath: /var/cache/nginx + medium: Memory + nginx: + enabled: "true" + mountPath: "/etc/nginx" + noMount: true + readOnly: true + type: "custom" + volumeSpec: + configMap: + name: '{{ include "tc.common.names.fullname" . }}-nginx' + items: + - key: nginx.conf + path: nginx.conf + +configmap: + nginx: + enabled: true + data: + nginx.conf: |- + worker_processes auto; + + error_log /var/log/nginx/error.log warn; + pid /var/run/nginx.pid; + + + events { + worker_connections 1024; + } + + + http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + # Prevent nginx HTTP Server Detection + server_tokens off; + + keepalive_timeout 65; + + #gzip on; + + upstream php-handler { + server 127.0.0.1:9000; + } + + server { + listen 8080; + absolute_redirect off; + + # Forward Notify_Push "High Performance Backend" to it's own container + location ^~ /push/ { + proxy_pass http://127.0.0.1:7867/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + + # HSTS settings + # WARNING: Only add the preload option once you read about + # the consequences in https://hstspreload.org/. This option + # will add the domain to a hardcoded list that is shipped + # in all major browsers and getting removed from this list + # could take several months. + #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; + + # set max upload size + client_max_body_size {{ .Values.env.PHP_UPLOAD_LIMIT | default "512M" }}; + fastcgi_buffers 64 4K; + + # Enable gzip but do not remove ETag headers + gzip on; + gzip_vary on; + gzip_comp_level 4; + gzip_min_length 256; + gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; + gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; + + # Pagespeed is not supported by Nextcloud, so if your server is built + # with the `ngx_pagespeed` module, uncomment this line to disable it. + #pagespeed off; + + # HTTP response headers borrowed from Nextcloud `.htaccess` + add_header Referrer-Policy "no-referrer" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Download-Options "noopen" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Permitted-Cross-Domain-Policies "none" always; + add_header X-Robots-Tag "none" always; + add_header X-XSS-Protection "1; mode=block" always; + + # Remove X-Powered-By, which is an information leak + fastcgi_hide_header X-Powered-By; + + # Path to the root of your installation + root /var/www/html; + + # Specify how to handle directories -- specifying `/index.php$request_uri` + # here as the fallback means that Nginx always exhibits the desired behaviour + # when a client requests a path that corresponds to a directory that exists + # on the server. In particular, if that directory contains an index.php file, + # that file is correctly served; if it doesn't, then the request is passed to + # the front-end controller. This consistent behaviour means that we don't need + # to specify custom rules for certain paths (e.g. images and other assets, + # `/updater`, `/ocm-provider`, `/ocs-provider`), and thus + # `try_files $uri $uri/ /index.php$request_uri` + # always provides the desired behaviour. + index index.php index.html /index.php$request_uri; + + # Rule borrowed from `.htaccess` to handle Microsoft DAV clients + location = / { + if ( $http_user_agent ~ ^DavClnt ) { + return 302 /remote.php/webdav/$is_args$args; + } + } + + location = /robots.txt { + allow all; + log_not_found off; + access_log off; + } + + # Make a regex exception for `/.well-known` so that clients can still + # access it despite the existence of the regex rule + # `location ~ /(\.|autotest|...)` which would otherwise handle requests + # for `/.well-known`. + location ^~ /.well-known { + # The rules in this block are an adaptation of the rules + # in `.htaccess` that concern `/.well-known`. + + location = /.well-known/carddav { return 301 /remote.php/dav/; } + location = /.well-known/caldav { return 301 /remote.php/dav/; } + + # according to the documentation these two lines are not necessary, but some users are still recieving errors + location = /.well-known/webfinger { return 301 /index.php$uri; } + location = /.well-known/nodeinfo { return 301 /index.php$uri; } + + location /.well-known/acme-challenge { try_files $uri $uri/ =404; } + location /.well-known/pki-validation { try_files $uri $uri/ =404; } + + # Let Nextcloud's API for `/.well-known` URIs handle all other + # requests by passing them to the front-end controller. + return 301 /index.php$request_uri; + } + + # Rules borrowed from `.htaccess` to hide certain paths from clients + location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } + location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } + + # Ensure this block, which passes PHP files to the PHP process, is above the blocks + # which handle static assets (as seen below). If this block is not declared first, + # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` + # to the URI, resulting in a HTTP 500 error response. + location ~ \.php(?:$|/) { + # Required for legacy support + rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri; + + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + set $path_info $fastcgi_path_info; + + try_files $fastcgi_script_name =404; + + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $path_info; + #fastcgi_param HTTPS on; + + fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice + fastcgi_param front_controller_active true; # Enable pretty urls + fastcgi_pass php-handler; + + fastcgi_intercept_errors on; + fastcgi_request_buffering off; + + proxy_send_timeout 300s; + proxy_read_timeout 300s; + fastcgi_send_timeout 300s; + fastcgi_read_timeout 300s; + } + + location ~ \.(?:css|js|svg|gif)$ { + try_files $uri /index.php$request_uri; + expires 6M; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + location ~ \.woff2?$ { + try_files $uri /index.php$request_uri; + expires 7d; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + # Rule borrowed from `.htaccess` + location /remote { + return 301 /remote.php$request_uri; + } + + location / { + try_files $uri $uri/ /index.php$request_uri; + } + } + } + +cronjob: + enabled: true + generatePreviews: true + schedule: "*/5 * * * *" + annotations: {} + failedJobsHistoryLimit: 5 + successfulJobsHistoryLimit: 2 + +hpb: + enabled: true + +nextcloud: + # https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + default_phone_region: "" + +imaginary: + enabled: true + preview_max_x: 2048 + preview_max_y: 2048 + preview_max_memory: 512 + preview_max_filesize_image: 150 + preview_png: true + preview_jpeg: true + preview_gif: true + preview_bmp: true + preview_xbitmap: true + preview_mp3: true + preview_markdown: true + preview_opendoc: true + preview_txt: true + preview_krita: true + preview_illustrator: false + preview_heic: false + preview_movie: false + preview_msoffice2003: false + preview_msoffice2007: false + preview_msofficedoc: false + preview_pdf: false + preview_photoshop: false + preview_postscript: false + preview_staroffice: false + preview_svg: false + preview_tiff: false + preview_font: false + +collabora: + enabled: false + env: + aliasgroup1: + configMapRef: + name: nextcloudconfig + key: aliasgroup1 + dictionaries: "de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru" + extra_params: "--o:welcome.enable=false --o:logging.level=information --o:user_interface.mode=notebookbar --o:ssl.termination=true --o:ssl.enable=false " + server_name: "" + DONT_GEN_SSL_CERT: true + +postgresql: + enabled: true + existingSecret: "dbcreds" + postgresqlUsername: nextcloud + postgresqlDatabase: nextcloud + +redis: + enabled: true + existingSecret: "rediscreds" + +portal: + enabled: true diff --git a/enterprise/nextcloud/16.0.0/questions.yaml b/enterprise/nextcloud/16.0.0/questions.yaml new file mode 100644 index 00000000000..a50289042cf --- /dev/null +++ b/enterprise/nextcloud/16.0.0/questions.yaml @@ -0,0 +1,2942 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: Controller + description: Configure Workload Deployment + - name: Container Configuration + description: Additional Container Configuration + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: Controller + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: Controller + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: Show Advanced Controller Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: Please specify type of workload to deploy + label: (Advanced) Controller Type + schema: + type: string + required: true + enum: + - value: deployment + description: Deployment + - value: statefulset + description: Statefulset + - value: daemonset + description: Daemonset + default: deployment + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: strategy + description: Please specify type of workload to deploy + label: (Advanced) Update Strategy + schema: + type: string + required: true + enum: + - value: Recreate + description: "Recreate: Kill existing pods before creating new ones" + - value: RollingUpdate + description: "RollingUpdate: Create new pods and then kill old ones" + - value: OnDelete + description: "(Legacy) OnDelete: ignore .spec.template changes" + default: Recreate + - variable: expert + label: Show Expert Configuration Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Controller Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Controller Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: customextraargs + group: Controller + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: secretEnv + group: "Container Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: NEXTCLOUD_ADMIN_USER + label: "NEXTCLOUD_ADMIN_USER (First Install Only)" + description: "Sets the initial nextcloud's admin username, changing this variable after first launch will NOT change admin's username" + schema: + type: string + required: true + default: "REPLACETHIS" + - variable: NEXTCLOUD_ADMIN_PASSWORD + label: "NEXTCLOUD_ADMIN_PASSWORD (First Install Only)" + description: "Sets the initial nextcloud's admin password, changing this variable after first launch will NOT change admin's password" + schema: + type: string + private: true + required: true + default: "REPLACETHIS" + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: TRUSTED_PROXIES + label: "Trusted Proxies (Advanced)" + description: "Sets nextcloud Trusted Proxies" + schema: + type: string + default: "172.16.0.0/16 127.0.0.1" + - variable: PHP_MEMORY_LIMIT + label: "PHP_MEMORY_LIMIT" + description: "Sets php memory_limit setting" + schema: + type: string + default: "1G" + - variable: PHP_UPLOAD_LIMIT + label: "PHP_UPLOAD_LIMIT" + description: "Sets php upload_max_filesize and post_max_size settings" + schema: + type: string + default: "10G" + - variable: AccessIP + label: "Access IP" + description: "Set to the IP-Address used to reach Nextcloud. Most often the Service or NodePort IP (Ensure this is correct!)" + schema: + type: string + required: true + $ref: + - "definitions/nodeIP" + - variable: nextcloud + group: "Container Configuration" + label: "Nextcloud Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: default_phone_region + label: "Default Phone Region" + description: "Sets the default phone region in ISO_3166-1 format (e.g. US). https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements" + schema: + type: string + valid_chars: '^[A-Z]{2}$' + default: "US" + - variable: imaginary + group: "Container Configuration" + label: "Preview Generation Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: preview_max_x + label: "Preview Max X" + description: "The maximum width, in pixels, of a preview." + schema: + type: int + required: true + default: 2048 + - variable: preview_max_y + label: "Preview Max Y" + description: "The maximum height, in pixels, of a preview." + schema: + type: int + required: true + default: 2048 + - variable: preview_max_memory + label: "Preview Max Memory" + description: "Max memory in MB for generating image previews." + schema: + type: int + required: true + default: 512 + - variable: preview_max_filesize_image + label: "Preview Max Filesize Image" + description: "Max file size in MB for generating image previews." + schema: + type: int + required: true + default: 150 + - variable: preview_png + label: "Generate previews for PNG" + schema: + type: boolean + default: true + - variable: preview_jpeg + label: "Generate previews for JPEG " + schema: + type: boolean + default: true + - variable: preview_gif + label: "Generate previews for GIF" + schema: + type: boolean + default: true + - variable: preview_bmp + label: "Generate previews for BMP" + schema: + type: boolean + default: true + - variable: preview_xbitmap + label: "Generate previews for XBitmap" + schema: + type: boolean + default: true + - variable: preview_mp3 + label: "Generate previews for MP3" + schema: + type: boolean + default: true + - variable: preview_markdown + label: "Generate previews for MarkDown" + schema: + type: boolean + default: true + - variable: preview_opendoc + label: "Generate previews for OpenDocument" + schema: + type: boolean + default: true + - variable: preview_txt + label: "Generate previews for TXT" + schema: + type: boolean + default: true + - variable: preview_krita + label: "Generate previews for Krita" + schema: + type: boolean + default: true + - variable: preview_illustrator + label: "Generate previews for Illustrator" + schema: + type: boolean + default: false + - variable: preview_heic + label: "Generate previews for HEIC" + schema: + type: boolean + default: false + - variable: preview_movie + label: "Generate previews for Movie" + schema: + type: boolean + default: false + - variable: preview_msoffice2003 + label: "Generate previews for MSOffice2003" + schema: + type: boolean + default: false + - variable: preview_msoffice2007 + label: "Generate previews for MSOffice2007" + schema: + type: boolean + default: false + - variable: preview_msofficedoc + label: "Generate previews for MSOfficeDoc" + schema: + type: boolean + default: false + - variable: preview_pdf + label: "Generate previews for PDF" + schema: + type: boolean + default: false + - variable: preview_photoshop + label: "Generate previews for Photoshop" + schema: + type: boolean + default: false + - variable: preview_postscript + label: "Generate previews for Postscript" + schema: + type: boolean + default: false + - variable: preview_staroffice + label: "Generate previews for StarOffice" + schema: + type: boolean + default: false + - variable: preview_svg + label: "Generate previews for SVG" + schema: + type: boolean + default: false + - variable: preview_tiff + label: "Generate previews for TIFF" + schema: + type: boolean + default: false + - variable: preview_font + label: "Generate previews for Font" + schema: + type: boolean + default: false + - variable: TZ + label: Timezone + group: Container Configuration + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: Container Configuration + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: expertpodconf + group: Container Configuration + label: Show Expert Configuration + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: Enable TTY + description: Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled. + group: Workload Details + schema: + type: boolean + default: false + - variable: stdin + label: Enable STDIN + description: Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled. + group: Workload Details + schema: + type: boolean + default: false + - variable: termination + group: Container Configuration + label: Termination settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: Grace Period Seconds + schema: + type: int + default: 10 + - variable: podLabelsList + group: Container Configuration + label: Pod Labels + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: podAnnotationsList + group: Container Configuration + label: Pod Annotations + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10020 + required: true + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enable the Port + schema: + type: boolean + hidden: true + default: true + - variable: protocol + label: Port Type + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: nodePort + label: Node Port (Optional) + description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8080 + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: dnsPolicy + group: Networking and Services + label: dnsPolicy + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ClusterFirst + description: ClusterFirst + - value: ClusterFirstWithHostNet + description: ClusterFirstWithHostNet + - value: None + description: None + - variable: dnsConfig + label: DNS Configuration + group: Networking and Services + description: Specify custom DNS configuration which will be applied to the pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: Name Servers + schema: + default: [] + type: list + items: + - variable: nameserver + label: Name Server + schema: + type: string + - variable: options + label: Options + schema: + default: [] + type: list + items: + - variable: option + label: Option Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: searches + label: Searches + schema: + default: [] + type: list + items: + - variable: search + label: Search Entry + schema: + type: string + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: html + label: "App html Storage" + description: "Stores the Application html." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: simplePVC + enum: + - value: simplePVC + description: PVC (simple) + - value: simpleHP + description: Host Path (simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 999Gi + - variable: hostPathType + label: (Advanced) hostPath Type + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: DirectoryOrCreate + description: DirectoryOrCreate + - value: Directory + description: Directory + - value: FileOrCreate + description: FileOrCreate + - value: File + description: File + - value: Socket + description: Socket + - value: CharDevice + description: CharDevice + - value: BlockDevice + description: BlockDevice + - variable: storageClass + label: (Advanced) storageClass + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: SCALE-ZFS + - variable: accessMode + label: (Advanced) Access Mode + description: Allow or disallow multiple PVC's writhing to the same PV + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: ReadWriteOnce + enum: + - value: ReadWriteOnce + description: ReadWriteOnce + - value: ReadOnlyMany + description: ReadOnlyMany + - value: ReadWriteMany + description: ReadWriteMany + - variable: advanced + label: Show Advanced Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: data + label: "UserData Storage" + description: "Stores the User Data." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: simplePVC + enum: + - value: simplePVC + description: PVC (simple) + - value: simpleHP + description: Host Path (simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 999Gi + - variable: hostPathType + label: (Advanced) hostPath Type + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: DirectoryOrCreate + description: DirectoryOrCreate + - value: Directory + description: Directory + - value: FileOrCreate + description: FileOrCreate + - value: File + description: File + - value: Socket + description: Socket + - value: CharDevice + description: CharDevice + - value: BlockDevice + description: BlockDevice + - variable: storageClass + label: (Advanced) storageClass + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: SCALE-ZFS + - variable: accessMode + label: (Advanced) Access Mode + description: Allow or disallow multiple PVC's writhing to the same PV + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: ReadWriteOnce + enum: + - value: ReadWriteOnce + description: ReadWriteOnce + - value: ReadOnlyMany + description: ReadOnlyMany + - value: ReadWriteMany + description: ReadWriteMany + - variable: advanced + label: Show Advanced Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name (Optional) + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: simpleHP + enum: + - value: simplePVC + description: PVC (Simple) + - value: simpleHP + description: Host Path (Simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 999Gi + - variable: hostPathType + label: (Advanced) Host Path Type + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: DirectoryOrCreate + description: DirectoryOrCreate + - value: Directory + description: Directory + - value: FileOrCreate + description: FileOrCreate + - value: File + description: File + - value: Socket + description: Socket + - value: CharDevice + description: CharDevice + - value: BlockDevice + description: BlockDevice + - variable: storageClass + label: (Advanced) StorageClass + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: SCALE-ZFS + - variable: accessMode + label: (Advanced) Access Mode + description: Allow or disallow multiple PVC's writhing to the same PV + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: ReadWriteOnce + enum: + - value: ReadWriteOnce + description: ReadWriteOnce + - value: ReadOnlyMany + description: ReadOnlyMany + - value: ReadWriteMany + description: ReadWriteMany + - variable: advanced + label: Show Advanced Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: expert + label: Show Expert Configuration Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: These middlewares enforce a number of best practices. + label: Enable Default Middlewares + schema: + type: boolean + default: true + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: Capabilities + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: Drop Capability + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: Add Capability + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 33 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + + - variable: advancedresources + label: Set Custom Resource Limits/Requests (Advanced) + group: Resources and Devices + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: autoscaling +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: Advanced +# label: (Advanced) Network Policy +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: Policy Type +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: Default +# - value: ingress +# description: Ingress +# - value: egress +# description: Egress +# - value: ingress-egress +# description: Ingress and Egress +# - variable: egress +# label: Egress +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: To +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: IP Block +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: CIDR +# schema: +# type: string +# default: "" +# - variable: except +# label: Except +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: Namespace Selector +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: Ports +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: Port +# schema: +# type: int +# - variable: endPort +# label: End Port +# schema: +# type: int +# - variable: protocol +# label: Protocol +# schema: +# type: string +# default: TCP +# enum: +# - value: TCP +# description: TCP +# - value: UDP +# description: UDP +# - value: SCTP +# description: SCTP +# - variable: ingress +# label: Ingress +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: From +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: IP Block +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: CIDR +# schema: +# type: string +# default: "" +# - variable: except +# label: Except +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: Namespace Selector +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: Ports +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: Port +# schema: +# type: int +# - variable: endPort +# label: End Port +# schema: +# type: int +# - variable: protocol +# label: Protocol +# schema: +# type: string +# default: TCP +# enum: +# - value: TCP +# description: TCP +# - value: UDP +# description: UDP +# - value: SCTP +# description: SCTP + + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: Sock5 Server + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: promtail + label: Promtail + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: Loki URL + schema: + type: string + required: true + - variable: logs + label: Log Paths + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: path + label: Path + schema: + type: string + required: true + - variable: args + label: Promtail Command Line Arguments + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + required: true + - variable: envList + label: Promtail Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
    https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/docs/about/sponsor + description: Please consider supporting TrueCharts, see +
    https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/enterprise/nextcloud/16.0.0/templates/_configmap.tpl b/enterprise/nextcloud/16.0.0/templates/_configmap.tpl new file mode 100644 index 00000000000..abe500d31e8 --- /dev/null +++ b/enterprise/nextcloud/16.0.0/templates/_configmap.tpl @@ -0,0 +1,36 @@ +{{/* Define the configmap */}} +{{- define "nextcloud.configmap" -}} + +{{- $hosts := "" }} +{{- if .Values.ingress.main.enabled }} +{{- range .Values.ingress }} +{{- range $index, $host := .hosts }} + {{- if $index }} + {{ $hosts = ( printf "%v %v" $hosts $host.host ) }} + {{- else }} + {{ $hosts = ( printf "%s" $host.host ) }} + {{- end }} +{{- end }} +{{- end }} +{{- end }} + + +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: nextcloudconfig +data: + {{- $aliasgroup1 := ( printf "http://%s" ( .Values.env.AccessIP | default ( printf "%v-%v" .Release.Name "nextcloud" ) ) ) }} + {{- if .Values.ingress.main.enabled }} + {{- with (first .Values.ingress.main.hosts) }} + {{- $aliasgroup1 = ( printf "https://%s" .host ) }} + {{- end }} + {{- end }} + aliasgroup1: {{ $aliasgroup1 }} + NEXTCLOUD_TRUSTED_DOMAINS: {{ ( printf "%v %v %v %v %v %v %v %v" "test.fakedomain.dns" "localhost" "127.0.0.1" ( printf "%v:%v" "127.0.0.1" .Values.service.main.ports.main.port ) ( .Values.env.AccessIP | default "localhost" ) ( printf "%v-%v" .Release.Name "nextcloud" ) ( printf "%v-%v" .Release.Name "nextcloud-backend" ) $hosts ) | quote }} + {{- if .Values.ingress.main.enabled }} + APACHE_DISABLE_REWRITE_IP: "1" + {{- end }} + +{{- end -}} diff --git a/enterprise/nextcloud/16.0.0/templates/_cronjob.tpl b/enterprise/nextcloud/16.0.0/templates/_cronjob.tpl new file mode 100644 index 00000000000..302f3b83aae --- /dev/null +++ b/enterprise/nextcloud/16.0.0/templates/_cronjob.tpl @@ -0,0 +1,64 @@ +{{/* Define the cronjob */}} +{{- define "nextcloud.cronjob" -}} +{{- if .Values.cronjob.enabled -}} +{{- $jobName := include "tc.common.names.fullname" . }} + +--- +apiVersion: batch/v1 +kind: CronJob +metadata: + name: {{ printf "%s-cronjob" $jobName }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +spec: + schedule: "{{ .Values.cronjob.schedule }}" + concurrencyPolicy: Forbid + {{- with .Values.cronjob.failedJobsHistoryLimit }} + failedJobsHistoryLimit: {{ . }} + {{- end }} + {{- with .Values.cronjob.successfulJobsHistoryLimit }} + successfulJobsHistoryLimit: {{ . }} + {{- end }} + jobTemplate: + metadata: + spec: + template: + metadata: + spec: + restartPolicy: Never + {{- with (include "tc.common.controller.volumes" . | trim) }} + volumes: + {{- nindent 12 . }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + image: '{{ include "tc.common.images.selector" . }}' + imagePullPolicy: {{ default .Values.image.pullPolicy }} + command: + - "/bin/sh" + - "-c" + - | + /bin/bash <<'EOF' + echo "running nextcloud cronjob..." + php -f /var/www/html/cron.php + echo "cronjob finished" + {{- if .Values.cronjob.generatePreviews }} + echo "Pre-generating Previews..." + php /var/www/html/occ preview:pre-generate + echo "Previews generated." + {{- end }} + EOF + # Will mount configuration files as www-data (id: 33) by default for nextcloud + {{- with (include "tc.common.controller.volumeMounts" . | trim) }} + volumeMounts: + {{ nindent 16 . }} + {{- end }} + securityContext: + runAsUser: 33 + runAsGroup: 33 + readOnlyRootFilesystem: true + runAsNonRoot: true + resources: +{{ toYaml .Values.resources | indent 16 }} +{{- end -}} +{{- end -}} diff --git a/enterprise/nextcloud/16.0.0/templates/_hpb.tpl b/enterprise/nextcloud/16.0.0/templates/_hpb.tpl new file mode 100644 index 00000000000..5b7b18a15fa --- /dev/null +++ b/enterprise/nextcloud/16.0.0/templates/_hpb.tpl @@ -0,0 +1,164 @@ +{{/* Define the hbp container */}} +{{- define "nextcloud.hpb" -}} +{{- $jobName := include "tc.common.names.fullname" . }} +image: '{{ include "tc.common.images.selector" . }}' +imagePullPolicy: '{{ .Values.image.pullPolicy }}' +securityContext: + runAsUser: 33 + runAsGroup: 33 + readOnlyRootFilesystem: true + runAsNonRoot: true +{{- with (include "tc.common.controller.volumeMounts" . | trim) }} +volumeMounts: + {{ nindent 2 . }} +{{- end }} +ports: + - containerPort: 7867 +readinessProbe: + httpGet: + path: /push/test/cookie + port: 7867 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }} +livenessProbe: + httpGet: + path: /push/test/cookie + port: 7867 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }} +startupProbe: + httpGet: + path: /push/test/cookie + port: 7867 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }} +command: + - "/bin/sh" + - "-c" + - | + /bin/bash <<'EOF' + set -m + echo "Waiting for notify_push file to be available..." + until [ -f /var/www/html/custom_apps/notify_push/bin/x86_64/notify_push ] + do + sleep 10 + echo "Notify_push app not found... waiting..." + done + echo "Waiting for Nextcloud to start..." + until $(curl --output /dev/null --silent --head --fail -H "Host: test.fakedomain.dns" http://127.0.0.1:8080/status.php); do + echo "Nextcloud not responding... waiting..." + sleep 10 + done + until $(curl --silent --fail -H "Host: test.fakedomain.dns" http://127.0.0.1:8080/status.php | jq --raw-output '.installed' | grep "true"); do + echo "Nextcloud not installed... waiting..." + sleep 10 + done + echo "Nextcloud instance with Notify_push found... Launching High Performance Backend..." + /var/www/html/custom_apps/notify_push/bin/x86_64/notify_push /var/www/html/config/config.php & + + {{- $accessurl := ( printf "http://%v:%v" ( .Values.env.AccessIP | default ( printf "%v-%v" .Release.Name "nextcloud" ) ) .Values.service.main.ports.main.port ) }} + {{- if .Values.ingress.main.enabled }} + {{- with (first .Values.ingress.main.hosts) }} + {{- $accessurl = ( printf "https://%s" .host ) }} + {{- end }} + {{- end }} + + echo "Configuring CLI url..." + php /var/www/html/occ config:system:set overwrite.cli.url --value='{{ $accessurl }}/' + + {{- if .Values.imaginary.enabled }} + echo "Imaginary High Performance Previews enabled, enabling it on Nextcloud..." + php /var/www/html/occ config:system:set preview_imaginary_url --value='http://127.0.0.1:9090' + php /var/www/html/occ config:system:set preview_max_x --value='{{ .Values.imaginary.preview_max_x }}' + php /var/www/html/occ config:system:set preview_max_y --value='{{ .Values.imaginary.preview_max_y }}' + php /var/www/html/occ config:system:set preview_max_memory --value='{{ .Values.imaginary.preview_max_memory }}' + php /var/www/html/occ config:system:set preview_max_filesize_image --value='{{ .Values.imaginary.preview_max_filesize_image }}' + # Remove all preview providers and re-add only selected + php /var/www/html/occ config:system:delete enabledPreviewProviders + # Add imaginary always + {{ $c := 0 }} # Initialize counter + php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Imaginary'{{ $c = add1 $c }} + {{ if .Values.imaginary.preview_png }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\PNG'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_jpeg }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\JPEG'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_gif }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\GIF'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_bmp }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\BMP'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_xbitmap }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\XBitmap'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_mp3 }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\MP3'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_markdown }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\MarkDown'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_opendoc }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\OpenDocument'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_txt }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\TXT'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_krita }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Krita'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_illustrator }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Illustrator'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_heic }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\HEIC'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_movie }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Movie'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_msoffice2003 }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\MSOffice2003'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_msoffice2007 }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\MSOffice2007'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_msofficedoc }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\MSOfficeDoc'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_pdf }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\PDF'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_photoshop }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Photoshop'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_postscript }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Postscript'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_staroffice }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\StarOffice'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_svg }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\SVG'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_tiff }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\TIFF'{{ $c = add1 $c }}{{ end }} + {{ if .Values.imaginary.preview_font }}php /var/www/html/occ config:system:set enabledPreviewProviders {{ $c }} --value='OC\Preview\Font'{{ $c = add1 $c }}{{ end }} + {{- end }} + + # Set default phone region + {{- with .Values.nextcloud.default_phone_region | upper }} + php /var/www/html/occ config:system:set default_phone_region --value='{{ . }}' + {{- end }} + + echo "Configuring High Performance Backend for url: {{ $accessurl }}" + php /var/www/html/occ config:app:set notify_push base_endpoint --value='{{ $accessurl }}/push' + fg + EOF +env: + - name: NEXTCLOUD_URL + value: 'http://127.0.0.1:8080' + - name: METRICS_PORT + value: '7868' + - name: TRUSTED_PROXIES + value: "{{ .Values.env.TRUSTED_PROXIES }}" + - name: POSTGRES_DB + value: "{{ .Values.postgresql.postgresqlDatabase }}" + - name: POSTGRES_USER + value: "{{ .Values.postgresql.postgresqlUsername }}" + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: dbcreds + key: postgresql-password + - name: POSTGRES_HOST + valueFrom: + secretKeyRef: + name: dbcreds + key: plainporthost + - name: REDIS_HOST + valueFrom: + secretKeyRef: + name: rediscreds + key: plainhost + - name: REDIS_HOST_PASSWORD + valueFrom: + secretKeyRef: + name: rediscreds + key: redis-password +envFrom: + - configMapRef: + name: nextcloudconfig +{{- end -}} diff --git a/enterprise/nextcloud/16.0.0/templates/_imaginary.tpl b/enterprise/nextcloud/16.0.0/templates/_imaginary.tpl new file mode 100644 index 00000000000..57a72c43024 --- /dev/null +++ b/enterprise/nextcloud/16.0.0/templates/_imaginary.tpl @@ -0,0 +1,40 @@ +{{/* Define the imaginary container */}} +{{- define "nextcloud.imaginary" -}} +image: {{ .Values.imaginaryImage.repository }}:{{ .Values.imaginaryImage.tag }} +imagePullPolicy: '{{ .Values.image.pullPolicy }}' +securityContext: + runAsUser: 33 + runAsGroup: 33 + readOnlyRootFilesystem: true + runAsNonRoot: true +ports: + - containerPort: 9090 +args: ["-enable-url-source"] +env: + - name: 'PORT' + value: '9090' +readinessProbe: + httpGet: + path: / + port: 9090 + initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }} +livenessProbe: + httpGet: + path: / + port: 9090 + initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }} +startupProbe: + httpGet: + path: / + port: 9090 + initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }} +{{- end -}} diff --git a/enterprise/nextcloud/16.0.0/templates/_nginx.tpl b/enterprise/nextcloud/16.0.0/templates/_nginx.tpl new file mode 100644 index 00000000000..df427f44bd8 --- /dev/null +++ b/enterprise/nextcloud/16.0.0/templates/_nginx.tpl @@ -0,0 +1,54 @@ +{{/* Define the nginx container */}} +{{- define "nextcloud.nginx" -}} +image: {{ .Values.nginxImage.repository }}:{{ .Values.nginxImage.tag }} +imagePullPolicy: '{{ .Values.image.pullPolicy }}' +securityContext: + runAsUser: 33 + runAsGroup: 33 + readOnlyRootFilesystem: true + runAsNonRoot: true +{{- with (include "tc.common.controller.volumeMounts" . | trim) }} +volumeMounts: + {{ nindent 2 . }} +{{- end }} + - mountPath: /etc/nginx/nginx.conf + name: nginx + readOnly: true + subPath: nginx.conf +ports: + - containerPort: 8080 + +readinessProbe: + httpGet: + path: /robots.txt + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.readiness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.readiness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.readiness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.readiness.spec.failureThreshold }} +livenessProbe: + httpGet: + path: /robots.txt + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.liveness.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.liveness.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.liveness.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.liveness.spec.failureThreshold }} +startupProbe: + httpGet: + path: /robots.txt + port: 8080 + httpHeaders: + - name: Host + value: "test.fakedomain.dns" + initialDelaySeconds: {{ .Values.probes.startup.spec.initialDelaySeconds }} + periodSeconds: {{ .Values.probes.startup.spec.periodSeconds }} + timeoutSeconds: {{ .Values.probes.startup.spec.timeoutSeconds }} + failureThreshold: {{ .Values.probes.startup.spec.failureThreshold }} +{{- end -}} diff --git a/enterprise/nextcloud/16.0.0/templates/common.yaml b/enterprise/nextcloud/16.0.0/templates/common.yaml new file mode 100644 index 00000000000..9314524b1a2 --- /dev/null +++ b/enterprise/nextcloud/16.0.0/templates/common.yaml @@ -0,0 +1,22 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{/* Render configmap for nextcloud */}} +{{- include "nextcloud.configmap" . }} + +{{- $newMiddlewares := append .Values.ingress.main.fixedMiddlewares "tc-nextcloud-chain" }} +{{- $_ := set .Values.ingress.main "fixedMiddlewares" $newMiddlewares -}} + +{{- $_ := set .Values.additionalContainers "nginx" (include "nextcloud.nginx" . | fromYaml) -}} +{{- if .Values.imaginary.enabled -}} +{{- $_ := set .Values.additionalContainers "imaginary" (include "nextcloud.imaginary" . | fromYaml) -}} +{{- end -}} +{{- if .Values.hpb.enabled -}} +{{- $_ := set .Values.additionalContainers "hpb" (include "nextcloud.hpb" . | fromYaml) -}} +{{- end -}} + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} + +{{/* Render cronjob for nextcloud */}} +{{- include "nextcloud.cronjob" . }} diff --git a/enterprise/nextcloud/16.0.0/values.yaml b/enterprise/nextcloud/16.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/enterprise/traefik/14.0.0/CHANGELOG.md b/enterprise/traefik/14.0.0/CHANGELOG.md new file mode 100644 index 00000000000..bc04170fa9e --- /dev/null +++ b/enterprise/traefik/14.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [traefik-14.0.0](https://github.com/truecharts/charts/compare/traefik-13.3.10...traefik-14.0.0) (2022-09-24) + +### Chore + +- Auto-update chart README [skip ci] + - bump major on new enterprise app to seperate helm updates + - Add a copy of Initial Apps selected for Enterprise Train ([#3749](https://github.com/truecharts/charts/issues/3749)) + + + + +## [traefik-13.3.10](https://github.com/truecharts/charts/compare/traefik-13.3.9...traefik-13.3.10) (2022-09-24) + +### Chore + +- Auto-update chart README [skip ci] + - update docker general non-major ([#3860](https://github.com/truecharts/charts/issues/3860)) + + + + +## [traefik-13.3.9](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.9) (2022-09-22) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - fix prometheus annotations ([#3841](https://github.com/truecharts/charts/issues/3841)) + - update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + + + + +## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + + + + +## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update docker general non-major ([#3772](https://github.com/truecharts/charts/issues/3772)) + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + + + + +## [traefik-13.3.8](https://github.com/truecharts/charts/compare/traefik-13.3.7...traefik-13.3.8) (2022-09-20) + +### Chore + diff --git a/enterprise/traefik/14.0.0/Chart.lock b/enterprise/traefik/14.0.0/Chart.lock new file mode 100644 index 00000000000..748dea79f21 --- /dev/null +++ b/enterprise/traefik/14.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.6.0 +digest: sha256:60d8634057a317d5912fe7e182913e53cf7044caa196ba4d2a5fbce95fdc85e8 +generated: "2022-09-24T21:35:31.783040284Z" diff --git a/enterprise/traefik/14.0.0/Chart.yaml b/enterprise/traefik/14.0.0/Chart.yaml new file mode 100644 index 00000000000..7be25144f82 --- /dev/null +++ b/enterprise/traefik/14.0.0/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "2.8.7" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.6.0 +deprecated: false +description: Traefik is a flexible reverse proxy and Ingress Provider. +home: https://truecharts.org/docs/charts/enterprise/traefik +icon: https://truecharts.org/img/hotlink-ok/chart-icons/traefik.png +keywords: + - traefik + - ingress +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: traefik +sources: + - https://github.com/truecharts/charts/tree/master/charts/enterprise/traefik + - https://github.com/traefik/traefik + - https://github.com/traefik/traefik-helm-chart + - https://traefik.io/ +type: application +version: 14.0.0 +annotations: + truecharts.org/catagories: | + - network + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/enterprise/traefik/14.0.0/README.md b/enterprise/traefik/14.0.0/README.md new file mode 100644 index 00000000000..1c03cf0951c --- /dev/null +++ b/enterprise/traefik/14.0.0/README.md @@ -0,0 +1,108 @@ +# traefik + +Traefik is a flexible reverse proxy and Ingress Provider. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [traefik](https://truecharts.org/docs/charts/enterprise/traefik) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.6.0 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App). + +### Helm + +To install the chart with the release name `traefik` + +```console +helm repo add TrueCharts https://charts.truecharts.org +helm repo update +helm install traefik TrueCharts/traefik +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App). + +### Helm + +To uninstall the `traefik` deployment + +```console +helm uninstall traefik +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the values.yaml file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the command line + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install traefik \ + --set env.TZ="America/New York" \ + TrueCharts/traefik +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install traefik TrueCharts/traefik -f values.yaml +``` + +#### Connecting to other charts + +If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/enterprise/traefik/14.0.0/app-readme.md b/enterprise/traefik/14.0.0/app-readme.md new file mode 100644 index 00000000000..29b0f72f30c --- /dev/null +++ b/enterprise/traefik/14.0.0/app-readme.md @@ -0,0 +1,8 @@ +Traefik is a flexible reverse proxy and Ingress Provider. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/enterprise/traefik](https://truecharts.org/docs/charts/enterprise/traefik) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/enterprise/traefik/14.0.0/charts/common-10.6.0.tgz b/enterprise/traefik/14.0.0/charts/common-10.6.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0308b85a1a8c5cdc7a0461f210d9fce394ddcc94 GIT binary patch literal 48413 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 + schema: + type: string + required: true + - variable: appName + label: App Name + description: Lower case, name of the app to be themed. +
    Go to https://docs.theme-park.dev/themes/ to see supported apps. + schema: + type: string + required: true + - variable: themeName + label: Theme Name + description: Lower case, name of the theme to be applied. +
    Go to https://docs.theme-park.dev/theme-options/ to see supported themes. + schema: + type: string + required: true + - variable: baseUrl + label: Base URL + description: Replace `https://theme-park.dev` URL for self-hosting reference. + schema: + type: string + required: true + default: https://theme-park.dev + - variable: addons + label: Addons + schema: + type: list + default: [] + items: + - variable: addonEntry + label: "Addon" + description: Currently only supports 'darker' and '4k-logo' for *arr apps. +
    Go to https://docs.theme-park.dev/themes/addons/ for Addon information. +
    Go to https://github.com/packruler/traefik-themepark for more context on plugin + schema: + type: string + required: true + default: "" + - variable: service + group: "Networking and Services" + label: "Configure Service Entrypoint" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Entrypoint Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enable the Port + schema: + type: boolean + hidden: true + default: true + - variable: protocol + label: Port Type + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: nodePort + label: Node Port (Optional) + description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 9000 + - variable: port + label: "Entrypoints Port" + schema: + type: int + default: 9000 + required: true + - variable: tcp + label: "TCP Service" + description: "The tcp Entrypoint service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: web + label: "web Entrypoint Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Entrypoints Port" + schema: + type: int + default: 9080 + required: true + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enable the Port + schema: + type: boolean + hidden: true + default: true + - variable: protocol + label: Port Type + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: nodePort + label: Node Port (Optional) + description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + - variable: redirectPort + label: "Redirect to Port" + schema: + type: int + - variable: redirectTo + label: "Redirect to Entrypoint" + schema: + type: string + default: "websecure" + - variable: forwardedHeaders + label: Accept Forwarded Headers + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Trust Forwarded Headers from specific IPs. + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Always Trust Forwarded Headers + schema: + type: boolean + default: false + - variable: proxyProtocol + label: Accept Proxy Protocol connections + description: If Proxy Protocol header parsing is enabled for the entry point, this entry point can accept connections with or without Proxy Protocol headers. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Only IPs in trustedIPs will lead to remote client address replacement + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Trust every incoming connection + schema: + type: boolean + default: false + - variable: websecure + label: "websecure Entrypoints Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Entrypoints Port" + schema: + type: int + default: 9443 + required: true + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enable the Port + schema: + type: boolean + hidden: true + default: true + - variable: protocol + label: Port Type + schema: + type: string + default: HTTPS + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: nodePort + label: Node Port (Optional) + description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + - variable: redirectPort + label: "Redirect to Port" + schema: + type: int + - variable: redirectTo + label: "Redirect to Entrypoint" + schema: + type: string + - variable: forwardedHeaders + label: Accept Forwarded Headers + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Trust Forwarded Headers from specific IPs. + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Always Trust Forwarded Headers + schema: + type: boolean + default: false + - variable: proxyProtocol + label: Accept Proxy Protocol connections + description: If Proxy Protocol header parsing is enabled for the entry point, this entry point can accept connections with or without Proxy Protocol headers. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Only IPs in trustedIPs will lead to remote client address replacement + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Trust every incoming connection + schema: + type: boolean + default: false + - variable: tls + label: "websecure Entrypoints Configuration" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + hidden: true + - variable: portsList + label: "Additional TCP Entrypoints" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom Entrypoints" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Entrypoints Name" + schema: + type: string + default: "" + - variable: protocol + label: "Entrypoints Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: tls + label: "websecure Entrypoints Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + - variable: redirectPort + label: "Redirect to Port" + schema: + type: int + - variable: redirectTo + label: "Redirect to Entrypoint" + schema: + type: string + - variable: forwardedHeaders + label: Accept Forwarded Headers + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Trust Forwarded Headers from specific IPs. + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Always Trust Forwarded Headers + schema: + type: boolean + default: false + - variable: proxyProtocol + label: Accept Proxy Protocol connections + description: If Proxy Protocol header parsing is enabled for the entry point, this entry point can accept connections with or without Proxy Protocol headers. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: trustedIPs + label: Trusted IPs + description: Only IPs in trustedIPs will lead to remote client address replacement + schema: + type: list + default: [] + items: + - variable: trustedIPsEntry + label: "" + schema: + type: string + required: true + default: "" + - variable: insecureMode + label: Insecure Mode + description: Trust every incoming connection + schema: + type: boolean + default: false + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: expert + label: Show Expert Configuration Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: These middlewares enforce a number of best practices. + label: Enable Default Middlewares + schema: + type: boolean + default: true + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: capabilities + label: Capabilities + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: Drop Capability + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: Add Capability + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + + - variable: advancedresources + label: Set Custom Resource Limits/Requests (Advanced) + group: Resources and Devices + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: autoscaling +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: Advanced +# label: (Advanced) Network Policy +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: Policy Type +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: Default +# - value: ingress +# description: Ingress +# - value: egress +# description: Egress +# - value: ingress-egress +# description: Ingress and Egress +# - variable: egress +# label: Egress +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: To +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: IP Block +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: CIDR +# schema: +# type: string +# default: "" +# - variable: except +# label: Except +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: Namespace Selector +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: Ports +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: Port +# schema: +# type: int +# - variable: endPort +# label: End Port +# schema: +# type: int +# - variable: protocol +# label: Protocol +# schema: +# type: string +# default: TCP +# enum: +# - value: TCP +# description: TCP +# - value: UDP +# description: UDP +# - value: SCTP +# description: SCTP +# - variable: ingress +# label: Ingress +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: From +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: IP Block +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: CIDR +# schema: +# type: string +# default: "" +# - variable: except +# label: Except +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: Namespace Selector +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: Ports +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: Port +# schema: +# type: int +# - variable: endPort +# label: End Port +# schema: +# type: int +# - variable: protocol +# label: Protocol +# schema: +# type: string +# default: TCP +# enum: +# - value: TCP +# description: TCP +# - value: UDP +# description: UDP +# - value: SCTP +# description: SCTP + + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: Sock5 Server + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: promtail + label: Promtail + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: Loki URL + schema: + type: string + required: true + - variable: logs + label: Log Paths + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: path + label: Path + schema: + type: string + required: true + - variable: args + label: Promtail Command Line Arguments + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + required: true + - variable: envList + label: Promtail Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
    https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/docs/about/sponsor + description: Please consider supporting TrueCharts, see +
    https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/enterprise/traefik/14.0.0/templates/_args.tpl b/enterprise/traefik/14.0.0/templates/_args.tpl new file mode 100644 index 00000000000..68c640bf0df --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/_args.tpl @@ -0,0 +1,166 @@ +{{/* Define the args */}} +{{- define "traefik.args" -}} +args: + {{/* merge all ports */}} + {{- $ports := dict }} + {{- range $.Values.service }} + {{- range $name, $value := .ports }} + {{- $_ := set $ports $name $value }} + {{- end }} + {{- end }} + {{/* start of actual arguments */}} + {{- with .Values.globalArguments }} + {{- range . }} + - {{ . | quote }} + {{- end }} + {{- end }} + {{- range $name, $config := $ports }} + {{- if $config }} + {{- if or ( eq $config.protocol "HTTP" ) ( eq $config.protocol "HTTPS" ) ( eq $config.protocol "TCP" ) }} + {{- $_ := set $config "protocol" "TCP" }} + {{- end }} + - "--entryPoints.{{$name}}.address=:{{ $config.port }}/{{ default "tcp" $config.protocol | lower }}" + {{- end }} + {{- end }} + - "--api.dashboard=true" + - "--ping=true" + {{- if .Values.metrics }} + {{- if .Values.metrics.datadog }} + - "--metrics.datadog=true" + - "--metrics.datadog.address={{ .Values.metrics.datadog.address }}" + {{- end }} + {{- if .Values.metrics.influxdb }} + - "--metrics.influxdb=true" + - "--metrics.influxdb.address={{ .Values.metrics.influxdb.address }}" + - "--metrics.influxdb.protocol={{ .Values.metrics.influxdb.protocol }}" + {{- end }} + {{- if .Values.metrics.prometheus }} + - "--metrics.prometheus=true" + - "--metrics.prometheus.entrypoint={{ .Values.metrics.prometheus.entryPoint }}" + {{- end }} + {{- if .Values.metrics.statsd }} + - "--metrics.statsd=true" + - "--metrics.statsd.address={{ .Values.metrics.statsd.address }}" + {{- end }} + {{- end }} + {{- if .Values.providers.kubernetesCRD.enabled }} + - "--providers.kubernetescrd" + {{- end }} + {{- if .Values.providers.kubernetesIngress.enabled }} + - "--providers.kubernetesingress" + {{- if .Values.providers.kubernetesIngress.publishedService.enabled }} + - "--providers.kubernetesingress.ingressendpoint.publishedservice={{ template "providers.kubernetesIngress.publishedServicePath" . }}" + {{- end }} + {{- if .Values.providers.kubernetesIngress.labelSelector }} + - "--providers.kubernetesingress.labelSelector={{ .Values.providers.kubernetesIngress.labelSelector }}" + {{- end }} + {{- end }} + {{- if and .Values.rbac.enabled .Values.rbac.namespaced }} + {{- if .Values.providers.kubernetesCRD.enabled }} + - "--providers.kubernetescrd.namespaces={{ template "providers.kubernetesCRD.namespaces" . }}" + {{- end }} + {{- if .Values.providers.kubernetesIngress.enabled }} + - "--providers.kubernetesingress.namespaces={{ template "providers.kubernetesIngress.namespaces" . }}" + {{- end }} + {{- end }} + {{- if .Values.ingressClass.enabled }} + - "--providers.kubernetesingress.ingressclass={{ .Release.Name }}" + {{- end }} + {{- range $entrypoint, $config := $ports }} + {{/* add args for proxyProtocol support */}} + {{- if $config.proxyProtocol }} + {{- if $config.proxyProtocol.enabled }} + {{- if $config.proxyProtocol.insecureMode }} + - "--entrypoints.{{ $entrypoint }}.proxyProtocol.insecure" + {{- end }} + {{- if not ( empty $config.proxyProtocol.trustedIPs ) }} + - "--entrypoints.{{ $entrypoint }}.proxyProtocol.trustedIPs={{ join "," $config.proxyProtocol.trustedIPs }}" + {{- end }} + {{- end }} + {{- end }} + {{/* add args for forwardedHeaders support */}} + {{- if $config.forwardedHeaders.enabled }} + {{- if not ( empty $config.forwardedHeaders.trustedIPs ) }} + - "--entrypoints.{{ $entrypoint }}.forwardedHeaders.trustedIPs={{ join "," $config.forwardedHeaders.trustedIPs }}" + {{- end }} + {{- if $config.forwardedHeaders.insecureMode }} + - "--entrypoints.{{ $entrypoint }}.forwardedHeaders.insecure" + {{- end }} + {{- end }} + {{/* end forwardedHeaders configuration */}} + {{- if $config.redirectTo }} + {{- $toPort := index $ports $config.redirectTo }} + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $toPort.port }}" + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https" + {{- else if $config.redirectPort }} + {{ if gt $config.redirectPort 0.0 }} + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.to=:{{ $config.redirectPort }}" + - "--entrypoints.{{ $entrypoint }}.http.redirections.entryPoint.scheme=https" + {{- end }} + {{- end }} + {{- if or ( $config.tls ) ( eq $config.protocol "HTTPS" ) }} + {{- if or ( $config.tls.enabled ) ( eq $config.protocol "HTTPS" ) }} + - "--entrypoints.{{ $entrypoint }}.http.tls=true" + {{- if $config.tls.options }} + - "--entrypoints.{{ $entrypoint }}.http.tls.options={{ $config.tls.options }}" + {{- end }} + {{- if $config.tls.certResolver }} + - "--entrypoints.{{ $entrypoint }}.http.tls.certResolver={{ $config.tls.certResolver }}" + {{- end }} + {{- if $config.tls.domains }} + {{- range $index, $domain := $config.tls.domains }} + {{- if $domain.main }} + - "--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].main={{ $domain.main }}" + {{- end }} + {{- if $domain.sans }} + - "--entrypoints.{{ $entrypoint }}.http.tls.domains[{{ $index }}].sans={{ join "," $domain.sans }}" + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + {{- with .Values.logs }} + - "--log.format={{ .general.format }}" + {{- if ne .general.level "ERROR" }} + - "--log.level={{ .general.level | upper }}" + {{- end }} + {{- if .access.enabled }} + - "--accesslog=true" + - "--accesslog.format={{ .access.format }}" + {{- if .access.bufferingsize }} + - "--accesslog.bufferingsize={{ .access.bufferingsize }}" + {{- end }} + {{- if .access.filters }} + {{- if .access.filters.statuscodes }} + - "--accesslog.filters.statuscodes={{ .access.filters.statuscodes }}" + {{- end }} + {{- if .access.filters.retryattempts }} + - "--accesslog.filters.retryattempts" + {{- end }} + {{- if .access.filters.minduration }} + - "--accesslog.filters.minduration={{ .access.filters.minduration }}" + {{- end }} + {{- end }} + - "--accesslog.fields.defaultmode={{ .access.fields.general.defaultmode }}" + {{- range $fieldname, $fieldaction := .access.fields.general.names }} + - "--accesslog.fields.names.{{ $fieldname }}={{ $fieldaction }}" + {{- end }} + - "--accesslog.fields.headers.defaultmode={{ .access.fields.headers.defaultmode }}" + {{- range $fieldname, $fieldaction := .access.fields.headers.names }} + - "--accesslog.fields.headers.names.{{ $fieldname }}={{ $fieldaction }}" + {{- end }} + {{- end }} + {{- end }} + {{/* theme.park */}} + {{- if .Values.middlewares.themePark }} + - "--experimental.plugins.traefik-themepark.modulename=github.com/packruler/traefik-themepark" + - "--experimental.plugins.traefik-themepark.version={{ .Values.middlewares.themeParkVersion }}" + {{- end }} + {{/* End of theme.park */}} + {{- with .Values.additionalArguments }} + {{- range . }} + - {{ . | quote }} + {{- end }} + {{- end }} +{{- end -}} diff --git a/enterprise/traefik/14.0.0/templates/_helpers.tpl b/enterprise/traefik/14.0.0/templates/_helpers.tpl new file mode 100644 index 00000000000..ab55e4e7ec6 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/_helpers.tpl @@ -0,0 +1,22 @@ +{{/* +Construct the path for the providers.kubernetesingress.ingressendpoint.publishedservice. +By convention this will simply use the / to match the name of the +service generated. +Users can provide an override for an explicit service they want bound via `.Values.providers.kubernetesIngress.publishedService.pathOverride` +*/}} +{{- define "providers.kubernetesIngress.publishedServicePath" -}} +{{- $fullName := include "tc.common.names.fullname" . -}} +{{- $defServiceName := printf "%s/%s-tcp" .Release.Namespace $fullName -}} +{{- $servicePath := default $defServiceName .Values.providers.kubernetesIngress.publishedService.pathOverride }} +{{- print $servicePath | trimSuffix "-" -}} +{{- end -}} + +{{/* +Construct a comma-separated list of whitelisted namespaces +*/}} +{{- define "providers.kubernetesIngress.namespaces" -}} +{{- default .Release.Namespace (join "," .Values.providers.kubernetesIngress.namespaces) }} +{{- end -}} +{{- define "providers.kubernetesCRD.namespaces" -}} +{{- default .Release.Namespace (join "," .Values.providers.kubernetesCRD.namespaces) }} +{{- end -}} diff --git a/enterprise/traefik/14.0.0/templates/_ingressclass.tpl b/enterprise/traefik/14.0.0/templates/_ingressclass.tpl new file mode 100644 index 00000000000..909e249d6a5 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/_ingressclass.tpl @@ -0,0 +1,24 @@ +{{/* Define the ingressClass */}} +{{- define "traefik.ingressClass" -}} +--- +{{ if .Values.ingressClass.enabled }} + {{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/IngressClass" }} +apiVersion: networking.k8s.io/v1 + {{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/IngressClass" }} +apiVersion: networking.k8s.io/v1beta1 + {{- else if or (eq .Values.ingressClass.fallbackApiVersion "v1beta1") (eq .Values.ingressClass.fallbackApiVersion "v1") }} +apiVersion: {{ printf "networking.k8s.io/%s" .Values.ingressClass.fallbackApiVersion }} + {{- else }} + {{- fail "\n\n ERROR: You must have at least networking.k8s.io/v1beta1 to use ingressClass" }} + {{- end }} +kind: IngressClass +metadata: + annotations: + ingressclass.kubernetes.io/is-default-class: {{ .Values.ingressClass.isDefaultClass | quote }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} + name: {{ .Release.Name }} +spec: + controller: traefik.io/ingress-controller +{{- end }} +{{- end }} diff --git a/enterprise/traefik/14.0.0/templates/_ingressroute.tpl b/enterprise/traefik/14.0.0/templates/_ingressroute.tpl new file mode 100644 index 00000000000..7f012c92350 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/_ingressroute.tpl @@ -0,0 +1,25 @@ +{{/* Define the ingressRoute */}} +{{- define "traefik.ingressRoute" -}} +{{ if .Values.ingressRoute.dashboard.enabled }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + name: {{ include "tc.common.names.fullname" . }}-dashboard + annotations: + {{- with .Values.ingressRoute.dashboard.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + labels: + {{- include "tc.common.labels" . | nindent 4 }} +spec: + entryPoints: + - main + routes: + - match: PathPrefix(`/dashboard`) || PathPrefix(`/api`) + kind: Rule + services: + - name: api@internal + kind: TraefikService +{{ end }} +{{- end -}} diff --git a/enterprise/traefik/14.0.0/templates/_portalhook.tpl b/enterprise/traefik/14.0.0/templates/_portalhook.tpl new file mode 100644 index 00000000000..e3586c5d4e9 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/_portalhook.tpl @@ -0,0 +1,26 @@ +{{/* Define the portalHook */}} +{{- define "traefik.portalhook" -}} +{{- if .Values.portalhook.enabled }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: portalhook + namespace: {{ $namespace }} +data: + {{- $ports := dict }} + {{- range $.Values.service }} + {{- range $name, $value := .ports }} + {{- $_ := set $ports $name $value }} + {{- end }} + {{- end }} + {{- range $name, $value := $ports }} + {{ $name }}: {{ $value.port | quote }} + {{- end }} +{{- end }} +{{- end -}} diff --git a/enterprise/traefik/14.0.0/templates/_tlsoptions.tpl b/enterprise/traefik/14.0.0/templates/_tlsoptions.tpl new file mode 100644 index 00000000000..3e5aad3bee9 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/_tlsoptions.tpl @@ -0,0 +1,12 @@ +{{/* Define the tlsOptions */}} +{{- define "traefik.tlsOptions" -}} +{{- range $name, $config := .Values.tlsOptions }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: TLSOption +metadata: + name: {{ $name }} +spec: + {{- toYaml $config | nindent 2 }} +{{- end }} +{{- end -}} diff --git a/enterprise/traefik/14.0.0/templates/common.yaml b/enterprise/traefik/14.0.0/templates/common.yaml new file mode 100644 index 00000000000..c933a3d08e0 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/common.yaml @@ -0,0 +1,24 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + +{{- if .Values.metrics }} +{{- if .Values.metrics.prometheus }} +{{- $_ := set .Values.podAnnotations "prometheus.io/scrape" "true" -}} +{{- $_ := set .Values.podAnnotations "prometheus.io/path" "/metrics" -}} +{{- $_ := set .Values.podAnnotations "prometheus.io/port" "9180" -}} +{{- end }} +{{- end }} + +{{- $newArgs := (include "traefik.args" . | fromYaml) }} +{{- $_ := set .Values "newArgs" $newArgs -}} +{{- $mergedargs := concat .Values.args .Values.newArgs.args }} +{{- $_ := set .Values "args" $mergedargs -}} + +{{- include "traefik.portalhook" . }} +{{- include "traefik.tlsOptions" . }} +{{- include "traefik.ingressRoute" . }} +{{- include "traefik.ingressClass" . }} + + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/enterprise/traefik/14.0.0/templates/middlewares/basic-middleware.yaml b/enterprise/traefik/14.0.0/templates/middlewares/basic-middleware.yaml new file mode 100644 index 00000000000..9ba8e5c5d93 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/basic-middleware.yaml @@ -0,0 +1,62 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: compress + namespace: {{ $namespace }} +spec: + compress: {} +--- +# Here, an average of 300 requests per second is allowed. +# In addition, a burst of 200 requests is allowed. +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: basic-ratelimit + namespace: {{ $namespace }} +spec: + rateLimit: + average: 600 + burst: 400 +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: basic-secure-headers + namespace: {{ $namespace }} +spec: + headers: + accessControlAllowMethods: + - GET + - OPTIONS + - HEAD + - PUT + accessControlMaxAge: 100 + stsSeconds: 63072000 + # stsIncludeSubdomains: false + # stsPreload: false + forceSTSHeader: true + contentTypeNosniff: true + browserXssFilter: true + referrerPolicy: same-origin + customRequestHeaders: + X-Forwarded-Proto: "https" + customResponseHeaders: + server: '' +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: chain-basic + namespace: {{ $namespace }} +spec: + chain: + middlewares: + - name: basic-ratelimit + - name: basic-secure-headers + - name: compress diff --git a/enterprise/traefik/14.0.0/templates/middlewares/basicauth.yaml b/enterprise/traefik/14.0.0/templates/middlewares/basicauth.yaml new file mode 100644 index 00000000000..ccb541742f0 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/basicauth.yaml @@ -0,0 +1,34 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.basicAuth }} +--- +{{- $users := list }} +{{ range $index, $userdata := $middlewareData.users }} + {{ $users = append $users ( htpasswd $userdata.username $userdata.password ) }} +{{ end }} + +apiVersion: v1 +kind: Secret +metadata: + name: {{printf "%v-%v" $middlewareData.name "secret" }} + namespace: {{ $namespace }} +type: Opaque +stringData: + users: | + {{- range $index, $user := $users }} + {{ printf "%s" $user }} + {{- end }} +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + basicAuth: + secret: {{printf "%v-%v" $middlewareData.name "secret" }} +{{ end }} diff --git a/enterprise/traefik/14.0.0/templates/middlewares/chain.yaml b/enterprise/traefik/14.0.0/templates/middlewares/chain.yaml new file mode 100644 index 00000000000..f87994f7956 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/chain.yaml @@ -0,0 +1,21 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.chain }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + chain: + middlewares: + {{ range $index, $middleware := .middlewares }} + - name: {{ printf "%v-%v@%v" $namespace $middleware "kubernetescrd" }} + {{ end }} +{{ end }} diff --git a/enterprise/traefik/14.0.0/templates/middlewares/forwardauth.yaml b/enterprise/traefik/14.0.0/templates/middlewares/forwardauth.yaml new file mode 100644 index 00000000000..7a3e32fdbf7 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/forwardauth.yaml @@ -0,0 +1,30 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.forwardAuth }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + forwardAuth: + address: {{ $middlewareData.address }} + {{- with $middlewareData.authResponseHeaders }} + authResponseHeaders: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with $middlewareData.authRequestHeaders }} + authRequestHeaders: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if $middlewareData.authResponseHeadersRegex }} + authResponseHeadersRegex: {{ $middlewareData.authResponseHeadersRegex }} + {{- end }} + {{- if $middlewareData.trustForwardHeader }} + trustForwardHeader: true + {{- end }} +{{ end }} diff --git a/enterprise/traefik/14.0.0/templates/middlewares/ipwhitelist.yaml b/enterprise/traefik/14.0.0/templates/middlewares/ipwhitelist.yaml new file mode 100644 index 00000000000..1179245017e --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/ipwhitelist.yaml @@ -0,0 +1,33 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.ipWhiteList }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + ipWhiteList: + sourceRange: + {{- range $middlewareData.sourceRange }} + - {{ . }} + {{- end }} + {{- if $middlewareData.ipStrategy }} + ipStrategy: + {{- if $middlewareData.ipStrategy.depth }} + depth: {{ $middlewareData.ipStrategy.depth }} + {{- end }} + {{- if $middlewareData.ipStrategy.excludedIPs }} + excludedIPs: + {{- range $middlewareData.ipStrategy.excludedIPs }} + - {{ . }} + {{- end }} + {{- end }} + {{- end }} +{{ end }} diff --git a/enterprise/traefik/14.0.0/templates/middlewares/ratelimit.yaml b/enterprise/traefik/14.0.0/templates/middlewares/ratelimit.yaml new file mode 100644 index 00000000000..144b9d8bf38 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/ratelimit.yaml @@ -0,0 +1,19 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.rateLimit }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + rateLimit: + average: {{ $middlewareData.average }} + burst: {{ $middlewareData.burst }} +{{ end }} diff --git a/enterprise/traefik/14.0.0/templates/middlewares/redirectScheme.yaml b/enterprise/traefik/14.0.0/templates/middlewares/redirectScheme.yaml new file mode 100644 index 00000000000..f2413f84e19 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/redirectScheme.yaml @@ -0,0 +1,19 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.redirectScheme }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + redirectScheme: + scheme: {{ $middlewareData.scheme }} + permanent: {{ $middlewareData.permanent }} +{{ end }} diff --git a/enterprise/traefik/14.0.0/templates/middlewares/redirectregex.yaml b/enterprise/traefik/14.0.0/templates/middlewares/redirectregex.yaml new file mode 100644 index 00000000000..46e3e724dd6 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/redirectregex.yaml @@ -0,0 +1,20 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{ range $index, $middlewareData := .Values.middlewares.redirectRegex }} + +--- +# Declaring the user list +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + redirectRegex: + regex: {{ $middlewareData.regex | quote }} + replacement: {{ $middlewareData.replacement | quote }} + permanent: {{ $middlewareData.permanent }} +{{ end }} diff --git a/enterprise/traefik/14.0.0/templates/middlewares/stripPrefixRegex.yaml b/enterprise/traefik/14.0.0/templates/middlewares/stripPrefixRegex.yaml new file mode 100644 index 00000000000..007c166ff39 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/stripPrefixRegex.yaml @@ -0,0 +1,20 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} + +{{ range $index, $middlewareData := .Values.middlewares.stripPrefixRegex }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + stripPrefixRegex: + regex: + {{- range $middlewareData.regex }} + - {{ . | quote }} + {{- end }} +{{ end }} diff --git a/enterprise/traefik/14.0.0/templates/middlewares/tc-chains.yaml b/enterprise/traefik/14.0.0/templates/middlewares/tc-chains.yaml new file mode 100644 index 00000000000..409766daa89 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/tc-chains.yaml @@ -0,0 +1,29 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-opencors-chain + namespace: {{ $namespace }} +spec: + chain: + middlewares: + - name: basic-ratelimit + - name: tc-opencors-headers + - name: compress +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-closedcors-chain + namespace: {{ $namespace }} +spec: + chain: + middlewares: + - name: basic-ratelimit + - name: tc-closedcors-headers + - name: compress diff --git a/enterprise/traefik/14.0.0/templates/middlewares/tc-headers.yaml b/enterprise/traefik/14.0.0/templates/middlewares/tc-headers.yaml new file mode 100644 index 00000000000..a0462f1fd73 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/tc-headers.yaml @@ -0,0 +1,62 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-opencors-headers + namespace: {{ $namespace }} +spec: + headers: + accessControlAllowHeaders: + - '*' + accessControlAllowMethods: + - GET + - OPTIONS + - HEAD + - PUT + - POST + accessControlAllowOriginList: + - '*' + accessControlMaxAge: 100 + browserXssFilter: true + contentTypeNosniff: true + customRequestHeaders: + X-Forwarded-Proto: https + customResponseHeaders: + server: "" + forceSTSHeader: true + referrerPolicy: same-origin + sslForceHost: true + sslRedirect: true + stsSeconds: 63072000 +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-closedcors-headers + namespace: {{ $namespace }} +spec: + headers: + accessControlAllowMethods: + - GET + - OPTIONS + - HEAD + - PUT + accessControlMaxAge: 100 + sslRedirect: true + stsSeconds: 63072000 + # stsIncludeSubdomains: false + # stsPreload: false + forceSTSHeader: true + contentTypeNosniff: true + browserXssFilter: true + sslForceHost: true + referrerPolicy: same-origin + customRequestHeaders: + X-Forwarded-Proto: "https" + customResponseHeaders: + server: '' diff --git a/enterprise/traefik/14.0.0/templates/middlewares/tc-nextcloud.yaml b/enterprise/traefik/14.0.0/templates/middlewares/tc-nextcloud.yaml new file mode 100644 index 00000000000..6a3019d56c5 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/tc-nextcloud.yaml @@ -0,0 +1,25 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-nextcloud-redirectregex-dav + namespace: {{ $namespace }} +spec: + redirectRegex: + regex: "https://(.*)/.well-known/(card|cal)dav" + replacement: "https://${1}/remote.php/dav/" +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: tc-nextcloud-chain + namespace: {{ $namespace }} +spec: + chain: + middlewares: + - name: tc-nextcloud-redirectregex-dav diff --git a/enterprise/traefik/14.0.0/templates/middlewares/theme-park.yaml b/enterprise/traefik/14.0.0/templates/middlewares/theme-park.yaml new file mode 100644 index 00000000000..92a4257e279 --- /dev/null +++ b/enterprise/traefik/14.0.0/templates/middlewares/theme-park.yaml @@ -0,0 +1,26 @@ +{{- $values := .Values }} +{{- $namespace := ( printf "ix-%s" .Release.Name ) }} +{{- if or ( not .Values.ingressClass.enabled ) ( and ( .Values.ingressClass.enabled ) ( .Values.ingressClass.isDefaultClass ) ) }} +{{- $namespace = "default" }} +{{- end }} +{{- range $index, $middlewareData := .Values.middlewares.themePark }} + +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $middlewareData.name }} + namespace: {{ $namespace }} +spec: + plugin: + traefik-themepark: + app: {{ $middlewareData.appName }} + theme: {{ $middlewareData.themeName }} + baseUrl: {{ $middlewareData.baseUrl }} + {{- if $middlewareData.addons }} + addons: + {{- range $middlewareData.addons }} + - {{ . | quote }} + {{- end }} + {{- end }} +{{- end }} diff --git a/enterprise/traefik/14.0.0/values.yaml b/enterprise/traefik/14.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/enterprise/truecommand/12.0.0/CHANGELOG.md b/enterprise/truecommand/12.0.0/CHANGELOG.md new file mode 100644 index 00000000000..ebecc086867 --- /dev/null +++ b/enterprise/truecommand/12.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [truecommand-12.0.0](https://github.com/truecharts/charts/compare/truecommand-11.0.32...truecommand-12.0.0) (2022-09-24) + +### Chore + +- Auto-update chart README [skip ci] + - bump major on new enterprise app to seperate helm updates + - Add a copy of Initial Apps selected for Enterprise Train ([#3749](https://github.com/truecharts/charts/issues/3749)) + + + + +## [truecommand-11.0.32](https://github.com/truecharts/charts/compare/truecommand-11.0.31...truecommand-11.0.32) (2022-09-22) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + + + + +## [truecommand-11.0.32](https://github.com/truecharts/charts/compare/truecommand-11.0.31...truecommand-11.0.32) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + + + + +## [truecommand-11.0.32](https://github.com/truecharts/charts/compare/truecommand-11.0.31...truecommand-11.0.32) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + + + + +## [truecommand-11.0.32](https://github.com/truecharts/charts/compare/truecommand-11.0.31...truecommand-11.0.32) (2022-09-20) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + + diff --git a/enterprise/truecommand/12.0.0/Chart.lock b/enterprise/truecommand/12.0.0/Chart.lock new file mode 100644 index 00000000000..dad60923435 --- /dev/null +++ b/enterprise/truecommand/12.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.6.0 +digest: sha256:60d8634057a317d5912fe7e182913e53cf7044caa196ba4d2a5fbce95fdc85e8 +generated: "2022-09-24T21:35:31.824058018Z" diff --git a/enterprise/truecommand/12.0.0/Chart.yaml b/enterprise/truecommand/12.0.0/Chart.yaml new file mode 100644 index 00000000000..600994a787d --- /dev/null +++ b/enterprise/truecommand/12.0.0/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +appVersion: "2.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.6.0 +deprecated: false +description: Aggregated management of TrueNAS devices +home: https://truecharts.org/docs/charts/enterprise/truecommand +icon: https://truecharts.org/img/hotlink-ok/chart-icons/truecommand.png +keywords: + - truecommand +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: truecommand +sources: + - https://github.com/truecharts/charts/tree/master/charts/enterprise/truecommand + - https://hub.docker.com/r/ixsystems/truecommand +type: application +version: 12.0.0 +annotations: + truecharts.org/catagories: | + - Administration + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/enterprise/truecommand/12.0.0/README.md b/enterprise/truecommand/12.0.0/README.md new file mode 100644 index 00000000000..02a49633e76 --- /dev/null +++ b/enterprise/truecommand/12.0.0/README.md @@ -0,0 +1,106 @@ +# truecommand + +Aggregated management of TrueNAS devices + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [truecommand](https://truecharts.org/docs/charts/enterprise/truecommand) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.6.0 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App). + +### Helm + +To install the chart with the release name `truecommand` + +```console +helm repo add TrueCharts https://charts.truecharts.org +helm repo update +helm install truecommand TrueCharts/truecommand +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App). + +### Helm + +To uninstall the `truecommand` deployment + +```console +helm uninstall truecommand +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the values.yaml file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the command line + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install truecommand \ + --set env.TZ="America/New York" \ + TrueCharts/truecommand +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install truecommand TrueCharts/truecommand -f values.yaml +``` + +#### Connecting to other charts + +If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/enterprise/truecommand/12.0.0/app-readme.md b/enterprise/truecommand/12.0.0/app-readme.md new file mode 100644 index 00000000000..fb84ba90ff9 --- /dev/null +++ b/enterprise/truecommand/12.0.0/app-readme.md @@ -0,0 +1,8 @@ +Aggregated management of TrueNAS devices + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/enterprise/truecommand](https://truecharts.org/docs/charts/enterprise/truecommand) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/enterprise/truecommand/12.0.0/charts/common-10.6.0.tgz b/enterprise/truecommand/12.0.0/charts/common-10.6.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0308b85a1a8c5cdc7a0461f210d9fce394ddcc94 GIT binary patch literal 48413 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://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/docs/about/sponsor + description: Please consider supporting TrueCharts, see +
    https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/enterprise/truecommand/12.0.0/templates/common.yaml b/enterprise/truecommand/12.0.0/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/enterprise/truecommand/12.0.0/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/enterprise/truecommand/12.0.0/values.yaml b/enterprise/truecommand/12.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/enterprise/vaultwarden/17.0.0/CHANGELOG.md b/enterprise/vaultwarden/17.0.0/CHANGELOG.md new file mode 100644 index 00000000000..ef8063293ea --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +# Changelog + + + +## [vaultwarden-17.0.0](https://github.com/truecharts/charts/compare/vaultwarden-16.0.37...vaultwarden-17.0.0) (2022-09-24) + +### Chore + +- Auto-update chart README [skip ci] + - bump major on new enterprise app to seperate helm updates + + + + +## [vaultwarden-16.0.39](https://github.com/truecharts/charts/compare/vaultwarden-16.0.38...vaultwarden-16.0.39) (2022-09-22) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [vaultwarden-16.0.39](https://github.com/truecharts/charts/compare/vaultwarden-16.0.38...vaultwarden-16.0.39) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [vaultwarden-16.0.39](https://github.com/truecharts/charts/compare/vaultwarden-16.0.38...vaultwarden-16.0.39) (2022-09-21) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) + - split serviceSelector ([#3751](https://github.com/truecharts/charts/issues/3751)) + + + + +## [vaultwarden-16.0.39](https://github.com/truecharts/charts/compare/vaultwarden-16.0.38...vaultwarden-16.0.39) (2022-09-20) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - refactor Services SCALE GUI + - update helm general non-major ([#3767](https://github.com/truecharts/charts/issues/3767)) diff --git a/enterprise/vaultwarden/17.0.0/Chart.lock b/enterprise/vaultwarden/17.0.0/Chart.lock new file mode 100644 index 00000000000..8fd9c98ebaf --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.6.0 +- name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.78 +digest: sha256:c7d95291348fad2484e6426c23dcba89f034b969ba2268f6acaab77d153d42fe +generated: "2022-09-24T21:36:04.323893916Z" diff --git a/enterprise/vaultwarden/17.0.0/Chart.yaml b/enterprise/vaultwarden/17.0.0/Chart.yaml new file mode 100644 index 00000000000..b75e5c26a74 --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/Chart.yaml @@ -0,0 +1,37 @@ +apiVersion: v2 +appVersion: "1.25.2" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.6.0 + - condition: postgresql.enabled + name: postgresql + repository: https://charts.truecharts.org/ + version: 8.0.78 +deprecated: false +description: Unofficial Bitwarden compatible server written in Rust +home: https://truecharts.org/docs/charts/enterprise/vaultwarden +icon: https://truecharts.org/img/hotlink-ok/chart-icons/vaultwarden.png +keywords: + - bitwarden + - bitwardenrs + - bitwarden_rs + - vaultwarden + - password + - rust +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: vaultwarden +sources: + - https://github.com/truecharts/charts/tree/master/charts/enterprise/vaultwarden + - https://github.com/dani-garcia/vaultwarden +type: application +version: 17.0.0 +annotations: + truecharts.org/catagories: | + - security + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/enterprise/vaultwarden/17.0.0/README.md b/enterprise/vaultwarden/17.0.0/README.md new file mode 100644 index 00000000000..bbb0f8bc0e1 --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/README.md @@ -0,0 +1,107 @@ +# vaultwarden + +Unofficial Bitwarden compatible server written in Rust + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [vaultwarden](https://truecharts.org/docs/charts/enterprise/vaultwarden) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://charts.truecharts.org/ | postgresql | 8.0.78 | +| https://library-charts.truecharts.org | common | 10.6.0 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App). + +### Helm + +To install the chart with the release name `vaultwarden` + +```console +helm repo add TrueCharts https://charts.truecharts.org +helm repo update +helm install vaultwarden TrueCharts/vaultwarden +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App). + +### Helm + +To uninstall the `vaultwarden` deployment + +```console +helm uninstall vaultwarden +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the values.yaml file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the command line + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install vaultwarden \ + --set env.TZ="America/New York" \ + TrueCharts/vaultwarden +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install vaultwarden TrueCharts/vaultwarden -f values.yaml +``` + +#### Connecting to other charts + +If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/enterprise/vaultwarden/17.0.0/app-readme.md b/enterprise/vaultwarden/17.0.0/app-readme.md new file mode 100644 index 00000000000..037aa691afc --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/app-readme.md @@ -0,0 +1,8 @@ +Unofficial Bitwarden compatible server written in Rust + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/enterprise/vaultwarden](https://truecharts.org/docs/charts/enterprise/vaultwarden) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/enterprise/vaultwarden/17.0.0/charts/common-10.6.0.tgz b/enterprise/vaultwarden/17.0.0/charts/common-10.6.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..0308b85a1a8c5cdc7a0461f210d9fce394ddcc94 GIT binary patch literal 48413 zcmV)*K#9K}iwG0|00000|0w_~VMtOiV@ORlOnEsqVl!4SWK%V1T2nbTPgYhoO;>Dc zVQyr3R8em|NM&qo0PMZ{ciXtJINqQ2SK!N}ckO!0-|NcFA65vCk{Mu}5-rkKx0)xR|Ff$ko1|gZvNYXu;LdrV}IE(-A z@K3MT>kW5yg z6+8Dkd0>h^BFZpH4#0fSf@x}h#*ib%TM=R*#VMEX-egHA{sJ)`QAihHOenab8Ilad zT2nGZ2Vly1$_~2S3Fgym)CtL~%V~x}S*8oqlyx~ps5^sk;#;2d&D zSx14&7@{FbI7+yLnsxVvJH6iC?r!S_Ep7>o*g>le^2S z`nuog4?Def@4MCv;)Fw-AS!{O8N~4cz{!~WcMiBi=%fWe0!4ov0sxTFI7h!wK^4~+ z@I{Ia40^4(!KL5p3_HEn6OF%~|8p2;h&_@3SUUgv{o!!9Q=I>M+k@x%{}j&)&~AhG zDM~(`p8=Ml5RY*PLXwQ}B%@Hw_0|jU-w_(aEasx{B|>0?VshIeDN5#Payo+(bkG7o z!n%|&7JyF?&;>vkW0Y`!MZp#T6s3e=PUzwQ@GztuOkDY(YqeFarf>m=VnT8_F_P=Q z*%S_ThX?)f{&s}IXguuigro7!J{s%{UcDOhN5gRsjbRV%4|c~pJA32ZaJSzZ4R=T3 ztKN7x>=v_A{pFhYZqaU8>(= ziYB6BJ>7HI4M}ccHh|_5dfxB!I)mPz-+R^HG4y^l-W{Ud;joAHqw#*U6K(JB4*DqC z+lD(~ICwRNgPqZMcW=Mf+Z&BXXt=$NdcFSs4jQ1*coa6lVJ%W$K^(IX#%Ntqb5pUN z)H&=*Qk$<``&R=X1qyHXJN;hYPebWMLT<>#ru=GH z9)$;;VaJje?evCw{a1T~a2t)H@m>_}4hN(CVK^A??7!OS@5A2qt5^FG9PjMFy}^Ee zAMFozw#ToA+r#mzy+MPv*P?EMIGYl}*QKthS5I9Fxgm8;`PH!MMKRjj?(c@Zy-57= z3JwP0c)uTx_u%#*>h1S;`u%VejrOB)f4>j6VXr?J?Co#A8ufR!xBLCweuK8_se2gT z!UfZG4M~I;qH{#orEFfap0=V)TZ3;%UZ+YUh%S+LI(wa-p>c0K+IQ z?S^5r|Ejk)*zFBo!B@S}XtcW*Y1ieO;Ky4UZ&+8_0|L%53|+}_y z3LZrfW)+gN*XiYwb0-{x5RDM(_xDD<-QDr_-mC4sy>ZkVN87#Ocz{q34TrDx#?j7R z^lE#!)7#rdJ@g8RZ@o&%={DSyK9iV?V4TwhaR3uQ=7>@pA-P~xLK%(mXF$gC*Eow~ zu{hI9y7#)Y2St=a3C9%4G9W@@K`_C>zyheO38P4sgE3Ipff$ZZ%sSvl6wd%hvsB7S z5W)nE5XcycIxV0}9e^)imqUX|Lb#kvD?vI%CES)+PE!)ch+33U0!J~@6W@FlmDPvn zKrXP0q{)i{v9j&R?;l}|BS570fB{Ga)zX+OW+>rXAcAN{5{5V+6fh1s8fP&>f(O;& zI4@j70H-^EBodFjPS*k1wQc!Cc#9c70Dt?3g0I)}jLeYch8F+;xj0sD<)1Dt_s3w# z@T&1&1FWiW-#*>3S+^r+*=&TUm|YQKn4$=zBw|Vq#W;lQ0Q8qIP?k<8j1XX)LXIX2 zS@aE|;MgL=wnQIrqjH%oL5{$NRw$bQCK0$Gag3A6hctp*^QC}wse5yYDuKOE zj!}#_Duc+uD`3Zx6aoyulY~$)bubg(4E|zjQ5S@G;dDQzaiOId{0y=L&LNJ))RVQG z-|K*38J#Eq@~=WwXJ`v`Q%Jdyav=X@rNxCBQ2~UaIcAt7V2YVgH6X?_sZq>_AJzM} z;`IU8Zndzd!<3-URh6%|{8G6d^556032lo=tqCqsj6zN*fN@N2nbZmhvIR(Sc!QG( zfFQ!-F{1hEKEfg20(h1Z%3;E-BDp*|e0u_Z_;9K^V;~=ZK>iL|x?!UkG_TKQFo`zU zriEi{ATbT3_pzl5$*Eic1JVgwQd@j>svbs>s(}+LVgM%wQYPmV5W_!O7-*f=3vf>H z3{o5~Dmsila|#drb_5?B86?0Jo}qt{1huaI?*M$bI%>62$iwMrLO32Tv?6JFVjz_b zE`X$SY#q#JhnK45mikcCRuhyUWl$QOt^p`xa|TmafsJ9ztjx1iJ%@Y>GA71R44ndcz%9KQ{lthOW z>aap_RH}{E3#YLrEhwvFwYJkW-})M@Ia<}q%!BHna*Q~lGn^m>Zl_2PI-f~u%806f zW(fngm`}mg)&Cl9>a;jt7?!#tIL0HKFFB3Q5e-qop{K_mqM3JSM(CoZCB=zH%En@d&T)uf z7>d?vSMj>op(^Hcodov|-YA2~lm31+up!njV&bHfj1b!b3E|=&#KTUfBkeE&?o{#? zMF2A}Q-&B!K)(QO3(Q2DEK>zIAW6I^m69+Zy+ILx%;2RO(m#y)$_**y;BaO=G(dr- z6JS%4#gSN&DO)wFntwS+M{qoQNf&L&t=0X$=VL zS6kI$h-ikk092qbGg=o#TGP2}X}buOK$X-E0-uQ>IEpjI5xpR>vb3Gw-{U00$)uLG z=m>_58A=qsFB=IMb<88-ug@|ka^RU*0Be!0&~8AMrFzLiEw}h{i6^;L;tED8e>o~I{x1;uzsFv1jtJYE3EISi-T`V{I!FXnK<5go%&j_rAjAQM9h;4P%+ z09*+eqeTiCLk!&PGs99$tN;;BV0>x-FvsyEmO1vr0SHjSwgc^d!YP~`=)bkIFNmgL z8r0Ms(cZGEOibp`lmP1I>G_en(ZFma0NNlh%dcLiKj?J_JB7*@B;&}h5+TNM0#zhb z(Cf(m>sq|zGl3l4!o`6H-}(S9P!b_IpBMrs$-Mm$QbAgfW}IvNITNEHhUO+4A(|kL z1ieFwI2dEfc&DX)og{N-`o4p5{V>OrB+^{BYu66A(t0>wU%UX9i-g0^#xr}+dI1hM zfmx)#0N-zd^TW%_pN|i~cVE7M&IOW8(GhYAeEs@e>jgNnMOwP|YNh=Sraz&@1sdD; zM)|An?HNqlcI76Y8?-nO|1qzROQ7Yd?hPd~2dE-LsV&o*`dnzK+?ISg9YK?mO}o0h z`aiE_LzXv7N>tMcnNdQ?T;gw5v6fg4_H|@x>&}#lx_vAd=aONFRv%UXj47E(PnO{# zXP-jWI8!cS?Zas2g**{1MA5O5;M$s0{3)Q1kYMB`#;s?Q!jNY$1`*^?2&54LF@cdZ z(yW~;VM7KOr#P7$Lk=~JBbbBmpl!*nlsdpr*DSa)}_=0gXYbPW^?T}*WtT8Kg;{&&P0Pxsr8#7f=+Ri~uOI5XmdERMRMCD+()r})I)lRG9vr9u} zwq-ZA%~B|d2xnTzf*D)@iWrIK2qY{f-rW}T!T$#_alnJ@?y>-ZfTLfTC z5sVgQ|oN3NXWV& zNkWuz);0Co+M2}4M0`w8$lEZLeh}Hswl3Ix0mBe6!M1HaMdtNpONpyX_46%GZkW%7 z#!-DviKs8kEDBDK!N&QA)8kFiv-TW{ex!0~94~~Z&4lO>6c&XJ!0vFr1;B@QhnGJc zfL?E4L{z?6D~AyY<5kr?A_+&Ic_)M^9N`#qECw{=3`cfR|HFqp5OZnmlO0v|v8T&t3mZmWh ztN>&A!7!FCcQh4J&`ikp$ps<&9cDAg!|8fhOLthDS# zosJv&7RRyRHku_{LcPKS-~@A9VhcbZW`~%+c!mJv04I#YIF>$-PD}r?yFKiITSH>4 zf+8%#12VN6sX1LP>^d#IPh5$Ci6eo@Lbj9_lB-yOgD`}I7^e$>IhwH!I1x>HrH#XG z3g-x5Ae+1 zSEIim8I^-%fS+5~O2n7!YlgV-fr`$Fr82k`wpv1Xac43|)bDd}b#$(r7iy(_b#$IL za5@GM{CIVBu3NxNsV?J;k>W{w?~4CiTGhU(x|~8jHFc_*?gl#KfKLzXFS~LObOB?G z;>a+y>Z}goC~k~Xgzi%S%eBw`1k-_u`HM6pz|h4(^2l8oCAyZZeY;y9z|YDy6k2#YUyoJIuk zop{|&vub9ypC5(WE%ax0Ux(d&vOO@rR|Egn82(b}gtggS>ym0_XD-kOW_1nwKbX#y1f90p^g~Rt z;$#}=_b*;3SN{ybgaORKRM_cY20zQN0x|}>f7i>U17q```s6ILDueXiuIkw z;#^DtE3i(J2!~>kGbOjpJCX+!q$JIR#U9ngUVjp+*H6+X_UR3b;}HyRuE<+5VegX@ zN(ue+878t) z32X>*DYC&0{Sk^^f3+Limw1-OXyYw`(Fn#c2@&1g0^;ZQ`sbE$ho7Erfin`Ja}|ba z3<>+S7?9+gN~k%PP0S2mW2;j%Tjal z=$@9gjh?KQrKXifx3n#B!4gyZFykb~$&E`p6*}n(MZw%#U_|&-o#&C_NgyDxfF9+w zNt$u;7AH4l+S{NBVvdu-B#!`@;V6o4Aw}*8zQLbS^iF(1@>7X2ayF5%s;$Zxsm3Wp zV|?R&x!Gqb%p-*%GRF=C!uB+phODB^EqC9487|Kw5F@b{L`9kr5 zmzc(Zpb07iA)AQS7iQhW-1s(`a`BZ~-Z%hl2xK4!%AAOJQP9Ox!g#KSU7aSsZyuhr@PayJoFKDusNSBP9Uj_OJMquXu9I&LN+6 zKr@tp-8JcY@09mg>WWC%%fh5|@>_zxz6SkHf2Z9mK~l#P&SfqX@1x_uE45_Qr02L( zn$Egab5;<|6riZ!(Z-OaN!|>yvtTM1a93|Hi|or0St1JZxz!pdZnCn@(y)ni9vTtTfGgbQM9=G(<3TM= znM1+nnDdWEn(zM&HwtX0V>`PF{jIa}%7f(W7L_)Z4+J}=F*^Tvw59+2@q9~g#1=ra zlrN4k-O>tgE1z;(Qd!BQD}v!tRYXaO$Qh7~>ifV7UKjo4W3MU90+0$3KwDtf<|B(&|`qcik1)@a)XE+pQnaU=m zPPQ0|MHSVg3DW+*H(!E=-Vrh271Rj!{U z(qoJwu;HMwxdjs9Rh34l3_y|_!D6yZiSNmN3JIb|nzyGt~ItWh6UQS!(4mcRN?a*tJGx5&Y9fVKhnW}did11Mu`4@8t7V1 zcm<=IW7t+0GIP+WEwEt91rKf44!{M1(a#if^j;XOdH3b#@lgz=DCHk1jCoQT(!HPU7zSqx028yYa zLJDVyBWhM*f)%|~U0Y%#NQ#n^?=Q`{D`Dk{e@nH$*W)ZSjW#)>Ol>&{J7?@R>=Vct?Ou}ab~w7_8ssW7hiEkX%^v3uU5kGfWDd_zYErwLmHC_yCZMRA?=Fl&)o6E+@WMO znx#Zu-lJ)=bfiV;I}S6SrQh@b|ND*a)6IUG)n^WDF#Bnie1ojnA+pLt+C9yn1ZtLPrg{U+UtI!F2ITP(ehCjrP>jiubBS^H`m32!>KyK zq5WT?OxZo5NMPzKZgDJqvm-9e^c2wOt=b{JFfYLQA$pI8BhQxx8qvo)M9v zXJP~QnU#MdR@N?toP+E5P8Dp=O#a&?Oy~H(f5%Q~r@xQqnpP<{mGfAQ#77M>MWJ+0 z-ouGzB#UyEsb81IeFK03Z1*t^>?>egw92!#Gw3;=)PB)y(Kh*_YWT|RvNmBYQ`X;k ztLHCoQ?wjD?D&3jG}LyH&d#QXN!C{%&UCl(v~|z?ThG6hL#{(XR*$#N_t$K&RpHem z?d1wwIm|_<&qG`*qM}?x+2~zKq?x;=;1JXk9(#LxmC{ZRmkJjskCuF&hrh{mml;FU zZj=HWL^fNrCzNDqceZHTB9#o9j9CNjOvbDsYbIlMf4)>n=<<6s`n`@m;=Y{vt_3GL zW-r~#QxY&TL*nn?na`JqvK9M!&fQ^JAmt$rpPV2voJ4qzBbf#ivm0|6k4(hHI7~v+ zX(=4#4x!0r%XBJL8IB{fqIwPn$f11c?sNs-R#zautL-Vd!hZ1ryr)3!je;06?%Xya z*63MUYQ=eN_Zs;WU8=v=Xn*hnR=>QB+;ECu+Sc#dGJaW8{Y*#@waq999+HG{3bDM0 zVJ(A4WfjHAq>bh(!l(-w!;?g2-%3b?x-SxWq$U4Utz&14Jh zoEXBWtZSax?7%bl`SJ$c9)Q2#grfD0z)xQ=p%yCHsPGWt0k3GPcNtkkca=4NPwvj^0aj4@=$#`I|mA0?b( z^|p(6*j1srf?8=RB=0x%!;$d6j&=wL;{@I2K^X_KL z>4zOxoI07o`<;HTr=)N_Ox`v{QAlPpltgBq+xRc@1XH@EI#WVGjNn|K8Ix&a1j~n*WK2K~ zrvy7ekiy#NsAMxRW(43w=mL3MZYl&mQ(=+}&@2(E+Q}BHFHDLt=P?qXEh1ZhW#Lpb z{thQt3~$FozC^?ZznFeF)v`qORZ($F;+WjZ9MUg9EX2hYfYCoQ#?=`i$UuUGOow!_ zB|EQ^@~fpNjTc}<<*6Dt=7@stavFapFZGloq70-k%?`j$uh*MtAM{LK(7OKvmTA}2 zC^|*^g@U`icUUul$r&rAi@u@l{6it@l?)pH;rzovq0SiIAQ@&ZxI=1bvs1`8Yl;8b za8X&*qybeYfYslA_R1D89}0J^$@=Dc$1%yTdMwq~AAD=$O5dF)be_7~K?TzYD{hV` zj79(3@*Y&3fmB5;+2oOtjK$LNYD5%2 zjLDYvk&%ppzmbdrA(oWLI_OFn)w$VcZOGeGGLtf(OETKd@465&OyJm#@rXjYXlrtG zU)U@D+w(N3c9g1v=8<(eO?9xjlBgIS`Zdw?^ z_SNp$6f$;8Xr%UgNH#I&P|PyQ`XGTVTZlK!@7%v*AC-&LvQ8nC(uZPn-URb$Hj;c} z2g3Pl6q8X`s0gJFZ}wT2W=V&s-q~^!x;zb>ASI!M9>9qtuROBokX!zCb{>_sw+M6#v{b|wN%OG4I|;r z?zLH2+Sl@;%WHL`W?oxHX4GGf;-p)V*vu~spRGLD@T?>66pN?L5vu&DzN zX8$2g42hhi);ZJ5HNCeXpj`%{SL(LbvAWyU1{O<Y-q{0CIDLSU zdG2K{--HQDM+owJlp=|F`KX8Xwn#ZRvO-_E0aWQXIF|$E-T%rx;5%)jdHcZgG!g&b z5h&=d36b6puk8oljaq*{s4wtPbRSduE1% zbQ2>Zl&%FSZF5G|=~ii$BxOqELJQ|tx>h(FeUS%~#gZ#0T=;h9=rQC(-rc*23#b0$ zN)3;APOJJ#YPl}TuZ=d&&LbkD^r>}awxwUW9YGG;5vD3{h7%_q6P>7s6OdBXh&LJr zP$;i}P(72X);hS`ZDCZ{p9x7EF;GOn`4Z^EGu_Udi57#JBw>2_47)kG85}K$0Ey(vY1SiJCsdv3QR_!nB3qsEVbnZlWBjMxnyx{YAb=}rjmtSX(!#$ zEV4lFWE9!jPiPW3B(5@uay!Ml#8q(Ehl{tO+i%GYmLCLnl#|e_Ofr&rCib+rG68fg zAGYpAOw3_mn;I7B>ClCz4azWf;gKJb^6*&3`#P=1M+oZ@7R-9 z(cNM`l}5)oi5_fn7#x;O4vXhwEF>)OhnyW2=$&SVt^LSuh8Hhd`uYHtZ%V7%6Xelb zVV0>j1qx%ixsh;_$t^-DN`%pd5fh;FWm1H3p@Dvh^8$;~ZPvlO{L}W4k(jREJ5j4yzeLHW>d_w_@KJibYcKoj%Dv<6b@^iV4o~B|wbASK zdc&O^`ERe+EB@Qt+wT9Nzq8%n-rXJa2mL?v2EE>J_Ya`=kR7diGR7hOL+{>g6+8Dk zdA@w<{;4I^woP^=*O5AiV-#m7r8rSp(oQr}0LvBjhH-UqG)4B}@62W`(a{JWPCKnX zb-#XXefeU8GXoxW6bE+X##pD!b^&PXI(Q5~=c6+CCNUYoxPw0*iKV5v=2aJ@Fqt6m z5+@P*yairjiRi&=TN!^oDK&HC?STkL?RL8bQ><5)2OzlFXPq#?oiGWO>qj%|MM)(ml|LKMvj0Q|ZAPjUiakd z*Y9LEQ4*OR7yc9!YdHRO^Iur^Fuwbocb^sWe`jxR&!7MO-QC^c^Zb8`XW3*_Jm5{h zdFxHD%Oae9G=jQ3f25-yoH7-#Otdx&OeAxx`(g92HQqUhGV;nv;{h@xeGN9$297GUDgObrFukAEvR#c$o*!HcnzmU3XPPN$7ZWPm zvGwY20IAx?Ai$s7e-xZsU3s%Y&AilE#MN}35^^IT#)RBtDG28M00c+ouvy@?8{{>D zyk98cbdeHaXo!y8qLFk^p>o%pl9pO-_1Bf%@C`jE3ATLXzpk^{jY3I;Di^M9x@>>O9VSan|_q?yI zZ7WwQY-Ea{-%&vkY7wAxwUaMj znzE(2rHp^S{6=RM$wyZ9^DI;!{vx+~(v5n@(q3YqJS@K5lnw)y{A6r>~E$#h@{<{sDmt z(k^3i(1DTFZgX9n>9*q-s&-uqd2E9E;UQAQg$ax<$c|Kn#k1 zPyWdMo&+Fhx7$*mR;m{z@G5kRklRkbl*h(;aW0Tb$*V|h!z0#HJ}N|~bSI5fN<3zr zQ0tc!L`kzzjKiPMLJ{Rxz{#aN4+wq*qu~xpLSO#~&@wc?0caHw)fBd?Z|>lsdVU`B zS*ic;;rBPs3jM!57!C{if4DsuJnR3bc%=XT0&$Ab9Ldz#Q=5|+J%VpxU)GZ^8y11fiFEwtGZ|>fMe1Wu_NVYkz zeY*p)UR^u}^%&bJY}ip&@3Z4Ca&vXG!RA#Pee(#jEj~Ez1 zh9VQXtZvEC(qowdFKrnZ3(->?nqgqs+ z3?{C^q14i8W&$Am>1M}Je*Bo5J*(i<5Uc>H;OY&E!l42{jcZfG4GJx6dSEK}L!N)? zi!x&nulg{!Er9T%~bg(OPdax1@4@OCi-VJf2#l==YvGEU5;(J-pa#qd^+if zm$tu&Y>B#|_w7X~9Z1sKbU0LVtm=y;i42|yY-ju~8V+kdA2h;20riISA+LR(`S5Jw z|E5nv``;vtyOS??mH)Tb+bP=rz1^K>`~N8(9sgZ03yKHL^x1ZtFhpf)mNhJR*BllT zTWzK}N4n*~v;z=)`C=t={`FLR>^MmazJ5JeQjo(5`1&}RomO_E5|8~A&xYD;NS2;jfj0x##v ze^%=IO+|<2tHWS)0s{ldODtgd^xTB-+|^J}!9HGM1C_KS?_51-QBs~ikQmf-sSSd5 zTN(r6&wHU7=$2{$32WsRC zLy5d+cY4q3|0j8@{MTC;8x)NZMM;R037BA>o3)z-Cjh{SN;j`}r#_ndOYfu|+>Mr} z&=6}I`brlbG;zz|ebcloaE^93M;DIDP#bBwffgi(|yB|ba3x;{L9cY4-Z!#`}P_WSe> zTLyY4->^%M$M+2DM2-g%T6ct#uDtf54cejnhs6k`04M5BvDHZbPCRt0<-hIG(RYe3GXw{?AS4`NYA0rs-v&e~xTe7Wh|@?DJux{;D+HBgg#Z< z#)mc5y{64VdWiKrwoZNs)qw?^#RuS5o4r3zhCk&zy^dwb=e0@;@v66PvXf6}8u}mA z7isZgee;}n#yCc*t6e@zyY_p2{ZgGRVo{9A4K`L$7-N*!e9tE9M5i(n5dbWtFhyDh zI6m&mO>C#ViA`tH2LB|ZYdcn+ISS-ugE;izi#jS;(8~(nmbZn(Q^N9G`mXC;J^v)5 zs&>S4eVsx+y}s5f4xOVUsLbK=ALGSnB>x|G{XZD&mh8Wsz239@e~PCp{~uue@2Z0G z`rnG-iuJ$wwqpJ77i+Tq_iNm9{lCVd-qCZv$3?y6iicX%yYzVcMg5AXD~n9ym@B2I zIzlJEmRC?)IqBI0K`E-qbjB3ZkV>&a^)UUYq4KBvdVYDs&I3edHHgJpI>f&d7s!9~ zvs(Y#;e0IrPk(QByX61bd0ziL$y4Y5aql^LV*ih6dadPSwg0E$CZvb;|5RBzkL>@+ z$+Px}PrEX&KkJznY1(bG)-N9O%prMw&0nv5*t6)Oc#u<{wkz|;I_gx(Z@XW-|6w>7KF5DQ$x~9C=+3(^<=>Yl-#*Uk*}c9 zFCZW(N+hV|HENyz3Yi=VsJ2dQd$*XPNe1ak99OjH!dca(5O^}})IHmD;Vf%Y4%d2Z zuCR;dX<{s*3TW!n8yur5H($hdM{-GWIZYr=}tMMAbH=kpjh+FY<=xq8V@%sHkQ5{7e!Wsnwtl?|_e=J%M&P%3bNRoQ*YDmRe|USc#;&oT-tTk6Sg_DT z?GBY&(2`4+?n{p3gQn7 z)bHPg`t@8&sB_1cgPsw)8ACKt_x3FAHaiS?2*?*6l|D!h?l=lC3wx93+ev;>L@_!UpjqST8y`6A z?Dn4bf1c#2^Z#9$v40Q`pcWZRWrnl4Q0>{vQM#vZ&-&`BLL&>vcz(XkNAT`B-L8b^ zh%k#2gMoWuqpAoU!Ej}v+^P5Mp8F4d8p{8Bc>q_)|DElVWxNMU9=FY{EPPE3J+tUToWH-p-SO=iODSh{uV$s z4Yokw%q^NF9X1XA(Q0vSg7?dg$@(>JPHSO*s!R5zICngm{a&x=%yeI!k>r99t{cyf z5{Q>#@yr&CqnUHCAomNdaF_bv<;7x4;H&T65yZ6;Z8ULU_*b~H`U z5d`{#vLmha7rn)x3d|85xgSG{AVO)E8WrQqGYk8Cl}8;X>SPjA$fEbM_=l^5w|8JM|e}8BDS^q!DWB32_ne_ns|CLiG zKLcbxSMAcPyg0mi@9jPYe|C?Q zoSt7De*gC5^7{M3qn}RBj=hq}memZ^o_VVY`tD_&iF_xL4YLD9N z$fGv?8KXxzceB&*+|5q)xtnq)uTTEx=GC+y}$N&VRI73oWN$oqeOaW370chC* z5Vaix_!M&KqfuLTQ7dCOndk+h;4~295ruTI)QFTk*qNpA zjVNRN%juhhX}6(~Fdzca*Y|ToDUMLEY2J6-*Z!*3P{Q%@&D&CanJ-IVID)I_|2Le3 zlSy|z(2lzr5me*6GYH(glkG-ko7ODtxHP7v5IC@Agi=%WaSe6!M-@1FNIUjNNa&rZ0@{{0f<+yH?l z7&_&v(JX{1+$r8b(c9u|a22ofvJ$2N=|ikrd;VKTNB#Rhb^0GC6N(sni1g1Z^nbs< zGwc=hfB*UZucvv|*8iu9F&;!S1M^d>SP?prcg(NDr~sFgc&DqadPvBO=x|sTUf?A#Q`aF zzceuZ_ay^VfkJtlDhf4dp~z&V*3Jp#hO9++DWRM-B(5l$lUQGQGS_pa0C;or4t%~* z&7JNC!!2Obr*Dyqs+nl@M5-JoZvrhTE(xvaTtG+@y6Nn*(vDqnIEw2erMp#a#8Su9 z(cV%6Y8FMeG!KVAcnt!LeckcWDEKK3V`L**MLfGdJ>kvwZ@-rCYcyA;c|o9748N3?Gw+3!SgYt&&9P-zmKI`EmQA814YI1n zHcS02`W~t?$W;o$yqXq;%4wm^-5QsLE9#%#VNu>7u5we9oCg7?5RLJT?Rw5v9Zb41 z_XF*qgwsVzaKc&OIiT|oPH%!+G?D>SCK9JGJ*{|Ly0YC$R35XBcI8v93P2l733IPtcYxT+9a$!y#G=}l zFOqZ}NiQ#PM8!@^j(iSN?z|l#%JV{bXnrXxW84268SCC(gSl+t$RW%4x z&eMEYQ^=>@75YxVllO5R4*$kj9_W)R@701Rt@=I3s}6)cS6l8 zyADap__!E3RpoDQ{ZfIG$GM8;sfl}%G#9_B8Q|NY+c z^71JHXYTN8U$1iYhA?rHK?CjTRdN5TJ-nK)QVICM{Jb8wuIcUd>OPFmw+u3uFTbhh zw@jz9U$I=K`M$4OGkMJ8t;aNMoJ^eL7}ZOwG8*6N0_*p+4{VkxDTyvoj6zQ6L3s(` zd@XdcwuCAph^29<#iH%I1$6Bhcxm#PRyR-+Oxw6@T3uwf>>t#^giHpRQiyw32^#-Ov0Pm51kN4)c-0WzLxn*^Tm=b zo|~$oo;tx$56Nu@eGXCT*_P@})slHhrM8!1veG#9M{D&PA7SPE>)50>cHVA+4S6%5 zB+q84qw1oWQnijVQ`H?aHAPN7r-C7*{M#(5K{5En5h=m3lr*GYj*M%}m&8d9Xa$rC z0oETlu*;-hg`P`@5{}Ntrii-m*2ne^tm6v%Moi;WD6>oHqt7TM&rre~vK90es8}|( zYYTY`J~L=_xHjdcy88FvqoovDi-VRzdT8D$@sgJSLv3p6V)Dnqa9nnJ z*%o1eT6e8KXT9nBGM$HOyRaX|!KuLjK`3oisPd=tA2)XxSGc(CkH$A_);P{RH*)ORD);bb!!SgQy(5vy!_-!R zB9@r;yBoH2fnfAA#T>m)LKMhLIh~FBLS}J_e#wv%62my5GJTa3t;6uYyaryqdi4Vi zY66*Tr4-rRj@A8l4`G$YrfLi{Zc35{U<0TCY)8xmxtN*6WCUZuGn#9yVr#ug=dxhw_CjbwZFTw{cQg|$+MRICz#?+zem z_DXb+;itg8>%xb^vnu~jZ)dl7{=e57JllUy@vQCt(-%ZM zio?&nTH*n0IsaaYhSr?!--Fn54yIWr!~0Fc0!?)te$0`Ifq zS3Fv{)^4A<_{z%>^BZjWc_>tAbSF7X9i-wWCYy&cy4*>$z{PK8SHl?~oyo;Z8)GBY zA1Ymp`a|i=Rd)y0S{*qlp5E+OH@9HL#f0hC z3(Y50-v0D<=?aCud@(mmd?}nav8bJV=7=URR?Zd&6*;eTDft>XCH_tHG;4r`V}z=-|KekgqCUH7TmfU&;;S3z$qyu9Ld2#{4%twG!G|=c|?wrmh=i z%&sULk8zmal$4LN_o;HgD=IH*lc~_Y!|@m=nCl9Km;QcxRfXk1RUX<((CSm&NL0gV zG7KdlRV35tIrAxddhV_Vo3C2k6K>fk#%y{<_yvN|;xLMY>^E#!_tm5Bau8LGZ%CuY zhSjHU;0(tLHT;`kBSCd?#RxgSik}I^`&1JOF$VQ*)C_`#i%q}s-$hPnG6MF8jS>Bl zA2$&CYs<-o;aN)FAc|KycbSIQR+$xSQiG10*+6ZW`dJS;`Ahe<0QasguQh8-_#b6N zv=F?0A!%X+G9tR><7MsFtD|!#f0cQE0IrVCTU8O!d5OI9704E|sZ>Jn+Q=(7Cy&eY zQC#gQpEDB4BojhitEfArvn6tg{r z_5d(je)^YH9Q|G5TdJKag_ARPJMOz;Cgvt@8ks$z}(#}a{9He$%^ zl|d_zwePqMw1HgK9hS-csPx7%XPMLipic7SB4xjqmt8iKs$ zAzU~*uO_PaA|~O>Ie4jNn6*Eph*0MdblEDKv?h3~B`I|1pe!gA$KaOGo0z~zURAv& zg*v9PJo*v1n?m*yiqCe9l5j-FFhopwoH8nb$iOv$?ae;x%=?`%!JRM(#~n<%<`QAq z^M4YYfM5#*cYu9oqTG=liWHQ@v6k!PT^TL1G`nX6MyRwcHj21O#XX$vhSe) zR?7eFy`uczdzSxC^Qeg&$K)3Ll#P%!zW^s-gaA?2T7;6$vWZ-oPyHr`=IR6EGUyz+ zm7JzK1_dLm96*I_>!LimKs=*59c7wQl2RPjMnX#n-j`M=XI+W*7d!E^lglRU2d zuLED!HvP?NT1+@|{9Urp@^}teM0;tf%hme+9dr3eKX0(*3iI>p*9s^zn7|2&+M|Vk*yJ+LT3)v}a?cwrT@}@=i5_f4 zwAA#s*_7_bGo_(zSCZ5Ed1`sdarl+1crghQM# z%@Fb(=HM2`u~;Q$OyJ1?l*nsrS8`3h*Wz$avTBE>Vs}Oj#2dXa^FSO|0$1j`Qjr4Z znGUYzJ{4nQsu%0kw%0Bh0{Lw=cLZi*GTMGzfaL(yj;}+Di7^!>)n!Tz_?7be-sHuQ zK8%-13DT0ZdUhtNYR%>&(DTt@bRihEQ7D*PGP|BRs+6>3R!d23?G`)+PG23-qyNsW zPKwePh6n`zF95-Hu)d%%9V?3X!j3K{qJyhDQ*{X2UzKs%}Byf4P5#460HrEamdj)izVPH$d|f6 z6>PWo7~&XgmZWs9K=6kGm35Om~!ZHj>ajDLxe z21@XkD9LARE)hCHA~c;5N&5Ue;Zwc-v-6^RtyRC6B6nQ~t~meM-`*|w z{|3G7=lHLudBnu;{s~-75tu=o06W~J8@?Pp_NT5D8WsBkxlk1lj|@O1Xxd=4Gp7{6 zg=Z$sVnrSKG4~|-mCmy`c1{x54RGa71S~QR%2=h%qt6A)jix<{#hX-wsNHzkU;rkf>-RmoIhAv;aWK zToU4ocYK57OLdv)-W!|_&5}d*fg$S7V>5!C^AD%T`5_u3SjAf{UZiLLpe$u-0F`d7 zH6TA+o?Ki%Jk*DR_{Be2VBxg+7G#~JNQ(m3mnT;b1o+Xp;fJPFu4r(~WG=X6 z^!VZ8{fG0$ym7}i9tFJ5HC1Yq73q&)^gf9f7liOPI7V#2IGTZ~(eQ@sj3lB;d2lX= z*B2*;$Jg)A-v00P#ryXKrV9E&Eu!+oS>9|2WAwxMhjJ5VA5V`@53fI-UY>sc_T>8b z?zy!yZL zfR(L)Wd5+xqc7+F7ssN&2@m|^OhwNnMZaX2q6h>inPW>EmE4ru$XB1wkZhA2`n7WRwd;2YMfA+Lm2b$wNl!g3Z?ka@ERt-?6<_uVU~thVmu zkC#ia%O_LSj((}aa*I_@Bb3bF3TAZT! zou{vgD$E@ZvZy-V!zrFEIptFso|pqtR~oz{S>nRe^V|JsGX>-g)eYwg)F~OEYTRv> z+3ufO0K7wVf|zv8T+s}j9bSUVqryM0Hh^v^mSo%@#5dP7A1A z2`z#0j|Z>yy%BQrSl%O1vN`;mI_?b;4xraSW#w^Rl~Iuuy*oGTFug34((B14Ss9*P z+smGn{@;{D_YDDB;s5Oo`o;Xed*YvG|L+q#%KzKCnj(;rNV#({$0S+e|LwGzI)GCW z)gA`3{#lhQR!;2VyFCBOGS5*t`*wMMdbtj+Oe$Wp?kKM^Rg0B=wRI7%YL8+fA;*w0 z6SP=*xvrOsg;Nw|F`_n8yZd5YXj8)YnTppJC7hql-Ibz}u?WrI4e)R*vM6D>r_TQH z9RFSs-^QuwivvezUVDQn<3D3Q{ZW-Hm@qXJDsz%JVLwr#kKlDks*co^zer|PN%|_j zG6ZQjRT|R1t@QGj+mh7KKbrAwBX?~z>awi!;!zrOsR4lbb=RhxKUH=V9XRtAC;F6S zZk`uEH}Er0C=Ag#qFBlnl0>qSQ{snGftraWq_^F2Yicc1ltPMvx+@K=gHpN2OuWG< zJ53meaqPLkIAXkm?FaXhew(AG(-3KEvHbbqwQ`x1-8=%x&s*T-4O)m&8#iddmbCLL z$P)Yu_!Tfhxjarukvw&qxVIGj&zVA0N^Qg%K+AM`k~`pY+>0{wROGBY%_u-G@KQ z(0()iD5H||M+KT|^G69rWB$k|lPjKpKmEN=cb@wml>1G557cis>peW&DeohAhxzUT zST&g8nrfvG{ZXS_{P2S)l8X-**Dy(CfqGWasn5JI?mYY;F7?(g!#p3$%FpYMXcd?> z)*OwzVMRxnew%Oe=S?*>{10OcbzV{D=L4>y5)z?HCuyPk`vIGQP99qG_XC3GBqcGK zEG|=uV01(h#wo;!T0GZ&d{6{pMDx@w&d<9x^6Z}bO`it-Kg#cU2yoT;@4ekp{*T>f z|KHO*ax>vvrUJDNKXbgrbNDrL_sMM+=Wv!vGHMibyJkzP>M9OlG@3-D{$Zi&w5B?r z=@PvyOL{81R9L}y4Q3hRhgvhMcdB-K-Az?>Rs?+(wYwB05u%c|CK5max70N$SebRN z>dwkuytFA>iv;omYo)_X@3a*cX>LyFjZ(m5{?XaS@lRL0&!{^1#6U!(>BO>B5=XQc z=^l*ZkRPe2{WP{+zDn@4#7uC{1w8s+K)*G^t+Lnl93^cO#`bzMs9 z+HBS}iL8q$ru}_QFNL)nAq%C>wOLi!0qyC}f+nr|yEOk-%YWq@dc6Ek{oVd>rx^d= z>+L?v|EGAC=6@BE%Fh5R-pojr@N-0GSYC&~z(2`I<$%Qu&@5?<(3ntjJW~6Vl%KPy z9x)C{d&|&7M)5h(C`)4fY$dUhIEQ?ycIfS9c0sgiJtBMMwSXwYjH4t({t-MG@*;~{ z`Ky020o@Jt=2yVUrIfzHP@WZ!AeMAkp-T#?#=ZXVnxh^xX}v=grpL1^=2$FQ zPUZ0kic-QbCseFv4(iKsXfM;K*aNdss|TQ0yS-l%3*anp*Vz>?q1Hv`(+pA!qfs%x zxgpKF!;90yg?h%lB_DNIXnFR?aB4w zhpQh?&aO_64zEt%pEUq^A_;Mr@hM6;4y7)yZsG9w-Rar&hs%?Tv%_~wSjmDGnnAly zYr)-jve!~ud{`n1y%T?J5Oha4>9VQ8GiZnA&tElUSz-j)6#V5c-<`aF^PPT=!YKj4 zVaCY}3IfLQ0)&K86mp^Z)7)t2bUK0WomN|Gj)z>7nx}~ltbBvxd`js%Un&aggZ!Au zg2Bp?9O77p_&N9VtkVx^EzZ+Khlql)Kr`(H?mSJpW)#4$zv_lB5to$67@|HoB>F3$Pnv>P=I~PZ zV)0m{3IUab;dCK@hEsBzbi?V4_;||qpnU-Za=XL*RmhRs1W`7{X;r5scmZtk|85_k zmt(wa)5SPXw!q72I+HGxf&qP3&i?X6g6ycZkUD|*J7@0;!-Jx4iu7NTT1mJIf1MLI^Fa7mk0RHh0(Fx^oS1Y!ox2MwNeO)SS zu+gR8o_;)eJ%%wue|E_Yf|ue;kmGJUMiEO%!qDrN8;)%W0LL>#G7j1dY=ePAUsXx0 zFvA!Z-UBg1432VnQ7(|?J$`>tQNS*5)U#>-#$)g|5WF-92jKN<5S+h1`yl}T5W=ba z@$LJ=%${Axh;ag(OLYHANB@G$cjUD%`Si{fbuc z?*g$hQz`<68I3`^EjPB>ZE33qFTYeQV7~?j{s%|MnGZ@J9_+u`-|h;8yXJ#juzwA@ zQkHfFJ-tCN}SR3x3($4pJReomK$p5HcrX)Ge{Ta zvI8AgT@3cAiZzY#sFQIVn?fB8%HDM2!avuMKY@3DTCsIE7|E%pW4-;tI)0$ z;VTKvwWLC`ltiH)R^nNv)yrp>2VmwSi zMHa{08)-MltB8`+cYXm|L|$8;mkJI)T)huUh237rk$CO3o(K6ME~nd41^VYPeNgY@o_h=`cPKdKX4OHKeRy%4f4T~aaJ-=5sW9L?%NEnQ<&9?TPkI|-3M zJ)<-C$sD}Sc2U{8 zpq0*7A3U$tJUr7`gPYvN^Ri@b_#OC+8OO;)ig{nK$}8A!;evsbqOsiG27YlowkK>D z;wD>T3Deihnp|-QTlY`kJ)a_aix~n64S7`{0_Pu()X}{{v&9}JRkzatKhMI3bT8Fa zk_JrKVdwO3qi}6n!-1)7aoaNU6Fcd7rq8SfA|VN5ieO2~iKglK?PuXe0w6(=^rdMZ<3k&Zz}_3TeZ$7a z0Bw?d_Z+ACc9Xwq7qxWFPX)C>A>LNp$>mk40^ESt9MtI7%@{KLAM_G$uzByd7D-XL z4iCSUB55F|#j;i^u=~D< z-vv~eHnZsH+Lw!3LtX-~Vix(Xm0!L972~b3)5RrW{x@H(%|bb#plL;%392|FKSY9ih;9^-2M*5%S`koUS@LA(_54p9pOJ(x* z!C7d8aVd0ARty)HFv~<3iNL{Ap+$t;Y!fiJbq8R;^HC4#9$Qs#sk!e3U}ic}n{*Vy z9IBKQ7Y_%A;3HT}#~}&|7O6dlP{N{+HSzaF*s_O^?+#uGUtR z|EC7tUv4RhH4CZyXK`~yj=qk)v8{49n$!62a1m7dJfJ_H2J8Ah3mVNn4~N48m|*cX z_$jz`4{mTAo&vr^4>l-=bg5CLhCNNLgvZv!Be5!jx;GR`-C5a9zx{R~q1P;BUR?|r zThu5H^w&O$8_uUdHS)!}ZD>Q+q1uk!C6a5?(hkR~Q(zRG#$Ceu=fs{m1IdCfN~A6ueoNqU5S zm!#+xlPyn`*i!KvsDKLPwN|73A|)i(f95@s{$+)NIu#a(=zy}CP-kUQp+c7hiZZK! zD)6@fre!FqfoLLST1Ph;H8>i+mcS}BcGujiLsMI+wzthXmc3&owz`&@6OAcCY%GeX z+g~D8sTNpHeczcfZPnak;{Po*X`@x4L(BQE)6`;;W!?|lPsL0ChMfQ!bV?J6KD-UP?ja}3K z@6NoZ`=5_eK0W(SB=ot9{l`Jn+ke%3L62_#sVO?|WdA9EelPovlWY#8|pUpeBoLuMz02S{Z>=6R-uL z)DC31iGB}?^C;^+AqnSaUZ zA&kFr6!+SHf`GQr#6O$B)*#?ArKr@kd09!|QZ^N({v)U@Q{_lyt+SgBswTF3F z!dCSU<=4sB_cRTpIc0RS9#Y%3mGw1@N#$5cg7~y4uRHE+JL>j>&)=ahdyTM0hJHVm zVjGAy%hwq6`lWJz1J=U0EP<&#>uF-v0ZUX+1(WCis-ul*PES8fZ7t3F!Dh2J>6&;z zls2RDVbIoFo}V1^@7*sZ9_l;yN9~%$(0))Z_GEMaAxaDTpS@Sm|MYjS{qOtE%sl@c zyWW%i{}|Hn3!Hm|^^4-~iGcd-3 z{a3xQbU)4k{Ttj~eplmXi_t?7(nyM1;AEy3nu4x0xFz?X;iV53m z;m|%*tQ?h$KIr=&nXv~@EgSKEthGj9E$k!KUV!Oo74d=WX2mFEcZT2AcDV}y*(n{6J*krSTw3UV8Hv)nsDFF&zj~8O{#S4Mr2joi`Q-FJ_U2QK`qxhRqpfRo zKl3T6$5#EyH;8$D0urUYbiV>lspZk1nvQogT&1d1G*h%VwW`p(v^SD#)HvwACtdRitH;9-5q)E`Y+~Z(^x>T=mWB5^24g#CVgtzxG05@WIn`7p2d81u~z#Cfp`U}L6NW^p{;mg z)f9!#w<(TSSHT*E+X%<2i&adDpI>}H!ItF>KLB7TvazB#Kr+ML2Ij%~#fKzC{L$vq zBLC(P+#r#}{052K=CY84DpVvr1sCf3sJy4Am6ud_&fF3ItV5!BSe|svl-8Ro2?XCG zyjtg{z||P3F`H|chIgG!3gf|NlOv(6WQx7^lSv_5vG>hLdW}+lxNs2$GC#7 z_6aSKg8c^Vj=&deAG23+D`Rd_^aba7;!z0Ju9int5XaJ7)tD(|a$?kK4BHCioFpV7 ztKB~+57q~SS{D>YM-g|g+foyFzuUGfCF0|4%kHvwSik-5b@QF5YqIsuyZgSY*>yel zT!egYs71V!73sP7%{2XysdR4g@8*@LNc6_bSKjQj|#-2@?+T`hbyBN{Y80| zRn{z@`#5ES!N9}-HQEVu2+Oep+l)e|KW0KiHV>z)HQ?{1?H`)5LD5kSWh| zi`h|57g$>qs?YVXDpH(-GBfiUX8%CD0#wtVYv-uCH{BIJ*g3Pk3)&5765ZPnZl<6%LB};d9W&jeD6c1 zD)g;}sfMKclkm-@LH-NX`@!YEGZ~xy|LNFqpXC2zln(O$ABAZEvK+=CwW;|UXi7e+H}R zDd-3K#TEoiUeG^nTC>Y31?i-rR^gokDCS16&92So+LU=~i0s|8xO^J86M?`M)zZ<3A?uQ~t+CDODSc zvlcq(g5fvnOOoNUMbg0S>G%Ddo?%tkJp0?^@eEa42G8+65ObI0>d2b7I%}b_bamW* zKYq>$f8yo;^GXZ;pP}>?2j~Iyf7Ac(Io`y1;{T6PZ2VtLdKVEO*GYpExZ+jz3j&E= zkp=Q6QyfUNZ6!iM!vhHgh4c!_Cea|7Qh z|9h4Ef9_=V-u(=hDRgbCSZ<9sEAB?BoAq^Zj3UI(44>KaWzn$A7A! zT339Dfb$4uwy-O?i~?GxjI|P}BTyWm`Y=$Xf)Wf0_Jvd#=!R-82nD39$0*kW!JnaD zz+gDAS3lJFRq<4wQsWiN`S9O^|JFFOj0k7!mLj=2KYRIN_|I>y8jyju*#43YfQZi1 zWA#S(!}%Jf`MJ0dU^X==?0~MtfNJ6DVgTBZsepK>J{u86|0AVE1OLyHNGMu&lmL79 zzcY1B{y%dk{uBRyjM9n!$015H0C~(U$k#9j0f}>n<1+eobnqsFD|Bj+2IZpSL9eAi zU_aN30`^mvxY{ZfL*u2LyvQg^NpZXy2$RCRWtAt9{35SYsp@^1v_^08Y$We)<>bHM zCOWKd{YhjvY1seoVH)Fjb@vG1efpm>_Dub6_VoVC4347AJ1ODx_I^NDR^D>4TLD?_fwwz`YTW`o&5IODgA}k`R%vEBapDmmK3*O zkT?f816iJucopqHiYWP%DTN>>0NxTDR>v{}m|d+*Nw^JiOk#lITbz=3gW`O2@V{}q zBw(HANp^aC9Fia#EpQ&g4W@&0EO;_Xv*R^+Kg`MTmT~SJ#^F$48B#1mrKWoA=J#ew zPvy}{E&u1T^Z4fgCUAkHyXJt}!~gy9%r*VL?o~e!);DBFvkImq8$?i=VzBc zzj|@~^Vb)zp8tIH;`Q5$^B4O9zlFx7E*j0(yTl(*cn*`ZkX87 zw|)(Gl=%hL?-KR%lq5~KE#D<_%jXh%eFZfQB?`7F&Uex-)pi&RLragp>H(lg5zvK% zkaob*@s>pBAZ%0=LvHK7wjRD}-L3;Zqp$iRXvA3C#p2nn6yIJ7ulo{ec`Zd6C?lZB z;<*E0i;&hu|5w!Es298yr(xsjiOZ?gAOw+@kcHY!a9v zF!r#b0O?Y=(_lv5`O(Z-Yn zQy7?Bbx;rW_)8Fw&4RL7I#};hoFf3E2&j9FYLM~@HDk^KbIAt-5(hBXd9TJ<3@SAk zlAD=8*zY=TFnORlSzlCstjQnRz)`?}?zce+XK3B+UsSr$5fco?+L=TE2>H|l?i zd-n=&lBnld&_4U$bt~_`xRWRS?@HOzW3giDTScnZMryEEuNuFE0U!xd= zh}tVJsTzwju+31|lHr>=SBc2T!Dds^6v`^LglwZw*IxZ&fldW2%oZ4SX$`65yp$kb zWC4trB&@*tRC#6N{udVNU39ecIgGwd$u{YC3b1GYd!G6JgXj9w z$f4*0BO_;4PSMQns%uCTpt5? zSUXX2mVxU4&jH@}9(zMIIP~r1n^t`(DtGHixvWG_#$(_*vyP77`VCX(4$ihoxr{Yu zuJ~D7Ny7Nwlu8dRz1G*GI|@m40PFR0Nl9ok~# zAD1OI@BbjbtL^_;8~>kY?*G}?d%FMgD5cT`b2Q|3@io z|1-G+tn&=s<9uEJxou2f(RKvO#v{7Gv=G5s9P*U{c1^^>73vY#4g(tSjQCY>TQI{XBCHQ2o}D2gsD=7O}5{J>xh; zACABmI7gehRPVAnOY@$iO_Ae8e)ytFWQCuo_$Z7zWx?Pg7N`|IqOuVNBHtwZu_6Oe zg*%B7WmOFn6o=)It91VHZJ4LhzqIH7J(a&U_TSXZ|Lb|)Yjo;Qs=9Iu*pW-}jP^k}Cnv3LgZ zS&>0qM=Z>O5>zoL zWdA)%QTD%mo;f?H|K8)yPm>FH z4^OaN2eRo0^)&BS6xukE8(?=<8%*=CLVcZ$*g$|?ldu_z2Clp46i?-kQ@Zj0em3BK z|DVbK{ipmNk5uaUzi9(jKK0=Gy==id@cVnR3F{%=-7Zw%*4T#iSUcH=I)W#D{#5Ep zNB-Z-2e6O-SM&e7v)R-6@1qn8|1UWICH;}}-ySUAbOj_R?d1wEN&B?j0kW4(?tpgv zRxV5I=`yeRiFdkO1yvu2D(MSgO@0t9fw(UB9_#S@Pf*(Me-idT`~R#>{7>cl-y2Wd zC;tB!MdkmMc^1mQ_Iq0~K*HuwKOJhDz@HlWY8Cb>;5OQNLc;oJKBN0}@Eh5bR$b>* z9OduIt=jGX{%60RwaWit?tj;xKH2||QuO^_vHRsu9d^AX)UN<_zcGF~*p?f;ZB(BQ zyk(GXohi;xev(>AtNowmcR2lRasE@;|IXBVlK+oVwEZvUS?>L``F@|a@6){VS&sgo z^FGHO#jxLY^aLJ{RujO=epNAfI;!>-rPso`^7ffmUKjhS7y!k>@>=;Gjr6e`RK??1 zz_)uDSsjD3u{ZCUeTz?y#!t7j;QwNuK3M#Z>$qn8pXL&+>@2G97nithgMCog;L|A~43e=>f0|M_tWd)euGh+}}_Jl!P($Nb%ACFMti7b#44 zJoU#2Tu|{4MSwr8#&Qv{_l2Szd%dW*l)r!(3IUPtN|Re0qEKWNX?{PNEx{3tB2|tY ze+j-tF-l>ML=qCna+W2Oj5yfId?jBVtFof{5S4(=(~^vovltaYiZ&3l*RJ?`*R8?A zB#Cws?jL}`+V?;0$o+7DJ^O#`_+vBwkK;VWe?LlL`~M0BBo65oSC|0ZUGmj$z9>w- zz;SWVS)X7GBsQY@0Bbi1kUgFgTCi_=;0^i3d9ThDo4(sYJF=Qx6QQjInuig@NDc$$U zLkXUx(kaDkGbPMefk8mFaRWtK2C>3vUpH$!_fNGh&ju8tBqF;FqPR3$uZBjoZiO!1 zuEi8Is&Wm)wu7_%JaXt|9TpuI@7+Kp&6NK48Po=KDY72SVSAHyLq>3Q~- z>~LVC_RzGcwHwRBHj5}-z`(Y2n%b=s*r!=xV0Uj?T;#C`ExY8Swm*!zH55o=l)oqG zO+q3Z>}sg~1E{P|Oi>H{XAsOueW3Uyo866?Zdr=Ur2UHfs!8 zzEIULw_Drngkpc?=BKCHw{A>W*dC1e215Im`rE10a<AZ=X@ZzpXjU6!e`>(Ohtj@zHORQx z+0YQJ*cN+zY;$|Gl^Zgx5nHZP_Gy2I4(KQS?MJPQ5o?V~Pb$(DRbBd_u5E4O^M^Rq zXT(5CfxOQ3C4>jg8X3H(2EnFV05uHOv7_5eQNQa}*xD$N3t^HD}0;=f1jcbT}Lyzy!agJd4Dq047Ox zeCr z^6?NntK%dh`uhv;5iC=(`7gMM4uxBje>-I;^CV(#)zj}_1P)mP>4~d8Xw;5QHH%0a zVzpc#8pZpnkKU8?hRXi>o+>qabvH{;K<6_>x0ufUcR0&Qx_gN?IA`-))A_o(9B_sr zrpTN!*YXDD!J3ElpEmo#`FxFJ^Os_3RiEjUV~~4CU{F>hE$V1AW2_tD5giO2>xu4s zXUoEJU8$%D_RoU>R*7jV)~*Ju-;kY{G@0bTR8l2$r@TVDTuTj9E2}6WVa*IHAb)R$ zeb2=v|BK_Udr$!O$bWx2o0{@}GI@Ic`CqJ!dshJT1KB+qKvDTg1$a^c_NV|U zN+KM<%-)iJSHrLK6y|8P;}44QaU8rxe1+GZU>7aaAQSdtWQ-JeC6L3)7ZOD{UcE^| z{#iKV&Dr@n-KEM7<;U#>io=>^CBJbYNrA9Y`aF2+Zf(L9Kl6Y1_WpbPHXfBrBR8013$bef9I3mpepDPIW;P*EBZ?dC^a_% z%F%vOMxT_?Pe&QG=zmHW(A^cleeu5&*F689&Yt}Lk5hW+e^+8{Jb(vCi#`*zzPK%3 z=9Jf(4vvD0F08F!&?`F-jA&)xzstW2^Z#AKhvg=cXEns&YDuG%{QU=W}z`<{eI znJS8;07hvWmDLm}F?fw&_+yH5^aD%F$4B^=Em4g^%1bk{O#>Z4ihkLmEZ2Uc#wkhR zO6>~6p5gy!c<1x^x7do$5)#cpkAeuY=M;FlV3Y|==c9!&okqHW{&@K|L;)>)BpKpyiB>D^gT=p-M+X#wb=0*>>6;R8ehG+ zRDX|`a;dOH$&8Nr>so?4(gsKDsZ0)7Ws&8Nx{6WOF75~oH6c}2cw3kn3JP)Ugx5a) zk|kK6;~<$2rRj%Tl%_aDAScEsvZN1etQ7IF1To1gct;wfp&^d+hfOtl2WrECNHn4L zQN2D>0}l*-U~|pE4Zt(b36<$HQ63sYSSJuETUD397qyzypN5nEF^ir5uM_w<_di^B z>{sr8_)qV@KT3H}{?G2z-7n`~Cs5`2Ym(yskT{3YB?-^AIbj#%Qd0uZwQS-2>jWxX zpMvkh?`gXxPG4YY&EreD9*DcM$tlsa=IFfL6EFXB6g&Tyfv^uA|Ka)5O8oy*{Kq2| z#^F@{e<9u?Y~=n;0qr{y#5V#e*PELJfT)C8^MCnNqV2udlIP3yYvKFiv%>o&oI3um zTw<&}+-6K(1F123;h|-myVl{47o%;CqaylTBwiVSFAfizq=ep!y^>LsQJRB8@CGxRVyJ&;IjWGyZcn8$Zea zM=2HiPn-68umO#PBTdSHR<*4{pwp|U1^Nd=InWokMMcmmDT;y)xsSQ1_q54ytf8T` z30X(~0~wPVszEL4*4l!xVxCORhb(sfpWFtIpBng4e(n?3RWM=1|_{=;)IHmUryMq5pv)m1n@``gg#*`l?m z^Yoj-s#)_s$~$Xl(b-F9V2Q1tCy@1|ts7A3+5;*0d@2=0t%ZST`J}~vlEu#dx$Er_ z@_)D!r*i+-pFExaKT4_a|0_1__rUz6>vpK$JSZQsp`TyGx4Ikmi{kf^RdWs$!klI3 z?aaCgAF=_uH3u`C(7#q*@vh1>nS;BfXyeuOr;pe#hIkWu(jwsaS4G4LAbo_KSO!h5 zDHUC7V@9L#fn=32;dh(uKe@ze;{QC$*Mpz`yPo;}r#qcI#s5A|sp0?pfwB7#03tPd zlK~(qb>Nhoyqb4JE4-4gUn{d@pEYh-zDL@XUCOq5%>oT=Kg&RNtgUgN_w>Pdu9$2c zT?ei!+y9SXyPr(i%m2k|9Cr}|d(VF-Q}g|2*L^zweUwt+|6sGs>U%3IOldCBxCJdRgKAVm?(@ht)g%-72AFb)qs2QgZ) zJLTY6lAf363_w$H`@d(afGsiFGtz?TpETL19yz&2pMZNU8A1Lhe6=BooX?ml1^$~_z9UT?}>gL1Eyaxr&j zVJKhHx!AxJ)0;(Z{vF&zVy@Z|Q_hvwFjuav$8PT)J4TP)rXJ_Jga8~D?+2wQA)=e@ zC@8z>Hgwamb<^qF&AHJ_=T0k3|71Os2Qw@K3G#_u-sW?u$CkZjCb==B+}d2NS;_o zZYRcSNFM7XPnts7}|}h+_;l|W7$zZ zahvoLn|jhqJIPU&5B-sEGC%(wI_-2^Kn`6%9MN+UWRkahjnnXJm?FwmAb*n>FSb~?$yd&v5ZblPn)WUSNug!JI9pC?fB{hNK8wzPWgQ{O000 zOLNE^DA_I!xI^Px`t93`=e+xVH?79;=l1T~^thgCoMTS6)7bsRc9SsgbOQ5WEoOa4 zp^^-N5NB`^p<AV;Kgg-!Pnv+?md^9eo^pW1oNh`o-Bl zE?#{LxaS0XPj@}jS5SOAyoG57$TrV#hyYpA-#~@}?)ahu(NgCw2Eujf2ZGaGGZOqm z@1am^O%ADPEU1}%{ZFt!I9`GGDT!CnP8<74G?lY5S1k$b#jwz2BPELls}7^{+9dPDD|54&{d-2@S>-_Ykee#t-d z?z3a`*;V^IG1f;w(i8fHlc-lXb9uPunS6MZc%xhJM#^2>zjGzo(VCcGP~4 zE4(ry!A)&v>0aQeve{?OOQ{)1RTGF~B-X*SlZiv?TgPK+TL;tL>tJfEgQ>m_JaatG zvW#x+>wf}R9Fa2D4)3hraq@lp*!!to95HAyJ< z&xy==!u#xXa%9o^);>>atr-5Hcb|Q&&lAOv@rG_M7ms@~@5In){f0hUgx{pM@S7OI zZ=wi4Z|HV*bnrgUI_bZ(enX!vLTu7oh)oQ}HqnHb(@%(55?la7=Q%+zI=I4{SHVb270Do^h>Pj(_Mqu)5$GE1o$|(Z;(CtlyC#`F4gh zwh5kbZ^1J*1kYFzJnqnUJNH?9$l;0$-V?9mM)fSFC@0p||Gq+KYzU#TB81fb%QepZ z$M0Ufy?B0c_Ve3|tBbE+zWDk1i?3H? zj$6&Ov+J=+9NwUe+TJ+Mau`L-;MgXs6o!Z&Hx-6PX6=tfM2vfj2;UG9V?{)0{ZTl#B${?W zb|yhk-!T9xUEZOhPl6`|E`x;C3 zy0c`~=SepMcQ&ybxW0`I`@Pw)Z?IusW5e#eU!TVv`#f&yvxU+6y&0`@cQX<5cB$dB{Z35n0eGNjyE*Dt`&%&|&-W=OEIJU2G z?0%=H?#%0S2uABSEEo${_j_}7ud+#0uI|=y^>5!?u=&zcsj<#>bB)vb%z{E6m}4z~ z30&X^=a|bsiim-AIxaxRuHAUHP3QIAbe^&4Jblwu#xO}qg3@S57yLE>=tG{uAxu|A zaIWZd$A#nA7mjD!EMD);;u)L8(>IG}Fo2K*`~WpyBS8BIBT&B5LG^<*WM>N?foX== zb3t^C@j7fkrY(cmv)W!5p2Sw~Z5Tlcxfx4?cn6l2hh z{Z40g_UqV`Tc@{j>lkv|(UeoHljQB37N=V%0Iks-uZj zr=QbcI_}u#aZ{fyQq}1#RUJc!IGR-L=`Nghi{GL38~SXKAiZNZ<|A)r^jSy{Dn5qZ zyiRaR0ZCN^cmz@ulUq6t40?_i5jp~x1)$59DEUZu9T}TvWo(q}+L53idXI!AODQCE zB>EX3Q@5i4bFBi55@_plPoX^@c@v}0Q?<`Mce&GXo}F3ilblJ%6VQqM1eA8(Hl95d zg89fB8{;`q$FrY8FzKiSP3%e#CD7LAo(jQyR63IP4k zyU(7{XJ75}NsR-hcn*BQbIwxcnW7M9qQBh^RVGvGp$a9=*597mzptqfYfq0jZ20{zgp&+gpl zv#Ke${XF**x0^;dajhC5CD796mgjSIeLm6q?9OZZEEcj*ZxN9RHgsN7nAtT|?p@?sV5+W_0O9?UMB{qH-Y2rmv%@pEwO{+O?^4Zf}*& zHB>rRRp}g)P3P$jY+0Ng1Q|+rdX+-EU8Q83un7!Ng5nUx!4Bjp#IdzQHhsoeDx2}_h66LB&ls&x2=;W-M+j=~+x~=E+x48L- zJ8eaCd5(K^w3~W3w%u-G6sW3__Pat@^+FO0O@~obo{g(P>Nx?|=jX3EwH;jm<1xS2 zhT?3SqI&o+ML^GqaeMG32qFaIZNhUdVYYF35}{z5;(P}ZYM?@}z`4Ae!TZauBIPMw ztxzfh@a26%+Z1%WlSJ#Q7LNg}W8l_!JZ}QlO|Kk}{RUti4fwG)YXa7hGEbvS%$3H! z*(wZClCi`jblI)e0l%jfllLR*nzyNk{cf=ro7*rETvbJ^*+ciZvhHP6Yzkz*OYg;~ z7>0zaDv`{^R!@#iwd<|f8H(N9BtxH^?(FB`S>io%56ht26wqG!Cv9k`o~q{Qw9q{J zb2Li_Z5n59h0_q|rMl@3eXIB9KDexrfBhMJ18bZF!U@Z zDO{oR2xi$Ux;j^gU9gNpl(JX$<^4O}`)-=H-{gq3Djj`$Z+N6!wf9!%j5)pCq8)tu z<;l6_sA}H#r0T?+UZ=K$@|@~olSGKcyf9}>hBrxsmpEW4^u)c{uW=s34dz|%c;f8a zPn=IIb9>TvZcp^NJ<;dZt#I9ph&$xW=HdB?al8UJF0yUQgE?Cd>L>4{@8lU*eNXhs zt6l&ss1LSTPB!H^Vgwf`Vq!w3KOc$d>&Td9R>owz_1pW>uW{#h);xVO6rC+wH6Fcu zUTO{FFcK3gL<$>&jiqC4dC7vfTwzN(9E&`3ihPh<9@1fVb`8`Aw#)5 zyXD6>x9n}#AcA;PJ(M;-^YxKI!7(NrDF+8AkmEPs|Hyx$$K0{Hf;027NSo%9u@Mv{q%CQ9vL zsm8=Q9ao9duu8mcY4&J+(|5}wBiPvkd&B_ny8Je(xYLK@m2HUYrF`$C7Di5si6-Th z)6_zX&j@3mB7G6sEKmv(lI5!uWxqrqB_sz4%(C|+4Q+j>7v#N@R2VrbCYm5`d*tTL zx@juj%&Mu_Qd0EJNMR(Tm}r8$CYQh!w~Tki#i9@;5!q4G`AE~Lg{sXC&(2AlqYpe( z$2;l96ugrLrcf{Rd#9=}GF418p(ssx%QW6I9%o@Fr(d`oXg_&I%$Ed)U&9E-0ZPFc9T(C4ZYrQ>_muj! zz$U+UV3ThIHu-8`lRI=;`U|~jH;1SsOXEyOF7<#dFmGk>-mPx)wcJc0D| zn2P3`PoCd#OZiP(s$R$Td&g$^Mr@X^#%47QwXvoAj_b*9T2J*_u7B6qEXU~RSna5p zkbaw?!gEWdrFyQ!wRIj?sA#`TdMKfUBnDUKXD?sy5$br|*0W!?_3NM1;2(M~1J4*8 zUm2a6nEy-u;Lq?y5aA?4Ac1KPydwZZn6R@6me!Hl?(~m9KCHsV!ku;7Z|W zK_V3SQRN&oCm>kkDC8;iEq-L*7CYtljGbaF&5h^QcSh)DRG_h$82e2ry1`k-q(2*pNjHneomedz-x9#(_YL6kM}`7B zSBIhMucnsWElep-5zB&GG3aZQa?RT zZFl2Na? zI(-#aBmb3CDz43B)T@)dlV3UJq)gk9QLhK}&dp?`W^zhBh>~HmCT#hUdZtGz*6CQM z#cxN8jgRzaBRUygJ2L7eP4Cn~MrI+Wlr+s`*jU+Ju3)+5DslGHGNUBdtycb_4>dDG z?r}&8DX#h0>jvH+z@qj|XGMncj9u>JceKg-m|fjeV)y6sPWIV+ZZXehHnBVFEp}&y z*qxbT*Zx?DW}?lzoj=cQ$ImmHIG^Hp2 z(($nMuufT;^;MQ;x`Hw@^rTAnM4w1xi7i)OT;tsk^^UV3#Yw$?d}h&iW_|UYnXd25 z41K3&()dBeZ4#T2J2raj6r)*R#b~B0Ml(Y(vZN!FjjvfH{v2(6ch*xbd- zKikDQ{D8&mb&B?z+k*XO7FB!JSJkEs4aGsz8>#^=jLWek@Z5pD-Y%5qEa*Ug``!6# zu)%36rgqZl^2~g4VtLj#+$IqY=+cp#C=fA(>?)q2(bAO7!8=bP~s0q~%Mc zyooV%WSdgeQ+pqTwSSG4kYBd@QXFlI^q3LcQR$x(DKLv8)gUK?EQ$b2KA;`iiFJZne^0aXIy2KG;fzAkq?6P)k-07Lh#=6~>;4lyH#=>aa6Lo7HW4?;VZ_`E zT0EC{CWYmIfkD27QM99rgue_n?{?vD&hGnt_Ei25g|DRJ*DubVfB#~%2_FK7<2cTA zJZArQ9LM~>JMq2G+_CTalZoeg?q`ncIj;K|a2|pfvuv{*rk^=?#$|Ty4^ln{7vh=( z6@~`~-)v(Z2N>Z+3ez3aWUkXKIu{Xi`zl;vcFhJvggJz$5>$TWueww5EB;;*rinn1 z;SG*p3KE#-D2OH+9US~)yFh7-a+IBdcYpuN zWe-0Oop-G2b47X_9DD??Q9?4DlXM3@0v4?I5xhkywFbb)gO5X{eANC&|HU9)6xZQc zKiDuG99+}Ez!`wxI}~leOEE0`cId&6XRlvfy!!SOTz_|Q1mR_^FTlmCtLw9uFJC+d&o5rTIKO`RUku|FzYlwGFa($EjvffsD7ayUz)!zy zad0!FTOltStN%01zINC8L z98xCC6v`c2_pi>bL_9L(?xTb6$a{2)(j)L5iQBWhE{r0<|1*%~Fb-iFa;zNF2wcRR z?H4b7Q3!a$>@oH6FBuxm7c9Ur;|TohK{7?gGTEM{Jzzfk#jcb~v;iX~Cq-m&24hra zNnoB*vcdtE3UXvVf`1^&-LH2EXL1s{d0mIC?pHwJ;dlDY#h-ql*W8Cau~ z-T$M;F8!G90M5}S8-W)vSl64#*_v#l;;FTa`HF7PZp0;1nM)#oF<9`!laZvF8l4KA zlk=h1d=L*4x^`kOkPX~Sk5zg2G z`e`s6!fn1D91UU;qrt!Aic|)YVq<#*#|Xf5#kOZQqKh`eAu8YE91gb`N{1oL;V{H0 z8?5rWZ4M&B^O^Cj$iZuaECF$^V`k|BcRq&TBUlhZC-dDBMj4`%zYu=OZ5&spuw2?W z7EcR?Rus2&`-~+A*Z~yZ;*`XUOWnd0Q=FN2fv`l!_M8>`OFjX`Jg|YMYDWoBJbsKq z4(dIQBD&7FxtE4 za}q8GsLIdx3k2Wd9Hgb*yx6g13L-HWq_T(klCQ45qr1kAdBm^$bMCA#RK`tT!}kn= zgw_($*DyoVaSc5FVTfYdGBiPtz>jMbg9XXg%EUqbYV8pl=Ts0x3E|1nk`x7q+7igZ zx^&X6_?d2%v=<+6#4)wb+X=2BNa!D>wP74UM?IUW0}z@+y`hRbY1{?@4-tVtedP=zan zDQW`7+*o{s*pnndF$%>^C6%G&OtZRJf|%s|))rqCFiCi0so{wIydm2-PvBbaQf4?Q zoPb9sd{1ksy@^qttqG}Y${s?m098u7JSAJYu-VVzA>Sgk3(nVU`(Bc;r8KOeyAw|@ zDBQ=;73lrgd4b8~YDfFX=thj2OtucGm zfNA#;xxw9+i9}S@_}UybbD85PIy zy5QD`r$qd?#=)8`GP$;BOKIXRgxu8)SQ{?k4^Z&2(NJ^+zF4&SFbt^*%oo4{E$N!b zQ&ux496R4xFkg?@;w;_K#vY`*O(Z?3kXz4mx-$kAg4c~F(7n-;9SBPAiHSWttyH_K zVIQT%gJKF%5E~dPyB^qxn#wUhI54@`c}mTL9K$FR0Uj~MD*8)NT?u9P8QUxD5sx7} z1V6-)d=gCNsRK9zC??z0+9bq`7HMRTRBlP+ii=40xB^Q@l~=Zm3_Gl-*c1V+J_2uH zghRQ~nN1}d9RWEbBvoRr8Peqv$2i~B?1JZLiDPP=$tnSfGxi`_4$>`i=KS z4-RgMJvhRIap>cK!~sh3>^KY7DBMOkUJcPLcdH#!b9NOE6A}(%5~AbJC9WZi!y$}w zJe0o(CLJX>Mi*=;T2>dY(zv)vAfsd(MVBPPfngh8EMJlQlAC&!F+bxd_>Q0uKq5dG z&{Or)OM$*x2PqvP^>l?bYer>)&*4gkd&_bqdH*L{LvJ!Y_2ww_$0rVS5E}c-8C*_J z+$9Pp;dmK%?quRl;bQ3qV;8{?P3Qi}!kdOC!94JS+2q7;riNjs6xHdNKir};rDBX3 zZ?uNAGo=An?g|EEo0BYn5${Pcv44|G`0td}g&~08JCfr6(6$jZp}?7FDBzT4YU3hN z-9Yw*VgT#6SXA@2e#Mw*I;6xLzDT!o6aX=XFi>H za|oRibmA}2BJ><*9Kz{zyhLaY7t>(wx@f$d(0`6kT2Lj|k+eh_my)RTEIZt@pvp)> z%Mv)3T47JpaVj8Gbgtl8INj;W1pE8smhY)Q@oT0n{ORbj1%vdGy z=-n~eJ$xe8Sd5CSZ??A%FD12nhNBN@ymgy#xEr1nv6yq(396HP1n*pmh?Y&jw=ukhIAUw54+^cl zj)-cJIa=*(aP_4Nw#h1mAp%9SZ%7KB7r3({s(a&58Y5KmeJvj#dnTmAA#<&1RB~^_ zm6(JpR14^b_&JJDj;hT|&?E4iEl~;r;8o0Q)ius4d#*;UFM2Vsbl$4lD`}j|9YRuV zRWba`i*ODTxWEz4F)}v&0EXe<^rwFv4Z@Tp^k0k(oR_E6EUJO7SKVkC1u9Ik&8bl- zEyi!(T+nT;M?p|>ctowv9De$jCXbbb!>nGNP<|um64MN0m90?ZNIVaPW!gpdG&kAC z>;&k|)z?LAuOi>s8NXe$^UsPzS5qUi&czw;hB3s{Zsj^p#)n$Wq$Jb!g1&wsO{LV1dCh|Oj#Qe&O;y%exzD>mH4dbjv;}v`Lxr_+O2^gG5+bl=vH#p7m0l-V<&v{iG zegLKqux+GO{SoKu?|99+R#d2QO1M}PhWtw$-(+@W<5(yf{L(m2TPEBYc1Lpg;#4QI zRS8j)ena2oruOica-VR6PEi`}?UKoUf7m`B3z+&K>nV#Bn{{BXC_&&#u_j zHpwea!Pz0W{^u!pbA1lJJ_MI%S64qiKLvmN^;a-@EuJ1=@tD8;_E&ITR$v9ix8I~> zBmM$lG?H_{ey@mk`SCi5YWg9+vVbAczP`?f9HlXgF5(=eOBkT4efcIsA|eWlJIOH5 zS!fPBU|^9HeBWaUWF(_F>E3=1Q*;VgDAZz?@MPyVCt0xwBpoR{t21wzDM~-!lJQ7Y zv^+$iOmnf52FeIr7SUporEwA|zoPh75m~@!wA@A!WeSDi(;y~MoZ}R+8x|A~j!U&c zK*O0}zSYg5R%?S0#(>BwvIqQS+~W9Ekj@~}t;{l}Tjo#wF0^^^9vq7E6!Tw?Q63!A zni&{^4NMYB*2N{QouW)MrQaEkz5CvUVK@}%hdE)cDU=68M#1ns&e!apL&)hqJ}i1F znO4m>|5#oqQEQe7FLq?hGj|uc z4pCUR$-5z7*1Ilnlfy!5sn#hPn$8EUh4c%szpms9ftvcnJ~7RSdwYsnkdFXeqzGm^ zkl^4(n&(S)@mQY!Qgi(X;7vl(9LBk2XUd3-y}kt6R8&TL-3evIzTSil#PMGxoRLcE zh<@5*{T4?}^_J;-b_hh3hXtKK7W*I8A=&1H3go(_f40p@M87Em!@0AJKVeU6ku*Qz zQ9;Z%&mQuptCYVeoT;sA2;j2s8~g!<-{UZh5asS!jcHt{1w`uUFfRBr*wD73X+4Tg z{*7YIn6Q>rLd)>NU=49RT)+$mJh+glz+}m(6Ai>sdY(eG#5d{}D#I8jOkjW{SEUoQ zfjJIXl-W5`nKPy{7qeZCy9$k62Tc+bha57$DZ-GJSh6A(r)bGPD)MeC(Ad_$U69lzJGQ(R@YUnhOD2*zTV$&|q>6P+azKTl zymj;UuYfyp$3v$LA{kd^lQ>dy;45ElZC1NT^dPt)&iJ`<2dwOBZfmTpc5AHSk1~mP zgR-U8q3x3DuzO~-f{0)K*wx6H@2O_TT5}bd*OLN)A421pzw??M(XC1Uhw@-F8Xb?`@!KiADE?-Ge}`e2mnhY0J;b!z$HtTTyAWP3znc zf$rI4dkMzePT;;7rX$i#DcJ0r*DtSV)oq59fKA$g=U}ExXQWHuB}+^3vIGChp9s^<2RBa)t zOkpJ|u{ps)u`s}NHv)~$RX~=Gg}af)S5nm$7*v5t57RC|*+`rxWT&NafyDpC4?|Q+ z&X|O%C&uKguSiJM@JKwEq{NHed!Sg%!dN&Z+y^H@+!{A|i^xM2Og|PZW9@~_&^$bq-RUBS0!<1YdqPNoYlaOV>^UW@}Y38u5(A8v~hN7mY9uRf;_PnT8 z53&a%S7(#y>o(BhlHqv-@utrFyjU`K|9cpVoGmOtUJPVI5YU!KrFANfR*LVmdz!0A z5qmWRElC=nif4lh2KG(H)v*M?3_3&mBQ*|Uey@#LLh__1mG-g)q1Br~rz$FfxAxBx zJFTzWRuIGZBeTS`y8z<)i|||Mw#7(0tbTX=H`>Ra$@1rXjeh10|Nic%I2FkW`0Mbm zBDx?`p)a<%zA%&~`4M2Ldt|6cO%LqDzg^fikZl)3=9tASHv+!_E`7IQxuuH?p*YWYdQJ<4)flVf zHju$pRaVZbSE8#<%ZJgA#6Q2gJOasWa0JjM$#>6jdL$fSM`i5kQJLnH%6op6T~Fr* zCi3vXrboOGpUINtWsu>_o8m5WBh)_+_f$K@2dXN~HalK-xPeL4?o^~`IgVn?`4u|J z_V!co(9D%BnxUBFHVcEVGRvw^p#3Qpgxa4+oQV+!K%rVMO7Z2zXXCBFN9(hJ?V~VD zExD=~vj~(0wqCINj$}DwsysUa!LgFtxQKzI^d3_vOA@hLxTH8A=h?%DR4F7`L46 zsb#r5_A064it<#_V2X@{PAsuNlA-)kd7sG=_rp$unP#d!=EURRf;D*`^H*iqL)EpY zxaQS*@n5m(kGKa)`ig}rXn2qfQG@Q&-WLkNpThP~$a(NxqTtduOR+#6X3K1|^qw?> zZI=EawF5B%HsK_?bszgtVrtYBbbJrK(78?8$+Q&N(CRG+9o|Uz3WQ@?T$Y>7W-Pd} zRD+9%N(OVII;RD;J$ShDUO5!|b#Q}rgVTY`0x>umBs}xVW;bMc`;RxfVe$31e;JCo zK+EAa+k6Hoe*&|~=#kxs<`o+aXfcqjtY-u70~>7F8m7#rUw?*FTojWI9El_+fHf`B zq-zgVWq0Cl3|ENLssh2O9c@sEx3%X4GU!m$$O#yHk2WOT4a)TfLB2_r8F=>k?EB#Y zG9JkemUdZ=HixR;jLn^Jj!KYgm;>5M995IB#_uZV%tMuh)W543xd(IiR zLYsu}Om1S_>TuW1pq!{rXc`%*pX?;w!c=5B`$OzqLGGu&c_pEr^2DcGtG435e$AW@EQ70L zB4Y5ee3hc?mr6oe$@MPF8jVrTC8S3TbS{xL2HGjTY>2fpfb|QvQ&821+L>57MB9~3 z_oJ;tRTBWMW!G}YQ#bVCVmfn{K`?gbo*&G;rSChz-1nRlZ#kV#eB}5pLd(z%0@rgr zABGFpbCym}P0&`Ms)({nF=0Eq>7LU$KfRK5K~Mxyl(%McDwA0j0+Df4glmfMeSW3I zwk%p4gXJ*0VbYoJd=~Oq2zKT72;ZU@W!aEggqZz{B@f>wLr#M{H)DT{WOW;5FXeYu zzizGSa7OZUzs8hh>;-cZpL-Rti21_VnyD^g#&+^aSqb%$A+JNXH=#SfV4-!Q4vu*t zad14~dH@99U0+{{mNMctvfcteJ6eYQAs6zArK2@3Ygn z&PtD0HFcmiTq7A#$HN*?2;T9zIc3R1-iZg(IP^7%!c4-F$r1#+HlWt^!wfDNT%TXk z@ym+P5;lCS8p~}TlU#UjihQCoAu8kQGbK>sRHV$d+K@pE1IW-7`ov!aOR8Uaz361{wzS_<#;xkF6Ib1uJ0{R!jtjTcjqV5C4`>m zPo^HMx!Pe6B-PDy0j=v+dUb%vZ}XZ&{3fyT_t!WMWp)}0YZR2<_M7UueXF9WgC}s^ z0c;bs;#;Fhe^&Jdw1j>KuqC`6w;{Sr9m^GNA@Mc))I~2;ew~ zwlYfuT##ENj?_ZQj$sfKr=KYbag!>Bvu3lLwSPp5JVhDVra>jGBg;^l4NiX@1j%-A zIv6{Svl$!>xO;AJIym_j4}Louh-iGJrmNSRIN#&JZ<^;s;*_EM893${Q8UZcZcb`p zD%uRtYT~Lw0F-8CkzY(6C0B;INDh}1kdR~>aegD}7fC3DkYqBDV;q66MQ%9mW6jx( zc_kevl}soO(p@4hND0Y$#N#s9X(dbDzyfP-afU^@AsFu#B;0Z2au$_ieerO>5=TOY z%4D0ytX{skcrF}gZ@xdf`p4kZ(`M#Unnc`a$C25JIOx_qjcM2`lEY#$cQzbLh^44r?-3*h4}|x z5#~qazjg5i)?^frd0|@R?ke*C?QuC5_3oCrOJ=xH34PeiT^f>onsJr!7lUbn!pS#q zgCks%XND@OH~~xfoo%i1XrEtiDefU(T;7h4=zphHB)d9A?TRI;xXNL0Q_)gzBGfVk zk5c~#T(UbS&$loVKZx`_#V=J_?l)4uBE%Ff_G z`)-SMo+nM)f+z5*$tzwG7=8^S7zZe20^yacC#OJM zy1#3Z$|9F6g~x8h(@q>V_RW?=>sk&>%=4xOeGDMDKEKqm90VY)*3zLi_%TvX~C&K2(H z*H}FpfMrTHTz@We8nZ9Vjqt7n_>NsNl+REJCxW`ZBzqD8a;2+1#oV=fHas?g6%>lvWJ$@lQVDvpjjCet3O>X9RC&#sa1TW*}p zp6sI#LWOgwsB1#0-pLeZ+Qp?7F`;rvRZwq|2tA|Bbs?DR;gQB`k3a$MsN}f{8E4YI zYxGFe7=wEI-tV#$yWS33B(k@LMpDJ;{Tk6ZSCgj-fTcDiE!!Ftme&F@ zsRRx2SG7q9(rwIBjtWTH(>ELfo959fg#o%mDQ2M)Bo5WLNSt@YiD#3bFK#<4ABQl( z$5hxy1ct-H!aq((IJ|X_KQA(=9sa9A(*|W3Tp?S;@&gkzbQ?&rCYOFRqDUmfY0ay+ zQon=zQbbwvuE~oSME0Ux300g<=OiH!S?#V8Y80Or36rYi$=CR7E&4pkC&!Kr86P(Z zewZ=%!!n1HJW$W`+5qm(TkHDzzx0hIo_Trj6ov=}Yk)$`UQ5~Xw_N1yaLPzHH9T&O zr7XBE(k|9yvA5(rFkXE*Ri9;fr#xJO;}GBCa0?@9s@%wwQ6ol93756ik5qE*5Ij$w;4Gj&+%Mm?v9K6Rx^mk%M-^v z@lPfvD4hDU`C_^}S1Y$)KMu!noauPX z{_i-B`G03Toqgtxeb=8%JlAtSb6jucyPpB){z<8pZI;9IGw05@%+CEm%5XS5SmO|# z9sn=|ISCHvF9)BOzGrFy-D33q;NWlUiGy{DmR}8|;4OLDh@`9IpQ!-A!Ev7A+ubP0 zvH>%5z8d7{Lw?NuPEqvLAj@|V%GLDc zVQyr3R8em|NM&qo0PMYcd)qd$IJ|%BQ(&3w+qgfIx>~-R&A!L6-PTWY@v)usx7)Li z1Cfw~HAS!lBuAU({p|09D*;|4%D1Ln^XzFX5*Q2ygTY`hGe`+#lMK;c;`Y%LW-M63 zS^TH_eL9^^XE+#$e>^(C>D-gWX|o_fMT}f6y8H33TomkIH9G8O;9F zxpP~^&izgvm?VTjhDkyXS^%(YjzZ1{G$7feeQ|X7`oyR6G$k2303QGBm5YUt!3oJQ zq6gsD761VFAc72zAVuZUlMF`a0K9L(6n{V&#UwcZi(U(+srlI*1Uo^e6`>R*5lTW1 zy5)le&d>n}$!tcF762Ja3B`UcJ3PYH{0a_y6A3CQO) zs0AWOlS%6uEpJE`iSFx9)}Op3A4H1QKH$Hv=Obh&`OV*6c7yIP==hy)S~G|f262Ki z0T0a}jt>A%#^k?Cgp#zr%;rc42HFB(p2c-NYRTeO|0$Vgp&T|{WrEpsJ_^8}4+U=Ko_n zcm^lvpfJ-}7-j(`_9AVqzW}83I6fmW4wnbubo`dEvkXy`Fs|#tiPql!Tg`Vgj{19p zunTwg_6Pka8uxZayL+ASusejiySv@pQGd5L9PE#x;RvD#?RQ4|Xt&!BM^QK!M59(K zBnit%9HWe5`V9C!xIhfBDFXQ?z*qi2eE$Gr904M9ItpNhK!nnmEN3WT+aQ8yMiPn` zAQ_+xGBlpY6bbBw^5DJ`&Apw^MkoVh3?f8vh9Z!Xh)S|?MS~uI?h4fAsZe?WWn6Ae zmZIo)Bm>6=FS-pD0&O`B1=i;%%n)PTAlh%PBZvjZ@O zF-5#aw!oo4pKI%~8+`jk<)8Lz{pkSg4EjCuiotAx*jfIe_3RnAe0Tir0DOl(3EmvR z@Oqy5B=HSv3N%_M;go+bU%nEh3~DKfE-LynPY&t#8Q}#xt=59X^BFpdA)Z~LSsFuz z1m@95;w&484#cidyqS@C!p05kMRN}h*F;q5*B~)<$=vp zKjqES_Ezf|_-{2`ByS-wLNU2%$pVILUMo-_t-za?sfGf8#=&CX6G1aEaIpinhN6}j z!W1w9KJrf=0Um=TnS&clr~EBVQHaM&{w@RLCNaRz4D4`D8JQJ9Urv#z48|D65m1z* z0zoBl#v~IzbtfIrfdX|Z@u4V2Awv=PXgBw9TcR)9n36c68X``_6y@UBrilZ)j=Vr% zuICT>l>ZHc+6$8?e*u6G=+yb?ht5xLo-iDPbaI6$XPPDO--G9$&)!{Jet&*)arOS< z0oW*ce)tznuc8SzLmB3~2FAf-1X;~QXxC`%!wp7r@XMVZ{l zi_i9_V`Y{teM()B86nJTp--4HoJ=mbBFYYc=LwaD|J?#0%us|9hG9(W*7gW8s7aM0 z;pdHg^Z7G)0fG;5?^*64_|>q7hh`~TdSDBD`SMK#O!enl;ORQhEtD)c(q@3p4lgc# zdUt*-dm;(&BU+xLvF@9sHg8Y2=9128>jg+NoUk$Q{z83=gdTVSa1zGz2mz0UfwaK{ z95M~Y^El>zc_08=4h62!@&I@hwDqhW{LkyF-)U!xgKGCmOq>JYS%{YB0QmC7sdN0Q zu7;i(qQTJz=xv?5aEorf(d4A@n4C4D;WJdYm5Kt7t=|b z|409%i=>?clD04~#xbI;Zv%Rhw!RHU@VfPFz-DRd+yAfi419nYCUXi-k56bTNHg*; z6tY%;BLv&BTt@!Y3KldZ5#q4l{q*+a{6YW~`}>g9E-mwXegFYn9Y}K#wa}-^b?ENi5#3=0y1O>Iy&}4Yb4GlHvqbm& zU@VVY7v65(w5_V5A-x7(oA654i# zU^GJjQ}C}jWdJ4s&Kcpjg)oknz<5I$*)f^p2yu7{39iJGdFC_>lSnihw7w%5m~pM& z>hm^8V+1JzVT{9TFhv^wa?-6 zR_l^zPL-!QqGV}4fN+Y!Yr)7r|IZwU*Su|nrTOj_@ z>j)sUoull-#6L{atw3VTr%nM;&3T3qGbHDXusVOt2lHdA_3`7!kR+7Es3nxz45b9X zD6-tE4YjM?D)VYmUyv^}HhE(fMB8WU<44IN?-Ny}av;9_Ryux&{krm!0k2?qEhe9- z>x?L$DVIchIBg3@AiksKqAijRN7kT@GctSpVO8!dzQ)a$h}DhpJh4aF9!bjssXVB8 zwF<%?Ip?ufd(ZfvhuY-{Tp-49GNG;3If4;j(~Qg~Q|r`JSmlLXApoZgOd$mnEri_X z^AII`B_MMK=zKCkl>br{TkqHuW%}@S2A5n~&bh1~y7qmU=kRGLJIe zA$68uJC|-*?J3crU{yAGy+?h>{3)5C&DvDsn$w>5R`aep#uetJR_j7JG$0sGK?*ZC zLkwkB@sGYw5d+s~`BL=c=WX-nKR*JPP3FQYjS=wCo|qqlGMiM)+5hEx9nko8_0ON4PQUTy;j{(ku8wKP$&DP+p6 z1Eb1AdN?A&rl)9Q6rD693ml;c+)O#3f`|~~(u@d|T?78u=6koN2@08LhyWs3TXI3G zrF;ewgd+YiltpbhWU6RAtgzS^1t>#fl!@Y8K)uGvHE&VXI!y#Y<9K;bf-08qxx!1g zz%QbRaKVr|T_BYbX@2E<$1|m+5gTP+_P<(MC18j>u^OGolWFqyR32YPn-!%vqi}Udt)@b3~HD-lu9H;E2pwn@aSy_3YA<(UV-*xXoQ#|W|zo8O=z)@@B^2+(-&cPUcd~?5QMUSkWj=X z(&61ZOjB34_r&KIj!=96JmXWux8L#;4X0>koZ@uENrsb&dZm1;4uCgX>L_YYeaoaZ zAa}8=MpZjM-3nD+`3|VgP4&j;YG=P&p?hX|hHZrMMo6Z&K=GUqcJJs}Geky;@K(OG za&OZdcfK>S98on|Zy-*o7lH5px;T^SAvp8zT8M9Vp!qd$>vyT`uRY zZ>u#zUgGpv2UT%ZpF>Twxz{?VZzhb2>p?E}hkNyX5YfhU zoe&>a_d@9Jr^nJD%$4|u?@y<)H{;r_j2rhu+3w}}H@Qi`;p^9c%Jrn-lCW|VR`FUD zM`lQ6e)>|OIl1p5k~pOz5{h#aLGY)TgU5I*`(N(YHY3S>W&>R7|KBhAe+|1kPyYXp z@~p_gCmhn5n;-AHc@hexQ=P<`!zFcc;^xd-aUxUUB%_i}xq0*80y3D1s-k`U?-|LQs z;|?0b4%+MOj0c0=@lLqY?Tm&yqj0}79u7Ob-tKU3uQ3McTzE9ZI9#quk|nd&{Dd>~ z{Tyb|rc}Sd8Jh5l^>oi+Hzc`%*#MeN=tVc^1ienL+u839G`;u7J43WH9CpxNG~SB_ zQGaiz*G1889}dE>w?Brx!Dzg*yVvRLj>aQ2?DtWp)7=}O9vY2DVG|rSBK0N2G2dOH zO-apk#d=cbuq#QezqZX^4S*CV-0udvnznnxad))08;yp$JG~vaHyG~i4tLRD42OgL zLAN*DLHpgkXw)C}hrKA=9fyOxy>7SH?e`-z9Pcz~eIweY8JY3EZAw~Qub#37azh^0 z<=4Y<=-Ug1LD!_J8+3-d-TmEO*hiyiyc>l(!`^6b81}}4z5PLV4|e+d`+E@_4+e0z zx7Xc6d%Zz_yg%#@$NRgz25oOd-2^c@C4_BCU0tu9x(0GX>gw|AVbu#_wA=6Qgq_`p z|FI8yy>PtO4ad8%--|kX-9fh-j-t_CH16(oVIOw7z25F#e}B{+^!wfJPPakZ_0&C# zZ{U(Dx`rf@elXdll+A0_)0UU<75IkawW>6NXcKu5?B>Z9JLA#Lel*%eaEQimueZAs zhSA=BXScW0>FvY)&S*5+*$GE|gvPMDw*yC={b9GWzrQou9Sr*W&061xiD8`LWMkPY zYt<9^P(p1;UkPm;9Gj|rz8~mmvhH@f`+K8qKZH97!v0_o4o6XM6m`Nb?Cp<7oxQ>C zZg0@75bB`eaDR6k4R)jb{&3LQ z?V}FbNBmo-QgYf2H>HnsRB_UT!UT{7$}$`w;U}yPYGY`<|&yW#SPB@ zknYFwt@zW%zVQZ!|}4B!$^BmTJ3N?I5Ms!mw1N$O%l|){Ko-!e|gku zrI3Zw(}XZQUaEzp<%oe)xtz&tXyw=iD@~fcTB#sdE8(L8AeGG-Ov`!I6a+)nGsvbY zY(~VW=wmu6N~R(~@i*;nO7(;@9HDGm^3f+aOJj7v38`anWXei#dM4`fvIn5M-wV3K zyfO7qThhl2mz1Xh*JR`h`sQJRA-!g05aFQxdgO5*=17hZPG)<+9Ow zW;NEN1*vtcU+q-Q*Y1ke9Ifib%zT2ZcX5{aoL9MUTCr*de5z`$f6{}JmvsnVFi)n+w2WdRhqI$i^q z7Q7iw@N7N4h*IUeAabm4gM={t4`N{u1Y1_BU?C&{rZS@eo5BQi3(&T~jJHYWnF@Op z(Otz-0tU>kWda9)#@-c)_q!;Z1 zU{R&Cy90JIW_$V-(PD&e5iL3VnUTVAY{RUbA9m)-k(NZv|gVEgJt@RTJK5 zY9FV!fl)kqYIhXaH$lKE@(xi|D*~rz|*)Ybg}0t=N02GX95|zfy)C2zOezEqa>067Zib$WZ{2+87D1B z=ZvZKbH+!54^4iHjmpsu#yF!aQ2F;yl7%&WMXVA^7C0k`P}j}gH30e+o_v4t3|uS| z20v-b>_O`pINSnyll~06+5#eD`LW6Ze=alI1aD13wz>z7^QoWZu?Kd#h$>a@H zwAT~=?$2QAo1L3@MAG+bwA8PUOQ6NB?z@c4ETC@U`e(WGs@fom&xMxCZHXrcI89Er z%8>B@~%WU zG+bnzQ-~UGrHNSCF#Nobdou{hz_FCzN}H7Y$)S%BXXF*it)r8|kj-H%Zi(OmX@r1C zJRZqOV8Mn|g-ISm1{I7WnCN{qU}>xsPQC1lt0$}#PTFA743iAAB?x0kr2#EB^)ZgN zm_I5B84af>n)3~|u6M+%$@Q8q<09a~Pe_FPFvG%Fqj&7mw5YDiaqK__su;(X`Dwty zo9i2xMScX63ChTv`Z*$X(9tKp*~3i8PN9HPnM$bjOy@GuGF>hUqYS}oDy$|tQ;5)L zA*J(KZc^j|UxTE4rsyAfL-^AaCE9F8D0?ecb4yQ_*S9bbB~&k{1bkG=%y(R<{e;={ z2U+)H%K}m~tK@6EXIJ+C9y@JgDk}=z*{f-(suowzgO)*542E4@8)8#sv^su!p~+0Q z&B3-kjtDDEdprEk#JtuQ|F`76+o}` z6u~TcGQu^`RxVXyGHTs|_q@TyZXroRlrq}Z^?apG;$+fRd4KHmkbCLE_7I6a!p+>)Q0M_jPUv*A_klugBNG-Pmi~F&-?}C{Yb^u zI9{4N0L7Iu?@y0)aLfBQhZjE{fKI2UMO1!RD~1tq<<*I|2tt^`5sop#d_d=nicF7k zQ~&+@(^4LzmJ~ThRyA=MUq(_jd@!<)81j99u=T6ffok4t2hOA+weB`RP7~cr`+7k6 zX6*i?^E8b`enS|G51O%5IhmhYPsn#7`05R&BC-5tSPOGvene7nH)9?sm@ij#_cf|h z@VdY^3xE|hW~zmS5pl+3^{B*njKXCYqq>fn0@m_(DU?pj41I&+SftCGC)<2^g$ck3 zW~Rh8fPl{qK7a8H0mw|!E|SE{prwA9(;j-yt%+Q0D8j-$KqX05oUXEpsdM5=474AK z$QYVnmKPGcSdIf%gt!>bmH;y}qX9VKO**Bu!EOo{2w*PFZxXIQ%DWIy5eEMx`x@yp z0O>BAMJQYCoZ%u_(-Z5wBy8NFs!FT+wF=7|Rwb@acXa-ScXSr?Yl@h*f%4Art+Kq> zBO$DKGMOXl_Sw5UI+Ml=xzoNpI?Ee49Rmn{xV$`5Enq5_E^Ukv;)#E6^Z#6!rF~0w zSzHgI>Qpt|_LR$kycpJVcMgAys|5ul7$2h;E-z3>l87FFu8tK=QHI4LTX@eUB$+ew zVMo0mLmbaDbUDos=-^U~?P9~iV>6yCS zYldJ#0hXzyA(+8W!mWUe!Opk+&dcsjhwn;xUBSj8)9gG2BQzG52rw}#Y4wb*pSZ(L zt0gsN==c}9TOYw&kXc#CWcFfWy>T}~-%wzI1v5k`oFKCwxydkNC<%0PQcqo_riz5X zC<&4E(T6E+-;nG&CNT0%0)#eKVHe%@GqWM{yIXvJr?3!r-W!2+nnXAh*B+6Z<{il$ z3R05JxyByV`CfnIyVsAxCid|=C^Mm7lGkKH-z6tmMzW8;5gD|Hran$pVjAEi=QMfX zCsI1gLq0_d1SS~_MWV^&BVjLa7pfCYEK8F zNM5+X(Nu1)W(&!;vJ}s73^RSI`VD8vZ#0;-SZ{C!tZGy&sSRC)?#V}JjdRc~Ts$0~ zPHC5)kH`3v1h3atIdqshgm5EDDnOc5NS$QMmB6?lmpmJ6*B`#{tFPu@`vT9>7`=E+ zU^Id;OhS}xZ3F)EmHN4@&EcnK+u$vUkjZB!6$$gT=#XSZCDgr@JH$7e2i zfa~Wb56H9!z-0!=>qxe1G-AZ2%26-D#w<@ ztw{h@xer&%QXP48M@`#!PgcuP-O7V&+J?Abg{plxXC%hSwM{$eI%x|<&fMGbmPd0N z9OVcIETBVqrIOAWd5x3nGVP7igt?6!CbISiG+*$a(iO|G%k>y7$_YP@vN{GPYGrDI&80L z;!8eBCF(yADq>9qQm%i4xyBAsiY$#w2I-0w-dFChL2UM{l}M$KO>?9;fL#COpX|)L z8nZLVrU7V%5-_JGZRee|9*eai;`%aIDXr|5;BPNMH|P%hP6?6>PdF2~P@IpJ0k71O zUM3yGom}aRSv6+`-b?|CbRKOCS*YaAAX^)zf&zE>`l84#0eHn1Z0TSuJhr)bl$^y! zAXN^2&>bB)9xS#aG>nV3WM7ACd}d-!?7%nMXBrCEJ#$`ExE>W{43EXhfDtl41o0lB zj5+6yF8iCng(@a4D!7I8{52}>d*zv^A_8Gzixu7nBpvzqGAFSgi_4|wi3o3afAI=L zNQREwNsqU%E$i~Kg<4g}|Ii62vzuTA+TfVKOOj_6m*r z@S6RGL9lAaVQR|&ze0$sTh+-j1J;Gdx^=5G1p&YmlOYH?wQxZmo4^@hhZShSH74W$ zj9|8k)9%b=4aZP<@YOiK<@lK6)nk3UUclAymk@`nG+602kuE|lVj6IT-5l0;TvRZ} zy=s~whl0y7XCICf-~Ry*3QVVCGrJ1?t<&?$gJhi+l@68I{R?6t^WMsY@2h$ zHbAqKEst@wtrooPe9CQ$#Y!Yy;S48yB&?I9bYX9+#v}_(?wnL4X5xLZNdFU#W1;$p zeN(bDDc&+=29Vo14yPjA_9tPfU_>rf(&K}~^BK}RHuo@I6W9((`Plv|N9T%+uhA%hp2pF%cmQ7Y=g~D8ANpy z2?s7;I&lM#JGhsm@`eT#+1_ejbloTE+V7k zg~q~>Du#HrosY6|Kr-L?Omp@m)`^lXbi`qZ#+PKC`2wVc!+T{i3`z1YeT9H9S$uQ= zd|s0=khA zUczYS82S=Jsso*Tjs=w_cxbwI0L~GNe#$UI@3_L6cVC2Onp83xN8Jm)(jb~2S=7>o z;(wz9u)n|mJucc3h}gSGmXtx9Qz_NwDM{2l`twBJq_0F3FIbT$#kKlr&pcr1rBNzpG?zzCT+bO>85r#RVah>IahS6e zOw1yw8JgoTg&9|_*bPDnfUzC#(XyCh6W%ZkA=-;@wzb+3mZK0A5=5EZrd*^o=Ec>i zEh|@8k7g*sb75-rWU?VIUv(j1vvf?si}S-b{s@NGoV`rM)s~*<3aD|Dl$@yna|Y#g zsW}o;Yp3`wgn?|>m5}1h?gIZC$&ar@>mMY=K7uiVjF0+6CBjkk*wz=V>oq<<$;AJb zVq+%20o5Bd1o_lZxe&oK(3KP9cflG9n8jp5Z^;`An6-KJC+>J;?vSz?%~B$+?oqT^ zInuoJEr*%S(yw}e|9Ip3c(Xs7*JloFF#EH4@)fei*UlFwQeENQgZbWhrqVjyZR9yP zt{bl&d0xto&|=NlYuxPZH4dlJdtcc;c$xCnG%#m4id!PIu(UjV8Y)z@6lF6^sjxz* zfRHJME{+WlLo}a52?5@nN!#*PNRa1Z((=AHFp&W@13MAj}bGqHZfTAUfG?d6+7kcY1PJF<#+=hK%UYSdCrB!9n>sX)U zS;1`S>s&!Ke5Fs=ny{8G>z=yQ^OtiVR(2h=?0z{K@~A*%=2F8X>dOyrRk!k#Wl#KD z&%c#JuG|3DkGIP8)@-n4;q@c!5QXtwml-Qn%o(luI1tAl*|zS+k4{k6{2j-nT~aDloCk!@%Bf{fe0rN zUf@WifW-7#U&JDkFi{4R5CtuXqc|PXnM|olqbXc5L`F>8z`);%m-Z=#=Nxl*;=4SW z5IgK=&%nD3h;uOzW6G?XCiotGo|am%UYm0!Hbocm?+x1TeUIfY=MXQPBAEK>oiBV> z71iHz2_lb}IKe}bP?kX~a`11Y@W_mkIGOlpA-zl5kWxHJMCPT0M5z5N5w{)6c+#yF z|8?O+ms%2v0yq|7F-r?4nJ#VK8F zQ014KDN5ca6f#W5;=HNwT{wBQNr7QKft6EMa2wf!Rn z_Z)B;#&PsxJj!6U^c6YU&&=iS{vu7P4W%+@I9S42+yY>c+L45|lFs`nuJ^3E+EY1V zZR^YNw}ELHaF()eKsPshsycQQUy2gmOwDz{vRr+fxoSH%%*X?^2qg?d=>)0L0&9~e zZ|uTJA|k|$54Q{quKOzUYzis8Az38Pd&qpEV-WN<%Ge-*DO>P0Tzeh;x;{!1sbQUh z8=VV9uXz*9rt^{Dn~F>6+oPC_+I)$S%i;ANZD;c&pt5(SoI}>bIhzV^Q(sdFsv^)ybU0%K*ASU6@} zb1UUnjIiT(4ho*Qz9vLiKb*Gj{WNOx^Qh8^6sMQhs!%4>LS3Ow*ca~0WnAcY z(wkHUV|;yThJ|z!B_kB31tD#7Mpdacvw4z~DUk~;oL}czVQh3o9!!=it{br7o0Fr5 zkP~@#ZznFS`VT8L9O7B6s_Tfwz9_#kSQ|T!i15(Pj49I>c4a?;4EhnyWX=T3M>r-b zNed$&&156aXlOv8NdGT;CYD-b;P!p4RG6O$Nh~o?M8NvuslbVLu%Ns}uO>m1+WrH9 z{uDAZuw2LFYT^_nF3OBg5Cu$Kq9_6cq;EY;Q=J=L&I=uP&*e@Er+TQxJx>->S*BhA zTj6z#Gnqft)}5sTbi9<;5@?YD!S|S1muZVTr=Ym}LS09j;RR#}TwMIX1;<(qbb^_q z3ZBCoQCGv!Fo242`mvz-`963BDH;xZlyC}0#oB?qRz{@M$R`@#W{9{5Ve?RJ3Jnxq zBg*+G6J~@k0v~a7 zl~MRn3u6Z*dF4{RHz>qh+ww5aHj=CQ#T6o0yCl20`Gmx=xZO##Yh@49dl@@_S6O=J zg$_Ws*Y9<$w^bMcCn=OpKdi9LlO0*@SOuOvdyuq80&s@L2jG6w9ytxzKk_t4pg-(( zb|oKJIekiekeD1a8!&>s5vtCa0XE5+Q3%8>q+9^%_C7gu!Kwrb6=@N8?Wz<9LZEJ% z;h;9hfezl^OesqNx@2%{sw;u! zs*-_SsVCi1EiyoFr4*UkkEjw^B(743ay`Ylz>{;>`}5bl+pozr79TiwloOE4EFyw= zCMHr?ssO5%3tROfCOQz*BneSk4zJMuHsA#+x9r+Pl3(1^*=%AYh|wvLk+*tcWMs~H zK)g=O{c7SGvK!2%Lg_do(Y;L$jl-(RVeov2jf4SypR>aNz18e6wIA5b@a$PjrH-fh zp|s4LFTyUlS|;1%D2&D7M#6L!uLz|m;Yu4ul!HvjGqv&%KVY+#@GG47&k3`YO?bM7jb~M_&TdHESj;X?r+%=L+$gR32D>m$!Ed01# z3u7E!PYEx)aqsfF%{rKuf80J&5@(zDj@N3|FJAJodi1Aze{x~jcI|PLF?Q0moKf)pN)&A$HGAJTOf|df-;kNz*lwf7=Yk|RQo0|8NoQfpN=@w z>We;A!3-u71fJt0LZ7z5b1V=&cxfu*PbZ~joV(%yhvfTy3#M4@F%N)uy+?yE!9kdW zW4=dTbiLL!PND;#j@=H${rX%FJ2n}jTQkI)LX&~q)i!H^7tPyw5#f*lPwuF^BH*npL%`=anPj|uIn50*bz<#n zw4|lCzsdsv3yL^3J$MPc=Lw0>6;8dppQ?j{LEq}Tw6lsT!nA3Xhiod|xAS+Z;Q}Z< zjgYxk zOIFawo-;3$2q+f|L?%kRM_V?R6cD-voE7Ya#{m7J=0b5MSlC+X@!B(MZ z%iqA9*A&rN--vytv%aCUx{<18WO*$py&oEf@w#+G&zyMUO>EgQw0`MzH_#8?Y81RNQy!>>MFArusM5p8dmsvJ` z1;5PsUS52YXP}}EA8PlTFwBc@yw}b*xyAo%3FW^m4%+R%EDrv%_{+kxP>_vE@Dk9L z4Qln)ptwtDtpA57W9=*cUupT+U?Z?b|L=8o`^Eh~|NNx?Kf<$0|L21pNY@Ct36N{G zl`&nYvZc8t18>IjIOc!xIp*7<;+-%VC@H|(_<_U`%0wX}7N?N@h?ez*Jv+mwr|K$k zVXt@QwJEb$6fPi+`R>CL3yHkEL&6Y1 zG>ZS5{DuB+;sMY1eX*WaE-zBNRje&sZd?7578_&5IY%-nt0c8?lGtqVk&Zg0TS?5K z#9|tRYJFKllyp9darh%zN}~J<7`YHpf#6p#8V*nry6X=IEgbY4fR=tyO<~*X%`Gfc zPtQX>w^;uh+x_*kX8rH?hQq@8-|O_cPwW3L zd@B?aRen82d1L03q_WFb$_Lbd&V?SQss14;T$G3Q-+bY+2S!SB;p4C*m9Q&_X3s2n|cm7pQw)wpg zc@hdBFjNMQyhgRTtB7)7D##r^UrPQCXR&MGvcNjVE2A-3oh{?%iAH^!P9=cOQm2S= zs?cZV`Y98MqysBN=5B`oDmtoR?+akH`7iId0#{+Ov&(s3WKdx zREx@!LHku$lv+8>v;%}Y-OLz@j~{ZiXC0gxf)yYYOub%FI8*?rF>NZiUZI682TTQj zh$yHauU*mXJgIDWv*FM#A5DitM`=|Khx*uLICQ%;)N~=O8x94b{Vg~~3}rK&icyC3 zxfjO%KQi1<^;h%JBGiWqmT}o`rpi89I&|17aOWb_-aqU4TRQky9|W3y*|+6tJ9o!% z>7+bfeD@I95cP#Rx96plBS~k=;!wr0vM+`t!g<0oopHOUIjs47PzZYk)Emx+y!Kt@ z!;^~tn?ASJ|8*j{2DadJ_TNrtP}Ki-cKT2H|6@GL|GS_T6vNF_ggZ_s%0z;e4K#RL z9p)2T9;R7=-6A~g0C=B28_Ar1J>?$*D|Nw_F9$0MGB^QWzIYPm**uQVNQ^^ys#RAf zHN}MEbvZoJ35`@gzt6}#<-bv~IIz9WRWRM^bw(GmmwA{(rnXqk@?SErT@?1M!$_yF zlE5lF&;BfHJBNK`Kcz9mG4RgBS*FR9$N{(WsCp|KNL3(Yt&5WSOQcm>Nt1#D|MfO_ zzL55_Qs1vDI=oo#2BXp#Xh=?a0mG+f+J)z~ih^|Zanc*e)FpZ6>Ou38BK|;NP}3zJ zc)l-`0siNmQ1w(xwE*&bBj8t)Cc<(U7UNo_l38h>tsExm+?!>1CY-+PPs(3QZvuOA z@^DwF640ZJ7^5hGFZh(du2H zlWQhRo`dzv7blggn0}0iJ*w?q(7Su6$kX!&d~T`#(M@~+*XV!UURnR^>4ed(A*umr?2r7k{`|JjE#<$u;`@H& ze|J!l|J}~h{{K-PBmdPA#tVJFK29cJf?2NCZWW9G04Fl(ygHrwpl>m~)#_j$v^>TN zv9Y2r*TRD)X8GE!Lhe1hiAc2}xEuEZyhg70g~jW$9U0}^Le<+Dwwz0))Rj`!9!5vB z6t*x=rrh7p(_H@RbW$4{e;dgE;h^aMJLq+LPxAjU9wYzjbB%3o{ME3kO~3kUmEl)^ zTVwWhi#0L&x;0#r@5VM?0796;5sop#NJ&Q+MR{uCwEz_7=v32aJRd4pquuoCpWw=?hJ{igytFbZPUAa z{zXPr?eOR7Durx%b)|M3Do2S|nZxBj#)@%E`G24L|6XsWr2ln?yHE1}F`lygzlZ(5 zy%d!9|3(Z~?Em$*HT!?JSd;y~TjP%V{|z?v);jll+|(PcxUWsUO^=7))UWZnGRQRc zxsnT2z}MuL;v#Az6&-!RD|t2P&gfzaQps1S9;WLxRQ{A-(l74Wxd+dz2EJG;hxm75 z0{M@AZnOTI0lpvmPj`2xnEz|g89eR(9_6XC|Jb)3J+l2rH@(sJvD*GqaUatC+JCAv zod>r6tj9hB2Bxk_xi;!&m5A|*ZlRy!Jb7E#l1v*nyxG!D%7*EXuZID7jWsD6tyakM^OCc;#$lLZ}6@ZvH> z?gEW|0Uk+FB0#OKQEU8{$mCE!wRU3KyTKWn%we_`$2Be5aMrcS1)fMdb;mYsIIG$e z!?jtPYxJT;nrMxv0-F5v9gb0za`>NRq<_F?Gx@KkMEgqd&i(BFd!3!4{xSxXB0=@?T6$hdM}-GWIZYQl=>A}(8`@p+6J9WEHLT)pKdI*#dq zcKoXON8Iq64sX2Qr*}{6q`OP+JDJmy)cz`-Tgv}?&Hu4GEb9M*;ovF%-=jRG_|JPd z{;d#^`RT9vSatZTKCLN+L5 zyS<=03_3xl-R*fTCzqJMuT&DVhABQte>`>LD7`v8TMS&xWV4??3yn)%DB7!{OU;m* zA*m)v6$V4=ei8j$-TF@#Lvf>Ce#{+d=E#+%}n`rm!#|L6>RrSt!8|LOkkM|mD5|3`7x=-)OW zM+0&5+!i+*cy>Rp^X&d`_V()V{pAm(>-fat(nRn!6T0TEq~CHkyxIIW2H=e>fa~mk zopSz%Ugzoj=TV+I``@J=>3gvNDv_~LW>|*{)t0>+r90a8jIFN9HL`$=W9Qp?0PCLB z?Mir-2s1cQ=-Ck)RYkH94A&OQje1Y!x&P4T*7AP?3*Z|0Kj`lk^FQo#yHE1}Q68iJ z<B&XDuwtGom&9> z>_Iy9wt;8Oq->r9bn5-H)nZIL@0Sge^?Tf$)?ELTm+T91Zdo$Boleo1X}@|)l5;|s zYCI1m;4k^+nJy_qGb^wlw+pT@m%8A^#bPVq%kNGI;zo%!niw$LD_m75Pi`5wytw-D z{i~C!i<6`Clgpyj#;xnrdVg_pesOkqbW*6(aKs!-kOlVe=;-9^^6L2Q#U^lJ7^0M2 zMG18Q*T;&w^)oVOh?bBM)~ymEHKC);T8a>5S2!&-b$oJhd3AbruWeBhUhiC~4A#X4 zFWw#fc(HSJadQ6QIz0crOw@{T+nl%%%}8>!0)flJ z)7RpD*W=sa@^qY0KF;_G&NCj=)cQv>gZ{@px7Ppp2J@cczX#>~Z=L>A{P&|gjuv0A z9vDx{=lu6deO>U#Mi(>5odA3gsQ13V5R@nyu*D33b2cRz{x@WpB*FEbxUxS_ToTVI zL)kfrQMG+Lr>u~+cS$7;08A3Xph+ImOh>RP+3Pz?WAGvur(0!nxwHCZ^BAd>2BuhS z0IX~to~I&|EorU3s3QhhV1crc{V~iCWXQWKSY3eA*(&r+Nu&R!5{n69UjA#IMgph1 zal z*z<*q5ZGN#aqfx&GX!D+BNbw34lM-2tK3VRn^tP%O2N8&7ulkrHxwyzHocZtx&UGI zeSi7G)sH8CH}<#OQ>0Re++K!kHvdh4;(hvmbcVa7`QIBn-T(0@Po4kAPkN;9)Bj`b zxuF#RTkQjqqxJAUAO@KS_W`lG-8iT3J&pgZ=l}hk|M$!5|4z66wEjQJW6uBcnRO56 z|CLiGj{!2Dt4`_7$2F()g>p?!=?hghi3Qpj?iG%=<(oUl1LX%k7bjwDW465U9%ALGA`M*c6-yfeGzdgD9>D~E{7gwie9|k3MD#I_( z{*NEC)R1<=_3k3oRQZh$m+vc%2eHu7R&FMp|CorL&7KDOUl>D5+gCr34F8+2=J6Sc z4(E)Bt!tA2@O9_E<@;ZDI)kVCUmoRA`X8qG-M7L)iULRh1fzJ4grpLy@6@mWNJ#{s zVFEzpaSUKn$b^kX9^FN)ImO9DZ5TOUff$c6m@QW-k%HrbX$n1S6ZBl(382kP4FeH% zW&U=fs#e3()EK~XIM#QW-pbaqrYS6>Pntq1E~y0GJ3%U0&~rA8Qcl?44IrsK+O54b zIJ$d8;p<;c-^5kB7YYdt!sC5?w?J8jBjj!A_ksP|-PLMJSXRD;FP1O;Wd#gNa24(U znv-xcX)k)pa91O6YK(Upfje97xaP@giqd6~4BiZskJ2MjyZ_}R!xHQufny>$x-uje3>(>8n>Hhy- zcjw9e`zX&w>pzTj?&UWytzYx`I);$yvt z@~ZBBzuns2^cJr|V+O3e#A1fB2?8%P3Uc+f)}siAY^&0kZ^wIUtN+%PqbJ1}Y?>LIZK{;leEVyI z72iVed79xF%$CZDkCSv_oq$vIx^j`mqhQW(tP2GSRN=t=Ih-@{8YkBe*o0cIRST}X8xofn%}K1TJXxqYQvkfR zbqhX!QO%w92hA;D%cXCTi>jGu{Y0u9Cuah!C@u)C=v+WZ5xVK@Gt!P;FgS|qB&B^+ zt;JHH>nLlf1~rSKn=E&SKX?f|g}vvT7;6+2xFasbUG=>P>ZNt|g+KX!;oMLMWUHjb znneMBLeU!>MKQX8nH1k%HEQyjo$rbjw2&?2|0@6%Q(plpwdqK7-l9zRXT7dK^rdt5 zw++N}{%2gFroijwibV;Mwad~Ld( z^HqRJTjYMo0+g_9nG&2Z>Ny7J{DajS?*@&81C{o~Y1)i6;;I>&2TC48k7IASm4QW{ z8`-{8W<_4TP8Q!f^sZl89m#4RSHx;svAA?)yOF3YrXS4Cr(6{PA500guVA-;n96}D zlTTt^?ek|rxIT%m6{Jc)1i=&5y^=G(6-CDVmwbx@E1Y zfYICa?bDpG);3inS=|);1KYZr+kcf~qI8(v$O^p9{yXdy^MCX^yHEE&KguKQzporC zFPkFp)*ftS>y@V75GHmqXrN5J((ix0g;#M=DgfV`o!8;b4XwRS-TSfmmOP{g{G{lZllaqk3yqM&oPUVEw+%f%P^eCD8?nQOHPkP~JjV zUkjbAEg{QrVkul|vG859fT}%%ES$b>>bMtB)%fcQKfYm|!O7_%XRKVC`fRS&tSI4` zgDFuq|3VMI&z`aoc>gRIJ8EE|6`)Quq-LNLTK+1K8oO)Ae8B0b^da99;Ph2Y!t2@(L5QQw{VE{76!}Z@&5|mf ztE#-7j9{pTWVeGpg(!7&OZld1%eS+b!@y+zcql zvsLP-ylAFWEwE;)ykn-O$jPUaGlYVqBgwEvAqTB*uuUM(^wVC>{9yZGD^uZlu(Oog>?&5Y#aUB zLe7Ry4_Y0rO}VMA{vG&eC51NPpp}sBn|DgQWr=%|wuhQzpUp}p0PwUsy`qfzaJgr|(>(}pj{d&yh>+^4t5U#oXH(fN%_gs9| z<$vk!7UO@qo$gco@1r~$`~RNlsDAcAqfGM`tXj@~l zEy4n|=2~~oI@9-gx(GKmVc(B|S3%(m+Y8HB;BAIDBLk!{sR2gmSjjmP~ReeQPZ;IksK&NdT z^XaRjjstLwP}-_k${){u+}vPXVd6GF8sD&4V>oxr$g!iV+`*m=!w^yWhD16KlP?`b z3^C1j+imF_!RV(9GxRPAktZ(Yv<~hInZ+~o%N$uQF_e)^q_48PbtwL~)4=}z{`c6c zabz-;Qe<*FR`=fy!YYkT)fgz;q$Ksg3m_e^EivciVrCMP5sW#{Y*jiG$&4@gB+7p~ zeYc8LU2F|>CZw+*?d{W}p62@B1{Z!5o^|@)PU-&FZnyuW|2@jHk^aY7;6YNoRz`o?A8Qjl#2FBmZWhu?Lpw=zqs~h`fn0`g~w3t*$wQ`#}wcqND@kW&{ebyar za_38xZmxQef38c+SDHn?2R*mB{haxr_+7X{~qJn*#4(3h=(dR5!Ux`L%k)*8C+0iO@OZB7f+-P>qM(wKj{Iim6IdpH#qWhP^enbt>iFukcx+xbP)>gax2jSz zuXHi;54mQpyF0K}>&Qv*_-eQAz~`RSa}6$*X+tZ$b1T!=R@sGWRbC`({0jV%@`VqU3I;x)2Lx=ACf51?6Vr)S=p zk`-)LgI9r0u~kvi!F}f-Usb$nQdE_{5C_QTFq!CFCv{)7`mcFvEwqi|t5y)Et{ZyH zE;BeD<1oJ|DIaI&Q{{kHR9@94m9Bk<<1tP!Qxys?-ShUU3af$2JhYXd<)^xlsD{&I z7)nB_NT$;>>QeUf%-#<+-?iEiZu3!$>GUmO=Lkm2!zkjiU$bG|SBJW*K~y#VLMS!H ztv>w@&Tzbx!@mVyB&bfVXd&lTaWkPfpK4qo#-P59nn6%-vF=y?yT}PmM!@_qKBAxV za09-6ZClwe98Jj?ME*+UE>rM)nOVUkH3;m?2J*nv&3X{zFYVg`?7O<0){HXYeiRt_xI8**Re40`CGyT!AY06)QVGFnBd=gZ9+&AO zx!PHL-jYZpnc&N{^tzL4wm>dXAGdOyLBF!PpkL*U)o@bPM3bKFD|mgY?lWIlx0Lj& z4FIOAqkm~d=KQtezRM9$nU+;`1P%vIJ}C8Ksvagszb2UgQv#Rlh(B?8g;h$4Mf z28}>gwqqYC1-ZO-7$$eU(i_X1RZ<6lI?0oZl)X+~cGXO(&UW-o~&+S z23&Lg*By3x#r!Y5-c$bXM|n1~|G6jk58?^tp5K2RK4Emz>%ZJi+}BxR3Fg;wrdW3; z7`@AtU`4Z@b{DBxhwtg~uL@PCSwO&s=Af@;p=%)jV?2`I+E-TBH&_7H$^U+*l>e*W zeaip!D37>c|42${o71ID7Qiqg)@2W?F8;R7rp1F7CBtN#L3u_w>T2=+Wg}-2Erbi9 z^Kzo{FMJX{Ux4Rwh8g`+hzJ>vpvqS1q&3c4EkU6}3uR8JI0iQ)yN(Hr#8uTBQYg@s zMd*iT9}1aEC_b4zO2SY!h9RQT;xx|$5aGDSvAy1-!J-?42@b*}90!=R^(Dfh=l>!& z0p2$7ZUOt&M7bqBBq=fy$4atiFo_Q1bPC_jXJDu5cH*zy!|v;THk1EO=Iq7`z*_m= z-!01j!IS)doJUUNI3_pX$N2~;^$RcpMhFn8twksaR!!u}eCpRZGqM$!!P{Yg(MV?ZMg!}OYp+D zGE{snh*R6>yj7cnE8mp}i7!NhX~iUpx0|VGdJFu@RnjB`!@l?v&o1WUG5!QR->cTY zTSwx=1VDqqcpk?~@XH*=c#OG3O;a%@LF*?Zp^Ng2x53AUf)NVgoFYKU42eCQ6nt_d z#~8&C6^Ao1o?(U}zO`dhOu>uMQjGHP+Y4S6Clg`G+6r2yV~|N9DS?C}VGt)&F@$)B z8Mwi5%y)@%%JHNC3gi{GYq=&rYq2;dS$9HHaXKRh;yZOPb59&s0$1j`Qjr4Z=?<>v zKIvnls~79lw&#}=f&4a`TLLpa8NTZmU^qawN2GU+)DX!qa9b_*5*tFM;mQGe%JXNJ-k zh6s57#{=G#x4EFv9V?3X!ig>;yo2jIQx$~m@N@M^Xdn-WoiSV=@ok;TZq)%!+%wq{ z4;%kB~P=0Rin1zl@pFg{v)%AcOnvsN}8o1)?1=<)aWssrqJQjefAYZ5gRj}>i zV~At$LQkl-gaHT^Fvbxmw)x^Objz#5s7gZDF4=r&J;|2;2Y7+_uSqfBf$=X<(qIw% zB}(!cn@fa%ON6E~qMXU#ZUW=CR!N_pM|_&@|IAEjUnymPPnu>M!8P%p-TqF|{x|46 z`F}mm!zX_GTW~o=U^jH*fb^kl{v8ij+x-L3M z=KcE$F|9|N>F^|`VwhHjF&h1pMLN5z_;Z7rD4b_9PKlvUOb0wUFK_L@R?%LJ$0%He z`a)6j^FG^PD4XF#rlXo6O8FFrY^vy*e|(dFJ17nQ=1o{aqN0&pzSK3-0stioL5R;z z_y)LSyk$mj-k%=lK{Q&h^0!L72+RIKS<2J^D&1PELB78@ zIlsDpsP_f&vm04p;J-P%_;JG)M4gpL^8!~FCztmG_`$j1`=(T`XmCtLF1S_n`2PIe z`?JQpamzLy1iZ^NRm&(X(jUR-T@o+P31Q#i7||tVXa=fA!x^%-B;i%cgL5&wIzKr) zzIyle_1~|~-@Pj^mDlxZ5fu?;in4hcNv*k zpv}9ABpG%ayhuS=*ei~Mt5~mxycS;7^;Ja*i&os(I`Z1oofvMAk{kEk(%=o5CpJ7azwM9zKYRb$-nNZ33d8f+zXDrL@7mp# ztg~$2lX0~29Y3~{?t41D5{QH(j46U8Av>BT&u@P&oJas9D3W%Zv?G2>=P+~X=r>4cfSv-8 zl}CG(Cxuru?%YU+>4{ZJ+LKkXGHhMjWlsbDZ$$ihAwV1azukV%&i~sV_qXvskMaor z@6PoCfr$9Ror@_ZVTu2@vs2Xp91-7n7%cVAie#~TVcYMr{3~UiqkQ)5{Qh*g3@%J6 z?yx)ZR;IvM=vS*tcoDuB6An3mNuq)lb1&<9xe{-I{8fPBG*i3&qAs)rN$9zV*JmZP zpVi%!tdi0Q)!!B9&@?hXOfpYh`onPi8%0bV$I%uIj?BFFBaRdLGp37|qNJt5I4Tt8 zB+yStssmp)ilT{??EBKlq7<&sLA=9^oUj95T-W&2qwYgi#U0X~#FRQ)y zEC}`906_g}ic0%aWJi&KGp}$cPg!Q_x&661z;J<4l+X@NKj@$2+l)M!hDd6Q`On8s zh07%G=3zvB*auH;(3+Lny+P}w1kXpX3h{5?BS=V0`EgR~n%*bbzNboJ>W0R#7Wo1) zD4o!ZjFVX2G3W`>OR6A}JkXrSp`eGJ0vJWCV8J&HN0F7QZOJIlNDf9dapjyJZ=!h& zeUzUctMr5ZNxpT>kNoF`^CJ)FKJz0F?TgKiJSo}yC?K=;{K&zmJU_Cs<%1X)wK-V#SL7a0nMO{J{6Q@c{$JBq=Q5o+>i+ znK8zlhabdJZ+#i%*;p2Su0NthU~1SLmAqlLBTT-{w)rzul@Nk)}` zZacQLimu{dN~20dY91CUPHQUjnU=_HUeXZRxxxa*Q?Ohm^h8Q#@lMok*WFYVXGPEl zR{J1Ep^swTw<;1q08e{YrC?1`_o{3xZ^e@|WvksmW?(IMn8}?s+ep)MLht4RCbN&) zHja6^;`J&P2cHt)6RtWXtB7|F!|2Nv%}A`Jr0#&-v;_Dz+1EY+aUeq+D=S2gvH)DE z(WGgVixXUHd9hVLnaQGmH}hJ%Qd&E+SvwM0+bO2aeN7{UH6NiAip#ZGR9ORU$WKd> zy8h0s|0eujxQiYt|5I<&8{7AP4@TYLmj6G-Q=0#kaVj$dEPJygtB_uxc!~LS2nqNX znTi~+I05l0+?k>oiPiB)=~EJZ&Z=@mIV96thUPqqPm4w=iSF-zhC(uLTePdBqI z)+*%)Zym-og<O@W?!#-Ec#vId9I8+)UakU)naOg-k4MBPA_=A>X4cHHyBvk-Wf}#0U}@CqG3YwC z_Z_hSnt@wqS3reY+s>yYj4|}5c7Ai!H9wtPo}E1V;oZyESJ$~XvQ$qHK{J0xYa`@E z1-(cVUX1)i`*?%a#~=zI4%q+}V!eF*`ug3)$<@`*uP>i{4)pR{J0^s-BbX$2B=%iS z1+CX&t^8DndlBtw}W|Bd=Po3cIyV#w*%|4W{LgU0=8?+9lI6O!eiq2Ns zQ-6Mxka>wIOcvm;fBo+H>mR?9?~%74pmnmMWC>XZ2EiJ5B#x0sndpx)rJ>X5v`p`` z*jm#(|Q7 z&2-W*9a%wP`Z)nUqR6Aj-v{DW0*2#VA`wu+)vDtD2WHte1SiMGqw(SK<9DXG%(U=Cg>io^Q`8{-K7?1D#PQvS&(=TX zlUvhPGAB;{?k3^aoU?h)7Jzj}hnZoil>yR@>8wJEgS73@{2fkW1pPH=ztOEnjfm_| zO}vBlLR=svXwh7+J^@L9Pz3rr>P3huHr=68+f<9b_otnB6`l&QzWdJ>QwIOp+G~N2 zLT^qMpxx%wJ^5W%#y^2}n>!WzlWuRKeN;L#EAZP2Bl_P3jr#8fttz%u?N%+<$!`Jl zmpBCN6|?I=d(nFGyKcySYJqm7y)(?rPc5zwgMX$F|LeaV0%$@ZT_q3H7lrmG0KfbK z+97B?G3~(?`1M!T2;p%T7Tf8oGp_PJ%@tPE$kMOQ-adaigF%A+TkmerdcwZ6GTPII z#VCnLn4qUmb~W7+0E(B0tSD$FU;z4B|B6b?!t?@cy$5WCC>ptWkuMNsEq;AjP#`sL z#Iu+Fjc4E&(0ZZ>Zh@yyLF?l6`HL3#l`*IM$5*dUo}Hb)0GEthfD?Xkt-9CAhZHi= zfqjBSibG7Za0sRpCltna&#H?PNxH|*bHXqnEdZ`nayF~0dkJ_y6LMKZZO~7ma>|UcT7c) z3QAp69QB+;N<}vt9b-I)B@7Q6&JW4tHFr=bLkte@<3Y^P_x` z0mzjo+d%#bZGY8Uw^1l?=ljaA=Ilmo!+gHZr_uf|nbyhzz9If+*v;?%4hEy`{_kTv zBL0VusJspulMn=Cj=k!;wc^Bby6+mrcnRaRy6iy4RolTnMX{yo>o!55;7*7L-OW z5It@c4VqnAIiDh~FYr5JMa$TWqEve>0ExFiOdH8SaAKVhoSn_vK)vXScsJ#(DD6_! z4DB-i!glk(HAeKVjB3y;nz0~YuR?P)e#d8<77tg63|HlinCnB2Hp4BN#R@7vl@5bv zD1htq1f({D7z61P6awWVs=za&XceRDMU0XK3H&^4yF^96(i7w)+5BD+Xk;D)wP6~c ziy>AFUoHOgOY1D#=i#0P`oC^^SF!>&=>PrRz`p-yI2sMM`u}4*JU;!cIKfqN0-*Fl zNLRWfJKR4#xrr%Sx&jEnD*=g1?V@>QqG`O zcA-lvy7gKTk$w+A0j8(2n1bTCjzkM>6y-ArC7|o&9@8_;SuHReSh{=5%B$?~>S~Zw9!*g|{nGOpRDmLz6O#zeRXoy; zaz|xvD^ci@ezwy0`{pY+j4LfP@YVvj^^8zsv20EQh?m!j?G}wAt7p3+jZxgqR7g3X zdv?2-%E-Vt$20%6fx@tL^Zh}d#`6E+?*AV3CjH#`kHL5={~zPw{=d!gzp5`VJt1x# zvQUgqm-KE0AhoKq*Cj{YN|;{8v29_mgBCJhd@#IPx8AwT8eHWro+mkd!)(9@oKPIj zIh!{bE5CyM4z3dr#c0O2w}Dw4&(ae%38E@nV~*0NWhgh?!FKRHcuf~5zQYLuf((9D zAOaU}PsPza3$5M4u;_L=VCGra2Dffiau zbo~s+=5kYSje}aI=BI;NA|J1E?&R#KR0^&oO1290>v9YU{x^Dsm)Jh{TZkkrT!cp) zOOj=aa#E*o+^3slkCHgQhD5KXiFR9it|B5%zO`rcySS}6<#cH#^K@Ek1^9ViB+dfr zOq*MDZ0@T`Z6MD8I5Eq7*V>yWAZNUlHaa~dEPjjGnr-oGkPEjIMAwK~;_vfKbxn0R zKYygi`HA>xJ?&MIX;KL+>+3X%f&VzxCTHnsxv^V+FI}*i(abBTp8{{BEQc%yerg`e z`C{++7f* z&EHI{*f?uB&qNwkga&pMA+IF$N>Tds!uu0*#E1(N3)H7-uH&s2`73)W+J8QZ5SvCG zM#;guEJX1v{1;E5RB8-vjQ{9%E&FfW>u>$PkMhW5@@57Al|eoMkQs13Sps!RjyoYy zn5<%EFH*%I5&*rJBnenWKA$wm$23s}1fN-D7NkDC^Z-~arF&)YFQMny~eVjc!b zgG@+FUz(>!O5hzI_WFZXDLiJV7tzOK362jA^6+^4seM>Q!CS=vu;68oj=#PAKLzl< zy=5d8Or-43^yG@_eG_|WUF~eNpz&Y+)XTTI#a+wC0~VR<+BF}UsR z+~CkZ24aftED?olsxhU8Urnxs#}>sS@gl9FI}|eASzAq?KJ6&z1yflRmmS6@H3~iR zwvY6L^D)qkd^vAR>acmJ*W+i2)ZBE`!{PiGSP!qq=3sH1RUG81@H%Xs6<6WISX6}% zdr_So(~QhdCb1y0-xrEkfZeQnIk>%al9hn#FydRh8(SusyQ<$C0b_Mr4+V@3rU6VF z-Npbl3hxJyb0E9#+q1rsb8NtbA;VY9#5A`dt*GTTE6W zRboZOv!w${mDfUz_DM_#HD8MsDgUxYL6HgzWOP7QOscagsZgrR0!^9KK&AMr05dWa z6+pC+a;>8tjRqV8UqxU!8tZHB`K~D}RM^^b9n0OY3|mo6!->WfA>J2h)a`G9u2f4b z$Adw4%(Yc}jmiHjYSLD%REJjMU!gTPbT!akNqb=6x)CKd_j+H|LG|@?`8jKfWDOdCrEf8`%ePfX#ZJAH<@e&G#YSf z*?%q?KcD?q)Y=X9pR-~2vi~GlLm`l_cw#J5BhZt@R@Vs3T9u5zya`x=P-X}6+(ci3 zVj3h3D5gR3Whi#pf;!PfGvQ&d*EDPu?{98@^A^+vT*X)u5K>T0jWr9*{fsp^8a0hI zy)PQzsBEm=6OYSSt1!Y1vAL|Z2gg`!u6=0^U9Sxeo9*G*%Ad<*d(fwm{iiBbGypf) zf8*Z7&i^wSkGA`NkMewV_MetU_8umnmB`k%0*e#oKDHtF5H?^n^Dmlz4&yKD#f|o# zB%mrZ`DYo}0^}P^HwU>nXg2a1V2kK(Y#63}R#?Q<{teMro7$zN9tOC(x`C6S` zJXId9!zvh;88E$N4Nc4y2}adz))tJ|{rga50aSb7-e zfO(H*fdOw8*kEMmp*1n93s9Ds%Ny)n4oz1H#EbD@a%5-&S~qXd0n!26XyLFn zj3(%tZ<+B6P#p{LVXU=MU={2mUSEP~XcdW$tY^h&WY>mY)pofL4wuEUX+Rqxa@i?0 zkZo1T2Ywpqe+dcV>gwOd{IC5{F8}Lfyw(36<@xILKYr&^f%;cX`D3*UbwB$msmE6R zvO9=HegYE2jdZ^hPNwCtS7qBf2Cht1N~>vFoL*FFUdA2C1!|n}-PGc$Kr2?`G};Ok zxjfRWN&`*KP8Yyni94}$JuZJ|b%wOqO=8{2-CTQNFhu7Wx{KE4jRKj|Qcrmii>Z>h zx1d*5T?#R5W&9&P73Kem;^5#NoXz+Z3$<>4+8qBe>5eV=-=B=P`F|ee;rZWh@$y)t z^}_*T?C9x|b&Iz^$0FzF4p$Q{5naV0fFL0=3PR$e6EPvyLa1YkNx1X-??nPqn>wr_ z;}|oVUYm4-)-BNb@%8Igb_ddKfD;N@Kb%~)*uVd1$y<<06bT0sp67sPG>wt}Y!%~h ze&sEYzY1_TKbwanef|6c@>V==_znPVnT-{N9#R?hmXLaj=O3aNiA$T0)BKxlaD!wL z^BW{{o2!RJOraw2F*wujM-?qS&fTOUa^`l#XA=^`!}FvYrnFgIOCWfM@O(j!LC;{M z)@UwZ?B91Z8H~?9ngR){rBduwA4~?}ir;TW;%gMEoQdr}(ukIf;r)g$9XYo4TTCpo zW%IelQNI{Mrqh?%NjX|Q>t|&?($QdQ$rM%kN`VQU zu3i`9GFPWrua^;BYyGxo7flsq7)70%)fB}cqA2NLa*$R!78!Q4KF*;lyh2N+V821@ zeei^@V}2`cuFq|Xo(QfdFNNUs3VBoxaj48ygPAfWCwr~Hu+2fHBq9Nsum8??u-PHZ zx?nhJins?|mWIIlV#_jy1{>&xDD@$!4n#doOB$;vD5{_Cz_)iqpml~OI03?Gbn$2>;@c&w1S6u7R;y*75p<2Woq>BzE9lAiG zG-%BOGKB$`isj4NM3M@)7)2z(l*DV52DpSQln}2UZD#&R!-`M3#4_D%BGArETt-tU}sY{^c1K_mFAVbIZ}ub{BYEl9R0H;>gsnk%VUyafZ9!6_L?t?aBM^Ql5;?ip+<8)Jzhbttvo>`&-wT8L5k>C{aD;ND=dX(Kyt@SVOb8q92 zRjJGfHmv_%Z({5JgYEv`BRzcmYciNCq+}-LF&}OqhZ~4%u*$B24)C%}t zQ8yK6&*QYHXWVL6>dU2taWN&tky|_p31gVZi%{STh`a>WiW5hIw@$vM=-;2 zLJNSK03J)9**^82M*KgXLa&AvxRL*N?ff5ues7!q@ll?<4JKF%8)C`uOZ6qi@cEP| z;r8tNW=_wsYHXhWws|~9Rh7XDyq}4=D{@U_Wn7)t&{?|PZ(oj|3&OX&{6Ft$#Qzf% z-(n9vnEs#h{|_d^$(H{=#^d7ua)|4Q05vO0q`;LZvRM!)^qMSCuWWIk&{mZQDGi@V zC}^bTP?m`XRZo`=R+oM`0g<*~DasP5i%~&;Qq-Z2dov@@(M$ za)=v<0VpTOW@#WxRu&41ro3!WUmPMr&DWZeBBk&13Jk4TE&?iu4+W(_ikz4u^2LQo z+N`Zi`EpM!{x2ueyNJZJ#x~$4{y!Mn`CkU3?foB*^SJmw8)7gcF@Ru>Z&3)Y41=Ik z&m!RSr9={3umT(TKc|Ut{aclVD$X-SUaB&S7l>;!b`jRs1-k(XO;~$+eBTV>0PLzT zlXC(D#V|%d5y-k&Y5xCgeVhEV^}kv`b)0plxVq-Mj&M@!miY$@mQHG z)=H+1K%s|DqX$LlGd12c020q7A5}!m%(0f?XM!kNv-vN2jdWj^STkh zoAkf#uy3#b;r9NQ$9Zb3|DVO^12`osDi5v1BnbH76*%9p@YA^?t6al*$?=~{LgVq*`Q-Ba?EJ+sxXjuH zd_=|hl-=Kd2l}CtPoIw28&>Air@eg;@xzu3w`7o*0-S(^#w45vYY-zwK4VHgpaj5M zg8h77CIIuJl`-*G9>pXCD7?in3706Oot^)U!x;e!N~7fX;J_zd(wSl!!X;*%b0B## zij#u{xocB$u;QGX!q9I^ENzCRt(DY|-F#`Lw0$1!smT9@G(C9d!3a)qP%j762L3-7 zPI|Wgcf8I2{WuTj|8Pag5>o8JAXsxjaC&m_?)>@nyC2TZpS`e$V zQ^fG~&hQ81pTg+G=Z6XT8LRB8w@N5kIzMyZ&aeKOF+b1wU7>y!lc)^0`S7%Iy&Cwe zwwjZm6k}l%(`&n8e0w3i?lWlQwUlX~tbitm=UyIcJbnt~Mu*-k?m|*!IuyopL^;wu zunTT*=riL6hs;(gDr302K!TRHC_W|22*wDs{`wU3y8R)u%u=Bo+?>!cvMn37})Et{*hilH8S4?MD*GB(RP>n_F=0T={8 zUu#T*R7a>ebC#GhKIoCqgVf}`24}ITG+-!hW&`2xP2OPhKz*>DI4Es>L<+Kh5ELg_luKX)kD#{om`^`~So7XsiD{%ELL$ zNf3}bkdP$;JVOy^&EO4c0euUGM9dCN_=Yv#w*W8RoPmT*0zAVW;G!hKC&Qt2>Z?yb99OlK_(^erPNV5w?w_cw6I^n&%*Z^)p5_$pYqGb}AAbNq~ zB^K!=#j0@tGK;o0)y?TTih@!k8JW)V^`zjRkSqS@JazehjBjy(=E#4z^MBpZ#J>Mw zFz9Xfe;(!G{Qo%*u>slO0;MIXeT%yV3W1N9z4D5wu{Z&%1o;&izO8d*h^!oJE+tK) zEN4roIvRD=)juBSl+wa&fp(qRkV(!91>$+)!GKG`9IUUESJqtr(q^r$`~9WD`X7#S z{=dn1yZ`ejPpSTw9s+wf-A{#tZqoa5&XEl|-<5<{s-e9i(EkAjF!WID()|9zG@QEY ze-%XmTB4A`;6+SUQI%bQ4eP((&)xqp>W+uo_5T=;SpQMPrngG}n;&GEb19Z<+Xr*; zy5gG8!E0r)zz5%h1l}SC(kOr)T9Cj;F}Q^>W_pV0>*7u+SwVT;N8>}=i9I({l1E_X>2%iH$IqDn_+fYNP_w<=M6N{xYO&lMy8xGb^m`uAu(+y5_B{D1wN{om_t z&;LBiQ)>UeCBbTmP6LRS*XnlI2lNHp=D{Z$9Ro#`9&=~tPv#$}xBi*7njF0INJwK6 z1SmcULqhqOCrqU;<_eqE|72*N|Co$MTl@b}9=`s$TmsHf1$US(ia%G42~6vDU{<-q zrjrpOScpU2QoxUiIJiPF0@r3h37(EP3a%Xo$t`-VHp9hL2Ht_?#FSwzv97X8prt`G z^a_)py*j$YJ=ed;cdwST2(wBMFYp;5qD7|dG3&1s( zdXUjszRES|^%i&lr={y#P~br2Ue%zbQr#D>;s8!-E#iATjn==+LtRPuS2_QcJO4lF z4z~Hf9_7*2fAOda4v_y=kq4-hZVr^MQ7+t4^VzNE$4@Tw#>#y+B>e0NbwQI_{}^t^bWHUpyPv|Goh`&*t}N`TXk{HI61EN;TV zeEOuPv*WLx7JUERymL9vH+Tz0ebEpHvtR_}3`*6}DWEdTQ5Lp&K|_PF(fZd8WmK^N zH`#yr`(GxL?$-W$lt)|t?ok!&p!j=(Ge2c6;0-*%bsWg09~9HPSy8CsL@t3{TWzq- z!yNTRHev|@ZcV~vC|bDgqf>03KhASs{$Irg-0c6e`TuyE|KpLKV*YR2fVoc%xPBvB z@E-jBfo#HJi1)V(HMj+~VKLTP_MwSj%g?t@(Q|M9U%>~kiT~&G|Br@~?f&nhJP!V! za{deUQt;mfEZ=qoL?~|L3b0B0y4?Y)m1XXLYVFnzOKfPeDEXB)I-3P~ABZmLQ($F& z5F>%ODfb?0^ZZZnG~@roue$gDmn!i;x&8lfZ`9rL|HpWA{+}CFsr(!7tBL{Qmxub9 zP^$#~6wp_wu;&3+(bgm47f171%`bvq%BGCsCZ`f8zbLnAy8f%~{r;s={ttWokGkWn z{r@PBx&Cu@zj{?;)jLA{Qcw>Y<7a}cxX`Oc^_jpc2I&@=;vD5ysg*Qb|1qt+`&(iE zC%68GgZ@_jKgwgQe>tjZ?Z@Tk`;2uT)7pDE=7r9i9D5AIX4|nZ@$^|S2`p<@9#h{$ zRo$ZOSFo=7o6M_z9s4Tn0L{YcSMoht>0fdvjk??T??-v~`oBUR34ON2H73ATm%8;^OaYrO@Cj38A&WI(EM;+-B!`ARP!xwS zI14F?XV5d(aN(809t=e-RHbUvg@`5#LTCf(RMlG4sY)BD`(cFxl}0O^;rS9q zn`e0h??M!J(i#khb9QGK66D2*Rt7JMSA?BO_f7Ipf#<1oGBI0D2{%@t=aE%dLXnX{ zEOpu!jhe{)lP@c>0r@Bj$a;wwF2mL(encU}W{V{zE`@p7W_uFKz<)U`awyBL1%k3(YD4s&kHFe7B zEh5;YT54d|ubLj@aR@E9-KrTr-uH|ET%>d zfDQV8e>kxB|9XS|_WakQJf(`eox1bBsY1&&1|wgnZkW5RZN49|xp4W_Q`KviCM>KD z#=ZlgdQJ0g)fyNJ(lOVe*L{79nL+aQH9eQ4*IUkCBg)`{U(cDxzG%7(;)0f20ynRkS3WlLtX7098cm1=zb;kX3^2 zk2!-?5qUy_`2J`a6dU1xm;zKo{&Qyg8T@~};lw`w(Hm{$|KmJ-|Cfz0_v7>12q+P| zv}$3L2LTy^m|JL08)S28z|@CQy?Q>#xZK%L60KMjdvR=Yb+ow?GL;cKj#DAtV&8*R7SJ21j;8P6i&F@RB&9NhMHZgA)yXGH8Q5rsaa@OTG+5H8WNV~w+K zNoTeS0``~TujkQDyCTqL*BuZ3F})#+$;UmgTf|9Z^!F3+5zJz;{2#as_M}@=d^_eS zX%z6g>e+YD0eifH^2FsYG^$3Yo<*bzu|_TsgW^raJ9i|$VY0utrCP~G%}pZYvGI)2 zEoP(t5+{_z>sNS*DIed0#ut?pfD;sOMdp~hmY0xv3lY|TTeWqi9 zL9HE$L7S26(R-sDV^I%xSZA164^8JgpB9eeN@+o`c^oXTT1;CycMV|8y6n)V$tM4m zmMWn>bjn?(`v3r1K2`K1~513%T}f4TuyTLIW0{|DoVeg9*>KiuB`@+eOe z`Jc{&2Uh^h4cQGEKw5aK0&G=)4Jts4q5yj^an}^z_3&#NLyG2WaiN&#$JQkhGrVvI zJFTGyneZDUL!`mWfb8YIkRZU}{7vMG&)ROddxt%(&iB{ZD%Dn~*ltfz>=jHa^-Ty# z288$06SFx5vRdyyop3A2K=uLpt*oWHBnF*i#Y5d!A-sh+fYTrg2rv*F7w8XKr40WP zet46;7lU7-Dwq%jH9D*-_ND@qf)fE*Z*P^+tup%cD5I72KP@n*t^&9z{&&=~_y7CD zt^faVo(B5gm7EEm!2@JOpUF~BZqu7N)v+e^B}M^)2|AZ&zB-rUcjsK5&MH?RwRUVZ z$gKwXSQ@0E_}oX0d>uYR0s4$;q`uHA=#eXq?y811Sxq(Eq;7U17*ove9W7H9(^Ae6 zEC>3?TAbWuJFm}-%Jsj>I$D9ExK-Qkp|$}~6h3yG&MoUK^sP8Az4_W(0NS}h)`Xa9 zvpn!Dk3h4gr_I${2LSXulq5e9A8A9ykfgvEZJn%`CM8;z2>L(An4;G_EuZM&-&RC7 z3K=g=$SU?s1Tp$;g%WDKW5y|o;aqPD$DZJS8+eb7j$U9VK1WEj0NwEd$gfinQ4eNb zK|Tzvc|fKxXn`lW`1C)#Z@7Z~FGI)qwV&c3%ER9O-|P47_@Dl0us#3xC=b{F#bLZe zJD>Cuj8fe`JwG*FixT`8aH$%fKe<$Vj+b#MKSRllj^g85k~^{r`~0d*0a#~|*-KN! z$V#VYgxZFX$_l(qO$`l&Ja!^VAAHXfEUP4RPf%larK4u^! zG>5liKx$j!$h_Fpptq%0Y{^6udK>lQGX?NK>op&10j>ph1t-*o&qldtbzzY}WNcNR z0#6DxsXq-T{bN3L`2Qk;pX2;TuQ#;s|LP3}+xy=i<@v1qpP#9FSkAwQpw9CbB*y(XPq9?y@fls8iM#W`$HpjKk4Jhqhtv80nY@dzl>3*R2*@38E)xK<5UR}o)m4eE z`(iVmuV$-*@5|2`?^ke&_`i0Dv2b&nGkF7~!RV!jmUHexhd-WnRul(m^tnvD(gIKR z_R6G$*@}&lqTNhXq(f=qt1L3I`oKhO`MhYLjfdTzH1E$-y${5>_)`>9um^U*6E!u2 zv|Fk|Z#Ilh;@Y~z=x3?|OqJiiD;XZ5UKxlJrlc+DknM293mOzRy9dW^P zN7T>)HraoJo*n-=7!J1b|52Wt{bvmF1K5C8!jUp%z$jW(Au#FH)B^K^r5u=3*`XpB zg)~LMgxthjG+SC`I2O=Q*@P^j|1%kr2C7ye>dM-JHDk7>=I4Cs@c-!6`z-#yen0R3 z8*Ssi9_7jL{|mMKNx@sb=M4C!^8-i%o(Zm)|3|mpMt-l1gp0SQr8mSHrU5IRviDu| z8`w>^j5#^{yU0AoU+hU!j#vAD6N zC8}!rysXCg`EN_F=Tp?7&a-bCtLD|4DDS+YLub#Nff=@Doa&xsGB?g+Z}E9{~zVa@&7A6$Pd8$mFu=`o;=7dvSFW} zhqtC1_euIbW7UEK`H=Dqy|r0a>O;0bSLR@r6Z-euE#7&#rgCss6m6oodG!&0V~IDp z0v!TQeAPsp1kyyv$!SpLn$po#Hf9VOKa;Go2K;`b{U?`L_4vQY`}M&4|Gj?h{?C4Y z8~^(_PXYfI7mPiG0FbHC%M1Wns0ODLu}>^{=E>{8X;Xcib~ zn^^{`VO5O-v!$Pn=gPr0(beF(s{Vfj+x=>u2K-;%&rw|rY~24H<@SHa-R=JGqdYnO zF9-QV4D!Q?f%I0F3erF!uO|~!t-NSZUy3D!{OS}GFfSt%z0 zM;)83Z)FJUN{S4^R$$!Yaq|Dp0tHJv4@r#fi(>=-?~d&IKYHWAc$@$AQJ!zW1*8fr0?c12Ppy;Bh$L2QdmD z#kUAVkS?_MF!Xo60U?_6Gv#16iqQ;zK)!Gb{ja?acpV07Ktf)VkpvD(qB@zKE_f!#RQ|LMz<^B2!wy?)VI`uD_9y8e6JQE$+-*ME1|+phn| zc)kIr3#Lp3Wd7G_{I{K*oxh5cOix>4BD9Y>y-sh~`rBU*;NNz>`Q{t&i}B&t-36sl za(r+w$8@opGGTo{;}w$AiRaw$$TEU4I?!tlI-QOIX%Fo7yZwHm8+eSkhh$fL*y zt#%9G(8nI6BnG>`eADkwMwQxvlVpXG16F=-Z^zYP16PL)8h2RV>ac;{VZ-_z=AgXq zqP*Xj@}5O`zmRe{b|=2CZqhkh!a3KQWp4g8Tn2Kisu7coRlj7cdaf4t8n?J>wYXQ- zV!Dn9z+rlSP>doXn^}#5teL%%W_Df8>^5!Yk=4rXy=J6n^602ulSfB;d(CJ2k)uzl z5mC@3hh~=?={?f5#{FlAMOHN&Vk%nSAJ=Prf9xLcLr2>Vo3?Fiw(YR6ZOs@q^nI|3 z1Fj2_6$QTq%=k~p5&;-Rz$Yl-Ogz9h2&m2))Lb2dlGQPGbXK+TDCn$_*;!+)vwD+U zXU$0LS@-6}NT#=QkvwvcTuqD>kUTU=9+i_^Wi|JXs!cXEM7^WKDyvz-uD4ctMi-~);+8y3Kh2QVRz5s=`mW8TLj*d_`NWri85+o zJYR{F%&cAGnv-{2GI?DZTXTiY97kPU>o#Kq-C@1={pU$Q>xjI`o7?;|2Tn;_R7d{-B;#(;XbSoA1)&8me(! zd$_x$&7ZE85%*3TL#PeEKq~7CW@cai156PP=in|T;XGK&4I!V|HBzl% zlSZ;f%y*P#C`O@&5}x^0bY6^>5QhxTNfafbue$Z*UbpLzd!k{kzG}oQdCi{HR~ftP zxBG`p*k$jio*-i7OWIt-FU5z(ZSGoa?&)nFS@Xjqag035CWT-RU_laUvkuKX&bMOc5!5_N@f82QRN4k9^ zAnA?m<@5yK2XIA6fWsTsY7#N-Pl?KTBHG-q<;Y^?ooyZ!S~227<2DbBHjgwzrr+*0 za`E&Ik7_Y=R=%Xo4&gUyEc`~6@Ed8uuix&~c65j~PipDEtb9qE9YSo>Scr`*#x^p9 zShtxFI~>zSFt28IPVaDBOT%U5t2#V-hohS7W>mIr9Q<+A zm_H76mzRK~_h;=L9nt1t%{eqY+ACzlA(yTg1^|bI;@Mi-FQQ}X37*4|Tks4E-E!hX z#c&x zVc9Bhh^S#>5jC_#)KC*qy>{QW!=;@CmN=pC1|`h)#$iHX5O9NI70qMlBeC6-8XAeS zJq{5uY%C%MmWUW?BEo2o#<>;ItO2SqNrXH+!ya$R>86GZTr7Fem?aM^mORi{a!)gS z>P^O)#_y!W_#L=d@}MzG9#|}SV6fzVeU{AIJgR5lPDXA6ci>{fgT`!lV6owW!G?QB z&DuPy+2&zcn;ndH(3sH+S>b9Nm?7zVPY|UzoNE!{GZL$} zU=@KkS3dwB@xw*V&U0|=L1T_RusHU>;MmP}QG1hqtxYgizGT8UxcZ=mU4Gc`$-g9AJut{9}kX*lx`U*mY|+eb=JvH(qpo zYti-1MVITtC?*k#gEgD*s|cVEG=^;$&(q*s+31=Rr|X_Leb-{?H(o4#Yq9jr#nQJJ zfKNQJfl3z$ur|T~WVduM{a^w4-U5hVoFIN(5SwG74DXO}#UM7-A>*Fg-PU)lq<-U- z)XQ~9x41*Jm2`dmKl|Y7`q|kz?}D?7AK?xw^e0xEr37K(quoC$5}ZmvG8F;tgBXS6mh}UNPVqEA z`vCI*bafM@=!t$!#@2T-Hb!<~Pp}V-d%}>V43gdx%?yxnuciR&IRzLa(ADOKLi?!G zA6ac4>uqkh%DXkkxjU)6lQXKh13Gf=fU?HB`m>=zaMbA!t^OS8{n<<*7}ZpQMs6jD z5$I}jLxtd|(;rxE9%^lF==B(l>&>CjxQtg6D*)_6<2LuLHV^bR9~L-Z((AydBIhh) zo-y)qBHLSUQ)M)EZmKZiTh!oc(+(G{uPHL4lDGjfOTFydYP z(NI%3>h!x-fAsYJXr?KQ>Yd79x~|QpX}kt29%lzZ zf+CS#CDm@{Fx~N=E^JTOSpl;uat7wG{2?Ic(I>dg|fOb-IaD zpsPy8dyTOCfg~Q94uc@u8`p!>DFN4~rPJU$`QPkhh94U4w`js1QssRcA9qd-+i$8sqsK#VP<_ohNh+LA^6cth{dV zSiouqZViV=Wx(p`mBZnn1XxW2e%POs0jo(_-=Iv6mBGLHEc8*7@Wdo++RYc9IHwkp zyN+|tyVS#Gr`XfQZJ7u?T}3QdLk~E!9;8=X3S_fG?`f}ChD1+SBDssLm>idC*I2W& z6uTpv40CYmv!Bn;5+9IzI6B>>fHu-USw&0r)HTm;1o*Bi zr--hox9L1|pYb?y?1UXP-3UACSZ=SO-W9fKAws65HlYl_0EaioY5uvKR?U4@CcOil zUZ=;xoSTEgdVzL>Lua7fkz>#5sOgr~ku6&Kg$|H_p5A(=bH*OtdeII8_urek|(j_sj2 zw!IwJO^7^0&TSr%jTnb>fWtJ~w%V9;wV-(L4x0|1b=3FJ9K8Giz?6D#l~A(G_7MX( zMFAHRD*bs!4qr{iG;uN}*QwvehkmUyzmxLeQ=#a5+UoJ>+4WKj82W)6P$^P)AJjZG zHgKOBbDaQgd;oZCMh8tC6ChuXfHq^-LI*>nM1^B$mhiO5Q9$loD&gJO`Z6N;9O_}#HX85%cLhQ_8c zG&YnW_x6w_eMU8<&&Vl##t!Xi+*ErSo7&UZ(4KnE6M9wyhxOFi!O*GBjvd<5xT*GJ z9nc>e+LJp4k=4MON8<+Wqj9b?_l=L-TPNBE;vTdy}n=-fl~%G&3oA!)HEdr+>~_9^O`35K$z$$r8FnviuwAhwEi6YVNnnwW!?xO%BhbSF26{S{^iIE{n-C?QLz;DNoM z$I9EjTM-$-_a68q20)Y*r%~mZJ{-^LW(|!P@Vo^J*Ln^ z?2qd?MEhf>Lv-K@cN#Pdcj7fCRwEDfMpoQ#>emd-?7KrV2d)^WLE{*wffeI4&|{qR zMye3C%$xzCPblAt?D5sjlnp;jNF-dO+7ZzHxSm?nA3F`#fh#I%&^Rh;U`0g@^r)zA z$&Cn8;r~6zRFY$!IHIdU+J*#WztgLR}$K~ z2rSgJUoJhgP(l)dtJ9NL&qWW_JZ{@}AGaM8U#THJG@b^1t9J%k?-a!RUx*8T+RwcJ zM+pKEj49~v1L(tu?@jQuj?8vvKRk7@3h#^Fq~3b#O-f>zdNnr+dSauX$U`qi%STkE zrzIgsD5Pk%3W5Yt=V%lw{DX$qgz%a@Yc%@$XxMwvrzBbf{DC`2q$1zR?SoPRyaf(? zky78`M;^Fhrv?pUr+7_!;q{6eBXu(-(D+ES|MBCMT2w;5AbRWWKZofBQ~ZIlGe z@hu9)R#LC#HcHREjWTdWQ4JbKQL&mwR`+!E?wMF){r_Jj6htw(#XbUeFy_mPH{M$; zi4SHFi|sVHq9j7`5+@0l{=6qf^(>m+$Z63G906Q|rU6`oj-|jJ>D`d`S2N4*7RHRH z$Y~)g8X69+c+kdhFilRw1MK`jW$@*Owf2?4&_vZ@6O7ooRfU_D0vZ(eW_5 zN2HvNuFJ0LHn!`!mR;A??7Hre2=H}~QoLTejg6YFWz=*vqh z%@o&iGK$s7#>ua`_MnWbkx{G%HO|dsrDp18dJrSSWlgy9BQ;Eql+M$kNz0%bEiOLN zoQ;@d^sA9kENL327P2x6bu&p*PKJw>-RB5a&z>dS&9qDy$wjkOd}u<=#FBdgl156; zzU*}gZxG;7`?j+pK{VlqJH;7oau@QWn_BGt(NQh??C8j0o=se0chXqwPAsuIvBj?Y zvJk^WJF2(;eB|1Gp18#Mq_H@kSmJzQi}Rl2c*Y%$(R>ACpWg$guq zT+}yOzPx7FqF!IXxjYcz>PDRXdwX#%;|1CLgcRH%;FIt>$~O#l*NE-`vZ8>@hTf15aN%5zCxI6Z?8R!TU1z~M`o+uBOR&UoEQfYf z>+sCc=+JSkufK`{?6Ik%IFTn~2>DSwOQUmjpGz%iu9cYGXXqqddy-~1m5M4>*O67s zR8Ql65MKWh&7e4J_r2WOmgzAAxMtFy5+yLxWJ6+^B}_3$u#Y^}2r(YD!b6T+7g
    KPcWi?AjRt8dcO>Kj{^;Y=)xFUwY} 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 literal 0 HcmV?d00001 diff --git a/enterprise/vaultwarden/17.0.0/ci/default-values.yaml b/enterprise/vaultwarden/17.0.0/ci/default-values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/enterprise/vaultwarden/17.0.0/ci/ingress-values.yaml b/enterprise/vaultwarden/17.0.0/ci/ingress-values.yaml new file mode 100644 index 00000000000..961f466bd75 --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/ci/ingress-values.yaml @@ -0,0 +1,7 @@ +# -- Configure the ingresses for the chart here. +# Additional ingresses can be added by adding a dictionary key similar to the 'main' ingress. +# @default -- See below +ingress: + main: + # -- Enables or disables the ingress + enabled: true diff --git a/enterprise/vaultwarden/17.0.0/ix_values.yaml b/enterprise/vaultwarden/17.0.0/ix_values.yaml new file mode 100644 index 00000000000..66fcab86267 --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/ix_values.yaml @@ -0,0 +1,159 @@ +image: + repository: tccr.io/truecharts/vaultwarden + pullPolicy: IfNotPresent + tag: 1.25.2@sha256:ec34588ef04cfdf79cdbb0f90882b3073d8baa39d9aaf8aa86abbb263049f8eb + +service: + main: + ports: + main: + port: 10102 + targetPort: 8080 + ws: + enabled: true + ports: + ws: + enabled: true + port: 3012 + targetPort: 3012 + +env: + DOMAIN: "https://{{ if .Values.ingress }}{{ if .Values.ingress.main.enabled }}{{ ( index .Values.ingress.main.hosts 0 ).host }}{{ else }}placeholder.com{{ end }}{{ else }}placeholder.com{{ end }}" + DATABASE_URL: + secretKeyRef: + name: dbcreds + key: url + +envFrom: + - configMapRef: + name: vaultwardenconfig + - secretRef: + name: vaultwardensecret + +database: + # -- Database type, + # must be one of: 'sqlite', 'mysql' or 'postgresql'. + type: postgresql + # -- Enable DB Write-Ahead-Log for SQLite, + # disabled for other databases. https://github.com/dani-garcia/bitwarden_rs/wiki/Running-without-WAL-enabled + wal: true + ## URL for external databases (mysql://user:pass@host:port or postgresql://user:pass@host:port). + # url: "" + ## Set the size of the database connection pool. + # maxConnections: 10 + ## Connection retries during startup, 0 for infinite. 1 second between retries. + # retries: 15 + +# Set Bitwarden_rs application variables +vaultwarden: + # -- Allow any user to sign-up + # see: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-registration-of-new-users + allowSignups: true + ## Whitelist domains allowed to sign-up. 'allowSignups' is ignored if set. + # signupDomains: + # - domain.tld + # -- Verify e-mail before login is enabled. + # SMTP must be enabled. + verifySignup: false + # When a user logs in an email is required to be sent. If sending the email fails the login attempt will fail. SMTP must be enabled. + requireEmail: false + ## Maximum attempts before an email token is reset and a new email will need to be sent. + # emailAttempts: 3 + ## Email token validity in seconds. + # emailTokenExpiration: 600 + # Allow invited users to sign-up even feature is disabled: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-invitations + allowInvitation: true + # Show password hints: https://github.com/dani-garcia/bitwarden_rs/wiki/Password-hint-display + ## Default organization name in invitation e-mails that are not coming from a specific organization. + # defaultInviteName: "" + showPasswordHint: true + # Enable Websockets for notification. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-WebSocket-notifications + # Redirect HTTP path "/notifications/hub" to port 3012. Ingress/IngressRoute controllers are automatically configured. + enableWebsockets: true + # Enable Web Vault (static content). https://github.com/dani-garcia/bitwarden_rs/wiki/Disabling-or-overriding-the-Vault-interface-hosting + enableWebVault: true + # Restrict creation of orgs. Options are: 'all', 'none' or a comma-separated list of users. + orgCreationUsers: all + ## Limit attachment disk usage per organization. + # attachmentLimitOrg: + ## Limit attachment disk usage per user. + # attachmentLimitUser: + ## HaveIBeenPwned API Key. Can be purchased at https://haveibeenpwned.com/API/Key. + # hibpApiKey: + + admin: + # Enable admin portal. + enabled: false + # Disabling the admin token will make the admin portal accessible to anyone, use carefully: https://github.com/dani-garcia/bitwarden_rs/wiki/Disable-admin-token + disableAdminToken: false + ## Token for admin login, will be generated if not defined. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-admin-page + # token: + + # Enable SMTP. https://github.com/dani-garcia/bitwarden_rs/wiki/SMTP-configuration + smtp: + enabled: false + # SMTP hostname, required if SMTP is enabled. + host: "" + # SMTP sender e-mail address, required if SMTP is enabled. + from: "" + ## SMTP sender name, defaults to 'Bitwarden_RS'. + # fromName: "" + ## Enable SSL connection. + # ssl: true + ## SMTP port. Defaults to 25 without SSL, 587 with SSL. + # port: 587 + ## SMTP Authentication Mechanisms. Comma-separated options: 'Plain', 'Login' and 'Xoauth2'. Defaults to 'Plain'. + # authMechanism: Plain + ## Hostname to be sent for SMTP HELO. Defaults to pod name. + # heloName: "" + ## SMTP timeout. + # timeout: 15 + ## Accept SSL session if certificate is valid but hostname doesn't match. DANGEROUS, vulnerable to men-in-the-middle attacks! + # invalidHostname: false + ## Accept invalid certificates. DANGEROUS, vulnerable to men-in-the-middle attacks! + # invalidCertificate: false + ## SMTP username. + # user: "" + ## SMTP password. Required is user is specified, ignored if no user provided. + # password: "" + + ## Enable Yubico OTP authentication. https://github.com/dani-garcia/bitwarden_rs/wiki/Enabling-Yubikey-OTP-authentication + yubico: + enabled: false + ## Yubico server. Defaults to YubiCloud. + # server: + ## Yubico ID and Secret Key. + # clientId: + # secretKey: + + ## Logging options. https://github.com/dani-garcia/bitwarden_rs/wiki/Logging + log: + # Log to file. + file: "" + # Log level. Options are "trace", "debug", "info", "warn", "error" or "off". + level: "trace" + ## Log timestamp format. See https://docs.rs/chrono/0.4.15/chrono/format/strftime/index.html. Defaults to time in milliseconds. + # timeFormat: "" + + icons: + # Disables download of external icons. Setting to true will still serve icons from cache (/data/icon_cache). TTL will default to zero. + disableDownload: false + ## Cache time-to-live for icons fetched. 0 means no purging. + # cache: 2592000 + ## Cache time-to-live for icons that were not available. 0 means no purging. + # cacheFailed: 259200 + +persistence: + data: + enabled: true + mountPath: "/data" + +# Enabled postgres +postgresql: + enabled: true + existingSecret: "dbcreds" + postgresqlUsername: vaultwarden + postgresqlDatabase: vaultwarden + +portal: + enabled: true diff --git a/enterprise/vaultwarden/17.0.0/questions.yaml b/enterprise/vaultwarden/17.0.0/questions.yaml new file mode 100644 index 00000000000..1b0ea25d73a --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/questions.yaml @@ -0,0 +1,2980 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: Controller + description: Configure Workload Deployment + - name: Container Configuration + description: Additional Container Configuration + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + admin: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "/admin/" +questions: + - variable: global + label: Global Settings + group: Controller + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - variable: controller + group: Controller + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: Show Advanced Controller Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: Please specify type of workload to deploy + label: (Advanced) Controller Type + schema: + type: string + required: true + enum: + - value: deployment + description: Deployment + - value: statefulset + description: Statefulset + - value: daemonset + description: Daemonset + default: deployment + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: strategy + description: Please specify type of workload to deploy + label: (Advanced) Update Strategy + schema: + type: string + required: true + enum: + - value: Recreate + description: "Recreate: Kill existing pods before creating new ones" + - value: RollingUpdate + description: "RollingUpdate: Create new pods and then kill old ones" + - value: OnDelete + description: "(Legacy) OnDelete: ignore .spec.template changes" + default: Recreate + - variable: expert + label: Show Expert Configuration Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Controller Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Controller Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: customextraargs + group: Controller + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: Container Configuration + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: Container Configuration + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: expertpodconf + group: Container Configuration + label: Show Expert Configuration + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: Enable TTY + description: Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled. + group: Workload Details + schema: + type: boolean + default: false + - variable: stdin + label: Enable STDIN + description: Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled. + group: Workload Details + schema: + type: boolean + default: false + - variable: termination + group: Container Configuration + label: Termination settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: Grace Period Seconds + schema: + type: int + default: 10 + - variable: podLabelsList + group: Container Configuration + label: Pod Labels + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: podAnnotationsList + group: Container Configuration + label: Pod Annotations + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: vaultwarden + label: "" + group: "App Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: yubico + label: "Yubico OTP authentication" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Yubico OTP authentication" + description: "Please refer to the manual at: https://github.com/dani-garcia/vaultwarden/wiki/Enabling-Yubikey-OTP-authentication" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: server + label: "Yubico server" + description: "Defaults to YubiCloud" + schema: + type: string + default: "" + - variable: clientId + label: "Yubico ID" + schema: + type: string + default: "" + - variable: secretKey + label: "Yubico Secret Key" + schema: + type: string + default: "" + - variable: admin + label: "Admin Portal" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Admin Portal" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: disableAdminToken + label: "Make Accessible Without Password/Token" + schema: + type: boolean + default: false + - variable: token + label: "Admin Portal Password/Token" + description: "Will be automatically generated if not defined" + schema: + type: string + default: "" + - variable: icons + label: "Icon Download Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: disableDownload + label: "Disable Icon Download" + description: "Disables download of external icons. Setting to true will still serve icons from cache (/data/icon_cache)" + schema: + type: boolean + default: false + - variable: cache + label: "Cache time-to-live" + description: "Cache time-to-live for icons fetched. 0 means no purging" + schema: + type: int + default: 2592000 + - variable: token + label: "Failed Downloads Cache time-to-live" + description: "Cache time-to-live for icons that were not available. 0 means no purging." + schema: + type: int + default: 2592000 + - variable: log + label: "Logging" + schema: + additional_attrs: true + type: dict + attrs: + - variable: level + label: "Log level" + schema: + type: string + default: "info" + required: true + enum: + - value: "trace" + description: "trace" + - value: "debug" + description: "debug" + - value: "info" + description: "info" + - value: "warn" + description: "warn" + - value: "error" + description: "error" + - value: "off" + description: "off" + - variable: file + label: "Log-File Location" + schema: + type: string + default: "" + - variable: smtp + label: "SMTP Settings (Email)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable SMTP Support" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: host + label: "SMTP hostname" + schema: + type: string + required: true + default: "" + - variable: from + label: "SMTP sender e-mail address" + schema: + type: string + required: true + default: "" + - variable: fromName + label: "SMTP sender name" + schema: + type: string + required: true + default: "" + - variable: user + label: "SMTP username" + schema: + type: string + required: true + default: "" + - variable: password + label: "SMTP password" + description: "Required is user is specified, ignored if no user provided" + schema: + type: string + default: "" + - variable: ssl + label: "Enable SSL connection" + schema: + type: boolean + default: true + - variable: port + label: "SMTP port" + description: "Usually: 25 without SSL, 587 with SSL" + schema: + type: int + default: 587 + - variable: authMechanism + label: "SMTP Authentication Mechanisms" + description: "Comma-separated options: Plain, Login and Xoauth2" + schema: + type: string + default: "Plain" + - variable: heloName + label: "SMTP HELO - Hostname" + description: "Hostname to be sent for SMTP HELO. Defaults to pod name" + schema: + type: string + default: "" + - variable: timeout + label: "SMTP timeout" + schema: + type: int + default: 15 + - variable: invalidHostname + label: "Accept Invalid Hostname" + description: "Accept SSL session if certificate is valid but hostname doesn't match. DANGEROUS, vulnerable to men-in-the-middle attacks!" + schema: + type: boolean + default: false + - variable: invalidCertificate + label: "Accept Invalid Certificate" + description: "Accept invalid certificates. DANGEROUS, vulnerable to men-in-the-middle attacks!" + schema: + type: boolean + default: false + - variable: allowSignups + label: "Allow Signup" + description: "Allow any user to sign-up: https://github.com/dani-garcia/vaultwarden/wiki/Disable-registration-of-new-users" + schema: + type: boolean + default: true + - variable: allowInvitation + label: "Always allow Invitation" + description: "Allow invited users to sign-up even feature is disabled: https://github.com/dani-garcia/vaultwarden/wiki/Disable-invitations" + schema: + type: boolean + default: true + - variable: defaultInviteName + label: "Default Invite Organisation Name" + description: "Default organization name in invitation e-mails that are not coming from a specific organization." + schema: + type: string + default: "" + - variable: showPasswordHint + label: "Show password hints" + description: "https://github.com/dani-garcia/vaultwarden/wiki/Password-hint-display" + schema: + type: boolean + default: true + - variable: signupwhitelistenable + label: "Enable Signup Whitelist" + description: "allowSignups is ignored if set" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: signupDomains + label: "Signup Whitelist Domains" + schema: + type: list + default: [] + items: + - variable: domain + label: "Domain" + schema: + type: string + default: "" + - variable: verifySignup + label: "Verifiy Signup" + description: "Verify e-mail before login is enabled. SMTP must be enabled" + schema: + type: boolean + default: false + - variable: requireEmail + label: "Block Login if email fails" + description: "When a user logs in an email is required to be sent. If sending the email fails the login attempt will fail. SMTP must be enabled" + schema: + type: boolean + default: false + - variable: emailAttempts + label: "Email token reset attempts" + description: "Maximum attempts before an email token is reset and a new email will need to be sent" + schema: + type: int + default: 3 + - variable: emailTokenExpiration + label: "Email token validity in seconds" + schema: + type: int + default: 600 + - variable: enableWebVault + label: "Enable Webvault" + description: "Enable Web Vault (static content). https://github.com/dani-garcia/vaultwarden/wiki/Disabling-or-overriding-the-Vault-interface-hosting" + schema: + type: boolean + default: true + - variable: orgCreationUsers + label: "Limit Organisation Creation to (users)" + description: "Restrict creation of orgs. Options are: 'all', 'none' or a comma-separated list of users." + schema: + type: string + default: "all" + - variable: attachmentLimitOrg + label: "Limit Attachment Disk Usage per Organisation" + schema: + type: string + default: "" + - variable: attachmentLimitUser + label: "Limit Attachment Disk Usage per User" + schema: + type: string + default: "" + - variable: hibpApiKey + label: "HaveIBeenPwned API Key" + description: "Can be purchased at https://haveibeenpwned.com/API/Key" + schema: + type: string + default: "" + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10102 + required: true + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enable the Port + schema: + type: boolean + hidden: true + default: true + - variable: protocol + label: Port Type + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: nodePort + label: Node Port (Optional) + description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 8080 + - variable: ws + label: "WebSocket Service" + description: "WebSocket Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ws + label: "WebSocket Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 3012 + required: true + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enable the Port + schema: + type: boolean + hidden: true + default: true + - variable: protocol + label: Port Type + schema: + type: string + default: HTTP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: nodePort + label: Node Port (Optional) + description: This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 3012 + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: Networking and Services + label: Host-Networking (Complicated) + schema: + type: boolean + default: false + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: dnsPolicy + group: Networking and Services + label: dnsPolicy + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ClusterFirst + description: ClusterFirst + - value: ClusterFirstWithHostNet + description: ClusterFirstWithHostNet + - value: None + description: None + - variable: dnsConfig + label: DNS Configuration + group: Networking and Services + description: Specify custom DNS configuration which will be applied to the pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: Name Servers + schema: + default: [] + type: list + items: + - variable: nameserver + label: Name Server + schema: + type: string + - variable: options + label: Options + schema: + default: [] + type: list + items: + - variable: option + label: Option Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: searches + label: Searches + schema: + default: [] + type: list + items: + - variable: search + label: Search Entry + schema: + type: string + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: simplePVC + enum: + - value: simplePVC + description: PVC (simple) + - value: simpleHP + description: Host Path (simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 999Gi + - variable: hostPathType + label: (Advanced) hostPath Type + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: DirectoryOrCreate + description: DirectoryOrCreate + - value: Directory + description: Directory + - value: FileOrCreate + description: FileOrCreate + - value: File + description: File + - value: Socket + description: Socket + - value: CharDevice + description: CharDevice + - value: BlockDevice + description: BlockDevice + - variable: storageClass + label: (Advanced) storageClass + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: SCALE-ZFS + - variable: accessMode + label: (Advanced) Access Mode + description: Allow or disallow multiple PVC's writhing to the same PV + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: ReadWriteOnce + enum: + - value: ReadWriteOnce + description: ReadWriteOnce + - value: ReadOnlyMany + description: ReadOnlyMany + - value: ReadWriteMany + description: ReadWriteMany + - variable: advanced + label: Show Advanced Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name (Optional) + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: simpleHP + enum: + - value: simplePVC + description: PVC (Simple) + - value: simpleHP + description: Host Path (Simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 999Gi + - variable: hostPathType + label: (Advanced) Host Path Type + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: DirectoryOrCreate + description: DirectoryOrCreate + - value: Directory + description: Directory + - value: FileOrCreate + description: FileOrCreate + - value: File + description: File + - value: Socket + description: Socket + - value: CharDevice + description: CharDevice + - value: BlockDevice + description: BlockDevice + - variable: storageClass + label: (Advanced) StorageClass + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: SCALE-ZFS + - variable: accessMode + label: (Advanced) Access Mode + description: Allow or disallow multiple PVC's writhing to the same PV + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: ReadWriteOnce + enum: + - value: ReadWriteOnce + description: ReadWriteOnce + - value: ReadOnlyMany + description: ReadOnlyMany + - value: ReadWriteMany + description: ReadWriteMany + - variable: advanced + label: Show Advanced Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: expert + label: Show Expert Configuration Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: These middlewares enforce a number of best practices. + label: Enable Default Middlewares + schema: + type: boolean + default: true + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - variable: advancedSecurity + label: Show Advanced Security Settings + group: Security and Permissions + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: capabilities + label: Capabilities + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: Drop Capability + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: Add Capability + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + - variable: podSecurityContext + group: Security and Permissions + label: Pod Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + + - variable: advancedresources + label: Set Custom Resource Limits/Requests (Advanced) + group: Resources and Devices + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: autoscaling +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: Advanced +# label: (Advanced) Network Policy +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: Policy Type +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: Default +# - value: ingress +# description: Ingress +# - value: egress +# description: Egress +# - value: ingress-egress +# description: Ingress and Egress +# - variable: egress +# label: Egress +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: To +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: IP Block +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: CIDR +# schema: +# type: string +# default: "" +# - variable: except +# label: Except +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: Namespace Selector +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: Ports +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: Port +# schema: +# type: int +# - variable: endPort +# label: End Port +# schema: +# type: int +# - variable: protocol +# label: Protocol +# schema: +# type: string +# default: TCP +# enum: +# - value: TCP +# description: TCP +# - value: UDP +# description: UDP +# - value: SCTP +# description: SCTP +# - variable: ingress +# label: Ingress +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: From +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: IP Block +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: CIDR +# schema: +# type: string +# default: "" +# - variable: except +# label: Except +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: Namespace Selector +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: Ports +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: Port +# schema: +# type: int +# - variable: endPort +# label: End Port +# schema: +# type: int +# - variable: protocol +# label: Protocol +# schema: +# type: string +# default: TCP +# enum: +# - value: TCP +# description: TCP +# - value: UDP +# description: UDP +# - value: SCTP +# description: SCTP + + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: Sock5 Server + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: promtail + label: Promtail + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: Loki URL + schema: + type: string + required: true + - variable: logs + label: Log Paths + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: path + label: Path + schema: + type: string + required: true + - variable: args + label: Promtail Command Line Arguments + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + required: true + - variable: envList + label: Promtail Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
    https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/docs/about/sponsor + description: Please consider supporting TrueCharts, see +
    https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/enterprise/vaultwarden/17.0.0/templates/_configmap.tpl b/enterprise/vaultwarden/17.0.0/templates/_configmap.tpl new file mode 100644 index 00000000000..8809925abdf --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/templates/_configmap.tpl @@ -0,0 +1,116 @@ +{{/* Define the configmap */}} +{{- define "vaultwarden.configmap" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: vaultwardenconfig +data: + ROCKET_PORT: "8080" + SIGNUPS_ALLOWED: {{ .Values.vaultwarden.allowSignups | quote }} + {{- if .Values.vaultwarden.signupDomains }} + SIGNUPS_DOMAINS_WHITELIST: {{ join "," .Values.vaultwarden.signupDomains | quote }} + {{- end }} + {{- if and (eq .Values.vaultwarden.verifySignup true) (eq .Values.vaultwarden.smtp.enabled false) }}{{ required "Signup verification requires SMTP to be enabled" nil}}{{end}} + SIGNUPS_VERIFY: {{ .Values.vaultwarden.verifySignup | quote }} + {{- if and (eq .Values.vaultwarden.requireEmail true) (eq .Values.vaultwarden.smtp.enabled false) }}{{ required "Requiring emails for login depends on SMTP" nil}}{{end}} + REQUIRE_DEVICE_EMAIL: {{ .Values.vaultwarden.requireEmail | quote }} + {{- if .Values.vaultwarden.emailAttempts }} + EMAIL_ATTEMPTS_LIMIT: {{ .Values.vaultwarden.emailAttempts | quote }} + {{- end }} + {{- if .Values.vaultwarden.emailTokenExpiration }} + EMAIL_EXPIRATION_TIME: {{ .Values.vaultwarden.emailTokenExpiration | quote }} + {{- end }} + INVITATIONS_ALLOWED: {{ .Values.vaultwarden.allowInvitation | quote }} + {{- if .Values.vaultwarden.defaultInviteName }} + INVITATION_ORG_NAME: {{ .Values.vaultwarden.defaultInviteName | quote }} + {{- end }} + SHOW_PASSWORD_HINT: {{ .Values.vaultwarden.showPasswordHint | quote }} + WEBSOCKET_ENABLED: {{ .Values.vaultwarden.enableWebsockets | quote }} + WEB_VAULT_ENABLED: {{ .Values.vaultwarden.enableWebVault | quote }} + ORG_CREATION_USERS: {{ .Values.vaultwarden.orgCreationUsers | quote }} + {{- if .Values.vaultwarden.attachmentLimitOrg }} + ORG_ATTACHMENT_LIMIT: {{ .Values.vaultwarden.attachmentLimitOrg | quote }} + {{- end }} + {{- if .Values.vaultwarden.attachmentLimitUser }} + USER_ATTACHMENT_LIMIT: {{ .Values.vaultwarden.attachmentLimitUser | quote }} + {{- end }} + {{- if .Values.vaultwarden.hibpApiKey }} + HIBP_API_KEY: {{ .Values.vaultwarden.hibpApiKey | quote }} + {{- end }} + {{- include "vaultwarden.dbTypeValid" . }} + {{- if .Values.database.retries }} + DB_CONNECTION_RETRIES: {{ .Values.database.retries | quote }} + {{- end }} + {{- if .Values.database.maxConnections }} + DATABASE_MAX_CONNS: {{ .Values.database.maxConnections | quote }} + {{- end }} + {{- if eq .Values.vaultwarden.smtp.enabled true }} + SMTP_HOST: {{ required "SMTP host is required to enable SMTP" .Values.vaultwarden.smtp.host | quote }} + SMTP_FROM: {{ required "SMTP sender address ('from') is required to enable SMTP" .Values.vaultwarden.smtp.from | quote }} + {{- if .Values.vaultwarden.smtp.fromName }} + SMTP_FROM_NAME: {{ .Values.vaultwarden.smtp.fromName | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.ssl }} + SMTP_SSL: {{ .Values.vaultwarden.smtp.ssl | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.port }} + SMTP_PORT: {{ .Values.vaultwarden.smtp.port | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.authMechanism }} + SMTP_AUTH_MECHANISM: {{ .Values.vaultwarden.smtp.authMechanism | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.heloName }} + HELO_NAME: {{ .Values.vaultwarden.smtp.heloName | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.timeout }} + SMTP_TIMEOUT: {{ .Values.vaultwarden.smtp.timeout | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.invalidHostname }} + SMTP_ACCEPT_INVALID_HOSTNAMES: {{ .Values.vaultwarden.smtp.invalidHostname | quote }} + {{- end }} + {{- if .Values.vaultwarden.smtp.invalidCertificate }} + SMTP_ACCEPT_INVALID_CERTS: {{ .Values.vaultwarden.smtp.invalidCertificate | quote }} + {{- end }} + {{- end }} + {{- if .Values.vaultwarden.log.file }} + LOG_FILE: {{ .Values.vaultwarden.log.file | quote }} + {{- end }} + {{- if or .Values.vaultwarden.log.level .Values.vaultwarden.log.timeFormat }} + EXTENDED_LOGGING: "true" + {{- end }} + {{- if .Values.vaultwarden.log.level }} + {{- include "vaultwarden.logLevelValid" . }} + LOG_LEVEL: {{ .Values.vaultwarden.log.level | quote }} + {{- end }} + {{- if .Values.vaultwarden.log.timeFormat }} + LOG_TIMESTAMP_FORMAT: {{ .Values.vaultwarden.log.timeFormat | quote }} + {{- end }} + {{- if .Values.vaultwarden.icons.disableDownload }} + DISABLE_ICON_DOWNLOAD: {{ .Values.vaultwarden.icons.disableDownload | quote }} + {{- if and (not .Values.vaultwarden.icons.cache) (eq .Values.vaultwarden.icons.disableDownload "true") }} + ICON_CACHE_TTL: "0" + {{- end }} + {{- end }} + {{- if .Values.vaultwarden.icons.cache }} + ICON_CACHE_TTL: {{ .Values.vaultwarden.icons.cache | quote }} + {{- end }} + {{- if .Values.vaultwarden.icons.cacheFailed }} + ICON_CACHE_NEGTTL: {{ .Values.vaultwarden.icons.cacheFailed | quote }} + {{- end }} + {{- if eq .Values.vaultwarden.admin.enabled true }} + {{- if eq .Values.vaultwarden.admin.disableAdminToken true }} + DISABLE_ADMIN_TOKEN: "true" + {{- end }} + {{- end }} + {{- if eq .Values.vaultwarden.yubico.enabled true }} + {{- if .Values.vaultwarden.yubico.server }} + YUBICO_SERVER: {{ .Values.vaultwarden.yubico.server | quote }} + {{- end }} + {{- end }} + {{- if eq .Values.database.type "sqlite" }} + ENABLE_DB_WAL: {{ .Values.database.wal | quote }} + {{- else }} + ENABLE_DB_WAL: "false" + {{- end }} +{{- end -}} diff --git a/enterprise/vaultwarden/17.0.0/templates/_secrets.tpl b/enterprise/vaultwarden/17.0.0/templates/_secrets.tpl new file mode 100644 index 00000000000..ca5ec74b0af --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/templates/_secrets.tpl @@ -0,0 +1,36 @@ +{{/* Define the secrets */}} +{{- define "vaultwarden.secrets" -}} + +{{- $adminToken := "" }} +{{- if eq .Values.vaultwarden.admin.enabled true }} +{{- $adminToken = .Values.vaultwarden.admin.token | default (randAlphaNum 48) | b64enc | quote }} +{{- end -}} + +{{- $smtpUser := "" }} +{{- if and (eq .Values.vaultwarden.smtp.enabled true ) (.Values.vaultwarden.smtp.user) }} +{{- $smtpUser = .Values.vaultwarden.smtp.user | b64enc | quote }} +{{- end -}} + +{{- $yubicoClientId := "" }} +{{- if eq .Values.vaultwarden.yubico.enabled true }} +{{- $yubicoClientId = required "Yubico Client ID required" .Values.vaultwarden.yubico.clientId | toString | b64enc | quote }} +{{- end -}} +--- + +apiVersion: v1 +kind: Secret +metadata: + name: vaultwardensecret +data: + {{- if ne $adminToken "" }} + ADMIN_TOKEN: {{ $adminToken }} + {{- end }} + {{- if ne $smtpUser "" }} + SMTP_USERNAME: {{ $smtpUser }} + SMTP_PASSWORD: {{ required "Must specify SMTP password" .Values.vaultwarden.smtp.password | b64enc | quote }} + {{- end }} + {{- if ne $yubicoClientId "" }} + YUBICO_CLIENT_ID: {{ $yubicoClientId }} + YUBICO_SECRET_KEY: {{ required "Yubico Secret Key required" .Values.vaultwarden.yubico.secretKey | b64enc | quote }} + {{- end }} +{{- end -}} diff --git a/enterprise/vaultwarden/17.0.0/templates/_validate.tpl b/enterprise/vaultwarden/17.0.0/templates/_validate.tpl new file mode 100644 index 00000000000..e4832c2f6e5 --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/templates/_validate.tpl @@ -0,0 +1,17 @@ +{{/* +Ensure valid DB type is select, defaults to SQLite +*/}} +{{- define "vaultwarden.dbTypeValid" -}} +{{- if not (or (eq .Values.database.type "postgresql") (eq .Values.database.type "mysql") (eq .Values.database.type "sqlite")) }} +{{- required "Invalid database type" nil }} +{{- end -}} +{{- end -}} + +{{/* +Ensure log type is valid +*/}} +{{- define "vaultwarden.logLevelValid" -}} +{{- if not (or (eq .Values.vaultwarden.log.level "trace") (eq .Values.vaultwarden.log.level "debug") (eq .Values.vaultwarden.log.level "info") (eq .Values.vaultwarden.log.level "warn") (eq .Values.vaultwarden.log.level "error") (eq .Values.vaultwarden.log.level "off")) }} +{{- required "Invalid log level" nil }} +{{- end }} +{{- end }} diff --git a/enterprise/vaultwarden/17.0.0/templates/common.yaml b/enterprise/vaultwarden/17.0.0/templates/common.yaml new file mode 100644 index 00000000000..577816b14ce --- /dev/null +++ b/enterprise/vaultwarden/17.0.0/templates/common.yaml @@ -0,0 +1,39 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.common.loader.init" . }} + + +{{/* Render configmap for vaultwarden */}} +{{- include "vaultwarden.configmap" . }} + +{{/* Render secrets for vaultwarden */}} +{{- include "vaultwarden.secrets" . }} + +{{/* Define path for websocket */}} +{{- define "vaultwarden.websocket" -}} +{{- $fullname := include "tc.common.names.fullname" . -}} +path: "/notifications/hub" +# -- Ignored if not kubeVersion >= 1.14-0 +pathType: Prefix +service: + # -- Overrides the service name reference for this path + name: {{ printf "%s-ws" $fullname }} + port: {{ .Values.service.ws.ports.ws.port }} +{{- end -}} + +{{/* inject websocket path to all main ingress hosts*/}} +{{- define "vaultwarden.websocketinjector" -}} +{{- $path := list (include "vaultwarden.websocket" . | fromYaml) -}} +{{- if .Values.ingress.main.enabled }} +{{- range .Values.ingress.main.hosts }} +{{- $newpaths := list }} +{{- $newpaths := concat .paths $path }} +{{- $_ := set . "paths" ( deepCopy $newpaths ) -}} +{{- end }} +{{- end }} +{{- end -}} + +{{/* inject websocket paths in ingress */}} +{{- include "vaultwarden.websocketinjector" . }} + +{{/* Render the templates */}} +{{ include "tc.common.loader.apply" . }} diff --git a/enterprise/vaultwarden/17.0.0/values.yaml b/enterprise/vaultwarden/17.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d