Commit e78a46ce authored by harrylee's avatar harrylee

update broker

parent 6e5ca49f
Pipeline #8128 failed with stages
in 0 seconds
......@@ -22,6 +22,11 @@ type BrokerDB struct {
index int
}
var (
// DefaultManagerAddr 默认管理员地址
DefaultManagerAddr = "12qyocayNF7Lv6C9qW4avxs2E7U41fKSfv"
)
func newBrokerDB(b *broker, tx *types.Transaction, index int) *BrokerDB {
hash := tx.Hash()
fromaddr := tx.From()
......@@ -30,12 +35,12 @@ func newBrokerDB(b *broker, tx *types.Transaction, index int) *BrokerDB {
}
//GetKVSet ...
func (b *BrokerDB) GetMetaKVSet(req uint64,meta *brokertypes.Meta) (kvset []*types.KeyValue) {
if req == brokertypes.Req_Callback{
func (b *BrokerDB) GetMetaKVSet(req uint64, meta *brokertypes.Meta) (kvset []*types.KeyValue) {
if req == brokertypes.Req_Callback {
kvset = append(kvset, &types.KeyValue{Key: calCallBackMetaKey(), Value: types.Encode(meta)})
}else if req == brokertypes.Req_Inner {
} else if req == brokertypes.Req_Inner {
kvset = append(kvset, &types.KeyValue{Key: calInnerMetaKey(), Value: types.Encode(meta)})
}else if req == brokertypes.Req_DstRollback{
} else if req == brokertypes.Req_DstRollback {
kvset = append(kvset, &types.KeyValue{Key: calDstRollBackMetaKey(), Value: types.Encode(meta)})
}
return kvset
......@@ -43,14 +48,28 @@ func (b *BrokerDB) GetMetaKVSet(req uint64,meta *brokertypes.Meta) (kvset []*typ
//GetKVSet ...
func (b *BrokerDB) GetEventKVSet(event *brokertypes.InterchainEvent) (kvset []*types.KeyValue) {
kvset = append(kvset, &types.KeyValue{Key: calServicePair(event.GetSrcServiceID(),event.GetDstServiceID(),event.Index), Value: types.Encode(event)})
kvset = append(kvset, &types.KeyValue{Key: calServicePair(event.GetSrcServiceID(), event.GetDstServiceID(), event.Index), Value: types.Encode(event)})
return kvset
}
//初始化broker
func (b *BrokerDB) initBroker(payload *brokertypes.Init) (*types.Receipt, error) {
//权限检查且只能初始化一次
if b.fromaddr != getManagerAddr(b.api.GetConfig(), b.db, brokerAdmin, DefaultManagerAddr) {
return nil, fmt.Errorf("the addr %s is not admin", b.fromaddr)
}
receipt := &types.Receipt{Ty: types.ExecOk}
receipt.KV = append(receipt.KV, &types.KeyValue{Key: BxhIDKey(), Value: types.Encode(payload)})
receipt.Ty = brokertypes.TyInitLog
return receipt, nil
}
//其他执行器注册授权
func (b *BrokerDB) register(payload *brokertypes.Register) (*types.Receipt, error) {
return nil, nil
}
//管理员审批
func (b *BrokerDB) audit(payload *brokertypes.Audit) (*types.Receipt, error) {
......@@ -60,9 +79,9 @@ func (b *BrokerDB) audit(payload *brokertypes.Audit) (*types.Receipt, error) {
func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt, error) {
//FIXME 权限检查
receipt := &types.Receipt{Ty: types.ExecOk}
if payload.ReqType == brokertypes.Req_Inner{
meta,err:=getMeta(b.db,calInnerMetaKey())
if err !=nil {
if payload.ReqType == brokertypes.Req_Inner {
meta, err := getMeta(b.db, calInnerMetaKey())
if err != nil {
meta = &brokertypes.Meta{
Meta: make(map[string]uint64),
XXX_NoUnkeyedLiteral: struct{}{},
......@@ -70,19 +89,18 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
XXX_sizecache: 0,
}
}
idx :=meta.Meta[genServicePair(payload.SrcServiceID,payload.DstServiceID)]
idx := meta.Meta[genServicePair(payload.SrcServiceID, payload.DstServiceID)]
if payload.SequenceNum != idx+1 {
return nil , fmt.Errorf("incorrect index, expect %d", idx+1)
return nil, fmt.Errorf("incorrect index, expect %d", idx+1)
}
meta.Meta[genServicePair(payload.SrcServiceID,payload.DstServiceID)]=idx+1
kvset := b.GetMetaKVSet(payload.ReqType,meta)
kvset = append(kvset,&types.KeyValue{Key: inMsgKey(genServicePair(payload.SrcServiceID,payload.DstServiceID),idx+1), Value: types.Encode(payload.Response)})
receipt.KV =append(receipt.KV,kvset...)
meta.Meta[genServicePair(payload.SrcServiceID, payload.DstServiceID)] = idx + 1
kvset := b.GetMetaKVSet(payload.ReqType, meta)
kvset = append(kvset, &types.KeyValue{Key: inMsgKey(genServicePair(payload.SrcServiceID, payload.DstServiceID), idx+1), Value: types.Encode(payload.Response)})
receipt.KV = append(receipt.KV, kvset...)
}else if payload.ReqType == brokertypes.Req_Callback{
meta,err:=getMeta(b.db,calCallBackMetaKey())
if err !=nil {
} else if payload.ReqType == brokertypes.Req_Callback {
meta, err := getMeta(b.db, calCallBackMetaKey())
if err != nil {
meta = &brokertypes.Meta{
Meta: make(map[string]uint64),
XXX_NoUnkeyedLiteral: struct{}{},
......@@ -90,18 +108,18 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
XXX_sizecache: 0,
}
}
idx :=meta.Meta[genServicePair(payload.SrcServiceID,payload.DstServiceID)]
idx := meta.Meta[genServicePair(payload.SrcServiceID, payload.DstServiceID)]
if payload.SequenceNum != idx+1 {
return nil , fmt.Errorf("incorrect index, expect %d", idx+1)
return nil, fmt.Errorf("incorrect index, expect %d", idx+1)
}
meta.Meta[genServicePair(payload.SrcServiceID,payload.DstServiceID)]=idx+1
kvset := b.GetMetaKVSet(payload.ReqType,meta)
kvset = append(kvset,&types.KeyValue{Key: outMsgKey(genServicePair(payload.SrcServiceID,payload.DstServiceID),idx+1), Value: types.Encode(payload.Response)})
receipt.KV =append(receipt.KV,kvset...)
}else if payload.ReqType == brokertypes.Req_DstRollback{
//todo
meta,err:=getMeta(b.db,calDstRollBackMetaKey())
if err !=nil {
meta.Meta[genServicePair(payload.SrcServiceID, payload.DstServiceID)] = idx + 1
kvset := b.GetMetaKVSet(payload.ReqType, meta)
kvset = append(kvset, &types.KeyValue{Key: outMsgKey(genServicePair(payload.SrcServiceID, payload.DstServiceID), idx+1), Value: types.Encode(payload.Response)})
receipt.KV = append(receipt.KV, kvset...)
} else if payload.ReqType == brokertypes.Req_DstRollback {
//todo
meta, err := getMeta(b.db, calDstRollBackMetaKey())
if err != nil {
meta = &brokertypes.Meta{
Meta: make(map[string]uint64),
XXX_NoUnkeyedLiteral: struct{}{},
......@@ -109,13 +127,13 @@ func (b *BrokerDB) updateIndex(payload *brokertypes.UpdateIndex) (*types.Receipt
XXX_sizecache: 0,
}
}
idx :=meta.Meta[genServicePair(payload.SrcServiceID,payload.DstServiceID)]
idx := meta.Meta[genServicePair(payload.SrcServiceID, payload.DstServiceID)]
if payload.SequenceNum < idx+1 {
return nil , fmt.Errorf("incorrect dstrollback index, expect %d", idx+1)
return nil, fmt.Errorf("incorrect dstrollback index, expect %d", idx+1)
}
meta.Meta[genServicePair(payload.SrcServiceID,payload.DstServiceID)]=payload.SequenceNum
kvset := b.GetMetaKVSet(payload.ReqType,meta)
receipt.KV =append(receipt.KV,kvset...)
meta.Meta[genServicePair(payload.SrcServiceID, payload.DstServiceID)] = payload.SequenceNum
kvset := b.GetMetaKVSet(payload.ReqType, meta)
receipt.KV = append(receipt.KV, kvset...)
}
log := &brokertypes.ReceiptBrokerLog{Value: &brokertypes.ReceiptBrokerLog_UpdateIndex{payload}, Ty: brokertypes.TyEmitInterchainEventAction}
receiptlog := &types.ReceiptLog{Ty: brokertypes.TyUpdateIndexLog, Log: types.Encode(log)}
......@@ -142,17 +160,17 @@ func (b *BrokerDB) emitInterchainEvent(payload *brokertypes.InterchainEvent) (*t
XXX_sizecache: 0,
}
}
currServiceID,err := b.getCurrServiceID()
if err !=nil {
return nil,err
currServiceID, err := b.getCurrServiceID()
if err != nil {
return nil, err
}
payload.SrcServiceID=currServiceID
payload.SrcServiceID = currServiceID
//idx :=meta.Meta[genServicePair(currServiceID, payload.DstServiceID)]
meta.Meta[genServicePair(currServiceID, payload.DstServiceID)]++
kvset := &types.KeyValue{Key: calOutterMetaKey(), Value: types.Encode(meta)}
payload.Index=meta.Meta[genServicePair(currServiceID, payload.DstServiceID)]
receipt.KV=append(receipt.KV,kvset)
receipt.KV=append(receipt.KV,b.GetEventKVSet(payload)...)
payload.Index = meta.Meta[genServicePair(currServiceID, payload.DstServiceID)]
receipt.KV = append(receipt.KV, kvset)
receipt.KV = append(receipt.KV, b.GetEventKVSet(payload)...)
log := &brokertypes.ReceiptBrokerLog{Value: &brokertypes.ReceiptBrokerLog_EmitInterchainEvent{payload}, Ty: brokertypes.TyEmitInterchainEventAction}
receiptlog := &types.ReceiptLog{Ty: brokertypes.TyEmitInterchainEventLog, Log: types.Encode(log)}
......@@ -165,24 +183,35 @@ func (b *BrokerDB) emitInterchainEvent(payload *brokertypes.InterchainEvent) (*t
}
return receipt, nil
}
//获取当前链得ID
func (b *BrokerDB) getCurrServiceID()(string,error){
return b.genFullServiceID(b.api.GetConfig().GetTitle())
func (b *BrokerDB) getCurrServiceID() (string, error) {
return b.genFullServiceID(b.api.GetConfig().GetTitle())
}
func (b *BrokerDB) genFullServiceID(serviceId string) (string, error) {
//TODO 需要init方法,用于初始化bixhID和appChainID
bxhId, err := b.db.Get([]byte(KeyPrefixStateDB + bxhID))
data, err := b.db.Get(BxhIDKey())
if err != nil {
return "", err
}
appchainId, err := b.db.Get([]byte(KeyPrefixLocalDB + appchainID))
var info brokertypes.BrokerInfo
types.Decode(data, &info)
return fmt.Sprintf("%s:%s:%s", info.GetBxhId(), info.GetAppChainId(), serviceId), nil
}
//获取broker信息
func getBrokerInfo(statedb dbm.KV) (*brokertypes.BrokerInfo, error) {
//TODO 需要init方法,用于初始化bixhID和appChainID
data, err := statedb.Get(BxhIDKey())
if err != nil {
return "", err
return nil, err
}
return fmt.Sprintf("%s:%s:%s", bxhId, appchainId, serviceId), nil
var info brokertypes.BrokerInfo
types.Decode(data, &info)
return &info, nil
}
//去状态数据库中查询Event
func getEvent(statedb dbm.KV, key []byte) (*brokertypes.InterchainEvent, error) {
data, err := statedb.Get(key)
......@@ -230,46 +259,50 @@ func getMessage(statedb dbm.KV, key []byte) (*brokertypes.Response, error) {
}
return &resp, nil
}
//监听获取跨出事件列表
func pollInterEvent(statedb dbm.KV,meta *brokertypes.Meta)(*brokertypes.InterChainEventList,error){
outMeta,err := getMeta(statedb,calOutterMetaKey())
if err !=nil {
func pollInterEvent(statedb dbm.KV, meta *brokertypes.Meta) (*brokertypes.InterChainEventList, error) {
outMeta, err := getMeta(statedb, calOutterMetaKey())
if err != nil {
elog.Error("getMeta", "not found", "key:", calOutterMetaKey)
return nil, err
}
var eventList brokertypes.InterChainEventList
var eventList brokertypes.InterChainEventList
for method, idx := range outMeta.Meta {
startPos, ok := meta.Meta[method]
if !ok {
startPos = 0
}
for i := startPos + 1; i <= idx; i++ {
event, err := getEvent(statedb,calEventKey(method,i))
event, err := getEvent(statedb, calEventKey(method, i))
if err != nil {
elog.Error("get out event by key %s fail",calEventKey(method,i))
elog.Error("get out event by key %s fail", calEventKey(method, i))
continue
}
eventList.List=append(eventList.List,event)
eventList.List = append(eventList.List, event)
}
}
return &eventList,nil
return &eventList, nil
}
//获取outerMeta
func getOutterMeta(statedb dbm.KV)(*brokertypes.Meta,error){
return getMeta(statedb,calOutterMetaKey())
func getOutterMeta(statedb dbm.KV) (*brokertypes.Meta, error) {
return getMeta(statedb, calOutterMetaKey())
}
//获取innerMeta
func getInnerMeta(statedb dbm.KV)(*brokertypes.Meta,error){
return getMeta(statedb,calInnerMetaKey())
func getInnerMeta(statedb dbm.KV) (*brokertypes.Meta, error) {
return getMeta(statedb, calInnerMetaKey())
}
//获取message
func getInMessage(statedb dbm.KV,query *brokertypes.QueryInMessage)(*brokertypes.Response,error){
return getMessage(statedb,inMsgKey(query.InServicePair,query.SequenceNum))
func getInMessage(statedb dbm.KV, query *brokertypes.QueryInMessage) (*brokertypes.Response, error) {
return getMessage(statedb, inMsgKey(query.InServicePair, query.SequenceNum))
}
//获取message
func getOutMessage(statedb dbm.KV,query *brokertypes.QueryOutMessage)(*brokertypes.Response,error){
return getMessage(statedb,outMsgKey(query.InServicePair,query.SequenceNum))
func getOutMessage(statedb dbm.KV, query *brokertypes.QueryOutMessage) (*brokertypes.Response, error) {
return getMessage(statedb, outMsgKey(query.InServicePair, query.SequenceNum))
}
func getConfValue(cfg *types.Chain33Config, db dbm.KV, key string, defaultValue int64) int64 {
......@@ -341,4 +374,4 @@ func getConfigKey(key string, db dbm.KV) ([]byte, error) {
return nil, err
}
return value, nil
}
\ No newline at end of file
}
......@@ -10,9 +10,9 @@ import (
* 关键数据上链(statedb)并生成交易回执(log)
*/
func (b *broker) Exec_Init()(*types.Receipt, error){
return nil,nil
func (b *broker) Exec_Init(payload *brokertypes.Init,tx *types.Transaction, index int)(*types.Receipt, error){
db := newBrokerDB(b,tx,index)
return db.initBroker(payload)
}
func (b *broker) Exec_Register(payload *brokertypes.Register, tx *types.Transaction, index int) (*types.Receipt, error) {
......
......@@ -19,14 +19,18 @@ const (
callbackMeta = "callback-meta"
dstRollbackMeta = "dst-rollback-meta"
whiteList = "white-list"
adminList = "admin-list"
//adminList = "admin-list"
passed = "1"
rejected = "2"
delimiter = "&"
bxhID = "bxh-id"
appchainID = "appchain-id"
//appchainID = "appchain-id"
brokerAdmin = "broker-admin"
)
//跨链协议版本信息
func BxhIDKey()[]byte{
return []byte(KeyPrefixStateDB + bxhID)
}
//状态数据库中存储innermeta信息
func calInnerMetaKey() []byte {
key := fmt.Sprintf("%s"+":%s", KeyPrefixStateDB, innerMeta)
......
......@@ -3,24 +3,33 @@ package executor
import (
brokertypes "github.com/33cn/plugin/plugin/dapp/broker/types"
)
//获取innterMeta
func(b *broker) Query_QueryInnerMeta(query *brokertypes.QueryInnerMeta)(*brokertypes.Meta,error){
func (b *broker) Query_QueryInnerMeta(query *brokertypes.QueryInnerMeta) (*brokertypes.Meta, error) {
return getInnerMeta(b.GetStateDB())
}
//获取outterMeta
func(b *broker) Query_QueryOutterMeta(query *brokertypes.QueryOutterMeta)(*brokertypes.Meta,error){
func (b *broker) Query_QueryOutterMeta(query *brokertypes.QueryOutterMeta) (*brokertypes.Meta, error) {
return getOutterMeta(b.GetStateDB())
}
//获取inMessage
func(b *broker) Query_QueryInMessage(query *brokertypes.QueryInMessage)(*brokertypes.Response,error){
return getInMessage(b.GetStateDB(),query)
func (b *broker) Query_QueryInMessage(query *brokertypes.QueryInMessage) (*brokertypes.Response, error) {
return getInMessage(b.GetStateDB(), query)
}
//获取outMessage
func(b *broker) Query_QueryOutMessage(query *brokertypes.QueryOutMessage)(*brokertypes.Response,error){
return getOutMessage(b.GetStateDB(),query)
func (b *broker) Query_QueryOutMessage(query *brokertypes.QueryOutMessage) (*brokertypes.Response, error) {
return getOutMessage(b.GetStateDB(), query)
}
//获取监听列表
func(b *broker) Query_PollingEvent(query *brokertypes.PollingEvent)(*brokertypes.InterChainEventList,error){
return pollInterEvent(b.GetStateDB(),query.Meta)
}
\ No newline at end of file
func (b *broker) Query_PollingEvent(query *brokertypes.PollingEvent) (*brokertypes.InterChainEventList, error) {
return pollInterEvent(b.GetStateDB(), query.Meta)
}
//get bitxhub and chainID
func (b *broker) Query_GetBrokerInfo(query *brokertypes.QueryNilParam) (*brokertypes.BrokerInfo, error) {
return getBrokerInfo(b.GetStateDB())
}
......@@ -3,13 +3,23 @@ package types;
option go_package = "../types";
message BrokerAction {
oneof value {
Register register = 1;
Audit audit = 2;
InterchainEvent emitInterchainEvent = 3;
UpdateIndex updateIndex =4;
Init init =1;
Register register = 2;
Audit audit = 3;
InterchainEvent emitInterchainEvent = 4;
UpdateIndex updateIndex =5;
}
int32 ty = 5;
int32 ty = 6;
}
//broker初始化信息
message Init {
string bxhId = 1;
string appChainId = 2;
}
// 业务合约注册模型: 0表示正在审核,1表示审核通过,2表示审核失败
message Register {
//业务合约名称
......@@ -101,6 +111,10 @@ message InterChainEventList{
// repeated InterchainEvent list = 1;
// string primaryKey = 2;
//}
message QueryNilParam{
}
message QueryOutterMeta{
}
......@@ -119,6 +133,14 @@ message QueryOutMessage{
uint64 sequenceNum = 2;
}
message BrokerInfo {
//跨链协议版本ID
string bxhId =1;
//应用链ID
string appChainId = 2;
}
message Meta {
map<string,uint64> meta = 1;
}
......
......@@ -14,11 +14,13 @@ import (
// action类型id和name,这些常量可以自定义修改
const (
TyUnknowAction = iota + 100
TyInitAction
TyRegisterAction
TyAuditAction
TyUpdateIndexAction
TyEmitInterchainEventAction
NameInitAction = "Init"
NameRegisterAction = "Register"
NameAuditAction = "Audit"
NameUpdateIndexAction = "UpdateIndex"
......@@ -69,6 +71,7 @@ const (
// log类型id值
const (
TyUnknownLog = iota + 100
TyInitLog
TyRegisterLog
TyAuditLog
TyUpdateIndexLog
......@@ -80,6 +83,7 @@ var (
BrokerX = "broker"
//定义actionMap
actionMap = map[string]int32{
NameInitAction: TyInitAction,
NameRegisterAction: TyRegisterAction,
NameAuditAction: TyAuditAction,
NameUpdateIndexAction: TyUpdateIndexAction,
......
......@@ -24,12 +24,13 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
type BrokerAction struct {
// Types that are valid to be assigned to Value:
// *BrokerAction_Init
// *BrokerAction_Register
// *BrokerAction_Audit
// *BrokerAction_EmitInterchainEvent
// *BrokerAction_UpdateIndex
Value isBrokerAction_Value `protobuf_oneof:"value"`
Ty int32 `protobuf:"varint,5,opt,name=ty,proto3" json:"ty,omitempty"`
Ty int32 `protobuf:"varint,6,opt,name=ty,proto3" json:"ty,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
......@@ -64,22 +65,28 @@ type isBrokerAction_Value interface {
isBrokerAction_Value()
}
type BrokerAction_Init struct {
Init *Init `protobuf:"bytes,1,opt,name=init,proto3,oneof"`
}
type BrokerAction_Register struct {
Register *Register `protobuf:"bytes,1,opt,name=register,proto3,oneof"`
Register *Register `protobuf:"bytes,2,opt,name=register,proto3,oneof"`
}
type BrokerAction_Audit struct {
Audit *Audit `protobuf:"bytes,2,opt,name=audit,proto3,oneof"`
Audit *Audit `protobuf:"bytes,3,opt,name=audit,proto3,oneof"`
}
type BrokerAction_EmitInterchainEvent struct {
EmitInterchainEvent *InterchainEvent `protobuf:"bytes,3,opt,name=emitInterchainEvent,proto3,oneof"`
EmitInterchainEvent *InterchainEvent `protobuf:"bytes,4,opt,name=emitInterchainEvent,proto3,oneof"`
}
type BrokerAction_UpdateIndex struct {
UpdateIndex *UpdateIndex `protobuf:"bytes,4,opt,name=updateIndex,proto3,oneof"`
UpdateIndex *UpdateIndex `protobuf:"bytes,5,opt,name=updateIndex,proto3,oneof"`
}
func (*BrokerAction_Init) isBrokerAction_Value() {}
func (*BrokerAction_Register) isBrokerAction_Value() {}
func (*BrokerAction_Audit) isBrokerAction_Value() {}
......@@ -95,6 +102,13 @@ func (m *BrokerAction) GetValue() isBrokerAction_Value {
return nil
}
func (m *BrokerAction) GetInit() *Init {
if x, ok := m.GetValue().(*BrokerAction_Init); ok {
return x.Init
}
return nil
}
func (m *BrokerAction) GetRegister() *Register {
if x, ok := m.GetValue().(*BrokerAction_Register); ok {
return x.Register
......@@ -133,6 +147,7 @@ func (m *BrokerAction) GetTy() int32 {
// XXX_OneofWrappers is for the internal use of the proto package.
func (*BrokerAction) XXX_OneofWrappers() []interface{} {
return []interface{}{
(*BrokerAction_Init)(nil),
(*BrokerAction_Register)(nil),
(*BrokerAction_Audit)(nil),
(*BrokerAction_EmitInterchainEvent)(nil),
......@@ -140,6 +155,54 @@ func (*BrokerAction) XXX_OneofWrappers() []interface{} {
}
}
//broker初始化信息
type Init struct {
BxhId string `protobuf:"bytes,1,opt,name=bxhId,proto3" json:"bxhId,omitempty"`
AppChainId string `protobuf:"bytes,2,opt,name=appChainId,proto3" json:"appChainId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *Init) Reset() { *m = Init{} }
func (m *Init) String() string { return proto.CompactTextString(m) }
func (*Init) ProtoMessage() {}
func (*Init) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{1}
}
func (m *Init) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Init.Unmarshal(m, b)
}
func (m *Init) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_Init.Marshal(b, m, deterministic)
}
func (m *Init) XXX_Merge(src proto.Message) {
xxx_messageInfo_Init.Merge(m, src)
}
func (m *Init) XXX_Size() int {
return xxx_messageInfo_Init.Size(m)
}
func (m *Init) XXX_DiscardUnknown() {
xxx_messageInfo_Init.DiscardUnknown(m)
}
var xxx_messageInfo_Init proto.InternalMessageInfo
func (m *Init) GetBxhId() string {
if m != nil {
return m.BxhId
}
return ""
}
func (m *Init) GetAppChainId() string {
if m != nil {
return m.AppChainId
}
return ""
}
// 业务合约注册模型: 0表示正在审核,1表示审核通过,2表示审核失败
type Register struct {
//业务合约名称
......@@ -153,7 +216,7 @@ func (m *Register) Reset() { *m = Register{} }
func (m *Register) String() string { return proto.CompactTextString(m) }
func (*Register) ProtoMessage() {}
func (*Register) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{1}
return fileDescriptor_f209535e190f2bed, []int{2}
}
func (m *Register) XXX_Unmarshal(b []byte) error {
......@@ -196,7 +259,7 @@ func (m *Audit) Reset() { *m = Audit{} }
func (m *Audit) String() string { return proto.CompactTextString(m) }
func (*Audit) ProtoMessage() {}
func (*Audit) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{2}
return fileDescriptor_f209535e190f2bed, []int{3}
}
func (m *Audit) XXX_Unmarshal(b []byte) error {
......@@ -243,7 +306,7 @@ func (m *PollingEvent) Reset() { *m = PollingEvent{} }
func (m *PollingEvent) String() string { return proto.CompactTextString(m) }
func (*PollingEvent) ProtoMessage() {}
func (*PollingEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{3}
return fileDescriptor_f209535e190f2bed, []int{4}
}
func (m *PollingEvent) XXX_Unmarshal(b []byte) error {
......@@ -292,7 +355,7 @@ func (m *UpdateIndex) Reset() { *m = UpdateIndex{} }
func (m *UpdateIndex) String() string { return proto.CompactTextString(m) }
func (*UpdateIndex) ProtoMessage() {}
func (*UpdateIndex) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{4}
return fileDescriptor_f209535e190f2bed, []int{5}
}
func (m *UpdateIndex) XXX_Unmarshal(b []byte) error {
......@@ -373,7 +436,7 @@ func (m *InterchainEvent) Reset() { *m = InterchainEvent{} }
func (m *InterchainEvent) String() string { return proto.CompactTextString(m) }
func (*InterchainEvent) ProtoMessage() {}
func (*InterchainEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{5}
return fileDescriptor_f209535e190f2bed, []int{6}
}
func (m *InterchainEvent) XXX_Unmarshal(b []byte) error {
......@@ -461,7 +524,7 @@ func (m *ReceiptBrokerLog) Reset() { *m = ReceiptBrokerLog{} }
func (m *ReceiptBrokerLog) String() string { return proto.CompactTextString(m) }
func (*ReceiptBrokerLog) ProtoMessage() {}
func (*ReceiptBrokerLog) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{6}
return fileDescriptor_f209535e190f2bed, []int{7}
}
func (m *ReceiptBrokerLog) XXX_Unmarshal(b []byte) error {
......@@ -578,7 +641,7 @@ func (m *QueryInterchainEvent) Reset() { *m = QueryInterchainEvent{} }
func (m *QueryInterchainEvent) String() string { return proto.CompactTextString(m) }
func (*QueryInterchainEvent) ProtoMessage() {}
func (*QueryInterchainEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{7}
return fileDescriptor_f209535e190f2bed, []int{8}
}
func (m *QueryInterchainEvent) XXX_Unmarshal(b []byte) error {
......@@ -632,7 +695,7 @@ func (m *InterChainEventList) Reset() { *m = InterChainEventList{} }
func (m *InterChainEventList) String() string { return proto.CompactTextString(m) }
func (*InterChainEventList) ProtoMessage() {}
func (*InterChainEventList) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{8}
return fileDescriptor_f209535e190f2bed, []int{9}
}
func (m *InterChainEventList) XXX_Unmarshal(b []byte) error {
......@@ -660,22 +723,37 @@ func (m *InterChainEventList) GetList() []*InterchainEvent {
return nil
}
////根据状态查看跨链事件
//message QueryInterchainEventList {
// //事件状态必填(默认是0,只查询待处理状态的事件)
// int32 status = 1;
// // 主键索引
// string primaryKey = 2;
// //单页返回多少条记录,默认返回10条,为了系统安全最多单次只能返回20条
// int32 count = 3;
// // 0降序,1升序,默认降序
// int32 direction = 4;
//}
////跨链事件列表
//message InterchainEventList {
// repeated InterchainEvent list = 1;
// string primaryKey = 2;
//}
type QueryNilParam struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *QueryNilParam) Reset() { *m = QueryNilParam{} }
func (m *QueryNilParam) String() string { return proto.CompactTextString(m) }
func (*QueryNilParam) ProtoMessage() {}
func (*QueryNilParam) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{10}
}
func (m *QueryNilParam) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryNilParam.Unmarshal(m, b)
}
func (m *QueryNilParam) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_QueryNilParam.Marshal(b, m, deterministic)
}
func (m *QueryNilParam) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryNilParam.Merge(m, src)
}
func (m *QueryNilParam) XXX_Size() int {
return xxx_messageInfo_QueryNilParam.Size(m)
}
func (m *QueryNilParam) XXX_DiscardUnknown() {
xxx_messageInfo_QueryNilParam.DiscardUnknown(m)
}
var xxx_messageInfo_QueryNilParam proto.InternalMessageInfo
type QueryOutterMeta struct {
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
......@@ -686,7 +764,7 @@ func (m *QueryOutterMeta) Reset() { *m = QueryOutterMeta{} }
func (m *QueryOutterMeta) String() string { return proto.CompactTextString(m) }
func (*QueryOutterMeta) ProtoMessage() {}
func (*QueryOutterMeta) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{9}
return fileDescriptor_f209535e190f2bed, []int{11}
}
func (m *QueryOutterMeta) XXX_Unmarshal(b []byte) error {
......@@ -717,7 +795,7 @@ func (m *QueryInnerMeta) Reset() { *m = QueryInnerMeta{} }
func (m *QueryInnerMeta) String() string { return proto.CompactTextString(m) }
func (*QueryInnerMeta) ProtoMessage() {}
func (*QueryInnerMeta) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{10}
return fileDescriptor_f209535e190f2bed, []int{12}
}
func (m *QueryInnerMeta) XXX_Unmarshal(b []byte) error {
......@@ -750,7 +828,7 @@ func (m *QueryInMessage) Reset() { *m = QueryInMessage{} }
func (m *QueryInMessage) String() string { return proto.CompactTextString(m) }
func (*QueryInMessage) ProtoMessage() {}
func (*QueryInMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{11}
return fileDescriptor_f209535e190f2bed, []int{13}
}
func (m *QueryInMessage) XXX_Unmarshal(b []byte) error {
......@@ -797,7 +875,7 @@ func (m *QueryOutMessage) Reset() { *m = QueryOutMessage{} }
func (m *QueryOutMessage) String() string { return proto.CompactTextString(m) }
func (*QueryOutMessage) ProtoMessage() {}
func (*QueryOutMessage) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{12}
return fileDescriptor_f209535e190f2bed, []int{14}
}
func (m *QueryOutMessage) XXX_Unmarshal(b []byte) error {
......@@ -832,6 +910,55 @@ func (m *QueryOutMessage) GetSequenceNum() uint64 {
return 0
}
type BrokerInfo struct {
//跨链协议版本ID
BxhId string `protobuf:"bytes,1,opt,name=bxhId,proto3" json:"bxhId,omitempty"`
//应用链ID
AppChainId string `protobuf:"bytes,2,opt,name=appChainId,proto3" json:"appChainId,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *BrokerInfo) Reset() { *m = BrokerInfo{} }
func (m *BrokerInfo) String() string { return proto.CompactTextString(m) }
func (*BrokerInfo) ProtoMessage() {}
func (*BrokerInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{15}
}
func (m *BrokerInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_BrokerInfo.Unmarshal(m, b)
}
func (m *BrokerInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_BrokerInfo.Marshal(b, m, deterministic)
}
func (m *BrokerInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_BrokerInfo.Merge(m, src)
}
func (m *BrokerInfo) XXX_Size() int {
return xxx_messageInfo_BrokerInfo.Size(m)
}
func (m *BrokerInfo) XXX_DiscardUnknown() {
xxx_messageInfo_BrokerInfo.DiscardUnknown(m)
}
var xxx_messageInfo_BrokerInfo proto.InternalMessageInfo
func (m *BrokerInfo) GetBxhId() string {
if m != nil {
return m.BxhId
}
return ""
}
func (m *BrokerInfo) GetAppChainId() string {
if m != nil {
return m.AppChainId
}
return ""
}
type Meta struct {
Meta map[string]uint64 `protobuf:"bytes,1,rep,name=meta,proto3" json:"meta,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
......@@ -843,7 +970,7 @@ func (m *Meta) Reset() { *m = Meta{} }
func (m *Meta) String() string { return proto.CompactTextString(m) }
func (*Meta) ProtoMessage() {}
func (*Meta) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{13}
return fileDescriptor_f209535e190f2bed, []int{16}
}
func (m *Meta) XXX_Unmarshal(b []byte) error {
......@@ -887,7 +1014,7 @@ func (m *Response) Reset() { *m = Response{} }
func (m *Response) String() string { return proto.CompactTextString(m) }
func (*Response) ProtoMessage() {}
func (*Response) Descriptor() ([]byte, []int) {
return fileDescriptor_f209535e190f2bed, []int{14}
return fileDescriptor_f209535e190f2bed, []int{17}
}
func (m *Response) XXX_Unmarshal(b []byte) error {
......@@ -931,6 +1058,7 @@ func (m *Response) GetPayload() []byte {
func init() {
proto.RegisterType((*BrokerAction)(nil), "types.BrokerAction")
proto.RegisterType((*Init)(nil), "types.Init")
proto.RegisterType((*Register)(nil), "types.Register")
proto.RegisterType((*Audit)(nil), "types.Audit")
proto.RegisterType((*PollingEvent)(nil), "types.PollingEvent")
......@@ -939,10 +1067,12 @@ func init() {
proto.RegisterType((*ReceiptBrokerLog)(nil), "types.ReceiptBrokerLog")
proto.RegisterType((*QueryInterchainEvent)(nil), "types.QueryInterchainEvent")
proto.RegisterType((*InterChainEventList)(nil), "types.InterChainEventList")
proto.RegisterType((*QueryNilParam)(nil), "types.QueryNilParam")
proto.RegisterType((*QueryOutterMeta)(nil), "types.QueryOutterMeta")
proto.RegisterType((*QueryInnerMeta)(nil), "types.QueryInnerMeta")
proto.RegisterType((*QueryInMessage)(nil), "types.QueryInMessage")
proto.RegisterType((*QueryOutMessage)(nil), "types.QueryOutMessage")
proto.RegisterType((*BrokerInfo)(nil), "types.BrokerInfo")
proto.RegisterType((*Meta)(nil), "types.Meta")
proto.RegisterMapType((map[string]uint64)(nil), "types.Meta.MetaEntry")
proto.RegisterType((*Response)(nil), "types.Response")
......@@ -953,47 +1083,52 @@ func init() {
}
var fileDescriptor_f209535e190f2bed = []byte{
// 629 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x55, 0x4d, 0x6f, 0xd3, 0x4c,
0x10, 0x8e, 0x13, 0x3b, 0x4d, 0x26, 0x79, 0xdb, 0xbe, 0xdb, 0x52, 0x59, 0x5c, 0x88, 0xac, 0x1e,
0xca, 0x57, 0x2a, 0x15, 0x09, 0x10, 0xb7, 0x14, 0x2a, 0xa5, 0xa8, 0x2d, 0x65, 0xf9, 0x10, 0x70,
0xdb, 0x3a, 0x43, 0x58, 0x9a, 0xd8, 0xee, 0xee, 0xba, 0xaa, 0x6f, 0x1c, 0xf8, 0x5d, 0x5c, 0xf8,
0x63, 0x68, 0xc7, 0x9b, 0xc4, 0x2d, 0x20, 0x2e, 0x15, 0x17, 0x2e, 0xd6, 0xce, 0xb3, 0xcf, 0xee,
0x7c, 0xed, 0x33, 0x86, 0xee, 0x89, 0x4a, 0x4f, 0x51, 0xf5, 0x33, 0x95, 0x9a, 0x94, 0x05, 0xa6,
0xc8, 0x50, 0x47, 0x5f, 0xea, 0xd0, 0xdd, 0x25, 0x7c, 0x10, 0x1b, 0x99, 0x26, 0xec, 0x3e, 0xb4,
0x14, 0x8e, 0xa5, 0x36, 0xa8, 0x42, 0xaf, 0xe7, 0x6d, 0x75, 0x76, 0x56, 0xfa, 0x44, 0xed, 0x73,
0x07, 0x0f, 0x6b, 0x7c, 0x4e, 0x61, 0x9b, 0x10, 0x88, 0x7c, 0x24, 0x4d, 0x58, 0x27, 0x6e, 0xd7,
0x71, 0x07, 0x16, 0x1b, 0xd6, 0x78, 0xb9, 0xc9, 0x9e, 0xc3, 0x1a, 0x4e, 0xa5, 0xd9, 0x4f, 0x0c,
0xaa, 0xf8, 0x93, 0x90, 0xc9, 0xde, 0x39, 0x26, 0x26, 0x6c, 0xd0, 0x99, 0x0d, 0x77, 0xe6, 0xca,
0xee, 0xb0, 0xc6, 0x7f, 0x75, 0x88, 0x3d, 0x84, 0x4e, 0x9e, 0x8d, 0x84, 0xc1, 0xfd, 0x64, 0x84,
0x17, 0xa1, 0x4f, 0x77, 0x30, 0x77, 0xc7, 0x9b, 0xc5, 0xce, 0xb0, 0xc6, 0xab, 0x44, 0xb6, 0x0c,
0x75, 0x53, 0x84, 0x41, 0xcf, 0xdb, 0x0a, 0x78, 0xdd, 0x14, 0xbb, 0x4b, 0x10, 0x9c, 0x8b, 0x49,
0x8e, 0xd1, 0x3d, 0x68, 0xcd, 0x52, 0x63, 0x3d, 0xe8, 0xe0, 0x05, 0xc6, 0x26, 0x55, 0x47, 0x62,
0x8a, 0x54, 0x80, 0x36, 0xaf, 0x42, 0xd1, 0x00, 0x02, 0x4a, 0xee, 0xcf, 0x54, 0xb6, 0x01, 0x4d,
0x6d, 0x84, 0xc9, 0x35, 0x15, 0xa7, 0xcd, 0x9d, 0x15, 0x6d, 0x43, 0xf7, 0x38, 0x9d, 0x4c, 0x64,
0x32, 0x2e, 0x33, 0xba, 0x05, 0xfe, 0x14, 0x8d, 0x70, 0xe5, 0xee, 0xb8, 0x54, 0x0e, 0xd1, 0x08,
0x4e, 0x1b, 0xd1, 0x37, 0x0f, 0x3a, 0x95, 0xcc, 0xac, 0x6b, 0x8d, 0x67, 0x39, 0x26, 0x31, 0x1e,
0xe5, 0x53, 0x3a, 0xe7, 0xf3, 0x2a, 0xc4, 0x22, 0xe8, 0x8e, 0xb4, 0x79, 0x85, 0xea, 0x5c, 0xc6,
0xb8, 0xff, 0xcc, 0x05, 0x70, 0x09, 0xb3, 0x1c, 0xad, 0xe2, 0x05, 0xa7, 0x51, 0x72, 0xaa, 0x18,
0x0b, 0x61, 0x49, 0xe1, 0xd9, 0xeb, 0x22, 0x43, 0x2a, 0xb4, 0xcf, 0x67, 0x26, 0xbb, 0x6b, 0xdf,
0x89, 0xce, 0xd2, 0x44, 0x23, 0x15, 0xb5, 0xfa, 0x4e, 0x4a, 0x98, 0xcf, 0x09, 0xd1, 0x77, 0x0f,
0x56, 0xae, 0xf6, 0x71, 0x1d, 0x02, 0x49, 0x1d, 0x2c, 0xc3, 0x2f, 0x8d, 0x6b, 0x0b, 0x9c, 0x81,
0x6f, 0x16, 0x51, 0xd3, 0xda, 0x62, 0x1f, 0xf3, 0x24, 0xa6, 0x70, 0xdb, 0x9c, 0xd6, 0x16, 0x13,
0x6a, 0xac, 0xc3, 0x66, 0xaf, 0x61, 0x31, 0xbb, 0xae, 0xf4, 0x6d, 0x89, 0x5e, 0xcb, 0xac, 0x6f,
0x5f, 0xeb, 0xb0, 0xca, 0x31, 0x46, 0x99, 0x99, 0x52, 0x32, 0x07, 0xe9, 0xf8, 0x1f, 0xd4, 0x8b,
0x81, 0xf5, 0x97, 0x39, 0xaa, 0xe2, 0xaf, 0x36, 0x34, 0x1a, 0xc0, 0x1a, 0x39, 0x7c, 0x3a, 0x77,
0x78, 0x20, 0xb5, 0x61, 0x77, 0xc0, 0x9f, 0x48, 0x6d, 0x42, 0xaf, 0xd7, 0xf8, 0x7d, 0x69, 0x38,
0x71, 0xa2, 0xff, 0x61, 0x85, 0x02, 0x7f, 0x91, 0x1b, 0x83, 0xca, 0xea, 0x2b, 0x5a, 0x85, 0x65,
0x97, 0x4b, 0xe2, 0x90, 0x77, 0x73, 0xe4, 0x10, 0xb5, 0x16, 0x63, 0x64, 0x9b, 0xf0, 0x9f, 0x4c,
0x5c, 0x20, 0xc7, 0x42, 0x2a, 0x27, 0xf5, 0xcb, 0xe0, 0x55, 0x4d, 0xd6, 0x7f, 0xd2, 0x64, 0xf4,
0x7e, 0xe1, 0xfe, 0xba, 0xaf, 0xfe, 0x0c, 0xbe, 0x0d, 0x9e, 0xdd, 0x9e, 0x4f, 0x12, 0x5b, 0x8d,
0x1b, 0x95, 0x49, 0x42, 0x9f, 0xbd, 0xc4, 0xa8, 0xa2, 0x9c, 0x29, 0x37, 0x1f, 0x41, 0x7b, 0x0e,
0xb1, 0x55, 0x68, 0x9c, 0x62, 0xe1, 0xbc, 0xdb, 0xa5, 0x6d, 0x26, 0x75, 0xdb, 0x79, 0x2b, 0x8d,
0x27, 0xf5, 0xc7, 0x5e, 0xf4, 0xd6, 0x8e, 0xcb, 0x52, 0xd7, 0x15, 0xa5, 0x78, 0x55, 0xa5, 0xd8,
0xb1, 0x31, 0x2d, 0x53, 0x74, 0xfd, 0x9e, 0x99, 0x76, 0x27, 0x13, 0xc5, 0x24, 0x15, 0x23, 0xea,
0x72, 0x97, 0xcf, 0xcc, 0x9d, 0x16, 0x34, 0xcb, 0x1f, 0xd4, 0x2e, 0x7c, 0x68, 0xf5, 0xfb, 0xdb,
0x14, 0xfb, 0x49, 0x93, 0xfe, 0x56, 0x0f, 0x7e, 0x04, 0x00, 0x00, 0xff, 0xff, 0xc2, 0xf6, 0xd8,
0x9f, 0xbd, 0x06, 0x00, 0x00,
// 715 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x55, 0xcd, 0x6e, 0xd3, 0x40,
0x10, 0x8e, 0x1d, 0x3b, 0x4d, 0x26, 0x69, 0x53, 0xb6, 0xa5, 0xb2, 0x38, 0x40, 0xb0, 0x7a, 0x28,
0x7f, 0xa9, 0x54, 0x24, 0x40, 0x88, 0x4b, 0x52, 0x2a, 0x25, 0xa8, 0x2d, 0x65, 0xf9, 0x11, 0x70,
0xdb, 0x3a, 0xd3, 0x74, 0x69, 0x62, 0xbb, 0xeb, 0x75, 0x55, 0xdf, 0x79, 0x13, 0xde, 0x83, 0x0b,
0x2f, 0x86, 0x76, 0xbd, 0x49, 0x9c, 0x16, 0x84, 0x5a, 0x55, 0x5c, 0xa2, 0x9d, 0x6f, 0xbe, 0xdd,
0x99, 0xcc, 0xcc, 0x37, 0x86, 0xc6, 0xa1, 0x88, 0x4e, 0x50, 0xb4, 0x63, 0x11, 0xc9, 0x88, 0xb8,
0x32, 0x8b, 0x31, 0xf1, 0x7f, 0xd8, 0xd0, 0xe8, 0x6a, 0xbc, 0x13, 0x48, 0x1e, 0x85, 0xe4, 0x3e,
0x38, 0x3c, 0xe4, 0xd2, 0xb3, 0x5a, 0xd6, 0x46, 0x7d, 0xab, 0xde, 0xd6, 0xb4, 0x76, 0x3f, 0xe4,
0xb2, 0x57, 0xa2, 0xda, 0x45, 0x9e, 0x40, 0x55, 0xe0, 0x90, 0x27, 0x12, 0x85, 0x67, 0x6b, 0x5a,
0xd3, 0xd0, 0xa8, 0x81, 0x7b, 0x25, 0x3a, 0xa5, 0x90, 0x75, 0x70, 0x59, 0x3a, 0xe0, 0xd2, 0x2b,
0x6b, 0x6e, 0xc3, 0x70, 0x3b, 0x0a, 0xeb, 0x95, 0x68, 0xee, 0x24, 0x6f, 0x60, 0x05, 0xc7, 0x5c,
0xf6, 0x43, 0x89, 0x22, 0x38, 0x66, 0x3c, 0xdc, 0x39, 0xc3, 0x50, 0x7a, 0x8e, 0xbe, 0xb3, 0x36,
0x4d, 0x63, 0xce, 0xdb, 0x2b, 0xd1, 0x3f, 0x5d, 0x22, 0xcf, 0xa0, 0x9e, 0xc6, 0x03, 0x26, 0xb1,
0x1f, 0x0e, 0xf0, 0xdc, 0x73, 0xf5, 0x1b, 0xc4, 0xbc, 0xf1, 0x71, 0xe6, 0xe9, 0x95, 0x68, 0x91,
0x48, 0x96, 0xc0, 0x96, 0x99, 0x57, 0x69, 0x59, 0x1b, 0x2e, 0xb5, 0x65, 0xd6, 0x5d, 0x00, 0xf7,
0x8c, 0x8d, 0x52, 0xf4, 0x5f, 0x81, 0xa3, 0x2a, 0x40, 0x56, 0xc1, 0x3d, 0x3c, 0x3f, 0xee, 0x0f,
0x74, 0x75, 0x6a, 0x34, 0x37, 0xc8, 0x5d, 0x00, 0x16, 0xc7, 0xdb, 0x2a, 0x7e, 0x7f, 0xa0, 0x2b,
0x52, 0xa3, 0x05, 0xc4, 0x7f, 0x0c, 0xd5, 0x49, 0x61, 0x48, 0x0b, 0xea, 0x78, 0x8e, 0x81, 0x8c,
0xc4, 0x3e, 0x1b, 0xa3, 0x79, 0xa7, 0x08, 0xf9, 0x1d, 0x70, 0x75, 0x69, 0xfe, 0x4d, 0x25, 0x6b,
0x50, 0x49, 0x24, 0x93, 0x69, 0x62, 0x82, 0x1a, 0xcb, 0xdf, 0x84, 0xc6, 0x41, 0x34, 0x1a, 0xf1,
0x70, 0x98, 0xd7, 0xe3, 0x1e, 0x38, 0x63, 0x94, 0xec, 0x42, 0x4f, 0xf7, 0x50, 0x32, 0xaa, 0x1d,
0xfe, 0x4f, 0x0b, 0xea, 0x85, 0xba, 0xa8, 0xd0, 0x09, 0x9e, 0xa6, 0x18, 0x06, 0xb8, 0x9f, 0x8e,
0xf5, 0x3d, 0x87, 0x16, 0x21, 0xe2, 0x43, 0x63, 0x90, 0xc8, 0xf7, 0x28, 0xce, 0x78, 0x80, 0xfd,
0xd7, 0x26, 0x81, 0x39, 0x4c, 0x71, 0x12, 0x11, 0xcc, 0x38, 0xe5, 0x9c, 0x53, 0xc4, 0x88, 0x07,
0x0b, 0x02, 0x4f, 0x3f, 0x64, 0x31, 0xea, 0x56, 0x3b, 0x74, 0x62, 0x92, 0x47, 0x6a, 0xca, 0x92,
0x38, 0x0a, 0x13, 0x34, 0x1d, 0x9c, 0x4d, 0x59, 0x0e, 0xd3, 0x29, 0xc1, 0xff, 0x65, 0x41, 0xf3,
0xe2, 0x14, 0xac, 0x82, 0xcb, 0x75, 0xff, 0xf3, 0xf4, 0x73, 0xe3, 0xc6, 0x12, 0x27, 0xe0, 0xc8,
0x59, 0xd6, 0xfa, 0xac, 0xb0, 0xa3, 0x34, 0x0c, 0x74, 0xba, 0x35, 0xaa, 0xcf, 0x0a, 0x63, 0x62,
0x98, 0x78, 0x95, 0x56, 0x59, 0x61, 0xea, 0x5c, 0xe8, 0xdb, 0x82, 0x9e, 0xb5, 0x49, 0xdf, 0xbe,
0xdb, 0xb0, 0x4c, 0x31, 0x40, 0x1e, 0xcb, 0x5c, 0x93, 0xbb, 0xd1, 0x70, 0x4e, 0x6d, 0xd6, 0x15,
0xd4, 0x66, 0x5f, 0x43, 0x6d, 0xe5, 0x1b, 0x50, 0x9b, 0x73, 0x35, 0xb5, 0xb9, 0x97, 0xd5, 0x26,
0x61, 0xf5, 0x5d, 0x8a, 0x22, 0xfb, 0xaf, 0x0d, 0xf5, 0x3b, 0xb0, 0xa2, 0x03, 0x6e, 0x4f, 0x03,
0xee, 0xf2, 0x44, 0x92, 0x87, 0xe0, 0x8c, 0x78, 0xa2, 0xf6, 0x61, 0xf9, 0xef, 0xa5, 0xa1, 0x9a,
0xe3, 0x37, 0x61, 0x51, 0x27, 0xbe, 0xcf, 0x47, 0x07, 0x4c, 0xb0, 0xb1, 0x7f, 0x0b, 0x9a, 0x1a,
0x78, 0x9b, 0x4a, 0x89, 0x42, 0x09, 0xce, 0x5f, 0x86, 0x25, 0xf3, 0xe7, 0x42, 0x83, 0x7c, 0x9e,
0x22, 0x7b, 0x98, 0x24, 0x6c, 0x88, 0x64, 0x1d, 0x16, 0x79, 0x68, 0x32, 0x3b, 0x60, 0x5c, 0x18,
0xed, 0xcf, 0x83, 0x17, 0x45, 0x6a, 0x5f, 0x12, 0xa9, 0xff, 0x65, 0x16, 0xfe, 0xa6, 0x9f, 0xee,
0x02, 0xe4, 0x23, 0xda, 0x0f, 0x8f, 0xa2, 0x6b, 0xee, 0xc5, 0x6f, 0xe0, 0xa8, 0x02, 0x90, 0x07,
0xd3, 0xf5, 0xa4, 0x4a, 0x7c, 0xbb, 0xb0, 0x9e, 0xf4, 0xcf, 0x4e, 0x28, 0x45, 0x96, 0x2f, 0xaa,
0x3b, 0xcf, 0xa1, 0x36, 0x85, 0xc8, 0x32, 0x94, 0x4f, 0x30, 0x33, 0x31, 0xd5, 0x51, 0xe5, 0xa1,
0x47, 0xc8, 0x64, 0x9c, 0x1b, 0x2f, 0xed, 0x17, 0x96, 0xff, 0x49, 0xed, 0xe0, 0x7c, 0x59, 0x14,
0xe4, 0x67, 0x15, 0xe5, 0xa7, 0x76, 0xd1, 0x38, 0x2f, 0x93, 0x49, 0x76, 0x62, 0x2a, 0x4f, 0xcc,
0xb2, 0x51, 0xc4, 0x06, 0x7a, 0x74, 0x1a, 0x74, 0x62, 0x6e, 0x55, 0xa1, 0x92, 0x7f, 0x56, 0xbb,
0xf0, 0xb5, 0xda, 0x6e, 0x6f, 0xea, 0xdc, 0x0f, 0x2b, 0xfa, 0x1b, 0xfb, 0xf4, 0x77, 0x00, 0x00,
0x00, 0xff, 0xff, 0x7a, 0x60, 0xf5, 0x80, 0x73, 0x07, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment