diff --git a/docker/.env.example b/docker/.env.example new file mode 100644 index 00000000..9bb16927 --- /dev/null +++ b/docker/.env.example @@ -0,0 +1,16 @@ +DB_HOST=postgres +DB_PORT=5432 +DB_USER=postgres +DB_PASSWORD=votre_mot_de_passe +DB_NAME=gestion_db +DB_SSLMODE=disable +SESSION_SECRET=jfWR21Ywbuy{Yq<1A26TV)jCe +USER_JWT_SECRET=TheAmaziNgSecretJwtMotherFuckerInThEbitCh3232131231313443jqfdksdjfjsldfjlds +ADMIN_JWT_SECRET=TheAmaziNgSecretJwtMotherFuckerInThEbitCh3232131231313443jqfdksdjfjsldfjlzZ +REDIS_HOST=redis +REDIS_PORT=6379 +REDIS_PASSWORD=dndsjvnsdnvjsvdnjsvdn +TOMTOM_API_KEY=MERY8I7LMeYVSLKO5WuV73W9rKJpBLoB +API_PORT=8080 +FRONTEND_PORT=5173 +GIN_MODE=release diff --git a/docker/.gitignore b/docker/.gitignore deleted file mode 100644 index 4c49bd78..00000000 --- a/docker/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.env diff --git a/docker/backend/Dockerfile b/docker/backend/Dockerfile index 8099d540..6464ae4f 100644 --- a/docker/backend/Dockerfile +++ b/docker/backend/Dockerfile @@ -45,7 +45,6 @@ COPY --from=builder /usr/share/zoneinfo /usr/share/zoneinfo COPY docker/backend/entrypoint.sh . RUN chmod +x entrypoint.sh -# ✅ Créer le dossier uploads et donner ownership AVANT de changer d'utilisateur RUN mkdir -p /app/uploads/images /app/uploads/videos && \ chown -R app:app /app @@ -61,20 +60,16 @@ ENTRYPOINT ["./entrypoint.sh"] # ========================================================= FROM owasp/modsecurity-crs:nginx-alpine AS waf -USER nginx +# Toutes les opérations privilégiées en root +USER root -# Logs ModSecurity -RUN mkdir -p /var/log/modsec && chown -R nginx:nginx /var/log/modsec - -# Certificats SSL — montés via volume docker-compose, pas embarqués dans l'image -RUN mkdir -p /etc/nginx/certs && chown -R nginx:nginx /etc/nginx/certs +RUN mkdir -p /var/log/modsec /etc/nginx/certs && \ + chown -R nginx:nginx /var/log/modsec /etc/nginx/certs /usr/share/nginx/html COPY docker/backend/nginx.conf /etc/nginx/conf.d/app.conf COPY docker/backend/custom-rules.conf /etc/nginx/modsec/custom-rules.conf -RUN echo "Include /etc/nginx/modsec/custom-rules.conf" > /etc/nginx/modsec/custom-includes.conf - -RUN rm -f /etc/nginx/templates/conf.d/default.conf.template || true -RUN chown -R nginx:nginx /usr/share/nginx/html +RUN echo "Include /etc/nginx/modsec/custom-rules.conf" > /etc/nginx/modsec/custom-includes.conf && \ + rm -f /etc/nginx/templates/conf.d/default.conf.template || true USER nginx EXPOSE 80 443 diff --git a/docker/certs/mln-uber.club/README b/docker/certs/mln-uber.club/README new file mode 100644 index 00000000..5050078f --- /dev/null +++ b/docker/certs/mln-uber.club/README @@ -0,0 +1,14 @@ +This directory contains your keys and certificates. + +`privkey.pem` : the private key for your certificate. +`fullchain.pem`: the certificate file used in most server software. +`chain.pem` : used for OCSP stapling in Nginx >=1.3.7. +`cert.pem` : will break many server configurations, and should not be used + without reading further documentation (see link below). + +WARNING: DO NOT MOVE OR RENAME THESE FILES! + Certbot expects these files to remain in this location in order + to function properly! + +We recommend not moving these files. For more information, see the Certbot +User Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates. diff --git a/docker/certs/mln-uber.club/cert.pem b/docker/certs/mln-uber.club/cert.pem new file mode 100644 index 00000000..2718f0ee --- /dev/null +++ b/docker/certs/mln-uber.club/cert.pem @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +MIIE9jCCA96gAwIBAgISBhX3GIN5sCWLqUcEdngik2JNMA0GCSqGSIb3DQEBCwUA +MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD +EwNSMTMwHhcNMjYwMzAzMTUyNzM3WhcNMjYwNjAxMTUyNzM2WjAYMRYwFAYDVQQD +Ew1tbG4tdWJlci5jbHViMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +lzhuJFef2CV0OFWo38lekOw/58YLvLYPc56B3gorFwl4PPj/ddbxFb9iJyNmRLPY +G5r9LW27dDplaX5fkG4ylaTsW8EG54zRD3Tn0Gzba0XhHko3VdMwUjdzoTSqpPwM +9fcGv8UEfAMUnLZKAdWT5gjUL8PF1vfcve30VU989E0JHbmJH2lTUOYIHOPkEMlc +LveuGsD1JK6skHK+LLZH5Dz5cA1oH5h9kHIwClt5mdLt6jNJ6fv/wIpnhwE5Rp2a +5WtDvZNO7Km7cxe4NJNlv5xN+7g+9V8QBu+ODwD5IBNxukYlsB61d8u/G8K+aK7H +bmZIw3oXh3K2fhlH0KxNnwIDAQABo4ICHTCCAhkwDgYDVR0PAQH/BAQDAgWgMBMG +A1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFDgU/y2c +MZ6egHOjisZwjx8ELdRSMB8GA1UdIwQYMBaAFOernw8sM6BT015PeMiyhA471pIz +MDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAoYXaHR0cDovL3IxMy5pLmxlbmNy +Lm9yZy8wGAYDVR0RBBEwD4INbWxuLXViZXIuY2x1YjATBgNVHSAEDDAKMAgGBmeB +DAECATAuBgNVHR8EJzAlMCOgIaAfhh1odHRwOi8vcjEzLmMubGVuY3Iub3JnLzc4 +LmNybDCCAQ4GCisGAQQB1nkCBAIEgf8EgfwA+gB/AOMjjfKNoojgquCs8PqQyYXw +tr/10qUnsAH8HERYxLboAAABnLSFZyQACAAABQA0Y55sBAMASDBGAiEA2xweQq3o +b5vcmazBkxlteDGuiIjZkz8SomeyBwnKzQQCIQDfSSNN4cApI3Rz+wx18TYKv/Bk +YSYzyF0vIoGuay6pNAB3ABaDLavwqSUPD/A6pUX/yL/II9CHS/YEKSf45x8zE/X6 +AAABnLSFbi8AAAQDAEgwRgIhAIxk1MhxsGgzjdkeTQsXsSFkho29peOAH/rDm0ql +ST7OAiEAwDLFLJNdvAG3N8qh7WURy2CFoUZVWBKfvJyVedUynkAwDQYJKoZIhvcN +AQELBQADggEBAGb1mS97b4AfjDG69xWJApDtOHrIY5KcIITL6K5gVLwNQkoCN1Bs +eCA9O+C/LGopfHptKAPxR/5oP5jpTmESyV51d8CcdxyMTgqnJ9Y+rSC56yB5N13b +elCrJb6P1evYSqZN8wtC5sZCwnBijikB6Q3u9GaajqL2KoW3GbnuiDLDnUAgAfIV +GUa94Yv9I1Y5RjdoylNvtMzbk39YpUWAdKG309nmnfDJuagTFPKCOo+ybupwGsuT +uB5IZZ5Q6I8RzQwi17ZVgqObRm/jiQyGoqW1OkmzriFxR0Wt/b4XyMaQc5UqsCsi +bXMILgT95pxX1kYQwsh1wU0JDJ5MEZXCjJ4= +-----END CERTIFICATE----- diff --git a/docker/certs/mln-uber.club/chain.pem b/docker/certs/mln-uber.club/chain.pem new file mode 100644 index 00000000..5761df0c --- /dev/null +++ b/docker/certs/mln-uber.club/chain.pem @@ -0,0 +1,29 @@ +-----BEGIN CERTIFICATE----- +MIIFBTCCAu2gAwIBAgIQWgDyEtjUtIDzkkFX6imDBTANBgkqhkiG9w0BAQsFADBP +MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy +Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa +Fw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF +bmNyeXB0MQwwCgYDVQQDEwNSMTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQClZ3CN0FaBZBUXYc25BtStGZCMJlA3mBZjklTb2cyEBZPs0+wIG6BgUUNI +fSvHSJaetC3ancgnO1ehn6vw1g7UDjDKb5ux0daknTI+WE41b0VYaHEX/D7YXYKg +L7JRbLAaXbhZzjVlyIuhrxA3/+OcXcJJFzT/jCuLjfC8cSyTDB0FxLrHzarJXnzR +yQH3nAP2/Apd9Np75tt2QnDr9E0i2gB3b9bJXxf92nUupVcM9upctuBzpWjPoXTi +dYJ+EJ/B9aLrAek4sQpEzNPCifVJNYIKNLMc6YjCR06CDgo28EdPivEpBHXazeGa +XP9enZiVuppD0EqiFwUBBDDTMrOPAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG +MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/ +AgEAMB0GA1UdDgQWBBTnq58PLDOgU9NeT3jIsoQOO9aSMzAfBgNVHSMEGDAWgBR5 +tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG +Fmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD +VR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B +AQsFAAOCAgEAUTdYUqEimzW7TbrOypLqCfL7VOwYf/Q79OH5cHLCZeggfQhDconl +k7Kgh8b0vi+/XuWu7CN8n/UPeg1vo3G+taXirrytthQinAHGwc/UdbOygJa9zuBc +VyqoH3CXTXDInT+8a+c3aEVMJ2St+pSn4ed+WkDp8ijsijvEyFwE47hulW0Ltzjg +9fOV5Pmrg/zxWbRuL+k0DBDHEJennCsAen7c35Pmx7jpmJ/HtgRhcnz0yjSBvyIw +6L1QIupkCv2SBODT/xDD3gfQQyKv6roV4G2EhfEyAsWpmojxjCUCGiyg97FvDtm/ +NK2LSc9lybKxB73I2+P2G3CaWpvvpAiHCVu30jW8GCxKdfhsXtnIy2imskQqVZ2m +0Pmxobb28Tucr7xBK7CtwvPrb79os7u2XP3O5f9b/H66GNyRrglRXlrYjI1oGYL/ +f4I1n/Sgusda6WvA6C190kxjU15Y12mHU4+BxyR9cx2hhGS9fAjMZKJss28qxvz6 +Axu4CaDmRNZpK/pQrXF17yXCXkmEWgvSOEZy6Z9pcbLIVEGckV/iVeq0AOo2pkg9 +p4QRIy0tK2diRENLSF2KysFwbY6B26BFeFs3v1sYVRhFW9nLkOrQVporCS0KyZmf +wVD89qSTlnctLcZnIavjKsKUu1nA1iU0yYMdYepKR7lWbnwhdx3ewok= +-----END CERTIFICATE----- diff --git a/docker/certs/mln-uber.club/fullchain.pem b/docker/certs/mln-uber.club/fullchain.pem new file mode 100644 index 00000000..2bb62ef0 --- /dev/null +++ b/docker/certs/mln-uber.club/fullchain.pem @@ -0,0 +1,58 @@ +-----BEGIN CERTIFICATE----- +MIIE9jCCA96gAwIBAgISBhX3GIN5sCWLqUcEdngik2JNMA0GCSqGSIb3DQEBCwUA +MDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQD +EwNSMTMwHhcNMjYwMzAzMTUyNzM3WhcNMjYwNjAxMTUyNzM2WjAYMRYwFAYDVQQD +Ew1tbG4tdWJlci5jbHViMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +lzhuJFef2CV0OFWo38lekOw/58YLvLYPc56B3gorFwl4PPj/ddbxFb9iJyNmRLPY +G5r9LW27dDplaX5fkG4ylaTsW8EG54zRD3Tn0Gzba0XhHko3VdMwUjdzoTSqpPwM +9fcGv8UEfAMUnLZKAdWT5gjUL8PF1vfcve30VU989E0JHbmJH2lTUOYIHOPkEMlc +LveuGsD1JK6skHK+LLZH5Dz5cA1oH5h9kHIwClt5mdLt6jNJ6fv/wIpnhwE5Rp2a +5WtDvZNO7Km7cxe4NJNlv5xN+7g+9V8QBu+ODwD5IBNxukYlsB61d8u/G8K+aK7H +bmZIw3oXh3K2fhlH0KxNnwIDAQABo4ICHTCCAhkwDgYDVR0PAQH/BAQDAgWgMBMG +A1UdJQQMMAoGCCsGAQUFBwMBMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFDgU/y2c +MZ6egHOjisZwjx8ELdRSMB8GA1UdIwQYMBaAFOernw8sM6BT015PeMiyhA471pIz +MDMGCCsGAQUFBwEBBCcwJTAjBggrBgEFBQcwAoYXaHR0cDovL3IxMy5pLmxlbmNy +Lm9yZy8wGAYDVR0RBBEwD4INbWxuLXViZXIuY2x1YjATBgNVHSAEDDAKMAgGBmeB +DAECATAuBgNVHR8EJzAlMCOgIaAfhh1odHRwOi8vcjEzLmMubGVuY3Iub3JnLzc4 +LmNybDCCAQ4GCisGAQQB1nkCBAIEgf8EgfwA+gB/AOMjjfKNoojgquCs8PqQyYXw +tr/10qUnsAH8HERYxLboAAABnLSFZyQACAAABQA0Y55sBAMASDBGAiEA2xweQq3o +b5vcmazBkxlteDGuiIjZkz8SomeyBwnKzQQCIQDfSSNN4cApI3Rz+wx18TYKv/Bk +YSYzyF0vIoGuay6pNAB3ABaDLavwqSUPD/A6pUX/yL/II9CHS/YEKSf45x8zE/X6 +AAABnLSFbi8AAAQDAEgwRgIhAIxk1MhxsGgzjdkeTQsXsSFkho29peOAH/rDm0ql +ST7OAiEAwDLFLJNdvAG3N8qh7WURy2CFoUZVWBKfvJyVedUynkAwDQYJKoZIhvcN +AQELBQADggEBAGb1mS97b4AfjDG69xWJApDtOHrIY5KcIITL6K5gVLwNQkoCN1Bs +eCA9O+C/LGopfHptKAPxR/5oP5jpTmESyV51d8CcdxyMTgqnJ9Y+rSC56yB5N13b +elCrJb6P1evYSqZN8wtC5sZCwnBijikB6Q3u9GaajqL2KoW3GbnuiDLDnUAgAfIV +GUa94Yv9I1Y5RjdoylNvtMzbk39YpUWAdKG309nmnfDJuagTFPKCOo+ybupwGsuT +uB5IZZ5Q6I8RzQwi17ZVgqObRm/jiQyGoqW1OkmzriFxR0Wt/b4XyMaQc5UqsCsi +bXMILgT95pxX1kYQwsh1wU0JDJ5MEZXCjJ4= +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIFBTCCAu2gAwIBAgIQWgDyEtjUtIDzkkFX6imDBTANBgkqhkiG9w0BAQsFADBP +MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy +Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNDAzMTMwMDAwMDBa +Fw0yNzAzMTIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBF +bmNyeXB0MQwwCgYDVQQDEwNSMTMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQClZ3CN0FaBZBUXYc25BtStGZCMJlA3mBZjklTb2cyEBZPs0+wIG6BgUUNI +fSvHSJaetC3ancgnO1ehn6vw1g7UDjDKb5ux0daknTI+WE41b0VYaHEX/D7YXYKg +L7JRbLAaXbhZzjVlyIuhrxA3/+OcXcJJFzT/jCuLjfC8cSyTDB0FxLrHzarJXnzR +yQH3nAP2/Apd9Np75tt2QnDr9E0i2gB3b9bJXxf92nUupVcM9upctuBzpWjPoXTi +dYJ+EJ/B9aLrAek4sQpEzNPCifVJNYIKNLMc6YjCR06CDgo28EdPivEpBHXazeGa +XP9enZiVuppD0EqiFwUBBDDTMrOPAgMBAAGjgfgwgfUwDgYDVR0PAQH/BAQDAgGG +MB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATASBgNVHRMBAf8ECDAGAQH/ +AgEAMB0GA1UdDgQWBBTnq58PLDOgU9NeT3jIsoQOO9aSMzAfBgNVHSMEGDAWgBR5 +tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAKG +Fmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0gBAwwCjAIBgZngQwBAgEwJwYD +VR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVuY3Iub3JnLzANBgkqhkiG9w0B +AQsFAAOCAgEAUTdYUqEimzW7TbrOypLqCfL7VOwYf/Q79OH5cHLCZeggfQhDconl +k7Kgh8b0vi+/XuWu7CN8n/UPeg1vo3G+taXirrytthQinAHGwc/UdbOygJa9zuBc +VyqoH3CXTXDInT+8a+c3aEVMJ2St+pSn4ed+WkDp8ijsijvEyFwE47hulW0Ltzjg +9fOV5Pmrg/zxWbRuL+k0DBDHEJennCsAen7c35Pmx7jpmJ/HtgRhcnz0yjSBvyIw +6L1QIupkCv2SBODT/xDD3gfQQyKv6roV4G2EhfEyAsWpmojxjCUCGiyg97FvDtm/ +NK2LSc9lybKxB73I2+P2G3CaWpvvpAiHCVu30jW8GCxKdfhsXtnIy2imskQqVZ2m +0Pmxobb28Tucr7xBK7CtwvPrb79os7u2XP3O5f9b/H66GNyRrglRXlrYjI1oGYL/ +f4I1n/Sgusda6WvA6C190kxjU15Y12mHU4+BxyR9cx2hhGS9fAjMZKJss28qxvz6 +Axu4CaDmRNZpK/pQrXF17yXCXkmEWgvSOEZy6Z9pcbLIVEGckV/iVeq0AOo2pkg9 +p4QRIy0tK2diRENLSF2KysFwbY6B26BFeFs3v1sYVRhFW9nLkOrQVporCS0KyZmf +wVD89qSTlnctLcZnIavjKsKUu1nA1iU0yYMdYepKR7lWbnwhdx3ewok= +-----END CERTIFICATE----- diff --git a/docker/certs/mln-uber.club/privkey.pem b/docker/certs/mln-uber.club/privkey.pem new file mode 100644 index 00000000..5f7a5e7a --- /dev/null +++ b/docker/certs/mln-uber.club/privkey.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCXOG4kV5/YJXQ4 +VajfyV6Q7D/nxgu8tg9znoHeCisXCXg8+P911vEVv2InI2ZEs9gbmv0tbbt0OmVp +fl+QbjKVpOxbwQbnjNEPdOfQbNtrReEeSjdV0zBSN3OhNKqk/Az19wa/xQR8AxSc +tkoB1ZPmCNQvw8XW99y97fRVT3z0TQkduYkfaVNQ5ggc4+QQyVwu964awPUkrqyQ +cr4stkfkPPlwDWgfmH2QcjAKW3mZ0u3qM0np+//AimeHATlGnZrla0O9k07sqbtz +F7g0k2W/nE37uD71XxAG744PAPkgE3G6RiWwHrV3y78bwr5orsduZkjDeheHcrZ+ +GUfQrE2fAgMBAAECggEAM4aITPzIW7NDWvChBoOMI9BD5Brgo+/a6vfe40POs95H +qGrlTIctBU59SL2wmoc3Awz36FND9JHzPRNQx5ssxD16RbdLPXmHQH+Cf0ugJfid +AJ+kJCu+Ar2fOhYCcQ3q8qI1nAErCoBYNR+NrvtRlid6+T15O0qgXdznDGx1tJ3G +8zC48UGTxe9Hq19UVKKoCv+Aky1ahXEeRD8ZBU71E0Pd5kBsX/DTgJNbfx5wUwcg +GOckFbOrAR+eI8DVis5PaTLLl/JwCvtfpzyfPppy/t+qv09snI1OIH76WGybzSEd +nLInfZXYhIi53HAssWkCJu3UTTXP+zeamAUBR6ZnEQKBgQDKWCNY06Ao2z7AwRYx +ouAvVmPqhLirBkFPnJ2puQZYnUjRFqW/ygNgbzvVgOLDZVaKM4qbGo9FXLqb4D0l +RHsW1S0U1v4o7sFaop3mFJuhIsZmMRbqyNj60lvNnwie43VAwBQIhaSUBYpVqsR+ +4DMX2/sfDNuI9O9YbBWQ8VPBTwKBgQC/UdHelHN3IDpPlo6nQggwenY5ztaIatb/ +PYrnYberJ5mYQU237s3cqBKFi4TEVb/q53EcTlpQdq+eTna0ClhHu7oVlFJBWJ/a +vuXvAB5E6mT0HxiUZuxNAO4UWaxDLIdqP6R46ptCxiFOyQ32yVVfOHK/4y3eMjgY +mKR76Rx6sQKBgEp93i1yY3EHHfgaXZBSdRQYStpomA+mUt77OnPkQPjYlpkbLFQK +C+oxqSZ1t4XVxeFFDk8BnSMc+zoteHVC28nRGzKj35e0Jgy290hf59ePlNjEU7qF +zJOyY8e0N5k/BcibrgRhJvCzhXT6VDKdWVH8U1vgAOZPvdmgmOPuZDYzAoGAFqgI +03P/DH9riFtK/3GpaJxH/eaJr1P/q/BMz8PZrVIeNVKecoa8KEJbFyeDjICfHqFT +2sdImLjFaVjfY8jJ1Yzcp4uOBiEJpSzwK9J2wzCCzgoUrhZWK3RNvWk1JitSyflJ +b+xQgKLX9O2IUs5a5tDXffPYTbTiwb7p06aycbECgYBKXSmKYT0MjJAd4Pp2iBPy +WFHrf8w6w1w/D86IHAAf63NTWXZTIljsrdmiealb2F0F+Yz+xoY8ndw1vyiw/t53 +HbAGNhuQCtY45iHXNB3f7Vs2BcuB+sPjLzWunJZjAkgy0ASJJlvAQqa2rsY1dP7I +i7FP6nfBp0o0Oc5SmxIWLA== +-----END PRIVATE KEY-----