rpc: expose account parameter for several wallet RPCs

This commit is contained in:
Wilmer Paulino 2021-02-19 17:41:53 -08:00
parent f91e7cde59
commit a7211b34c3
No known key found for this signature in database
GPG key ID: 6DF57B9F9514972F
8 changed files with 1087 additions and 914 deletions

File diff suppressed because it is too large Load diff

View file

@ -582,6 +582,9 @@ message GetTransactionsRequest {
default to this option.
*/
int32 end_height = 2;
// An optional filter to only include transactions relevant to an account.
string account = 3;
}
message TransactionDetails {
@ -990,6 +993,9 @@ message ListUnspentRequest {
// The maximum number of confirmations to be included.
int32 max_confs = 2;
// An optional filter to only include outputs belonging to an account.
string account = 3;
}
message ListUnspentResponse {
// A list of utxos
@ -1010,8 +1016,14 @@ enum AddressType {
}
message NewAddressRequest {
// The address type
// The type of address to generate.
AddressType type = 1;
/*
The name of the account to generate a new address for. If empty, the
default wallet account is used.
*/
string account = 2;
}
message NewAddressResponse {
// The newly generated wallet address

View file

@ -1547,7 +1547,7 @@
"parameters": [
{
"name": "type",
"description": "The address type.",
"description": "The type of address to generate.",
"in": "query",
"required": false,
"type": "string",
@ -1558,6 +1558,13 @@
"UNUSED_NESTED_PUBKEY_HASH"
],
"default": "WITNESS_PUBKEY_HASH"
},
{
"name": "account",
"description": "The name of the account to generate a new address for. If empty, the\ndefault wallet account is used.",
"in": "query",
"required": false,
"type": "string"
}
],
"tags": [
@ -1955,6 +1962,13 @@
"required": false,
"type": "integer",
"format": "int32"
},
{
"name": "account",
"description": "An optional filter to only include transactions relevant to an account.",
"in": "query",
"required": false,
"type": "string"
}
],
"tags": [
@ -2103,6 +2117,13 @@
"required": false,
"type": "integer",
"format": "int32"
},
{
"name": "account",
"description": "An optional filter to only include transactions relevant to an account.",
"in": "query",
"required": false,
"type": "string"
}
],
"tags": [
@ -2145,6 +2166,13 @@
"required": false,
"type": "integer",
"format": "int32"
},
{
"name": "account",
"description": "An optional filter to only include outputs belonging to an account.",
"in": "query",
"required": false,
"type": "string"
}
],
"tags": [

View file

@ -138,7 +138,9 @@ type ListUnspentRequest struct {
// The minimum number of confirmations to be included.
MinConfs int32 `protobuf:"varint,1,opt,name=min_confs,json=minConfs,proto3" json:"min_confs,omitempty"`
// The maximum number of confirmations to be included.
MaxConfs int32 `protobuf:"varint,2,opt,name=max_confs,json=maxConfs,proto3" json:"max_confs,omitempty"`
MaxConfs int32 `protobuf:"varint,2,opt,name=max_confs,json=maxConfs,proto3" json:"max_confs,omitempty"`
// An optional filter to only include outputs belonging to an account.
Account string `protobuf:"bytes,3,opt,name=account,proto3" json:"account,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -183,6 +185,13 @@ func (m *ListUnspentRequest) GetMaxConfs() int32 {
return 0
}
func (m *ListUnspentRequest) GetAccount() string {
if m != nil {
return m.Account
}
return ""
}
type ListUnspentResponse struct {
// A list of utxos satisfying the specified number of confirmations.
Utxos []*lnrpc.Utxo `protobuf:"bytes,1,rep,name=utxos,proto3" json:"utxos,omitempty"`
@ -460,6 +469,10 @@ func (m *KeyReq) GetKeyFamily() int32 {
}
type AddrRequest struct {
//
//The name of the account to retrieve the next address of. If empty, the
//default wallet account is used.
Account string `protobuf:"bytes,1,opt,name=account,proto3" json:"account,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -490,6 +503,13 @@ func (m *AddrRequest) XXX_DiscardUnknown() {
var xxx_messageInfo_AddrRequest proto.InternalMessageInfo
func (m *AddrRequest) GetAccount() string {
if m != nil {
return m.Account
}
return ""
}
type AddrResponse struct {
//
//The address encoded using a bech32 format.
@ -1425,10 +1445,14 @@ type FundPsbtRequest struct {
// Types that are valid to be assigned to Fees:
// *FundPsbtRequest_TargetConf
// *FundPsbtRequest_SatPerVbyte
Fees isFundPsbtRequest_Fees `protobuf_oneof:"fees"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
Fees isFundPsbtRequest_Fees `protobuf_oneof:"fees"`
//
//The name of the account to fund the PSBT with. If empty, the default wallet
//account is used.
Account string `protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *FundPsbtRequest) Reset() { *m = FundPsbtRequest{} }
@ -1530,6 +1554,13 @@ func (m *FundPsbtRequest) GetSatPerVbyte() uint64 {
return 0
}
func (m *FundPsbtRequest) GetAccount() string {
if m != nil {
return m.Account
}
return ""
}
// XXX_OneofWrappers is for the internal use of the proto package.
func (*FundPsbtRequest) XXX_OneofWrappers() []interface{} {
return []interface{}{
@ -1724,7 +1755,11 @@ type FinalizePsbtRequest struct {
//A PSBT that should be signed and finalized. The PSBT must contain all
//required inputs, outputs, UTXO data and partial signatures of all other
//signers.
FundedPsbt []byte `protobuf:"bytes,1,opt,name=funded_psbt,json=fundedPsbt,proto3" json:"funded_psbt,omitempty"`
FundedPsbt []byte `protobuf:"bytes,1,opt,name=funded_psbt,json=fundedPsbt,proto3" json:"funded_psbt,omitempty"`
//
//The name of the account to finalize the PSBT with. If empty, the default
//wallet account is used.
Account string `protobuf:"bytes,5,opt,name=account,proto3" json:"account,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1762,6 +1797,13 @@ func (m *FinalizePsbtRequest) GetFundedPsbt() []byte {
return nil
}
func (m *FinalizePsbtRequest) GetAccount() string {
if m != nil {
return m.Account
}
return ""
}
type FinalizePsbtResponse struct {
// The fully signed and finalized transaction in PSBT format.
SignedPsbt []byte `protobuf:"bytes,1,opt,name=signed_psbt,json=signedPsbt,proto3" json:"signed_psbt,omitempty"`
@ -1923,125 +1965,127 @@ func init() {
func init() { proto.RegisterFile("walletrpc/walletkit.proto", fileDescriptor_6cc6942ac78249e5) }
var fileDescriptor_6cc6942ac78249e5 = []byte{
// 1887 bytes of a gzipped FileDescriptorProto
// 1914 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5f, 0x73, 0xe2, 0xc8,
0x11, 0x5f, 0xfe, 0x98, 0x85, 0x16, 0xd8, 0x78, 0xc0, 0x6b, 0x96, 0xf5, 0x9e, 0xbd, 0xba, 0x24,
0xe7, 0xe4, 0xee, 0x70, 0xc5, 0x57, 0x7b, 0xb7, 0xb7, 0x49, 0xa5, 0x62, 0x63, 0xb9, 0x70, 0x81,
0xc1, 0x11, 0x78, 0x5d, 0x9b, 0x3c, 0xa8, 0x04, 0x1a, 0xdb, 0x2a, 0x83, 0xa4, 0x93, 0x06, 0x03,
0x79, 0xba, 0xaf, 0x91, 0xaa, 0x7c, 0x87, 0x7b, 0xc8, 0x6b, 0x2a, 0x9f, 0x2c, 0x0f, 0xa9, 0xf9,
0x83, 0x34, 0x12, 0xf8, 0x2e, 0xa9, 0xdc, 0x93, 0x51, 0xff, 0xba, 0x7b, 0xfa, 0xdf, 0x4c, 0x77,
0x1b, 0x5e, 0xce, 0xcc, 0xf1, 0x18, 0x13, 0xdf, 0x1b, 0x1d, 0xf1, 0x5f, 0x0f, 0x36, 0x69, 0x78,
0xbe, 0x4b, 0x5c, 0x54, 0x08, 0xa1, 0x7a, 0xc1, 0xf7, 0x46, 0x9c, 0x5a, 0xaf, 0x06, 0xf6, 0x9d,
0x43, 0xd9, 0xe9, 0x5f, 0xec, 0x73, 0xaa, 0xda, 0x05, 0xd4, 0xb1, 0x03, 0x72, 0xed, 0x04, 0x1e,
0x76, 0x88, 0x8e, 0xbf, 0x9b, 0xe2, 0x80, 0xa0, 0x57, 0x50, 0x98, 0xd8, 0x8e, 0x31, 0x72, 0x9d,
0xdb, 0xa0, 0x96, 0x3a, 0x48, 0x1d, 0x6e, 0xe8, 0xf9, 0x89, 0xed, 0x34, 0xe9, 0x37, 0x03, 0xcd,
0xb9, 0x00, 0xd3, 0x02, 0x34, 0xe7, 0x0c, 0x54, 0xdf, 0x41, 0x25, 0xa6, 0x2f, 0xf0, 0x5c, 0x27,
0xc0, 0xe8, 0x0d, 0x6c, 0x4c, 0xc9, 0xdc, 0xa5, 0xca, 0x32, 0x87, 0xca, 0xb1, 0xd2, 0x18, 0x53,
0x53, 0x1a, 0xd7, 0x64, 0xee, 0xea, 0x1c, 0x51, 0xbf, 0x4f, 0x01, 0xea, 0x60, 0x33, 0xc0, 0xbd,
0x29, 0xf1, 0xa6, 0xa1, 0x29, 0x9b, 0x90, 0xb6, 0x2d, 0x66, 0x43, 0x51, 0x4f, 0xdb, 0x16, 0xfa,
0x1c, 0xf2, 0xee, 0x94, 0x78, 0xae, 0xed, 0x10, 0x76, 0xb8, 0x72, 0xbc, 0x25, 0x94, 0xf5, 0xa6,
0xe4, 0x8a, 0x92, 0xf5, 0x90, 0x01, 0x7d, 0x09, 0x08, 0xcf, 0x3d, 0xdb, 0x37, 0x89, 0xed, 0x3a,
0x46, 0x80, 0x47, 0xae, 0x63, 0x05, 0xb5, 0xcc, 0x41, 0xea, 0x30, 0xab, 0x6f, 0x47, 0x48, 0x9f,
0x03, 0xea, 0x5b, 0xa8, 0xc4, 0x2c, 0x10, 0xc6, 0x7f, 0x02, 0x10, 0xf1, 0x32, 0x53, 0xb2, 0xba,
0x44, 0x51, 0xfb, 0x50, 0xd5, 0xf1, 0xf8, 0xe7, 0x35, 0x5d, 0xdd, 0x85, 0x9d, 0x84, 0x52, 0x6e,
0x8d, 0xfa, 0x27, 0xc8, 0xb5, 0xf1, 0x42, 0xc7, 0xdf, 0xa1, 0x43, 0x28, 0x3f, 0xe0, 0x85, 0x71,
0x6b, 0x3b, 0x77, 0xd8, 0x37, 0x3c, 0x9f, 0xea, 0xe5, 0xc9, 0xda, 0x7c, 0xc0, 0x8b, 0x73, 0x46,
0xbe, 0xa2, 0x54, 0xf4, 0x1a, 0x80, 0x71, 0x9a, 0x13, 0x7b, 0xbc, 0x10, 0x39, 0x2b, 0x50, 0x1e,
0x46, 0x50, 0x4b, 0xa0, 0x9c, 0x58, 0x96, 0x2f, 0xec, 0x56, 0x55, 0x28, 0xf2, 0x4f, 0xe1, 0x3f,
0x82, 0xac, 0x69, 0x59, 0x3e, 0xd3, 0x5d, 0xd0, 0xd9, 0x6f, 0xf5, 0x3d, 0x28, 0x03, 0xdf, 0x74,
0x02, 0x73, 0x44, 0x43, 0x80, 0x76, 0x20, 0x47, 0xe6, 0xc6, 0x3d, 0x9e, 0x0b, 0x77, 0x37, 0xc8,
0xbc, 0x85, 0xe7, 0xa8, 0x0a, 0x1b, 0x63, 0x73, 0x88, 0xc7, 0xec, 0xc8, 0x82, 0xce, 0x3f, 0xd4,
0xaf, 0x61, 0xeb, 0x6a, 0x3a, 0x1c, 0xdb, 0xc1, 0x7d, 0x78, 0xc4, 0xa7, 0x50, 0xf2, 0x38, 0xc9,
0xc0, 0xbe, 0xef, 0x2e, 0xcf, 0x2a, 0x0a, 0xa2, 0x46, 0x69, 0xea, 0x3f, 0x53, 0x80, 0xfa, 0xd8,
0xb1, 0x78, 0x40, 0x82, 0x65, 0x98, 0xf7, 0x00, 0x02, 0x93, 0x18, 0x1e, 0xf6, 0x8d, 0x87, 0x19,
0x13, 0xcc, 0xe8, 0xf9, 0xc0, 0x24, 0x57, 0xd8, 0x6f, 0xcf, 0xd0, 0x21, 0x3c, 0x77, 0x39, 0x7f,
0x2d, 0xcd, 0x6a, 0x6f, 0xb3, 0x21, 0x2e, 0x42, 0x63, 0x30, 0xef, 0x4d, 0x89, 0xbe, 0x84, 0x23,
0x63, 0x33, 0x92, 0xb1, 0xf1, 0xab, 0x90, 0x4d, 0x5c, 0x85, 0xcf, 0x61, 0x9b, 0xd6, 0xb9, 0x65,
0x4c, 0x1d, 0xca, 0x60, 0xfb, 0x13, 0x6c, 0xd5, 0x36, 0x0e, 0x52, 0x87, 0x79, 0xbd, 0xcc, 0x80,
0xeb, 0x88, 0xae, 0x7e, 0x01, 0x95, 0x98, 0xf5, 0xc2, 0xf5, 0x1d, 0xc8, 0xf9, 0xe6, 0xcc, 0x20,
0x61, 0xe8, 0x7c, 0x73, 0x36, 0x98, 0xab, 0x6f, 0x01, 0x69, 0x01, 0xb1, 0x27, 0x26, 0xc1, 0xe7,
0x18, 0x2f, 0x7d, 0xdd, 0x07, 0x85, 0x2a, 0x34, 0x88, 0xe9, 0xdf, 0xe1, 0x65, 0xb6, 0x81, 0x92,
0x06, 0x8c, 0xa2, 0x7e, 0x05, 0x95, 0x98, 0x98, 0x38, 0xe4, 0x47, 0x63, 0xa4, 0xfe, 0x3b, 0x03,
0xc5, 0x2b, 0xec, 0x58, 0xb6, 0x73, 0xd7, 0x9f, 0x61, 0xec, 0xc5, 0x2a, 0x35, 0xf5, 0x53, 0x97,
0xec, 0x5b, 0x28, 0xce, 0x6c, 0xe2, 0xe0, 0x20, 0x30, 0xc8, 0xc2, 0xc3, 0x2c, 0xd7, 0x9b, 0xc7,
0x2f, 0x1a, 0xe1, 0x2b, 0xd4, 0xb8, 0xe1, 0xf0, 0x60, 0xe1, 0x61, 0x5d, 0x99, 0x45, 0x1f, 0xb4,
0x2e, 0xcd, 0x89, 0x3b, 0x75, 0x88, 0x11, 0x98, 0x84, 0xc5, 0xbd, 0xa4, 0x17, 0x38, 0xa5, 0x6f,
0x12, 0xf4, 0x0b, 0x28, 0x2e, 0xad, 0x1e, 0x2e, 0x08, 0x66, 0xe1, 0x2f, 0x9d, 0xa6, 0x6b, 0x29,
0x1d, 0xb8, 0xed, 0xa7, 0x0b, 0x82, 0xe9, 0x25, 0x1f, 0xfa, 0xae, 0x69, 0x8d, 0xcc, 0x80, 0x18,
0x26, 0x21, 0x78, 0xe2, 0x91, 0x80, 0x65, 0xa1, 0xa4, 0x6f, 0x87, 0xc8, 0x89, 0x00, 0xd0, 0x31,
0xec, 0x38, 0x78, 0x4e, 0x8c, 0x48, 0xe6, 0x1e, 0xdb, 0x77, 0xf7, 0xa4, 0x96, 0x63, 0x12, 0x15,
0x0a, 0x9e, 0x2e, 0xb1, 0x16, 0x83, 0xa8, 0x8c, 0xcf, 0x33, 0x80, 0x2d, 0x43, 0x4e, 0x40, 0x9e,
0xcb, 0x84, 0x60, 0x33, 0xcc, 0x04, 0xfa, 0x06, 0x5e, 0x44, 0x32, 0x31, 0x37, 0x0a, 0xa1, 0x1b,
0x91, 0x60, 0x3f, 0xf2, 0x47, 0x85, 0xd2, 0x92, 0xfd, 0x91, 0xf1, 0x03, 0x7b, 0x71, 0x14, 0xee,
0xf2, 0x07, 0x4a, 0x42, 0x6f, 0x61, 0x77, 0x55, 0x39, 0xe7, 0x56, 0x18, 0x77, 0x35, 0xa1, 0x99,
0x8b, 0x55, 0x61, 0xe3, 0xd6, 0xf5, 0x47, 0xb8, 0xf6, 0x9c, 0xd5, 0x28, 0xff, 0x50, 0x5f, 0x40,
0x55, 0xce, 0xfe, 0xf2, 0x62, 0xa9, 0x37, 0xb0, 0x93, 0xa0, 0x8b, 0x6a, 0xfa, 0x03, 0x6c, 0x7a,
0x1c, 0x30, 0x02, 0x86, 0x88, 0x67, 0x7d, 0x57, 0xca, 0xb9, 0x2c, 0xa9, 0x97, 0x3c, 0x59, 0x8f,
0xfa, 0xaf, 0x14, 0x6c, 0x9e, 0x4e, 0x27, 0x9e, 0x54, 0xd8, 0xff, 0x53, 0xc5, 0xed, 0x83, 0xc2,
0xe3, 0xcf, 0x72, 0xc1, 0x0a, 0xae, 0xa4, 0x03, 0x27, 0xd1, 0x0c, 0xac, 0x14, 0x4e, 0x66, 0x6d,
0xe1, 0x84, 0xd1, 0xc8, 0x4a, 0xd1, 0x58, 0x0d, 0xff, 0xc6, 0x4a, 0xf8, 0xd5, 0x6d, 0xd8, 0x0a,
0xed, 0x17, 0xcf, 0xf2, 0x97, 0xb0, 0x4d, 0x1b, 0x5f, 0x2c, 0x82, 0xa8, 0x06, 0xcf, 0x1f, 0xb1,
0x3f, 0x74, 0x03, 0xcc, 0x9c, 0xca, 0xeb, 0xcb, 0x4f, 0xf5, 0xfb, 0x34, 0x6f, 0xbc, 0x89, 0xc8,
0x76, 0xa0, 0x42, 0xa2, 0x67, 0xd5, 0xb0, 0x30, 0x31, 0xed, 0x71, 0x20, 0x22, 0xf2, 0x52, 0x44,
0x44, 0x7a, 0x78, 0xcf, 0x38, 0x43, 0xeb, 0x99, 0x8e, 0xc8, 0x0a, 0x15, 0xdd, 0xc0, 0x96, 0xac,
0xcd, 0xb6, 0x02, 0xd1, 0x77, 0xbe, 0x90, 0x12, 0xb5, 0x6a, 0x85, 0x7c, 0xc0, 0xc5, 0x19, 0x55,
0xbe, 0x29, 0xa9, 0xb9, 0xb0, 0x82, 0xfa, 0xb7, 0xb0, 0x19, 0xe7, 0x41, 0x9f, 0xad, 0x1e, 0x45,
0x6b, 0xa2, 0x90, 0x14, 0x3d, 0xcd, 0x43, 0x8e, 0xd7, 0x8c, 0x6a, 0xc2, 0x6e, 0x87, 0x3e, 0xb1,
0x92, 0xa6, 0x65, 0xdc, 0x10, 0x64, 0xc9, 0x3c, 0xec, 0x9d, 0xec, 0xf7, 0xfa, 0x5e, 0x82, 0xf6,
0xa0, 0xe0, 0x3e, 0x62, 0x7f, 0xe6, 0xdb, 0x22, 0xcd, 0x79, 0x3d, 0x22, 0xa8, 0x75, 0xa8, 0xad,
0x1e, 0x21, 0x12, 0xf6, 0x43, 0x0a, 0xb6, 0xce, 0xa7, 0x8e, 0x75, 0x15, 0x0c, 0xc3, 0x8e, 0x5d,
0x85, 0xac, 0x17, 0x0c, 0x79, 0x05, 0x16, 0x5b, 0xcf, 0x74, 0xf6, 0x85, 0x7e, 0x0d, 0x19, 0xdf,
0x9c, 0x89, 0xd0, 0xed, 0x48, 0xa1, 0x1b, 0xcc, 0x07, 0x78, 0xe2, 0x8d, 0x4d, 0x82, 0x5b, 0xcf,
0x74, 0xca, 0x83, 0xde, 0xc4, 0x2b, 0x93, 0xd5, 0x5d, 0x2b, 0x95, 0xa8, 0xcd, 0x44, 0x7d, 0xd1,
0xea, 0xcb, 0xb6, 0x52, 0xb1, 0x0a, 0x3b, 0x05, 0xc8, 0x13, 0xa1, 0xfb, 0x34, 0x07, 0xd9, 0x5b,
0x8c, 0x03, 0xf5, 0xef, 0x29, 0x28, 0x47, 0x16, 0x8b, 0x8a, 0xd9, 0x07, 0xe5, 0x76, 0xea, 0x58,
0xd8, 0x32, 0x22, 0xcb, 0x75, 0xe0, 0x24, 0xca, 0x88, 0x1a, 0x50, 0x19, 0xdd, 0x9b, 0xce, 0x1d,
0x36, 0x78, 0xa3, 0x33, 0x6c, 0xc7, 0xc2, 0x73, 0x31, 0x04, 0x6c, 0x73, 0x88, 0xf7, 0xa4, 0x0b,
0x0a, 0xa0, 0x6f, 0xa0, 0x38, 0x76, 0x47, 0x0f, 0xd8, 0x32, 0xf8, 0xc4, 0x96, 0x61, 0x57, 0xbb,
0x2a, 0xb9, 0x4d, 0xa7, 0x36, 0x36, 0x27, 0xe9, 0x0a, 0xe7, 0xbc, 0x66, 0x03, 0xdc, 0x0f, 0x29,
0x80, 0x28, 0x22, 0xe8, 0x33, 0xc8, 0xd9, 0x0e, 0xeb, 0xbb, 0xfc, 0x71, 0x58, 0xb9, 0xcf, 0x02,
0x46, 0xbf, 0x4f, 0x76, 0x68, 0x75, 0x6d, 0x88, 0x1b, 0xa2, 0x71, 0x6a, 0x0e, 0xf1, 0x17, 0x61,
0xd7, 0xae, 0xbf, 0x87, 0xa2, 0x0c, 0xa0, 0x32, 0x64, 0x1e, 0xf0, 0x42, 0xcc, 0x0f, 0xf4, 0x27,
0x2d, 0x9c, 0x47, 0x73, 0x3c, 0xe5, 0x8d, 0x29, 0xab, 0xf3, 0x8f, 0xf7, 0xe9, 0x77, 0x29, 0xf5,
0x1e, 0x0a, 0xa1, 0x2f, 0xff, 0xdf, 0xa0, 0x19, 0x1f, 0x11, 0x33, 0x2b, 0x23, 0xe2, 0xd7, 0x50,
0x39, 0xb7, 0x1d, 0x73, 0x6c, 0xff, 0x15, 0xcb, 0xf5, 0xf6, 0x53, 0xc9, 0x53, 0x3f, 0x42, 0x35,
0x2e, 0x17, 0x65, 0x9d, 0x8d, 0xf1, 0x71, 0x41, 0x4e, 0x62, 0x59, 0x3f, 0x80, 0x22, 0x9d, 0x2a,
0x6e, 0xa9, 0x30, 0x9d, 0x2d, 0xd2, 0x9c, 0xc3, 0x37, 0x67, 0x4c, 0xdf, 0x60, 0xae, 0x56, 0xf8,
0x83, 0xc5, 0x9c, 0x0f, 0x9f, 0xfc, 0x4b, 0xfe, 0x2a, 0x2d, 0x89, 0xe2, 0xb4, 0x64, 0x49, 0xa4,
0xfe, 0xcb, 0x92, 0xf8, 0xcd, 0xdf, 0x32, 0xa0, 0x48, 0xcd, 0x1f, 0x55, 0x60, 0xeb, 0xba, 0xdb,
0xee, 0xf6, 0x6e, 0xba, 0xc6, 0xcd, 0xc5, 0xa0, 0xab, 0xf5, 0xfb, 0xe5, 0x67, 0xa8, 0x06, 0xd5,
0x66, 0xef, 0xf2, 0xf2, 0x62, 0x70, 0xa9, 0x75, 0x07, 0xc6, 0xe0, 0xe2, 0x52, 0x33, 0x3a, 0xbd,
0x66, 0xbb, 0x9c, 0x42, 0xbb, 0x50, 0x91, 0x90, 0x6e, 0xcf, 0x38, 0xd3, 0x3a, 0x27, 0x1f, 0xcb,
0x69, 0xb4, 0x03, 0xdb, 0x12, 0xa0, 0x6b, 0x1f, 0x7a, 0x6d, 0xad, 0x9c, 0xa1, 0xfc, 0xad, 0x41,
0xa7, 0x69, 0xf4, 0xce, 0xcf, 0x35, 0x5d, 0x3b, 0x5b, 0x02, 0x59, 0x7a, 0x04, 0x03, 0x4e, 0x9a,
0x4d, 0xed, 0x6a, 0x10, 0x21, 0x1b, 0xe8, 0x97, 0xf0, 0x26, 0x26, 0x42, 0x8f, 0xef, 0x5d, 0x0f,
0x8c, 0xbe, 0xd6, 0xec, 0x75, 0xcf, 0x8c, 0x8e, 0xf6, 0x41, 0xeb, 0x94, 0x73, 0xe8, 0x57, 0xa0,
0xc6, 0x15, 0xf4, 0xaf, 0x9b, 0x4d, 0xad, 0xdf, 0x8f, 0xf3, 0x3d, 0x47, 0xfb, 0xf0, 0x2a, 0x61,
0xc1, 0x65, 0x6f, 0xa0, 0x2d, 0xb5, 0x96, 0xf3, 0xe8, 0x00, 0xf6, 0x92, 0x96, 0x30, 0x0e, 0xa1,
0xaf, 0x5c, 0x40, 0x7b, 0x50, 0x63, 0x1c, 0xb2, 0xe6, 0xa5, 0xbd, 0x80, 0xaa, 0x50, 0x16, 0x91,
0x33, 0xda, 0xda, 0x47, 0xa3, 0x75, 0xd2, 0x6f, 0x95, 0x15, 0xf4, 0x0a, 0x76, 0xbb, 0x5a, 0x9f,
0xaa, 0x5b, 0x01, 0x8b, 0x89, 0x60, 0x9d, 0x74, 0x9b, 0xad, 0x9e, 0x5e, 0x2e, 0x1d, 0xff, 0xa3,
0x00, 0x85, 0x1b, 0x96, 0xc0, 0xb6, 0x4d, 0x50, 0x07, 0x14, 0x69, 0x6f, 0x43, 0xaf, 0x13, 0x0d,
0x22, 0xbe, 0x1f, 0xd6, 0x3f, 0x79, 0x0a, 0x0e, 0xdb, 0x98, 0x22, 0x2d, 0x52, 0x71, 0x6d, 0x2b,
0x7b, 0x52, 0x5c, 0xdb, 0x9a, 0xfd, 0x4b, 0x87, 0x52, 0x6c, 0x15, 0x42, 0xfb, 0x92, 0xc0, 0xba,
0xcd, 0xab, 0x7e, 0xf0, 0x34, 0x83, 0xd0, 0x79, 0x01, 0x10, 0x15, 0x3a, 0xda, 0x4b, 0xf8, 0x13,
0xbb, 0x14, 0xf5, 0xd7, 0x4f, 0xa0, 0x42, 0xd5, 0x7b, 0x28, 0x9d, 0x61, 0xdf, 0x7e, 0xc4, 0x5d,
0x3c, 0x27, 0x6d, 0xbc, 0x40, 0xdb, 0x12, 0x3f, 0x5f, 0xd5, 0xea, 0x2f, 0xc2, 0xa5, 0xa3, 0x8d,
0x17, 0x67, 0x38, 0x18, 0xf9, 0xb6, 0x47, 0x5c, 0x1f, 0xbd, 0x83, 0x02, 0x97, 0xa5, 0x72, 0x15,
0x99, 0xa9, 0xe3, 0x8e, 0x4c, 0xe2, 0xfa, 0x4f, 0x4a, 0xfe, 0x0e, 0xf2, 0xf4, 0x3c, 0xba, 0xa8,
0x21, 0x79, 0xd6, 0x96, 0x16, 0xb9, 0xfa, 0xee, 0x0a, 0x5d, 0x98, 0xdc, 0x02, 0x24, 0x36, 0x30,
0x79, 0x89, 0x93, 0xd5, 0x48, 0xf4, 0x7a, 0x5d, 0x1e, 0xeb, 0x12, 0x8b, 0x5b, 0x07, 0x14, 0x69,
0xa9, 0x89, 0x65, 0x7a, 0x75, 0x55, 0x8b, 0x65, 0x7a, 0xdd, 0x2e, 0xd4, 0x01, 0x45, 0xda, 0x5e,
0x62, 0xda, 0x56, 0x97, 0xa1, 0x98, 0xb6, 0x75, 0x4b, 0x8f, 0x0e, 0xa5, 0xd8, 0xfc, 0x1a, 0xab,
0x9b, 0x75, 0x13, 0x6f, 0xac, 0x6e, 0xd6, 0x8f, 0xbe, 0x7f, 0x84, 0xe7, 0x62, 0xf2, 0x43, 0x2f,
0x25, 0xe6, 0xf8, 0x34, 0x1b, 0x8b, 0x58, 0x62, 0x50, 0x5c, 0x56, 0x9e, 0x30, 0x69, 0xef, 0x89,
0x49, 0x6c, 0x7d, 0xe5, 0x25, 0x8c, 0xf9, 0x0b, 0x94, 0x93, 0xe3, 0x0d, 0x92, 0x9b, 0xe7, 0x13,
0xe3, 0x55, 0xfd, 0xd3, 0x1f, 0xe5, 0x11, 0xca, 0x9b, 0x90, 0x5f, 0x0e, 0x1b, 0x48, 0xf6, 0x27,
0x31, 0x33, 0xd5, 0x5f, 0xad, 0xc5, 0x84, 0x92, 0x1e, 0x14, 0xe5, 0xfe, 0x85, 0xe4, 0x94, 0xad,
0x69, 0x88, 0xf5, 0xfd, 0x27, 0x71, 0xae, 0xf0, 0xf4, 0xb7, 0x7f, 0x3e, 0xba, 0xb3, 0xc9, 0xfd,
0x74, 0xd8, 0x18, 0xb9, 0x93, 0xa3, 0x31, 0xdd, 0xce, 0x1c, 0xdb, 0xb9, 0x73, 0x30, 0x99, 0xb9,
0xfe, 0xc3, 0xd1, 0xd8, 0xb1, 0x8e, 0x58, 0x93, 0x3e, 0x0a, 0xf5, 0x0c, 0x73, 0xec, 0x3f, 0x5d,
0x5f, 0xfd, 0x27, 0x00, 0x00, 0xff, 0xff, 0x6b, 0x20, 0xb6, 0x46, 0x32, 0x13, 0x00, 0x00,
0x11, 0x5f, 0x19, 0xec, 0x85, 0x16, 0xd8, 0x78, 0xc0, 0x6b, 0x96, 0xf5, 0x9e, 0xbd, 0xba, 0x24,
0xeb, 0xe4, 0xee, 0x70, 0xc5, 0x57, 0x9b, 0xdb, 0xdb, 0xa4, 0x52, 0xb1, 0xb1, 0x5c, 0xb8, 0xc0,
0xe0, 0x08, 0xbc, 0xae, 0x4d, 0x1e, 0x54, 0x02, 0x8d, 0x6d, 0x95, 0x41, 0xd2, 0x49, 0x83, 0x81,
0x3c, 0xdd, 0xd7, 0x48, 0x55, 0xbe, 0x43, 0x1e, 0xf2, 0x9a, 0xca, 0x7b, 0xbe, 0x53, 0x1e, 0x52,
0xf3, 0x47, 0x62, 0x24, 0xf0, 0x5d, 0x52, 0xc9, 0x93, 0x51, 0xff, 0x7a, 0x7a, 0x7a, 0xba, 0x7f,
0x33, 0xdd, 0x6d, 0x78, 0x39, 0xb5, 0x46, 0x23, 0x4c, 0x02, 0x7f, 0x78, 0xc4, 0x7f, 0x3d, 0x38,
0xa4, 0xee, 0x07, 0x1e, 0xf1, 0x50, 0x3e, 0x86, 0x6a, 0xf9, 0xc0, 0x1f, 0x72, 0x69, 0xad, 0x12,
0x3a, 0x77, 0x2e, 0x55, 0xa7, 0x7f, 0x71, 0xc0, 0xa5, 0xda, 0x3d, 0xa0, 0xb6, 0x13, 0x92, 0x6b,
0x37, 0xf4, 0xb1, 0x4b, 0x0c, 0xfc, 0xdd, 0x04, 0x87, 0x04, 0xbd, 0x82, 0xfc, 0xd8, 0x71, 0xcd,
0xa1, 0xe7, 0xde, 0x86, 0x55, 0xe5, 0x40, 0x39, 0x5c, 0x37, 0x72, 0x63, 0xc7, 0x6d, 0xd0, 0x6f,
0x06, 0x5a, 0x33, 0x01, 0xae, 0x09, 0xd0, 0x9a, 0x71, 0xb0, 0x0a, 0xcf, 0xad, 0xe1, 0xd0, 0x9b,
0xb8, 0xa4, 0x9a, 0x39, 0x50, 0x0e, 0xf3, 0x46, 0xf4, 0xa9, 0xbd, 0x87, 0x72, 0x62, 0xa7, 0xd0,
0xf7, 0xdc, 0x10, 0xa3, 0x37, 0xb0, 0x3e, 0x21, 0x33, 0x8f, 0x6e, 0x93, 0x39, 0x54, 0x8f, 0xd5,
0xfa, 0x88, 0x3a, 0x59, 0xbf, 0x26, 0x33, 0xcf, 0xe0, 0x88, 0xf6, 0xbd, 0x02, 0xa8, 0x8d, 0xad,
0x10, 0x77, 0x27, 0xc4, 0x9f, 0xc4, 0x4e, 0x6e, 0xc2, 0x9a, 0x63, 0x33, 0xef, 0x0a, 0xc6, 0x9a,
0x63, 0xa3, 0x2f, 0x20, 0xe7, 0x4d, 0x88, 0xef, 0x39, 0x2e, 0x61, 0x6e, 0xa9, 0xc7, 0x5b, 0xc2,
0x58, 0x77, 0x42, 0xae, 0xa8, 0xd8, 0x88, 0x15, 0xd0, 0x57, 0x80, 0xf0, 0xcc, 0x77, 0x02, 0x8b,
0x38, 0x9e, 0x6b, 0x86, 0x78, 0xe8, 0xb9, 0x76, 0xc8, 0x5c, 0xce, 0x1a, 0xdb, 0x0b, 0xa4, 0xc7,
0x01, 0xed, 0x1d, 0x94, 0x13, 0x1e, 0x08, 0xe7, 0x3f, 0x03, 0x58, 0xe8, 0x32, 0x57, 0xb2, 0x86,
0x24, 0xd1, 0x7a, 0x50, 0x31, 0xf0, 0xe8, 0xff, 0xeb, 0xba, 0xb6, 0x0b, 0x3b, 0x29, 0xa3, 0xdc,
0x1b, 0xed, 0xf7, 0xb0, 0xd1, 0xc2, 0x73, 0x03, 0x7f, 0x87, 0x0e, 0xa1, 0xf4, 0x80, 0xe7, 0xe6,
0xad, 0xe3, 0xde, 0xe1, 0xc0, 0xf4, 0x03, 0x6a, 0x97, 0xa7, 0x71, 0xf3, 0x01, 0xcf, 0xcf, 0x99,
0xf8, 0x8a, 0x4a, 0xd1, 0x6b, 0x00, 0xa6, 0x69, 0x8d, 0x9d, 0xd1, 0x5c, 0x64, 0x33, 0x4f, 0x75,
0x98, 0x40, 0x7b, 0x0b, 0xea, 0x89, 0x6d, 0x07, 0x91, 0xdf, 0x52, 0x76, 0x95, 0x64, 0x76, 0x35,
0x28, 0x70, 0x45, 0x11, 0x19, 0x04, 0x59, 0xcb, 0xb6, 0x03, 0xa1, 0xc6, 0x7e, 0x6b, 0x1f, 0x40,
0xed, 0x07, 0x96, 0x1b, 0x5a, 0x43, 0x1a, 0x1c, 0xb4, 0x03, 0x1b, 0x64, 0x66, 0xde, 0xe3, 0x99,
0x08, 0xc4, 0x3a, 0x99, 0x35, 0xf1, 0x0c, 0x55, 0x60, 0x7d, 0x64, 0x0d, 0xf0, 0x88, 0x39, 0x93,
0x37, 0xf8, 0x87, 0xf6, 0x2b, 0xd8, 0xba, 0x9a, 0x0c, 0x46, 0x4e, 0x78, 0x1f, 0x6f, 0xf1, 0x39,
0x14, 0x7d, 0x2e, 0x32, 0x71, 0x10, 0x78, 0xd1, 0x5e, 0x05, 0x21, 0xd4, 0xa9, 0x4c, 0xfb, 0xbb,
0x02, 0xa8, 0x87, 0x5d, 0x9b, 0x87, 0x2a, 0x8c, 0x0e, 0xb2, 0x07, 0x10, 0x5a, 0xc4, 0xf4, 0x71,
0x60, 0x3e, 0x4c, 0xd9, 0xc2, 0x8c, 0x91, 0x0b, 0x2d, 0x72, 0x85, 0x83, 0xd6, 0x14, 0x1d, 0xc2,
0x73, 0x8f, 0xeb, 0x57, 0xd7, 0x18, 0x2b, 0x37, 0xeb, 0xe2, 0xf2, 0xd4, 0xfb, 0xb3, 0xee, 0x84,
0x18, 0x11, 0xbc, 0x70, 0x36, 0x23, 0x39, 0x9b, 0xbc, 0x3e, 0xd9, 0xd4, 0xf5, 0xf9, 0x02, 0xb6,
0xe9, 0x0d, 0xb0, 0xcd, 0x89, 0x4b, 0x15, 0x9c, 0x60, 0x8c, 0xed, 0xea, 0xfa, 0x81, 0x72, 0x98,
0x33, 0x4a, 0x0c, 0xb8, 0x5e, 0xc8, 0xb5, 0x2f, 0xa1, 0x9c, 0xf0, 0x5e, 0x1c, 0x7d, 0x07, 0x36,
0x02, 0x6b, 0x6a, 0x92, 0x38, 0x74, 0x81, 0x35, 0xed, 0xcf, 0xb4, 0x77, 0x80, 0xf4, 0x90, 0x38,
0x63, 0x8b, 0xe0, 0x73, 0x8c, 0xa3, 0xb3, 0xee, 0x83, 0x4a, 0x0d, 0x9a, 0xc4, 0x0a, 0xee, 0x70,
0xc4, 0x03, 0xa0, 0xa2, 0x3e, 0x93, 0x68, 0x5f, 0x43, 0x39, 0xb1, 0x4c, 0x6c, 0xf2, 0x83, 0x31,
0xd2, 0xfe, 0x95, 0x81, 0xc2, 0x15, 0x76, 0x6d, 0xc7, 0xbd, 0xeb, 0x4d, 0x31, 0xf6, 0x13, 0x1c,
0x56, 0x7e, 0xec, 0xfa, 0x7d, 0x0b, 0x85, 0xa9, 0x43, 0x5c, 0x1c, 0x86, 0x26, 0x99, 0xfb, 0x98,
0xe5, 0x7a, 0xf3, 0xf8, 0x45, 0x3d, 0x7e, 0xb9, 0xea, 0x37, 0x1c, 0xee, 0xcf, 0x7d, 0x6c, 0xa8,
0xd3, 0xc5, 0x07, 0x65, 0xac, 0x35, 0xa6, 0x9c, 0x33, 0x43, 0x8b, 0x3f, 0x32, 0x45, 0x23, 0xcf,
0x25, 0x3d, 0x8b, 0xa0, 0x9f, 0x40, 0x21, 0xf2, 0x7a, 0x30, 0x27, 0x98, 0x85, 0xbf, 0x78, 0xba,
0x56, 0x55, 0x0c, 0xe0, 0xbe, 0x9f, 0xce, 0x09, 0xa6, 0xd7, 0x7f, 0x10, 0x78, 0x96, 0x3d, 0xb4,
0x42, 0x62, 0x5a, 0x84, 0xe0, 0xb1, 0x4f, 0x42, 0x96, 0x85, 0xa2, 0xb1, 0x1d, 0x23, 0x27, 0x02,
0x40, 0xc7, 0xb0, 0xe3, 0xe2, 0x19, 0x31, 0x17, 0x6b, 0xee, 0xb1, 0x73, 0x77, 0x4f, 0xaa, 0x1b,
0x6c, 0x45, 0x99, 0x82, 0xa7, 0x11, 0xd6, 0x64, 0x10, 0x5d, 0x13, 0xf0, 0x0c, 0x60, 0xdb, 0x94,
0x13, 0x90, 0xe3, 0x6b, 0x62, 0xb0, 0x11, 0x67, 0x02, 0x7d, 0x03, 0x2f, 0x16, 0x6b, 0x12, 0xc7,
0xc8, 0xc7, 0xc7, 0x58, 0x2c, 0xec, 0x2d, 0xce, 0xa3, 0x41, 0x31, 0x52, 0x7f, 0x64, 0xfa, 0xc0,
0xde, 0x22, 0x95, 0x1f, 0xf9, 0x23, 0x15, 0xa1, 0x77, 0xb0, 0xbb, 0x6c, 0x9c, 0x6b, 0xab, 0x4c,
0xbb, 0x92, 0xb2, 0xcc, 0x97, 0x55, 0x60, 0xfd, 0xd6, 0x0b, 0x86, 0xb8, 0xfa, 0x9c, 0x71, 0x94,
0x7f, 0x68, 0x2f, 0xa0, 0x22, 0x67, 0x3f, 0xba, 0x58, 0xda, 0x0d, 0xec, 0xa4, 0xe4, 0x82, 0x4d,
0xbf, 0x85, 0x4d, 0x9f, 0x03, 0x66, 0xc8, 0x10, 0xf1, 0xe0, 0xef, 0x4a, 0x39, 0x97, 0x57, 0x1a,
0x45, 0x5f, 0xb6, 0xa3, 0xfd, 0x43, 0x81, 0xcd, 0xd3, 0xc9, 0xd8, 0x97, 0x88, 0xfd, 0x5f, 0x31,
0x6e, 0x1f, 0x54, 0x1e, 0x7f, 0x96, 0x0b, 0x46, 0xb8, 0xa2, 0x01, 0x5c, 0x44, 0x33, 0xb0, 0x44,
0x9c, 0xcc, 0x4a, 0xe2, 0xc4, 0xd1, 0xc8, 0x4a, 0xd1, 0x58, 0x0e, 0xff, 0xfa, 0x52, 0xf8, 0xb5,
0x6d, 0xd8, 0x8a, 0xfd, 0x17, 0x0f, 0xf6, 0x57, 0xb0, 0x4d, 0x4b, 0x62, 0x22, 0x82, 0xf4, 0x8d,
0x7d, 0xc4, 0xc1, 0xc0, 0x0b, 0x31, 0x3b, 0x54, 0xce, 0x88, 0x3e, 0xb5, 0xef, 0xd7, 0x78, 0xb1,
0x4e, 0x45, 0xb6, 0x0d, 0x65, 0xb2, 0x78, 0x56, 0x4d, 0x1b, 0x13, 0xcb, 0x19, 0x85, 0x22, 0x22,
0x2f, 0x45, 0x44, 0xa4, 0x87, 0xf7, 0x8c, 0x2b, 0x34, 0x9f, 0x19, 0x88, 0x2c, 0x49, 0xd1, 0x0d,
0x6c, 0xc9, 0xd6, 0x1c, 0x3b, 0x14, 0x15, 0xe9, 0x4b, 0x29, 0x51, 0xcb, 0x5e, 0xc8, 0x1b, 0x5c,
0x9c, 0x51, 0xe3, 0x9b, 0x92, 0x99, 0x0b, 0x3b, 0xac, 0x7d, 0x0b, 0x9b, 0x49, 0x1d, 0xf4, 0x76,
0x79, 0x2b, 0xca, 0x89, 0x7c, 0x7a, 0xe9, 0x69, 0x0e, 0x36, 0x38, 0x67, 0x34, 0x0b, 0x76, 0xdb,
0xf4, 0x89, 0x95, 0x2c, 0x45, 0x71, 0x43, 0x90, 0x25, 0xb3, 0xb8, 0xaa, 0xb2, 0xdf, 0xab, 0x6b,
0x09, 0xda, 0x83, 0xbc, 0xf7, 0x88, 0x83, 0x69, 0xe0, 0x88, 0x34, 0xe7, 0x8c, 0x85, 0x40, 0xab,
0x41, 0x75, 0x79, 0x0b, 0x91, 0xb0, 0x7f, 0x2a, 0xb0, 0x75, 0x3e, 0x71, 0xed, 0xab, 0x70, 0x10,
0xd7, 0xf2, 0x0a, 0x64, 0xfd, 0x70, 0xc0, 0x19, 0x58, 0x68, 0x3e, 0x33, 0xd8, 0x17, 0xfa, 0x39,
0x64, 0x02, 0x6b, 0x2a, 0x42, 0xb7, 0x23, 0x85, 0xae, 0x3f, 0xeb, 0xe3, 0xb1, 0x3f, 0xb2, 0x08,
0x6e, 0x3e, 0x33, 0xa8, 0x0e, 0x7a, 0x93, 0x64, 0x26, 0xe3, 0x5d, 0x53, 0x49, 0x71, 0x33, 0xc5,
0x2f, 0xca, 0xbe, 0x6c, 0x53, 0x49, 0x5e, 0x70, 0xa9, 0x3a, 0xaf, 0x27, 0xaa, 0xf3, 0x29, 0x40,
0x8e, 0x88, 0x5d, 0x4f, 0x37, 0x20, 0x7b, 0x8b, 0x71, 0xa8, 0xfd, 0x45, 0x81, 0xd2, 0xe2, 0x2c,
0x82, 0x4b, 0xfb, 0xa0, 0xde, 0x4e, 0x5c, 0x1b, 0xdb, 0xe6, 0xe2, 0x4c, 0x06, 0x70, 0x11, 0x55,
0x44, 0x75, 0x28, 0x0f, 0xef, 0x2d, 0xf7, 0x0e, 0x9b, 0xbc, 0x04, 0x9a, 0x8e, 0x6b, 0xe3, 0x99,
0x68, 0x1c, 0xb6, 0x39, 0xc4, 0xab, 0xd5, 0x05, 0x05, 0xd0, 0x37, 0x50, 0x18, 0x79, 0xc3, 0x07,
0x6c, 0x9b, 0xbc, 0xcb, 0xcb, 0xb0, 0x4b, 0x5f, 0x91, 0x02, 0x42, 0x3b, 0x3d, 0xd6, 0x5b, 0x19,
0x2a, 0xd7, 0xbc, 0x66, 0x4d, 0xdf, 0x5f, 0x15, 0x80, 0x45, 0xac, 0xd0, 0x5b, 0xd8, 0x70, 0x5c,
0x56, 0x91, 0xf9, 0xb3, 0xb1, 0x74, 0xd3, 0x05, 0x8c, 0x7e, 0x93, 0xae, 0xdd, 0xda, 0xca, 0xe0,
0xd7, 0x45, 0x49, 0xd5, 0x5d, 0x12, 0xcc, 0xe3, 0x7a, 0x5e, 0xfb, 0x00, 0x05, 0x19, 0x40, 0x25,
0xc8, 0x3c, 0xe0, 0xb9, 0xe8, 0x2c, 0xe8, 0x4f, 0x4a, 0xa9, 0x47, 0x6b, 0x34, 0xe1, 0x25, 0x2b,
0x6b, 0xf0, 0x8f, 0x0f, 0x6b, 0xef, 0x15, 0xed, 0x1e, 0xf2, 0xf1, 0x59, 0xfe, 0xb7, 0xe6, 0x34,
0xd9, 0x56, 0x66, 0x96, 0xda, 0xca, 0x2b, 0x28, 0x9f, 0x3b, 0xae, 0x35, 0x72, 0xfe, 0x84, 0x65,
0x26, 0xfe, 0x68, 0xf2, 0x9e, 0x24, 0x88, 0xf6, 0x09, 0x2a, 0x49, 0x8b, 0x0b, 0x3e, 0xb0, 0x71,
0x21, 0x69, 0x92, 0x8b, 0x98, 0xc9, 0x03, 0x28, 0xd0, 0x4e, 0xe4, 0x96, 0x2e, 0xa6, 0xfd, 0xc8,
0x1a, 0xd7, 0x08, 0xac, 0x29, 0xb3, 0xd7, 0x9f, 0x69, 0x65, 0xfe, 0xc8, 0xb1, 0xb0, 0xc4, 0x65,
0xe2, 0x92, 0xbf, 0x64, 0x91, 0x50, 0xec, 0x96, 0x26, 0x8b, 0xf2, 0x1f, 0x92, 0xe5, 0x17, 0x7f,
0xce, 0x80, 0x2a, 0x35, 0x0c, 0xa8, 0x0c, 0x5b, 0xd7, 0x9d, 0x56, 0xa7, 0x7b, 0xd3, 0x31, 0x6f,
0x2e, 0xfa, 0x1d, 0xbd, 0xd7, 0x2b, 0x3d, 0x43, 0x55, 0xa8, 0x34, 0xba, 0x97, 0x97, 0x17, 0xfd,
0x4b, 0xbd, 0xd3, 0x37, 0xfb, 0x17, 0x97, 0xba, 0xd9, 0xee, 0x36, 0x5a, 0x25, 0x05, 0xed, 0x42,
0x59, 0x42, 0x3a, 0x5d, 0xf3, 0x4c, 0x6f, 0x9f, 0x7c, 0x2a, 0xad, 0xa1, 0x1d, 0xd8, 0x96, 0x00,
0x43, 0xff, 0xd8, 0x6d, 0xe9, 0xa5, 0x0c, 0xd5, 0x6f, 0xf6, 0xdb, 0x0d, 0xb3, 0x7b, 0x7e, 0xae,
0x1b, 0xfa, 0x59, 0x04, 0x64, 0xe9, 0x16, 0x0c, 0x38, 0x69, 0x34, 0xf4, 0xab, 0xfe, 0x02, 0x59,
0x47, 0x3f, 0x85, 0x37, 0x89, 0x25, 0x74, 0xfb, 0xee, 0x75, 0xdf, 0xec, 0xe9, 0x8d, 0x6e, 0xe7,
0xcc, 0x6c, 0xeb, 0x1f, 0xf5, 0x76, 0x69, 0x03, 0xfd, 0x0c, 0xb4, 0xa4, 0x81, 0xde, 0x75, 0xa3,
0xa1, 0xf7, 0x7a, 0x49, 0xbd, 0xe7, 0x68, 0x1f, 0x5e, 0xa5, 0x3c, 0xb8, 0xec, 0xf6, 0xf5, 0xc8,
0x6a, 0x29, 0x87, 0x0e, 0x60, 0x2f, 0xed, 0x09, 0xd3, 0x10, 0xf6, 0x4a, 0x79, 0xb4, 0x07, 0x55,
0xa6, 0x21, 0x5b, 0x8e, 0xfc, 0x05, 0x54, 0x81, 0x92, 0x88, 0x9c, 0xd9, 0xd2, 0x3f, 0x99, 0xcd,
0x93, 0x5e, 0xb3, 0xa4, 0xa2, 0x57, 0xb0, 0xdb, 0xd1, 0x7b, 0xd4, 0xdc, 0x12, 0x58, 0x48, 0x05,
0xeb, 0xa4, 0xd3, 0x68, 0x76, 0x8d, 0x52, 0xf1, 0xf8, 0x6f, 0x79, 0xc8, 0xdf, 0xb0, 0x04, 0xb6,
0x1c, 0x82, 0xda, 0xa0, 0x4a, 0x53, 0x20, 0x7a, 0x9d, 0x2a, 0x2a, 0xc9, 0x39, 0xb4, 0xf6, 0xd9,
0x53, 0x70, 0x5c, 0xfa, 0x54, 0x69, 0x2c, 0x4b, 0x5a, 0x5b, 0x9a, 0xba, 0x92, 0xd6, 0x56, 0x4c,
0x73, 0x06, 0x14, 0x13, 0x83, 0x15, 0xda, 0x97, 0x16, 0xac, 0x9a, 0xe3, 0x6a, 0x07, 0x4f, 0x2b,
0x08, 0x9b, 0x17, 0x00, 0x0b, 0xa2, 0xa3, 0xbd, 0xd4, 0x79, 0x12, 0x97, 0xa2, 0xf6, 0xfa, 0x09,
0x54, 0x98, 0xfa, 0x00, 0xc5, 0x33, 0x1c, 0x38, 0x8f, 0xb8, 0x83, 0x67, 0xa4, 0x85, 0xe7, 0x68,
0x5b, 0xd2, 0xe7, 0x83, 0x5f, 0xed, 0x45, 0x3c, 0xa8, 0xb4, 0xf0, 0xfc, 0x0c, 0x87, 0xc3, 0xc0,
0xf1, 0x89, 0x17, 0xa0, 0xf7, 0x90, 0xe7, 0x6b, 0xe9, 0xba, 0xb2, 0xac, 0xd4, 0xf6, 0x86, 0x16,
0xf1, 0x82, 0x27, 0x57, 0xfe, 0x1a, 0x72, 0x74, 0x3f, 0x3a, 0xdc, 0x21, 0xb9, 0x3f, 0x97, 0xc6,
0xc2, 0xda, 0xee, 0x92, 0x5c, 0xb8, 0xdc, 0x04, 0x24, 0xa6, 0x36, 0x79, 0xf0, 0x93, 0xcd, 0x48,
0xf2, 0x5a, 0x4d, 0x6e, 0x05, 0x53, 0xc3, 0x5e, 0x1b, 0x54, 0x69, 0x10, 0x4a, 0x64, 0x7a, 0x79,
0xbc, 0x4b, 0x64, 0x7a, 0xd5, 0xfc, 0xd4, 0x06, 0x55, 0x9a, 0x78, 0x12, 0xd6, 0x96, 0x07, 0xa8,
0x84, 0xb5, 0x55, 0x83, 0x92, 0x01, 0xc5, 0x44, 0xcf, 0x9b, 0xe0, 0xcd, 0xaa, 0x2e, 0x39, 0xc1,
0x9b, 0xd5, 0xed, 0xf2, 0xef, 0xe0, 0xb9, 0xe8, 0x16, 0xd1, 0x4b, 0x49, 0x39, 0xd9, 0x01, 0x27,
0x22, 0x96, 0x6a, 0x2e, 0x23, 0xe6, 0x09, 0x97, 0xf6, 0x9e, 0xe8, 0xde, 0x56, 0x33, 0x2f, 0xe5,
0xcc, 0x1f, 0xa1, 0x94, 0x6e, 0x89, 0x90, 0x5c, 0x56, 0x9f, 0x68, 0xc9, 0x6a, 0x9f, 0xff, 0xa0,
0x8e, 0x30, 0xde, 0x80, 0x5c, 0xd4, 0x86, 0x20, 0xf9, 0x3c, 0xa9, 0x3e, 0xab, 0xf6, 0x6a, 0x25,
0x26, 0x8c, 0x74, 0xa1, 0x20, 0xd7, 0x2f, 0x24, 0xa7, 0x6c, 0x45, 0xa9, 0xac, 0xed, 0x3f, 0x89,
0x73, 0x83, 0xa7, 0xbf, 0xfc, 0xc3, 0xd1, 0x9d, 0x43, 0xee, 0x27, 0x83, 0xfa, 0xd0, 0x1b, 0x1f,
0x8d, 0xe8, 0x44, 0xe7, 0x3a, 0xee, 0x9d, 0x8b, 0xc9, 0xd4, 0x0b, 0x1e, 0x8e, 0x46, 0xae, 0x7d,
0xc4, 0xca, 0xf7, 0x51, 0x6c, 0x67, 0xb0, 0xc1, 0xfe, 0xa3, 0xf6, 0xf5, 0xbf, 0x03, 0x00, 0x00,
0xff, 0xff, 0xb3, 0xfa, 0xf3, 0xd2, 0x9a, 0x13, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.

View file

@ -178,6 +178,9 @@ message ListUnspentRequest {
// The maximum number of confirmations to be included.
int32 max_confs = 2;
// An optional filter to only include outputs belonging to an account.
string account = 3;
}
message ListUnspentResponse {
@ -234,7 +237,11 @@ message KeyReq {
}
message AddrRequest {
// No fields, as we always give out a p2wkh address.
/*
The name of the account to retrieve the next address of. If empty, the
default wallet account is used.
*/
string account = 1;
}
message AddrResponse {
/*
@ -560,6 +567,12 @@ message FundPsbtRequest {
*/
uint64 sat_per_vbyte = 4;
}
/*
The name of the account to fund the PSBT with. If empty, the default wallet
account is used.
*/
string account = 5;
}
message FundPsbtResponse {
/*
@ -619,6 +632,12 @@ message FinalizePsbtRequest {
signers.
*/
bytes funded_psbt = 1;
/*
The name of the account to finalize the PSBT with. If empty, the default
wallet account is used.
*/
string account = 5;
}
message FinalizePsbtResponse {
// The fully signed and finalized transaction in PSBT format.

View file

@ -732,7 +732,13 @@
}
},
"walletrpcAddrRequest": {
"type": "object"
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "The name of the account to retrieve the next address of. If empty, the\ndefault wallet account is used."
}
}
},
"walletrpcAddrResponse": {
"type": "object",
@ -792,6 +798,10 @@
"type": "string",
"format": "byte",
"description": "A PSBT that should be signed and finalized. The PSBT must contain all\nrequired inputs, outputs, UTXO data and partial signatures of all other\nsigners."
},
"account": {
"type": "string",
"description": "The name of the account to finalize the PSBT with. If empty, the default\nwallet account is used."
}
}
},
@ -831,6 +841,10 @@
"type": "string",
"format": "uint64",
"description": "The fee rate, expressed in sat/vbyte, that should be used to spend the\ninput with."
},
"account": {
"type": "string",
"description": "The name of the account to fund the PSBT with. If empty, the default wallet\naccount is used."
}
}
},

View file

@ -322,7 +322,7 @@ func (w *WalletKit) ListUnspent(ctx context.Context,
var utxos []*lnwallet.Utxo
err = w.cfg.CoinSelectionLocker.WithCoinSelectLock(func() error {
utxos, err = w.cfg.Wallet.ListUnspentWitness(
minConfs, maxConfs, "",
minConfs, maxConfs, req.Account,
)
return err
})
@ -489,8 +489,13 @@ func (w *WalletKit) DeriveKey(ctx context.Context,
func (w *WalletKit) NextAddr(ctx context.Context,
req *AddrRequest) (*AddrResponse, error) {
account := lnwallet.DefaultAccountName
if req.Account != "" {
account = req.Account
}
addr, err := w.cfg.Wallet.NewAddress(
lnwallet.WitnessPubKey, false, lnwallet.DefaultAccountName,
lnwallet.WitnessPubKey, false, account,
)
if err != nil {
return nil, err
@ -1055,12 +1060,19 @@ func (w *WalletKit) FundPsbt(_ context.Context,
// UTXOs.
changeIndex := int32(-1)
err = w.cfg.CoinSelectionLocker.WithCoinSelectLock(func() error {
// We'll assume the PSBT will be funded by the default account
// unless otherwise specified.
account := lnwallet.DefaultAccountName
if req.Account != "" {
account = req.Account
}
// In case the user did specify inputs, we need to make sure
// they are known to us, still unspent and not yet locked.
if len(packet.UnsignedTx.TxIn) > 0 {
// Get a list of all unspent witness outputs.
utxos, err := w.cfg.Wallet.ListUnspentWitness(
defaultMinConf, defaultMaxConf, "",
defaultMinConf, defaultMaxConf, account,
)
if err != nil {
return err
@ -1079,7 +1091,7 @@ func (w *WalletKit) FundPsbt(_ context.Context,
// lock any coins but might still change the wallet DB by
// generating a new change address.
changeIndex, err = w.cfg.Wallet.FundPsbt(
packet, feeSatPerKW, lnwallet.DefaultAccountName,
packet, feeSatPerKW, account,
)
if err != nil {
return fmt.Errorf("wallet couldn't fund PSBT: %v", err)
@ -1155,6 +1167,13 @@ func marshallLeases(locks []*wtxmgr.LockedOutput) []*UtxoLease {
func (w *WalletKit) FinalizePsbt(_ context.Context,
req *FinalizePsbtRequest) (*FinalizePsbtResponse, error) {
// We'll assume the PSBT was funded by the default account unless
// otherwise specified.
account := lnwallet.DefaultAccountName
if req.Account != "" {
account = req.Account
}
// Parse the funded PSBT. No additional checks are required at this
// level as the wallet will perform all of them.
packet, err := psbt.NewFromRawBytes(
@ -1167,7 +1186,7 @@ func (w *WalletKit) FinalizePsbt(_ context.Context,
// Let the wallet do the heavy lifting. This will sign all inputs that
// we have the UTXO for. If some inputs can't be signed and don't have
// witness data attached, this will fail.
err = w.cfg.Wallet.FinalizePsbt(packet)
err = w.cfg.Wallet.FinalizePsbt(packet, account)
if err != nil {
return nil, fmt.Errorf("error finalizing PSBT: %v", err)
}

View file

@ -1023,7 +1023,7 @@ func (r *rpcServer) ListUnspent(ctx context.Context,
var utxos []*lnwallet.Utxo
err = r.server.cc.Wallet.WithCoinSelectLock(func() error {
utxos, err = r.server.cc.Wallet.ListUnspentWitness(
minConfs, maxConfs, "",
minConfs, maxConfs, in.Account,
)
return err
})
@ -1373,6 +1373,12 @@ func (r *rpcServer) SendMany(ctx context.Context,
func (r *rpcServer) NewAddress(ctx context.Context,
in *lnrpc.NewAddressRequest) (*lnrpc.NewAddressResponse, error) {
// Always use the default wallet account unless one was specified.
account := lnwallet.DefaultAccountName
if in.Account != "" {
account = in.Account
}
// Translate the gRPC proto address type to the wallet controller's
// available address types.
var (
@ -1382,7 +1388,7 @@ func (r *rpcServer) NewAddress(ctx context.Context,
switch in.Type {
case lnrpc.AddressType_WITNESS_PUBKEY_HASH:
addr, err = r.server.cc.Wallet.NewAddress(
lnwallet.WitnessPubKey, false, lnwallet.DefaultAccountName,
lnwallet.WitnessPubKey, false, account,
)
if err != nil {
return nil, err
@ -1390,7 +1396,7 @@ func (r *rpcServer) NewAddress(ctx context.Context,
case lnrpc.AddressType_NESTED_PUBKEY_HASH:
addr, err = r.server.cc.Wallet.NewAddress(
lnwallet.NestedWitnessPubKey, false, lnwallet.DefaultAccountName,
lnwallet.NestedWitnessPubKey, false, account,
)
if err != nil {
return nil, err
@ -1398,7 +1404,7 @@ func (r *rpcServer) NewAddress(ctx context.Context,
case lnrpc.AddressType_UNUSED_WITNESS_PUBKEY_HASH:
addr, err = r.server.cc.Wallet.LastUnusedAddress(
lnwallet.WitnessPubKey, lnwallet.DefaultAccountName,
lnwallet.WitnessPubKey, account,
)
if err != nil {
return nil, err
@ -1406,14 +1412,15 @@ func (r *rpcServer) NewAddress(ctx context.Context,
case lnrpc.AddressType_UNUSED_NESTED_PUBKEY_HASH:
addr, err = r.server.cc.Wallet.LastUnusedAddress(
lnwallet.NestedWitnessPubKey, lnwallet.DefaultAccountName,
lnwallet.NestedWitnessPubKey, account,
)
if err != nil {
return nil, err
}
}
rpcsLog.Debugf("[newaddress] type=%v addr=%v", in.Type, addr.String())
rpcsLog.Debugf("[newaddress] account=%v type=%v addr=%v", account,
in.Type, addr.String())
return &lnrpc.NewAddressResponse{Address: addr.String()}, nil
}
@ -4967,7 +4974,7 @@ func (r *rpcServer) GetTransactions(ctx context.Context,
}
transactions, err := r.server.cc.Wallet.ListTransactionDetails(
req.StartHeight, endHeight, "",
req.StartHeight, endHeight, req.Account,
)
if err != nil {
return nil, err