Remove fabric v1.0.3

pull/108/head
Baohua Yang 2017-12-07 13:47:00 +08:00
parent 03d039a00d
commit 480a53e904
264 changed files with 10 additions and 6695 deletions

View File

@ -1,35 +0,0 @@
## Chaincode Tests
All the test command needs to be executed inside the `fabric-cli` container.
Use the following command to login into the container fabric-cli
```bash
$ docker exec -it fabric-cli bash
```
After finish the chaincode tests, you can log-out by `exit`.
### Chaincode Operations
You can execute some chaincode operations, such as `query` or `invoke`,
and you can modify the parameters and execute this script repeatedly.
```bash
$ bash ./scripts/test_4peers.sh #execute in container fabric-cli
```
You should see the following output:
```bash
UTC [msp] GetLocalMSP -> DEBU 004 Returning existing local MSP
UTC [msp] GetDefaultSigningIdentity -> DEBU 005 Obtaining default signing identity
UTC [msp/identity] Sign -> DEBU 006 Sign: plaintext: 0AB7070A6D08031A0C08C3EAE9C90510...6D7963631A0A0A0571756572790A0161
UTC [msp/identity] Sign -> DEBU 007 Sign: digest: FA308EF50C4812BADB60D58CE15C1CF41089EFB93B27D46885D92C92F55E98A0
Query Result: 80
UTC [main] main -> INFO 008 Exiting.....
===================== Query on PEER3 on channel 'businesschannel' is successful =====================
===================== All GOOD, End-2-End execution completed =====================
```

View File

@ -2,10 +2,10 @@
To bootup a fabric network, we need:
* crypto_config: crypto keys/certs for all organizations, see `e2e_cli/crypto-config`
* orderer_genesis.block: genesis block to bootup orderer, see `e2e_cli/channel-artifacts`
* channel.tx: transaction to create an application channel, see `e2e_cli/channel-artifacts`
* Org1MSPanchors.tx, Org2MSPanchors.tx: Transaction to update anchor config in Org1 and Org2, see `e2e_cli/channel-artifacts`
* crypto_config: crypto keys/certs for all organizations, see `solo/crypto-config`
* orderer_genesis.block: genesis block to bootup orderer, see `solo/channel-artifacts`
* channel.tx: transaction to create an application channel, see `solo/channel-artifacts`
* Org1MSPanchors.tx, Org2MSPanchors.tx: Transaction to update anchor config in Org1 and Org2, see `solo/channel-artifacts`
### Generate crypto-config using cryptogen

View File

@ -1,32 +0,0 @@
### Start network with CouchDB
```bash
docker-compose -f docker-compose-2orgs-4peers.yaml -f docker-compose-2orgs-4peers-couchdb.yaml up
```
To use CouchDB instead of the default database leveldb, The same chaincode functions are available with CouchDB, however, there is the
added ability to perform rich and complex queries against the state database
data content contingent upon the chaincode data being modeled as JSON
### Test chaincode_example02
```bash
docker exec -it fabric-cli bash
bash ./scripts/initialize.sh
bash ./scripts/test_4peers.sh
```
You can use chaincode_example02 chaincode against the CouchDB state database
using the steps outlined above, however in order to exercise the CouchDB query
capabilities you will need to use a chaincode that has data modeled as JSON.
(e.g. marbles02)
### [WIP] [Test example marbles02](https://github.com/hyperledger/fabric/blob/master/examples/chaincode/go/marbles02/marbles_chaincode.go)
### Interact with CouchDb by WEB-UI
The browser is `http://localhost:5984/_utils`, then you will find a database named `businesschannel`

View File

@ -1,122 +0,0 @@
## Use default channel
By default, all the peer will join the default chain of `testchainid`.
```bash
$ docker exec -it fabric-cli bash
$ peer channel list
Channels peers has joined to:
testchainid
UTC [main] main -> INFO 001 Exiting.....
```
After the cluster is synced successfully, you can validate by install/instantiate, invoking or querying chaincode from the container or from the host.
### install&instantiate
Use `docker exec -it fabric-cli bash` to open a bash inside container `fabric-cli`, which will accept our chaincode testing commands of `install&instantiate`, `invoke` and `query`.
Inside the container, run the following command to install a new chaincode of the example02. The chaincode will initialize two accounts: `a` and `b`, with value of `100` and `200`.
```bash
$ peer chaincode install -v 1.0 -n test_cc -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
```
This will take a while, and the result may look like following.
```bash
[golang-platform] writeGopathSrc -> INFO 001 rootDirectory = /go/src
container] WriteFolderToTarPackage -> INFO 002 rootDirectory = /go/src
[main] main -> INFO 003 Exiting.....
```
Then instantiate the chaincode test_cc on defaule channel testchainid.
```bash
$ peer chaincode instantiate -v 1.0 -n test_cc -c '{"Args":["init","a","100","b","200"]}' -o orderer0:7050
```
This will take a while, and the result may look like following:
```bash
UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 001 Using default escc
UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default vscc
UTC [main] main -> INFO 003 Exiting.....
```
There should be no error in the return log, and in the peer nodes's output.
Wait several seconds till the deploy is finished.
If the `peer chaincode install` and `peer chaincode instantiate` commands are executed successfully, there will generate a new chaincode container, besides the 4 existing one, name like `dev-peer0-test_cc-1.0`.
```bash
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cf7bf529f214 dev-peer0-test_cc-1.0 "chaincode -peer.a..." 58 seconds ago Up 58 seconds dev-peer0-test_cc-1.0
44b6870b0802 hyperledger/fabric-peer "bash -c 'while tr..." 14 minutes ago Up 14 minutes 7050-7059/tcp fabric-cli
ed2c4927c0ed hyperledger/fabric-peer "peer node start -..." 14 minutes ago Up 14 minutes 7050/tcp, 7052-7059/tcp, 0.0.0.0:7051->7051/tcp fabric-peer0
af5ba8f213bb hyperledger/fabric-orderer "orderer" 14 minutes ago Up 14 minutes 0.0.0.0:7050->7050/tcp fabric-orderer0
bbe31b98445f hyperledger/fabric-ca "fabric-ca-server ..." 14 minutes ago Up 14 minutes 7054/tcp, 0.0.0.0:7054->7054/tcp fabric-ca
```
And will also generate a new chaincode image, name like `dev-peer0-test_cc-1.0`.
```bash
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dev-peer0-test_cc-1.0 latest 84e5422eead5 About a minute ago 176 MB
...
```
### Query
Inside the container, query the existing value of `a` and `b`.
*Notice that the query method can be called by invoke a transaction.*
```bash
$ peer chaincode query -n test_cc -c '{"Args":["query","a"]}'
```
The final output may look like the following, with a payload value of `100`.
```bash
Query Result: 100
[main] main -> INFO 001 Exiting.....
```
Query the value of `b`
```bash
$ peer chaincode query -n test_cc -c '{"Args":["query","b"]}' -o orderer0:7050
```
The final output may look like the following, with a payload value of `200`.
```bash
Query Result: 200
[main] main -> INFO 001 Exiting.....
```
### Invoke
Inside the container, invoke a transaction to transfer `10` from `a` to `b`.
```bash
$ peer chaincode invoke -n test_cc -c '{"Args":["invoke","a","b","10"]}' -o orderer0:7050
```
The final result may look like the following, the response should be `OK`.
```bash
[chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Invoke result: version:1 response:<status:200 message:"OK" > payload:"\n \215\263\337\322u\323?\242t$s\035l\270Ta\270\270+l6\322X\346\365k\020\215Phy\260\022C\n<\002\004lccc\001\007test_cc\004\001\001\001\001\000\000\007test_cc\002\001a\004\001\001\001\001\001b\004\001\001\001\001\002\001a\000\00290\001b\000\003210\000\032\003\010\310\001" endorsement:<endorser:"\n\007DEFAULT\022\232\007-----BEGIN -----\nMIICjDCCAjKgAwIBAgIUBEVwsSx0TmqdbzNwleNBBzoIT0wwCgYIKoZIzj0EAwIw\nfzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh\nbiBGcmFuY2lzY28xHzAdBgNVBAoTFkludGVybmV0IFdpZGdldHMsIEluYy4xDDAK\nBgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMTYxMTExMTcwNzAw\nWhcNMTcxMTExMTcwNzAwWjBjMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGgg\nQ2Fyb2xpbmExEDAOBgNVBAcTB1JhbGVpZ2gxGzAZBgNVBAoTEkh5cGVybGVkZ2Vy\nIEZhYnJpYzEMMAoGA1UECxMDQ09QMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE\nHBuKsAO43hs4JGpFfiGMkB/xsILTsOvmN2WmwpsPHZNL6w8HWe3xCPQtdG/XJJvZ\n+C756KEsUBM3yw5PTfku8qOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw\nFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOFC\ndcUZ4es3ltiCgAVDoyLfVpPIMB8GA1UdIwQYMBaAFBdnQj2qnoI/xMUdn1vDmdG1\nnEgQMCUGA1UdEQQeMByCCm15aG9zdC5jb22CDnd3dy5teWhvc3QuY29tMAoGCCqG\nSM49BAMCA0gAMEUCIDf9Hbl4xn3z4EwNKmilM9lX2Fq4jWpAaRVB97OmVEeyAiEA\n25aDPQHGGq2AvhKT0wvt08cX1GTGCIbfmuLpMwKQj38=\n-----END -----\n" signature:"0E\002!\000\271\232\230\261\336\352ow\021V3\224\252\217\362vzM'\213\376@2\306/\201=\213\023\244\310%\002 \014\277\362|\223\342\277Pk5(\004\331\014\021\307\273\351/]:\020\232\013d\261\035+\266\265\305<" >
[main] main -> INFO 002 Exiting.....
```
### Query
Query again the existing value of `a` and `b`.
```bash
$ peer chaincode query -n test_cc -c '{"Args":["query","a"]}'
```
The new value of `a` should be 90.
```bash
$ peer chaincode query -n test_cc -c '{"Args":["query","b"]}'
```
The new value of `b` should be 210.

View File

@ -1,221 +0,0 @@
### Explain 1-peer usage step by step
This section will show you how to operate the chaincode in detail.
first start fabric network with `docker-compose-1peer.yaml`, and we will obtain the basic environmet that can be operated.
```bash
$ docker-compose -f docker-compose-1peer.yaml up
```
There will be 4 containers running successfully.
```bash
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6688f290a9b9 hyperledger/fabric-peer "bash -c 'while tr..." About a minute ago Up About a minute 7050-7059/tcp fabric-cli
6ddbbd972ac3 hyperledger/fabric-peer "peer node start -..." About a minute ago Up About a minute 7050/tcp, 0.0.0.0:7051->7051/tcp, 7052/tcp, 7054-7059/tcp, 0.0.0.0:7053->7053/tcp peer0.org1.example.com
4afc759e0dc9 hyperledger/fabric-orderer "orderer" About a minute ago Up About a minute 0.0.0.0:7050->7050/tcp orderer.example.com
bea1154c7162 hyperledger/fabric-ca "fabric-ca-server ..." About a minute ago Up About a minute 7054/tcp, 0.0.0.0:7054->7054/tcp fabric-ca
```
#### Create artifacts
**This step can be safely skipped.**.
As we already put the needed artifacts `orderer.genesis.block` and `channel.tx` under `e2e_cli/channel-artifacts/`.
Detailed steps in [GenerateArtifacts](artifacts_generation.md) explains the creation of `orderer.genesis.block` (needed by orderering service) and `channel.tx` (needed by cli to create new channel) and crypto related configuration files.
#### Create new channel
Create a new channel named `mychannel` with the existing `channel.tx` file.
```bash
$ docker exec -it fabric-cli bash
```
Into the container and execute following commands:
```bash
$ CHANNEL_NAME="businesschannel"
$ peer channel create -o orderer.example.com:7050 -c ${CHANNEL_NAME} -f ./channel-artifacts/channel.tx
```
The cmd will return lots of info, which is the content of the configuration block.
And a block with the same name of the channel will be created locally.
```bash
$ ls businesschannel.block
businesschannel.block
```
Check the log output of `orderer.example.com`, should find some message like
```bash
orderer.example.com | UTC [orderer/multichain] newChain -> INFO 004 Created and starting new chain newchannel
```
#### Join the channel
Use the following command to join `peer0.org1.example.com` the channel
```bash
$ peer channel join -b ${CHANNEL_NAME}.block
Peer joined the channel!
```
Will receive the `Peer joined the channel!` response if succeed.
Then use the following command, we will find the channels that peers joined.
```bash
$ peer channel list
Channels peers has joined to:
mychannel
2017-04-11 03:44:40.313 UTC [main] main -> INFO 001 Exiting.....
```
#### Update anchor peers
The `configtx.yaml` file contains the definitions for our sample network and presents the topology of the network components - three members (OrdererOrg, Org1 & Org2), But in this MVE, we just use OrdererOrg and Org1, org1 has only peer(pee0.org1), and chose it as anchor peers for Org1.
```bash
$ peer channel create -o orderer.example.com:7050 -c ${CHANNEL_NAME} -f ./channel-artifacts/Org1MSPanchors.tx
```
#### Install&Instantiate
First `install` a chaincode named `mycc` to `peer0`.
```bash
$ peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
```
This will take a while, and the result may look like following.
```bash
UTC [golang-platform] writeGopathSrc -> INFO 004 rootDirectory = /go/src
UTC [container] WriteFolderToTarPackage -> INFO 005 rootDirectory = /go/src
UTC [main] main -> INFO 006 Exiting.....
```
Then `instantiate` the chaincode mycc on channel `mychannel`, with initial args and the endorsement policy.
```bash
$ peer chaincode instantiate -o orderer.example.com:7050 -C ${CHANNEL_NAME} -n mycc -v 1.0 -c '{"Args":["init","a","100","b","200"]}' -P "OR ('Org1MSP.member')"
```
This will take a while, and the result may look like following:
```bash
UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default escc
UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 005 Using default vscc
UTC [main] main -> INFO 006 Exiting.....
```
Now in the system, there will be a new `dev-peer0.org1.example.com-mycc-1.0` image and a `dev-peer0.org1.example.com-mycc-1.0` chaincode container.
```bash
crluser@baas-test2:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7aa088c76597 dev-peer0.org1.example.com-mycc-1.0 "chaincode -peer.a..." 10 seconds ago Up 9 seconds dev-peer0.org1.example.com-mycc-1.0
eb1d9c73b26b hyperledger/fabric-peer "bash -c 'while tr..." About a minute ago Up About a minute 7050-7059/tcp fabric-cli
2d6fd4f61e2b hyperledger/fabric-peer "peer node start -..." About a minute ago Up About a minute 7050/tcp, 0.0.0.0:7051->7051/tcp, 7052/tcp, 7054-7059/tcp, 0.0.0.0:7053->7053/tcp peer0.org1.example.com
832dcc64cc1b hyperledger/fabric-orderer "orderer" About a minute ago Up About a minute 0.0.0.0:7050->7050/tcp orderer.example.com
c87095528f76 hyperledger/fabric-ca "fabric-ca-server ..." About a minute ago Up About a minute 7054/tcp, 0.0.0.0:7054->7054/tcp fabric-ca
```
#### Query
Query the existing value of `a` and `b`.
```bash
$ peer chaincode query -C ${CHANNEL_NAME} -n mycc -c '{"Args":["query","a"]}'
```
The result may look like following, with a payload value of `100`.
```bash
Query Result: 100
[main] main -> INFO 001 Exiting.....
```
```bash
$ peer chaincode query -C ${CHANNEL_NAME} -n mycc -c '{"Args":["query","a"]}'
```
The result may look like following, with a payload value of `200`.
```bash
Query Result: 200
[main] main -> INFO 001 Exiting.....
```
#### Invoke
Inside the container, invoke a transaction to transfer `10` from `a` to `b`.
```bash
$ peer chaincode invoke -o orderer.example.com:7050 -C ${CHANNEL_NAME} -n mycc -c '{"Args":["invoke","a","b","10"]}'
```
The result may look like following:
```bash
UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 001 Invoke result: version:1 response:<status:200 message:"OK" > payload:"\n qm\251\207\312\277\256\261b\317:\300\000\014\203`\005\304\254\304,$a\360\327\010\342\342/y]\323\022X\nQ\022\031\n\004lccc\022\021\n\017\n\007test_cc\022\004\010\001\020\001\0224\n\007test_cc\022)\n\t\n\001a\022\004\010\001\020\001\n\t\n\001b\022\004\010\001\020\001\032\007\n\001a\032\00290\032\010\n\001b\032\003210\032\003\010\310\001" endorsement:<endorser:"\n\007Org0MSP\022\210\004-----BEGIN -----\nMIIBYzCCAQmgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y\nZzAwHhcNMTcwMjIwMTkwNjExWhcNMTgwMjIwMTkwNjExWjAQMQ4wDAYDVQQDDAVw\nZWVyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEF6dfqjqfbIgZuOR+dgoJMl\n/FaUlGI70A/ixmVUY83Yp4YtV3FDBSOPiO5O+s8pHnpbwB1LqhrxAx1Plr0M/UWj\nUDBOMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFBY2bc84vLEwkX1fSAER2p48jJXw\nMB8GA1UdIwQYMBaAFFQzuQR1RZP/Qn/BNDtGSa8n4eN/MAoGCCqGSM49BAMCA0gA\nMEUCIQDeDZ71L+OTYcbbqiDNRf0L8OExO59mH1O3xpdwMAM0MgIgXySG4sv9yV31\nWcWRFfRFyu7o3T72kqiLZ1nkDuJ8jWI=\n-----END -----\n" signature:"0E\002!\000\220M'\245\230do\310>\277\251j\021$\250\237H\353\377\331:\230\362n\216\224~\033\240\006\367%\002 \014\240|h\346\250\356\372\353\301;#\372\027\276!\252F\334/\221\210\254\215\363\235\341v\217\236\274<" >
2017-04-06 09:47:15.993 UTC [main] main -> INFO 002 Exiting.....
```
#### Query
And then query the value of `a` and `b`.
```bash
$ peer chaincode query -C ${CHANNEL_NAME} -n mycc -c '{"Args":["query","a"]}'
```
```bash
Query Result: 90
[main] main -> INFO 001 Exiting.....
```
The value of `a` should be `90`.
```bash
$ peer chaincode query -C ${CHANNEL_NAME} -n mycc -c '{"Args":["query","b"]}'
```
The value of `b` should be `210`
```bash
Query Result: 210
[main] main -> INFO 001 Exiting.....
```
Finally, the output of the chaincode containers may look like following.
```bash
$ docker logs -f dev-peer0.org1.example.com-mycc-1.0
ex02 Init
Aval = 100, Bval = 200
ex02 Invoke
Query Response:{"Name":"a","Amount":"100"}
ex02 Invoke
Aval = 90, Bval = 210
ex02 Invoke
Query Response:{"Name":"b","Amount":"210"}
ex02 Invoke
Query Response:{"Name":"a","Amount":"90"}
```
#### (optional) All-in-one testing operation
Run this script will check whether the MVE bootstrap success.
```bash
$ docker exec -it fabric-cli bash
$ bash ./scripts/test_1peer.sh
```

View File

@ -1,8 +1,9 @@
## Events
Events didn't support TLS, so make sure TLS has been disabled by setting *_TLS_ENABLED=false in peer-base.yaml and orderer-base.yaml
Next, start the network with following command:
```bash
$ bash scripts/start_fabric.sh docker-compose-2orgs-4peers-event.yaml
$ HLF_MODE=event make restart
```
when the network starts successfully, we started a block-listener in container `fabric-event-listener`.
@ -14,14 +15,14 @@ Listening logs at a new terminal,
$ docker logs -f fabric-event-listener
```
So when we do chaincode operations in container `fabric-cli`,
And init channels and chaincodes.
```bash
$ docker exec -it fabric-cli bash
$ bash ./scripts/initialize.sh
$ HLF_MODE=event make test_channel_create test_channel_join
$ HFL_MODE=event make test_cc_install test_cc_instantiate test_cc_invoke_query # Enable eventhub listener
```
then we will get some events at listening terminal looks like following:
Then we will get some events at listening terminal looks like following:
```bash
Received block

View File

@ -1,37 +0,0 @@
## peer channel fetch
### Under no-tls
When you set *TLS_ENABLED=false, then you can fetch blocks using following command:
```bash
$ NUM= the block's num you want to fetch
$ peer channel fetch $NUM -o orderer.example.com:7050 -c businesschannel
```
or you can use self-defined file, such as:
```bash
$ peer channel fetch $NUM self-define-file.block -o orderer.example.com:7050 -c businesschannel
```
For example, we `install` 4 times, and `invoke` 2 times, so we have 6 blocks in total, and we put it into `/e2e_cli/channel-artifacts`.
you can also use following command to fetch blocks:
```bash
$ peer channel fetch oldest -o orderer.example.com:7050 -c businesschannel
$ peer channel fetch newest -o orderer.example.com:7050 -c businesschannel
```
### Under tls
When you set *TLS_ENABLED=true, then you can fetch blocks using following command:
```bash
$ ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
$ NUM= the block's num you want to fetch
$ peer channel fetch $NUM -o orderer.example.com:7050 -c businesschannel --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA |xargs mv true businesschannel_$NUM.block
$ peer channel fetch oldest -o orderer.example.com:7050 -c businesschannel --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA |xargs mv true businesschannel_oldest.block
$ peer channel fetch newest -o orderer.example.com:7050 -c businesschannel --tls $CORE_PEER_TLS_ENABLED --cafile $ORDERER_CA |xargs mv true businesschannel_newest.block
```
temporarily cannot support specify self-defined-file.

View File

@ -1,21 +0,0 @@
## Manually Setup
### Install Docker/Docker-Compose
```sh
$ bash scripts/setup_Docker.sh # Install Docker, Docker-Compose
```
### Download Images
Pull necessary images of peer, orderer, ca, and base image. You may optionally run the clean_env.sh script to remove all existing container and images.
```sh
$ bash scripts/cleanup_env.sh
$ bash scripts/download_images.sh
```
There are also some community [images](https://hub.docker.com/r/hyperledger/) at Dockerhub, use at your own choice.
Now you can try [chaincode test](chaincode_test.md) operations with the bootup fabric network.

View File

@ -1,33 +1,3 @@
# Hyperledger fabric 1.0.4
Here we show steps on how to setup a fabric 1.0.4 network on Linux (e.g., Ubuntu/Debian), and then use it to run chaincode tests.
If you're not familiar with Docker and Blockchain technology yet, feel free to have a look at 2 books (in CN):
* [Docker Practice](https://github.com/yeasy/docker_practice)
* [Blockchain Guide](https://github.com/yeasy/blockchain_guide)
## Pass-through
The following command will run the entire process (start a fabric network, create channel, test chaincode and stop it.) pass-through.
```sh
$ make setup # install docker/compose, and pull required images
$ make all
```
tldr :)
`make all` actually call following command sequentially.
* `make start`
* `make init`
* `make test_cc`
* `make stop`
Otherwise, if u wanna know more or run the command manually, then go on reading the following part.
## Environment Setup
The following scripts will setup the environment by installing Docker, Docker-Compose and download required docker images.

View File

@ -1,10 +0,0 @@
## Instantiate chaincode in two channel using same chaincode
## The usage of `peer upgrade` and the diffrence between `peer instantiate`
## Check the results when a new peer joins a channel that has completed some chaincode opreations
## What happens if the organization joins a channel that does not belong to it

View File

@ -1,143 +0,0 @@
# Hyperledger fabric 1.0.4
Here we show steps on how to setup a fabric 1.0.4 network on Linux (e.g., Ubuntu/Debian), and then use it to run chaincode tests.
If you're not familiar with Docker and Blockchain technology yet, feel free to have a look at 2 books (in CN):
* [Docker Practice](https://github.com/yeasy/docker_practice)
* [Blockchain Guide](https://github.com/yeasy/blockchain_guide)
## Pass-through
The following command will run the entire process (start a fabric network, create channel, test chaincode and stop it.) pass-through.
```sh
$ make setup # install docker/compose, and pull required images
$ make all
```
tldr :)
`make all` actually call following command sequentially.
* `make start`
* `make init`
* `make test_cc`
* `make stop`
Otherwise, if u wanna know more or run the command manually, then go on reading the following part.
## Environment Setup
The following scripts will setup the environment by installing Docker, Docker-Compose and download required docker images.
```sh
$ make setup # setup environment
```
If you want to setup the environment manually, then have a look at [manually setup](docs/setup.md).
## Bootup Fabric Network
Start a 4 peer (belonging to 2 organizations) fabric network.
```sh
$ make start # Start a fabric network
```
The script actually uses docker-compose to boot up the fabric network with several containers.
There will be 7 running containers, include 4 peers, 1 cli, 1 ca and 1 orderer.
```bash
$ make ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f6686986fe18 hyperledger/fabric-tools:x86_64-1.0.4 "bash -c 'cd /tmp;..." 6 seconds ago Up 14 seconds fabric-cli
c7f274bf60bc yeasy/hyperledger-fabric-peer:1.0.4 "peer node start" 6 seconds ago Up 11 seconds 7050/tcp, 7054-7059/tcp, 0.0.0.0:10051->7051/tcp, 0.0.0.0:10052->7052/tcp, 0.0.0.0:10053->7053/tcp peer1.org2.example.com
c6c5f69f2d53 yeasy/hyperledger-fabric-peer:1.0.4 "peer node start" 6 seconds ago Up 12 seconds 7050/tcp, 7054-7059/tcp, 0.0.0.0:8051->7051/tcp, 0.0.0.0:8052->7052/tcp, 0.0.0.0:8053->7053/tcp peer1.org1.example.com
3cad0c519e6f yeasy/hyperledger-fabric-peer:1.0.4 "peer node start" 6 seconds ago Up 13 seconds 7050/tcp, 7054-7059/tcp, 0.0.0.0:7051-7053->7051-7053/tcp peer0.org1.example.com
8b371209f6b8 yeasy/hyperledger-fabric-peer:1.0.4 "peer node start" 6 seconds ago Up 11 seconds 7050/tcp, 7054-7059/tcp, 0.0.0.0:9051->7051/tcp, 0.0.0.0:9052->7052/tcp, 0.0.0.0:9053->7053/tcp peer0.org2.example.com
ba1f00a9c83c hyperledger/fabric-orderer:x86_64-1.0.4 "orderer start" 6 seconds ago Up 14 seconds 0.0.0.0:7050->7050/tcp orderer.example.com
```
### Initialize Fabric network
```bash
$ make init # Start a fabric network
```
The command actually calls the `./scripts/initialize.sh` script in the `fabric-cli` container to:
* create a new application channel `businesschannel`
* join all peers into the channel
* install and instantiate chaincode `example02` for testing
This script only needs to be executed once.
You should see result like the following if the initialization is successful.
```bash
==============================================
==========initialize businesschannel==========
==============================================
Channel name: businesschannel
Creating channel...
...
===================== All GOOD, initialization completed =====================
```
And there will be new chaincode container generated in the system, looks like
```bash
$ make ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9971c9fd1971 dev-peer1.org2.example.com-mycc-1.0 "chaincode -peer.a..." 54 seconds ago Up 53 seconds dev-peer1.org2.example.com-mycc-1.0
e3092961b81b dev-peer1.org1.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a minute dev-peer1.org1.example.com-mycc-1.0
57d3555f56e5 dev-peer0.org2.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a minute dev-peer0.org2.example.com-mycc-1.0
c9974dbc21d9 dev-peer0.org1.example.com-mycc-1.0 "chaincode -peer.a..." 23 minutes ago Up 23 minutes dev-peer0.org1.example.com-mycc-1.0
```
## Test Chaincode
```bash
$ make test_cc # test invoke and query with chaincode
```
More details, see [chaincode test](docs/chaincode_test.md).
## Stop the network
```bash
$ make stop # stop the fabric network
```
## Clean environment
Clean all related containers and images.
```bash
$ make clean # clean the environment
```
## More to learn
Topics | Description
-- | --
[Detailed Explanation](./docs/detailed_steps.md) | Explain in detail how a 1-peer network start and test.
[Fetch blocks](docs/peer_cmds.md) | Fetch blocks using `peer channel fetch` cmd.
[Use Events](./docs/events.md) | Get events with block-listener
[Artifacts Generation](docs/artifacts_generation.md) | Will explain the usage of `cryptogen` and `configtxgen` to prepare the artifacts for booting the fabric network.
[couchDB](docs/couchdb_usage.md) | Use couchDB as the state DB.
[kafka](./kafka/README.md) | Use kafka as the ordering backend
[configtxlator](docs/configtxlator.md) | Use configtxlator to convert the configurations
[WIP] [Some verification tests](docs/verification_test.md) |
## Acknowledgement
* [Hyperledger Fabric](https://github.com/hyperledger/fabric/) project.
* [Hyperledger Fabric Getting Started](http://hyperledger-fabric.readthedocs.io/en/latest/getting_started.html).

View File

@ -1,149 +0,0 @@
# mode of the network: solo, kafka, couchdb, dev
HLF_MODE ?= solo
CODE_BUILD_WAIT=2
NETWORK_INIT_WAIT=2
COMPOSE_FILE ?= "docker-compose-2orgs-4peers-solo.yaml"
ifeq ($(HLF_MODE),kafka)
COMPOSE_FILE="docker-compose-2orgs-4peers-kafka.yaml"
else ifeq ($(HLF_MODE),couchdb)
COMPOSE_FILE="docker-compose-2orgs-4peers-couchdb.yaml"
else ifeq ($(HLF_MODE),dev)
COMPOSE_FILE="docker-compose-1orgs-1peers-dev.yaml"
endif
all:
@echo "Run test with $(COMPOSE_FILE)"
@echo "Please make sure u have setup Docker and pulled images by 'make setup'."
sleep 2
make ready
make lscc qscc fetch_block
make stop clean
ready: restart
@echo "Restart, init network and then do cc testing..."
if [ "$(HLF_MODE)" = "dev" ]; then \
echo "In DEV mode, wait for rebuilding ..." && sleep $(CODE_BUILD_WAIT); \
make init_peer0; \
sleep $(NETWORK_INIT_WAIT); \
make test_cc_peer0; \
else \
echo "In Normal mode ..." && sleep 3; \
make init; \
sleep $(NETWORK_INIT_WAIT); \
make test_cc_all; \
fi
@echo "Now the fabric network is ready to play"
@echo "run 'make cli' to enter into the fabric-cli container."
@echo "run 'make stop' when done."
start: # bootup the fabric network
@echo "Start a fabric network with ${COMPOSE_FILE}"
make clean
docker-compose -f ${COMPOSE_FILE} up -d # Start a fabric network
init: # initialize the fabric network
@echo "Install and instantiate cc example02 on the fabric network"
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/initialize_all.sh"
init_peer0: # initialize the fabric network
@echo "Install and instantiate cc example02 on the fabric dev network"
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/initialize_peer0.sh"
stop: # stop the fabric network
@echo "Stop the fabric network"
docker-compose -f ${COMPOSE_FILE} down # Stop a fabric network
restart: stop start
chaincode_dev: restart chaincode_init test_cc_peer0 stop
################## Chaincode testing operations ################
test_cc_all: # test user chaincode on all peers
@echo "Invoke and query cc example02 on all peers"
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_all.sh"
test_cc_peer0: # test single peer
@echo "Invoke and query cc example02 on single peer0"
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_cc_peer0.sh"
qscc: # test qscc queries
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_qscc.sh"
lscc: # test lscc quries
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_lscc.sh"
fetch_block: # test channel fetch
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/test_fetch.sh"
docker cp fabric-cli:/tmp/block_0.block kafka/channel-artifacts/
docker cp fabric-cli:/tmp/block_1.block kafka/channel-artifacts/
docker cp fabric-cli:/tmp/block_2.block kafka/channel-artifacts/
docker cp fabric-cli:/tmp/block_3.block kafka/channel-artifacts/
################## Env setup related, no need to see usually ################
setup: # setup the environment
bash scripts/setup_Docker.sh # Install Docker, Docker-Compose
bash scripts/download_images.sh # Pull required Docker images
clean: # clean up containers
@echo "Clean all containers and fabric cc images"
@-docker rm -f `docker ps -qa`
@-docker rmi $$(docker images | awk '$$1 ~ /dev-peer/ { print $$3}')
clean_env: # clean up environment
@echo "Clean all images and containers"
bash scripts/clean_env.sh
cli: # enter the cli container
docker exec -it fabric-cli bash
peer: # enter the peer container
docker exec -it peer0.org1.example.com bash
dev_compile: # rebuild the peer
docker exec -it peer0.org1.example.com bash /tmp/peer_build.sh
ps: # show existing docker images
docker ps -a
logs: # show logs
docker-compose -f ${COMPOSE_FILE} logs -f --tail 200
logs_check: logs_save logs_view
logs_save: # save logs
docker logs peer0.org1.example.com >& /tmp/dev_peer.log
docker logs orderer.example.com >& /tmp/dev_orderer.log
docker-compose -f ${COMPOSE_FILE} logs >& /tmp/dev_all.log
logs_view: # view logs
less /tmp/dev_peer.log
gen_solo: # generate solo artifacts
cd solo && bash gen_artifacts.sh
gen_kafka: # generate kafka artifacts
cd kafka && bash gen_artifacts.sh
configtxlator: # run configtxlator
cd kafka && bash run_configtxlator.sh
download: # download required images
@echo "Download Docker images"
docker pull yeasy/hyperledger-fabric:latest
docker pull yeasy/hyperledger-fabric-kafka:0.10.2.0 # official repo does not provide the latest image currently
docker pull hyperledger/fabric-baseos:x86_64-0.4.2
docker tag yeasy/hyperledger-fabric:latest hyperledger/fabric-ccenv:x86_64-1.1.0
################## chaincode dev mode ################
chaincode_init: # start chaincode in dev mode and do install/instantiate
@echo "Install and instantiate cc example02 on the fabric dev network"
docker exec -it fabric-cli bash -c "cd /tmp; bash scripts/init_chaincode_dev.sh"

View File

@ -1,144 +0,0 @@
# Hyperledger fabric 1.0.3
Here we show steps on how to setup a fabric 1.0.3 network on Linux (e.g., Ubuntu/Debian), and then use it to run chaincode tests.
If you're not familiar with Docker and Blockchain technology yet, feel free to have a look at 2 books (in CN):
* [Docker Practice](https://github.com/yeasy/docker_practice)
* [Blockchain Guide](https://github.com/yeasy/blockchain_guide)
## Pass-through
The following command will run the entire process (start a fabric network, create channel, test chaincode and stop it.) pass-through.
```sh
$ make setup # install docker/compose, and pull required images
$ make all
```
tldr :)
`make all` actually call following command sequentially.
* `make start`
* `make init`
* `make test_cc`
* `make stop`
Otherwise, if u wanna know more or run the command manually, then go on reading the following part.
## Environment Setup
The following scripts will setup the environment by installing Docker, Docker-Compose and download required docker images.
```sh
$ make setup # setup environment
```
If you want to setup the environment manually, then have a look at [manually setup](docs/setup.md).
## Bootup Fabric Network
Start a 4 peer (belonging to 2 organizations) fabric network.
```sh
$ make start # Start a fabric network
```
The script actually uses docker-compose to boot up the fabric network with several containers.
There will be 7 running containers, include 4 peers, 1 cli, 1 ca and 1 orderer.
```bash
$ make ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1dc3f2557bdc hyperledger/fabric-tools "bash -c 'while tr..." 25 minutes ago Up 25 minutes fabric-cli
5e5f37a0ed3c hyperledger/fabric-peer "peer node start" 25 minutes ago Up 25 minutes 7050/tcp, 7054-7059/tcp, 0.0.0.0:8051->7051/tcp, 0.0.0.0:8052->7052/tcp, 0.0.0.0:8053->7053/tcp peer1.org1.example.com
6cce94da6392 hyperledger/fabric-peer "peer node start" 25 minutes ago Up 25 minutes 7050/tcp, 7054-7059/tcp, 0.0.0.0:9051->7051/tcp, 0.0.0.0:9052->7052/tcp, 0.0.0.0:9053->7053/tcp peer0.org2.example.com
e36c5e8d56c5 hyperledger/fabric-peer "peer node start" 25 minutes ago Up 25 minutes 7050/tcp, 7054-7059/tcp, 0.0.0.0:7051-7053->7051-7053/tcp peer0.org1.example.com
1fdd3d2b6527 hyperledger/fabric-orderer "orderer start" 25 minutes ago Up 25 minutes 0.0.0.0:7050->7050/tcp orderer.example.com
8af323340651 hyperledger/fabric-ca "fabric-ca-server ..." 25 minutes ago Up 25 minutes 0.0.0.0:7054->7054/tcp fabric-ca
e41d8bca7fe5 hyperledger/fabric-peer "peer node start" 25 minutes ago Up 25 minutes 7050/tcp, 7054-7059/tcp, 0.0.0.0:10051->7051/tcp, 0.0.0.0:10052->7052/tcp, 0.0.0.0:10053->7053/tcp peer1.org2.example.com
```
### Initialize Fabric network
```bash
$ make init # Start a fabric network
```
The command actually calls the `./scripts/initialize.sh` script in the `fabric-cli` container to:
* create a new application channel `businesschannel`
* join all peers into the channel
* install and instantiate chaincode `example02` for testing
This script only needs to be executed once.
You should see result like the following if the initialization is successful.
```bash
==============================================
==========initialize businesschannel==========
==============================================
Channel name : businesschannel
Creating channel...
...
===================== All GOOD, initialization completed =====================
```
And there will be new chaincode container generated in the system, looks like
```bash
$ make ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9971c9fd1971 dev-peer1.org2.example.com-mycc-1.0 "chaincode -peer.a..." 54 seconds ago Up 53 seconds dev-peer1.org2.example.com-mycc-1.0
e3092961b81b dev-peer1.org1.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a minute dev-peer1.org1.example.com-mycc-1.0
57d3555f56e5 dev-peer0.org2.example.com-mycc-1.0 "chaincode -peer.a..." About a minute ago Up About a minute dev-peer0.org2.example.com-mycc-1.0
c9974dbc21d9 dev-peer0.org1.example.com-mycc-1.0 "chaincode -peer.a..." 23 minutes ago Up 23 minutes dev-peer0.org1.example.com-mycc-1.0
```
## Test Chaincode
```bash
$ make test_cc # test invoke and query with chaincode
```
More details, see [chaincode test](docs/chaincode_test.md).
## Stop the network
```bash
$ make stop # stop the fabric network
```
## Clean environment
Clean all related containers and images.
```bash
$ make clean # clean the environment
```
## More to learn
Topics | Description
-- | --
[Detailed Explanation](./docs/detailed_steps.md) | Explain in detail how a 1-peer network start and test.
[Fetch blocks](docs/peer_cmds.md) | Fetch blocks using `peer channel fetch` cmd.
[Use Events](./docs/events.md) | Get events with block-listener
[Artifacts Generation](docs/artifacts_generation.md) | Will explain the usage of `cryptogen` and `configtxgen` to prepare the artifacts for booting the fabric network.
[couchDB](docs/couchdb_usage.md) | Use couchDB as the state DB.
[kafka](./kafka/README.md) | Use kafka as the ordering backend
[configtxlator](docs/configtxlator.md) | Use configtxlator to convert the configurations
[WIP] [Some verification tests](docs/verification_test.md) |
## Acknowledgement
* [Hyperledger Fabric](https://github.com/hyperledger/fabric/) project.
* [Hyperledger Fabric Getting Started](http://hyperledger-fabric.readthedocs.io/en/latest/getting_started.html).

View File

@ -1,97 +0,0 @@
# This is the development compose file to config env and command
# Notice that chaincode is executed inside docker in default net mode
# https://github.com/yeasy/docker-compose-files
# Depends on the yeasy/hyperledger-fabric image.
version: '2'
services:
orderer.example.com: # There can be multiple orderers
extends:
file: base.yaml
service: orderer-base
image: yeasy/hyperledger-fabric:1.0.3
container_name: orderer.example.com
hostname: orderer.example.com
ports:
- "7050:7050"
environment:
# Kafka related configurations
- ORDERER_KAFKA_RETRY_SHORTINTERVAL=1s
- ORDERER_KAFKA_RETRY_SHORTTOTAL=30s
- ORDERER_KAFKA_VERBOSE=true
volumes:
- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric
# for solo case
#- ./solo/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
#- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
#- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
# for kafka case
- ./kafka/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
- ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
#command: bash -c 'bash /tmp/orderer_build.sh; orderer start' # use this if to debug orderer
command: bash -c 'orderer start' # use this if to debug orderer
peer0.org1.example.com:
extends:
file: base.yaml
service: peer-base
image: yeasy/hyperledger-fabric:1.0.3
container_name: peer0.org1.example.com
hostname: peer0.org1.example.com
environment:
- CORE_PEER_ID=peer0.org1.example.com
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
volumes:
- $GOPATH/src/github.com/hyperledger/fabric:/go/src/github.com/hyperledger/fabric
# e2e mode configuration
#- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
#- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
# kafka mode configuration
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 7051:7051
- 7052:7052
- 7053:7053
#command: bash -c 'bash /tmp/peer_build.sh; peer node start'
command: bash -c 'peer node start'
#command: bash -c 'peer node start --peer-chaincodedev=true' # DEV mode
cli:
extends:
file: base.yaml
service: cli-base
image: yeasy/hyperledger-fabric:1.0.3
container_name: fabric-cli
hostname: fabric-cli
tty: true
environment:
- CORE_PEER_ID=fabric-cli
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
volumes:
- $GOPATH/src/github.com/hyperledger/fabric:/opt/gopath/src/github.com/hyperledger/fabric
#- /tmp/:/tmp/
- ./scripts:/tmp/scripts
# e2e mode configuration
#- ./solo/channel-artifacts:/tmp/channel-artifacts
#- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
#- ./solo/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
#- ./solo/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto
#- ./solo/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
# kafka mode configuration
- ./kafka/channel-artifacts:/tmp/channel-artifacts
- ./kafka/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
- ./kafka/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
- ./kafka/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto
- ./kafka/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples

View File

@ -1,256 +0,0 @@
# All elements in this file should depend on the base.yaml
# Provided a Kafka enabled fabric network with:
# ca.org1.example.com
# ca.org2.example.com
# orderer.example.com
# peer0.org1.example.com
# peer1.org1.example.com
# peer0.org2.example.com
# peer1.org2.example.com
# 3 zookeeper nodes
# 4 kafka nodes
# cli
version: '2' # v3 does not support 'extends' yet
services:
ca.org1.example.com:
extends:
file: base.yaml
service: ca-base
container_name: ca.org1.example.com
hostname: ca.org1.example.com
environment:
- FABRIC_CA_SERVER_CA_NAME=ca-org1
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk
ports:
- "7054:7054"
volumes:
- ./kafka/crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk -b admin:adminpw -d'
ca.org2.example.com:
extends:
file: base.yaml
service: ca-base
container_name: ca.org2.example.com
hostname: ca.org2.example.com
environment:
- FABRIC_CA_SERVER_CA_NAME=ca-org2
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk
ports:
- "8054:7054"
volumes:
- ./kafka/crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk -b admin:adminpw -d'
orderer.example.com: # There can be multiple orderers
extends:
file: base.yaml
service: orderer-base
container_name: orderer.example.com
hostname: orderer.example.com
ports:
- "7050:7050"
environment:
# Kafka related configurations
- ORDERER_KAFKA_RETRY_SHORTINTERVAL=1s
- ORDERER_KAFKA_RETRY_SHORTTOTAL=30s
- ORDERER_KAFKA_VERBOSE=true
volumes:
- ./kafka/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
- ./kafka/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
command: orderer start
cli:
extends:
file: base.yaml
service: cli-base
container_name: fabric-cli
hostname: fabric-cli
tty: true
environment:
- CORE_PEER_ID=fabric-cli
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
volumes:
- ./scripts:/tmp/scripts
- ./kafka/channel-artifacts:/tmp/channel-artifacts
- ./kafka/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
- ./kafka/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
- ./kafka/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto
- ./kafka/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
## following are peer nodes ##
peer0.org1.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer0.org1.example.com
hostname: peer0.org1.example.com
environment:
- CORE_PEER_ID=peer0.org1.example.com
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
volumes:
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 7051:7051
- 7052:7052
- 7053:7053
peer1.org1.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer1.org1.example.com
hostname: peer1.org1.example.com
environment:
- CORE_PEER_ID=peer1.org1.example.com
- CORE_PEER_ADDRESS=peer1.org1.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
volumes:
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ./kafka/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 8051:7051
- 8052:7052
- 8053:7053
peer0.org2.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer0.org2.example.com
hostname: peer0.org2.example.com
environment:
- CORE_PEER_ID=peer0.org2.example.com
- CORE_PEER_ADDRESS=peer0.org2.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP
volumes:
- ./kafka/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ./kafka/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 9051:7051
- 9052:7052
- 9053:7053
peer1.org2.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer1.org2.example.com
hostname: peer1.org2.example.com
environment:
- CORE_PEER_ID=peer1.org2.example.com
- CORE_PEER_ADDRESS=peer1.org2.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org2.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP
volumes:
- ./kafka/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ./kafka/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 10051:7051
- 10052:7052
- 10053:7053
# ZooKeeper services, at least 3 nodes
zookeeper0:
extends:
file: base.yaml
service: zookeeper-base
container_name: zookeeper0
hostname: zookeeper0
environment:
- ZOO_MY_ID=1
- ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
zookeeper1:
extends:
file: base.yaml
service: zookeeper-base
container_name: zookeeper1
hostname: zookeeper1
environment:
- ZOO_MY_ID=2
- ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
zookeeper2:
extends:
file: base.yaml
service: zookeeper-base
container_name: zookeeper2
hostname: zookeeper2
environment:
- ZOO_MY_ID=3
- ZOO_SERVERS=server.1=zookeeper0:2888:3888 server.2=zookeeper1:2888:3888 server.3=zookeeper2:2888:3888
# Kafka services, at least 4 node to tolerant work with 1 node failure
kafka0:
extends:
file: base.yaml
service: kafka-base
container_name: kafka0
hostname: kafka0
environment:
- KAFKA_BROKER_ID=0
- KAFKA_MIN_INSYNC_REPLICAS=2
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
kafka1:
extends:
file: base.yaml
service: kafka-base
container_name: kafka1
hostname: kafka1
environment:
- KAFKA_BROKER_ID=1
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
- KAFKA_MIN_INSYNC_REPLICAS=2
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
kafka2:
extends:
file: base.yaml
service: kafka-base
container_name: kafka2
hostname: kafka2
environment:
- KAFKA_BROKER_ID=2
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
- KAFKA_MIN_INSYNC_REPLICAS=2
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181
kafka3:
extends:
file: base.yaml
service: kafka-base
container_name: kafka3
hostname: kafka3
environment:
- KAFKA_BROKER_ID=3
- KAFKA_DEFAULT_REPLICATION_FACTOR=3
- KAFKA_MIN_INSYNC_REPLICAS=2
- KAFKA_ZOOKEEPER_CONNECT=zookeeper0:2181,zookeeper1:2181,zookeeper2:2181

View File

@ -1,208 +0,0 @@
# All elements in this file should depend on the base.yaml
# Provided solo-base fabric network with:
# ca.org1.example.com
# ca.org2.example.com
# orderer.example.com
# peer0.org1.example.com
# peer1.org1.example.com
# peer0.org2.example.com
# peer1.org2.example.com
# cli
version: '2' # v3 does not support 'extends' yet
services:
ca.org1.example.com: # ca node for org1
extends:
file: base.yaml
service: ca-base
container_name: ca.org1.example.com
hostname: ca.org1.example.com
environment:
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CA_NAME=ca-org1
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk
ports:
- "7054:7054"
volumes:
- ./solo/crypto-config/peerOrganizations/org1.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org1.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/c843d3f021118963ce5d340e95286e8869bb7bd051454cd4166aa2887a2ad451_sk -b admin:adminpw -d'
ca.org2.example.com: # ca node for org2
extends:
file: base.yaml
service: ca-base
container_name: ca.org2.example.com
hostname: ca.org2.example.com
environment:
- FABRIC_CA_SERVER_TLS_ENABLED=true
- FABRIC_CA_SERVER_CA_NAME=ca-org2
- FABRIC_CA_SERVER_TLS_CERTFILE=/etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem
- FABRIC_CA_SERVER_TLS_KEYFILE=/etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk
ports:
- "8054:7054"
volumes:
- ./solo/crypto-config/peerOrganizations/org2.example.com/ca/:/etc/hyperledger/fabric-ca-server-config
command: sh -c 'fabric-ca-server start --ca.certfile /etc/hyperledger/fabric-ca-server-config/ca.org2.example.com-cert.pem --ca.keyfile /etc/hyperledger/fabric-ca-server-config/1ee551a8753171c0377366e96a1d7ec01afddb868c9483cc501b6f8ac7ae752f_sk -b admin:adminpw -d'
orderer.example.com: # orderer node for example org
extends:
file: base.yaml
service: orderer-base
container_name: orderer.example.com
hostname: orderer.example.com
environment:
- ORDERER_GENERAL_TLS_ENABLED=true
ports:
- "7050:7050"
volumes:
- ./solo/channel-artifacts/orderer.genesis.block:/var/hyperledger/orderer/orderer.genesis.block
- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/msp:/var/hyperledger/orderer/msp
- ./solo/crypto-config/ordererOrganizations/example.com/orderers/orderer.example.com/tls/:/var/hyperledger/orderer/tls
command: orderer start
cli: # client node
extends:
file: base.yaml
service: cli-base
container_name: fabric-cli
hostname: fabric-cli
tty: true
environment:
#- GOPATH=/opt/gopath
- CORE_PEER_ID=fabric-cli
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
- CORE_PEER_TLS_ENABLED=true # to enable TLS, change to true
volumes:
#- ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
- ./scripts:/tmp/scripts
- ./solo/channel-artifacts:/tmp/channel-artifacts
- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
- ./solo/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
- ./solo/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto
- ./solo/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
## following are peer nodes ##
peer0.org1.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer0.org1.example.com
hostname: peer0.org1.example.com
environment:
- CORE_PEER_ID=peer0.org1.example.com
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org1.example.com:7052
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_ENABLED=true
volumes:
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 7051:7051
- 7052:7052
- 7053:7053
peer1.org1.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer1.org1.example.com
hostname: peer1.org1.example.com
environment:
- CORE_PEER_ID=peer1.org1.example.com
- CORE_PEER_ADDRESS=peer1.org1.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org1.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org1.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org1.example.com:7051
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_ENABLED=true
volumes:
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/msp:/etc/hyperledger/fabric/msp
- ./solo/crypto-config/peerOrganizations/org1.example.com/peers/peer1.org1.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 8051:7051
- 8052:7052
- 8053:7053
peer0.org2.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer0.org2.example.com
hostname: peer0.org2.example.com
environment:
- CORE_PEER_ID=peer0.org2.example.com
- CORE_PEER_ADDRESS=peer0.org2.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer0.org2.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer0.org2.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer0.org2.example.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP
- CORE_PEER_TLS_ENABLED=true
volumes:
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 9051:7051
- 9052:7052
- 9053:7053
peer1.org2.example.com:
extends:
file: base.yaml
service: peer-base
container_name: peer1.org2.example.com
hostname: peer1.org2.example.com
environment:
- CORE_PEER_ID=peer1.org2.example.com
- CORE_PEER_ADDRESS=peer1.org2.example.com:7051
- CORE_PEER_GOSSIP_EXTERNALENDPOINT=peer1.org2.example.com:7051
- CORE_PEER_CHAINCODELISTENADDRESS=peer1.org2.example.com:7052
- CORE_PEER_GOSSIP_BOOTSTRAP=peer1.org2.example.com:7051
- CORE_PEER_LOCALMSPID=Org2MSP
- CORE_PEER_TLS_ENABLED=true
volumes:
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/msp:/etc/hyperledger/fabric/msp
- ./solo/crypto-config/peerOrganizations/org2.example.com/peers/peer1.org2.example.com/tls:/etc/hyperledger/fabric/tls
ports:
- 10051:7051
- 10052:7052
- 10053:7053
event-listener:
extends:
file: base.yaml
service: event-listener-base
container_name: fabric-event-listener
hostname: fabric-event-listener
environment:
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
volumes:
#- ./solo/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
- ./solo/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
- ./solo/channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
- ./solo/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
- ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
depends_on:
- orderer.example.com
- peer0.org1.example.com
- peer1.org1.example.com
- peer0.org2.example.com
- peer1.org2.example.com
#command: bash -c 'block-listener -events-address=peer0.org1.example.com:7053 -events-mspdir=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/ -events-mspid=Org1MSP'
command: bash -c 'while true; do sleep 20170504; done'

View File

@ -1,137 +0,0 @@
# This is the default base file to config env and command
# All element in this file is abstract without knowing the org and consensus type
# https://github.com/yeasy/docker-compose-files
# Depends on the hyperledger/fabric-peer image.
version: '2'
services:
ca-base:
#image: yeasy/hyperledger-fabric-ca:1.0.3
image: hyperledger/fabric-ca:x86_64-1.0.3
restart: always
environment:
- FABRIC_CA_HOME=/etc/hyperledger/fabric-ca-server
- FABRIC_CA_SERVER_TLS_ENABLED=true
#- FABRIC_CA_SERVER_TLS_ENABLED=false
orderer-base:
#image: yeasy/hyperledger-fabric-orderer:1.0.3
image: hyperledger/fabric-orderer:x86_64-1.0.3
restart: always
environment:
- ORDERER_GENERAL_LOGLEVEL=DEBUG
- ORDERER_GENERAL_LOGFORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
- ORDERER_GENERAL_LISTENADDRESS=0.0.0.0
- ORDERER_GENERAL_GENESISMETHOD=file
- ORDERER_GENERAL_GENESISFILE=/var/hyperledger/orderer/orderer.genesis.block
- ORDERER_GENERAL_LOCALMSPID=OrdererMSP
- ORDERER_GENERAL_LOCALMSPDIR=/var/hyperledger/orderer/msp
- ORDERER_GENERAL_LEDGERTYPE=file
- ORDERER_GENERAL_BATCHTIMEOUT=1s
- ORDERER_GENERAL_MAXMESSAGECOUNT=10
- ORDERER_GENERAL_MAXWINDOWSIZE=1000
- ORDERER_GENERAL_LISTENPORT=7050
#- ORDERER_RAMLEDGER_HISTORY_SIZE=100 #only useful when use ram ledger
# enabled TLS
- ORDERER_GENERAL_TLS_ENABLED=true
- ORDERER_GENERAL_TLS_PRIVATEKEY=/var/hyperledger/orderer/tls/server.key
- ORDERER_GENERAL_TLS_CERTIFICATE=/var/hyperledger/orderer/tls/server.crt
- ORDERER_GENERAL_TLS_ROOTCAS=[/var/hyperledger/orderer/tls/ca.crt]
expose:
- "7050" #
command: orderer start
peer-base:
image: yeasy/hyperledger-fabric-peer:1.0.3
#image: hyperledger/fabric-peer:x86_64-1.0.3
restart: always
environment:
- CORE_PEER_ADDRESSAUTODETECT=false
- CORE_LOGGING_LEVEL=DEBUG
- CORE_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=v103_default # uncomment this to use specific network
- CORE_PEER_GOSSIP_USELEADERELECTION=true
- CORE_PEER_GOSSIP_ORGLEADER=false # this node is the group leader, default to false
- CORE_PEER_PROFILE_ENABLED=false
- CORE_PEER_TLS_ENABLED=true
- CORE_PEER_TLS_CERT_FILE=/etc/hyperledger/fabric/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/etc/hyperledger/fabric/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/etc/hyperledger/fabric/tls/ca.crt
- CORE_CHIANCODE_LOGGING_LEVEL=DEBUG
- CORE_CHIANCODE_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
expose:
- "7050" # Rest
- "7051" # Grpc
- "7052" # Peer CLI
- "7053" # Peer Event
- "7054" # eCAP
- "7055" # eCAA
- "7056" # tCAP
- "7057" # eCAA
- "7058" # tlsCAP
- "7059" # tlsCAA
volumes: # docker.sock is mapped as the default CORE_VM_ENDPOINT
- /var/run/docker.sock:/var/run/docker.sock
#volumes:
# - /var/run/:/host/var/run/
command: peer node start
cli-base:
#image: yeasy/hyperledger-fabric:1.0.3
image: hyperledger/fabric-tools:x86_64-1.0.3
restart: always
tty: true
environment:
#- GOPATH=/opt/gopath
- CORE_LOGGING_LEVEL=DEBUG
- CORE_LOGGING_FORMAT=%{color}[%{id:03x} %{time:01-02 15:04:05.00 MST}] [%{longpkg}] %{callpath} -> %{level:.4s}%{color:reset} %{message}
- CORE_PEER_TLS_ENABLED=true # to enable TLS, change to true
- ORDERER_CA=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem
- CHANNEL_NAME:="businesschannel"
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
command: bash -c 'cd /tmp; source scripts/func.sh; while true; do sleep 20170504; done'
event-listener-base:
image: yeasy/hyperledger-fabric:1.0.3
restart: always
tty: true
environment:
- CORE_PEER_ID=fabric-event-listener
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_TLS_ENABLED=false # event-listener doesn't support TLS
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
#command: bash -c 'block-listener -events-address=peer0.org1.example.com:7053 -events-mspdir=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/ -events-mspid=Org1MSP'
command: bash -c 'while true; do sleep 20170504; done'
couchdb-base:
#container_name: couchdb0
image: hyperledger/fabric-couchdb:x86_64-1.0.3
restart: always
tty: true
# Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
# for example map it to utilize Fauxton User Interface in dev environments.
zookeeper-base:
image: hyperledger/fabric-zookeeper:x86_64-1.0.3
restart: always
tty: true
expose:
- '2181'
- '2888'
- '3888'
kafka-base:
# official repo doesn't have latest tag, however, kafka changes version recently
image: yeasy/hyperledger-fabric-kafka:0.10.2.0
image: hyperledger/fabric-kafka:x86_64-1.0.3
restart: always
tty: true
environment:
- KAFKA_MESSAGE_MAX_BYTES=1048576 # 1 * 1024 * 1024 B
- KAFKA_REPLICA_FETCH_MAX_BYTES=1048576 # 1 * 1024 * 1024 B
- KAFKA_UNCLEAN_LEADER_ELECTION_ENABLE=false
- KAFKA_LOG_RETENTION_MS=-1
expose:
- '9092'

View File

@ -1,27 +0,0 @@
#! /bin/bash
echo "replace configtx.yaml and crypto-config.yaml"
cp ./peer/example2/configtx.yaml ./peer
cp ./peer/example2/crypto-config.yaml ./peer
echo "replace auto-test script "
cp ./peer/example2/new-channel-auto-test-5-peers.sh ./peer/scripts
echo "replace configtx.yaml"
cp ./peer/configtx.yaml /etc/hyperledger/fabric
echo "Generate new certificates"
cryptogen generate --config=./peer/crypto-config.yaml --output ./peer/crypto
echo "Generate new certificates"
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock ./peer/channel-artifacts/orderer_genesis.block
echo "Create the configuration tx"
CHANNEL_NAME=newchannel
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx ./peer/channel-artifacts/channel.tx -channelID ${CHANNEL_NAME}
echo "Define the anchor peer for Org1 on the channel"
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./peer/channel-artifacts/Org1MSPanchors.tx -channelID ${CHANNEL_NAME} -asOrg Org1MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./peer/channel-artifacts/Org2MSPanchors.tx -channelID ${CHANNEL_NAME} -asOrg Org2MSP
configtxgen -profile TwoOrgsChannel -outputAnchorPeersUpdate ./peer/channel-artifacts/Org3MSPanchors.tx -channelID ${CHANNEL_NAME} -asOrg Org3MSP

View File

@ -1,92 +0,0 @@
# https://github.com/yeasy/files/tree/master/hyperledger
# This compose file will start a Hyperledger Fabric 1.0 MVE, including
# * 1 ca
# * 1 orderer
# * 1 peer
# * cli for testing
version: '2.0'
services:
orderer.example.com: # There can be multiple orderers
extends:
file: base-dev.yaml
service: orderer.example.com
depends_on:
- kafka0
- kafka1
- kafka2
- kafka3
peer0.org1.example.com:
extends:
file: base-dev.yaml
service: peer0.org1.example.com
depends_on:
- orderer.example.com
cli:
extends:
file: base-dev.yaml
service: cli
depends_on:
- peer0.org1.example.com
- orderer.example.com
# ZooKeeper services, at least 3 nodes
zookeeper0:
extends:
file: base-kafka.yaml
service: zookeeper0
zookeeper1:
extends:
file: base-kafka.yaml
service: zookeeper1
zookeeper2:
extends:
file: base-kafka.yaml
service: zookeeper2
# Kafka services, at least 4 node to tolerant work with 1 node failure
kafka0:
extends:
file: base-kafka.yaml
service: kafka0
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka1:
extends:
file: base-kafka.yaml
service: kafka1
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka2:
extends:
file: base-kafka.yaml
service: kafka2
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka3:
extends:
file: base-kafka.yaml
service: kafka3
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
#networks:
# default:
# external:
# name: hyperledger_fabric

View File

@ -1,107 +0,0 @@
# github.com/yeasy/docker-compose-files
# fabric network with couchdb as the peer state db.
# including:
# orderer.example.com: orderer node
# peer0.org1.example.com: peer0 node
# peer1.org1.example.com: peer1 node
# peer0.org2.example.com: peer2 node
# peer1.org2.example.com: peer3 node
# couchdb0: couchdb node
# couchdb1: couchdb node
# couchdb2: couchdb node
# couchdb3: couchdb node
# cli: cli node
version: '2'
services:
orderer.example.com:
extends:
file: base-solo.yaml
service: orderer.example.com
peer0.org1.example.com:
extends:
file: base-solo.yaml
service: peer0.org1.example.com
environment:
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984
depends_on:
- couchdb0
peer1.org1.example.com:
extends:
file: base-solo.yaml
service: peer1.org1.example.com
environment:
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb1:5984
depends_on:
- couchdb1
peer0.org2.example.com:
extends:
file: base-solo.yaml
service: peer0.org2.example.com
environment:
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb2:5984
depends_on:
- couchdb2
peer1.org2.example.com:
extends:
file: base-solo.yaml
service: peer1.org2.example.com
environment:
- CORE_LEDGER_STATE_STATEDATABASE=CouchDB
- CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb3:5984
depends_on:
- couchdb3
couchdb0:
extends:
file: base.yaml
service: couchdb-base
container_name: couchdb0
# Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
# for example map it to utilize Fauxton User Interface in dev environments.
ports:
- "5984:5984" # this is the restful API addr, can also access fauxton web ui thru http://localhost:5984/_utils/
couchdb1:
extends:
file: base.yaml
service: couchdb-base
container_name: couchdb1
# Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
# for example map it to utilize Fauxton User Interface in dev environments.
ports:
- "6984:5984"
couchdb2:
extends:
file: base.yaml
service: couchdb-base
container_name: couchdb2
# Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
# for example map it to utilize Fauxton User Interface in dev environments.
ports:
- "7984:5984"
couchdb3:
extends:
file: base.yaml
service: couchdb-base
container_name: couchdb3
# Comment/Uncomment the port mapping if you want to hide/expose the CouchDB service,
# for example map it to utilize Fauxton User Interface in dev environments.
ports:
- "8984:5984"
cli:
extends:
file: base-solo.yaml
service: cli

View File

@ -1,91 +0,0 @@
# https://github.com/yeasy/docker-compose-files/tree/master/hyperledger
# This compose file will start a Hyperledger Fabric 1.0 MVE, including
# * 1 ca
# * 1 orderer
# * 4 peers in 2 orgs
# * cli for testing
version: '2.0'
services:
ca:
image: yeasy/hyperledger-fabric-ca:1.0.3
container_name: fabric-ca
hostname: ca
# command: /go/src/github.com/hyperledger/fabric-ca/bin/ca server start -ca testdata/ec.pem -ca-key testdata/ec-key.pem -config testdata/testconfig.json
ports:
- "7054:7054"
command: fabric-ca-server start -b admin:adminpw
orderer.example.com: # There can be multiple orderers
extends:
file: base-solo.yaml
service: orderer.example.com
peer0.org1.example.com:
extends:
file: base-solo.yaml
service: peer0.org1.example.com
peer1.org1.example.com:
extends:
file: base-solo.yaml
service: peer1.org1.example.com
peer0.org2.example.com:
extends:
file: base-solo.yaml
service: peer0.org2.example.com
peer1.org2.example.com:
extends:
file: base-solo.yaml
service: peer1.org2.example.com
cli:
extends:
file: base-solo.yaml
service: cli
environment:
- CORE_PEER_TLS_ENABLED=false # event-listener doesn't support TLS
event-listener:
container_name: fabric-event-listener
hostname: fabric-event-listener
image: yeasy/hyperledger-fabric:1.0.3
tty: true
environment:
- CORE_PEER_ID=fabric-event-listener
- CORE_LOGGING_LEVEL=DEBUG
- CORE_PEER_ADDRESS=peer0.org1.example.com:7051 # default to operate on peer0.org1
- CORE_PEER_LOCALMSPID=Org1MSP
- CORE_PEER_TLS_ENABLED=false # event-listener doesn't support TLS
- CORE_PEER_TLS_CERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.crt
- CORE_PEER_TLS_KEY_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/server.key
- CORE_PEER_TLS_ROOTCERT_FILE=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt
- CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
volumes:
#- ./solo/examples:/opt/gopath/src/github.com/hyperledger/fabric/examples
- ./solo/crypto-config:/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/
- ./solo/channel-artifacts:/opt/gopath/src/github.com/hyperledger/fabric/peer/channel-artifacts
- ./solo/configtx.yaml:/etc/hyperledger/fabric/configtx.yaml
- ./solo/crypto-config.yaml:/etc/hyperledger/fabric/crypto-config.yaml
- ./scripts:/opt/gopath/src/github.com/hyperledger/fabric/peer/scripts/
depends_on:
- orderer.example.com
- peer0.org1.example.com
- peer1.org1.example.com
- peer0.org2.example.com
- peer1.org2.example.com
working_dir: /opt/gopath/src/github.com/hyperledger/fabric/peer
#command: bash -c 'block-listener -events-address=peer0.org1.example.com:7053 -events-mspdir=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/msp/ -events-mspid=Org1MSP'
command: bash -c 'while true; do sleep 20170504; done'
#networks:
# default:
# external:
# name: hyperledger_fabric
#networks:
# default:
# external:
# name: hyperledger_fabric

View File

@ -1,114 +0,0 @@
# https://github.com/yeasy/docker-compose-files/tree/master/hyperledger
# This compose file will start a Hyperledger Fabric 1.0 MVE, including
# * 2 ca (not in use now)
# * 1 orderer
# * 4 peers in 2 orgs
# * cli for testing
version: '2.0'
services:
# ca.org1.example.com:
# extends:
# file: base-kafka.yaml
# service: ca.org1.example.com
# ca.org2.example.com:
# extends:
# file: base-kafka.yaml
# service: ca.org2.example.com
cli:
extends:
file: base-kafka.yaml
service: cli
orderer.example.com: # There can be multiple orderers
extends:
file: base-kafka.yaml
service: orderer.example.com
depends_on:
- kafka0
- kafka1
- kafka2
- kafka3
peer0.org1.example.com:
extends:
file: base-kafka.yaml
service: peer0.org1.example.com
depends_on:
- orderer.example.com
peer1.org1.example.com:
extends:
file: base-kafka.yaml
service: peer1.org1.example.com
peer0.org2.example.com:
extends:
file: base-kafka.yaml
service: peer0.org2.example.com
peer1.org2.example.com:
extends:
file: base-kafka.yaml
service: peer1.org2.example.com
# ZooKeeper services, at least 3 nodes
zookeeper0:
extends:
file: base-kafka.yaml
service: zookeeper0
zookeeper1:
extends:
file: base-kafka.yaml
service: zookeeper1
zookeeper2:
extends:
file: base-kafka.yaml
service: zookeeper2
# Kafka services, at least 4 node to tolerant work with 1 node failure
kafka0:
extends:
file: base-kafka.yaml
service: kafka0
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka1:
extends:
file: base-kafka.yaml
service: kafka1
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka2:
extends:
file: base-kafka.yaml
service: kafka2
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
kafka3:
extends:
file: base-kafka.yaml
service: kafka3
depends_on:
- zookeeper0
- zookeeper1
- zookeeper2
#networks:
# default:
# external:
# name: hyperledger_fabric

View File

@ -1,54 +0,0 @@
# https://github.com/yeasy/docker-compose-files/tree/master/hyperledger
# This compose file will start a Hyperledger Fabric 1.0 MVE, including
# * 2 ca (not in use now)
# * 1 orderer
# * 4 peers in 2 orgs
# * cli for testing
version: '2.0'
services:
# ca.org1.example.com:
# extends:
# file: base-solo.yaml
# service: ca.org1.example.com
# ca.org2.example.com:
# extends:
# file: base-solo.yaml
# service: ca.org2.example.com
cli:
extends:
file: base-solo.yaml
service: cli
orderer.example.com: # There can be multiple orderers
extends:
file: base-solo.yaml
service: orderer.example.com
peer0.org1.example.com:
extends:
file: base-solo.yaml
service: peer0.org1.example.com
peer1.org1.example.com:
extends:
file: base-solo.yaml
service: peer1.org1.example.com
peer0.org2.example.com:
extends:
file: base-solo.yaml
service: peer0.org2.example.com
peer1.org2.example.com:
extends:
file: base-solo.yaml
service: peer1.org2.example.com
#networks:
# default:
# external:
# name: hyperledger_fabric

View File

@ -1,13 +0,0 @@
## Start a network base on kafka
### Quick testing with kafka
```bash
$ KAFKA_ENABLED=true make
```
When the fabric-network fully started, it takes about 30~60s to finish all the test.
## Generate crypto-config and channel-artifacts
```bash
$ make gen_kafka
```

View File

@ -1,153 +0,0 @@
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
---
################################################################################
#
# Profile
#
# - Different configuration profiles may be encoded here to be specified
# as parameters to the configtxgen tool
#
################################################################################
Profiles:
TwoOrgsOrdererGenesis:
Orderer:
<<: *OrdererDefaults
Organizations:
- *OrdererOrg
Consortiums:
SampleConsortium:
Organizations:
- *Org1
- *Org2
TwoOrgsChannel:
Consortium: SampleConsortium
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
################################################################################
#
# Section: Organizations
#
# - This section defines the different organizational identities which will
# be referenced later in the configuration.
#
################################################################################
Organizations:
# SampleOrg defines an MSP using the sampleconfig. It should never be used
# in production but may be used as a template for other definitions
- &OrdererOrg
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: OrdererOrg
# ID to load the MSP definition as
ID: OrdererMSP
# MSPDir is the filesystem path which contains the MSP configuration
MSPDir: crypto-config/ordererOrganizations/example.com/msp
- &Org1
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: Org1MSP
# ID to load the MSP definition as
ID: Org1MSP
MSPDir: crypto-config/peerOrganizations/org1.example.com/msp
AnchorPeers:
# AnchorPeers defines the location of peers which can be used
# for cross org gossip communication. Note, this value is only
# encoded in the genesis block in the Application section context
- Host: peer0.org1.example.com
Port: 7051
- &Org2
# DefaultOrg defines the organization which is used in the sampleconfig
# of the fabric.git development environment
Name: Org2MSP
# ID to load the MSP definition as
ID: Org2MSP
MSPDir: crypto-config/peerOrganizations/org2.example.com/msp
AnchorPeers:
# AnchorPeers defines the location of peers which can be used
# for cross org gossip communication. Note, this value is only
# encoded in the genesis block in the Application section context
- Host: peer0.org2.example.com
Port: 7051
################################################################################
#
# SECTION: Orderer
#
# - This section defines the values to encode into a config transaction or
# genesis block for orderer related parameters
#
################################################################################
Orderer: &OrdererDefaults
# Orderer Type: The orderer implementation to start
# Available types are "solo" and "kafka"
OrdererType: kafka
Addresses:
- orderer.example.com:7050
# Batch Timeout: The amount of time to wait before creating a batch
BatchTimeout: 2s
# Batch Size: Controls the number of messages batched into a block
BatchSize:
# Max Message Count: The maximum number of messages to permit in a batch
MaxMessageCount: 10
# Absolute Max Bytes: The absolute maximum number of bytes allowed for
# the serialized messages in a batch.
AbsoluteMaxBytes: 98 MB
# Preferred Max Bytes: The preferred maximum number of bytes allowed for
# the serialized messages in a batch. A message larger than the preferred
# max bytes will result in a batch larger than preferred max bytes.
PreferredMaxBytes: 512 KB
Kafka:
# Brokers: A list of Kafka brokers to which the orderer connects. Edit
# this list to identify the brokers of the ordering service.
# NOTE: Use IP:port notation.
Brokers:
- kafka0:9092
- kafka1:9092
- kafka2:9092
- kafka3:9092
# Organizations is the list of orgs which are defined as participants on
# the orderer side of the network
Organizations:
################################################################################
#
# SECTION: Application
#
# - This section defines the values to encode into a config transaction or
# genesis block for application related parameters
#
################################################################################
Application: &ApplicationDefaults
# Organizations is the list of orgs which are defined as participants on
# the application side of the network
Organizations:

View File

@ -1,93 +0,0 @@
# Copyright IBM Corp. All Rights Reserved.
#
# SPDX-License-Identifier: Apache-2.0
#
# ---------------------------------------------------------------------------
# "OrdererOrgs" - Definition of organizations managing orderer nodes
# ---------------------------------------------------------------------------
OrdererOrgs:
# ---------------------------------------------------------------------------
# Orderer
# ---------------------------------------------------------------------------
- Name: Orderer
Domain: example.com
CA:
Country: US
Province: California
Locality: San Francisco
# ---------------------------------------------------------------------------
# "Specs" - See PeerOrgs below for complete description
# ---------------------------------------------------------------------------
Specs:
- Hostname: orderer
# ---------------------------------------------------------------------------
# "PeerOrgs" - Definition of organizations managing peer nodes
# ---------------------------------------------------------------------------
PeerOrgs:
# ---------------------------------------------------------------------------
# Org1
# ---------------------------------------------------------------------------
- Name: Org1
Domain: org1.example.com
CA:
Country: US
Province: California
Locality: San Francisco
# ---------------------------------------------------------------------------
# "Specs"
# ---------------------------------------------------------------------------
# Uncomment this section to enable the explicit definition of hosts in your
# configuration. Most users will want to use Template, below
#
# Specs is an array of Spec entries. Each Spec entry consists of two fields:
# - Hostname: (Required) The desired hostname, sans the domain.
# - CommonName: (Optional) Specifies the template or explicit override for
# the CN. By default, this is the template:
#
# "{{.Hostname}}.{{.Domain}}"
#
# which obtains its values from the Spec.Hostname and
# Org.Domain, respectively.
# ---------------------------------------------------------------------------
# Specs:
# - Hostname: foo # implicitly "foo.org1.example.com"
# CommonName: foo27.org5.example.com # overrides Hostname-based FQDN set above
# - Hostname: bar
# - Hostname: baz
# ---------------------------------------------------------------------------
# "Template"
# ---------------------------------------------------------------------------
# Allows for the definition of 1 or more hosts that are created sequentially
# from a template. By default, this looks like "peer%d" from 0 to Count-1.
# You may override the number of nodes (Count), the starting index (Start)
# or the template used to construct the name (Hostname).
#
# Note: Template and Specs are not mutually exclusive. You may define both
# sections and the aggregate nodes will be created for you. Take care with
# name collisions
# ---------------------------------------------------------------------------
Template:
Count: 2
# Start: 5
# Hostname: {{.Prefix}}{{.Index}} # default
# ---------------------------------------------------------------------------
# "Users"
# ---------------------------------------------------------------------------
# Count: The number of user accounts _in addition_ to Admin
# ---------------------------------------------------------------------------
Users:
Count: 1
# ---------------------------------------------------------------------------
# Org2: See "Org1" for full specification
# ---------------------------------------------------------------------------
- Name: Org2
Domain: org2.example.com
CA:
Country: US
Province: California
Locality: San Francisco
Template:
Count: 2
Users:
Count: 1

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgM4o2FiiE5OyPE+o1
H1KqX6rU9b1dVK0dvZ2UaLD8UFahRANCAATM0PsnILzXKXZCIon7sJgXOF1zoyX4
s0QCeADzStW3oNZ0kmHnbBcxbcNpmMmCQfUTwwpa5D/8stf7/4ANqIKD
-----END PRIVATE KEY-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICMDCCAdagAwIBAgIRAPbKwadSmJh3VAnoKWQtThEwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBaMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATM0PsnILzXKXZCIon7sJgXOF1z
oyX4s0QCeADzStW3oNZ0kmHnbBcxbcNpmMmCQfUTwwpa5D/8stf7/4ANqIKDo18w
XTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTAD
AQH/MCkGA1UdDgQiBCAGVZiQvil5WQPebaRPA7Q/8SaoOmjplA72xgHnHC2+TzAK
BggqhkjOPQQDAgNIADBFAiEA6YnPBFAz3fGQKXP6meEZooYhJZS0AxG6/OiSRlWp
5SsCIFK9Hx6fB7jSNWvtv6wpsOtQgwnlMcOIvKMwfZoezIvN
-----END CERTIFICATE-----

View File

@ -1,13 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICCzCCAbGgAwIBAgIRANhWCxxLoAmvxs3mtkIfoEYwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBaMFYxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABFIL82i8Lw23GklPO3dhd7UonwbZ6XYQ0hX16TKDoEiF7eu7OfAF
WksVqGWZlUrak2F7lfASQF4dn8WDB+fvJXujTTBLMA4GA1UdDwEB/wQEAwIHgDAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIAZVmJC+KXlZA95tpE8DtD/xJqg6aOmU
DvbGAeccLb5PMAoGCCqGSM49BAMCA0gAMEUCIQDotlD1UlpKYlQWWp80W0DvJhxZ
Q8QZm7vDTP9xDwgH/gIgWRivrcoL35yp8ACozfGVs4FVnJTxgBE/z3cIYO4dS/s=
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICMDCCAdagAwIBAgIRAPbKwadSmJh3VAnoKWQtThEwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBaMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATM0PsnILzXKXZCIon7sJgXOF1z
oyX4s0QCeADzStW3oNZ0kmHnbBcxbcNpmMmCQfUTwwpa5D/8stf7/4ANqIKDo18w
XTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTAD
AQH/MCkGA1UdDgQiBCAGVZiQvil5WQPebaRPA7Q/8SaoOmjplA72xgHnHC2+TzAK
BggqhkjOPQQDAgNIADBFAiEA6YnPBFAz3fGQKXP6meEZooYhJZS0AxG6/OiSRlWp
5SsCIFK9Hx6fB7jSNWvtv6wpsOtQgwnlMcOIvKMwfZoezIvN
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQD6M7kOzxEEewtNnTVjGu+TAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MDkyNzA2Mzc0MFoXDTI3MDkyNTA2Mzc0MFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAbjL4PFYBAgLbZpLicU
5WlhXT8hACnj8zLEZnWM9KRyemyKcksILSlfxhIbmxczutpic6XHLn7AZTxh4yM0
H6yjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIJLR6kwL0PitqQcH6gwoESCvVGAFWk3rnFtfM18S
+0r4MAoGCCqGSM49BAMCA0gAMEUCIQCKFQCwAHnPPYlQyxnzXdy3952c8DsJ66RM
rOi/4wQ8NQIgHaKvKS18GzgVqWKy0B+y7rcDAshKsttCbxAJumyZjIs=
-----END CERTIFICATE-----

View File

@ -1,13 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICCzCCAbGgAwIBAgIRANhWCxxLoAmvxs3mtkIfoEYwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBaMFYxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABFIL82i8Lw23GklPO3dhd7UonwbZ6XYQ0hX16TKDoEiF7eu7OfAF
WksVqGWZlUrak2F7lfASQF4dn8WDB+fvJXujTTBLMA4GA1UdDwEB/wQEAwIHgDAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIAZVmJC+KXlZA95tpE8DtD/xJqg6aOmU
DvbGAeccLb5PMAoGCCqGSM49BAMCA0gAMEUCIQDotlD1UlpKYlQWWp80W0DvJhxZ
Q8QZm7vDTP9xDwgH/gIgWRivrcoL35yp8ACozfGVs4FVnJTxgBE/z3cIYO4dS/s=
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICMDCCAdagAwIBAgIRAPbKwadSmJh3VAnoKWQtThEwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBaMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATM0PsnILzXKXZCIon7sJgXOF1z
oyX4s0QCeADzStW3oNZ0kmHnbBcxbcNpmMmCQfUTwwpa5D/8stf7/4ANqIKDo18w
XTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTAD
AQH/MCkGA1UdDgQiBCAGVZiQvil5WQPebaRPA7Q/8SaoOmjplA72xgHnHC2+TzAK
BggqhkjOPQQDAgNIADBFAiEA6YnPBFAz3fGQKXP6meEZooYhJZS0AxG6/OiSRlWp
5SsCIFK9Hx6fB7jSNWvtv6wpsOtQgwnlMcOIvKMwfZoezIvN
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgf6gVM7prpq2dVAF0
XZsrMRl1ngQWHP3g8vQPHoUMCM+hRANCAASxVOz9WeuZQ/+bZRf4TgXIoMzlkwhi
sGGkbJzu3IFvp7RPBzlXak4PzLZhTbcXBHr6Uax570iZqYRMgwelvnZu
-----END PRIVATE KEY-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICDTCCAbOgAwIBAgIRALKzAgSMqygfH0YaCqLdBWkwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBaMFgxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI
KoZIzj0DAQcDQgAEsVTs/VnrmUP/m2UX+E4FyKDM5ZMIYrBhpGyc7tyBb6e0Twc5
V2pOD8y2YU23FwR6+lGsee9ImamETIMHpb52bqNNMEswDgYDVR0PAQH/BAQDAgeA
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgBlWYkL4peVkD3m2kTwO0P/EmqDpo
6ZQO9sYB5xwtvk8wCgYIKoZIzj0EAwIDSAAwRQIhAKOsudnRbopdMBcOQf8vyeJh
AfyWjxqXzQoLCCpgUxaEAiBUR+ROeUkaiwUkT5Pkvkfo3dmoA4gqwnH4WfvkXDqP
jg==
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQD6M7kOzxEEewtNnTVjGu+TAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MDkyNzA2Mzc0MFoXDTI3MDkyNTA2Mzc0MFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAbjL4PFYBAgLbZpLicU
5WlhXT8hACnj8zLEZnWM9KRyemyKcksILSlfxhIbmxczutpic6XHLn7AZTxh4yM0
H6yjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIJLR6kwL0PitqQcH6gwoESCvVGAFWk3rnFtfM18S
+0r4MAoGCCqGSM49BAMCA0gAMEUCIQCKFQCwAHnPPYlQyxnzXdy3952c8DsJ66RM
rOi/4wQ8NQIgHaKvKS18GzgVqWKy0B+y7rcDAshKsttCbxAJumyZjIs=
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQD6M7kOzxEEewtNnTVjGu+TAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MDkyNzA2Mzc0MFoXDTI3MDkyNTA2Mzc0MFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAbjL4PFYBAgLbZpLicU
5WlhXT8hACnj8zLEZnWM9KRyemyKcksILSlfxhIbmxczutpic6XHLn7AZTxh4yM0
H6yjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIJLR6kwL0PitqQcH6gwoESCvVGAFWk3rnFtfM18S
+0r4MAoGCCqGSM49BAMCA0gAMEUCIQCKFQCwAHnPPYlQyxnzXdy3952c8DsJ66RM
rOi/4wQ8NQIgHaKvKS18GzgVqWKy0B+y7rcDAshKsttCbxAJumyZjIs=
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICWjCCAgCgAwIBAgIRAK7kSOvolrl5Oqn1j6MXCDkwCgYIKoZIzj0EAwIwbDEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5l
eGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBaMFgxCzAJ
BgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJh
bmNpc2NvMRwwGgYDVQQDExNvcmRlcmVyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0C
AQYIKoZIzj0DAQcDQgAEz3vOY8Dga6/uct3qkXiMyO3z6GoVaaWs//C+2bXDW6TA
eNxg5hTYJFhlPdbj7wPC2tzRy/l11ue/0Zqad8lfpaOBljCBkzAOBgNVHQ8BAf8E
BAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQC
MAAwKwYDVR0jBCQwIoAgktHqTAvQ+K2pBwfqDCgRIK9UYAVaTeucW18zXxL7Svgw
JwYDVR0RBCAwHoITb3JkZXJlci5leGFtcGxlLmNvbYIHb3JkZXJlcjAKBggqhkjO
PQQDAgNIADBFAiEAy+f0Vdu4sPrIZLhWCTKdJXXzm70vMAAcJGCqvo30KqkCICVX
DX6tq+Tw5AQKu9UoZeGHawSSPYw6eKElz8U3kN8b
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgjBMgv0lVc5MiD6FQ
m69sJ8l7VBw/caLKQbLPxbXieiKhRANCAATPe85jwOBrr+5y3eqReIzI7fPoahVp
paz/8L7ZtcNbpMB43GDmFNgkWGU91uPvA8La3NHL+XXW57/Rmpp3yV+l
-----END PRIVATE KEY-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgs34D8BnRo1WJZL8J
wW3rYaZjCF9nipPRBYAnAtJKmLuhRANCAAQG4y+DxWAQIC22aS4nFOVpYV0/IQAp
4/MyxGZ1jPSkcnpsinJLCC0pX8YSG5sXM7raYnOlxy5+wGU8YeMjNB+s
-----END PRIVATE KEY-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQD6M7kOzxEEewtNnTVjGu+TAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MDkyNzA2Mzc0MFoXDTI3MDkyNTA2Mzc0MFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAbjL4PFYBAgLbZpLicU
5WlhXT8hACnj8zLEZnWM9KRyemyKcksILSlfxhIbmxczutpic6XHLn7AZTxh4yM0
H6yjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIJLR6kwL0PitqQcH6gwoESCvVGAFWk3rnFtfM18S
+0r4MAoGCCqGSM49BAMCA0gAMEUCIQCKFQCwAHnPPYlQyxnzXdy3952c8DsJ66RM
rOi/4wQ8NQIgHaKvKS18GzgVqWKy0B+y7rcDAshKsttCbxAJumyZjIs=
-----END CERTIFICATE-----

View File

@ -1,13 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICCzCCAbGgAwIBAgIRANhWCxxLoAmvxs3mtkIfoEYwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBaMFYxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABFIL82i8Lw23GklPO3dhd7UonwbZ6XYQ0hX16TKDoEiF7eu7OfAF
WksVqGWZlUrak2F7lfASQF4dn8WDB+fvJXujTTBLMA4GA1UdDwEB/wQEAwIHgDAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIAZVmJC+KXlZA95tpE8DtD/xJqg6aOmU
DvbGAeccLb5PMAoGCCqGSM49BAMCA0gAMEUCIQDotlD1UlpKYlQWWp80W0DvJhxZ
Q8QZm7vDTP9xDwgH/gIgWRivrcoL35yp8ACozfGVs4FVnJTxgBE/z3cIYO4dS/s=
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICMDCCAdagAwIBAgIRAPbKwadSmJh3VAnoKWQtThEwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBaMGkxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRQwEgYDVQQKEwtleGFtcGxlLmNvbTEXMBUGA1UEAxMOY2EuZXhhbXBsZS5j
b20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATM0PsnILzXKXZCIon7sJgXOF1z
oyX4s0QCeADzStW3oNZ0kmHnbBcxbcNpmMmCQfUTwwpa5D/8stf7/4ANqIKDo18w
XTAOBgNVHQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTAD
AQH/MCkGA1UdDgQiBCAGVZiQvil5WQPebaRPA7Q/8SaoOmjplA72xgHnHC2+TzAK
BggqhkjOPQQDAgNIADBFAiEA6YnPBFAz3fGQKXP6meEZooYhJZS0AxG6/OiSRlWp
5SsCIFK9Hx6fB7jSNWvtv6wpsOtQgwnlMcOIvKMwfZoezIvN
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQguvc2KI5t+mMd1pPH
bd1dBsWr25SYfpgdrlet+8EGPD6hRANCAARSC/NovC8NtxpJTzt3YXe1KJ8G2el2
ENIV9ekyg6BIhe3ruznwBVpLFahlmZVK2pNhe5XwEkBeHZ/Fgwfn7yV7
-----END PRIVATE KEY-----

View File

@ -1,13 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICCzCCAbGgAwIBAgIRANhWCxxLoAmvxs3mtkIfoEYwCgYIKoZIzj0EAwIwaTEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRcwFQYDVQQDEw5jYS5leGFt
cGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBaMFYxCzAJBgNV
BAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNp
c2NvMRowGAYDVQQDDBFBZG1pbkBleGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqG
SM49AwEHA0IABFIL82i8Lw23GklPO3dhd7UonwbZ6XYQ0hX16TKDoEiF7eu7OfAF
WksVqGWZlUrak2F7lfASQF4dn8WDB+fvJXujTTBLMA4GA1UdDwEB/wQEAwIHgDAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIAZVmJC+KXlZA95tpE8DtD/xJqg6aOmU
DvbGAeccLb5PMAoGCCqGSM49BAMCA0gAMEUCIQDotlD1UlpKYlQWWp80W0DvJhxZ
Q8QZm7vDTP9xDwgH/gIgWRivrcoL35yp8ACozfGVs4FVnJTxgBE/z3cIYO4dS/s=
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQD6M7kOzxEEewtNnTVjGu+TAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MDkyNzA2Mzc0MFoXDTI3MDkyNTA2Mzc0MFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAbjL4PFYBAgLbZpLicU
5WlhXT8hACnj8zLEZnWM9KRyemyKcksILSlfxhIbmxczutpic6XHLn7AZTxh4yM0
H6yjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIJLR6kwL0PitqQcH6gwoESCvVGAFWk3rnFtfM18S
+0r4MAoGCCqGSM49BAMCA0gAMEUCIQCKFQCwAHnPPYlQyxnzXdy3952c8DsJ66RM
rOi/4wQ8NQIgHaKvKS18GzgVqWKy0B+y7rcDAshKsttCbxAJumyZjIs=
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICNTCCAdugAwIBAgIQD6M7kOzxEEewtNnTVjGu+TAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MDkyNzA2Mzc0MFoXDTI3MDkyNTA2Mzc0MFowbDELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xFDASBgNVBAoTC2V4YW1wbGUuY29tMRowGAYDVQQDExF0bHNjYS5leGFt
cGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABAbjL4PFYBAgLbZpLicU
5WlhXT8hACnj8zLEZnWM9KRyemyKcksILSlfxhIbmxczutpic6XHLn7AZTxh4yM0
H6yjXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB
/wQFMAMBAf8wKQYDVR0OBCIEIJLR6kwL0PitqQcH6gwoESCvVGAFWk3rnFtfM18S
+0r4MAoGCCqGSM49BAMCA0gAMEUCIQCKFQCwAHnPPYlQyxnzXdy3952c8DsJ66RM
rOi/4wQ8NQIgHaKvKS18GzgVqWKy0B+y7rcDAshKsttCbxAJumyZjIs=
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICKzCCAdKgAwIBAgIQDnBVSgj/w031TaF6zsUDkjAKBggqhkjOPQQDAjBsMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEUMBIGA1UEChMLZXhhbXBsZS5jb20xGjAYBgNVBAMTEXRsc2NhLmV4
YW1wbGUuY29tMB4XDTE3MDkyNzA2Mzc0MFoXDTI3MDkyNTA2Mzc0MFowVjELMAkG
A1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFu
Y2lzY28xGjAYBgNVBAMMEUFkbWluQGV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYI
KoZIzj0DAQcDQgAEuIgH+i6I78B5s35WLzf52pKq2lqPSxb1O2p0P5qxbPhouUHp
AuaGSUE+lA7rOEkhOgIS3Augfq973WRLSv8H16NsMGowDgYDVR0PAQH/BAQDAgWg
MB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMCsG
A1UdIwQkMCKAIJLR6kwL0PitqQcH6gwoESCvVGAFWk3rnFtfM18S+0r4MAoGCCqG
SM49BAMCA0cAMEQCIBlJHFWffEbo55UO9i1coa6o0940YOLzXMDb/hyRPyO/AiA8
zm7S0giNChs+xYS6V0vfA/wh4HJVgDuGrvXHag4IMQ==
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgqeIIYAsjWCcMmRkp
C3C9hs0Q2opH7TbmrdrXoZJj/LGhRANCAAS4iAf6LojvwHmzflYvN/nakqraWo9L
FvU7anQ/mrFs+Gi5QekC5oZJQT6UDus4SSE6AhLcC6B+r3vdZEtK/wfX
-----END PRIVATE KEY-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQghIfmhCzLHkJqLBrp
ZD16VLNqPxH9Dpdr7IRK/3I79wKhRANCAATF5TnbRZU9YBnAYy7zkYlWZpLx3eyL
r16b+nnFgwajBCQWkoyls5fDTnMB9K4gdHQJvv/Cu9pWpKZXTVVl9onJ
-----END PRIVATE KEY-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICQjCCAemgAwIBAgIQPvW4anFBfPsU0XRUt49FzTAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
xeU520WVPWAZwGMu85GJVmaS8d3si69em/p5xYMGowQkFpKMpbOXw05zAfSuIHR0
Cb7/wrvaVqSmV01VZfaJyaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgbeYVSbTvk4LmeR89vA9L
njscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgIIfJBFxc4AC6pc/0
oaiVlFqS2y2d0NuFpfRelKuWnyMCIFB2gwJ8rUVvNLvTMvcWl2ycBEpslMnmUiJz
OXUDBZiy
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICGDCCAb+gAwIBAgIQJ24cvAJMZ5y+HIv0lVxj/zAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfJqqIOM1lhfOTv53E+BNTNdgaQhRh66L
qDJ8YJfRSKReQQm6Ups8SN9S28s7OEzDuOsJ0cqkTigVcF9wlFyRy6NNMEswDgYD
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgbeYVSbTvk4Lm
eR89vA9LnjscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgWQ2KKXUS
ewr2H2H+RWliT/ASiZUUrs1y0LiyjTkn14QCIDLNQPYPw+1FRQwt1CIQzVV5FTQI
NfI9pPRriogFAy7n
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICQjCCAemgAwIBAgIQPvW4anFBfPsU0XRUt49FzTAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
xeU520WVPWAZwGMu85GJVmaS8d3si69em/p5xYMGowQkFpKMpbOXw05zAfSuIHR0
Cb7/wrvaVqSmV01VZfaJyaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgbeYVSbTvk4LmeR89vA9L
njscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgIIfJBFxc4AC6pc/0
oaiVlFqS2y2d0NuFpfRelKuWnyMCIFB2gwJ8rUVvNLvTMvcWl2ycBEpslMnmUiJz
OXUDBZiy
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAfCgAwIBAgIRAPcErel6bDqCktlsWVDjEpQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABC5yXUarFRhzKP5QG3xkY/GVe1qqjq3fe4C6mAECYdTSrQYGh1ewgRvc
v8JrZP33L8IqNil0lc3kmoCKqazeb12jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKSptiUTei2C
81ve3wh+4y4vYqxBNvhyxeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIG2A3h+V
qi6vHJZBdLsSbRXo2JTbmzPH9EAhC86T8pveAiB+bndoDOCdHLcc/TibB4cJa2Mn
PzaRI2RLnGexXmrhcA==
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICGDCCAb+gAwIBAgIQJ24cvAJMZ5y+HIv0lVxj/zAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfJqqIOM1lhfOTv53E+BNTNdgaQhRh66L
qDJ8YJfRSKReQQm6Ups8SN9S28s7OEzDuOsJ0cqkTigVcF9wlFyRy6NNMEswDgYD
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgbeYVSbTvk4Lm
eR89vA9LnjscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgWQ2KKXUS
ewr2H2H+RWliT/ASiZUUrs1y0LiyjTkn14QCIDLNQPYPw+1FRQwt1CIQzVV5FTQI
NfI9pPRriogFAy7n
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICQjCCAemgAwIBAgIQPvW4anFBfPsU0XRUt49FzTAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
xeU520WVPWAZwGMu85GJVmaS8d3si69em/p5xYMGowQkFpKMpbOXw05zAfSuIHR0
Cb7/wrvaVqSmV01VZfaJyaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgbeYVSbTvk4LmeR89vA9L
njscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgIIfJBFxc4AC6pc/0
oaiVlFqS2y2d0NuFpfRelKuWnyMCIFB2gwJ8rUVvNLvTMvcWl2ycBEpslMnmUiJz
OXUDBZiy
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgqWPbCN4RHdB5tr8x
Ij4IT03vyzFZr0osDrvgJWQE+mShRANCAARBeheIf6n/DYsdMK/J0ON8PqOJSk98
fwA51/eIg0joCJj9rLBTU0/iYeSemqwpQNWrhp3jH1C/LEBgfZCkMlwx
-----END PRIVATE KEY-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICGDCCAb+gAwIBAgIQRv6BL/u3L+PhJ1aSrRZPnzAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29tMFkw
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQXoXiH+p/w2LHTCvydDjfD6jiUpPfH8A
Odf3iINI6AiY/aywU1NP4mHknpqsKUDVq4ad4x9QvyxAYH2QpDJcMaNNMEswDgYD
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgbeYVSbTvk4Lm
eR89vA9LnjscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgYahj3le0
Jc8KI9AHz+jOn3NjIywfp9JdC6pnQzETZQACIHV/+u7hDb3ytzLgjkxnqHUpLBhv
RkzctwF1AVEl11AM
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAfCgAwIBAgIRAPcErel6bDqCktlsWVDjEpQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABC5yXUarFRhzKP5QG3xkY/GVe1qqjq3fe4C6mAECYdTSrQYGh1ewgRvc
v8JrZP33L8IqNil0lc3kmoCKqazeb12jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKSptiUTei2C
81ve3wh+4y4vYqxBNvhyxeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIG2A3h+V
qi6vHJZBdLsSbRXo2JTbmzPH9EAhC86T8pveAiB+bndoDOCdHLcc/TibB4cJa2Mn
PzaRI2RLnGexXmrhcA==
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAfCgAwIBAgIRAPcErel6bDqCktlsWVDjEpQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABC5yXUarFRhzKP5QG3xkY/GVe1qqjq3fe4C6mAECYdTSrQYGh1ewgRvc
v8JrZP33L8IqNil0lc3kmoCKqazeb12jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKSptiUTei2C
81ve3wh+4y4vYqxBNvhyxeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIG2A3h+V
qi6vHJZBdLsSbRXo2JTbmzPH9EAhC86T8pveAiB+bndoDOCdHLcc/TibB4cJa2Mn
PzaRI2RLnGexXmrhcA==
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICZzCCAg2gAwIBAgIQfHsr/8TSwM4bk0kgS5u/0jAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3
NDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMC5vcmcxLmV4YW1wbGUuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/ZORGlh6kSbpdAn0LfZfvC/pJYaO
RCSrPvL1A6b1/Qnwe+BLO9d1EfiwyZhcEReTfr18Bnh2AeCLnL+uuVIy0KOBlzCB
lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgpKm2JRN6LYLzW97fCH7jLi9irEE2
+HLF4brsEmqFLrQwKAYDVR0RBCEwH4IWcGVlcjAub3JnMS5leGFtcGxlLmNvbYIF
cGVlcjAwCgYIKoZIzj0EAwIDSAAwRQIhALqbj7LKlLTE6ER06UVEtVPjSPhKg7iu
KSc3eHMmtQGIAiAMMpP60aVgR3wZYTXqpbla8JZyK7x1oX/eUv0mW4WQZg==
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgd0S7NjRobJcDsPoo
kwP/IUjrQqKmIZHY7q1qke/YOWChRANCAAT9k5EaWHqRJul0CfQt9l+8L+klho5E
JKs+8vUDpvX9CfB74Es713UR+LDJmFwRF5N+vXwGeHYB4Iucv665UjLQ
-----END PRIVATE KEY-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICGDCCAb+gAwIBAgIQJ24cvAJMZ5y+HIv0lVxj/zAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfJqqIOM1lhfOTv53E+BNTNdgaQhRh66L
qDJ8YJfRSKReQQm6Ups8SN9S28s7OEzDuOsJ0cqkTigVcF9wlFyRy6NNMEswDgYD
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgbeYVSbTvk4Lm
eR89vA9LnjscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgWQ2KKXUS
ewr2H2H+RWliT/ASiZUUrs1y0LiyjTkn14QCIDLNQPYPw+1FRQwt1CIQzVV5FTQI
NfI9pPRriogFAy7n
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICQjCCAemgAwIBAgIQPvW4anFBfPsU0XRUt49FzTAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
xeU520WVPWAZwGMu85GJVmaS8d3si69em/p5xYMGowQkFpKMpbOXw05zAfSuIHR0
Cb7/wrvaVqSmV01VZfaJyaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgbeYVSbTvk4LmeR89vA9L
njscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgIIfJBFxc4AC6pc/0
oaiVlFqS2y2d0NuFpfRelKuWnyMCIFB2gwJ8rUVvNLvTMvcWl2ycBEpslMnmUiJz
OXUDBZiy
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgKfBefTd8K711TEBx
fuJNRG1LHMD9FQBQgKaOSmm3GoChRANCAAS2B4Zl80zNmngDiFDFBrHVQAHc6RXO
MMj4hZOkgHyMvLDpRD7Lq+UkEsMlG4FzNKpnHy9XwPawHZB5cC2tWR3I
-----END PRIVATE KEY-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICGTCCAcCgAwIBAgIRANYetlHEfJZZtMDqu35quOowCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYzNzQw
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjEub3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABLYHhmXzTM2aeAOIUMUGsdVAAdzpFc4w
yPiFk6SAfIy8sOlEPsur5SQSwyUbgXM0qmcfL1fA9rAdkHlwLa1ZHcijTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIG3mFUm075OC
5nkfPbwPS547HFNB7cI/yPu97NLksODSMAoGCCqGSM49BAMCA0cAMEQCIA9ewJLN
2dWDwOB2smtJqOH5bskm8/LqlDeBNBYk70I3AiAnKAJoS/gZ+deb59eeqbi8Kv/k
5+Cr1DM0EPJ0zUqt5A==
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAfCgAwIBAgIRAPcErel6bDqCktlsWVDjEpQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABC5yXUarFRhzKP5QG3xkY/GVe1qqjq3fe4C6mAECYdTSrQYGh1ewgRvc
v8JrZP33L8IqNil0lc3kmoCKqazeb12jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKSptiUTei2C
81ve3wh+4y4vYqxBNvhyxeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIG2A3h+V
qi6vHJZBdLsSbRXo2JTbmzPH9EAhC86T8pveAiB+bndoDOCdHLcc/TibB4cJa2Mn
PzaRI2RLnGexXmrhcA==
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAfCgAwIBAgIRAPcErel6bDqCktlsWVDjEpQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABC5yXUarFRhzKP5QG3xkY/GVe1qqjq3fe4C6mAECYdTSrQYGh1ewgRvc
v8JrZP33L8IqNil0lc3kmoCKqazeb12jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKSptiUTei2C
81ve3wh+4y4vYqxBNvhyxeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIG2A3h+V
qi6vHJZBdLsSbRXo2JTbmzPH9EAhC86T8pveAiB+bndoDOCdHLcc/TibB4cJa2Mn
PzaRI2RLnGexXmrhcA==
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICZzCCAg2gAwIBAgIQcqeN5foMMTg0eO+c6c/gGzAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3
NDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDExZwZWVyMS5vcmcxLmV4YW1wbGUuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7/7EMgj817wspCOGdZQ+6QBMXqt7
KHoCirhvQtzxnT74opAgsnYMRpImF82fipkJAbyEcJ4xWR8oJ2GrtNr/6KOBlzCB
lDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
MAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgpKm2JRN6LYLzW97fCH7jLi9irEE2
+HLF4brsEmqFLrQwKAYDVR0RBCEwH4IWcGVlcjEub3JnMS5leGFtcGxlLmNvbYIF
cGVlcjEwCgYIKoZIzj0EAwIDSAAwRQIhAO8Yc3MNSQJl3708UIuwk7owSsPYJVYy
xOvuKXLKh67ZAiBIe+QihTNuvlDJvFTCdsJcfgBBHPkQd5L8iQsfivGgrQ==
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgOe2zWsHZMTGT1BKl
zywbCiql0z4CYsjVlgzbrakPYi6hRANCAATv/sQyCPzXvCykI4Z1lD7pAExeq3so
egKKuG9C3PGdPviikCCydgxGkiYXzZ+KmQkBvIRwnjFZHygnYau02v/o
-----END PRIVATE KEY-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgnTd8izocVAEJLbac
tWICw67lbMboThXvjWbCOiGaJ9ehRANCAAQucl1GqxUYcyj+UBt8ZGPxlXtaqo6t
33uAupgBAmHU0q0GBodXsIEb3L/Ca2T99y/CKjYpdJXN5JqAiqms3m9d
-----END PRIVATE KEY-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAfCgAwIBAgIRAPcErel6bDqCktlsWVDjEpQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABC5yXUarFRhzKP5QG3xkY/GVe1qqjq3fe4C6mAECYdTSrQYGh1ewgRvc
v8JrZP33L8IqNil0lc3kmoCKqazeb12jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKSptiUTei2C
81ve3wh+4y4vYqxBNvhyxeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIG2A3h+V
qi6vHJZBdLsSbRXo2JTbmzPH9EAhC86T8pveAiB+bndoDOCdHLcc/TibB4cJa2Mn
PzaRI2RLnGexXmrhcA==
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICGDCCAb+gAwIBAgIQJ24cvAJMZ5y+HIv0lVxj/zAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfJqqIOM1lhfOTv53E+BNTNdgaQhRh66L
qDJ8YJfRSKReQQm6Ups8SN9S28s7OEzDuOsJ0cqkTigVcF9wlFyRy6NNMEswDgYD
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgbeYVSbTvk4Lm
eR89vA9LnjscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgWQ2KKXUS
ewr2H2H+RWliT/ASiZUUrs1y0LiyjTkn14QCIDLNQPYPw+1FRQwt1CIQzVV5FTQI
NfI9pPRriogFAy7n
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICQjCCAemgAwIBAgIQPvW4anFBfPsU0XRUt49FzTAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
xeU520WVPWAZwGMu85GJVmaS8d3si69em/p5xYMGowQkFpKMpbOXw05zAfSuIHR0
Cb7/wrvaVqSmV01VZfaJyaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgbeYVSbTvk4LmeR89vA9L
njscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgIIfJBFxc4AC6pc/0
oaiVlFqS2y2d0NuFpfRelKuWnyMCIFB2gwJ8rUVvNLvTMvcWl2ycBEpslMnmUiJz
OXUDBZiy
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgzS8FrIAa3qOjX73P
FjHDJvZwle0ScdR62UlRVmA3p0OhRANCAAR8mqog4zWWF85O/ncT4E1M12BpCFGH
rouoMnxgl9FIpF5BCbpSmzxI31Lbyzs4TMO46wnRyqROKBVwX3CUXJHL
-----END PRIVATE KEY-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICGDCCAb+gAwIBAgIQJ24cvAJMZ5y+HIv0lVxj/zAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29tMFkw
EwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEfJqqIOM1lhfOTv53E+BNTNdgaQhRh66L
qDJ8YJfRSKReQQm6Ups8SN9S28s7OEzDuOsJ0cqkTigVcF9wlFyRy6NNMEswDgYD
VR0PAQH/BAQDAgeAMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAgbeYVSbTvk4Lm
eR89vA9LnjscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgWQ2KKXUS
ewr2H2H+RWliT/ASiZUUrs1y0LiyjTkn14QCIDLNQPYPw+1FRQwt1CIQzVV5FTQI
NfI9pPRriogFAy7n
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAfCgAwIBAgIRAPcErel6bDqCktlsWVDjEpQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABC5yXUarFRhzKP5QG3xkY/GVe1qqjq3fe4C6mAECYdTSrQYGh1ewgRvc
v8JrZP33L8IqNil0lc3kmoCKqazeb12jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKSptiUTei2C
81ve3wh+4y4vYqxBNvhyxeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIG2A3h+V
qi6vHJZBdLsSbRXo2JTbmzPH9EAhC86T8pveAiB+bndoDOCdHLcc/TibB4cJa2Mn
PzaRI2RLnGexXmrhcA==
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAfCgAwIBAgIRAPcErel6bDqCktlsWVDjEpQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABC5yXUarFRhzKP5QG3xkY/GVe1qqjq3fe4C6mAECYdTSrQYGh1ewgRvc
v8JrZP33L8IqNil0lc3kmoCKqazeb12jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKSptiUTei2C
81ve3wh+4y4vYqxBNvhyxeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIG2A3h+V
qi6vHJZBdLsSbRXo2JTbmzPH9EAhC86T8pveAiB+bndoDOCdHLcc/TibB4cJa2Mn
PzaRI2RLnGexXmrhcA==
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICOjCCAeGgAwIBAgIQbK6FbU31KwALmK2Z45TmrTAKBggqhkjOPQQDAjB2MQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0GA1UEAxMWdGxz
Y2Eub3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3
NDBaMFsxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQH
Ew1TYW4gRnJhbmNpc2NvMR8wHQYDVQQDDBZBZG1pbkBvcmcxLmV4YW1wbGUuY29t
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEd4/ZO57UEMCL6ThW5R8bi6kMsd3p
kzvPJqEXiswtC0ROG7YT0Ky0lyJuo5BF/nv/AKBGsT5ZHOZxypYs4ZARWaNsMGow
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAM
BgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIKSptiUTei2C81ve3wh+4y4vYqxBNvhy
xeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIDUpGUSRRy0RcZf3z7h3oAdNuK32
uSLdZ0FqMGdYGcIIAiBde2WvxP3CmqLZSQEw2mR6IpRcJYap1cozSmXCwEmnfQ==
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgZQ+RJAXOT6aQ2t6R
LrrVc7E8EUeso32PJFusiutCz6mhRANCAAR3j9k7ntQQwIvpOFblHxuLqQyx3emT
O88moReKzC0LRE4bthPQrLSXIm6jkEX+e/8AoEaxPlkc5nHKlizhkBFZ
-----END PRIVATE KEY-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICGTCCAcCgAwIBAgIRAOwkDt1N4pGtDlkFHJuqDD4wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYzNzQw
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABJyxgiK73CXyfUfyUyhckIojRm5rB5vv
fA4rNq3b8E7rVhMUK103WYPL96EwyQY7KbXNMC1dBIwPWohDmh6aTamjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIG3mFUm075OC
5nkfPbwPS547HFNB7cI/yPu97NLksODSMAoGCCqGSM49BAMCA0cAMEQCIGYABqah
FIRnanjFKgFf8c9qYZgc2Ta/4W1tHwogF8CBAiAL0jCWG4IgJCsjEx7QcHH9rJ6F
K86H6HK+pAx9RAq5zw==
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICQjCCAemgAwIBAgIQPvW4anFBfPsU0XRUt49FzTAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMS5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcxLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcxLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
xeU520WVPWAZwGMu85GJVmaS8d3si69em/p5xYMGowQkFpKMpbOXw05zAfSuIHR0
Cb7/wrvaVqSmV01VZfaJyaNfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgbeYVSbTvk4LmeR89vA9L
njscU0Htwj/I+73s0uSw4NIwCgYIKoZIzj0EAwIDRwAwRAIgIIfJBFxc4AC6pc/0
oaiVlFqS2y2d0NuFpfRelKuWnyMCIFB2gwJ8rUVvNLvTMvcWl2ycBEpslMnmUiJz
OXUDBZiy
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg1BSYBh9z9Ezju00p
nmxVx945igBfYvmIrAjKqedeo8ahRANCAAScsYIiu9wl8n1H8lMoXJCKI0Zuaweb
73wOKzat2/BO61YTFCtdN1mDy/ehMMkGOym1zTAtXQSMD1qIQ5oemk2p
-----END PRIVATE KEY-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICGTCCAcCgAwIBAgIRAOwkDt1N4pGtDlkFHJuqDD4wCgYIKoZIzj0EAwIwczEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh
Lm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYzNzQw
WjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
U2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNvbTBZ
MBMGByqGSM49AgEGCCqGSM49AwEHA0IABJyxgiK73CXyfUfyUyhckIojRm5rB5vv
fA4rNq3b8E7rVhMUK103WYPL96EwyQY7KbXNMC1dBIwPWohDmh6aTamjTTBLMA4G
A1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIG3mFUm075OC
5nkfPbwPS547HFNB7cI/yPu97NLksODSMAoGCCqGSM49BAMCA0cAMEQCIGYABqah
FIRnanjFKgFf8c9qYZgc2Ta/4W1tHwogF8CBAiAL0jCWG4IgJCsjEx7QcHH9rJ6F
K86H6HK+pAx9RAq5zw==
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAfCgAwIBAgIRAPcErel6bDqCktlsWVDjEpQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABC5yXUarFRhzKP5QG3xkY/GVe1qqjq3fe4C6mAECYdTSrQYGh1ewgRvc
v8JrZP33L8IqNil0lc3kmoCKqazeb12jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKSptiUTei2C
81ve3wh+4y4vYqxBNvhyxeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIG2A3h+V
qi6vHJZBdLsSbRXo2JTbmzPH9EAhC86T8pveAiB+bndoDOCdHLcc/TibB4cJa2Mn
PzaRI2RLnGexXmrhcA==
-----END CERTIFICATE-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICSTCCAfCgAwIBAgIRAPcErel6bDqCktlsWVDjEpQwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjB2MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEZMBcGA1UEChMQb3JnMS5leGFtcGxlLmNvbTEfMB0G
A1UEAxMWdGxzY2Eub3JnMS5leGFtcGxlLmNvbTBZMBMGByqGSM49AgEGCCqGSM49
AwEHA0IABC5yXUarFRhzKP5QG3xkY/GVe1qqjq3fe4C6mAECYdTSrQYGh1ewgRvc
v8JrZP33L8IqNil0lc3kmoCKqazeb12jXzBdMA4GA1UdDwEB/wQEAwIBpjAPBgNV
HSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEIKSptiUTei2C
81ve3wh+4y4vYqxBNvhyxeG67BJqhS60MAoGCCqGSM49BAMCA0cAMEQCIG2A3h+V
qi6vHJZBdLsSbRXo2JTbmzPH9EAhC86T8pveAiB+bndoDOCdHLcc/TibB4cJa2Mn
PzaRI2RLnGexXmrhcA==
-----END CERTIFICATE-----

View File

@ -1,14 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICOzCCAeKgAwIBAgIRAK+m8QW4ZVe8E0GHWIe1Y6EwCgYIKoZIzj0EAwIwdjEL
MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG
cmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHzAdBgNVBAMTFnRs
c2NhLm9yZzEuZXhhbXBsZS5jb20wHhcNMTcwOTI3MDYzNzQwWhcNMjcwOTI1MDYz
NzQwWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UE
BxMNU2FuIEZyYW5jaXNjbzEfMB0GA1UEAwwWVXNlcjFAb3JnMS5leGFtcGxlLmNv
bTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABK4/kv7B+amCXRQMkt2lPsaaVc7H
pLOPN24yPlv2pCZIRxQ5ekjDufRwZzwyhD8XKTsUGSZ0wq1sUp2TH7HDWeyjbDBq
MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw
DAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCCkqbYlE3otgvNb3t8IfuMuL2KsQTb4
csXhuuwSaoUutDAKBggqhkjOPQQDAgNHADBEAiBcMqQWvQrFTqRlS2fAr9cs4Iw/
bXxvqlfD4+yp4KK+hAIgM8Dm0UcxmN0Do/CUs7O2BXbdm83P7nBgHRSrsHqqIZk=
-----END CERTIFICATE-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgcJu0Pjoi6cIYvbUF
VNPCoCnvKPw0iYnIYU2n5aT5KaOhRANCAASuP5L+wfmpgl0UDJLdpT7GmlXOx6Sz
jzduMj5b9qQmSEcUOXpIw7n0cGc8MoQ/Fyk7FBkmdMKtbFKdkx+xw1ns
-----END PRIVATE KEY-----

View File

@ -1,5 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgWP5Agcauhf6fy5xu
ZvAK5MtFgaMpzQgxxWCGX0wRwnyhRANCAASoCn9eQZC0jiDp0D0yS8EmeisW+4XB
FtLz92MzCQOjJ90xDuQJLU0mWI0gQ2A7QFUUE29w7N3zmjRTd7AwvUZ/
-----END PRIVATE KEY-----

View File

@ -1,15 +0,0 @@
-----BEGIN CERTIFICATE-----
MIICQjCCAemgAwIBAgIQN6qZ4KEZP2nsHBxZuPSbszAKBggqhkjOPQQDAjBzMQsw
CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy
YW5jaXNjbzEZMBcGA1UEChMQb3JnMi5leGFtcGxlLmNvbTEcMBoGA1UEAxMTY2Eu
b3JnMi5leGFtcGxlLmNvbTAeFw0xNzA5MjcwNjM3NDBaFw0yNzA5MjUwNjM3NDBa
MHMxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1T
YW4gRnJhbmNpc2NvMRkwFwYDVQQKExBvcmcyLmV4YW1wbGUuY29tMRwwGgYDVQQD
ExNjYS5vcmcyLmV4YW1wbGUuY29tMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE
qAp/XkGQtI4g6dA9MkvBJnorFvuFwRbS8/djMwkDoyfdMQ7kCS1NJliNIENgO0BV
FBNvcOzd85o0U3ewML1Gf6NfMF0wDgYDVR0PAQH/BAQDAgGmMA8GA1UdJQQIMAYG
BFUdJQAwDwYDVR0TAQH/BAUwAwEB/zApBgNVHQ4EIgQgiqAh/B1Idvgp/8Sukq4X
KtK0RSzyHHactGMLrm3N0VEwCgYIKoZIzj0EAwIDRwAwRAIgDdiTnhN11o38AKPk
jqnP68uE6fKp3Fszl2KcHqA/JN8CIGcOzKdK0SAqhlymvrT65waMFb9lzYeDWqR6
rUfJ9Qp8
-----END CERTIFICATE-----

Some files were not shown because too many files have changed in this diff Show More