github.com/linapex/ethereum-dpos-chinese@v0.0.0-20190316121959-b78b3a4a1ece/accounts/usbwallet/internal/trezor/messages.pb.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 12:09:27</date> 10 //</624342586580013056> 11 12 //由Protoc Gen Go生成的代码。不要编辑。 13 //来源:messages.proto 14 15 package trezor 16 17 import proto "github.com/golang/protobuf/proto" 18 import fmt "fmt" 19 import math "math" 20 21 //引用导入以禁止错误(如果未使用)。 22 var _ = proto.Marshal 23 var _ = fmt.Errorf 24 var _ = math.Inf 25 26 //* 27 //trezor线标识符(uint)和protobuf消息之间的映射 28 type MessageType int32 29 30 const ( 31 MessageType_MessageType_Initialize MessageType = 0 32 MessageType_MessageType_Ping MessageType = 1 33 MessageType_MessageType_Success MessageType = 2 34 MessageType_MessageType_Failure MessageType = 3 35 MessageType_MessageType_ChangePin MessageType = 4 36 MessageType_MessageType_WipeDevice MessageType = 5 37 MessageType_MessageType_FirmwareErase MessageType = 6 38 MessageType_MessageType_FirmwareUpload MessageType = 7 39 MessageType_MessageType_FirmwareRequest MessageType = 8 40 MessageType_MessageType_GetEntropy MessageType = 9 41 MessageType_MessageType_Entropy MessageType = 10 42 MessageType_MessageType_GetPublicKey MessageType = 11 43 MessageType_MessageType_PublicKey MessageType = 12 44 MessageType_MessageType_LoadDevice MessageType = 13 45 MessageType_MessageType_ResetDevice MessageType = 14 46 MessageType_MessageType_SignTx MessageType = 15 47 MessageType_MessageType_SimpleSignTx MessageType = 16 48 MessageType_MessageType_Features MessageType = 17 49 MessageType_MessageType_PinMatrixRequest MessageType = 18 50 MessageType_MessageType_PinMatrixAck MessageType = 19 51 MessageType_MessageType_Cancel MessageType = 20 52 MessageType_MessageType_TxRequest MessageType = 21 53 MessageType_MessageType_TxAck MessageType = 22 54 MessageType_MessageType_CipherKeyValue MessageType = 23 55 MessageType_MessageType_ClearSession MessageType = 24 56 MessageType_MessageType_ApplySettings MessageType = 25 57 MessageType_MessageType_ButtonRequest MessageType = 26 58 MessageType_MessageType_ButtonAck MessageType = 27 59 MessageType_MessageType_ApplyFlags MessageType = 28 60 MessageType_MessageType_GetAddress MessageType = 29 61 MessageType_MessageType_Address MessageType = 30 62 MessageType_MessageType_SelfTest MessageType = 32 63 MessageType_MessageType_BackupDevice MessageType = 34 64 MessageType_MessageType_EntropyRequest MessageType = 35 65 MessageType_MessageType_EntropyAck MessageType = 36 66 MessageType_MessageType_SignMessage MessageType = 38 67 MessageType_MessageType_VerifyMessage MessageType = 39 68 MessageType_MessageType_MessageSignature MessageType = 40 69 MessageType_MessageType_PassphraseRequest MessageType = 41 70 MessageType_MessageType_PassphraseAck MessageType = 42 71 MessageType_MessageType_EstimateTxSize MessageType = 43 72 MessageType_MessageType_TxSize MessageType = 44 73 MessageType_MessageType_RecoveryDevice MessageType = 45 74 MessageType_MessageType_WordRequest MessageType = 46 75 MessageType_MessageType_WordAck MessageType = 47 76 MessageType_MessageType_CipheredKeyValue MessageType = 48 77 MessageType_MessageType_EncryptMessage MessageType = 49 78 MessageType_MessageType_EncryptedMessage MessageType = 50 79 MessageType_MessageType_DecryptMessage MessageType = 51 80 MessageType_MessageType_DecryptedMessage MessageType = 52 81 MessageType_MessageType_SignIdentity MessageType = 53 82 MessageType_MessageType_SignedIdentity MessageType = 54 83 MessageType_MessageType_GetFeatures MessageType = 55 84 MessageType_MessageType_EthereumGetAddress MessageType = 56 85 MessageType_MessageType_EthereumAddress MessageType = 57 86 MessageType_MessageType_EthereumSignTx MessageType = 58 87 MessageType_MessageType_EthereumTxRequest MessageType = 59 88 MessageType_MessageType_EthereumTxAck MessageType = 60 89 MessageType_MessageType_GetECDHSessionKey MessageType = 61 90 MessageType_MessageType_ECDHSessionKey MessageType = 62 91 MessageType_MessageType_SetU2FCounter MessageType = 63 92 MessageType_MessageType_EthereumSignMessage MessageType = 64 93 MessageType_MessageType_EthereumVerifyMessage MessageType = 65 94 MessageType_MessageType_EthereumMessageSignature MessageType = 66 95 MessageType_MessageType_DebugLinkDecision MessageType = 100 96 MessageType_MessageType_DebugLinkGetState MessageType = 101 97 MessageType_MessageType_DebugLinkState MessageType = 102 98 MessageType_MessageType_DebugLinkStop MessageType = 103 99 MessageType_MessageType_DebugLinkLog MessageType = 104 100 MessageType_MessageType_DebugLinkMemoryRead MessageType = 110 101 MessageType_MessageType_DebugLinkMemory MessageType = 111 102 MessageType_MessageType_DebugLinkMemoryWrite MessageType = 112 103 MessageType_MessageType_DebugLinkFlashErase MessageType = 113 104 ) 105 106 var MessageType_name = map[int32]string{ 107 0: "MessageType_Initialize", 108 1: "MessageType_Ping", 109 2: "MessageType_Success", 110 3: "MessageType_Failure", 111 4: "MessageType_ChangePin", 112 5: "MessageType_WipeDevice", 113 6: "MessageType_FirmwareErase", 114 7: "MessageType_FirmwareUpload", 115 8: "MessageType_FirmwareRequest", 116 9: "MessageType_GetEntropy", 117 10: "MessageType_Entropy", 118 11: "MessageType_GetPublicKey", 119 12: "MessageType_PublicKey", 120 13: "MessageType_LoadDevice", 121 14: "MessageType_ResetDevice", 122 15: "MessageType_SignTx", 123 16: "MessageType_SimpleSignTx", 124 17: "MessageType_Features", 125 18: "MessageType_PinMatrixRequest", 126 19: "MessageType_PinMatrixAck", 127 20: "MessageType_Cancel", 128 21: "MessageType_TxRequest", 129 22: "MessageType_TxAck", 130 23: "MessageType_CipherKeyValue", 131 24: "MessageType_ClearSession", 132 25: "MessageType_ApplySettings", 133 26: "MessageType_ButtonRequest", 134 27: "MessageType_ButtonAck", 135 28: "MessageType_ApplyFlags", 136 29: "MessageType_GetAddress", 137 30: "MessageType_Address", 138 32: "MessageType_SelfTest", 139 34: "MessageType_BackupDevice", 140 35: "MessageType_EntropyRequest", 141 36: "MessageType_EntropyAck", 142 38: "MessageType_SignMessage", 143 39: "MessageType_VerifyMessage", 144 40: "MessageType_MessageSignature", 145 41: "MessageType_PassphraseRequest", 146 42: "MessageType_PassphraseAck", 147 43: "MessageType_EstimateTxSize", 148 44: "MessageType_TxSize", 149 45: "MessageType_RecoveryDevice", 150 46: "MessageType_WordRequest", 151 47: "MessageType_WordAck", 152 48: "MessageType_CipheredKeyValue", 153 49: "MessageType_EncryptMessage", 154 50: "MessageType_EncryptedMessage", 155 51: "MessageType_DecryptMessage", 156 52: "MessageType_DecryptedMessage", 157 53: "MessageType_SignIdentity", 158 54: "MessageType_SignedIdentity", 159 55: "MessageType_GetFeatures", 160 56: "MessageType_EthereumGetAddress", 161 57: "MessageType_EthereumAddress", 162 58: "MessageType_EthereumSignTx", 163 59: "MessageType_EthereumTxRequest", 164 60: "MessageType_EthereumTxAck", 165 61: "MessageType_GetECDHSessionKey", 166 62: "MessageType_ECDHSessionKey", 167 63: "MessageType_SetU2FCounter", 168 64: "MessageType_EthereumSignMessage", 169 65: "MessageType_EthereumVerifyMessage", 170 66: "MessageType_EthereumMessageSignature", 171 100: "MessageType_DebugLinkDecision", 172 101: "MessageType_DebugLinkGetState", 173 102: "MessageType_DebugLinkState", 174 103: "MessageType_DebugLinkStop", 175 104: "MessageType_DebugLinkLog", 176 110: "MessageType_DebugLinkMemoryRead", 177 111: "MessageType_DebugLinkMemory", 178 112: "MessageType_DebugLinkMemoryWrite", 179 113: "MessageType_DebugLinkFlashErase", 180 } 181 var MessageType_value = map[string]int32{ 182 "MessageType_Initialize": 0, 183 "MessageType_Ping": 1, 184 "MessageType_Success": 2, 185 "MessageType_Failure": 3, 186 "MessageType_ChangePin": 4, 187 "MessageType_WipeDevice": 5, 188 "MessageType_FirmwareErase": 6, 189 "MessageType_FirmwareUpload": 7, 190 "MessageType_FirmwareRequest": 8, 191 "MessageType_GetEntropy": 9, 192 "MessageType_Entropy": 10, 193 "MessageType_GetPublicKey": 11, 194 "MessageType_PublicKey": 12, 195 "MessageType_LoadDevice": 13, 196 "MessageType_ResetDevice": 14, 197 "MessageType_SignTx": 15, 198 "MessageType_SimpleSignTx": 16, 199 "MessageType_Features": 17, 200 "MessageType_PinMatrixRequest": 18, 201 "MessageType_PinMatrixAck": 19, 202 "MessageType_Cancel": 20, 203 "MessageType_TxRequest": 21, 204 "MessageType_TxAck": 22, 205 "MessageType_CipherKeyValue": 23, 206 "MessageType_ClearSession": 24, 207 "MessageType_ApplySettings": 25, 208 "MessageType_ButtonRequest": 26, 209 "MessageType_ButtonAck": 27, 210 "MessageType_ApplyFlags": 28, 211 "MessageType_GetAddress": 29, 212 "MessageType_Address": 30, 213 "MessageType_SelfTest": 32, 214 "MessageType_BackupDevice": 34, 215 "MessageType_EntropyRequest": 35, 216 "MessageType_EntropyAck": 36, 217 "MessageType_SignMessage": 38, 218 "MessageType_VerifyMessage": 39, 219 "MessageType_MessageSignature": 40, 220 "MessageType_PassphraseRequest": 41, 221 "MessageType_PassphraseAck": 42, 222 "MessageType_EstimateTxSize": 43, 223 "MessageType_TxSize": 44, 224 "MessageType_RecoveryDevice": 45, 225 "MessageType_WordRequest": 46, 226 "MessageType_WordAck": 47, 227 "MessageType_CipheredKeyValue": 48, 228 "MessageType_EncryptMessage": 49, 229 "MessageType_EncryptedMessage": 50, 230 "MessageType_DecryptMessage": 51, 231 "MessageType_DecryptedMessage": 52, 232 "MessageType_SignIdentity": 53, 233 "MessageType_SignedIdentity": 54, 234 "MessageType_GetFeatures": 55, 235 "MessageType_EthereumGetAddress": 56, 236 "MessageType_EthereumAddress": 57, 237 "MessageType_EthereumSignTx": 58, 238 "MessageType_EthereumTxRequest": 59, 239 "MessageType_EthereumTxAck": 60, 240 "MessageType_GetECDHSessionKey": 61, 241 "MessageType_ECDHSessionKey": 62, 242 "MessageType_SetU2FCounter": 63, 243 "MessageType_EthereumSignMessage": 64, 244 "MessageType_EthereumVerifyMessage": 65, 245 "MessageType_EthereumMessageSignature": 66, 246 "MessageType_DebugLinkDecision": 100, 247 "MessageType_DebugLinkGetState": 101, 248 "MessageType_DebugLinkState": 102, 249 "MessageType_DebugLinkStop": 103, 250 "MessageType_DebugLinkLog": 104, 251 "MessageType_DebugLinkMemoryRead": 110, 252 "MessageType_DebugLinkMemory": 111, 253 "MessageType_DebugLinkMemoryWrite": 112, 254 "MessageType_DebugLinkFlashErase": 113, 255 } 256 257 func (x MessageType) Enum() *MessageType { 258 p := new(MessageType) 259 *p = x 260 return p 261 } 262 func (x MessageType) String() string { 263 return proto.EnumName(MessageType_name, int32(x)) 264 } 265 func (x *MessageType) UnmarshalJSON(data []byte) error { 266 value, err := proto.UnmarshalJSONEnum(MessageType_value, data, "MessageType") 267 if err != nil { 268 return err 269 } 270 *x = MessageType(value) 271 return nil 272 } 273 func (MessageType) EnumDescriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } 274 275 //* 276 //请求:将设备重置为默认状态并询问设备详细信息 277 //下一个特征 278 type Initialize struct { 279 XXX_unrecognized []byte `json:"-"` 280 } 281 282 func (m *Initialize) Reset() { *m = Initialize{} } 283 func (m *Initialize) String() string { return proto.CompactTextString(m) } 284 func (*Initialize) ProtoMessage() {} 285 func (*Initialize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{0} } 286 287 //* 288 //请求:询问设备详细信息(无设备重置) 289 //下一个特征 290 type GetFeatures struct { 291 XXX_unrecognized []byte `json:"-"` 292 } 293 294 func (m *GetFeatures) Reset() { *m = GetFeatures{} } 295 func (m *GetFeatures) String() string { return proto.CompactTextString(m) } 296 func (*GetFeatures) ProtoMessage() {} 297 func (*GetFeatures) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{1} } 298 299 //* 300 //响应:报告有关设备的各种信息 301 //@prev初始化 302 //@上一个获取功能 303 type Features struct { 304 Vendor *string `protobuf:"bytes,1,opt,name=vendor" json:"vendor,omitempty"` 305 MajorVersion *uint32 `protobuf:"varint,2,opt,name=major_version,json=majorVersion" json:"major_version,omitempty"` 306 MinorVersion *uint32 `protobuf:"varint,3,opt,name=minor_version,json=minorVersion" json:"minor_version,omitempty"` 307 PatchVersion *uint32 `protobuf:"varint,4,opt,name=patch_version,json=patchVersion" json:"patch_version,omitempty"` 308 BootloaderMode *bool `protobuf:"varint,5,opt,name=bootloader_mode,json=bootloaderMode" json:"bootloader_mode,omitempty"` 309 DeviceId *string `protobuf:"bytes,6,opt,name=device_id,json=deviceId" json:"device_id,omitempty"` 310 PinProtection *bool `protobuf:"varint,7,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` 311 PassphraseProtection *bool `protobuf:"varint,8,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 312 Language *string `protobuf:"bytes,9,opt,name=language" json:"language,omitempty"` 313 Label *string `protobuf:"bytes,10,opt,name=label" json:"label,omitempty"` 314 Coins []*CoinType `protobuf:"bytes,11,rep,name=coins" json:"coins,omitempty"` 315 Initialized *bool `protobuf:"varint,12,opt,name=initialized" json:"initialized,omitempty"` 316 Revision []byte `protobuf:"bytes,13,opt,name=revision" json:"revision,omitempty"` 317 BootloaderHash []byte `protobuf:"bytes,14,opt,name=bootloader_hash,json=bootloaderHash" json:"bootloader_hash,omitempty"` 318 Imported *bool `protobuf:"varint,15,opt,name=imported" json:"imported,omitempty"` 319 PinCached *bool `protobuf:"varint,16,opt,name=pin_cached,json=pinCached" json:"pin_cached,omitempty"` 320 PassphraseCached *bool `protobuf:"varint,17,opt,name=passphrase_cached,json=passphraseCached" json:"passphrase_cached,omitempty"` 321 FirmwarePresent *bool `protobuf:"varint,18,opt,name=firmware_present,json=firmwarePresent" json:"firmware_present,omitempty"` 322 NeedsBackup *bool `protobuf:"varint,19,opt,name=needs_backup,json=needsBackup" json:"needs_backup,omitempty"` 323 Flags *uint32 `protobuf:"varint,20,opt,name=flags" json:"flags,omitempty"` 324 XXX_unrecognized []byte `json:"-"` 325 } 326 327 func (m *Features) Reset() { *m = Features{} } 328 func (m *Features) String() string { return proto.CompactTextString(m) } 329 func (*Features) ProtoMessage() {} 330 func (*Features) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{2} } 331 332 func (m *Features) GetVendor() string { 333 if m != nil && m.Vendor != nil { 334 return *m.Vendor 335 } 336 return "" 337 } 338 339 func (m *Features) GetMajorVersion() uint32 { 340 if m != nil && m.MajorVersion != nil { 341 return *m.MajorVersion 342 } 343 return 0 344 } 345 346 func (m *Features) GetMinorVersion() uint32 { 347 if m != nil && m.MinorVersion != nil { 348 return *m.MinorVersion 349 } 350 return 0 351 } 352 353 func (m *Features) GetPatchVersion() uint32 { 354 if m != nil && m.PatchVersion != nil { 355 return *m.PatchVersion 356 } 357 return 0 358 } 359 360 func (m *Features) GetBootloaderMode() bool { 361 if m != nil && m.BootloaderMode != nil { 362 return *m.BootloaderMode 363 } 364 return false 365 } 366 367 func (m *Features) GetDeviceId() string { 368 if m != nil && m.DeviceId != nil { 369 return *m.DeviceId 370 } 371 return "" 372 } 373 374 func (m *Features) GetPinProtection() bool { 375 if m != nil && m.PinProtection != nil { 376 return *m.PinProtection 377 } 378 return false 379 } 380 381 func (m *Features) GetPassphraseProtection() bool { 382 if m != nil && m.PassphraseProtection != nil { 383 return *m.PassphraseProtection 384 } 385 return false 386 } 387 388 func (m *Features) GetLanguage() string { 389 if m != nil && m.Language != nil { 390 return *m.Language 391 } 392 return "" 393 } 394 395 func (m *Features) GetLabel() string { 396 if m != nil && m.Label != nil { 397 return *m.Label 398 } 399 return "" 400 } 401 402 func (m *Features) GetCoins() []*CoinType { 403 if m != nil { 404 return m.Coins 405 } 406 return nil 407 } 408 409 func (m *Features) GetInitialized() bool { 410 if m != nil && m.Initialized != nil { 411 return *m.Initialized 412 } 413 return false 414 } 415 416 func (m *Features) GetRevision() []byte { 417 if m != nil { 418 return m.Revision 419 } 420 return nil 421 } 422 423 func (m *Features) GetBootloaderHash() []byte { 424 if m != nil { 425 return m.BootloaderHash 426 } 427 return nil 428 } 429 430 func (m *Features) GetImported() bool { 431 if m != nil && m.Imported != nil { 432 return *m.Imported 433 } 434 return false 435 } 436 437 func (m *Features) GetPinCached() bool { 438 if m != nil && m.PinCached != nil { 439 return *m.PinCached 440 } 441 return false 442 } 443 444 func (m *Features) GetPassphraseCached() bool { 445 if m != nil && m.PassphraseCached != nil { 446 return *m.PassphraseCached 447 } 448 return false 449 } 450 451 func (m *Features) GetFirmwarePresent() bool { 452 if m != nil && m.FirmwarePresent != nil { 453 return *m.FirmwarePresent 454 } 455 return false 456 } 457 458 func (m *Features) GetNeedsBackup() bool { 459 if m != nil && m.NeedsBackup != nil { 460 return *m.NeedsBackup 461 } 462 return false 463 } 464 465 func (m *Features) GetFlags() uint32 { 466 if m != nil && m.Flags != nil { 467 return *m.Flags 468 } 469 return 0 470 } 471 472 //* 473 //请求:清除会话(删除缓存的pin、密码短语等)。 474 //下一个成功 475 type ClearSession struct { 476 XXX_unrecognized []byte `json:"-"` 477 } 478 479 func (m *ClearSession) Reset() { *m = ClearSession{} } 480 func (m *ClearSession) String() string { return proto.CompactTextString(m) } 481 func (*ClearSession) ProtoMessage() {} 482 func (*ClearSession) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{3} } 483 484 //* 485 //请求:更改设备的语言和/或标签 486 //下一个成功 487 //下一次失败 488 //@下一步按钮请求 489 //@下一个PinMatrixRequest 490 type ApplySettings struct { 491 Language *string `protobuf:"bytes,1,opt,name=language" json:"language,omitempty"` 492 Label *string `protobuf:"bytes,2,opt,name=label" json:"label,omitempty"` 493 UsePassphrase *bool `protobuf:"varint,3,opt,name=use_passphrase,json=usePassphrase" json:"use_passphrase,omitempty"` 494 Homescreen []byte `protobuf:"bytes,4,opt,name=homescreen" json:"homescreen,omitempty"` 495 XXX_unrecognized []byte `json:"-"` 496 } 497 498 func (m *ApplySettings) Reset() { *m = ApplySettings{} } 499 func (m *ApplySettings) String() string { return proto.CompactTextString(m) } 500 func (*ApplySettings) ProtoMessage() {} 501 func (*ApplySettings) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{4} } 502 503 func (m *ApplySettings) GetLanguage() string { 504 if m != nil && m.Language != nil { 505 return *m.Language 506 } 507 return "" 508 } 509 510 func (m *ApplySettings) GetLabel() string { 511 if m != nil && m.Label != nil { 512 return *m.Label 513 } 514 return "" 515 } 516 517 func (m *ApplySettings) GetUsePassphrase() bool { 518 if m != nil && m.UsePassphrase != nil { 519 return *m.UsePassphrase 520 } 521 return false 522 } 523 524 func (m *ApplySettings) GetHomescreen() []byte { 525 if m != nil { 526 return m.Homescreen 527 } 528 return nil 529 } 530 531 //* 532 //请求:设置设备的标志 533 //下一个成功 534 //下一次失败 535 type ApplyFlags struct { 536 Flags *uint32 `protobuf:"varint,1,opt,name=flags" json:"flags,omitempty"` 537 XXX_unrecognized []byte `json:"-"` 538 } 539 540 func (m *ApplyFlags) Reset() { *m = ApplyFlags{} } 541 func (m *ApplyFlags) String() string { return proto.CompactTextString(m) } 542 func (*ApplyFlags) ProtoMessage() {} 543 func (*ApplyFlags) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{5} } 544 545 func (m *ApplyFlags) GetFlags() uint32 { 546 if m != nil && m.Flags != nil { 547 return *m.Flags 548 } 549 return 0 550 } 551 552 //* 553 //请求:启动用于设置/更改/删除PIN的工作流 554 //@下一步按钮请求 555 //@下一个PinMatrixRequest 556 type ChangePin struct { 557 Remove *bool `protobuf:"varint,1,opt,name=remove" json:"remove,omitempty"` 558 XXX_unrecognized []byte `json:"-"` 559 } 560 561 func (m *ChangePin) Reset() { *m = ChangePin{} } 562 func (m *ChangePin) String() string { return proto.CompactTextString(m) } 563 func (*ChangePin) ProtoMessage() {} 564 func (*ChangePin) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{6} } 565 566 func (m *ChangePin) GetRemove() bool { 567 if m != nil && m.Remove != nil { 568 return *m.Remove 569 } 570 return false 571 } 572 573 //* 574 //请求:测试设备是否处于活动状态,设备发送成功响应的消息。 575 //下一个成功 576 type Ping struct { 577 Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` 578 ButtonProtection *bool `protobuf:"varint,2,opt,name=button_protection,json=buttonProtection" json:"button_protection,omitempty"` 579 PinProtection *bool `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` 580 PassphraseProtection *bool `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 581 XXX_unrecognized []byte `json:"-"` 582 } 583 584 func (m *Ping) Reset() { *m = Ping{} } 585 func (m *Ping) String() string { return proto.CompactTextString(m) } 586 func (*Ping) ProtoMessage() {} 587 func (*Ping) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{7} } 588 589 func (m *Ping) GetMessage() string { 590 if m != nil && m.Message != nil { 591 return *m.Message 592 } 593 return "" 594 } 595 596 func (m *Ping) GetButtonProtection() bool { 597 if m != nil && m.ButtonProtection != nil { 598 return *m.ButtonProtection 599 } 600 return false 601 } 602 603 func (m *Ping) GetPinProtection() bool { 604 if m != nil && m.PinProtection != nil { 605 return *m.PinProtection 606 } 607 return false 608 } 609 610 func (m *Ping) GetPassphraseProtection() bool { 611 if m != nil && m.PassphraseProtection != nil { 612 return *m.PassphraseProtection 613 } 614 return false 615 } 616 617 //* 618 //响应:上一个请求成功 619 type Success struct { 620 Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` 621 XXX_unrecognized []byte `json:"-"` 622 } 623 624 func (m *Success) Reset() { *m = Success{} } 625 func (m *Success) String() string { return proto.CompactTextString(m) } 626 func (*Success) ProtoMessage() {} 627 func (*Success) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{8} } 628 629 func (m *Success) GetMessage() string { 630 if m != nil && m.Message != nil { 631 return *m.Message 632 } 633 return "" 634 } 635 636 //* 637 //响应:上一个请求失败 638 type Failure struct { 639 Code *FailureType `protobuf:"varint,1,opt,name=code,enum=FailureType" json:"code,omitempty"` 640 Message *string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` 641 XXX_unrecognized []byte `json:"-"` 642 } 643 644 func (m *Failure) Reset() { *m = Failure{} } 645 func (m *Failure) String() string { return proto.CompactTextString(m) } 646 func (*Failure) ProtoMessage() {} 647 func (*Failure) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{9} } 648 649 func (m *Failure) GetCode() FailureType { 650 if m != nil && m.Code != nil { 651 return *m.Code 652 } 653 return FailureType_Failure_UnexpectedMessage 654 } 655 656 func (m *Failure) GetMessage() string { 657 if m != nil && m.Message != nil { 658 return *m.Message 659 } 660 return "" 661 } 662 663 //* 664 //响应:设备正在等待按下硬件按钮。 665 //下一钮 666 //下次取消 667 type ButtonRequest struct { 668 Code *ButtonRequestType `protobuf:"varint,1,opt,name=code,enum=ButtonRequestType" json:"code,omitempty"` 669 Data *string `protobuf:"bytes,2,opt,name=data" json:"data,omitempty"` 670 XXX_unrecognized []byte `json:"-"` 671 } 672 673 func (m *ButtonRequest) Reset() { *m = ButtonRequest{} } 674 func (m *ButtonRequest) String() string { return proto.CompactTextString(m) } 675 func (*ButtonRequest) ProtoMessage() {} 676 func (*ButtonRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{10} } 677 678 func (m *ButtonRequest) GetCode() ButtonRequestType { 679 if m != nil && m.Code != nil { 680 return *m.Code 681 } 682 return ButtonRequestType_ButtonRequest_Other 683 } 684 685 func (m *ButtonRequest) GetData() string { 686 if m != nil && m.Data != nil { 687 return *m.Data 688 } 689 return "" 690 } 691 692 //* 693 //请求:计算机同意等待硬件按钮按下 694 //@prev按钮请求 695 type ButtonAck struct { 696 XXX_unrecognized []byte `json:"-"` 697 } 698 699 func (m *ButtonAck) Reset() { *m = ButtonAck{} } 700 func (m *ButtonAck) String() string { return proto.CompactTextString(m) } 701 func (*ButtonAck) ProtoMessage() {} 702 func (*ButtonAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{11} } 703 704 //* 705 //回答:设备要求计算机显示管脚矩阵,并等待使用此矩阵方案编码的管脚。 706 //@下一个Pinmatrixack 707 //下次取消 708 type PinMatrixRequest struct { 709 Type *PinMatrixRequestType `protobuf:"varint,1,opt,name=type,enum=PinMatrixRequestType" json:"type,omitempty"` 710 XXX_unrecognized []byte `json:"-"` 711 } 712 713 func (m *PinMatrixRequest) Reset() { *m = PinMatrixRequest{} } 714 func (m *PinMatrixRequest) String() string { return proto.CompactTextString(m) } 715 func (*PinMatrixRequest) ProtoMessage() {} 716 func (*PinMatrixRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{12} } 717 718 func (m *PinMatrixRequest) GetType() PinMatrixRequestType { 719 if m != nil && m.Type != nil { 720 return *m.Type 721 } 722 return PinMatrixRequestType_PinMatrixRequestType_Current 723 } 724 725 //* 726 //请求:计算机用编码的PIN响应 727 //@上一个PinMatrixRequest 728 type PinMatrixAck struct { 729 Pin *string `protobuf:"bytes,1,req,name=pin" json:"pin,omitempty"` 730 XXX_unrecognized []byte `json:"-"` 731 } 732 733 func (m *PinMatrixAck) Reset() { *m = PinMatrixAck{} } 734 func (m *PinMatrixAck) String() string { return proto.CompactTextString(m) } 735 func (*PinMatrixAck) ProtoMessage() {} 736 func (*PinMatrixAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{13} } 737 738 func (m *PinMatrixAck) GetPin() string { 739 if m != nil && m.Pin != nil { 740 return *m.Pin 741 } 742 return "" 743 } 744 745 //* 746 //请求:中止上次需要用户交互的操作 747 //@prev按钮请求 748 //@上一个PinMatrixRequest 749 //@prev密码请求 750 type Cancel struct { 751 XXX_unrecognized []byte `json:"-"` 752 } 753 754 func (m *Cancel) Reset() { *m = Cancel{} } 755 func (m *Cancel) String() string { return proto.CompactTextString(m) } 756 func (*Cancel) ProtoMessage() {} 757 func (*Cancel) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{14} } 758 759 //* 760 //响应:设备等待加密密码短语 761 //@下一个密码检查 762 //下次取消 763 type PassphraseRequest struct { 764 XXX_unrecognized []byte `json:"-"` 765 } 766 767 func (m *PassphraseRequest) Reset() { *m = PassphraseRequest{} } 768 func (m *PassphraseRequest) String() string { return proto.CompactTextString(m) } 769 func (*PassphraseRequest) ProtoMessage() {} 770 func (*PassphraseRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{15} } 771 772 //* 773 //请求:返回密码短语 774 //@prev密码请求 775 type PassphraseAck struct { 776 Passphrase *string `protobuf:"bytes,1,req,name=passphrase" json:"passphrase,omitempty"` 777 XXX_unrecognized []byte `json:"-"` 778 } 779 780 func (m *PassphraseAck) Reset() { *m = PassphraseAck{} } 781 func (m *PassphraseAck) String() string { return proto.CompactTextString(m) } 782 func (*PassphraseAck) ProtoMessage() {} 783 func (*PassphraseAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{16} } 784 785 func (m *PassphraseAck) GetPassphrase() string { 786 if m != nil && m.Passphrase != nil { 787 return *m.Passphrase 788 } 789 return "" 790 } 791 792 //* 793 //请求:请求硬件RNG生成的随机数据样本。可用于测试。 794 //@下一步按钮请求 795 //@下一个熵 796 //下一次失败 797 type GetEntropy struct { 798 Size *uint32 `protobuf:"varint,1,req,name=size" json:"size,omitempty"` 799 XXX_unrecognized []byte `json:"-"` 800 } 801 802 func (m *GetEntropy) Reset() { *m = GetEntropy{} } 803 func (m *GetEntropy) String() string { return proto.CompactTextString(m) } 804 func (*GetEntropy) ProtoMessage() {} 805 func (*GetEntropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{17} } 806 807 func (m *GetEntropy) GetSize() uint32 { 808 if m != nil && m.Size != nil { 809 return *m.Size 810 } 811 return 0 812 } 813 814 //* 815 //响应:用内部RNG生成的随机数据回复 816 //@prev get熵 817 type Entropy struct { 818 Entropy []byte `protobuf:"bytes,1,req,name=entropy" json:"entropy,omitempty"` 819 XXX_unrecognized []byte `json:"-"` 820 } 821 822 func (m *Entropy) Reset() { *m = Entropy{} } 823 func (m *Entropy) String() string { return proto.CompactTextString(m) } 824 func (*Entropy) ProtoMessage() {} 825 func (*Entropy) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{18} } 826 827 func (m *Entropy) GetEntropy() []byte { 828 if m != nil { 829 return m.Entropy 830 } 831 return nil 832 } 833 834 //* 835 //请求:请求设备提供与地址路径相对应的公钥 836 //@下一个密码请求 837 //下一个公钥 838 //下一次失败 839 type GetPublicKey struct { 840 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 841 EcdsaCurveName *string `protobuf:"bytes,2,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` 842 ShowDisplay *bool `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` 843 CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 844 XXX_unrecognized []byte `json:"-"` 845 } 846 847 func (m *GetPublicKey) Reset() { *m = GetPublicKey{} } 848 func (m *GetPublicKey) String() string { return proto.CompactTextString(m) } 849 func (*GetPublicKey) ProtoMessage() {} 850 func (*GetPublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{19} } 851 852 const Default_GetPublicKey_CoinName string = "Bitcoin" 853 854 func (m *GetPublicKey) GetAddressN() []uint32 { 855 if m != nil { 856 return m.AddressN 857 } 858 return nil 859 } 860 861 func (m *GetPublicKey) GetEcdsaCurveName() string { 862 if m != nil && m.EcdsaCurveName != nil { 863 return *m.EcdsaCurveName 864 } 865 return "" 866 } 867 868 func (m *GetPublicKey) GetShowDisplay() bool { 869 if m != nil && m.ShowDisplay != nil { 870 return *m.ShowDisplay 871 } 872 return false 873 } 874 875 func (m *GetPublicKey) GetCoinName() string { 876 if m != nil && m.CoinName != nil { 877 return *m.CoinName 878 } 879 return Default_GetPublicKey_CoinName 880 } 881 882 //* 883 //响应:包含从设备专用种子派生的公钥 884 //@prev获取公共密钥 885 type PublicKey struct { 886 Node *HDNodeType `protobuf:"bytes,1,req,name=node" json:"node,omitempty"` 887 Xpub *string `protobuf:"bytes,2,opt,name=xpub" json:"xpub,omitempty"` 888 XXX_unrecognized []byte `json:"-"` 889 } 890 891 func (m *PublicKey) Reset() { *m = PublicKey{} } 892 func (m *PublicKey) String() string { return proto.CompactTextString(m) } 893 func (*PublicKey) ProtoMessage() {} 894 func (*PublicKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{20} } 895 896 func (m *PublicKey) GetNode() *HDNodeType { 897 if m != nil { 898 return m.Node 899 } 900 return nil 901 } 902 903 func (m *PublicKey) GetXpub() string { 904 if m != nil && m.Xpub != nil { 905 return *m.Xpub 906 } 907 return "" 908 } 909 910 //* 911 //请求:向设备询问与地址路径相对应的地址 912 //@下一个密码请求 913 //下一个地址 914 //下一次失败 915 type GetAddress struct { 916 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 917 CoinName *string `protobuf:"bytes,2,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 918 ShowDisplay *bool `protobuf:"varint,3,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` 919 Multisig *MultisigRedeemScriptType `protobuf:"bytes,4,opt,name=multisig" json:"multisig,omitempty"` 920 ScriptType *InputScriptType `protobuf:"varint,5,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"` 921 XXX_unrecognized []byte `json:"-"` 922 } 923 924 func (m *GetAddress) Reset() { *m = GetAddress{} } 925 func (m *GetAddress) String() string { return proto.CompactTextString(m) } 926 func (*GetAddress) ProtoMessage() {} 927 func (*GetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{21} } 928 929 const Default_GetAddress_CoinName string = "Bitcoin" 930 const Default_GetAddress_ScriptType InputScriptType = InputScriptType_SPENDADDRESS 931 932 func (m *GetAddress) GetAddressN() []uint32 { 933 if m != nil { 934 return m.AddressN 935 } 936 return nil 937 } 938 939 func (m *GetAddress) GetCoinName() string { 940 if m != nil && m.CoinName != nil { 941 return *m.CoinName 942 } 943 return Default_GetAddress_CoinName 944 } 945 946 func (m *GetAddress) GetShowDisplay() bool { 947 if m != nil && m.ShowDisplay != nil { 948 return *m.ShowDisplay 949 } 950 return false 951 } 952 953 func (m *GetAddress) GetMultisig() *MultisigRedeemScriptType { 954 if m != nil { 955 return m.Multisig 956 } 957 return nil 958 } 959 960 func (m *GetAddress) GetScriptType() InputScriptType { 961 if m != nil && m.ScriptType != nil { 962 return *m.ScriptType 963 } 964 return Default_GetAddress_ScriptType 965 } 966 967 //* 968 //请求:向设备询问与地址路径对应的以太坊地址 969 //@下一个密码请求 970 //@下一个Ethereumaddress 971 //下一次失败 972 type EthereumGetAddress struct { 973 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 974 ShowDisplay *bool `protobuf:"varint,2,opt,name=show_display,json=showDisplay" json:"show_display,omitempty"` 975 XXX_unrecognized []byte `json:"-"` 976 } 977 978 func (m *EthereumGetAddress) Reset() { *m = EthereumGetAddress{} } 979 func (m *EthereumGetAddress) String() string { return proto.CompactTextString(m) } 980 func (*EthereumGetAddress) ProtoMessage() {} 981 func (*EthereumGetAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{22} } 982 983 func (m *EthereumGetAddress) GetAddressN() []uint32 { 984 if m != nil { 985 return m.AddressN 986 } 987 return nil 988 } 989 990 func (m *EthereumGetAddress) GetShowDisplay() bool { 991 if m != nil && m.ShowDisplay != nil { 992 return *m.ShowDisplay 993 } 994 return false 995 } 996 997 //* 998 //响应:包含从设备专用种子派生的地址 999 //@prev获取地址 1000 type Address struct { 1001 Address *string `protobuf:"bytes,1,req,name=address" json:"address,omitempty"` 1002 XXX_unrecognized []byte `json:"-"` 1003 } 1004 1005 func (m *Address) Reset() { *m = Address{} } 1006 func (m *Address) String() string { return proto.CompactTextString(m) } 1007 func (*Address) ProtoMessage() {} 1008 func (*Address) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{23} } 1009 1010 func (m *Address) GetAddress() string { 1011 if m != nil && m.Address != nil { 1012 return *m.Address 1013 } 1014 return "" 1015 } 1016 1017 //* 1018 //响应:包含从设备专用种子派生的以太坊地址 1019 //@prev以太坊详细地址 1020 type EthereumAddress struct { 1021 Address []byte `protobuf:"bytes,1,req,name=address" json:"address,omitempty"` 1022 XXX_unrecognized []byte `json:"-"` 1023 } 1024 1025 func (m *EthereumAddress) Reset() { *m = EthereumAddress{} } 1026 func (m *EthereumAddress) String() string { return proto.CompactTextString(m) } 1027 func (*EthereumAddress) ProtoMessage() {} 1028 func (*EthereumAddress) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{24} } 1029 1030 func (m *EthereumAddress) GetAddress() []byte { 1031 if m != nil { 1032 return m.Address 1033 } 1034 return nil 1035 } 1036 1037 //* 1038 //请求:请求设备擦除所有敏感数据和设置 1039 //@下一步按钮请求 1040 type WipeDevice struct { 1041 XXX_unrecognized []byte `json:"-"` 1042 } 1043 1044 func (m *WipeDevice) Reset() { *m = WipeDevice{} } 1045 func (m *WipeDevice) String() string { return proto.CompactTextString(m) } 1046 func (*WipeDevice) ProtoMessage() {} 1047 func (*WipeDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{25} } 1048 1049 //* 1050 //请求:从计算机加载种子和相关的内部设置 1051 //@下一步按钮请求 1052 //下一个成功 1053 //下一次失败 1054 type LoadDevice struct { 1055 Mnemonic *string `protobuf:"bytes,1,opt,name=mnemonic" json:"mnemonic,omitempty"` 1056 Node *HDNodeType `protobuf:"bytes,2,opt,name=node" json:"node,omitempty"` 1057 Pin *string `protobuf:"bytes,3,opt,name=pin" json:"pin,omitempty"` 1058 PassphraseProtection *bool `protobuf:"varint,4,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 1059 Language *string `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"` 1060 Label *string `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"` 1061 SkipChecksum *bool `protobuf:"varint,7,opt,name=skip_checksum,json=skipChecksum" json:"skip_checksum,omitempty"` 1062 U2FCounter *uint32 `protobuf:"varint,8,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` 1063 XXX_unrecognized []byte `json:"-"` 1064 } 1065 1066 func (m *LoadDevice) Reset() { *m = LoadDevice{} } 1067 func (m *LoadDevice) String() string { return proto.CompactTextString(m) } 1068 func (*LoadDevice) ProtoMessage() {} 1069 func (*LoadDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{26} } 1070 1071 const Default_LoadDevice_Language string = "english" 1072 1073 func (m *LoadDevice) GetMnemonic() string { 1074 if m != nil && m.Mnemonic != nil { 1075 return *m.Mnemonic 1076 } 1077 return "" 1078 } 1079 1080 func (m *LoadDevice) GetNode() *HDNodeType { 1081 if m != nil { 1082 return m.Node 1083 } 1084 return nil 1085 } 1086 1087 func (m *LoadDevice) GetPin() string { 1088 if m != nil && m.Pin != nil { 1089 return *m.Pin 1090 } 1091 return "" 1092 } 1093 1094 func (m *LoadDevice) GetPassphraseProtection() bool { 1095 if m != nil && m.PassphraseProtection != nil { 1096 return *m.PassphraseProtection 1097 } 1098 return false 1099 } 1100 1101 func (m *LoadDevice) GetLanguage() string { 1102 if m != nil && m.Language != nil { 1103 return *m.Language 1104 } 1105 return Default_LoadDevice_Language 1106 } 1107 1108 func (m *LoadDevice) GetLabel() string { 1109 if m != nil && m.Label != nil { 1110 return *m.Label 1111 } 1112 return "" 1113 } 1114 1115 func (m *LoadDevice) GetSkipChecksum() bool { 1116 if m != nil && m.SkipChecksum != nil { 1117 return *m.SkipChecksum 1118 } 1119 return false 1120 } 1121 1122 func (m *LoadDevice) GetU2FCounter() uint32 { 1123 if m != nil && m.U2FCounter != nil { 1124 return *m.U2FCounter 1125 } 1126 return 0 1127 } 1128 1129 //* 1130 //请求:要求设备进行涉及用户交互的初始化 1131 //@下一项请求 1132 //下一次失败 1133 type ResetDevice struct { 1134 DisplayRandom *bool `protobuf:"varint,1,opt,name=display_random,json=displayRandom" json:"display_random,omitempty"` 1135 Strength *uint32 `protobuf:"varint,2,opt,name=strength,def=256" json:"strength,omitempty"` 1136 PassphraseProtection *bool `protobuf:"varint,3,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 1137 PinProtection *bool `protobuf:"varint,4,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` 1138 Language *string `protobuf:"bytes,5,opt,name=language,def=english" json:"language,omitempty"` 1139 Label *string `protobuf:"bytes,6,opt,name=label" json:"label,omitempty"` 1140 U2FCounter *uint32 `protobuf:"varint,7,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` 1141 SkipBackup *bool `protobuf:"varint,8,opt,name=skip_backup,json=skipBackup" json:"skip_backup,omitempty"` 1142 XXX_unrecognized []byte `json:"-"` 1143 } 1144 1145 func (m *ResetDevice) Reset() { *m = ResetDevice{} } 1146 func (m *ResetDevice) String() string { return proto.CompactTextString(m) } 1147 func (*ResetDevice) ProtoMessage() {} 1148 func (*ResetDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{27} } 1149 1150 const Default_ResetDevice_Strength uint32 = 256 1151 const Default_ResetDevice_Language string = "english" 1152 1153 func (m *ResetDevice) GetDisplayRandom() bool { 1154 if m != nil && m.DisplayRandom != nil { 1155 return *m.DisplayRandom 1156 } 1157 return false 1158 } 1159 1160 func (m *ResetDevice) GetStrength() uint32 { 1161 if m != nil && m.Strength != nil { 1162 return *m.Strength 1163 } 1164 return Default_ResetDevice_Strength 1165 } 1166 1167 func (m *ResetDevice) GetPassphraseProtection() bool { 1168 if m != nil && m.PassphraseProtection != nil { 1169 return *m.PassphraseProtection 1170 } 1171 return false 1172 } 1173 1174 func (m *ResetDevice) GetPinProtection() bool { 1175 if m != nil && m.PinProtection != nil { 1176 return *m.PinProtection 1177 } 1178 return false 1179 } 1180 1181 func (m *ResetDevice) GetLanguage() string { 1182 if m != nil && m.Language != nil { 1183 return *m.Language 1184 } 1185 return Default_ResetDevice_Language 1186 } 1187 1188 func (m *ResetDevice) GetLabel() string { 1189 if m != nil && m.Label != nil { 1190 return *m.Label 1191 } 1192 return "" 1193 } 1194 1195 func (m *ResetDevice) GetU2FCounter() uint32 { 1196 if m != nil && m.U2FCounter != nil { 1197 return *m.U2FCounter 1198 } 1199 return 0 1200 } 1201 1202 func (m *ResetDevice) GetSkipBackup() bool { 1203 if m != nil && m.SkipBackup != nil { 1204 return *m.SkipBackup 1205 } 1206 return false 1207 } 1208 1209 //* 1210 //请求:如果未使用resetdevice备份设备种子,请执行备份 1211 //@下一步按钮请求 1212 type BackupDevice struct { 1213 XXX_unrecognized []byte `json:"-"` 1214 } 1215 1216 func (m *BackupDevice) Reset() { *m = BackupDevice{} } 1217 func (m *BackupDevice) String() string { return proto.CompactTextString(m) } 1218 func (*BackupDevice) ProtoMessage() {} 1219 func (*BackupDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{28} } 1220 1221 //* 1222 //回答:要求主机提供额外的熵 1223 //@上一个重置设备 1224 //@下一个entropack 1225 type EntropyRequest struct { 1226 XXX_unrecognized []byte `json:"-"` 1227 } 1228 1229 func (m *EntropyRequest) Reset() { *m = EntropyRequest{} } 1230 func (m *EntropyRequest) String() string { return proto.CompactTextString(m) } 1231 func (*EntropyRequest) ProtoMessage() {} 1232 func (*EntropyRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{29} } 1233 1234 //* 1235 //请求:为种子生成函数提供额外的熵 1236 //@prev entropy请求 1237 //@下一步按钮请求 1238 type EntropyAck struct { 1239 Entropy []byte `protobuf:"bytes,1,opt,name=entropy" json:"entropy,omitempty"` 1240 XXX_unrecognized []byte `json:"-"` 1241 } 1242 1243 func (m *EntropyAck) Reset() { *m = EntropyAck{} } 1244 func (m *EntropyAck) String() string { return proto.CompactTextString(m) } 1245 func (*EntropyAck) ProtoMessage() {} 1246 func (*EntropyAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{30} } 1247 1248 func (m *EntropyAck) GetEntropy() []byte { 1249 if m != nil { 1250 return m.Entropy 1251 } 1252 return nil 1253 } 1254 1255 //* 1256 //请求:启动恢复工作流,要求用户输入特定的助记词 1257 //用于安全恢复设备,即使在不受信任的计算机上。 1258 //@下一个字请求 1259 type RecoveryDevice struct { 1260 WordCount *uint32 `protobuf:"varint,1,opt,name=word_count,json=wordCount" json:"word_count,omitempty"` 1261 PassphraseProtection *bool `protobuf:"varint,2,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 1262 PinProtection *bool `protobuf:"varint,3,opt,name=pin_protection,json=pinProtection" json:"pin_protection,omitempty"` 1263 Language *string `protobuf:"bytes,4,opt,name=language,def=english" json:"language,omitempty"` 1264 Label *string `protobuf:"bytes,5,opt,name=label" json:"label,omitempty"` 1265 EnforceWordlist *bool `protobuf:"varint,6,opt,name=enforce_wordlist,json=enforceWordlist" json:"enforce_wordlist,omitempty"` 1266 //7为未使用的回收方法保留 1267 Type *uint32 `protobuf:"varint,8,opt,name=type" json:"type,omitempty"` 1268 U2FCounter *uint32 `protobuf:"varint,9,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` 1269 DryRun *bool `protobuf:"varint,10,opt,name=dry_run,json=dryRun" json:"dry_run,omitempty"` 1270 XXX_unrecognized []byte `json:"-"` 1271 } 1272 1273 func (m *RecoveryDevice) Reset() { *m = RecoveryDevice{} } 1274 func (m *RecoveryDevice) String() string { return proto.CompactTextString(m) } 1275 func (*RecoveryDevice) ProtoMessage() {} 1276 func (*RecoveryDevice) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{31} } 1277 1278 const Default_RecoveryDevice_Language string = "english" 1279 1280 func (m *RecoveryDevice) GetWordCount() uint32 { 1281 if m != nil && m.WordCount != nil { 1282 return *m.WordCount 1283 } 1284 return 0 1285 } 1286 1287 func (m *RecoveryDevice) GetPassphraseProtection() bool { 1288 if m != nil && m.PassphraseProtection != nil { 1289 return *m.PassphraseProtection 1290 } 1291 return false 1292 } 1293 1294 func (m *RecoveryDevice) GetPinProtection() bool { 1295 if m != nil && m.PinProtection != nil { 1296 return *m.PinProtection 1297 } 1298 return false 1299 } 1300 1301 func (m *RecoveryDevice) GetLanguage() string { 1302 if m != nil && m.Language != nil { 1303 return *m.Language 1304 } 1305 return Default_RecoveryDevice_Language 1306 } 1307 1308 func (m *RecoveryDevice) GetLabel() string { 1309 if m != nil && m.Label != nil { 1310 return *m.Label 1311 } 1312 return "" 1313 } 1314 1315 func (m *RecoveryDevice) GetEnforceWordlist() bool { 1316 if m != nil && m.EnforceWordlist != nil { 1317 return *m.EnforceWordlist 1318 } 1319 return false 1320 } 1321 1322 func (m *RecoveryDevice) GetType() uint32 { 1323 if m != nil && m.Type != nil { 1324 return *m.Type 1325 } 1326 return 0 1327 } 1328 1329 func (m *RecoveryDevice) GetU2FCounter() uint32 { 1330 if m != nil && m.U2FCounter != nil { 1331 return *m.U2FCounter 1332 } 1333 return 0 1334 } 1335 1336 func (m *RecoveryDevice) GetDryRun() bool { 1337 if m != nil && m.DryRun != nil { 1338 return *m.DryRun 1339 } 1340 return false 1341 } 1342 1343 //* 1344 //响应:设备正在等待用户输入助记符的单词 1345 //它的位置只显示在设备的内部显示器上。 1346 //@预防恢复设备 1347 // 1348 type WordRequest struct { 1349 Type *WordRequestType `protobuf:"varint,1,opt,name=type,enum=WordRequestType" json:"type,omitempty"` 1350 XXX_unrecognized []byte `json:"-"` 1351 } 1352 1353 func (m *WordRequest) Reset() { *m = WordRequest{} } 1354 func (m *WordRequest) String() string { return proto.CompactTextString(m) } 1355 func (*WordRequest) ProtoMessage() {} 1356 func (*WordRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{32} } 1357 1358 func (m *WordRequest) GetType() WordRequestType { 1359 if m != nil && m.Type != nil { 1360 return *m.Type 1361 } 1362 return WordRequestType_WordRequestType_Plain 1363 } 1364 1365 //* 1366 //请求:计算机用助记符中的单词答复 1367 //@上一个字请求 1368 //@下一个字请求 1369 //下一个成功 1370 //下一次失败 1371 type WordAck struct { 1372 Word *string `protobuf:"bytes,1,req,name=word" json:"word,omitempty"` 1373 XXX_unrecognized []byte `json:"-"` 1374 } 1375 1376 func (m *WordAck) Reset() { *m = WordAck{} } 1377 func (m *WordAck) String() string { return proto.CompactTextString(m) } 1378 func (*WordAck) ProtoMessage() {} 1379 func (*WordAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{33} } 1380 1381 func (m *WordAck) GetWord() string { 1382 if m != nil && m.Word != nil { 1383 return *m.Word 1384 } 1385 return "" 1386 } 1387 1388 //* 1389 //请求:要求设备签署消息 1390 //@下一个消息签名 1391 //下一次失败 1392 type SignMessage struct { 1393 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 1394 Message []byte `protobuf:"bytes,2,req,name=message" json:"message,omitempty"` 1395 CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1396 ScriptType *InputScriptType `protobuf:"varint,4,opt,name=script_type,json=scriptType,enum=InputScriptType,def=0" json:"script_type,omitempty"` 1397 XXX_unrecognized []byte `json:"-"` 1398 } 1399 1400 func (m *SignMessage) Reset() { *m = SignMessage{} } 1401 func (m *SignMessage) String() string { return proto.CompactTextString(m) } 1402 func (*SignMessage) ProtoMessage() {} 1403 func (*SignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{34} } 1404 1405 const Default_SignMessage_CoinName string = "Bitcoin" 1406 const Default_SignMessage_ScriptType InputScriptType = InputScriptType_SPENDADDRESS 1407 1408 func (m *SignMessage) GetAddressN() []uint32 { 1409 if m != nil { 1410 return m.AddressN 1411 } 1412 return nil 1413 } 1414 1415 func (m *SignMessage) GetMessage() []byte { 1416 if m != nil { 1417 return m.Message 1418 } 1419 return nil 1420 } 1421 1422 func (m *SignMessage) GetCoinName() string { 1423 if m != nil && m.CoinName != nil { 1424 return *m.CoinName 1425 } 1426 return Default_SignMessage_CoinName 1427 } 1428 1429 func (m *SignMessage) GetScriptType() InputScriptType { 1430 if m != nil && m.ScriptType != nil { 1431 return *m.ScriptType 1432 } 1433 return Default_SignMessage_ScriptType 1434 } 1435 1436 //* 1437 //请求:请求设备验证消息 1438 //下一个成功 1439 //下一次失败 1440 type VerifyMessage struct { 1441 Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 1442 Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` 1443 Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` 1444 CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1445 XXX_unrecognized []byte `json:"-"` 1446 } 1447 1448 func (m *VerifyMessage) Reset() { *m = VerifyMessage{} } 1449 func (m *VerifyMessage) String() string { return proto.CompactTextString(m) } 1450 func (*VerifyMessage) ProtoMessage() {} 1451 func (*VerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{35} } 1452 1453 const Default_VerifyMessage_CoinName string = "Bitcoin" 1454 1455 func (m *VerifyMessage) GetAddress() string { 1456 if m != nil && m.Address != nil { 1457 return *m.Address 1458 } 1459 return "" 1460 } 1461 1462 func (m *VerifyMessage) GetSignature() []byte { 1463 if m != nil { 1464 return m.Signature 1465 } 1466 return nil 1467 } 1468 1469 func (m *VerifyMessage) GetMessage() []byte { 1470 if m != nil { 1471 return m.Message 1472 } 1473 return nil 1474 } 1475 1476 func (m *VerifyMessage) GetCoinName() string { 1477 if m != nil && m.CoinName != nil { 1478 return *m.CoinName 1479 } 1480 return Default_VerifyMessage_CoinName 1481 } 1482 1483 //* 1484 //响应:签名消息 1485 //@上一条标志消息 1486 type MessageSignature struct { 1487 Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 1488 Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` 1489 XXX_unrecognized []byte `json:"-"` 1490 } 1491 1492 func (m *MessageSignature) Reset() { *m = MessageSignature{} } 1493 func (m *MessageSignature) String() string { return proto.CompactTextString(m) } 1494 func (*MessageSignature) ProtoMessage() {} 1495 func (*MessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{36} } 1496 1497 func (m *MessageSignature) GetAddress() string { 1498 if m != nil && m.Address != nil { 1499 return *m.Address 1500 } 1501 return "" 1502 } 1503 1504 func (m *MessageSignature) GetSignature() []byte { 1505 if m != nil { 1506 return m.Signature 1507 } 1508 return nil 1509 } 1510 1511 //* 1512 //请求:要求设备加密消息 1513 //@下一个加密邮件 1514 //下一次失败 1515 type EncryptMessage struct { 1516 Pubkey []byte `protobuf:"bytes,1,opt,name=pubkey" json:"pubkey,omitempty"` 1517 Message []byte `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` 1518 DisplayOnly *bool `protobuf:"varint,3,opt,name=display_only,json=displayOnly" json:"display_only,omitempty"` 1519 AddressN []uint32 `protobuf:"varint,4,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 1520 CoinName *string `protobuf:"bytes,5,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1521 XXX_unrecognized []byte `json:"-"` 1522 } 1523 1524 func (m *EncryptMessage) Reset() { *m = EncryptMessage{} } 1525 func (m *EncryptMessage) String() string { return proto.CompactTextString(m) } 1526 func (*EncryptMessage) ProtoMessage() {} 1527 func (*EncryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{37} } 1528 1529 const Default_EncryptMessage_CoinName string = "Bitcoin" 1530 1531 func (m *EncryptMessage) GetPubkey() []byte { 1532 if m != nil { 1533 return m.Pubkey 1534 } 1535 return nil 1536 } 1537 1538 func (m *EncryptMessage) GetMessage() []byte { 1539 if m != nil { 1540 return m.Message 1541 } 1542 return nil 1543 } 1544 1545 func (m *EncryptMessage) GetDisplayOnly() bool { 1546 if m != nil && m.DisplayOnly != nil { 1547 return *m.DisplayOnly 1548 } 1549 return false 1550 } 1551 1552 func (m *EncryptMessage) GetAddressN() []uint32 { 1553 if m != nil { 1554 return m.AddressN 1555 } 1556 return nil 1557 } 1558 1559 func (m *EncryptMessage) GetCoinName() string { 1560 if m != nil && m.CoinName != nil { 1561 return *m.CoinName 1562 } 1563 return Default_EncryptMessage_CoinName 1564 } 1565 1566 //* 1567 //响应:加密邮件 1568 //@prev加密消息 1569 type EncryptedMessage struct { 1570 Nonce []byte `protobuf:"bytes,1,opt,name=nonce" json:"nonce,omitempty"` 1571 Message []byte `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"` 1572 Hmac []byte `protobuf:"bytes,3,opt,name=hmac" json:"hmac,omitempty"` 1573 XXX_unrecognized []byte `json:"-"` 1574 } 1575 1576 func (m *EncryptedMessage) Reset() { *m = EncryptedMessage{} } 1577 func (m *EncryptedMessage) String() string { return proto.CompactTextString(m) } 1578 func (*EncryptedMessage) ProtoMessage() {} 1579 func (*EncryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{38} } 1580 1581 func (m *EncryptedMessage) GetNonce() []byte { 1582 if m != nil { 1583 return m.Nonce 1584 } 1585 return nil 1586 } 1587 1588 func (m *EncryptedMessage) GetMessage() []byte { 1589 if m != nil { 1590 return m.Message 1591 } 1592 return nil 1593 } 1594 1595 func (m *EncryptedMessage) GetHmac() []byte { 1596 if m != nil { 1597 return m.Hmac 1598 } 1599 return nil 1600 } 1601 1602 //* 1603 //请求:要求设备解密消息 1604 //下一个成功 1605 //下一次失败 1606 type DecryptMessage struct { 1607 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 1608 Nonce []byte `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"` 1609 Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` 1610 Hmac []byte `protobuf:"bytes,4,opt,name=hmac" json:"hmac,omitempty"` 1611 XXX_unrecognized []byte `json:"-"` 1612 } 1613 1614 func (m *DecryptMessage) Reset() { *m = DecryptMessage{} } 1615 func (m *DecryptMessage) String() string { return proto.CompactTextString(m) } 1616 func (*DecryptMessage) ProtoMessage() {} 1617 func (*DecryptMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{39} } 1618 1619 func (m *DecryptMessage) GetAddressN() []uint32 { 1620 if m != nil { 1621 return m.AddressN 1622 } 1623 return nil 1624 } 1625 1626 func (m *DecryptMessage) GetNonce() []byte { 1627 if m != nil { 1628 return m.Nonce 1629 } 1630 return nil 1631 } 1632 1633 func (m *DecryptMessage) GetMessage() []byte { 1634 if m != nil { 1635 return m.Message 1636 } 1637 return nil 1638 } 1639 1640 func (m *DecryptMessage) GetHmac() []byte { 1641 if m != nil { 1642 return m.Hmac 1643 } 1644 return nil 1645 } 1646 1647 //* 1648 //响应:解密的消息 1649 //@prev解密邮件 1650 type DecryptedMessage struct { 1651 Message []byte `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` 1652 Address *string `protobuf:"bytes,2,opt,name=address" json:"address,omitempty"` 1653 XXX_unrecognized []byte `json:"-"` 1654 } 1655 1656 func (m *DecryptedMessage) Reset() { *m = DecryptedMessage{} } 1657 func (m *DecryptedMessage) String() string { return proto.CompactTextString(m) } 1658 func (*DecryptedMessage) ProtoMessage() {} 1659 func (*DecryptedMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{40} } 1660 1661 func (m *DecryptedMessage) GetMessage() []byte { 1662 if m != nil { 1663 return m.Message 1664 } 1665 return nil 1666 } 1667 1668 func (m *DecryptedMessage) GetAddress() string { 1669 if m != nil && m.Address != nil { 1670 return *m.Address 1671 } 1672 return "" 1673 } 1674 1675 //* 1676 //请求:要求设备加密或解密给定密钥的值 1677 //@下一个密码键值 1678 //下一次失败 1679 type CipherKeyValue struct { 1680 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 1681 Key *string `protobuf:"bytes,2,opt,name=key" json:"key,omitempty"` 1682 Value []byte `protobuf:"bytes,3,opt,name=value" json:"value,omitempty"` 1683 Encrypt *bool `protobuf:"varint,4,opt,name=encrypt" json:"encrypt,omitempty"` 1684 AskOnEncrypt *bool `protobuf:"varint,5,opt,name=ask_on_encrypt,json=askOnEncrypt" json:"ask_on_encrypt,omitempty"` 1685 AskOnDecrypt *bool `protobuf:"varint,6,opt,name=ask_on_decrypt,json=askOnDecrypt" json:"ask_on_decrypt,omitempty"` 1686 Iv []byte `protobuf:"bytes,7,opt,name=iv" json:"iv,omitempty"` 1687 XXX_unrecognized []byte `json:"-"` 1688 } 1689 1690 func (m *CipherKeyValue) Reset() { *m = CipherKeyValue{} } 1691 func (m *CipherKeyValue) String() string { return proto.CompactTextString(m) } 1692 func (*CipherKeyValue) ProtoMessage() {} 1693 func (*CipherKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{41} } 1694 1695 func (m *CipherKeyValue) GetAddressN() []uint32 { 1696 if m != nil { 1697 return m.AddressN 1698 } 1699 return nil 1700 } 1701 1702 func (m *CipherKeyValue) GetKey() string { 1703 if m != nil && m.Key != nil { 1704 return *m.Key 1705 } 1706 return "" 1707 } 1708 1709 func (m *CipherKeyValue) GetValue() []byte { 1710 if m != nil { 1711 return m.Value 1712 } 1713 return nil 1714 } 1715 1716 func (m *CipherKeyValue) GetEncrypt() bool { 1717 if m != nil && m.Encrypt != nil { 1718 return *m.Encrypt 1719 } 1720 return false 1721 } 1722 1723 func (m *CipherKeyValue) GetAskOnEncrypt() bool { 1724 if m != nil && m.AskOnEncrypt != nil { 1725 return *m.AskOnEncrypt 1726 } 1727 return false 1728 } 1729 1730 func (m *CipherKeyValue) GetAskOnDecrypt() bool { 1731 if m != nil && m.AskOnDecrypt != nil { 1732 return *m.AskOnDecrypt 1733 } 1734 return false 1735 } 1736 1737 func (m *CipherKeyValue) GetIv() []byte { 1738 if m != nil { 1739 return m.Iv 1740 } 1741 return nil 1742 } 1743 1744 //* 1745 //响应:返回加密/解密值 1746 //@上一个密码键值 1747 type CipheredKeyValue struct { 1748 Value []byte `protobuf:"bytes,1,opt,name=value" json:"value,omitempty"` 1749 XXX_unrecognized []byte `json:"-"` 1750 } 1751 1752 func (m *CipheredKeyValue) Reset() { *m = CipheredKeyValue{} } 1753 func (m *CipheredKeyValue) String() string { return proto.CompactTextString(m) } 1754 func (*CipheredKeyValue) ProtoMessage() {} 1755 func (*CipheredKeyValue) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{42} } 1756 1757 func (m *CipheredKeyValue) GetValue() []byte { 1758 if m != nil { 1759 return m.Value 1760 } 1761 return nil 1762 } 1763 1764 //* 1765 //请求:事务的估计大小 1766 //它的行为与signtx完全相同,这意味着它可以使用txrequest请求 1767 //此调用是非阻塞的(除了可能的密码请求以解锁种子) 1768 //“下一个TXSIZE” 1769 //下一次失败 1770 type EstimateTxSize struct { 1771 OutputsCount *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"` 1772 InputsCount *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"` 1773 CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1774 XXX_unrecognized []byte `json:"-"` 1775 } 1776 1777 func (m *EstimateTxSize) Reset() { *m = EstimateTxSize{} } 1778 func (m *EstimateTxSize) String() string { return proto.CompactTextString(m) } 1779 func (*EstimateTxSize) ProtoMessage() {} 1780 func (*EstimateTxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{43} } 1781 1782 const Default_EstimateTxSize_CoinName string = "Bitcoin" 1783 1784 func (m *EstimateTxSize) GetOutputsCount() uint32 { 1785 if m != nil && m.OutputsCount != nil { 1786 return *m.OutputsCount 1787 } 1788 return 0 1789 } 1790 1791 func (m *EstimateTxSize) GetInputsCount() uint32 { 1792 if m != nil && m.InputsCount != nil { 1793 return *m.InputsCount 1794 } 1795 return 0 1796 } 1797 1798 func (m *EstimateTxSize) GetCoinName() string { 1799 if m != nil && m.CoinName != nil { 1800 return *m.CoinName 1801 } 1802 return Default_EstimateTxSize_CoinName 1803 } 1804 1805 //* 1806 //响应:事务的估计大小 1807 //@上一个估计X大小 1808 type TxSize struct { 1809 TxSize *uint32 `protobuf:"varint,1,opt,name=tx_size,json=txSize" json:"tx_size,omitempty"` 1810 XXX_unrecognized []byte `json:"-"` 1811 } 1812 1813 func (m *TxSize) Reset() { *m = TxSize{} } 1814 func (m *TxSize) String() string { return proto.CompactTextString(m) } 1815 func (*TxSize) ProtoMessage() {} 1816 func (*TxSize) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{44} } 1817 1818 func (m *TxSize) GetTxSize() uint32 { 1819 if m != nil && m.TxSize != nil { 1820 return *m.TxSize 1821 } 1822 return 0 1823 } 1824 1825 //* 1826 //请求:请求设备签署事务 1827 //@下一个密码请求 1828 //@下一个PinMatrixRequest 1829 //下一个TXT请求 1830 //下一次失败 1831 type SignTx struct { 1832 OutputsCount *uint32 `protobuf:"varint,1,req,name=outputs_count,json=outputsCount" json:"outputs_count,omitempty"` 1833 InputsCount *uint32 `protobuf:"varint,2,req,name=inputs_count,json=inputsCount" json:"inputs_count,omitempty"` 1834 CoinName *string `protobuf:"bytes,3,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1835 Version *uint32 `protobuf:"varint,4,opt,name=version,def=1" json:"version,omitempty"` 1836 LockTime *uint32 `protobuf:"varint,5,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"` 1837 XXX_unrecognized []byte `json:"-"` 1838 } 1839 1840 func (m *SignTx) Reset() { *m = SignTx{} } 1841 func (m *SignTx) String() string { return proto.CompactTextString(m) } 1842 func (*SignTx) ProtoMessage() {} 1843 func (*SignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{45} } 1844 1845 const Default_SignTx_CoinName string = "Bitcoin" 1846 const Default_SignTx_Version uint32 = 1 1847 const Default_SignTx_LockTime uint32 = 0 1848 1849 func (m *SignTx) GetOutputsCount() uint32 { 1850 if m != nil && m.OutputsCount != nil { 1851 return *m.OutputsCount 1852 } 1853 return 0 1854 } 1855 1856 func (m *SignTx) GetInputsCount() uint32 { 1857 if m != nil && m.InputsCount != nil { 1858 return *m.InputsCount 1859 } 1860 return 0 1861 } 1862 1863 func (m *SignTx) GetCoinName() string { 1864 if m != nil && m.CoinName != nil { 1865 return *m.CoinName 1866 } 1867 return Default_SignTx_CoinName 1868 } 1869 1870 func (m *SignTx) GetVersion() uint32 { 1871 if m != nil && m.Version != nil { 1872 return *m.Version 1873 } 1874 return Default_SignTx_Version 1875 } 1876 1877 func (m *SignTx) GetLockTime() uint32 { 1878 if m != nil && m.LockTime != nil { 1879 return *m.LockTime 1880 } 1881 return Default_SignTx_LockTime 1882 } 1883 1884 //* 1885 //请求:简化事务签名 1886 //此方法不支持流式处理,因此在输入和输出数量上存在硬件限制。 1887 //如果成功,将使用txrequest消息返回结果。 1888 //@下一个密码请求 1889 //@下一个PinMatrixRequest 1890 //下一个TXT请求 1891 //下一次失败 1892 type SimpleSignTx struct { 1893 Inputs []*TxInputType `protobuf:"bytes,1,rep,name=inputs" json:"inputs,omitempty"` 1894 Outputs []*TxOutputType `protobuf:"bytes,2,rep,name=outputs" json:"outputs,omitempty"` 1895 Transactions []*TransactionType `protobuf:"bytes,3,rep,name=transactions" json:"transactions,omitempty"` 1896 CoinName *string `protobuf:"bytes,4,opt,name=coin_name,json=coinName,def=Bitcoin" json:"coin_name,omitempty"` 1897 Version *uint32 `protobuf:"varint,5,opt,name=version,def=1" json:"version,omitempty"` 1898 LockTime *uint32 `protobuf:"varint,6,opt,name=lock_time,json=lockTime,def=0" json:"lock_time,omitempty"` 1899 XXX_unrecognized []byte `json:"-"` 1900 } 1901 1902 func (m *SimpleSignTx) Reset() { *m = SimpleSignTx{} } 1903 func (m *SimpleSignTx) String() string { return proto.CompactTextString(m) } 1904 func (*SimpleSignTx) ProtoMessage() {} 1905 func (*SimpleSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{46} } 1906 1907 const Default_SimpleSignTx_CoinName string = "Bitcoin" 1908 const Default_SimpleSignTx_Version uint32 = 1 1909 const Default_SimpleSignTx_LockTime uint32 = 0 1910 1911 func (m *SimpleSignTx) GetInputs() []*TxInputType { 1912 if m != nil { 1913 return m.Inputs 1914 } 1915 return nil 1916 } 1917 1918 func (m *SimpleSignTx) GetOutputs() []*TxOutputType { 1919 if m != nil { 1920 return m.Outputs 1921 } 1922 return nil 1923 } 1924 1925 func (m *SimpleSignTx) GetTransactions() []*TransactionType { 1926 if m != nil { 1927 return m.Transactions 1928 } 1929 return nil 1930 } 1931 1932 func (m *SimpleSignTx) GetCoinName() string { 1933 if m != nil && m.CoinName != nil { 1934 return *m.CoinName 1935 } 1936 return Default_SimpleSignTx_CoinName 1937 } 1938 1939 func (m *SimpleSignTx) GetVersion() uint32 { 1940 if m != nil && m.Version != nil { 1941 return *m.Version 1942 } 1943 return Default_SimpleSignTx_Version 1944 } 1945 1946 func (m *SimpleSignTx) GetLockTime() uint32 { 1947 if m != nil && m.LockTime != nil { 1948 return *m.LockTime 1949 } 1950 return Default_SimpleSignTx_LockTime 1951 } 1952 1953 //* 1954 //响应:设备请求签署事务的信息或返回最后一个结果 1955 //如果设置了请求_索引,则设备等待txack消息(根据请求_类型填写字段) 1956 //如果设置了签名索引,“签名”包含签名索引输入的签名输入 1957 //预兆信号 1958 //@上一个simplesigntx 1959 //普雷克 1960 type TxRequest struct { 1961 RequestType *RequestType `protobuf:"varint,1,opt,name=request_type,json=requestType,enum=RequestType" json:"request_type,omitempty"` 1962 Details *TxRequestDetailsType `protobuf:"bytes,2,opt,name=details" json:"details,omitempty"` 1963 Serialized *TxRequestSerializedType `protobuf:"bytes,3,opt,name=serialized" json:"serialized,omitempty"` 1964 XXX_unrecognized []byte `json:"-"` 1965 } 1966 1967 func (m *TxRequest) Reset() { *m = TxRequest{} } 1968 func (m *TxRequest) String() string { return proto.CompactTextString(m) } 1969 func (*TxRequest) ProtoMessage() {} 1970 func (*TxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{47} } 1971 1972 func (m *TxRequest) GetRequestType() RequestType { 1973 if m != nil && m.RequestType != nil { 1974 return *m.RequestType 1975 } 1976 return RequestType_TXINPUT 1977 } 1978 1979 func (m *TxRequest) GetDetails() *TxRequestDetailsType { 1980 if m != nil { 1981 return m.Details 1982 } 1983 return nil 1984 } 1985 1986 func (m *TxRequest) GetSerialized() *TxRequestSerializedType { 1987 if m != nil { 1988 return m.Serialized 1989 } 1990 return nil 1991 } 1992 1993 //* 1994 //请求:报告的事务数据 1995 //@前置请求 1996 //下一个TXT请求 1997 type TxAck struct { 1998 Tx *TransactionType `protobuf:"bytes,1,opt,name=tx" json:"tx,omitempty"` 1999 XXX_unrecognized []byte `json:"-"` 2000 } 2001 2002 func (m *TxAck) Reset() { *m = TxAck{} } 2003 func (m *TxAck) String() string { return proto.CompactTextString(m) } 2004 func (*TxAck) ProtoMessage() {} 2005 func (*TxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{48} } 2006 2007 func (m *TxAck) GetTx() *TransactionType { 2008 if m != nil { 2009 return m.Tx 2010 } 2011 return nil 2012 } 2013 2014 //* 2015 //请求:请求设备签署事务 2016 //从协议的角度来看,所有字段都是可选的。如果缺少,则每个字段默认为值“0”。 2017 //注意:第一个最多1024字节的数据必须作为此消息的一部分进行传输。 2018 //@下一个密码请求 2019 //@下一个PinMatrixRequest 2020 //@下一个以太坊MtxRequest 2021 //下一次失败 2022 type EthereumSignTx struct { 2023 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 2024 Nonce []byte `protobuf:"bytes,2,opt,name=nonce" json:"nonce,omitempty"` 2025 GasPrice []byte `protobuf:"bytes,3,opt,name=gas_price,json=gasPrice" json:"gas_price,omitempty"` 2026 GasLimit []byte `protobuf:"bytes,4,opt,name=gas_limit,json=gasLimit" json:"gas_limit,omitempty"` 2027 To []byte `protobuf:"bytes,5,opt,name=to" json:"to,omitempty"` 2028 Value []byte `protobuf:"bytes,6,opt,name=value" json:"value,omitempty"` 2029 DataInitialChunk []byte `protobuf:"bytes,7,opt,name=data_initial_chunk,json=dataInitialChunk" json:"data_initial_chunk,omitempty"` 2030 DataLength *uint32 `protobuf:"varint,8,opt,name=data_length,json=dataLength" json:"data_length,omitempty"` 2031 ChainId *uint32 `protobuf:"varint,9,opt,name=chain_id,json=chainId" json:"chain_id,omitempty"` 2032 XXX_unrecognized []byte `json:"-"` 2033 } 2034 2035 func (m *EthereumSignTx) Reset() { *m = EthereumSignTx{} } 2036 func (m *EthereumSignTx) String() string { return proto.CompactTextString(m) } 2037 func (*EthereumSignTx) ProtoMessage() {} 2038 func (*EthereumSignTx) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{49} } 2039 2040 func (m *EthereumSignTx) GetAddressN() []uint32 { 2041 if m != nil { 2042 return m.AddressN 2043 } 2044 return nil 2045 } 2046 2047 func (m *EthereumSignTx) GetNonce() []byte { 2048 if m != nil { 2049 return m.Nonce 2050 } 2051 return nil 2052 } 2053 2054 func (m *EthereumSignTx) GetGasPrice() []byte { 2055 if m != nil { 2056 return m.GasPrice 2057 } 2058 return nil 2059 } 2060 2061 func (m *EthereumSignTx) GetGasLimit() []byte { 2062 if m != nil { 2063 return m.GasLimit 2064 } 2065 return nil 2066 } 2067 2068 func (m *EthereumSignTx) GetTo() []byte { 2069 if m != nil { 2070 return m.To 2071 } 2072 return nil 2073 } 2074 2075 func (m *EthereumSignTx) GetValue() []byte { 2076 if m != nil { 2077 return m.Value 2078 } 2079 return nil 2080 } 2081 2082 func (m *EthereumSignTx) GetDataInitialChunk() []byte { 2083 if m != nil { 2084 return m.DataInitialChunk 2085 } 2086 return nil 2087 } 2088 2089 func (m *EthereumSignTx) GetDataLength() uint32 { 2090 if m != nil && m.DataLength != nil { 2091 return *m.DataLength 2092 } 2093 return 0 2094 } 2095 2096 func (m *EthereumSignTx) GetChainId() uint32 { 2097 if m != nil && m.ChainId != nil { 2098 return *m.ChainId 2099 } 2100 return 0 2101 } 2102 2103 //* 2104 //响应:设备从事务负载请求更多数据,或返回签名。 2105 //如果设置了数据长度,设备将等待更多字节的有效负载。 2106 //否则,签名字段包含计算出的事务签名。所有三个字段都将显示。 2107 //@prev以太坊GNTX 2108 //@下一个以太坊 2109 type EthereumTxRequest struct { 2110 DataLength *uint32 `protobuf:"varint,1,opt,name=data_length,json=dataLength" json:"data_length,omitempty"` 2111 SignatureV *uint32 `protobuf:"varint,2,opt,name=signature_v,json=signatureV" json:"signature_v,omitempty"` 2112 SignatureR []byte `protobuf:"bytes,3,opt,name=signature_r,json=signatureR" json:"signature_r,omitempty"` 2113 SignatureS []byte `protobuf:"bytes,4,opt,name=signature_s,json=signatureS" json:"signature_s,omitempty"` 2114 XXX_unrecognized []byte `json:"-"` 2115 } 2116 2117 func (m *EthereumTxRequest) Reset() { *m = EthereumTxRequest{} } 2118 func (m *EthereumTxRequest) String() string { return proto.CompactTextString(m) } 2119 func (*EthereumTxRequest) ProtoMessage() {} 2120 func (*EthereumTxRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{50} } 2121 2122 func (m *EthereumTxRequest) GetDataLength() uint32 { 2123 if m != nil && m.DataLength != nil { 2124 return *m.DataLength 2125 } 2126 return 0 2127 } 2128 2129 func (m *EthereumTxRequest) GetSignatureV() uint32 { 2130 if m != nil && m.SignatureV != nil { 2131 return *m.SignatureV 2132 } 2133 return 0 2134 } 2135 2136 func (m *EthereumTxRequest) GetSignatureR() []byte { 2137 if m != nil { 2138 return m.SignatureR 2139 } 2140 return nil 2141 } 2142 2143 func (m *EthereumTxRequest) GetSignatureS() []byte { 2144 if m != nil { 2145 return m.SignatureS 2146 } 2147 return nil 2148 } 2149 2150 //* 2151 //请求:事务有效负载数据。 2152 //@上一个以太坊请求 2153 //@下一个以太坊MtxRequest 2154 type EthereumTxAck struct { 2155 DataChunk []byte `protobuf:"bytes,1,opt,name=data_chunk,json=dataChunk" json:"data_chunk,omitempty"` 2156 XXX_unrecognized []byte `json:"-"` 2157 } 2158 2159 func (m *EthereumTxAck) Reset() { *m = EthereumTxAck{} } 2160 func (m *EthereumTxAck) String() string { return proto.CompactTextString(m) } 2161 func (*EthereumTxAck) ProtoMessage() {} 2162 func (*EthereumTxAck) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{51} } 2163 2164 func (m *EthereumTxAck) GetDataChunk() []byte { 2165 if m != nil { 2166 return m.DataChunk 2167 } 2168 return nil 2169 } 2170 2171 //* 2172 //请求:要求设备签署消息 2173 //@下一个以太坊推荐签名 2174 //下一次失败 2175 type EthereumSignMessage struct { 2176 AddressN []uint32 `protobuf:"varint,1,rep,name=address_n,json=addressN" json:"address_n,omitempty"` 2177 Message []byte `protobuf:"bytes,2,req,name=message" json:"message,omitempty"` 2178 XXX_unrecognized []byte `json:"-"` 2179 } 2180 2181 func (m *EthereumSignMessage) Reset() { *m = EthereumSignMessage{} } 2182 func (m *EthereumSignMessage) String() string { return proto.CompactTextString(m) } 2183 func (*EthereumSignMessage) ProtoMessage() {} 2184 func (*EthereumSignMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{52} } 2185 2186 func (m *EthereumSignMessage) GetAddressN() []uint32 { 2187 if m != nil { 2188 return m.AddressN 2189 } 2190 return nil 2191 } 2192 2193 func (m *EthereumSignMessage) GetMessage() []byte { 2194 if m != nil { 2195 return m.Message 2196 } 2197 return nil 2198 } 2199 2200 //* 2201 //请求:请求设备验证消息 2202 //下一个成功 2203 //下一次失败 2204 type EthereumVerifyMessage struct { 2205 Address []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 2206 Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` 2207 Message []byte `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` 2208 XXX_unrecognized []byte `json:"-"` 2209 } 2210 2211 func (m *EthereumVerifyMessage) Reset() { *m = EthereumVerifyMessage{} } 2212 func (m *EthereumVerifyMessage) String() string { return proto.CompactTextString(m) } 2213 func (*EthereumVerifyMessage) ProtoMessage() {} 2214 func (*EthereumVerifyMessage) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{53} } 2215 2216 func (m *EthereumVerifyMessage) GetAddress() []byte { 2217 if m != nil { 2218 return m.Address 2219 } 2220 return nil 2221 } 2222 2223 func (m *EthereumVerifyMessage) GetSignature() []byte { 2224 if m != nil { 2225 return m.Signature 2226 } 2227 return nil 2228 } 2229 2230 func (m *EthereumVerifyMessage) GetMessage() []byte { 2231 if m != nil { 2232 return m.Message 2233 } 2234 return nil 2235 } 2236 2237 //* 2238 //响应:签名消息 2239 //@prev以太坊消息 2240 type EthereumMessageSignature struct { 2241 Address []byte `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 2242 Signature []byte `protobuf:"bytes,2,opt,name=signature" json:"signature,omitempty"` 2243 XXX_unrecognized []byte `json:"-"` 2244 } 2245 2246 func (m *EthereumMessageSignature) Reset() { *m = EthereumMessageSignature{} } 2247 func (m *EthereumMessageSignature) String() string { return proto.CompactTextString(m) } 2248 func (*EthereumMessageSignature) ProtoMessage() {} 2249 func (*EthereumMessageSignature) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{54} } 2250 2251 func (m *EthereumMessageSignature) GetAddress() []byte { 2252 if m != nil { 2253 return m.Address 2254 } 2255 return nil 2256 } 2257 2258 func (m *EthereumMessageSignature) GetSignature() []byte { 2259 if m != nil { 2260 return m.Signature 2261 } 2262 return nil 2263 } 2264 2265 //* 2266 //请求:请求设备签名身份 2267 //@下一个签名的实体 2268 //下一次失败 2269 type SignIdentity struct { 2270 Identity *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"` 2271 ChallengeHidden []byte `protobuf:"bytes,2,opt,name=challenge_hidden,json=challengeHidden" json:"challenge_hidden,omitempty"` 2272 ChallengeVisual *string `protobuf:"bytes,3,opt,name=challenge_visual,json=challengeVisual" json:"challenge_visual,omitempty"` 2273 EcdsaCurveName *string `protobuf:"bytes,4,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` 2274 XXX_unrecognized []byte `json:"-"` 2275 } 2276 2277 func (m *SignIdentity) Reset() { *m = SignIdentity{} } 2278 func (m *SignIdentity) String() string { return proto.CompactTextString(m) } 2279 func (*SignIdentity) ProtoMessage() {} 2280 func (*SignIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{55} } 2281 2282 func (m *SignIdentity) GetIdentity() *IdentityType { 2283 if m != nil { 2284 return m.Identity 2285 } 2286 return nil 2287 } 2288 2289 func (m *SignIdentity) GetChallengeHidden() []byte { 2290 if m != nil { 2291 return m.ChallengeHidden 2292 } 2293 return nil 2294 } 2295 2296 func (m *SignIdentity) GetChallengeVisual() string { 2297 if m != nil && m.ChallengeVisual != nil { 2298 return *m.ChallengeVisual 2299 } 2300 return "" 2301 } 2302 2303 func (m *SignIdentity) GetEcdsaCurveName() string { 2304 if m != nil && m.EcdsaCurveName != nil { 2305 return *m.EcdsaCurveName 2306 } 2307 return "" 2308 } 2309 2310 //* 2311 //响应:设备提供签名标识 2312 //@上一个签名标识 2313 type SignedIdentity struct { 2314 Address *string `protobuf:"bytes,1,opt,name=address" json:"address,omitempty"` 2315 PublicKey []byte `protobuf:"bytes,2,opt,name=public_key,json=publicKey" json:"public_key,omitempty"` 2316 Signature []byte `protobuf:"bytes,3,opt,name=signature" json:"signature,omitempty"` 2317 XXX_unrecognized []byte `json:"-"` 2318 } 2319 2320 func (m *SignedIdentity) Reset() { *m = SignedIdentity{} } 2321 func (m *SignedIdentity) String() string { return proto.CompactTextString(m) } 2322 func (*SignedIdentity) ProtoMessage() {} 2323 func (*SignedIdentity) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{56} } 2324 2325 func (m *SignedIdentity) GetAddress() string { 2326 if m != nil && m.Address != nil { 2327 return *m.Address 2328 } 2329 return "" 2330 } 2331 2332 func (m *SignedIdentity) GetPublicKey() []byte { 2333 if m != nil { 2334 return m.PublicKey 2335 } 2336 return nil 2337 } 2338 2339 func (m *SignedIdentity) GetSignature() []byte { 2340 if m != nil { 2341 return m.Signature 2342 } 2343 return nil 2344 } 2345 2346 //* 2347 //请求:请求设备生成ECDH会话密钥 2348 //@下一个ecdhsessionkey 2349 //下一次失败 2350 type GetECDHSessionKey struct { 2351 Identity *IdentityType `protobuf:"bytes,1,opt,name=identity" json:"identity,omitempty"` 2352 PeerPublicKey []byte `protobuf:"bytes,2,opt,name=peer_public_key,json=peerPublicKey" json:"peer_public_key,omitempty"` 2353 EcdsaCurveName *string `protobuf:"bytes,3,opt,name=ecdsa_curve_name,json=ecdsaCurveName" json:"ecdsa_curve_name,omitempty"` 2354 XXX_unrecognized []byte `json:"-"` 2355 } 2356 2357 func (m *GetECDHSessionKey) Reset() { *m = GetECDHSessionKey{} } 2358 func (m *GetECDHSessionKey) String() string { return proto.CompactTextString(m) } 2359 func (*GetECDHSessionKey) ProtoMessage() {} 2360 func (*GetECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{57} } 2361 2362 func (m *GetECDHSessionKey) GetIdentity() *IdentityType { 2363 if m != nil { 2364 return m.Identity 2365 } 2366 return nil 2367 } 2368 2369 func (m *GetECDHSessionKey) GetPeerPublicKey() []byte { 2370 if m != nil { 2371 return m.PeerPublicKey 2372 } 2373 return nil 2374 } 2375 2376 func (m *GetECDHSessionKey) GetEcdsaCurveName() string { 2377 if m != nil && m.EcdsaCurveName != nil { 2378 return *m.EcdsaCurveName 2379 } 2380 return "" 2381 } 2382 2383 //* 2384 //响应:设备提供ECDH会话密钥 2385 //@prev getecdhsessionkey 2386 type ECDHSessionKey struct { 2387 SessionKey []byte `protobuf:"bytes,1,opt,name=session_key,json=sessionKey" json:"session_key,omitempty"` 2388 XXX_unrecognized []byte `json:"-"` 2389 } 2390 2391 func (m *ECDHSessionKey) Reset() { *m = ECDHSessionKey{} } 2392 func (m *ECDHSessionKey) String() string { return proto.CompactTextString(m) } 2393 func (*ECDHSessionKey) ProtoMessage() {} 2394 func (*ECDHSessionKey) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{58} } 2395 2396 func (m *ECDHSessionKey) GetSessionKey() []byte { 2397 if m != nil { 2398 return m.SessionKey 2399 } 2400 return nil 2401 } 2402 2403 //* 2404 //请求:设置U2F计数器 2405 //下一个成功 2406 type SetU2FCounter struct { 2407 U2FCounter *uint32 `protobuf:"varint,1,opt,name=u2f_counter,json=u2fCounter" json:"u2f_counter,omitempty"` 2408 XXX_unrecognized []byte `json:"-"` 2409 } 2410 2411 func (m *SetU2FCounter) Reset() { *m = SetU2FCounter{} } 2412 func (m *SetU2FCounter) String() string { return proto.CompactTextString(m) } 2413 func (*SetU2FCounter) ProtoMessage() {} 2414 func (*SetU2FCounter) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{59} } 2415 2416 func (m *SetU2FCounter) GetU2FCounter() uint32 { 2417 if m != nil && m.U2FCounter != nil { 2418 return *m.U2FCounter 2419 } 2420 return 0 2421 } 2422 2423 //* 2424 //请求:要求设备删除其固件(以便可以通过firmwareupload进行更换) 2425 //下一个成功 2426 //@下一个固件请求 2427 //下一次失败 2428 type FirmwareErase struct { 2429 Length *uint32 `protobuf:"varint,1,opt,name=length" json:"length,omitempty"` 2430 XXX_unrecognized []byte `json:"-"` 2431 } 2432 2433 func (m *FirmwareErase) Reset() { *m = FirmwareErase{} } 2434 func (m *FirmwareErase) String() string { return proto.CompactTextString(m) } 2435 func (*FirmwareErase) ProtoMessage() {} 2436 func (*FirmwareErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{60} } 2437 2438 func (m *FirmwareErase) GetLength() uint32 { 2439 if m != nil && m.Length != nil { 2440 return *m.Length 2441 } 2442 return 0 2443 } 2444 2445 //* 2446 //响应:请求固件块 2447 //@下一个firmwareupload 2448 type FirmwareRequest struct { 2449 Offset *uint32 `protobuf:"varint,1,opt,name=offset" json:"offset,omitempty"` 2450 Length *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"` 2451 XXX_unrecognized []byte `json:"-"` 2452 } 2453 2454 func (m *FirmwareRequest) Reset() { *m = FirmwareRequest{} } 2455 func (m *FirmwareRequest) String() string { return proto.CompactTextString(m) } 2456 func (*FirmwareRequest) ProtoMessage() {} 2457 func (*FirmwareRequest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{61} } 2458 2459 func (m *FirmwareRequest) GetOffset() uint32 { 2460 if m != nil && m.Offset != nil { 2461 return *m.Offset 2462 } 2463 return 0 2464 } 2465 2466 func (m *FirmwareRequest) GetLength() uint32 { 2467 if m != nil && m.Length != nil { 2468 return *m.Length 2469 } 2470 return 0 2471 } 2472 2473 //* 2474 //请求:以二进制形式向设备发送固件 2475 //下一个成功 2476 //下一次失败 2477 type FirmwareUpload struct { 2478 Payload []byte `protobuf:"bytes,1,req,name=payload" json:"payload,omitempty"` 2479 Hash []byte `protobuf:"bytes,2,opt,name=hash" json:"hash,omitempty"` 2480 XXX_unrecognized []byte `json:"-"` 2481 } 2482 2483 func (m *FirmwareUpload) Reset() { *m = FirmwareUpload{} } 2484 func (m *FirmwareUpload) String() string { return proto.CompactTextString(m) } 2485 func (*FirmwareUpload) ProtoMessage() {} 2486 func (*FirmwareUpload) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{62} } 2487 2488 func (m *FirmwareUpload) GetPayload() []byte { 2489 if m != nil { 2490 return m.Payload 2491 } 2492 return nil 2493 } 2494 2495 func (m *FirmwareUpload) GetHash() []byte { 2496 if m != nil { 2497 return m.Hash 2498 } 2499 return nil 2500 } 2501 2502 //* 2503 //请求:执行设备自检 2504 //下一个成功 2505 //下一次失败 2506 type SelfTest struct { 2507 Payload []byte `protobuf:"bytes,1,opt,name=payload" json:"payload,omitempty"` 2508 XXX_unrecognized []byte `json:"-"` 2509 } 2510 2511 func (m *SelfTest) Reset() { *m = SelfTest{} } 2512 func (m *SelfTest) String() string { return proto.CompactTextString(m) } 2513 func (*SelfTest) ProtoMessage() {} 2514 func (*SelfTest) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{63} } 2515 2516 func (m *SelfTest) GetPayload() []byte { 2517 if m != nil { 2518 return m.Payload 2519 } 2520 return nil 2521 } 2522 2523 //* 2524 //请求:“按下”设备上的按钮 2525 //下一个成功 2526 type DebugLinkDecision struct { 2527 YesNo *bool `protobuf:"varint,1,req,name=yes_no,json=yesNo" json:"yes_no,omitempty"` 2528 XXX_unrecognized []byte `json:"-"` 2529 } 2530 2531 func (m *DebugLinkDecision) Reset() { *m = DebugLinkDecision{} } 2532 func (m *DebugLinkDecision) String() string { return proto.CompactTextString(m) } 2533 func (*DebugLinkDecision) ProtoMessage() {} 2534 func (*DebugLinkDecision) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{64} } 2535 2536 func (m *DebugLinkDecision) GetYesNo() bool { 2537 if m != nil && m.YesNo != nil { 2538 return *m.YesNo 2539 } 2540 return false 2541 } 2542 2543 //* 2544 //请求:计算机请求设备状态 2545 //@下一个debuglinkstate 2546 type DebugLinkGetState struct { 2547 XXX_unrecognized []byte `json:"-"` 2548 } 2549 2550 func (m *DebugLinkGetState) Reset() { *m = DebugLinkGetState{} } 2551 func (m *DebugLinkGetState) String() string { return proto.CompactTextString(m) } 2552 func (*DebugLinkGetState) ProtoMessage() {} 2553 func (*DebugLinkGetState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{65} } 2554 2555 //* 2556 //响应:设备当前状态 2557 //@prev调试获取状态 2558 type DebugLinkState struct { 2559 Layout []byte `protobuf:"bytes,1,opt,name=layout" json:"layout,omitempty"` 2560 Pin *string `protobuf:"bytes,2,opt,name=pin" json:"pin,omitempty"` 2561 Matrix *string `protobuf:"bytes,3,opt,name=matrix" json:"matrix,omitempty"` 2562 Mnemonic *string `protobuf:"bytes,4,opt,name=mnemonic" json:"mnemonic,omitempty"` 2563 Node *HDNodeType `protobuf:"bytes,5,opt,name=node" json:"node,omitempty"` 2564 PassphraseProtection *bool `protobuf:"varint,6,opt,name=passphrase_protection,json=passphraseProtection" json:"passphrase_protection,omitempty"` 2565 ResetWord *string `protobuf:"bytes,7,opt,name=reset_word,json=resetWord" json:"reset_word,omitempty"` 2566 ResetEntropy []byte `protobuf:"bytes,8,opt,name=reset_entropy,json=resetEntropy" json:"reset_entropy,omitempty"` 2567 RecoveryFakeWord *string `protobuf:"bytes,9,opt,name=recovery_fake_word,json=recoveryFakeWord" json:"recovery_fake_word,omitempty"` 2568 RecoveryWordPos *uint32 `protobuf:"varint,10,opt,name=recovery_word_pos,json=recoveryWordPos" json:"recovery_word_pos,omitempty"` 2569 XXX_unrecognized []byte `json:"-"` 2570 } 2571 2572 func (m *DebugLinkState) Reset() { *m = DebugLinkState{} } 2573 func (m *DebugLinkState) String() string { return proto.CompactTextString(m) } 2574 func (*DebugLinkState) ProtoMessage() {} 2575 func (*DebugLinkState) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{66} } 2576 2577 func (m *DebugLinkState) GetLayout() []byte { 2578 if m != nil { 2579 return m.Layout 2580 } 2581 return nil 2582 } 2583 2584 func (m *DebugLinkState) GetPin() string { 2585 if m != nil && m.Pin != nil { 2586 return *m.Pin 2587 } 2588 return "" 2589 } 2590 2591 func (m *DebugLinkState) GetMatrix() string { 2592 if m != nil && m.Matrix != nil { 2593 return *m.Matrix 2594 } 2595 return "" 2596 } 2597 2598 func (m *DebugLinkState) GetMnemonic() string { 2599 if m != nil && m.Mnemonic != nil { 2600 return *m.Mnemonic 2601 } 2602 return "" 2603 } 2604 2605 func (m *DebugLinkState) GetNode() *HDNodeType { 2606 if m != nil { 2607 return m.Node 2608 } 2609 return nil 2610 } 2611 2612 func (m *DebugLinkState) GetPassphraseProtection() bool { 2613 if m != nil && m.PassphraseProtection != nil { 2614 return *m.PassphraseProtection 2615 } 2616 return false 2617 } 2618 2619 func (m *DebugLinkState) GetResetWord() string { 2620 if m != nil && m.ResetWord != nil { 2621 return *m.ResetWord 2622 } 2623 return "" 2624 } 2625 2626 func (m *DebugLinkState) GetResetEntropy() []byte { 2627 if m != nil { 2628 return m.ResetEntropy 2629 } 2630 return nil 2631 } 2632 2633 func (m *DebugLinkState) GetRecoveryFakeWord() string { 2634 if m != nil && m.RecoveryFakeWord != nil { 2635 return *m.RecoveryFakeWord 2636 } 2637 return "" 2638 } 2639 2640 func (m *DebugLinkState) GetRecoveryWordPos() uint32 { 2641 if m != nil && m.RecoveryWordPos != nil { 2642 return *m.RecoveryWordPos 2643 } 2644 return 0 2645 } 2646 2647 //* 2648 // 2649 type DebugLinkStop struct { 2650 XXX_unrecognized []byte `json:"-"` 2651 } 2652 2653 func (m *DebugLinkStop) Reset() { *m = DebugLinkStop{} } 2654 func (m *DebugLinkStop) String() string { return proto.CompactTextString(m) } 2655 func (*DebugLinkStop) ProtoMessage() {} 2656 func (*DebugLinkStop) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{67} } 2657 2658 //* 2659 //响应:设备希望主机记录事件 2660 type DebugLinkLog struct { 2661 Level *uint32 `protobuf:"varint,1,opt,name=level" json:"level,omitempty"` 2662 Bucket *string `protobuf:"bytes,2,opt,name=bucket" json:"bucket,omitempty"` 2663 Text *string `protobuf:"bytes,3,opt,name=text" json:"text,omitempty"` 2664 XXX_unrecognized []byte `json:"-"` 2665 } 2666 2667 func (m *DebugLinkLog) Reset() { *m = DebugLinkLog{} } 2668 func (m *DebugLinkLog) String() string { return proto.CompactTextString(m) } 2669 func (*DebugLinkLog) ProtoMessage() {} 2670 func (*DebugLinkLog) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{68} } 2671 2672 func (m *DebugLinkLog) GetLevel() uint32 { 2673 if m != nil && m.Level != nil { 2674 return *m.Level 2675 } 2676 return 0 2677 } 2678 2679 func (m *DebugLinkLog) GetBucket() string { 2680 if m != nil && m.Bucket != nil { 2681 return *m.Bucket 2682 } 2683 return "" 2684 } 2685 2686 func (m *DebugLinkLog) GetText() string { 2687 if m != nil && m.Text != nil { 2688 return *m.Text 2689 } 2690 return "" 2691 } 2692 2693 //* 2694 //请求:从设备读取内存 2695 //@下一个debuglinkmemory 2696 type DebugLinkMemoryRead struct { 2697 Address *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"` 2698 Length *uint32 `protobuf:"varint,2,opt,name=length" json:"length,omitempty"` 2699 XXX_unrecognized []byte `json:"-"` 2700 } 2701 2702 func (m *DebugLinkMemoryRead) Reset() { *m = DebugLinkMemoryRead{} } 2703 func (m *DebugLinkMemoryRead) String() string { return proto.CompactTextString(m) } 2704 func (*DebugLinkMemoryRead) ProtoMessage() {} 2705 func (*DebugLinkMemoryRead) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{69} } 2706 2707 func (m *DebugLinkMemoryRead) GetAddress() uint32 { 2708 if m != nil && m.Address != nil { 2709 return *m.Address 2710 } 2711 return 0 2712 } 2713 2714 func (m *DebugLinkMemoryRead) GetLength() uint32 { 2715 if m != nil && m.Length != nil { 2716 return *m.Length 2717 } 2718 return 0 2719 } 2720 2721 //* 2722 //响应:设备将内存发送回 2723 //@prev debuglinkmemoryread(上一个debuglinkmemoryread) 2724 type DebugLinkMemory struct { 2725 Memory []byte `protobuf:"bytes,1,opt,name=memory" json:"memory,omitempty"` 2726 XXX_unrecognized []byte `json:"-"` 2727 } 2728 2729 func (m *DebugLinkMemory) Reset() { *m = DebugLinkMemory{} } 2730 func (m *DebugLinkMemory) String() string { return proto.CompactTextString(m) } 2731 func (*DebugLinkMemory) ProtoMessage() {} 2732 func (*DebugLinkMemory) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{70} } 2733 2734 func (m *DebugLinkMemory) GetMemory() []byte { 2735 if m != nil { 2736 return m.Memory 2737 } 2738 return nil 2739 } 2740 2741 //* 2742 //请求:将内存写入设备。 2743 //警告:写入错误位置可能会导致设备无法修复地损坏。 2744 type DebugLinkMemoryWrite struct { 2745 Address *uint32 `protobuf:"varint,1,opt,name=address" json:"address,omitempty"` 2746 Memory []byte `protobuf:"bytes,2,opt,name=memory" json:"memory,omitempty"` 2747 Flash *bool `protobuf:"varint,3,opt,name=flash" json:"flash,omitempty"` 2748 XXX_unrecognized []byte `json:"-"` 2749 } 2750 2751 func (m *DebugLinkMemoryWrite) Reset() { *m = DebugLinkMemoryWrite{} } 2752 func (m *DebugLinkMemoryWrite) String() string { return proto.CompactTextString(m) } 2753 func (*DebugLinkMemoryWrite) ProtoMessage() {} 2754 func (*DebugLinkMemoryWrite) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{71} } 2755 2756 func (m *DebugLinkMemoryWrite) GetAddress() uint32 { 2757 if m != nil && m.Address != nil { 2758 return *m.Address 2759 } 2760 return 0 2761 } 2762 2763 func (m *DebugLinkMemoryWrite) GetMemory() []byte { 2764 if m != nil { 2765 return m.Memory 2766 } 2767 return nil 2768 } 2769 2770 func (m *DebugLinkMemoryWrite) GetFlash() bool { 2771 if m != nil && m.Flash != nil { 2772 return *m.Flash 2773 } 2774 return false 2775 } 2776 2777 //* 2778 //请求:清除设备上的闪存块 2779 //警告:写入错误位置可能会导致设备无法修复地损坏。 2780 type DebugLinkFlashErase struct { 2781 Sector *uint32 `protobuf:"varint,1,opt,name=sector" json:"sector,omitempty"` 2782 XXX_unrecognized []byte `json:"-"` 2783 } 2784 2785 func (m *DebugLinkFlashErase) Reset() { *m = DebugLinkFlashErase{} } 2786 func (m *DebugLinkFlashErase) String() string { return proto.CompactTextString(m) } 2787 func (*DebugLinkFlashErase) ProtoMessage() {} 2788 func (*DebugLinkFlashErase) Descriptor() ([]byte, []int) { return fileDescriptor1, []int{72} } 2789 2790 func (m *DebugLinkFlashErase) GetSector() uint32 { 2791 if m != nil && m.Sector != nil { 2792 return *m.Sector 2793 } 2794 return 0 2795 } 2796 2797 func init() { 2798 proto.RegisterType((*Initialize)(nil), "Initialize") 2799 proto.RegisterType((*GetFeatures)(nil), "GetFeatures") 2800 proto.RegisterType((*Features)(nil), "Features") 2801 proto.RegisterType((*ClearSession)(nil), "ClearSession") 2802 proto.RegisterType((*ApplySettings)(nil), "ApplySettings") 2803 proto.RegisterType((*ApplyFlags)(nil), "ApplyFlags") 2804 proto.RegisterType((*ChangePin)(nil), "ChangePin") 2805 proto.RegisterType((*Ping)(nil), "Ping") 2806 proto.RegisterType((*Success)(nil), "Success") 2807 proto.RegisterType((*Failure)(nil), "Failure") 2808 proto.RegisterType((*ButtonRequest)(nil), "ButtonRequest") 2809 proto.RegisterType((*ButtonAck)(nil), "ButtonAck") 2810 proto.RegisterType((*PinMatrixRequest)(nil), "PinMatrixRequest") 2811 proto.RegisterType((*PinMatrixAck)(nil), "PinMatrixAck") 2812 proto.RegisterType((*Cancel)(nil), "Cancel") 2813 proto.RegisterType((*PassphraseRequest)(nil), "PassphraseRequest") 2814 proto.RegisterType((*PassphraseAck)(nil), "PassphraseAck") 2815 proto.RegisterType((*GetEntropy)(nil), "GetEntropy") 2816 proto.RegisterType((*Entropy)(nil), "Entropy") 2817 proto.RegisterType((*GetPublicKey)(nil), "GetPublicKey") 2818 proto.RegisterType((*PublicKey)(nil), "PublicKey") 2819 proto.RegisterType((*GetAddress)(nil), "GetAddress") 2820 proto.RegisterType((*EthereumGetAddress)(nil), "EthereumGetAddress") 2821 proto.RegisterType((*Address)(nil), "Address") 2822 proto.RegisterType((*EthereumAddress)(nil), "EthereumAddress") 2823 proto.RegisterType((*WipeDevice)(nil), "WipeDevice") 2824 proto.RegisterType((*LoadDevice)(nil), "LoadDevice") 2825 proto.RegisterType((*ResetDevice)(nil), "ResetDevice") 2826 proto.RegisterType((*BackupDevice)(nil), "BackupDevice") 2827 proto.RegisterType((*EntropyRequest)(nil), "EntropyRequest") 2828 proto.RegisterType((*EntropyAck)(nil), "EntropyAck") 2829 proto.RegisterType((*RecoveryDevice)(nil), "RecoveryDevice") 2830 proto.RegisterType((*WordRequest)(nil), "WordRequest") 2831 proto.RegisterType((*WordAck)(nil), "WordAck") 2832 proto.RegisterType((*SignMessage)(nil), "SignMessage") 2833 proto.RegisterType((*VerifyMessage)(nil), "VerifyMessage") 2834 proto.RegisterType((*MessageSignature)(nil), "MessageSignature") 2835 proto.RegisterType((*EncryptMessage)(nil), "EncryptMessage") 2836 proto.RegisterType((*EncryptedMessage)(nil), "EncryptedMessage") 2837 proto.RegisterType((*DecryptMessage)(nil), "DecryptMessage") 2838 proto.RegisterType((*DecryptedMessage)(nil), "DecryptedMessage") 2839 proto.RegisterType((*CipherKeyValue)(nil), "CipherKeyValue") 2840 proto.RegisterType((*CipheredKeyValue)(nil), "CipheredKeyValue") 2841 proto.RegisterType((*EstimateTxSize)(nil), "EstimateTxSize") 2842 proto.RegisterType((*TxSize)(nil), "TxSize") 2843 proto.RegisterType((*SignTx)(nil), "SignTx") 2844 proto.RegisterType((*SimpleSignTx)(nil), "SimpleSignTx") 2845 proto.RegisterType((*TxRequest)(nil), "TxRequest") 2846 proto.RegisterType((*TxAck)(nil), "TxAck") 2847 proto.RegisterType((*EthereumSignTx)(nil), "EthereumSignTx") 2848 proto.RegisterType((*EthereumTxRequest)(nil), "EthereumTxRequest") 2849 proto.RegisterType((*EthereumTxAck)(nil), "EthereumTxAck") 2850 proto.RegisterType((*EthereumSignMessage)(nil), "EthereumSignMessage") 2851 proto.RegisterType((*EthereumVerifyMessage)(nil), "EthereumVerifyMessage") 2852 proto.RegisterType((*EthereumMessageSignature)(nil), "EthereumMessageSignature") 2853 proto.RegisterType((*SignIdentity)(nil), "SignIdentity") 2854 proto.RegisterType((*SignedIdentity)(nil), "SignedIdentity") 2855 proto.RegisterType((*GetECDHSessionKey)(nil), "GetECDHSessionKey") 2856 proto.RegisterType((*ECDHSessionKey)(nil), "ECDHSessionKey") 2857 proto.RegisterType((*SetU2FCounter)(nil), "SetU2FCounter") 2858 proto.RegisterType((*FirmwareErase)(nil), "FirmwareErase") 2859 proto.RegisterType((*FirmwareRequest)(nil), "FirmwareRequest") 2860 proto.RegisterType((*FirmwareUpload)(nil), "FirmwareUpload") 2861 proto.RegisterType((*SelfTest)(nil), "SelfTest") 2862 proto.RegisterType((*DebugLinkDecision)(nil), "DebugLinkDecision") 2863 proto.RegisterType((*DebugLinkGetState)(nil), "DebugLinkGetState") 2864 proto.RegisterType((*DebugLinkState)(nil), "DebugLinkState") 2865 proto.RegisterType((*DebugLinkStop)(nil), "DebugLinkStop") 2866 proto.RegisterType((*DebugLinkLog)(nil), "DebugLinkLog") 2867 proto.RegisterType((*DebugLinkMemoryRead)(nil), "DebugLinkMemoryRead") 2868 proto.RegisterType((*DebugLinkMemory)(nil), "DebugLinkMemory") 2869 proto.RegisterType((*DebugLinkMemoryWrite)(nil), "DebugLinkMemoryWrite") 2870 proto.RegisterType((*DebugLinkFlashErase)(nil), "DebugLinkFlashErase") 2871 proto.RegisterEnum("MessageType", MessageType_name, MessageType_value) 2872 } 2873 2874 func init() { proto.RegisterFile("messages.proto", fileDescriptor1) } 2875 2876 var fileDescriptor1 = []byte{ 2877 //gzip文件描述符或协议的3424字节 2878 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5a, 0xcb, 0x6f, 0xdc, 0x46, 2879 0x9a, 0x5f, 0x76, 0xb7, 0xfa, 0xf1, 0x35, 0xbb, 0x55, 0xa2, 0x2d, 0xbb, 0x2d, 0x5b, 0xb6, 0x4c, 2880 0xc9, 0xb6, 0x64, 0x27, 0xed, 0x44, 0x79, 0x6c, 0xd6, 0xbb, 0x79, 0xc8, 0x7a, 0xd8, 0xde, 0xd8, 2881 0x8e, 0xc0, 0x56, 0x9c, 0xdb, 0x12, 0x14, 0x59, 0xea, 0xae, 0x55, 0x37, 0xc9, 0xf0, 0xa1, 0xa8, 2882 0x7d, 0xd8, 0xeb, 0xee, 0x65, 0x81, 0xec, 0x69, 0x73, 0x1a, 0xe4, 0x36, 0x19, 0x04, 0x18, 0x0c, 2883 0x30, 0x18, 0x60, 0x72, 0x9a, 0x3f, 0x60, 0xfe, 0x8b, 0x39, 0xce, 0x1f, 0x30, 0xe7, 0x41, 0x3d, 2884 0x48, 0x16, 0x29, 0xb6, 0x6c, 0x27, 0xc0, 0x5c, 0x04, 0xd6, 0x57, 0xbf, 0xfe, 0xea, 0x7b, 0xd5, 2885 0x57, 0x5f, 0x7d, 0x25, 0xe8, 0x4e, 0x70, 0x18, 0x5a, 0x43, 0x1c, 0xf6, 0xfd, 0xc0, 0x8b, 0xbc, 2886 0xa5, 0x76, 0x34, 0xf5, 0x93, 0x81, 0xae, 0x02, 0x3c, 0x71, 0x49, 0x44, 0xac, 0x31, 0x79, 0x89, 2887 0xf5, 0x0e, 0xb4, 0x1f, 0xe1, 0x68, 0x0f, 0x5b, 0x51, 0x1c, 0xe0, 0x50, 0xff, 0x69, 0x0e, 0x9a, 2888 0xc9, 0x40, 0xbb, 0x04, 0xf5, 0x13, 0xec, 0x3a, 0x5e, 0xd0, 0x53, 0x56, 0x94, 0xf5, 0x96, 0x21, 2889 0x46, 0xda, 0x2a, 0x74, 0x26, 0xd6, 0x7f, 0x7a, 0x81, 0x79, 0x82, 0x83, 0x90, 0x78, 0x6e, 0xaf, 2890 0xb2, 0xa2, 0xac, 0x77, 0x0c, 0x95, 0x11, 0x5f, 0x70, 0x1a, 0x03, 0x11, 0x57, 0x02, 0x55, 0x05, 2891 0x88, 0x12, 0x25, 0x90, 0x6f, 0x45, 0xf6, 0x28, 0x05, 0xd5, 0x38, 0x88, 0x11, 0x13, 0xd0, 0x1d, 2892 0x98, 0x3f, 0xf4, 0xbc, 0x68, 0xec, 0x59, 0x0e, 0x0e, 0xcc, 0x89, 0xe7, 0xe0, 0xde, 0xdc, 0x8a, 2893 0xb2, 0xde, 0x34, 0xba, 0x19, 0xf9, 0x99, 0xe7, 0x60, 0xed, 0x2a, 0xb4, 0x1c, 0x7c, 0x42, 0x6c, 2894 0x6c, 0x12, 0xa7, 0x57, 0x67, 0x22, 0x37, 0x39, 0xe1, 0x89, 0xa3, 0xdd, 0x82, 0xae, 0x4f, 0x5c, 2895 0x93, 0xda, 0x00, 0xdb, 0x11, 0x5d, 0xab, 0xc1, 0x98, 0x74, 0x7c, 0xe2, 0xee, 0xa7, 0x44, 0xed, 2896 0x3d, 0x58, 0xf4, 0xad, 0x30, 0xf4, 0x47, 0x81, 0x15, 0x62, 0x19, 0xdd, 0x64, 0xe8, 0x8b, 0xd9, 2897 0xa4, 0xf4, 0xa3, 0x25, 0x68, 0x8e, 0x2d, 0x77, 0x18, 0x5b, 0x43, 0xdc, 0x6b, 0xf1, 0x75, 0x93, 2898 0xb1, 0x76, 0x11, 0xe6, 0xc6, 0xd6, 0x21, 0x1e, 0xf7, 0x80, 0x4d, 0xf0, 0x81, 0x76, 0x03, 0xe6, 2899 0x6c, 0x8f, 0xb8, 0x61, 0xaf, 0xbd, 0x52, 0x5d, 0x6f, 0x6f, 0xb6, 0xfa, 0xdb, 0x1e, 0x71, 0x0f, 2900 0xa6, 0x3e, 0x36, 0x38, 0x5d, 0x5b, 0x81, 0x36, 0x49, 0xbd, 0xe4, 0xf4, 0x54, 0xb6, 0xba, 0x4c, 2901 0xa2, 0x8b, 0x06, 0xf8, 0x84, 0x30, 0xb3, 0x75, 0x56, 0x94, 0x75, 0xd5, 0x48, 0xc7, 0x05, 0x93, 2902 0x8d, 0xac, 0x70, 0xd4, 0xeb, 0x32, 0x88, 0x64, 0xb2, 0xc7, 0x56, 0x38, 0xa2, 0x4c, 0xc8, 0xc4, 2903 0xf7, 0x82, 0x08, 0x3b, 0xbd, 0x79, 0xb6, 0x46, 0x3a, 0xd6, 0x96, 0x01, 0xa8, 0xc5, 0x6c, 0xcb, 2904 0x1e, 0x61, 0xa7, 0x87, 0xd8, 0x6c, 0xcb, 0x27, 0xee, 0x36, 0x23, 0x68, 0xf7, 0x60, 0x41, 0xb2, 2905 0x94, 0x40, 0x2d, 0x30, 0x14, 0xca, 0x26, 0x04, 0x78, 0x03, 0xd0, 0x11, 0x09, 0x26, 0xdf, 0x58, 2906 0x01, 0x35, 0x2a, 0x0e, 0xb1, 0x1b, 0xf5, 0x34, 0x86, 0x9d, 0x4f, 0xe8, 0xfb, 0x9c, 0xac, 0xdd, 2907 0x04, 0xd5, 0xc5, 0xd8, 0x09, 0xcd, 0x43, 0xcb, 0x3e, 0x8e, 0xfd, 0xde, 0x05, 0xae, 0x3a, 0xa3, 2908 0x3d, 0x64, 0x24, 0x6a, 0xd3, 0xa3, 0xb1, 0x35, 0x0c, 0x7b, 0x17, 0x59, 0xb8, 0xf0, 0x81, 0xde, 2909 0x05, 0x75, 0x7b, 0x8c, 0xad, 0x60, 0x80, 0x43, 0x6a, 0x04, 0xfd, 0x7f, 0x14, 0xe8, 0x6c, 0xf9, 2910 0xfe, 0x78, 0x3a, 0xc0, 0x51, 0x44, 0xdc, 0x61, 0x98, 0xf3, 0x93, 0x32, 0xcb, 0x4f, 0x15, 0xd9, 2911 0x4f, 0xb7, 0xa0, 0x1b, 0xd3, 0x38, 0x48, 0xf5, 0x61, 0x61, 0xdc, 0x34, 0x3a, 0x71, 0x88, 0xf7, 2912 0x53, 0xa2, 0x76, 0x1d, 0x60, 0xe4, 0x4d, 0x70, 0x68, 0x07, 0x18, 0xf3, 0x20, 0x56, 0x0d, 0x89, 2913 0xa2, 0xeb, 0x00, 0x4c, 0x92, 0x3d, 0x2a, 0x68, 0x26, 0xbe, 0x22, 0x8b, 0xbf, 0x0a, 0xad, 0xed, 2914 0x91, 0xe5, 0x0e, 0xf1, 0x3e, 0x71, 0xe9, 0xd6, 0x0b, 0xf0, 0xc4, 0x3b, 0xe1, 0x72, 0x36, 0x0d, 2915 0x31, 0xd2, 0x7f, 0xa3, 0x40, 0x6d, 0x9f, 0xb8, 0x43, 0xad, 0x07, 0x0d, 0xb1, 0xc9, 0x85, 0x26, 2916 0xc9, 0x90, 0xfa, 0xe5, 0x30, 0x8e, 0x22, 0x2f, 0x17, 0xeb, 0x15, 0xee, 0x17, 0x3e, 0x21, 0x45, 2917 0xee, 0xd9, 0x5d, 0x51, 0x7d, 0xa3, 0x5d, 0x51, 0x9b, 0xbd, 0x2b, 0xf4, 0x55, 0x68, 0x0c, 0x62, 2918 0xdb, 0xc6, 0x61, 0x38, 0x5b, 0x5a, 0x7d, 0x17, 0x1a, 0x7b, 0x16, 0x19, 0xc7, 0x01, 0xd6, 0x56, 2919 0xa0, 0x66, 0xd3, 0xcd, 0x4d, 0x11, 0xdd, 0x4d, 0xb5, 0x2f, 0xe8, 0x6c, 0x57, 0xb0, 0x19, 0x99, 2920 0x4d, 0x25, 0xcf, 0xe6, 0x73, 0xe8, 0x3c, 0x64, 0xba, 0x19, 0xf8, 0xeb, 0x18, 0x87, 0x91, 0x76, 2921 0x3b, 0xc7, 0x4c, 0xeb, 0xe7, 0x66, 0x25, 0x96, 0x1a, 0xd4, 0x1c, 0x2b, 0xb2, 0x04, 0x3f, 0xf6, 2922 0xad, 0xb7, 0xa1, 0xc5, 0xe1, 0x5b, 0xf6, 0xb1, 0xfe, 0x31, 0xa0, 0x7d, 0xe2, 0x3e, 0xb3, 0xa2, 2923 0x80, 0x9c, 0x26, 0xcc, 0x37, 0xa0, 0x46, 0x33, 0xaa, 0x60, 0xbe, 0xd8, 0x2f, 0x02, 0x38, 0x7f, 2924 0x0a, 0xd1, 0x57, 0x40, 0x4d, 0x67, 0xb7, 0xec, 0x63, 0x0d, 0x41, 0xd5, 0x27, 0x6e, 0x4f, 0x59, 2925 0xa9, 0xac, 0xb7, 0x0c, 0xfa, 0xa9, 0x37, 0xa1, 0xbe, 0x6d, 0xb9, 0x36, 0x1e, 0xeb, 0x17, 0x60, 2926 0x21, 0x8b, 0x29, 0xc1, 0x4a, 0xbf, 0x0f, 0x9d, 0x8c, 0x48, 0x39, 0x5c, 0x07, 0x90, 0xc2, 0x91, 2927 0x33, 0x92, 0x28, 0xfa, 0x0a, 0xc0, 0x23, 0x1c, 0xed, 0xba, 0x51, 0xe0, 0xf9, 0x53, 0xaa, 0x5f, 2928 0x48, 0x5e, 0x72, 0x5c, 0xc7, 0x60, 0xdf, 0xd4, 0x31, 0xc9, 0x74, 0x0f, 0x1a, 0x98, 0x7f, 0x32, 2929 0x84, 0x6a, 0x24, 0x43, 0xfd, 0x57, 0x0a, 0xa8, 0x8f, 0x70, 0xb4, 0x1f, 0x1f, 0x8e, 0x89, 0xfd, 2930 0x39, 0x9e, 0xd2, 0xec, 0x6a, 0x39, 0x4e, 0x80, 0xc3, 0xd0, 0xa4, 0xf2, 0x57, 0xd7, 0x3b, 0x46, 2931 0x53, 0x10, 0x9e, 0x6b, 0xeb, 0x80, 0xb0, 0xed, 0x84, 0x96, 0x69, 0xc7, 0xc1, 0x09, 0x36, 0x5d, 2932 0x6b, 0x92, 0xb8, 0xa8, 0xcb, 0xe8, 0xdb, 0x94, 0xfc, 0xdc, 0x9a, 0x60, 0xba, 0xbd, 0xc3, 0x91, 2933 0xf7, 0x8d, 0xe9, 0x90, 0xd0, 0x1f, 0x5b, 0x53, 0x11, 0x6f, 0x6d, 0x4a, 0xdb, 0xe1, 0x24, 0x6d, 2934 0x0d, 0x5a, 0x34, 0x09, 0x72, 0x2e, 0x34, 0xc2, 0x5a, 0x0f, 0x1a, 0x0f, 0x49, 0x44, 0x69, 0x46, 2935 0x93, 0xfe, 0xa5, 0x8c, 0xf4, 0xcf, 0xa0, 0x95, 0x09, 0x77, 0x03, 0x6a, 0x2e, 0x77, 0x77, 0x65, 2936 0xbd, 0xbd, 0xd9, 0xee, 0x3f, 0xde, 0x79, 0xee, 0x39, 0x22, 0x74, 0x5c, 0xe1, 0xe7, 0x53, 0x3f, 2937 0x3e, 0x4c, 0xfc, 0x4c, 0xbf, 0xf5, 0xbf, 0x2a, 0xcc, 0x54, 0x5b, 0x5c, 0x89, 0xf3, 0x15, 0xcc, 2938 0xc9, 0x54, 0x99, 0x21, 0xd3, 0xeb, 0x28, 0xf7, 0x01, 0x34, 0x27, 0xf1, 0x38, 0x22, 0x21, 0x19, 2939 0x32, 0xdd, 0xda, 0x9b, 0x57, 0xfa, 0xcf, 0x04, 0xc1, 0xc0, 0x0e, 0xc6, 0x93, 0x81, 0x1d, 0x10, 2940 0x9f, 0xc7, 0x50, 0x0a, 0xd5, 0x3e, 0x85, 0x76, 0xc8, 0xe8, 0x26, 0x8b, 0xbc, 0x39, 0x16, 0x79, 2941 0xa8, 0xff, 0xc4, 0xf5, 0xe3, 0x28, 0xfb, 0xc1, 0x03, 0x75, 0xb0, 0xbf, 0xfb, 0x7c, 0x67, 0x6b, 2942 0x67, 0xc7, 0xd8, 0x1d, 0x0c, 0x0c, 0x08, 0xd3, 0x19, 0xfd, 0x00, 0xb4, 0xdd, 0x68, 0x84, 0x03, 2943 0x1c, 0x4f, 0x5e, 0x57, 0xe7, 0xa2, 0x36, 0x95, 0x33, 0xda, 0xd0, 0x50, 0x4a, 0x58, 0xf5, 0xa0, 2944 0x21, 0x7e, 0x29, 0x82, 0x32, 0x19, 0xea, 0xf7, 0x60, 0x3e, 0x59, 0x7a, 0x06, 0x58, 0xcd, 0xc0, 2945 0x2a, 0xc0, 0x57, 0xc4, 0xc7, 0x3b, 0xec, 0xdc, 0xd6, 0xff, 0xaf, 0x02, 0xf0, 0xd4, 0xb3, 0x1c, 2946 0x3e, 0xa4, 0x09, 0x7c, 0xe2, 0xe2, 0x89, 0xe7, 0x12, 0x3b, 0x49, 0xe0, 0xc9, 0x38, 0x0d, 0x81, 2947 0x0a, 0x33, 0x6a, 0x49, 0x08, 0x88, 0xad, 0x57, 0x65, 0xbf, 0xa3, 0x9f, 0x3f, 0x2b, 0xad, 0x69, 2948 0xab, 0xd2, 0x21, 0x32, 0xc7, 0x03, 0x01, 0xbb, 0xc3, 0x31, 0x09, 0x47, 0x65, 0xa7, 0x49, 0x5d, 2949 0x3e, 0x4d, 0x56, 0xa1, 0x13, 0x1e, 0x13, 0xdf, 0xb4, 0x47, 0xd8, 0x3e, 0x0e, 0xe3, 0x89, 0x28, 2950 0x41, 0x54, 0x4a, 0xdc, 0x16, 0x34, 0xed, 0x06, 0xb4, 0xe3, 0xcd, 0x23, 0xd3, 0xf6, 0x62, 0x37, 2951 0xc2, 0x01, 0xab, 0x3b, 0x3a, 0x06, 0xc4, 0x9b, 0x47, 0xdb, 0x9c, 0xa2, 0xff, 0xb6, 0x02, 0x6d, 2952 0x03, 0x87, 0x38, 0x12, 0x46, 0xb9, 0x05, 0x5d, 0xe1, 0x21, 0x33, 0xb0, 0x5c, 0xc7, 0x9b, 0x88, 2953 0x33, 0xa3, 0x23, 0xa8, 0x06, 0x23, 0x6a, 0x37, 0xa0, 0x19, 0x46, 0x01, 0x76, 0x87, 0xd1, 0x88, 2954 0x17, 0x6c, 0x0f, 0xaa, 0x9b, 0x1f, 0x7c, 0x68, 0xa4, 0xc4, 0xd9, 0xd6, 0xa8, 0x9e, 0x63, 0x8d, 2955 0xb3, 0x07, 0x48, 0xad, 0xec, 0x00, 0xf9, 0x05, 0x46, 0x2b, 0xd8, 0xa3, 0x51, 0xb4, 0x07, 0x05, 2956 0x30, 0xab, 0x8a, 0x7a, 0x81, 0x17, 0x6a, 0x40, 0x49, 0xbc, 0x5c, 0xa0, 0x85, 0x01, 0xff, 0x12, 2957 0x41, 0x85, 0xa0, 0x2b, 0xf2, 0x5f, 0x92, 0x64, 0x6f, 0x03, 0x08, 0x0a, 0xcd, 0xb0, 0xb9, 0xa4, 2958 0xa8, 0xc8, 0x49, 0xf1, 0x4f, 0x15, 0xe8, 0x1a, 0xd8, 0xf6, 0x4e, 0x70, 0x30, 0x15, 0xd6, 0x5f, 2959 0x06, 0xf8, 0xc6, 0x0b, 0x1c, 0x2e, 0x9f, 0x38, 0xd1, 0x5b, 0x94, 0xc2, 0xc4, 0x9b, 0x6d, 0xd4, 2960 0xca, 0x1b, 0x19, 0xb5, 0xfa, 0x2a, 0xa3, 0xd6, 0x5e, 0x69, 0xd4, 0x39, 0xd9, 0xa8, 0x1b, 0x80, 2961 0xb0, 0x7b, 0xe4, 0x05, 0x36, 0x36, 0xa9, 0xac, 0x63, 0x12, 0x46, 0xcc, 0xea, 0x4d, 0x63, 0x5e, 2962 0xd0, 0xbf, 0x12, 0x64, 0x9a, 0x39, 0x59, 0xca, 0xe1, 0x81, 0xc8, 0xbe, 0x8b, 0x3e, 0x69, 0x9d, 2963 0xf1, 0xc9, 0x65, 0x68, 0x38, 0xc1, 0xd4, 0x0c, 0x62, 0x97, 0xd5, 0xbd, 0x4d, 0xa3, 0xee, 0x04, 2964 0x53, 0x23, 0x76, 0xf5, 0xf7, 0xa0, 0x4d, 0x39, 0x27, 0x27, 0xe9, 0x5a, 0xee, 0x24, 0x45, 0x7d, 2965 0x69, 0x4e, 0x3a, 0x44, 0x97, 0xa1, 0x41, 0x27, 0xa8, 0x6f, 0x34, 0xa8, 0x51, 0x81, 0x45, 0x8a, 2966 0x61, 0xdf, 0xfa, 0x8f, 0x0a, 0xb4, 0x07, 0x64, 0xe8, 0x3e, 0x13, 0x15, 0xd0, 0xb9, 0x49, 0x2d, 2967 0x57, 0x43, 0xb0, 0xcc, 0x93, 0x14, 0x4e, 0xb9, 0x14, 0x5f, 0x9d, 0x95, 0xe2, 0x0b, 0x89, 0xb8, 2968 0xf6, 0xc6, 0x89, 0xf8, 0xbf, 0x15, 0xe8, 0xbc, 0xc0, 0x01, 0x39, 0x9a, 0x26, 0xf2, 0xe6, 0x92, 2969 0xa1, 0x22, 0x65, 0x4e, 0xed, 0x1a, 0xb4, 0x42, 0x32, 0x74, 0xd9, 0x7d, 0x8c, 0x45, 0x8c, 0x6a, 2970 0x64, 0x04, 0x59, 0x95, 0x2a, 0x8f, 0xd3, 0x52, 0x55, 0x66, 0x9e, 0xa0, 0xff, 0x0e, 0x48, 0x88, 2971 0x30, 0x90, 0x79, 0xfe, 0x1c, 0x59, 0xf4, 0x1f, 0x14, 0xba, 0xa9, 0xec, 0x60, 0xea, 0x47, 0x89, 2972 0x5a, 0x97, 0xa0, 0xee, 0xc7, 0x87, 0xc7, 0x38, 0xd9, 0x45, 0x62, 0x54, 0xac, 0xe2, 0x24, 0xb1, 2973 0x6f, 0x82, 0x9a, 0x64, 0x32, 0xcf, 0x1d, 0xa7, 0xc7, 0xa7, 0xa0, 0x7d, 0xe1, 0x8e, 0x0b, 0x55, 2974 0x48, 0xed, 0xbc, 0x43, 0x7a, 0x6e, 0x96, 0xda, 0x2f, 0x00, 0x09, 0x49, 0xb1, 0x93, 0xc8, 0x7a, 2975 0x11, 0xe6, 0x5c, 0xcf, 0xb5, 0xb1, 0x10, 0x95, 0x0f, 0xce, 0x91, 0x54, 0x83, 0xda, 0x68, 0x62, 2976 0xd9, 0xc2, 0xee, 0xec, 0x5b, 0xff, 0x1a, 0xba, 0x3b, 0x38, 0x67, 0x81, 0x73, 0x03, 0x31, 0x5d, 2977 0xb2, 0x32, 0x63, 0xc9, 0x6a, 0xf9, 0x92, 0x35, 0x69, 0xc9, 0x3d, 0x40, 0x62, 0xc9, 0x4c, 0x95, 2978 0x42, 0xad, 0x2d, 0x71, 0x90, 0x7c, 0x5b, 0xc9, 0xf9, 0x56, 0xff, 0xb3, 0x02, 0xdd, 0x6d, 0xe2, 2979 0x8f, 0x70, 0xf0, 0x39, 0x9e, 0xbe, 0xb0, 0xc6, 0xf1, 0x2b, 0x64, 0x47, 0x50, 0xa5, 0x7e, 0xe5, 2980 0x5c, 0xe8, 0x27, 0xd5, 0xe6, 0x84, 0xfe, 0x4e, 0x48, 0xcd, 0x07, 0x3c, 0x93, 0x32, 0xf9, 0xc4, 2981 0xb1, 0x90, 0x0c, 0xb5, 0x35, 0xe8, 0x5a, 0xe1, 0xb1, 0xe9, 0xb9, 0x66, 0x02, 0xe0, 0x77, 0x7a, 2982 0xd5, 0x0a, 0x8f, 0xbf, 0x70, 0x77, 0xcf, 0xa0, 0x1c, 0xae, 0xa6, 0x48, 0x52, 0x1c, 0x25, 0x54, 2983 0xd7, 0xba, 0x50, 0x21, 0x27, 0xec, 0x60, 0x50, 0x8d, 0x0a, 0x39, 0xd1, 0xd7, 0x01, 0x71, 0x65, 2984 0xb0, 0x93, 0xaa, 0x93, 0xca, 0xa7, 0x48, 0xf2, 0xe9, 0xff, 0x05, 0xdd, 0xdd, 0x30, 0x22, 0x13, 2985 0x2b, 0xc2, 0x07, 0xa7, 0x03, 0xf2, 0x12, 0xd3, 0x23, 0xda, 0x8b, 0x23, 0x3f, 0x8e, 0xc2, 0x34, 2986 0xa3, 0xd3, 0xc2, 0x59, 0x15, 0x44, 0x9e, 0xd4, 0x6f, 0x82, 0x4a, 0x5c, 0x09, 0x53, 0x61, 0x98, 2987 0x36, 0xa7, 0x71, 0xc8, 0x6b, 0x25, 0x13, 0xfd, 0x26, 0xd4, 0xc5, 0xba, 0x97, 0xa1, 0x11, 0x9d, 2988 0x9a, 0xa2, 0x54, 0xa7, 0xd9, 0xb4, 0x1e, 0xb1, 0x09, 0xfd, 0xf7, 0x0a, 0xd4, 0xe9, 0xf6, 0x3c, 2989 0x38, 0xfd, 0xc7, 0xca, 0xa6, 0x5d, 0x85, 0x46, 0xae, 0x2b, 0xf3, 0x40, 0x79, 0xd7, 0x48, 0x28, 2990 0xda, 0x75, 0x68, 0x8d, 0x3d, 0xfb, 0xd8, 0x8c, 0x88, 0xd8, 0x69, 0x9d, 0x07, 0xca, 0x3b, 0x46, 2991 0x93, 0xd2, 0x0e, 0xc8, 0x04, 0xeb, 0x7f, 0x53, 0x40, 0x1d, 0x90, 0x89, 0x3f, 0xc6, 0x42, 0xf6, 2992 0x35, 0xa8, 0x73, 0x11, 0x58, 0x2c, 0xb5, 0x37, 0xd5, 0xfe, 0xc1, 0x29, 0xcb, 0x99, 0x2c, 0xcd, 2993 0x8b, 0x39, 0xed, 0x0e, 0x34, 0x84, 0x32, 0xbd, 0x0a, 0x83, 0x75, 0xfa, 0x07, 0xa7, 0x5f, 0x30, 2994 0x0a, 0xc3, 0x25, 0xb3, 0xda, 0xfb, 0xa0, 0x46, 0x81, 0xe5, 0x86, 0x16, 0x3b, 0x09, 0xc3, 0x5e, 2995 0x95, 0xa1, 0x51, 0xff, 0x20, 0x23, 0xb2, 0x1f, 0xe4, 0x50, 0xaf, 0x97, 0x16, 0x65, 0xc5, 0xe7, 2996 0xce, 0x57, 0xbc, 0x7e, 0x56, 0xf1, 0x5f, 0x2b, 0xd0, 0x3a, 0x48, 0x2f, 0x8a, 0xf7, 0x41, 0x0d, 2997 0xf8, 0xa7, 0x29, 0x1d, 0x73, 0x6a, 0x5f, 0x3e, 0xe2, 0xda, 0x41, 0x36, 0xd0, 0xee, 0x43, 0xc3, 2998 0xc1, 0x91, 0x45, 0xc6, 0xa1, 0xa8, 0x63, 0x17, 0xfb, 0x29, 0xb7, 0x1d, 0x3e, 0xc1, 0x0d, 0x21, 2999 0x50, 0xda, 0x47, 0x00, 0x21, 0x0e, 0x92, 0x36, 0x51, 0x95, 0xfd, 0xa6, 0x97, 0xfd, 0x66, 0x90, 3000 0xce, 0xb1, 0x9f, 0x49, 0x58, 0x7d, 0x03, 0xe6, 0x0e, 0xd8, 0x95, 0x74, 0x05, 0x2a, 0xd1, 0x29, 3001 0x13, 0xad, 0xcc, 0x82, 0x95, 0xe8, 0x54, 0xff, 0xdf, 0x0a, 0x74, 0x93, 0x0a, 0x5e, 0xf8, 0xf3, 3002 0x67, 0xa4, 0xb6, 0xab, 0xd0, 0x1a, 0x5a, 0xa1, 0xe9, 0x07, 0xc4, 0x4e, 0xd2, 0x44, 0x73, 0x68, 3003 0x85, 0xfb, 0x74, 0x9c, 0x4c, 0x8e, 0xc9, 0x84, 0x44, 0x22, 0xc5, 0xd1, 0xc9, 0xa7, 0x74, 0x4c, 3004 0x37, 0x78, 0xe4, 0x31, 0x67, 0xa8, 0x46, 0x25, 0xf2, 0xb2, 0xcd, 0x5c, 0x97, 0x93, 0xcd, 0x5b, 3005 0xa0, 0xd1, 0xeb, 0xbb, 0x29, 0x9a, 0x64, 0xa6, 0x3d, 0x8a, 0xdd, 0x63, 0x91, 0x16, 0x10, 0x9d, 3006 0x11, 0x6d, 0xcf, 0x6d, 0x4a, 0xa7, 0x25, 0x0c, 0x43, 0x8f, 0x79, 0x45, 0x2c, 0xca, 0x6c, 0x4a, 3007 0x7a, 0xca, 0xcb, 0xe1, 0x2b, 0xd0, 0xb4, 0x47, 0x16, 0x71, 0x4d, 0xe2, 0x88, 0x02, 0xa7, 0xc1, 3008 0xc6, 0x4f, 0x1c, 0xfd, 0xff, 0x15, 0x58, 0x48, 0xec, 0x91, 0x39, 0xbb, 0xc0, 0x51, 0x39, 0xc3, 3009 0x91, 0x16, 0xaa, 0xc9, 0x81, 0x69, 0x9e, 0x88, 0xae, 0x29, 0xa4, 0xa4, 0x17, 0x79, 0x40, 0x20, 3010 0x6c, 0x94, 0x01, 0x8c, 0x3c, 0x20, 0x4c, 0x1a, 0x4d, 0x29, 0x69, 0xa0, 0xf7, 0xa1, 0x93, 0x09, 3011 0x46, 0x9d, 0xbb, 0x0c, 0x4c, 0x02, 0x61, 0x0c, 0x9e, 0xfc, 0x5a, 0x94, 0xc2, 0xac, 0xa0, 0x3f, 3012 0x85, 0x0b, 0xb2, 0x63, 0x7f, 0x59, 0x05, 0xa5, 0x13, 0x58, 0x4c, 0xb8, 0x9d, 0x5b, 0xe1, 0xa8, 3013 0xbf, 0xb8, 0xc2, 0xd1, 0x0d, 0xe8, 0x25, 0x4b, 0xbd, 0xaa, 0x86, 0x79, 0xdd, 0xd5, 0xf4, 0x9f, 3014 0x58, 0xd2, 0x1a, 0xba, 0x4f, 0x1c, 0xec, 0x46, 0x24, 0x9a, 0x6a, 0x1b, 0xd0, 0x24, 0xe2, 0x5b, 3015 0xec, 0x8f, 0x4e, 0x3f, 0x99, 0xe4, 0xf7, 0x73, 0x92, 0x41, 0x91, 0x3d, 0xb2, 0xc6, 0xd4, 0xf7, 3016 0xd8, 0x1c, 0x11, 0xc7, 0xc1, 0xae, 0x58, 0x60, 0x3e, 0xa5, 0x3f, 0x66, 0xe4, 0x3c, 0xf4, 0x84, 3017 0x84, 0xb1, 0x35, 0x16, 0x97, 0xd2, 0x0c, 0xfa, 0x82, 0x91, 0x4b, 0xdb, 0x2a, 0xb5, 0xb2, 0xb6, 3018 0x8a, 0x3e, 0x84, 0x2e, 0x15, 0x1d, 0x3b, 0xa9, 0xf0, 0xb3, 0x2b, 0xb9, 0x65, 0x00, 0x9f, 0x75, 3019 0x4e, 0xcc, 0xe4, 0x10, 0x57, 0x8d, 0x96, 0x9f, 0xf6, 0x52, 0x72, 0x46, 0xaa, 0x16, 0x8d, 0xf4, 3020 0xad, 0x02, 0x0b, 0x8f, 0x70, 0xb4, 0xbb, 0xbd, 0xf3, 0x58, 0x34, 0x5a, 0xe9, 0x6f, 0xde, 0xc0, 3021 0x52, 0xb7, 0x61, 0xde, 0xc7, 0x38, 0x30, 0xcf, 0x88, 0xd0, 0xa1, 0xe4, 0xac, 0xa5, 0x53, 0xa6, 3022 0x7b, 0xb5, 0x54, 0xf7, 0x77, 0xa1, 0x5b, 0x10, 0x87, 0xee, 0x13, 0x3e, 0x32, 0xb3, 0xfa, 0x13, 3023 0xc2, 0x14, 0xa0, 0xbf, 0x03, 0x9d, 0x01, 0x8e, 0xbe, 0xdc, 0xdc, 0x93, 0x2e, 0x91, 0xf2, 0x8d, 3024 0x46, 0x39, 0x73, 0xeb, 0xbe, 0x03, 0x9d, 0x3d, 0xd1, 0xa9, 0xde, 0x65, 0x3d, 0xdf, 0x4b, 0x50, 3025 0xcf, 0xed, 0x74, 0x31, 0xd2, 0xb7, 0x60, 0x3e, 0x01, 0x26, 0x99, 0xe1, 0x12, 0xd4, 0xbd, 0xa3, 3026 0xa3, 0x10, 0x27, 0xf7, 0x43, 0x31, 0x92, 0x58, 0x54, 0x72, 0x2c, 0x3e, 0x81, 0x6e, 0xc2, 0xe2, 3027 0x4b, 0x7f, 0xec, 0x59, 0x0e, 0x75, 0xa6, 0x6f, 0x4d, 0xe9, 0x67, 0xd2, 0x2f, 0x11, 0x43, 0x56, 3028 0x16, 0x5a, 0xe1, 0x48, 0xd8, 0x90, 0x7d, 0xeb, 0x6b, 0xd0, 0x1c, 0xe0, 0xf1, 0xd1, 0x01, 0x5d, 3029 0x3b, 0xf7, 0x4b, 0x45, 0xfa, 0xa5, 0x7e, 0x17, 0x16, 0x76, 0xf0, 0x61, 0x3c, 0x7c, 0x4a, 0xdc, 3030 0xe3, 0x1d, 0x6c, 0xf3, 0x97, 0x83, 0x45, 0xa8, 0x4f, 0x71, 0x68, 0xba, 0x1e, 0x5b, 0xa7, 0x69, 3031 0xcc, 0x4d, 0x71, 0xf8, 0xdc, 0xd3, 0x2f, 0x48, 0xd8, 0x47, 0x38, 0x1a, 0x44, 0x56, 0x84, 0xf5, 3032 0xbf, 0x54, 0x68, 0xc5, 0x2b, 0xa8, 0x8c, 0xc4, 0x34, 0xb2, 0xa6, 0x5e, 0x1c, 0x25, 0x35, 0x3f, 3033 0x1f, 0x25, 0xbd, 0x97, 0x4a, 0xd6, 0x7b, 0xb9, 0x04, 0xf5, 0x09, 0xeb, 0x8a, 0x0a, 0xa7, 0x8a, 3034 0x51, 0xae, 0xc5, 0x53, 0x9b, 0xd1, 0xe2, 0x99, 0x9b, 0xd5, 0xe2, 0x99, 0x79, 0xdb, 0xae, 0x9f, 3035 0x73, 0xdb, 0x5e, 0x06, 0x08, 0x70, 0x88, 0x23, 0x76, 0x13, 0x66, 0xe7, 0x45, 0xcb, 0x68, 0x31, 3036 0x0a, 0xbd, 0x74, 0xd2, 0xaa, 0x8b, 0x4f, 0x27, 0x3d, 0x81, 0x26, 0xd3, 0x4c, 0x65, 0xc4, 0xa4, 3037 0x8f, 0xfa, 0x16, 0x68, 0x81, 0xe8, 0x0b, 0x98, 0x47, 0xd6, 0x31, 0xbf, 0x55, 0x8b, 0xb7, 0x20, 3038 0x94, 0xcc, 0xec, 0x59, 0xc7, 0xec, 0x5a, 0xad, 0xdd, 0x85, 0x85, 0x14, 0xcd, 0x9a, 0x07, 0xbe, 3039 0x17, 0xb2, 0x7b, 0x72, 0xc7, 0x98, 0x4f, 0x26, 0x28, 0x70, 0xdf, 0x0b, 0xf5, 0x79, 0xe8, 0x48, 3040 0x36, 0xf6, 0x7c, 0x7d, 0x1f, 0xd4, 0x94, 0xf0, 0xd4, 0x1b, 0xb2, 0x0b, 0x3e, 0x3e, 0xc1, 0xe3, 3041 0xe4, 0x35, 0x81, 0x0d, 0xa8, 0x79, 0x0f, 0x63, 0xfb, 0x18, 0x47, 0xc2, 0xe6, 0x62, 0xc4, 0x6e, 3042 0xf3, 0xf8, 0x34, 0x12, 0x46, 0x67, 0xdf, 0xfa, 0x23, 0xb8, 0x90, 0x72, 0x7c, 0x86, 0x27, 0x5e, 3043 0x30, 0x35, 0x30, 0x8f, 0x39, 0x39, 0x81, 0x74, 0xb2, 0x04, 0x32, 0x2b, 0x6e, 0x37, 0x60, 0xbe, 3044 0xc0, 0x88, 0xb9, 0x99, 0x7d, 0x25, 0x01, 0xc1, 0x47, 0xfa, 0x7f, 0xc0, 0xc5, 0x02, 0xf4, 0xab, 3045 0x80, 0x44, 0xf8, 0xfc, 0x45, 0x05, 0xa7, 0x8a, 0xcc, 0x49, 0xbc, 0xa6, 0x84, 0x23, 0x71, 0x5b, 3046 0xe4, 0x03, 0xfd, 0x6d, 0x49, 0xa7, 0x3d, 0x4a, 0x49, 0x37, 0x6d, 0x88, 0xed, 0xc8, 0x4b, 0x76, 3047 0xb8, 0x18, 0xdd, 0xfd, 0x71, 0x11, 0xda, 0xe2, 0x1c, 0x61, 0x75, 0xd8, 0x0a, 0x5c, 0x92, 0x86, 3048 0x66, 0xf6, 0x60, 0x8a, 0xfe, 0x69, 0xa9, 0xf6, 0xed, 0x1f, 0x7a, 0x8a, 0xb6, 0x94, 0x5e, 0x9e, 3049 0x19, 0x62, 0x9f, 0xb8, 0x43, 0xa4, 0x88, 0xb9, 0x65, 0xb8, 0x20, 0xcf, 0x89, 0x57, 0x10, 0x54, 3050 0x59, 0xaa, 0x7d, 0x57, 0x32, 0x2d, 0xde, 0x39, 0x50, 0x55, 0x4c, 0xdf, 0x80, 0x45, 0x79, 0x3a, 3051 0x7d, 0x14, 0x42, 0x35, 0xc1, 0xbe, 0x20, 0x5c, 0xd6, 0x2e, 0x45, 0x73, 0x02, 0x71, 0x07, 0xae, 3052 0xe4, 0x56, 0x90, 0x13, 0x17, 0xaa, 0x2f, 0x35, 0x29, 0xe8, 0x8f, 0x14, 0xb8, 0x0e, 0x4b, 0x65, 3053 0x40, 0x9e, 0x75, 0x50, 0x43, 0x42, 0x6e, 0xc0, 0xd5, 0x32, 0xa4, 0x48, 0x71, 0xa8, 0xb9, 0xd4, 3054 0xfc, 0x2e, 0x81, 0x16, 0xe4, 0xcb, 0x5e, 0x23, 0x50, 0xab, 0xdc, 0x40, 0xc9, 0x34, 0x08, 0x0b, 3055 0xe8, 0xd0, 0x2b, 0x30, 0x48, 0x8f, 0x05, 0xd4, 0x16, 0x2c, 0x0a, 0x56, 0xca, 0x00, 0xaa, 0x60, 3056 0x52, 0x90, 0x22, 0xeb, 0x22, 0xa3, 0x8e, 0x60, 0x71, 0x13, 0x2e, 0xcb, 0x08, 0xa9, 0xa7, 0x8a, 3057 0xba, 0x02, 0x72, 0x0d, 0xb4, 0x9c, 0x27, 0x59, 0xf1, 0x8b, 0xe6, 0xc5, 0xec, 0x5a, 0x5e, 0x4e, 3058 0xf9, 0xc2, 0x83, 0xd0, 0x52, 0x9d, 0x62, 0x9a, 0x8a, 0x76, 0x1d, 0x2e, 0xe6, 0x2c, 0x27, 0x9e, 3059 0xd7, 0xd1, 0x82, 0x10, 0xf4, 0x36, 0x5c, 0x2b, 0x44, 0x52, 0xee, 0x31, 0x09, 0x69, 0x29, 0xae, 3060 0x57, 0x8a, 0xdb, 0xb2, 0x8f, 0xd1, 0x05, 0xee, 0xa9, 0xdf, 0x95, 0xc8, 0xcc, 0x1f, 0x97, 0xd0, 3061 0xc5, 0x72, 0xbb, 0xa5, 0xe5, 0x2b, 0x5a, 0x14, 0xcb, 0x5c, 0x85, 0x85, 0x3c, 0x80, 0xf2, 0xbf, 3062 0x94, 0x6a, 0x9c, 0x8b, 0x97, 0x7c, 0xcf, 0x00, 0x5d, 0x16, 0xa8, 0x82, 0xff, 0xe4, 0x57, 0x59, 3063 0xd4, 0x13, 0x98, 0xd5, 0x7c, 0x88, 0xe6, 0x1e, 0x6a, 0xd1, 0x95, 0x72, 0x50, 0xee, 0x11, 0x0f, 3064 0x2d, 0x09, 0x81, 0x57, 0xf3, 0x1a, 0xa5, 0x4f, 0x77, 0xe8, 0xaa, 0x64, 0x94, 0x42, 0x34, 0x64, 3065 0xaf, 0xb1, 0xe8, 0x5a, 0xf9, 0xae, 0xca, 0x1e, 0x49, 0xd0, 0x72, 0x79, 0xd4, 0x26, 0xd3, 0xd7, 3066 0xd3, 0xa8, 0xcd, 0xf9, 0x39, 0x39, 0x81, 0xd1, 0x8a, 0xb4, 0x8b, 0x0a, 0x96, 0x91, 0xdb, 0xd2, 3067 0x48, 0x2f, 0xb7, 0x71, 0xbe, 0x55, 0x8d, 0x56, 0xcb, 0xc3, 0x3b, 0x6b, 0x5f, 0xa3, 0xb5, 0xf2, 3068 0xf0, 0x96, 0xea, 0x7b, 0x74, 0xbb, 0xdc, 0xbe, 0xb9, 0xa2, 0x1d, 0xdd, 0x11, 0xa0, 0x42, 0x7c, 3069 0x16, 0xcb, 0x6d, 0xb4, 0x2e, 0x24, 0xba, 0x03, 0xcb, 0xb9, 0xf8, 0x2c, 0x3e, 0x65, 0xa2, 0x8d, 3070 0x14, 0x78, 0xa5, 0x1c, 0x48, 0xa5, 0xbf, 0x2b, 0x39, 0xed, 0x76, 0xc1, 0x12, 0xb9, 0x56, 0x0d, 3071 0xba, 0x27, 0xed, 0x30, 0x2d, 0x1f, 0xb2, 0x6c, 0xfe, 0xad, 0xa5, 0xfa, 0x77, 0x7c, 0xbe, 0x60, 3072 0xd1, 0x7c, 0x07, 0x1f, 0xbd, 0x5d, 0x6e, 0x2f, 0xa9, 0x15, 0x8d, 0xfa, 0xe5, 0x99, 0x5b, 0x34, 3073 0xa5, 0xd1, 0xfd, 0x72, 0x4b, 0x15, 0x9b, 0x50, 0xe8, 0x9d, 0x74, 0x27, 0x17, 0x3c, 0x2c, 0x77, 3074 0x0d, 0xd1, 0xbb, 0xa9, 0x5e, 0xeb, 0x79, 0x7e, 0xc5, 0xae, 0x25, 0xda, 0x4c, 0x35, 0x2c, 0x70, 3075 0xcc, 0xf7, 0x21, 0xd1, 0x7b, 0xb3, 0x38, 0x16, 0x9b, 0x87, 0xe8, 0xfd, 0x94, 0xa3, 0x5e, 0xcc, 3076 0x6d, 0xd9, 0xbd, 0x08, 0x7d, 0x50, 0x1e, 0xa9, 0xf9, 0x0b, 0x08, 0xfa, 0x50, 0x68, 0x5b, 0xb0, 3077 0xab, 0xf4, 0xef, 0x46, 0xe8, 0x9f, 0x05, 0xa3, 0x75, 0xb8, 0x9e, 0x53, 0xf4, 0xcc, 0x43, 0x25, 3078 0xfa, 0x48, 0x20, 0x6f, 0xe5, 0x8f, 0xa1, 0xc2, 0xbb, 0x22, 0xfa, 0x17, 0xb1, 0x66, 0x71, 0x0f, 3079 0xe5, 0x9a, 0x17, 0xe8, 0x41, 0x7a, 0x4c, 0x2e, 0x97, 0xa1, 0xb2, 0x9c, 0xf8, 0xaf, 0x69, 0x8a, 3080 0xb9, 0x52, 0x0e, 0xa4, 0xde, 0xff, 0xb7, 0x72, 0x6e, 0x67, 0x2e, 0x49, 0xe8, 0xe3, 0x19, 0x1b, 3081 0x3c, 0x8f, 0xfa, 0xa4, 0x7c, 0xcd, 0xdc, 0x75, 0x05, 0x7d, 0x2a, 0x58, 0x6d, 0xc0, 0x8d, 0x59, 3082 0x7a, 0x26, 0x2e, 0xfd, 0x4c, 0x40, 0xef, 0xc1, 0xcd, 0x32, 0x68, 0x7e, 0xcf, 0x6f, 0x09, 0x70, 3083 0x1f, 0xd6, 0xca, 0xc0, 0x67, 0xf6, 0xfe, 0x43, 0x21, 0xec, 0xbd, 0xbc, 0xee, 0x67, 0xee, 0x15, 3084 0xc8, 0x59, 0x6a, 0x7e, 0x9f, 0x6c, 0xeb, 0x3b, 0x33, 0xc0, 0xc9, 0xc5, 0x02, 0xe1, 0xa5, 0xda, 3085 0xf7, 0x25, 0x86, 0xca, 0xdf, 0x35, 0xd0, 0xd1, 0x52, 0xed, 0x87, 0x12, 0x43, 0xe5, 0xaa, 0x65, 3086 0x34, 0x14, 0xac, 0x0a, 0xe1, 0x2c, 0x57, 0xd0, 0x68, 0x24, 0x18, 0x15, 0x8c, 0x59, 0x52, 0x13, 3087 0x23, 0x57, 0xb0, 0x2b, 0x84, 0x61, 0x01, 0x8a, 0x3c, 0xc1, 0xf1, 0x2e, 0xac, 0x9c, 0x03, 0x63, 3088 0x15, 0x2f, 0xf2, 0x05, 0xcb, 0x59, 0xab, 0x67, 0xd5, 0x2b, 0xfa, 0x9a, 0x43, 0x1f, 0xbe, 0x0f, 3089 0xab, 0xb6, 0x37, 0xe9, 0x87, 0x56, 0xe4, 0x85, 0x23, 0x32, 0xb6, 0x0e, 0xc3, 0x7e, 0x14, 0xe0, 3090 0x97, 0x5e, 0xd0, 0x1f, 0x93, 0x43, 0xfe, 0x6f, 0x7e, 0x87, 0xf1, 0xd1, 0xc3, 0xce, 0x01, 0x23, 3091 0x0a, 0xae, 0x7f, 0x0f, 0x00, 0x00, 0xff, 0xff, 0x2a, 0xe4, 0xc0, 0x85, 0x16, 0x28, 0x00, 0x00, 3092 } 3093