diff --git a/.sops.yaml b/.sops.yaml index 68443c9d..615ed225 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -63,6 +63,7 @@ keys: - &storage-ng age1qjvds58pedjdk9rj0yqfvad4xhpteapr9chvfucwcgwrsr8n7axqyhg2vu - &ticker age1kdrpaqsy7gdnf80fpq6qrrc98nqjuzzlqx955uk2pkky3xcxky8sw9cdjl - &prometheus age13xhxqulvswuckmpkmy2fgeqd5jx0ar8e2hst33leljt69r6hsvnsrdw63k + - &woodpecker age1rx6qymrw6stp238w45s29remjv7tkczu8gmxn4ls7rw49a7pypssr9y7sw creation_rules: - path_regex: config/[^/]+\.yaml$ @@ -262,3 +263,9 @@ creation_rules: age: - *prometheus - *polygon-snowflake + - path_regex: hosts/woodpecker/[^/]+\.yaml$ + key_groups: + - pgp: *admins + age: + - *woodpecker + - *polygon-snowflake diff --git a/flake.lock b/flake.lock index 34c4bf21..a3bcfdf4 100644 --- a/flake.lock +++ b/flake.lock @@ -778,11 +778,11 @@ ] }, "locked": { - "lastModified": 1674510549, - "narHash": "sha256-Xw9teadTkZZhpN5+5mRrIhNsJRKiiGU3ZgLn8mN54js=", + "lastModified": 1674690477, + "narHash": "sha256-JR+0Wsbdg6BkjBSzyenE3i5FR7f/NNEAcBBPNFxC81w=", "ref": "refs/heads/master", - "rev": "d6c14b1b0e12d7f668443a435c2cf4dcaf41ed9a", - "revCount": 1739, + "rev": "a818cee9b5d61189c3eee3c9e51c659c74471dcb", + "revCount": 1740, "type": "git", "url": "https://gitea.c3d2.de/zentralwerk/network.git" }, diff --git a/flake.nix b/flake.nix index f40da0f1..ebe670f8 100644 --- a/flake.nix +++ b/flake.nix @@ -737,6 +737,13 @@ ]; }; + woodpecker = nixosSystem' { + modules = [ + self.nixosModules.microvm + ./hosts/woodpecker + ]; + }; + zengel = nixosSystem' { modules = [ self.nixosModules.microvm diff --git a/hosts/woodpecker/default.nix b/hosts/woodpecker/default.nix new file mode 100644 index 00000000..6681ef10 --- /dev/null +++ b/hosts/woodpecker/default.nix @@ -0,0 +1,106 @@ +{ config, pkgs, ... }: + +let + hostname = "woodpecker.hq.c3d2.de"; +in +{ + c3d2.deployment.server = "server10"; + + # microvm.mem = 2 * 1024; + + networking.hostName = "woodpecker"; + + services = { + nginx = { + enable = true; + virtualHosts.${hostname} = { + forceSSL = true; + enableACME = true; + locations."/".proxyPass = "http://localhost:8000"; + }; + }; + + postgresql = { + enable = true; + ensureDatabases = [ + "woodpecker" + ]; + ensureUsers = [{ + name = "woodpecker"; + ensurePermissions = { + "DATABASE woodpecker" = "ALL PRIVILEGES"; + }; + }]; + package = pkgs.postgresql_15; + upgrade.stopServices = [ "woodpecker-server" ]; + }; + }; + + systemd.services = { + woodpecker-agent = { + wantedBy = [ "multi-user.target" ]; + after = [ "woodpecker-server.service" ]; + requires = [ "woodpecker-server.service" ]; + serviceConfig = { + Environment = [ + "WOODPECKER_MAX_PROCS=2" + "WOODPECKER_BACKEND=docker" + ]; + EnvironmentFile = config.sops.secrets."woodpecker/agent/environmentFile".path; + ExecStart = "${pkgs.woodpecker-agent}/bin/woodpecker-agent"; + User = "woodpecker"; + }; + }; + + woodpecker-server = { + wantedBy = [ "multi-user.target" ]; + after = [ "nginx.service" ]; + serviceConfig = { + Environment = [ + "WOODPECKER_ADMIN=sandro,astro" + "WOODPECKER_DATABASE_DATASOURCE=postgres:///woodpecker?host=/run/postgresql" + "WOODPECKER_DATABASE_DRIVER=postgres" + "WOODPECKER_GITEA=true" + "WOODPECKER_GITEA_URL=https://gitea.c3d2.de" + "WOODPECKER_HOST=https://${hostname}" + "WOODPECKER_OPEN=false" + "WOODPECKER_ORGS=c3d2" + ]; + EnvironmentFile = config.sops.secrets."woodpecker/server/environmentFile".path; + ExecStart = "${pkgs.woodpecker-server}/bin/woodpecker-server"; + User = "woodpecker"; + }; + }; + }; + + sops = { + defaultSopsFile = ./secrets.yaml; + secrets = { + "woodpecker/agent/environmentFile".owner = "woodpecker"; + "woodpecker/server/environmentFile".owner = "woodpecker"; + }; + }; + + system.stateVersion = "22.11"; + + users = { + groups.woodpecker = { }; + users."woodpecker" = { + group = "woodpecker"; + isSystemUser = true; + }; + }; + + + virtualisation.docker = { + enable = true; + autoPrune = { + enable = true; + flags = [ + "--all" + "--force" + "--volumes" + ]; + }; + }; +} diff --git a/hosts/woodpecker/secrets.yaml b/hosts/woodpecker/secrets.yaml new file mode 100644 index 00000000..1b15681b --- /dev/null +++ b/hosts/woodpecker/secrets.yaml @@ -0,0 +1,206 @@ +woodpecker: + agent: + environmentFile: ENC[AES256_GCM,data:CAkljHyL7FAw/5nCaiz6pISpw0DGz/wEb9mhnlPQdwW+wkPZWA3HisulkgtTyIS8q+r7IBWcTzEY+BitdfX3E96gQmqjmn0wHGsKFf/W3II01HFs4G6MhII=,iv:CDZWUMXtH6I5VNyaYCbI7SKAPKlsNpQDRSS5LEGVc+g=,tag:9vDlvXniWD0Pnd7gFARYAQ==,type:str] + server: + environmentFile: ENC[AES256_GCM,data:NEJ27G11dYXogrV/M5mnen6PBrWRm/0IQGItDWMoOQOS22nXWeBluF4KqcJiEMiNFkE2yZZ8RQv2+VHOK94ZBhfilOAGn0kCE8cXCZIj11pziJ07x7eU/siOvS/OUge5F/HlSO/sZB+51E66s0QX1suu2QaJrJ+PmHG7HJrqZhrRO95g9zulpvSadf/Aty9SjV45TvU83nDTPoFJMAGtlHVumoQehiIeUil0+3c5z3hOoQFW+mjG4pV2oujed98ozdSk2WuIq+UE0DdNNBkgfRIWP9eHfP/96rR3OeXzwoYjRXRnHfsl,iv:QqkWYBFI7lLwWkwPzpT6Srq67jVBMBhBSScONtWmNTQ=,tag:tfaQ5d1LZwy7DukHL4RZnQ==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1rx6qymrw6stp238w45s29remjv7tkczu8gmxn4ls7rw49a7pypssr9y7sw + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUK2cxOURuQzI0UWZpR3BE + QlQwTkNienU1MmROZlVRRVZIdWkvOWNWenpVCmZQNnZaSGUxMXh5TFMzaXk5SkFR + MFB1Z3c5d2xvT2E1OXZLVVl4K3ZYTDgKLS0tIGg3VmxaaXRZRmpaa2RQeGhZUDUv + NVhIOTRCZUlXTzZkR05reXNKeEdFdWsKUf8rNkytDg/hQD7exzOhDxlB6mrjykb+ + f8sxKieo8aXz3/vyDVDmD3pf2tFlCTGbFPJmwmAqHzJXnT7Mb0/Hng== + -----END AGE ENCRYPTED FILE----- + - recipient: age12aukzah0pt2rck52hwn08kezyxueqz2f49ld7hpyuzmu847vavdqkunn5c + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBsZ2NLaVByd0NRK2NHbTBx + bmtoQXczcDVlY3ZGcllFcVhWai9lUDVoM3dvCnBqY0RpRGRnd0E4bkh6TVJQcTJX + SzhuZEMxME1Udkw1dWNtVUxJcWtkd2cKLS0tIEl4emVxbTQwUGlnN2xHd0tqRkpr + SDRWamxzR2tubzBlTTZsWEZ6bldCSnMKTMUqkVKxqGEgACdJkd16FiFWDe7rb9DO + PNOhhAiPQyNJLdIVhM7+Z+rzL+M8YW8ifV7xSQbqf24tTUBCg0op8A== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2023-01-26T00:52:25Z" + mac: ENC[AES256_GCM,data:/WiWIDprCRf2OaYoYzWlP9ZCbDxO3VdZ4Sw/pGjFzuUZvJZYy0qsVfIUUn9o/e8uCnKVd1RxHQKhwSmEZqBhsQfOb2TXLwOM+1jaObysuQwzY5ZZxC/Ch4UnGBvz+t9VsXG97wfa4uTQlq1hqlv5T151IVI7WTX1xV6nKtraIqM=,iv:RFm/M7z330C2qTUVMfBWOwW3qOClG9Jd2FmD2Z78u9M=,tag:7bfFU+nGCUuJqqLBtJ+DsQ==,type:str] + pgp: + - created_at: "2023-01-26T00:05:26Z" + enc: | + -----BEGIN PGP MESSAGE----- + + hQIMA6j84+xkv3y7ARAAnHTOMIRYoKo0JbrTuvkWDavO5bIIa/JuWr7AVWXzlbAH + uF4Qq7LoQyD6ZCNH1Z/+LL7J33zsOw1u4AWFbUWmrZ6n2oJnq/Uf2KdRhLeUaRKV + 1il227a7uNxmXWf+/Tqx5gHKR3IYFvo9FR49aapzh9iZraoNqzGSpwjehJ0AcH5K + sF23o3JY6M+3Qoqw1Gjhl7NR6prU5R1fMd2gv0Y7XuHIkkq+4ShzHS8aCrPxGezJ + G3wLIPTSByUXxGwC78RVWdQ08aMZy/PnImB96zS+Z82grabOFAbQ70etPZ9bpVhY + fT28qEf5puJYYNDn/kTWYUAGZ+OfKagFhWLNKokqJNWVtstXD9nIL7oHHgDAcyFR + Vr9mxdrPzUfKoPESm/N5jBxzcbEWi4HZYGxZz0V6f2ImyOcoYGfHH8XvpUrSaBKh + /rLrcrbTYUXMTlt9/zZHRGUuOW2EvZPN1+LVhSD7VDqASV1eF0c8uoKOscs2Dl0W + GgAKM2vPr66dyZX86cGaZTA2W3gX75JCGIqbKiBXiO0FEoI9Jw4QXm6aaYWb7iIP + 2YBTFjr2X3PCTVwpR09LiVotejpXML3hhO84l29CABWW+Ig/fRZ4cQtJ71iiOvvM + mAwfevO3flDxuOq6pVceia+wp1zdJBAgcUn1jZ8gk5Vt3kmLolA/HGbIX2YU8YjS + XgFqavdTuvuX0lwtVy5UkH+C0gAri7Av8b/9RrzZMBpeOzGlyFA4ueIWS82GhaUi + 5vkdSK6Zkz6a89SgxJtqz23b+D7crnw6UlNugom3uEcYitjcLPjs+cYCQ4WoVLU= + =Yxia + -----END PGP MESSAGE----- + fp: A5EE826D645DBE35F9B0993358512AE87A69900F + - created_at: "2023-01-26T00:05:26Z" + enc: | + -----BEGIN PGP MESSAGE----- + + hQIMA8zMZ+ak7y/zAQ/8CqQRlz44awZ4mvBkU+om8kW+6vFjuwizaDmyL5/ej48+ + IAGk9LL9n49QM+19UxnsMfdebXBj1rW+QnZQEKzv2i66B/u1YvSv1oTVTRucnLAv + uqlCnjiNeMkn+MMjEcT4cXlIgIlSqsIbs10IxzQqGyb0jV+vxZ1C+F8CprfPK7M0 + 7QSw7f7IMbMlYP8HCGDyv/Ude7dl/2uxOxlsvDGlUxLOtu8Phi1KmR+TQdrZWiwa + JmilsJOnxiArmn54hGLfbQprxB7UdoGuabiPAgvIZcy5NBVcbQEc/JEC2IyVbyGN + cu7TxiB8wg2njvCaUkBdPcBqzirp0iR3ZqnSas58VSzygtmzhv+mV5jD7OjnbDrt + we04iODnaNbbxri0I0lsdVEFEtW8jIrJh8DCQgqtk71XUfGdR7i3+FlLiDRA/y5X + VO8WrMv5yY4PYKzvK5oc/5FCZ/VA6ckbCqqH7z7hqgvfl1zkprwdvEmxILhIsiiF + CnEWUziGn45M8JPWn6JxShY0sRHy6rxGioI72qHg1GxVN+KYWbDFRtb8tj0p5pn4 + oanwuCv6dGL1hRwkNzWRFVes0t9lO5hhVrn4y+ARnAGoK7vgSKfTyxouB9JV5cNu + xrmpenq8peLnj+R2Eug9w5oLPGOBWeHHmwByg5c8/V0lM1dY0NjJNMF0WD8V50fS + XgFtMfOpvHgraAVqii7pVRGt+Hzd0kx8p+n+F68KTRn1fIFkT5Rd4zLV3KGxRNJJ + Z1zvDkZnPm/2GM0nI/U1S7634DsOaTnYdKEh+/kp6EYW+iwVxEcndqsX66wR+F0= + =5PkO + -----END PGP MESSAGE----- + fp: D4E89C6A0A58EE803EF708EFA9B23715F7AA3F1A + - created_at: "2023-01-26T00:05:26Z" + enc: | + -----BEGIN PGP MESSAGE----- + + hQEMA45bZkLXmBFpAQf/Zka7FKAO48knZ1x54ttdOhv2ELEp3uxJX7XVKdRBDuLE + g06LWv1Daz5rv1cX0BIr+0OF4jm0U8BHWIBGeTIxtHbWzB8T1CveWTw75fYxIX8C + Al1YeA/LnokkGrFWD5/j5midOBeqmMLHWvL1KBatLgTxxV09RBylm6aR5fWywpKz + hLoecFHAC1zUcyCzHfjH6WXugiX/zGrzs/IwN4cDRtxrff+5v/U3aZMlMx+LcC5D + YD435fEIGVlH3Mf4X2UXy3c+vhTgxGvYMIYLK15wwM/gpPN605E2eOsfZDJVsAzN + sxnFk7TeIvOa+DF9Kp6XGma6XhG0W+l5BS+LCWG9cNJeAXhaASDWCeb1IUXjASK6 + xH9upoVRP54szkKcRlVygnEJ9sOXCZByc15xK/v6hd2kCszWUjeAN8HT8FfmOW8J + nCvZgHYizmWqOBourmvtURLn47Sokqc4+dzjNfClAw== + =tHcW + -----END PGP MESSAGE----- + fp: A4B0F5A80C2E2448A97BEC25BB829C4DECA6CCB9 + - created_at: "2023-01-26T00:05:26Z" + enc: | + -----BEGIN PGP MESSAGE----- + + hQIMAwMCBBrc/JA6AQ//faABWos4Uu5XS0ylv3cf2TEcKIlMt2idWqm+cI28B7eh + j6W/R7UsOpYMfCahKhvbByTbV2e3Df5FdWt2hfhCZHXyomJpyGAzUSvv50ixl3aE + CW8MB/4UzKFNNsCeaWCSsaki44vEvkvpWLoYUzoCO1W/miG0n8m3C8E2ds3r1e1A + 2h5UwB8O2FERzqzvC6TcG55XRlI7lrS0bK71MrBixJGZWY3Icn8MakRMqyByiqD8 + 9Od/aFBuPtEH5tHJht/gnvIi2AUv/eGtil2bkT//wxry6mPPAKK88B3iO3GEtUVQ + h8esc3HjOs+g6PN/TqzjKhVh/k8NmxFxKULXF4oHdcXaN+wE1iYX8sZYjPZP4z/9 + OGCbbKtLT4xiSyrNL7eFJ7xmN43PBIrNvSd3y5EulfdYGkLK+XCHAbzC22sylPiq + s/XCE+iZdKGy22/8I1H/9/i4VDkl1QKwtnINGIaXdpKpNO+DXWqMt+YEixZXfB4G + NkVsepYHNyLHt8mO9R1YAgB+b/GrmFH75dVICRAgatRqTekJYDnog4SOk39o/cV0 + aujvFg1MFSWtyQqh29SPbBQMm98bTVx+HDTJTSyU8vX6hj663Ml7ZDBBniAgCWT7 + NegJ+9UOGclaR+KhXymbR7MiwmJJfvW6HM//INPSevBMMT9bNSB2wZnjrK0qzPXS + lAH7hM+BvCb9akGvj36mFMvwr9xh3s2nZoOdRC7xTVGKzGvOeN2doLtY4uItURVl + JaN7LdW4J2C46UdTwzX6uOKDS//5AEFZIwg4ghCAVEdBm6/AjaZLaCt5YlkFXl9T + T1P4Cojpes/NS1Ctqt1xj2Id1dIaK09YhJk2C+q144So3Ou+zdMibpZLY3n3as6p + D64WpEs= + =8cLB + -----END PGP MESSAGE----- + fp: 4F9F44A64CC2E438979329E1F122F05437696FCE + - created_at: "2023-01-26T00:05:26Z" + enc: | + -----BEGIN PGP MESSAGE----- + + hQIMA9XEenRNYVGHAQ/9FiPd5Z1snmI6zBErjEmBQGMX3JCfezDKY2YCEX7xck+m + FuiD8oY1TA1nYHz2KsgPEOP11y1rvSiG81LW9TC/tqeTVwLi/ndgzq279/m2knXb + ewo9sGg1zDtrPdJvGflmm2gSPHOA+Ul7hKgbm4/pwLU/SiHB/Vm5Q6ecmyt6HGE+ + aQzft3d2nFJMG36pmiXilvr/OArab6b0VRh0wUbCoNthPVJ81rWBwASXJAmzWB0Z + EKYiKXQzI3c9Ane2MSIK7d2naWL/R6kMZSfoCmEWYZ8zWyC9UgMzZxQSorEKdDDK + R8riH/Yr3gwwMRMYnD3CsIL2Oy9zi3jPjvKHzmWzFDPqnZiakHQovnOSflUvYxzn + sRpxhMlvTF1dB6NjzKHcjK3nEAPcL14Ol1gfKK5j8AjJR2j6hBhhDllCuK1u9h/q + 99rn5xj/t4anDR46036GGN8eQK8sRfPEmsBHav8zbnYMgs0WIgsIQyG3JvuxY0gl + JrsDbjiaIbmJJF8bEmnB8WUBVtrdVemOuxnrtQm5i+q/HbTv0Gbw+hJM+4sAFqiW + AbP+PYB3HN7s5wgjTVvi1yctAfyhfwD1yrzby/j5G1N7OXEwBplS7qVH77ft49yN + y99qAKk4FlAkx0tRMDrhvQrgOyDwbNtt5vv0qJL/dJf3NijUhDAlGUbN2KTrGsvS + XgFoMN4M7GYDN9Bsd7o/PZ3EeYfKNgCegLJ+CJoJ4oGBtpxNEd1+i1vRGLCRcedJ + 0j7a794W7erFaZQl9aa2iRsnCRiJw17JAxIBF9VgT+oCtp2CJ5FvM9AmP/ShcFM= + =Z8oW + -----END PGP MESSAGE----- + fp: 4B12EFA69166CA8C23FC47E49CD3A46248B660CA + - created_at: "2023-01-26T00:05:26Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcBMA/Z87ylQaotQAQf9GQZLT+5K3c9PsQjh1LeGUFVKJID1DVMscDoioeGsD/Zy + MMIWllzpfOELJRLeq3Itx7q24FFgMCRBFdfJXNOa6qjU2jERVYVOVz2Y6/z+ZO/Y + NZQ1pjcCj4cvji0wZlFIegr2vkE0lC2H+T6mLp4wbSfdU0v4tcNNlbGcbTmj8QvS + bc/X4QVD+8qbosrrjacaNByAmhOYWlRgyQYphAhCy4g+Y5oSSSopxyUFu6vi+lcZ + BCz+7dSTBopjQafL/0SWDd93UAsEH+YvwneGUfIFzJgJGysJZB5xapOoDIFAKqDU + I4fjnARhVFBgNSNT1ZCAJNVKZark0RpkXfyD+NmKsdJRAa5WZK2mvkBTOZPpYxQL + tbRHZV3vxzbiIsavW6z/n09iVhdEaz4wk/ybiLSdals+AwwHceqkioI6e/bQp+zV + Efl1zojgdH03TKmFTUXF5gjF + =daBu + -----END PGP MESSAGE----- + fp: 9EA68B7F21204979645182E4287B083353C3241C + - created_at: "2023-01-26T00:05:26Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcFMA9qJIVK2WMV7AQ/9EnxkUVgc+BsSTylKHsM33vtlyefeMXBggO7vOM5aoHT/ + G+Hb1EzDZHN9w2pUSYbsT+GF5GRbpV11wWSmO+OGDpI/d8ObiWgH6ewhNZ1AJ3FH + daxyLIpyh6ihmv9XGoDezrIleebpdhnHRbvOtVClKvpGqiaredmC70QOL6+CKG7n + fzkCp79jOMQniwDVrcLIPlI+3UCkOLQG5xlH7v0whRtkp4vp9QvqWlhnKWhftLJ8 + GuJ8NskcbycWgqz2TDMGOmC59IqQ8F450rpOoAwta/57dZebMfxxlvIAo5gBPifm + 96YYkxPLCv102TKvqy+hL7U4HKMHGV5prqJF/BjaudH6Za/GGIYFEsZs8rkbwVbC + fSzAgD3xPyrgsh9SWBe2HQw9VpDHtLEl8NXELHu0f+pcVMxzYhQwxyQTWKlslUqF + 42fljY1S+yKyUTyzO+67cnt1ob7wQkaPatGmnHJEQ7c9HBNkq9HT43yDWLSujPo4 + dJx9EDsN06nEHTQt2SGRbz8ZhaSBiy+BGMVVqlPafBw3l0LPav5kwtfUUECKDyTf + ln5j9ofJX2LTOrVNlgJaWMlNzFqGqpcdVQqvr1Jy29dErS+Yso7cgkor7gabBv6D + 9qY3DJrIedKUcbB3ZSqzCjueauIPT7nPKrCbwEM2Wni6wq0NMnyO+unJap4cyNrS + UQHV/hcYfSqkB6bjKgHtwlAUPX1UaHlYL4Y5VwVjcZNQ7Aw0YD+nFgpbjYPjxv1v + 310oxtAecKV6qwVIP6pYReberw5PFcvTd4ewrrxj6Yhs1Q== + =vnQx + -----END PGP MESSAGE----- + fp: 53B26AEDC08246715E15504B236B6291555E8401 + - created_at: "2023-01-26T00:05:26Z" + enc: | + -----BEGIN PGP MESSAGE----- + + hQIMA/YLzOYaRIJJAQ//UdIoWE8hH68yAs69k+4hE7IVd+wFZey6K6YcFRji9Z9Y + 0efJLVOSIF4s0Bi4UTBfl9E9jdM+EoZvBzwoGQn9LI/Lryh8VVbRt8MkZ4jsFwip + 3BBs10lTW7Q6M9BPmutkHkg3/MF7AGzieVDoxqMcMWX1j1pp8l2vnCNeBAl/+yqb + jq3iGY+24ofVKNBkF6nhUJFenG01JsB0KwwKrj5i8qc1lCpdcxgC96vIXqcxxK1p + kOYpZ2NeAXOGYuTEa8abGk1zgtHVSfnZzBQbuCb8xSGwsdxunppgV12dS+bOSmd9 + /oGZ6tlRv1cQTh8zwuJYU8qwdbyaaVGpPl8I/GTnIAew59lvo8HAHqRcglsgwAxA + pYR9LLc1W0ZmWd2Z+1iyuaKHnpabVfHa7YnQNr8SgQItneUsf6+HXnr9n9N5V8yg + ieFAlNnJXfIWhd+tx9IfzDJefhXwG6zTUv1aNlAE4jn9NP0cCb6bMga/NC5L4Ahv + 68NoEc/LSvHvFOmjQ2chRb+Of/oRKRoxLuU88Bdn+1fCXtPbbAEqlz+YFX+EY6Vg + bPr5wNPXpiWgSTVZqNIKd+rUzTxwzCHOSfDDoOOlsGM6NO/KpwToDnTnoxqlXFtb + /H8+auc5CREqLduesiYJ2J6hWHoxF1dx9d9iXhfFvG9uhbpBUqFJrNfH8R4+7z7S + XgHs7o4fPsleliKXoN8arH5rNW69Pac78CjVIQ2qrTT/EwQheXe+tQV3vN1F7u8v + q1Mjh/6koywS7s9fTHFvehSjVdalQ5IPOtfXbjwTC4aeO09ZWOnPG4uyun/8AkE= + =BjzG + -----END PGP MESSAGE----- + fp: 91EBE87016391323642A6803B966009D57E69CC6 + - created_at: "2023-01-26T00:05:26Z" + enc: |- + -----BEGIN PGP MESSAGE----- + + wcFMA7zUOKwzpAE7AQ/+P7B4TmTSCrFO+NXnbt6NlMYSyu7c+MspCcy3iqamnHuS + iEj0ZgQHtd8QH3Y4IpdDh+mn9DNCefIfaaiexC4ZjVlw6GRoyeBzQUXTk/VhKcWU + BFwmPimQAPZKYPF51Qv3rYkAbjGU9uMzfLMosxA0zeI4OTI9PzphZTXdUekMRhFu + iTBIDzRiALQU81gl0wJW6xjWy66tbc7lKSIWFgUntnA69adwGjZCvH9s4nfoebeF + ALef3MyDfvOb1DSqwsy1jhTZsPPGwBNaT09laqYi76wjCUxzwNyZ+HJOnU9S7mXa + fAbAxpjHWqreSDZLGXKM9+K8FazC72ojkXaz6v36+aMLIWqg+mQ+ifunwGzFFJ/U + 1moec/0P8NvFWzH+K10mhMq3hpEyuukO3N1ZkIYLj53x3zeSW0IlO7eqVa040l3s + Cr4Nrtn//2iar1ohXIamXVhKcgs5DbykP9ioJNOCcI9+IJOHN+Z/YJA636OEmOk7 + U82OaXOnLFpAVnVToLb1lbLadGjW5rROevMcuFdGMxCaBWtoQZVFzTMYY5rG/xnV + SWGftykp4Ts7vY2mEemQaspaf3NDM+vdXNbFrFjjctyOd8AfzAlbuPaHPW5OXXcy + qUVT2uD4NyangFDgmR+hS/gsxOxwL68vEivOXE+R4cLPWZVl3JadmvPXUuxlGDbS + UQGT8a11KsPcD0BNN7nFbnGBKG+XJwUC0FMoy1fk+efpVCMvnrSDyZMtEbQTRwDQ + XgXgrrE4c/rZ0O76zF0dmOTt+DJvvGWvblx4fOKNlTo41A== + =U5og + -----END PGP MESSAGE----- + fp: DD0998E6CDF294537FC604F991FA5E5BF9AA901C + unencrypted_suffix: _unencrypted + version: 3.7.3