github.com/kchristidis/fabric@v1.0.4-0.20171028114726-837acd08cde1/protos/peer/events.pb.go (about)

     1  // Code generated by protoc-gen-go. DO NOT EDIT.
     2  // source: peer/events.proto
     3  
     4  package peer
     5  
     6  import proto "github.com/golang/protobuf/proto"
     7  import fmt "fmt"
     8  import math "math"
     9  import common "github.com/hyperledger/fabric/protos/common"
    10  
    11  import (
    12  	context "golang.org/x/net/context"
    13  	grpc "google.golang.org/grpc"
    14  )
    15  
    16  // Reference imports to suppress errors if they are not otherwise used.
    17  var _ = proto.Marshal
    18  var _ = fmt.Errorf
    19  var _ = math.Inf
    20  
    21  type EventType int32
    22  
    23  const (
    24  	EventType_REGISTER  EventType = 0
    25  	EventType_BLOCK     EventType = 1
    26  	EventType_CHAINCODE EventType = 2
    27  	EventType_REJECTION EventType = 3
    28  )
    29  
    30  var EventType_name = map[int32]string{
    31  	0: "REGISTER",
    32  	1: "BLOCK",
    33  	2: "CHAINCODE",
    34  	3: "REJECTION",
    35  }
    36  var EventType_value = map[string]int32{
    37  	"REGISTER":  0,
    38  	"BLOCK":     1,
    39  	"CHAINCODE": 2,
    40  	"REJECTION": 3,
    41  }
    42  
    43  func (x EventType) String() string {
    44  	return proto.EnumName(EventType_name, int32(x))
    45  }
    46  func (EventType) EnumDescriptor() ([]byte, []int) { return fileDescriptor5, []int{0} }
    47  
    48  // ChaincodeReg is used for registering chaincode Interests
    49  // when EventType is CHAINCODE
    50  type ChaincodeReg struct {
    51  	ChaincodeId string `protobuf:"bytes,1,opt,name=chaincode_id,json=chaincodeId" json:"chaincode_id,omitempty"`
    52  	EventName   string `protobuf:"bytes,2,opt,name=event_name,json=eventName" json:"event_name,omitempty"`
    53  }
    54  
    55  func (m *ChaincodeReg) Reset()                    { *m = ChaincodeReg{} }
    56  func (m *ChaincodeReg) String() string            { return proto.CompactTextString(m) }
    57  func (*ChaincodeReg) ProtoMessage()               {}
    58  func (*ChaincodeReg) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{0} }
    59  
    60  func (m *ChaincodeReg) GetChaincodeId() string {
    61  	if m != nil {
    62  		return m.ChaincodeId
    63  	}
    64  	return ""
    65  }
    66  
    67  func (m *ChaincodeReg) GetEventName() string {
    68  	if m != nil {
    69  		return m.EventName
    70  	}
    71  	return ""
    72  }
    73  
    74  type Interest struct {
    75  	EventType EventType `protobuf:"varint,1,opt,name=event_type,json=eventType,enum=protos.EventType" json:"event_type,omitempty"`
    76  	// Ideally we should just have the following oneof for different
    77  	// Reg types and get rid of EventType. But this is an API change
    78  	// Additional Reg types may add messages specific to their type
    79  	// to the oneof.
    80  	//
    81  	// Types that are valid to be assigned to RegInfo:
    82  	//	*Interest_ChaincodeRegInfo
    83  	RegInfo isInterest_RegInfo `protobuf_oneof:"RegInfo"`
    84  	ChainID string             `protobuf:"bytes,3,opt,name=chainID" json:"chainID,omitempty"`
    85  }
    86  
    87  func (m *Interest) Reset()                    { *m = Interest{} }
    88  func (m *Interest) String() string            { return proto.CompactTextString(m) }
    89  func (*Interest) ProtoMessage()               {}
    90  func (*Interest) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{1} }
    91  
    92  type isInterest_RegInfo interface {
    93  	isInterest_RegInfo()
    94  }
    95  
    96  type Interest_ChaincodeRegInfo struct {
    97  	ChaincodeRegInfo *ChaincodeReg `protobuf:"bytes,2,opt,name=chaincode_reg_info,json=chaincodeRegInfo,oneof"`
    98  }
    99  
   100  func (*Interest_ChaincodeRegInfo) isInterest_RegInfo() {}
   101  
   102  func (m *Interest) GetRegInfo() isInterest_RegInfo {
   103  	if m != nil {
   104  		return m.RegInfo
   105  	}
   106  	return nil
   107  }
   108  
   109  func (m *Interest) GetEventType() EventType {
   110  	if m != nil {
   111  		return m.EventType
   112  	}
   113  	return EventType_REGISTER
   114  }
   115  
   116  func (m *Interest) GetChaincodeRegInfo() *ChaincodeReg {
   117  	if x, ok := m.GetRegInfo().(*Interest_ChaincodeRegInfo); ok {
   118  		return x.ChaincodeRegInfo
   119  	}
   120  	return nil
   121  }
   122  
   123  func (m *Interest) GetChainID() string {
   124  	if m != nil {
   125  		return m.ChainID
   126  	}
   127  	return ""
   128  }
   129  
   130  // XXX_OneofFuncs is for the internal use of the proto package.
   131  func (*Interest) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
   132  	return _Interest_OneofMarshaler, _Interest_OneofUnmarshaler, _Interest_OneofSizer, []interface{}{
   133  		(*Interest_ChaincodeRegInfo)(nil),
   134  	}
   135  }
   136  
   137  func _Interest_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
   138  	m := msg.(*Interest)
   139  	// RegInfo
   140  	switch x := m.RegInfo.(type) {
   141  	case *Interest_ChaincodeRegInfo:
   142  		b.EncodeVarint(2<<3 | proto.WireBytes)
   143  		if err := b.EncodeMessage(x.ChaincodeRegInfo); err != nil {
   144  			return err
   145  		}
   146  	case nil:
   147  	default:
   148  		return fmt.Errorf("Interest.RegInfo has unexpected type %T", x)
   149  	}
   150  	return nil
   151  }
   152  
   153  func _Interest_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
   154  	m := msg.(*Interest)
   155  	switch tag {
   156  	case 2: // RegInfo.chaincode_reg_info
   157  		if wire != proto.WireBytes {
   158  			return true, proto.ErrInternalBadWireType
   159  		}
   160  		msg := new(ChaincodeReg)
   161  		err := b.DecodeMessage(msg)
   162  		m.RegInfo = &Interest_ChaincodeRegInfo{msg}
   163  		return true, err
   164  	default:
   165  		return false, nil
   166  	}
   167  }
   168  
   169  func _Interest_OneofSizer(msg proto.Message) (n int) {
   170  	m := msg.(*Interest)
   171  	// RegInfo
   172  	switch x := m.RegInfo.(type) {
   173  	case *Interest_ChaincodeRegInfo:
   174  		s := proto.Size(x.ChaincodeRegInfo)
   175  		n += proto.SizeVarint(2<<3 | proto.WireBytes)
   176  		n += proto.SizeVarint(uint64(s))
   177  		n += s
   178  	case nil:
   179  	default:
   180  		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
   181  	}
   182  	return n
   183  }
   184  
   185  // ---------- consumer events ---------
   186  // Register is sent by consumers for registering events
   187  // string type - "register"
   188  type Register struct {
   189  	Events []*Interest `protobuf:"bytes,1,rep,name=events" json:"events,omitempty"`
   190  }
   191  
   192  func (m *Register) Reset()                    { *m = Register{} }
   193  func (m *Register) String() string            { return proto.CompactTextString(m) }
   194  func (*Register) ProtoMessage()               {}
   195  func (*Register) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{2} }
   196  
   197  func (m *Register) GetEvents() []*Interest {
   198  	if m != nil {
   199  		return m.Events
   200  	}
   201  	return nil
   202  }
   203  
   204  // Rejection is sent by consumers for erroneous transaction rejection events
   205  // string type - "rejection"
   206  type Rejection struct {
   207  	Tx       *Transaction `protobuf:"bytes,1,opt,name=tx" json:"tx,omitempty"`
   208  	ErrorMsg string       `protobuf:"bytes,2,opt,name=error_msg,json=errorMsg" json:"error_msg,omitempty"`
   209  }
   210  
   211  func (m *Rejection) Reset()                    { *m = Rejection{} }
   212  func (m *Rejection) String() string            { return proto.CompactTextString(m) }
   213  func (*Rejection) ProtoMessage()               {}
   214  func (*Rejection) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{3} }
   215  
   216  func (m *Rejection) GetTx() *Transaction {
   217  	if m != nil {
   218  		return m.Tx
   219  	}
   220  	return nil
   221  }
   222  
   223  func (m *Rejection) GetErrorMsg() string {
   224  	if m != nil {
   225  		return m.ErrorMsg
   226  	}
   227  	return ""
   228  }
   229  
   230  // ---------- producer events ---------
   231  type Unregister struct {
   232  	Events []*Interest `protobuf:"bytes,1,rep,name=events" json:"events,omitempty"`
   233  }
   234  
   235  func (m *Unregister) Reset()                    { *m = Unregister{} }
   236  func (m *Unregister) String() string            { return proto.CompactTextString(m) }
   237  func (*Unregister) ProtoMessage()               {}
   238  func (*Unregister) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{4} }
   239  
   240  func (m *Unregister) GetEvents() []*Interest {
   241  	if m != nil {
   242  		return m.Events
   243  	}
   244  	return nil
   245  }
   246  
   247  // SignedEvent is used for any communication between consumer and producer
   248  type SignedEvent struct {
   249  	// Signature over the event bytes
   250  	Signature []byte `protobuf:"bytes,1,opt,name=signature,proto3" json:"signature,omitempty"`
   251  	// Marshal of Event object
   252  	EventBytes []byte `protobuf:"bytes,2,opt,name=eventBytes,proto3" json:"eventBytes,omitempty"`
   253  }
   254  
   255  func (m *SignedEvent) Reset()                    { *m = SignedEvent{} }
   256  func (m *SignedEvent) String() string            { return proto.CompactTextString(m) }
   257  func (*SignedEvent) ProtoMessage()               {}
   258  func (*SignedEvent) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{5} }
   259  
   260  func (m *SignedEvent) GetSignature() []byte {
   261  	if m != nil {
   262  		return m.Signature
   263  	}
   264  	return nil
   265  }
   266  
   267  func (m *SignedEvent) GetEventBytes() []byte {
   268  	if m != nil {
   269  		return m.EventBytes
   270  	}
   271  	return nil
   272  }
   273  
   274  // Event is used by
   275  //  - consumers (adapters) to send Register
   276  //  - producer to advertise supported types and events
   277  type Event struct {
   278  	// Types that are valid to be assigned to Event:
   279  	//	*Event_Register
   280  	//	*Event_Block
   281  	//	*Event_ChaincodeEvent
   282  	//	*Event_Rejection
   283  	//	*Event_Unregister
   284  	Event isEvent_Event `protobuf_oneof:"Event"`
   285  	// Creator of the event, specified as a certificate chain
   286  	Creator []byte `protobuf:"bytes,6,opt,name=creator,proto3" json:"creator,omitempty"`
   287  }
   288  
   289  func (m *Event) Reset()                    { *m = Event{} }
   290  func (m *Event) String() string            { return proto.CompactTextString(m) }
   291  func (*Event) ProtoMessage()               {}
   292  func (*Event) Descriptor() ([]byte, []int) { return fileDescriptor5, []int{6} }
   293  
   294  type isEvent_Event interface {
   295  	isEvent_Event()
   296  }
   297  
   298  type Event_Register struct {
   299  	Register *Register `protobuf:"bytes,1,opt,name=register,oneof"`
   300  }
   301  type Event_Block struct {
   302  	Block *common.Block `protobuf:"bytes,2,opt,name=block,oneof"`
   303  }
   304  type Event_ChaincodeEvent struct {
   305  	ChaincodeEvent *ChaincodeEvent `protobuf:"bytes,3,opt,name=chaincode_event,json=chaincodeEvent,oneof"`
   306  }
   307  type Event_Rejection struct {
   308  	Rejection *Rejection `protobuf:"bytes,4,opt,name=rejection,oneof"`
   309  }
   310  type Event_Unregister struct {
   311  	Unregister *Unregister `protobuf:"bytes,5,opt,name=unregister,oneof"`
   312  }
   313  
   314  func (*Event_Register) isEvent_Event()       {}
   315  func (*Event_Block) isEvent_Event()          {}
   316  func (*Event_ChaincodeEvent) isEvent_Event() {}
   317  func (*Event_Rejection) isEvent_Event()      {}
   318  func (*Event_Unregister) isEvent_Event()     {}
   319  
   320  func (m *Event) GetEvent() isEvent_Event {
   321  	if m != nil {
   322  		return m.Event
   323  	}
   324  	return nil
   325  }
   326  
   327  func (m *Event) GetRegister() *Register {
   328  	if x, ok := m.GetEvent().(*Event_Register); ok {
   329  		return x.Register
   330  	}
   331  	return nil
   332  }
   333  
   334  func (m *Event) GetBlock() *common.Block {
   335  	if x, ok := m.GetEvent().(*Event_Block); ok {
   336  		return x.Block
   337  	}
   338  	return nil
   339  }
   340  
   341  func (m *Event) GetChaincodeEvent() *ChaincodeEvent {
   342  	if x, ok := m.GetEvent().(*Event_ChaincodeEvent); ok {
   343  		return x.ChaincodeEvent
   344  	}
   345  	return nil
   346  }
   347  
   348  func (m *Event) GetRejection() *Rejection {
   349  	if x, ok := m.GetEvent().(*Event_Rejection); ok {
   350  		return x.Rejection
   351  	}
   352  	return nil
   353  }
   354  
   355  func (m *Event) GetUnregister() *Unregister {
   356  	if x, ok := m.GetEvent().(*Event_Unregister); ok {
   357  		return x.Unregister
   358  	}
   359  	return nil
   360  }
   361  
   362  func (m *Event) GetCreator() []byte {
   363  	if m != nil {
   364  		return m.Creator
   365  	}
   366  	return nil
   367  }
   368  
   369  // XXX_OneofFuncs is for the internal use of the proto package.
   370  func (*Event) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
   371  	return _Event_OneofMarshaler, _Event_OneofUnmarshaler, _Event_OneofSizer, []interface{}{
   372  		(*Event_Register)(nil),
   373  		(*Event_Block)(nil),
   374  		(*Event_ChaincodeEvent)(nil),
   375  		(*Event_Rejection)(nil),
   376  		(*Event_Unregister)(nil),
   377  	}
   378  }
   379  
   380  func _Event_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
   381  	m := msg.(*Event)
   382  	// Event
   383  	switch x := m.Event.(type) {
   384  	case *Event_Register:
   385  		b.EncodeVarint(1<<3 | proto.WireBytes)
   386  		if err := b.EncodeMessage(x.Register); err != nil {
   387  			return err
   388  		}
   389  	case *Event_Block:
   390  		b.EncodeVarint(2<<3 | proto.WireBytes)
   391  		if err := b.EncodeMessage(x.Block); err != nil {
   392  			return err
   393  		}
   394  	case *Event_ChaincodeEvent:
   395  		b.EncodeVarint(3<<3 | proto.WireBytes)
   396  		if err := b.EncodeMessage(x.ChaincodeEvent); err != nil {
   397  			return err
   398  		}
   399  	case *Event_Rejection:
   400  		b.EncodeVarint(4<<3 | proto.WireBytes)
   401  		if err := b.EncodeMessage(x.Rejection); err != nil {
   402  			return err
   403  		}
   404  	case *Event_Unregister:
   405  		b.EncodeVarint(5<<3 | proto.WireBytes)
   406  		if err := b.EncodeMessage(x.Unregister); err != nil {
   407  			return err
   408  		}
   409  	case nil:
   410  	default:
   411  		return fmt.Errorf("Event.Event has unexpected type %T", x)
   412  	}
   413  	return nil
   414  }
   415  
   416  func _Event_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
   417  	m := msg.(*Event)
   418  	switch tag {
   419  	case 1: // Event.register
   420  		if wire != proto.WireBytes {
   421  			return true, proto.ErrInternalBadWireType
   422  		}
   423  		msg := new(Register)
   424  		err := b.DecodeMessage(msg)
   425  		m.Event = &Event_Register{msg}
   426  		return true, err
   427  	case 2: // Event.block
   428  		if wire != proto.WireBytes {
   429  			return true, proto.ErrInternalBadWireType
   430  		}
   431  		msg := new(common.Block)
   432  		err := b.DecodeMessage(msg)
   433  		m.Event = &Event_Block{msg}
   434  		return true, err
   435  	case 3: // Event.chaincode_event
   436  		if wire != proto.WireBytes {
   437  			return true, proto.ErrInternalBadWireType
   438  		}
   439  		msg := new(ChaincodeEvent)
   440  		err := b.DecodeMessage(msg)
   441  		m.Event = &Event_ChaincodeEvent{msg}
   442  		return true, err
   443  	case 4: // Event.rejection
   444  		if wire != proto.WireBytes {
   445  			return true, proto.ErrInternalBadWireType
   446  		}
   447  		msg := new(Rejection)
   448  		err := b.DecodeMessage(msg)
   449  		m.Event = &Event_Rejection{msg}
   450  		return true, err
   451  	case 5: // Event.unregister
   452  		if wire != proto.WireBytes {
   453  			return true, proto.ErrInternalBadWireType
   454  		}
   455  		msg := new(Unregister)
   456  		err := b.DecodeMessage(msg)
   457  		m.Event = &Event_Unregister{msg}
   458  		return true, err
   459  	default:
   460  		return false, nil
   461  	}
   462  }
   463  
   464  func _Event_OneofSizer(msg proto.Message) (n int) {
   465  	m := msg.(*Event)
   466  	// Event
   467  	switch x := m.Event.(type) {
   468  	case *Event_Register:
   469  		s := proto.Size(x.Register)
   470  		n += proto.SizeVarint(1<<3 | proto.WireBytes)
   471  		n += proto.SizeVarint(uint64(s))
   472  		n += s
   473  	case *Event_Block:
   474  		s := proto.Size(x.Block)
   475  		n += proto.SizeVarint(2<<3 | proto.WireBytes)
   476  		n += proto.SizeVarint(uint64(s))
   477  		n += s
   478  	case *Event_ChaincodeEvent:
   479  		s := proto.Size(x.ChaincodeEvent)
   480  		n += proto.SizeVarint(3<<3 | proto.WireBytes)
   481  		n += proto.SizeVarint(uint64(s))
   482  		n += s
   483  	case *Event_Rejection:
   484  		s := proto.Size(x.Rejection)
   485  		n += proto.SizeVarint(4<<3 | proto.WireBytes)
   486  		n += proto.SizeVarint(uint64(s))
   487  		n += s
   488  	case *Event_Unregister:
   489  		s := proto.Size(x.Unregister)
   490  		n += proto.SizeVarint(5<<3 | proto.WireBytes)
   491  		n += proto.SizeVarint(uint64(s))
   492  		n += s
   493  	case nil:
   494  	default:
   495  		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
   496  	}
   497  	return n
   498  }
   499  
   500  func init() {
   501  	proto.RegisterType((*ChaincodeReg)(nil), "protos.ChaincodeReg")
   502  	proto.RegisterType((*Interest)(nil), "protos.Interest")
   503  	proto.RegisterType((*Register)(nil), "protos.Register")
   504  	proto.RegisterType((*Rejection)(nil), "protos.Rejection")
   505  	proto.RegisterType((*Unregister)(nil), "protos.Unregister")
   506  	proto.RegisterType((*SignedEvent)(nil), "protos.SignedEvent")
   507  	proto.RegisterType((*Event)(nil), "protos.Event")
   508  	proto.RegisterEnum("protos.EventType", EventType_name, EventType_value)
   509  }
   510  
   511  // Reference imports to suppress errors if they are not otherwise used.
   512  var _ context.Context
   513  var _ grpc.ClientConn
   514  
   515  // This is a compile-time assertion to ensure that this generated file
   516  // is compatible with the grpc package it is being compiled against.
   517  const _ = grpc.SupportPackageIsVersion4
   518  
   519  // Client API for Events service
   520  
   521  type EventsClient interface {
   522  	// event chatting using Event
   523  	Chat(ctx context.Context, opts ...grpc.CallOption) (Events_ChatClient, error)
   524  }
   525  
   526  type eventsClient struct {
   527  	cc *grpc.ClientConn
   528  }
   529  
   530  func NewEventsClient(cc *grpc.ClientConn) EventsClient {
   531  	return &eventsClient{cc}
   532  }
   533  
   534  func (c *eventsClient) Chat(ctx context.Context, opts ...grpc.CallOption) (Events_ChatClient, error) {
   535  	stream, err := grpc.NewClientStream(ctx, &_Events_serviceDesc.Streams[0], c.cc, "/protos.Events/Chat", opts...)
   536  	if err != nil {
   537  		return nil, err
   538  	}
   539  	x := &eventsChatClient{stream}
   540  	return x, nil
   541  }
   542  
   543  type Events_ChatClient interface {
   544  	Send(*SignedEvent) error
   545  	Recv() (*Event, error)
   546  	grpc.ClientStream
   547  }
   548  
   549  type eventsChatClient struct {
   550  	grpc.ClientStream
   551  }
   552  
   553  func (x *eventsChatClient) Send(m *SignedEvent) error {
   554  	return x.ClientStream.SendMsg(m)
   555  }
   556  
   557  func (x *eventsChatClient) Recv() (*Event, error) {
   558  	m := new(Event)
   559  	if err := x.ClientStream.RecvMsg(m); err != nil {
   560  		return nil, err
   561  	}
   562  	return m, nil
   563  }
   564  
   565  // Server API for Events service
   566  
   567  type EventsServer interface {
   568  	// event chatting using Event
   569  	Chat(Events_ChatServer) error
   570  }
   571  
   572  func RegisterEventsServer(s *grpc.Server, srv EventsServer) {
   573  	s.RegisterService(&_Events_serviceDesc, srv)
   574  }
   575  
   576  func _Events_Chat_Handler(srv interface{}, stream grpc.ServerStream) error {
   577  	return srv.(EventsServer).Chat(&eventsChatServer{stream})
   578  }
   579  
   580  type Events_ChatServer interface {
   581  	Send(*Event) error
   582  	Recv() (*SignedEvent, error)
   583  	grpc.ServerStream
   584  }
   585  
   586  type eventsChatServer struct {
   587  	grpc.ServerStream
   588  }
   589  
   590  func (x *eventsChatServer) Send(m *Event) error {
   591  	return x.ServerStream.SendMsg(m)
   592  }
   593  
   594  func (x *eventsChatServer) Recv() (*SignedEvent, error) {
   595  	m := new(SignedEvent)
   596  	if err := x.ServerStream.RecvMsg(m); err != nil {
   597  		return nil, err
   598  	}
   599  	return m, nil
   600  }
   601  
   602  var _Events_serviceDesc = grpc.ServiceDesc{
   603  	ServiceName: "protos.Events",
   604  	HandlerType: (*EventsServer)(nil),
   605  	Methods:     []grpc.MethodDesc{},
   606  	Streams: []grpc.StreamDesc{
   607  		{
   608  			StreamName:    "Chat",
   609  			Handler:       _Events_Chat_Handler,
   610  			ServerStreams: true,
   611  			ClientStreams: true,
   612  		},
   613  	},
   614  	Metadata: "peer/events.proto",
   615  }
   616  
   617  func init() { proto.RegisterFile("peer/events.proto", fileDescriptor5) }
   618  
   619  var fileDescriptor5 = []byte{
   620  	// 611 bytes of a gzipped FileDescriptorProto
   621  	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x94, 0x54, 0x4f, 0x6f, 0x9b, 0x4e,
   622  	0x10, 0x05, 0x27, 0x76, 0xcc, 0xd8, 0xce, 0xcf, 0xd9, 0xfc, 0x14, 0x21, 0xf7, 0x8f, 0x52, 0xaa,
   623  	0x4a, 0x6e, 0x0f, 0x26, 0xa5, 0x51, 0x0f, 0xbd, 0x05, 0x82, 0x0a, 0x4d, 0xf3, 0x47, 0x1b, 0xf7,
   624  	0xd2, 0x43, 0x2d, 0x8c, 0x27, 0x98, 0x26, 0x06, 0x6b, 0xd9, 0x54, 0xf1, 0x27, 0xea, 0xa9, 0xdf,
   625  	0xb1, 0x62, 0x61, 0x81, 0xb4, 0xa7, 0x9e, 0xf0, 0xcc, 0xbc, 0x37, 0xfb, 0xf6, 0xcd, 0xac, 0x61,
   626  	0x6f, 0x8d, 0xc8, 0x4c, 0xfc, 0x81, 0x09, 0xcf, 0x26, 0x6b, 0x96, 0xf2, 0x94, 0x74, 0xc4, 0x27,
   627  	0x1b, 0xed, 0x87, 0xe9, 0x6a, 0x95, 0x26, 0x66, 0xf1, 0x29, 0x8a, 0xa3, 0x91, 0xc0, 0x87, 0xcb,
   628  	0x20, 0x4e, 0xc2, 0x74, 0x81, 0x33, 0xc1, 0x2c, 0x6b, 0x07, 0xa2, 0xc6, 0x59, 0x90, 0x64, 0x41,
   629  	0xc8, 0x63, 0xc9, 0x31, 0xae, 0xa0, 0xef, 0x48, 0x02, 0xc5, 0x88, 0xbc, 0x80, 0x7e, 0xdd, 0x20,
   630  	0x5e, 0xe8, 0xea, 0xa1, 0x3a, 0xd6, 0x68, 0xaf, 0xca, 0xf9, 0x0b, 0xf2, 0x0c, 0x40, 0x74, 0x9e,
   631  	0x25, 0xc1, 0x0a, 0xf5, 0x96, 0x00, 0x68, 0x22, 0x73, 0x11, 0xac, 0xd0, 0xf8, 0xa9, 0x42, 0xd7,
   632  	0x4f, 0x38, 0x32, 0xcc, 0x38, 0x39, 0x92, 0x58, 0xbe, 0x59, 0xa3, 0x68, 0xb6, 0x6b, 0xed, 0x15,
   633  	0x47, 0x67, 0x13, 0x37, 0xaf, 0x4c, 0x37, 0x6b, 0x2c, 0xe9, 0xf9, 0x4f, 0x72, 0x0a, 0xa4, 0x16,
   634  	0xc0, 0x30, 0x9a, 0xc5, 0xc9, 0x4d, 0x2a, 0x4e, 0xe9, 0x59, 0xff, 0x4b, 0x66, 0x53, 0xb2, 0xa7,
   635  	0xd0, 0x61, 0xd8, 0x88, 0xfd, 0xe4, 0x26, 0x25, 0x3a, 0xec, 0x88, 0x9c, 0x7f, 0xaa, 0x6f, 0x09,
   636  	0x81, 0x32, 0xb4, 0x35, 0xd8, 0x29, 0x41, 0xc6, 0x31, 0x74, 0x29, 0x46, 0x71, 0xc6, 0x91, 0x91,
   637  	0x31, 0x74, 0x0a, 0xa3, 0x75, 0xf5, 0x70, 0x6b, 0xdc, 0xb3, 0x86, 0xf2, 0x28, 0x79, 0x15, 0x5a,
   638  	0xd6, 0x8d, 0x73, 0xd0, 0x28, 0x7e, 0x47, 0x61, 0x22, 0x79, 0x09, 0x2d, 0xfe, 0x20, 0xee, 0xd5,
   639  	0xb3, 0xf6, 0x25, 0x65, 0x5a, 0xbb, 0x4c, 0x5b, 0xfc, 0x81, 0x3c, 0x01, 0x0d, 0x19, 0x4b, 0xd9,
   640  	0x6c, 0x95, 0x45, 0xa5, 0x5f, 0x5d, 0x91, 0x38, 0xcf, 0x22, 0xe3, 0x3d, 0xc0, 0x97, 0x84, 0xfd,
   641  	0xbb, 0x8c, 0x33, 0xe8, 0x5d, 0xc7, 0x51, 0x82, 0x0b, 0xe1, 0x22, 0x79, 0x0a, 0x5a, 0x16, 0x47,
   642  	0x49, 0xc0, 0xef, 0x59, 0xe1, 0x73, 0x9f, 0xd6, 0x09, 0xf2, 0xbc, 0x1c, 0x83, 0xbd, 0xe1, 0x98,
   643  	0x09, 0x09, 0x7d, 0xda, 0xc8, 0x18, 0xbf, 0x5a, 0xd0, 0x2e, 0xfa, 0x4c, 0xa0, 0x2b, 0xc5, 0x94,
   644  	0xd7, 0xaa, 0x24, 0x48, 0xaf, 0x3c, 0x85, 0x56, 0x18, 0xf2, 0x0a, 0xda, 0xf3, 0xbb, 0x34, 0xbc,
   645  	0x2d, 0x27, 0x34, 0x98, 0x94, 0x1b, 0x69, 0xe7, 0x49, 0x4f, 0xa1, 0x45, 0x95, 0x9c, 0xc0, 0x7f,
   646  	0x7f, 0xec, 0xa5, 0x98, 0x4b, 0xcf, 0x3a, 0xf8, 0x6b, 0xa4, 0x42, 0x87, 0xa7, 0xd0, 0xdd, 0xf0,
   647  	0x51, 0x86, 0xbc, 0x05, 0x8d, 0x49, 0xdf, 0xf5, 0x6d, 0x41, 0xde, 0xab, 0xa5, 0x95, 0x05, 0x4f,
   648  	0xa1, 0x35, 0x8a, 0x1c, 0x03, 0xdc, 0x57, 0xde, 0xea, 0x6d, 0xc1, 0x21, 0x92, 0x53, 0xbb, 0xee,
   649  	0x29, 0xb4, 0x81, 0x13, 0xbb, 0xc3, 0x30, 0xe0, 0x29, 0xd3, 0x3b, 0xc2, 0x29, 0x19, 0xda, 0x3b,
   650  	0xa5, 0x4b, 0x6f, 0x6c, 0xd0, 0xaa, 0xe5, 0x25, 0x7d, 0xe8, 0x52, 0xf7, 0xa3, 0x7f, 0x3d, 0x75,
   651  	0xe9, 0x50, 0x21, 0x1a, 0xb4, 0xed, 0xcf, 0x97, 0xce, 0xd9, 0x50, 0x25, 0x03, 0xd0, 0x1c, 0xef,
   652  	0xc4, 0xbf, 0x70, 0x2e, 0x4f, 0xdd, 0x61, 0x2b, 0x0f, 0xa9, 0xfb, 0xc9, 0x75, 0xa6, 0xfe, 0xe5,
   653  	0xc5, 0x70, 0xcb, 0xfa, 0x00, 0x1d, 0xd1, 0x23, 0x23, 0x47, 0xb0, 0xed, 0x2c, 0x03, 0x4e, 0xaa,
   654  	0x05, 0x6a, 0x0c, 0x76, 0x34, 0x78, 0xf4, 0x5a, 0x0c, 0x65, 0xac, 0x1e, 0xa9, 0xf6, 0x37, 0x30,
   655  	0x52, 0x16, 0x4d, 0x96, 0x9b, 0x35, 0xb2, 0x3b, 0x5c, 0x44, 0xc8, 0x26, 0x37, 0xc1, 0x9c, 0xc5,
   656  	0xa1, 0x04, 0xe7, 0xaf, 0xdd, 0x1e, 0x14, 0xfd, 0xaf, 0x82, 0xf0, 0x36, 0x88, 0xf0, 0xeb, 0xeb,
   657  	0x28, 0xe6, 0xcb, 0xfb, 0x79, 0x3e, 0x21, 0xb3, 0xc1, 0x34, 0x0b, 0xa6, 0x59, 0x30, 0xcd, 0x9c,
   658  	0x39, 0x2f, 0xfe, 0x66, 0xde, 0xfd, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x19, 0x83, 0x34, 0xd3, 0x82,
   659  	0x04, 0x00, 0x00,
   660  }