Compare commits

..
Author SHA1 Message Date
743a7d609c Update docker.io/onlyoffice/documentserver Docker tag to v10
All checks were successful
/ build (pull_request) Successful in 31s
/ Ansible Lint (pull_request) Successful in 6m47s
/ cleanup-staging (pull_request) Successful in 6s
/ build (push) Successful in 25s
/ Ansible Lint (push) Successful in 2m35s
2026-10-12 20:17:02 +00:00
42df2e4af1 revert 106a5cb97a
All checks were successful
/ build (push) Successful in 29s
/ Ansible Lint (push) Successful in 6m13s
revert auth-dns: dooris has wrong ipv6 address
2026-10-11 00:01:24 +02:00
106a5cb97a
auth-dns: dooris has wrong ipv6 address
Some checks failed
/ build (push) Successful in 25s
/ Ansible Lint (push) Has been cancelled
2026-10-10 23:58:31 +02:00
086eb9ff46
auth-dns: add ptouch-print-server to ccchh.net
All checks were successful
/ build (push) Successful in 50s
/ Ansible Lint (push) Successful in 3m32s
2026-10-10 23:38:48 +02:00
54a4015bb0 Add matrix-sync
All checks were successful
/ build (push) Successful in 26s
/ Ansible Lint (push) Successful in 6m58s
2026-10-08 14:27:27 +02:00
28 changed files with 493 additions and 965 deletions

View file

@ -44,6 +44,7 @@ keys:
- &host_auth_dns_ansible_pull_age_key age18zgt4y2sd75hxnpe333zz39048ctxpr0q8a3uqh3jajjkyawsdrq8yg5ve - &host_auth_dns_ansible_pull_age_key age18zgt4y2sd75hxnpe333zz39048ctxpr0q8a3uqh3jajjkyawsdrq8yg5ve
- &host_forgejo_runner_ansible_pull_age_key age1az0k6cadssk6r8qcqxfr8cyu5mndy59pwt8yqq6w065ew6au4ezsmg2vkf - &host_forgejo_runner_ansible_pull_age_key age1az0k6cadssk6r8qcqxfr8cyu5mndy59pwt8yqq6w065ew6au4ezsmg2vkf
- &host_forgejo_runner_external_ansible_pull_age_key age1pq1jqrcp3te50xugmv5wst3s9ahj0d38rfktxt43wlcqz7vnwyn3y2h7kyfr6rckrvmuk9m7yvp4efjnfsuxx6d8r9gn222r2eal5593arywrjwrgeypf745wyuvf3z2xk9tm5fgnwckftuvdggk66fph59rw69nt5dpjeewuww4vzt9gs4xelre952s7zjz56qv8tvesg2c89sp8rmy9dvhwfd6tucjhs6sjr6yp2njjra2u6w7c7f0sch3rwkw3wf2dc9su9aaa9q2f22sh5yf0fqejxa2qqpq4pg752589st5xsa5g8tpkjglj4tn35gd4hjj0xet9cjwhydmkmmkffy3nr8zdtctqu6pqsyf7aphvktryez39ru3qe7m6nvr465ffxr0ltvr85nddzxvcwpwpac64nu5tdfrxgjfqzc99vr3zxv8carpsw5evmruqlvrq6v6a4m2cwsz5gqw7nyk3jlj75kp5cnafzjn5dyrf8ppfhp5g5s34zsl7pejmmx2uuudjt7ru2y7as9mtagykrgqgt80fvp3eeh4gsmmd3ujgtp0ranq28aq9x0xdekqh49pfhhprjj6zqdfac5gxtjj736kh5jktc4ls4mjs3p33rzt6ze54uqsfept3qhua2pmugypup6hm6j2ek5sgxjnwvqyfj2l8vz4yfgkaxf699v7jqlwf7g68ang5kzqrjsu78lyardm4zen8zhrr24j334qdgs4zr8dhsfsnmvx9cdvu0swx27tcz8txs46zds9kekgmua7w7fnw3l2lf6zla956ssycac4zjy87rawr4thusxtcqgfzfzh2za9np0s34e5dwkp2l2k06cq09myxqfe7ze6a53d8sl5j43qcekh6kfvl9k0t7903q99pc35630zwm3hwxgnw354du5gngnz56skq9zx3pcnkr5eyh8r8t0dqudmvrrwmxreu6tgrklxw7yvu3zkjgt3gyjhc8kqcrevlukay45sz4k9zqxx9yrs88hzt4h52r2g74alf3cedes3atufy06q4lfq3nxdlnve0kqcwstzr6z6u7fqpqvacezdrr62ycteju6dqawkpthu0drtlxj547htfjcsnrmhgvhskwtuhk6yp7wp30p7qc5vkk8fegg6qx5kc9xs4trx7hj9xgydu7vd30hkceuxsczywjs9v2fl3svkwfypg62882yq6ltv7gfj4ajuy8ezd76g0z7juwspe7q6zs5ceshd6038tvvh2nlpjty6rg6a9qfzhgmjx9s6hynyk7xnq9zra6hxstg8p58x75hapd2mk6rapfunlnnkz5dsxjf4ud4dsvgjfjpzxcdy7sp8dzxtengrsdyu4824mqlw8p63d7m2z4mcyme4tm2qkugtdgrkyphe7akk2geukf6xkfkzd2pkdq5s3qm9fkvfkgrv6yw5kdgjak8xcgesg6tumans4fs8yrxtqlvv2z3emdvwchrjfq4xpzsj27yt4gdg8pknwz9tqpjkjxq6lysutrvwkvt2fwyj8wvv8wtmdl6fk6rsd9kq9a6wkhuq7vvrgwgj3xg2s229sprj4g2vzhy2dfesrp403gs64jqkrjuezwm4zd6uw2x4e2qkj8xqcf7c0zprdzu959x23u878vqqetgpjwt0z3kedt8l6dgpm0rf5dmrya5h3wgzfa0jjvgjphyxgxrwlrzpv4czgal933zs64tn90ks66ejjdaw4t67sch8r3q0kljeqnpdgmw0cpj6arc6k46wcqaccygczy76zt9362vslakvzqqv33tv3sjldp6qxprharmpm9uykgpx66343wuur5xj2aw0rgutpm4ztjzycn3a8d2jq2zpdzwmevezm7mkp9dmndkc3qz0kklgkxq9yehrk5ayfly97umhws0jll8qqg0r7gzxgw5vv76 - &host_forgejo_runner_external_ansible_pull_age_key age1pq1jqrcp3te50xugmv5wst3s9ahj0d38rfktxt43wlcqz7vnwyn3y2h7kyfr6rckrvmuk9m7yvp4efjnfsuxx6d8r9gn222r2eal5593arywrjwrgeypf745wyuvf3z2xk9tm5fgnwckftuvdggk66fph59rw69nt5dpjeewuww4vzt9gs4xelre952s7zjz56qv8tvesg2c89sp8rmy9dvhwfd6tucjhs6sjr6yp2njjra2u6w7c7f0sch3rwkw3wf2dc9su9aaa9q2f22sh5yf0fqejxa2qqpq4pg752589st5xsa5g8tpkjglj4tn35gd4hjj0xet9cjwhydmkmmkffy3nr8zdtctqu6pqsyf7aphvktryez39ru3qe7m6nvr465ffxr0ltvr85nddzxvcwpwpac64nu5tdfrxgjfqzc99vr3zxv8carpsw5evmruqlvrq6v6a4m2cwsz5gqw7nyk3jlj75kp5cnafzjn5dyrf8ppfhp5g5s34zsl7pejmmx2uuudjt7ru2y7as9mtagykrgqgt80fvp3eeh4gsmmd3ujgtp0ranq28aq9x0xdekqh49pfhhprjj6zqdfac5gxtjj736kh5jktc4ls4mjs3p33rzt6ze54uqsfept3qhua2pmugypup6hm6j2ek5sgxjnwvqyfj2l8vz4yfgkaxf699v7jqlwf7g68ang5kzqrjsu78lyardm4zen8zhrr24j334qdgs4zr8dhsfsnmvx9cdvu0swx27tcz8txs46zds9kekgmua7w7fnw3l2lf6zla956ssycac4zjy87rawr4thusxtcqgfzfzh2za9np0s34e5dwkp2l2k06cq09myxqfe7ze6a53d8sl5j43qcekh6kfvl9k0t7903q99pc35630zwm3hwxgnw354du5gngnz56skq9zx3pcnkr5eyh8r8t0dqudmvrrwmxreu6tgrklxw7yvu3zkjgt3gyjhc8kqcrevlukay45sz4k9zqxx9yrs88hzt4h52r2g74alf3cedes3atufy06q4lfq3nxdlnve0kqcwstzr6z6u7fqpqvacezdrr62ycteju6dqawkpthu0drtlxj547htfjcsnrmhgvhskwtuhk6yp7wp30p7qc5vkk8fegg6qx5kc9xs4trx7hj9xgydu7vd30hkceuxsczywjs9v2fl3svkwfypg62882yq6ltv7gfj4ajuy8ezd76g0z7juwspe7q6zs5ceshd6038tvvh2nlpjty6rg6a9qfzhgmjx9s6hynyk7xnq9zra6hxstg8p58x75hapd2mk6rapfunlnnkz5dsxjf4ud4dsvgjfjpzxcdy7sp8dzxtengrsdyu4824mqlw8p63d7m2z4mcyme4tm2qkugtdgrkyphe7akk2geukf6xkfkzd2pkdq5s3qm9fkvfkgrv6yw5kdgjak8xcgesg6tumans4fs8yrxtqlvv2z3emdvwchrjfq4xpzsj27yt4gdg8pknwz9tqpjkjxq6lysutrvwkvt2fwyj8wvv8wtmdl6fk6rsd9kq9a6wkhuq7vvrgwgj3xg2s229sprj4g2vzhy2dfesrp403gs64jqkrjuezwm4zd6uw2x4e2qkj8xqcf7c0zprdzu959x23u878vqqetgpjwt0z3kedt8l6dgpm0rf5dmrya5h3wgzfa0jjvgjphyxgxrwlrzpv4czgal933zs64tn90ks66ejjdaw4t67sch8r3q0kljeqnpdgmw0cpj6arc6k46wcqaccygczy76zt9362vslakvzqqv33tv3sjldp6qxprharmpm9uykgpx66343wuur5xj2aw0rgutpm4ztjzycn3a8d2jq2zpdzwmevezm7mkp9dmndkc3qz0kklgkxq9yehrk5ayfly97umhws0jll8qqg0r7gzxgw5vv76
- &host_matrix_sync_external_ansible_pull_age_key age1q7kz3pnfq6cvtn56rlfgs52efcvtcmaq4xny0va3x5wxj4vpgccsenwxk6
external: external:
age: &host_external_age_keys age: &host_external_age_keys
- &host_status_ansible_pull_age_key age1p546j6whqsyfkjuf674lawrnk2ex653fuvwhcwt46gkrspkq59sqzm5y87 - &host_status_ansible_pull_age_key age1p546j6whqsyfkjuf674lawrnk2ex653fuvwhcwt46gkrspkq59sqzm5y87
@ -233,6 +234,12 @@ creation_rules:
- *host_forgejo_runner_external_ansible_pull_age_key - *host_forgejo_runner_external_ansible_pull_age_key
merge: merge:
- *admin_keys - *admin_keys
- path_regex: "inventories/chaosknoten/host_vars/matrix-sync\\.sops\\..+"
key_groups:
- age:
- *host_matrix_sync_external_ansible_pull_age_key
merge:
- *admin_keys
# external hosts # external hosts
- path_regex: "inventories/external/host_vars/status\\.sops\\..+" - path_regex: "inventories/external/host_vars/status\\.sops\\..+"
key_groups: key_groups:

View file

@ -4,440 +4,452 @@ sops:
age: age:
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHFyYkk3dyBtb2wv YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHFyYkk3dyBuYkk0
QUxXU0tZUzBBc0FXQ0ZpaWRsUjdCZGVzYW5yZllCQnBCRUlobUdRCkt2Z05NY3l0 ZzNwWGVvSnEvWjEwREpaTGpvRUVCOGZuRTVBK1ladVA5ajY5ODBRClFXY1ZYMElU
TUpOODJZUUJDUS84WlJ4cG9yaFNzZDVKa2JBWjRYVFY2RXcKLS0tIFJ3K1puSng4 Mk54WUV4SXdUWmNpbVMvREhld3JTVFZ5OGxoVStYSVlNd0EKLS0tIEJUTFdRVlNI
UUk5aVMwY3dLMVJ3RTgrenhzTFNBYnl4UzRYZTVKeUwxOHMKXg/vQz4w4t9+dmoS cXV6bWpibEFYdEZVRnhIcDIvOXBzQkdYVUQ0RElxVHRqS00KueMwxtalr0DlYylv
1E7usTgQS5hIRPE1q/KfUJYctpJMo516nnBOUPZGzEQrT8yUV2uf23j0e9KTjzeY lu8yuu/igntcbN8G+tyj28GstQJsVPJk7WKQ6TIX2xmuCDrhS5HykH9sUTxE1o+m
FwAFuA== 36UgzA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIBQgnQAq6FUSDK8bxtYPjx3oRCAKG+xy9J3Gas2ztJk recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIBQgnQAq6FUSDK8bxtYPjx3oRCAKG+xy9J3Gas2ztJk
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IFZoZXNPdyBBcUgvUTZB YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IFZoZXNPdyBBc0p0N1g5
OGlxTlpKNUFmZTRxODlwZ2RvU2Nuck9pSWc3RjNwaWZHUUJPZwpETkFJUW9zNzIv SXNacmViRTFubnpDV2UvWFhxTGg1QXpqcjhXbHM4cXU0ZGJWNworaXc4Z09QM3FX
U2o0enJvQzlmVnJiSG5yTmlWYVFiWUdUajAwL2tmQi9BCi0tLSBhbzdpSTNkOGto amhlb3ZmeXJXdFhDd2x3WnY0Tmw3QVVISkJSeUJaRW1zCi0tLSB4SE13MlNablZu
RnF2U1ZpOEYvRy9iRWJEK2lEeUdXQ1BhNWIzVDZHRUNRCrmfKVOX6l1pDs6hOR6E YlVDWTEzOXRvUWszS2prcHpZcmVROGVHeU8zUUtMVEhFClk080enyfNCdttCqXaP
w/6Xex1yrxY84rv0wRfudyb4KyTbmnbqLIDMiH7pMMz5DARHFxTEnf4gdQXE9vFx c1y6DPlMX3nf87yOPbjfAKp6fMU3BY5GNGheJFnsaMgakCF2QKlPRxOFY75/+TxL
b3c= qFY=
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1yubikey1qv7jkffslarpma2fxjm9gnq43xfvwdws0m6y3u58h033edwdyg0uzt8jl5n recipient: age1yubikey1qv7jkffslarpma2fxjm9gnq43xfvwdws0m6y3u58h033edwdyg0uzt8jl5n
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEZXBNVnI3alVqY3VTamU5 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtQThlRTJLeUh1dHlZTE5z
WFBXTUFRN1dhZ3F3UFdnT3Zkdnl3SGFJeXlBClVkTzF3NmlVbmJMTlNWRUhPWTBz aGlhb0JqSWNZRjFFR25PMVR3dHZ4MzZ4R0UwCjQ5Ly91ZE5jQWJQZWFQUjJIejd5
MnQ0S0ZLbTRlMnZucy8zZElZMmFNSDAKLS0tIGZNTjlGbHlWWnpPNitjTVRZZjNW QlZWKzNSaEhlN2NUOVh0ejhqK3NZK2sKLS0tIDRGWllIZWZQdUc0MkRCaWk3SGNE
T0wyN001aWhCNDdzWkYva3hSZVRRS1kK2TCbV5dde4tHTVfQerRuUfixxU2Z5aaQ d1RLcmY2bys2ZzlOZnV0cUtORnRnWE0KbHZfpiERwKLar7Qi62mp/kpaK60OwRon
1rOxf5GdqmIu3HouAt/ALFtYHRPJXNsS81NUJeOJJ0KVq45TeCQy1A== n33HbK727DbaB7vGXx4jFZsB4vMqddWVfNq+ByxtJ6YfSq2cUtkLJw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1ss82zwqkj438re78355p886r89csqrrfmkfp8lrrf8v23nza492qza4ey3 recipient: age1ss82zwqkj438re78355p886r89csqrrfmkfp8lrrf8v23nza492qza4ey3
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmb3VnMjV1VVhEdURxdjB6 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUVDZsUjl0ajlwR0wzRUZE
QlN3QzVKdlZJTG15YWgvWHJyTmllK0pOaFJRCm1HelJtaW5JbXh3bzBLcm1DQ1VU V0tNZnJLREdlUjMvV0pXVzhWd0hORVlhdGxvCm1EUm5mM1lseXhQR0xISCtFZ21s
Tm80aUxoSWlvODJLb2ZwclNQejQvQUEKLS0tIHNwNGtaYlhRWEF0eDFTS2xtKzBB aXJ4TFlhelRsWGdSUFAvazI5L2w2ak0KLS0tIDcxYzdaWTN5OHh4R3FZK05oSWZV
Y3p3aDdFcHBuaGRrN21Od3pybzM2TTAKpEGKYhhqLbu17zO1QKvuVzpmienlFIEW M3hmMGNHY0t3WlN1TVlOOUZXY0ljc2cKHqdX4VkprUIgo9X3TIZfpZJ7m6wMtWxR
KXOL5ZEQ3IDAWJkbq8anAIzNzXUo1Wez2KjMGBkB8Y1mgGC8MxSykA== PO36ykssCrQ3fHCfhS+Dd8QjCNsQ4PFYa5LK1FdbwN3FVS2C90aGcA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1gdfhx5hy829uqkw4nwjwlpvl7zqvljguzsnjv0dpwz5q5u7dtf6s90wndt recipient: age1gdfhx5hy829uqkw4nwjwlpvl7zqvljguzsnjv0dpwz5q5u7dtf6s90wndt
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAxbkE0a2YrQ2NBeXFwV0lU YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZUEdZQ3lHb2QrbHZXQnZo
ZWZEcU5uVHh5RXhoelkxM0ZlYUdRUWwvNTNFCnp6ZDkxczFBUE1lK1pvd29MOVFL SkZmRmpCdW9XaWRjdkdNSWZyM3d1NUR5TVRJClhETGtoT2ZFSWFjek5JR0hQMi9I
VlZCSzBFN0gvaVNyVHBwcVUyUGl0aDQKLS0tIGdOemVKTFAyVitiRGFpZGhXbEdk Ukowa1ErRDdpQWtodUFsNEN2VzBSMHcKLS0tIHlEbDhrWkRnSXh4a2xVZUNzTjlk
MEF6Q3E0Qkswa0pwWGk0eEdKSUZXdGcKvEQSMlSepBlHKbB7/2JuCuJzbrg+jU/m NDY3Ty9rSHVBNzFLTUtXbE0wZ1ArdGcK1XSryr6gUZX3L33mROMaeOApnZeLQQ0G
1c77UgPnVqbXGKW53BydebcE5R+wn5hvTKJXjWPBd3KtMiz+17nC9g== HPr4sQJgrjVUL0vig8hiOvxDKfOE5eGgOtdrxMZLXD2cHUJjZMPqww==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age13nm6hfz66ce4wpn89fye05mag3l3h04etvz6wj7szm3vzrdlfupqhrp3fa recipient: age13nm6hfz66ce4wpn89fye05mag3l3h04etvz6wj7szm3vzrdlfupqhrp3fa
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSOExieTFabkkyM2puSEpw YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRai8ydGVidHBrdXk2QWV6
dmVOVHJUamphRXNuSFFuTFZGSFBvMUFYeUFRCkoyalN1cWdyZlVxMUJwQ0VtNDdV TEd2d0p6S1lKeWlmRk9sOFhpUkRqeC83VDNJCkhqdEwyaWdwdkQvOVJZZUdURUQ1
clM4TG5TM1g0ZjVVWDREd3BtMWgwck0KLS0tIFhCOUJobXRENm03U1lCT25KZDgw bTB3SitrT21HNXdvRWVOcGRYYUtrb1EKLS0tIDJ6bDFMOXJxamt2Skt2VVlxa3Bu
QURXMDBldkhIMWtNUzc0SWo2ZE1OY2cKP2YLKg0JO3bIX9zE8GXIboSqVHtO5q2l K3MzQ243TkQ0SCt6dDVkV0xJY1I5M0kKD6Y73NEAQYUs5vWeV1GeIPZ2i1FJI3ci
r7mTt3c7rCI0mRv2bhm9YkcBBhm+uAaEehDRxQ5lRZHXAWVTKTT6iw== Z5g2FbXtAONIJ4Nwg3FFqdK/q41sMpPa5/f3PwlvXEbK4eBrtdHWRQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1jtusr294t8mzar2qy857v6s329ret9s353y4kuulxwnlyy4dvpjsvyl67m recipient: age1jtusr294t8mzar2qy857v6s329ret9s353y4kuulxwnlyy4dvpjsvyl67m
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBJVDE4Vk5wbnZpTEdkeWZ6 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB2OFRxMmZMRkV5dkttQ3Y5
WnNLdFlOWUI2SnRnbVRJMzVJaEs5ZmMybGxZCjBTeld2Z0Q4czZycmxac3VlKzIx MFVqblo5V0tTaFpUaXBFanRoanpmWndSeEVrCldaTjhqS0xwWlpycWkyaHBZMVlI
NEZZOWpuL2FqRlVGKzFwb3duR1BJM2MKLS0tIGQ5R3BmVzZ2aHhxcDVjbzh2V0tL MFFBaWMxQmVkQkdDdGovRXdtMVMvSk0KLS0tIGRiVkVjQkdZb2pubUoyL2VOVmJl
c1VZNmNGajNWVXg4QUsreDU1b2MraWsK/8c8FC+QLFiSJaqQDHWyG9LD80bMncyj OHVmTG5iWWt2bkxvenBSdUpsK3JwK0EKZwjNeJiIMhDtfPYDOLS1vM76ddWw/756
Yo0EQxNIDLEJjj5yMnSWL+rzO66HxQMfnQocoJKUvYqnv23kdChzpA== k51dAKcT9WOmrBsxTMxLyZv2i0gs3XAoF2umi6CtbLu5wV3JSj8I+w==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1a27euccw8j23wec76ls8vmzp7mntfcn4v8tkyegmg8alzfhk3suqwm6vgv recipient: age1a27euccw8j23wec76ls8vmzp7mntfcn4v8tkyegmg8alzfhk3suqwm6vgv
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBxRHp6Vkw3Ry83ZFdoVzdD YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtcU0zZXNNMXFWOUxyY2Zt
a2Y1T3dPZnVxS0luS3RrbjNrR3FEQk9DQlhZCk11bjkxbjF2Snl6RVJ2eHNGSC9L WkErUFIzTEFGeUtkMmRldlNmemY3aFBQQ3dJCmJLK2k3MGJHcUNvWUplNEZmVWN6
OVJrbFFlbTJlc1hRTExiYnhra3Z2NVUKLS0tIGpvb0JZMWg5eDNuWkNTSlJJei81 UUZ2anY4QkkwazNzcURGdTRQSDh5RkUKLS0tIDFVdnBNMDhpZ1JIckk1YzQwUjFM
K3N1RUgyNXpDZWR3bjVqZjBmUWYvVXcKkIBP6wlWZypntZpeC8HDij2vLEomMH3X bDV0WXpaOHRLekNMa3FBTjdKdk1jSFEKyEW36xrJyJkD4yW6qfkhtlkn9j8uk2G/
IaVPhDRN4UTfzK7iSYoUeGG0s1rytpEJ7z2gMXKuPm77yxy1XmGXfQ== FbWFVfWKVVPLefeeUNCG1hssphnQp44gn0n3IlYLRxzmdwzuSZ+YfA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age133wy6sxhgx3kkwxecra6xf9ey2uhnvtjpgwawwfmpvz0jpd0s5dqe385u3 recipient: age133wy6sxhgx3kkwxecra6xf9ey2uhnvtjpgwawwfmpvz0jpd0s5dqe385u3
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkWEl3alpsSGpKQittTWVm YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyRTJydk9OZ0N3R25yN1hq
dmdLU09JWlFMWitGZ0ZVNC9zb05QZHU4L1VNCkpQV014SnhzSHB4eFo2eWd6Szlx bEllVlo1MlhWZk96aFFMcVM5MjI3dnhpWVE4Cmk4cVhKaFNTQWFQaVU2eStiYmFS
WmhKMjhJWGN0THVsMEdHajVzNVozK3MKLS0tIGtVR1Evek5lVkpFUjlKK01iZUoz R0pjZElVcTZxODJHaGlGendXNnFxNk0KLS0tIHozREt1RG91a3FOVXZJNTdHNUkz
QjJ3Tnd0SzM3YVhVSit3NVk3V2FJN28KD8pkbpghiDdDydDjO3Tzn89Xg6SpwPoo Q3NJR3Q3NzRBSjVGVjU0ZnlUMzRWcm8Kyeam0hAhQM5Bx1nqKoDRdqdycdu7NPsE
1JWbUcXwL5YMOz1ZLbWcP8gDzC+xGFoQEVGydzsiTRyzBndyF4scig== 5u0G4gLiKWwhVO3mzLmhBBvKjp4OIWs2bK3y7+POCSXQlhNgHwZdyg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1na0nh9ndnr9cxpnlvstrxskr4fxf4spnkw48ufl7m43f98y40y7shhnvgd recipient: age1na0nh9ndnr9cxpnlvstrxskr4fxf4spnkw48ufl7m43f98y40y7shhnvgd
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkNzNrK2doMzY4SWN2WHRC YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMdHNUcGVxV0VScDc2R2Rs
ZjlTOC9HK3c2QnFXWkZLa2NJWURmSDJrL3hvCldCOXNOZ01YWjVkVCtLMzd2SDRO MTNNSUsyRU9TUlNRMWdiSWE5bjIzYnNXbm00ClVpVUw4UE9IVDlyUXRMWVZqUW1z
SDgzQWduNWRMblNLMEpXNE4zNnhrYnMKLS0tIEVaWlFubGhZSDFhc1JSR0QycTZs S25jQTQxcXBiN1RsSTNFbG5HWjc1NlEKLS0tIFFtWENqaDlWZ3BUbWo4ZWQ3Sk9V
dHFIVkVhM2dicGpjdHdBM3Mvdm1YU1kKZ4nSq32LtQfToeRlTkPNQwK1vS0Sp4td MG1qTlRHSitJa0VjS0IwMHREMzJsM3MK33pKvGNISdlyofjZCSWtAp2TtEnkgDL4
5A+if0MWHHeGLmkeVbczfboxzdqyqCn9SNR/HO2SwcfTAVh+X7D9zw== 1t2n/dKQ/N5B4A1GYbmezv6Rqk82CPqCR4aEEcAKNOQrkH6VSUhyxg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1sqs05anv4acculyap35e6vehdxw3g6ycwnvh6hsuv8u33re984zsnqfvqv recipient: age1sqs05anv4acculyap35e6vehdxw3g6ycwnvh6hsuv8u33re984zsnqfvqv
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFdEtKdTFxYzJXR0lZYXJN YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzQzN6WXNIelF0SWU3bTRt
ZU9CMGtYME5xTjNvOTJBY2hUTnVLVUFOd1M0CmYzQ2haNEsxRzhVU0szYVdLZ0Yr NTBmODljL0t0aUNwbksrdGpSanhhOHJFUW1zCjZLQWYrRklnb0xiZjN2cHBIOXZp
dkJEQnM4ekk3TkFsL3Z6TzYwT3VTOU0KLS0tIDN1Wld1K2o5WGczWTZOay90d0J6 S2tvRnBwSFdiM2lsbENheHVOV2V6VEUKLS0tIGZXcCtZNjQyUU1NSnJFbUxkeVRM
dFFtNE10aFFwbE9TdStncTZEdFBXSUEKjhbDMGLL/8qj2Mv+IACzzhfhINhsN1ko M3B0ZDZDei9PMFFSWHdQYTBIRlhGQVkKfXKL6lBiErI8PUUsQgmLQasMuGcswdP0
/JDtoLtid40UxZXex8u7nuTK6DK7w3OkLVh3Zfg1oJYksCgM1CykuQ== KKXwKH9DQwpLJzUTCB6PPfFZggv5bmAFjUHoOUdPwHWpQFa9o2LNRg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age18qam683rva3ee3wgue7r0ey4ws4jttz4a4dpe3q8kq8lmrp97ezq2cns8d recipient: age18qam683rva3ee3wgue7r0ey4ws4jttz4a4dpe3q8kq8lmrp97ezq2cns8d
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAybklqRWMxaVRzRHhtTmtq YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvREVZL1BxdkhWVk92bUpE
b2hNSy83QkdMMjRFZk1zeGFXV2YzVmxyV1M0Cmh3eEFWSTNHMVZWS0puUkJxMVZX MUFaSFRXb001bVd4V0hpV1dIMjVkNWhsT2hFCi9Pdm8ya0dGNlI4aDZUdGlpTllW
dXBnWTk1WnJ6MTlCVFY3VTVHU1ZlU0kKLS0tIDJxTXFlY0RuOThwTW1xR3cyZ1RM a0dDN3lCVGR2dzdtOEtEWER4L3d1UGsKLS0tIER2dTFTbGN4eTZ5dnE2TDBMSUF6
SXlQNDkxV1cwckVSamlHN1QwTmUrMUkK4W9qh7HkfLzU1B14JbbhYHa/xCZLdlYn RGk5QzZVUjB1Q24vMWtoVXc4Umw0b2cKb1iHjrU5rFyCbbcXKX0DoZZeC9SQDimb
rl7cOdxU1+4RFa4+uc1i2+pgcWZlQBfiDwIxN1+vn7cpiM/hmkcg9g== 09oEzR/5bPb4zPRwWC5cUiI5TTjxKiW34p1Qo6eSMUNc8rh/5feNtg==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age19rg2cuj9smv8nzxmr03azfqe69edhep53dep6kvh83paf08zv58sntm0fg recipient: age19rg2cuj9smv8nzxmr03azfqe69edhep53dep6kvh83paf08zv58sntm0fg
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBMYjVaVXQvM3hMMUNRcUxI YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDYTBybklnZW1QYjRzS3NE
YkRaQlVQK25BOXBJNjlLOW5nanRHNytGUTBNCkFiZHZYT25SRFB4MkZqcDBoeEh1 RCt1c1BPS1RjZzlTZGlMY3hQZWI2bU9wamcwClNtSFZmZmlRMXpFQ2pyYW5hc00v
WTZLNGRHWm1KUkhkTnIyMkxGaW5mSzgKLS0tIGJBdWw5d0puN2dOSWtTSVBhamJ4 bjdpb05SMndiRlZJVGhEWk9GMEJTZ2MKLS0tIE5Fd0dLdjYvM2owWGhBcUc4Y3Ja
T1BwSEZHN2NEZDZCYm9GT2RFK1BuaXMKENs0hLQHkAYjwnFgvrjKJ7FeOwrdBckJ ZTlVSmlmazdKYkM1WU1YWldFNVMzUVkKr6FR6B2zLKjgiQhVPGAhVHJJfyTBTnfC
uXd3Wg65AFDkghFS/1xPaxZq7kp0bTIbcnyLa6r9clO4rocy3t0IBw== pw/Ox/qSDtniJWj2TD0rvM06+4lCVGDDcO44kgDLcILzX3mRFC70XA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age16znyzvquuy8467gg27mdwdt8k6kcu3fjrvfm6gnl4nmqp8tuvqaspqgcet recipient: age16znyzvquuy8467gg27mdwdt8k6kcu3fjrvfm6gnl4nmqp8tuvqaspqgcet
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3WDZGa2o4OGs5WEIySURn YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmNklDOUFFVUw1MGJpcGM4
MEpxUUlZM21MTkg5RVU3dGhsNkk2bTE1K0hFCkJ6akliSjZkSE1vMkplaTJMalJw Q3NLNEJUU3I3RDNXbmZSRkxrNXhVWm9lRGxBCmJOWlI5ZE1vZzJ5bnhmREFCZUxt
bFlpYTBVVHVTMW05ck1LTVBkaks3eUkKLS0tIEdvY1RUOWllSEc0cW1tVWpWd24w bitOVnF4d0k4MTFLQnJkQlZBL1B0NjgKLS0tIG1EWWhpdkZFQ05iVjFrajJzbUVF
TmJ1c2xQb1BtUGNUVG9uSk5uOXhOWW8K1KjTL7C86mix5jWvgtl95i1Xqpmb/4K5 WUgzQVErdFRiMG81dzRsK0VveGZwN0EKNaX190SiwMM7/vO7OBV9N++4/4ODGJJ8
J4fpJFblkBCQEvewWRh4+oQnXWOyj+XEpOIOKpCx8BUkiNgzoYhIBQ== Hk7761qSx7TTQp+dBck1zyW2gZ3viVZ32b/tkOizqBxOgKy1P6yCdQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age187zdk64205lx7r83a4m26pfa8hq6khc8sf83k266jasngeq08v3sfqswfg recipient: age187zdk64205lx7r83a4m26pfa8hq6khc8sf83k266jasngeq08v3sfqswfg
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvNHMvY2YxaUlCV1RGWUxy YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEQlJ0T3J5R0pucDV1VldB
YzZxZGxIOU93SkdBa3IwM3VlRldqR0JSelhrCmlZdU5zczJQN3NFaGs3TFBIZGJo ZU9JRmFBQWxnSndnZk9NRU54eEg4bzI5NjBRClFkWFdFZ1lzYXUwdk11d1pTMmhh
ellaWjRQUUxUOUtkOVVvdHF6ZjI3RWsKLS0tIGZGMm82TXJ4TERpbklBcmRLblVq eERkeTVUVklFekJYNGlyckhuNVN5NTgKLS0tIG8wd0k3SE5jSEZFMFYwbGlhd3VU
eVEvbmJwVU1jWjkwdHdidDEyVEc3Um8KmDbOepcoAJ2JD6HqTEBYx8B/b+Dcrtef dVNTQUx0YWxPVWtVMVltN0xFVTRxUlkKBk+C9FnnCrP+lftnl1QFHwnAe8E4QBnd
U7NYNmCueIKIIBt1DbMUsK4Q88wqSpnKjnFmNrjv0oIu2ZVhsNgK2Q== UX0DbVjz5KQ2Hi0j4RJk7e4uhKBtgIZEK67eko/G0oJ5rY+KD/JkMA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1azkgwrcwqhc6flj7gturptpl2uvay6pd94cam4t6yuk2n4wlnsqsj38hca recipient: age1azkgwrcwqhc6flj7gturptpl2uvay6pd94cam4t6yuk2n4wlnsqsj38hca
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBST2NLN0s3dHBHMWZTQitv YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBLWHR4RXpJd2NJVXQ5Rmcv
aGpFMjRmWkptVllnSW5CUFc2SjNxZFcwNHlZCnJQa1FFZGZST01tdEg2dDcydjFZ Yjl5dGwvdk5xN1B6SVdqYXhyRzhBVDFKRXdnCmExR2JQQlZTdUxNOHlnSlhzWUhS
SjZYYy9ONDhLZCtnb3A0cXI2V1VmZXMKLS0tIDR5eTYxWjJvdWpXZkZ5SzVJNk4z ck5pWENJQUgyeVFVK0ljL1J5OGcwWDAKLS0tIFB2cnVKcjVkTlhDZmt5QjVoemh6
ZWRKTDlNenRLOFNpRkxCaXhkUTRZVjQKFirSYfaGSzoQY4wkZy9S5gS43zkHzbCd ZzNKTERYYTRoTmhyR3VRZE95aEU5U28K8cDg+1QeAoDMy4dOHDyGFC3I4EYURiou
W03MKdooNXz2n9fdfyFdEqYpG6OgFhuQJLKLP1oR+MUaztm7lc7/cQ== 0UgObnJV2dLEcegNBQQYVjoTU3dglO7xz7pfdOwhQ7oH3xro/9fLig==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age17x20h3m6wgfhereusc224u95ac8aj68fzlkkj5ptvs9c5vlz3usqdu7crq recipient: age17x20h3m6wgfhereusc224u95ac8aj68fzlkkj5ptvs9c5vlz3usqdu7crq
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA4REdrakFDTHRmRVFGakp1 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5UXEzT1FxT1BYZGpvY3Qx
RWp0VUQyeWVIVkV0NVlXZjV6UU9YYU54eVhFClVmeE8zTDdOVDdnWFc0anhGTXd3 dWFSU3hDbjBtRCtkN1dxamppckpUdVBkeGwwCjlJOEowQkJMZkNhait4MDZ0RFV2
S0xtOFdXMnB6OFRNekVxV1VvbGEyS00KLS0tIDcrb0Y1Ykh0WnYwVFpDbmNSYU1a RGdFWmZOWFVVbTlBMDN5aDRwWndQaHcKLS0tIEZEZTczTDZwYzdYMFFMVjdUckdo
QnhxVEIyY2s3WDlwTDRLQlZ4cXlwQTgK1iHO4k481GqGZR8K3J+5MEs6NsPwuMY0 ZE1pTGU3bFpMZnEvY2xiYVlBT3Z4N0EKb2iDZvQ71/HLzUe+8BVwS1qhtsVK/zfN
Cr8XEgmymhZnQj1WrYbZIgg+VhzfVmvd62yOn+d45Vc6TOnX6d8hdw== GhjABKXnNNauf2bmpGwh3DUcflkfEp2awCgJh+TxjE5LFwMnIcoaqw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1wnympe3x8ce8hk87cymmt6wvccs4aes5rhhs44hq0s529v5z4g5sfyphwx recipient: age1wnympe3x8ce8hk87cymmt6wvccs4aes5rhhs44hq0s529v5z4g5sfyphwx
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTdTNveDAxWi9xUERqcUQ4 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFcGIwRUxaMStxMU1ieFZi
THJvczlHWDI2V2pOSHIyTXgxWmhRdlpJREhFClJjcWJXc01CSVNQQ0VGc2VzUG1E emJleW12eWVHR01aWVh0SitvSkJuNk04SUZJCmtRcitYTHBkNjk2RTdsRXdCd1pO
UW96VlNENEwvSDAyQ3BnMnZBSjdPbTAKLS0tIE5kendXNE1BOElrMEk1U09qc0g2 NDM4U0NvQUlUSUtxYWUvSHJaMHN0T3cKLS0tIFQ2THhUdmo0MzdQUjhuc0g3Rnoz
SlpmdjlYVEVvS1ZMOXlXU1pQVWJheE0KZQR65sg6HyNsuF2X8wO5ZzfHdJJA7O8C aXhtc09pVzdFa0pOaDFmTDVlaWFGZzAKWEpuBMLOv61vsvcu5Tflaxi4Lwy84pEM
1AVefTdN9G2xGjvd9IwFww5MbvS1JcFdAratKyntpHA5e44poggNTg== YXq3kM3ETimoXB/Yh9XpXCPeq4y/lhifd9CkJKhxo4cbdbyq6uF4oQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age172pk7lyc6p4ewy0f2h6pau5d5sz6z8cq66hm4u4tpzx3an496a2sljx7x5 recipient: age172pk7lyc6p4ewy0f2h6pau5d5sz6z8cq66hm4u4tpzx3an496a2sljx7x5
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5WGd2dHh5TUZ2QlEwOW9i YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsdVR4bXVtcjBlZDdGa096
VGdKVG4rVXVaWFE5MTM4NWRCaHh4U0VwVkNJCitRc3VQa2lUUTB5V3I1ZmszRVZI a2hXTFBob0t4UTVvdTEvem5MOFliK2FGYmdvCktLM3RBR3ZpS0dST29vOXExdGhn
a2tBRWkyZnBsbm1KZXhYLzcyZncvelEKLS0tIFRaaTh2SytQUDJ3c2lnN2YwVGVB ZVJZeHJHMXRVZ2FBVG5GU1Z0SmcycDAKLS0tIDZsNXVCUUNZcFY1Y0tCaW1pdzVu
aHg3V0V0ajh2d0Zna3lpTWJYNzVMcWsKNI/JHvi/GpNScjK7lykO7Gwdfmi6jqj1 cWQ4Zm0vMHg3ZmJUM21SYlI3dkNuZDQK0zMzDVtiBhi61fLHUnS2lQ0Am5JUrh4R
MfOCHrNJvanFandggCZb0cIbH0heHIQPFauvFTzSmM45W/bWh52sHw== Yr+KuxPftoCww7X6m/Hl5pwhd6CDm+SOm5ysHHaiTTUSFATr7ci7hQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1p7pxgq5kwcpdkhkh3qq4pvnltrdk4gwf60hdhv8ka0mdxmgnjepqyleyen recipient: age1p7pxgq5kwcpdkhkh3qq4pvnltrdk4gwf60hdhv8ka0mdxmgnjepqyleyen
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTcWp2Qm9qM0tzSExBejZw YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1WlVseTA4empPWGtkZ293
YUwyZS9NNzZrRU0rS3VCR2tDK3piZm1zaUYwCnBVd2V0VkZlUFBPYklPYmlyanZm bXVTNm9iMS9iSGxCNGk2MFNjeDJ2WkhBOFJFClArOUl5bEk0MVV5eVd4bWk0WnhS
N2QwTjhjczg2NW1DNHA2WjEzTDVUQkUKLS0tIE9JcE9zV2hlVkhyRXNWVm5lejQ0 czR3VFFacHVSOVV1dTc2blQvOFZpR28KLS0tIFBZdGxGTjhtSmdiTGlDeEhWYndi
UmFEUWRqdm5lY0hGYlIxSTIzZXZaWEEKDPUpngncY8J2jF/zLPVypu2XE7hrh+c6 d3RIL1lpL1h6WGVaYzZpWERRQTR2cWMKIUoagSG8+i4g1RDa+fbXGVAjJocyMVkA
9Ibr6H7D6G15emm8ifDbcjbcI84URnVcG0ti31/FzAeAmxnTiv/B+g== fLpm9lAwUDs+9RQ95LMduj6xoPW8vtNL9CQ70Ai5hAZaUgL9HtL0XQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1sv7uhpnk9d3u3je9zzvlux0kd83f627aclpamnz2h3ksg599838qjgrvqs recipient: age1sv7uhpnk9d3u3je9zzvlux0kd83f627aclpamnz2h3ksg599838qjgrvqs
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhWWYxOFQxeFNndE1reWll YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5WVJIVUFpYmphdnBITGFR
dlJJK2VCaUlkWDZtaXlpS2d0ZDVhNlpqdFJNCnRyL2JWWm9JWWJyM3owWVpJUmdR dk1vRnJwdFluVW9TZFBjc0RwTG9JS0l3dWdzClRKVUQrSno5czR0MVd0eEk1Sk1X
UjljdXQyN2dBZ3Zvd09ReFA4Vk9iS3cKLS0tIENRYnhtZUtMV0pkZ3dhU3MwaFhq SWNxTEI0bktGVGgzK3hFZzJ2NlR2bGMKLS0tIERtVFFOS0J2WVRJbVNzWTNTL2ZZ
L2RZK2tsRW1FUkhaczZHVmVkeU5UcGcK2FZFoBXcCJPd+qc9HVbgmF29Z1JlYDVF Ym5BL2xZRjFpYW9GNFNCbXBTODh4UXMKnZQGe1jhdPDp89w6LdfoRm5qBMaAzuTZ
lmGDnSSIxQ3e7fgBVSmuSdVh6kNOx45P++RY0MCEKmmmSg9voRFEmQ== bwg3QeBHDPYYpB2b4q+mD3XxdIRZh87l+KdrdvrM/7IA9VF0ZNZWsQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1dkecypmfuj0tcm2cz8vnvq5drpu2ddhgnfkzxvscs7m4e79gpseqyhr9pg recipient: age1dkecypmfuj0tcm2cz8vnvq5drpu2ddhgnfkzxvscs7m4e79gpseqyhr9pg
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsdCtjYjVsVFNuRm1WU0FK YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkc1V0bUtXYWFSVHVnNFYz
b0hMSURXcndycXlyVURJaTNIeGFUSXNFZ3hFCk1sdkVvUE1vaVFXSHNWQlZKK2Jn MWlIdVFtSFhvQUd4Q2tRMjQvMlcxWmhwQWg4Cm5xS05kcjVRU2VEa3VYWFZHVGxH
VDlBV3lybllpaTlVVEl0alAzbk51YjgKLS0tIEJkMXNDcXd1WUtueXdjOFVpQ2tB eUh3Yzl5VEF2YjFBdXNBejVTN0tMRG8KLS0tIDJVUEFhNlg4cTJrZCt4UDgzVWVn
Vk8zclE3RW1mcUxmUnZ5R1R6ZnJUK2sKyQUbyKtNgyJ+GmCYCnXuLp2GvqhIB6Ln SjQxSVo1eklzWm8vVjgxR3F2VXViUncK97WqQpdVMds+gmf1TNC1TCQFFuD7jk0Q
xFpNeY0WN9nQyYKht0RRbczbwPEm+CUqpVfc4Y3rnaaZ4xfXm+HSIg== sqdCOxceIaQudTM+1M0YYGn6l2sKuBzL290wLVfEDYA31lyu2/ubaw==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1mdtnk78aeqnwqadjqje5pfha04wu92d3ecchyqajjmy434kwq98qksq2wa recipient: age1mdtnk78aeqnwqadjqje5pfha04wu92d3ecchyqajjmy434kwq98qksq2wa
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkQ1pOSWhIOHFlelZjYzQ0 YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDSlAveWFBckpyYVNNR0xP
Z08rcEVveDBTLzNKQjE1aUpkNFgxY3phOUdnCmVxZnVZYnJScGZ2SU5ISlkxd3Rn OUh1SFpjVkl1WXk3RXRjMWRweVVlRXppd21RCnJFbkU3OXM2dDc5bDRiVDQzNjdC
aE5QVTQ1VlYwL3piZUZHSHpQcndnOG8KLS0tIDJ5NXI0ZjIwZ0dTNndxR2pkSVBr aGhvdldWUkgyVVp5a1BndGV0K0xUSUkKLS0tIDR5OXpFcFFJNmwyWmVvNGFOWEFn
NXh2dTdWTTRIRkF4SEZZMndWTVphazgKEcXnLHGfKo0x3n4JMUdrxJ1ukluHz5by Z25FL201YUlNT0N5WnR2UnE3ZHpKMWsKuX+ARk/5fo0w8nG1eqhdpZ8KDQEaVh3S
uEyrZqD4H9NjzJEc0YWo992pqSn6t4c2vf3bu4uMUANIi/24R2L3ew== 8nf/jJ39QrJwnukQP3+4JvLKl/tp5NihlP/eQ3ZUmvTNqQOsXpTY2g==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age16pxqxdj25xz6w200sf8duc62vyk0xkhzc7y63nyhg29sm077vp8qy4sywv recipient: age16pxqxdj25xz6w200sf8duc62vyk0xkhzc7y63nyhg29sm077vp8qy4sywv
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBubnBBeEh4Z21ZMzdnY1ly YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBITTU3TVhZcTJGVDRlK1J6
V1BpN2dpd0trTXlBRHp6R3oraGcvQ3BLQlJRCndDbFJlUlV1VDBrYU9NOWhxdXY3 aVhsQlhvMm9JdXcvbTc3eExxWjQxdmU0NFZVCmVqbkN0QS9QRHo2SzQ5T3FNTFA4
YjBVbzR5akN5Tlp2K2t0QjFyajNPOGcKLS0tIDBGdXc1aG9sWHJqTmRXakNQU2xG Vm9zdkg0THFaRzdsU0kwUDVMQUdDM1EKLS0tIGhtdXRMRWxDVVRUQXNCaEVPd0ts
MVZncGdlY015U2tRL2lPSzNldFRpRWcKx3D5/Nya5W4i2by5AeY6zNSBIe5gm3qK Y1ZSOTNjV2ZhZTJzZk5IUENrMUVheFkK3WZbruOLBTzm0WghE+4iCT9l9ZX7LyVu
FMJ1KgoasiHtgKkhumqAnGBqwbp2WFGM9tJK/huImuKeJd23i9G/2A== g2K39QgOva2VJPi8TKZ+SUPAJkTs+n++KiEtaanhSKJWhfoCa2hCJA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1hv7m3xypesdfm0dfzwgctde8v307g9xaunnfu2687y0lagcs5q7s3eg0kj recipient: age1hv7m3xypesdfm0dfzwgctde8v307g9xaunnfu2687y0lagcs5q7s3eg0kj
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBOWHkvMnVzRDBYYTZGZDNG YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrMmlUdE1XVjMvZ1k3SWRY
S2xHQVVIcGt0MHhDb0k0c2NDZlhMcDJ4SG40Cm52bUV5emFGMDNCUmVkTmZheW5O cTA4ZHF2K2F0VTU0dzhvM2k3S3NXRENJWGxFCnlWZVJ6d3p6eWFSeFFZdU9FRmZS
RE56Q2g1Ymk2a0VtWDYyNDBDS0k0Q1UKLS0tIDlXa1gzZVhId3V0NHlqc2E0Sm1C MWJRWElrTXI3SjRUZE5nVGVkZHFXdkEKLS0tIG9veHJjL0lIb25LTWhvcW9oY001
ZThwZmNRVEhJaWRkcXdocUNqaTlJbWsKt0qDpp+YTa2KaXbbRrXDnu6Jyc3e+6iZ MzZWUHJnaUJiamI3S1RJd2lweG5FVzgKFb/9A1Ukx1aL51Tf987RMBD1H3Jiosba
wwRg6nztr4AROglPcTopTFCPkct2bdA0Xcj0XozM/TNv1ztC9STNmw== XBqvr7B+8URqPO0rvFDvlCV/RtLAG9RhxmJqJ23+4Oqm0FzNCx11KQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1522f3qzddm82w63j7ajdkr0khvced6ht7tzp3grvp0j3hewtvesssr5kpf recipient: age1522f3qzddm82w63j7ajdkr0khvced6ht7tzp3grvp0j3hewtvesssr5kpf
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5N1lxNkpoaEd4V2ZYZHJv YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrdXdrbU5hTnBMaWxwSHNx
MThuQi9aZW8zZ1cwa2IxcWd5d29yZ0hpMlQwCndaNmlVY3ZTY1h0U3RkNVc1WDFZ emNyQTB6UHVmVUh0N3pnbERtWi9naTBnM1gwCnNnZ3ZEcUtVM1JPY1NnRUUzNElY
ZmtsbUJqbWk3MjU0ZzlLOGg2VGdmdlkKLS0tIGl0Tk1RRWg2KzkvcjlqMlg3NDRX QmVtbVNiem9LbnFUazFlZW55U3pwZ0EKLS0tIFo2elRISEV0TDdEZlVHU2thclF3
QTBEMnNVb2dkQlFMV2o2RG9FcTlCZ3cKm5L7odprrDvS1ufaZIemqgIb2WylDwgX SDgrekZBL0tRaTlYTVUxUzM1SVJ4VGcKUaA5Y+cZ99yary7gt5u5DxPcPhHVcpnd
7gj2WXJzQMnnL7mYeJNXeL4tosgJJlrd9VScikn+GRcMUCRDFm13xQ== /ffKgiuXQytnaqTjuK+LznHd0zFh3T4Wgt55ctLP31vr9O3iwzp5Ag==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age18zgt4y2sd75hxnpe333zz39048ctxpr0q8a3uqh3jajjkyawsdrq8yg5ve recipient: age18zgt4y2sd75hxnpe333zz39048ctxpr0q8a3uqh3jajjkyawsdrq8yg5ve
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiellEVllHL3pacUVhUVVD YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvcWMyRytmR3R0clBEUHZy
Rmg3SjNxOEtnQlh3MWIrZzkvOCsrTys3aTBNCmRIanptazlDZ1VmelVabVc0b2pv N1hLV1Q5VnZ2TWJNSE5pelozN2lBVU8vc1VvCmh5bkVoQUo2ejhBVU1hVkNtc3Vs
VkxkakFCdkdnZ1QvTk5SUFF4V2N3V00KLS0tIHc3TnNaWm5xSWNranFBNTlPM2NX ZnVGQnFaMFV5ZDZacnoya2k3SXFSWEUKLS0tIDVxSUUzTlR0WmpxalBVLzRyYmlq
NUszTW9VOThVcmhROUJuNEdDUWM2ek0KH5BTMYDwSnhO0MA2/4KgCe1IZABMePX4 SzRVODNGQU1MeHIrZWQ3RnYzNFAwQzAKFVFt6uESNx6nQwSCqoVt3CFIIykKjz6R
WF/4r3DJ6cPVIyYx2GkxIpr0DVdlTb3KphxL/LBiUoGwHn/F/sfR7A== AwVU03KFdfTMSHx2KBTDhOnFGdh33m3axIw/CxDFaI5NB8MMa50lBQ==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1az0k6cadssk6r8qcqxfr8cyu5mndy59pwt8yqq6w065ew6au4ezsmg2vkf recipient: age1az0k6cadssk6r8qcqxfr8cyu5mndy59pwt8yqq6w065ew6au4ezsmg2vkf
- enc: | - enc: |
-----BEGIN AGE ENCRYPTED FILE----- -----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IG1sa2VtNzY4eDI1NTE5IDBDcFJqSjYr YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IG1sa2VtNzY4eDI1NTE5IEREcjlDL0Zp
MjFvTEJVWmZpUlkvMGQwRm1EcVJQSWpmUHZ2QXZCV1lKL1pQN2JqRUw5KzNvcm9v eEh5bE9wOGt2NTRYd21HbTBQWWFrZ2xCTSthc0hRcmJ0V1Q3UUNXbFRKa25UNWo0
dmoxNFJYaGdXeW9CNnhXVU51VlZoTGFFd0dralVrcmNRbDFwVHJlcHRQMzNyNkN2 UUFBMHlLTmdaaXpvOHZiOFpmWk5DMUVZbHdRaUdvQks2cEZKZ0dncnlGb29nb2pU
bERFSGtBWG9wUzhPOFBDS3d1T0wzR2lXeWdFa2ZzbGg4MkxLeStiV0d2V0FSOHhn MG5LUEVWelFNTGYvRWN1Z2xwTzE0bG1VVzZHeXlGZXZjaGw1OFZoTGsvTmZWNkM2
cG1WV1hTanFycE9RZ2NUT01vWm5UNTJYTHVIbWExbm9OYTdqcVAvVDJUa1AvRUhS bkcvbVNpSmhjN1hFVG5nTk5YTTJqVml0MktQcXdnQk9ROW1HV2I2dTMrb29MUDY5
aHBObVBJa2t2Qk1lT0xWeGNIcitMMExJSXhkcDFHUDdpb1I3VHpxRU54ejBwcmRV U3dsWXpBdVdNT1VPV1RUSTZhSGxUUUxPeTVrUU04Wk1jMERNWFZ6VGZ1dVlxaHVa
dHovK1VmN1V0c0pkVnlWbjhlS25hNi9oTG5YMHlBbkxxVUdRN3lhOU9uOEVZVFlF amNQd3d3RGZ5bnpWS2ZESEFwdXdtRVpad25RdFUvU0pCQm1rak1YbVprSVFLT0w1
bWphNTR6M0xValM1cUxIZHJiRVZ1YUg1amY1ZERBNTZyR3lab0owdml0LzlkZWtz V3kzdDdYTjNOdnpFdkN0NlFOeXRTb0NxZkdpdkJTdDhQTVlSWmF4bHpDd21hVkhZ
dnREVTBjYVNsdFNaZGx2Tk93ZUpBQWQwK25UZHRsclVlcThGS1A5ajU4TEN0cXh0 OGJwN0VxT1Z0RTBxeThjL1h3N2RPM1o1S3hrWk1YeHN4dmdpQ0daaWtXc3I2SmQy
eERqbWkrOUk3aWZ1T2tadWNWc01sbDg5c0lsUVpzb2xSUFphYThhN1FONHM2ZjJT Tm9LdUs2cXdsL2FkWnIrcFBnazY0dnluaEl4KytYclRmSDRhT0M1Rkx0T3MyOU5U
Q3ByQlMxN1JKbldYZkJ1RjJRT2R6cHVVVmJ1YTZtU1dkRitJQzNOTllTZnNZTlBx eDVPNW5RY0tsVE1tMDc3dzc2TU90Lzhzd2E5VjVjcnRua3FEeHVEeDBjVXAzcW5a
amFpWVVEd050T3ZSM09SQnZIdFgzMlFVS0YvU0FXUS90OHVpY3lSNmpFamJzZ2pD K0VDOEx4VlNUNmszZ0QvTFRsMlRySHNpM3M0STVyeXJmaklUV2pFakZDMjIvQUNH
T2FVVVBUMmNRbU9tUW5Md294dWEyRDcvTEw2TWtQZ25HNEFuMENuUGcxbnNJT0ZB MVNkLzZ3MXpONEM2eE4xSmllR3Y0SVhlSG4vSlVHNytMeWVpY1F3bmZZNWh4SklQ
YkxGUnhUdFllcXRVdUVyUlhpWVRITUh3N2VGQkFDYUxiNjRZSkhtbk1uN2l4VzBP R3VOaUdvbWtIeHhzUkxxazAzOXVEckVISGN4RHZnRzdKU0hUNGJqSi9tN3JJR3pk
TTd3TisxZzU5N0pITERYbEd5c1JMcjJ4QjhPVTI2Zk1wQmJIZk82aVdYcWhQT2p3 U0JzSVhXWHB5amxCTUhvTFdLTzZEODhtNXJBZkQrWTd0NUxVWVlleENLNlp3bzlX
c2I5SzBGVmxDWC9XNGNmcHI3b3N3Q2JRdG9oK053SnlPMFMyTHhlWEdjbmVjWTlD NmxWV2NsUERzbGVHdm4ya2Y2RXhLaDV1dHFFV3FqaHlHQVNlOC9hSlgrVWlGOXlD
a25ZRTFxejZYcnBlcktzT1NCLy81aUczNlo3RXNOQWF6bTVhZ0ZZdXh6VmQ4U2R2 eURoMjNBOVhUZC9iQmdIZnlYZXAxNXhuWlBTbjNkZmdsMmlZUVBEeW9wb0ZFaVpF
amZHcUJsZGg2V2VnU0RwRnJTNEpRWlFSUjFmbmZ0R2kvbzFEL3dHdzQ5dFo5UkNa UERta0FpdnQ4ZVExQ0dzeGx1SHBIdGJQRkVsZTMwM0lHVUcxOUc2bWNIeEFSN1BN
NGhVRC9QZFhUZmpSNm94cEIvOTNRR25DL1pmNkowdVg1dkFZbTMzRDJWQjlPYS93 MjZQU3crc0luZWNtaTVESldLK1cwVWZwOXhlR3JtRm9weTNMOHh1aEFSNnczb0Zl
ejRYZE5oaVdOSFFvUjFrRFY2ZGlQUUhmNkQ4VUxUWHRtSkJSTHR2QWR4V0xHeDBU dWFXelpjRkI1T0JaTzJVSGNsRmx5bUFzR2dFSUVUNXZTS0ZjTEIxT1BVYm5VUmFY
QUZNWVVhVXlXZ2R5TUdCNHBocHllSE9rdzBxRTl4MGNzRzc2eXVsVWRNTThER2pC SlVLc3dQYmRWTUIvUE5Fa3l6clBCaUdhMVBVQm5tV0sxamNYNko0UGxjcHR3SkVv
UXROd2d5SWRGYXhXT2owSEN3K1RBK20wK3EzRzk4emlvK3AvaEdxSGNDNkJEblhs dXk1Mlp0ZXJTMUFoejI3NXVTa3FzVVhEQ3lWMmJPdFVFZ3dKbDR0b1phYSs5OXVY
VW1HVG1hbzNIUjlqVTdodTlWVzkxQWNGRTVLZkV3MnB0VmpUWGM3eXNZd21ZNGlx WnptZ1ZNZ3NHSjBVanpnUmd2em5weThjaGZpekZTUUpPQVRaa2ljVUR3UjVvYmlw
eHMvRzl1M2xWTWJuM1k5SUIydG4rNTdTM2YvcTlrYng2QXRkSFl3WTc5L2w3Rktq a3NXWFBpdnl2YkNRZTdzdGI1OUhQSW1DcHRNSWlGS09yL1krc3BOaXljSFc4eDRq
M1JwaGFjUjFielFZekt4YmE4K2JVUHhTR1hkd3E2QzNzTlFTeitNZDgvOW0wdE82 R0w4TnJSR3I0OThDT1RpaWtPM1NKYlZRQUhGekk1ejN4eEIrZmN1c3pSVnpZa2Zp
RndzVTk4WVFZT3c1LzdES0N4YVBrN0Qrc1RjcXJOcUZqZnBYaGtQaHB5Yk1oWSt5 SmVqa2VmZzRJN25NcUF1RGU3ZTltdTIwVzVGaXlZazJnL3VKanplTDUzb1JDS28z
ZGloZGtPUkpINUZsTEtxS21RWXJpdVI4OUtGYUc0Qi9JcmNudGxiOTVFdFN4R3gx eDcwUGRnTGs1dzEzdWFXOHJKazB3eWtyTEJyME5aV3QrMDdaVVMxSi9rYW1vUnZo
U0tqM2h2N215YzlROGRXUVg4cklLNlBLNWxpejJtejRTSTdXblZRNXRqMXBiRElq YTJGbGNuYlV2Snd2b2E4QjhPVit3d2J0S0dpa3R3L21uMm1sTUp3ekdGcmFNRURV
NlM5WFp3UVVsMUJGTm1MZW1NVnVqNnQ0b0lZWE8wNlV6RVI1a2M3clRNbE5kMm42 OTBkaHZ6czU2emlmVjk3dFREUjBkQTFXVVZSVFphcWt0L3lHK21jNGt6ekJoWFVu
M3Y4UGlZOTlWL3JMWFhTSFBHblZ4dGljNDVLRlExUHZOTGpaOWlQTUFGR3JTeTBI dGN4eW5HT3NIZnNqWDBHZVZlQ3kvZUNZRUJsckJITmY0MnAveGFMcnppT205LzR6
R2YvcFlGR0NtOTEwZGJSQlJlSWM2a2p1NnFnV3BXbFEyT0NrN21JS1BtNEw4QjRu UG5zRUF1bGxYdHc4QytHZllHdFhMaHp1djQzU0RlOVFCTFFKRXczNzlxbmYzdEI5
bGtRTy9sQm1JQkpWRGFWaTNhc2pyU1hzZDJia242TDYwNGdXbHpCRmpkQlFFUQpN VlBzRGlJdEVwTWlhRVR4S2srczNVbVVWTkt4RWpFWk9oSjduZC9xd3ErWUZYdwpJ
UDlNSVBFcnd1dUJZS2lLK2ptNnFYSUZ6bjR2ajZtbEZQL3ZuTThKdTRzCi0tLSBF Y1owa1hUL3BZMFg1Zlp1dTJWSDVWZWYvcUttZk1YM0N0S0ZvbXBlUXU4Ci0tLSA5
U3U0bm9oMXlJeUJVL2FEeG9HRzN5c3dUd0NjdUl1MytwaHdVajdHTjBvCgpBoZIr R3hGbHdFYmVtcU9EVk11VGcwL3NmVUdRTzl6QXYxeHZSTU5URTJJUzY0CuZDGfZX
TmMzsSHAr+AszkWpzSgnQw4Yr53dfP3JFertkzbeKeYVC4SsBnNafpPmqikq7l0C dFRT0LZDTdxOUWHEjhn8koUBE2R8qRRWD81Zk21P7V7gOuvfNHGnPPAp4AGBwz8y
RQGoDZ1GYgj0BQ4= FONEUqwbdjuoU6M=
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age1pq1jqrcp3te50xugmv5wst3s9ahj0d38rfktxt43wlcqz7vnwyn3y2h7kyfr6rckrvmuk9m7yvp4efjnfsuxx6d8r9gn222r2eal5593arywrjwrgeypf745wyuvf3z2xk9tm5fgnwckftuvdggk66fph59rw69nt5dpjeewuww4vzt9gs4xelre952s7zjz56qv8tvesg2c89sp8rmy9dvhwfd6tucjhs6sjr6yp2njjra2u6w7c7f0sch3rwkw3wf2dc9su9aaa9q2f22sh5yf0fqejxa2qqpq4pg752589st5xsa5g8tpkjglj4tn35gd4hjj0xet9cjwhydmkmmkffy3nr8zdtctqu6pqsyf7aphvktryez39ru3qe7m6nvr465ffxr0ltvr85nddzxvcwpwpac64nu5tdfrxgjfqzc99vr3zxv8carpsw5evmruqlvrq6v6a4m2cwsz5gqw7nyk3jlj75kp5cnafzjn5dyrf8ppfhp5g5s34zsl7pejmmx2uuudjt7ru2y7as9mtagykrgqgt80fvp3eeh4gsmmd3ujgtp0ranq28aq9x0xdekqh49pfhhprjj6zqdfac5gxtjj736kh5jktc4ls4mjs3p33rzt6ze54uqsfept3qhua2pmugypup6hm6j2ek5sgxjnwvqyfj2l8vz4yfgkaxf699v7jqlwf7g68ang5kzqrjsu78lyardm4zen8zhrr24j334qdgs4zr8dhsfsnmvx9cdvu0swx27tcz8txs46zds9kekgmua7w7fnw3l2lf6zla956ssycac4zjy87rawr4thusxtcqgfzfzh2za9np0s34e5dwkp2l2k06cq09myxqfe7ze6a53d8sl5j43qcekh6kfvl9k0t7903q99pc35630zwm3hwxgnw354du5gngnz56skq9zx3pcnkr5eyh8r8t0dqudmvrrwmxreu6tgrklxw7yvu3zkjgt3gyjhc8kqcrevlukay45sz4k9zqxx9yrs88hzt4h52r2g74alf3cedes3atufy06q4lfq3nxdlnve0kqcwstzr6z6u7fqpqvacezdrr62ycteju6dqawkpthu0drtlxj547htfjcsnrmhgvhskwtuhk6yp7wp30p7qc5vkk8fegg6qx5kc9xs4trx7hj9xgydu7vd30hkceuxsczywjs9v2fl3svkwfypg62882yq6ltv7gfj4ajuy8ezd76g0z7juwspe7q6zs5ceshd6038tvvh2nlpjty6rg6a9qfzhgmjx9s6hynyk7xnq9zra6hxstg8p58x75hapd2mk6rapfunlnnkz5dsxjf4ud4dsvgjfjpzxcdy7sp8dzxtengrsdyu4824mqlw8p63d7m2z4mcyme4tm2qkugtdgrkyphe7akk2geukf6xkfkzd2pkdq5s3qm9fkvfkgrv6yw5kdgjak8xcgesg6tumans4fs8yrxtqlvv2z3emdvwchrjfq4xpzsj27yt4gdg8pknwz9tqpjkjxq6lysutrvwkvt2fwyj8wvv8wtmdl6fk6rsd9kq9a6wkhuq7vvrgwgj3xg2s229sprj4g2vzhy2dfesrp403gs64jqkrjuezwm4zd6uw2x4e2qkj8xqcf7c0zprdzu959x23u878vqqetgpjwt0z3kedt8l6dgpm0rf5dmrya5h3wgzfa0jjvgjphyxgxrwlrzpv4czgal933zs64tn90ks66ejjdaw4t67sch8r3q0kljeqnpdgmw0cpj6arc6k46wcqaccygczy76zt9362vslakvzqqv33tv3sjldp6qxprharmpm9uykgpx66343wuur5xj2aw0rgutpm4ztjzycn3a8d2jq2zpdzwmevezm7mkp9dmndkc3qz0kklgkxq9yehrk5ayfly97umhws0jll8qqg0r7gzxgw5vv76 recipient: age1pq1jqrcp3te50xugmv5wst3s9ahj0d38rfktxt43wlcqz7vnwyn3y2h7kyfr6rckrvmuk9m7yvp4efjnfsuxx6d8r9gn222r2eal5593arywrjwrgeypf745wyuvf3z2xk9tm5fgnwckftuvdggk66fph59rw69nt5dpjeewuww4vzt9gs4xelre952s7zjz56qv8tvesg2c89sp8rmy9dvhwfd6tucjhs6sjr6yp2njjra2u6w7c7f0sch3rwkw3wf2dc9su9aaa9q2f22sh5yf0fqejxa2qqpq4pg752589st5xsa5g8tpkjglj4tn35gd4hjj0xet9cjwhydmkmmkffy3nr8zdtctqu6pqsyf7aphvktryez39ru3qe7m6nvr465ffxr0ltvr85nddzxvcwpwpac64nu5tdfrxgjfqzc99vr3zxv8carpsw5evmruqlvrq6v6a4m2cwsz5gqw7nyk3jlj75kp5cnafzjn5dyrf8ppfhp5g5s34zsl7pejmmx2uuudjt7ru2y7as9mtagykrgqgt80fvp3eeh4gsmmd3ujgtp0ranq28aq9x0xdekqh49pfhhprjj6zqdfac5gxtjj736kh5jktc4ls4mjs3p33rzt6ze54uqsfept3qhua2pmugypup6hm6j2ek5sgxjnwvqyfj2l8vz4yfgkaxf699v7jqlwf7g68ang5kzqrjsu78lyardm4zen8zhrr24j334qdgs4zr8dhsfsnmvx9cdvu0swx27tcz8txs46zds9kekgmua7w7fnw3l2lf6zla956ssycac4zjy87rawr4thusxtcqgfzfzh2za9np0s34e5dwkp2l2k06cq09myxqfe7ze6a53d8sl5j43qcekh6kfvl9k0t7903q99pc35630zwm3hwxgnw354du5gngnz56skq9zx3pcnkr5eyh8r8t0dqudmvrrwmxreu6tgrklxw7yvu3zkjgt3gyjhc8kqcrevlukay45sz4k9zqxx9yrs88hzt4h52r2g74alf3cedes3atufy06q4lfq3nxdlnve0kqcwstzr6z6u7fqpqvacezdrr62ycteju6dqawkpthu0drtlxj547htfjcsnrmhgvhskwtuhk6yp7wp30p7qc5vkk8fegg6qx5kc9xs4trx7hj9xgydu7vd30hkceuxsczywjs9v2fl3svkwfypg62882yq6ltv7gfj4ajuy8ezd76g0z7juwspe7q6zs5ceshd6038tvvh2nlpjty6rg6a9qfzhgmjx9s6hynyk7xnq9zra6hxstg8p58x75hapd2mk6rapfunlnnkz5dsxjf4ud4dsvgjfjpzxcdy7sp8dzxtengrsdyu4824mqlw8p63d7m2z4mcyme4tm2qkugtdgrkyphe7akk2geukf6xkfkzd2pkdq5s3qm9fkvfkgrv6yw5kdgjak8xcgesg6tumans4fs8yrxtqlvv2z3emdvwchrjfq4xpzsj27yt4gdg8pknwz9tqpjkjxq6lysutrvwkvt2fwyj8wvv8wtmdl6fk6rsd9kq9a6wkhuq7vvrgwgj3xg2s229sprj4g2vzhy2dfesrp403gs64jqkrjuezwm4zd6uw2x4e2qkj8xqcf7c0zprdzu959x23u878vqqetgpjwt0z3kedt8l6dgpm0rf5dmrya5h3wgzfa0jjvgjphyxgxrwlrzpv4czgal933zs64tn90ks66ejjdaw4t67sch8r3q0kljeqnpdgmw0cpj6arc6k46wcqaccygczy76zt9362vslakvzqqv33tv3sjldp6qxprharmpm9uykgpx66343wuur5xj2aw0rgutpm4ztjzycn3a8d2jq2zpdzwmevezm7mkp9dmndkc3qz0kklgkxq9yehrk5ayfly97umhws0jll8qqg0r7gzxgw5vv76
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBtVktpa0YxTFlYc1hVM2dP
NFZtbFpERUhuU2FENTFkTVpkQ3lXNzFlMHhVCld2cUQ4Vmc3YmtvVUZYOFFBZUFn
R1g3b1pHWFpXVndUNUpKcW5jcGRnaVEKLS0tIGRqUnltQklEczFzbjJ0Ymx6OENa
S2ZRMWxlbVQwS01EWmV3aHdDWjh2V1UKXfo7ZYYZXIjolTKc+aXHpi0P6QxzpaKA
5wi2gYOF5RdoyOyfjPYsIxCLFc+HO12X3BD2osomsT0yUGD12xWu5Q==
-----END AGE ENCRYPTED FILE-----
recipient: age1q7kz3pnfq6cvtn56rlfgs52efcvtcmaq4xny0va3x5wxj4vpgccsenwxk6
lastmodified: "2026-01-25T18:06:26Z" lastmodified: "2026-01-25T18:06:26Z"
mac: ENC[AES256_GCM,data:plHNLOgGWwNWbakKG6X5EOxwERE3rvYO4EOAzY/sz+uM7cZBEnqU5LZwjlD8B75hgRHqpnDBF0JbHgsEwVxfJJRL1phkeMJFOapQMjZVWMz6j7eb1hOwpdktd+bpuimy4XCD1aOxOoInKpFSK33usxLfyqSxjFDM5+i6D22qBTs=,iv:/iOIfNuSIDsa/UKLP0d63tpOrYMFO3Bk1qPssY0AzuI=,tag:k+824MXD+r0lNUcuvisudw==,type:str] mac: ENC[AES256_GCM,data:plHNLOgGWwNWbakKG6X5EOxwERE3rvYO4EOAzY/sz+uM7cZBEnqU5LZwjlD8B75hgRHqpnDBF0JbHgsEwVxfJJRL1phkeMJFOapQMjZVWMz6j7eb1hOwpdktd+bpuimy4XCD1aOxOoInKpFSK33usxLfyqSxjFDM5+i6D22qBTs=,iv:/iOIfNuSIDsa/UKLP0d63tpOrYMFO3Bk1qPssY0AzuI=,tag:k+824MXD+r0lNUcuvisudw==,type:str]
pgp: pgp:
- created_at: "2026-09-24T19:55:29Z" - created_at: "2026-10-08T12:21:49Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMAxK/JaB2/SdtAQ/+KTrL4s2iT7FbW5ofNIj/jzDf5Xq6W/pb4oN2Lfea3ZhK hQIMAxK/JaB2/SdtAQ//YjXqHd2fkAaaW3+lpKubSFc0EDoBfVqLm3rF1TSBjmLW
l9fegZDwR0y7Pq4lmzENeIlt4mqHWoINngpQXxuyul6vsIUgJyeYg1FdBWf3t7Oy wC7Xm+Q7TANTVAWSjdvsHhuMVKRtkZHvkM5BWPGAJ3kgv4ATplGg4NQFQCgUMaXm
ToHEYEwxd/SajYQE0JKqb5rpVJUvnGSIpj4MsYgg94+PlsOYFMU08OuJ62w4Ko8F JynCePI9yeFtMJuXIjMdcxdEK4TW5QzLpUPyEPsaL2N6yWAQuhNeF0mgxpPwaFYq
e6lRgBqm8xf6X8apNTTMHgsLrtVWnwGL+Lb1Z6Ro7h7L9vt7QNkFEZPgKhRk8gAQ 9BTGHzz42JZciJ8CZzBS88fhxdH7vEFAb1jj4Gjz3NHqphaIDHB27Kk7rWVtr5+d
0OkEB1YerrKclxvq3tkIEwncpdzc3KIaeoVIXHzmr8IkDQ89SJue4TtgsKDlaSkv Xem/pGd5op16LDeJkYbWwB/H1IwlqnGMEj1cfet0mdvTAR34mhKTXi5goA4DvL11
QYG7da7IK9eIJQN6y2PTlZlVdscTrPvEFzIZl6yfI/ZoaAXb4NSTXdXn8mT0h0On eXjFwIsJaXmoqrATkRFjh5MblxQ1T/Xi7s0pf18AY6VpgLTeCEODwZRtRTzw3oh2
rWLlntBANQR1lulYADKjy1XZmqu/SqlzQmD5FVVrKs3sLOycnxqYJc/ulafAZoe+ /ZNVKrpY9LAlAGJS+2PKNyI1N/s88gtE9PFPQV6mKlkTGrKh/VzSlUI1FY0D2vhZ
7fQirvNf3sMIowhE4KXJ0ZdMoIVmcKnqYkhKxXIHztUFeHb73zi3mtOTsuOX0rki 6I9qZ7kM+B+D4+nZazc9RCangZjFQOss2eK0XFaAD7p7Ea40Xmv9QJvYO1DIhl5O
kd+KH8h3ZBqJNvjVwLE2gPZmdrphEyD355ojpc8MglgH8c25IaFHouJKNqLMM+03 8SA2ibRcOZijvtMxZh6HE3kwmtDdrPV3rxO53QlgXOTnmcuvqKB/pviF73EkPpI6
s1wpOJ6/SPqKhdjqdHkILYWOfjSNhQDv0/swPxQJPLHwk6+mt1lE5wOpKycyIvtT wdRZ/Jouz3EEpkrMwSX/+sfKJkTYiPF+2savWX6f2Rt7xuWD4REC9vKFPgRp7rrW
2EiTTTyyFF+WVZB2/D0FPkz6HFlrZSH6QVreCuC+KrZT6WU8sgp6qE/F4oaH9RTS bkk9NAgJ10G1VaRCjK5kH2P4+ODsGXSumE/yNgPaYa8fILgw/zA/A9Hrm2+DMPHU
XgEc0Q/RwSScOs3YXmJUp/1JTiDs+jlPQJpKgR2JrljVNozs/EwqeNS6iQtaOfRf aAEJAhAvMlG604H1bleSNePoqXi1No2wFvOUAPd0jnDKPasKQRbBzXcIVXSa5Gs7
V6VzxveUMnYPh9vE3VtiYRtQPu7DLzvS67bJukSXwjx5TCLnQgyulAu/XP/wQYg= BG59T5ntp9G1dSkGJwt7IFdnyEVJgQ+/LxhlneK0Ql6WcCvki6CieM92aekMJzGK
=dOub jFFdoOk8OPHo
=DOii
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: EF643F59E008414882232C78FFA8331EEB7D6B70 fp: EF643F59E008414882232C78FFA8331EEB7D6B70
- created_at: "2026-09-24T19:55:29Z" - created_at: "2026-10-08T12:21:49Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQEMA1QflAioE8i3AQf/X7/YOb54Ll1t6jw4bDZrSoJKsJFkyK9LGwYhr5NikP+S hQEMA1QflAioE8i3AQf/WEIasJedthFN+4ADOlvk6739WrA3tAG+Ml8IH5VguWWY
773YDCqAsBUCyklV/oyeK+K7lZHXKGTms6ETObWwejOr8Opd2N9mMefNVmxOUveo rhquIJ01No1uyWlBnjl+zY4u5KedzBNwiSGH9NqdoFl4T9PDyPzhjwNKdKydelA0
0BShc+0pdstTPvDcqVInLZ1FU0XJG90imJ3rRdXog92voiXxipplrNwFBc9lASaC B9h4T1SNNNlhLzW7xwnaE2zzdVXc90MEzpsGXKGmaUjol3glxZGdLw2O/9lYakIJ
AXQjuGZ9XzN4FP2k82MM3xNx8+sw926l7iJ/V0A6t1eswaPFaOlbZ/BTsIqQZX5G F68fW4NJSnQ3mDwFzO3fZBUMZxaMrj0eT2fXOFkzpLwO+k99QO5J+H6YDndFIrqJ
M+Xiz1N3j9cH/OdKb50+gAEFGkW4r57qxJ9UNqrMhZ9IgjFANpRPuICb03sN7PyH NMNeKAPoj/IBAe8gO+zvFqMP6iA+1zyN/WLsMfbRb5F4lnnVkLfcNc0wI2Fzv1p8
tHuNA9LLVazB7+hCUlGCPlbw1JHjko7Eu5zno7Kz09JeAdvAyK4qKWHtxshUsPgL yWL3j7es1OYd3Zo6y9Oe/w7QmQJ+8h5+ginRmWic/dJeAU56lkfIB4pbCnGJBLgz
H+GxFb3Pb6sP6hqH8EbRqiqhHFKFZbL9VHvB2u501YGCzv5J8qfyOyCNH64qicsg +nS6EsY7ok+yzG/HelqGEtQwJPfZ9HR6yK2WseP4eYdbIGmkOISnt53Ft3xZPDHg
+RSQ7PSX263WI/RvFeJxq72coGAOCygfYvm/AbteFA== FyylghYaF9KiEXknRY2b+fyRCfbHBBjnh6xVyILqPQ==
=NLrv =ytdu
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 21C9579E6503CA815A68ABD8541F9408A813C8B7 fp: 21C9579E6503CA815A68ABD8541F9408A813C8B7
- created_at: "2026-09-24T19:55:29Z" - created_at: "2026-10-08T12:21:49Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DsZXvxFXTXoQSAQdAdMgewk9kwTEHlJ4DrjEBDIQ9UibVAwcQGSDon5P71nAw hF4DsZXvxFXTXoQSAQdAY/QEMTJA1mP4qlWnMD9l3lYyEsF9LO+u0jeYwMR5c1kw
mOM7sg7H5GrtTxDN65MLl6P+IxeKkPSg1oWDCzRazfwbz04DKYBI+az1Mjgz0sD/ GFdqNpvhgbq56qmxgux1lCOcCgforwRZNrRV6zdQEccEpWLRUy/pmvqRBaSOYYe6
0l4BL3Ufun28luyJVc65sm8S9xZxCorQlUPlRSRuf3h87cY0xzNtZQE4sFmtTdKn 0l4ByIKrIab1smIea0ZeM7oZ2sRnzgNCOEo44ABuXQW3DoiFc+49DFKi1zM1+0mZ
FlWirrr8GhxCmwOAuBk9334W7Em2ubSI7PFrr813JV6qSCdTp2GE6XSNMp/tc4Sc uRbhv383SvMNWai5Tmf1JkrQHwfBwIuJT63AK98TfmEVrAu20qZ3E0TfB8cZ46PZ
=/15a =8UMl
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 9633412309CCB83BFA39BA5F2FEF746201D7FCFE fp: 9633412309CCB83BFA39BA5F2FEF746201D7FCFE
- created_at: "2026-09-24T19:55:29Z" - created_at: "2026-10-08T12:21:49Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DerEtaFuTeewSAQdABZ3azfwilO6LhvmIpSIynGRkdYj+pOFehD4eLc6IX0Qw hF4DerEtaFuTeewSAQdAB+o7XTZVQJyJVV+5LDdF2qp3mViYE6srWmSBBQmplB8w
M8Lb1ThNCtEZLzYdxlVLxcQ6EaOcuwzzkNoW0u4Vtyw4ZTxxesr9fKUcjXHCeDS8 o411SxMsKEk8ow1VgNKCr7KQsVgYrMTHVjzt+fWT3/CNYYtIs7/ox1RISHBjmUUg
0l4B33eqQMOlQQcTWSaTqVX6+hbDZJhP04e+E6AM5j35+eZI5wf1/RyA8do2CDeH 0l4BYqWvDsPEyjW1WXVjstuNOJtEgm1JOQwdKMNbBXKa245gFKmV1udAizGpI6DJ
mZRIThD5sWfQQYEGvqGb6N7xzQQL27lYP9K8jsHLK9xsTtnUh+1Pz+l179nxrtYM xiIAOSSYSLxuCY2PzCWsv2jx36nHW8LvELMRWy/YeaSQt4PKMSzqPucXq+2H/dAJ
=Oqyx =bJQp
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 057870A2C72CD82566A3EC983695F4FCBCAE4912 fp: 057870A2C72CD82566A3EC983695F4FCBCAE4912
- created_at: "2026-09-24T19:55:29Z" - created_at: "2026-10-08T12:21:49Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMAxjNhCKPP69fAQ//Wz08vnPeK/tq+a+1Y6YU/O6IJ7HP0X1a8rAAarRfdjb6 hQIMAxjNhCKPP69fAQ/+Lc3kfJqZabyEvtn0mT1uWm/TB9K7RcL0tfl7gZ7LVecD
noO0y0ezum64yx5V63rTBHbDU34BbCu2+iFBt+tZFvCKNgF+O8wdJMu9sshGjp2v 0CS4vzNFtv52YsKYVJNAnjOWOPcgiXDCfBFAYQyuWINFqhKmeJqnjxCj6jki77j4
2Gu/+bTcBdnD/gIYGR2zKKOoMCNskT6eZhxrjO5w7B3fV64AV7lLQxQY5bXLK5ot tZq3wx6MA7es3lzsyw2uSX1duX0AG96YOCxTKuaAufVzWzKuRaxaQSp6fwKYxkGK
mell741FmaZm9cWcI82mlC1QrHlrakTTreNpu5pktTpei66+O2SnVGmHjWrRKDfR dnhQNcAmcUqgn48zzHppFIotAO+BT8Q3Yl6jwPnU6ofZLruxjsE+KmakNebg4zJ5
LCxk/u2bKjaMXDJq0Y+hSk9hEQsg1ZCgfyDmDNfdiqNxuidi5lUJyDPKHX8WZ7bv 8oc+KfgDF/907mxe7200nKmVRcuQas83q22SJS60n0Mf6S0nGowijqvkWSvDiQCa
b9CXzqDB3zQekBzIQ/6/VXQxz2bGGcpd/1ksVolP06sNGeJdxxfmbKb041O/rx87 3gBYuffrv1D8yjMPqf0qAz+OGdTz+75FEZYOIvCCspb5mgnMnkXTTOSzWQI8LeWu
mYkYFPffU/gOrYXrXkhBL8JPPKlBNJHdU101hjGkjdNr6CqHqPU3x1p6TnISQZvP Gx+1gQpGHoD3BGJ2wM744A5J1uVyR/vFF1LGcSXrK2ScGLd4z2ipjjptZOSCjE2D
4jQH+IjXUa3RoTeiZwgtvilzNyKmIo9RsnIiFcf9BxeAfBXkx1Sw+hR8byBhW0UG Kua4WK5tf+oLPMKDSOz+i+UBwOA3vMTPHMoJs+jGqNGqwBjKcbcZneHt080ror3F
80B1Guug4Yq+VvKszNBDHRVhm5OkcDqZHy7dkZWb9BrioiRFK8sy7XtuK2EdbRO5 aQawOFtHAxOBXYr+pFsHfbMODXTB570dA3qViVneNUPn8XXYyOYwYkE7/L3XpBV0
prHeoS4BtZ5d6e+IABr7p8Nvf4/fkRumJGQEAwSqelFKaU5CUTu0bSBwYfH7udZZ b8qfW4ueZRLMl2/Iva7YofzzvBoWRsxCNxhejYKsXfBE/N51jVHwFvd/VFQTwNZo
EM1rQQJdVOeOEp+2hd9qeYSNX3McasYxYD4TqWgtu+94zMEdTN1vjrZCBbV0/ZzS FIeDB/VwwsTSGQCKGPvYkLM49R4jrkIYcfmPdkiitGB94VuyREncJZ3j0twWrl7S
XgGV3em4L0ayFRC0LYxA2xVimD+Vw0evQ8Rl9YkneIteBW+w0cNIOBAYVtSAZzuf XgHxOo1fzxBVy7UTRJCdjsxeoLBd1SFUAyzsRe0os5hO7gixCgacPIGvk47BHK1l
ipmLlczYM/XLKzT67bprGl2rkOAucsQJL2yrjqyxo8t/ImCJ5poC3UBkbVPKR1o= NtY/JjeNltphHX8FOS98wv9NASAB3SVylfpcU16+u5Viv9cTvU7Y9Lev6ukx+Pg=
=+cdX =zXaI
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: F38C9D4228FC6F674E322D9C3326D914EB9B8F55 fp: F38C9D4228FC6F674E322D9C3326D914EB9B8F55
- created_at: "2026-09-24T19:55:29Z" - created_at: "2026-10-08T12:21:49Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA46L6MuPqfJqAQ/+PSXVUk8+tOAvpSx+bzsIA6O6n2IOZ6dRnGO7dpydR08L hQIMA46L6MuPqfJqAQ//WYtKlggqzpAwBFD8mXalq69/I60hzt+ByURt3/+3jbz0
WpPIBQ4EcXEO+oXto6qrCOhiJfVc3DStAKUp+gSOE4OzE3Z+V1hRZL7PrxXWF+xU +rJd8K4iWvcoNLFYeVJ2gQ4WYUUdFEKRfrrUkytswNddfMEkGMBu1KdHyJuimAqI
bmB5/K5/52Mjn8tsdh4zLDJfEjw+n+pZabSrCaevcZg/SCnXZnUP5CsyaTlWpAWX xrtf63nXUSjqsjtsKplybBBEKeyHBN1JU1yT7jSU2RYpdoihTVvGIq6ceZbjB8+v
HZwDqtqpN8D2vNF2Rxv6ksksxcDzrMOVTvKimRKwmlHryFjrZ1fRJf0Fic0cDqg+ iLWWXGio2sdPtmXrofQ79muWvH6p1XIUHcKfMDA+L4y3AtOyyFZ149S8YaacIKq+
3JFi6yXx+bQwS8MkpDXzNRrL6mLx/HQEfvtEdqotWMhNiwO8n78CWvqaa/K5hdEe U8Iba677T5yxAbQ1z7+7ftWGu7RU93oL72oN9tx4Y7jlqbUCn2KvwRgZbjkdksgK
QiZANSyAeuHsoHyDkcbRitfHLiVfHNHua2GEuJkD5YQMvMwhXCLqfzvDjrATSicy 6nfM7clX8EgbFxLermRy52WrooWZwFGuZw0U++fKxfrE/r5b1+uIli3EgNIw867r
jyFGIA6kKf76j/JoFBRUXq+g38hNfaY9NnTP2uFBZvNXmC6bmFQAp6VZBi8vAnPZ FooXu/vHClnIuqzE2YO4IABb+jI1qCEyyrrFqIfZJhU/jiueQBMrFgJz9oHvGOTt
zjJB1HOrova/dSVLv2Wy9hI0vITkHwINQi33k+F9AGPYGLgPDJgr4cxkGC1kacyE niqyAZAGR4j1No8l58ofeUc54TqmJRTgGtOlOJBI8AZPTZdhlN6jwqJl3yPkuRQj
/wwY5qBesoNJbDImKKPyH1OYuQwLSh3osWsinAcj02WSlWxe8OwZetAlLdBSINdC qJrC/t5ZvJUDhuy52GTtZNu9Zyc3lLKPs7sIqm3E7ctq7W1sDudNHvEyQmttXtiN
6gdxcy1Z7pDyU2HNOebMMsONtbb9RKjsp+s80J/ivBC+MsMswmkiKRuVuXsSqBKT FvF6vLyphMTlJWpqmEYfxsG2mFr+ScBFNdjqhmlKy1sPJ5b46yxkD38DsOYuDdSX
eLut+lL2rVqs1tZOp6P6GN01LLVtmMGWagFptp/v1NaK7JlZoPBIdaCDde+hirLS +RVHIj9awqqv/DpwSWbfTK/Ao5ZthJrmcbH277in/DngbleU4MRMitsAu7ZQHHLS
XgE5K2Qjt1QmrUMJFCsTvBXcw7BvL9eaxFoSgipv/o8188leq0dR7yMSfIn9Bzhf XgEdwO28fTGFvt7jVugFbBUa2HNl/SMBrMJFpMXKPhUv23J97C70cH1XyTNw0p0p
SwIiMaKlw6T9H1ZXbukhAPioHo9QyW/yHIIQi/ALtHhrQcbrw4HHxhxkPCDRsvE= RIvbdopk87k8+xr7woi/mAZsBEE9wkNGzDoLgK6vzjA/7VbM9VRrPd9oDbZzkl4=
=hLHn =KbFY
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 8996B62CBD159DCADD3B6DC08BB33A8ABCF7BC4A fp: 8996B62CBD159DCADD3B6DC08BB33A8ABCF7BC4A
- created_at: "2026-09-24T19:55:29Z" - created_at: "2026-10-08T12:21:49Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DQrf1tCqiJxoSAQdAVfiZlPpOP0mdwHvOGku4Z34jRn12oEkqjdc2GmMyvWkw hF4DQrf1tCqiJxoSAQdA44QMLrMf7v9+JsZLXyE3Qv5sOc+DmVkU6LvboKyV2Wkw
EJUK2uWQAPtMwH+7aXdPfgfgWxG/KtKILV0r4naDG7T2MOJsz6aV2uX0PGWku4ps Mmm7BWQXJJV3Kc5rYLRUr7R7qg0QRVVekg2mh02TLqb6vcuCTgrKcWYq7ofez6w8
0l4Bcpwwt6S4bs5WXjp7Hp+ctwnPhFlIZSJINB99za/aTfQn4+QJIkGuNH7rprml 0l4B9Y5JV8sUH0uqnKq+TV4SyeGn6G6lSEGypPQ3YBmFSvMLuKzcf/SlR9bHYiHs
omjF/EmOLddJOjy3JfD04xxGcTXse+kzpDUwo1M8OaVUZQAOodM4CHs5SLNy/UPp 63g19HXDCAuO0bWP59hmwZL8DV0v55d6wqItA0KmlqreGQjM+11sEdDO5X90XsqL
=2tQQ =Xuqq
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: B71138A6A8964A3C3B8899857B4F70C356765BAB fp: B71138A6A8964A3C3B8899857B4F70C356765BAB
- created_at: "2026-09-24T19:55:29Z" - created_at: "2026-10-08T12:21:49Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DzAGzViGx4qcSAQdAvhCuEyTS1x2NpCUY8e5Ai6x46Ze3MVF1kQhEnb7jAnow hF4DzAGzViGx4qcSAQdA9Yi0ArgXI5MDjhB8mgruSNLl7V78N2QWolaQB0xhT04w
7Gxgei2A6gNOF/qFAWRcd2rYJWwJgAAabqxIR9oP4jP15o/3k6ybJzHNu02AGuIr OLdslCiJJdsdmVJ1ctiD6uURznfn1fCFUL54mzciOF8C9/nHKrJEZt0WiPFXdEBx
0lgBKQMurnFxnQxQ+ArAhuq8X1Bsr4P8YRkTXvuAMWXNo0Pntdb+Lo/b9/72W8dX 0lgB5x1GK6zEo/HxyZ0AquRn+kZ0F0W7tYsMLziiDrGMqmc6gIjzA89JyP0fNTZQ
NoJhpQozsqszCXMlN/zgiEgpW6GDFQbsZU6wCw/FAXK86E5ER65ldm93 QNcKfhb97qPlka4XiLunRJyn7yE77a1m7WEW737HWndbYtcIRt5oRCFK
=BAcl =vrvO
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: D2E9C0807BF681F5E164DAFC5EE1B61CD90954CD fp: D2E9C0807BF681F5E164DAFC5EE1B61CD90954CD
- created_at: "2026-09-24T19:55:29Z" - created_at: "2026-10-08T12:21:49Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hQIMA2pVdGTIrZI+ARAA2Lc60Bg71oWIpRdVRDkAxoPKQIJJt92TJT2EAOfjqFQQ hQIMA2pVdGTIrZI+AQ//fH+BFkgjaT20AyGJHUsVfv9BSRi1T7+8ISBiv1yGQ+bA
fZ3xJ9HkA2lLDd7187Ua66RYs79e50nD424TQncyeF5ixxhGuYWRg6fERdk7DYle TqiShHPcJsq/M++iN+CTRiLpLbZYfSN71mRgYwVsy/2ykGZIzLzEelYAtyfDk17M
C0W9UPNSlra8vbpjIn2D2xxdgX08HKm0hk1nrrVBnGe+iyiKnoxfqn/L02QYoZ33 GfMwbPSaux0rW/FnwYmYqRgz+4O/FT9N1HQ7uNErAYYoTT7McN1olQxT/qeCcqnD
eK5RIWasOBJg1IWtumVoRtxPQ32I8mZCjfMx0yesR/IzIUqXYEAuw6dYlL94/QDH pDsodxZxQBGAW8gBTAFodubhj0jNSpaKgy7FUPF5OGeYyF76FjSe7BdKRksTgCPG
Qh/d9hVIL2RZsw9fdIu3tqlOezhA8mBOQa+CpSZwys58ZESiAPQkkUfJm6/RNzoz LXMcJ1P//sMXuTvs3iLQa7mYtp6n+kHU6dIFRL2iM/skxqvfXjXe13FZ6zFJaI4e
wF/AxQ+bZJWa30Uopm44JgSLJF8uQ0NYl2HCr94IGsAR+vbM1wdeh1xxyh4bZ/Gr QU0FVlm6Tnx0DrBl+gk6/y6+ajVOfY3T+Rj3gBGUoAPuPCNVCcQrg/pSTTV53TyN
fDFZz9Nm2X4RRvfdC74PBQlgDBU9M+cQfpBgyr8coPkZhQW8a3gHbVDW+Abcm61C FpVGwYf0f9kCVjqqviW/f0Bgy2KwqIwSKiTmWP9iFM3C7oEFonXWbtR97DG0OnuF
Qdj9G3ip5OJh4wW+t9qfaXq0RAwYeud17cC5jgBBpGxlBQMG8veh51tAavqVbSCz dyw3QeyOnIVXsgpnwouc4FtP7fb+sMZLKaSloo+XzzJSxjP/CWshOCnyZP2PWX7X
ASa1IMYlubIhlhAmgj6e444NhbpVBFXhpgRWAdSKQutSUovJHfUNVRhyKJ1YyWYB pqNXrAnJnZKu4rO79osj4VX8tVXf7vPjjKufzmpuXiErwuS6CNARnLS6PS717hse
4hH4DU/JPWB89+qcFbxSeKAic9GnlqeZWZhQG0nm7gs6GidqB+Dh5vGYQaHXLYw0 wEkz4XLcRd3jVfBlYgkMgzyYiqlSMzL7hHYSyvE1nBP3xPCfKJ+LZ3dnJALT4Bmr
zaDDxlsJ6iD43T/lNWXMuHaDEtilXoD7K6SQH4jK6D9CpOjcqxYjS769CxIgEnXS CovNtl4ZcHLHpSG0Uf1pXLEAJsNXMpfdSL6oFw0gS7e9rPoL8tAF1QROFRJ8lEzU
XgFG/n2Oige+Lhs71B/mr0vXO9eTj8bTCL3NFcLn6hZfI1PEim22mliCX6aq/gG8 aAEJAhB1Cio/Bv4BJ74/4GOUJZFmA9oPAoXsJxlLRjNMdkSZEuHI1cQJsr9+TIuu
ybF0q1+RXefUyVkm0AypjnAjxT4NcAyofVCSE/p0/ibKo4MAM0ieHFXFSM31CN4= FOdzTax3Uo9tbCQbLgIh4SAIIl2s3HXzmBcpUg7j+TooYTJRbpeL5FlePysXyxSJ
=8fSf TCSr2lu4uSj0
=VINh
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 878FEA3CB6A6F6E7CD80ECBE28506E3585F9F533 fp: 878FEA3CB6A6F6E7CD80ECBE28506E3585F9F533
- created_at: "2026-09-24T19:55:29Z" - created_at: "2026-10-08T12:21:49Z"
enc: |- enc: |-
-----BEGIN PGP MESSAGE----- -----BEGIN PGP MESSAGE-----
hF4DKKbvh61jX5USAQdAtmcNNFbgzNqbJNDvVBU9/0LvPS/ZQPzUwdLMOKBYRB0w hF4DKKbvh61jX5USAQdAi0Rv5GPtHE2h+nFFCxBAgIMtt5DmsvAHEd+ZK8BO7SUw
KOj6IwFIjfpWPTp0Hl9hIUqjb+qp+kW/DhVBazi42ewI00ESTkEy55UXXx74LUmF vKs6PtoSCJKsMcr94ZAMoIeJ/QhrmCEm5yK2Q9zB19wnCCJ4ec2KNISRGbFFEKsS
0l4BPW/ETSjjC6QWSrAqPN0k+uGY1tp/63lB28CK/4UKI4MykeATONRU8tvvYTS6 1GgBCQIQZe+/ScZmD8ShMUYQftcGfi89ylZrOq2ejDpPW/05XFcatLu3yvKa1DVG
Z0x6Tba8zskvL+KzNhdrEljbXSfR8vVkGtd5Y1Do1lt4JjEMH25L+8pNA5YYC54/ myj1Svg4cW831BEUzeLLMwDVAD8Pg83SyFlzqwXxqReCEkylmHDBEkuXlG7hLriX
=DXqm K5gy3LzBcHqjng==
=kqyb
-----END PGP MESSAGE----- -----END PGP MESSAGE-----
fp: 41FFAF3D519CF5C039FBD8414BCC213729AF0E49 fp: 41FFAF3D519CF5C039FBD8414BCC213729AF0E49
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted

View file

@ -1,7 +1,4 @@
ansible_pull__age_private_key: ENC[AES256_GCM,data:8PCkZx76R5aWPITn5MCZCMckXvaLfVvnDgO70XmF/eeH5xLVOVx+EC3DZjmHxEoW7Kn4LAJTR4mWl/xP+p++elRvTMcHltV+vBQ=,iv:jKq07NLM84MSGU4CCyUS9ODmwiUMhlDONkKJ7P9P2DM=,tag:95yBZlwYdSNeX2O4t/h9kw==,type:str] ansible_pull__age_private_key: ENC[AES256_GCM,data:8PCkZx76R5aWPITn5MCZCMckXvaLfVvnDgO70XmF/eeH5xLVOVx+EC3DZjmHxEoW7Kn4LAJTR4mWl/xP+p++elRvTMcHltV+vBQ=,iv:jKq07NLM84MSGU4CCyUS9ODmwiUMhlDONkKJ7P9P2DM=,tag:95yBZlwYdSNeX2O4t/h9kw==,type:str]
jitsi__jicofo_auth_password: ENC[AES256_GCM,data:a7y36RJUR4OBtVNzgmqlGEsg1hNRGgsuwG2YFJrDlMI=,iv:mnGlKOXtNltNe3wY34BnVCJ9CtLQ7aksr4xXbrTOnJg=,tag:j1N7MUTJG8K0JW/a6YESFg==,type:str]
jitsi__jvb_auth_password: ENC[AES256_GCM,data:xUFiIXAzY4pEpwgL/5LPBlhkx73RX6VFT3QJlG5QbFo=,iv:/XqENztrrpj1h3lBhEtJJo78lCrxrMWxRszNjSwx+KQ=,tag:+LRYmv9Tvt0muR47QTd6HA==,type:str]
jitsi__turn_secret: ENC[AES256_GCM,data:UPev9ND9Mf2gGK28huQuuxRyUZvPPCmFL9rU1f0zndSPPBMspSsnlgtMy0+VY/CsGEIEcWsy3eYDPcAW/EKFtA==,iv:ew0MKP5zdQvqfla2y7xkcXLm3qSMlf5sucn8Qu3G3Zs=,tag:dqe239LD+wPVqLQFF+nz2A==,type:str]
sops: sops:
age: age:
- enc: | - enc: |
@ -33,8 +30,8 @@ sops:
QzBBdJ6TiDwJ1rwwM211smfIbcYhWX6C/EfitI5XoIW8aS4ln1g1Ww== QzBBdJ6TiDwJ1rwwM211smfIbcYhWX6C/EfitI5XoIW8aS4ln1g1Ww==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
recipient: age187zdk64205lx7r83a4m26pfa8hq6khc8sf83k266jasngeq08v3sfqswfg recipient: age187zdk64205lx7r83a4m26pfa8hq6khc8sf83k266jasngeq08v3sfqswfg
lastmodified: "2026-10-08T07:56:43Z" lastmodified: "2026-07-29T20:26:44Z"
mac: ENC[AES256_GCM,data:CgD19xHN5nEg9TMQq/c4Xpv1LH0LfcXrkfBMUcbJiIn4FsSzQetLYxueeDXUVOujOb9ZSEin1nR+OZwa/nuwN9mTg37c0XZ6HV0UvNNEIrN/o4doUCQa2jLmbX8etxeNhF7oWJ84OgQIhPLvLwp3Z0A/+kPKbmtz3znQNgKoHQY=,iv:6Dt7z55az2SJovJ7ozG35Q99a08kOrKl/uQCUVcbq8c=,tag:M6p0ZJzoFnWgspnGknq7SQ==,type:str] mac: ENC[AES256_GCM,data:dHiB768SBppBrjNoSpgDvriCgrSNzIkpSYzm9REx4otbnvNjHYPhP9OdsZ6zTcoFoX+41/zE13r4EoAz4F++jdJidv1+7DMFvVUKMuFNzp2VjDfB1ZNzzyM+px7l83L5eNhgNPp26mweOVMEz92NgB916KMY+5e3uUeSR+iIdho=,iv:7k8rugBXULjPSOZukQiufNn9Vs5uWVhcvFKIhD1o7so=,tag:IE+2uhzGS2xJJgFHuc94CA==,type:str]
pgp: pgp:
- created_at: "2026-09-24T19:54:13Z" - created_at: "2026-09-24T19:54:13Z"
enc: |- enc: |-

View file

@ -1,33 +0,0 @@
nftables__config: "{{ lookup('ansible.builtin.file', 'resources/chaosknoten/jitsi/nftables/nftables.conf') }}"
# renovate: datasource=github-releases depName=jitsi/docker-jitsi-meet versioning=regex:^stable-(?<major>\d+)$
jitsi__version: stable-11248
jitsi__domain: jitsi.hamburg.ccc.de
jitsi__letsencrypt_email: le-admin@hamburg.ccc.de
jitsi__jvb_advertise_ips:
- 212.12.51.139
- 2a00:14b0:f000:23:51:139:0:1
jitsi__whiteboard: true
jitsi__turn: true
jitsi__prometheus_exporter: true
# jitsi__jicofo_auth_password, jitsi__jvb_auth_password and jitsi__turn_secret are defined in jitsi.sops.yaml.
# Branding
jitsi__env:
DYNAMIC_BRANDING_URL: https://jitsi.hamburg.ccc.de/static/ccchh-branding.json
jitsi__custom_interface_config_js: |
// Replace the footer with app store links with our own in welcomePageAdditionalContent.html.
interfaceConfig.DISPLAY_WELCOME_FOOTER = false;
interfaceConfig.DISPLAY_WELCOME_PAGE_CONTENT = true;
interfaceConfig.JITSI_WATERMARK_LINK = 'https://hamburg.ccc.de/';
jitsi__web_files:
- path: images/watermark.svg
content: "{{ lookup('ansible.builtin.file', 'resources/chaosknoten/jitsi/web/ccchh-logo.svg') }}"
- path: images/favicon.svg
content: "{{ lookup('ansible.builtin.file', 'resources/chaosknoten/jitsi/web/round-logo.svg') }}"
- path: images/ccchh-background.svg
content: "{{ lookup('ansible.builtin.file', 'resources/chaosknoten/jitsi/web/background.svg') }}"
- path: static/ccchh-branding.json
content: "{{ lookup('ansible.builtin.file', 'resources/chaosknoten/jitsi/web/branding.json') }}"
- path: static/welcomePageAdditionalContent.html
content: "{{ lookup('ansible.builtin.file', 'resources/chaosknoten/jitsi/web/welcomePageAdditionalContent.html') }}"

View file

@ -0,0 +1,190 @@
ansible_pull__age_private_key: ENC[AES256_GCM,data:/+Ub9S/CRrSAeWX9cXzIMHjmDXwAh7hPSzXDnSh8iIZMJg+zW9c7mHqJV5B1AtDp9EQ+pSKpC1TdWuM0qGUABIi+cgZolWISXiI=,iv:lfHLyKsIgNhSm1pVERHT+2uMsP8PP8A49C9OAGsYkL0=,tag:AHRK8KuJJCZst+MsS3wXsw==,type:str]
sops:
age:
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHNzaC1lZDI1NTE5IHFyYkk3dyBkU3pq
d2pwbWxYdVFPemtPODFrRVpVZldmWC9UNFZWajZSaGxCY3pVVEdvCi9USGZXbk93
Y0J1dlN1eUdnRWY1TzRadndlTElmZGp5ZzZhUG1wa0Zsbm8KLS0tIGhybHFzWlBv
bnZDWk5HVisrYjJPZkN6ZGFua1VPVEZCUVBlYWdCQkJ3OGMK1ZqF+UtpicLevUOe
LFZwLqDQwXV1lKm8n1+DAnLkObDc0Fi5tcPSouEiANCnE1QjJzOW6gSWv02qhVDR
EcIyEg==
-----END AGE ENCRYPTED FILE-----
recipient: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIBQgnQAq6FUSDK8bxtYPjx3oRCAKG+xy9J3Gas2ztJk
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHBpdi1wMjU2IFZoZXNPdyBBbmw3SGt4
dEdLODhDQmZoV0VBWXVaNGJDSWNpVjF6ZXlLZW9oSzVKaEowUwphOWdtakw1TytC
R3M3S0l5eThRaGYzUlZTeFRYbHI0eGpwSFhuTVc4WTZnCi0tLSBnUGhXeWRUQi9Z
WXc3QWpkZU1zYW9OMnowZXFHMzg5dkZZS01XRTZLbUp3Cs0nUaGOZMEI06uupspL
6qkjvBLKjClmf5ve5P4v10NgOol1tlS1zSHfr8L8RKYMSlTFKaEKRoqVTO58OOsy
1dY=
-----END AGE ENCRYPTED FILE-----
recipient: age1yubikey1qv7jkffslarpma2fxjm9gnq43xfvwdws0m6y3u58h033edwdyg0uzt8jl5n
- enc: |
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5bmxKVk50T204VDVSQzZX
QjNGcmdCVmMxbTRtU2tXa0tsQkNrWjdtYWdvCk92VFE3ZUhnZEthMFYvMVl5dHlu
R3FHZ0ZYT3FMeEdsOG5ReEIxVUpLM3cKLS0tIGRpbXQ5ZHBGdzd1aVM4dzRWUEN1
Uy9kV3hScFR2d0RvS0V6aHc4bHJVbncKznrIswWDf4hULU1YM0ePpoTaU8wE3l42
qIJBztm2souvOZDMZSmbhKRptvwVcjIUrZ09uNqAWe+j22gYNlQMtQ==
-----END AGE ENCRYPTED FILE-----
recipient: age1q7kz3pnfq6cvtn56rlfgs52efcvtcmaq4xny0va3x5wxj4vpgccsenwxk6
lastmodified: "2026-10-08T12:20:28Z"
mac: ENC[AES256_GCM,data:3EAY9S9ZYjjXmqpV0DOZvc1ANHi4P2EhLM+WURsZPE0r1P8YDR0bAxbqilrCbm4U6WznACNfcoyn2esFy63t4va/TyVnLWfukqCUF0+xjd2ICMYTMsT2vzQDFDsBE1RDVJrWuCPC+hsZzBO0cRHrUBRgbWFuDa3eZHXxJl8YAWU=,iv:qNmzrSxrPozOSlh6re/czhUwnfgvAZfn9JQNADSqf3I=,tag:hQAb/WM1ytg3Avomt22P5A==,type:str]
pgp:
- created_at: "2026-10-08T12:18:55Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMAxK/JaB2/SdtARAAjTbq4EiPuVnzvKLv4gq9zxoILQFrwx1/SD/oLg7H3Sop
Rg/0Q9MIIREUdxtgrMyurHNCzKkSKnczolPc09qPrRJJ4NwPM0vIcvgAzuazL7GG
UXwszt8aGum516NvABOb7Z1VYsobpHoj23b9kUvC74w2jmXlgnfpzxaHyv7026kP
fRclNkyP9oUpFTPz7Z3VqxeWn6ikEVggloRf/jw29rFtefII529oeIt7YbF+aFYi
CJBfLC5x58KQdVaWC5R/CNMaSNVt7KKnUm6MSkx0du9PpRMqjcZpB26BWb4REGMv
AWW5Lr99vstRBdbGBVHESwu/pkCTtLEA2wBZ7qDWCu7bkrL1p4q7IvQUXqSp4iWG
yagjS2X1ePdXOGgr9bkfcHMoXZw/grc8LFyL79PbuINrnbBW5/XeuaZmxUj73LoA
zGny0He3iMcOzOSrj9FLHODwYblEDMljOP8WEIE+bKhlJwfIRhuTZAzeFWbbV3FB
BH5Lyx3zzGazNxhebiDIuk3Pf3GyRdlWRlXZDtcCyI4wL1tBuFRr83p9IribeFx9
XT0q5+WPbgoLfH7FMdYrT0/rXCZlfRnhTO/lIcph7G10uIRvQxyrKBvTdKKPl/UT
+hWOH4tFTz4sNHiZmGQby7DdE5AYveCHKEgvMIbWa9Xf4O4N731YGjnF28mBE2zU
aAEJAhCvWojK90MZ533d5BPheM/OALJSzV4Rb2dvUF9Pxi0/H4Ur+Aelf6ROPgqg
nXulA7W5CSk+PI5cF1zxBU0SFKvM3Sxtd2HR9rgkfa6z1FVnkkg9nKYoBiPf6i+S
D+y3odZo6qpE
=mezz
-----END PGP MESSAGE-----
fp: EF643F59E008414882232C78FFA8331EEB7D6B70
- created_at: "2026-10-08T12:18:55Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQEMA1QflAioE8i3AQgAtTqiXTWMOA5ctm97GM0o1lKPVgvLpmp78pLpE8mQOXzb
WKLInfAdEnBLcWThcEvVuBIvkJI14ZV3FBhLxuwO5mnOv5GbG0n0o6GyAtVOflUi
NycoWMZRzwaddXlPuLc222z+ADbv+7LyKb2gIIkmxj3+oD5BSEIIjjD0yNOMtu/y
jEi8xmuzXhIfHI05jnLMB1aWN1fyBlhTVyS7K7rqJ/8fttwZm31mx7fctq3Auy5n
aODdH7D70CzVulgpjG0v6S1HEO5tXCpPLCWLrKLnFpf1lXkmfJoGCHUPHH/6bag+
p2U3GMW1Hs2/gW7S15KCENMJCiIj5KKuXRWsiQ5xHdJeARvq7GCMXkd4wGwMBSpH
vx44gnqmK5oC/ThJycpZBvw/zWFCZ3SLhKzMXbAa7yHk9lTcLOlxY3QDPfAFmvvF
7AtkynXrwhAzi4K7AMQFl5bOTnIr2AUlNliLQtnzdg==
=GhBB
-----END PGP MESSAGE-----
fp: 21C9579E6503CA815A68ABD8541F9408A813C8B7
- created_at: "2026-10-08T12:18:55Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DsZXvxFXTXoQSAQdAZHaU5wfL+FMNLhmZF3cBSgfo+2Y2HCpiGPpxSS4JPWcw
mq0T6O82EvGF2K1bzGeOOn/yNXQJxHGw27qwDcr0POsKR6FtkuSimlQL/p9TP43I
0l4BV+yTpOOBwG4EXxX0ynx6p0jT//W23AJ+wFpaTjbdYv52AYhoYNaCxBCjUo9b
2h37HLQHm7sgUt+sQTRbUB2PjJMmFrYelKXEu3h0LNsIvEGxDErzjgU5yVsYvz/W
=pk+i
-----END PGP MESSAGE-----
fp: 9633412309CCB83BFA39BA5F2FEF746201D7FCFE
- created_at: "2026-10-08T12:18:55Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DerEtaFuTeewSAQdAF0xXSYZ1taiaFPSvCVwt2Jy+jl2wd25jGsUa4RC/cmcw
7hjeKkXHoM6kjzaTjsXjz9UWol3c5vkX/6fbSrXEUJijCA7IDYdc19HDIOO62Wk3
0l4BYTPcsD3+VrGifY/2lWoEU4lhS659VSQJEThgoRyBRtWuqx9Awhb5IhpR9lP3
h94Fkt5J4VPqBHKKk/tmA0e5FIodiU+U03kvOHH5cVL1SlQBF6GyyJLV1qhl8dYq
=rnX7
-----END PGP MESSAGE-----
fp: 057870A2C72CD82566A3EC983695F4FCBCAE4912
- created_at: "2026-10-08T12:18:55Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMAxjNhCKPP69fAQ/+PDBjhWGJseOyYlKQI6NX8qbQa7+73sNVlw3hZkiYGKqY
081OM7MHg+ku3L+uVbYmYkKDFEFrCkcnlMJFiDa20igAf2S2+XpQ4DL1P19rsgPu
g3lmFxqmisB8TE1cT4Nv4myYpWfuYhecliUVqdx+uLX31mkqmG9c4aWIUf09bRWR
nFUihxHtl9ha7qvdyzpAf2qLu9rGUnAfvxWo2mr8IMYyiMMZu5RIS4AEbSgcDmci
zwS/rJvwZ3Lzykxgc81qDXk+Ajg0hW1QwIF6YtIqyg5SPj9TZyy3gHVpLO5zWbm3
XywYH3Ht5qjma9lOGDnWotaBazbCgA9wWmnghwPETwB/9XYtrUTuEu3YWGvpJ5bw
KY+Fak5QzSQD5VtQec1hGoRU7O6rclRGhe/2mF3lssmCwYolkYqZYOyxrhWrtnb9
HYx5ODihDBI5p6mgVhVsb5l7hJdM1qSCRmqk//CNoMUEBftqjKGKf6/c6OPRikr4
3KPPeyqBM85WNT0WbEmcKsPyDqd9UL26RHg6EDsP3pzGEZxgpgvHLWRw5fYfQQJY
rIb/+hbkl51CcJICUh0qiKST/5G78InwOVsAG88X3tK6QQYx3rl6TjD07JL/9Fow
EiSpQRyJaZM/GpbFdEJJN0ic/xnbSdS0SU7G6iuodn/XJQGkbTyfwa3ZQ7KFNATS
XgE74wKyqFmcG0kD6bIR/nxVnVKJBAqzvwIZrFbNdtK+TiaSXfLFKO89MP7fwA3f
w+TwIsvbx70sa/Icxjhzx5WfLUzTFuJiD/N41osLnfRPNLI2gtMw+Sk0b7Tv99w=
=gkl/
-----END PGP MESSAGE-----
fp: F38C9D4228FC6F674E322D9C3326D914EB9B8F55
- created_at: "2026-10-08T12:18:55Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA46L6MuPqfJqARAAqw9fVa37NNtVI47ezmuNPHENvQMT5a2Ci3JXAHe4PqtU
J32K5G6kmKSQ0yiuEvJRebSgM5AmCX8yn3Wq0E1titURVbsyazVYWvxoFhm0uvyP
+0cD/HthRUUvnMGOVcFT4rtH83nrc50xvjAWvIRD7ey7ZnwYybJBSKmnIuEtWVlg
JRY3pCHmacEZER4P4zhPm4I2QhcxgNFI4EZCo66TPaeSe7q1Ai9ul+wCT74+z7pk
FXSON8SHYWZCTEXfOrv6U029xuEQRzu4ScvVsAHVsTtZ75b+7CuEwRv9qhpwsLHd
5vwrskhgD90TJ4JDdb3jeeTaqZoqmO02jhfXOdVR1lrQfYnK6qV9Y7gQxkdgw7Jx
Tus56EtLQvp/Z8Uw183oawe6WGnltSTHmShuvUMmwHgtUKWUw0LCHZYRKWmp5LCr
BBDZ5a5dnROVOJQjQq9vZMyg/HDT/OSE5YnfGuwBxkKcR11HKqwwFyu/MUasaVr4
B02gq8ahcEuXt9EeNDyb+pVCo1c7ws2e0X2zpzAVp49R8LQemicLWJlzEZ0/1D9W
WnYS15dPVjBUutBbWw4PeDaRkMsz/QKygWT5eUGdl1NaWtLfQ4GKIJW1M8qqphKX
e2H1aF5m7qi0ITH3Rol54muHRdkSppfofp04UJl7UI5nxnREHyq2Y9w35BEuBdDS
XgGpZd1cam7KeQFJs45KHKVwceVOpzh8isCd9BrDTPZC4yldaZ9mp9m2c9B9zTxL
/C3DtJ1Gn0dzi/+ILMmY/3cAdS1a+4pmeQIHSRTL0pIHIpzG0fiGQw/Ai4s+qI4=
=kFby
-----END PGP MESSAGE-----
fp: 8996B62CBD159DCADD3B6DC08BB33A8ABCF7BC4A
- created_at: "2026-10-08T12:18:55Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DQrf1tCqiJxoSAQdAJH8Ygdx14onZM1SnDCTN1O6x9OmgRgzTEbI6qPNUclEw
HgLaTV80+rFn/ujuPfPyAiTM3XofVd1d8x+jHbjg/craf5cqz0plOfgsdFetKn6+
0l4BW9eo3BLtz5eL0UA+loM74k5tcntEYV9haS4KV+q0HQz39MkBgJoilBfxu/qx
gMfvWmyEYyMv+IgYlPbxkkudgpYRvA7hStpjpDOPtQmJoAZ3/MSUZulJZQVoauyk
=SWSm
-----END PGP MESSAGE-----
fp: B71138A6A8964A3C3B8899857B4F70C356765BAB
- created_at: "2026-10-08T12:18:55Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DzAGzViGx4qcSAQdA8TY0wRPRbBddfSbKOg3IC5WrQ3bWrQhnAolz58UO80Iw
yJy4w50zMmD0cVo2l6lXdH0BFsEdIRJSYGdCln2hFIT3Sc45I9N6XtOI1HTgZQVb
0lgBafSzV6bjtbwa38Us6Rj8IeAw2gCclgLvoDgTYzw6HJ/BsnTfXCUQ9I/rVWuO
b6Be+eiYZZ49c2TsgSSJWFlZftM1dJXvKMK9TnbRxqES7Qbv6vklA9yD
=dpIh
-----END PGP MESSAGE-----
fp: D2E9C0807BF681F5E164DAFC5EE1B61CD90954CD
- created_at: "2026-10-08T12:18:55Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hQIMA2pVdGTIrZI+AQ/9HrbbnAxvHFakxFXG6Ol7u6N4m872b6bCTo7gIF5z25yB
gstxCI1N8UL2kbbnHRb9WpJzJvkuwgnEnlB7zgf60g3bxD/L4uqSVVQ6M4rOUCp+
1TE4laYekMc1rHVEE4OLLC0yLmgTlD5M2not7aMZBigHMYkeqQFIlGrG2eIqIaPc
CYTnofD/AF8CkG7N3mCIv6Ssd/3DIugeRVnrJnOjQV3IzxLuetgYh328rb5mFoXX
gSOZSr++q6/1/8xUG51k/cp02hiZ3zWhRcZCmxLRJyiJem4StTgIZZCyWnQjJH14
i3+S1k6QXGMQ6kpRvpaChLLHbgHI0lXPQ5xoTA3WTT51S+tOiyiRdxUJ8qGq24vc
cNURS6JkRqaLSUnihSF6/ARargknRgVeKAZk9YEnanx5Me4ItTf3gTip7ublwIxE
E+Xvk6S7E7iYpL+gw4Iilu65IW+vyDNorY+RmsHEpPMeuv48USvKF/zj7TyXvXcS
DZvTNxryKpWoeA4LzGqJ8VcEIZU00AS0UectnfwNCBBbC9OpP56lXphjyjbFDP/P
e3SSy1+oTs1/cUcm1HXusZt6MdlA+du0I78ALw+krioFK1TpPkqyQ6ZQoAla1+Hp
4kyK9tQN9idnPlmKFJieuY6ZOLky9+MktSDDoL3/cqAHqje25LDpocq0EkBUiMHU
aAEJAhD+JlpnuW7EM9qYKAIN5lmiP7K0QbYyhfOYkswxmroGjtX+my5SQqxxr1MG
hJnzY7sYCateW5NkRm+PIAJOgZlCCHLPc5Y/lTmQwMioTe6o5z4BnQKSkpIONCQv
S+jtdlST1LjD
=hfRq
-----END PGP MESSAGE-----
fp: 878FEA3CB6A6F6E7CD80ECBE28506E3585F9F533
- created_at: "2026-10-08T12:18:55Z"
enc: |-
-----BEGIN PGP MESSAGE-----
hF4DKKbvh61jX5USAQdAuJWl9BzoG4EgrKSWnaV8Q6syp6UK2cAd9LSZdcYl9k0w
FIXutszrxUFVq7+26KMogiSRn6D+MNF7+ECDV6HUMqSQKFi78xzvTsE2nSIcdhV+
1GgBCQIQivn/rlA7N4tsBFG0EYqTczeco9ujSh7s94l9Tgbd6vi5yTjY+M6dGQkk
s1C9k22rcMjeoeumUNZeY8gqh+IoEZyUDGk+faUf4TrXFc9Fmgxc6ME60U0t5Tnr
Aa5A2xoopylZeQ==
=DeqF
-----END PGP MESSAGE-----
fp: 41FFAF3D519CF5C039FBD8414BCC213729AF0E49
unencrypted_suffix: _unencrypted
version: 3.13.3

View file

@ -0,0 +1 @@
# tbd

View file

@ -104,6 +104,10 @@ all:
ansible_host: forgejo-runner-external.hosts.hamburg.ccc.de ansible_host: forgejo-runner-external.hosts.hamburg.ccc.de
ansible_user: chaos ansible_user: chaos
ansible_ssh_common_args: -J ssh://chaos@router.hamburg.ccc.de ansible_ssh_common_args: -J ssh://chaos@router.hamburg.ccc.de
matrix-sync:
ansible_host: matrix-sync.hosts.hamburg.ccc.de
ansible_user: chaos
ansible_ssh_common_args: -J ssh://chaos@router.hamburg.ccc.de
hypervisors: hypervisors:
hosts: hosts:
chaosknoten: chaosknoten:
@ -118,6 +122,7 @@ base_config_hosts:
jitsi: jitsi:
keycloak: keycloak:
lists: lists:
matrix-sync:
mumble: mumble:
netbox: netbox:
onlyoffice: onlyoffice:
@ -141,7 +146,6 @@ systemd_networkd_hosts:
router: router:
nftables_hosts: nftables_hosts:
hosts: hosts:
jitsi:
router: router:
docker_compose_hosts: docker_compose_hosts:
hosts: hosts:
@ -259,9 +263,6 @@ wiki_hosts:
netbox_hosts: netbox_hosts:
hosts: hosts:
netbox: netbox:
jitsi_hosts:
hosts:
jitsi:
proxmox_vm_template_hosts: proxmox_vm_template_hosts:
hosts: hosts:
chaosknoten: chaosknoten:

View file

@ -110,13 +110,6 @@
tags: tags:
- docker_compose - docker_compose
- name: Ensure Jitsi deployment on jitsi_hosts
hosts: jitsi_hosts
roles:
- jitsi
tags:
- jitsi
- name: Ensure NGINX deployment on nginx_hosts - name: Ensure NGINX deployment on nginx_hosts
hosts: nginx_hosts:!public_reverse_proxy_hosts hosts: nginx_hosts:!public_reverse_proxy_hosts
roles: roles:

View file

@ -139,6 +139,7 @@ waybackproxy A 10.89.212.33
alnair A 10.89.210.23 alnair A 10.89.210.23
TXT "Sun SparcStation 4 Retro" TXT "Sun SparcStation 4 Retro"
ptouch-print-server A 10.89.208.14
; ;
; Public Club Services ; Public Club Services
; ;

View file

@ -512,6 +512,7 @@ public-web-static.hosts IN AAAA 2a00:14b0:42:102::17
forgejo-actions-runner.hosts IN AAAA 2a00:14b0:42:102::18 forgejo-actions-runner.hosts IN AAAA 2a00:14b0:42:102::18
forgejo-runner.hosts IN AAAA 2a00:14b0:42:102::19 forgejo-runner.hosts IN AAAA 2a00:14b0:42:102::19
forgejo-runner-external.hosts IN AAAA 2a00:14b0:42:102::1a forgejo-runner-external.hosts IN AAAA 2a00:14b0:42:102::1a
matrix-sync.hosts IN AAAA 2a00:14b0:42:102::1b
; acme-challenges ; acme-challenges
_acme-challenge.sunders CNAME a5ee8a99-3cdf-4212-972e-c0b6fda1242f.auth.acmedns _acme-challenge.sunders CNAME a5ee8a99-3cdf-4212-972e-c0b6fda1242f.auth.acmedns

View file

@ -1,65 +0,0 @@
#!/usr/sbin/nft -f
# Docker manages its own tables (via iptables-nft), so don't use "flush ruleset" here,
# but only replace our own table. This also means that a reload is fine, but stopping
# or restarting nftables.service (which flushes the whole ruleset) requires restarting
# Docker afterwards.
# Traffic to ports published by Docker containers (web, JVB, exporter) gets DNATed in
# prerouting and therefore passes the forward hook instead of the input hook.
## Variables
define if_wan = "ens18"
# Prometheus on grafana (IPv4 via the NAT of router)
define prometheus_v4 = { 212.12.48.123 }
define prometheus_v6 = { 2a00:14b0:42:102::e }
## Rules
table inet host_filter
delete table inet host_filter
table inet host_filter {
# Runs before Docker's DNAT, so this also applies to ports published by containers.
chain prerouting {
type filter hook prerouting priority dstnat - 10; policy accept;
iifname $if_wan tcp dport 9888 ip saddr $prometheus_v4 accept comment "jitsi exporter (container)"
iifname $if_wan tcp dport 9888 ip6 saddr $prometheus_v6 accept comment "jitsi exporter (container)"
iifname $if_wan tcp dport 9888 drop
}
chain input {
type filter hook input priority filter; policy drop;
iifname "lo" accept
ct state invalid drop
ct state established,related accept
# ICMPv6 is needed for neighbour discovery etc.
meta l4proto ipv6-icmp accept
meta l4proto icmp accept
# Docker networks
iifname { "docker0", "br-*" } accept
tcp dport 22 accept comment "ssh"
# Ports published by containers normally get DNATed and never reach the input
# hook, but they do when handled by docker-proxy (e.g. for IPv6 without IPv6
# enabled on the Docker network).
tcp dport { 80, 443 } accept comment "jitsi web (container)"
udp dport 10000 accept comment "jitsi jvb (container)"
# coturn (runs in the host network namespace)
udp dport 3478 accept comment "turn"
tcp dport 3478 accept comment "turn"
tcp dport 5349 accept comment "turns"
udp dport 5349 accept comment "turns (dtls)"
udp dport 49152-65535 accept comment "turn relay ports"
tcp dport { 9100, 9888 } ip saddr $prometheus_v4 accept comment "node exporter, jitsi exporter (container)"
tcp dport { 9100, 9888 } ip6 saddr $prometheus_v6 accept comment "node exporter, jitsi exporter (container)"
}
}

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.8 KiB

View file

@ -1,5 +0,0 @@
{
"logoImageUrl": "https://jitsi.hamburg.ccc.de/images/watermark.svg",
"logoClickUrl": "https://hamburg.ccc.de/",
"backgroundImageUrl": "https://jitsi.hamburg.ccc.de/images/ccchh-background.svg"
}

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 84 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.3 KiB

View file

@ -1,13 +0,0 @@
<template id = "welcome-page-additional-content-template">
<footer class = "welcome-footer">
<div class = "welcome-footer-centered">
<div class = "welcome-footer-padded">
<div class = "welcome-footer-row-block welcome-footer--row-1" style = "flex-wrap: wrap; gap: 16px;">
<a href = "https://wiki.hamburg.ccc.de/infrastructure:services:jitsi" style = "color: #fff;">Technical Information for CCCHH Jitsi</a>
<a href = "https://hamburg.ccc.de/imprint/" style = "color: #fff;">Imprint and Contact</a>
<a href = "https://hamburg.ccc.de/privacy-notice/" style = "color: #fff;">Privacy Policy</a>
</div>
</div>
</div>
</footer>
</template>

View file

@ -4,7 +4,7 @@
services: services:
onlyoffice: onlyoffice:
image: docker.io/onlyoffice/documentserver:9.4.0 image: docker.io/onlyoffice/documentserver:10.0.0
restart: unless-stopped restart: unless-stopped
volumes: volumes:
- "./onlyoffice/DocumentServer/logs:/var/log/onlyoffice" - "./onlyoffice/DocumentServer/logs:/var/log/onlyoffice"

View file

@ -1,64 +0,0 @@
# Role `jitsi`
A role for deploying [Jitsi Meet](https://jitsi.org/) using the official [docker-jitsi-meet](https://github.com/jitsi/docker-jitsi-meet) release.
The given release is downloaded and unpacked unmodified to `/opt/jitsi/releases/` and `/opt/jitsi/release` is pointed to it.
The `.env` file at `/opt/jitsi/.env` is fully managed by this role; `env.example` and `gen-passwords.sh` of the release are not used.
The `.env` also sets `COMPOSE_PROJECT_NAME` and `COMPOSE_FILE`, so `docker compose` can be run by hand in `/opt/jitsi`.
The Jitsi configuration directory (`CONFIG`) is `/opt/jitsi/config`, with persistent state in `/opt/jitsi/config/storage/`.
The image version (`JITSI_IMAGE_VERSION`) always equals the release version, so upgrading means bumping `jitsi__version`.
Releases other than the configured one are removed.
TLS certificates are obtained by the web container itself using Let's Encrypt, so ports 80/tcp and 443/tcp as well as 10000/udp (media) must be reachable.
Optionally, a [coturn](https://github.com/coturn/coturn) TURN server and the [Prometheus Jitsi Meet exporter](https://github.com/systemli/prometheus-jitsi-meet-exporter) are deployed as additional services of the same Compose project, defined in `/opt/jitsi/compose.override.yaml`.
coturn uses the certificate obtained by the web container and is restarted weekly to pick up renewals.
It needs 3478/udp+tcp, 5349/tcp and the relay port range 49152-65535/udp to be reachable.
The exporter scrapes the JVB statistics and listens on port 9888.
Files can be added to or replaced in the Jitsi Meet web root (`/usr/share/jitsi-meet` in the web container) using `jitsi__web_files`, e.g. for branding.
They are deployed to `/opt/jitsi/web-files/` and bind-mounted into the web container.
## Supported Distributions
Should work on Debian-based distributions.
## Required Arguments
- `jitsi__version`: The docker-jitsi-meet release to deploy, e.g. `stable-11248`.
- `jitsi__domain`: The domain Jitsi is served on. Used for `PUBLIC_URL` and the Let's Encrypt certificate.
- `jitsi__letsencrypt_email`: The e-mail address for the Let's Encrypt account.
- `jitsi__jicofo_auth_password`: XMPP password for Jicofo. Generate using `openssl rand -hex 16`.
- `jitsi__jvb_auth_password`: XMPP password for the JVB. Generate using `openssl rand -hex 16`.
## Optional Arguments
- `jitsi__timezone`: The time zone for the containers.
Defaults to `Europe/Berlin`.
- `jitsi__jvb_advertise_ips`: List of IP addresses the JVB should advertise for media (`JVB_ADVERTISE_IPS`).
Defaults to `[ ]`.
- `jitsi__whiteboard`: Whether to deploy the Excalidraw whiteboard backend (`whiteboard.yml`).
Defaults to `false`.
- `jitsi__turn`: Whether to deploy coturn and configure Jitsi to use it.
Defaults to `false`.
- `jitsi__turn_secret`: The shared secret between Prosody and coturn. Required if `jitsi__turn` is `true`.
Generate using `openssl rand -hex 32`.
- `jitsi__prometheus_exporter`: Whether to deploy the Prometheus Jitsi Meet exporter on port 9888.
Defaults to `false`.
- `jitsi__env`: Dictionary of additional variables to put into the `.env` file.
See `env.example` of the release and the handbook for available variables.
Defaults to `{ }`.
- `jitsi__custom_config_js`: Content of `custom-config.js`, which gets appended to the generated `config.js`.
Defaults to `""` (no file).
- `jitsi__custom_interface_config_js`: Content of `custom-interface_config.js`, which gets appended to the generated `interface_config.js`.
Defaults to `""` (no file).
- `jitsi__web_files`: List of files to mount into the Jitsi Meet web root.
Defaults to `[ ]`.
- `jitsi__web_files.*.path`: Path relative to the web root, e.g. `images/watermark.svg` or `static/welcomePageAdditionalContent.html`.
- `jitsi__web_files.*.content`: The content of the file.
## Links & Resources
- <https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker/>
- <https://github.com/jitsi/docker-jitsi-meet>
- <https://github.com/jitsi/docker-jitsi-meet/releases>

View file

@ -1,9 +0,0 @@
jitsi__timezone: Europe/Berlin
jitsi__jvb_advertise_ips: [ ]
jitsi__whiteboard: false
jitsi__turn: false
jitsi__prometheus_exporter: false
jitsi__env: { }
jitsi__custom_config_js: ""
jitsi__custom_interface_config_js: ""
jitsi__web_files: [ ]

View file

@ -1,19 +0,0 @@
- name: restart jitsi web
community.docker.docker_compose_v2:
project_src: "{{ jitsi__base_dir }}"
project_name: jitsi
files: "{{ jitsi__compose_files }}"
services:
- web
state: restarted
become: true
- name: restart jitsi coturn
community.docker.docker_compose_v2:
project_src: "{{ jitsi__base_dir }}"
project_name: jitsi
files: "{{ jitsi__compose_files }}"
services:
- coturn
state: restarted
become: true

View file

@ -1,69 +0,0 @@
argument_specs:
main:
options:
jitsi__version:
type: str
required: true
jitsi__domain:
type: str
required: true
jitsi__letsencrypt_email:
type: str
required: true
jitsi__jicofo_auth_password:
type: str
required: true
no_log: true
jitsi__jvb_auth_password:
type: str
required: true
no_log: true
jitsi__timezone:
type: str
required: false
default: Europe/Berlin
jitsi__jvb_advertise_ips:
type: list
elements: str
required: false
default: [ ]
jitsi__whiteboard:
type: bool
required: false
default: false
jitsi__turn:
type: bool
required: false
default: false
jitsi__turn_secret:
type: str
required: false
no_log: true
jitsi__prometheus_exporter:
type: bool
required: false
default: false
jitsi__env:
type: dict
required: false
default: { }
jitsi__custom_config_js:
type: str
required: false
default: ""
jitsi__custom_interface_config_js:
type: str
required: false
default: ""
jitsi__web_files:
type: list
elements: dict
required: false
default: [ ]
options:
path:
type: str
required: true
content:
type: str
required: true

View file

@ -1,4 +0,0 @@
---
allow_duplicates: false
dependencies:
- role: docker

View file

@ -1,226 +0,0 @@
- name: make sure a TURN secret is given, if TURN is enabled
ansible.builtin.assert:
that:
- jitsi__turn_secret is defined
- jitsi__turn_secret | length > 0
quiet: true
when: jitsi__turn
- name: make sure the Jitsi base directories exist
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: "0755"
owner: root
group: root
become: true
loop:
- "{{ jitsi__base_dir }}"
- "{{ jitsi__base_dir }}/releases"
- name: make sure the docker-jitsi-meet release is present
ansible.builtin.unarchive:
src: "https://github.com/jitsi/docker-jitsi-meet/archive/refs/tags/{{ jitsi__version }}.tar.gz"
remote_src: true
dest: "{{ jitsi__base_dir }}/releases"
creates: "{{ jitsi__release_dir }}/docker-compose.yml"
owner: root
group: root
become: true
- name: point the `release` symlink to the configured release
ansible.builtin.file:
src: "{{ jitsi__release_dir }}"
dest: "{{ jitsi__base_dir }}/release"
state: link
owner: root
group: root
become: true
# Configuration read by the containers at startup; managed by Ansible.
- name: make sure the configuration input directories exist
ansible.builtin.file:
path: "{{ jitsi__config_dir }}/{{ item }}"
state: directory
mode: "0755"
owner: root
group: root
become: true
loop:
- ""
- web
- prosody
- prosody/config
- prosody/prosody-plugins-custom
- jicofo
- jvb
- storage
- tmp
# State written by the containers, which run as uid/gid 1000.
# The certificate directory is created here, as Docker would otherwise create it owned by
# root for the coturn bind mount, before the web container gets to write the certificate.
- name: make sure the storage and tmp directories exist and are writable by the containers
ansible.builtin.file:
path: "{{ jitsi__config_dir }}/{{ item }}"
state: directory
mode: "0750"
owner: "1000"
group: "1000"
become: true
loop:
- storage/prosody
- storage/web
- storage/web/acme-certs
- "storage/web/acme-certs/{{ jitsi__domain }}"
- storage/transcripts
- tmp/web-crontabs
- tmp/web-load-test
- name: deploy custom web configuration
ansible.builtin.copy:
content: "{{ item.content }}"
dest: "{{ jitsi__config_dir }}/web/{{ item.name }}"
mode: "0644"
owner: root
group: root
become: true
when: item.content != ""
loop:
- name: custom-config.js
content: "{{ jitsi__custom_config_js }}"
- name: custom-interface_config.js
content: "{{ jitsi__custom_interface_config_js }}"
loop_control:
label: "{{ item.name }}"
notify: restart jitsi web
- name: remove unconfigured custom web configuration
ansible.builtin.file:
path: "{{ jitsi__config_dir }}/web/{{ item.name }}"
state: absent
become: true
when: item.content == ""
loop:
- name: custom-config.js
content: "{{ jitsi__custom_config_js }}"
- name: custom-interface_config.js
content: "{{ jitsi__custom_interface_config_js }}"
loop_control:
label: "{{ item.name }}"
notify: restart jitsi web
- name: make sure the coturn directory exists
ansible.builtin.file:
path: "{{ jitsi__base_dir }}/coturn"
state: "{{ 'directory' if jitsi__turn else 'absent' }}"
mode: "0755"
owner: root
group: root
become: true
# Readable by uid 1000, which coturn runs as.
- name: deploy the coturn configuration
ansible.builtin.template:
src: turnserver.conf.j2
dest: "{{ jitsi__base_dir }}/coturn/turnserver.conf"
mode: "0640"
owner: root
group: "1000"
become: true
when: jitsi__turn
notify: restart jitsi coturn
# coturn doesn't notice the certificate renewed by the web container on its own.
- name: ensure the weekly coturn restart cron job is present
ansible.builtin.cron:
name: "jitsi coturn restart for certificate renewal"
special_time: weekly
job: "cd {{ jitsi__base_dir }} && docker compose restart coturn >/dev/null"
state: "{{ 'present' if jitsi__turn else 'absent' }}"
become: true
# Files mounted into the web container, replacing or adding to the files of Jitsi Meet.
- name: make sure the directories for the web files exist
ansible.builtin.file:
path: "{{ jitsi__base_dir }}/web-files/{{ item }}"
state: directory
mode: "0755"
owner: root
group: root
become: true
loop: "{{ [''] + (jitsi__web_files | map(attribute='path') | map('dirname') | unique | reject('equalto', '') | list) }}"
- name: deploy the web files
ansible.builtin.copy:
content: "{{ item.content }}"
dest: "{{ jitsi__base_dir }}/web-files/{{ item.path }}"
mode: "0644"
owner: root
group: root
become: true
loop: "{{ jitsi__web_files }}"
loop_control:
label: "{{ item.path }}"
# Single file bind mounts keep pointing to the replaced file until the container is restarted.
notify: restart jitsi web
- name: find web files to remove
ansible.builtin.find:
paths: "{{ jitsi__base_dir }}/web-files"
recurse: true
register: jitsi__web_files_found
- name: remove web files, which should be removed
ansible.builtin.file:
path: "{{ item }}"
state: absent
become: true
loop: "{{ jitsi__web_files_found.files | map(attribute='path') | reject('in', jitsi__web_files_paths) | list }}"
vars:
jitsi__web_files_paths: "{{ jitsi__web_files | map(attribute='path') | map('regex_replace', '^', jitsi__base_dir ~ '/web-files/') | list }}"
# Changes to these make `docker compose up` below recreate the affected containers.
- name: deploy the compose override file
ansible.builtin.template:
src: compose.override.yaml.j2
dest: "{{ jitsi__base_dir }}/compose.override.yaml"
mode: "0644"
owner: root
group: root
become: true
- name: deploy the .env file
ansible.builtin.template:
src: jitsi.env.j2
dest: "{{ jitsi__base_dir }}/.env"
mode: "0600"
owner: root
group: root
become: true
- name: docker compose up
community.docker.docker_compose_v2:
project_src: "{{ jitsi__base_dir }}"
project_name: jitsi
files: "{{ jitsi__compose_files }}"
state: present
pull: missing
remove_orphans: true
become: true
- name: find old releases
ansible.builtin.find:
paths: "{{ jitsi__base_dir }}/releases"
file_type: directory
excludes: "docker-jitsi-meet-{{ jitsi__version }}"
register: jitsi__old_releases
- name: remove old releases
ansible.builtin.file:
path: "{{ item.path }}"
state: absent
become: true
loop: "{{ jitsi__old_releases.files }}"
loop_control:
label: "{{ item.path }}"

View file

@ -1,47 +0,0 @@
# {{ ansible_managed }}
# Services in addition to the ones of the docker-jitsi-meet release.
# Docker Compose explicitly disables IPv6 for networks not enabling it, overriding the
# daemon's default-network-opts.
networks:
meet.jitsi:
enable_ipv6: true
services:
{% if jitsi__web_files | length > 0 %}
web:
volumes:
{% for file in jitsi__web_files %}
- {{ jitsi__base_dir }}/web-files/{{ file.path }}:/usr/share/jitsi-meet/{{ file.path }}:ro
{% endfor %}
{% endif %}
{% if jitsi__turn %}
coturn:
image: docker.io/coturn/coturn:4.18.0
restart: unless-stopped
# Recommended by coturn, as Docker performs badly with large port ranges.
network_mode: host
# Needs to be able to read the certificate obtained by the web container.
user: "1000:1000"
command: ["-c", "/etc/coturn/turnserver.conf"]
volumes:
- {{ jitsi__base_dir }}/coturn/turnserver.conf:/etc/coturn/turnserver.conf:ro
- {{ jitsi__config_dir }}/storage/web/acme-certs/{{ jitsi__domain }}:/certs:ro
tmpfs:
- /var/lib/coturn
{% endif %}
{% if jitsi__prometheus_exporter %}
prometheus-jitsi-meet-exporter:
image: docker.io/systemli/prometheus-jitsi-meet-exporter:1.4.2
restart: unless-stopped
command: ["-videobridge-url", "http://jvb:8080/colibri/stats"]
ports:
- "9888:9888"
depends_on:
- jvb
networks:
meet.jitsi:
{% endif %}
{% if not (jitsi__web_files or jitsi__turn or jitsi__prometheus_exporter) %}
{}
{% endif %}

View file

@ -1,46 +0,0 @@
# {{ ansible_managed }}
# Only the settings differing from the defaults are set here.
# Reference: {{ jitsi__base_dir }}/release/env.example and
# https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker
# Allow running `docker compose` by hand in {{ jitsi__base_dir }}.
COMPOSE_PROJECT_NAME=jitsi
COMPOSE_FILE={{ jitsi__compose_files | join(':') }}
CONFIG={{ jitsi__config_dir }}
JITSI_IMAGE_VERSION={{ jitsi__version }}
TZ={{ jitsi__timezone }}
PUBLIC_URL=https://{{ jitsi__domain }}
HTTP_PORT=80
HTTPS_PORT=443
ENABLE_HTTP_REDIRECT=1
ENABLE_LETSENCRYPT=1
LETSENCRYPT_DOMAIN={{ jitsi__domain }}
LETSENCRYPT_EMAIL={{ jitsi__letsencrypt_email }}
LETSENCRYPT_ACME_SERVER=letsencrypt
{% if jitsi__jvb_advertise_ips | length > 0 %}
JVB_ADVERTISE_IPS={{ jitsi__jvb_advertise_ips | join(',') }}
{% endif %}
{% if jitsi__whiteboard %}
WHITEBOARD_COLLAB_SERVER_URL_BASE=http://whiteboard.meet.jitsi
{% endif %}
{% if jitsi__turn %}
TURN_CREDENTIALS={{ jitsi__turn_secret }}
TURN_HOST={{ jitsi__domain }}
TURN_PORT=3478
TURN_TRANSPORT=udp,tcp
TURNS_HOST={{ jitsi__domain }}
TURNS_PORT=5349
{% endif %}
{% if jitsi__env | length > 0 %}
{% for key, value in jitsi__env.items() %}
{{ key }}={{ value }}
{% endfor %}
{% endif %}
JICOFO_AUTH_PASSWORD={{ jitsi__jicofo_auth_password }}
JVB_AUTH_PASSWORD={{ jitsi__jvb_auth_password }}

View file

@ -1,34 +0,0 @@
# {{ ansible_managed }}
listening-port=3478
tls-listening-port=5349
realm={{ jitsi__domain }}
use-auth-secret
static-auth-secret={{ jitsi__turn_secret }}
cert=/certs/fullchain.pem
pkey=/certs/key.pem
no-tlsv1
no-tlsv1_1
no-cli
no-multicast-peers
no-loopback-peers
log-file=stdout
# Don't relay to private and otherwise special addresses.
denied-peer-ip=0.0.0.0-0.255.255.255
denied-peer-ip=10.0.0.0-10.255.255.255
denied-peer-ip=100.64.0.0-100.127.255.255
denied-peer-ip=127.0.0.0-127.255.255.255
denied-peer-ip=169.254.0.0-169.254.255.255
denied-peer-ip=172.16.0.0-172.31.255.255
denied-peer-ip=192.0.0.0-192.0.0.255
denied-peer-ip=192.0.2.0-192.0.2.255
denied-peer-ip=192.88.99.0-192.88.99.255
denied-peer-ip=192.168.0.0-192.168.255.255
denied-peer-ip=198.18.0.0-198.19.255.255
denied-peer-ip=198.51.100.0-198.51.100.255
denied-peer-ip=203.0.113.0-203.0.113.255
denied-peer-ip=240.0.0.0-255.255.255.255
denied-peer-ip=::1
denied-peer-ip=64:ff9b::-64:ff9b::ffff:ffff
denied-peer-ip=::ffff:0.0.0.0-::ffff:255.255.255.255
denied-peer-ip=fc00::-fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff
denied-peer-ip=fe80::-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff

View file

@ -1,4 +0,0 @@
jitsi__base_dir: /opt/jitsi
jitsi__config_dir: "{{ jitsi__base_dir }}/config"
jitsi__release_dir: "{{ jitsi__base_dir }}/releases/docker-jitsi-meet-{{ jitsi__version }}"
jitsi__compose_files: "{{ ['release/docker-compose.yml'] + (['release/whiteboard.yml'] if jitsi__whiteboard else []) + ['compose.override.yaml'] }}"

View file

@ -13,10 +13,3 @@
group: root group: root
become: true become: true
notify: Reload nftables service notify: Reload nftables service
- name: ensure nftables service is enabled and started
ansible.builtin.systemd_service:
name: nftables
enabled: true
state: started
become: true