Merge "[FABN-1184] Implement fabtoken sample app"

This commit is contained in:
Gari Singh 2019-04-09 14:28:13 +00:00 committed by Gerrit Code Review
commit fdf88df4c5
80 changed files with 1155 additions and 457 deletions

Binary file not shown.

Binary file not shown.

View file

@ -70,4 +70,4 @@ PeerOrgs:
# Count: The number of user accounts _in addition_ to Admin
# ---------------------------------------------------------------------------
Users:
Count: 1
Count: 2

View file

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgl0Tpf6w6lq46Xy7M
dwGcn9Dy7oJrm+idNhzsuPCXybChRANCAASnZ+ZV2YbfMPvQaGfqwVLZ0uho9Tio
Tj5Pfj40QIyixko1llyrq9Dt9T3m4XvfKB2yk171IdUNAepmB1K52PnV
-----END PRIVATE KEY-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg7ILJbkoZBYqsu5pg
8L6AvqBcNe9XQm5Y2FyjWJ8+SaShRANCAAQdO6cFQ9UqkEJlDyROQNr+1gb8CtNs
zzPzNOuTO0WMRFCQ/lpKIINrWfeLpJYtaY4jEFWplHEULmlo+V5wg8Ob
-----END PRIVATE KEY-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICPjCCAeSgAwIBAgIRAIvKUkOSe/nqaK1yUopBGiEwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASnZ+ZV2YbfMPvQaGfqwVLZ0uho
9TioTj5Pfj40QIyixko1llyrq9Dt9T3m4XvfKB2yk171IdUNAepmB1K52PnVo20w
azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGCjoENkaNZQVScyXBI6kCgzKoRv
BcX+70jw5WzXSmsdMAoGCCqGSM49BAMCA0gAMEUCIQDDuM0qeCmrJ7QvPQJrKtiT
h3W0rPsxWG9reunkChLklwIgXjo90TxZQzmXvRYkQldGJ3fBQDyQbRlGl74oGS2i
eEE=
MIICPTCCAeOgAwIBAgIQM2WSuizoDl4o6Ra1hKAM8jAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE5MDQwMzE0MzUwMFoXDTI5MDMzMTE0MzUwMFowaTELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB07pwVD1SqQQmUPJE5A2v7WBvwK
02zPM/M065M7RYxEUJD+Wkogg2tZ94ukli1pjiMQVamUcRQuaWj5XnCDw5ujbTBr
MA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEw
DwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZIxG9F7xhJv3Elnor3WyT7x/ENFL
HSSHSuKdBgaPZbMwCgYIKoZIzj0EAwIDSAAwRQIhAMCHE/tBDpX7J9E6cAJ+4x5N
QiHaV4M6KD2TdTmR6B31AiA6PNJhyJIfbeRfi5bYyhVz6XFkhywK1g2SnYDy8I/2
lQ==
-----END CERTIFICATE-----

View file

@ -1,13 +1,13 @@
-----BEGIN CERTIFICATE-----
MIICCzCCAbGgAwIBAgIRAPEuMhjzbXslBwbekcOmD1AwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMFYxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABKTFtF0SNhy/MW+TYUE9DuBjN9oxqWFUj4p7wdxSLZBRZf5KLX7g
M1CnH7ur9DsJE70n1PX+/vPuMyIeB33V0Y6jTTBLMA4GA1UdDwEB/wQEAwIHgDAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIGCjoENkaNZQVScyXBI6kCgzKoRvBcX+
70jw5WzXSmsdMAoGCCqGSM49BAMCA0gAMEUCIQDUkVhWPfOETm7kEb//GlDVEzAW
cr+Y1P/WSng6cYqahQIgdM5jxkfLoR8s8zFctevNEQvQOsNbJlJ08v6yEc9J3tM=
MIICCjCCAbCgAwIBAgIQDmT3mRPEOoRB+uyj/WYmfTAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE5MDQwMzE0MzUwMFoXDTI5MDMzMTE0MzUwMFowVjELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI
zj0DAQcDQgAEvOsEIZNTIIhQ9SgcOA19vS/VrCrfw/rnGYMmkdZnzK/s9tcqDWtw
r3vu9QU/lvtRZQQrpRVGJ3+PCNOQcuBuP6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgZIxG9F7xhJv3Elnor3WyT7x/ENFLHSSH
SuKdBgaPZbMwCgYIKoZIzj0EAwIDSAAwRQIhAJX03gBFoiN6Lgga32SZf7merIE5
hI0dyWxSnk7w/bwyAiBppwuk/F1Xa5QIs5f27lvqb6ml35D+XoQZGH3xapAV/w==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICPjCCAeSgAwIBAgIRAIvKUkOSe/nqaK1yUopBGiEwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASnZ+ZV2YbfMPvQaGfqwVLZ0uho
9TioTj5Pfj40QIyixko1llyrq9Dt9T3m4XvfKB2yk171IdUNAepmB1K52PnVo20w
azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGCjoENkaNZQVScyXBI6kCgzKoRv
BcX+70jw5WzXSmsdMAoGCCqGSM49BAMCA0gAMEUCIQDDuM0qeCmrJ7QvPQJrKtiT
h3W0rPsxWG9reunkChLklwIgXjo90TxZQzmXvRYkQldGJ3fBQDyQbRlGl74oGS2i
eEE=
MIICPTCCAeOgAwIBAgIQM2WSuizoDl4o6Ra1hKAM8jAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE5MDQwMzE0MzUwMFoXDTI5MDMzMTE0MzUwMFowaTELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB07pwVD1SqQQmUPJE5A2v7WBvwK
02zPM/M065M7RYxEUJD+Wkogg2tZ94ukli1pjiMQVamUcRQuaWj5XnCDw5ujbTBr
MA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEw
DwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZIxG9F7xhJv3Elnor3WyT7x/ENFL
HSSHSuKdBgaPZbMwCgYIKoZIzj0EAwIDSAAwRQIhAMCHE/tBDpX7J9E6cAJ+4x5N
QiHaV4M6KD2TdTmR6B31AiA6PNJhyJIfbeRfi5bYyhVz6XFkhywK1g2SnYDy8I/2
lQ==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAeqgAwIBAgIRAJDUJIOlNerIx+QFWaH83u0wCgYIKoZIzj0EAwIwbDEL
MIICQzCCAeqgAwIBAgIRAIbz4U6+kgdiF8Od7x68k4AwCgYIKoZIzj0EAwIwbDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
eGFtcGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMGwxCzAJ
eGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBaMGwxCzAJ
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3oVXOKK15Rh5C3LuT
+tpMhYM+/kD+mpcWui1JAO2S4SrCIZLkQAsv5bMfm0tN8bim9u5Z7BVCxpwUfPaV
bAz7o20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEICcGVc9fS45n4PKefGbe
gT/Z05MC29jcKgtVNbMWGdufMAoGCCqGSM49BAMCA0gAMEUCIQDHa9XqxJ1WPT0r
uMe7oxuiV9wU6PenP8ayIRq9iuaEewIgVPTIqwVeIdFT8UJszIbATd1TpMX9xI1k
ZOCqemwfc9A=
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARpyNzuqy3vGD8w64tu
sCXu5rsAXys4olGMPUjfkljuP8jFDfJwxGU+20C/+hiFsjRdH1CMbPQoxzG21f84
nPvco20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILePu2sfJ++9aUaXy849
D31OLfdxpqdmLdbW4OGsL9AKMAoGCCqGSM49BAMCA0cAMEQCICLFFQizOr/8WEkT
1tvkYlMsFD0QVE+yQZJmnk6n0ytAAiATc53kdAT9r+KqRH5cGyHtt2j8cGW5M6og
dnmK55WtnA==
-----END CERTIFICATE-----

View file

@ -1,13 +1,13 @@
-----BEGIN CERTIFICATE-----
MIICCzCCAbGgAwIBAgIRAPEuMhjzbXslBwbekcOmD1AwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMFYxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABKTFtF0SNhy/MW+TYUE9DuBjN9oxqWFUj4p7wdxSLZBRZf5KLX7g
M1CnH7ur9DsJE70n1PX+/vPuMyIeB33V0Y6jTTBLMA4GA1UdDwEB/wQEAwIHgDAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIGCjoENkaNZQVScyXBI6kCgzKoRvBcX+
70jw5WzXSmsdMAoGCCqGSM49BAMCA0gAMEUCIQDUkVhWPfOETm7kEb//GlDVEzAW
cr+Y1P/WSng6cYqahQIgdM5jxkfLoR8s8zFctevNEQvQOsNbJlJ08v6yEc9J3tM=
MIICCjCCAbCgAwIBAgIQDmT3mRPEOoRB+uyj/WYmfTAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE5MDQwMzE0MzUwMFoXDTI5MDMzMTE0MzUwMFowVjELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI
zj0DAQcDQgAEvOsEIZNTIIhQ9SgcOA19vS/VrCrfw/rnGYMmkdZnzK/s9tcqDWtw
r3vu9QU/lvtRZQQrpRVGJ3+PCNOQcuBuP6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgZIxG9F7xhJv3Elnor3WyT7x/ENFLHSSH
SuKdBgaPZbMwCgYIKoZIzj0EAwIDSAAwRQIhAJX03gBFoiN6Lgga32SZf7merIE5
hI0dyWxSnk7w/bwyAiBppwuk/F1Xa5QIs5f27lvqb6ml35D+XoQZGH3xapAV/w==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICPjCCAeSgAwIBAgIRAIvKUkOSe/nqaK1yUopBGiEwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASnZ+ZV2YbfMPvQaGfqwVLZ0uho
9TioTj5Pfj40QIyixko1llyrq9Dt9T3m4XvfKB2yk171IdUNAepmB1K52PnVo20w
azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGCjoENkaNZQVScyXBI6kCgzKoRv
BcX+70jw5WzXSmsdMAoGCCqGSM49BAMCA0gAMEUCIQDDuM0qeCmrJ7QvPQJrKtiT
h3W0rPsxWG9reunkChLklwIgXjo90TxZQzmXvRYkQldGJ3fBQDyQbRlGl74oGS2i
eEE=
MIICPTCCAeOgAwIBAgIQM2WSuizoDl4o6Ra1hKAM8jAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE5MDQwMzE0MzUwMFoXDTI5MDMzMTE0MzUwMFowaTELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB07pwVD1SqQQmUPJE5A2v7WBvwK
02zPM/M065M7RYxEUJD+Wkogg2tZ94ukli1pjiMQVamUcRQuaWj5XnCDw5ujbTBr
MA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEw
DwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZIxG9F7xhJv3Elnor3WyT7x/ENFL
HSSHSuKdBgaPZbMwCgYIKoZIzj0EAwIDSAAwRQIhAMCHE/tBDpX7J9E6cAJ+4x5N
QiHaV4M6KD2TdTmR6B31AiA6PNJhyJIfbeRfi5bYyhVz6XFkhywK1g2SnYDy8I/2
lQ==
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg9i2Mj6BNESew1Xss
07ZNbTLq0SSSl0KvohwTjBRX/yKhRANCAARfc8Z7npAuT5h6cGayOImSd6/E/ve6
blbFmysowIWXpD4i3sV1Rm1Gp14d7EYRPAcE1MwQ7tv5sAQgp1RWecg9
-----END PRIVATE KEY-----

View file

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgFhNtiaWuwyh4C7vP
Xtp/cqX5ICFM63N1Cj/vZJFlroChRANCAAQse8ZB7j//7XWVnnoLlJY9OucffTao
eFZTryDHoL5nUWFc5JSOYcVCC+Y0iPPfzn6O/D4mGBWcSu/qjCUsJ0Om
-----END PRIVATE KEY-----

View file

@ -1,13 +1,13 @@
-----BEGIN CERTIFICATE-----
MIICCzCCAbKgAwIBAgIQLcLm3LDyAJ4YJBN7k00w7TAKBggqhkjOPQQDAjBpMQsw
MIICDDCCAbKgAwIBAgIQOiGD8n8XeFrxYZLzp4YzITAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE5MDQwMzA5MzYwMFoXDTI5MDMzMTA5MzYwMFowWDELMAkGA1UE
bGUuY29tMB4XDTE5MDQwMzE0MzUwMFoXDTI5MDMzMTE0MzUwMFowWDELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xHDAaBgNVBAMTE29yZGVyZXIuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggq
hkjOPQMBBwNCAAQse8ZB7j//7XWVnnoLlJY9OucffTaoeFZTryDHoL5nUWFc5JSO
YcVCC+Y0iPPfzn6O/D4mGBWcSu/qjCUsJ0Omo00wSzAOBgNVHQ8BAf8EBAMCB4Aw
DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCBgo6BDZGjWUFUnMlwSOpAoMyqEbwXF
/u9I8OVs10prHTAKBggqhkjOPQQDAgNHADBEAiB1NglCAo1m6diKrI6ERjiMayc9
m2Sb5NHR55CEqOCoXQIgC6yo7O/Y15ZayJKztbNVT6u4JPy5IWbV6meViOrYttw=
hkjOPQMBBwNCAARfc8Z7npAuT5h6cGayOImSd6/E/ve6blbFmysowIWXpD4i3sV1
Rm1Gp14d7EYRPAcE1MwQ7tv5sAQgp1RWecg9o00wSzAOBgNVHQ8BAf8EBAMCB4Aw
DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCBkjEb0XvGEm/cSWeivdbJPvH8Q0Usd
JIdK4p0GBo9lszAKBggqhkjOPQQDAgNIADBFAiEAuiXXJJ/5ghe4XySpQY53Nze7
tSWeUronN+fgMTA6OboCICYWd236d+l0Z8/X83bJk9Wk/iTSYknoPQ3V/3bVMsT6
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAeqgAwIBAgIRAJDUJIOlNerIx+QFWaH83u0wCgYIKoZIzj0EAwIwbDEL
MIICQzCCAeqgAwIBAgIRAIbz4U6+kgdiF8Od7x68k4AwCgYIKoZIzj0EAwIwbDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
eGFtcGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMGwxCzAJ
eGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBaMGwxCzAJ
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3oVXOKK15Rh5C3LuT
+tpMhYM+/kD+mpcWui1JAO2S4SrCIZLkQAsv5bMfm0tN8bim9u5Z7BVCxpwUfPaV
bAz7o20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEICcGVc9fS45n4PKefGbe
gT/Z05MC29jcKgtVNbMWGdufMAoGCCqGSM49BAMCA0gAMEUCIQDHa9XqxJ1WPT0r
uMe7oxuiV9wU6PenP8ayIRq9iuaEewIgVPTIqwVeIdFT8UJszIbATd1TpMX9xI1k
ZOCqemwfc9A=
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARpyNzuqy3vGD8w64tu
sCXu5rsAXys4olGMPUjfkljuP8jFDfJwxGU+20C/+hiFsjRdH1CMbPQoxzG21f84
nPvco20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILePu2sfJ++9aUaXy849
D31OLfdxpqdmLdbW4OGsL9AKMAoGCCqGSM49BAMCA0cAMEQCICLFFQizOr/8WEkT
1tvkYlMsFD0QVE+yQZJmnk6n0ytAAiATc53kdAT9r+KqRH5cGyHtt2j8cGW5M6og
dnmK55WtnA==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAeqgAwIBAgIRAJDUJIOlNerIx+QFWaH83u0wCgYIKoZIzj0EAwIwbDEL
MIICQzCCAeqgAwIBAgIRAIbz4U6+kgdiF8Od7x68k4AwCgYIKoZIzj0EAwIwbDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
eGFtcGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMGwxCzAJ
eGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBaMGwxCzAJ
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3oVXOKK15Rh5C3LuT
+tpMhYM+/kD+mpcWui1JAO2S4SrCIZLkQAsv5bMfm0tN8bim9u5Z7BVCxpwUfPaV
bAz7o20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEICcGVc9fS45n4PKefGbe
gT/Z05MC29jcKgtVNbMWGdufMAoGCCqGSM49BAMCA0gAMEUCIQDHa9XqxJ1WPT0r
uMe7oxuiV9wU6PenP8ayIRq9iuaEewIgVPTIqwVeIdFT8UJszIbATd1TpMX9xI1k
ZOCqemwfc9A=
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARpyNzuqy3vGD8w64tu
sCXu5rsAXys4olGMPUjfkljuP8jFDfJwxGU+20C/+hiFsjRdH1CMbPQoxzG21f84
nPvco20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILePu2sfJ++9aUaXy849
D31OLfdxpqdmLdbW4OGsL9AKMAoGCCqGSM49BAMCA0cAMEQCICLFFQizOr/8WEkT
1tvkYlMsFD0QVE+yQZJmnk6n0ytAAiATc53kdAT9r+KqRH5cGyHtt2j8cGW5M6og
dnmK55WtnA==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICWjCCAgCgAwIBAgIRAK+/fHlh8X0JonkAt70mkSEwCgYIKoZIzj0EAwIwbDEL
MIICWTCCAgCgAwIBAgIRAOtmgphZzsrJyEUOYqj+tSIwCgYIKoZIzj0EAwIwbDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
eGFtcGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMFgxCzAJ
eGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBaMFgxCzAJ
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
bmNpc2NvMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C
AQYIKoZIzj0DAQcDQgAEnMCrbnA2tOkYHvTMZvJoo5uEAz/i5T1yqMZ5E433OoFr
7jw8vx72gbOvThAAkKtDQzfzX7FGN/jjxkJe/ZOV4qOBljCBkzAOBgNVHQ8BAf8E
AQYIKoZIzj0DAQcDQgAEpEH+O8Cpx8ArCqZXwRSoLKpYrzN5HpO6EIdBQ+zOpdNF
EhcMfLkA9OkQKsWfqHFKRREYlXlM0JrMED88uu+7RKOBljCBkzAOBgNVHQ8BAf8E
BAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC
MAAwKwYDVR0jBCQwIoAgJwZVz19Ljmfg8p58Zt6BP9nTkwLb2NwqC1U1sxYZ258w
MAAwKwYDVR0jBCQwIoAgt4+7ax8n771pRpfLzj0PfU4t93Gmp2Yt1tbg4awv0Aow
JwYDVR0RBCAwHoITb3JkZXJlci5leGFtcGxlLmNvbYIHb3JkZXJlcjAKBggqhkjO
PQQDAgNIADBFAiEAnvdPMX47O87ovJyGUTlbiRnJduguoIr031RTmxYTN+UCICWU
YssGBgusVl2lplO9fJRJcn89WqORFygJj/1t8syA
PQQDAgNHADBEAiA2lxV9A7WZ5Joj5SC1ZHzmrO+hTn7dEy3b+bACqBqL/QIgXP+l
yT9gOCruy3CIhxzwUvy+AKmWQ0a2jPVbZ7i1xXk=
-----END CERTIFICATE-----

View file

@ -1,5 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgYnh9EV9FF22x/Nqm
OxnTqM0stWUBU4O9JHWWwyb19MmhRANCAAScwKtucDa06Rge9Mxm8mijm4QDP+Ll
PXKoxnkTjfc6gWvuPDy/HvaBs69OEACQq0NDN/NfsUY3+OPGQl79k5Xi
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgcfTXkdwJb0j3ufgq
KnqOfW0ph2B6Z9PijMEHrDswabqhRANCAASkQf47wKnHwCsKplfBFKgsqlivM3ke
k7oQh0FD7M6l00USFwx8uQD06RAqxZ+ocUpFERiVeUzQmswQPzy677tE
-----END PRIVATE KEY-----

View file

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgZBfvrqeRMB7smrs4
5HGU7VrInAL4YqP3akNVytR66uKhRANCAAR3oVXOKK15Rh5C3LuT+tpMhYM+/kD+
mpcWui1JAO2S4SrCIZLkQAsv5bMfm0tN8bim9u5Z7BVCxpwUfPaVbAz7
-----END PRIVATE KEY-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg0VNZQ97o4L9R3rpJ
hbinlLBN4XzgXxlW0WGdvrtYUHahRANCAARpyNzuqy3vGD8w64tusCXu5rsAXys4
olGMPUjfkljuP8jFDfJwxGU+20C/+hiFsjRdH1CMbPQoxzG21f84nPvc
-----END PRIVATE KEY-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAeqgAwIBAgIRAJDUJIOlNerIx+QFWaH83u0wCgYIKoZIzj0EAwIwbDEL
MIICQzCCAeqgAwIBAgIRAIbz4U6+kgdiF8Od7x68k4AwCgYIKoZIzj0EAwIwbDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
eGFtcGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMGwxCzAJ
eGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBaMGwxCzAJ
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3oVXOKK15Rh5C3LuT
+tpMhYM+/kD+mpcWui1JAO2S4SrCIZLkQAsv5bMfm0tN8bim9u5Z7BVCxpwUfPaV
bAz7o20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEICcGVc9fS45n4PKefGbe
gT/Z05MC29jcKgtVNbMWGdufMAoGCCqGSM49BAMCA0gAMEUCIQDHa9XqxJ1WPT0r
uMe7oxuiV9wU6PenP8ayIRq9iuaEewIgVPTIqwVeIdFT8UJszIbATd1TpMX9xI1k
ZOCqemwfc9A=
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARpyNzuqy3vGD8w64tu
sCXu5rsAXys4olGMPUjfkljuP8jFDfJwxGU+20C/+hiFsjRdH1CMbPQoxzG21f84
nPvco20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILePu2sfJ++9aUaXy849
D31OLfdxpqdmLdbW4OGsL9AKMAoGCCqGSM49BAMCA0cAMEQCICLFFQizOr/8WEkT
1tvkYlMsFD0QVE+yQZJmnk6n0ytAAiATc53kdAT9r+KqRH5cGyHtt2j8cGW5M6og
dnmK55WtnA==
-----END CERTIFICATE-----

View file

@ -1,13 +1,13 @@
-----BEGIN CERTIFICATE-----
MIICCzCCAbGgAwIBAgIRAPEuMhjzbXslBwbekcOmD1AwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMFYxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABKTFtF0SNhy/MW+TYUE9DuBjN9oxqWFUj4p7wdxSLZBRZf5KLX7g
M1CnH7ur9DsJE70n1PX+/vPuMyIeB33V0Y6jTTBLMA4GA1UdDwEB/wQEAwIHgDAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIGCjoENkaNZQVScyXBI6kCgzKoRvBcX+
70jw5WzXSmsdMAoGCCqGSM49BAMCA0gAMEUCIQDUkVhWPfOETm7kEb//GlDVEzAW
cr+Y1P/WSng6cYqahQIgdM5jxkfLoR8s8zFctevNEQvQOsNbJlJ08v6yEc9J3tM=
MIICCjCCAbCgAwIBAgIQDmT3mRPEOoRB+uyj/WYmfTAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE5MDQwMzE0MzUwMFoXDTI5MDMzMTE0MzUwMFowVjELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI
zj0DAQcDQgAEvOsEIZNTIIhQ9SgcOA19vS/VrCrfw/rnGYMmkdZnzK/s9tcqDWtw
r3vu9QU/lvtRZQQrpRVGJ3+PCNOQcuBuP6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgZIxG9F7xhJv3Elnor3WyT7x/ENFLHSSH
SuKdBgaPZbMwCgYIKoZIzj0EAwIDSAAwRQIhAJX03gBFoiN6Lgga32SZf7merIE5
hI0dyWxSnk7w/bwyAiBppwuk/F1Xa5QIs5f27lvqb6ml35D+XoQZGH3xapAV/w==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICPjCCAeSgAwIBAgIRAIvKUkOSe/nqaK1yUopBGiEwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASnZ+ZV2YbfMPvQaGfqwVLZ0uho
9TioTj5Pfj40QIyixko1llyrq9Dt9T3m4XvfKB2yk171IdUNAepmB1K52PnVo20w
azAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMB
MA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIGCjoENkaNZQVScyXBI6kCgzKoRv
BcX+70jw5WzXSmsdMAoGCCqGSM49BAMCA0gAMEUCIQDDuM0qeCmrJ7QvPQJrKtiT
h3W0rPsxWG9reunkChLklwIgXjo90TxZQzmXvRYkQldGJ3fBQDyQbRlGl74oGS2i
eEE=
MIICPTCCAeOgAwIBAgIQM2WSuizoDl4o6Ra1hKAM8jAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE5MDQwMzE0MzUwMFoXDTI5MDMzMTE0MzUwMFowaTELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABB07pwVD1SqQQmUPJE5A2v7WBvwK
02zPM/M065M7RYxEUJD+Wkogg2tZ94ukli1pjiMQVamUcRQuaWj5XnCDw5ujbTBr
MA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEw
DwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgZIxG9F7xhJv3Elnor3WyT7x/ENFL
HSSHSuKdBgaPZbMwCgYIKoZIzj0EAwIDSAAwRQIhAMCHE/tBDpX7J9E6cAJ+4x5N
QiHaV4M6KD2TdTmR6B31AiA6PNJhyJIfbeRfi5bYyhVz6XFkhywK1g2SnYDy8I/2
lQ==
-----END CERTIFICATE-----

View file

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgmvJiin2qoymcDI/e
ktT63g8JUClSQPx0q3Bu89UAeUChRANCAASkxbRdEjYcvzFvk2FBPQ7gYzfaMalh
VI+Ke8HcUi2QUWX+Si1+4DNQpx+7q/Q7CRO9J9T1/v7z7jMiHgd91dGO
-----END PRIVATE KEY-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgm60ZQuGuhkdKlHlp
Ss/3sQC0JRBr4J3+06S47tuJKxShRANCAAS86wQhk1MgiFD1KBw4DX29L9WsKt/D
+ucZgyaR1mfMr+z21yoNa3Cve+71BT+W+1FlBCulFUYnf48I05By4G4/
-----END PRIVATE KEY-----

View file

@ -1,13 +1,13 @@
-----BEGIN CERTIFICATE-----
MIICCzCCAbGgAwIBAgIRAPEuMhjzbXslBwbekcOmD1AwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMFYxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABKTFtF0SNhy/MW+TYUE9DuBjN9oxqWFUj4p7wdxSLZBRZf5KLX7g
M1CnH7ur9DsJE70n1PX+/vPuMyIeB33V0Y6jTTBLMA4GA1UdDwEB/wQEAwIHgDAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIGCjoENkaNZQVScyXBI6kCgzKoRvBcX+
70jw5WzXSmsdMAoGCCqGSM49BAMCA0gAMEUCIQDUkVhWPfOETm7kEb//GlDVEzAW
cr+Y1P/WSng6cYqahQIgdM5jxkfLoR8s8zFctevNEQvQOsNbJlJ08v6yEc9J3tM=
MIICCjCCAbCgAwIBAgIQDmT3mRPEOoRB+uyj/WYmfTAKBggqhkjOPQQDAjBpMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xFzAVBgNVBAMTDmNhLmV4YW1w
bGUuY29tMB4XDTE5MDQwMzE0MzUwMFoXDTI5MDMzMTE0MzUwMFowVjELMAkGA1UE
BhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lz
Y28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZI
zj0DAQcDQgAEvOsEIZNTIIhQ9SgcOA19vS/VrCrfw/rnGYMmkdZnzK/s9tcqDWtw
r3vu9QU/lvtRZQQrpRVGJ3+PCNOQcuBuP6NNMEswDgYDVR0PAQH/BAQDAgeAMAwG
A1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgZIxG9F7xhJv3Elnor3WyT7x/ENFLHSSH
SuKdBgaPZbMwCgYIKoZIzj0EAwIDSAAwRQIhAJX03gBFoiN6Lgga32SZf7merIE5
hI0dyWxSnk7w/bwyAiBppwuk/F1Xa5QIs5f27lvqb6ml35D+XoQZGH3xapAV/w==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAeqgAwIBAgIRAJDUJIOlNerIx+QFWaH83u0wCgYIKoZIzj0EAwIwbDEL
MIICQzCCAeqgAwIBAgIRAIbz4U6+kgdiF8Od7x68k4AwCgYIKoZIzj0EAwIwbDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
eGFtcGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMGwxCzAJ
eGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBaMGwxCzAJ
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3oVXOKK15Rh5C3LuT
+tpMhYM+/kD+mpcWui1JAO2S4SrCIZLkQAsv5bMfm0tN8bim9u5Z7BVCxpwUfPaV
bAz7o20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEICcGVc9fS45n4PKefGbe
gT/Z05MC29jcKgtVNbMWGdufMAoGCCqGSM49BAMCA0gAMEUCIQDHa9XqxJ1WPT0r
uMe7oxuiV9wU6PenP8ayIRq9iuaEewIgVPTIqwVeIdFT8UJszIbATd1TpMX9xI1k
ZOCqemwfc9A=
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARpyNzuqy3vGD8w64tu
sCXu5rsAXys4olGMPUjfkljuP8jFDfJwxGU+20C/+hiFsjRdH1CMbPQoxzG21f84
nPvco20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILePu2sfJ++9aUaXy849
D31OLfdxpqdmLdbW4OGsL9AKMAoGCCqGSM49BAMCA0cAMEQCICLFFQizOr/8WEkT
1tvkYlMsFD0QVE+yQZJmnk6n0ytAAiATc53kdAT9r+KqRH5cGyHtt2j8cGW5M6og
dnmK55WtnA==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICRDCCAeqgAwIBAgIRAJDUJIOlNerIx+QFWaH83u0wCgYIKoZIzj0EAwIwbDEL
MIICQzCCAeqgAwIBAgIRAIbz4U6+kgdiF8Od7x68k4AwCgYIKoZIzj0EAwIwbDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
eGFtcGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2MDBaMGwxCzAJ
eGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBaMGwxCzAJ
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
bmNpc2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEaMBgGA1UEAxMRdGxzY2EuZXhh
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAR3oVXOKK15Rh5C3LuT
+tpMhYM+/kD+mpcWui1JAO2S4SrCIZLkQAsv5bMfm0tN8bim9u5Z7BVCxpwUfPaV
bAz7o20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEICcGVc9fS45n4PKefGbe
gT/Z05MC29jcKgtVNbMWGdufMAoGCCqGSM49BAMCA0gAMEUCIQDHa9XqxJ1WPT0r
uMe7oxuiV9wU6PenP8ayIRq9iuaEewIgVPTIqwVeIdFT8UJszIbATd1TpMX9xI1k
ZOCqemwfc9A=
bXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARpyNzuqy3vGD8w64tu
sCXu5rsAXys4olGMPUjfkljuP8jFDfJwxGU+20C/+hiFsjRdH1CMbPQoxzG21f84
nPvco20wazAOBgNVHQ8BAf8EBAMCAaYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsG
AQUFBwMBMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEILePu2sfJ++9aUaXy849
D31OLfdxpqdmLdbW4OGsL9AKMAoGCCqGSM49BAMCA0cAMEQCICLFFQizOr/8WEkT
1tvkYlMsFD0QVE+yQZJmnk6n0ytAAiATc53kdAT9r+KqRH5cGyHtt2j8cGW5M6og
dnmK55WtnA==
-----END CERTIFICATE-----

View file

@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICLDCCAdKgAwIBAgIQVuAtoS1vz2Gr+5hiIwtb0DAKBggqhkjOPQQDAjBsMQsw
MIICKzCCAdKgAwIBAgIQfCAywNgEHI/DZAn6/YtLxjAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE5MDQwMzA5MzYwMFoXDTI5MDMzMTA5MzYwMFowVjELMAkG
YW1wbGUuY29tMB4XDTE5MDQwMzE0MzUwMFoXDTI5MDMzMTE0MzUwMFowVjELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI
KoZIzj0DAQcDQgAESAFACnTk8V+rMUcMtnMFlSXhoOYTURfwBWk/iJtsoMIRsLu+
Qng5BjYfVvd8RYisAglDhPgd6julcKEz814Wh6NsMGowDgYDVR0PAQH/BAQDAgWg
KoZIzj0DAQcDQgAEWfwfjHN/tsL7xtVO+K95Kb/4YkFnjjHJfXwpeXoYARz/uQvC
TRUU9sWbnu4GY5dd5Zo21K1SmC8JVN+WTGOf5KNsMGowDgYDVR0PAQH/BAQDAgWg
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMCsG
A1UdIwQkMCKAICcGVc9fS45n4PKefGbegT/Z05MC29jcKgtVNbMWGdufMAoGCCqG
SM49BAMCA0gAMEUCIQDh5qGMzriI6RcSrU85JmumjbVNfQyxT1MJJLiWd46B/gIg
S6UD/IvMw8bRd8JmLtsiA9NYWPt9MJQHn0Sg/R5ae84=
A1UdIwQkMCKAILePu2sfJ++9aUaXy849D31OLfdxpqdmLdbW4OGsL9AKMAoGCCqG
SM49BAMCA0cAMEQCIAem9y0xrm7JtWDLnb2kl/VKkog4t4JTSHn+TbX2ATVQAiBj
RAnCepWwQefo2T/Yt/FjcxW9NGg4pcq70RjlN3w4Nw==
-----END CERTIFICATE-----

View file

@ -1,5 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQggyhsL95l1/svyPqF
SDXTaMU8g8Z/kKSVZGUB3HYZmKyhRANCAARIAUAKdOTxX6sxRwy2cwWVJeGg5hNR
F/AFaT+Im2ygwhGwu75CeDkGNh9W93xFiKwCCUOE+B3qO6VwoTPzXhaH
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghjq6fFiakPCEPD4Q
K9o1exnhGAVn2yfmdWgSWeA7aoShRANCAARZ/B+Mc3+2wvvG1U74r3kpv/hiQWeO
Mcl9fCl5ehgBHP+5C8JNFRT2xZue7gZjl13lmjbUrVKYLwlU35ZMY5/k
-----END PRIVATE KEY-----

View file

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgeMBO+L4wMaEqygjS
Y4ywCi7ZJn0F90m6MlxoPWsRUjqhRANCAATw/6D7q1n72KQJc5yxQ99xlU/HRdF7
L+bu23EXA+MYq9Qg2RmTZ8kwH+qMfuFdRA3KclGFYFrMlnnkbmKG8vG1
-----END PRIVATE KEY-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg0ulsAiNhX3McgBWR
5sK+q90fK7tNQbPc43pbBH9jZVWhRANCAAS+9WaY59kvfBjNuGYep2vcQZFbNj4u
7u+QQfOYmr7K5Gz2CKY4cyetLnuPkBcQhRF05ju8u3IarnT88qn9t9gM
-----END PRIVATE KEY-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICUTCCAfigAwIBAgIRAL2BME0pO7MLvn4YdGSnMZ0wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPD/oPurWfvYpAlznLFD33GVT8dF0Xsv5u7bcRcD4xir1CDZGZNnyTAf6ox+4V1E
DcpyUYVgWsyWeeRuYoby8bWjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
S494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZIzj0EAwIDRwAw
RAIgE6PLk5AyIyxUjydmsu43e5Vls9i55KvQVZWlkEd1l4wCIB82B29Cc4g8/Ean
9lmpctb59bKnBG/c474a1+d3ocTG
MIICUDCCAfegAwIBAgIQLpBhJqg/HNcbDf8mBVTfPzAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
vvVmmOfZL3wYzbhmHqdr3EGRWzY+Lu7vkEHzmJq+yuRs9gimOHMnrS57j5AXEIUR
dOY7vLtyGq50/PKp/bfYDKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCB2
7LJr8AMQ9lCJPBj0RZ4DUm9xfb66uh/VctoDDOzS2TAKBggqhkjOPQQDAgNHADBE
AiAw6gaDSAPZpd3ZPKQ+anK+u7KMRi/K8J928d/75Z/wDQIgITk7fjENP1B83SEB
xdVpMSqVfnwRRrEJFs+jS1ZztPE=
-----END CERTIFICATE-----

View file

@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKjCCAdGgAwIBAgIRAKc1wbuvKM6xOY8IpsRuQ5swCgYIKoZIzj0EAwIwczEL
MIICKjCCAdGgAwIBAgIRAPTSLupozmwcZ48H1jy0OYMwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQzNTAw
WjBsMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEPMA0GA1UECxMGY2xpZW50MR8wHQYDVQQDDBZBZG1pbkBv
cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbDNRdCJE
su0E+qEleJ4gsJ+9ffFfbnVkRSsDR54NFXDNsUI/mxtCMDEGSHBRMMuD2D87KT3L
/zVWxeFQGa282aNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgS494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZI
zj0EAwIDRwAwRAIgJjjGMKrXBviADGyfo6Otu1jqYIXTbDeU2vzWjp4dpagCIE2+
7kVbT+kWYNmnFmYpGuR/D4FdqgiQf/HeyxxyA4en
cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgCotpEt9
BLbmV2l5cDxu6ZhbXr7NqmKwfYxN/HfLxAIv4IcaKG/pJeGK7dsvVSrecVvIbsd7
bKncC0fCczuD0aNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgduyya/ADEPZQiTwY9EWeA1JvcX2+urof1XLaAwzs0tkwCgYIKoZI
zj0EAwIDRwAwRAIgVolif/BDAdxuCLGstL/vfFq3zgNiuQ4Evk2B7EXF2NUCIA8K
bsRh9QALSbCsoeSrItsfx7OLM6Ta/4+souF69BGv
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICUTCCAfigAwIBAgIRAL2BME0pO7MLvn4YdGSnMZ0wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPD/oPurWfvYpAlznLFD33GVT8dF0Xsv5u7bcRcD4xir1CDZGZNnyTAf6ox+4V1E
DcpyUYVgWsyWeeRuYoby8bWjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
S494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZIzj0EAwIDRwAw
RAIgE6PLk5AyIyxUjydmsu43e5Vls9i55KvQVZWlkEd1l4wCIB82B29Cc4g8/Ean
9lmpctb59bKnBG/c474a1+d3ocTG
MIICUDCCAfegAwIBAgIQLpBhJqg/HNcbDf8mBVTfPzAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
vvVmmOfZL3wYzbhmHqdr3EGRWzY+Lu7vkEHzmJq+yuRs9gimOHMnrS57j5AXEIUR
dOY7vLtyGq50/PKp/bfYDKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCB2
7LJr8AMQ9lCJPBj0RZ4DUm9xfb66uh/VctoDDOzS2TAKBggqhkjOPQQDAgNHADBE
AiAw6gaDSAPZpd3ZPKQ+anK+u7KMRi/K8J928d/75Z/wDQIgITk7fjENP1B83SEB
xdVpMSqVfnwRRrEJFs+jS1ZztPE=
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICVzCCAf6gAwIBAgIRAID7lGZ/MP6IC8UYTDn4FLQwCgYIKoZIzj0EAwIwdjEL
MIICWDCCAf6gAwIBAgIRAMlkjk2w9CSX+gV6QY41KIowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkz
NjAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABNSoMBOuJDL6KO00PQrsLSiM3i+18O4j7qh6eqNjXhCpnoFlLVJKva3S
mXOA8OjWvDrGjPLBAPJaQAVpMQgib8SjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
AwEHA0IABNXLUtSIrYGulAC1M7jdtHBPA7N9k72Rww5y/xYA3d6qlpj0ONBlA7fo
CAXvwmt8m6Ppc2TJOTKPX6DuqHyvLgqjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQg8IrTb4rYg9sQnDXSJibB1rub3hl/1S2edHFfxXVCWZMwCgYIKoZIzj0E
AwIDRwAwRAIgcF/hO88rEQz3pcsSOUtEwx/THemmDsEjOQVowPR6oMcCIC/zS6Zo
rd4x0veATGx/OG7avXP82Soi/2z9gJxUKsGv
HQ4EIgQgliVo3c3LMbazZMr/yGKsLqdiqe/o/1TJREoPr8PJRb8wCgYIKoZIzj0E
AwIDSAAwRQIhANVLtc1NB90R2vNu1AdlKVyWwgLlKMGKxIEDFmnJjOg3AiATXxYn
zF6M01hCvorDq9txEE56pNYfs22lTy5rrw8Zyg==
-----END CERTIFICATE-----

View file

@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKjCCAdGgAwIBAgIRAKc1wbuvKM6xOY8IpsRuQ5swCgYIKoZIzj0EAwIwczEL
MIICKjCCAdGgAwIBAgIRAPTSLupozmwcZ48H1jy0OYMwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQzNTAw
WjBsMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEPMA0GA1UECxMGY2xpZW50MR8wHQYDVQQDDBZBZG1pbkBv
cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbDNRdCJE
su0E+qEleJ4gsJ+9ffFfbnVkRSsDR54NFXDNsUI/mxtCMDEGSHBRMMuD2D87KT3L
/zVWxeFQGa282aNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgS494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZI
zj0EAwIDRwAwRAIgJjjGMKrXBviADGyfo6Otu1jqYIXTbDeU2vzWjp4dpagCIE2+
7kVbT+kWYNmnFmYpGuR/D4FdqgiQf/HeyxxyA4en
cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgCotpEt9
BLbmV2l5cDxu6ZhbXr7NqmKwfYxN/HfLxAIv4IcaKG/pJeGK7dsvVSrecVvIbsd7
bKncC0fCczuD0aNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgduyya/ADEPZQiTwY9EWeA1JvcX2+urof1XLaAwzs0tkwCgYIKoZI
zj0EAwIDRwAwRAIgVolif/BDAdxuCLGstL/vfFq3zgNiuQ4Evk2B7EXF2NUCIA8K
bsRh9QALSbCsoeSrItsfx7OLM6Ta/4+souF69BGv
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICUTCCAfigAwIBAgIRAL2BME0pO7MLvn4YdGSnMZ0wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPD/oPurWfvYpAlznLFD33GVT8dF0Xsv5u7bcRcD4xir1CDZGZNnyTAf6ox+4V1E
DcpyUYVgWsyWeeRuYoby8bWjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
S494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZIzj0EAwIDRwAw
RAIgE6PLk5AyIyxUjydmsu43e5Vls9i55KvQVZWlkEd1l4wCIB82B29Cc4g8/Ean
9lmpctb59bKnBG/c474a1+d3ocTG
MIICUDCCAfegAwIBAgIQLpBhJqg/HNcbDf8mBVTfPzAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
vvVmmOfZL3wYzbhmHqdr3EGRWzY+Lu7vkEHzmJq+yuRs9gimOHMnrS57j5AXEIUR
dOY7vLtyGq50/PKp/bfYDKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCB2
7LJr8AMQ9lCJPBj0RZ4DUm9xfb66uh/VctoDDOzS2TAKBggqhkjOPQQDAgNHADBE
AiAw6gaDSAPZpd3ZPKQ+anK+u7KMRi/K8J928d/75Z/wDQIgITk7fjENP1B83SEB
xdVpMSqVfnwRRrEJFs+jS1ZztPE=
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgDhiiUsnVPzerS+EW
DsFPnNkCriYia9z64JKwgRldmY+hRANCAASK4yImcq7Gz0izaPZsp5WchUDdswqv
szNtxHiVj6hLDkfxq7bo3W3N+4ydOMOGYfstIDFua4yc/ML9DyVWordH
-----END PRIVATE KEY-----

View file

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgFLWnQjBCqySJe1gA
AbczdCMo/zz9GjzthGOAfLm2As+hRANCAAS2TbiGZvS+QZgGOsRzwQ3zMK4Gy7zM
9bwdWP1I7GBKfl/IHY72qqJlwhQsUdVG6h1nm4ag6uRvvJg6vwgobRZ5
-----END PRIVATE KEY-----

View file

@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKTCCAc+gAwIBAgIRAKcgY7VzX/a/bxg4c9GmT1UwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
WjBqMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzENMAsGA1UECxMEcGVlcjEfMB0GA1UEAxMWcGVlcjAub3Jn
MS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLZNuIZm9L5B
mAY6xHPBDfMwrgbLvMz1vB1Y/UjsYEp+X8gdjvaqomXCFCxR1UbqHWebhqDq5G+8
mDq/CChtFnmjTTBLMA4GA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1Ud
IwQkMCKAIEuPeFyj0wp68XoM/PAxXebWUJoSrhfbFbG3IJx1yifSMAoGCCqGSM49
BAMCA0gAMEUCIQC9PLIHZdMXbgUTU5oGjZb/D7nTj+GUnHK+NE/Kmh2zUwIgbvhZ
2+L8d6rwhMvcPR1xWpKOr0xkUwIUIAC1KU1i6Fg=
MIICJzCCAc6gAwIBAgIQZ4zjzysPz/LRbbfFhyV/2jAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MGoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMQ0wCwYDVQQLEwRwZWVyMR8wHQYDVQQDExZwZWVyMC5vcmcx
LmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEiuMiJnKuxs9I
s2j2bKeVnIVA3bMKr7MzbcR4lY+oSw5H8au26N1tzfuMnTjDhmH7LSAxbmuMnPzC
/Q8lVqK3R6NNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0j
BCQwIoAgduyya/ADEPZQiTwY9EWeA1JvcX2+urof1XLaAwzs0tkwCgYIKoZIzj0E
AwIDRwAwRAIgZvJaC2nzBsxjFjye5kcOCVH2W105GVygCYZGCUG64IwCIEVNzVgw
jsCQFzBj0l9aXsJOhA9wCV3aQlLFhix9xnxK
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICVzCCAf6gAwIBAgIRAID7lGZ/MP6IC8UYTDn4FLQwCgYIKoZIzj0EAwIwdjEL
MIICWDCCAf6gAwIBAgIRAMlkjk2w9CSX+gV6QY41KIowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkz
NjAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABNSoMBOuJDL6KO00PQrsLSiM3i+18O4j7qh6eqNjXhCpnoFlLVJKva3S
mXOA8OjWvDrGjPLBAPJaQAVpMQgib8SjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
AwEHA0IABNXLUtSIrYGulAC1M7jdtHBPA7N9k72Rww5y/xYA3d6qlpj0ONBlA7fo
CAXvwmt8m6Ppc2TJOTKPX6DuqHyvLgqjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQg8IrTb4rYg9sQnDXSJibB1rub3hl/1S2edHFfxXVCWZMwCgYIKoZIzj0E
AwIDRwAwRAIgcF/hO88rEQz3pcsSOUtEwx/THemmDsEjOQVowPR6oMcCIC/zS6Zo
rd4x0veATGx/OG7avXP82Soi/2z9gJxUKsGv
HQ4EIgQgliVo3c3LMbazZMr/yGKsLqdiqe/o/1TJREoPr8PJRb8wCgYIKoZIzj0E
AwIDSAAwRQIhANVLtc1NB90R2vNu1AdlKVyWwgLlKMGKxIEDFmnJjOg3AiATXxYn
zF6M01hCvorDq9txEE56pNYfs22lTy5rrw8Zyg==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICVzCCAf6gAwIBAgIRAID7lGZ/MP6IC8UYTDn4FLQwCgYIKoZIzj0EAwIwdjEL
MIICWDCCAf6gAwIBAgIRAMlkjk2w9CSX+gV6QY41KIowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkz
NjAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABNSoMBOuJDL6KO00PQrsLSiM3i+18O4j7qh6eqNjXhCpnoFlLVJKva3S
mXOA8OjWvDrGjPLBAPJaQAVpMQgib8SjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
AwEHA0IABNXLUtSIrYGulAC1M7jdtHBPA7N9k72Rww5y/xYA3d6qlpj0ONBlA7fo
CAXvwmt8m6Ppc2TJOTKPX6DuqHyvLgqjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQg8IrTb4rYg9sQnDXSJibB1rub3hl/1S2edHFfxXVCWZMwCgYIKoZIzj0E
AwIDRwAwRAIgcF/hO88rEQz3pcsSOUtEwx/THemmDsEjOQVowPR6oMcCIC/zS6Zo
rd4x0veATGx/OG7avXP82Soi/2z9gJxUKsGv
HQ4EIgQgliVo3c3LMbazZMr/yGKsLqdiqe/o/1TJREoPr8PJRb8wCgYIKoZIzj0E
AwIDSAAwRQIhANVLtc1NB90R2vNu1AdlKVyWwgLlKMGKxIEDFmnJjOg3AiATXxYn
zF6M01hCvorDq9txEE56pNYfs22lTy5rrw8Zyg==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICZjCCAg2gAwIBAgIQTUjCZpYZ8GtIDWkYOsL/nTAKBggqhkjOPQQDAjB2MQsw
MIICZjCCAg2gAwIBAgIQcKjz/huiumA5EOg9vU00aDAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1
MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Gm7zS7Pq9Z/lEVwfozKbqy+m1UT
HJyXjluwCy4mS1fg7QKRZppKJPcL+NSUlP5/4h7BVbDPYkSekale9tb/UaOBlzCB
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgjKYKz0nN+ygU7B7PnUpjixJoo8d
G0bjy5t34SUa9L6+iAGLUJEnCYlzqEalc8gSbLCrykUO3OPmigddL5Ad+KOBlzCB
lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAg8IrTb4rYg9sQnDXSJibB1rub3hl/
1S2edHFfxXVCWZMwKAYDVR0RBCEwH4IWcGVlcjAub3JnMS5leGFtcGxlLmNvbYIF
cGVlcjAwCgYIKoZIzj0EAwIDRwAwRAIgSTpzMH/wXGrOUvYYr7315Q49MEfYASIO
y6GgQbAz4MwCIGkWtvNHC08hUgJNADyUs583Sr0h6OkQCtlL2SwgJehc
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgliVo3c3LMbazZMr/yGKsLqdiqe/o
/1TJREoPr8PJRb8wKAYDVR0RBCEwH4IWcGVlcjAub3JnMS5leGFtcGxlLmNvbYIF
cGVlcjAwCgYIKoZIzj0EAwIDRwAwRAIgQT7XLdNo2k7O0bUPfegP8/brbtUXg67I
5eWuveRh7igCIC4fpRBnMBmbXi+nogfhsTAQXHc1qUG8o90TgWcjaHRQ
-----END CERTIFICATE-----

View file

@ -1,5 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd4D4RKU2FOjjBzRO
vLP5u1YldbjJBGhX2l7JIEbrg0yhRANCAATUabvNLs+r1n+URXB+jMpurL6bVRMc
nJeOW7ALLiZLV+DtApFmmkok9wv41JSU/n/iHsFVsM9iRJ6RqV721v9R
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgEDwGDOy10Vl47555
mjted5LdMcXVRYTdLABuboD8hfOhRANCAASCMpgrPSc37KBTsHs+dSmOLEmijx0b
RuPLm3fhJRr0vr6IAYtQkScJiXOoRqVzyBJssKvKRQ7c4+aKB10vkB34
-----END PRIVATE KEY-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgYtAtaP3W44bfF24S
CbavtZGE+1i4qaZvNazXdZhNf0ahRANCAATVy1LUiK2BrpQAtTO43bRwTwOzfZO9
kcMOcv8WAN3eqpaY9DjQZQO36AgF78JrfJuj6XNkyTkyj1+g7qh8ry4K
-----END PRIVATE KEY-----

View file

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgexG3qyilzKsb6KDG
NUAW54WQNQdtDX7lLd0bc+IyX1GhRANCAATUqDATriQy+ijtND0K7C0ojN4vtfDu
I+6oenqjY14QqZ6BZS1SSr2t0plzgPDo1rw6xozywQDyWkAFaTEIIm/E
-----END PRIVATE KEY-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICVzCCAf6gAwIBAgIRAID7lGZ/MP6IC8UYTDn4FLQwCgYIKoZIzj0EAwIwdjEL
MIICWDCCAf6gAwIBAgIRAMlkjk2w9CSX+gV6QY41KIowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkz
NjAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABNSoMBOuJDL6KO00PQrsLSiM3i+18O4j7qh6eqNjXhCpnoFlLVJKva3S
mXOA8OjWvDrGjPLBAPJaQAVpMQgib8SjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
AwEHA0IABNXLUtSIrYGulAC1M7jdtHBPA7N9k72Rww5y/xYA3d6qlpj0ONBlA7fo
CAXvwmt8m6Ppc2TJOTKPX6DuqHyvLgqjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQg8IrTb4rYg9sQnDXSJibB1rub3hl/1S2edHFfxXVCWZMwCgYIKoZIzj0E
AwIDRwAwRAIgcF/hO88rEQz3pcsSOUtEwx/THemmDsEjOQVowPR6oMcCIC/zS6Zo
rd4x0veATGx/OG7avXP82Soi/2z9gJxUKsGv
HQ4EIgQgliVo3c3LMbazZMr/yGKsLqdiqe/o/1TJREoPr8PJRb8wCgYIKoZIzj0E
AwIDSAAwRQIhANVLtc1NB90R2vNu1AdlKVyWwgLlKMGKxIEDFmnJjOg3AiATXxYn
zF6M01hCvorDq9txEE56pNYfs22lTy5rrw8Zyg==
-----END CERTIFICATE-----

View file

@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKjCCAdGgAwIBAgIRAKc1wbuvKM6xOY8IpsRuQ5swCgYIKoZIzj0EAwIwczEL
MIICKjCCAdGgAwIBAgIRAPTSLupozmwcZ48H1jy0OYMwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQzNTAw
WjBsMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEPMA0GA1UECxMGY2xpZW50MR8wHQYDVQQDDBZBZG1pbkBv
cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbDNRdCJE
su0E+qEleJ4gsJ+9ffFfbnVkRSsDR54NFXDNsUI/mxtCMDEGSHBRMMuD2D87KT3L
/zVWxeFQGa282aNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgS494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZI
zj0EAwIDRwAwRAIgJjjGMKrXBviADGyfo6Otu1jqYIXTbDeU2vzWjp4dpagCIE2+
7kVbT+kWYNmnFmYpGuR/D4FdqgiQf/HeyxxyA4en
cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgCotpEt9
BLbmV2l5cDxu6ZhbXr7NqmKwfYxN/HfLxAIv4IcaKG/pJeGK7dsvVSrecVvIbsd7
bKncC0fCczuD0aNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgduyya/ADEPZQiTwY9EWeA1JvcX2+urof1XLaAwzs0tkwCgYIKoZI
zj0EAwIDRwAwRAIgVolif/BDAdxuCLGstL/vfFq3zgNiuQ4Evk2B7EXF2NUCIA8K
bsRh9QALSbCsoeSrItsfx7OLM6Ta/4+souF69BGv
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICUTCCAfigAwIBAgIRAL2BME0pO7MLvn4YdGSnMZ0wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPD/oPurWfvYpAlznLFD33GVT8dF0Xsv5u7bcRcD4xir1CDZGZNnyTAf6ox+4V1E
DcpyUYVgWsyWeeRuYoby8bWjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
S494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZIzj0EAwIDRwAw
RAIgE6PLk5AyIyxUjydmsu43e5Vls9i55KvQVZWlkEd1l4wCIB82B29Cc4g8/Ean
9lmpctb59bKnBG/c474a1+d3ocTG
MIICUDCCAfegAwIBAgIQLpBhJqg/HNcbDf8mBVTfPzAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
vvVmmOfZL3wYzbhmHqdr3EGRWzY+Lu7vkEHzmJq+yuRs9gimOHMnrS57j5AXEIUR
dOY7vLtyGq50/PKp/bfYDKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCB2
7LJr8AMQ9lCJPBj0RZ4DUm9xfb66uh/VctoDDOzS2TAKBggqhkjOPQQDAgNHADBE
AiAw6gaDSAPZpd3ZPKQ+anK+u7KMRi/K8J928d/75Z/wDQIgITk7fjENP1B83SEB
xdVpMSqVfnwRRrEJFs+jS1ZztPE=
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg1txEHdaQb0Mc41Ja
cti7dNjwV184ulQuOnbfvmp6mxyhRANCAASAKi2kS30EtuZXaXlwPG7pmFtevs2q
YrB9jE38d8vEAi/ghxoob+kl4Yrt2y9VKt5xW8hux3tsqdwLR8JzO4PR
-----END PRIVATE KEY-----

View file

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgtYXP0ZPDqJq3iTyt
0DnbrWgEfcRt1kY+Uebr9PhqwFGhRANCAARsM1F0IkSy7QT6oSV4niCwn7198V9u
dWRFKwNHng0VcM2xQj+bG0IwMQZIcFEwy4PYPzspPcv/NVbF4VAZrbzZ
-----END PRIVATE KEY-----

View file

@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKjCCAdGgAwIBAgIRAKc1wbuvKM6xOY8IpsRuQ5swCgYIKoZIzj0EAwIwczEL
MIICKjCCAdGgAwIBAgIRAPTSLupozmwcZ48H1jy0OYMwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQzNTAw
WjBsMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEPMA0GA1UECxMGY2xpZW50MR8wHQYDVQQDDBZBZG1pbkBv
cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEbDNRdCJE
su0E+qEleJ4gsJ+9ffFfbnVkRSsDR54NFXDNsUI/mxtCMDEGSHBRMMuD2D87KT3L
/zVWxeFQGa282aNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgS494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZI
zj0EAwIDRwAwRAIgJjjGMKrXBviADGyfo6Otu1jqYIXTbDeU2vzWjp4dpagCIE2+
7kVbT+kWYNmnFmYpGuR/D4FdqgiQf/HeyxxyA4en
cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgCotpEt9
BLbmV2l5cDxu6ZhbXr7NqmKwfYxN/HfLxAIv4IcaKG/pJeGK7dsvVSrecVvIbsd7
bKncC0fCczuD0aNNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgduyya/ADEPZQiTwY9EWeA1JvcX2+urof1XLaAwzs0tkwCgYIKoZI
zj0EAwIDRwAwRAIgVolif/BDAdxuCLGstL/vfFq3zgNiuQ4Evk2B7EXF2NUCIA8K
bsRh9QALSbCsoeSrItsfx7OLM6Ta/4+souF69BGv
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICVzCCAf6gAwIBAgIRAID7lGZ/MP6IC8UYTDn4FLQwCgYIKoZIzj0EAwIwdjEL
MIICWDCCAf6gAwIBAgIRAMlkjk2w9CSX+gV6QY41KIowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkz
NjAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABNSoMBOuJDL6KO00PQrsLSiM3i+18O4j7qh6eqNjXhCpnoFlLVJKva3S
mXOA8OjWvDrGjPLBAPJaQAVpMQgib8SjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
AwEHA0IABNXLUtSIrYGulAC1M7jdtHBPA7N9k72Rww5y/xYA3d6qlpj0ONBlA7fo
CAXvwmt8m6Ppc2TJOTKPX6DuqHyvLgqjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQg8IrTb4rYg9sQnDXSJibB1rub3hl/1S2edHFfxXVCWZMwCgYIKoZIzj0E
AwIDRwAwRAIgcF/hO88rEQz3pcsSOUtEwx/THemmDsEjOQVowPR6oMcCIC/zS6Zo
rd4x0veATGx/OG7avXP82Soi/2z9gJxUKsGv
HQ4EIgQgliVo3c3LMbazZMr/yGKsLqdiqe/o/1TJREoPr8PJRb8wCgYIKoZIzj0E
AwIDSAAwRQIhANVLtc1NB90R2vNu1AdlKVyWwgLlKMGKxIEDFmnJjOg3AiATXxYn
zF6M01hCvorDq9txEE56pNYfs22lTy5rrw8Zyg==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICVzCCAf6gAwIBAgIRAID7lGZ/MP6IC8UYTDn4FLQwCgYIKoZIzj0EAwIwdjEL
MIICWDCCAf6gAwIBAgIRAMlkjk2w9CSX+gV6QY41KIowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkz
NjAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABNSoMBOuJDL6KO00PQrsLSiM3i+18O4j7qh6eqNjXhCpnoFlLVJKva3S
mXOA8OjWvDrGjPLBAPJaQAVpMQgib8SjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
AwEHA0IABNXLUtSIrYGulAC1M7jdtHBPA7N9k72Rww5y/xYA3d6qlpj0ONBlA7fo
CAXvwmt8m6Ppc2TJOTKPX6DuqHyvLgqjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQg8IrTb4rYg9sQnDXSJibB1rub3hl/1S2edHFfxXVCWZMwCgYIKoZIzj0E
AwIDRwAwRAIgcF/hO88rEQz3pcsSOUtEwx/THemmDsEjOQVowPR6oMcCIC/zS6Zo
rd4x0veATGx/OG7avXP82Soi/2z9gJxUKsGv
HQ4EIgQgliVo3c3LMbazZMr/yGKsLqdiqe/o/1TJREoPr8PJRb8wCgYIKoZIzj0E
AwIDSAAwRQIhANVLtc1NB90R2vNu1AdlKVyWwgLlKMGKxIEDFmnJjOg3AiATXxYn
zF6M01hCvorDq9txEE56pNYfs22lTy5rrw8Zyg==
-----END CERTIFICATE-----

View file

@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICOjCCAeGgAwIBAgIQN2CPLU2Z5c2oN/kYQYqw7DAKBggqhkjOPQQDAjB2MQsw
MIICOzCCAeGgAwIBAgIQXkFwRCgoNHCpTxhSKbCosDAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMwOTM2MDBaFw0yOTAzMzEwOTM2
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1
MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEOK4mGQM3LqhX0eGxpwSN/GwNqkkd
GeUY8tbdjV3YFfJkVP9t4a6DgRYfmsXcBuSI2+zSK6jopgyb8lpgQHnZ3aNsMGow
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEqIU9hL6nY3DFRLkIyzEWkbdfaP+n
KxUjmaQf2ek3Va6pZOA5AFa6hsigu+G6j7+SNSvgCPEd4HKDaSutM2xmIqNsMGow
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIPCK02+K2IPbEJw10iYmwda7m94Zf9Ut
nnRxX8V1QlmTMAoGCCqGSM49BAMCA0cAMEQCICb8PVNA0j/YKcGYGlq1KBNmFdlq
6wXi16SyLeabi4nAAiAzJqYX6n0gyMLMKjVjELB56cf2nk15tetow7ymkm3vcQ==
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIJYlaN3NyzG2s2TK/8hirC6nYqnv6P9U
yURKD6/DyUW/MAoGCCqGSM49BAMCA0gAMEUCIQCvm4VTqpAy4m3xO5pDwva4t6Hn
bixMIEZCO7omOOtS+AIgFkSPWr+rHZMeLw/yfRUVcxHIkXOse3+GWMIODVTV3O0=
-----END CERTIFICATE-----

View file

@ -1,5 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgi3xJTb99H87bleWu
wixwYTCvJEebjTo1efPLDGtMsN+hRANCAAQ4riYZAzcuqFfR4bGnBI38bA2qSR0Z
5Rjy1t2NXdgV8mRU/23hroOBFh+axdwG5Ijb7NIrqOimDJvyWmBAednd
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgsCCkj2Sk5IcspDP2
h5vymzb8oXOabtozYsA+b8GymE2hRANCAASohT2EvqdjcMVEuQjLMRaRt19o/6cr
FSOZpB/Z6TdVrqlk4DkAVrqGyKC74bqPv5I1K+AI8R3gcoNpK60zbGYi
-----END PRIVATE KEY-----

View file

@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKzCCAdGgAwIBAgIRAIUX7bzYm7Jh4wLqSyweiagwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
WjBsMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEPMA0GA1UECxMGY2xpZW50MR8wHQYDVQQDDBZVc2VyMUBv
cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYnytY4kP
uZAIOB8R+mdd4fyyLyp+OW8IBqdWS0Cbph68Fu3hiWyMMLje8rEzsVggkhaPkArn
w6LfD15GcuQZP6NNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgS494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZI
zj0EAwIDSAAwRQIhAOXiP5p9KmS/3Mq6TEn7Bokr7iXBb/vBiklFWUxtrso/AiAN
MMSjeIzLUxbmBSWzAcPUKhhbBZXersFUlsf7bw+KoA==
MIICKjCCAdCgAwIBAgIQPtDazK5/UJ5O4kIjkXIuRzAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MGwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMQ8wDQYDVQQLEwZjbGllbnQxHzAdBgNVBAMMFlVzZXIxQG9y
ZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASqaX9nKMqY
xUpvA4wlu0vjsq7ul176fNqnpiX/2e37eZwl7H4BVBRy0O5u7XU3oUetkllUedf3
ksM1r8PiMdbCo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV
HSMEJDAigCB27LJr8AMQ9lCJPBj0RZ4DUm9xfb66uh/VctoDDOzS2TAKBggqhkjO
PQQDAgNIADBFAiEAibEuWCvvRiti95mlRj+jDyxFGtcKJHEVCQWE3jb55z8CIHKM
TdGegUWzJE9Uwk0vKYeorCp/xEIeXlRg0F72IrME
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICUTCCAfigAwIBAgIRAL2BME0pO7MLvn4YdGSnMZ0wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
WjBzMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UE
AxMTY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IA
BPD/oPurWfvYpAlznLFD33GVT8dF0Xsv5u7bcRcD4xir1CDZGZNnyTAf6ox+4V1E
DcpyUYVgWsyWeeRuYoby8bWjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNVHSUEFjAU
BggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQg
S494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZIzj0EAwIDRwAw
RAIgE6PLk5AyIyxUjydmsu43e5Vls9i55KvQVZWlkEd1l4wCIB82B29Cc4g8/Ean
9lmpctb59bKnBG/c474a1+d3ocTG
MIICUDCCAfegAwIBAgIQLpBhJqg/HNcbDf8mBVTfPzAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
vvVmmOfZL3wYzbhmHqdr3EGRWzY+Lu7vkEHzmJq+yuRs9gimOHMnrS57j5AXEIUR
dOY7vLtyGq50/PKp/bfYDKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCB2
7LJr8AMQ9lCJPBj0RZ4DUm9xfb66uh/VctoDDOzS2TAKBggqhkjOPQQDAgNHADBE
AiAw6gaDSAPZpd3ZPKQ+anK+u7KMRi/K8J928d/75Z/wDQIgITk7fjENP1B83SEB
xdVpMSqVfnwRRrEJFs+jS1ZztPE=
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgCpkB+6o19A96VsE9
6F54Q+enYPgBTuhu8hmJtGpNiRGhRANCAASqaX9nKMqYxUpvA4wlu0vjsq7ul176
fNqnpiX/2e37eZwl7H4BVBRy0O5u7XU3oUetkllUedf3ksM1r8PiMdbC
-----END PRIVATE KEY-----

View file

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg3Mw4ABYrXbKAL2+7
tvG9A1BOXDFmy2oB44PAIrcJoGGhRANCAARifK1jiQ+5kAg4HxH6Z13h/LIvKn45
bwgGp1ZLQJumHrwW7eGJbIwwuN7ysTOxWCCSFo+QCufDot8PXkZy5Bk/
-----END PRIVATE KEY-----

View file

@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKzCCAdGgAwIBAgIRAIUX7bzYm7Jh4wLqSyweiagwCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkzNjAw
WjBsMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEPMA0GA1UECxMGY2xpZW50MR8wHQYDVQQDDBZVc2VyMUBv
cmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEYnytY4kP
uZAIOB8R+mdd4fyyLyp+OW8IBqdWS0Cbph68Fu3hiWyMMLje8rEzsVggkhaPkArn
w6LfD15GcuQZP6NNMEswDgYDVR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYD
VR0jBCQwIoAgS494XKPTCnrxegz88DFd5tZQmhKuF9sVsbcgnHXKJ9IwCgYIKoZI
zj0EAwIDSAAwRQIhAOXiP5p9KmS/3Mq6TEn7Bokr7iXBb/vBiklFWUxtrso/AiAN
MMSjeIzLUxbmBSWzAcPUKhhbBZXersFUlsf7bw+KoA==
MIICKjCCAdCgAwIBAgIQPtDazK5/UJ5O4kIjkXIuRzAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MGwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMQ8wDQYDVQQLEwZjbGllbnQxHzAdBgNVBAMMFlVzZXIxQG9y
ZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASqaX9nKMqY
xUpvA4wlu0vjsq7ul176fNqnpiX/2e37eZwl7H4BVBRy0O5u7XU3oUetkllUedf3
ksM1r8PiMdbCo00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV
HSMEJDAigCB27LJr8AMQ9lCJPBj0RZ4DUm9xfb66uh/VctoDDOzS2TAKBggqhkjO
PQQDAgNIADBFAiEAibEuWCvvRiti95mlRj+jDyxFGtcKJHEVCQWE3jb55z8CIHKM
TdGegUWzJE9Uwk0vKYeorCp/xEIeXlRg0F72IrME
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICVzCCAf6gAwIBAgIRAID7lGZ/MP6IC8UYTDn4FLQwCgYIKoZIzj0EAwIwdjEL
MIICWDCCAf6gAwIBAgIRAMlkjk2w9CSX+gV6QY41KIowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkz
NjAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABNSoMBOuJDL6KO00PQrsLSiM3i+18O4j7qh6eqNjXhCpnoFlLVJKva3S
mXOA8OjWvDrGjPLBAPJaQAVpMQgib8SjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
AwEHA0IABNXLUtSIrYGulAC1M7jdtHBPA7N9k72Rww5y/xYA3d6qlpj0ONBlA7fo
CAXvwmt8m6Ppc2TJOTKPX6DuqHyvLgqjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQg8IrTb4rYg9sQnDXSJibB1rub3hl/1S2edHFfxXVCWZMwCgYIKoZIzj0E
AwIDRwAwRAIgcF/hO88rEQz3pcsSOUtEwx/THemmDsEjOQVowPR6oMcCIC/zS6Zo
rd4x0veATGx/OG7avXP82Soi/2z9gJxUKsGv
HQ4EIgQgliVo3c3LMbazZMr/yGKsLqdiqe/o/1TJREoPr8PJRb8wCgYIKoZIzj0E
AwIDSAAwRQIhANVLtc1NB90R2vNu1AdlKVyWwgLlKMGKxIEDFmnJjOg3AiATXxYn
zF6M01hCvorDq9txEE56pNYfs22lTy5rrw8Zyg==
-----END CERTIFICATE-----

View file

@ -1,15 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICVzCCAf6gAwIBAgIRAID7lGZ/MP6IC8UYTDn4FLQwCgYIKoZIzj0EAwIwdjEL
MIICWDCCAf6gAwIBAgIRAMlkjk2w9CSX+gV6QY41KIowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkz
NjAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABNSoMBOuJDL6KO00PQrsLSiM3i+18O4j7qh6eqNjXhCpnoFlLVJKva3S
mXOA8OjWvDrGjPLBAPJaQAVpMQgib8SjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
AwEHA0IABNXLUtSIrYGulAC1M7jdtHBPA7N9k72Rww5y/xYA3d6qlpj0ONBlA7fo
CAXvwmt8m6Ppc2TJOTKPX6DuqHyvLgqjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQg8IrTb4rYg9sQnDXSJibB1rub3hl/1S2edHFfxXVCWZMwCgYIKoZIzj0E
AwIDRwAwRAIgcF/hO88rEQz3pcsSOUtEwx/THemmDsEjOQVowPR6oMcCIC/zS6Zo
rd4x0veATGx/OG7avXP82Soi/2z9gJxUKsGv
HQ4EIgQgliVo3c3LMbazZMr/yGKsLqdiqe/o/1TJREoPr8PJRb8wCgYIKoZIzj0E
AwIDSAAwRQIhANVLtc1NB90R2vNu1AdlKVyWwgLlKMGKxIEDFmnJjOg3AiATXxYn
zF6M01hCvorDq9txEE56pNYfs22lTy5rrw8Zyg==
-----END CERTIFICATE-----

View file

@ -1,14 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICPDCCAeKgAwIBAgIRAOHUA6JILlmMHxaYgKFGWskwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMDkzNjAwWhcNMjkwMzMxMDkz
NjAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPhdf+3N0DSIbVvArIy4GoaVACDG
f0UODUED/YyHuV1zhTiRz7vfZJYe9kEG5L1ATz977lC91HEy26tfNXHo5T2jbDBq
MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCDwitNvitiD2xCcNdImJsHWu5veGX/V
LZ50cV/FdUJZkzAKBggqhkjOPQQDAgNIADBFAiEA1X9E+WHUxl0GHRibVLB6a5nb
mUI6JHg5qmFypUPmwzICIH+vkTtdLOK8JgF5poiICrasotrHMZO9pADTus2gGnna
MIICOjCCAeGgAwIBAgIQFcvnlYYt63B/N8uVk9r+wzAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1
MDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZVc2VyMUBvcmcxLmV4YW1wbGUuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEcjjN2SQtUCb1ev5JemrMdLtN7xY/
Badt/V6ohTg8mIib2nOyibzkleWzXs+or+AlPWUIhLn5JP84BMD99NpgyKNsMGow
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIJYlaN3NyzG2s2TK/8hirC6nYqnv6P9U
yURKD6/DyUW/MAoGCCqGSM49BAMCA0cAMEQCIBOkd0GVGuWzmkPimEW9vteY+k99
MeTYgc2F8j8od93bAiAmzpDaLq1A9c+gDkEmyWA9QOfzZDoURxlWRixBnOI4GQ==
-----END CERTIFICATE-----

View file

@ -1,5 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgdMEYh3oeOis4vn1R
VaV1tIrvv40H9SSTOjd1BhCJx52hRANCAAT4XX/tzdA0iG1bwKyMuBqGlQAgxn9F
Dg1BA/2Mh7ldc4U4kc+732SWHvZBBuS9QE8/e+5QvdRxMturXzVx6OU9
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgjQaNXOxAnttn9C5o
ZmcbkQZnWO0hopq3x8NmLhic/nihRANCAARyOM3ZJC1QJvV6/kl6asx0u03vFj8F
p239XqiFODyYiJvac7KJvOSV5bNez6iv4CU9ZQiEufkk/zgEwP302mDI
-----END PRIVATE KEY-----

View file

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKjCCAdCgAwIBAgIQNwzUtAh/fzgVyyotLFAZOjAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MGwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMQ8wDQYDVQQLEwZjbGllbnQxHzAdBgNVBAMMFlVzZXIyQG9y
ZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS9+zwo6PJ6
popCLW1lItExE5gLhHEbGotJdegIBkzFDnYPyoeQBz09y3nvadVDDkZWKskM0EkK
gVZxd3E+42eso00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV
HSMEJDAigCB27LJr8AMQ9lCJPBj0RZ4DUm9xfb66uh/VctoDDOzS2TAKBggqhkjO
PQQDAgNIADBFAiEAr7bIEXexFaVBKaTxjSO7icD+0dQ3q8oGo8EgJGXE5TMCIGXB
a9SMPgoA6oRokUAYXo89Zqfsv8c0OQcnIhdgkdvs
-----END CERTIFICATE-----

View file

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICUDCCAfegAwIBAgIQLpBhJqg/HNcbDf8mBVTfPzAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
vvVmmOfZL3wYzbhmHqdr3EGRWzY+Lu7vkEHzmJq+yuRs9gimOHMnrS57j5AXEIUR
dOY7vLtyGq50/PKp/bfYDKNtMGswDgYDVR0PAQH/BAQDAgGmMB0GA1UdJQQWMBQG
CCsGAQUFBwMCBggrBgEFBQcDATAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCB2
7LJr8AMQ9lCJPBj0RZ4DUm9xfb66uh/VctoDDOzS2TAKBggqhkjOPQQDAgNHADBE
AiAw6gaDSAPZpd3ZPKQ+anK+u7KMRi/K8J928d/75Z/wDQIgITk7fjENP1B83SEB
xdVpMSqVfnwRRrEJFs+jS1ZztPE=
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgY96RXD7zH4JyKjQM
64XopJAvWE8dg6DUj3Epn4/LzZ6hRANCAAS9+zwo6PJ6popCLW1lItExE5gLhHEb
GotJdegIBkzFDnYPyoeQBz09y3nvadVDDkZWKskM0EkKgVZxd3E+42es
-----END PRIVATE KEY-----

View file

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICKjCCAdCgAwIBAgIQNwzUtAh/fzgVyyotLFAZOjAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xOTA0MDMxNDM1MDBaFw0yOTAzMzExNDM1MDBa
MGwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMQ8wDQYDVQQLEwZjbGllbnQxHzAdBgNVBAMMFlVzZXIyQG9y
ZzEuZXhhbXBsZS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS9+zwo6PJ6
popCLW1lItExE5gLhHEbGotJdegIBkzFDnYPyoeQBz09y3nvadVDDkZWKskM0EkK
gVZxd3E+42eso00wSzAOBgNVHQ8BAf8EBAMCB4AwDAYDVR0TAQH/BAIwADArBgNV
HSMEJDAigCB27LJr8AMQ9lCJPBj0RZ4DUm9xfb66uh/VctoDDOzS2TAKBggqhkjO
PQQDAgNIADBFAiEAr7bIEXexFaVBKaTxjSO7icD+0dQ3q8oGo8EgJGXE5TMCIGXB
a9SMPgoA6oRokUAYXo89Zqfsv8c0OQcnIhdgkdvs
-----END CERTIFICATE-----

View file

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICWDCCAf6gAwIBAgIRAMlkjk2w9CSX+gV6QY41KIowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABNXLUtSIrYGulAC1M7jdtHBPA7N9k72Rww5y/xYA3d6qlpj0ONBlA7fo
CAXvwmt8m6Ppc2TJOTKPX6DuqHyvLgqjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQgliVo3c3LMbazZMr/yGKsLqdiqe/o/1TJREoPr8PJRb8wCgYIKoZIzj0E
AwIDSAAwRQIhANVLtc1NB90R2vNu1AdlKVyWwgLlKMGKxIEDFmnJjOg3AiATXxYn
zF6M01hCvorDq9txEE56pNYfs22lTy5rrw8Zyg==
-----END CERTIFICATE-----

View file

@ -0,0 +1,15 @@
-----BEGIN CERTIFICATE-----
MIICWDCCAf6gAwIBAgIRAMlkjk2w9CSX+gV6QY41KIowCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABNXLUtSIrYGulAC1M7jdtHBPA7N9k72Rww5y/xYA3d6qlpj0ONBlA7fo
CAXvwmt8m6Ppc2TJOTKPX6DuqHyvLgqjbTBrMA4GA1UdDwEB/wQEAwIBpjAdBgNV
HSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB/zApBgNV
HQ4EIgQgliVo3c3LMbazZMr/yGKsLqdiqe/o/1TJREoPr8PJRb8wCgYIKoZIzj0E
AwIDSAAwRQIhANVLtc1NB90R2vNu1AdlKVyWwgLlKMGKxIEDFmnJjOg3AiATXxYn
zF6M01hCvorDq9txEE56pNYfs22lTy5rrw8Zyg==
-----END CERTIFICATE-----

View file

@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICOzCCAeKgAwIBAgIRAMbuFgbQt91/LT946pVdwiQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTkwNDAzMTQzNTAwWhcNMjkwMzMxMTQz
NTAwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjJAb3JnMS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABGzz4PC2BsqP1BP3CMzxZx5KysQh
e866ZW3e0jKYv0AzlBZwM2KrSobkR3y4Ui/OY0CK7kcHlPaouXw/vrvsTrejbDBq
MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCCWJWjdzcsxtrNkyv/IYqwup2Kp7+j/
VMlESg+vw8lFvzAKBggqhkjOPQQDAgNHADBEAiAoRPwnGSjRWI08/9hrE9WUmIqI
gWiBQMAqf+gYhhaJqwIgbyuB99aSpEBmsajkndHth1qWbDzRv3u8EqRGPHvNVmg=
-----END CERTIFICATE-----

View file

@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgnQDjne8Pk5lgK5C5
BwRcztZVvULltrpHAU7X3Z+hrDihRANCAARs8+DwtgbKj9QT9wjM8WceSsrEIXvO
umVt3tIymL9AM5QWcDNiq0qG5Ed8uFIvzmNAiu5HB5T2qLl8P7677E63
-----END PRIVATE KEY-----

View file

@ -15,7 +15,7 @@ services:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_CA_NAME=ca.example.com
- FABRIC_CA_SERVER_CA_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
- FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/4b8f785ca3d30a7af17a0cfcf0315de6d6509a12ae17db15b1b7209c75ca27d2_sk
- FABRIC_CA_SERVER_CA_KEYFILE=/etc/hyperledger/fabric-ca-server-config/76ecb26bf00310f650893c18f4459e03526f717dbebaba1fd572da030cecd2d9_sk
ports:
- "7054:7054"
command: sh -c 'fabric-ca-server start -b admin:adminpw'

180
fabtoken/README.md Normal file
View file

@ -0,0 +1,180 @@
# FabToken Sample Application
This is a Node.js sample application that demonstrates how to perform token operations on
a Fabric network using Fabric Node SDK.
The sample assumes an understanding of the Hyperledger Fabric network (orderers, peers,
and channels) and of Node.js application development, including the use of the Javascript
promise, async and await.
For more information about tokens on Hyperledger Fabric, see
[Using Fabtoken](https://hyperledger-fabric.readthedocs.io/en/latest/token/FabToken.html)
For more information about the Fabric SDK for Node.js, refer to
[Node SDK documentation](https://fabric-sdk-node.github.io/master/index.html)
For more information about the Node SDK TokenClient API, refer to the following:
* [TokenClient API reference](https://fabric-sdk-node.github.io/master/TokenClient.html)
* [FabToken tutorial](https://fabric-sdk-node.github.io/master/tutorial-fabtoken.html)
## Run the sample
You can find the `fabtoken.js` sample application in the `javascript` directory. We will
use this application to create and transfer tokens on a network created using the
`basic-network` sample. First, we need to some initial setup.
### Setup
We will need to download the application dependencies. You will need to have version 8.9.x
of Node.js installed.
* Change to `javascript` directory: `cd javascript`
* Run the following command to install the required packages: `npm install`
Now we can start the network:
* Navigate back to the main `FabToken` directory: `cd ..`
* Start fabric network: `./startFabric.sh`
This command will create a fabric network with 1 peer, an ordering service, one
channel, and two users that our application will use to issue and transfer tokens.
### Run the app right away
The `fabtoken.js` application includes a `demo` method that runs an end to end token flow
with hardcoded parameters.
* Navigate to the `javascript` directory
* Run the command `node fabtoken` without any arguments to run the demo.
You should see the output of the demo in your terminal. The demo used user1 and user2 of
the basic network to do the following token operations:
* Issue a token worth 100 USD as user1
* Transfer 30 USD from user1 to user2
* Redeem 10 USD as user1 and 30 USD as user2
* Check that user1 has a token worth 60 USD and user2 has no token
### Use the sample app to create your own tokens
You can pass arguments to `fabtoken.js` to create your own tokens and follow your own
token flow.
#### Issue tokens
Tokens need to be issued before they can be spent. You can use the command
`node fabtoken issue <username> <token_type> <quantity>` to issue tokens of any
type and quantity as user1 or user2.
* As an example, the first command issues a token worth 100 US dollars as user1. The
second command issues a token worth 100 Euro's as user2:
```
node fabtoken issue user1 USD 100
node fabtoken issue user1 EURO 200
```
#### List tokens
After you issue tokens, you can use the list method to query the tokens that you own. Run
the command `node fabtoken list <username>` You need to use this command to recover the
tokenIDs that you will need to transfer or redeem your tokens.
* As an example, you can use the command below to list the tokens owned by user1:
```
node fabtoken list user1
```
* The command returns a list of tokens, with the tokenID consisting of a tx_id and
index. You will need to use these values for future commands.
```
[ { id:
{ tx_id: 'ab5670d3b20b6247b17a342dd2c5c4416f79db95c168beccb7d32b3dd382e5a5',
index: 0 },
type: 'EURO',
quantity: '200' },
{ id:
{ tx_id: 'c9b1211d9ad809e6ee1b542de6886d8d1d9e1c938d88eff23a3ddb4e8c080e4d',
index: 0 },
type: 'USD',
quantity: '100' }
]
```
#### Transfer tokens
Tokens can be transferred between users on a channel using the
`node fabtoken transfer <from_user> <to_user> <quantity> <tx\_id> <index>` command.
* `<tx\_id>` and `<index>` are the "tx\_id" and "index" that you found using the list
command
* `<quantity>` is the quantity to be transferred
Any remaing quantity will be transferred back to the owner by creating a new token with
a new tokenID.
* As an example, the following commands transfers 30 dollars from user1 transfer to user2:
```
node fabtoken transfer user1 user2 30 c9b1211d9ad809e6ee1b542de6886d8d1d9e1c938d88eff23a3ddb4e8c080e4d 0
```
You can run the command `node fabtoken list user2` to verify that user2 now owns a token
worth 30 dollars. You can also run the command `node fabtoken list user1` to verify that
a new token worth 70 dollars now belongs to user1.
#### Redeem tokens
Tokens can be taken out of circulation by being redeemed. Redeemed tokens can no longer
be transfered to any member of the channel. Run the command
`node fabtoken redeem <username> <quantity> <tx\_id> <index>` to redeem any tokens
belonging to user1 or user2.
* `<tx\_id>` and `<index>` are the "tx\_id" and "index" returned from the list command
* `<quantity>` is the quantity to be redeemed
Any remaing quantity will be transferred back to the owner with a new tokenID.
* As an example, the following command redeems 10 Euro's belonging to user1:
```
node fabtoken redeem user2 10 ab5670d3b20b6247b17a342dd2c5c4416f79db95c168beccb7d32b3dd382e5a5 0
```
#### Clean up
If you are finished using the sample application, you can bring down the network and any
accompanying artifacts.
* Change to `fabric-samples/basic-network` directory
* To stop the network, run `./stop.sh`
* To completely remove all incriminating evidence of the network, run `./teardown.sh`
## Understanding the `fabtoken.js` application
You can examine the `fabtoken.js` file to get a better understanding of how the
sample application uses the FabToken API's.
1. The `createFabricClient` method creates an instance of the fabric-client, and is
used to connect to the components of your network.
2. The `createUsers` method uses the certificates generated by the basic network to
create `admin`, `user1` and `user2` users for the application.
3. To perform token operations, you must create a `TokenClient` instance from a `Client`
object. Make sure the client has set the user context. Below is the code snippet.
```
// set user context to the client
await client.setUserContext(user, true);
// create a TokenClient instance
const tokenClient = client.newTokenClient(channel, 'localhost:7051');
```
4. The `issue` method creates an issue request and submits the request to issue tokens to
your network.
5. The `list` method submits the request to list tokens from a
given owner, and is used to recover the tokenID if a token is being transfered or redeemed.
6. The `transfer` method creates a transfer request and submits the request to transfer tokens
between users.
7. The `redeem` method creates a redeem request and submits the request to redeem a user's
tokens.

8
fabtoken/javascript/.gitignore vendored Normal file
View file

@ -0,0 +1,8 @@
#
# SPDX-License-Identifier: Apache-2.0
#
# Dependency directories
node_modules/
package-lock.json

View file

@ -0,0 +1,345 @@
'use strict';
/*
* Copyright IBM Corp All Rights Reserved
*
* SPDX-License-Identifier: Apache-2.0
*/
/*
* Chaincode Invoke
*/
const Fabric_Client = require('fabric-client');
const path = require('path');
const util = require('util');
const os = require('os');
const fs = require('fs-extra');
const channel_name = "mychannel"
start();
async function start() {
console.log('\n\n --- fabtoken.js - start');
try {
console.log('Setting up client side network objects');
// create fabric client and related instances
// starting point for all interactions with the fabric network
const {fabric_client, channel} = createFabricClient();
// create users from existing crypto materials
const {admin, user1, user2} = await createUsers();
console.log('Successfully setup client side');
let operation = null;
let user = null;
const args = [];
// if there is no argument, it will run demo by calling hardcoded token operations
// if there are arguments, it will invoke corresponding issue, list, transfer, redeem operations
if (process.argv.length == 2) {
demo(fabric_client, channel, admin, user1, user2)
return
} else if (process.argv.length >= 4) {
operation = process.argv[2];
if (process.argv[3] === 'user1') {
user = user1;
} else if (process.argv[3] === 'user2') {
user = user2;
} else {
throw new Error(util.format('Invalid username "%s". Must be user1 or user2', process.argv[3]));
}
for (let i = 4; i < process.argv.length; i++) {
if (process.argv[i]) {
console.log(' Token arg: ' + process.argv[i]);
args.push(process.argv[i]);
}
}
} else {
throw new Error('Missing required arguments: operation, user');
}
console.log('\n\nStart %s token operation', operation);
let result = null;
switch (operation) {
case 'issue':
if (args.length < 2) {
throw new Error('Missing required parameter for issue: token_type, quantity');
}
result = await issue(fabric_client, channel, admin, user, args);
break;
case 'transfer':
if (args.length < 4) {
throw new Error('Missing required parameters for transfer: recipient, transfer_quantity, tx_id, index');
}
let recipient
if (args[0] === 'user1') {
recipient = user1;
} else if (args[0] === 'user2') {
recipient = user2;
} else {
throw new Error(util.format('Invalid recipient "%s". Must be user1 or user2', process.argv[3]));
}
// shift out args[0] because recipient object is passed separately
args.shift();
result = await transfer(fabric_client, channel, user, recipient, args);
break;
case 'redeem':
if (args.length < 3) {
throw new Error('Missing required parameter for redeem: quantity, tx_id, index');
}
result = await redeem(fabric_client, channel, user, args);
break;
case 'list':
result = await list(fabric_client, channel, user);
break;
default:
throw new Error(' Unknown operation requested: ' + operation);
}
console.log('End %s token operation, returns\n %s', operation, util.inspect(result, {depth: null}));
} catch(error) {
console.log('Problem with fabric token ::'+ error.toString());
process.exit(1);
}
console.log('\n\n --- fabtoken.js - end');
};
// demo invokes token operations using hardcoded parameters
async function demo(client, channel, admin, user1, user2) {
await reset(client, channel, user1, user2);
console.log('admin issues token to user1, wait 5 seconds for transaction to be committed');
await issue(client, channel, admin, user1, ['USD', '100']);
await sleep(5000)
let user1_tokens = await list(client, channel, user1);
console.log('\nuser1 has a token in USD type and 100 quantity after issue:\n%s', util.inspect(user1_tokens, {depth: null}));
console.log('\nuser1 transfers 30 quantity of the token to user2, wait 5 seconds for transaction to be committed');
let token_id = user1_tokens[0].id;
await transfer(client, channel, user1, user2, ['30', token_id.tx_id, token_id.index]);
await sleep(5000)
user1_tokens = await list(client, channel, user1);
console.log('\nuser1 has a token in 70 quantity after transfer:\n%s', util.inspect(user1_tokens, {depth: null}));
let user2_tokens = await list(client, channel, user2);
console.log('\nuser2 has a token in 30 quantity after transfer:\n%s', util.inspect(user2_tokens, {depth: null}));
console.log('\nuser1 redeems 10 out of 70 quantity of the token');
token_id = user1_tokens[0].id;
await redeem(client, channel, user1, ['10', token_id.tx_id, token_id.index]);
console.log('\nuser2 redeems entire token, wait 5 seconds for transaction to be committed');
token_id = user2_tokens[0].id;
await redeem(client, channel, user2, ['30', token_id.tx_id, token_id.index]);
await sleep(5000)
user1_tokens = await list(client, channel, user1);
console.log('\nuser1 has a token in 60 quantity after redeem:\n%s', util.inspect(user1_tokens, {depth: null}));
user2_tokens = await list(client, channel, user2);
console.log('\nuser2 has no token after redeem:\n%s', util.inspect(user2_tokens, {depth: null}));
await reset(client, channel, user1, user2);
}
// reset removes all the existing tokens on the channel to get a fresh env
async function reset(client, channel, user1, user2) {
console.log('\nReset: remove all the tokens on the channel\n');
let tokens = await list(client, channel, user1);
for (const token of tokens) {
await redeem(client, channel, user1, [token.quantity, token.id.tx_id, token.id.index]);
}
tokens = await list(client, channel, user2);
for (const token of tokens) {
await redeem(client, channel, user2, [token.quantity, token.id.tx_id, token.id.index]);
}
}
// Issue token to the user with args [type, quantity]
// It uses "admin" to issue tokens, but other users can also issue tokens as long as they have the permission.
async function issue(client, channel, admin, user, args) {
console.log('Start token issue with args ' + args);
await client.setUserContext(admin, true);
const tokenClient = client.newTokenClient(channel, 'localhost:7051');
// build the request to issue tokens to the user
const txId = client.newTransactionID();
const param = {
owner: user.getIdentity().serialize(),
type: args[0],
quantity: args[1]
};
const request = {
params: [param],
txId: txId,
};
return await tokenClient.issue(request);
}
// Transfers token from the user to the recipient with args [quantity, tx_id, index]
async function transfer(client, channel, user, recipient, args) {
console.log('Start token transfer with args ' + args);
await client.setUserContext(user, true);
const tokenClient = client.newTokenClient(channel, 'localhost:7051');
// build the request to transfer tokens to the recipient
const txId = client.newTransactionID();
const param1 = {
owner: recipient.getIdentity().serialize(),
quantity: args[0]
};
const request = {
tokenIds: [{tx_id: args[1], index: parseInt(args[2])}],
params: [param1],
txId: txId,
};
return await tokenClient.transfer(request);
}
// Redeem tokens from the user with args [quantity, tx_id, index]
async function redeem(client, channel, user, args) {
console.log('Start token redeem with args ' + args);
await client.setUserContext(user, true);
const tokenClient = client.newTokenClient(channel, 'localhost:7051');
// build the request to redeem tokens
const txId = client.newTransactionID();
const param = {
quantity: args[0]
};
const request = {
tokenIds: [{tx_id: args[1], index: parseInt(args[2])}],
params: [param],
txId: txId,
};
return await tokenClient.redeem(request);
}
// List tokens for the user
async function list(client, channel, user) {
await client.setUserContext(user, true);
const tokenClient = client.newTokenClient(channel, 'localhost:7051');
return await tokenClient.list();
}
// Create fabric client, channel, orderer, and peer instances.
// These are needed for SDK to invoke token operations.
function createFabricClient() {
// fabric client instance
// starting point for all interactions with the fabric network
const fabric_client = new Fabric_Client();
// -- channel instance to represent the ledger
const channel = fabric_client.newChannel(channel_name);
console.log(' Created client side object to represent the channel');
// -- peer instance to represent a peer on the channel
const peer = fabric_client.newPeer('grpc://localhost:7051');
console.log(' Created client side object to represent the peer');
// -- orderer instance to reprsent the channel's orderer
const orderer = fabric_client.newOrderer('grpc://localhost:7050')
console.log(' Created client side object to represent the orderer');
// add peer and orderer to the channel
channel.addPeer(peer);
channel.addOrderer(orderer);
return {fabric_client: fabric_client, channel: channel};
}
// Create admin, user1 and user2 by loading crypto files
async function createUsers() {
// This sample application will read user idenitity information from
// pre-generated crypto files and create users. It will use a client object as
// an easy way to create the user objects from known cyrpto material.
const client = new Fabric_Client();
// load admin
let keyPath = path.join(__dirname, '../../basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/keystore');
let keyPEM = Buffer.from(readAllFiles(keyPath)[0]).toString();
let certPath = path.join(__dirname, '../../basic-network/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp/signcerts');
let certPEM = readAllFiles(certPath)[0];
let user_opts = {
username: 'admin',
mspid: 'Org1MSP',
skipPersistence: true,
cryptoContent: {
privateKeyPEM: keyPEM,
signedCertPEM: certPEM
}
};
const admin = await client.createUser(user_opts);
// load user1
keyPath = path.join(__dirname, '../../basic-network/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/keystore');
keyPEM = Buffer.from(readAllFiles(keyPath)[0]).toString();
certPath = path.join(__dirname, '../../basic-network/crypto-config/peerOrganizations/org1.example.com/users/User1@org1.example.com/msp/signcerts');
certPEM = readAllFiles(certPath)[0];
user_opts = {
username: 'user1',
mspid: 'Org1MSP',
skipPersistence: true,
cryptoContent: {
privateKeyPEM: keyPEM,
signedCertPEM: certPEM
}
};
const user1 = await client.createUser(user_opts);
// load user2
keyPath = path.join(__dirname, '../../basic-network/crypto-config/peerOrganizations/org1.example.com/users/User2@org1.example.com/msp/keystore');
keyPEM = Buffer.from(readAllFiles(keyPath)[0]).toString();
certPath = path.join(__dirname, '../../basic-network/crypto-config/peerOrganizations/org1.example.com/users/User2@org1.example.com/msp/signcerts');
certPEM = readAllFiles(certPath)[0];
user_opts = {
username: 'user2',
mspid: 'Org1MSP',
skipPersistence: true,
cryptoContent: {
privateKeyPEM: keyPEM,
signedCertPEM: certPEM
}
};
const user2 = await client.createUser(user_opts);
return {admin: admin, user1: user1, user2: user2};
}
function readAllFiles(dir) {
const files = fs.readdirSync(dir);
const certs = [];
files.forEach((file_name) => {
const file_path = path.join(dir, file_name);
const data = fs.readFileSync(file_path);
certs.push(data);
});
return certs;
}
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}

View file

@ -0,0 +1,22 @@
{
"name": "fabtoken",
"version": "1.0.0",
"description": "Hyperledger Fabric Token Sample Application",
"main": "fabtoken.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"dependencies": {
"fabric-client": "unstable",
"fs-extra": "^6.0.1",
"util": "^0.10.3"
},
"license": "Apache-2.0",
"keywords": [
"Hyperledger",
"Fabric",
"Token",
"Sample",
"Application"
]
}

46
fabtoken/startFabric.sh Executable file
View file

@ -0,0 +1,46 @@
#!/bin/bash
#
# Copyright IBM Corp All Rights Reserved
#
# SPDX-License-Identifier: Apache-2.0
#
# Exit on first error
set -e
# don't rewrite paths for Windows Git Bash users
export MSYS_NO_PATHCONV=1
starttime=$(date +%s)
# launch network; create channel and join peer to channel
cd ../basic-network
./start.sh
cat <<EOF
Total setup execution time : $(($(date +%s) - starttime)) secs ...
Next, use the FabToken application to interact with the Fabric network.
Start by changing into the "javascript" directory:
cd javascript
Next, install all required packages:
npm install
Then run the fabtoken application to perform the token operations.
node fabtoken
- when no argument is passed, it will run a demo with predefined token operations
node fabtoken issue <username> <token_type> <quantity>
- example 1: node fabtoken issue user1 USD 100
node fabtoken list <username>
- example: node fabtoken list user1
- select a token to transfer or redeem and pass "tx_id" and "index" as input parameters
node fabtoken transfer <from_user> <to_user> <quantity> <tx_id> <index>
- example: node fabtoken transfer user1 user2 30 c9b1211d9ad809e6ee1b542de6886d8d1d9e1c938d88eff23a3ddb4e8c080e4d 0
- <tx_id> and <index> are the "tx_id" and "index" returned from the list operation that specifies the token id for transfer
node fabtoken redeem <username> <quantity> <tx_id> <index>
- example: node fabtoken redeem user2 10 477c7bf2002814497c228fd8cbc4d80c8b7f1602b2c17ffadb6cf7e5783fa47a 0
- <tx_id> and <index> are the "tx_id" and "index" returned from the list operation
EOF