Add a certificate generator makefile/config

Update XOS core certificates

Change-Id: I1e4cda425704e724b9b494609f2e7777424c1951
diff --git a/scripts/pki/.gitignore b/scripts/pki/.gitignore
new file mode 100644
index 0000000..6ec615a
--- /dev/null
+++ b/scripts/pki/.gitignore
@@ -0,0 +1,5 @@
+*.pem
+*.key
+*.csr
+root_ca
+helm_xos_pki.yaml
diff --git a/scripts/pki/Makefile b/scripts/pki/Makefile
new file mode 100644
index 0000000..a21f042
--- /dev/null
+++ b/scripts/pki/Makefile
@@ -0,0 +1,110 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# XOS pki makefile
+# Configuration is also given in xos-pki.cnf
+
+SHELL = bash -eu -o pipefail
+
+# parameters
+KEY_SIZE         ?= 2048
+EXPIRATION_DAYS  ?= 366
+OPENSSL_CNF      ?= xos-pki.cnf
+
+# utility/validation targets
+
+help:
+	@echo "Usually you want to run 'make helm_xos_pki.yaml'"
+
+validate:
+	 openssl verify -verbose -purpose sslserver -CAfile xos-CA.pem xos-core.crt
+
+printca: xos-CA.pem
+	openssl x509 -in $< -text -noout
+
+printkey: xos-core.key
+	openssl rsa -in $< -check
+
+printcsr: xos-core.csr
+	openssl req -in $< -text -noout -verify
+
+printpem: xos-core.pem
+	openssl x509 -in $< -text -noout
+
+all_certs: xos-core.pem
+
+helm_xos_pki.yaml: xos-CA.pem xos-core.pem xos-core.key
+	@echo "Creating helm compatible YAML file containing certs"
+	@echo "---" > $@
+	@echo "# Certificates can be regenerated with scripts/pki/Makefile" >> $@
+	@echo "# Created on: `date -u`, good for $(EXPIRATION_DAYS) days" >> $@
+	@echo "ca_cert_chain: |" >> $@
+	@cat xos-CA.pem | base64 -b 72 | sed 's/^/  /' >> $@
+	@echo "secrets:" >> $@
+	@echo "  core_api_cert: |" >> $@
+	@cat xos-core.pem | base64 -b 72 | sed 's/^/    /' >> $@
+	@echo "  core_api_key: |" >> $@
+	@cat xos-core.key | base64 -b 72 | sed 's/^/    /' >> $@
+
+clean:
+	rm -rf root_ca *.pem *.key *.csr helm_xos_pki.yaml
+
+# CA creation
+root_ca:
+	mkdir -p root_ca/private root_ca/newcerts
+	chmod 700 root_ca/private
+	echo 1000 > root_ca/serial
+	touch root_ca/index.txt
+
+root_ca/private/ca_root_phrase: root_ca
+	@echo "TestingXOSRootCAPassPhrase" > root_ca/private/ca_root_phrase
+
+root_ca/private/ca_key.pem: root_ca root_ca/private/ca_root_phrase
+	@echo "## Creating CA private key, $@"
+	openssl genrsa -aes256 \
+	  -passout file:root_ca/private/ca_root_phrase \
+	  -out root_ca/private/ca_key.pem $(KEY_SIZE)
+
+xos-CA.pem: xos-pki.cnf root_ca/private/ca_key.pem
+	@echo "## Creating self-signed CA public key: $@"
+	openssl req -config $(OPENSSL_CNF) \
+	  -new -x509 -days $(EXPIRATION_DAYS) -sha256 \
+	  -extensions v3_ca \
+	  -key root_ca/private/ca_key.pem \
+	  -passin file:root_ca/private/ca_root_phrase \
+	  -subj "/C=US/ST=California/L=Menlo Park/O=ONF/OU=Testing Only/CN=CORD Test Root CA" \
+	  -out $@
+
+# cert creation
+.PRECIOUS: %.key %.csr # don't delete intermediate files
+
+%.key:
+	@echo "## Creating server private key: $@"
+	openssl genrsa -out $@ $(KEY_SIZE)
+
+%.csr: %.key $(OPENSSL_CNF)
+	@echo "## Creating signing request $@ from $<"
+	openssl req -config $(OPENSSL_CNF) \
+	  -new -sha256 -key $< \
+	  -subj "/C=US/ST=California/L=Menlo Park/O=ONF/OU=Testing Only/CN=$*" \
+	  -out $@
+
+%.pem: %.csr xos-CA.pem $(OPENSSL_CNF)
+	@echo "## Signing voltha.csr to create signed public key: voltha.crt"
+	openssl ca -config $(OPENSSL_CNF) \
+	  -batch -days $(EXPIRATION_DAYS) -md sha256 \
+	  -passin file:root_ca/private/ca_root_phrase \
+	  -extensions $* \
+	  -in $< \
+	  -out $@
diff --git a/scripts/pki/README.md b/scripts/pki/README.md
new file mode 100644
index 0000000..302b3e1
--- /dev/null
+++ b/scripts/pki/README.md
@@ -0,0 +1,7 @@
+# XOS certificate generation
+
+Run `make` on a system with the `openssl` cli tool installed to see options.
+
+Most likely you'll want to run `make helm_xos_pki.yaml` to generate a helm
+values file with base64 encoded certificates in it.
+
diff --git a/scripts/pki/xos-pki.cnf b/scripts/pki/xos-pki.cnf
new file mode 100644
index 0000000..5349054
--- /dev/null
+++ b/scripts/pki/xos-pki.cnf
@@ -0,0 +1,88 @@
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+[ ca ]
+default_ca  = CA_default
+
+[ CA_default ]
+dir               = ./root_ca
+certs             = $dir/certs
+crl_dir           = $dir/crl
+new_certs_dir     = $dir/newcerts
+database          = $dir/index.txt
+serial            = $dir/serial
+
+private_key       = $dir/private/ca_key.pem
+certificate       = xos-CA.pem
+
+# Make new requests easier to sign - allow two subjects with same name
+# (Or revoke the old certificate first.)
+unique_subject    = no
+preserve          = no
+
+# for CA that signs client certs
+policy            = policy_loose
+
+[ policy_loose ]
+# Allow the to sign more types of certs
+countryName             = optional
+stateOrProvinceName     = optional
+localityName            = optional
+organizationName        = optional
+organizationalUnitName  = optional
+commonName              = supplied
+emailAddress            = optional
+
+[ req ]
+default_bits         = 2048
+default_days         = 366
+default_md           = sha256
+distinguished_name   = req_distinguished_name
+string_mask          = utf8only
+x509_extensions      = v3_ca
+
+[ req_distinguished_name ]
+# See <https://en.wikipedia.org/wiki/Certificate_signing_request>.
+countryName                     = Country Name (2 letter code)
+stateOrProvinceName             = State or Province Name
+localityName                    = Locality Name
+0.organizationName              = Organization Name
+organizationalUnitName          = Organizational Unit Name
+commonName                      = Common Name
+emailAddress                    = Email Address
+
+# Defaults DN
+countryName_default             = US
+stateOrProvinceName_default     = California
+localityName_default            = Menlo Park
+0.organizationName_default      = ONF
+organizationalUnitName_default  = Testing Only
+commonName                      = CORD Testing
+emailAddress_default            = do-not-reply@opencord.org
+
+[ v3_ca ]
+# Extensions for a typical CA (`man x509v3_config`).
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid:always,issuer
+basicConstraints = critical, CA:TRUE
+keyUsage = critical, digitalSignature, cRLSign, keyCertSign
+
+# Extensions for certificates (`man x509v3_config`).
+[ xos-core ]
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid,issuer:always
+basicConstraints = CA:FALSE
+keyUsage = critical, digitalSignature, keyEncipherment
+extendedKeyUsage = serverAuth
+subjectAltName = 'DNS:xos-core, DNS:xos-core.default, DNS:xos-core.default.svc.cluster.local'
diff --git a/xos-core/templates/coreapi-cert-secret.yaml b/xos-core/templates/coreapi-cert-secret.yaml
index 048f552..463d226 100644
--- a/xos-core/templates/coreapi-cert-secret.yaml
+++ b/xos-core/templates/coreapi-cert-secret.yaml
@@ -20,5 +20,7 @@
   namespace: default
 type: kubernetes.io/tls
 data:
-  tls.crt: {{ .Values.secrets.core_api_cert }}
-  tls.key: {{ .Values.secrets.core_api_key }}
+  tls.crt: |
+{{ .Values.secrets.core_api_cert | indent 4 }}
+  tls.key: |
+{{ .Values.secrets.core_api_key | indent 4 }}
diff --git a/xos-core/values.yaml b/xos-core/values.yaml
index 044317c..a7ae5db 100644
--- a/xos-core/values.yaml
+++ b/xos-core/values.yaml
@@ -70,8 +70,164 @@
   xosDBUser: 'postgres'
   xosDBPassword: 'password'
 
-ca_cert_chain: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUYyakNDQThLZ0F3SUJBZ0lDRUFBd0RRWUpLb1pJaHZjTkFRRUxCUUF3Z1lreEN6QUpCZ05WQkFZVEFsVlQKTVJNd0VRWURWUVFJREFwRFlXeHBabTl5Ym1saE1STXdFUVlEVlFRSERBcE5aVzVzYnlCUVlYSnJNUTh3RFFZRApWUVFLREFaUFRpNU1ZV0l4R0RBV0JnTlZCQXNNRDFSbGMzUWdSR1Z3Ykc5NWJXVnVkREVsTUNNR0ExVUVBd3djClEwOVNSQ0JVWlhOMElFUmxjR3h2ZVcxbGJuUWdVbTl2ZENCRFFUQWVGdzB4TnpFeU1UUXdNRFE1TUROYUZ3MHgKT1RFeU1UUXdNRFE1TUROYU1HNHhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJREFwRFlXeHBabTl5Ym1saApNUTh3RFFZRFZRUUtEQVpQVGk1TVlXSXhHREFXQmdOVkJBc01EMVJsYzNRZ1JHVndiRzk1YldWdWRERWZNQjBHCkExVUVBd3dXVFhsVGFYUmxJRWx1ZEdWeWJXVmthV0YwWlNCRFFUQ0NBaUl3RFFZSktvWklodmNOQVFFQkJRQUQKZ2dJUEFEQ0NBZ29DZ2dJQkFPTDVRT0l5YmpJRXRjVkY3Y2hRV3c0Q3Z1QkhCVGpCSmMxcEh3SjRDSzlsYm04RgpJMXNFbW1pd20yTWtJRG9WQ2lBQk5ld1JtVTRTcU4wUG5QOWlGNjV2NlpTbHlXT25hVHF1SitTck9tM1F6MHZmCkZuSHZmWkZycC9BU3FhUlBxQVUrVlR3dTVsb2VHcEZIS3F1MXhxZUpQNWlSaVdTS3hWdk1XeS9TUnhsU0FudVkKTG84WkRrWllpdWZYY1dJaEMzWGdXb081ckVuZVcxS1FXdWdnU1l1dUFPMDJkV2hPQklJTlJPQTZSdUdWdWw0Uwo1S1oxTE5tclAyS2c1a0JoaG1xclhLZWJudzdkZTg2emthV0RlcG1LajZiUWtiRGNWYTJXdU1mTS9Yd0dqd0d3CkwwT2RRRzB3dzFhMFdYTi9NMU5WVnBManNFTDZ2U0Q0UlR0RlZYZWFPRkZ3VGphUXpVSGgxUHdsRkI1S25nM0oKcXBnNzdRdXUvVFdvcHI5ZXBPNk1oZ25KSmliSzB3MzZvaUt1YUJiMGt4TjlKOHVQbERiWlpuRm1NYk9jYjVNOQpzU1A0cTJ3ODJuYkdmRm0rZFR6OU9Ddi9aUWc3Nm5XTk8vVWFEMFR6c25zZjBMZ3dXL1dqR3pEd0w3Rk0vTXRoCnI2eUQ5dVRiRnR1TzdGbGp4NUZMZ2thc200bzRQbzBsR3RFMCtWUXg5bTRiN014R1RITThBcm1ES1lzTTJTeXUKdG5ZeXBHQjE4T0c2NENrTEhzejJkU2dhb1BVVDY1MW9UbnRTZDZMU2hGazR1VVpxVjdrYnBzSGRhK2s0UlgwNApSejI3RUcwQ0V3R0RDYnhVTnJCcVlTZzdZNENJSklodnB1Mm8vSGNsREsxV09tZGYrL3h2M0M0RHBYb1RBZ01CCkFBR2paakJrTUIwR0ExVWREZ1FXQkJSWis4akR3eVRORzdzMVAzdElEY2Q0RXFCbnZEQWZCZ05WSFNNRUdEQVcKZ0JUVFVvazdCSzZnVHZ2cjFnUkJxUyswdDBjanNUQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZApEd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBemU1NlZGTjRJRkdQaVk4ZHZkL1pscCtxCjMvSENUdDFJemE5cFlhTi9KY2U3b1hlOVRNZDJWWXJ5VmdWZVc1aWJ5eDdQVGhINFBDMHRrMUZFeUNoZFZHV0IKclRrSGE4T25vQ0lqdVFDS3FPV1hPRkNMMkQyaEwxTjRFNHYyeW02UmpNeWVMRDgvQW8wUGUvYkFyUGVkZHV6WgplY21MdTFLN2Q2Y3RPbmV6cXJwRm1YemN2WDVVUFFyVlppWHFGcHVxRzl1TWQrTkVMTWFTMC85K3NwUlF6VE5WClg4RStET1RsbVU5eTVxMHNiR0ZscFV0a0JuVnJ4cllQV2tLMnRWK2phOGpLSitiZFJuNktSZzIyZjkyTndleFMKK1BlUWI0bzltOG9jSnVFanpnczZDbjM3L3FIWXc1YXVjdkJBUU4yYk85NXArN2k0WGh2OVo3UjRGcFE3amY2QgpSV3NSc3dvclpTZWo3N1Fva0JqQ1VZVzVnK2xObHh1UjRacks5VjMxVC9USkkrSHB5YjJYSVFWYUJxbkF3bGRxCnlsNGZMN3dibTg1blQ4Q29tZ1prRWZzMEd3T2FHOFhWdEFROTJGQ3p5bFdKcXpYaEVNbElzdlNqVCs5ZU5FZzIKM0Vnc24xendRdU14aWRpQk5DaThyT3c3UlNBN0UzM1l6TTBMQk5pRWJSS012YWVKbm1sUU5tZGh5YmJXYUpwQwp6R1hYd1lMRkhjK3FsUGsvMFdodVJvNVVKRUx5REJ0ai9HK0U2OFhLdm1iSUZMdjdJNmN0S2Z3RHhZNVFXajJvCmF0NDlsS3dWMS9jUSt0d3B1Ym1NcmtYUzlwaExhVHBvTFNiOVRFUDZTWmVqNVgzQVB2aUVzZkltUjlLQ0MwSHMKRzBnL0pVTkgyVWJWbU5pZld2bz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KTUlJRitqQ0NBK0tnQXdJQkFnSUpBSnhvbU5IbkovTXRNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1JR0pNUXN3Q1FZRApWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tRMkZzYVdadmNtNXBZVEVUTUJFR0ExVUVCd3dLVFdWdWJHOGdVR0Z5CmF6RVBNQTBHQTFVRUNnd0dUMDR1VEdGaU1SZ3dGZ1lEVlFRTERBOVVaWE4wSUVSbGNHeHZlVzFsYm5ReEpUQWoKQmdOVkJBTU1IRU5QVWtRZ1ZHVnpkQ0JFWlhCc2IzbHRaVzUwSUZKdmIzUWdRMEV3SGhjTk1UY3hNakUwTURBMApPRFUzV2hjTk1qY3hNakV5TURBME9EVTNXakNCaVRFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ01Da05oCmJHbG1iM0p1YVdFeEV6QVJCZ05WQkFjTUNrMWxibXh2SUZCaGNtc3hEekFOQmdOVkJBb01CazlPTGt4aFlqRVkKTUJZR0ExVUVDd3dQVkdWemRDQkVaWEJzYjNsdFpXNTBNU1V3SXdZRFZRUUREQnhEVDFKRUlGUmxjM1FnUkdWdwpiRzk1YldWdWRDQlNiMjkwSUVOQk1JSUNJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBZzhBTUlJQ0NnS0NBZ0VBCjBQMWNhZTluQThEYUdBMEM3L0pnbk0zWCtJdk1rMlVaem1hdHJuL1FhVTZhWWZZbWNRTW5LOGZYbDBoTmg0cVQKZVc1QlVFeUE5Q1I3Q0lXSDh1ZVkvWnBFaDJ2SHB1U0hBWk1YcFdjOWtNYmRCUHVYQlpNTFZXRjFpYXhYdm9TcgpocGNLNmxzRFd3a3JrT2IvbjVHTUpPR1VDYk5aalBUdjJLMkt3UW1kTE1FQmg3S29CT1k1SVNoL1lFL3AyNExGCmhCVVAxTEJ5dXBSUExEdkJhazkrc3h0NVpyM3BtRDh1clpuekNGMnVQZ09rWFJNRStRM081Rmg5eU91TzNDYXkKazNhQnlWRmhJMnRjdUdFTXFodmNoeU9QaDhPNEFXb2xJbnVyWFRCNWpqcHNVSlFlWlBZLzFuaHAxU1VOckNnKwpFbnlvclBtVW5JL1BqWW9SV1E3U1htcWRKanFKVm5XZUZ5eThXeU8xeGl2QTVsTzFrZVRlbFVvWnhxSUlieUtiCjVKcEdNMnFUaTR3dlo1cXdHL1Z2emUzN0cwOUk5bjBlZ1FsdDBrRmI3N2Z4TVRyYzZIKzV0ZkNOZVBWZ0FYajIKalJ1bnBFTDhsS1ZOdHJqVEQ5aEQ4Mm10a3FPcVFZZ29jWDRldXVNQWFNSE5QMzdmWWpvNjBEQXRUNzNPRnNMNApnRGc0ZnlOaG4rQmdKK2pkU2IxNGRpT2lxRG0zcnYrZDhZeWpCd0p6dXJyOXhnMU5zQnI1ZjVZNTgzbDN5UElyCnVSOEV5UzBuNjNIMG4wWkUvT1VuV253dzZGTWVCNXZBc2ZUVDlxZlJhQ1QvUXZTcmFzSVJwd2pCRzFBZ3FlWUUKT3R6QzE3WXQzckx0K3NhU1VyVTI4dnZJelREL2UrS3QxV0RBdHllRWRuVUNBd0VBQWFOak1HRXdIUVlEVlIwTwpCQllFRk5OU2lUc0VycUJPKyt2V0JFR3BMN1MzUnlPeE1COEdBMVVkSXdRWU1CYUFGTk5TaVRzRXJxQk8rK3ZXCkJFR3BMN1MzUnlPeE1BOEdBMVVkRXdFQi93UUZNQU1CQWY4d0RnWURWUjBQQVFIL0JBUURBZ0dHTUEwR0NTcUcKU0liM0RRRUJDd1VBQTRJQ0FRQTNMWkFoSGVHTnZtMVZaSG1xMUkySU5JVGxnZXg0bldZMy90Y3VCUXpDN1RpbgpJNk1rdWVTVUdoN3JSMWJ6Q1UyUlpvd2E1aGkyQzRVSEJYcWR2cDRoRnNoL2MvV0VEVmtNbWttWS9lTERJVjZDClVXUGpYaXRmeDlrWkh4eWZJbEVNc3JuS3lmTFRDK0E3ZkxOQWhocE1OZHFFZlB3UG9GbTFzbGVuSG54NU9PMWkKY2NZUVc4d2tIS1pCQzdhUElZbXdiSEFIWGpPeGFmYkpKUmFRQ2hhTURHdmt0b0NwaVdzWWxydWx0SHRYRU1tQgpuVWliM0k3VFhFekNBdFVONDN4a1MwY21ZWXZkK3I4M24vSEZLWk5VeHl5NXRXZUJZWE0xWVFiQTBGTU1qQnhYClg5ZGppYkxVTC9oenJ3ZkFLa1dPMFRQMWxrV1cwTkh5d3BySVdtWmVUVWJJb3dVWFRpSFdYMzk3a241QTRMMngKZHFhQS94TFEvMjd4VUJnUmJZZ1J0eVY4eWJWQWdUNEdKbyswY1NvR1EycTdMVzVidWxUMjM1ZjZqSEM5b0xHTwo2UDVwenYrZWozS1BSdWZDVlJMMHk4WjlHYlAzZmVxejQ0bHNXRWg3N056UWdSaVdaYUMxdFFaYjFKWitmam5ECnVHZlJNM085WW9Lb0tKMHo1VW5WVk13TDl0K0JFbVp5TGNvYzRoVVgzTDJjT1VpM0VaaC9jeTEvREpGODg0UDcKQlgyY0lWcWM4ZU1rL1ZYbE5CY1d3RlpzVGM4Vk56SUprbExKYlJuOERQWmhxWHNlYjBCZXNlU1B6M0EvKzh4TApCZTJzbFBPK01KWVdLSGZPKzNvZmNibUFpUnMvNTkxOVpiMy9rVyt4c3ROQ1V3b0pBeTk1bXF2Ukg4TFo0Zz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=
+# certs created on: Thu Dec 13 23:16:51 MST 2018
+ca_cert_chain: |
+  LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUQxakNDQXI2Z0F3SUJBZ0lKQUt4T2h4
+  bzZuMDVhTUEwR0NTcUdTSWIzRFFFQkN3VUFNSGd4Q3pBSkJnTlYKQkFZVEFsVlRNUk13RVFZ
+  RFZRUUlEQXBEWVd4cFptOXlibWxoTVJNd0VRWURWUVFIREFwTlpXNXNieUJRWVhKcgpNUXd3
+  Q2dZRFZRUUtEQU5QVGtZeEZUQVRCZ05WQkFzTURGUmxjM1JwYm1jZ1QyNXNlVEVhTUJnR0Ex
+  VUVBd3dSClEwOVNSQ0JVWlhOMElGSnZiM1FnUTBFd0hoY05NVGd4TWpFME1EWXhOalV4V2hj
+  Tk1Ua3hNakUxTURZeE5qVXgKV2pCNE1Rc3dDUVlEVlFRR0V3SlZVekVUTUJFR0ExVUVDQXdL
+  UTJGc2FXWnZjbTVwWVRFVE1CRUdBMVVFQnd3SwpUV1Z1Ykc4Z1VHRnlhekVNTUFvR0ExVUVD
+  Z3dEVDA1R01SVXdFd1lEVlFRTERBeFVaWE4wYVc1bklFOXViSGt4CkdqQVlCZ05WQkFNTUVV
+  TlBVa1FnVkdWemRDQlNiMjkwSUVOQk1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0MKQVE4
+  QU1JSUJDZ0tDQVFFQXhQMEpSNWl3dTdOWFhqb3RPTUJPaGtrcmkvaDdYTlBEYnZ1bTJNT2Zr
+  Ri8xNHFMWApEdTE1REprU1ZkMTNMSjh6dW9mTUpoSUgzSHZtS2QwZitMeVd6UkQ2UWhnTHl2
+  blMybnJmZFFVYXNuRDgxbnpPCmUxL3ZTT1dHZThsczV0WS8zV3FUNWhHdkRkRDhDTmRNSzYx
+  V01vM242dzRCZHR1ZzZYbTdrS2ZPOW92YmRiNjQKdUxzVWNmMk9jUGx3bVJ4b0VPWlMzYlJ5
+  UmM4VE5obFpWL1RwTkMyMkRHVFNwSUxkMXh0VVJLU0FYSHlxREducgpQQmQyYUE1aFhYbjFn
+  Zkt2YVhxR2xZVEZGRXRJbkVxdEtzRFp5WXVSb1NyOFpBdXpObWVwcVZ0MHlvRFFseXVLCmlO
+  STFiNVBUNDFYV0dlTVNTSFoxN2hXbEt3RGdIcWdzR0FYWGpRSURBUUFCbzJNd1lUQWRCZ05W
+  SFE0RUZnUVUKTEJrNzNkc20reHpZY01weG1rQ3BCa1BwNWMwd0h3WURWUjBqQkJnd0ZvQVVM
+  Qms3M2RzbSt4elljTXB4bWtDcApCa1BwNWMwd0R3WURWUjBUQVFIL0JBVXdBd0VCL3pBT0Jn
+  TlZIUThCQWY4RUJBTUNBWVl3RFFZSktvWklodmNOCkFRRUxCUUFEZ2dFQkFISDRSazFJUUhQ
+  Z1UvSElPalJPdjZUeWNlcUVTblVFL2UyV2NycUFZNU9Hc0JuWC9iTXAKNkhVZHU1N0dPT1Bt
+  WUhseWY4aUE0bHNtYkVIYjZQL3NudWI0SlhmcVh2WS9mVkk5TXZGc3FjazJrcDhOeFhrLwpB
+  cUN0R29Qdjk1UGJ0UEVqbWIrRmErOHpoaTlDSkMzSktEek91TFZnSWI0bDdKRStpREpSYitr
+  Z2Jpelp1VFFkCk1VRFB3Y2tLU24rd1ZMUjRENU5vSDVhOGswaGFDMll3N3dBVSsraVFZS3Vp
+  bWRlaUowWEJ5cTlHdXBoM29PL3AKUGJHb1VZc2diRW5FRmhSVUREQXd1M0M5Nlk0SnhaVVFX
+  WUo5OVBvWHYrNnZ3ckw1V0NtdExuVkxLcGsya08wKwpXOUVLNUJ1c1E3RXN6ZkE3TzJ0NE10
+  V2NtcmVpMHBlMFBZRT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
 
 secrets:
-  core_api_cert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZvVENDQTRtZ0F3SUJBZ0lCQWpBTkJna3Foa2lHOXcwQkFRc0ZBREJ1TVFzd0NRWURWUVFHRXdKVlV6RVQKTUJFR0ExVUVDQXdLUTJGc2FXWnZjbTVwWVRFUE1BMEdBMVVFQ2d3R1QwNHVUR0ZpTVJnd0ZnWURWUVFMREE5VQpaWE4wSUVSbGNHeHZlVzFsYm5ReEh6QWRCZ05WQkFNTUZrMTVVMmwwWlNCSmJuUmxjbTFsWkdsaGRHVWdRMEV3CkhoY05NVGN4TWpFME1EQTBPVEEyV2hjTk1UZ3hNakUwTURBME9UQTJXakNCZ0RFTE1Ba0dBMVVFQmhNQ1ZWTXgKRXpBUkJnTlZCQWdNQ2tOaGJHbG1iM0p1YVdFeEV6QVJCZ05WQkFjTUNrMWxibXh2SUZCaGNtc3hEekFOQmdOVgpCQW9NQms5T0xreGhZakVhTUJnR0ExVUVDd3dSVFhsVGFYUmxJRVJsY0d4dmVXMWxiblF4R2pBWUJnTlZCQU1NCkVYaHZjeTFqYjNKbExtTnZjbVF1YkdGaU1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQkNnS0MKQVFFQTQwc3ZtbzBnK1dtZVdxQ083djR4ZFBUK1h5OHdVSTYxcGFacWdmZXhZT3lYSkpxMW1lSUlVZnNtSVl6VAp3cFBodEh4c2YzbE8rUGZwRzk4a3NHNXgvVUV5djhlN2RLaHpDalFrcER1b0loRUMwdUcrbjZDTVJsMDF0elRyCnFGaCtNVURoUmV4SFhRcjV5Z3c5TFBNU0RkL3dhYWduN21RelZTdzJ0bnpha3Y3ODY3YzFPRFFHekxyRGx4RVUKQ3FaY1F2cUV5UnJHWmF6WlZ0SFJmamV0eldKdzZYbDRVUGl6eldqVWFaMEhPMG9JWFMwa0tmbjhrZ1c4dDZEUgpuNDFTTTRRQlZTY21XWm9WUUFOc1lCL0ROZEdGMDF2ODUvVktMV2J5YkVUbGJCVXZhSEVPZWJCMlo1Tm1tcXZ6CkpEN1JRbVdJaWZrUjVLOWZWTjdtNERRc01RSURBUUFCbzRJQk5UQ0NBVEV3SFFZRFZSME9CQllFRkIzeEFHNzIKZ3VhZ29rOEJzT3orZnQxd0htMC9NSUczQmdOVkhTTUVnYTh3Z2F5QUZGbjd5TVBESk0wYnV6VS9lMGdOeDNnUwpvR2U4b1lHUHBJR01NSUdKTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNBd0tRMkZzYVdadmNtNXBZVEVUCk1CRUdBMVVFQnd3S1RXVnViRzhnVUdGeWF6RVBNQTBHQTFVRUNnd0dUMDR1VEdGaU1SZ3dGZ1lEVlFRTERBOVUKWlhOMElFUmxjR3h2ZVcxbGJuUXhKVEFqQmdOVkJBTU1IRU5QVWtRZ1ZHVnpkQ0JFWlhCc2IzbHRaVzUwSUZKdgpiM1FnUTBHQ0FoQUFNQWtHQTFVZEV3UUNNQUF3RGdZRFZSMFBBUUgvQkFRREFnV2dNQk1HQTFVZEpRUU1NQW9HCkNDc0dBUVVGQndNQk1DWUdBMVVkRVFRZk1CMkNFWGh2Y3kxamIzSmxMbU52Y21RdWJHRmlnZ2g0YjNNdFkyOXkKWlRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQWdFQVRPYmFpWHNBS3hlUTRLN2QwVXV0d0RWeXFka29lTkhwbm1QWApIS1JOY2w4eEUwZjZxczdxcTl3VlJ3NDhiMVlkTEhzcHAyclRsUGY3d09WSUw4UEhVWElUWlkyL0p0b0tQTlRnClp6Wlpxd2tsVEdSekJoYStESE8ydzdlYzZPWDZXcVM5U091aXRsZnhFWjVPNm45WUJha3VUc1hOZHZYbW9rTDAKK3ZwMkVHSHpSYlgxaDc1R3JPbmhjem03Q1FjaU5HVUlqZDNrN0RsK0RsMGs2Tm5aK2VXbUltd0RuU2lzdzhuVwpZUUVGRHgxYlNKYVpNS0NwM0hyN2s5b1ByL0JsYkJPaXI4Yis4em91Vm5BYkVRWVdiV3hwVWVlNXNQT2tEamd3ClV6d0lHVnRSYjBZTlpaS3BEdTIwOUxLYjQ5dFR5TXBmaVdUNTU4VzZJTU9lV3lia1Izd0RvUXFNVHpvNHBUaHEKdFh5T2JJZ2Z2MHJLbU1rM2NPMWNLM1R2ODdNMFJ2a2YrajFnTEVYWTdlK1BiSXYvNExaUTVnUUpua1lLVXY3WApVWmlFRDdRdlVEbnk5M1hKNzc5S0cxTkRNZkx1QTFKU2p4USsrcDFHL3VzLzNwcmg2SmViVUJrUjRZaklIeHRlCmNDYTFpdE5wN0crWWkxdHU0TUN3dEZ5Y1QxbzRaS2o2MThPUXJRRjc1RG9RWGNiU2ZyM1NSVTF5aU1FQzdrM08KTkE4TXdOZjB1WWljRlZ4aG93U1FLME16dWh0QnR6ZDhMTjd0YVBrL1FGOTRyNU85aWF0b205Q2lzaW1GWXAvNwp4R1g3eEJvTWI1U2JNZVI1bXYrbmlUUWExb1hZQXBSU2ZHSW8yeWxTaDdaZFhjUy9ySlNETWxzYVg1L3lUcXRMCkhWRW0xNDQ9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUYyakNDQThLZ0F3SUJBZ0lDRUFBd0RRWUpLb1pJaHZjTkFRRUxCUUF3Z1lreEN6QUpCZ05WQkFZVEFsVlQKTVJNd0VRWURWUVFJREFwRFlXeHBabTl5Ym1saE1STXdFUVlEVlFRSERBcE5aVzVzYnlCUVlYSnJNUTh3RFFZRApWUVFLREFaUFRpNU1ZV0l4R0RBV0JnTlZCQXNNRDFSbGMzUWdSR1Z3Ykc5NWJXVnVkREVsTUNNR0ExVUVBd3djClEwOVNSQ0JVWlhOMElFUmxjR3h2ZVcxbGJuUWdVbTl2ZENCRFFUQWVGdzB4TnpFeU1UUXdNRFE1TUROYUZ3MHgKT1RFeU1UUXdNRFE1TUROYU1HNHhDekFKQmdOVkJBWVRBbFZUTVJNd0VRWURWUVFJREFwRFlXeHBabTl5Ym1saApNUTh3RFFZRFZRUUtEQVpQVGk1TVlXSXhHREFXQmdOVkJBc01EMVJsYzNRZ1JHVndiRzk1YldWdWRERWZNQjBHCkExVUVBd3dXVFhsVGFYUmxJRWx1ZEdWeWJXVmthV0YwWlNCRFFUQ0NBaUl3RFFZSktvWklodmNOQVFFQkJRQUQKZ2dJUEFEQ0NBZ29DZ2dJQkFPTDVRT0l5YmpJRXRjVkY3Y2hRV3c0Q3Z1QkhCVGpCSmMxcEh3SjRDSzlsYm04RgpJMXNFbW1pd20yTWtJRG9WQ2lBQk5ld1JtVTRTcU4wUG5QOWlGNjV2NlpTbHlXT25hVHF1SitTck9tM1F6MHZmCkZuSHZmWkZycC9BU3FhUlBxQVUrVlR3dTVsb2VHcEZIS3F1MXhxZUpQNWlSaVdTS3hWdk1XeS9TUnhsU0FudVkKTG84WkRrWllpdWZYY1dJaEMzWGdXb081ckVuZVcxS1FXdWdnU1l1dUFPMDJkV2hPQklJTlJPQTZSdUdWdWw0Uwo1S1oxTE5tclAyS2c1a0JoaG1xclhLZWJudzdkZTg2emthV0RlcG1LajZiUWtiRGNWYTJXdU1mTS9Yd0dqd0d3CkwwT2RRRzB3dzFhMFdYTi9NMU5WVnBManNFTDZ2U0Q0UlR0RlZYZWFPRkZ3VGphUXpVSGgxUHdsRkI1S25nM0oKcXBnNzdRdXUvVFdvcHI5ZXBPNk1oZ25KSmliSzB3MzZvaUt1YUJiMGt4TjlKOHVQbERiWlpuRm1NYk9jYjVNOQpzU1A0cTJ3ODJuYkdmRm0rZFR6OU9Ddi9aUWc3Nm5XTk8vVWFEMFR6c25zZjBMZ3dXL1dqR3pEd0w3Rk0vTXRoCnI2eUQ5dVRiRnR1TzdGbGp4NUZMZ2thc200bzRQbzBsR3RFMCtWUXg5bTRiN014R1RITThBcm1ES1lzTTJTeXUKdG5ZeXBHQjE4T0c2NENrTEhzejJkU2dhb1BVVDY1MW9UbnRTZDZMU2hGazR1VVpxVjdrYnBzSGRhK2s0UlgwNApSejI3RUcwQ0V3R0RDYnhVTnJCcVlTZzdZNENJSklodnB1Mm8vSGNsREsxV09tZGYrL3h2M0M0RHBYb1RBZ01CCkFBR2paakJrTUIwR0ExVWREZ1FXQkJSWis4akR3eVRORzdzMVAzdElEY2Q0RXFCbnZEQWZCZ05WSFNNRUdEQVcKZ0JUVFVvazdCSzZnVHZ2cjFnUkJxUyswdDBjanNUQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQTRHQTFVZApEd0VCL3dRRUF3SUJoakFOQmdrcWhraUc5dzBCQVFzRkFBT0NBZ0VBemU1NlZGTjRJRkdQaVk4ZHZkL1pscCtxCjMvSENUdDFJemE5cFlhTi9KY2U3b1hlOVRNZDJWWXJ5VmdWZVc1aWJ5eDdQVGhINFBDMHRrMUZFeUNoZFZHV0IKclRrSGE4T25vQ0lqdVFDS3FPV1hPRkNMMkQyaEwxTjRFNHYyeW02UmpNeWVMRDgvQW8wUGUvYkFyUGVkZHV6WgplY21MdTFLN2Q2Y3RPbmV6cXJwRm1YemN2WDVVUFFyVlppWHFGcHVxRzl1TWQrTkVMTWFTMC85K3NwUlF6VE5WClg4RStET1RsbVU5eTVxMHNiR0ZscFV0a0JuVnJ4cllQV2tLMnRWK2phOGpLSitiZFJuNktSZzIyZjkyTndleFMKK1BlUWI0bzltOG9jSnVFanpnczZDbjM3L3FIWXc1YXVjdkJBUU4yYk85NXArN2k0WGh2OVo3UjRGcFE3amY2QgpSV3NSc3dvclpTZWo3N1Fva0JqQ1VZVzVnK2xObHh1UjRacks5VjMxVC9USkkrSHB5YjJYSVFWYUJxbkF3bGRxCnlsNGZMN3dibTg1blQ4Q29tZ1prRWZzMEd3T2FHOFhWdEFROTJGQ3p5bFdKcXpYaEVNbElzdlNqVCs5ZU5FZzIKM0Vnc24xendRdU14aWRpQk5DaThyT3c3UlNBN0UzM1l6TTBMQk5pRWJSS012YWVKbm1sUU5tZGh5YmJXYUpwQwp6R1hYd1lMRkhjK3FsUGsvMFdodVJvNVVKRUx5REJ0ai9HK0U2OFhLdm1iSUZMdjdJNmN0S2Z3RHhZNVFXajJvCmF0NDlsS3dWMS9jUSt0d3B1Ym1NcmtYUzlwaExhVHBvTFNiOVRFUDZTWmVqNVgzQVB2aUVzZkltUjlLQ0MwSHMKRzBnL0pVTkgyVWJWbU5pZld2bz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ==
-  core_api_key: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcEFJQkFBS0NBUUVBNDBzdm1vMGcrV21lV3FDTzd2NHhkUFQrWHk4d1VJNjFwYVpxZ2ZleFlPeVhKSnExCm1lSUlVZnNtSVl6VHdwUGh0SHhzZjNsTytQZnBHOThrc0c1eC9VRXl2OGU3ZEtoekNqUWtwRHVvSWhFQzB1RysKbjZDTVJsMDF0elRycUZoK01VRGhSZXhIWFFyNXlndzlMUE1TRGQvd2FhZ243bVF6VlN3MnRuemFrdjc4NjdjMQpPRFFHekxyRGx4RVVDcVpjUXZxRXlSckdaYXpaVnRIUmZqZXR6V0p3NlhsNFVQaXp6V2pVYVowSE8wb0lYUzBrCktmbjhrZ1c4dDZEUm40MVNNNFFCVlNjbVdab1ZRQU5zWUIvRE5kR0YwMXY4NS9WS0xXYnliRVRsYkJVdmFIRU8KZWJCMlo1Tm1tcXZ6SkQ3UlFtV0lpZmtSNUs5ZlZON200RFFzTVFJREFRQUJBb0lCQVFDc2ZWZHYrMkFseHhDRQppRXBRZHBtRHY1VDNHVEdhUU9MN0JoTFg5T2dvdlFOcXBQbmlBUlg5V1JJejdkS2FYRzJ4OGFiSkNuOXpFM2hWClRYOWpZVDJpU3dNL1pVME9GL1BOcjRxTEZEYmhPM1dnSWU3dTV3RHRPVGxWZ3BUQVdmL1NVd0ZpZGhBbVBQa1oKYXpaVjBWVkhNRVliZUtCdEdwK1dLSXFRN0tsWFdUcHZxNDgvd3lGeGtZc0g4MU1UaE9hTDNFZGZHa1BKU2FzawpjRlhxUHZhZ2dCQkJYUW9aNUFTZUZvWGZrZDdmRVVCQlNSVWRFWVZFOE8xdkw2VzBOUTBDV0EyNjUvQnl1aE9OCkZoME53SHNNbHhPTEsyeFpKc2thN1FvZi94SXE1Rkh4UVBTdkVRTUhaRXM4S3kzUk1CLzdvMWt5dmtXSlZURCsKRjRCTWFDK3RBb0dCQVAzaEtZSGQ3Y2Fxc3VxZ0R5UVBRSll6VzJaczlkL0ZQU29nbGxtZ2NLOGpTMGZTUzFMUworOEpTQWxJdUdvVGxkSHlZYUUvcnlvN0lvZmVwRk8yZ0dZa2ttcHl6aWErL0tRcjRzcXFkdmlpdmxGbEZYNXZTCld1eXNVT05ndGFteUVUZDlycFd3Y2FuT2FhU2IwTHZYYS8vUk5leWFNNTJxd3hxamZUUTJ5dTZyQW9HQkFPVXgKTGNGMXJUU1MzVUFzOUZLZXd4YWdvd1Rmc0o2R29XK1NBQzRXWEt4WGNUS3dJcVVoTHBZUTF6Z0xVb0RaR1hmRApkd0ZhVjhBN3d1TzZtQWliSjFUckNqdDc4Wi9wZEd1a3lXSDJ4YzZHNkU5bE12QVFCY3hIeFR4a2U2QmdjZlltCkIvY3dFYWJrYzJMc1FjNTVUU3hheUlaL2FmN2xZcWpGSDhKY2gyQ1RBb0dBT2xrRFJ4dVFTRFozQkVGZytYS2YKNzJWQ1Bsb1FjQ3RPa1Y0SDcvVlZzSXEyQkgycVhoQ3JWOCt0Uk9IZnFtZHB6RERpMkd0aWxFbzhIMFUyMEI0WgpnRkZ2VDFCYjlvNUNpb2o1MXdpRjZhZmd1bHVkUzV5ZTFRSU5YUlNlNjY5SEVhL0s3aEF0TDArSExCTzdkMUJkCk8rQURPcXQ5N1dDUGtwRzhkc0daQmgwQ2dZRUF0aTB5SG8yb1FKcmdqUXR1cFdHVzFweVhGOStxWjBmQ2VJbkgKNU5wWGpaSHY0NGVIOGxQKzBML1FJcmMxUEQvVTg1S0dQS2dRQ2pnMmdJZW9JMmNZaTNKTWJ0M2xRT1B6YTBEUAo1ak9lSmJ5c1diZXFGcEhWMmZ2T2RtTzB0TlVVb01DNElpNnVTVWRieEd6aEhmcmpjZmN6WDExVjVvdDBzWXdHCjQ1cGk3VXNDZ1lBSzByNnZWajJZRHlBVS8vMk10eGxpSjNJMEs0Rm5SU2JHOFJyOFMvTXJzOHlseW02Z3E2eW0KOS9KWWp6cU93YzZYZ2xDTk45ZVNsRzlzdW13ak85bjV4SlZjZ3JkT3hJa1gvakpDODBiV2xRN2wxU0VZa1ZHcQpDcThOaUZyaWs1VW1ycVhrdUU1NmxaNjQrOGkzZ1BXN0wxZm5OMURoK01FSWZQbUtUOUx6Qmc9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
+  core_api_cert: |
+    Q2VydGlmaWNhdGU6CiAgICBEYXRhOgogICAgICAgIFZlcnNpb246IDMgKDB4MikKICAgICAg
+    ICBTZXJpYWwgTnVtYmVyOiA0MDk2ICgweDEwMDApCiAgICBTaWduYXR1cmUgQWxnb3JpdGht
+    OiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgogICAgICAgIElzc3VlcjogQz1VUywgU1Q9Q2Fs
+    aWZvcm5pYSwgTD1NZW5sbyBQYXJrLCBPPU9ORiwgT1U9VGVzdGluZyBPbmx5LCBDTj1DT1JE
+    IFRlc3QgUm9vdCBDQQogICAgICAgIFZhbGlkaXR5CiAgICAgICAgICAgIE5vdCBCZWZvcmU6
+    IERlYyAxNCAwNjoxNjo1MSAyMDE4IEdNVAogICAgICAgICAgICBOb3QgQWZ0ZXIgOiBEZWMg
+    MTUgMDY6MTY6NTEgMjAxOSBHTVQKICAgICAgICBTdWJqZWN0OiBDPVVTLCBTVD1DYWxpZm9y
+    bmlhLCBMPU1lbmxvIFBhcmssIE89T05GLCBPVT1UZXN0aW5nIE9ubHksIENOPXhvcy1jb3Jl
+    CiAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CiAgICAgICAgICAgIFB1YmxpYyBL
+    ZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCiAgICAgICAgICAgICAgICBQdWJsaWMtS2V5
+    OiAoMjA0OCBiaXQpCiAgICAgICAgICAgICAgICBNb2R1bHVzOgogICAgICAgICAgICAgICAg
+    ICAgIDAwOmIzOmUyOjM1OjMxOmUwOjZmOmIzOmIwOjg1OjAzOjUzOjE3Ojk1OjVhOgogICAg
+    ICAgICAgICAgICAgICAgIGE5OjkzOmRmOjRjOmQ0OjU0OjA5OjY3OjFmOjMzOmJlOjMzOmYy
+    OmM1OjRmOgogICAgICAgICAgICAgICAgICAgIDk0OjZhOjRlOjk1OmFjOmUyOmUxOmViOjEw
+    OjM3OjJhOjFmOjljOjRlOjE0OgogICAgICAgICAgICAgICAgICAgIDJjOmJjOjFkOmE3OjQy
+    OjA1OmEwOjhiOjdkOjRmOmYwOjU1OmI2OjQwOjU4OgogICAgICAgICAgICAgICAgICAgIGVl
+    OmFhOjIzOjFiOmQ0OmY3OjI1OmFlOjI3OmJkOjA2Ojc2OjkyOjQ4OjczOgogICAgICAgICAg
+    ICAgICAgICAgIDEwOjkxOjgwOmQxOjMzOmFhOjUyOjNmOjI0OjQwOjBlOjg0OmZjOjM2OjI1
+    OgogICAgICAgICAgICAgICAgICAgIDIwOjRjOjFkOjlhOmU1OjVlOmJjOmYzOjlmOjgwOjk2
+    OmQ5OmMyOmVjOjUyOgogICAgICAgICAgICAgICAgICAgIDM1OmQ0OjFkOmVkOjdjOjk4OjJi
+    OmM2OjI3OjNiOjY0OjllOmQwOjQ3OjI4OgogICAgICAgICAgICAgICAgICAgIDQ2Ojc2OmU2
+    OmVhOmQwOjU4OjMyOmMxOmE5OjVlOjg2Ojc1OjhjOjJlOjYxOgogICAgICAgICAgICAgICAg
+    ICAgIGVmOmRiOmM5OjViOmRhOjQ3Ojg1OjJiOjRiOmY5OjMxOjYzOjc1OjU1OjY1OgogICAg
+    ICAgICAgICAgICAgICAgIGU1Ojk3OmEzOjNiOjVjOjcyOjgwOjFhOmUyOjg1OjhmOjc0OmYx
+    OjVlOjE4OgogICAgICAgICAgICAgICAgICAgIDk1OjI1OjE5OmQ1Ojk1OmY3OjM5OjE0OjFm
+    OjYwOjU4OmI2OmY4OmJjOmE3OgogICAgICAgICAgICAgICAgICAgIDcyOmYwOjFiOmQxOmQy
+    OjZiOjYwOmU4OmY0OmY5OmZkOjBiOmUxOjIxOmM0OgogICAgICAgICAgICAgICAgICAgIGM5
+    OmEwOjMyOjM0OjM1Ojk2OmJkOjlhOjcyOmJkOjQ1OjQ5OmU2OmMxOjVjOgogICAgICAgICAg
+    ICAgICAgICAgIDU4OmY3OjY0OmJiOjU5OjI2OmZkOmNiOmQ3OjlhOjlkOmNkOjNlOjA1OmFj
+    OgogICAgICAgICAgICAgICAgICAgIGZhOjVmOmQyOmU3OjMxOjY3OjE4OmVmOmFlOjZlOjQ3
+    OjAwOjZmOjJhOjBkOgogICAgICAgICAgICAgICAgICAgIGU2OmU3OjhlOmZhOmZlOjg4OmFj
+    OjM5OjQ0Ojg1OjY5OjllOmVmOmQ5OjJjOgogICAgICAgICAgICAgICAgICAgIDQzOmViCiAg
+    ICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCiAgICAgICAgWDUwOXYz
+    IGV4dGVuc2lvbnM6CiAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVy
+    OiAKICAgICAgICAgICAgICAgIDMzOjdGOkU3OjM1OjA3OjMyOkE3OjdBOjM5OkE5OjVEOjNE
+    OkMwOjkyOkYwOkNBOjUzOjM1OkZCOjUzCiAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkg
+    S2V5IElkZW50aWZpZXI6IAogICAgICAgICAgICAgICAga2V5aWQ6MkM6MTk6M0I6REQ6REI6
+    MjY6RkI6MUM6RDg6NzA6Q0E6NzE6OUE6NDA6QTk6MDY6NDM6RTk6RTU6Q0QKICAgICAgICAg
+    ICAgICAgIERpck5hbWU6L0M9VVMvU1Q9Q2FsaWZvcm5pYS9MPU1lbmxvIFBhcmsvTz1PTkYv
+    T1U9VGVzdGluZyBPbmx5L0NOPUNPUkQgVGVzdCBSb290IENBCiAgICAgICAgICAgICAgICBz
+    ZXJpYWw6QUM6NEU6ODc6MUE6M0E6OUY6NEU6NUEKCiAgICAgICAgICAgIFg1MDl2MyBCYXNp
+    YyBDb25zdHJhaW50czogCiAgICAgICAgICAgICAgICBDQTpGQUxTRQogICAgICAgICAgICBY
+    NTA5djMgS2V5IFVzYWdlOiBjcml0aWNhbAogICAgICAgICAgICAgICAgRGlnaXRhbCBTaWdu
+    YXR1cmUsIEtleSBFbmNpcGhlcm1lbnQKICAgICAgICAgICAgWDUwOXYzIEV4dGVuZGVkIEtl
+    eSBVc2FnZTogCiAgICAgICAgICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRoZW50aWNhdGlv
+    bgogICAgICAgICAgICBYNTA5djMgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lOiAKICAgICAg
+    ICAgICAgICAgIEROUzp4b3MtY29yZSwgRE5TOnhvcy1jb3JlLmRlZmF1bHQsIEROUzp4b3Mt
+    Y29yZS5kZWZhdWx0LnN2Yy5jbHVzdGVyLmxvY2FsCiAgICBTaWduYXR1cmUgQWxnb3JpdGht
+    OiBzaGEyNTZXaXRoUlNBRW5jcnlwdGlvbgogICAgICAgICA3ZDo2ZDpjNzo3YTowNDowOTo2
+    ZTozZTpmOToyZTo2MTo1OTo0YTpjNTo5MDo0Nzo2NDpjNToKICAgICAgICAgMTQ6MWY6Zjk6
+    ZDY6MjU6MWQ6YTk6YzU6OTc6NTU6ZmY6Mjg6ZWY6MWE6ZjU6OWM6YWM6M2E6CiAgICAgICAg
+    IDA2OmVhOjZmOjAyOmVjOmVkOjYwOmU0OjYwOjhlOjJlOmU0OjA1OmVmOmYyOmE5OjRkOjI2
+    OgogICAgICAgICBlYjpjZTphNzpjMToxMzo4MjozMTo0YzoxZTpjMzo3OToxODo5ZTpkNzox
+    NDpiYzoyMjo4YzoKICAgICAgICAgNWM6NmI6MGY6ZDk6MjQ6ZTU6ZmY6YjU6OWQ6MmQ6M2I6
+    MDU6M2I6ZDU6M2E6OGY6YjA6M2U6CiAgICAgICAgIDk4OmE5OjUxOmRiOmE5OjhlOjdlOjNi
+    Ojc2OjFhOmU4OmY4OjQxOjM3OjUxOjIxOjUzOjNjOgogICAgICAgICA0OToyMjo1NzowMzo0
+    YjowNDoxZDplOTpiZDpkNzo0Nzo5Mjo0YjpkNzoyYToyYTo1ZDo3YzoKICAgICAgICAgZmI6
+    ZDg6ZTc6MTY6ZGY6YTM6Y2E6Yzc6YzY6NjA6ZjA6NTk6NWE6MTI6YWQ6NDE6MmU6NTE6CiAg
+    ICAgICAgIGY5OmNiOjJkOjU3Ojc1OmMwOjM5OjlmOjRiOmZiOjEyOjk5OjZkOjkwOjUxOmMy
+    OjA4OjY1OgogICAgICAgICBhNjoxMDpiMzoyZjo3Yzo5NzoxNTo0NjowZjphZTo3YzplOTox
+    YTo2MzphMjpmOTozMzo3NjoKICAgICAgICAgMGU6NDc6Mjc6YWM6MTY6OWI6Nzc6ZDc6OTI6
+    ZDA6OGE6Nzk6OTA6YzI6Y2U6NDQ6YmI6MjU6CiAgICAgICAgIDAzOjljOmUyOmVlOjU1OjFm
+    OmIxOjM3OjlhOmNjOmEwOmMyOmYyOjZjOjhhOjkzOmM1OjIyOgogICAgICAgICAwZjphNTpj
+    YjpkZDpkNDo0MjoyMDoxODozZDplNzpjYTowYjoyYzpmODo2MjpmMDozZjo2YToKICAgICAg
+    ICAgODA6NDQ6OTA6ZmI6YzA6NmY6ODA6YzQ6NDc6NWY6Y2Y6OTQ6ZmY6ZjA6Zjg6NjU6ZGI6
+    NjM6CiAgICAgICAgIDkwOjYxOmI1OjkwCi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQpN
+    SUlFc0RDQ0E1aWdBd0lCQWdJQ0VBQXdEUVlKS29aSWh2Y05BUUVMQlFBd2VERUxNQWtHQTFV
+    RUJoTUNWVk14CkV6QVJCZ05WQkFnTUNrTmhiR2xtYjNKdWFXRXhFekFSQmdOVkJBY01DazFs
+    Ym14dklGQmhjbXN4RERBS0JnTlYKQkFvTUEwOU9SakVWTUJNR0ExVUVDd3dNVkdWemRHbHVa
+    eUJQYm14NU1Sb3dHQVlEVlFRRERCRkRUMUpFSUZSbApjM1FnVW05dmRDQkRRVEFlRncweE9E
+    RXlNVFF3TmpFMk5URmFGdzB4T1RFeU1UVXdOakUyTlRGYU1HOHhDekFKCkJnTlZCQVlUQWxW
+    VE1STXdFUVlEVlFRSURBcERZV3hwWm05eWJtbGhNUk13RVFZRFZRUUhEQXBOWlc1c2J5QlEK
+    WVhKck1Rd3dDZ1lEVlFRS0RBTlBUa1l4RlRBVEJnTlZCQXNNREZSbGMzUnBibWNnVDI1c2VU
+    RVJNQThHQTFVRQpBd3dJZUc5ekxXTnZjbVV3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJ
+    QkR3QXdnZ0VLQW9JQkFRQ3o0alV4CjRHK3pzSVVEVXhlVldxbVQzMHpVVkFsbkh6TytNL0xG
+    VDVScVRwV3M0dUhyRURjcUg1eE9GQ3k4SGFkQ0JhQ0wKZlUvd1ZiWkFXTzZxSXh2VTl5V3VK
+    NzBHZHBKSWN4Q1JnTkV6cWxJL0pFQU9oUHcySlNCTUhacmxYcnp6bjRDVwoyY0xzVWpYVUhl
+    MThtQ3ZHSnp0a250QkhLRVoyNXVyUVdETEJxVjZHZFl3dVllL2J5VnZhUjRVclMva3hZM1ZW
+    ClplV1hvenRjY29BYTRvV1BkUEZlR0pVbEdkV1Y5emtVSDJCWXR2aThwM0x3RzlIU2EyRG85
+    UG45QytFaHhNbWcKTWpRMWxyMmFjcjFGU2ViQlhGajNaTHRaSnYzTDE1cWR6VDRGclBwZjB1
+    Y3haeGp2cm01SEFHOHFEZWJuanZyKwppS3c1UklWcG51L1pMRVByQWdNQkFBR2pnZ0ZMTUlJ
+    QlJ6QWRCZ05WSFE0RUZnUVVNMy9uTlFjeXAzbzVxVjA5CndKTHd5bE0xKzFNd2dhb0dBMVVk
+    SXdTQm9qQ0JuNEFVTEJrNzNkc20reHpZY01weG1rQ3BCa1BwNWMyaGZLUjYKTUhneEN6QUpC
+    Z05WQkFZVEFsVlRNUk13RVFZRFZRUUlEQXBEWVd4cFptOXlibWxoTVJNd0VRWURWUVFIREFw
+    TgpaVzVzYnlCUVlYSnJNUXd3Q2dZRFZRUUtEQU5QVGtZeEZUQVRCZ05WQkFzTURGUmxjM1Jw
+    Ym1jZ1QyNXNlVEVhCk1CZ0dBMVVFQXd3UlEwOVNSQ0JVWlhOMElGSnZiM1FnUTBHQ0NRQ3NU
+    b2NhT3A5T1dqQUpCZ05WSFJNRUFqQUEKTUE0R0ExVWREd0VCL3dRRUF3SUZvREFUQmdOVkhT
+    VUVEREFLQmdnckJnRUZCUWNEQVRCSkJnTlZIUkVFUWpCQQpnZ2g0YjNNdFkyOXlaWUlRZUc5
+    ekxXTnZjbVV1WkdWbVlYVnNkSUlpZUc5ekxXTnZjbVV1WkdWbVlYVnNkQzV6CmRtTXVZMngx
+    YzNSbGNpNXNiMk5oYkRBTkJna3Foa2lHOXcwQkFRc0ZBQU9DQVFFQWZXM0hlZ1FKYmo3NUxt
+    RloKU3NXUVIyVEZGQi81MWlVZHFjV1hWZjhvN3hyMW5LdzZCdXB2QXV6dFlPUmdqaTdrQmUv
+    eXFVMG02ODZud1JPQwpNVXdldzNrWW50Y1V2Q0tNWEdzUDJTVGwvN1dkTFRzRk85VTZqN0Er
+    bUtsUjI2bU9manQyR3VqNFFUZFJJVk04ClNTSlhBMHNFSGVtOTEwZVNTOWNxS2wxOCs5am5G
+    dCtqeXNmR1lQQlpXaEt0UVM1Uitjc3RWM1hBT1o5TCt4S1oKYlpCUndnaGxwaEN6TDN5WEZV
+    WVBybnpwR21PaStUTjJEa2NuckJhYmQ5ZVMwSXA1a01MT1JMc2xBNXppN2xVZgpzVGVhektE
+    QzhteUtrOFVpRDZYTDNkUkNJQmc5NThvTExQaGk4RDlxZ0VTUSs4QnZnTVJIWDgrVS8vRDRa
+    ZHRqCmtHRzFrQT09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
+  core_api_key: |
+    LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBcytJMU1l
+    QnZzN0NGQTFNWGxWcXBrOTlNMUZRSlp4OHp2alB5eFUrVWFrNlZyT0xoCjZ4QTNLaCtjVGhR
+    c3ZCMm5RZ1dnaTMxUDhGVzJRRmp1cWlNYjFQY2xyaWU5Qm5hU1NITVFrWURSTTZwU1B5UkEK
+    RG9UOE5pVWdUQjJhNVY2ODg1K0FsdG5DN0ZJMTFCM3RmSmdyeGljN1pKN1FSeWhHZHVicTBG
+    Z3l3YWxlaG5XTQpMbUh2MjhsYjJrZUZLMHY1TVdOMVZXWGxsNk03WEhLQUd1S0ZqM1R4WGhp
+    VkpSblZsZmM1RkI5Z1dMYjR2S2R5CjhCdlIwbXRnNlBUNS9RdmhJY1RKb0RJME5aYTltbks5
+    UlVubXdWeFk5MlM3V1NiOXk5ZWFuYzArQmF6Nlg5TG4KTVdjWTc2NXVSd0J2S2czbTU0NzYv
+    b2lzT1VTRmFaN3YyU3hENndJREFRQUJBb0lCQVFDb1c3MWgweWQ0ekd1Ugpzd0ZObmk4ODRU
+    QXRRZ0lTN0Jjbm04TktmTEx4MUY4dUVxTlR1RGVKUzFDbG15aExZSTJjczF1UmNsV1JJUWVV
+    CnJpZWlRWDNaRXYvSFFoWWVxSGM5SzhTRUNrYkN6bFJ3R0dPRHMxL0M1WGlYQk5abWV3YnFG
+    WXpxb3lGV3daTHoKMXBiaG1DTFFNUVBicHZCVXlSTTZVZUhQNGR5UGQzMXVlWGI1MTFROVF3
+    TGJqRUVzWkdsODdmY0NCQVF1RzlybQozcHNiZDhxTXZSdG14RnMxMkRvNmRCRHFNS3pjRjBk
+    Z29vSkE5VnpIWlRZTjFJSlR6N1FYZVFRVjY0dFlpNklZCitLdWtCemxTblVUekdJT2l2NlpT
+    YXpBbXcyaFhYck1WV0g2QzB1ZHgwbnFWUlc1ZVdzdGxCeitia2hwb0VNY2sKSjMzUHhTM0JB
+    b0dCQU9JSWh3UklEdG4yYmh6TlNhMzdtSFFQeithWGk2ZHRNdzFZK1pqSm1Kc01sWjRDV3Fl
+    Rwo1K0ltenlSKzZYcWhSYklJYjlaaUlMcDAzUGxqZmlXM3BKYjRscE1pd3Rvd3lwaVZIaTht
+    ZFI5cU1JcGU4NlpNCmxkYndlMk9VS2ovNGxTK3RXNXlTWHI2T3N4Wjc0eE12OFJ5amFYb0o3
+    VHdPTk1YclhRNThVbE9iQW9HQkFNdTcKWVVwVFM3MWExRjh6cU5KSXFUeWZNaEFLS0lOOUdh
+    eHY1V0FjQTJIWlN0SDE4dXl5N0cxR2VyN0tFek8zeHBwMwo2TVRENThCK09pcTFMS09CWnln
+    VENnVnlRbmFvVndGNyszOFZqK3JFUkRVcUMwUzdOOS9GbkFiaUJkT3RkRzkwCkxETmswbDdp
+    SHh2bEg5MXRGeFRvVXlCM2hwWkRtd3liNTJlL1NSM3hBb0dCQU5rclprWDMwY1ViWHdwdk55
+    WmgKZ0VXcTE0NXU5bkFEbkRScjAwdzREVmFUVGNGRjg4SFgvVDB0R29LdktUWjRjdFV1QS80
+    UHcvQkJ6Zm9TM0tYeQpmc0hLMENsSUVieS9lamdGdGIySmpxaURSMlg2K3RCQjd3bFhmc1hi
+    R29qaUZyeDdMSFVQc05ZWGx2dTRSaUV1ClE5UEhNZFZlYWovMFNrSUs5QnF4Mmd1WEFvR0Fj
+    Mzd4dzdIKzhRVHArbUtONVZCZDZNa1RGM2E2eXZnRHN2Ym8KWVJqZ2JmdENhRTcyL1dyZGo0
+    RnlHbkR5ZTlKR1c5RjRldnZZaVE3R0tPbjJ1V2FsdFZrOXlDS2pQU05uMTZhUwp4OVBRZDdY
+    Mk9QRngyL0FLMStmdDhSVDNXcTR0b1BXS0RVU3Q0aTVzbG1MSk1yMGlaYTdqV1RlSmErdzlu
+    T05SClIwWnd5L0VDZ1lFQWwrcTNvNVFNRFBrWFhoRmNDOXFMSVZ2SW5sbThqUWpWN0lNMG5s
+    cmJTNHBWT3ZOZGRIRlYKYlZlRUY5OXpqM1RkOHFEQXhRSnpKSURzNmZSQnB5d1drQXJ4SlI3
+    TzVhSEJJQjlNSVlMcTVQRUEyZEY5d2xjTAo1MHl0VXRCUFp0V1dVMVpPYXdOclBiczk1Q29p
+    VGZFanpBcHZTVEhIckdxOVIrKzBlVzlpb3U4PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVkt
+    LS0tLQo=