feat: production deployment

This commit is contained in:
skeris 2024-01-15 19:36:36 +03:00
parent 85b66f37ed
commit fc822ac8c9
5 changed files with 81 additions and 305 deletions

@ -10,48 +10,42 @@ stages:
- build
- deploy
clear-old-images:
tags:
- frontbuild
extends: .clean_template
variables:
STAGING_BRANCH: "main"
STAGING_BRANCH: "staging"
PRODUCTION_BRANCH: "main"
image:
name: docker/compose:1.28.0
entrypoint: [""]
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker image ls
script:
- docker system prune -af
build-app:
extends: .build_template
tags:
- frontbuild
before_script:
- echo PRODUCTION_BRANCH = $PRODUCTION_BRANCH
- echo STAGING_BRANCH = $STAGING_BRANCH
- echo CI_REGISTRY = $CI_REGISTRY
- echo CI_REGISTRY_USER = $CI_REGISTRY_USER
- echo CI_PROJECT_DIR = $CI_PROJECT_DIR
- echo CI_REGISTRY_IMAGE = $CI_REGISTRY_IMAGE
- echo CI_COMMIT_REF_SLUG = $CI_COMMIT_REF_SLUG
- echo DOCKER_BUILD_PATH = $DOCKER_BUILD_PATH
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
variables:
DOCKER_BUILD_PATH: "./Dockerfile"
STAGING_BRANCH: "main"
STAGING_BRANCH: "staging"
PRODUCTION_BRANCH: "main"
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
- |
/kaniko/executor --context $CI_PROJECT_DIR \
--cache=true --cache-repo=$CI_REGISTRY_IMAGE \
--dockerfile $CI_PROJECT_DIR/$DOCKER_BUILD_PATH --use-new-run --snapshotMode=redo \
--destination $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
- docker build -t $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID --build-arg GITLAB_TOKEN=$GITLAB_TOKEN $CI_PROJECT_DIR
- docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
deploy-to-staging:
deploy-to-prod:
tags:
- prod
- front
extends: .deploy_template
variables:
DEPLOY_TO: "staging"
BRANCH: "main"
PRODUCTION_BRANCH: main
before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
rules:
- if: "$CI_COMMIT_BRANCH == $PRODUCTION_BRANCH"
script:
- docker login -u $REGISTRY_USER -p $REGISTRY_TOKEN $CI_REGISTRY
- docker-compose -f deployments/$CI_COMMIT_BRANCH/docker-compose.yaml up -d

@ -5,258 +5,9 @@ server {
server_name _; # managed by Certbot
client_max_body_size 70M;
location /auth {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
return 200;
}
if ($host = admin.pena.digital) {
proxy_pass http://10.6.0.11:59301;
}
if ($host != admin.pena.digital) {
proxy_pass http://10.6.0.11:59300;
}
proxy_hide_header Access-Control-Allow-Origin;
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
}
location /user/ {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
proxy_pass http://10.6.0.11:59300;
}
location /swagger/ {
proxy_pass http://10.6.0.11:59300/;
}
location /heruvym/ {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization,sess always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
proxy_set_header Referer $host;
proxy_set_header Origin $http_origin;
proxy_set_header Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
proxy_pass https://10.6.0.11:1488/;
}
location /strator/ {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
proxy_pass http://10.6.0.11:59303/;
}
location /customer/ {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
proxy_pass http://10.6.0.11:8065/;
}
location /answer/ {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
proxy_pass http://10.6.0.23:1490/;
}
location /squiz/ {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
proxy_pass http://10.6.0.23:1488/;
}
location /squizstorer/ {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
proxy_set_header Referer $host;
proxy_set_header Origin $http_origin;
proxy_set_header Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
proxy_pass http://10.6.0.23:1489/;
}
location /price/ {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
proxy_pass http://10.6.0.11:8001/;
}
location /feedback/ {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type always;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type always;
proxy_set_header Host $host;
proxy_pass http://10.6.0.17:8006/;
}
location /verification1 {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type always;
add_header Access-Control-Allow-Methods GET;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type always;
add_header Access-Control-Allow-Methods GET;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
proxy_pass https://storage.yandexcloud.net;
}
location /squizimages {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type always;
add_header Access-Control-Allow-Methods GET;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type always;
add_header Access-Control-Allow-Methods GET;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
proxy_pass https://storage.yandexcloud.net;
}
location /verification/ {
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
proxy_set_header Referer $host;
proxy_set_header Origin $http_origin;
proxy_set_header Connection '';
proxy_http_version 1.1;
chunked_transfer_encoding off;
proxy_buffering off;
proxy_cache off;
proxy_pass http://10.6.0.17:7035/;
}
location / {
if ($host = hub.pena.digital) {
proxy_pass http://hub;
}
if ($host = docs.pena.digital) {
proxy_pass http://docs;
}
if ($host = admin.pena.digital) {
proxy_pass http://admin_front;
}
if ($host = services.pena.digital) {
proxy_pass http://services;
}
if ($host = links.pena.digital) {
proxy_pass http://dwarfener;
}
if ($host = metrica.pena.digital) {
proxy_pass http://metrica;
}
if ($host = hbpn.link) {
proxy_pass http://respondent;
}
if ($host = oauth.pena.digital) {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Headers content-type,authorization always;
add_header Access-Control-Allow-Methods OPTIONS,GET,POST,PATCH,PUT,DELETE;
proxy_pass http://10.6.0.11:59344;
}
if ($host = newerait.pena.digital) {
proxy_pass http://squizlanding;
}
if ($host = squiz.pena.digital) {
if ($host = quiz.pena.digital) {
proxy_pass http://squiz;
}
}

@ -0,0 +1,7 @@
services:
router:
image: $CI_REGISTRY_IMAGE/main:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
ports:
- 80:80
- 443:443
restart: always

@ -1,30 +1,31 @@
-----BEGIN CERTIFICATE-----
MIIE2jCCA8KgAwIBAgISA//+IOgyhw4Ko9PA9pcrgADhMA0GCSqGSIb3DQEBCwUA
MIIE7TCCA9WgAwIBAgISA523BUijPZMwu4UFaMyPRGs2MA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMzEyMTIwNzU5NTZaFw0yNDAzMTEwNzU5NTVaMBwxGjAYBgNVBAMT
EWRvY3MucGVuYS5kaWdpdGFsMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqxiH
KmvLPlGbIqF/vSq2i2ZkK6XyeDT12WZR+t+UBMRtyJPbpf/Rr3cEhgOzprzmdrT6
TbP6xpcuS31nb3H3AKOCAskwggLFMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAU
BggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU8uFS
aTCM0ITQER5gr1UIeAGUPwgwHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA5h+vnYsU
wsYwVQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMuby5sZW5j
ci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8wgc8GA1Ud
EQSBxzCBxIISYWRtaW4ucGVuYS5kaWdpdGFsghFkb2NzLnBlbmEuZGlnaXRhbIIJ
aGJwbi5saW5rghBodWIucGVuYS5kaWdpdGFsghJsaW5rcy5wZW5hLmRpZ2l0YWyC
FG1ldHJpY2EucGVuYS5kaWdpdGFsghVuZXdlcmFpdC5wZW5hLmRpZ2l0YWyCEm9h
dXRoLnBlbmEuZGlnaXRhbIIVc2VydmljZXMucGVuYS5kaWdpdGFsghJzcXVpei5w
ZW5hLmRpZ2l0YWwwEwYDVR0gBAwwCjAIBgZngQwBAgEwggEGBgorBgEEAdZ5AgQC
BIH3BIH0APIAdwBIsONr2qZHNA/lagL6nTDrHFIBy1bdLIHZu7+rOdiEcwAAAYxd
QRrcAAAEAwBIMEYCIQCWfL9GE8Ks9+ymFT0fZX07MYIJAlSnodusOArxCmyUzgIh
ALEZ8HnCtuQRLdGGcKAQVciA5ZL228yL3LULI/KdlqbgAHcAouK/1h7eLy8HoNZO
bTen3GVDsMa1LqLat4r4mm31F9gAAAGMXUEa7gAABAMASDBGAiEAqHIycZK98/df
Mq0HtzJ10vtL8Z7FrghwHUdLgqlbw3gCIQDVRzpmE7t1UYJx6rvT2VqbJzeH0nc3
mTdIdYSOSfzTgDANBgkqhkiG9w0BAQsFAAOCAQEADcEG9kgNJpd6P6in2bdEyBq/
9kkJj9j78mZUpw0vxCOjCCB518/8xM2VSqhiKr4w9KVVmGaEdLd7Xc3Vswn8i66t
EKj9oRka7blcfWflaHu8eCTLgtvVl1Ab0FLas28ycj0s7DKfpAcAQKcpXYfkkuiN
pLzXDvnQtAajcEqxA30dZ/E6LP9IWcpykiyhg03C55NfP3y6km2nKBh1JpZv2AP4
AqHpxlbrbRJgZGOjehujghcROYVirpKP0UNnKlJ4Ezi2Sj1fd0f3eGFS6VKYBh76
sEkDGdNjSPBnskhJIQTtK3uhir7hlZs1LkwgVDrhteT2k7qGp5BxC5IO7cbBag==
EwJSMzAeFw0yNDAxMTUxNDUxMjFaFw0yNDA0MTQxNDUxMjBaMBwxGjAYBgNVBAMT
EXF1aXoucGVuYS5kaWdpdGFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
AQEAtFJI0PszYuLda5z4BP4+nDf61nolN1RjE/Cg7/CL6703vJBKzhYEm905omj5
j7Bb1O1TcIExJ3lgawF6G9ciGnstjAzb8HSv/lfrlETkJs90CqEJY8b9EbcPdrhp
e8sTteZlI8FbmGAyScOC5aL0Kf3w6Y9uoX0idfovfCDe26KXhRCn6lOHD4Bgdl5l
kjoOqtLIijuR0aPPCnhhxO1QvtkRT18IXjS9yxn5Ty2UuX8K2p4JxrJi5uv2fOcf
ZWzUNjug11C0R1VHgLcQdMGp58vevshV0yWV3BR2IN/D/bsHO+9IRRL0NYjmjKnr
gWXiLUaJbsHcO26sel/qAQZ6TQIDAQABo4ICETCCAg0wDgYDVR0PAQH/BAQDAgWg
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0G
A1UdDgQWBBTjlqjcBq1iI9IEvllIpBNarOigYTAfBgNVHSMEGDAWgBQULrMXt1hW
y65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6
Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iu
b3JnLzAcBgNVHREEFTATghFxdWl6LnBlbmEuZGlnaXRhbDATBgNVHSAEDDAKMAgG
BmeBDAECATCCAQIGCisGAQQB1nkCBAIEgfMEgfAA7gB1ADtTd3U+LbmAToswWwb+
QDtn2E/D9Me9AA0tcm/h+tQXAAABjQ3R+kIAAAQDAEYwRAIgEcS4vLhTg4BaFcTS
s2niyBQJ8qAhhky/haFSyEzXtGkCICFsx1hsYl3/n32iVVE0+Erac/vb9+95fyS4
/rCDX8BgAHUASLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHMAAAGNDdH8
LwAABAMARjBEAiAPxd6qONfCE4Z65wzznHaSLKGNS8kmEopGdnFzuRVRKQIgbq4Q
mufthvTE6Ly/BeFSaazoG9cP8EqvJmXSHpJltmUwDQYJKoZIhvcNAQELBQADggEB
AGvRIZPQ2u+bq9OKKAuq9n4P1ziztLYuk2Rrpt1Vh7nQjKFYnWi7bPay8AyVkida
YiZM1CAgFr5zYjyezG+eehamTHzMOF8UjWe+7BjgtyDz7t6rj/YQUPyzaHksaSFM
cOljuY1y0sS2SBhie1/7cjYdXH2Vqkx3+9QtkOlZKLk/fAVR0gvRMoxd3kVDoWnR
hetVEXROAsPfCOY2s6da+WbeAYjfwOUmBMtSctuHWuwSp2PwoAHHNEfCamWgkDoG
X/WmNdN6hdIDiF0muPf+qrgYx63USYcF73wm6zNi395tbB87xqZnnB8yIjMhLZu3
+mL/c8tXAUu0gNSHk4vKGeY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw

@ -1,5 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghAgj/duarvIANDGO
gZJ02Rzs3CgDtDA9gUP5P/3gQauhRANCAASrGIcqa8s+UZsioX+9KraLZmQrpfJ4
NPXZZlH635QExG3Ik9ul/9GvdwSGA7OmvOZ2tPpNs/rGly5LfWdvcfcA
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC0UkjQ+zNi4t1r
nPgE/j6cN/rWeiU3VGMT8KDv8IvrvTe8kErOFgSb3TmiaPmPsFvU7VNwgTEneWBr
AXob1yIaey2MDNvwdK/+V+uUROQmz3QKoQljxv0Rtw92uGl7yxO15mUjwVuYYDJJ
w4LlovQp/fDpj26hfSJ1+i98IN7bopeFEKfqU4cPgGB2XmWSOg6q0siKO5HRo88K
eGHE7VC+2RFPXwheNL3LGflPLZS5fwrangnGsmLm6/Z85x9lbNQ2O6DXULRHVUeA
txB0wanny96+yFXTJZXcFHYg38P9uwc770hFEvQ1iOaMqeuBZeItRoluwdw7bqx6
X+oBBnpNAgMBAAECggEATB/Ms8TIjb9+gFa08c6ved28HF1WZsROS3WzS3f+adfo
tscnfVcYPQCouyKb8IggTISgTAeOS77W8HWgKi6pLArCULSBCUMJpVNSlbZ7ptK/
h1kykJfJ8HeapKD3jxZNTOZl3jFbzLkXocJS+UTQ1QVqdf9iUfR03t9uunVZ/9gu
dF4fo8XuAUsAsgRQL7VhB0vFBKt9mlBB7HRDwxpN9xbWf7A++hD4oE4OeHJlGyWY
+dsFmN8+ogw8t3UN/KTi4196vTkKAkBuaDGes30cev14aXYirTesKFrM7faoXjVk
yjQV2o4zTdJ9Lr62xYT0SCiKhCFOY8XR/XuE4t/PNQKBgQC+xm7uR/KPicDEU33F
4w4Uz7982uIhjYmxyM1mtKYCNnlgl9Eji1IFv9ZPHTqiQhdKP0fTX1yGk+tMxDve
TH/4AJcozHgxHXlVGKbiKD9QaPqx89qOEr1ThRQ9X26g1w+/dhkvg626slNDdZn+
QOvnRk4V6qGkadOK6o+XHh2mNwKBgQDx+ORT01lfT2f3bza6uJYERK47iNpDn2IX
JJyu2BNoGEbXQB7FBMcaE3AEHDJaJkA2rcl9fqK6pBZC7KnCrYJtrAeosmY6RpXZ
nxcHasuwOM0ERl3gvYt9n3hP/enY+yVHpaDMqbUdkY2tqfsQ4fOOSAj63IB/uOrU
GlpMs6hhmwKBgB7sTUjkcqXfn1ZzbhyobDzlW9WiKStlJN+je9/dAlezesM0eJr5
V0dFTDiwtTNd4SaQ0VSqzXWm/moIGOg0oD2T4uyjEAxuCZ/Iiix4d6LSEWjM7S1A
Tl3+YUR9dpItqgjP3M892eg8RZDWvCphXZu0Yq3cxWzAFqEa2kGViRrLAoGAJEDR
HMoOmtwPzJ+qCIG9YDhWDm9rnDQWAzemDgArsC3q9zcRJR2ZIwwEfWkoFh+jAU46
YQYHJYWOHErPCG7smrfqkdjgvhxzOR6/2YmjqOxpsxlD2Xcsng61fO6jCbJfHIPx
Opi2nQ6AtqNADYB8+DVMuyEsU3aGIG8uVk2Yjb8CgYAovdUL14oeN0kioMYNLG6e
0DiY1qOcHw0AyLaDI43Vk3sWSXpVr9V2S2WvAruqEhMZzz6vHZeOq3UNQrTG5uOa
cjwh9u8SpTbyxpec8QRDSfIYjWZZv6fj9tMtemLTO8lfxLlgjcR5JBpyztSBmGvu
0u/YohWIqT2kQDZ4mq9zwQ==
-----END PRIVATE KEY-----