Hyperledger fabric Hyperledger Fabric v1.0 configtxlator添加新组织错误

Hyperledger fabric Hyperledger Fabric v1.0 configtxlator添加新组织错误,hyperledger-fabric,hyperledger,Hyperledger Fabric,Hyperledger,我尝试使用configtxlator添加新组织Org3,但失败。以下是服务器控制台日志中的错误: orderer.example.com | 2017-09-06 10:16:04.960 UTC [orderer/main] Deliver -> DEBU 8b8 Starting new Deliver handler orderer.example.com | 2017-09-06 10:16:04.960 UTC [orderer/common/delive

我尝试使用configtxlator添加新组织Org3,但失败。以下是服务器控制台日志中的错误:

orderer.example.com       | 2017-09-06 10:16:04.960 UTC [orderer/main] Deliver -> DEBU 8b8 Starting new Deliver handler
orderer.example.com       | 2017-09-06 10:16:04.960 UTC [orderer/common/deliver] Handle -> DEBU 8b9 Starting new deliver loop
orderer.example.com       | 2017-09-06 10:16:04.960 UTC [orderer/common/deliver] Handle -> DEBU 8ba Attempting to read seek info message
orderer.example.com       | 2017-09-06 10:16:04.964 UTC [orderer/main] Broadcast -> DEBU 8bb Starting new Broadcast handler
orderer.example.com       | 2017-09-06 10:16:04.964 UTC [orderer/common/broadcast] Handle -> DEBU 8bc Starting new broadcast loop
orderer.example.com       | 2017-09-06 10:16:04.964 UTC [orderer/common/broadcast] Handle -> DEBU 8bd Preprocessing CONFIG_UPDATE
orderer.example.com       | 2017-09-06 10:16:04.964 UTC [orderer/configupdate] Process -> DEBU 8be Processing channel reconfiguration request for channel mychannel
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8bf Adding to config map: [Groups] /Channel
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c0 Adding to config map: [Groups] /Channel/Orderer
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c1 Adding to config map: [Groups] /Channel/Application
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c2 Adding to config map: [Values] /Channel/HashingAlgorithm
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c3 Adding to config map: [Values] /Channel/OrdererAddresses
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c4 Adding to config map: [Values] /Channel/BlockDataHashingStructure
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c5 Adding to config map: [Values] /Channel/Consortium
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c6 Adding to config map: [Policy] /Channel/Admins
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c7 Adding to config map: [Policy] /Channel/Readers
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c8 Adding to config map: [Policy] /Channel/Writers
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8c9 Adding to config map: [Groups] /Channel
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8ca Adding to config map: [Groups] /Channel/Consortiums
orderer.example.com       | 2017-09-06 10:16:04.965 UTC [common/configtx] addToMap -> DEBU 8cb Adding to config map: [Groups] /Channel/Consortiums/SampleConsortium
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8cc Adding to config map: [Groups] /Channel/Consortiums/SampleConsortium/Org3MSP
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8cd Adding to config map: [Values] /Channel/Consortiums/SampleConsortium/Org3MSP/MSP
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8ce Adding to config map: [Groups] /Channel/Orderer
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8cf Adding to config map: [Groups] /Channel/Application
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d0 Adding to config map: [Values] /Channel/Consortium
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d1 Adding to config map: [Values] /Channel/HashingAlgorithm
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d2 Adding to config map: [Values] /Channel/OrdererAddresses
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d3 Adding to config map: [Values] /Channel/BlockDataHashingStructure
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d4 Adding to config map: [Policy] /Channel/Admins
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d5 Adding to config map: [Policy] /Channel/Readers
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [common/configtx] addToMap -> DEBU 8d6 Adding to config map: [Policy] /Channel/Writers
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [orderer/main] func1 -> CRIT 8d7 Broadcast client triggered panic: runtime error: slice bounds out of range
orderer.example.com       | goroutine 70 [running]:
orderer.example.com       | runtime/debug.Stack(0xc420b530b0, 0xb75a60, 0xc42000c0a0)
orderer.example.com       |     /opt/go/src/runtime/debug/stack.go:24 +0x79
orderer.example.com       | main.(*server).Broadcast.func1()
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/orderer/server.go:77 +0x97
orderer.example.com       | panic(0xb75a60, 0xc42000c0a0)
orderer.example.com       |     /opt/go/src/runtime/panic.go:458 +0x243
orderer.example.com       | github.com/hyperledger/fabric/common/configtx.(*configManager).policyForItem(0xc420903c00, 0xc4208ff9b0, 0x0, 0x0, 0xc5135b, 0x7, 0xc4203506e0, 0x0, 0x1, 0x414c0e, ...)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/common/configtx/update.go:148 +0x28c
orderer.example.com       | github.com/hyperledger/fabric/common/configtx.(*configManager).verifyDeltaSet(0xc420903c00, 0xc4208fec60, 0xc420024960, 0x1, 0x1, 0x0, 0xc42094b0e0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/common/configtx/update.go:76 +0x20f
orderer.example.com       | github.com/hyperledger/fabric/common/configtx.(*configManager).authorizeUpdate(0xc420903c00, 0xc42098d500, 0x0, 0x0, 0xc1c2a0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/common/configtx/update.go:134 +0x4fc
orderer.example.com       | github.com/hyperledger/fabric/common/configtx.(*configManager).proposeConfigUpdate(0xc420903c00, 0xc42098d230, 0x0, 0x0, 0x126ed10)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/common/configtx/manager.go:181 +0x11c
orderer.example.com       | github.com/hyperledger/fabric/common/configtx.(*configManager).ProposeConfigUpdate(0xc420903c00, 0xc42098d230, 0xc42034ef80, 0x0, 0x0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/common/configtx/manager.go:172 +0x35
orderer.example.com       | github.com/hyperledger/fabric/orderer/multichain.(*chainSupport).ProposeConfigUpdate(0xc420225e50, 0xc42098d230, 0x124b480, 0xc420835908, 0x5a8870)
orderer.example.com       |     <autogenerated>:74 +0x59
orderer.example.com       | github.com/hyperledger/fabric/orderer/configupdate.(*Processor).existingChannelConfig(0xc420016180, 0xc42098d230, 0xc420912790, 0x9, 0x7f4e64d25868, 0xc420225e50, 0xc420010aa0, 0x5, 0x2)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/orderer/configupdate/configupdate.go:121 +0x45
orderer.example.com       | github.com/hyperledger/fabric/orderer/configupdate.(*Processor).Process(0xc420016180, 0xc42098d230, 0x0, 0x0, 0xc4209126d0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/orderer/configupdate/configupdate.go:113 +0x1ac
orderer.example.com       | main.(*broadcastSupport).Process(0xc420329f80, 0xc42098d230, 0x1b, 0x0, 0x0)
orderer.example.com       |     <autogenerated>:8 +0x54
orderer.example.com       | github.com/hyperledger/fabric/orderer/common/broadcast.(*handlerImpl).Handle(0xc42078d2e0, 0x1231fc0, 0xc420912550, 0x0, 0x0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/orderer/common/broadcast/broadcast.go:108 +0xa5d
orderer.example.com       | main.(*server).Broadcast(0xc420329fa0, 0x1231fc0, 0xc420912550, 0x0, 0x0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/orderer/server.go:81 +0xb9
orderer.example.com       | github.com/hyperledger/fabric/protos/orderer._AtomicBroadcast_Broadcast_Handler(0xb7afc0, 0xc420329fa0, 0x1231360, 0xc42022a990, 0x0, 0x0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/protos/orderer/ab.pb.go:543 +0xbb
orderer.example.com       | github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*Server).processStreamingRPC(0xc4201c7900, 0x1231c00, 0xc42031c160, 0xc42000ac00, 0xc420336690, 0x1215d40, 0xc42098d1d0, 0x0, 0x0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:907 +0xb49
orderer.example.com       | github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*Server).handleStream(0xc4201c7900, 0x1231c00, 0xc42031c160, 0xc42000ac00, 0xc42098d1d0)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:1001 +0xe8c
orderer.example.com       | github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*Server).serveStreams.func1.1(0xc42035a250, 0xc4201c7900, 0x1231c00, 0xc42031c160, 0xc42000ac00)
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:561 +0xab
orderer.example.com       | created by github.com/hyperledger/fabric/vendor/google.golang.org/grpc.(*Server).serveStreams.func1
orderer.example.com       |     /opt/gopath/src/github.com/hyperledger/fabric/vendor/google.golang.org/grpc/server.go:562 +0xa3
orderer.example.com       | 2017-09-06 10:16:04.966 UTC [orderer/main] func1 -> DEBU 8d8 Closing Broadcast stream
orderer.example.com       | 2017-09-06 10:16:04.972 UTC [orderer/common/deliver] Handle -> WARN 8d9 Error reading from stream: rpc error: code = Canceled desc = context canceled
orderer.example.com       | 2017-09-06 10:16:04.972 UTC [orderer/main] func1 -> DEBU 8da Closing Deliver stream

感谢您的建议。

从您的配置更新中,您正在尝试将
sampleassortium
的组设置为完全
Org3MSP

基于
channel\u id
mychannel
这一事实,我假设您正在尝试修改应用程序频道的成员资格,而不是订购系统频道的成员资格

标准应用程序频道没有顶级
联盟
组,而是有一个
应用程序
顶级组,因此此配置更新将无法实现您希望的效果。从

中考虑<代码>配置更新> JSON < /代码>的内容 请注意,现有组织仅作为
读取集
写入集
的一部分表示

我强烈建议您运行
reconfig_membership
示例,检查它在
example_output
目录中生成的工件,并将其用作正确构建配置更新的指南


这个配置更新触发(已处理)恐慌的事实很有趣。我将尝试复制并推送此行为的修复程序。

从配置更新中,您正在尝试将
SampleAssociations
的组设置为精确的
Org3MSP

基于
channel\u id
mychannel
这一事实,我假设您正在尝试修改应用程序频道的成员资格,而不是订购系统频道的成员资格

标准应用程序频道没有顶级
联盟
组,而是有一个
应用程序
顶级组,因此此配置更新将无法实现您希望的效果。从

中考虑<代码>配置更新> JSON < /代码>的内容 请注意,现有组织仅作为
读取集
写入集
的一部分表示

我强烈建议您运行
reconfig_membership
示例,检查它在
example_output
目录中生成的工件,并将其用作正确构建配置更新的指南

这个配置更新触发(已处理)恐慌的事实很有趣。我将尝试复制并推动此行为的修复

  "channel_id": "mychannel",
  "read_set": {
    "groups": {
      "Application": {
        "version": "1"
      },
      "Orderer": {}
    },
    "policies": {
      "Admins": {},
      "Readers": {},
      "Writers": {}
    },
    "values": {
      "BlockDataHashingStructure": {},
      "Consortium": {},
      "HashingAlgorithm": {},
      "OrdererAddresses": {}
    }
  },
  "write_set": {
    "groups": {
      "Application": {
        "version": "1"
      },
      "Consortiums": {
        "groups": {
          "SampleConsortium": {
            "groups": {
              "Org3MSP": {
                "values": {
                  "MSP": {
                    "value": {
                      "config": {
                        "name": "Org3MSP"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Orderer": {}
    },
    "policies": {
      "Admins": {},
      "Readers": {},
      "Writers": {}
    },
    "values": {
      "BlockDataHashingStructure": {},
      "Consortium": {},
      "HashingAlgorithm": {},
      "OrdererAddresses": {}
    },
    "version": "1"
  }
{
  "channel_id": "example",
  "read_set": {
    "groups": {
      "Application": {
        "groups": {
          "SampleOrg": {
            "mod_policy": "",
            "version": "0"
          }
        },
        "mod_policy": "",
        "policies": {
          "Admins": {
            "mod_policy": "",
            "version": "0"
          },
          "Readers": {
            "mod_policy": "",
            "version": "0"
          },
          "Writers": {
            "mod_policy": "",
            "version": "0"
          }
        },
        "version": "1"
      }
    },
    "mod_policy": "",
    "version": "0"
  },
  "type": 0,
  "write_set": {
    "groups": {
      "Application": {
        "groups": {
          "ExampleOrg": {
            "mod_policy": "Admins",
            "policies": {
              "Admins": {
                "mod_policy": "Admins",
                "policy": {
                  "type": 1,
                  "value": {
                    "identities": [
                      {
                        "principal": {
                          "msp_identifier": "DEFAULT",
                          "role": "MEMBER"
                        },
                        "principal_classification": "ROLE"
                      }
                    ],
                    "rule": {
                      "n_out_of": {
                        "n": 1,
                        "rules": [
                          {
                            "signed_by": 0
                          }
                        ]
                      }
                    },
                    "version": 0
                  }
                },
                "version": "0"
              },
              "Readers": {
                "mod_policy": "Admins",
                "policy": {
                  "type": 1,
                  "value": {
                    "identities": [
                      {
                        "principal": {
                          "msp_identifier": "DEFAULT",
                          "role": "MEMBER"
                        },
                        "principal_classification": "ROLE"
                      }
                    ],
                    "rule": {
                      "n_out_of": {
                        "n": 1,
                        "rules": [
                          {
                            "signed_by": 0
                          }
                        ]
                      }
                    },
                    "version": 0
                  }
                },
                "version": "0"
              },
              "Writers": {
                "mod_policy": "Admins",
                "policy": {
                  "type": 1,
                  "value": {
                    "identities": [
                      {
                        "principal": {
                          "msp_identifier": "DEFAULT",
                          "role": "MEMBER"
                        },
                        "principal_classification": "ROLE"
                      }
                    ],
                    "rule": {
                      "n_out_of": {
                        "n": 1,
                        "rules": [
                          {
                            "signed_by": 0
                          }
                        ]
                      }
                    },
                    "version": 0
                  }
                },
                "version": "0"
              }
            },
            "values": {
              "MSP": {
                "mod_policy": "Admins",
                "value": {
                  "config": {
                    "admins": [
                      "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNqRENDQWpLZ0F3SUJBZ0lVQkVWd3NTeDBUbXFkYnpOd2xlTkJCem9JVDB3d0NnWUlLb1pJemowRUF3SXcKZnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaApiaUJHY21GdVkybHpZMjh4SHpBZEJnTlZCQW9URmtsdWRHVnlibVYwSUZkcFpHZGxkSE1zSUVsdVl5NHhEREFLCkJnTlZCQXNUQTFkWFZ6RVVNQklHQTFVRUF4TUxaWGhoYlhCc1pTNWpiMjB3SGhjTk1UWXhNVEV4TVRjd056QXcKV2hjTk1UY3hNVEV4TVRjd056QXdXakJqTVFzd0NRWURWUVFHRXdKVlV6RVhNQlVHQTFVRUNCTU9UbTl5ZEdnZwpRMkZ5YjJ4cGJtRXhFREFPQmdOVkJBY1RCMUpoYkdWcFoyZ3hHekFaQmdOVkJBb1RFa2g1Y0dWeWJHVmtaMlZ5CklFWmhZbkpwWXpFTU1Bb0dBMVVFQ3hNRFEwOVFNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUKSEJ1S3NBTzQzaHM0SkdwRmZpR01rQi94c0lMVHNPdm1OMldtd3BzUEhaTkw2dzhIV2UzeENQUXRkRy9YSkp2WgorQzc1NktFc1VCTTN5dzVQVGZrdThxT0JwekNCcERBT0JnTlZIUThCQWY4RUJBTUNCYUF3SFFZRFZSMGxCQll3CkZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDTUFBd0hRWURWUjBPQkJZRUZPRkMKZGNVWjRlczNsdGlDZ0FWRG95TGZWcFBJTUI4R0ExVWRJd1FZTUJhQUZCZG5RajJxbm9JL3hNVWRuMXZEbWRHMQpuRWdRTUNVR0ExVWRFUVFlTUJ5Q0NtMTVhRzl6ZEM1amIyMkNEbmQzZHk1dGVXaHZjM1F1WTI5dE1Bb0dDQ3FHClNNNDlCQU1DQTBnQU1FVUNJRGY5SGJsNHhuM3o0RXdOS21pbE05bFgyRnE0aldwQWFSVkI5N09tVkVleUFpRUEKMjVhRFBRSEdHcTJBdmhLVDB3dnQwOGNYMUdUR0NJYmZtdUxwTXdLUWozOD0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="
                    ],
                    "crypto_config": {
                      "identity_identifier_hash_function": "SHA256",
                      "signature_hash_family": "SHA2"
                    },
                    "name": "ExampleOrg",
                    "organizational_unit_identifiers": [
                      {
                        "certificate": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNZakNDQWdtZ0F3SUJBZ0lVQjNDVERPVTQ3c1VDNUs0a24vQ2FxbmgxMTRZd0NnWUlLb1pJemowRUF3SXcKZnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaApiaUJHY21GdVkybHpZMjh4SHpBZEJnTlZCQW9URmtsdWRHVnlibVYwSUZkcFpHZGxkSE1zSUVsdVl5NHhEREFLCkJnTlZCQXNUQTFkWFZ6RVVNQklHQTFVRUF4TUxaWGhoYlhCc1pTNWpiMjB3SGhjTk1UWXhNREV5TVRrek1UQXcKV2hjTk1qRXhNREV4TVRrek1UQXdXakIvTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadgpjbTVwWVRFV01CUUdBMVVFQnhNTlUyRnVJRVp5WVc1amFYTmpiekVmTUIwR0ExVUVDaE1XU1c1MFpYSnVaWFFnClYybGtaMlYwY3l3Z1NXNWpMakVNTUFvR0ExVUVDeE1EVjFkWE1SUXdFZ1lEVlFRREV3dGxlR0Z0Y0d4bExtTnYKYlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQktJSDViMkphU21xaVFYSHlxQytjbWtuSUNjRgppNUFkZFZqc1FpekRWNnVaNHY2cytQV2lKeXpmQS9yVHRNdllBUHEveWVFSHBCVUIxajA1M214bnBNdWpZekJoCk1BNEdBMVVkRHdFQi93UUVBd0lCQmpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRWFowSTkKcXA2Q1A4VEZIWjlidzVuUnRaeElFREFmQmdOVkhTTUVHREFXZ0JRWFowSTlxcDZDUDhURkhaOWJ3NW5SdFp4SQpFREFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFIcDVSYnA5RW0xRy9VbUtuOFdzQ2JxRGZXZWNWYlpQUWozUks0Cm9HNWtRUUlnUUFlNE9PS1loSmRoM2Y3VVJhS2ZHVGY0OTIvbm1SbXRLK3lTS2pwSFNyVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=",
                        "organizational_unit_identifier": "COP"
                      }
                    ],
                    "root_certs": [
                      "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNZakNDQWdtZ0F3SUJBZ0lVQjNDVERPVTQ3c1VDNUs0a24vQ2FxbmgxMTRZd0NnWUlLb1pJemowRUF3SXcKZnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaApiaUJHY21GdVkybHpZMjh4SHpBZEJnTlZCQW9URmtsdWRHVnlibVYwSUZkcFpHZGxkSE1zSUVsdVl5NHhEREFLCkJnTlZCQXNUQTFkWFZ6RVVNQklHQTFVRUF4TUxaWGhoYlhCc1pTNWpiMjB3SGhjTk1UWXhNREV5TVRrek1UQXcKV2hjTk1qRXhNREV4TVRrek1UQXdXakIvTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadgpjbTVwWVRFV01CUUdBMVVFQnhNTlUyRnVJRVp5WVc1amFYTmpiekVmTUIwR0ExVUVDaE1XU1c1MFpYSnVaWFFnClYybGtaMlYwY3l3Z1NXNWpMakVNTUFvR0ExVUVDeE1EVjFkWE1SUXdFZ1lEVlFRREV3dGxlR0Z0Y0d4bExtTnYKYlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQktJSDViMkphU21xaVFYSHlxQytjbWtuSUNjRgppNUFkZFZqc1FpekRWNnVaNHY2cytQV2lKeXpmQS9yVHRNdllBUHEveWVFSHBCVUIxajA1M214bnBNdWpZekJoCk1BNEdBMVVkRHdFQi93UUVBd0lCQmpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRWFowSTkKcXA2Q1A4VEZIWjlidzVuUnRaeElFREFmQmdOVkhTTUVHREFXZ0JRWFowSTlxcDZDUDhURkhaOWJ3NW5SdFp4SQpFREFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFIcDVSYnA5RW0xRy9VbUtuOFdzQ2JxRGZXZWNWYlpQUWozUks0Cm9HNWtRUUlnUUFlNE9PS1loSmRoM2Y3VVJhS2ZHVGY0OTIvbm1SbXRLK3lTS2pwSFNyVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="
                    ],
                    "tls_root_certs": [
                      "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNZakNDQWdtZ0F3SUJBZ0lVQjNDVERPVTQ3c1VDNUs0a24vQ2FxbmgxMTRZd0NnWUlLb1pJemowRUF3SXcKZnpFTE1Ba0dBMVVFQmhNQ1ZWTXhFekFSQmdOVkJBZ1RDa05oYkdsbWIzSnVhV0V4RmpBVUJnTlZCQWNURFZOaApiaUJHY21GdVkybHpZMjh4SHpBZEJnTlZCQW9URmtsdWRHVnlibVYwSUZkcFpHZGxkSE1zSUVsdVl5NHhEREFLCkJnTlZCQXNUQTFkWFZ6RVVNQklHQTFVRUF4TUxaWGhoYlhCc1pTNWpiMjB3SGhjTk1UWXhNREV5TVRrek1UQXcKV2hjTk1qRXhNREV4TVRrek1UQXdXakIvTVFzd0NRWURWUVFHRXdKVlV6RVRNQkVHQTFVRUNCTUtRMkZzYVdadgpjbTVwWVRFV01CUUdBMVVFQnhNTlUyRnVJRVp5WVc1amFYTmpiekVmTUIwR0ExVUVDaE1XU1c1MFpYSnVaWFFnClYybGtaMlYwY3l3Z1NXNWpMakVNTUFvR0ExVUVDeE1EVjFkWE1SUXdFZ1lEVlFRREV3dGxlR0Z0Y0d4bExtTnYKYlRCWk1CTUdCeXFHU000OUFnRUdDQ3FHU000OUF3RUhBMElBQktJSDViMkphU21xaVFYSHlxQytjbWtuSUNjRgppNUFkZFZqc1FpekRWNnVaNHY2cytQV2lKeXpmQS9yVHRNdllBUHEveWVFSHBCVUIxajA1M214bnBNdWpZekJoCk1BNEdBMVVkRHdFQi93UUVBd0lCQmpBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUIwR0ExVWREZ1FXQkJRWFowSTkKcXA2Q1A4VEZIWjlidzVuUnRaeElFREFmQmdOVkhTTUVHREFXZ0JRWFowSTlxcDZDUDhURkhaOWJ3NW5SdFp4SQpFREFLQmdncWhrak9QUVFEQWdOSEFEQkVBaUFIcDVSYnA5RW0xRy9VbUtuOFdzQ2JxRGZXZWNWYlpQUWozUks0Cm9HNWtRUUlnUUFlNE9PS1loSmRoM2Y3VVJhS2ZHVGY0OTIvbm1SbXRLK3lTS2pwSFNyVT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo="
                    ]
                  },
                  "type": 0
                },
                "version": "0"
              }
            },
            "version": "0"
          },
          "SampleOrg": {
            "mod_policy": "",
            "version": "0"
          }
        },
        "mod_policy": "Admins",
        "policies": {
          "Admins": {
            "mod_policy": "",
            "version": "0"
          },
          "Readers": {
            "mod_policy": "",
            "version": "0"
          },
          "Writers": {
            "mod_policy": "",
            "version": "0"
          }
        },
        "version": "2"
      }
    },
    "mod_policy": "",
    "version": "0"
  }
}