Compare commits

..

121 Commits

Author SHA1 Message Date
LeeW 6fc25057ad updates inline docs for functions 1 year ago
LeeW b9188106df TEMP: REMOVE - verify README by adding sample key - REMOVE 1 year ago
LeeW ba6e39ffd8 TEMP: REMOVE - verify README by adding sample key 1 year ago
LeeW 48f845dde7 updates instructions - archive 1 year ago
LeeW 630dbb6732 updates instructions - archive 1 year ago
LeeW 2d2ca0b81b fix typo 1 year ago
LeeW 444769e65d updates instructions - archive 1 year ago
LeeW a3d428a589 updates instructions - order rearrange 1 year ago
LeeW 7d91b01d29 updates instructions - order 1 year ago
LeeW 89114898b5 updates instructions - add user to project 1 year ago
LeeW 545dad5c95 updates instructions - verification config 1 year ago
LeeW dd7c5faa08 updates instructions - remove "any user", simply make explicit 1 year ago
LeeW dfb4d0b53e updates instructions 1 year ago
LeeW 0500061163 updates instructions 1 year ago
LeeW fef5b081b4 updates instructions 1 year ago
LeeW 29ea1992e9 TEMP: verify README by adding sample key
```
gpg --armor --export 5D755BE08A616C49 > test.person@netgo.de.gpg.pub
```
1 year ago
LeeW f0863e3f02 code revew: fixes typos 1 year ago
LeeW 246f4acfc6 updates doc 1 year ago
LeeW c91eb5351f updates doc 1 year ago
LeeW 98544086fe all manual tests removed 1 year ago
LeeW 50b668db91 adds another test 1 year ago
LeeW 4d898a33c2 reduce test verbosity/fix useless statement
the '$?' would just be reflecting status of 'set +x'
1 year ago
LeeW 4e8790f8ca adds another test 1 year ago
LeeW f1de3d9c03 reduce test verbosity 1 year ago
LeeW 5056aca69e updates second test 1 year ago
LeeW 1f5776d566 reduce test verbosity 1 year ago
LeeW 8f2270fe56 fix: iterate fix for sops.yaml not created in specified config dir - fixed! 1 year ago
LeeW 892fbc2039 fix: iterate fix for sops.yaml not created in specified config dir - fixed! 1 year ago
LeeW f86b074648 sops automation: fixes config dir specification, fix for fix 1 year ago
LeeW 94956017cd fix: iterate fix for sops.yaml not created in specified config dir 1 year ago
LeeW ae828f75d1 makes tests easy to select 1 year ago
LeeW bd29587565 fix for first test,
see 46b61c8347
1 year ago
LeeW 5157d230fd fix for first test,
see 46b61c8347
1 year ago
LeeW d437415600 test: update verbosity 1 year ago
LeeW 747c10e9e0 fix: iterate fix for sops.yaml not created in specified config dir 1 year ago
LeeW 46b61c8347 test: first test working 1 year ago
LeeW 3d67d585ae test: first test working 1 year ago
LeeW 535a1c2590 test: update verbosity 1 year ago
LeeW cc48c31971 fixes typo 1 year ago
LeeW 775e6a3ef2 updates verbosity 1 year ago
LeeW 4844713e70 TMP: adds in-line test within the verify command, iter 1 year ago
LeeW 58e6a4e25e TMP: adds in-line test within the verify command, iter 1 year ago
LeeW 46edcc8b11 TMP: adds in-line test within the verify command, iter 1 year ago
LeeW 0c1b2dd6f3 TMP: adds in-line test within the verify command, iter 1 year ago
LeeW 38d6d166e0 TMP: adds in-line test within the verify command 1 year ago
LeeW bbcdf00290 updates help strings 1 year ago
LeeW 5255e9f4c7 renames 'example/' dir to 'verify/' 1 year ago
LeeW c5e931ef1f sops automation: fixes config dir specification 1 year ago
LeeW 529aa89bb2 verification: restore original header :-) 1 year ago
LeeW bbb5dce6d0 verification: update keys 1 year ago
LeeW 0604eea395 update to import keys before sops update 1 year ago
LeeW 9dbdb7d365 refactor - consolidate into main function 2/n 1 year ago
LeeW 629579eaf3 Merge remote-tracking branch 'origin/master' into ADP-216_sops_automation 1 year ago
LeeW 4076e9ee15 s/roles/groups/g , iteration 1 year ago
LeeW e8f1a1acd0 s/roles/groups/g , iteration 1 year ago
LeeW 6d5c9fab7e document "roles"
TODO: rename to "groups"
1 year ago
LeeW 8ddcfa6916 update doc 1 year ago
LeeW a5f0fcc1bf adds initial roles 1 year ago
LeeW 1e2fab5cf9 update doc 1 year ago
LeeW da29e258e7 refactor - consolidate input validation 1 year ago
LeeW e2c2f77459 refactor - consolidate into main function 1 year ago
LeeW 545f5bce21 refactor - consolidate all non-function code 1 year ago
LeeW c34a767076 refactor - move function up with other functions
was mixed in between non-function code
1 year ago
LeeW d07f106c67 adds function to locate sops config 1 year ago
LeeW 2662a25977 adds function to locate sops config 1 year ago
LeeW f4b465a151 adds function to locate sops config 1 year ago
LeeW dbf31b75d2 refactor: better function names 1 year ago
LeeW f192204f00 refactor: better function names 1 year ago
LeeW 501f08afd9 adds automation instructions to doc 1 year ago
LeeW d5773f512a archive more keys 1 year ago
LeeW 33144d99de register dir for archived keys 1 year ago
LeeW e2a8eb1a05 clarifies README 1 year ago
Lee Watson cbc57acf1d updates from code review 1 year ago
LeeW e953b1e047 adds roles, iter x/n 2 years ago
LeeW 8748069d1d refactor name 2 years ago
LeeW fd89ab65fd adds roles, iter x/n 2 years ago
LeeW 5f2d02f600 adds roles, iter x/n 2 years ago
LeeW 959b7d71ff adds roles, iter x/n 2 years ago
LeeW 50d0a7e86e create sops config if not exist 2 years ago
LeeW 875c01e27f fix example script 2 years ago
Michael Haehnel a23cb6681b
ADP-179: Adds folder for archived keys 2 years ago
LeeW 8b0e2c1129 fixes markdown formatting in README 2 years ago
LeeW 293ed87f0c refactor: args 2 years ago
LeeW 233173e9ac refactor: args 2 years ago
LeeW cd2634e845 refactor: args, secrets files 2 years ago
LeeW d8bc39c9d8 refactor: args, secrets files 2 years ago
LeeW 002982c4ac refactor: args 2 years ago
LeeW c8c0187a18 phase3: refactor 2 years ago
LeeW e4f66eac3d phase3: refactor 2 years ago
LeeW e45c4082b6 phase3: cleanup 2 years ago
LeeW fa5739c24f phase2: update script, make useful for general case 2 years ago
LeeW d120c13544 phase2: update script, make useful for general case 2 years ago
LeeW 701dce3124 phase1: update script, shift around dir responsibility 2 years ago
LeeW bc1bc225e5 phase1: update script, shift around dir responsibility 2 years ago
LeeW d76e993582 phase1: update script, shift around dir responsibility 2 years ago
LeeW 67bf466ee7 phase1: update script, shift around dir responsibility 2 years ago
LeeW 0da6e2f13d phase1: update script, shift around dir responsibility 2 years ago
LeeW 22ddfc1b5e phase1: update script, shift around dir responsibility 2 years ago
LeeW c49d549ad6 phase1: update script, reduce noise on tty 2 years ago
LeeW 21c30a37e3 phase1: update script 2 years ago
LeeW c8c8e54b50 phase1: reorg dir structure 2 years ago
LeeW c877192807 phase1: update script 2 years ago
LeeW 651b701896 phase1: update script 2 years ago
LeeW 36b01996cb phase1: reorg dir structure 2 years ago
LeeW 000e9a860d updates comment 2 years ago
LeeW 8aadf67422 document source 2 years ago
LeeW 3a20bf3163 rename mock file 2 years ago
LeeW 55cc7d1ead automatically created sops config 2 years ago
LeeW 5b93a0e5f3 automates creation+verification of sops config 2 years ago
LeeW fd2bbeb5ff automates creation+verification of sops config 2 years ago
LeeW f3138ffcc5 automates creation+verification of sops config 2 years ago
LeeW 0bf2edd57c automates creation+verification of sops config 2 years ago
LeeW 20c2a79808 automates creation+verification of sops config 2 years ago
LeeW a63b96fe2e automates listing of keyfiles 2 years ago
LeeW ffca5846f4 automates listing of keyfiles 2 years ago
LeeW a1fc113743 automates listing of keyfiles 2 years ago
LeeW f6380e7668 automates listing of keyfiles 2 years ago
LeeW b7bcc8dd2c automates listing of keyfiles 2 years ago
LeeW f1e529f1ed automates listing of keyfiles 2 years ago
LeeW 3efade8643 automates listing of keyfiles 2 years ago
LeeW aae050c850 updates instructions for sops 2 years ago

@ -5,60 +5,39 @@ Purpose: Manage gpg keys for:
# 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
* 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
Roles:
# Playbook for Configuring Access for New Users
## Overview:
1. In the Keys Repo (`communication-keys`):
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
* 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
* E.g. look up in the [groups](/groups/) dir
* E.g. look up in in [verify/.sops.yaml](verify/.sops.yaml)
## 1a. Onboarding: [New User]: create and add a gpg key
1. Clone this repository
1. Create a branch titled `add_pubkey_[firstname]-[lastname]`. <!-- NOTE: Validation Hack: User will not be able to mistakenly create this literal branch, as the unpermitted chars '[' will prevent the branch from being created: "Branch name cannot contain '['" as per https://git-scm.com/docs/git-check-ref-format. I.e. it's a dirty hack to get some server-side(?) validation ;-) --> <!-- - Web: e.g. The following link can be used to create a branch: [https://git.dev-at.de/smardigo-hetzner/communication-keys/-/branches/new?branch_name=add_pubkey_[firstname]-[lastname]](https://git.dev-at.de/smardigo-hetzner/communication-keys/-/branches/new?branch_name=add_pubkey_[firstname]-[lastname]) -->
- CLI: e.g. `git branch add_pubkey_Max-Musterman`
- Note: no strict naming convention for the branch, it's strictly a Human-in-the-Loop process
1. Follow steps 1-13 at the following link: https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key
- 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
- file format: `<email>@netgo.de.gpg.pub`
- **Example**: `max.musterman@netgo.de.gpg.pub`
1. git: commit the new file, push
1. gitlab: open a MergeRequest
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)
- create a branch titled `add_pubkey_<firstname>-<lastname>`
- e.g. `git branch add_pubkey_test-user`
- Note: no strict naming convention for the branch, it's strictly a Human-in-the-Loop process
- please follow steps 1-13 at the following link: https://docs.github.com/en/authentication/managing-commit-signature-verification/generating-a-new-gpg-key
- CAVEAT: step 14 is not necessary, as it is specific to a GitHub account
- add ONLY the _PUBLIC_ part of your gpg key!!! to this repo
- file format: `<email>@netgo.de.gpg.pub`
- git: commit the new file, push
- open a MergeRequest/PullRequest
- hand-off to an Existing User of the repo.
## 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!
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`)
**Technical Instructions** - please forgive the complexity
Most of the groups correspond directly to git repository names, aka "project name"
Create a symlink from the group-directory back to the keyfile
```bash
cd groups/<project_name>
ln -s ../../<path_to_key.gpg.pub>
```
1. `cd groups/<project_name>`
- **Example**: `cd groups/devnso-adp-argocd`
- 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`)
- Explanation: Most of the groups correspond directly to git repository names, aka "project name"
1. `ln -s ../../<path_to_key.gpg.pub>`
- **Example**: `ln -s ../../max.musterman@netgo.de.gpg.pub`
Note: this step can be performed by anyone (either new user or existing user), but it makes the most sense for an existing user to configure the groups since this is domain-specific knowledge (i.e. new users won't typically know the grups)
## 2. Onboarding: [Existing User]: Configure sops config
## 3. Onboarding: [Existing User]: Configure sops config
Context: This repo stores the keys used to encrypt secrets in other repos; these "consumer" repos each contain a sops config `.sops.yaml` which manages access to the encrypted files (e.g. `secrets.yaml`)
@ -66,116 +45,60 @@ For verification purposes, this repo also contains a _sample_ `.sops.yaml` to wh
### Update Verification SOPS Config
1. Checkout the New User's branch titled `add_pubkey_[firstname]-[lastname]`.
- CLI: e.g. `git branch add_pubkey_Max-Musterman`
1. Run `./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
Follow the interactive prompts:
```shell
./verify/usr_confirm_keycfg.sh
```
### Update Project SOPS Config
The following commands explain how to update the `.sops.yaml` for a repository.
Note: For a worked-through example, see next section.
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
The following commands explain how to update the `.sops.yaml` for a repository:
#### Prerequisite
```shell
# E.g. update sops config for DevNSO
% git clone git@git.dev-at.de:cloud-solutions/nso/devnso-adp-argocd.git
% cd devnso-adp-argocd/
```
**Create Branch**
```shell
## OPINIONATED GIT - use preferred method
git checkout -b add_pubkey_max-musterman origin/main
```
**Configure Project Repo for New User**
#### Commands
<!-- 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
# List available groups
# Output:
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --list_groups
% ${PATH_TO_THIS_REPO}/bin/update_sops.sh --list_groups
# INFO: listing groups
admin
automation
devnso-adp-argocd
# For a given group, update sops config AND all secrets files - New Users cannot add themselves!
# Output:
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group devnso-adp-argocd --find_secrets
# For a given group, update sops config
% ${PATH_TO_THIS_REPO}/bin/update_sops.sh -g devnso-adp-argocd
# RUN: generate SOPS config
# RUN: gpg --import *.gpg.pub
# RUN: sops updatekeys ./loki/loki/secrets.yaml
...
# SUCCESS: all users with keys in this dir should have functional keys
```
# WARN: no secrets file passed in, make sure to call 'sops updatekeys' on secrets files
**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")
# [OPTIONAL] For a given group, update sops config AND specified secrets file
% ${PATH_TO_THIS_REPO}/bin/update_sops.sh -g devnso-adp-argocd -s ./adp-api-devs/adp-api-devs/secrets.yaml
% git commit -m "adds max.musterman to sops config"
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
% 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
## 4. Onboarding: [New User] Configure SOPS
SOPS is used for encrypting secrets, e.g. credentials for various systems
## Install
1. **Install Sops**
1. https://github.com/getsops/sops
- Note:
* 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**
* Add the following to your `~/.bashrc` or `~/.zshrc` - but _not_ to your `~/.profile` as it must be set per session:
```shell
# Enable interactive passphrase prompt for SOPS
export GPG_TTY=$(tty)
```
1. **Verify SOPS Installation and Key Configuration**
1. `./verify/usr_confirm_keycfg.sh`
https://github.com/getsops/sops
Note:
* 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)
## Usage
@ -184,15 +107,12 @@ Decrypt and Display Secrets in Terminal:
```bash
GPG_TTY=$(tty) sops secrets.yaml
```
<!-- CAVEAT: if GPG_TTY is set in environment, no need to specify it again. Leaving it inline for this command to be explicit about requirement for correct functiuonality -->
Note: The `GPG_TTY` is necessary to have the password prompt appear. src: https://www.varokas.com/secrets-in-code-with-mozilla-sops/
Note: `secrets.yaml` is just an example; the file can have any name
# Playbook for Removing Expired Keys
## Offboarding: [Existing User]: Archive Expired Keys (EOL)
## 5. Offboarding: [Existing User]: Archive Expired Keys (EOL)
To mark a key as expired:
1. move it to the `archive/` dir
@ -218,7 +138,7 @@ find groups/ -name ${keyname}
# For each group, update sops config in that repo
# Example:
% cd devnso-adp-argocd
% ${PATH_TO_COMMUNICATION_KEYS_REPO}/bin/update_sops.sh --group devnso-adp-argocd --find_secrets
% ${PATH_TO_THIS_REPO}/bin/update_sops.sh -g devnso-adp-argocd
# 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-----
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
4hXDgcudtCquYStf
=oxRT
-----END PGP PUBLIC KEY BLOCK-----

@ -1,13 +0,0 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZ8csoBYJKwYBBAHaRw8BAQdA4XDYoQCpDYRQVMdhXWaQ8R+DJWfDUZKLGp0L
CDKQkLG0JkJhcyBDYW5jcmludXMgPGJhcy5jYW5jcmludXNAbmV0Z28uZGU+iJME
ExYKADsWIQSfU0FojS+QJKFVQcngKUnQ93aeLAUCZ8csoAIbAwULCQgHAgIiAgYV
CgkICwIEFgIDAQIeBwIXgAAKCRDgKUnQ93aeLCLFAP0XM8gj8Dj6/j+CudjOemlZ
YtMeWKgzoQavq5MjvqpC5gD/SfhHrENFxqIauGyLhX3YOlYTu77nFjFD9Ue4eiXe
gAi4OARnxyygEgorBgEEAZdVAQUBAQdANCBJmJchzCLLpCje17NJp4xn5gKXMLQ5
eEonhmkAdUMDAQgHiHgEGBYKACAWIQSfU0FojS+QJKFVQcngKUnQ93aeLAUCZ8cs
oAIbDAAKCRDgKUnQ93aeLC07AP4jKmcbtyZGhV2efFbmempjylr231bG/3s5xust
+csUTwEAwu1QQPRX/OYpecVo0xIDiynnk4jeJDsRyOuFMkYpTw0=
=t/YD
-----END PGP PUBLIC KEY BLOCK-----

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#/usr/bin/env bash
# Purpose: manage .sops.yaml based on gpg keys in the same dir _and_ verify correct configuration
set -euo pipefail
@ -10,7 +10,7 @@ function fn_gpg_extract_fpr(){
# uid ... <...@mehrwerk.net>
# uid ... <...@netgo.de>
# fancy gpg src: https://unix.stackexchange.com/a/731872
fpr="$(gpg --show-keys --list-options show-only-fpr-mbox "$(readlink -f "${gpgkeyfile}")" | grep '@netgo.de' | awk "{print \$1}")"
fpr="$(gpg --show-keys --list-options show-only-fpr-mbox "${gpgkeyfile}" | grep '@netgo.de' | awk "{print \$1}")"
echo "${fpr}"
}
@ -22,7 +22,7 @@ function fn_gpg_extract_uid(){
# uid ... <...@mehrwerk.net>
# uid ... <...@netgo.de>
# fancy gpg src: https://unix.stackexchange.com/a/731872
uid="$(gpg --show-keys --with-colons "$(readlink -f "${gpgkeyfile}")" | awk -F':' '$1=="uid" {print $10}' | grep '@netgo.de')"
uid="$(gpg --show-keys --with-colons "${gpgkeyfile}" | awk -F':' '$1=="uid" {print $10}' | grep '@netgo.de')"
echo "${uid}"
}
@ -113,8 +113,10 @@ fn_sops_updatekeys_and_verify(){
# "update the keys of SOPS files using the config file"
>&2 echo "# RUN: sops updatekeys ${sops_enc_file}"
# HAAAACK: loop through all passed-in files, ignore any errors, always say "yes" -> rely on git diff to verify!
sops updatekeys -y "${sops_enc_file}" || echo "SKIPPING"
sops updatekeys "${sops_enc_file}"
# verify: dump secrets, GPG_TTY src: https://www.varokas.com/secrets-in-code-with-mozilla-sops/
GPG_TTY=$(tty) sops -d "${sops_enc_file}"
}
function main(){
@ -124,17 +126,18 @@ function main(){
fi
# "anchor" for actions relevant to this script
repo_root="$(realpath $(dirname "${BASH_SOURCE[0]}")/..)"
# OPTIONS: ARGPARSING and VALIDATION
# assume location of script as running directly from repo with keys (instead of as a standalone packaged tool)
keyfiles_dir="${repo_root}"
# dir containing .sops.yaml
# assume location of secrets config file in pwd
sops_config_dir=""
# path to group definitions
groups_def_dir="${repo_root}/groups"
# optional:
opt_list_groups=0
# optional: specify "groups"
groups_list=()
opt_find_secrets=0
# optional: secrets files to be updated
secrets_file_list=()
while (( $# >= 1 ));do
@ -150,8 +153,6 @@ function main(){
-lg|--list_groups) opt_list_groups=1 ;;
# ARGS: [optional] [list] specify "groups" which correspond to e.g. job groups, projects, etc
-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
-s|--secrets_file|-f|--file) secrets_file_list+=( "${2}" ); shift ;;
# ARGS: [optional] [list] specify files containing sops-encrypted secrets
@ -185,22 +186,12 @@ function main(){
# locate appropriate sops config if default assumption not found
# dev note: '2> /dev/null' to disable debug output
sops_config="$(fn_sops_locate_config_in_git_repo 2> /dev/null)"
sops_config_dir="$(dirname "${sops_config}")"
fi
# Paths to Secrets Files
if [[ "${#secrets_file_list[@]}" != "0" ]]; then
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)
done
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
# /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-----
mDMEaEBF9xYJKwYBBAHaRw8BAQdA6syYUNOSScarxQGom8QcmY/yaK+OWhAQ68IY
dj7KxzW0JENsYXVzIFBhZXRvdyA8Y2xhdXMucGFldG93QG5ldGdvLmRlPoiQBBMW
CgA4FiEEZZ/e1D3hVft3KjObNDzxIYpmTTEFAmhARfcCGwMFCwkIBwIGFQoJCAsC
BBYCAwECHgECF4AACgkQNDzxIYpmTTHvVQEAi2IabzcpNK6ZBmsP2NL52oXhY4iM
bzDEtJul0E/hcvEA/3cPIZ9lIB8WeA6SK8nAgV5AlxGXsCdHsv55A2F/vDEIuDgE
aEBF9xIKKwYBBAGXVQEFAQEHQNGjADOks0AjX4qlQ3xgSOP0RBIELjqYBH/Ihiwf
eQ9ZAwEIB4h4BBgWCgAgFiEEZZ/e1D3hVft3KjObNDzxIYpmTTEFAmhARfcCGwwA
CgkQNDzxIYpmTTFyOQEArR4vKYPP9cD6Plsn0pK4hONApCEHRKGC0d3JtUkZvJAB
ALaWq4tjsPm4wF6D9RMN9tCuPPVtt/FbGzVBlm3OP2sL
=PsTc
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
1vC99G5EtuXL1U37Qp8Kug==
=vm8K
-----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 @@
../../bas.cancrinus@netgo.de.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-----
mDMEaPiOmBYJKwYBBAHaRw8BAQdAgwGFW1hsK88TTcY4Iw8GZSVAknR0iRKnOZL3
J+cp2fu0KUphbiBKYW50emVuIChzb3BzKSA8amFuLmphbnR6ZW5AbmV0Z28uZGU+
iJkEExYKAEEWIQS5LdybkIvzkXdY0ihEbFHgSa44ygUCaPiOmAIbAwUJA8JnAAUL
CQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBEbFHgSa44yphwAQDIKCvEYJ2x
gd8QClL31SGpD2/5fJ4x/9cXa2pwmcPo4AD/dWYsVwX6iisiE46U2IIsL7ojDa2J
IYJPrb/HrL8w2Ay4OARo+I6YEgorBgEEAZdVAQUBAQdA9qvcdBmc2TvcReuAu3YA
ePpddYljq1L7ihWZDUWrtRMDAQgHiH4EGBYKACYWIQS5LdybkIvzkXdY0ihEbFHg
Sa44ygUCaPiOmAIbDAUJA8JnAAAKCRBEbFHgSa44yi14AQDPHLsJLjE7csjNPVGi
9XUcfq54ScEc698xyuk8LFMSKAEA0dzeY7tnfGNr7m2jq3odopRmMo99Xaw5h4YA
cQD/yQo=
=rCLM
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
uiK1kd08gp9i56uy5tkQtYJGpcsRNJNSnyAbEcM=
=4tfB
-----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-----
mQGNBGnfXZIBDACmHVkRkYl+qpBRRIPlk/sTuAxc81ujPzjkEmi3VqJrwOPaSDct
Oz51up07ORlcPyln/Xn3qc6U+GKeeNVwViY3KEWLzE6BbMsPeCQ2vLPrhxpfxvyP
k86I+bG90/DvvtKNzaBVWHHNRc9zvSFcOebjeSOWKvsR+Q47AeMU4bK++Ybj2CB2
nXMtb+qfOvyiZXN8s5UUnbOdGj5vrd9B1vBAAXToXrnZUUguQUowk3SuwjDEQFlz
D3AojKI9XoaYyImeB3Y+trFQxHWEZBtSPTUHQg/kBQAL0HGiKFwupp25IGto1aSq
yK41zp5y62IYsni54R7Kg3bc07NEAIgfB47E4lBBr91Om9rodydnvz3tUsD+6N/i
WNIIDyWv1g67rWl4k0qCm2vyu1rNkAV26wyoxPan//0aXZO1mIaaBWT4D0/HF/jM
nmoijAavZp37BEaxSLZFoSrAmD53PQZvOnan5DglVuDFOCY4rAeFbva1pfOtrpKY
HZZTS1D7TmamOukAEQEAAbQnbnNvLW5hcC1wcm9kIDxuc28udGVhbS5kZXZvcHNA
bmV0Z28uZGU+iQHRBBMBCAA7FiEETRZ0eZJ+tJ25su1CEdOV25YoHTYFAmnfXZIC
GwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQEdOV25YoHTakUwv+K7DZ
1j8VQWFGe4ggUl+szYwYONe/LPrQCv0MVqpXCRHSBESd1JcN+QKetHkqu8sMPD7B
tUhbP0z7DYU8PHwPhBvUE8hqF7/A+FIl/nm2gZPFCDCeLpLJ2omYXCU8s2PQFzgX
CN5i8VzfTnVZL/zLYHC4xywfLv99PtbSCcjv4ks1vMQDQac/B2oRo2Pssizs+WS5
ArbTA8U90IrCyOPMpD5scROzs5FTdSyYoTCrtHZDQa8KP/p79iv3MTSsG29+rNNj
rqTPQyDatrHw3yNKcb2KLdBhI2cb9FizYqA1VEhU7ZWJ2N78TD2BshAQ/sNRcadZ
Nvv1NI9j6biFxh5uxwFAKh5Vcbpb7GI/+nUDV2qtdrB99WZX2KlqDmA6dueTVm2z
RKJ97ERidsld+j7Q738DRr/G7joDUc9vJ69znjHbJYplCkNL4IAyubnpAx1Rx0zG
bVX7yXJWePyKTKjDeweMMjOERjntAHuity8tktanUSouTAjSQKZBEfrxFpGtuQGN
BGnfXZIBDADE4bPpXpzf+UfMXmKo5OzGm6uWLbxqPRD8+z7uvE//zwQe0Ug2cE8B
rSUJV1tjge+rcg/e46tF3tlWZfziwnU3IjzCVhhUPbsifJxVqjVs8PjdvLPT9Xw6
gOFnxtTjYPNSjERXuzlP440/uohW+aJqA5jw+hofPqx3HobcmLByKBmPRaCeSxJn
lKwT1bP2UvVLwn4X5ZyGFHfSdpS4YKNwoG4HtJMHcxtf4RpjEMwN/hRaSpcoOll1
C0E9nZfMb0eU87h/fc99DvkLzq67t0eB4ljFdNk5ppfGF2MiG/vUSslqljYOxkXu
UHOXl3fBD7wTbFXn8ddHOLqETJ8hxLs2pDp9gykBN2I6/PP0u4DpyjuVhwC0/5LA
7KMLdsZK4j9xROcblJ+F2Xlqp6cL9A4Aqpfnropd3Xj6IUKBTIvxA1RPyXDYjAgB
bHl9WoR/JBUHPfo4Blloq8zq5ZZfFA5EuDKdftK6/7yOur3ZAQS/+2WAldN/TAtA
fWFqoHj4M78AEQEAAYkBtgQYAQgAIBYhBE0WdHmSfrSdubLtQhHTlduWKB02BQJp
312SAhsMAAoJEBHTlduWKB02UjUL/jjmVsmdsCrhBtY/dxwd1o2Z8K1wLL0oze/u
gVGKL4Ke/oh32zHqLTxO0+2tVrs/2eRWU/uvMceSXRokSjqS1QUeN0uigzpz6Yg1
amSpwTEMeBAWZ18fDRgoXUEaaYyY3FGzzHnh3RH1nJGHylUHDjwlya9pfeh37tDe
X8snuQCFlYD6ulrNOswTPY2bQWvZmjr12cw7PwqOQP+8PDR2SwCA11M5LU1i2HUo
aP96sS6hvVJkMhIU1y1UsUDzi8++uSwxiymaGtR8U0YGwnI6+pWk0V9YrjkXSVFI
exx2icCYgVW9JKSl1n67Vgx3mVqiWAzjqTLIoynTVAMDyVmNW/bgSMLibsbhsIE6
CE97UFKiTOyahSurikuPQF+EeYOsmRASbP1lSaNN/+4s9Ht9rH6bmHE/84b0H8XG
GcvsMBv1qS0q8pGaAbzxzc2BtDoza/qK8mMbnX47KmE7AQc2tn92Budlv3XiRe/W
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-----
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
UlIHSEzW
=XurQ
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
/chkgw==
=57sy
-----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,66 @@
# CAVEAT: DO NOT USE THIS FILE AS-IS in another project; copy it and remove the unauthorised users
# Fingerprint | User Type | User ID
# 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>
# 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>
# C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8 | autom | devnso adp (devnso-adp gpg key) <NSO-Team-DevOps@netgo.de>
# C903C046A063DFBF8F41C6576B26CF496812B00A | autom | nso-adp-staging (nso-adp-staging gpg key) <NSO-Team-DevOps@netgo.de>
# 98235A419EA3586BFF4E3FC692D4A5202A0D9519 | autom | poc-workload01 (poc-workload01 gpg key for sops) <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>
# DF977A1F65999F4CDD721A27516F64D5932B8AD9 | autom | sot integration (sot integration) <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>
# 9F5341688D2F9024A15541C9E02949D0F7769E2C | human | Bas Cancrinus <bas.cancrinus@netgo.de>
# F7F328F0E4958E4C785977E23B8AA0BAABADAFE4 | human | Christos Adalis (GPG Keys) <christos.adalis@netgo.de>
# 659FDED43DE155FB772A339B343CF1218A664D31 | human | Claus Paetow <claus.paetow@netgo.de>
# 93593B8B0B7B88EA2DCC99F9388B6A662C356822 | human | Daniel Risse <daniel.risse@netgo.de>
# 0143019F62469ED5A6A016C219CA764D37590F9F | human | Daryl Sauer-Neumann (SOPS) <daryl.sauer-neumann@netgo.de>
# 17B8FDF68AC123EB666934B17D0DF6EC048A5D77 | human | Claus Paetow (Firmenadresse) <claus.paetow@netgo.de>
# 03ADBCD31737EB474A4BD235CE615FAF927A2054 | human | Esther Fuhrmann (GPG Key for SOPS) <esther.fuhrmann@netgo.de>
# 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487 | human | Hans-Peter Wissenbach <ext.hans-peter.wissenbach@netgo.de>
# 9E561083EACDE14694C73A323A2F6C1D153D753F | human | Frederik Marticke <frederik.marticke@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>
# C19A7D807525CE24443CA9A49372E896B41FE700 | human | Kevin Bauske <kevin.bauske@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>
# 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>
# BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5 | human | Tobias Plöger <tobias.ploeger@netgo.de>
# C191487BB72A3C8BF6B159AC8B8B9DDC9E6259C9 | human | Tobias Stroehl <tobias.stroehl@netgo.de>
# D667348F310C57655FCE5D4EA689FF232FD681F0 | human | Ulf Fischer <ulf.fischer@netgo.de>
# 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5 | human | Tobias Stroehl <tobias.stroehl@netgo.de>
# keys in https://git.dev-at.de/smardigo-hetzner/communication-keys
creation_rules:
# list of keys for encryption in stage
- pgp: >-
533A89DD49FBCDA2BF014A936C962DD77704154A,
EFBBBB131CF1D863005C18868C8C09CA950B1DFF,
A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439,
C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8,
0E8955A79FF4687A3ACF78E50B5E444C75867E58,
C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8,
C903C046A063DFBF8F41C6576B26CF496812B00A,
98235A419EA3586BFF4E3FC692D4A5202A0D9519,
E5B4FE1E0209DFFE320D2A2E47087747D89B72EC,
890B2EB48F343D4C6DB9DA0916826F30002D3C1D,
4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36,
42AA7F6BF795490C1A522C730ED842BE1216E0C1,
B4BAA59056DC362809388F3F2119881095EA7DED,
DF977A1F65999F4CDD721A27516F64D5932B8AD9,
AC9B0DB590F4AE2017C2AD836113AEB66C510C3F,
43DE8A01ABD706717C36018C48C47C125C022F29,
5623CCAD4242CC3E0225A62986AF09C173781578,
1EBAE111F6EAE0CF136358E8625C5A3B8DA21485,
9F5341688D2F9024A15541C9E02949D0F7769E2C,
F7F328F0E4958E4C785977E23B8AA0BAABADAFE4,
659FDED43DE155FB772A339B343CF1218A664D31,
93593B8B0B7B88EA2DCC99F9388B6A662C356822,
0143019F62469ED5A6A016C219CA764D37590F9F,
17B8FDF68AC123EB666934B17D0DF6EC048A5D77,
03ADBCD31737EB474A4BD235CE615FAF927A2054,
04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487,
9E561083EACDE14694C73A323A2F6C1D153D753F,
9F08DA9D42379AFE6610E9E615CCEC6801DBA02E,
B92DDC9B908BF3917758D228446C51E049AE38CA,
BA6328948D50175F196AAB5111F324603D12DD56,
B643A5D780A01F24E95AA100DE6F8E2C149C3748,
C19A7D807525CE24443CA9A49372E896B41FE700,
0DB51A7E90AC6418B7DB83724D38970874850C33,
BF3D5CEA36DB58AAE1063D0BB341078652D87924,
73C2C9954D1BC94DC6682525D2FA233B52AEC75C,
3511D1A5B7B2AC97BAE8AF3EE758168C000375CE,
13E169CF5C35EF164628764AAA2EECBDE0B38CF7,
13D7771BDE5241293F3EDA442AB3335ECC93DDDC,
0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A,
BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5,
C191487BB72A3C8BF6B159AC8B8B9DDC9E6259C9,
D667348F310C57655FCE5D4EA689FF232FD681F0
57F93F2A6585CF2DF9A3B31F13B9F45E122698D5

@ -1,475 +1,512 @@
demo:
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:
lastmodified: "2026-07-09T09:19:57Z"
mac: ENC[AES256_GCM,data:BhauZh7kkae8ewSmZd1CWjD4nOhAY563JMIAJnEjWcw26lm3NT0cKjF4C9n6fjLhRVSpBEMYdK0kOPhqJEVqlWeEJ9wMBAhXY/7jmJYs+oaEM3AhVf9Dv82RNgNbzNP8bdp+QQLZEmeQ+oeK3ui8PtgTLxyXwp0LZNlpJ5gCUao=,iv:py/RvJk9qQhXVozstpINjwVgqRfL10xErOEYCtvTeXo=,tag:RHbD8gs2O+E3kGOZmvPxCQ==,type:str]
kms: []
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:
- created_at: "2026-07-09T09:19:54Z"
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA49EwzBHBfyRAQwA1eqcd4G8xy+ExwX0K5gGaYdYe8nRmXiRsfkFez+7Ejvj
SuxQ81Hk9IvkWU6+Ew7fWiZ8k5SaSMw5PhL0MrIBI4iDwLQxZullNhNJzVkb/KEP
mrLBBv8JZUeibG9r8Yga0CgYj3HbpeoyFTVNwn8ZcS+0gYxMPFLbxLxdD7RXtQyL
00rdJJRLhzH81edU+G84eR4AZYgG5SZGcPeu4mNVD1x2s0mQjaCyb0/wblk4WXW0
tV6jTNGZLtXm4743YEaIsXh04lmy21PAD1VJ6Amgfyl0xB0awwInwii6t7kYrbeM
k/bAmrsdNpoUmO+bZmLJTCLq79vaOppYnf1RV30hCD9tdOlfErNM+XSEgkxRnhAB
GRDlSkI5PGsMl7LJHAqEsy8dJQ49pdea9fW6tKDoyeFTagmsZMh33tTKIj/vRtaY
t4gQbk0M07u9FlTMMdLGpD7w9s5lYm8gsqcFO/06uYxsw20mD46RFl1dg8ZG+kMx
cl8KrH+7sm7ABQZW7B8b0l4Blgicwtev7mOzF0AYuM2gSCLATnpxaQXHTxcQVtLh
E+NXdyL4SCBv3hRN+Dv9zxInzzLxQODy8sGMN2RsKiUSsidD2lkDxbzmHNco9yMs
FK/jVAEy4Yp2aTkFu1xL
=4hA9
wcDMA49EwzBHBfyRAQv8CT3tlOGMwEy01F0kZ8tcrYofenVzeKRrUA46FBgOEm/f
3L+1/C6+BLvDGacMF7e0V0BTJ7f/fzYYAcmSF0WQrICnDwRrrjNgN7qEjtYyhr8c
NqpCSEgeR5juiG/DBNEERDrAxG/nljx0Q5S5ILN3kOk1Bm6biK2f+QX4xf2UX6A+
vg52KGbpBpZaZLW7S0DxHlkEZAzRNbgKN7oxlPHDQwiQXA8DKw6pPSt26vuEFawN
WDalia6zU5bjQy5xqgtgf3QZJlSCK1HFVc4XCQT7kjdjlpCjEfLJl056dgUG/DZP
IE4oITG/9xQDreyUtOfOFkRugOySpFa0LPHOGFYnW52DTlTv8f1VaPBzHZcRf21b
R3nATTNgkU/XTdZWTb2gfj2AfbLv1xJzDRs38TAGHYpolsFN/+ehgFoFRO4+K0WW
GgMfkZ03Y5mbGXaGFhGcJEQMAzNbtS2RbuOhwkW/C0qm7qDW98KZXSLkeL1pjayo
07KGaAJFZd2S9Qsb3+3g0lEBmzLIOzqY/n6HCOHIS48/6etFY7jQ42JfN9/yhdRS
coNPK1gQBytmiZLhpVdQ/Nj+1LXzeRZehBPxT0eelH7ILcFTvZhIHPAxplUG33TD
rAg=
=XH0R
-----END PGP MESSAGE-----
fp: 533A89DD49FBCDA2BF014A936C962DD77704154A
- created_at: "2026-07-09T09:19:54Z"
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA/3nDyRfgQqhARAAo5PEiqHIjJP887/Y1gF1/oZDbHvwizQXOU97ERsVoy9a
3bhcfzB042l7Xp2s0IIZ79QOorWqRarkea7JxIEHGLWcYo/L7SKh2kKDZqZhkC4e
RVdhpZNzrtdeN0xlpXGMgSNLcUB+UBUR5mAPF25fUylHHiFjZJR29KJHw5xxbzR3
lz1Up7crmii7o1jM3wY8rQ3FlsQMQjnPKbhyoVQCFizEHO29k5TMKIwnDlrBFYTI
vc6EFF6xlkFyz1fofAtv6qPLevEj1K3JlmYJoDqLJAie7IbY45isFq7AgdHVzqtC
5Wbl5IcEBj/Qn6YCOJcPN4TyErYG9AXY4H+sVHH3izj5B7Olzw1VnXVVq5c5Dhz0
YhLsjTySboBqfeGlHSaJ37LWLBhNmpWO/xRGYkm51m0SSWfheqk+3SrBdwPY/BR1
+NcaYeDEXIwxkMDRw7K1XxekpShzR1aPy7OHD/6BMyquNGVSutZMb56lsDC7Mmv0
fdkT5/5JTMzywj5DBP8CcanuWDuQEV/bsasN73mFT3NuGg8dPBMea/eFhs7gyFvS
ePsIWZ7a8tAfTrCvTlilpsb6bA3G44p9C3A0rujeeMt8+/96k7Lc4EHBKFXI2sQv
4jr+ScW9uomllz190fb/cHNh8j6/zwAIDhlfzzEVj45WJzGCUkA8u2pCnPyDXprS
XgH6vu9WUYDVB/eVkOzOREVGrrQXd/UyoNgee371tjQ2f39a37Ql7LppP8FDPnbZ
PP8SUeIfKv7SX6nMGOhho3Un2hYMTm1xKu0SheqyTq3oYphjVkh6BSNIsQl6tsc=
=UkWZ
wV4DK0+AyNumsXsSAQdAmnV3rkI32tVB1ne2EE0ZCZoQzd6CDUrPNijrPaXtJk4w
KDShbO0ota2Jj6F5mx+bscpZkY7LhgcyUkg1GcoOconEizgxmcH9cLaX5m7Wfp5B
0lEBM1wVjbgWVER1GBBay0moPjZLkyucbUmz26QMYBZxTNK9u5c7cxdlvOR3soev
tHhATcB6piyFVIcAHc0Zl+nKfEih2TrH+4E3GPv62shGhrU=
=SC1t
-----END PGP MESSAGE-----
fp: EFBBBB131CF1D863005C18868C8C09CA950B1DFF
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
wcFMA/3nDyRfgQqhAQ//VluVKHQNlwVoIN5NT3nQa77qYpSEg+Qe/kj9oUJxKhlL
PS9PLfr6jqMmxCpABOEAJU8c4BNNoqqJThrgu6TWQ8iL2nyS9/BspIFrkVSsuCFU
/fpWwkGhzl1bwEebqD0ZBJsYBFVfW/pxVgsreudbkVNMhtCgp1Bphj35+gbimdle
Tw0bOPqkYsPymea4oYAI3TNeqpwxWejuI0trseLQmPUSbseRwAxvX9mB8Id56VmR
GYWP7D5Ujg4RWrl4RRlR+a959ONpnWlkNSPanFgvmLvgEqGxU6ZfgSGjLZtUNC2c
ZPrnXnQc0+H2jg0MSkbSwbUADJ/WtukQEn4scDDWCucXZg8MLbGr4JM1MaSumgJg
QlW6hO0gJ8SgMvpBTUqIOW2+ajaXe/zP979SWotCcZgRLvigfLBRr0L2rITWcP5w
5a+1DPeZi/mTyDpkt5LmQ+Tb/6aDMD/aHyEqUskB/6dXh24VHQuJLUUrTPdURLe8
bWFGoGl9GztXJm88d4gOPcvos7mVpRGLRogo1UPe3nwnWnlvWfmV8ONXuAsL+k5d
mxWw99i+fIY/cARftdUmYs+BlUJ3pt8Skzw+Z5T6E7wYWiQnO+LyKp7glk7qnGo7
1XKrFfEG4R1luJzwBa5Yt/xBaJ7UYzzLhXvu6rsFHjtHEWhANlAoZifDh5UivsrS
UQEXD61DJ3GdTJf8CcBWBLt5doxTephRyBSszLEHE6cxnBOLqfwVhjzZNd4TBYNu
zr6v8vaR2/G9AJDoAGS38u2AVHPApgTwgQTdnSCsplIp7Q==
=jS8g
-----END PGP MESSAGE-----
fp: A7A1D860AA45B6B5B29BC192C55BD9B4CD8DE439
- created_at: "2026-07-09T09:19:54Z"
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DuAaR73LFvScSAQdA4j5fweSNIKzWwlZ5uUkcElmP+vPA8PBz3Ci5xjs4EzEw
0UVz8Rd1RF9f2b9z5YAB3KRDiRKvlkru7LHbEvg1Owbg/Py7Sg8JWCKcEL7itf0K
1GgBCQIQSZpZca7KMobujb4RhVnurqn7A3fT0qTwnyDN+cJlcbJALTYoufnRy7N0
CLPALXPYjn3EXOAyY31bUCCxqBt88fTdQndg7EP8L6pU1GmO0M/gjaCNHxdB5Y7V
EOQu4n+uRLiCFg==
=ye5V
wV4DuAaR73LFvScSAQdA3wlRX7/i3qiwCBfTpBaEImSab/kR44A06iwhJfepUjYw
5y+icqAGk8trnFXpdiQ+QokQAidnHjm5KfU2cGP/Wvx8IQ3WIBjRyhv9wft8VA3V
0lEBE1yVtElPn6jMr8pRlq/zpMfIhoJbQvBq1xnD9A3MlbK6GRTGXWOwsqcYc1DX
CReclVkSItk2+mn7DqJi4DwTkE6Lpr8X/aNS9OxyrhS4ZD4=
=pQIq
-----END PGP MESSAGE-----
fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8
- created_at: "2026-07-09T09:19:54Z"
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA3LBDEB9lMmaAQ/7BJBiCo66cbxzVe5EpN7C8AF2sQR26p1BeCIMfvtVH9M2
oefEQv4o7gY2MdbMNDwSAfskMoXlklT2U0dXKzRBvTgqJZPbkVxupP7EdeJ7a0e8
xsAfNqHgHjFgKmMR+NO+fn6UIi7FOGtnZPXvibURvPgsEnRh3oEPAP4uAkOhQZ2Q
oraC8th+7K4DcjXp88qrtFyHdUM3l7cPJ5PoH4YMjGfU1dbIar6vaZ+zdp6G3F7P
qKza9tSxGKu94uiMNKNyhOcWvKL5m4DCPoZmQ5rFvJZcuu6c0OaqiqRgqm2wwhsG
BUf002nhMRlc2xUGty6Os5N2GnDwny/zYqpERQ8nyNfxYhuti3Ohdnks9WueZy3Z
dc2vPI+UzQTgVHXqB5p+xiDPD174HmeWc9BpGVmGZ+opxflfCZDVoO5PPSZSLcTm
1zFEI5mHb2ANp6FdKME1UKQwOjxRcYd4AScwr9+xW9i4yfSwkTjNNavnZ2fOK8n+
L3bcjhsvzvyc+RPsmpgD/5BFvHd54ncbGRIA5DQeRbu73o25SITHCIiWNddwiiMQ
CHUhJbNHaZgmH2sSYtsZAEcEB3jkD1+rHEt6xMk2bkQzkiV4Z9DDsS353OYjJkif
t0cz3va4fmyE8fzI+qYX8+rigH/J+aNnVSJn8d5PxZ6DOHn18zzb2XoHT09jYLbU
aAEJAhDkUXtGw6W+IrT0Ohr2WrSUjvA/D0dir08n7+ghjvgoc5iIg/xznqOY668O
YcjqHbre0nyVFLFjJ39NbRN1t6a9Oz0LIau6SGMIMMO0N5z/q24gbAKi9HNGwb3y
AfyafOC757hT
=3pm9
wcFMA3LBDEB9lMmaAQ/8Du5NDJm2S600M7ODYuB6wDeKFkuaEz42B9mpqyK/lxPG
Lp2jSTZk4qi93+6uBgAeGryJe5qOuUwRdgnnIe//IdiCppuI9iv8W2UAHx32PVEc
vNpipdz1pIhXEmBJuOfyv7C8TT/+nrqdM1NXy3hZeH/JhD/TgKP0VH3XoGFef545
+tEz9Cfjg6pvy3BumY2N89Ijv/GAuRkgS7BAdcdoFrc4PylXleYN1SS/Fwb0WyGl
uRF20gZgohdllBHFqApdgVTR/jMl5v1CvA9kMMYRcExHNcpsOZ0rFHyXjZoPA52L
VHLeeIovohDJ9nnETX6KHMIe/Z4MpdoYK/PdSXpBT0fw/WM1wC3b8px7stvsIekR
8ZEh14fTzgo6J4mqLYllfWxEOx3XrJ9D441IcSbV51pswjlg+vaaAjB8GKco/h6F
95TAiJnwqM6c51XVPfJ4CQWJMnpqdfhXZOeCWIju6EizXu0OCko6h0Dq3gfP2SHP
7y1KD2G0XbRHtd7u1gd/iMDRiDaO5UahZDgfRNWVqjMtMwkbXkVTz+auIy687VI0
usW1o6BjMw7v84UmCgcDwo8W/W0w0PmZ3t6WJRXB/EJfirfGR+qerM91KwBT7Mtf
qEG2P/43AYbzFKHndXuJYP8OlCHuWIuCDzb8w+beDqEf8Vh2BQX3tNEmDx+i+a7S
UQHgTUb0hqhOoL572k8SPlf4pW2gw930+Tm24w4VFPhSNp7vL1gDwuFuWfzQ5LcB
A1p6Xx4vBrdG8x0GvFRaiXV3KRhm2TU3XvgxunLtxebwTQ==
=I6Ll
-----END PGP MESSAGE-----
fp: 0E8955A79FF4687A3ACF78E50B5E444C75867E58
- created_at: "2026-07-09T09:19:54Z"
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DuAaR73LFvScSAQdAm6dxvYYe69zu7F2Pp08Swlk6RJ8lec1Zuzq9UXIzm2Uw
GwpI8S6wl6T4PxkDEV6cvYaqADAKNVKfyp/AMbIdkPrRNUNsKnPxKieUtZz3t4hS
1GgBCQIQcXvGPr3yB2X1c2m1hw3f50A3Qb5kfOAsne/xgp6mq26Fr4oF4eXN2tj/
aM3PZwLFHqh+lz4x+ploGw20KRUhDM7oTLl6h2DrQCDPepnLSrIPm4vIOMMP9szT
OU6se+JfLNwqLg==
=RDBQ
wV4DpyXAcYv7T/8SAQdA5OoUcMnNDngzRgWJZ7Tx4VEGxhxq0XBxaKeSCwQjCGQw
fQpjfG7teEeJsoE1w9PduB7MBdx5s/a1U+6vORYng6oH6hyQsuMVS8Zi9j0eekYR
0lEB71yT9bwiOPPddxxL8gU0dzG/ntvRVTbDrt4bkNTb+RhBaM2IA1fNt6vAnMYG
cPLk3Z2wFIslMsjAfeXnQqu2IIhtZW7ytKReN8ShYq5vAhw=
=ElKW
-----END PGP MESSAGE-----
fp: C674EFA56D3EDFDA404B1684090D46D8F1D0C0F8
- created_at: "2026-07-09T09:19:54Z"
fp: 98235A419EA3586BFF4E3FC692D4A5202A0D9519
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4Dq7ZJnmCAxTASAQdATZyruFm+ZvcOIjf4p52yLaFEHSx78w9ov5Ng5PvXCgow
V1ZsjBSuD2xx+oYVqD03vkUXr5fT3MkNtHol6ZZ+rWmiCSEAdmRyQ7xN5doAE+1i
1GgBCQIQamYRGN7+tAhquiyp6Fa4hryyWzP436NAPq6s2gbI5sIcRnFkgfu26qPL
jdqhItfkqxC5rlc2rqnU8iUIsTOAGD3nwihC0r2seI7ff6MRA8sdWXvmxMKw5yeg
sPo4XDHUsUVZ3Q==
=83cB
wcFMA911WKxzIy2nAQ/+OGYey7y+fe2C0NpXJS3mKOpJP0ki8bXD/B5TjGPmEaqk
E3GGNZlBaTkhjEl8GWsN9z6otYIMKIWNYShjBWWADzCFjLFRoTADxxkdrB1npDBf
dgZNPEirxDo8zjuXWo8YX578Pj4MmTyfe6O7Ty56FbDe33sQ6Gl9uH1tp+nAhRag
MLYWSnrH5kTVNv1sqCe9d11YniQUgHaXfyLMCsPyvYlUJCGtBp2Z4ihv2ZbV0/xk
WkJIR7hOLPWKM5CQjQOAH6Ei2zkj7WMW1b0e2EM6d+O2nCjeQq33Y7KzsKzr3L3C
kwJYmZH0fPgibXzV0oyADvgoCdnNiaK3fdWA+5falvSG/Y+SSca3il7/jYEK7RPt
eRzJIeaFSzfJT2wbJX09jFKkgRxN0XTsBXFhasnplxhakEzNQYfJfezDur/BMK7m
Ned90hoRVc0zUKZc4/YOK0bOOGvKnen7VxxL+y4TfReFqkMoeUMMRPSykpKJKMml
6CuM9nFxEg65/TE1YB1TgI/DJyRYaVxXI+Fadb41yI8ccmtUu8vTOSqpsJiSBX3k
ITY3NQJjXx373Rt50MSbw5ELOybWrXrzqAyBOXLucc9dPz+55XsgBuSoRlzW8iIb
DJZtz3GZDNh7iLTxv6skCTtIuMWv9YY5KwKzvPt/CKus4EP/RtS28b1xb4yaOJPS
UQGh/k8RppgvTLsrgl+okzWlf6JQTXS4e6+WOYiqU0D5oi9VcIYi4hYRJKtGELoY
Xm34iNKYRyuSsUEbmr8ECo5HUsWQVWNSGgfOX2aIy/3pdA==
=JH8i
-----END PGP MESSAGE-----
fp: C903C046A063DFBF8F41C6576B26CF496812B00A
- created_at: "2026-07-09T09:19:54Z"
fp: E5B4FE1E0209DFFE320D2A2E47087747D89B72EC
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA911WKxzIy2nAQ//WKRjv+DgHZec4UfE57zHtXntj1v2m6X+H4GEX/otK2Cr
y7L6iASfVIaNDKugaEJX8ZtKWmoXih+hp1nEnT+BPbATxQlaui9kB4initp14Kl/
4ZMU2uJYzb0r71+Jh63bW1Q1/aAiiKgQUMbeQvxUuqUWvFBpI1jHjc30vYlzIm10
/zafLax+i0GmxYrrnc5e9WGuHPg7NkBarJ2cWPEhYqDAhH2Z+DAqBWcqJI59NPfj
3MuWoiGNaHIIp2TG9Y7wsPndTqebjLrFLVlpHHbyivB/c1B29653VJzvPz5bw2vA
s1toDIB+rGqCp/grBIq3KO+ASDVJYvAGGOouQoRTqqP9rqxqinAsgsaWpYQ6YuSy
Moyb8k//v66MUxdir2BQU/NOPBkBpWbvRoPhFP24SP7ppkd8e0YqnAtJWLKx7Dk6
otBG/lx/4HqnguV/zW9IAuMDH2/utXXjj+pq1npK4Yuq4HhjV7Mxc0nUF9z2yGUt
Dyh7iKwVGHUxGBbI3TY6gftdXqcH5lC2UwZz1mOcUXLhNekqutXXyCnxiX0la+s9
Zs3kipA4ZhJ+dNgcqAlFsY/b0I3ANoNv0k6LGSrtRFddcGOGKWGRDRLcUJ2Fjwn7
V/ewMuW4N2q1uZHbUrxSXdruQf7s/01MxOIxbPvL8NmOpikeSjK/3tjYm9/gB9vS
XgHWwlvsYELtgxo+pvt5F3WrsMF49ybngKu34OPqseKCOoDGNlm2++U/RUbuzvmD
aTBOpWH0Df8PZlvwkkfGCENDLGa1gciWjPfuhUg5vY/YUkl+hebWNNzy90C016w=
=trD6
wcFMA2Cr/drkb+8JAQ/+LxSEQ3e0lxIPVedBh+ANzGhsjA0BoHTl7sjVJGchkKlB
P5E2QQTm9bhRK+iP87h/5yy3JlSj+KS/GehNaqmczORUsrzOWbM13VeB7ESssHYo
Cky0QYNkzYOHxJc963haa4chmtqQbgn8yRmr1Ur1YObPCEdBvi2IaEFe4oojpntB
ym2I3uoOBgvM/xFifEXlCVK31c/mHVXuSVUVu+CYIWWIOcl6mdPLpagNBDxeiGe/
yY33+VKbF/k+9AtNsow5G623UE42M5ztAkvpLj3GKKwxkV11kdnfv8OCEyFLCu4u
SXRcKocNBLTEqfwKPeVQHsPCYdPG1SYrj1cqSWzEs8fL0/mH/2t1p+d2Jt30qSG4
GIIS0+wjwg4WTIwAbFk6p7jsSzI/InjB3Zg041Dz5ESQyussyfZZrEtvxHJA0aq6
ABAdZhA4WUbdzz3jElPmDGpVK2CZ/NavRap+Jwzm8DiaYTRE1C/59345KDkY1qBr
4WQFUXxbwlhlWCX7rzPastbF1BFfj6v+ay09udaCHJYvg+7URBQldy98RsCpSNUv
p87a8vruFdGoeQ4TXnhHf5m8qgtaGsoBWpTKnkmJ5y4aOJgiZ3HtMzSX+vL5J5MJ
UTK4WH2jQp3d5RtNrb6DgBO2AivADTmlMA2S2fLCnxQzHzUirvlcQTtQvXJrgeTS
UQFdm01Xnc/vdFhbW49YDnw6cfg8B23bgK8KQGuNYV09zrxIgnTUYRXP3hWgTtiv
cTvCMlbV1UY0KXC5cCqTTo66RmS8itbMTs97K3GT/yWNWg==
=eYl+
-----END PGP MESSAGE-----
fp: E5B4FE1E0209DFFE320D2A2E47087747D89B72EC
- created_at: "2026-07-09T09:19:54Z"
fp: 890B2EB48F343D4C6DB9DA0916826F30002D3C1D
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA5pTFdxsndstAQwA6h4Vzl0iUViPuYCs3er0WFt8gYmfXSC2u0HcMlSYxqsA
nOQb5/W1BpLdRTbMSZB32iYTEg4TyMhGzrmBiTYR6BoTPvzKNCbd5o0Cj3Ew0p0p
Vcytx6O2sr/D911zWnEMXDERdHrBAeyCybpt5QaV8LVnTMTKZsEEvST9ZCeVkpwz
95A7vruXSsJy64IzOX7UCO8zcMU6VaRC04aEdTLkeYsiPlHSLhXSzkbBtqyhWgYA
WWQeuJeei1uYiCU0gbfHntbHIzOUyjmox1luOnI0VRE8ZZ88PCaFoAr8+pqLAnIY
sM9tBaHQhO8f6boeZWYOrtx8jULkiCbgBGzAE6XLYUbflgP2aPZ4U9vkDhpKt+Gt
1sKJ5zow4rls4zU6FtJ8o6x7wgVskEGqRnoxQRWgErgPATsuyPQN2sszotWIgcBp
1VpnbpAzece/YfXR+K+iwJP5aFhI3SnIKvhM6gaEvZFibGwZto4UedW2S1RTO8HO
SVBLon1HnVhb+fkvF8BT0l4BoApb48ki1pHzE0lW0RJQQUwY4LIWaoNmq1Du2EdY
joI0bqyrWqvn1tFcV4yASPaD/BmCfvIpIWhv3cjAyqFWK3R9bXnTWmmjURweU5Os
sHKbh3JtXN3qgt6fQzAY
=nW2W
wcFMA3Zl11RyMNviAQ/8C5itsVwJLo9SOkYS7/87z1zaESeMlQuf6+OB73GVNAn1
Li7EbBaxvp+vM73cCHO7XL7umkFCeZG6e9qRGX1XVTNnTZDzeHdHtVc5qkqYxfIi
MMMLK3TUSS5KSxhVFh19UmR+oh8j0uyuu869Bb/pTtiiJB205a0vCY8CAK/2vC7r
/2d+bM/01/5xjgGRLlp7hupe6ahJqg87UAiJe1ieWahsUQO0HWg68UbpxmKvADoF
345XL+azA13wgrKvSTaYfTjgU6jbqCwReE8YOtS3/mvo+S4U+HiVbcfhWlIzjktu
otjXokBdU+hew+ICaK1imuZhR0R79mEsHI7mLJChyV23lVdl+3K1ct3B0dITj3Un
T6lwMeOMNUz7BrhY8PK7Yf3xgR9gIzdstj99L2ViymIi9YibxBOhdQTGp94fVyOT
d83CQz1YgvfP+sMbfr0kI/ytmZHTl5ydh8nAYTULeGTEAX0T6dylwKhZsBB8652I
Vivwq4OVfVvjLRsDIN+Ph4kA1+mpyF9GTFVLax7Fjry3hgDHSFthiYADoe3ifNdo
DeN8BjmC4ofPjB1n9RTrwh4YRwwbTjcUgHG0KpYuDy2KWAnzg1GYOxIK7sIdOPbI
93k5BRiIF76pHF9q7220EfpfllLFzcGC9XCGcAucrVTO9FN5W9IRn3iESce8MrDS
UQETS9yF3qmHF7Fo4BD8b8pYIH5N1WjYxEYYUdd80rxfPn9xlCRz3EZ12o22UOF3
3N7sfLFCXT99mF/NWkfNDgxHt2+UuyIWMttffnaVSSpWFw==
=R5Jt
-----END PGP MESSAGE-----
fp: B4BAA59056DC362809388F3F2119881095EA7DED
- created_at: "2026-07-09T09:19:54Z"
fp: 4069413B74A3AB13E10DF5FD3EA8F0D0FB1CAF36
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DwvSwby3S138SAQdArIEvOD4TCyWo0fI+yqo5F9LtEksX5V13xFgSdM+RpAIw
WbTDwti3aA3oYfnjlqJTP53nj9BrmzfMJaIImKmmgpucT3H6hte2FDcDXj2bUhkk
1GgBCQIQWGdlnMwJ7R5a4OfsWjYuRT/JWNqoBmGiXliCkbUyJO+I24km8plIZ41P
JDJOwyBJsf4Den9LDMG2AbznO99kVGmJQw4lX7VH/QbAL8csLn6QKcjlCxYd8CHD
paWvhhAXDpf5rA==
=H1D8
wV4D0Z3mmZqL/KkSAQdAWib8+GRxR4uu43HT9lWpkizPQIB4RfmZS4k1opXHqnIw
F8fuwxqA8jSQ4jU0XvI/UCKXD1nm4hMdE7bb3f2tCQbFW+YDFL8OrnWw/lnEYWhH
0lEBATRPWV4BrFs4LqlsVOx3XUljHqs9XQ0lczS4eQsEmOBKvR5p1xOp5qwm3VpC
JQzkbVRHDtf1o/y6T+AWFgiSXbJjzbYOmiXnMcNJqNFT9N4=
=5cs2
-----END PGP MESSAGE-----
fp: DF977A1F65999F4CDD721A27516F64D5932B8AD9
- created_at: "2026-07-09T09:19:54Z"
fp: 42AA7F6BF795490C1A522C730ED842BE1216E0C1
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4D3RW6IFeToCoSAQdA3L+KQlNWzCPn3BegE5lSkmgoxzjjKTuTsbYx2EbnWxcw
qMGk4IV+PF04PXWOIhcYJJUuQhpMEj5mJyKEK4mvF9W3HVXqGjhKsEOd2suRDiXQ
0l4B2dUo6X3HuqOvmwVqVCaeZETTbV/ee3GL+LrStZhubQK64M0RlUQo4hg6m6bJ
N58BF3ULsaCTvfhSBDZHimZrCrTcENPhGXeg2YQvd4qQyLZ9cLJox7Qpu9D4uIfm
=hCIJ
wcDMA5pTFdxsndstAQv/UBdK0phdO3wdODohmgA6iiEH77FRCQR7ejamKiux4sip
6h2evC6yIrupB7KbdjiIjFqBE3luoF0+4gFbzv7oCl6t5U6K/mAV/i/3ChXHrUIL
BYGLs7Nbaakw+Xpj8QWa9waSPnzf5etF3l8Dw+uQZT5dgFmOL0YvqBcBr4gRzNz6
M0ln6e0/ghCQ9NylPSdsfnLU9CHjChQLU0VYAOzF3GIxkDV7M0PlH6/z+OVHEYGA
A89xm7zSieXU0GAQdrqfks6iC2QOdh5wkXysfgvlSaRGJg4bb2M3+LwvAX8WTxur
0H5Ob+xizTEbDo1RsuihVgW0Qjj/sAe/qB3aDNXmMUma31czckK2ZqjI0ma//+BV
wel83HSILZKkSzl36+fgFWqhmeSXIKq9PQ68TRi6//YtZ+/1/qGEdNx75bxrplsK
LZtJ3JAGVCysarbmqbPWPepxZKXQUuRYrnjQuND8AT2dTWaHyGwhZ+PZkX2yIYhC
8xPOGIDnGUNuM3n8GTou0lEBRrorCd/HjOYyy3U6v4Q1RUqsQA7bisycArqEpXmd
hfE2tKDFs/qM3VXJ5Wi5BzOZsQqC5m+S/az+XqmS25J5Ho+0VFDcZ9dJD98ImUfp
rgc=
=Wa4b
-----END PGP MESSAGE-----
fp: AC9B0DB590F4AE2017C2AD836113AEB66C510C3F
- created_at: "2026-07-09T09:19:54Z"
fp: B4BAA59056DC362809388F3F2119881095EA7DED
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA3n4x8uRQRGSAQwAnPFXFBSKpzB1ERq6hYjgMoLZu1lbBzol2T1VlMzs4hua
QyoCP6LBvUtpGR6qdyLJKGl35KelFt/V33ooo0EVN7QBCySzfb+UADrSjeskcLoV
NG38+0g/Ix4SdS/R7kC20gosFoJdbre/TrBaVRUyTuz0vyVM+ww1I4mOnjhWkOdv
WY/lstphdt0g3E7o6ZEKdUvMR9XzQv7upvWyq1ws2ckUl6Z/WF1aHwBu4PfJEzIn
6QsY1jfUWCcJ05UYNo8+tGZ6XOmXPB5wFqaCK3Kn9Vkzkf7e0pPEDQcRbFFRFE9X
36ZP6K/MFPhXQGqkdj/BcwLzd8cep+L5RgZbDt2r0xby1ZIG0agPA7P6u3oyB5Tf
RYxFaw22m75WeptauDFioI/zMd7Pvd1O8SrZlj5o9EE7XyqTiZKjig9nRrfG3PdV
U/dEvvqE2l/+TdjWTD5KLlEYw5B0OyA3RAh9uJBqjemS2ev8+omELWpyKRRYjgpe
5If3oY1DQuz9FIntk1T21GgBCQIQBB8QxEvcoG8dPHZnaXqDewli8+L/T2Zg+H/e
1ornxXKGYdY68piE+W7mbcIHyQ7psWBbgJUdAupaeI3z2hAkC6TjrWCnsksQo3nJ
7MS88Aa7SE+km4BvJurvi/JMsjzEyuaMvg==
=s0ox
wV4DwvSwby3S138SAQdAOKuVWPXdHIVVb4Zp5TcobpWmXIv8OL34RlLDJwKQkgow
f4JLS6CS7MwIjQE6H9CGv144tyHed0v2CH8LPG2flUq6em+Z97hR9yg5QoD+UMKM
0lEBPhHLRZaz+qEmSIkUHrzSTNHMcaB9SxYJ7Y1fRaiznFuNf3+tCCK8LxHsSp85
UyGaxDu9Vt0yI6A/zCtTCCvAg5tTz2mDvuoW92YU8yh7oHA=
=hvTl
-----END PGP MESSAGE-----
fp: 43DE8A01ABD706717C36018C48C47C125C022F29
- created_at: "2026-07-09T09:19:54Z"
fp: DF977A1F65999F4CDD721A27516F64D5932B8AD9
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMAx5drVN5V7yDAQv/f0xQiaSw3hH0O/RY3eLLcrUaBFIqMgCxfw4u5Xg8AQWT
FUgoX7gTwjJYaorPVgDj6yRNuYvY6k5MVbLeR4F7YIF89+NLi/SyIB58hTW3Ti7s
MhIPtkpQ873rWzYNkEzZ6tu+NcIVA1FZZO77yfr+SBz1Pu+yGOfzXjyVfEJ5qTiZ
ax606ho2PJL0DC/q7WcWZ1ggwDBXwDbhVqGScosQHuneuNuUbN9R99QXttThNGdP
IFgO7+0zt3sEe5JRHx/Mh78uUZaZAAeqv0tQcQrcbd8fU8SPvsJZvm5v87wF1DL1
66MHgp+oVPXDnBvTOl5z92GyxCX0Px2XECUjidvhjlVRGPH4NZvfemDMNQRtlEPi
LWqFwkz0fNMbyIqNgvj2L3v+knEL+XqVScUV67QffbFiEMnpFrRflWhdgXb+GrAo
uJ2uY5U9FpuR4bQLgDbYNOCg0NAxUV3GvU4g/FaBJTDmsKw+7KuMrrbud3ajjHIq
IohiPXR7yX9nji/EEm4w0l4B2bgZ2VIAgZnFNRHH+5dQ+Od5+Oznefz25IKZ2zr1
5nsEMNhnnnDADtRUOMJB7megvXDZBp4+fde7f1P+1ouNpgkGLBksnBeWyoDGnBHf
8ZwftqlB7q01tymYZASs
=0+ym
hF4D3RW6IFeToCoSAQdAmI9V3uW4skY/V5u/CDXuj4+7ua+W0DnDouvwWfPUOC0w
+a5o0/2As2OiIY4m9q9yBiMWzad8bd1c7kWOSP3hCgZ6v19Zbj/Ddw89ApObrFBX
0l4BQDaZcmRQPP1wiCMUZkSFN5eDNr7YVHqyRCO2y77fotG8pPIs6OwF4zyIk2TP
xRSyqyg4HrNbrNlw8Qk3bO5Jt3kZHCHz1PIcbjrI+YShHLhbgSsdJ+EWcNuy3Zhc
=PAI5
-----END PGP MESSAGE-----
fp: 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485
- created_at: "2026-07-09T09:19:54Z"
fp: AC9B0DB590F4AE2017C2AD836113AEB66C510C3F
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DRPQAGSQLsJYSAQdAp+bmqUtncn52593x/EnlIA3jpyRUb+YbR0heuFvZ91gw
PRV7peph37w54Bjbf3BQTxkJH5iBZm1GRb29G4dKQu6rdGpnxORFtQE+EuJRjtz6
1GgBCQIQ3hHqEuRovjH2YjDn5F600DxtuAjWAzJ8bZhqhXqHci5hJgEhFplvojPI
e4h+NeJX4VVw7RDZDqzNN8Z4ibwPjQEVUD0Y8qN7BoZQUOqIE94IosnFNQn3n0Tn
z7IBgpUkMdvAKQ==
=+lT4
wcDMA1j++ZN0cDPgAQv/bT4ensVZeqgxctDgRtF3QbsWz7Yl0iFT362uHbv4auAQ
zEK1uP1KY8E9qKaE0ALOIudT+kcOh7apQrfa5C33Kp4cRnzHvv5xQfAzxNbFMHuh
TfjrFP9HLdcYvPJ8NyH8ZSxxpblk2y5x8TVB6Efl+hPk4lW3jHYA2dkCae/9eQG9
1A5pLzrz+q4J2jfHCW7XBbRDqevIIRz3AgEU/S3zrWyaGFLUkArTNTVBVHB99Ntb
DwqNJwQFOMJRHxQMHhB+Jsu79p7PhCFdYi7Oq886AJug0V9BW6qKF4Dsab60fcMP
RkELN7OIQhAFYIODHX9aN4cW93dTEdjaW5bnwbagO+gGlqjGfarCctSNOWDPNCWp
y5fZr/7JA1g0VMY/XEmrYjTVKZ+ZN2z+04j38LOvJ43oE69gbBfQV9Xl3jt1iIuf
lKF6zmZSo9bPrFFcAaWbR94pxpQxR/Tnj4G+g4H1l6gNStyrlXmGO8omFgf5gsFp
EumSxyD/MVdpDMdYEUsP0lEB3CHznlT+gsJ1UP/MFcHgH2N0QJJnZDR9YmR4Mp2d
1SGFI5nD/YaA8C5TnJOA980Db4IpuvzakmLOMlIXUFWfoC46DswxXNUVsWbdXK7F
An0=
=TgU7
-----END PGP MESSAGE-----
fp: 9F5341688D2F9024A15541C9E02949D0F7769E2C
- created_at: "2026-07-09T09:19:54Z"
fp: 5623CCAD4242CC3E0225A62986AF09C173781578
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DqL0Ka4V5gcISAQdA5qFazez9ndCwr6TEFg+MyFOOaaD3xcNnNjfBpeXEOxgw
sKSOvs8tlVBLyeVkYRm4UZquyCasSZoiFenlqpvhynfDQoAb6q/60FDv2waInO+t
1GgBCQIQxhA59mLrpEsYdJbmBK04eK2vZ9mwe1wNDYT+V3wyku589ykcRjscHaA+
X9XbTQYkxQRzM7WDERQb9JeUCPkmSNh8vW3EX5TwMFocsmB7+A7yl0SX3imDISil
Ck/w+GKXC3dkfw==
=ahne
wcDMAx5drVN5V7yDAQv/SdfbVExUoA38vmJaYrHqPgtmqHhZAXZ71OhhZJxF30v8
wsyyaHHCgv/hPncBvZnCXiCUSO1T+Ci7uGHVK4M9+1ma5v02KjIe6ObcW848pfEc
HyN/nGmusPSCKZi0ty/tm7V96qzjJim/6ahfvQdxAGcsB/4MrG0fDB4OxRZ3nQKD
0ixMBaxGPjzWE9FOXb/TzbcuKFRZCMw3heLgm2NiFiCU/W1CyLeyFyVbsUyWFoTT
nLTZF3SuDkewXlKtZrObXRRXBIRkNIQ4iMGewRHhrp8LJgQ4D4x3Bw4OMUXV/x9S
oPleprSEkx9heWYHSb6vC1D/TvsMfU7+sE2cojYJI6imIhTLEW9rAZedNw/ZQw/j
1tWpHSCt4NBRMFB4wKLrrSZy4iQZd6+bYDrxcWYZBN65TvVVBO6OSnAEH5cC/7/s
lEMHYqWzkwsAD3d+BaewQIrGv9Dp5IKRGRrQYkel8/+d5qqE5vzwW1rktObdVhxy
Y9y+xXGKstpLSUUTieok0lEB+y2zGDLSUBsWlQIhN1Srf6rFmqRjZfe3WGj6DzoY
gmuEIzQemTcn1i0Z9sUYi6aM9vz0SAXvxdPsjzZmQgAz2TdANjjqjIBtbG9qcNO0
bDA=
=LuZC
-----END PGP MESSAGE-----
fp: F7F328F0E4958E4C785977E23B8AA0BAABADAFE4
- created_at: "2026-07-09T09:19:54Z"
fp: 1EBAE111F6EAE0CF136358E8625C5A3B8DA21485
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DbFrAcOA5jGISAQdA0D1+2NCTCe4CChTZf9eSjOXiZU1xLypyIc5PGloNFEMw
owiGb9QlVUSCISXGFQZaQ9UCv/PzyzldSvz5QSP0OqQd2EGAUapd7m+2XbooiDPv
0l4B6kW5h/ojelU/rW5HABUVfzd6EbivLj/DljoDw6We6pmbzXYuqA5nKChGAxM8
cYVMpa62yQeI74U4HCUhenV44M5aLvlA58qHdxsoq5wctqBb6PSZJnY926NpMPg+
=pOxb
wcFMA1kDHheI9SLWAQ//ZXmA/CzEJ9cfr5cLf3ofKaQaS7uLze02R/qOyWFYSVb+
vhF2x2OGoA0A7u3BnmihcmD/pjd2iVcf7Rr9DUGl2Kyzj7SIX3JbTjwIZt1SmNfE
e8nhuFQzFKXrsgLSXgiH23S6sh7tE5Tk2DQZ/OexLL3Z3OrHxmhRiFVx2Nwx1LU8
mkZKup1zkZL8XaOcArRwx/DAOoFSBKyqQ4PlIz17ipcuocZj6VxT94rnjEE9i0oL
JPjAU299RUS8nC19+o6XSu9DYOxQlEJ4ccvCksO7fRZBAnVmPC5gjOCu8h5oHooN
/k/VmLbtojaqVouzh5lxuXm+orexY0tE7APIEBbpS1jCTbo8ZNYnhmRVH0b2OxuF
bAA5P15e8MJr3BJRb8YwkDze7K0AKtvHW56L7uGqSetS7IAu7eyhG3w9Id8RylPr
5SAuhD3yZpPIp4aI/NhxbDruT5Acanvkfx9XbLgtnr+JaCL37N290yCwvlAnEKhw
jerrOEZuQ0CVoc15WTvxsj30NpH/50HeMNuLco5Mdqm9mvRAEgGYugTedn9rzcAS
qDUarFOaCnI6OOA+AsutIdH43OT1t4oOKlInfzx1zHbSF++hS7xKZi7fgM6mgE7c
BPXIAPFy/s0TaF5PQmrZIPRkSkH9bCL21Rb34Lb6M0jF4xuXzR4MRCJtjYfz0rbS
UQEDXQ4COYhunZVWcKG/g6TcezUnpK7jfdeO0+yQOXEDBIDBNA0fZyRhcAUbT1Bh
weRFN7s1qA0/0y3CD8Cn9Dmww3y665UFV4Hh/A0evhIMrA==
=dgwl
-----END PGP MESSAGE-----
fp: 659FDED43DE155FB772A339B343CF1218A664D31
- created_at: "2026-07-09T09:19:54Z"
fp: 17B8FDF68AC123EB666934B17D0DF6EC048A5D77
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA0JLr4yo8A4WAQ//Wat8TkSIAFd3t1v27bOX1MLRTcBIqvyfWB9YIlQOuLCz
4K4d4zRyq1G8n2ubzOfRGtypMkDgk2p+Q5ZRK4H/8Vh5dJjN9zyZacAo8ncQNXuq
vxxI1BQdZi5o9eN5ohXF8LOmQ/BqQn6cdJlFr9b285mqRQVkf9tXsoHW1DkZpw85
CPKwMnc2dmxfRhOMB4GpxEyXMFi1l4nC2AFdPVl2W4C5nA8d7/4Kq5WVhtQrM7g6
KAJve6lCagfmWa+2tvVnhWyX8R7dWjwbI7fw8WcUTzypt6XeOAMjL3pHKxEFbZiQ
ed8ziYMCl2zh5lF5PmpRUwmOeAl5e3/3EdjAkgVAgAbZ/a0iWZ+PYb0Ewnk914Hz
ki0ELbf4mKQWck5wv074tWKUql2RizA7OWAXsu+e1M3W5P7BzU34ZfJBnc+e5ZMw
G73TH8mMtwJM9LYWYMi35HStQeI/F97Th35nfq1jM8ZDZEuvOgBNHNYyVP5HvrgF
p4eVBIEh3h8wycR879RA+WFO9wdaWbhSYM+jd0bPr/cn0/y8Y+zhcrJ1fq4HmrjZ
5eamajUkB8ekfeiZhlAc2e7RmdRtBUACSAkDYSrwuwTGgrhpJLbBIXuxJEnm2mV/
YjBZI23rVesFge4O1zNeMKwN3DFiexBQS9ymMmjjvV/ga4VbN6ifJsIXkXCJ1CPS
XgG1XDWU+/G9GViYfATu/h6A0UZXs0EmK7rTQ/Pmbb/ZHnAV3/v3+ZdmYv4HZvV/
jJdGOondT9jWrtfH5Sx2FdvZgb0NF+BstwE1nuZFEPiE3vqugy+YoSBWrSfoMB8=
=b2Ba
wcDMA195cwtvYnl1AQv9Hr0Fpe5haXmpcy2kaoy5beaJP1AXqcEY5huomy3RpGex
7/J0LB5nvjx1Y5SFu94l8bD7AAwgTnY7jEQKVDPtqzKuHRFItuHcYEYyYukZk/OT
tRs5QSiOB4zfboGB8uFwI0YO5QWfUaBcK5O+v4KgaywecxDlEed7FaV66CuEfNIo
GFC342+dh+TX9cwKxj76tUFtaoQLfB/ThCejxcOu8Z20tkagGd4hV54p1Hvo1RXr
5sNop4ppbq0yDmuyjYADTOnv/eQKBBXTXDhR/ZxzRRc5+lHvx5oOxQplqDAsd09k
YjjichphXK090iJTrHVB5EAQb8ePA05JBysA2nE8rMTFcZ2bkCek27nWN/SoIVEi
0faFpiMM4Mfy2cSAlyod+xrWVCOX7XvvoO7a9mEKl21wEO8q3FAVjl07DdDPM0sN
wMplp8fLaz5P7KDMf92m6MclbqsyFXqFfsHI9gNSajZi8ylzaB9HLTTC2d+4YVjO
QUIuH8MXBa+fs9RIcV5Q0lEBjojsANreO8pPwoAmmP/ExVZo0nXJ3Ovdqd8oKkbc
6OYvaZJnVUfaUf7AAeBrhjudGymJaEIIQnEN4juF/89dg7mqrn0VLmRsuHAc5BBB
TQw=
=mDJM
-----END PGP MESSAGE-----
fp: 93593B8B0B7B88EA2DCC99F9388B6A662C356822
- created_at: "2026-07-09T09:19:54Z"
fp: 03ADBCD31737EB474A4BD235CE615FAF927A2054
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4D9oMBxyVlaokSAQdAxt1SQv7fV09MoX/N+QX9u3iPPFJvhYTQKd8FZYj/CDsw
EAd/KJ/nRYivedukLz4BIb//CJeHmRYRln+Zvpfv948W/RGV2/zqXRuFX8oArBEx
1GgBCQIQB1JpXVuV2DARNhO+yfWgLBh5KHJUlQ/avG2q7fs6KJZL4zKOVtfIBb9G
xx1LqTlbxONJ8+eeMn4yG1GKMbWJHXdDyEo/nwIvagr/URDl8RsZ1zIx0Xhgv+dI
Ap23XWR7rq8LLw==
=KU3n
wcDMA/IHQvF5YsEcAQv+N5Gij2qXj4gjhGxSjpORDuuS9HMyAWKfpshnvYWjr3QT
Wdu2FdaYv1XHWbTMcVH0+B3Pe4INQboGiB2wY/DCzA0vuverBR5DciZ8vN78k05W
+IqDYLfljeclaoJlXnlaPOtWKI2OWm2fsg8/4lBqGnsJ92Y9Bc9qXbmaBgPvgtkU
B3dYDNZ1W6Mo/wm6Pk7QMVdZoJDGvs7PpOhJ3D83koSx4BmZvrDrPpwRtWwkbEl/
zSvpL4qXv4NWQjc71Djj9/uAtlXIt2QPWeCCqsoyIMHd7Vr7qrCAcZpQH2GYnn0v
5Tb3ZcCH6CNRrKQMS5Fn7OH6aeLuKHja012jJxnplYHzpp8hdL/ysqLlgw/wKxS4
rOThNHDAPtCoS2jDRmaNJgiSvOwtwPq1E2JkaInjaB4xciuaK/r5R1CwE7J/uKRp
j86JEC4hLgBwZX4llzMgk575O4CN+5HX/ywHMH3JXozkBPh3EBun79Il7AogUVRa
2uoMm5cHhHZ9M077YLOd0lEB4+qgj4o/p60cx/oiaGEQcQzjcYn8aoFyT023xuta
qrk4sKQDKQo58tQ2FzbKxQeKE7Ehadv05dRevc9j3+MwcbyEDCzbZ1k/zb+41mCj
agA=
=2PBo
-----END PGP MESSAGE-----
fp: 0143019F62469ED5A6A016C219CA764D37590F9F
- created_at: "2026-07-09T09:19:54Z"
fp: 04ECA5DBF73E98EBCC1FF0B018F2D15CC56BE487
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA/fyan/DNa3uARAArTrtEOKSRdUCBku81E/rP6dHtx4jWVbRFTq95nGfYGrW
W/UzXUpb72OUdmfUQEIxRVaKnf2+DQR0mzoHB5VPosJj86gbk4LspJ+BzDBgdM9a
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
wcFMA/fyan/DNa3uAQ/+NqLkSl9GWeDK81+MPPeU0bkbOSw5Awv2xn3eWjFKIjEJ
V5H1Hr0a3b/Vx0WdVM5eat0LpH5/OFWljx0QNJfqFBz25TFgBqHT4Ew3eCtZFxJC
ElwDpI6eCCkZ3w4Zk3BsBwCwcRt0kCHXJb7STFJ8OGg6qb0mB9Weg5Rauh8jArao
VhxrE//oqzLjdDCNE7jXb68/6Rw75TsKZ+nAAtecK4qtliU+gP3o78utoWb4+8hJ
0hhbLjQpKcwPEZWi8/O2gzePHNudHHPwVHOKcIs5kuXF5TPd9skiqZoNTtuiVtGA
LjM04k73fUm4JlqvtlSLXN+epm6ekTQWabslDK6yxXIovu8ycBS1EVudRjMdpBX0
5bi7nKKOsELiZ2k/bULmbLoKmiKSO9F9ulmQGTeH+dOZHPcPxDkRa8waBw6vpM47
4UDEbOcadc8+mAsMVoEiyGl7HNFWyVp6W0V4wWTtICZdty0AK6nyOp5VF9loUewE
jDbk/swUsILWdgDNbquwGkgVbbGWTuGt8wsc9i5erX5dkgeM2ghKpW6PgtDveDkD
uSINtgk6n8izcBOmiw7igD8+5e/bYpiwrHHvgX2d2FqnlK6zoTI8wjsekp+Cy2ps
VO4blkqYmdkbK3DCEQoVrShrRezlSU43wq4dZ6qi97Nk70qjbDoVuXpzNWhP3cvS
UQGmUKqjHRzV9c8lBKZEWdeJlyiWoaFrSoQvdE4an7QptYUjaN62HhG7Fwr3mzxJ
Hbewf3rU3gHC539+2W8wZ3teF0eik0gDU/ug36xun3uZ8Q==
=eVAS
-----END PGP MESSAGE-----
fp: 9E561083EACDE14694C73A323A2F6C1D153D753F
- created_at: "2026-07-09T09:19:54Z"
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA+cOSmNXMUmKAQwAhybBGS9zA55NOWk7Ofvx5wxbgz0dNHM3iM6qC8VRe/19
QppLz04oA5zggkG1QqWaLR7ki2/SLWa4dSF2ag05OpVCvieC2xns9UMbnRmkQWEQ
KHfWSF0HfpgNNkSj6Bc+TCpdszNclhtsp3SBfGQ46HzBYi/VdHloigqS2xzNfLKg
x/XDaONquoDlg666M4YrIFPCG8jNSurLttOuS/KWear5ExmtdQ/E7lsb7QbXAEc8
Mb/WXouAVT+06m3jzdDvsAn2x1rJJi7mqJpnFu1Ojck0uyUKB+0K6QvYcuWEmfUH
sKiw34S4UQJDVq2VUYPItc+GhOSM1dLi6e/s1OM2KzerdxdvvxD/Ux/qnRmyJkDB
bJvwaOG5UzVELIjQ1xbDjw6I/BpzmaTIiReP2p83zwQ1tZkiaeng+l7jv/tkRqDU
U912FVMKtby6RVK2c4fSEa+vawUQvnBWTJmFB4F0oI6Ctxgf2loyCL0oPtXhvsRC
Ez3XlMu8vdfl9eog0qn70l4BTSJF3S6e1jB/6zRzTWTlDKGjIIGtvLh/4BhE+QuB
giJ6uQH+Vloz65ddRDnzzmHoDrZJiE84+V4citSRu6S/sxEe8mj565PN3t2Th85W
sIffKjyvAfgAkimzlxLF
=DCce
wcDMA+cOSmNXMUmKAQv/YwIURSy3K/pt9nr7Et4FJmjQVh5M95bMlve/7w1W1C89
bFVodCQJuKKH99o4pC/FlIb0DWmHY3AsHnTyC61QJ0Mlca0W5eosye4vzeI02KE8
9FvYZRLGJ5f1XwIQTh25K3dGMS2J0CMVZDYXBm1EyqqdxoPuHZZOvas29j1CL5Of
Y6KRbgV323N8xXkuP6THBjVnDwyQUjnrLLlMAJX8bxBgKMtGcON5xqRji4SaWHeN
6ZbZMVjk6o3i00XOQe5xqDcEnBNtpzPXPbIf6enyEKfbzZBMoS28M/4gMkFtmaaF
gMqdH0qwfu4ZsrMCNUf3bQZawPm7JUxOVhzHpz/J22AxODF3CpH2romgJX2igtZ0
XX6nU2iFJDPCfpIIqJAq3D1+DajXDSOlkSmRU9yWUPI4PS2kj03xgR11YDE38m6a
1uvjDJ3p6CfFpBOs+gL5DrAspW6kbOyi309OmfQ+WWUDvSBloCePTbzdbFDPR7Qe
j8lu3vwkT/lOmR/haIN60lEBtig7+AKnJ5218r9So/4WOyl33hYikRj2G/sjrbPs
IktUHFgWuALcNgSCYPkx48WjHUcpjTDjAxkmgup4t5t9wupl+Hf82CkcBrffbnza
8sI=
=vFuE
-----END PGP MESSAGE-----
fp: 9F08DA9D42379AFE6610E9E615CCEC6801DBA02E
- created_at: "2026-07-09T09:19:54Z"
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DrMuSzhFbHkQSAQdAWCM2aFq78BQn4+HSK5w65cXzSkmXmEs7NFpJvvLlHzQw
SsctuSJ/HgLDURG6jxJxBgGwDq3DvfvP2HdTttAgnnwX3fsZrGWNQ7Q/7/d+tQTr
1GgBCQIQmhU5eN/ld+/gqVc3SL4b9XxCdk1tMV3JqABj54AER3eGgIlpCZe160I1
BkCUnOMznWRWdJylRDzNiGh2lSky2G17BPAuINw6Larh/Rqm8XNx5nPa5SGEnM8i
jk+oa8SAFqs6Qw==
=5Dx8
wcDMA5bUWViEqX+EAQv+P4bjeVEVjMrI6tv/HaJd7PI0jDjaHLIKvH+EzamJWM+d
+bf5dh/ChV11bqNn+ziqTQKROOnjaWb4dKmZWU+12/kWUOVrpB2KcOj9QPOAZra0
z13iQzZy/aMSMHLZbOMzEpNaqvNSEuqnl3UgeEnjTav7JuMzw9Y13lWw68i0Bfog
QHQQ5HecuP1vnBfnY7j5rSx+ivKQZ368idArmcVuivbE3yTnigx9EJgw74TOlmOz
p9KuUQzAoTMQ9xle7Af41Q7vgI3sZndWvi/8dtcfPGe9BJocxK536ZumwXmwMZh9
htPA3s2JhnCUwwU+vnFRZsqBkbYRxgTlpE3FLWsfFXlRoqaWs9tz88mtS6ColxqF
035i3L68U6gZpXCNJEtUhjx4WHHDnjKi6bvQGx5jCLmhnHsUU0dTuSa9fr7SY1Jl
2G3nwfpCLaJE9IH6t00GRqgVWtniQLZ9b2UJ+uFbqgRRuZ9EWOCZWQvk1oq1M1te
QCg3Cbu7b7jZjTkk1GKf0lEBZUWHLxamR+THxo4I3nZq5J52P+7UB1V1sylO7vYk
1MFrHazA+51LZrhn57FIkMUCQ/Y4f/jOSFVtFVCIHD0j5+SfNnWFC2AQYoKH42Rl
Tcs=
=7YdW
-----END PGP MESSAGE-----
fp: B92DDC9B908BF3917758D228446C51E049AE38CA
- created_at: "2026-07-09T09:19:54Z"
fp: BA6328948D50175F196AAB5111F324603D12DD56
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA8YZutSkx0fiARAAw5/kBlIIaitQTtLY6V0SY7s/wisp0euecyM/LKJ1ZUh8
Ripi0naU6Sbzn2dDkfEcULcjknc1MWdLIaqgbUgdNcpL1U08s2Hnz5iarl+9+GBY
/VugptmuvZsfAWI0CvQbQhJ6/NnTB4rAmPR6ZXD6tRg8qg+AI/GVpS397AR1dFtH
e6Es2yzgAkPcgkk12xaAYbm2zrFuqugDGiEjGpC85deVwH+RB/Gxl2QAPNEbF867
S3gUOqDxtjma8m2WNWTdNHIkcgOMX6wi4N45rE+abX5y0VoGV2LzfSuU6UAsYCOe
rTfmk7BIFPYvwUuVWMG9k7uwlwivA6nNslunyP81TlsHXuTswTf+bcb+xbwCDEyj
jgCrO6bBzNRwopldWmgbzgX4F91qKTp2enCZPhXKgCKFsK4/NEu+i8/yg595H5Na
Ct37BtWCa32tSy22/SW1HuMnvoGERw+KNxQFF4vYy2b4WKsWjNB/1rVaon9p3EXm
19ADLQAKYXDwG9tQVvQ9Ltjn6jdtSUTCaTp/gGJ0AKs6pQEaTt0FLMe1CBjS/MWB
JFQBkRfkzjFCgIuG3TI/uWWJAlwgQWe5N2zlbOxm+BOm+g9VO+UfTv3KUWXkhI1c
vpTz3jLLnS/rq7WLmWvHHt4gXk6Zjlrz3qo4NaSSWsWHTFlaFdc67O5ZP+oc68jS
XgFEPwH80HGqB+aNCJgZ0Zb4+/zBau3TwHCgduBYGqSXn/lnNC2d8jloQ21y16Po
b5qXjSUSQmABcvEGZHrJezrWy7adZapb5kwEfNTgIHRVeC8xCFS7QZl/s91DQQY=
=oLTt
wcFMA8YZutSkx0fiAQ//XrSOZC3C1b53P7Nxq4lpJvkjFX07YwoQ2uKXFFQLcSC7
PufLzJvRxceytIUhEhCUbx5hASxLfCrupKSQ33FCTEg90eMRpAX3G0eHC+0bj0Ma
qAwAZJnG+vnLHc6W1no1NsijmGXvRzBRUdUk3yWt/pa+9qW09opJPsyrRwye3ZIL
IJk3rmm6d13TA7RVRHmy94TCIGSGHqfDUXLM405oxHQoMpOvXg+hl/YXqBNU8Lrv
610dKzKElS7cksyVdZ2LNL1Th9IvwxnN+l8+UKkq+aj0x5CtuYNjdQnucEthgZ4z
pwayS74uW0vmpCP3RgOhQ4hTdr4ZKxuQbaPeE3/V2dbTwT5XxUSTSOJxf8/Qu6kS
3T6hgIufirl3sIRGVsLn/dB0GRvgdrmBwuxyR1pvJocRdpnlYHciszZFnFrhGihH
qPF+p+UweYQi4CtIDOC2/eswhA1snA0oEvvMShCWrACGVLiGgDc2c8dI97zwfHvu
UQ9RGk0deal1egcQ5FshMVJU9b/onW8dw8q3nqTkaThTZgUJChQ/1pglmjb4Umk3
mwXuK7lX2hIguVDrgPu9EMN9ujiV1uE6ozLRjKDPYlirVx+6t8IKS7gEMv0K2gPM
yn6BUUID/13Gr8jcGQW/0snIpG50J9xRSLP2XtR5kPhrv0uBH8ACvX3dRUAPdorS
UQE6Q4EsrEFWxB8HMb6bQ9DsgkFJyDC044nd9HKpFI9IZUlhP/nAuTmqSxCMErVd
dPG0PyY0nUUA8kqnWtHpFhm4CCgl00uGr0rMwqM/ienspg==
=YQEC
-----END PGP MESSAGE-----
fp: B643A5D780A01F24E95AA100DE6F8E2C149C3748
- created_at: "2026-07-09T09:19:54Z"
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA9vEXLVODHp3AQv/RWtfW++ecd/3BWzW3t4NFaGCOdbRN8B2oVmL0i7qXSn3
uIB1orFkqBMw65a8fPnuJwsayYkGNHUt/TiFns91BZ4brywAtYrbT7xFHEY/8iOm
D0dIJz14zGf8JtKo2+pwhhi3HfVX0l65y9GFOIBemX8gArwoxk9OZnV1E02mBsCt
hBqUO71TLo+I8jmpcO05qGytNU4Qgv0pwA8SndEjZgC90BxtD3xpdIZ5SPXDxHzb
zYMl6NN1m8kc65H2EFYRqyHCsen+WiBKnbZoNNaBnrjuAt57ZgaBiKaPq66A5YVQ
2E/rHiNHveicmlOJK6lgb8qb0FICVE+k/6HC9llpGifso/Ec4v2t/+oKqj/468MW
/BTfo6ofscmdqDQo9CmSee8m2V5o7fS9mI+wdnhS/Wo3LsGmQHQKmZ/2Y2/t3xi2
yJR2tbKNjRnw9U0UuK8D9WV8Ab27bB0xjrvaYpOrZpXyyOhQg8lyLS6WI/ctZyMb
0k0oH1qaD1s9j1oDNNx50l4BSxUokNz4vJQI2nyzCrUKbOogcssTgzspQdeigMFV
qCslWVZ9bL3TLRomC47E58hewj8ZnMGH/5AsOKWVCL/7f6Eupq0n/1dKi/582bSA
CKqo4VXFNwKKE/56ej4L
=PdDY
wcDMA9vEXLVODHp3AQv9FIxXFwDFg9EQ0bwdrxPWzrZnVIXKOpQeHtv+aA+iT8Hi
pMz8kimNlgHjWUthJsmAujMcoyvH04PTDlJUd6UTzVbqSRaSh4+8DrSsINyofjgn
0l/Wy1w1Bv3zmcAZwHD4/sITjgCZ8ETYOFSsZ67JoDz5MZ5jqCSSrvtFOrDIwlvl
sZTSY0gU/J27GJ7Oc2FJ8mxKeWN+ZO5HEpRZgoyo3rj6SKIgqw1mYAVPwl/e9eVv
hzhNe2A9bpSWFjLUKSrAW0VAai23HrdSHup45rKOEv28iAOSOTXon3jZNSH1au7K
KbBKahvvdJ679F0/9zH/iZAsnrY5oW+shgIjpi0moWnih0YPwZNu1mzDkcfLDQDH
F60eoZrg3iieS9DWcxOksbprqWdyF+B1d0AxrxR57Ru2nFdR+ST/8oIcGue6I+uK
kVSJFeArdbAjEI8ldB9WCqkLeKXVTPGLcOOQxSWLNFsHuuOpZWnWpOAMF06HtBcY
eSZHsqGHgyvndIgQ8FLv0lEBXgxpZl826/2gkLVSdNveCLF90yxaagrtdbTEfm3T
7LIUdeZlRhYe+eg0diWcAyDG1XWgXiCUfocFR0yfQRPHWEVXGh98zZ3MFndPYrfB
Rf8=
=J4gG
-----END PGP MESSAGE-----
fp: C19A7D807525CE24443CA9A49372E896B41FE700
- created_at: "2026-07-09T09:19:54Z"
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMAztV5cc72nziAQ//YFptDd/+LtKSzESuc47V0CWzr/lhMfuz9qXDOavEs5B+
ADCytBBLa2t5H+clsNmoPkKNKTSjH8n6ij8korFRF1FdUWEm17iVllCvcJQlkkIJ
Sjh/H+3qs8nBqzSUKihQnomNzpag0OjvQkLO7iBfU0yTqvUEf0odyn1ILhTmoZGW
Op20c3CNjyl0/5PcHa36EavK88f5kKTpfZ8425sVLDGzy16Nn3p52HwMF4ZI0+kb
wtA37M4P7CzZ5u/D9bDvKQHcmLsiNQ6f7qM3bkFAnvGMFaBG3DMtfu8efI+RXa8X
oqqNEOLB0xTBtPu6bO5apWAv2VFsY4YIbCyCr1Dj62kqAMRexawrqpYvqA3tcVna
dZQN0MReaw1ugt65dCg3bMQtDmiuIQMYoMfIf70gq9+UHzT7dVXkulumQZe2ZUBV
XheGOUZ2cwBIc1Ym+fugco+wqNJdmMaUi8/SlpA9J8/Q67XjkPkA6L73xdKpYFLt
tjhuda7wtv3wIlaNwUd0oGaX8yAdTA1fwiJ9A5eEhIQPbJe5jSGgjivnYLv6iWjs
8oK6occnbd/xraRf35iySH5WDQeLO2O5gWRHUFmpSSVSCGQEF5ML2WIhvuPG/zCF
DWVWdoHNHUFU8a0PLt+TitR4rbd45b6miWiqJtJRXif0le9CIWm5Hn+VemWmSvzS
XgGbeY4ePnjCwakRjNEqx6QyhXvZles5uxlyzYUnHAXq9Yty8RF1U78S5Bjy9Jwh
P792730KSnZyKii9T4D8Ey0UihlKa/GPfGPnGJ41lc91s5k2PjIIOnmnGWpkkQg=
=Ewd+
wcFMAztV5cc72nziARAAieRTsV9FNm/utlda05oE5ALMM+clIAtxw5grfaNBWeUo
Xy4fgkzBQx6UhKDwsIsAi9wUBS1Dzd9HG4tUmmAf85TEbX0llKdc8KD9gdzt22C3
Roq2oCQKHdomA41qVpnwudPQXDakc6pltLZy+TAuziypgzLHc+7nY5Kd9wFhzeGf
f4sIQj+ctHSd3ghGu7UQpJW6W6zfmkBjSHMnbZj/pQndg9i0+2YtxUJ9yqij5q0P
zIWVZgNt4dLoik3Q/CDDtw7u4IWPHN0vSNJRgeylUTMuF8Q5oVQgGcq6TTUYtrxp
76h/e8kFdxfif4fQkHVUB+kDvrGO7CUUjtgk+tMop5165BlkdZx3NpcPaAuk0ZP1
9CtCDRnGBRCz5sjjailmjEGXagUci/nWD7qT02I+ZWzqwnHPYA75FBmIrb6qeUNm
KsrAVsTNqb3o/iuLHaBAdEvncOQnV9ne9QAyp/i0KbLyTQ/zJaZEAIANY2GspRb3
gsCnL0vr2knofMVQD618WByyiTt2fqTnbfb47Jadp9otsim6OVNCzxYxFKX3VpYr
ncZxuxn+FxIFMn2tyFC6Og+xYPe4eBtbb5rqaEZdmzwYW2FMP6U2b4YyLqpQE3hw
miwo9ODNgtUpbVBrb5pRM9DVvsEVmibAEPV7uWzpPXFBCaLIlWSuHGtvWttEcQzS
UQFATosYmOKZjPcjPAFfr4avz2co17LZ38N98JQ5posfLFMlLMxqGfFcDZmQdxep
EGSR4dkO4xzzZ7ORcCdxhZaOtcB092kIJKtM9RCFegXo8g==
=LPni
-----END PGP MESSAGE-----
fp: 0DB51A7E90AC6418B7DB83724D38970874850C33
- created_at: "2026-07-09T09:19:54Z"
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DZmNQj/lmIGsSAQdAQJ4CaKv7cEM0/feqljuokfuwIUvPLb8236ohfhp1GCkw
UgU8oFDeKBByof8kO1kOMG7whSRciKuDO0XDRQ4TnrDwZCWEXOwaj3Rx6RIU+Xgz
1GgBCQIQbmW7OhWiYcRPOm9v/qupfRIvEi+CTdw8br4tT0dEWdMRmpP0Fd9xK7/i
/dj3Dsp63mVc26SXuyCXmAtUl7fwhXKEOoWlm/p7t/vw/5usep7PPVyl5W7kFkMn
VrRDC5MFhXy3BA==
=Ygb6
hF4DxQtfVaqAjfQSAQdAL9rn+f5L3cPwmS+NM7vM5tR0VCDD/p+b43nFFhAnVQow
XcSpJNehn1E4JmgY5ixYk5hysPoDTanHvytXKSSOJF8XpybUz1K1BF06iiCnq6X9
1GgBCQIQfTwPQePieWp4usWB7gkimOQ5KeSmMRQ8vqRTa9i5AXzWlGruP/i5OSHq
FAKhcdcihAt9jFwxsAymbmrpqWOTA/H7uu5385cRiCRvJUydmz1AjD+e9U96dYT2
Z9OHZM/x7057bQ==
=dZEu
-----END PGP MESSAGE-----
fp: 73C2C9954D1BC94DC6682525D2FA233B52AEC75C
- created_at: "2026-07-09T09:19:54Z"
fp: BF3D5CEA36DB58AAE1063D0BB341078652D87924
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA6r2J+JSOMNuAQv/bgybwwuzqnrQJSGvFP1VhNyr6IJuoqYKq/qcoEFz2WXp
DDzshYkU4CqIUwf/mx2538QaYs+LmQgJYxudzUvEj6S4yue1KYO3KhzZyzmtcIIM
QP5ffkCHk1Go9HTyvEAbbUyCR2bSVrcrbwLjGejy2aZbwDI5Xyh+9ClMs4lX2iSp
jGwtUkaTxVAQbdGHhQ4MMk242H/6z07dQSpYx3MteppgU1/IWpqQwxBkdZCYJFTA
FQA5eBcALhhuD4TCHNYvUYEMtBcLdpqz/5ozcB420O1lSxmbue14Rv/d2FzH/AwK
dp366NMKh4pM2t3BVrfcFDfEneunFquGevMhIw3sw25gMf0Yg+T3ttBBpdfXi5F9
Rhls5/5ugeiWvyAXGPUd3mXAoLCqtTG4Y0gOf8QdW1OyvjFUKx0fCTUVT0eSqZVj
l/paxcbGgmwN8jSa2Rpn+GwGLrVhU36oHcA2z7oU5WEPyBg7XKgcxzXcYHBHSyMP
+JN/YYgw71o9X02j6iug0l4BjA67O3UbXs20yr6iwsYci8CC89lSW6co8nMyhFOh
aMTuU5HX4yKE9J0IJHtKUmyoMrDyjxLqmystgKUOHgQ5KoqGbjZcJf3GAcrZDy/C
/VGkczH0U3uLtBJExrOR
=gXUz
wV4DZmNQj/lmIGsSAQdAMt1u6obZgLUjVDQFJ4cXDfUwzy+n9p+rZa/5DtAC+R8w
ChbOqargvUW+TPuA2KAOrH0m7QrzpUAXvk0grF5qewdTwvp9zRArCobkz/xwF6jS
0lEB/rra99F+Wp4c7IBque3HnyWbcNhw06BfK8jhmwjLcy/pNZkj93WYcvannZLJ
Lc93MffCPEK6eMXW4cFHT9BacyGTHKtvagwLPOo7yryKwTs=
=nYcx
-----END PGP MESSAGE-----
fp: 3511D1A5B7B2AC97BAE8AF3EE758168C000375CE
- created_at: "2026-07-09T09:19:54Z"
fp: 73C2C9954D1BC94DC6682525D2FA233B52AEC75C
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DAQRCY74qADkSAQdAdDTKwEoqoDKtaN/7yyAmMrGLk1Xa0p0wr9g34Myien4w
n7W+W+OlQzZtsaDHxmN7vZy9+YLkm/TjsPKvwnfHjicqWmZLMsY56AGGLtESl7UC
1GgBCQIQ7GB5EBIpxLzfAqIwMzqVUIY3QpovAoFYbozfUthrgszcrPF8J/F9pOy7
Cw+9r7IzCcddLQg2Oy3XpbCHoC3HwY8u1xtAZhn5R2GDr7Eb17IK2U5lTXQsaBg+
R372ZJ1DwUoS2g==
=55V1
wcDMAxSu/PO9GEkJAQv+KGOnoZBVSEuWqR+m1npSR59qdPU/XQpkfRKTKK1XQOo5
0IU+uAnqweIXaScnI5+Mf+k9QbVPUw00w5ot5JlXfupBL2dS/0ZE9a8iESEu/hIR
d9FWSMGs2BwUlCVIlZPSz/p/+5NaxsckWKORDP8QBABHQ1c8bzq4yUWCt74gkjgc
oK2idCXqkvRaPe9ihiyq8fSWtKUPq84aSlQ2cVJMQ1C36xdbQi8Q4gQnTGr9Ncup
qUbryHejG7Zd1lUtgUZDPVdHnuDck2OUjD6R6DOe4U8dH+5/aH8mk1u7iBoxjAw+
InWUubfQJzEwpBZ3bojfz8oWKoEpToln3sJGfnlb/ssPFhh+AiH0sBfRgqbSf5Jh
pCMDKN3X8sy53pJdcaENwSRbZ4LcgsgyR9XihG9ZxGgPhXpDzMxZ65pTrvDjz3Kp
UloSzEjSSrQNE+z5sYbbjRTNk8YOkVW6FpzU5gmKrnsOFLARd96fdAvgyI/9Etuu
g45uD4GnNrq/wd6DLN4y0lEBUGFCPdh/eLsgsss830UVtCs2lQPfj5C1Q3yxhxjP
Hae+f/+bTfpOepMrd8huxQ0tB8qKDW94mdsikowJewX+5wV5EdErQ/4G2YtJZTOA
oTE=
=3jwE
-----END PGP MESSAGE-----
fp: 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A
- created_at: "2026-07-09T09:19:54Z"
fp: 13E169CF5C35EF164628764AAA2EECBDE0B38CF7
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMA6N7K3Tfl3HGAQwAtqCcyt7xeK8dOvMi6WphW2QRyqUDphiZMOAgutE4krcq
wLl6myB8ma7LJJB/4t+MUlmQIhYQ/VDfBPE+fBTU+1R/ImU/ewkHrkuwElJR2JtY
CIYfM5lvN/oH4YMcTHfpT0knU4L1Iq45R9F4uv8UcVZmVdup1/SSPhQksscXAxio
LD92s6NRlN9PPAac3o5WOkbfVkHIjghMTOWgUG86BgBQSjDY5q1YZ9d07d0+pRh+
mJceaEhkCF4CHROqqOQeJzjQhptkbGK0iBvz3DM3tkt0DW9gDpXyqp0KPTrHAVFx
U/OlwGpW3bV8qSdRM+O5LzXWLYNP1lX5QVI252Cowdh6FXgczxIPjWztCiMSahBO
7YQ6JsXmrkgNuSGG8zX0+IlFwqPzzf8ey4tjwPScOkPFsFDE/PqisIMTd/vhlVKK
eQFRTIFIBIHN/NxCEqbKxJLTKarBiqIygrd2ZMhJeY+pzSwU/bAlJSGs3VR2JlKm
SD2m81XRDjseUl0oS7731GgBCQIQaohZvLJkz7Qvzd35KafFNQdEfcekPrLK2idn
ycd48IR2eKyNMghJKSecYRiZnle3TBfrZesbEXr6zU2iPCw/jEC3gg8cGNQx9rVx
bs2MZtcXXi4KzFWfWI1YFtzs7PFV1s5oFg==
=PlEi
wcDMA8b/EJ6Mi55zAQv9GnVQNxIAnrBOPolTnJ46tHKs/Ny5QCn8i0pJ0cmj8LR3
l6eCrrvb5aEZRYV1DIMzP9BR9D6G0ShZBsqcBgpm3DgNjQDD1eWAAZxMuWMLMFlQ
0KDG1myVgRNzGXP2cpiJHPJPcdXTd9aNntMDzc/xpHlfW2UXCmdNwl9Q0NrMHR1w
xjcf2UIg6BN3yjxUOxxUbDPw5cRWlIUiIPC52R6V8hHBzh1UUhdj06Hln4e1aVp7
Wpa4K9KJd2n6q9XkF9aRuYyGybOvnPJlL6OHaR9PgIfGCZ+pufI5AneQeahrc+EU
/DkQZNILkBEW8hnwkrXGk53CnS7GQPg8s1kiab7nIuQNF21dpSA4RATMlESC3i0t
BmTfI0HuIaZMxbnRvPSfQwGiMhf6ea+02QwTIjuN59lDuFyQBa3CwJXpiAAtFyyz
9Lu+HAsnRmheK48PXtLkZ8ldNH2r/IYFjtjbANKKzn5HelmPWwLmHo3N4YIerKrj
znhdrY/9imhtA7CiC89Y0lEB6Y/cfSWKtoOLkx4RKknkQURvyJfAMjRhVVFxGZCc
LerDo0Ofmm0z7ZgibYiL1W7Rv4TsnZXr1KDbSrJzD9PcSZt0rTQ9Rw7MpqBeHH/f
/CI=
=L8LE
-----END PGP MESSAGE-----
fp: BB333E772B60EC8A29E8DE641D6B8CC68E09BCA5
- created_at: "2026-07-09T09:19:54Z"
fp: 13D7771BDE5241293F3EDA442AB3335ECC93DDDC
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA5srXAykbUR0ARAAmRaLvYx/VkXrWNuv8rtv4dukV3pqBTug8rRZTg4uKIFM
8wTOLUGRtZC5ZDnfnVZr7aLdVeWcib09zm8jWK6ES1kyHpuZjTvHVdm6J+/2TwU/
sit3XU5UZtG+HEqu449KlFPhlMZ7pqagjRkWE3uC7b0gjJovvDa6Yqo+jY7AAP/M
d1As+UpNEYEZ11BNYJZJsWEej8gQldLVUWtJlQasY0tNK0ha3eSrbNBgjuzwBq8h
vnFALIuxrwwZ0vVujxOVEMVpWqYZOARhXhJ/2dfBKoc13WZBepgW4RyFSLip9WTD
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
wV4DAQRCY74qADkSAQdAERj1PfuanNLwdZgD+mojcIflbrh8NbXqU0kBicBH6SYw
3ZBhzUo72iPSpfHOzk3uZhLw1gIxyEwIAfg35k+2GQUlIO2yFjNGMrNXEXnd2QKz
0lEBhmYkMPlKeRXHAbaq2jF72GoHss5LxBVi88L68QkXeUSlITa4dN/YLcpn1rIA
1DvGGEEyrRt5zbYkOZsMxXgbAtarBf/HxDB2nHKmKUo38GE=
=xzey
-----END PGP MESSAGE-----
fp: C191487BB72A3C8BF6B159AC8B8B9DDC9E6259C9
- created_at: "2026-07-09T09:19:54Z"
fp: 0C136F7514100470AD3EC8D37BF1FAEDB2ACCA9A
- created_at: "2025-02-26T16:39:44Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQGMAwTtVaE3mgdcAQwAjBekoHEVIGMX4Pv0AxJ+pDSbSnpGHisnJGaTuWR+BnE5
1e27i/DGmHfUHRcRYO2VXnBUFxfieQ8s4DEPncDlwXUEjOTNotZRDjBQleldKfNi
MsWbnxirYdwSZcpcvvLa3FyEL/pUBrm2/g+g3H68dOBj1OTXJUUT93qNb1pwXImP
0d8vMZ71apyrO4HvDxLQ7sd8YdzAC48hwRZgi83r+mjtil/b4owV224XEenBngWd
s8BZOuKb/XYMbgWqSXbuxmn3CHk3fzb5zGFUojgwePkQIoC5wqewF/vpCxRzwOd3
nVx4G0tb5fFM3aCzMCoIOxCYGcywM9srAhHEPreG5lBw+Ot/Ps9/TPxLTG8qyeMb
AO7NtxU7nSLHq/XrUIBo+uS2iy2qcjUupKiCDk9GDccM//hYLd/DLDsu4goUKfSO
366V3eMPn0QKzz1/Sc9iM3ZkZKImuoRvWTuLNtw0PqdxcfrM5bTZzmeu6AmGAtGf
0CYyFtXhml9rPLGbXodm1GgBCQIQY4ydDA05nlhEo3deMQip2VPBWib8c6nlm3HD
TzjATrOlaAvk321mOGSPBs9Iufrz+y/oKsXqZPcDPUK1H7oSP7yFMHqZAPEVEbLK
SxQ5ttp2kNjqB5ppO7MlC/z+ty/ppXze2w==
=9fmt
wcFMA5KoiSc3R+FfAQ//WNYLuMOvDNX4ieMs8YwYFnti9ZBjuopwrPSMvNY+k+yt
AhAFN4DX2m5s76U2ILjyJbd2c2ZRUxa2Pmv2BjVhxjHt+Jkh1AznWCqX9BxcBlxd
q8kQAp2ciznmYePrPnZAOQkyu8Ik1A5/W0W9shL2LAfjRuwcqeOGEhoVSsXRQdi3
knGTqbCF52MX1yN/Z/AU6jJwFUPz7aUzpkJwW2Y8vWV+ndiyjZjyu8jT3qJtlH2z
JlaTBBTH0GWtXtlY2v+W9szfL70IzJVaKciqY7y6G767i+jPYLFXVOgudsAAfnPe
JMp0uvm6Hw1po9qgpoWGmiG8NPp8Sl4BCRQsk4oiddm/+34yfBDq+ra9hmeqiVan
9z0oFnpBY18L8MVimwoeAJOoihuq2/8k3OlpJoqRkLV+ez6o65qoPd8rS17+iOqb
ZDQwmqUf8lgYI1Sfq9qwWk88UYgBnwhRmyw7eZuqeCoaKv4x605cIydgKfd25xr8
SeeuLzrWeXGQF3friqj2LujtTOAH34O5XkQVp0TKHXoVyL0wqgVPPIGBs14HOh3M
FQQH2knRmoQDARIzlN8+UCf29VVG73BxRG71XbZnVTL54mwDjBYYOW7T9A9DpBGK
wo+8zzptoXc4bhIYCYz06mvuEyH3IMe2o4/MQ38fboU7Qsi3no9jqxRb/H6ye0PS
UQGRIaDP3cKXh34JQLT6XTpuVDpDpVw/F5xy92VDDafvD1PiSiFhQzWD15zEw1tw
2QcLcJZI3pUGf5aV9HK+thjzZKMTOtDog02GkIblov1EWA==
=sR1k
-----END PGP MESSAGE-----
fp: D667348F310C57655FCE5D4EA689FF232FD681F0
fp: 57F93F2A6585CF2DF9A3B31F13B9F45E122698D5
unencrypted_suffix: _unencrypted
version: 3.13.2
version: 3.9.3

@ -25,7 +25,7 @@ mv .sops.yaml.tmp .sops.yaml
# define "fixture"
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}"
set -x
rm "${PWD}/.sops.yaml" || :
@ -39,10 +39,12 @@ function fn_test_create_sops_cfg_default(){
# enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
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}"
set -x
# 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
# enmesh: restore, since this particular one is checked in
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"
set -x
../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
# enmesh: restore, since this particular one is checked in
git checkout "${PWD}/.sops.yaml" > /dev/null 2>&1
}
# ---
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
}
else
>&2 echo "# INFO: skipping ...."
fi
# ---
function fn_test_expect_error_invalid_file(){
if [[ 1 -eq 1 ]]; then
>&2 echo -e "# ---\n# TEST: induce error: invalid file"
# dev note: ':' is a noop operator; could also just temporarily disable strict errors
set -x
@ -115,33 +88,11 @@ function fn_test_expect_error_invalid_file(){
# not necessary, all tracked in git
# enmesh: restore, since this particular one is checked in
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
>&2 echo "# INFO: skipping ...."
fi
# ---
echo "TESTCASES PASSED"
exit 0

@ -14,9 +14,6 @@ set -x
# within current dir: update .sops.yaml, update keys in encrypted file
../bin/update_sops.sh -c "${PWD}" "${secrets_file}"
# verify: dump secrets, GPG_TTY src: https://www.varokas.com/secrets-in-code-with-mozilla-sops/
GPG_TTY=$(tty) sops -d "${secrets_file}"
# Special Case: Add caveat header
cat <<EOM > .sops.yaml.tmp
# PURPOSE: BLUEPRINT for .sops.yaml config

Loading…
Cancel
Save