transaction.pb.go 18.2 KB
Newer Older
1
// Code generated by protoc-gen-go. DO NOT EDIT.
2
3
4
5
6
7
8
// source: peer/transaction.proto

package peer

import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
9
import _ "github.com/golang/protobuf/ptypes/timestamp"
10
import common "github.com/hyperledger/fabric/protos/common"
11
12
13
14
15
16

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
type TxValidationCode int32

const (
	TxValidationCode_VALID                        TxValidationCode = 0
	TxValidationCode_NIL_ENVELOPE                 TxValidationCode = 1
	TxValidationCode_BAD_PAYLOAD                  TxValidationCode = 2
	TxValidationCode_BAD_COMMON_HEADER            TxValidationCode = 3
	TxValidationCode_BAD_CREATOR_SIGNATURE        TxValidationCode = 4
	TxValidationCode_INVALID_ENDORSER_TRANSACTION TxValidationCode = 5
	TxValidationCode_INVALID_CONFIG_TRANSACTION   TxValidationCode = 6
	TxValidationCode_UNSUPPORTED_TX_PAYLOAD       TxValidationCode = 7
	TxValidationCode_BAD_PROPOSAL_TXID            TxValidationCode = 8
	TxValidationCode_DUPLICATE_TXID               TxValidationCode = 9
	TxValidationCode_ENDORSEMENT_POLICY_FAILURE   TxValidationCode = 10
	TxValidationCode_MVCC_READ_CONFLICT           TxValidationCode = 11
	TxValidationCode_PHANTOM_READ_CONFLICT        TxValidationCode = 12
	TxValidationCode_UNKNOWN_TX_TYPE              TxValidationCode = 13
	TxValidationCode_TARGET_CHAIN_NOT_FOUND       TxValidationCode = 14
	TxValidationCode_MARSHAL_TX_ERROR             TxValidationCode = 15
	TxValidationCode_NIL_TXACTION                 TxValidationCode = 16
37
	TxValidationCode_EXPIRED_CHAINCODE            TxValidationCode = 17
38
	TxValidationCode_CHAINCODE_VERSION_CONFLICT   TxValidationCode = 18
39
40
41
42
43
	TxValidationCode_BAD_HEADER_EXTENSION         TxValidationCode = 19
	TxValidationCode_BAD_CHANNEL_HEADER           TxValidationCode = 20
	TxValidationCode_BAD_RESPONSE_PAYLOAD         TxValidationCode = 21
	TxValidationCode_BAD_RWSET                    TxValidationCode = 22
	TxValidationCode_ILLEGAL_WRITESET             TxValidationCode = 23
44
	TxValidationCode_NOT_VALIDATED                TxValidationCode = 254
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
	TxValidationCode_INVALID_OTHER_REASON         TxValidationCode = 255
)

var TxValidationCode_name = map[int32]string{
	0:   "VALID",
	1:   "NIL_ENVELOPE",
	2:   "BAD_PAYLOAD",
	3:   "BAD_COMMON_HEADER",
	4:   "BAD_CREATOR_SIGNATURE",
	5:   "INVALID_ENDORSER_TRANSACTION",
	6:   "INVALID_CONFIG_TRANSACTION",
	7:   "UNSUPPORTED_TX_PAYLOAD",
	8:   "BAD_PROPOSAL_TXID",
	9:   "DUPLICATE_TXID",
	10:  "ENDORSEMENT_POLICY_FAILURE",
	11:  "MVCC_READ_CONFLICT",
	12:  "PHANTOM_READ_CONFLICT",
	13:  "UNKNOWN_TX_TYPE",
	14:  "TARGET_CHAIN_NOT_FOUND",
	15:  "MARSHAL_TX_ERROR",
	16:  "NIL_TXACTION",
66
	17:  "EXPIRED_CHAINCODE",
67
	18:  "CHAINCODE_VERSION_CONFLICT",
68
69
70
71
72
	19:  "BAD_HEADER_EXTENSION",
	20:  "BAD_CHANNEL_HEADER",
	21:  "BAD_RESPONSE_PAYLOAD",
	22:  "BAD_RWSET",
	23:  "ILLEGAL_WRITESET",
73
	254: "NOT_VALIDATED",
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
	255: "INVALID_OTHER_REASON",
}
var TxValidationCode_value = map[string]int32{
	"VALID":                        0,
	"NIL_ENVELOPE":                 1,
	"BAD_PAYLOAD":                  2,
	"BAD_COMMON_HEADER":            3,
	"BAD_CREATOR_SIGNATURE":        4,
	"INVALID_ENDORSER_TRANSACTION": 5,
	"INVALID_CONFIG_TRANSACTION":   6,
	"UNSUPPORTED_TX_PAYLOAD":       7,
	"BAD_PROPOSAL_TXID":            8,
	"DUPLICATE_TXID":               9,
	"ENDORSEMENT_POLICY_FAILURE":   10,
	"MVCC_READ_CONFLICT":           11,
	"PHANTOM_READ_CONFLICT":        12,
	"UNKNOWN_TX_TYPE":              13,
	"TARGET_CHAIN_NOT_FOUND":       14,
	"MARSHAL_TX_ERROR":             15,
	"NIL_TXACTION":                 16,
94
	"EXPIRED_CHAINCODE":            17,
95
	"CHAINCODE_VERSION_CONFLICT":   18,
96
97
98
99
100
	"BAD_HEADER_EXTENSION":         19,
	"BAD_CHANNEL_HEADER":           20,
	"BAD_RESPONSE_PAYLOAD":         21,
	"BAD_RWSET":                    22,
	"ILLEGAL_WRITESET":             23,
101
	"NOT_VALIDATED":                254,
102
103
104
105
106
107
	"INVALID_OTHER_REASON":         255,
}

func (x TxValidationCode) String() string {
	return proto.EnumName(TxValidationCode_name, int32(x))
}
108
func (TxValidationCode) EnumDescriptor() ([]byte, []int) { return fileDescriptor12, []int{0} }
109

110
111
112
113
114
// This message is necessary to facilitate the verification of the signature
// (in the signature field) over the bytes of the transaction (in the
// transactionBytes field).
type SignedTransaction struct {
	// The bytes of the Transaction. NDD
Jason Yellick's avatar
Jason Yellick committed
115
	TransactionBytes []byte `protobuf:"bytes,1,opt,name=transaction_bytes,json=transactionBytes,proto3" json:"transaction_bytes,omitempty"`
116
117
118
119
120
121
122
123
124
125
	// Signature of the transactionBytes The public key of the signature is in
	// the header field of TransactionAction There might be multiple
	// TransactionAction, so multiple headers, but there should be same
	// transactor identity (cert) in all headers
	Signature []byte `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"`
}

func (m *SignedTransaction) Reset()                    { *m = SignedTransaction{} }
func (m *SignedTransaction) String() string            { return proto.CompactTextString(m) }
func (*SignedTransaction) ProtoMessage()               {}
126
func (*SignedTransaction) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{0} }
127

128
129
130
131
132
133
134
135
136
137
138
139
140
141
func (m *SignedTransaction) GetTransactionBytes() []byte {
	if m != nil {
		return m.TransactionBytes
	}
	return nil
}

func (m *SignedTransaction) GetSignature() []byte {
	if m != nil {
		return m.Signature
	}
	return nil
}

142
143
144
145
146
147
148
149
150
151
// ProcessedTransaction wraps an Envelope that includes a transaction along with an indication
// of whether the transaction was validated or invalidated by committing peer.
// The use case is that GetTransactionByID API needs to retrieve the transaction Envelope
// from block storage, and return it to a client, and indicate whether the transaction
// was validated or invalidated by committing peer. So that the originally submitted
// transaction Envelope is not modified, the ProcessedTransaction wrapper is returned.
type ProcessedTransaction struct {
	// An Envelope which includes a processed transaction
	TransactionEnvelope *common.Envelope `protobuf:"bytes,1,opt,name=transactionEnvelope" json:"transactionEnvelope,omitempty"`
	// An indication of whether the transaction was validated or invalidated by committing peer
152
	ValidationCode int32 `protobuf:"varint,2,opt,name=validationCode" json:"validationCode,omitempty"`
153
154
155
156
157
}

func (m *ProcessedTransaction) Reset()                    { *m = ProcessedTransaction{} }
func (m *ProcessedTransaction) String() string            { return proto.CompactTextString(m) }
func (*ProcessedTransaction) ProtoMessage()               {}
158
func (*ProcessedTransaction) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{1} }
159
160

func (m *ProcessedTransaction) GetTransactionEnvelope() *common.Envelope {
161
	if m != nil {
162
		return m.TransactionEnvelope
163
164
165
166
	}
	return nil
}

167
168
169
170
171
172
173
func (m *ProcessedTransaction) GetValidationCode() int32 {
	if m != nil {
		return m.ValidationCode
	}
	return 0
}

174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
// The transaction to be sent to the ordering service. A transaction contains
// one or more TransactionAction. Each TransactionAction binds a proposal to
// potentially multiple actions. The transaction is atomic meaning that either
// all actions in the transaction will be committed or none will.  Note that
// while a Transaction might include more than one Header, the Header.creator
// field must be the same in each.
// A single client is free to issue a number of independent Proposal, each with
// their header (Header) and request payload (ChaincodeProposalPayload).  Each
// proposal is independently endorsed generating an action
// (ProposalResponsePayload) with one signature per Endorser. Any number of
// independent proposals (and their action) might be included in a transaction
// to ensure that they are treated atomically.
type Transaction struct {
	// The payload is an array of TransactionAction. An array is necessary to
	// accommodate multiple actions per transaction
189
	Actions []*TransactionAction `protobuf:"bytes,1,rep,name=actions" json:"actions,omitempty"`
190
191
192
193
194
}

func (m *Transaction) Reset()                    { *m = Transaction{} }
func (m *Transaction) String() string            { return proto.CompactTextString(m) }
func (*Transaction) ProtoMessage()               {}
195
func (*Transaction) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{2} }
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216

func (m *Transaction) GetActions() []*TransactionAction {
	if m != nil {
		return m.Actions
	}
	return nil
}

// TransactionAction binds a proposal to its action.  The type field in the
// header dictates the type of action to be applied to the ledger.
type TransactionAction struct {
	// The header of the proposal action, which is the proposal header
	Header []byte `protobuf:"bytes,1,opt,name=header,proto3" json:"header,omitempty"`
	// The payload of the action as defined by the type in the header For
	// chaincode, it's the bytes of ChaincodeActionPayload
	Payload []byte `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"`
}

func (m *TransactionAction) Reset()                    { *m = TransactionAction{} }
func (m *TransactionAction) String() string            { return proto.CompactTextString(m) }
func (*TransactionAction) ProtoMessage()               {}
217
func (*TransactionAction) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{3} }
218

219
220
221
222
223
224
225
226
227
228
229
230
231
232
func (m *TransactionAction) GetHeader() []byte {
	if m != nil {
		return m.Header
	}
	return nil
}

func (m *TransactionAction) GetPayload() []byte {
	if m != nil {
		return m.Payload
	}
	return nil
}

233
234
235
236
237
238
239
240
241
242
243
244
245
// ChaincodeActionPayload is the message to be used for the TransactionAction's
// payload when the Header's type is set to CHAINCODE.  It carries the
// chaincodeProposalPayload and an endorsed action to apply to the ledger.
type ChaincodeActionPayload struct {
	// This field contains the bytes of the ChaincodeProposalPayload message from
	// the original invocation (essentially the arguments) after the application
	// of the visibility function. The main visibility modes are "full" (the
	// entire ChaincodeProposalPayload message is included here), "hash" (only
	// the hash of the ChaincodeProposalPayload message is included) or
	// "nothing".  This field will be used to check the consistency of
	// ProposalResponsePayload.proposalHash.  For the CHAINCODE type,
	// ProposalResponsePayload.proposalHash is supposed to be H(ProposalHeader ||
	// f(ChaincodeProposalPayload)) where f is the visibility function.
Jason Yellick's avatar
Jason Yellick committed
246
	ChaincodeProposalPayload []byte `protobuf:"bytes,1,opt,name=chaincode_proposal_payload,json=chaincodeProposalPayload,proto3" json:"chaincode_proposal_payload,omitempty"`
247
248
249
250
251
252
253
	// The list of actions to apply to the ledger
	Action *ChaincodeEndorsedAction `protobuf:"bytes,2,opt,name=action" json:"action,omitempty"`
}

func (m *ChaincodeActionPayload) Reset()                    { *m = ChaincodeActionPayload{} }
func (m *ChaincodeActionPayload) String() string            { return proto.CompactTextString(m) }
func (*ChaincodeActionPayload) ProtoMessage()               {}
254
func (*ChaincodeActionPayload) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{4} }
255

256
257
258
259
260
261
262
func (m *ChaincodeActionPayload) GetChaincodeProposalPayload() []byte {
	if m != nil {
		return m.ChaincodeProposalPayload
	}
	return nil
}

263
264
265
266
267
268
269
270
271
272
273
274
275
func (m *ChaincodeActionPayload) GetAction() *ChaincodeEndorsedAction {
	if m != nil {
		return m.Action
	}
	return nil
}

// ChaincodeEndorsedAction carries information about the endorsement of a
// specific proposal
type ChaincodeEndorsedAction struct {
	// This is the bytes of the ProposalResponsePayload message signed by the
	// endorsers.  Recall that for the CHAINCODE type, the
	// ProposalResponsePayload's extenstion field carries a ChaincodeAction
Jason Yellick's avatar
Jason Yellick committed
276
	ProposalResponsePayload []byte `protobuf:"bytes,1,opt,name=proposal_response_payload,json=proposalResponsePayload,proto3" json:"proposal_response_payload,omitempty"`
277
278
279
280
281
282
283
284
	// The endorsement of the proposal, basically the endorser's signature over
	// proposalResponsePayload
	Endorsements []*Endorsement `protobuf:"bytes,2,rep,name=endorsements" json:"endorsements,omitempty"`
}

func (m *ChaincodeEndorsedAction) Reset()                    { *m = ChaincodeEndorsedAction{} }
func (m *ChaincodeEndorsedAction) String() string            { return proto.CompactTextString(m) }
func (*ChaincodeEndorsedAction) ProtoMessage()               {}
285
func (*ChaincodeEndorsedAction) Descriptor() ([]byte, []int) { return fileDescriptor12, []int{5} }
286

287
288
289
290
291
292
293
func (m *ChaincodeEndorsedAction) GetProposalResponsePayload() []byte {
	if m != nil {
		return m.ProposalResponsePayload
	}
	return nil
}

294
295
296
297
298
299
300
301
302
func (m *ChaincodeEndorsedAction) GetEndorsements() []*Endorsement {
	if m != nil {
		return m.Endorsements
	}
	return nil
}

func init() {
	proto.RegisterType((*SignedTransaction)(nil), "protos.SignedTransaction")
303
	proto.RegisterType((*ProcessedTransaction)(nil), "protos.ProcessedTransaction")
304
305
306
307
	proto.RegisterType((*Transaction)(nil), "protos.Transaction")
	proto.RegisterType((*TransactionAction)(nil), "protos.TransactionAction")
	proto.RegisterType((*ChaincodeActionPayload)(nil), "protos.ChaincodeActionPayload")
	proto.RegisterType((*ChaincodeEndorsedAction)(nil), "protos.ChaincodeEndorsedAction")
308
	proto.RegisterEnum("protos.TxValidationCode", TxValidationCode_name, TxValidationCode_value)
309
310
}

311
func init() { proto.RegisterFile("peer/transaction.proto", fileDescriptor12) }
312

313
var fileDescriptor12 = []byte{
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
	// 843 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x54, 0x5d, 0x6f, 0x22, 0x37,
	0x14, 0x2d, 0xd9, 0x4d, 0xd2, 0x5c, 0xf2, 0x61, 0x0c, 0x21, 0x04, 0x45, 0xdd, 0x15, 0x0f, 0xd5,
	0xb6, 0x95, 0x40, 0xca, 0x3e, 0x54, 0xaa, 0xfa, 0x62, 0x66, 0x9c, 0x30, 0xea, 0x60, 0x8f, 0x3c,
	0x86, 0x90, 0x3e, 0xd4, 0x1a, 0xc0, 0x4b, 0x50, 0x61, 0x06, 0xcd, 0x90, 0x55, 0xf3, 0xda, 0x1f,
	0xd0, 0xfe, 0xe3, 0x6d, 0xe5, 0xf9, 0x00, 0x92, 0xb4, 0x2f, 0x0c, 0xbe, 0xe7, 0xf8, 0x9e, 0x73,
	0xef, 0xb5, 0x2e, 0xd4, 0x57, 0x5a, 0xc7, 0x9d, 0x75, 0x1c, 0x84, 0x49, 0x30, 0x59, 0xcf, 0xa3,
	0xb0, 0xbd, 0x8a, 0xa3, 0x75, 0x84, 0x0f, 0xd2, 0x4f, 0xd2, 0x7c, 0x37, 0x8b, 0xa2, 0xd9, 0x42,
	0x77, 0xd2, 0xe3, 0xf8, 0xf1, 0x53, 0x67, 0x3d, 0x5f, 0xea, 0x64, 0x1d, 0x2c, 0x57, 0x19, 0xb1,
	0x79, 0x95, 0x26, 0x58, 0xc5, 0xd1, 0x2a, 0x4a, 0x82, 0x85, 0x8a, 0x75, 0xb2, 0x8a, 0xc2, 0x44,
	0xe7, 0x68, 0x75, 0x12, 0x2d, 0x97, 0x51, 0xd8, 0xc9, 0x3e, 0x59, 0xb0, 0xf5, 0x1b, 0x54, 0xfc,
	0xf9, 0x2c, 0xd4, 0x53, 0xb9, 0x95, 0xc5, 0x3f, 0x40, 0x65, 0xc7, 0x85, 0x1a, 0x3f, 0xad, 0x75,
	0xd2, 0x28, 0xbd, 0x2f, 0x7d, 0x38, 0x16, 0x68, 0x07, 0xe8, 0x9a, 0x38, 0xbe, 0x82, 0xa3, 0x64,
	0x3e, 0x0b, 0x83, 0xf5, 0x63, 0xac, 0x1b, 0x7b, 0x29, 0x69, 0x1b, 0x68, 0xfd, 0x59, 0x82, 0x9a,
	0x17, 0x47, 0x13, 0x9d, 0x24, 0xcf, 0x35, 0xba, 0x50, 0xdd, 0x49, 0x45, 0xc3, 0xcf, 0x7a, 0x11,
	0xad, 0x74, 0xaa, 0x52, 0xbe, 0x46, 0xed, 0xdc, 0x64, 0x11, 0x17, 0xff, 0x45, 0xc6, 0xdf, 0xc2,
	0xe9, 0xe7, 0x60, 0x31, 0x9f, 0x06, 0x26, 0x6a, 0x45, 0xd3, 0x4c, 0x7f, 0x5f, 0xbc, 0x88, 0xb6,
	0xba, 0x50, 0xde, 0x95, 0xfe, 0x08, 0x87, 0xd9, 0x3f, 0x53, 0xd4, 0x9b, 0x0f, 0xe5, 0xeb, 0xcb,
	0xac, 0x19, 0x49, 0x7b, 0x87, 0x45, 0xd2, 0x5f, 0x51, 0x30, 0x5b, 0x14, 0x2a, 0xaf, 0x50, 0x5c,
	0x87, 0x83, 0x07, 0x1d, 0x4c, 0x75, 0x9c, 0x77, 0x27, 0x3f, 0xe1, 0x06, 0x1c, 0xae, 0x82, 0xa7,
	0x45, 0x14, 0x4c, 0xf3, 0x8e, 0x14, 0xc7, 0xd6, 0xdf, 0x25, 0xa8, 0x5b, 0x0f, 0xc1, 0x3c, 0x9c,
	0x44, 0x53, 0x9d, 0x65, 0xf1, 0x32, 0x08, 0xff, 0x0c, 0xcd, 0x49, 0x81, 0xa8, 0xcd, 0x10, 0x8b,
	0x3c, 0x99, 0x40, 0x63, 0xc3, 0xf0, 0x72, 0x42, 0x71, 0xfb, 0x47, 0x38, 0xc8, 0xac, 0xa5, 0x8a,
	0xe5, 0xeb, 0x77, 0x45, 0x4d, 0x1b, 0x35, 0x1a, 0x4e, 0xa3, 0x38, 0xd1, 0xd3, 0xbc, 0xb2, 0x9c,
	0xde, 0xfa, 0xab, 0x04, 0x17, 0xff, 0xc3, 0xc1, 0x3f, 0xc1, 0xe5, 0xab, 0xd7, 0xf4, 0xc2, 0xd1,
	0x45, 0x41, 0x10, 0x39, 0xbe, 0x35, 0x74, 0xac, 0xb3, 0x6c, 0x4b, 0x1d, 0xae, 0x93, 0xc6, 0x5e,
	0xda, 0xea, 0x6a, 0x61, 0x8b, 0x6e, 0x31, 0xf1, 0x8c, 0xf8, 0xfd, 0x97, 0xb7, 0x80, 0xe4, 0x1f,
	0xc3, 0x67, 0x23, 0xc4, 0x47, 0xb0, 0x3f, 0x24, 0xae, 0x63, 0xa3, 0xaf, 0x30, 0x82, 0x63, 0xe6,
	0xb8, 0x8a, 0xb2, 0x21, 0x75, 0xb9, 0x47, 0x51, 0x09, 0x9f, 0x41, 0xb9, 0x4b, 0x6c, 0xe5, 0x91,
	0x7b, 0x97, 0x13, 0x1b, 0xed, 0xe1, 0x73, 0xa8, 0x98, 0x80, 0xc5, 0xfb, 0x7d, 0xce, 0x54, 0x8f,
	0x12, 0x9b, 0x0a, 0xf4, 0x06, 0x5f, 0xc2, 0x79, 0x1a, 0x16, 0x94, 0x48, 0x2e, 0x94, 0xef, 0xdc,
	0x32, 0x22, 0x07, 0x82, 0xa2, 0xb7, 0xf8, 0x3d, 0x5c, 0x39, 0x2c, 0x55, 0x50, 0x94, 0xd9, 0x5c,
	0xf8, 0x54, 0x28, 0x29, 0x08, 0xf3, 0x89, 0x25, 0x1d, 0xce, 0xd0, 0x3e, 0xfe, 0x06, 0x9a, 0x05,
	0xc3, 0xe2, 0xec, 0xc6, 0xb9, 0x7d, 0x86, 0x1f, 0xe0, 0x26, 0xd4, 0x07, 0xcc, 0x1f, 0x78, 0x1e,
	0x17, 0x92, 0xda, 0x4a, 0x8e, 0x36, 0x7e, 0x0e, 0x0b, 0x3f, 0x9e, 0xe0, 0x1e, 0xf7, 0x89, 0xab,
	0xe4, 0xc8, 0xb1, 0xd1, 0xd7, 0x18, 0xc3, 0xa9, 0x3d, 0xf0, 0x5c, 0xc7, 0x22, 0x92, 0x66, 0xb1,
	0x23, 0x23, 0x93, 0x1b, 0xe8, 0x53, 0x26, 0x95, 0xc7, 0x5d, 0xc7, 0xba, 0x57, 0x37, 0xc4, 0x71,
	0x8d, 0x51, 0xc0, 0x75, 0xc0, 0xfd, 0xa1, 0x65, 0x29, 0x41, 0x49, 0x66, 0xc4, 0x75, 0x2c, 0x89,
	0xca, 0xa6, 0x36, 0xaf, 0x47, 0x98, 0xe4, 0xfd, 0x17, 0xd0, 0x31, 0xae, 0xc2, 0xd9, 0x80, 0xfd,
	0xc2, 0xf8, 0x1d, 0x33, 0xae, 0xe4, 0xbd, 0x47, 0xd1, 0x89, 0xb1, 0x2b, 0x89, 0xb8, 0xa5, 0x52,
	0x59, 0x3d, 0xe2, 0x30, 0xc5, 0xb8, 0x54, 0x37, 0x7c, 0xc0, 0x6c, 0x74, 0x8a, 0x6b, 0x80, 0xfa,
	0x44, 0xf8, 0xbd, 0xd4, 0xa9, 0xa2, 0x42, 0x70, 0x81, 0xce, 0x8a, 0xbe, 0xcb, 0x51, 0x5e, 0x32,
	0x32, 0x65, 0xd1, 0x91, 0xe7, 0x08, 0x6a, 0x67, 0x49, 0x2c, 0x6e, 0x53, 0x54, 0x31, 0x25, 0x6c,
	0x8e, 0x6a, 0x48, 0x85, 0xef, 0x70, 0xb6, 0xf5, 0x83, 0x71, 0x03, 0x6a, 0xa6, 0x1b, 0xd9, 0x58,
	0x14, 0x1d, 0x49, 0xca, 0x0c, 0x05, 0x55, 0x4d, 0x71, 0xe9, 0x80, 0x7a, 0x84, 0x31, 0xea, 0x16,
	0x83, 0xab, 0x15, 0x37, 0x04, 0xf5, 0x3d, 0xce, 0x7c, 0xba, 0xe9, 0xec, 0x39, 0x3e, 0x81, 0xa3,
	0x14, 0xb9, 0xf3, 0xa9, 0x44, 0x75, 0xe3, 0xdc, 0x71, 0x5d, 0x7a, 0x4b, 0x5c, 0x75, 0x27, 0x1c,
	0x49, 0x4d, 0xf4, 0x02, 0x63, 0x38, 0x31, 0xe5, 0xa5, 0xc3, 0x23, 0x92, 0xda, 0xe8, 0x4b, 0x09,
	0x5f, 0x42, 0xad, 0x18, 0x27, 0x97, 0x3d, 0x2a, 0x4c, 0xd7, 0x7c, 0xce, 0xd0, 0x3f, 0xa5, 0xee,
	0x04, 0x5a, 0x51, 0x3c, 0x6b, 0x3f, 0x3c, 0xad, 0x74, 0xbc, 0xd0, 0xd3, 0x99, 0x8e, 0xdb, 0x9f,
	0x82, 0x71, 0x3c, 0x9f, 0x14, 0x6f, 0xd7, 0xac, 0xd9, 0x2e, 0xde, 0x59, 0x07, 0x5e, 0x30, 0xf9,
	0x3d, 0x98, 0xe9, 0x5f, 0xbf, 0x9b, 0xcd, 0xd7, 0x0f, 0x8f, 0x63, 0xb3, 0xbd, 0x3a, 0x3b, 0xd7,
	0x3b, 0xd9, 0xf5, 0x6c, 0x71, 0x27, 0x1d, 0x73, 0x7d, 0x9c, 0x2d, 0xf5, 0x8f, 0xff, 0x06, 0x00,
	0x00, 0xff, 0xff, 0xa7, 0x7b, 0xe0, 0x48, 0xf5, 0x05, 0x00, 0x00,
368
}