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 - build
- deploy - deploy
clear-old-images: clear-old-images:
tags:
- frontbuild
extends: .clean_template extends: .clean_template
variables: variables:
STAGING_BRANCH: "main" STAGING_BRANCH: "staging"
PRODUCTION_BRANCH: "main" PRODUCTION_BRANCH: "main"
image: image:
name: docker/compose:1.28.0 name: docker/compose:1.28.0
entrypoint: [""] entrypoint: [""]
before_script: before_script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker image ls
script:
- docker system prune -af
build-app: build-app:
extends: .build_template extends: .build_template
tags:
- frontbuild
before_script: before_script:
- echo PRODUCTION_BRANCH = $PRODUCTION_BRANCH - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- 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: [""]
variables: variables:
DOCKER_BUILD_PATH: "./Dockerfile" DOCKER_BUILD_PATH: "./Dockerfile"
STAGING_BRANCH: "main" STAGING_BRANCH: "staging"
PRODUCTION_BRANCH: "main" PRODUCTION_BRANCH: "main"
script: script:
- mkdir -p /kaniko/.docker - 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
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json - docker push $CI_REGISTRY_IMAGE/$CI_COMMIT_BRANCH:$CI_COMMIT_REF_SLUG.$CI_PIPELINE_ID
- |
/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
deploy-to-staging: deploy-to-prod:
tags:
- prod
- front
extends: .deploy_template extends: .deploy_template
variables: variables:
DEPLOY_TO: "staging" PRODUCTION_BRANCH: main
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 server_name _; # managed by Certbot
client_max_body_size 70M; 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 / { location / {
if ($host = hub.pena.digital) { if ($host = quiz.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) {
proxy_pass http://squiz; 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----- -----BEGIN CERTIFICATE-----
MIIE2jCCA8KgAwIBAgISA//+IOgyhw4Ko9PA9pcrgADhMA0GCSqGSIb3DQEBCwUA MIIE7TCCA9WgAwIBAgISA523BUijPZMwu4UFaMyPRGs2MA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yMzEyMTIwNzU5NTZaFw0yNDAzMTEwNzU5NTVaMBwxGjAYBgNVBAMT EwJSMzAeFw0yNDAxMTUxNDUxMjFaFw0yNDA0MTQxNDUxMjBaMBwxGjAYBgNVBAMT
EWRvY3MucGVuYS5kaWdpdGFsMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqxiH EXF1aXoucGVuYS5kaWdpdGFsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
KmvLPlGbIqF/vSq2i2ZkK6XyeDT12WZR+t+UBMRtyJPbpf/Rr3cEhgOzprzmdrT6 AQEAtFJI0PszYuLda5z4BP4+nDf61nolN1RjE/Cg7/CL6703vJBKzhYEm905omj5
TbP6xpcuS31nb3H3AKOCAskwggLFMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAU j7Bb1O1TcIExJ3lgawF6G9ciGnstjAzb8HSv/lfrlETkJs90CqEJY8b9EbcPdrhp
BggrBgEFBQcDAQYIKwYBBQUHAwIwDAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQU8uFS e8sTteZlI8FbmGAyScOC5aL0Kf3w6Y9uoX0idfovfCDe26KXhRCn6lOHD4Bgdl5l
aTCM0ITQER5gr1UIeAGUPwgwHwYDVR0jBBgwFoAUFC6zF7dYVsuuUAlA5h+vnYsU kjoOqtLIijuR0aPPCnhhxO1QvtkRT18IXjS9yxn5Ty2UuX8K2p4JxrJi5uv2fOcf
wsYwVQYIKwYBBQUHAQEESTBHMCEGCCsGAQUFBzABhhVodHRwOi8vcjMuby5sZW5j ZWzUNjug11C0R1VHgLcQdMGp58vevshV0yWV3BR2IN/D/bsHO+9IRRL0NYjmjKnr
ci5vcmcwIgYIKwYBBQUHMAKGFmh0dHA6Ly9yMy5pLmxlbmNyLm9yZy8wgc8GA1Ud gWXiLUaJbsHcO26sel/qAQZ6TQIDAQABo4ICETCCAg0wDgYDVR0PAQH/BAQDAgWg
EQSBxzCBxIISYWRtaW4ucGVuYS5kaWdpdGFsghFkb2NzLnBlbmEuZGlnaXRhbIIJ MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0G
aGJwbi5saW5rghBodWIucGVuYS5kaWdpdGFsghJsaW5rcy5wZW5hLmRpZ2l0YWyC A1UdDgQWBBTjlqjcBq1iI9IEvllIpBNarOigYTAfBgNVHSMEGDAWgBQULrMXt1hW
FG1ldHJpY2EucGVuYS5kaWdpdGFsghVuZXdlcmFpdC5wZW5hLmRpZ2l0YWyCEm9h y65QCUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6
dXRoLnBlbmEuZGlnaXRhbIIVc2VydmljZXMucGVuYS5kaWdpdGFsghJzcXVpei5w Ly9yMy5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iu
ZW5hLmRpZ2l0YWwwEwYDVR0gBAwwCjAIBgZngQwBAgEwggEGBgorBgEEAdZ5AgQC b3JnLzAcBgNVHREEFTATghFxdWl6LnBlbmEuZGlnaXRhbDATBgNVHSAEDDAKMAgG
BIH3BIH0APIAdwBIsONr2qZHNA/lagL6nTDrHFIBy1bdLIHZu7+rOdiEcwAAAYxd BmeBDAECATCCAQIGCisGAQQB1nkCBAIEgfMEgfAA7gB1ADtTd3U+LbmAToswWwb+
QRrcAAAEAwBIMEYCIQCWfL9GE8Ks9+ymFT0fZX07MYIJAlSnodusOArxCmyUzgIh QDtn2E/D9Me9AA0tcm/h+tQXAAABjQ3R+kIAAAQDAEYwRAIgEcS4vLhTg4BaFcTS
ALEZ8HnCtuQRLdGGcKAQVciA5ZL228yL3LULI/KdlqbgAHcAouK/1h7eLy8HoNZO s2niyBQJ8qAhhky/haFSyEzXtGkCICFsx1hsYl3/n32iVVE0+Erac/vb9+95fyS4
bTen3GVDsMa1LqLat4r4mm31F9gAAAGMXUEa7gAABAMASDBGAiEAqHIycZK98/df /rCDX8BgAHUASLDja9qmRzQP5WoC+p0w6xxSActW3SyB2bu/qznYhHMAAAGNDdH8
Mq0HtzJ10vtL8Z7FrghwHUdLgqlbw3gCIQDVRzpmE7t1UYJx6rvT2VqbJzeH0nc3 LwAABAMARjBEAiAPxd6qONfCE4Z65wzznHaSLKGNS8kmEopGdnFzuRVRKQIgbq4Q
mTdIdYSOSfzTgDANBgkqhkiG9w0BAQsFAAOCAQEADcEG9kgNJpd6P6in2bdEyBq/ mufthvTE6Ly/BeFSaazoG9cP8EqvJmXSHpJltmUwDQYJKoZIhvcNAQELBQADggEB
9kkJj9j78mZUpw0vxCOjCCB518/8xM2VSqhiKr4w9KVVmGaEdLd7Xc3Vswn8i66t AGvRIZPQ2u+bq9OKKAuq9n4P1ziztLYuk2Rrpt1Vh7nQjKFYnWi7bPay8AyVkida
EKj9oRka7blcfWflaHu8eCTLgtvVl1Ab0FLas28ycj0s7DKfpAcAQKcpXYfkkuiN YiZM1CAgFr5zYjyezG+eehamTHzMOF8UjWe+7BjgtyDz7t6rj/YQUPyzaHksaSFM
pLzXDvnQtAajcEqxA30dZ/E6LP9IWcpykiyhg03C55NfP3y6km2nKBh1JpZv2AP4 cOljuY1y0sS2SBhie1/7cjYdXH2Vqkx3+9QtkOlZKLk/fAVR0gvRMoxd3kVDoWnR
AqHpxlbrbRJgZGOjehujghcROYVirpKP0UNnKlJ4Ezi2Sj1fd0f3eGFS6VKYBh76 hetVEXROAsPfCOY2s6da+WbeAYjfwOUmBMtSctuHWuwSp2PwoAHHNEfCamWgkDoG
sEkDGdNjSPBnskhJIQTtK3uhir7hlZs1LkwgVDrhteT2k7qGp5BxC5IO7cbBag== X/WmNdN6hdIDiF0muPf+qrgYx63USYcF73wm6zNi395tbB87xqZnnB8yIjMhLZu3
+mL/c8tXAUu0gNSHk4vKGeY=
-----END CERTIFICATE----- -----END CERTIFICATE-----
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw

@ -1,5 +1,28 @@
-----BEGIN PRIVATE KEY----- -----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghAgj/duarvIANDGO MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC0UkjQ+zNi4t1r
gZJ02Rzs3CgDtDA9gUP5P/3gQauhRANCAASrGIcqa8s+UZsioX+9KraLZmQrpfJ4 nPgE/j6cN/rWeiU3VGMT8KDv8IvrvTe8kErOFgSb3TmiaPmPsFvU7VNwgTEneWBr
NPXZZlH635QExG3Ik9ul/9GvdwSGA7OmvOZ2tPpNs/rGly5LfWdvcfcA 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----- -----END PRIVATE KEY-----