Compare commits

..

1 Commits

Author SHA1 Message Date
LeeW c0708a09cc ADP-216: updates README from UAT feedback 1 year ago

@ -5,28 +5,11 @@ Purpose: Manage gpg keys for:
# Key Management # Key Management
* Role: New User: new key to be added; can be a new employee being added for first time, existing employee getting access to a new repo, key rotation, etc Roles:
* Role: Existing User: user who already has access to the appropriate project
* Definition: List of all users: [verify/.sops.yaml](verify/.sops.yaml)
* Keys Repository: This Git Repository (`communication-keys`), manages public keys and configuration in Project Repositories
* Project Repository: Git Repository for each Project which contains SOPS-Encrypted secrets, e.g. for GitOps Deployments using Helm Files
# Playbook for Configuring Access for New Users
## Overview: * New User: new key to be added; can be a new employee being added for first time, existing employee getting access to a new repo, key rotation, etc
* Existing User: user who already has access to the appropriate project
1. In the Keys Repo (`communication-keys`): * Definition: List of all users: [verify/.sops.yaml](verify/.sops.yaml)
1. New User creates,adds GPG Key
1. Existing User configures groups
1. Existing User configures verification SOPS Config
1. New User installs SOPS
1. New User verifies SOPS installation using verification SOPS Config
1. **Status**: New User has working key, working sops installation. Caveat: No access to secrets in other repos yet
1. In the Project Repo
1. Existing User adds New User Key to SOPS Config, Secrets Files
1. New User verifies access
1. **Status**: New User has access to SOPS-encrypted secrets within Project Repo
## 1a. Onboarding: [New User]: create and add a gpg key ## 1a. Onboarding: [New User]: create and add a gpg key
1. Clone this repository 1. Clone this repository
@ -37,26 +20,38 @@ Purpose: Manage gpg keys for:
- CAVEAT: step 14 is not necessary, as it is specific to a GitHub account - CAVEAT: step 14 is not necessary, as it is specific to a GitHub account
1. add ONLY the _PUBLIC_ part of your gpg key!!! to your branch 1. add ONLY the _PUBLIC_ part of your gpg key!!! to your branch
- file format: `<email>@netgo.de.gpg.pub` - file format: `<email>@netgo.de.gpg.pub`
- **Example**: `max.musterman@netgo.de.gpg.pub`
1. git: commit the new file, push 1. git: commit the new file, push
1. gitlab: open a MergeRequest 1. open a MergeRequest
1. **Hand-Off**: Assign the MR to an Existing User in your Team to have your key added. 1. Hand-Off: Assign the MR to an Existing User in your Team to have your key added.
- Hint: Look up all Existing Users in the comments at: [verify/.sops.yaml](verify/.sops.yaml) - Hint: Look up all Existing Users in the comments at: [verify/.sops.yaml](verify/.sops.yaml)
## 1b. Onboarding: [Existing User|New User]: Add new user to groups ## 1b. Onboarding: [Existing User|New User]: Add new user to groups
**Prerequisite**: Determine the groups to which access is needed, e.g. a specific repository. If uncertain, ask a Team Member for help! Determine the groups to which access is needed, e.g. a specific repository.
If uncertain, ask a Team Member for help!
**Technical Instructions** - please forgive the complexity Technical Instructions - please forgive the complexity
Access for each repo is tracked using the `./groups/` directory; each sub-directory represents a "group" (Note: some "groups" are also "roles", e.g. `admin`)
Most of the groups correspond directly to git repository names, aka "project name"
Create a symlink from the group-directory back to the keyfile Create a symlink from the group-directory back to the keyfile
```shell
cd groups/<project_name>
ln -s ../../<path_to_key.gpg.pub>
```
Example:
1. `cd groups/<project_name>` Add "Max Musterman" to the group for `devnso-adp-argocd`:
- **Example**: `cd groups/devnso-adp-argocd` ```shell
- Explanation: Access for each repo is tracked using the `./groups/` directory; each sub-directory represents a "group" (Note: some "groups" are also "roles", e.g. `admin`) # navigate to group-directory for devnos
- Explanation: Most of the groups correspond directly to git repository names, aka "project name" cd groups/devnso-adp-argocd
1. `ln -s ../../<path_to_key.gpg.pub>` # symlink to pubkey for New User
- **Example**: `ln -s ../../max.musterman@netgo.de.gpg.pub` ln -s ../../max.musterman@netgo.de.gpg.pub
```
## 2. Onboarding: [Existing User]: Configure sops config ## 2. Onboarding: [Existing User]: Configure sops config
@ -64,98 +59,57 @@ Context: This repo stores the keys used to encrypt secrets in other repos; these
For verification purposes, this repo also contains a _sample_ `.sops.yaml` to which every key in the repo is added. This allows both Existing Users to instantly verify the new key, and New Users to verify that their sops installation works correctly. For verification purposes, this repo also contains a _sample_ `.sops.yaml` to which every key in the repo is added. This allows both Existing Users to instantly verify the new key, and New Users to verify that their sops installation works correctly.
### Update Verification SOPS Config ### [Existing User] Update Verification SOPS Config
1. Checkout the New User's branch titled `add_pubkey_[firstname]-[lastname]`. Follow the interactive prompts:
- CLI: e.g. `git branch add_pubkey_Max-Musterman` ```shell
1. Run `./verify/usr_confirm_keycfg.sh` ./verify/usr_confirm_keycfg.sh
1. git: commit the new file, push ```
1. **Status**: New User has working SOPS Configuration
1. **Hand-Off**: Proceed to next steps; Instruct New User to verify access to secrets Now the sample secrets file _in this repo_ has been updated, and the New User should be able to decrypt it!
Hand off to New User
### Update Project SOPS Config ### Update Project SOPS Config
The following commands explain how to update the `.sops.yaml` for a repository. The following commands explain how to update the `.sops.yaml` for a repository:
Note: For a worked-through example, see next section. #### Prerequisite
1. **Prerequisite**
1. Obtain Project Repo
- CLI:: `git clone <repo_url>`
1. **Create Branch**
- CLI: `git checkout -b add_pubkey_[firstname]-[lastname] origin/main`
1. **Configure Project Repo for New User**
1. List available groups:
- CLI: `${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --list_groups`
- Reminder: Group Name usually corresponds to Repository Name
1. Update sops config AND all secrets files:
- CLI: `${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group <group_name> --find_secrets
1. **Commit the changes, Create Change Request (PR/MR)**
1. git: commit the changes to `.sops.yaml` and secrets files (`secrets.yaml`) files
- CLI: `git add .sops.yaml $(find . -name secrets.yaml)`
- **CAVEAT**: check for other changes with `git status` ! The files do not always follow consistent conventions.
- CLI: `git commit -m "adds <firstname>.<lastname> to sops config"`
1. git: push branch
- CLI: `git push -u origin add_pubkey_[firstname]-[lastname]`
1. gitlab: open a MergeRequest, Review, Merge
1. **Status**: New User has access to SOPS-Encrypted Secrets within Project Repo
1. **Hand-Off**: Proceed to next steps; Instruct New User to verify access to secrets
#### Example
**Prerequisite**
Obtain Repo
```shell ```shell
# E.g. update sops config for DevNSO # E.g. update sops config for DevNSO
% git clone git@git.dev-at.de:cloud-solutions/nso/devnso-adp-argocd.git % git clone git@git.dev-at.de:cloud-solutions/nso/devnso-adp-argocd.git
% cd devnso-adp-argocd/ % cd devnso-adp-argocd/
``` ```
**Create Branch**
```shell #### Commands
## OPINIONATED GIT - use preferred method
git checkout -b add_pubkey_max-musterman origin/main
```
**Configure Project Repo for New User**
<!-- TODO: auto-determine group with git remote show origin -->
<!-- TODO: auto-determine secrets files by integrating the 'find . -name secrets.yaml' in the script -->
```shell ```shell
# List available groups # List available groups
# Output:
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --list_groups % ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --list_groups
# INFO: listing groups # INFO: listing groups
admin admin
automation automation
devnso-adp-argocd devnso-adp-argocd
# For a given group, update sops config AND all secrets files - New Users cannot add themselves! # For a given group, update sops config
# Output: % ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh -g devnso-adp-argocd
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group devnso-adp-argocd --find_secrets
# RUN: generate SOPS config # RUN: generate SOPS config
# RUN: gpg --import *.gpg.pub # WARN: no secrets file passed in, make sure to call 'sops updatekeys' on secrets files
# RUN: sops updatekeys ./loki/loki/secrets.yaml
...
# SUCCESS: all users with keys in this dir should have functional keys
```
**Commit the changes, Create Change Request (PR/MR)**
```shell
# git: commit the changes to `.sops.yaml` and secrets files (`secrets.yaml`) files
% git add .sops.yaml $(find . -name secrets.yaml)
# **CAVEAT**: check for other changes with `git status` ! The files do not always follow consistent conventions.
# output:
% git status
...
no changes added to commit (use "git add" and/or "git commit -a")
% git commit -m "adds max.musterman to sops config" # [OPTIONAL] For a given group, update sops config AND specified secrets file
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh -g devnso-adp-argocd -s ./adp-api-devs/adp-api-devs/secrets.yaml
git push -u origin add_pubkey_max-musterman # commit the changes to any .sops.yaml or secrets files, e.g. with
## OPINIONATED GIT - use preferred method
% git add -p
# 1. review changes to the .sops.yaml
# 2. press 'y' to accept the changes
y
% git commit -m "adds <firstname>.<lastname> to sops config"
% git push
``` ```
Now proceed to with the remaining steps, i.e. gitlab: open a MergeRequest, Review, Merge At this point, the New User has been configured and can grant themselves access to any of the secrets files in this project.
## 3. Onboarding: [New User] Configure SOPS ## 3. Onboarding: [New User] Configure SOPS
@ -164,18 +118,30 @@ SOPS is used for encrypting secrets, e.g. credentials for various systems
## Install ## Install
1. **Install Sops** 1. Install Sops:
1. https://github.com/getsops/sops
- Note: https://github.com/getsops/sops
* MacOS: If desired, one can also use brew to install sops: `brew install sops`; although this is not officially maintained, [the formula is essentially the same as the official installation instructions](https://github.com/Homebrew/homebrew-core/blob/4496ce5131bc09e7065fa0aa8fb96366a3df6477/Formula/s/sops.rb)
1. **Configure Sops** Note:
* Add the following to your `~/.bashrc` or `~/.zshrc` - but _not_ to your `~/.profile` as it must be set per session: * MacOS: If desired, one can also use brew to install sops: `brew install sops`; although this is not officially maintained, [the formula is essentially the same as the official installation instructions](https://github.com/Homebrew/homebrew-core/blob/4496ce5131bc09e7065fa0aa8fb96366a3df6477/Formula/s/sops.rb)
```shell
# Enable interactive passphrase prompt for SOPS 2. Configure:
export GPG_TTY=$(tty)
``` Add the following to your `~/.bashrc` or `~/.zshrc` - but _not_ to your `~/.profile` as it must be set per session:
1. **Verify SOPS Installation and Key Configuration**
1. `./verify/usr_confirm_keycfg.sh` ```shell
# Enable interactive passphrase prompt for SOPS
export GPG_TTY=$(tty)
```
3. Verify
Run the following command to verify local SOPS installation _and_ key configuration:
```shell
# Follow the interactive prompts:
./verify/usr_confirm_keycfg.sh
```
## Usage ## Usage
@ -190,9 +156,7 @@ Note: The `GPG_TTY` is necessary to have the password prompt appear. src: https:
Note: `secrets.yaml` is just an example; the file can have any name Note: `secrets.yaml` is just an example; the file can have any name
# Playbook for Removing Expired Keys ## 4. Offboarding: [Existing User]: Archive Expired Keys (EOL)
## Offboarding: [Existing User]: Archive Expired Keys (EOL)
To mark a key as expired: To mark a key as expired:
1. move it to the `archive/` dir 1. move it to the `archive/` dir
@ -218,7 +182,7 @@ find groups/ -name ${keyname}
# For each group, update sops config in that repo # For each group, update sops config in that repo
# Example: # Example:
% cd devnso-adp-argocd % cd devnso-adp-argocd
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group devnso-adp-argocd --find_secrets % ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh -g devnso-adp-argocd
# now git commit, push, etc # now git commit, push, etc
``` ```

@ -1,42 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
tPQpHpp5OcriKFWxiZSM41Wm5yHn5Yc=
=BUTZ
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaD2xXRYJKwYBBAHaRw8BAQdAKL1LP1gP7t3R41tNdVH5cUu7OksuY7FDwoq0
EX/IznG0KkR1c3RpbiBCbGVzY2hrZSA8ZHVzdGluLmJsZXNjaGtlQG5ldGdvLmRl
PoiTBBMWCgA7FiEEjWAJEv1C71NS043SL9cfRX73u4sFAmg9sV0CGwMFCwkIBwIC
IgIGFQoJCAsCBBYCAwECHgcCF4AACgkQL9cfRX73u4trEAD/Z/e5IU9+PyU0oSFT
tu9i2t2muFwrNdxsrkgATNJoJqEBAPGRo5apeOwH/8rqfOnK89AMUPPD9DS5Giqg
RPOT4/UOuDgEaD2xXRIKKwYBBAGXVQEFAQEHQKI0sArCldO4QoHZZNUDpk2e92WC
aJSpEpqaQ1ODqGVwAwEIB4h4BBgWCgAgFiEEjWAJEv1C71NS043SL9cfRX73u4sF
Amg9sV0CGwwACgkQL9cfRX73u4tnzQEA5+wX3G6uInM8rkMCGxaZ4/0gV30Kc2ye
1YqWNjZBgKUBAKLeSWj7VzdV/nZ/rgmrZx44pQxbsv5IYaZbYKxanuwD
=vPAd
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaBTWbhYJKwYBBAHaRw8BAQdAkvaY0BFbzEITBsCR3A8JnjrWZ/4orlFY7Ixe
aUSE/de0Hkt5cmEgS2VyeiA8a3lyYS5rZXJ6QG5ldGdvLmRlPoiTBBMWCgA7FiEE
u6DCZkei2Hq6GG1vPShOpyX5VS4FAmgU1m4CGwMFCwkIBwICIgIGFQoJCAsCBBYC
AwECHgcCF4AACgkQPShOpyX5VS5KCAEA5Fc+i9r1+xVRKqlf+XqX6PT1uhWKyrR4
+p6D0Q8/aCcA+wSuUcrwSNTcxfKF65wKyuOiNw5lWTTYq8vcwjIDYgUIuDgEaBTW
bhIKKwYBBAGXVQEFAQEHQBddu45Nfx+u3scccplH1OBLxSeOn6nKiSyVrrd8ySII
AwEIB4h4BBgWCgAgFiEEu6DCZkei2Hq6GG1vPShOpyX5VS4FAmgU1m4CGwwACgkQ
PShOpyX5VS4XpQD+JFrljM9ywUV17RjxZQEWpvviHGnWXYiayy/LbULb0M0A/iba
nN8E8ow17zqpng5Jqm7a/IYy8yQsNB0FYf6ddMMC
=FqJe
-----END PGP PUBLIC KEY BLOCK-----

@ -1,41 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQGNBGhvkHYBDAC6VQNRQDMlSOiUfArW3UpV0RWKZUnX2VduE+jritCe66NuC5ad
ysyaLPV5jk5X8Zgm2/HQtXGe3usOWNOuyvYGKmaFHcy0ev1UKnV4BStvMIbAbled
nx0z1eFUS0S8p137OOZCE38dy6ZmaluvYZUywKTHFb7kR0/RkUk77cRMw1K1990m
2oWt1A1aL5gshLxIiBFxQyZKwLwXuWIN0c4ivxGfBuJSdK3ekMm617vJXBhmwiqh
KZ6NsXrfZSW3dRSIff71l/qMjRv9eo3rYapIc2Br8x0a0fZYKqbvgt903tUii7iq
W59YeEDH3kWyX4EC+zMPGeG0orJRNe3fdk3ShU0cHsaTV1HBkzsHdvBWnDRlauOL
A0cbkvbXAYsqkNNXaCSvN4IjijbJCU+T+BN5EStVlqIo2SelyFnfDnZPGUN3MIUB
TVD8dA/CiOE402yPp15wPLwPOIiXzDRtmeMEa0VYs113E3WaRpsyIiDZbxVxrVPr
jZKUoD+0AH1BqP8AEQEAAbQgVGhpIE5ndXllbiA8dGhpLm5ndXllbkBuZXRnby5k
ZT6JAc4EEwEIADgWIQQ1EdGlt7Ksl7rorz7nWBaMAAN1zgUCaG+QdgIbAwULCQgH
AgYVCgkICwIEFgIDAQIeAQIXgAAKCRDnWBaMAAN1zhrcC/46P4UJLH7kYGjWf+LD
WDRVIE8FeBGDhpn1RfntXSZp3nThTj7xuUm9kSBq+2W88dW42f1PoO36FodTC5qz
Fmr3217DLFQnyg5Lii65x4yeBo6WQwkwt+k/1AOzSw6VN6tY3+4OL4QiOVFYD1RH
NxYpyJZHqgR22H1puxdFB6WTj3GFRnCcZ7x9QluQq8POzVVlnpPQNYKbCAofAoa/
fQY/eLAQzvACLyuFWHr+yvjrFjVCATKNC3EzsA6c7U+KCl2QsKnH4OZCWEvS0+4+
KmlnJITCWfnpaSfqkzAIphZ9yG4ZMgboELSnoXAMrcQgdtmN2f2Ierf0t2/Ejk+u
3dkRB/1T3FcKTvBwgx9EMQejEEmHBBhaZtW4E1fM6zOFRbyZTbxxERNj1tD652DO
LIcEUEkTQPqDYOmsROd1SqNN/1IP1sQzikkyflkL2o0PbgkzVcP+Y/Pv/wg8cCQK
I3ydXpKEppDHSXNx9rk2QOwP45h8khToDfcLgLSD6YiY6Oq5AY0EaG+QdgEMALsT
mGXVgXWm4xtTYn4YIsJRQCx4w+g7wxqY9WO1aSCDAd6yISyW3RUo+ApKHQdC+H8y
lBBiZ7s8JHzGB2J1yivGxjTwzHEWgZ+lC477HjDXQlvgkPFWL2n6N0K1MWVouZAb
wUnqQ06zfWMfAJzTmbWSM/AI1oa82hivgURc78diUpiOWzIXCFI18iDXZ4fBUTB5
wsGpttv8Av0DaqV5KlajvYRC5BY+wP6icPnlng7/f9qZhJJ5mtlhZOrcTnKF2J1m
VGXWw1Y3wfM1Ykx6LgBoBJzk1Mf64BP4YCsuRhB4bdo7RPLQcbcajGlIwVzqyqGT
/opNPIjIH+IDLlcSK4f5UPQ9mzpNlHIV+K8tgIEbsI78LzHgCUpPJsOaTuoQ7KuM
Q4Sq28dk0V8pRYPTWZs6nK39wdZUJr/PrzdSPfzttJ0Xljtqi6husfUJvMVIxhzI
/M0VZrs03N/LDBI4m60iSYshRlgk6ZJ95hqHN0adw076TLzNp8zTdlH3AnudSQAR
AQABiQG2BBgBCAAgFiEENRHRpbeyrJe66K8+51gWjAADdc4FAmhvkHYCGwwACgkQ
51gWjAADdc72vAv+M55EDGhW/4Mp7AZ4uSjoO1JUNUTReIfOGkEGs88fy4SwrI5Y
irT4EL1CvAC8UJMHoDrqd2yyBGEFtddnKbe8KhuNvuxvGgYSK34kaxRGCevgbHK3
Q/xuvDRI6TKnGmvWfcWbe1vLepqOHsbCJolcDdlyylfCOHuBgOoTLnfR7A5M1hSF
9Zf+Et9Ph3YSes6e7SiDNKFcjWMpqxsiX+I/qdfHm5LRAKsla57TCZtKr+hI4MuQ
Phwrrvjf+iQ6zGyEMbvpLDxHa8gZGjCGDaUaFbMD1GdkLs1oZncFxmY+xdxHKAoB
bo/9M6g3gjdn0SA7Ve4jI46xZ8lYPB0a4Op8wfZV9XPWC90+5eSauqVnYgkXYnwl
UxlT2tr8pvxKO9j0Bh5Ufwl7+ITQRFvO0HjDqP0JOQwHQs50/Ckc95PDKzPF0K3a
25eLde8KsRf4fPNn1NOk48TnNZ3h3BXj4Z+Nbpoj1IEqS3tcMISafgK2lfvOTz9k
4hXDgcudtCquYStf
=oxRT
-----END PGP PUBLIC KEY BLOCK-----

@ -124,17 +124,18 @@ function main(){
fi fi
# "anchor" for actions relevant to this script # "anchor" for actions relevant to this script
repo_root="$(realpath $(dirname "${BASH_SOURCE[0]}")/..)" repo_root="$(realpath $(dirname "${BASH_SOURCE[0]}")/..)"
# OPTIONS: ARGPARSING and VALIDATION # OPTIONS: ARGPARSING and VALIDATION
# assume location of script as running directly from repo with keys (instead of as a standalone packaged tool) # assume location of script as running directly from repo with keys (instead of as a standalone packaged tool)
keyfiles_dir="${repo_root}" keyfiles_dir="${repo_root}"
# dir containing .sops.yaml # assume location of secrets config file in pwd
sops_config_dir="" sops_config_dir=""
# path to group definitions # path to group definitions
groups_def_dir="${repo_root}/groups" groups_def_dir="${repo_root}/groups"
# optional:
opt_list_groups=0 opt_list_groups=0
# optional: specify "groups"
groups_list=() groups_list=()
opt_find_secrets=0 # optional: secrets files to be updated
secrets_file_list=() secrets_file_list=()
while (( $# >= 1 ));do while (( $# >= 1 ));do
@ -150,8 +151,6 @@ function main(){
-lg|--list_groups) opt_list_groups=1 ;; -lg|--list_groups) opt_list_groups=1 ;;
# ARGS: [optional] [list] specify "groups" which correspond to e.g. job groups, projects, etc # ARGS: [optional] [list] specify "groups" which correspond to e.g. job groups, projects, etc
-g|--group) groups_list+=( "${2}" ); shift ;; -g|--group) groups_list+=( "${2}" ); shift ;;
# ARGS: [optional] update all "secrets.yaml" files found below .sops.yaml location
-f|--find_secrets) opt_find_secrets=1;;
# ARGS: [optional] [list] specify files containing sops-encrypted secrets # ARGS: [optional] [list] specify files containing sops-encrypted secrets
-s|--secrets_file|-f|--file) secrets_file_list+=( "${2}" ); shift ;; -s|--secrets_file|-f|--file) secrets_file_list+=( "${2}" ); shift ;;
# ARGS: [optional] [list] specify files containing sops-encrypted secrets # ARGS: [optional] [list] specify files containing sops-encrypted secrets
@ -185,22 +184,12 @@ function main(){
# locate appropriate sops config if default assumption not found # locate appropriate sops config if default assumption not found
# dev note: '2> /dev/null' to disable debug output # dev note: '2> /dev/null' to disable debug output
sops_config="$(fn_sops_locate_config_in_git_repo 2> /dev/null)" sops_config="$(fn_sops_locate_config_in_git_repo 2> /dev/null)"
sops_config_dir="$(dirname "${sops_config}")"
fi fi
# Paths to Secrets Files
if [[ "${#secrets_file_list[@]}" != "0" ]]; then if [[ "${#secrets_file_list[@]}" != "0" ]]; then
for secrets_file in "${secrets_file_list[@]}"; do for secrets_file in "${secrets_file_list[@]}"; do
test -e "${secrets_file}" || (echo "E: could not locate file with secrets, tried: ${secrets_file}" && exit 1) test -e "${secrets_file}" || (echo "E: could not locate file with secrets, tried: ${secrets_file}" && exit 1)
done done
fi fi
if [[ "${opt_find_secrets}" -eq 1 ]]; then
# DEV NOTE: this is far too complicated
# loop through find, src: https://stackoverflow.com/questions/9612090/how-to-loop-through-file-names-returned-by-find
while IFS= read -r -d $'\0'; do
secrets_file_list+=("${REPLY}")
done < <( find "${sops_config_dir}" -name secrets.yaml -print0 )
fi
# /VALIDATE INPUTS # /VALIDATE INPUTS
# /OPTIONS: ARGPARSING and VALIDATION # /OPTIONS: ARGPARSING and VALIDATION

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ9LiixYJKwYBBAHaRw8BAQdAo9TZ7FbNytrM9Odrm1fg4SV3AurPr6B4Z6wT
bYmc0Iu0NUNocmlzdG9zIEFkYWxpcyAoR1BHIEtleXMpIDxjaHJpc3Rvcy5hZGFs
aXNAbmV0Z28uZGU+iJMEExYKADsWIQT38yjw5JWOTHhZd+I7iqC6q62v5AUCZ9Li
iwIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRA7iqC6q62v5JTTAP0R
ME/a4n1TkA7QtUc06KEhdYPld8T3udBusk67jWLGMQEA/niJGzcmoSbNDGvC6hLi
fw9ZlohBFItF8Dur/mLPWgS4OARn0uKLEgorBgEEAZdVAQUBAQdArq2uimWJutt0
DsCEPAwlirHZI476ks1eNr8n3RTzbhEDAQgHiHgEGBYKACAWIQT38yjw5JWOTHhZ
d+I7iqC6q62v5AUCZ9LiiwIbDAAKCRA7iqC6q62v5KgjAP9Q/dfkGy0/9cKJsmPD
emKfbZbQ8FrNX70+oYMGxjV3WwEAyol9yD1pJSt1g3R9/oHo7/KW5ZsXbVIx/Vqc
uskiLgA=
=sg0j
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaEBF9xYJKwYBBAHaRw8BAQdA6syYUNOSScarxQGom8QcmY/yaK+OWhAQ68IY mQINBGJWv54BEADYY6n9rrteddJ99h3erlB3pgJV+ixR7Qb/sCRFiMGcEV9PLiZr
dj7KxzW0JENsYXVzIFBhZXRvdyA8Y2xhdXMucGFldG93QG5ldGdvLmRlPoiQBBMW 8vkRlrRORaIxFXa/xnYrQ12oPbXjWDajp389W7pRHTgw3gCKRVk8eb1rwT9ZbE/U
CgA4FiEEZZ/e1D3hVft3KjObNDzxIYpmTTEFAmhARfcCGwMFCwkIBwIGFQoJCAsC trAL7ug7C+hPPkqiByHBbJ9mSfU1SrnLCAO8QFP0SXn6BVB6qSpouuorgZKwwjMm
BBYCAwECHgECF4AACgkQNDzxIYpmTTHvVQEAi2IabzcpNK6ZBmsP2NL52oXhY4iM Bef5Qgb9RfcrCoGQV/ks8za/aPUOuqxhyEm6bmys0jy5UhkYEvvT/RIZFD/mpv/P
bzDEtJul0E/hcvEA/3cPIZ9lIB8WeA6SK8nAgV5AlxGXsCdHsv55A2F/vDEIuDgE hSOZNhQ2Job1PQgaIsM5KH7HpxOjZSjaPeA/buhyFTKCkAd474BHUWIAVxD65Kx3
aEBF9xIKKwYBBAGXVQEFAQEHQNGjADOks0AjX4qlQ3xgSOP0RBIELjqYBH/Ihiwf n8pWIgbdd6kPgEOCycVx1SyNfdwz7WRINKZlTc3lJYLFy72xzhs0w4W85ssxB8mQ
eQ9ZAwEIB4h4BBgWCgAgFiEEZZ/e1D3hVft3KjObNDzxIYpmTTEFAmhARfcCGwwA jwjoauMTGV+dqgsnqBIbDpYE16avUvS988vLicXhZb+dz8jmwxqBojwxGi/IvhLv
CgkQNDzxIYpmTTFyOQEArR4vKYPP9cD6Plsn0pK4hONApCEHRKGC0d3JtUkZvJAB 8x+2RD4ZZt3BpEnGI7JRN4FBpAK/kFGWbLKFgJZa+7cGfmC40zfTDqNdegukjtt0
ALaWq4tjsPm4wF6D9RMN9tCuPPVtt/FbGzVBlm3OP2sL puz5X64kJMGQ8ZucmG5x8fgW9qZv7bDZUXVDWIz2QynUxmDuGjzXyTIYlp9DJyQL
=PsTc bRCv4PaNkp0CBELteswuIafKncnSfBsb6fIHjXexpt9ujztqGn6sIket2jmfCdOn
GTnSFD+UctB80RPZkWz538VLNsokNL4gFmuvsogd6vSquEOImipL1rNcbwARAQAB
tDRDbGF1cyBQYWV0b3cgKEZpcm1lbmFkcmVzc2UpIDxjbGF1cy5wYWV0b3dAbmV0
Z28uZGU+iQJOBBMBCAA4FiEEF7j99orBI+tmaTSxfQ327ASKXXcFAmJWv54CGwMF
CwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQfQ327ASKXXd3lRAAi12QqHRZ4AB0
BhmT4uTwyjwXi56yz8vcbGJt0yWU5k8tLN2WoJeWE+51u9W5lHyuIJSGPb397yes
zzrsYzhDiYQhyyqrD9HCFSiRWjnSYfsaAzfcmrhIkCjzlHz0zFLns4C0LZ+nxiaD
/ox1VD9J2fPOa3kJq1iZkDFRB2NS7aFwUPMbKXRUTp7P6w5yPcgHApzPNn9H2kOu
GDIXHZpKEj1XJMAKlzBB22OHfgp1lXbaOJ2l/QMiiErkmwSQ38EuYKO5bg7x6iyz
GmuQ9oo8tfJge9QFngW4sn1+x/MDMLfQ+L8bEUXv6/0UUK30+Mwj+h0gliYqfP9o
DkFuHXtbabjHftzrWaPq8ZLd9M1cb3Lr/ReksM6O7KqyoyWkEzeQdlGt4hgWvPPH
/qcmThVt7wJq/F073l/mAZVNuGX1uex43h61DxfdTRJZ7WdoARxyIOWFcFd7h8oI
Y8C5ouv/+sB5CWbE4IjPJl7qi9vjGfpWv05AiF+SYpH0CwAxcJTeB6IqCNsR4y3f
C/TVMdXbwQ3dv1N5+i8wKkFvMlLI/auvU2FlKRdpBr8KL/oHhqtf7G5VKWhm+wFr
jGy6IwIzEuJLo7qk6GFgSXNc3LYJN5V3iXlW4utbWIDeSPAJ28X2jfy3c5OVMs88
R5I//g7CED39A1KWAOVTwFK+mCCQoGu5Ag0EYla/ngEQAOutPPsYWJru8Xah0/3Q
iHEfWyVwwSjz3ZHT6FtJm5ai+PEeTT3Y/1dP52GRH4desyb2DJzAwfWOV6y5K6xm
UEX4wWBt1Sv2BrBg9N6OFc2rgqQcoKkmMCfYa2+fUH2tqAJbRK9jy+++mwI2LX3b
BFQ/GPC34sCHIbEsi7ZYmjDymO/di+p2ZvNRuHaLc2NUTqAfLQQjtoGA9TzWiVgC
5sy8MYlV8xuAnT3ukaGL/rhg8nL/taiWJfgyAFZpsiZT6AC/24rtJ1XCgdRoqXbb
78FRVPLcA6+maGo6c++1P+7PrM1fyMB0dYsLkBsUN3Aq39ZYoUuHYO0XIBjCN9qM
yCrt06CyZS0HRyBixJJgXSkkXLw2v09PmKM42chaL3Hic+RA3F/JN2OTXnSrhemh
6KcCsI63h07XCDAPhNwcTo6YitP2+d9LQzdzQSnth82CdFz9NqUeb2gmThWhgWtW
7grL+Q7Ugeo3SBuqQzJa8+x6RZWcPiMgHrvxni0G98PXz/qA7uL99JLjT87N/Mrp
lPTxGMdVd2/PeU9QAoW4J4EJTqtJ9Ig6MmUpzOhkbsH5edE3FsDLHRVU3Xjkbwme
jxFAicth1JWTZJsZq4mDA4kNgRFvqnyh59uxQgm3AW6UDBqi3ZS0qh3jXcNFAZcl
QFl85SFNeqDx6MPsYxsUGfFpABEBAAGJAjYEGAEIACAWIQQXuP32isEj62ZpNLF9
DfbsBIpddwUCYla/ngIbDAAKCRB9DfbsBIpdd8NiD/93/fbJaAT3deF/J484GarW
xwBaZLYEH7+anni/BeRokfog3f8v5YiNHm9dZSDZO/zVYkbW5Kq2ezSXiKRRmG1Y
ZhYRpuZJAxOAIszoWN3IHwMiTQ6TqECUu9zj+0cN+jplruUy8O57zT6zILsCds3D
Ycoo2+GYCd2knm05BPOVmI08YMxj/qzPJg3zKrcGN+RHbXKROuw2wX8+j3V+6MCQ
Dj6mF4kS/FECJT0cSqSbGe7UGseexJjJaBDDN8btQaQ1p/hY9+EYmWEeyg/IxaaB
AuVToVxdqDW1vmME4TxLtFy5ZSu/qWksfmZnLgeNvAVFofPuStKfbqFlRl6G8DdO
vn4a3abQIDWCuYHy7Jf+XlRZjHR/KU7HNyzQ3zBJoVqxX1AY+qcYzwOGtdLddQ4c
nO0cUUwD4XwtqdCsbk01FkcKLi+vrfBBsn9mLRF8evj9PuD01nMjB7P0KCMs/6jE
Nfr7expRKwcJjlIzXcmAbRiL4nSIbpAmiFvvlY1shbx+Ce14sJA/d/JwGH+Ogkfd
8nmiDQKQzQna9Z9fASxJjBsL7ux2QqY7ufmNgEcyrxtdofqYxR9vGFWhyjF0sDOR
0f7MCgc0HRf1P8tOrIvolwAM08cpc6pGlns1pGHHHFC+wZPCGb3/WaV2HRgrf4eS
1vC99G5EtuXL1U37Qp8Kug==
=vm8K
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

@ -1,51 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=++7P
-----END PGP PUBLIC KEY BLOCK-----

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ9Lk+hYJKwYBBAHaRw8BAQdAAImByKSkf+XTHj9o6BareP+aIhkTz1KV+4ZI
AsSgv/u0OURhcnlsIFNhdWVyLU5ldW1hbm4gKFNPUFMpIDxkYXJ5bC5zYXVlci1u
ZXVtYW5uQG5ldGdvLmRlPoiTBBMWCgA7FiEEAUMBn2JGntWmoBbCGcp2TTdZD58F
AmfS5PoCGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQGcp2TTdZD5/T
6gEAkVq5UnUPs6poLj2Tdqzlj13wToRpP3WFmDaa4mB9uM0A/1Yfde+hFFKIWPFR
hnfXeBH7HLHLC6EC7U58B8P8/aELuDgEZ9Lk+hIKKwYBBAGXVQEFAQEHQJZ2QRYW
XQ6N/wtLePHyafLb+D4wW4Di5SwoO2P/RwVZAwEIB4h4BBgWCgAgFiEEAUMBn2JG
ntWmoBbCGcp2TTdZD58FAmfS5PoCGwwACgkQGcp2TTdZD5939AD/U1HH5hOyo5n7
660ZFL5PoZpm9yxPwAUPa+Mp63QR/IQA/RNlBVGaCRlgWsPa7COo6n7yc0XfB6bi
on9JkIJgK0oB
=PxAk
-----END PGP PUBLIC KEY BLOCK-----

@ -0,0 +1 @@
../../lee.watson@netgo.de.gpg.pub

@ -0,0 +1 @@
../../smardigo_automation_poc_workload01.gpg.pub

@ -0,0 +1 @@
../../smardigo_automation_qa.gpg.pub

@ -0,0 +1 @@
../../smardigo_automation_qanso.gpg.pub

@ -0,0 +1 @@
../../smardigo_automation_rancher_poc.gpg.pub

@ -0,0 +1 @@
../../smardigo_automation_sspdev.gpg.pub

@ -1 +0,0 @@
../../christos.adalis@netgo.de.gpg.pub

@ -1 +0,0 @@
../../daryl.sauer-neumann@netgo.de.gpg.pub

@ -0,0 +1 @@
../../kevin.bauske@netgo.de.gpg.pub

@ -0,0 +1 @@
../../lee.watson@netgo.de.gpg.pub

@ -1,15 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaWUQSBYJKwYBBAHaRw8BAQdAGT3vXIrTITynXkjRlamZJ1jLs2BffQVz3Iwj
SZpFq3W0LXN0b2VsdGluZy1hZHAtcHJvZCA8TlNPLVRlYW0tRGV2T3BzQG5ldGdv
LmRlPoiTBBMWCgA7FiEE6ETrYVE2JueMSyYw4oFhS7o3stEFAmllEEgCGwMFCwkI
BwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQ4oFhS7o3stE2ogEAqUcUv6AEHqvL
Xy0PFAm/3wAdXsenNXvoqo4VYb2OCHMBAM6ArZXqwh69C0eXqyuVtsOlG19Cqeby
z2uNWy0IdPQPuDgEaWUQSBIKKwYBBAGXVQEFAQEHQGiJ5ojUcda4EI6pNnQECBZB
O0CYeGZdT2mw2KpjjkwUAwEIB4h4BBgWCgAgFiEE6ETrYVE2JueMSyYw4oFhS7o3
stEFAmllEEgCGwwACgkQ4oFhS7o3stGRYwD/X69urpUy3GpaiCLRa62MAXbNacbZ
wokxqcpUc9ygHn8A/1zSkEyzp3dm86wv6oY70FfR4K1dfj73ltD39l7UtD8M
=6EQP
-----END PGP PUBLIC KEY BLOCK-----

@ -1,14 +1,41 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaPiOmBYJKwYBBAHaRw8BAQdAgwGFW1hsK88TTcY4Iw8GZSVAknR0iRKnOZL3 mQGNBGUf5j4BDADSd88HFIDGQseOiuJ2TXkqGZE//VDJFcXLQrbwTQaZXSLPkVc9
J+cp2fu0KUphbiBKYW50emVuIChzb3BzKSA8amFuLmphbnR6ZW5AbmV0Z28uZGU+ mZeTKbaEup4H0TYIR6cIUGEuBKRNXvxFJeriurC6jiy/ThNwW2tfRdSGxjyfjRro
iJkEExYKAEEWIQS5LdybkIvzkXdY0ihEbFHgSa44ygUCaPiOmAIbAwUJA8JnAAUL xcUWIogg24dOikoCb7QS3lCt/cAU4qEwmjFKX5Oqjg/ZdN+ODUlxl2pbLeDez93r
CQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBEbFHgSa44yphwAQDIKCvEYJ2x X/eBEFLFxPIZIRn36GNL1M6b/nSNkhMUfV/Z+O8NUP3NoU/bNsiFyJy07zlPLap6
gd8QClL31SGpD2/5fJ4x/9cXa2pwmcPo4AD/dWYsVwX6iisiE46U2IIsL7ojDa2J xBRyBnn7zCAnuMGtvUcPVr9IpSc1AOHmMVBvhV8UpYhAX3+Mz+0WuaFRABMmkXOm
IYJPrb/HrL8w2Ay4OARo+I6YEgorBgEEAZdVAQUBAQdA9qvcdBmc2TvcReuAu3YA XoO++6jVYwXh6b4ugsF3OtAJ+NYnbF4jWEqiGjVNbGEX1ikRMxlgFwM28VMNXc04
ePpddYljq1L7ihWZDUWrtRMDAQgHiH4EGBYKACYWIQS5LdybkIvzkXdY0ihEbFHg FduQAArBRmsC5IFL6OoO9Ybx6y8eJ7/NVo/3ry6adnCUizzQTwSFn/iguvFs8xKG
Sa44ygUCaPiOmAIbDAUJA8JnAAAKCRBEbFHgSa44yi14AQDPHLsJLjE7csjNPVGi NBYHlKZLAuqvYYJdLE9Jvs8Hy/ERGNwphl741CEcWHWrLVRljIh2b343uAGIRdoT
9XUcfq54ScEc698xyuk8LFMSKAEA0dzeY7tnfGNr7m2jq3odopRmMo99Xaw5h4YA otCGA4wJMK4ePZcAEQEAAbQiSmFuIEphbnR6ZW4gPGphbi5qYW50emVuQG5ldGdv
cQD/yQo= LmRlPokB1wQTAQgAQRYhBLpjKJSNUBdfGWqrURHzJGA9Et1WBQJlH+Y+AhsDBQkD
=rCLM wmcABQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheAAAoJEBHzJGA9Et1WL0UL/1si
cI0FMbC+H/zF2WRqNz4LcjV8SG9oTzwdeMV1CWdL1DTkbrWxHlIPVlwYmegAlzo9
9lOJEKcNUwhfyui43cLVBMmL7LULPwCOu2r+DGtQhbqI6tjKz5gNYLiBsc718M8Y
V/V//EcWTtG2uJFQ/Axq79r/HZXZ0/J8P9UXN5aVJXkhhJxZZn8QtcUblnKAyykz
QFac3m0b3SayPRSEVfDszOzrc2bFZiwav6dVBIyBpf9qrCChEAIpzqLzf7pxvWz9
VO7MzQaYYX3g4clkId1sCGPhYQuzdyCSVVyLFeGtFFnk/JeA7Bg3xaKC/aYSpaSZ
qFaXhDv2+pQ9MzYnSZ+i8IhBi7k3lLJbzDWTV0SJLvxoUIpyNL9ezwV7xweWRjQV
9XLCearZPoWxaAOqC8+YOG6FYtIW5pbVQ4j59FZz0UexD+kZHFV5TrZX0EYLkzrh
n/ZXEsMhCtok6eqyNe9DgRYnIH0QMHOSZf807D35R/zUzBwnOOtnmfxRwtksrbkB
jQRlH+Y+AQwArPtb+qWExEMBtUcsfq0P6+BDaJHcdP+PPb3Oa8plmDjRjTf7Exsm
KwQTGRZbYRlNFfh8072TSiu5rhNLyCfY0a79DPk2r1r3i4czx2x+m2m7ao0ZsOzE
tkdejlqxi9TIjWhxdSJHHcizeh1tOJU7TZhG04CW8bRtS02L4hCO7JKq+KTZm4Qk
IE0xaO0qDxnpmosK1jQmiURFHprOl2ozJ9HqeUjfSi93baxcVzrbbBbd+OM7JU4d
+cokhvTQdPPRhaUz5i6wJm2mFkjwr308SgzLsohF7Q0tP+wY7rsSeOscxo8sRuXc
DRpx1aJ6gLZmB2bPjqR0p9kpJy448x4KOBBXkKVFNzvRuG4oZ8SPO1DnP9CroHoO
0l+4NWCrHj7EWaj7mgLyNbJjkKULjwpjTsg3nWJj8QrISQa7ejZxVU96Kyk5WGEK
gvZz3/Eocrn+D2vFd0GOEN1qSxEaBLkynsTLaj4+7cm3V/QUZyrIuUjtYyhL5U/+
HeiZSaM5Mk99ABEBAAGJAbwEGAEIACYWIQS6YyiUjVAXXxlqq1ER8yRgPRLdVgUC
ZR/mPgIbDAUJA8JnAAAKCRAR8yRgPRLdVmnxC/9IntQx0YGcLlIXNEIsTE6Q99Gz
TWuTGq5dZCKxuRoT1V5Tmj9zJ7hS3qS+jK+gQKucecMWHogyHJmJjr9OY5A2E3yg
fL4qr1ZrN4i5ozTKd6r19CkU8YupjexKQ4pwSwaj6ovtjr42XmMXTyZhRx02XNvB
cj6Yavr/+586+MKINSfTEFoat74cyUM/SnORkQB+Z+XEPVnqN+gk5nbq1v72mdWV
ooEKvlXu4samcaJaGSYHGH2WXWwsJ0mnA00AhshwC9i+6RCcJTieHIngtTfQRQ+1
joR8eMvLQTj09Nt5PodcjfQ2jxBKtnQTcyssV1V/Jf/tsAa1pP1unTDHfOOphAXf
MZyhszMs7816JcAwtulz+LAq3QO2Ogp4oVE0dKk7vyIJ0hCtRtDDl6t94DjDSzUl
U91KMpm3KZiXSTuBEVuZuU/GCKmQ5OyVKWMTzLlBHvp96oj8+WsJzTkuJwBHWFmZ
uiK1kd08gp9i56uy5tkQtYJGpcsRNJNSnyAbEcM=
=4tfB
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaVu6PBYJKwYBBAHaRw8BAQdAbz/r57Lm/FBp1dm5BArSxWkBw8eOd5LAEgrz
UF09DFu0Hkpvc2UgTW9yYSA8am9zZS5tb3JhQG5ldGdvLmRlPoiTBBMWCgA7FiEE
PioaTZqHkx9OqHfB3V9C1RR7X08FAmlbujwCGwMFCwkIBwICIgIGFQoJCAsCBBYC
AwECHgcCF4AACgkQ3V9C1RR7X0+GiQEAlsxJIg5oohIWZow4q92KpU9CpzQBeehe
U4fYhF5SCyMA/2MsjnAf/Vl4LJ3uPrT2TIWWK+GmYMJCkUAXieUUZWEKuDgEaVu6
PBIKKwYBBAGXVQEFAQEHQCvMecH8iY4hOktm6KR9iuBfqOxxbhbX8onTHWBo0PgC
AwEIB4h4BBgWCgAgFiEEPioaTZqHkx9OqHfB3V9C1RR7X08FAmlbujwCGwwACgkQ
3V9C1RR7X08GxwD/TfvxybcTthZKKsBDXkAk1DtWeGtylILM2o97G1+b3TYBAPUq
lIaCk1ONGHQn8OMYFsDz47s3IuWGz6ug7E3RD+sI
=+/5q
-----END PGP PUBLIC KEY BLOCK-----

@ -1,40 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
=nsrr
-----END PGP PUBLIC KEY BLOCK-----

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEabqreRYJKwYBBAHaRw8BAQdA7g95BK26aTSQrEt+tIU5zca255cFpcNnX247
LUtsgni0KFJvYmVydCBLZXJzdGVuIDxyb2JlcnQua2Vyc3RlbkBuZXRnby5kZT6I
rwQTFgoAVxYhBDFUmDi5xHQMO5dD4a8dHwwb/7FxBQJpuqt5GxSAAAAAAAQADm1h
bnUyLDIuNSsxLjEyLDIsMQIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAK
CRCvHR8MG/+xcfiaAQCC2SJIzbwax8j1YaIbFrzHnEpAJwk9T1KUY8YUZ6cB6wEA
2uuKzW7+Jci3gRyZd0955nZaMfcGiNT8Bm/Tbpv51Aa4OARpuqt5EgorBgEEAZdV
AQUBAQdASZ+QQhYV6o99vYwbRgMK9DuarCv0T+zvuBUacHkwJ3YDAQgHiJQEGBYK
ADwWIQQxVJg4ucR0DDuXQ+GvHR8MG/+xcQUCabqreRsUgAAAAAAEAA5tYW51Miwy
LjUrMS4xMiwyLDECGwwACgkQrx0fDBv/sXE1CgD8CCYs7PTvMVLeuL2vW5d3UXDA
mcOfLsln58mlWbN/04kBAMtAhlusXias4q/TlCMNkM4jfxcWq2eGu3MJV3NuHO0O
=+n3d
-----END PGP PUBLIC KEY BLOCK-----

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ/fhOxYJKwYBBAHaRw8BAQdAu8VIhoCmqQSnlln72LVE2sW5cE5GS84pxwyh
HMbdeUm0Pm5zby1hZHAtbWdtdCAobnNvLWFkcC1tZ210IGdwZyBrZXkpIDxOU08t
VGVhbS1EZXZPcHNAbmV0Z28uZGU+iJMEExYKADsWIQSStkvV+zaOVwy5b4nKfQzD
RUpClAUCZ/fhOwIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRDKfQzD
RUpClLG8AQCv3LTFvw+SzZWa0sLnvahtSR8wIpNw52+qelWDwaMYmwD+N7KhqarI
V6+TWJu9uxpc+RWk/vjlTGDchPeDoCs+xQ24OARn9+E7EgorBgEEAZdVAQUBAQdA
g8dAmTCmmnYBBqPlZDS+FMUpWMhAvCVUfmYai+ZHDQoDAQgHiHgEGBYKACAWIQSS
tkvV+zaOVwy5b4nKfQzDRUpClAUCZ/fhOwIbDAAKCRDKfQzDRUpClDChAQDI0wF7
PGDmqbGOXVKv0uPbTTLhu7oXiBq//blhkhCrjwD8Du/aEdCYoz9m6tobA01sKU+4
Gt1e4njTYlntGDL2kwo=
=hFQO
-----END PGP PUBLIC KEY BLOCK-----

@ -1,41 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
jFFod9cNJ83PKqPUAJJa03e6zyhiKg==
=gk4m
-----END PGP PUBLIC KEY BLOCK-----

@ -1,14 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaJMgXRYJKwYBBAHaRw8BAQdAE6GbHO8yvEW3377zNntvGCj5lJJ1l0h5Bk/6
+cKgWJ20RG5zby1hZHAtc3RhZ2luZyAobnNvLWFkcC1zdGFnaW5nIGdwZyBrZXkp
IDxOU08tVGVhbS1EZXZPcHNAbmV0Z28uZGU+iJMEExYKADsWIQTJA8BGoGPfv49B
xldrJs9JaBKwCgUCaJMgXQIbAwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAK
CRBrJs9JaBKwCvYpAQDWvMMhe+v3nIttUfEpln+8YQ8KSezLiCpJLQB4o5zt5QD9
Eo/ZIFriX11Y5yxnEjoFkH1LXEj66oGpMTjTojLpaA24OARokyBdEgorBgEEAZdV
AQUBAQdAuvufjrlZjxi5bpQ4MrR/Mk6qxPqU8MFQUc2Df+/alUwDAQgHiHgEGBYK
ACAWIQTJA8BGoGPfv49BxldrJs9JaBKwCgUCaJMgXQIbDAAKCRBrJs9JaBKwCloU
AP4vOcXLiHQ2nkbSm6CeP//0GX0WpsxMniOlqVxkZM5J+gEAu+IulrGA6fNrKNiv
cHh/X5eSsexomJXmxZ8dUOOhFw4=
=sfF9
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaPtbMxYJKwYBBAHaRw8BAQdArKya+q6E/VlCAURWAj3Ggnia56yVrWSE7Jdp
cefGole0HW5zby1hZHAtdGF4IDxkZXZvcHNAbmV0Z28uZGU+iJMEExYKADsWIQSR
K9ShLWb5kxw/39GTy+xZ+yN5eQUCaPtbMwIbAwULCQgHAgIiAgYVCgkICwIEFgID
AQIeBwIXgAAKCRCTy+xZ+yN5eS4hAPsG/JbybnexMPfb7gsIiqSheeTvrGQnU1bO
2Ouz6e0FcwEAgQKoO2dbkM3/webS1F7zX0p0o1XZMW1ecHesTvQF6AW4OARo+1sz
EgorBgEEAZdVAQUBAQdA70MTcqVm07fe5cZGkR3evSc0yVRM/7WlVmS3N1JRER0D
AQgHiHgEGBYKACAWIQSRK9ShLWb5kxw/39GTy+xZ+yN5eQUCaPtbMwIbDAAKCRCT
y+xZ+yN5eRveAP49bhetFkuylYLcgEPKIWZom/0clG96YVUIvsCi42SeBQEA4CrN
JEoxwAR/oN1gcCbN2g2fqmirO1PbEQ4yPTLYVwk=
=yjPi
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaWUQSBYJKwYBBAHaRw8BAQdAGT3vXIrTITynXkjRlamZJ1jLs2BffQVz3Iwj
SZpFq3W0LXN0b2VsdGluZy1hZHAtcHJvZCA8TlNPLVRlYW0tRGV2T3BzQG5ldGdv
LmRlPoiTBBMWCgA7FiEE6ETrYVE2JueMSyYw4oFhS7o3stEFAmllEEgCGwMFCwkI
BwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQ4oFhS7o3stE2ogEAqUcUv6AEHqvL
Xy0PFAm/3wAdXsenNXvoqo4VYb2OCHMBAM6ArZXqwh69C0eXqyuVtsOlG19Cqeby
z2uNWy0IdPQPuDgEaWUQSBIKKwYBBAGXVQEFAQEHQGiJ5ojUcda4EI6pNnQECBZB
O0CYeGZdT2mw2KpjjkwUAwEIB4h4BBgWCgAgFiEE6ETrYVE2JueMSyYw4oFhS7o3
stEFAmllEEgCGwwACgkQ4oFhS7o3stGRYwD/X69urpUy3GpaiCLRa62MAXbNacbZ
wokxqcpUc9ygHn8A/1zSkEyzp3dm86wv6oY70FfR4K1dfj73ltD39l7UtD8M
=6EQP
-----END PGP PUBLIC KEY BLOCK-----

@ -1,37 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
WrZm
=4hZt
-----END PGP PUBLIC KEY BLOCK-----

@ -1,42 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
omEOA9Ja52BBiAbwxNXX5zJr5wq9xAc=
=vKTw
-----END PGP PUBLIC KEY BLOCK-----

@ -1,65 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK----- -----BEGIN PGP PUBLIC KEY BLOCK-----
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 /chkgw==
dBC6ffSDu2CT/LpTu8RfxgfKXP4Y4uOqW5F0FNdLCLevILS2Vl+xpWclaa5Yk6M0 =57sy
y1cxbKYvuyEv2HOEpmW/6Cs1DOkP/iJ1bTFjIDtkiWZ0195Wec2MbeqL7bGmBqrs
lwejdq/itp0HZBKLq9WVMhlDQ3b4jpmUYZjeLo1AzXjKcXXQ3HDhCt7JGjLI0pAH
caUDiUoicbLvmdZBtD59YujTr7OKeOOtf459c9Fx3+fxD3Fx434ABf5Lped7axs0
/Ey4CMdTi776eyjhDmd5Zjy6GCBCeKBwhUmLTmM5fGgGxaSGNDrx+3snjwturXKo
RF8vm4sCH7sXaaBXHaXOGW9ZHYGHoBW1HZM0ulhFdE5xS8OS9viNc4z11rvM/Z1h
WLxFGnetbHBgsKlA0u6SY+1/pJwTuF9EcyGIJi9W78cfezwcSx59NJOTOW+WdbZQ
NV4OUffiPN2bMvZk9udDxLA9SZX0n7ks6xmUoMbr20F3wSE2apVq+fbP+nyvrym5
HpZ61fi7NYN0OB8C+uGy2Yj/Gut62/CAKIRFeI5g14otpQJ/eT6KqKNojfHuPvQh
8B2EMyd4+z/fUw5XfURCzfR3/D3daph/cMn0xHrJIM/mCjf9sHkFgkcZKZYfni99
C39JIxc5nrvB7GQ4+9FVxUFaGC18swA9rJDD/ea3djbxupw+VwaxZz+8au0LUnHI
XJpq2u62c73yoPRK+pArIr4LIlnTqcP2GkJdCgpQCoDCrpm34mU8/U4JNFQb8dWM
UlIHSEzW
=XurQ
-----END PGP PUBLIC KEY BLOCK----- -----END PGP PUBLIC KEY BLOCK-----

@ -1,41 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
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
JhujuU9eIqCXYO4i3GW2OMo=
=cYe4
-----END PGP PUBLIC KEY BLOCK-----

@ -2,64 +2,68 @@
# CAVEAT: DO NOT USE THIS FILE AS-IS in another project; copy it and remove the unauthorised users # CAVEAT: DO NOT USE THIS FILE AS-IS in another project; copy it and remove the unauthorised users
# Fingerprint | User Type | User ID # Fingerprint | User Type | User ID
# 533A89DD49FBCDA2BF014A936C962DD77704154A | autom | build-infra <NSO-Team-DevOps@netgo.de> # 533A89DD49FBCDA2BF014A936C962DD77704154A | autom | build-infra <NSO-Team-DevOps@netgo.de>
# EFBBBB131CF1D863005C18868C8C09CA950B1DFF | autom | smardigo automation DEMOMPMX (smardigo automation DEMOMPMX) <NSO-Team-DevOps@netgo.de>
# A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439 | autom | smardigo automation DEV (smardigo automation DEV) <NSO-Team-DevOps@netgo.de> # A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439 | autom | smardigo automation DEV (smardigo automation DEV) <NSO-Team-DevOps@netgo.de>
# C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de> # C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de>
# 0E8955A79FF4687A3ACF78E50B5E444C75867E58 | autom | smardigo automation DEVNSO (smardigo automation DEVNSO) <NSO-Team-DevOps@netgo.de> # 0E8955A79FF4687A3ACF78E50B5E444C75867E58 | autom | smardigo automation DEVNSO (smardigo automation DEVNSO) <NSO-Team-DevOps@netgo.de>
# C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de> # 98235A419EA3586BFF4E3FC692D4A5202A0D9519 | autom | poc-workload01 (poc-workload01 gpg key for sops) <NSO-Team-DevOps@netgo.de>
# C903C046A063DFBF8F41C6576B26CF496812B00A | autom | nso-adp-staging (nso-adp-staging gpg key) <NSO-Team-DevOps@netgo.de>
# E5B4FE1E0209DFFE320D2A2E47087747D89B72EC | autom | smardigo automation PRODNSO (smardigo automation PRODNSO) <NSO-Team-DevOps@netgo.de> # E5B4FE1E0209DFFE320D2A2E47087747D89B72EC | autom | smardigo automation PRODNSO (smardigo automation PRODNSO) <NSO-Team-DevOps@netgo.de>
# 890B2EB48F343D4C6DB9DA0916826F30002D3C1D | autom | smardigo automation QA (smardigo automation QA) <NSO-Team-DevOps@netgo.de>
# 4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36 | autom | smardigo automation QANSO (smardigo automation QANSO) <NSO-Team-DevOps@netgo.de>
# 42AA7F6BF795490C1A522C730ED842BE1216E0C1 | autom | rancher-poc <NSO-Team-DevOps@netgo.de>
# B4BAA59056DC362809388F3F2119881095EA7DED | autom | sot production (sot production gpg key) <NSO-Team-DevOps@netgo.de> # B4BAA59056DC362809388F3F2119881095EA7DED | autom | sot production (sot production gpg key) <NSO-Team-DevOps@netgo.de>
# DF977A1F65999F4CDD721A27516F64D5932B8AD9 | autom | sot integration (sot integration) <NSO-Team-DevOps@netgo.de> # DF977A1F65999F4CDD721A27516F64D5932B8AD9 | autom | sot integration (sot integration) <NSO-Team-DevOps@netgo.de>
# AC9B0DB590F4AE2017C2AD836113AEB66C510C3F | autom | ssp-prod <NSO-Team-DevOps@netgo.de> # AC9B0DB590F4AE2017C2AD836113AEB66C510C3F | autom | ssp-prod <NSO-Team-DevOps@netgo.de>
# 43DE8A01ABD706717C36018C48C47C125C022F29 | human | andreas.rother <andreas.rother@netgo.de> # 5623CCAD4242CC3E0225A62986AF09C173781578 | autom | smardigo automation SSPDEV <NSO-Team-DevOps@netgo.de>
# 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485 | human | Annika Biermann <annika.biermann@netgo.de> # 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485 | human | Annika Biermann <annika.biermann@netgo.de>
# 9F5341688D2F9024A15541C9E02949D0F7769E2C | human | Bas Cancrinus <bas.cancrinus@netgo.de> # 9F5341688D2F9024A15541C9E02949D0F7769E2C | human | Bas Cancrinus <bas.cancrinus@netgo.de>
# F7F328F0E4958E4C785977E23B8AA0BAABADAFE4 | human | Christos Adalis (GPG Keys) <christos.adalis@netgo.de> # 17B8FDF68AC123EB666934B17D0DF6EC048A5D77 | human | Claus Paetow (Firmenadresse) <claus.paetow@netgo.de>
# 659FDED43DE155FB772A339B343CF1218A664D31 | human | Claus Paetow <claus.paetow@netgo.de> # 03ADBCD31737EB474A4BD235CE615FAF927A2054 | human | Esther Fuhrmann (GPG Key for SOPS) <esther.fuhrmann@netgo.de>
# 93593B8B0B7B88EA2DCC99F9388B6A662C356822 | human | Daniel Risse <daniel.risse@netgo.de> # 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487 | human | Hans-Peter Wissenbach <ext.hans-peter.wissenbach@netgo.de>
# 0143019F62469ED5A6A016C219CA764D37590F9F | human | Daryl Sauer-Neumann (SOPS) <daryl.sauer-neumann@netgo.de>
# 9E561083EACDE14694C73A323A2F6C1D153D753F | human | Frederik Marticke <frederik.marticke@netgo.de> # 9E561083EACDE14694C73A323A2F6C1D153D753F | human | Frederik Marticke <frederik.marticke@netgo.de>
# 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E | human | Hoan To (Hoan To GPG Key) <hoan.to@netgo.de> # 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E | human | Hoan To (Hoan To GPG Key) <hoan.to@netgo.de>
# B92DDC9B908BF3917758D228446C51E049AE38CA | human | Jan Jantzen (sops) <jan.jantzen@netgo.de> # BA6328948D50175F196AAB5111F324603D12DD56 | human | Jan Jantzen <jan.jantzen@netgo.de>
# B643A5D780A01F24E95AA100DE6F8E2C149C3748 | human | johannes.wicovsky <johannes.wicovsky@netgo.de> # B643A5D780A01F24E95AA100DE6F8E2C149C3748 | human | johannes.wicovsky <johannes.wicovsky@netgo.de>
# C19A7D807525CE24443CA9A49372E896B41FE700 | human | Kevin Bauske <kevin.bauske@netgo.de> # C19A7D807525CE24443CA9A49372E896B41FE700 | human | Kevin Bauske <kevin.bauske@netgo.de>
# 0DB51A7E90AC6418B7DB83724D38970874850C33 | human | Kleanthis Damianidis <kleanthis.damianidis@netgo.de> # 0DB51A7E90AC6418B7DB83724D38970874850C33 | human | Kleanthis Damianidis <kleanthis.damianidis@netgo.de>
# BF3D5CEA36DB58AAE1063D0BB341078652D87924 | human | Lee Watson (dies ist mein schluessel, es gibt viele ähnliche, aber diese ist meins) <lee.watson@netgo.de>
# 73C2C9954D1BC94DC6682525D2FA233B52AEC75C | human | Michael Haehnel (NSO DevOps) <michael.haehnel@netgo.de> # 73C2C9954D1BC94DC6682525D2FA233B52AEC75C | human | Michael Haehnel (NSO DevOps) <michael.haehnel@netgo.de>
# 3511D1A5B7B2AC97BAE8AF3EE758168C000375CE | human | Thi Nguyen <thi.nguyen@netgo.de> # 13E169CF5C35EF164628764AAA2EECBDE0B38CF7 | human | Philipp Eichhorn <philipp.eichhorn@netgo.de>
# 13D7771BDE5241293F3EDA442AB3335ECC93DDDC | human | Sebastian Schröder <sebastian.schroeder@netgo.de>
# 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A | human | Thomas Steube <thomas.steube@netgo.de> # 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A | human | Thomas Steube <thomas.steube@netgo.de>
# BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5 | human | Tobias Plöger <tobias.ploeger@netgo.de> # 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5 | human | Tobias Stroehl <tobias.stroehl@netgo.de>
# C191487BB72A3C8BF6B159AC8B8B9DDC9E6259C9 | human | Tobias Stroehl <tobias.stroehl@netgo.de>
# D667348F310C57655FCE5D4EA689FF232FD681F0 | human | Ulf Fischer <ulf.fischer@netgo.de>
# keys in https://git.dev-at.de/smardigo-hetzner/communication-keys # keys in https://git.dev-at.de/smardigo-hetzner/communication-keys
creation_rules: creation_rules:
# list of keys for encryption in stage # list of keys for encryption in stage
- pgp: >- - pgp: >-
533A89DD49FBCDA2BF014A936C962DD77704154A, 533A89DD49FBCDA2BF014A936C962DD77704154A,
EFBBBB131CF1D863005C18868C8C09CA950B1DFF,
A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439, A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439,
C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8, C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8,
0E8955A79FF4687A3ACF78E50B5E444C75867E58, 0E8955A79FF4687A3ACF78E50B5E444C75867E58,
C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8, 98235A419EA3586BFF4E3FC692D4A5202A0D9519,
C903C046A063DFBF8F41C6576B26CF496812B00A,
E5B4FE1E0209DFFE320D2A2E47087747D89B72EC, E5B4FE1E0209DFFE320D2A2E47087747D89B72EC,
890B2EB48F343D4C6DB9DA0916826F30002D3C1D,
4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36,
42AA7F6BF795490C1A522C730ED842BE1216E0C1,
B4BAA59056DC362809388F3F2119881095EA7DED, B4BAA59056DC362809388F3F2119881095EA7DED,
DF977A1F65999F4CDD721A27516F64D5932B8AD9, DF977A1F65999F4CDD721A27516F64D5932B8AD9,
AC9B0DB590F4AE2017C2AD836113AEB66C510C3F, AC9B0DB590F4AE2017C2AD836113AEB66C510C3F,
43DE8A01ABD706717C36018C48C47C125C022F29, 5623CCAD4242CC3E0225A62986AF09C173781578,
1EBAE111F6EAE0CF136358E8625C5A3B8DA21485, 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485,
9F5341688D2F9024A15541C9E02949D0F7769E2C, 9F5341688D2F9024A15541C9E02949D0F7769E2C,
F7F328F0E4958E4C785977E23B8AA0BAABADAFE4, 17B8FDF68AC123EB666934B17D0DF6EC048A5D77,
659FDED43DE155FB772A339B343CF1218A664D31, 03ADBCD31737EB474A4BD235CE615FAF927A2054,
93593B8B0B7B88EA2DCC99F9388B6A662C356822, 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487,
0143019F62469ED5A6A016C219CA764D37590F9F,
9E561083EACDE14694C73A323A2F6C1D153D753F, 9E561083EACDE14694C73A323A2F6C1D153D753F,
9F08DA9D42379AFE6610E9E615CCEC6801DBA02E, 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E,
B92DDC9B908BF3917758D228446C51E049AE38CA, BA6328948D50175F196AAB5111F324603D12DD56,
B643A5D780A01F24E95AA100DE6F8E2C149C3748, B643A5D780A01F24E95AA100DE6F8E2C149C3748,
C19A7D807525CE24443CA9A49372E896B41FE700, C19A7D807525CE24443CA9A49372E896B41FE700,
0DB51A7E90AC6418B7DB83724D38970874850C33, 0DB51A7E90AC6418B7DB83724D38970874850C33,
BF3D5CEA36DB58AAE1063D0BB341078652D87924,
73C2C9954D1BC94DC6682525D2FA233B52AEC75C, 73C2C9954D1BC94DC6682525D2FA233B52AEC75C,
3511D1A5B7B2AC97BAE8AF3EE758168C000375CE, 13E169CF5C35EF164628764AAA2EECBDE0B38CF7,
13D7771BDE5241293F3EDA442AB3335ECC93DDDC,
0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A, 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A,
BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5, 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5
C191487BB72A3C8BF6B159AC8B8B9DDC9E6259C9,
D667348F310C57655FCE5D4EA689FF232FD681F0

@ -1,475 +1,524 @@
demo: demo:
credentials: credentials:
secret: ENC[AES256_GCM,data:yq37BrlDyA==,iv:3JlfxqnDaQZU2hOV1oUabZX4SLM24OaRAM4z2nG0N18=,tag:Cl4rT3zIykfe7C8499EA3g==,type:str] secret: ENC[AES256_GCM,data:m3uKjs2CMg==,iv:REr+W6QAcMXjC6kt4+U9W680N7NmOaPCbf5ZsL5v+GU=,tag:JTcpjBULW1tb6wYyQO1cWw==,type:str]
sops: sops:
lastmodified: "2026-07-09T09:19:57Z" kms: []
mac: ENC[AES256_GCM,data:BhauZh7kkae8ewSmZd1CWjD4nOhAY563JMIAJnEjWcw26lm3NT0cKjF4C9n6fjLhRVSpBEMYdK0kOPhqJEVqlWeEJ9wMBAhXY/7jmJYs+oaEM3AhVf9Dv82RNgNbzNP8bdp+QQLZEmeQ+oeK3ui8PtgTLxyXwp0LZNlpJ5gCUao=,iv:py/RvJk9qQhXVozstpINjwVgqRfL10xErOEYCtvTeXo=,tag:RHbD8gs2O+E3kGOZmvPxCQ==,type:str] gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2025-01-30T16:32:18Z"
mac: ENC[AES256_GCM,data:DNsgx0KhSbgbCqqME9MUJxHQSt4vVc/C2xfkckwjhK5nb4dW1Bz3Y5wAzPlOkPPKp9YB70/q2spw8MKSiJgeujfqnogPtZ409lbi3/RyF/7WxnJM0KFxdrsQwxfOJdYjfXnXicW9CD6xYPn1+LUVVqnRDBXt4MIzc5AMqaXy8pQ=,iv:dhVa4Dig7E3fld2Y3upjw3/P87bV6/C2oGDBgqQYRVY=,tag:RA9qsnRNMnznkNBDkjssIw==,type:str]
pgp: pgp:
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA49EwzBHBfyRAQwA1eqcd4G8xy+ExwX0K5gGaYdYe8nRmXiRsfkFez+7Ejvj wcDMA49EwzBHBfyRAQwA59rrxcceb6CV066UH5esTFaElafvGExF5nKTewi0lGMO
SuxQ81Hk9IvkWU6+Ew7fWiZ8k5SaSMw5PhL0MrIBI4iDwLQxZullNhNJzVkb/KEP vDKjzKSeDHv2GtitqDaxeTamFt7sZEiKV4XNowlRAY2lx9EN9JVgKGTg8ZEmo0nq
mrLBBv8JZUeibG9r8Yga0CgYj3HbpeoyFTVNwn8ZcS+0gYxMPFLbxLxdD7RXtQyL NpQW0fgaFNI/xqEd6ravF2Sr/UUUBsYDVl7j2cYIJT+ShHDCA97I7kEof6Z/fu0H
00rdJJRLhzH81edU+G84eR4AZYgG5SZGcPeu4mNVD1x2s0mQjaCyb0/wblk4WXW0 6cLGuv0KA9wHVTj7+q/dBtXJUfyMBBE98GZde9lAJBvjDSa8I9/zm5gdrxtvOG2p
tV6jTNGZLtXm4743YEaIsXh04lmy21PAD1VJ6Amgfyl0xB0awwInwii6t7kYrbeM g6N7zV79WvZtE+pwNU8jQKqU6bVzFXNGMtRn6fo6ArUkFxmdzYe2KLHA9KzxVVDp
k/bAmrsdNpoUmO+bZmLJTCLq79vaOppYnf1RV30hCD9tdOlfErNM+XSEgkxRnhAB GCqofBtqYzLTxFNkfgpmvdMWhnrmLbDYJc/r4MsgZR4L5LrP/AFDTOHePcHeo1+I
GRDlSkI5PGsMl7LJHAqEsy8dJQ49pdea9fW6tKDoyeFTagmsZMh33tTKIj/vRtaY /H6ZVluZ5QRdijvR68Uo7/j7OzIjSA8OCYPxPSpmUyr3MVGOwWnSDbGcHVu0sB34
t4gQbk0M07u9FlTMMdLGpD7w9s5lYm8gsqcFO/06uYxsw20mD46RFl1dg8ZG+kMx 8+3sHoguDfKO1NBFLJtoxknJxSEAph6OanNwGU/5tp3tunFfGryrgZgpVpheC0tP
cl8KrH+7sm7ABQZW7B8b0l4Blgicwtev7mOzF0AYuM2gSCLATnpxaQXHTxcQVtLh iT7awd3982HxnwC7MJ1H0lEB+MT5H6i8t6Vba9jCl0KTY3+BGzc8rVOSJWsQcsIH
E+NXdyL4SCBv3hRN+Dv9zxInzzLxQODy8sGMN2RsKiUSsidD2lkDxbzmHNco9yMs LS8DuNh9YkF5bhXxtvLBQyAtATle0swu8oPHhM9fPwLHdy6+36lwW6H5v77tCY2/
FK/jVAEy4Yp2aTkFu1xL a04=
=4hA9 =Rntn
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 533A89DD49FBCDA2BF014A936C962DD77704154A fp: 533A89DD49FBCDA2BF014A936C962DD77704154A
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA/3nDyRfgQqhARAAo5PEiqHIjJP887/Y1gF1/oZDbHvwizQXOU97ERsVoy9a wV4DK0+AyNumsXsSAQdAMYFNwKZg8MrY0KlULLnfvFdVc/fuXsnYiahI2MYBu1Yw
3bhcfzB042l7Xp2s0IIZ79QOorWqRarkea7JxIEHGLWcYo/L7SKh2kKDZqZhkC4e 6Tqaeqf5YCg08kRlDwugXpReiFFKsT1TpjMjLGQf3OxxM45LOE5cUkJoQCYHwRpH
RVdhpZNzrtdeN0xlpXGMgSNLcUB+UBUR5mAPF25fUylHHiFjZJR29KJHw5xxbzR3 0lEB2m8lED2E336NonUt3fOtvM5vaCS+ajfP320mQEPgEz7QbA2WrcIlat9OJED4
lz1Up7crmii7o1jM3wY8rQ3FlsQMQjnPKbhyoVQCFizEHO29k5TMKIwnDlrBFYTI HrnssHzGtEFui9XUp2z5yv8aubkmJXlfP7clnrkY9KJ0MDA=
vc6EFF6xlkFyz1fofAtv6qPLevEj1K3JlmYJoDqLJAie7IbY45isFq7AgdHVzqtC =kTMq
5Wbl5IcEBj/Qn6YCOJcPN4TyErYG9AXY4H+sVHH3izj5B7Olzw1VnXVVq5c5Dhz0 -----END PGP MESSAGE-----
YhLsjTySboBqfeGlHSaJ37LWLBhNmpWO/xRGYkm51m0SSWfheqk+3SrBdwPY/BR1 fp: EFBBBB131CF1D863005C18868C8C09CA950B1DFF
+NcaYeDEXIwxkMDRw7K1XxekpShzR1aPy7OHD/6BMyquNGVSutZMb56lsDC7Mmv0 - created_at: "2025-03-04T17:44:07Z"
fdkT5/5JTMzywj5DBP8CcanuWDuQEV/bsasN73mFT3NuGg8dPBMea/eFhs7gyFvS enc: |-
ePsIWZ7a8tAfTrCvTlilpsb6bA3G44p9C3A0rujeeMt8+/96k7Lc4EHBKFXI2sQv -----BEGIN PGP MESSAGE-----
4jr+ScW9uomllz190fb/cHNh8j6/zwAIDhlfzzEVj45WJzGCUkA8u2pCnPyDXprS
XgH6vu9WUYDVB/eVkOzOREVGrrQXd/UyoNgee371tjQ2f39a37Ql7LppP8FDPnbZ wcFMA/3nDyRfgQqhAQ/+IDo5diT1oTdYlbwxRbZKyrRWygNGLrWZjr1/KH1jnxzq
PP8SUeIfKv7SX6nMGOhho3Un2hYMTm1xKu0SheqyTq3oYphjVkh6BSNIsQl6tsc= MCUY4Hba3Jvwhxj/Y9V1sQAPAjSG7eFNAWCtbo0UvJQtW6syUyUFBob8jyZXTZo1
=UkWZ cHWB2TRRr7rjyRxnw4Mug5DHfUUVK6CagXr0Fg+wvJQnluGbsE3Krrm8C8FSWdBo
E0Y4nVmDWnwNWegTHbd6x3MlST09STLPLGnL1vNAEPgSz/5xswtKzFr83th7ebmm
Ojjhwz9KkYwgpFLhPlDQ4d0YwA1mwlAFKoe1vPjIcLNUTxDuzb3VIJxt5Gi9GKid
9PzgDQf6Gx5Dr3VRTLPQm4pT8HUjH0wNyY2vM6bQUnSQy/ztxdhiV2rq7m1YXc/E
3ry7gtkwxwsrfA6x3g9QiWKgf7XlCCWL8bwfXqOOpelsw1Y2czhbWh9qJmJJE+j7
N7b2EWrXYSaNsnbyptnq1+wInIzvBL1fAQsoqkwW0DdKaqdYnAsDmwHBYwUzmN45
O7K0C0EevlWOTxCYV259ZXCr4G631kqaSYTxVfGo7uO77uu4CfV/1SfqbmWEtSpD
jkLPA/7tlkfNlT4t3V0hCOiv0N7bn7qwMo1IHwL9plmgqAxOqRohDR486kb4RgJg
c1BsCQ0vzkYTl83+fN0AfmnfiD1eIr+YvHV89pAjA+k4H/e2IiIr4D3aoewJmQTS
UQGmD6DzVHnEz5KKQuejN7BLmDLuHojNY0YY9Q+JA0xN2mvYjMXSDMMqcoJA3z+e
KFmATIU9LsLezDStUiqE9j5mjpnJdb/zupMFvjz8RtpkgA==
=myeF
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439 fp: A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DuAaR73LFvScSAQdA4j5fweSNIKzWwlZ5uUkcElmP+vPA8PBz3Ci5xjs4EzEw wV4DuAaR73LFvScSAQdAsVQhCe2FnHzzNcznoNGXjjJmIVh61Wx0jYlWayHixW4w
0UVz8Rd1RF9f2b9z5YAB3KRDiRKvlkru7LHbEvg1Owbg/Py7Sg8JWCKcEL7itf0K My3BL/Bk4oDSxBfUQ28UWkFGUg1IPKu69lAc16rGyTq9RVYGRNl3ZTAUY53+Pp/w
1GgBCQIQSZpZca7KMobujb4RhVnurqn7A3fT0qTwnyDN+cJlcbJALTYoufnRy7N0 0lEBYxxw1Ohm4gsJpUbqDIV14v50qh+otssrJbbQ/Fe+rPFkzKGydRhOrUYLLWDj
CLPALXPYjn3EXOAyY31bUCCxqBt88fTdQndg7EP8L6pU1GmO0M/gjaCNHxdB5Y7V QZruVU2YkHGU809lEW2jJHmcSlDVLUXO/6u9FBGZ1WSj+pA=
EOQu4n+uRLiCFg== =w8U3
=ye5V
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA3LBDEB9lMmaAQ/7BJBiCo66cbxzVe5EpN7C8AF2sQR26p1BeCIMfvtVH9M2 wcFMA3LBDEB9lMmaAQ//dT6qK8f0CaddMWsNHvovjITEI9m+oFl7as/JnpFLnU+U
oefEQv4o7gY2MdbMNDwSAfskMoXlklT2U0dXKzRBvTgqJZPbkVxupP7EdeJ7a0e8 OUQs90dq292FUhVcOeWfPkllh7o9DI4JJYx50bCJOBxKcBTyDjmnsEK+QyB4Ezi/
xsAfNqHgHjFgKmMR+NO+fn6UIi7FOGtnZPXvibURvPgsEnRh3oEPAP4uAkOhQZ2Q bgDlUyVNFgj6YER4AJfx55jXO5vBQKjpyFQUAoTUVdeact3DF7VQNsWQop9avSfq
oraC8th+7K4DcjXp88qrtFyHdUM3l7cPJ5PoH4YMjGfU1dbIar6vaZ+zdp6G3F7P lY/1N3R2PG6HUDKsS4R/dKFbnlkbHD6zq6JA6mFy6HTbdlVUGPlwmfUoYoVTjgpx
qKza9tSxGKu94uiMNKNyhOcWvKL5m4DCPoZmQ5rFvJZcuu6c0OaqiqRgqm2wwhsG tpAOusp7xAlwm7k88g3PeXkSU2dyG+xBia03ySQlKw6UqbQZbshvTvLlfasDEsqN
BUf002nhMRlc2xUGty6Os5N2GnDwny/zYqpERQ8nyNfxYhuti3Ohdnks9WueZy3Z nVArwTeY940ZjJcoHGBU8YYg4uXi0TMSh7NfWachOXVEVroNwKZu30zJL29QyiJp
dc2vPI+UzQTgVHXqB5p+xiDPD174HmeWc9BpGVmGZ+opxflfCZDVoO5PPSZSLcTm cVQT2SOHLdI8X+Qf2NjIgqIABkwOubvoM35gWxqSgOsqJOTNlKc8tCcuvjy3KPvS
1zFEI5mHb2ANp6FdKME1UKQwOjxRcYd4AScwr9+xW9i4yfSwkTjNNavnZ2fOK8n+ YoQSZb75/6T+kghPs4/UMzdpDbLsfftjpxdcnO+DT6ukk3M8lr22aQo6tqaQnFqB
L3bcjhsvzvyc+RPsmpgD/5BFvHd54ncbGRIA5DQeRbu73o25SITHCIiWNddwiiMQ U4+oxg2mmD26KOmir5ctl+qLMlUGaTni54BHxNwivgagkwTL0EgRsy08saZdnoh2
CHUhJbNHaZgmH2sSYtsZAEcEB3jkD1+rHEt6xMk2bkQzkiV4Z9DDsS353OYjJkif w4Ww2qwlsy2tnHXD41f8g9va/sluzd9NgbO+irSigQVKw1vVCanSXWpUoOPT5ahM
t0cz3va4fmyE8fzI+qYX8+rigH/J+aNnVSJn8d5PxZ6DOHn18zzb2XoHT09jYLbU lu0KCq9E3CDqHm7vGDNO7TDskKqVkCQ11C3ge19swHG+YvAW9uYONV9dPh/el7bS
aAEJAhDkUXtGw6W+IrT0Ohr2WrSUjvA/D0dir08n7+ghjvgoc5iIg/xznqOY668O UQEQ23+TsHgVkwLAilxel4hEiQ/giD+x2wInm8JV3mmLuLqBcB6oMzsgE37hxhsT
YcjqHbre0nyVFLFjJ39NbRN1t6a9Oz0LIau6SGMIMMO0N5z/q24gbAKi9HNGwb3y Khz8+UO4pgn6Cj1G//pyqVlwIqdSFrLJqfSF8unGvTqMbQ==
AfyafOC757hT =1qti
=3pm9
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 0E8955A79FF4687A3ACF78E50B5E444C75867E58 fp: 0E8955A79FF4687A3ACF78E50B5E444C75867E58
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DuAaR73LFvScSAQdAm6dxvYYe69zu7F2Pp08Swlk6RJ8lec1Zuzq9UXIzm2Uw wV4DpyXAcYv7T/8SAQdA5zRWWv2VlGjv6HzyVLHyLU2dmBfXuMX8MN+iWecYHGAw
GwpI8S6wl6T4PxkDEV6cvYaqADAKNVKfyp/AMbIdkPrRNUNsKnPxKieUtZz3t4hS N8MwLk/F5NBHyJiOCS2mGCSRZ9+so1m1DAt1SSJ7xvJ4hKRNL35X65hZG/SSba3U
1GgBCQIQcXvGPr3yB2X1c2m1hw3f50A3Qb5kfOAsne/xgp6mq26Fr4oF4eXN2tj/ 0lEBmC9MQZ9aOpVScVIe816vTn1GfVKtmakl08b+2WAIu5sY7faZqn/kCxlENyoZ
aM3PZwLFHqh+lz4x+ploGw20KRUhDM7oTLl6h2DrQCDPepnLSrIPm4vIOMMP9szT C48WgsgrAEeDLWL24Ka1EFrhSeTTpWG3qt43VbT+mzwHUNs=
OU6se+JfLNwqLg== =i/wf
=RDBQ
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 fp: 98235A419EA3586BFF4E3FC692D4A5202A0D9519
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |-
-----BEGIN PGP MESSAGE-----
wcFMA911WKxzIy2nAQ//X8lU72Gwrr8xJEf1s4ngqdStGJJC5zQyIWvrC2DdGDE2
6do8Y+PBKOyvYq+VhbVk2dxeCoBJKdm8kq+xpJYY0uYeai2QvTcgItUJR8Q37zmH
LwjUnYAz5vz/ikmOiFlIfAcj93zKLXS5U/DHgAKiSMlMAiH8tRwV9cpgB8DcKYTs
WhWVyqPJfrxuG6zUMUfnjQYt8w+XI3niQm5T/xBBNtY33UMU7v09NSsACjHe0b9z
e8a0O/NuIL5yEEjB08vmH75ENlRYTta/6J7gZsc+BVKDM8GtSMbj0apiYRjtcv5b
o46eReMJpgs1k7zqN7THpif99BfzYthnlL+cO2EjRTd1ELx7pGON0YX1usLNlbOC
L7NgHMg9lt1fsU2xXxCCaAD4YpIFhQr8Gse3bDQmes9XldIGBA4+9O1kRbuYpQig
ezdlX8RPZJaBbexWb93KxbjK6qyBaJ2UJZxE+e3k7r9bRN6XqFSiGoxgpL8bJjMu
7XQlqI3EWS2Xl+VE6NJ+GV5xRAUTrKXTbU5u4NWBxtZZ4E+hFzDhLHAdMYJcHest
Fkqd3iRSu/G8yymvf44xQ7W6DQXaQYrLGOb+d3k91hOU2sBh7H6pw7zcwKp5a4Tg
C5fsvTaHBBWiHpT5B3qqTBmpfDLck2PwAjHRprhNZrQj4oLqPSrfdjzvViVBWKbS
UQGpPA57Dgf53AsObPp6+snyGUkCSOFcfy/CKJIJNRX1NrsfO4IWhWPCYduVfIMC
s4VC+Rh0EeoqAOrhRlsenYhzYE6Ku6WBx2yOayJqAkWgKg==
=UlLG
-----END PGP MESSAGE-----
fp: E5B4FE1E0209DFFE320D2A2E47087747D89B72EC
- created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4Dq7ZJnmCAxTASAQdATZyruFm+ZvcOIjf4p52yLaFEHSx78w9ov5Ng5PvXCgow wcFMA2Cr/drkb+8JAQ/+P30LCNnKXN/o/fzkcXPnXsyV85rcgHSF13722oDO8xTk
V1ZsjBSuD2xx+oYVqD03vkUXr5fT3MkNtHol6ZZ+rWmiCSEAdmRyQ7xN5doAE+1i 2SU/HdiBQ5hXu7F4Zg01314DW/CI4+jWt9gKbn255WnETYQhre+k1prKRSQ1HFYL
1GgBCQIQamYRGN7+tAhquiyp6Fa4hryyWzP436NAPq6s2gbI5sIcRnFkgfu26qPL qSkbaFoW1NM3+RoM1hUBojVJ26+APjwNqn/+nx3QSKsirgCUynvJTTI479bvY+vL
jdqhItfkqxC5rlc2rqnU8iUIsTOAGD3nwihC0r2seI7ff6MRA8sdWXvmxMKw5yeg S+DiSct1UYyqsZpmUDxLL/0ta60ekWzOaGMzBAaSmdlg9sSRslX1lZkicwLzSC/X
sPo4XDHUsUVZ3Q== 0BfuBXLh/KvGlcAUh7dubFWeae3CT8oMIPHNdQLQZKFtfg10vgboZXsv+Zu0vE0P
=83cB wRxXfc+cz66NzKBuBDna2c1wTFOxzfJLd7jFBnHKavbFwGKQsumMNCOMGA6mP0yo
Xt/4j/7NonwG7hHPTiCxlN3viVM8j52H3ExLwoaOhcLALzVaJbM66bLGFUI//T+J
MjAfdl8ixtiqw0iVR4Zu2x6PeOuwbwuRUuRUMauBFHUKqi/l9QXpOQenySUlqU2w
nSDawTEW7pzHxwuC4KrAUdEOml7+VIyv3RSmLeIbRhhSm5DT6wcQrIPk24o87ujR
enbiWDFLdqPUBostnwiz4D0AanzQpinb9WIr23kBI2OmTMvlwu0hlxALUQ/mTBwA
f/oKp6BJZBqyPyr6pZoiUPElgALh/83D4w4+xNxfjXTD7ZQSQSVYHQ3mFiW6CXrS
UQEzbFCPi0cz+PAeUynGtyVh+R5FQS72JaGFTqy5+ggaqyxowtgeGHz1X/hq6y7J
IDCX4rNTx8DbQjoFtntJloMWcvfAiaVnYMr4ghgKRmoCiQ==
=ugtl
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C903C046A063DFBF8F41C6576B26CF496812B00A fp: 890B2EB48F343D4C6DB9DA0916826F30002D3C1D
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA911WKxzIy2nAQ//WKRjv+DgHZec4UfE57zHtXntj1v2m6X+H4GEX/otK2Cr wcFMA3Zl11RyMNviAQ//fs7kWhDVa93Tm8BwbVBnAm1fl3SLT67hpOsFKgyPjEIk
y7L6iASfVIaNDKugaEJX8ZtKWmoXih+hp1nEnT+BPbATxQlaui9kB4initp14Kl/ 4tNl0HRSzvFrMok/Hy2lIDOKilmM4/mBR55jdEgNN5JGK5GFOiF97j8KJr3YepH9
4ZMU2uJYzb0r71+Jh63bW1Q1/aAiiKgQUMbeQvxUuqUWvFBpI1jHjc30vYlzIm10 BwVjsTSqR29bWol/fCJup22RGfVP08POEr5GXGYsbKnG7tkYbjyGITx53JdOo7rD
/zafLax+i0GmxYrrnc5e9WGuHPg7NkBarJ2cWPEhYqDAhH2Z+DAqBWcqJI59NPfj +ozkx6gHD31w1khMNXj17RvC288ilSnXKDdzT1QIRZf3pa30b7pb4wAaj8wiBJ9u
3MuWoiGNaHIIp2TG9Y7wsPndTqebjLrFLVlpHHbyivB/c1B29653VJzvPz5bw2vA vmv4pmpgcFRanvRlCjcSg08jX6I8i+iwIBEDvm4IA+i5/rfFeV+Ugbx1C5U9u+8M
s1toDIB+rGqCp/grBIq3KO+ASDVJYvAGGOouQoRTqqP9rqxqinAsgsaWpYQ6YuSy s1IAsdH9fHn4zTsEQgwZ+/dekDiw2HGTpsJqkhxjm2cI+N4h8TqD7jxuffbPeKJW
Moyb8k//v66MUxdir2BQU/NOPBkBpWbvRoPhFP24SP7ppkd8e0YqnAtJWLKx7Dk6 USmMHoSMrjRNTERjHAFoumXLcFLw633kbeYnQSByfGHZJvfPBnMWA7TPxCjPHHF0
otBG/lx/4HqnguV/zW9IAuMDH2/utXXjj+pq1npK4Yuq4HhjV7Mxc0nUF9z2yGUt Y+BJ24+7p3xr73etLP79P7Vc6THBG5q/3xHpztEv45ZleSzXYrgRDC/zoetk95c3
Dyh7iKwVGHUxGBbI3TY6gftdXqcH5lC2UwZz1mOcUXLhNekqutXXyCnxiX0la+s9 FMdxUURHCiS4QwpeTMPFloV/XkKG7qhqVXrJEsd9Gf1QKG94Ep5mllbIhOfGX2yz
Zs3kipA4ZhJ+dNgcqAlFsY/b0I3ANoNv0k6LGSrtRFddcGOGKWGRDRLcUJ2Fjwn7 h/kzUD/+z8YD+IoUXFNSAnq+9HTxB3LzvZKSvTFH0zUIIwXPcFOoUymh8bJOdlGf
V/ewMuW4N2q1uZHbUrxSXdruQf7s/01MxOIxbPvL8NmOpikeSjK/3tjYm9/gB9vS AL6cy0WQ9lqoT0/ALCOrxQu0l4nfKM7RaPoJZHiqdntDr0gykpfNtIAY92nPug7S
XgHWwlvsYELtgxo+pvt5F3WrsMF49ybngKu34OPqseKCOoDGNlm2++U/RUbuzvmD UQEgwnE690QBTnyOoNJrcvs8zipV8so2VGKxRARDtrbUedI40a3g3Vax5fTLPHWb
aTBOpWH0Df8PZlvwkkfGCENDLGa1gciWjPfuhUg5vY/YUkl+hebWNNzy90C016w= EU9sUde4Q6msevEmrTKFCzPe2zHSnq6pLEpNhLpIUiV9SA==
=trD6 =P9Me
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: E5B4FE1E0209DFFE320D2A2E47087747D89B72EC fp: 4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA5pTFdxsndstAQwA6h4Vzl0iUViPuYCs3er0WFt8gYmfXSC2u0HcMlSYxqsA wV4D0Z3mmZqL/KkSAQdAzv7oU9PEct/VghS6oZqKeqcTWIThBuSHzE9Lm1QGfSgw
nOQb5/W1BpLdRTbMSZB32iYTEg4TyMhGzrmBiTYR6BoTPvzKNCbd5o0Cj3Ew0p0p KdBeR6DsZJv57zUw+OzGczxitJ0PaP6PuV76utXD/pJGp9ItDbYSQ+g7ILRf0z6v
Vcytx6O2sr/D911zWnEMXDERdHrBAeyCybpt5QaV8LVnTMTKZsEEvST9ZCeVkpwz 0lEB0+p1MPajO8IqCKaU2cHndEb8zma7mexf5yTvrAjyfobGAB9WXWt0hF1OolnS
95A7vruXSsJy64IzOX7UCO8zcMU6VaRC04aEdTLkeYsiPlHSLhXSzkbBtqyhWgYA geCrg3U9Z9UMKGZ8FaqeKk9PcxeZpt54M8Xe/Cg/dKO12qk=
WWQeuJeei1uYiCU0gbfHntbHIzOUyjmox1luOnI0VRE8ZZ88PCaFoAr8+pqLAnIY =zj3E
sM9tBaHQhO8f6boeZWYOrtx8jULkiCbgBGzAE6XLYUbflgP2aPZ4U9vkDhpKt+Gt -----END PGP MESSAGE-----
1sKJ5zow4rls4zU6FtJ8o6x7wgVskEGqRnoxQRWgErgPATsuyPQN2sszotWIgcBp fp: 42AA7F6BF795490C1A522C730ED842BE1216E0C1
1VpnbpAzece/YfXR+K+iwJP5aFhI3SnIKvhM6gaEvZFibGwZto4UedW2S1RTO8HO - created_at: "2025-03-04T17:44:07Z"
SVBLon1HnVhb+fkvF8BT0l4BoApb48ki1pHzE0lW0RJQQUwY4LIWaoNmq1Du2EdY enc: |-
joI0bqyrWqvn1tFcV4yASPaD/BmCfvIpIWhv3cjAyqFWK3R9bXnTWmmjURweU5Os -----BEGIN PGP MESSAGE-----
sHKbh3JtXN3qgt6fQzAY
=nW2W wcDMA5pTFdxsndstAQv/S3MAPxPFSkZWThwh/AgcsdWR4RSX/4FhJfKYUBVGef7U
hNAQ4LI7KYrtPffapufL5DlfT6YY+lGuoBUumYQYB9WYeydjoreudy4kuWy5ReZH
qa2gB2nB7n/CRODPPDl1g4JCzlV0acCoHBC/AdDIhG4F46r+6zM4MM+yNuKOiMWx
e4UmBHSwakKOylm6XwfuX4wD8vFo4+H215jvUIldKJgZ5fO/PnCuqlCeRaaH7nFl
SxQ8GP7RGaHxKH2B3ranz4KnNoeHxF+LaBikXlq0tppk5vnta1LjLYJB5xRs9uOR
TeN5/j3qnSnqcuv1KSgrBGYZcMYmjIMfTAsSYeV56Blbs4qA3O0IxRczbF68JLLx
pBYlbVcSpd8gJguifcgUXSUmUHTBDMpTRusQ4U4Ecf1oNR1sOPP1mZxmxDkQOrPR
Zuvi5KItTbjDhT3fTcSqpIIDGeo3v3xbmvSVxzyy+pU+uY0Wztv+C7W8yme6Tzsr
fwHIn9Bw6UcCyO0sRO3K0lEB8RYBarlE21GeX3YS46eX7Sn5/qpceTA15THqh2uj
/T5+OmH/CQ5j/oggKxctx6PS2D4XlyhG6eLTfBZAXnmsAl0LtAgeo9uMWCPG+K5l
jMs=
=X9dM
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B4BAA59056DC362809388F3F2119881095EA7DED fp: B4BAA59056DC362809388F3F2119881095EA7DED
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DwvSwby3S138SAQdArIEvOD4TCyWo0fI+yqo5F9LtEksX5V13xFgSdM+RpAIw wV4DwvSwby3S138SAQdADSwT2HHeiE3R6m9m3Agfcfj1x6uYRkvovSDW1OKFZlow
WbTDwti3aA3oYfnjlqJTP53nj9BrmzfMJaIImKmmgpucT3H6hte2FDcDXj2bUhkk 0Jv5Vr/59L4RnIanZ7zBS2/axzk0JDGzgURZFh+KSV4tGuGttLWnWlPrAFqLPmLK
1GgBCQIQWGdlnMwJ7R5a4OfsWjYuRT/JWNqoBmGiXliCkbUyJO+I24km8plIZ41P 0lEBMbT9fjxCO3itbexnUmeOeBSCspJ+PlmTxzLp610Aq8Jjrx7at8I/wfk+EDgo
JDJOwyBJsf4Den9LDMG2AbznO99kVGmJQw4lX7VH/QbAL8csLn6QKcjlCxYd8CHD 8Th61Jt6qmsNDOrI/Yn4D9fSZzQyjORA4S8k0haZ0mbNl5g=
paWvhhAXDpf5rA== =kWN2
=H1D8
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: DF977A1F65999F4CDD721A27516F64D5932B8AD9 fp: DF977A1F65999F4CDD721A27516F64D5932B8AD9
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4D3RW6IFeToCoSAQdA3L+KQlNWzCPn3BegE5lSkmgoxzjjKTuTsbYx2EbnWxcw hF4D3RW6IFeToCoSAQdAE/qpxjjka0byA0qRiMtvCc1flWMH4EWBMmxJSr24dmow
qMGk4IV+PF04PXWOIhcYJJUuQhpMEj5mJyKEK4mvF9W3HVXqGjhKsEOd2suRDiXQ dyPYx4SALJve0C4X50hs8WTDFj9bdlVBAUi6ros42XgjUq0omiNcCNMNLNliXIre
0l4B2dUo6X3HuqOvmwVqVCaeZETTbV/ee3GL+LrStZhubQK64M0RlUQo4hg6m6bJ 0l4BdnSW0oVXJgo4GgLAw3ldi6chzxtKz2/XMiNo+T5yfIKDdqn1So/c829J2kH9
N58BF3ULsaCTvfhSBDZHimZrCrTcENPhGXeg2YQvd4qQyLZ9cLJox7Qpu9D4uIfm CwPY/vvaIVvpbjDQ2ovck6grtbelBuLS/pXG8j/SlLMQKWXLU8Yh5a3QGQ8+QP8j
=hCIJ =KNuv
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: AC9B0DB590F4AE2017C2AD836113AEB66C510C3F fp: AC9B0DB590F4AE2017C2AD836113AEB66C510C3F
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA3n4x8uRQRGSAQwAnPFXFBSKpzB1ERq6hYjgMoLZu1lbBzol2T1VlMzs4hua wcDMA1j++ZN0cDPgAQwArsAQFAnZIyrgbxv579qdfRTGavcrxPpP2bjYUHW4DF8t
QyoCP6LBvUtpGR6qdyLJKGl35KelFt/V33ooo0EVN7QBCySzfb+UADrSjeskcLoV YzgD1pGPqt3Ypq4dn611lY8RUfLZ8JDUlYQTC1dLjUrtRD24UiFwHAtnBKd2PURm
NG38+0g/Ix4SdS/R7kC20gosFoJdbre/TrBaVRUyTuz0vyVM+ww1I4mOnjhWkOdv xmi3LZVWZx9/ko+vUykq3DKGMeFkmqr+ZSGsjV0BMNylwJ543Fd6uuaRCymkqhTm
WY/lstphdt0g3E7o6ZEKdUvMR9XzQv7upvWyq1ws2ckUl6Z/WF1aHwBu4PfJEzIn 4y5nvVnchWHhv2qdHW8R5nbrjHhcx+pEsqhH1v6o4HXVDqwdb2n3Tkqv9ogbqO1q
6QsY1jfUWCcJ05UYNo8+tGZ6XOmXPB5wFqaCK3Kn9Vkzkf7e0pPEDQcRbFFRFE9X nKp+fTJ/H1Uo1fljdyrKskEArvaYv/lmxY2xSnDDTDcEuHUv1ES18KrGjflxIwRA
36ZP6K/MFPhXQGqkdj/BcwLzd8cep+L5RgZbDt2r0xby1ZIG0agPA7P6u3oyB5Tf sZYbHp+1Fbb5a2Zh6ySrg723C0lQOi8jWyr0pZmrFkH2EUXc2nLeFykYAaQVV4Rm
RYxFaw22m75WeptauDFioI/zMd7Pvd1O8SrZlj5o9EE7XyqTiZKjig9nRrfG3PdV igISVbrPqdnd30Ppd9KhKCRFVqzLu0TQvtafcEoFKCNi6wYMBakJOEZXYJZ2O66A
U/dEvvqE2l/+TdjWTD5KLlEYw5B0OyA3RAh9uJBqjemS2ev8+omELWpyKRRYjgpe DTrFRTYut8DufzHuj89iJ9cxeUCAlIcYS6JvKmjRCDyizzsNrgeSdpyf9LRp4Ba5
5If3oY1DQuz9FIntk1T21GgBCQIQBB8QxEvcoG8dPHZnaXqDewli8+L/T2Zg+H/e uRaOK9wrpyX1TPCnAfxm0lEBU+pqhcsxdM7eNv0KvYJOIj7aQzWgfC44hjlNoFOa
1ornxXKGYdY68piE+W7mbcIHyQ7psWBbgJUdAupaeI3z2hAkC6TjrWCnsksQo3nJ 7/O19kTASE1SrR+zZqC2H8WMG74lk63Uw3lRXPSpV4a2bNVoHkxMcO9byODcft9M
7MS88Aa7SE+km4BvJurvi/JMsjzEyuaMvg== fo0=
=s0ox =k5Fc
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 43DE8A01ABD706717C36018C48C47C125C022F29 fp: 5623CCAD4242CC3E0225A62986AF09C173781578
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMAx5drVN5V7yDAQv/f0xQiaSw3hH0O/RY3eLLcrUaBFIqMgCxfw4u5Xg8AQWT wcDMAx5drVN5V7yDAQv/R5AjSEZhrkQ8v1FC7zVaw2MNcfJQMiX4Q8ybnC4G2bbi
FUgoX7gTwjJYaorPVgDj6yRNuYvY6k5MVbLeR4F7YIF89+NLi/SyIB58hTW3Ti7s UL1Mydiphqh0tdjsPClDmYyVxFDCYuTQACw3HIJRrs4QCEThtI1gpTLcuWDcccu9
MhIPtkpQ873rWzYNkEzZ6tu+NcIVA1FZZO77yfr+SBz1Pu+yGOfzXjyVfEJ5qTiZ h17kmNGrOLoelGpZZr9sP1nVQBhc1T1aAGO0f3z/MvEbSMLUcp1+AXSLrtuxl3ME
ax606ho2PJL0DC/q7WcWZ1ggwDBXwDbhVqGScosQHuneuNuUbN9R99QXttThNGdP 1xw201q4571MA2xReAiCC+HGK8SJwpdpBr/W4YBajJB5LWBUbKJ0P411VIGJYRV5
IFgO7+0zt3sEe5JRHx/Mh78uUZaZAAeqv0tQcQrcbd8fU8SPvsJZvm5v87wF1DL1 VUrB0ctyuGmNqkwkqBlvl79eRS8N6CW0adWY+aIQ6cWGxcitKtN4i/BE5cIre5Fe
66MHgp+oVPXDnBvTOl5z92GyxCX0Px2XECUjidvhjlVRGPH4NZvfemDMNQRtlEPi a0Wa67FGxSI74MdN0uxRgbE7TkHBHhiHp3RaC7l3vHfs1LVNuoB3AoEcAc6Mi/dN
LWqFwkz0fNMbyIqNgvj2L3v+knEL+XqVScUV67QffbFiEMnpFrRflWhdgXb+GrAo QAhwAOWJd6Um4FBqIcSDe2N9gjIoqhg+teZVoF8HKcatU5p9jDm+R60fO4DRys8e
uJ2uY5U9FpuR4bQLgDbYNOCg0NAxUV3GvU4g/FaBJTDmsKw+7KuMrrbud3ajjHIq Rq5CPEjRVTDeUT1Nv6cgq9QJ0LmWVz3VUbHRhFbAjZ0rAzqpXe+HXDmOC1+DMTT/
IohiPXR7yX9nji/EEm4w0l4B2bgZ2VIAgZnFNRHH+5dQ+Od5+Oznefz25IKZ2zr1 aXsLqP3VjE8y5yDK98Pf0lEBrCUkCAKm/woq70tv53MjRm88DyU0NFvT69BPieH3
5nsEMNhnnnDADtRUOMJB7megvXDZBp4+fde7f1P+1ouNpgkGLBksnBeWyoDGnBHf lrc/q9Q8Txr8LzvOyjpS/mPj4ORulInMPc0n5vYBcxQQg7+M9P0JnTy+ckNWBkQ/
8ZwftqlB7q01tymYZASs Lq4=
=0+ym =gmlL
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485 fp: 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DRPQAGSQLsJYSAQdAp+bmqUtncn52593x/EnlIA3jpyRUb+YbR0heuFvZ91gw hF4DRPQAGSQLsJYSAQdA5WWyS8peeuXEesR/Ts5Gupa+bReYqJ3ocLw2tenrjiEw
PRV7peph37w54Bjbf3BQTxkJH5iBZm1GRb29G4dKQu6rdGpnxORFtQE+EuJRjtz6 za1udIqbwwgAdp7TQ+8GXdN/uErM+o66PE7DzQMz53pP4PLWyfgNeR0qHzlu5Zec
1GgBCQIQ3hHqEuRovjH2YjDn5F600DxtuAjWAzJ8bZhqhXqHci5hJgEhFplvojPI 1GgBCQIQfTaLmc6+U4G0QiTtW+tuUIlPySgagN2xZmVr2Of75mfaWSMQV2FbbVId
e4h+NeJX4VVw7RDZDqzNN8Z4ibwPjQEVUD0Y8qN7BoZQUOqIE94IosnFNQn3n0Tn S4laxU+vTZvZq7JtAuieicAA5fPGq11TVPkbXkbwbVLe/UfbUqnB1Vhjn1C/vKQ1
z7IBgpUkMdvAKQ== Jxxf9oTCSRduSg==
=+lT4 =M9yG
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 9F5341688D2F9024A15541C9E02949D0F7769E2C fp: 9F5341688D2F9024A15541C9E02949D0F7769E2C
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DqL0Ka4V5gcISAQdA5qFazez9ndCwr6TEFg+MyFOOaaD3xcNnNjfBpeXEOxgw wcFMA1kDHheI9SLWAQ/+IW2hkHvCThxNheQj0jwdcYF9sUGzVtfG69edWujpOcJ3
sKSOvs8tlVBLyeVkYRm4UZquyCasSZoiFenlqpvhynfDQoAb6q/60FDv2waInO+t OQIEaHn/igp1Sog6oU5/JWhNL+tq8+67WoOakI88+ljZYrh0XgolcaB0chnLoXAT
1GgBCQIQxhA59mLrpEsYdJbmBK04eK2vZ9mwe1wNDYT+V3wyku589ykcRjscHaA+ BKp/J3KyyS7RHMWbQpuBHsGF/YTpfyYSjxk2pzRgUiJ6CBGWJ9yDmo/WuNuUJl6m
X9XbTQYkxQRzM7WDERQb9JeUCPkmSNh8vW3EX5TwMFocsmB7+A7yl0SX3imDISil X7ei9opPYiiFzQCRUsORgUv61iWqsdP3uPqN6KTQJ5CELqhxyMPn5FWtFSmeVbw7
Ck/w+GKXC3dkfw== NkraTCD7pQCgV3dep6mUtvaN6Gk4LrGX1KtDNBp3hX/f723dFI3NlLqrWKZo7DPN
=ahne zndHBrMMqEbewbk4phiO1162ft3FCRksaWuK+CRtehswMElss16gM69T58w4bibK
y0QCrO4FXQBPmGD+upRN3kXZYvQLIIJxtjdMO90ktqgyjSkJ6eSh1qJAmLsjs6L/
O6Uuwg+SRtZQDipu4ItViOFveTEl2sJtD3k1aNWkkuEW5PktGrleiePfiD/Uh4M3
azH1yQJNnAf0SkoUpBLboQX/LYhjw0t7ifm14VU22NHHq2yqKQ0KdwMcp3y9Q3cn
jx7ncqxuYVP1mgV9SHnRmWq8LMuYzGPAkeBqfx3dX9NtFEMQLPcczhvl0ujBbEr0
G5McwY6Su7XC9qwz4PW4yhERhJb+pnUQdVS8UJLnFgGt+yDYgpom8KyD1eEa/m7S
UQEG5qqrdo7rBX5udl2QEbrslew+m2AJ0Lcy1iPP1Xrp1KLaeDDHncYFO+VaSQM4
5fHyHwB0JAW/5V/v+HsOZq+kARm7vxjdqaddIf1werToFQ==
=lGmU
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: F7F328F0E4958E4C785977E23B8AA0BAABADAFE4 fp: 17B8FDF68AC123EB666934B17D0DF6EC048A5D77
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DbFrAcOA5jGISAQdA0D1+2NCTCe4CChTZf9eSjOXiZU1xLypyIc5PGloNFEMw wcDMA195cwtvYnl1AQv9ECVPyiqv8m+f44zOhB4+zFLwOmaOrW+xRTxJF1yDft8t
owiGb9QlVUSCISXGFQZaQ9UCv/PzyzldSvz5QSP0OqQd2EGAUapd7m+2XbooiDPv NHayPc3He8+BXdS2dHerN5hDuH+ZoT6zFf0heJGLN2KHH6zRjQ95FH/SkN7Ot2rg
0l4B6kW5h/ojelU/rW5HABUVfzd6EbivLj/DljoDw6We6pmbzXYuqA5nKChGAxM8 tC2CmmuDxnwKhdngv/Sr4mtdeUj4sQtmsgbAxKuIxMy1XO87wi2+lepl6mYaU1HZ
cYVMpa62yQeI74U4HCUhenV44M5aLvlA58qHdxsoq5wctqBb6PSZJnY926NpMPg+ Xb7Ju/Z/z6QEKi2WUhd4MlLlmbKGJ7f/RXYjXe44e2ZyE2rwylMHPolQ3XwEwqUg
=pOxb vCX85xAS4nThWX6DwF2t/LmW36vJhj62zTJU56Hns9RuZAKgIVsABZWwT8quOcX9
2r5dwI3lmoaY9cUQu6hLv9dRsKRlHvCveaRJb0Rq4aWkU/EIZgEobMjIJbdVDPDi
nG2cZ1YC8gGBNazt1Ypy7iQOpQDR/0yNOwvQksveKigpiyuMOkdrKITsD0hVh9dt
RrqzHvRyZkiEm5KvDP4T7FYaMkTG5z8gd+0gp9FbUqtdivfaRr8Ewqz6DL+mLGWx
9bH88IIDAtZk9sdkYs+S0lEBzvqoZQN0QUhaJWjCfbYk3QhjxRifEDnzK43q0ESZ
KJCMqB+ujsTFsZOEbk2hdbB0GtkQ92fazi1ADbg9eTI9hyI0nYVHU86NQws6cYol
jQc=
=2xds
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 659FDED43DE155FB772A339B343CF1218A664D31 fp: 03ADBCD31737EB474A4BD235CE615FAF927A2054
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA0JLr4yo8A4WAQ//Wat8TkSIAFd3t1v27bOX1MLRTcBIqvyfWB9YIlQOuLCz wcDMA/IHQvF5YsEcAQv/UMgerVrfVFuNjIurmlsc3lTz4FEa8SWDo+4FzWkcpDVU
4K4d4zRyq1G8n2ubzOfRGtypMkDgk2p+Q5ZRK4H/8Vh5dJjN9zyZacAo8ncQNXuq oeGq4S9RoX80RtzW6QXmHA/dwnNxlAVFivNykCDXYQmPsUr3k1VX7lENWaDu9B+D
vxxI1BQdZi5o9eN5ohXF8LOmQ/BqQn6cdJlFr9b285mqRQVkf9tXsoHW1DkZpw85 2Z4RxoPwRN5jxSo+wFj+y3G1IuYFRaAk4Uy6tc+tG7K470JIzciEkN8zVxAuhd+M
CPKwMnc2dmxfRhOMB4GpxEyXMFi1l4nC2AFdPVl2W4C5nA8d7/4Kq5WVhtQrM7g6 ajgC3+wbRYRYbrAZT3t4NVoyDUTAU0lmTlRG/hHx/uLCR4QItL5lWeHfulKX3gQn
KAJve6lCagfmWa+2tvVnhWyX8R7dWjwbI7fw8WcUTzypt6XeOAMjL3pHKxEFbZiQ fq4hhhKMC3oqrdGrqoPL9RT0U7dSAVjyFMCgjWDP8IFS/PcK2tvJlAYf6vlm/FC1
ed8ziYMCl2zh5lF5PmpRUwmOeAl5e3/3EdjAkgVAgAbZ/a0iWZ+PYb0Ewnk914Hz 4/N5XiW70F/jwXhPjnnoDZsd/P4wQUdkaMXjNtC0xWhOjsopL4J00KP+i7QLgpg5
ki0ELbf4mKQWck5wv074tWKUql2RizA7OWAXsu+e1M3W5P7BzU34ZfJBnc+e5ZMw i7WmF7FcWUcKpxIQOuKYUocsUjOELXIo3cBTsGPXNZdM/thE6kM04kHIJ3P8CiSJ
G73TH8mMtwJM9LYWYMi35HStQeI/F97Th35nfq1jM8ZDZEuvOgBNHNYyVP5HvrgF pzXOmskOlUFZ/btC7ctwEPq/BnADE54t1yyaN5iSEUdXjn9izv3BUyK1GVlxK60V
p4eVBIEh3h8wycR879RA+WFO9wdaWbhSYM+jd0bPr/cn0/y8Y+zhcrJ1fq4HmrjZ 4LRZ7FrAWE2szXRsLGur0lEBamlOdPrpe/u17GEK5PekTA/s00BoWfjXmep9j4Ti
5eamajUkB8ekfeiZhlAc2e7RmdRtBUACSAkDYSrwuwTGgrhpJLbBIXuxJEnm2mV/ 8LxtAoIgVWN25i8uYLulqNHXT2eT8sWPHw2YEVzNGPaxitsDEwUsOJZL4FXmu25C
YjBZI23rVesFge4O1zNeMKwN3DFiexBQS9ymMmjjvV/ga4VbN6ifJsIXkXCJ1CPS g4U=
XgG1XDWU+/G9GViYfATu/h6A0UZXs0EmK7rTQ/Pmbb/ZHnAV3/v3+ZdmYv4HZvV/ =SLdk
jJdGOondT9jWrtfH5Sx2FdvZgb0NF+BstwE1nuZFEPiE3vqugy+YoSBWrSfoMB8=
=b2Ba
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 93593B8B0B7B88EA2DCC99F9388B6A662C356822 fp: 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4D9oMBxyVlaokSAQdAxt1SQv7fV09MoX/N+QX9u3iPPFJvhYTQKd8FZYj/CDsw wcFMA/fyan/DNa3uAQ//d3+Vg6+kbssPoolgUhc1vcd76ZXQ3MbfJdUpn1Y38Tsh
EAd/KJ/nRYivedukLz4BIb//CJeHmRYRln+Zvpfv948W/RGV2/zqXRuFX8oArBEx 1Rxp2m+CHSbp0a2ljTFtrbyvcXE9Wy4ovjRXy6DR1JWOpACWO16D1tQY59xcw13i
1GgBCQIQB1JpXVuV2DARNhO+yfWgLBh5KHJUlQ/avG2q7fs6KJZL4zKOVtfIBb9G oBnnsBY1vEutckPPK5F8jRF5dpNfsSuzUGThqVZbERZ9RwEbOsQH8rK2FIXWIUDi
xx1LqTlbxONJ8+eeMn4yG1GKMbWJHXdDyEo/nwIvagr/URDl8RsZ1zIx0Xhgv+dI Kp6I4rKqH875JkEf1/xOtZ3FO73QY3OEelW4uESKhteN3Y57zeib6xCv3K0Fo2LQ
Ap23XWR7rq8LLw== WqEBO+w5s312eS4eKnSLUfcbrD0Ct4Cvqqh1AA2nexnLcUjue4cOTXPQeJ84rML+
=KU3n eRp0uvs1gU+fB4XQiaPqKhGqa4NRd8N6hx+sOLjnn612CmrFs3q762Lx92MuZf+R
-----END PGP MESSAGE----- AWdsLoiZq0jFPQTEqPUP1RdCt8682y3JPeig+QV5XpNo4rBXGOnKKRkCXkUemWoz
fp: 0143019F62469ED5A6A016C219CA764D37590F9F /YjnGv4cFJf4t8MxjYSCKFWpONbmVWhFVXOnVOolXSUHtV3fI2toG5b94g1EeQeL
- created_at: "2026-07-09T09:19:54Z" Wuy83nyd8lm0OmPL9gmCgQVCBrP4u5tVInWyyWhF+I/CxL3wo4J3CUpbD4WjsY8o
enc: |- xke0o5uU15B1SlYxPBJLmUfNDiygjZQyB/lOKZ3BI5zuXUDJyb1FcP169WeQSUZP
-----BEGIN PGP MESSAGE----- EkaRHkVj7pqqyMbjunF/2ZP7r21SYk88rToinH01HqQV8G2Fmxw6MBpbfU9/91zS
UQFfxsGD8sJmSk3XjigjVeoXLkO8KWfFGbm0lCoa+TI0MfiamYEMhJPzQR8gwtxi
hQIMA/fyan/DNa3uARAArTrtEOKSRdUCBku81E/rP6dHtx4jWVbRFTq95nGfYGrW DEsaz5B0GVwrbMOHG54MqPUGxPV+cHtnuWxbtRmxG0oQ1Q==
W/UzXUpb72OUdmfUQEIxRVaKnf2+DQR0mzoHB5VPosJj86gbk4LspJ+BzDBgdM9a =cPOL
MDZAkLze67IQmf+EDQZd6SdvUkek1i5XhpMzqO4Um1+IQFK9Y43q5l1prnY9Dq5I
s8miFcmR5m5SWkNr/F0Pec72y8HR231Y1MeAHxpTh85MtIV8sm/Uf3f7FWe9DIyf
Optigx4qTSLngslr+TqqKLHbXdP/Z0hnIsfxs6An//dpcMz07p+NOnTNUyd43dg1
p/XLJNcz5USTVwZ9PkksA0RO47STdtBLTYbnhvKBC7bYdcVVgQHhx4AMGtlR/Ccz
Laz/Rj+jcnF1qFIQABOk4nC+D5mrSnb0vGeY90jGDw9syqaiV+3FGdiB3faRK8e8
LUXlyotpznQBhFCqK5kw1+hBDVqNVEA6EtcrVNGglvuDE4Js7RyWl+VM3HlKqPvY
rpcjelXgRTr2f3dF4Z+0m8qsj6r5Ox5+EbPXtpBERmD/pzbjYqcTL4jvAtUf9+XD
q1VOiucAbm6MLYdCe8gg5HOyz38kW4ZRXoaE7l98qsT15TfkD9DwcGylieu8TYXZ
a4dS3aJBrcuxsYA7LE68tvB2TzS8abuh8jA5pjLKhGnK91F2+jFADSaWKsTx4e7S
XgEqFcbsvDmaB8+3C2ZE5TUcnMGjLJgLK/9ssU9bUTm4eKKfiFCZeAZD9mJUE0qq
hAihSRNQpLrcpDFGjaNn7wC9cqM1QCclTzlWS5N5gfPz7ULlyI43DhuOGRN6akA=
=KVMJ
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 9E561083EACDE14694C73A323A2F6C1D153D753F fp: 9E561083EACDE14694C73A323A2F6C1D153D753F
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA+cOSmNXMUmKAQwAhybBGS9zA55NOWk7Ofvx5wxbgz0dNHM3iM6qC8VRe/19 wcDMA+cOSmNXMUmKAQwA1PRef5Kz4hHgEmui6uUioadp7ogQ9T30l2JOPnghdg8s
QppLz04oA5zggkG1QqWaLR7ki2/SLWa4dSF2ag05OpVCvieC2xns9UMbnRmkQWEQ YRuOgjirBJqkkaBO8iz+l41DvTNQHAwkPV2zoCKCpHHyeM/hNy0LK8QfyBadGoSB
KHfWSF0HfpgNNkSj6Bc+TCpdszNclhtsp3SBfGQ46HzBYi/VdHloigqS2xzNfLKg ENxnre8WvwCQAl7w1jUzy9rR5ugVWd92K16DE49BMR3tczfmOt4GVegG/CknJBvD
x/XDaONquoDlg666M4YrIFPCG8jNSurLttOuS/KWear5ExmtdQ/E7lsb7QbXAEc8 4KPcancT+KW5PBOsnefu7KqEMDVl0wtEC/FeCVQlg7pECIcrEqB7i0lfCqHJBi0x
Mb/WXouAVT+06m3jzdDvsAn2x1rJJi7mqJpnFu1Ojck0uyUKB+0K6QvYcuWEmfUH ZAb+QAKyKImIToxPbSmGKlIbnICDlHkLrjR+b1lee7FysBWswlXC1I9sZCSx991h
sKiw34S4UQJDVq2VUYPItc+GhOSM1dLi6e/s1OM2KzerdxdvvxD/Ux/qnRmyJkDB /bCk5sX9GgRVkeOfSd/DJ6jVIdxMlb6PtI6Yr3cKjdJHxroLdKd9GqT9TsyKxsNi
bJvwaOG5UzVELIjQ1xbDjw6I/BpzmaTIiReP2p83zwQ1tZkiaeng+l7jv/tkRqDU /6IPo3ZiNsKtVj0ax6V49Ep7+0HDdFJMKosG2N5mqLwGcyl5Vno4PD5lCiCyLAsA
U912FVMKtby6RVK2c4fSEa+vawUQvnBWTJmFB4F0oI6Ctxgf2loyCL0oPtXhvsRC Rpp+KUTTihWOcKixdmrup2+IfgHPx8EwbtCtl2cS2POKQCA1qZv6UK5qoncx8+ez
Ez3XlMu8vdfl9eog0qn70l4BTSJF3S6e1jB/6zRzTWTlDKGjIIGtvLh/4BhE+QuB /Sld5DXucNsYDto8XcGs0lEBmksc668Jrcj/PAL0pXXTLnziuQhFMhL/9T8dFjvB
giJ6uQH+Vloz65ddRDnzzmHoDrZJiE84+V4citSRu6S/sxEe8mj565PN3t2Th85W MvMVCFwQc4m3/ebFTddsYtlN2PF2rlSaOikijclN7hLT9bUPQJVr0SITiPolgg0y
sIffKjyvAfgAkimzlxLF v6U=
=DCce =KacW
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E fp: 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DrMuSzhFbHkQSAQdAWCM2aFq78BQn4+HSK5w65cXzSkmXmEs7NFpJvvLlHzQw wcDMA5bUWViEqX+EAQv/SyHaPsOtqYugafiYw6M5pyIlBdUlVDgh19+e6eWjVLLR
SsctuSJ/HgLDURG6jxJxBgGwDq3DvfvP2HdTttAgnnwX3fsZrGWNQ7Q/7/d+tQTr nwrIsgHvWGi4+/10pSJGXJIPXx0u2a7etrodKPM1TjJLyMUz2MEQOAVv5pPT7lE4
1GgBCQIQmhU5eN/ld+/gqVc3SL4b9XxCdk1tMV3JqABj54AER3eGgIlpCZe160I1 9KESZ/c41SSnjmgS+bhvTo6J0WAg/yMzGNahNAs5ZPqSuWWFqLIoeiHQjvPPZ1eF
BkCUnOMznWRWdJylRDzNiGh2lSky2G17BPAuINw6Larh/Rqm8XNx5nPa5SGEnM8i szo1wqKZz/Pe5gNEVKenN7+EhMSU0Kzya7U3yErxsjtkMSf2vOrlKkXyuTgsiPXQ
jk+oa8SAFqs6Qw== LyrG04EnqRo9AZQgR+3BvOUxAoJApjBgeIteKtqu+qNI/bHh1f4EiVrkBk008IY/
=5Dx8 DM2qIiX5/EmT0l0dtpwPYbmfdqnKqUNygE3eGiCdizmceTnkETHatX73g7UBsIul
3BFWSjD7svl3onhocygIo7aCQVgDDULm+t/SJstXYIh4lrjqQmswYM0VDzfaiCne
u/lrdBTvSSlnilGk2GbJNJx1oaUU9gERqYYUdUTD1t2/JmAaudTTqsHhFsKWPnqu
lDA/idHZlfQeFexW6gBo0lEB9XBd/jzfCUw798EEuvgrMFre4UGo16obVjnxWrJ6
WLqbDRNWPzT43uAAW2Os9aezL0qglXcNX5dI/ve2revJOyVsIt6CkxvjlzJiQPZn
q4A=
=D4n3
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B92DDC9B908BF3917758D228446C51E049AE38CA fp: BA6328948D50175F196AAB5111F324603D12DD56
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA8YZutSkx0fiARAAw5/kBlIIaitQTtLY6V0SY7s/wisp0euecyM/LKJ1ZUh8 wcFMA8YZutSkx0fiARAAmwvzEOXs0PBK5w7h/38B9GRgmFCv84CL7XKn4uYXW9jA
Ripi0naU6Sbzn2dDkfEcULcjknc1MWdLIaqgbUgdNcpL1U08s2Hnz5iarl+9+GBY rzvSjj+dj0/cIjCLEo+6RqxahfHqTsGPlzCtEm+BI9mJX8RBpEkclnkAQC63EO/h
/VugptmuvZsfAWI0CvQbQhJ6/NnTB4rAmPR6ZXD6tRg8qg+AI/GVpS397AR1dFtH /vl04Oztu3Sg1ADTEeyEHvx+bhaE1jJ6LYcc74ETsJNQqTJmAsTq/tme73pEWHpU
e6Es2yzgAkPcgkk12xaAYbm2zrFuqugDGiEjGpC85deVwH+RB/Gxl2QAPNEbF867 SZeFg9RCs3iFLGG+FkJsoOv+TmUF5u3NzAz7DZJi5gB+LgzJ0JukL1LAQ3o+un6e
S3gUOqDxtjma8m2WNWTdNHIkcgOMX6wi4N45rE+abX5y0VoGV2LzfSuU6UAsYCOe qN4yZOhc8ZeXVK9X08MMZ4a3ErsWmTXzywsWie8dWxDAA48n8wJKgt2xExygywW3
rTfmk7BIFPYvwUuVWMG9k7uwlwivA6nNslunyP81TlsHXuTswTf+bcb+xbwCDEyj 36Ugk2WNfWY4TlrXYNtG90/22BHOXDRWTrw7NrHUYSUf7MzhfkEu+IQNYtY0um5D
jgCrO6bBzNRwopldWmgbzgX4F91qKTp2enCZPhXKgCKFsK4/NEu+i8/yg595H5Na 9aqwa6mLComBuYlXOu5ItPQfy0q+TF5sURXLx45TKH/KtQVVEJMbe0frwDZWLCsh
Ct37BtWCa32tSy22/SW1HuMnvoGERw+KNxQFF4vYy2b4WKsWjNB/1rVaon9p3EXm GZ6F4X1/ddxlNBOLPm/ysBA+9a0fvNK4tlsdeD55vkqjY8o0iBK4GfzNYLGSxhs6
19ADLQAKYXDwG9tQVvQ9Ltjn6jdtSUTCaTp/gGJ0AKs6pQEaTt0FLMe1CBjS/MWB AiMtGAIhDQejaldsV3CUg7L2KSA51KPx7Db7FlY0KpASPZrh9ADePbkgv1vBNMBp
JFQBkRfkzjFCgIuG3TI/uWWJAlwgQWe5N2zlbOxm+BOm+g9VO+UfTv3KUWXkhI1c pxDXdxBLakhwgruJEcMQ24vjdNF1U2gAuzcOMmUz4P5mKTqgLoBqZmbAuUMaRjm4
vpTz3jLLnS/rq7WLmWvHHt4gXk6Zjlrz3qo4NaSSWsWHTFlaFdc67O5ZP+oc68jS z3D6XMVFhWIj9HSesbnOg8REEfh7PwMgER2QGSyolTKomd77Qa1DNw/RZXyPI/XS
XgFEPwH80HGqB+aNCJgZ0Zb4+/zBau3TwHCgduBYGqSXn/lnNC2d8jloQ21y16Po UQFlSb9MVVjmKswCvAUHayjpVimTqBQqmbRcR4PQsLmKuylC/mueAlcawfSjjKli
b5qXjSUSQmABcvEGZHrJezrWy7adZapb5kwEfNTgIHRVeC8xCFS7QZl/s91DQQY= vW9jMuddQjLJAxih1GhVJbLR6xQZhM/3vzG5Ovt005Qhpw==
=oLTt =vQIB
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B643A5D780A01F24E95AA100DE6F8E2C149C3748 fp: B643A5D780A01F24E95AA100DE6F8E2C149C3748
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA9vEXLVODHp3AQv/RWtfW++ecd/3BWzW3t4NFaGCOdbRN8B2oVmL0i7qXSn3 wcDMA9vEXLVODHp3AQv+LOnf8kWrZoWoxnED1e9BDtuitn8Q5AVB07e4u8RA+0oD
uIB1orFkqBMw65a8fPnuJwsayYkGNHUt/TiFns91BZ4brywAtYrbT7xFHEY/8iOm ALOruldWTMzEWMzfZESz14gTF+A7A5LOemmiewZwjzu3QSeANvwZfItjeqkm4Vvi
D0dIJz14zGf8JtKo2+pwhhi3HfVX0l65y9GFOIBemX8gArwoxk9OZnV1E02mBsCt 3CNB+I7KmZ1k0p/RmKBiPqWjlFYLplh68e0Ivc63R6bwfbJWmYPYjm78oFqq7HTs
hBqUO71TLo+I8jmpcO05qGytNU4Qgv0pwA8SndEjZgC90BxtD3xpdIZ5SPXDxHzb +WoUkSzmZQdWhVjCG/qtvA2pEq9kCTzIqgPWL+8+O2TPdbZ+xbYF2UZbvd/UQ2xI
zYMl6NN1m8kc65H2EFYRqyHCsen+WiBKnbZoNNaBnrjuAt57ZgaBiKaPq66A5YVQ 3VXAV1GkKihWaQmr7nVhH2QZpw1Y8ER1EuixVXi8LloiD+x8KyA5hbjCh3RRvtMr
2E/rHiNHveicmlOJK6lgb8qb0FICVE+k/6HC9llpGifso/Ec4v2t/+oKqj/468MW UyphedMIQLFkU5cf99YvD6gqqAcnB50yX/mPYtbQR2RzAUuppnmyUg4O+ouhmL/r
/BTfo6ofscmdqDQo9CmSee8m2V5o7fS9mI+wdnhS/Wo3LsGmQHQKmZ/2Y2/t3xi2 CJC1uiRabspZ7VDHQKVyPcjP5g55gZPtoJJqJrkPr5rBIEE6v2UFPq9isUhn4+tb
yJR2tbKNjRnw9U0UuK8D9WV8Ab27bB0xjrvaYpOrZpXyyOhQg8lyLS6WI/ctZyMb YqenVTCg8X+sgjiqeEsyMKNCqwOlBK//mNcXmVTJelHQzRJgrMSzOi+5yb5whgNs
0k0oH1qaD1s9j1oDNNx50l4BSxUokNz4vJQI2nyzCrUKbOogcssTgzspQdeigMFV wlwR3w0EPqRpTyJu8fxw0lEB4Y2mF7FWiZ7GUe/RiOLak92tja7VWt+xcr2baPIt
qCslWVZ9bL3TLRomC47E58hewj8ZnMGH/5AsOKWVCL/7f6Eupq0n/1dKi/582bSA 0E1XpI/aSrA+sReH74iRC+unmFRagkdo/cUYfCX0WT9ZKAA5OHYcFBOCbCMkTX9p
CKqo4VXFNwKKE/56ej4L u4M=
=PdDY =GPTC
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C19A7D807525CE24443CA9A49372E896B41FE700 fp: C19A7D807525CE24443CA9A49372E896B41FE700
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMAztV5cc72nziAQ//YFptDd/+LtKSzESuc47V0CWzr/lhMfuz9qXDOavEs5B+ wcFMAztV5cc72nziARAAmlYtXpJOJv3KzfYdO2opekdIupkW4p2TSLaXzKsmHaoH
ADCytBBLa2t5H+clsNmoPkKNKTSjH8n6ij8korFRF1FdUWEm17iVllCvcJQlkkIJ wcz/5M0+yJq3UZcOpcYZ1WQt+LrIYE7cNdh+tDEFohYE4kLHFRJYirdASgd2Ez6K
Sjh/H+3qs8nBqzSUKihQnomNzpag0OjvQkLO7iBfU0yTqvUEf0odyn1ILhTmoZGW xZc5h612MS644uSf2c7dvyEniOUNtiyqHJadL+/BkXpdECvfwDAuff7vrYgPMLOI
Op20c3CNjyl0/5PcHa36EavK88f5kKTpfZ8425sVLDGzy16Nn3p52HwMF4ZI0+kb H3pUD16ng+7cF1mSq9dnoKGJN+qajFT+3DlaZrBnSa3uMFAQw/SIGknIGpBzI9UJ
wtA37M4P7CzZ5u/D9bDvKQHcmLsiNQ6f7qM3bkFAnvGMFaBG3DMtfu8efI+RXa8X ZV9qU3P5+/3cpEq+xYsRjylIqzxIbhV4OehIgISFdh8MvLmPAxLx/vEGh2wHyPK8
oqqNEOLB0xTBtPu6bO5apWAv2VFsY4YIbCyCr1Dj62kqAMRexawrqpYvqA3tcVna r134kD03wyX6Dkfqe1QkTLcvraAEiNsuWW39MIoh61mFBD+bx1SPXAMkEaotyEhA
dZQN0MReaw1ugt65dCg3bMQtDmiuIQMYoMfIf70gq9+UHzT7dVXkulumQZe2ZUBV 0Bg+LuoRkoNEeghXvUz7V7dP0WfufHjuWY5mNHLBfkc7jbx6ETWn1KHZmTMrpFno
XheGOUZ2cwBIc1Ym+fugco+wqNJdmMaUi8/SlpA9J8/Q67XjkPkA6L73xdKpYFLt S46qpZnacVGQOcPs8PoOZ7FHhr6GMnHsZXdTkVJW53PrrJ51Sf6wiTGq2XWIcXjR
tjhuda7wtv3wIlaNwUd0oGaX8yAdTA1fwiJ9A5eEhIQPbJe5jSGgjivnYLv6iWjs PIqfPej9JtWp+dpuxmOZYW1yMwTMrr2lsxQ1afEGtTIyF4+WYwrGiqj+6o5MJ0f5
8oK6occnbd/xraRf35iySH5WDQeLO2O5gWRHUFmpSSVSCGQEF5ML2WIhvuPG/zCF MphpD7iLwJTKo3JW6u+vuJ0um1i3TTvlhIgxO0vQZ5XX93rGZydNqnPXtJJk9wV+
DWVWdoHNHUFU8a0PLt+TitR4rbd45b6miWiqJtJRXif0le9CIWm5Hn+VemWmSvzS RMZfGAwy+xCpcW3rpmtzLm93JyU08ttlpfpcQKZou+/CUyQQHWTtvjGN/ZpXM9DS
XgGbeY4ePnjCwakRjNEqx6QyhXvZles5uxlyzYUnHAXq9Yty8RF1U78S5Bjy9Jwh UQGvX7FTCvLwvcIvtn2wHMuWmnHSSALrcbU+vY6CV6GBHvdsl/ImJ9Co0rq+M3VY
P792730KSnZyKii9T4D8Ey0UihlKa/GPfGPnGJ41lc91s5k2PjIIOnmnGWpkkQg= t/tolxsGPSRO981BgWmz1BNc9TahsosWShFS3mTrwPbMoA==
=Ewd+ =v/V8
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 0DB51A7E90AC6418B7DB83724D38970874850C33 fp: 0DB51A7E90AC6418B7DB83724D38970874850C33
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DZmNQj/lmIGsSAQdAQJ4CaKv7cEM0/feqljuokfuwIUvPLb8236ohfhp1GCkw hF4DxQtfVaqAjfQSAQdAxexVKG464D0ioLMokAOrzNihI91cFatH1FTMJAb5fzYw
UgU8oFDeKBByof8kO1kOMG7whSRciKuDO0XDRQ4TnrDwZCWEXOwaj3Rx6RIU+Xgz 8hpnBiccDrbZHotReamlNaoJt7jGn0Qbm9NtJBd4fmui+KX1ebcbc/8BG+3mdRna
1GgBCQIQbmW7OhWiYcRPOm9v/qupfRIvEi+CTdw8br4tT0dEWdMRmpP0Fd9xK7/i 1GgBCQIQtHx/QUdWkOIlA4HepwkxbW8iQx43na6T984cKerAsy76hQpualuwjol3
/dj3Dsp63mVc26SXuyCXmAtUl7fwhXKEOoWlm/p7t/vw/5usep7PPVyl5W7kFkMn Vo9t3dFzS/AuqbOY2wX6TvWrXKvamkcKhlmTaGiqVikYe2Y/tPWhB4lHNSMWheZB
VrRDC5MFhXy3BA== vVHnbym+rixhjA==
=Ygb6 =Irjp
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 73C2C9954D1BC94DC6682525D2FA233B52AEC75C fp: BF3D5CEA36DB58AAE1063D0BB341078652D87924
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA6r2J+JSOMNuAQv/bgybwwuzqnrQJSGvFP1VhNyr6IJuoqYKq/qcoEFz2WXp wV4DZmNQj/lmIGsSAQdAWVdKmqeffNGzocmRTUOVYEAN4XL/z82Dk/IuCY7ryAkw
DDzshYkU4CqIUwf/mx2538QaYs+LmQgJYxudzUvEj6S4yue1KYO3KhzZyzmtcIIM dCokC/yI07J0fj15TKnetYCdpa8jTKTXoc3Z4uLSn0T1aKg1+FtvoofC3DlsYszs
QP5ffkCHk1Go9HTyvEAbbUyCR2bSVrcrbwLjGejy2aZbwDI5Xyh+9ClMs4lX2iSp 0lEBBGlM+zxriJOlOkPWx++tvOSxAKpp2HPO/0ElcZU6npDK69L7G3kIW0gzjQ5Q
jGwtUkaTxVAQbdGHhQ4MMk242H/6z07dQSpYx3MteppgU1/IWpqQwxBkdZCYJFTA KH2rjxPC++ThCFhAwwjwSLbIryGM7vKk9FnCgGbran1t5h8=
FQA5eBcALhhuD4TCHNYvUYEMtBcLdpqz/5ozcB420O1lSxmbue14Rv/d2FzH/AwK =V7BJ
dp366NMKh4pM2t3BVrfcFDfEneunFquGevMhIw3sw25gMf0Yg+T3ttBBpdfXi5F9
Rhls5/5ugeiWvyAXGPUd3mXAoLCqtTG4Y0gOf8QdW1OyvjFUKx0fCTUVT0eSqZVj
l/paxcbGgmwN8jSa2Rpn+GwGLrVhU36oHcA2z7oU5WEPyBg7XKgcxzXcYHBHSyMP
+JN/YYgw71o9X02j6iug0l4BjA67O3UbXs20yr6iwsYci8CC89lSW6co8nMyhFOh
aMTuU5HX4yKE9J0IJHtKUmyoMrDyjxLqmystgKUOHgQ5KoqGbjZcJf3GAcrZDy/C
/VGkczH0U3uLtBJExrOR
=gXUz
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 3511D1A5B7B2AC97BAE8AF3EE758168C000375CE fp: 73C2C9954D1BC94DC6682525D2FA233B52AEC75C
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DAQRCY74qADkSAQdAdDTKwEoqoDKtaN/7yyAmMrGLk1Xa0p0wr9g34Myien4w wcDMAxSu/PO9GEkJAQv+N1ZJ9h8PkWI9MuX5Ba3oAFxRzq6ghc6J+8nz1J64FjzY
n7W+W+OlQzZtsaDHxmN7vZy9+YLkm/TjsPKvwnfHjicqWmZLMsY56AGGLtESl7UC HI174WHdjIrD3l5xC2//9HybWJETV6ibzJ8bNtSiK5mBrfrRj6rKKePv+sp1lr6B
1GgBCQIQ7GB5EBIpxLzfAqIwMzqVUIY3QpovAoFYbozfUthrgszcrPF8J/F9pOy7 YVZtyWyjMaKSVtX5fmSFxrBxM1Y/8fEuBp3O++SzJvud8P49M+FYB6/nviB/yDy0
Cw+9r7IzCcddLQg2Oy3XpbCHoC3HwY8u1xtAZhn5R2GDr7Eb17IK2U5lTXQsaBg+ vC99Bts7txkjGURKAXQmycGRVYfLeGDHWDP7IHR3LVOPaZ7aas1waYLk/ZVIL6PB
R372ZJ1DwUoS2g== LCOWVwEaemFBfYlfdu9Ll9V4j5aHvzDh3ZKbGB95k0ievGn/KA+jOnW2EUNa3Rsq
=55V1 xURs6gnzX0fo7tSIxY6AXUl/B9vQwxD1DDeLt/qEvc4kPmGdPlHME7exndTDEocZ
CyHk12F77BK62zTqyPTdQHy+4EOxKpIgrCUhG/QbCm5F1FytD6yfor9GzacSCoMb
Ot6Ute+sjLQZFO7vaXka/V4eGNJbc5DOFbtDqPVcuUKbdtVVYccKELpCaE0AxBGj
Blc/eyeZo4Wluh7tHbfw0lEB2DcyrFcBRDPBSeAybsTLR6UC93P+1cA3lRotn7HI
h7mhHNGeohFBXFQzd5yV2g0FAzMwBTC+FVIOxNLONVP1hmBorI/R7PwOPDXDkcis
Dm0=
=NVU7
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A fp: 13E169CF5C35EF164628764AAA2EECBDE0B38CF7
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMA6N7K3Tfl3HGAQwAtqCcyt7xeK8dOvMi6WphW2QRyqUDphiZMOAgutE4krcq wcDMA8b/EJ6Mi55zAQv/VYLKEqNrBQo9iohdC2KcEng98V4Ez3VfEKQjydB9T4w7
wLl6myB8ma7LJJB/4t+MUlmQIhYQ/VDfBPE+fBTU+1R/ImU/ewkHrkuwElJR2JtY nF4JLq+OF/sW7CkAhOUssuJct3zEawNu/W7HMcbtD5XWsb2GRevWFv6w1VG2ANWu
CIYfM5lvN/oH4YMcTHfpT0knU4L1Iq45R9F4uv8UcVZmVdup1/SSPhQksscXAxio 5UT7rKmSBw20gFtxw8VLFX//CgZCs+cN0PZcMzXiXdwr7HwEgzZbZc3TtFtNUr1q
LD92s6NRlN9PPAac3o5WOkbfVkHIjghMTOWgUG86BgBQSjDY5q1YZ9d07d0+pRh+ WORua8Lswhj2Uu52euK5k0JUJdzsxop/p8s2OSYOItKl2CcqbzxLngbMcDIUN3vt
mJceaEhkCF4CHROqqOQeJzjQhptkbGK0iBvz3DM3tkt0DW9gDpXyqp0KPTrHAVFx /8Yw9mnKGsvaKT0B7x0bDSMXknfuq4No3HUH7+FrsIDhs90XD8HOqUS8eaNKwezS
U/OlwGpW3bV8qSdRM+O5LzXWLYNP1lX5QVI252Cowdh6FXgczxIPjWztCiMSahBO hhsPlhhSMDczqKCnu4NfWTmDgfiRjR6sNlYngtVGnseG2JKTxC68j/5LMrNOiL0v
7YQ6JsXmrkgNuSGG8zX0+IlFwqPzzf8ey4tjwPScOkPFsFDE/PqisIMTd/vhlVKK EgH2EUGphg0yupTeuUsVu/JLDvPq6DRzw/egwCwfeInS7TPFHwBK+5wAxCX+3oUg
eQFRTIFIBIHN/NxCEqbKxJLTKarBiqIygrd2ZMhJeY+pzSwU/bAlJSGs3VR2JlKm H5XuFiM6xAmJWzYsuZQ7i82WS79BkLMfxKlu+1FGWO0fEQMlTxYCFNSdUfGBHnqT
SD2m81XRDjseUl0oS7731GgBCQIQaohZvLJkz7Qvzd35KafFNQdEfcekPrLK2idn QElvhUiWj/03CA2iUx/V0lEBU5JACYpml2V3uwd1dlQQE/OFlBrwlHzf9oIY3Pq1
ycd48IR2eKyNMghJKSecYRiZnle3TBfrZesbEXr6zU2iPCw/jEC3gg8cGNQx9rVx s4Rf+gD5wdX1PI3K/68mcQNedfXvmwv+HGhTSfzAXwom65jPYkaTOBj5TtNfdjxU
bs2MZtcXXi4KzFWfWI1YFtzs7PFV1s5oFg== dzY=
=PlEi =rMVG
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5 fp: 13D7771BDE5241293F3EDA442AB3335ECC93DDDC
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA5srXAykbUR0ARAAmRaLvYx/VkXrWNuv8rtv4dukV3pqBTug8rRZTg4uKIFM wV4DAQRCY74qADkSAQdAM15Z64heWtFlCMworwtlRTCziwpS/JyQp+4VOQlDpz0w
8wTOLUGRtZC5ZDnfnVZr7aLdVeWcib09zm8jWK6ES1kyHpuZjTvHVdm6J+/2TwU/ 9dO6QL0rHr6/RYj0nQ/fb00Y9X90Kq9XEG6GWFYjkiQGeJ7DYooNPk4HWV4HTkOG
sit3XU5UZtG+HEqu449KlFPhlMZ7pqagjRkWE3uC7b0gjJovvDa6Yqo+jY7AAP/M 0lEBinuysaQ+Lonn+9y2JsnV83L4tf2awTuSpsqRVLYBNAKHfsgcYc0Z37FfURxf
d1As+UpNEYEZ11BNYJZJsWEej8gQldLVUWtJlQasY0tNK0ha3eSrbNBgjuzwBq8h jns5ZFOch04oWRKT4Ufw2sMHgtaqV6+8Ri6tFWtHS8aUMgE=
vnFALIuxrwwZ0vVujxOVEMVpWqYZOARhXhJ/2dfBKoc13WZBepgW4RyFSLip9WTD =CWEz
4MHuUOv/Klt7XBzEyzbfvzkW55078VZ46h5HlLg2p+iJcq992oc6aSwZ9pgQ7GUg
6X+j9dT34Hxryh+5kwOtYmLAjIcz3WmKJeWqSOVt7biNinecOG0Y8tLsMmIwpqls
vUoxEs2dn8KZjuwrOSVp6YEW0wL1NqZ4hBICCd+nESiFk6QzZ2jpOBfB14ogU+7L
Cmmz0sBYoZAAV88AX8olxnw/MNy0lL5Z1biaKNZpdTUKJp3ajLBI4LmI78q0zQIQ
NYPX+f/q+e9URdcGYOADS0vmSgnrrghZlqg4NqkLDdVK9pPeOl/Q5lyRCqi3g5Y0
C1xdk4NsH9ZsGpnMR/QsrfWmFB3rh0bg27hIaiOuugsvdUbCuQDBOoheqTQDMsLU
aAEJAhAfZPyjz3TYbNVg/PJcnkDfInLvORbNYqUyo61NO/iuTo+OjJxJQPiGvGpp
uJS7pBGJUWkc65SglKsfz1oDPwX27dbd4FOBLKLL2g8M0NqE/NwoUG5tBkWt6PZf
GxE2siMCPFwJ
=Yg8C
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: C191487BB72A3C8BF6B159AC8B8B9DDC9E6259C9 fp: 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A
- created_at: "2026-07-09T09:19:54Z" - created_at: "2025-03-04T17:44:07Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQGMAwTtVaE3mgdcAQwAjBekoHEVIGMX4Pv0AxJ+pDSbSnpGHisnJGaTuWR+BnE5 wcFMA5KoiSc3R+FfAQ/7BFHn9U5mrARB3hFmzMp2mhEer1nnUgEh5InbbgErPkZw
1e27i/DGmHfUHRcRYO2VXnBUFxfieQ8s4DEPncDlwXUEjOTNotZRDjBQleldKfNi FydX4ikmK9xLyIxF+wUXNQTtSW90y+s3NS+ZhAQXbGwToyNEYhO35ngp0Ju7tjyp
MsWbnxirYdwSZcpcvvLa3FyEL/pUBrm2/g+g3H68dOBj1OTXJUUT93qNb1pwXImP zp8Q82fUVI6r1UrWkddwd1QLigd3BE4i9I/xrSyv3sjgufOXwcHGpzOeLt0QFy0T
0d8vMZ71apyrO4HvDxLQ7sd8YdzAC48hwRZgi83r+mjtil/b4owV224XEenBngWd KG1m7F/Hx5KFtpCmhpkVF9zcrImgMXeNvS1B6iVe3Y0elvzOqZGviFvXqXuCVd9G
s8BZOuKb/XYMbgWqSXbuxmn3CHk3fzb5zGFUojgwePkQIoC5wqewF/vpCxRzwOd3 +MNqEiKsHZ8ongHqPW9UA0N51RPtWqZ5ANul2+kcFav0UsVIMGDvt6VHxm1ysQsT
nVx4G0tb5fFM3aCzMCoIOxCYGcywM9srAhHEPreG5lBw+Ot/Ps9/TPxLTG8qyeMb FPw4M6jXN+bCgYKguRQPxIhZG2Qv2MpkGR2nvkFN1+PTF0tZ9I8X/wfUZSH0QnZL
AO7NtxU7nSLHq/XrUIBo+uS2iy2qcjUupKiCDk9GDccM//hYLd/DLDsu4goUKfSO Z2HNobmJEefY4hilQ/QvBzQpVPVz3fGiSlwXGzX3FHURpibWfKzk8Lw29HR7kVUt
366V3eMPn0QKzz1/Sc9iM3ZkZKImuoRvWTuLNtw0PqdxcfrM5bTZzmeu6AmGAtGf cJjJKeuHwnMg5HkyoRWTlFEe8gVrDJkBIe/MYkjoF7+ROcEn0yz9egGcawnIAOjH
0CYyFtXhml9rPLGbXodm1GgBCQIQY4ydDA05nlhEo3deMQip2VPBWib8c6nlm3HD rcB1HoJvl7Vy+6ybteLncvtxEgREMZ2AuihIhVzxOHCr6cUzFu+dp/u+zAQ6LtWk
TzjATrOlaAvk321mOGSPBs9Iufrz+y/oKsXqZPcDPUK1H7oSP7yFMHqZAPEVEbLK ws3/KOiTT+YCWxNWuvWE6QDyM/UCC1YFJ6MoPe14xiAqafU/g43DEi+4P/Cg7njr
SxQ5ttp2kNjqB5ppO7MlC/z+ty/ppXze2w== kQC2C3t4n57UVuzunBGZj3fKrTlB2dVYA/zkJgoUZP5H0pXPnr6iMZpfKcWER2vS
=9fmt UQG3nfKuiQ87axXf9YebCNzC8QXUVqaUdEgXBo2bLX63CA1OxtrAmEZQeUqxXIJ3
uVtGMVQ4QoTknW1+XS0MUqrzvAblSzf8N353hS0L6pTwow==
=bHwT
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: D667348F310C57655FCE5D4EA689FF232FD681F0 fp: 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.13.2 version: 3.9.3

@ -25,7 +25,7 @@ mv .sops.yaml.tmp .sops.yaml
# define "fixture" # define "fixture"
repo_root="$(git rev-parse --show-toplevel)" repo_root="$(git rev-parse --show-toplevel)"
# --- # ---
function fn_test_create_sops_cfg_default(){ if [[ 1 -eq 1 ]]; then
>&2 echo -e "# ---\n# TEST: create sops cfg in default dir: ${repo_root}" >&2 echo -e "# ---\n# TEST: create sops cfg in default dir: ${repo_root}"
set -x set -x
rm "${PWD}/.sops.yaml" || : rm "${PWD}/.sops.yaml" || :
@ -39,10 +39,12 @@ function fn_test_create_sops_cfg_default(){
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
rm "${repo_root}/.sops.yaml" rm "${repo_root}/.sops.yaml"
} else
>&2 echo "# INFO: skipping ...."
fi
# --- # ---
function fn_test_create_sops_cfg_dir_cwd(){ if [[ 1 -eq 1 ]]; then
>&2 echo -e "# ---\n# TEST: create sops cfg in curdir: ${PWD}" >&2 echo -e "# ---\n# TEST: create sops cfg in curdir: ${PWD}"
set -x set -x
# note: fail if for any reason sops config defined at top level; this repo should not have this! # note: fail if for any reason sops config defined at top level; this repo should not have this!
@ -57,10 +59,12 @@ function fn_test_create_sops_cfg_dir_cwd(){
# not necessary, all tracked in git # not necessary, all tracked in git
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
} else
>&2 echo "# INFO: skipping ...."
fi
# --- # ---
function fn_test_create_sops_cfg_opts_complex_1(){ if [[ 1 -eq 1 ]]; then
>&2 echo -e "# ---\n# TEST: Full Args: specify path to each, also for secrets, mix specified and positional params" >&2 echo -e "# ---\n# TEST: Full Args: specify path to each, also for secrets, mix specified and positional params"
set -x set -x
../bin/update_sops.sh -k "${keys_dir}" -c "${sops_cfg_dir}" -s "${secrets_file}" "${secrets_file}" > /dev/null 2>&1 ../bin/update_sops.sh -k "${keys_dir}" -c "${sops_cfg_dir}" -s "${secrets_file}" "${secrets_file}" > /dev/null 2>&1
@ -69,43 +73,12 @@ function fn_test_create_sops_cfg_opts_complex_1(){
# not necessary, all tracked in git # not necessary, all tracked in git
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
} else
>&2 echo "# INFO: skipping ...."
# --- fi
function fn_test_auto_find_secrets_files(){
>&2 echo -e "# ---\n# TEST: auto-find secrets files"
# SETUP
_tmp_mock_secrets_dir='mock_hierarchy'
_tmp_mock_secrets_filepath_1="${_tmp_mock_secrets_dir}/one/secrets.yaml"
mkdir -p "$(dirname "${_tmp_mock_secrets_filepath_1}")"
touch "${_tmp_mock_secrets_filepath_1}"
_tmp_mock_secrets_filepath_2='mock_hierarchy/Tw o/secrets.yaml'
mkdir -p "$(dirname "${_tmp_mock_secrets_filepath_2}")"
touch "${_tmp_mock_secrets_filepath_2}"
# RUN
# set -x
# suspend strict: check output for errors
set +e
# move 'set -x' within the sub-shell, otherwise all output dumped to tty
# ... bug: stderr still gets printed, not sure why. E.g. '# RUN: sops updatekeys mock_secrets.yaml'
_out="$(set -x; ../bin/update_sops.sh --find_secrets -s "${secrets_file}" 2>&1 )"
echo "$_out}"
# re-enable strict
set -e
set +x
grep "${_tmp_mock_secrets_filepath_1}" <<< "${_out}"
grep "${_tmp_mock_secrets_filepath_2}" <<< "${_out}"
grep "${secrets_file}" <<< "${_out}"
set -e
# TEARDOWN
set -x
rm -rf "${_tmp_mock_secrets_dir}"
# enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
}
# --- # ---
function fn_test_expect_error_invalid_file(){ if [[ 1 -eq 1 ]]; then
>&2 echo -e "# ---\n# TEST: induce error: invalid file" >&2 echo -e "# ---\n# TEST: induce error: invalid file"
# dev note: ':' is a noop operator; could also just temporarily disable strict errors # dev note: ':' is a noop operator; could also just temporarily disable strict errors
set -x set -x
@ -115,33 +88,11 @@ function fn_test_expect_error_invalid_file(){
# not necessary, all tracked in git # not necessary, all tracked in git
# enmesh: restore, since this particular one is checked in # enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1 git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
}
if [[ 1 -eq 1 ]]; then
fn_test_create_sops_cfg_default
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_create_sops_cfg_dir_cwd
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_create_sops_cfg_opts_complex_1
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_auto_find_secrets_files
else
>&2 echo "# INFO: skipping ...."
fi
if [[ 1 -eq 1 ]]; then
fn_test_expect_error_invalid_file
else else
>&2 echo "# INFO: skipping ...." >&2 echo "# INFO: skipping ...."
fi fi
# --- # ---
echo "TESTCASES PASSED" echo "TESTCASES PASSED"
exit 0 exit 0

Loading…
Cancel
Save