routing: add outgoing channel restriction

This commit is contained in:
Joost Jager 2019-02-01 13:53:27 +01:00
parent c1ab49909f
commit 7c30a8c493
No known key found for this signature in database
GPG Key ID: A61B9D4C393C59C7
9 changed files with 735 additions and 579 deletions

View File

@ -1951,6 +1951,12 @@ var sendPaymentCommand = cli.Command{
Name: "final_cltv_delta",
Usage: "the number of blocks the last hop has to reveal the preimage",
},
cli.Uint64Flag{
Name: "outgoing_chan_id",
Usage: "short channel id of the outgoing channel to " +
"use for the first hop of the payment",
Value: 0,
},
cli.BoolFlag{
Name: "force, f",
Usage: "will skip payment request confirmation",
@ -2047,6 +2053,7 @@ func sendPayment(ctx *cli.Context) error {
PaymentRequest: ctx.String("pay_req"),
Amt: ctx.Int64("amt"),
FeeLimit: feeLimit,
OutgoingChanId: ctx.Uint64("outgoing_chan_id"),
}
return sendPaymentRequest(client, req)
@ -2186,6 +2193,12 @@ var payInvoiceCommand = cli.Command{
Usage: "percentage of the payment's amount used as the" +
"maximum fee allowed when sending the payment",
},
cli.Uint64Flag{
Name: "outgoing_chan_id",
Usage: "short channel id of the outgoing channel to " +
"use for the first hop of the payment",
Value: 0,
},
cli.BoolFlag{
Name: "force, f",
Usage: "will skip payment request confirmation",
@ -2225,6 +2238,7 @@ func payInvoice(ctx *cli.Context) error {
PaymentRequest: payReq,
Amt: ctx.Int64("amt"),
FeeLimit: feeLimit,
OutgoingChanId: ctx.Uint64("outgoing_chan_id"),
}
return sendPaymentRequest(client, req)
}

View File

@ -49,7 +49,7 @@ func (x AddressType) String() string {
return proto.EnumName(AddressType_name, int32(x))
}
func (AddressType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{0}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{0}
}
type ChannelCloseSummary_ClosureType int32
@ -84,7 +84,7 @@ func (x ChannelCloseSummary_ClosureType) String() string {
return proto.EnumName(ChannelCloseSummary_ClosureType_name, int32(x))
}
func (ChannelCloseSummary_ClosureType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{39, 0}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{39, 0}
}
type ChannelEventUpdate_UpdateType int32
@ -113,7 +113,7 @@ func (x ChannelEventUpdate_UpdateType) String() string {
return proto.EnumName(ChannelEventUpdate_UpdateType_name, int32(x))
}
func (ChannelEventUpdate_UpdateType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{60, 0}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{60, 0}
}
type Invoice_InvoiceState int32
@ -139,7 +139,7 @@ func (x Invoice_InvoiceState) String() string {
return proto.EnumName(Invoice_InvoiceState_name, int32(x))
}
func (Invoice_InvoiceState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{89, 0}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{89, 0}
}
type GenSeedRequest struct {
@ -160,7 +160,7 @@ func (m *GenSeedRequest) Reset() { *m = GenSeedRequest{} }
func (m *GenSeedRequest) String() string { return proto.CompactTextString(m) }
func (*GenSeedRequest) ProtoMessage() {}
func (*GenSeedRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{0}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{0}
}
func (m *GenSeedRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenSeedRequest.Unmarshal(m, b)
@ -215,7 +215,7 @@ func (m *GenSeedResponse) Reset() { *m = GenSeedResponse{} }
func (m *GenSeedResponse) String() string { return proto.CompactTextString(m) }
func (*GenSeedResponse) ProtoMessage() {}
func (*GenSeedResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{1}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{1}
}
func (m *GenSeedResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GenSeedResponse.Unmarshal(m, b)
@ -280,7 +280,7 @@ func (m *InitWalletRequest) Reset() { *m = InitWalletRequest{} }
func (m *InitWalletRequest) String() string { return proto.CompactTextString(m) }
func (*InitWalletRequest) ProtoMessage() {}
func (*InitWalletRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{2}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{2}
}
func (m *InitWalletRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InitWalletRequest.Unmarshal(m, b)
@ -338,7 +338,7 @@ func (m *InitWalletResponse) Reset() { *m = InitWalletResponse{} }
func (m *InitWalletResponse) String() string { return proto.CompactTextString(m) }
func (*InitWalletResponse) ProtoMessage() {}
func (*InitWalletResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{3}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{3}
}
func (m *InitWalletResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InitWalletResponse.Unmarshal(m, b)
@ -380,7 +380,7 @@ func (m *UnlockWalletRequest) Reset() { *m = UnlockWalletRequest{} }
func (m *UnlockWalletRequest) String() string { return proto.CompactTextString(m) }
func (*UnlockWalletRequest) ProtoMessage() {}
func (*UnlockWalletRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{4}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{4}
}
func (m *UnlockWalletRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnlockWalletRequest.Unmarshal(m, b)
@ -424,7 +424,7 @@ func (m *UnlockWalletResponse) Reset() { *m = UnlockWalletResponse{} }
func (m *UnlockWalletResponse) String() string { return proto.CompactTextString(m) }
func (*UnlockWalletResponse) ProtoMessage() {}
func (*UnlockWalletResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{5}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{5}
}
func (m *UnlockWalletResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UnlockWalletResponse.Unmarshal(m, b)
@ -462,7 +462,7 @@ func (m *ChangePasswordRequest) Reset() { *m = ChangePasswordRequest{} }
func (m *ChangePasswordRequest) String() string { return proto.CompactTextString(m) }
func (*ChangePasswordRequest) ProtoMessage() {}
func (*ChangePasswordRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{6}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{6}
}
func (m *ChangePasswordRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChangePasswordRequest.Unmarshal(m, b)
@ -506,7 +506,7 @@ func (m *ChangePasswordResponse) Reset() { *m = ChangePasswordResponse{}
func (m *ChangePasswordResponse) String() string { return proto.CompactTextString(m) }
func (*ChangePasswordResponse) ProtoMessage() {}
func (*ChangePasswordResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{7}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{7}
}
func (m *ChangePasswordResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChangePasswordResponse.Unmarshal(m, b)
@ -548,7 +548,7 @@ func (m *Utxo) Reset() { *m = Utxo{} }
func (m *Utxo) String() string { return proto.CompactTextString(m) }
func (*Utxo) ProtoMessage() {}
func (*Utxo) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{8}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{8}
}
func (m *Utxo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Utxo.Unmarshal(m, b)
@ -636,7 +636,7 @@ func (m *Transaction) Reset() { *m = Transaction{} }
func (m *Transaction) String() string { return proto.CompactTextString(m) }
func (*Transaction) ProtoMessage() {}
func (*Transaction) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{9}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{9}
}
func (m *Transaction) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Transaction.Unmarshal(m, b)
@ -722,7 +722,7 @@ func (m *GetTransactionsRequest) Reset() { *m = GetTransactionsRequest{}
func (m *GetTransactionsRequest) String() string { return proto.CompactTextString(m) }
func (*GetTransactionsRequest) ProtoMessage() {}
func (*GetTransactionsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{10}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{10}
}
func (m *GetTransactionsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetTransactionsRequest.Unmarshal(m, b)
@ -754,7 +754,7 @@ func (m *TransactionDetails) Reset() { *m = TransactionDetails{} }
func (m *TransactionDetails) String() string { return proto.CompactTextString(m) }
func (*TransactionDetails) ProtoMessage() {}
func (*TransactionDetails) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{11}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{11}
}
func (m *TransactionDetails) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TransactionDetails.Unmarshal(m, b)
@ -795,7 +795,7 @@ func (m *FeeLimit) Reset() { *m = FeeLimit{} }
func (m *FeeLimit) String() string { return proto.CompactTextString(m) }
func (*FeeLimit) ProtoMessage() {}
func (*FeeLimit) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{12}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{12}
}
func (m *FeeLimit) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FeeLimit.Unmarshal(m, b)
@ -941,17 +941,21 @@ type SendRequest struct {
// This value can be represented either as a percentage of the amount being
// sent, or as a fixed amount of the maximum fee the user is willing the pay to
// send the payment.
FeeLimit *FeeLimit `protobuf:"bytes,8,opt,name=fee_limit,json=feeLimit,proto3" json:"fee_limit,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
FeeLimit *FeeLimit `protobuf:"bytes,8,opt,name=fee_limit,json=feeLimit,proto3" json:"fee_limit,omitempty"`
// *
// The channel id of the channel that must be taken to the first hop. If zero,
// any channel may be used.
OutgoingChanId uint64 `protobuf:"varint,9,opt,name=outgoing_chan_id,json=outgoingChanId,proto3" json:"outgoing_chan_id,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *SendRequest) Reset() { *m = SendRequest{} }
func (m *SendRequest) String() string { return proto.CompactTextString(m) }
func (*SendRequest) ProtoMessage() {}
func (*SendRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{13}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{13}
}
func (m *SendRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendRequest.Unmarshal(m, b)
@ -1027,6 +1031,13 @@ func (m *SendRequest) GetFeeLimit() *FeeLimit {
return nil
}
func (m *SendRequest) GetOutgoingChanId() uint64 {
if m != nil {
return m.OutgoingChanId
}
return 0
}
type SendResponse struct {
PaymentError string `protobuf:"bytes,1,opt,name=payment_error,proto3" json:"payment_error,omitempty"`
PaymentPreimage []byte `protobuf:"bytes,2,opt,name=payment_preimage,proto3" json:"payment_preimage,omitempty"`
@ -1041,7 +1052,7 @@ func (m *SendResponse) Reset() { *m = SendResponse{} }
func (m *SendResponse) String() string { return proto.CompactTextString(m) }
func (*SendResponse) ProtoMessage() {}
func (*SendResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{14}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{14}
}
func (m *SendResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendResponse.Unmarshal(m, b)
@ -1111,7 +1122,7 @@ func (m *SendToRouteRequest) Reset() { *m = SendToRouteRequest{} }
func (m *SendToRouteRequest) String() string { return proto.CompactTextString(m) }
func (*SendToRouteRequest) ProtoMessage() {}
func (*SendToRouteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{15}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{15}
}
func (m *SendToRouteRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendToRouteRequest.Unmarshal(m, b)
@ -1176,7 +1187,7 @@ func (m *ChannelPoint) Reset() { *m = ChannelPoint{} }
func (m *ChannelPoint) String() string { return proto.CompactTextString(m) }
func (*ChannelPoint) ProtoMessage() {}
func (*ChannelPoint) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{16}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{16}
}
func (m *ChannelPoint) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelPoint.Unmarshal(m, b)
@ -1322,7 +1333,7 @@ func (m *OutPoint) Reset() { *m = OutPoint{} }
func (m *OutPoint) String() string { return proto.CompactTextString(m) }
func (*OutPoint) ProtoMessage() {}
func (*OutPoint) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{17}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{17}
}
func (m *OutPoint) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OutPoint.Unmarshal(m, b)
@ -1377,7 +1388,7 @@ func (m *LightningAddress) Reset() { *m = LightningAddress{} }
func (m *LightningAddress) String() string { return proto.CompactTextString(m) }
func (*LightningAddress) ProtoMessage() {}
func (*LightningAddress) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{18}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{18}
}
func (m *LightningAddress) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LightningAddress.Unmarshal(m, b)
@ -1427,7 +1438,7 @@ func (m *SendManyRequest) Reset() { *m = SendManyRequest{} }
func (m *SendManyRequest) String() string { return proto.CompactTextString(m) }
func (*SendManyRequest) ProtoMessage() {}
func (*SendManyRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{19}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{19}
}
func (m *SendManyRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendManyRequest.Unmarshal(m, b)
@ -1480,7 +1491,7 @@ func (m *SendManyResponse) Reset() { *m = SendManyResponse{} }
func (m *SendManyResponse) String() string { return proto.CompactTextString(m) }
func (*SendManyResponse) ProtoMessage() {}
func (*SendManyResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{20}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{20}
}
func (m *SendManyResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendManyResponse.Unmarshal(m, b)
@ -1530,7 +1541,7 @@ func (m *SendCoinsRequest) Reset() { *m = SendCoinsRequest{} }
func (m *SendCoinsRequest) String() string { return proto.CompactTextString(m) }
func (*SendCoinsRequest) ProtoMessage() {}
func (*SendCoinsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{21}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{21}
}
func (m *SendCoinsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendCoinsRequest.Unmarshal(m, b)
@ -1597,7 +1608,7 @@ func (m *SendCoinsResponse) Reset() { *m = SendCoinsResponse{} }
func (m *SendCoinsResponse) String() string { return proto.CompactTextString(m) }
func (*SendCoinsResponse) ProtoMessage() {}
func (*SendCoinsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{22}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{22}
}
func (m *SendCoinsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SendCoinsResponse.Unmarshal(m, b)
@ -1638,7 +1649,7 @@ func (m *ListUnspentRequest) Reset() { *m = ListUnspentRequest{} }
func (m *ListUnspentRequest) String() string { return proto.CompactTextString(m) }
func (*ListUnspentRequest) ProtoMessage() {}
func (*ListUnspentRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{23}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{23}
}
func (m *ListUnspentRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListUnspentRequest.Unmarshal(m, b)
@ -1684,7 +1695,7 @@ func (m *ListUnspentResponse) Reset() { *m = ListUnspentResponse{} }
func (m *ListUnspentResponse) String() string { return proto.CompactTextString(m) }
func (*ListUnspentResponse) ProtoMessage() {}
func (*ListUnspentResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{24}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{24}
}
func (m *ListUnspentResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListUnspentResponse.Unmarshal(m, b)
@ -1723,7 +1734,7 @@ func (m *NewAddressRequest) Reset() { *m = NewAddressRequest{} }
func (m *NewAddressRequest) String() string { return proto.CompactTextString(m) }
func (*NewAddressRequest) ProtoMessage() {}
func (*NewAddressRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{25}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{25}
}
func (m *NewAddressRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NewAddressRequest.Unmarshal(m, b)
@ -1762,7 +1773,7 @@ func (m *NewAddressResponse) Reset() { *m = NewAddressResponse{} }
func (m *NewAddressResponse) String() string { return proto.CompactTextString(m) }
func (*NewAddressResponse) ProtoMessage() {}
func (*NewAddressResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{26}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{26}
}
func (m *NewAddressResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NewAddressResponse.Unmarshal(m, b)
@ -1801,7 +1812,7 @@ func (m *SignMessageRequest) Reset() { *m = SignMessageRequest{} }
func (m *SignMessageRequest) String() string { return proto.CompactTextString(m) }
func (*SignMessageRequest) ProtoMessage() {}
func (*SignMessageRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{27}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{27}
}
func (m *SignMessageRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignMessageRequest.Unmarshal(m, b)
@ -1840,7 +1851,7 @@ func (m *SignMessageResponse) Reset() { *m = SignMessageResponse{} }
func (m *SignMessageResponse) String() string { return proto.CompactTextString(m) }
func (*SignMessageResponse) ProtoMessage() {}
func (*SignMessageResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{28}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{28}
}
func (m *SignMessageResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignMessageResponse.Unmarshal(m, b)
@ -1881,7 +1892,7 @@ func (m *VerifyMessageRequest) Reset() { *m = VerifyMessageRequest{} }
func (m *VerifyMessageRequest) String() string { return proto.CompactTextString(m) }
func (*VerifyMessageRequest) ProtoMessage() {}
func (*VerifyMessageRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{29}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{29}
}
func (m *VerifyMessageRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VerifyMessageRequest.Unmarshal(m, b)
@ -1929,7 +1940,7 @@ func (m *VerifyMessageResponse) Reset() { *m = VerifyMessageResponse{} }
func (m *VerifyMessageResponse) String() string { return proto.CompactTextString(m) }
func (*VerifyMessageResponse) ProtoMessage() {}
func (*VerifyMessageResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{30}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{30}
}
func (m *VerifyMessageResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VerifyMessageResponse.Unmarshal(m, b)
@ -1978,7 +1989,7 @@ func (m *ConnectPeerRequest) Reset() { *m = ConnectPeerRequest{} }
func (m *ConnectPeerRequest) String() string { return proto.CompactTextString(m) }
func (*ConnectPeerRequest) ProtoMessage() {}
func (*ConnectPeerRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{31}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{31}
}
func (m *ConnectPeerRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConnectPeerRequest.Unmarshal(m, b)
@ -2022,7 +2033,7 @@ func (m *ConnectPeerResponse) Reset() { *m = ConnectPeerResponse{} }
func (m *ConnectPeerResponse) String() string { return proto.CompactTextString(m) }
func (*ConnectPeerResponse) ProtoMessage() {}
func (*ConnectPeerResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{32}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{32}
}
func (m *ConnectPeerResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConnectPeerResponse.Unmarshal(m, b)
@ -2054,7 +2065,7 @@ func (m *DisconnectPeerRequest) Reset() { *m = DisconnectPeerRequest{} }
func (m *DisconnectPeerRequest) String() string { return proto.CompactTextString(m) }
func (*DisconnectPeerRequest) ProtoMessage() {}
func (*DisconnectPeerRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{33}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{33}
}
func (m *DisconnectPeerRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DisconnectPeerRequest.Unmarshal(m, b)
@ -2091,7 +2102,7 @@ func (m *DisconnectPeerResponse) Reset() { *m = DisconnectPeerResponse{}
func (m *DisconnectPeerResponse) String() string { return proto.CompactTextString(m) }
func (*DisconnectPeerResponse) ProtoMessage() {}
func (*DisconnectPeerResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{34}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{34}
}
func (m *DisconnectPeerResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DisconnectPeerResponse.Unmarshal(m, b)
@ -2125,7 +2136,7 @@ func (m *HTLC) Reset() { *m = HTLC{} }
func (m *HTLC) String() string { return proto.CompactTextString(m) }
func (*HTLC) ProtoMessage() {}
func (*HTLC) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{35}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{35}
}
func (m *HTLC) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_HTLC.Unmarshal(m, b)
@ -2239,7 +2250,7 @@ func (m *Channel) Reset() { *m = Channel{} }
func (m *Channel) String() string { return proto.CompactTextString(m) }
func (*Channel) ProtoMessage() {}
func (*Channel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{36}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{36}
}
func (m *Channel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Channel.Unmarshal(m, b)
@ -2399,7 +2410,7 @@ func (m *ListChannelsRequest) Reset() { *m = ListChannelsRequest{} }
func (m *ListChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*ListChannelsRequest) ProtoMessage() {}
func (*ListChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{37}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{37}
}
func (m *ListChannelsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListChannelsRequest.Unmarshal(m, b)
@ -2459,7 +2470,7 @@ func (m *ListChannelsResponse) Reset() { *m = ListChannelsResponse{} }
func (m *ListChannelsResponse) String() string { return proto.CompactTextString(m) }
func (*ListChannelsResponse) ProtoMessage() {}
func (*ListChannelsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{38}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{38}
}
func (m *ListChannelsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListChannelsResponse.Unmarshal(m, b)
@ -2516,7 +2527,7 @@ func (m *ChannelCloseSummary) Reset() { *m = ChannelCloseSummary{} }
func (m *ChannelCloseSummary) String() string { return proto.CompactTextString(m) }
func (*ChannelCloseSummary) ProtoMessage() {}
func (*ChannelCloseSummary) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{39}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{39}
}
func (m *ChannelCloseSummary) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelCloseSummary.Unmarshal(m, b)
@ -2622,7 +2633,7 @@ func (m *ClosedChannelsRequest) Reset() { *m = ClosedChannelsRequest{} }
func (m *ClosedChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*ClosedChannelsRequest) ProtoMessage() {}
func (*ClosedChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{40}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{40}
}
func (m *ClosedChannelsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClosedChannelsRequest.Unmarshal(m, b)
@ -2695,7 +2706,7 @@ func (m *ClosedChannelsResponse) Reset() { *m = ClosedChannelsResponse{}
func (m *ClosedChannelsResponse) String() string { return proto.CompactTextString(m) }
func (*ClosedChannelsResponse) ProtoMessage() {}
func (*ClosedChannelsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{41}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{41}
}
func (m *ClosedChannelsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClosedChannelsResponse.Unmarshal(m, b)
@ -2748,7 +2759,7 @@ func (m *Peer) Reset() { *m = Peer{} }
func (m *Peer) String() string { return proto.CompactTextString(m) }
func (*Peer) ProtoMessage() {}
func (*Peer) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{42}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{42}
}
func (m *Peer) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Peer.Unmarshal(m, b)
@ -2834,7 +2845,7 @@ func (m *ListPeersRequest) Reset() { *m = ListPeersRequest{} }
func (m *ListPeersRequest) String() string { return proto.CompactTextString(m) }
func (*ListPeersRequest) ProtoMessage() {}
func (*ListPeersRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{43}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{43}
}
func (m *ListPeersRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListPeersRequest.Unmarshal(m, b)
@ -2866,7 +2877,7 @@ func (m *ListPeersResponse) Reset() { *m = ListPeersResponse{} }
func (m *ListPeersResponse) String() string { return proto.CompactTextString(m) }
func (*ListPeersResponse) ProtoMessage() {}
func (*ListPeersResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{44}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{44}
}
func (m *ListPeersResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListPeersResponse.Unmarshal(m, b)
@ -2903,7 +2914,7 @@ func (m *GetInfoRequest) Reset() { *m = GetInfoRequest{} }
func (m *GetInfoRequest) String() string { return proto.CompactTextString(m) }
func (*GetInfoRequest) ProtoMessage() {}
func (*GetInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{45}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{45}
}
func (m *GetInfoRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetInfoRequest.Unmarshal(m, b)
@ -2963,7 +2974,7 @@ func (m *GetInfoResponse) Reset() { *m = GetInfoResponse{} }
func (m *GetInfoResponse) String() string { return proto.CompactTextString(m) }
func (*GetInfoResponse) ProtoMessage() {}
func (*GetInfoResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{46}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{46}
}
func (m *GetInfoResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetInfoResponse.Unmarshal(m, b)
@ -3096,7 +3107,7 @@ func (m *Chain) Reset() { *m = Chain{} }
func (m *Chain) String() string { return proto.CompactTextString(m) }
func (*Chain) ProtoMessage() {}
func (*Chain) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{47}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{47}
}
func (m *Chain) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Chain.Unmarshal(m, b)
@ -3143,7 +3154,7 @@ func (m *ConfirmationUpdate) Reset() { *m = ConfirmationUpdate{} }
func (m *ConfirmationUpdate) String() string { return proto.CompactTextString(m) }
func (*ConfirmationUpdate) ProtoMessage() {}
func (*ConfirmationUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{48}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{48}
}
func (m *ConfirmationUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ConfirmationUpdate.Unmarshal(m, b)
@ -3195,7 +3206,7 @@ func (m *ChannelOpenUpdate) Reset() { *m = ChannelOpenUpdate{} }
func (m *ChannelOpenUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelOpenUpdate) ProtoMessage() {}
func (*ChannelOpenUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{49}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{49}
}
func (m *ChannelOpenUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelOpenUpdate.Unmarshal(m, b)
@ -3234,7 +3245,7 @@ func (m *ChannelCloseUpdate) Reset() { *m = ChannelCloseUpdate{} }
func (m *ChannelCloseUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelCloseUpdate) ProtoMessage() {}
func (*ChannelCloseUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{50}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{50}
}
func (m *ChannelCloseUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelCloseUpdate.Unmarshal(m, b)
@ -3289,7 +3300,7 @@ func (m *CloseChannelRequest) Reset() { *m = CloseChannelRequest{} }
func (m *CloseChannelRequest) String() string { return proto.CompactTextString(m) }
func (*CloseChannelRequest) ProtoMessage() {}
func (*CloseChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{51}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{51}
}
func (m *CloseChannelRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CloseChannelRequest.Unmarshal(m, b)
@ -3351,7 +3362,7 @@ func (m *CloseStatusUpdate) Reset() { *m = CloseStatusUpdate{} }
func (m *CloseStatusUpdate) String() string { return proto.CompactTextString(m) }
func (*CloseStatusUpdate) ProtoMessage() {}
func (*CloseStatusUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{52}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{52}
}
func (m *CloseStatusUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CloseStatusUpdate.Unmarshal(m, b)
@ -3494,7 +3505,7 @@ func (m *PendingUpdate) Reset() { *m = PendingUpdate{} }
func (m *PendingUpdate) String() string { return proto.CompactTextString(m) }
func (*PendingUpdate) ProtoMessage() {}
func (*PendingUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{53}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{53}
}
func (m *PendingUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingUpdate.Unmarshal(m, b)
@ -3560,7 +3571,7 @@ func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} }
func (m *OpenChannelRequest) String() string { return proto.CompactTextString(m) }
func (*OpenChannelRequest) ProtoMessage() {}
func (*OpenChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{54}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{54}
}
func (m *OpenChannelRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OpenChannelRequest.Unmarshal(m, b)
@ -3671,7 +3682,7 @@ func (m *OpenStatusUpdate) Reset() { *m = OpenStatusUpdate{} }
func (m *OpenStatusUpdate) String() string { return proto.CompactTextString(m) }
func (*OpenStatusUpdate) ProtoMessage() {}
func (*OpenStatusUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{55}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{55}
}
func (m *OpenStatusUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_OpenStatusUpdate.Unmarshal(m, b)
@ -3827,7 +3838,7 @@ func (m *PendingHTLC) Reset() { *m = PendingHTLC{} }
func (m *PendingHTLC) String() string { return proto.CompactTextString(m) }
func (*PendingHTLC) ProtoMessage() {}
func (*PendingHTLC) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{56}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{56}
}
func (m *PendingHTLC) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingHTLC.Unmarshal(m, b)
@ -3899,7 +3910,7 @@ func (m *PendingChannelsRequest) Reset() { *m = PendingChannelsRequest{}
func (m *PendingChannelsRequest) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsRequest) ProtoMessage() {}
func (*PendingChannelsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{57}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{57}
}
func (m *PendingChannelsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsRequest.Unmarshal(m, b)
@ -3939,7 +3950,7 @@ func (m *PendingChannelsResponse) Reset() { *m = PendingChannelsResponse
func (m *PendingChannelsResponse) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsResponse) ProtoMessage() {}
func (*PendingChannelsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58}
}
func (m *PendingChannelsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse.Unmarshal(m, b)
@ -4011,7 +4022,7 @@ func (m *PendingChannelsResponse_PendingChannel) Reset() {
func (m *PendingChannelsResponse_PendingChannel) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsResponse_PendingChannel) ProtoMessage() {}
func (*PendingChannelsResponse_PendingChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58, 0}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58, 0}
}
func (m *PendingChannelsResponse_PendingChannel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse_PendingChannel.Unmarshal(m, b)
@ -4098,7 +4109,7 @@ func (m *PendingChannelsResponse_PendingOpenChannel) String() string {
}
func (*PendingChannelsResponse_PendingOpenChannel) ProtoMessage() {}
func (*PendingChannelsResponse_PendingOpenChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58, 1}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58, 1}
}
func (m *PendingChannelsResponse_PendingOpenChannel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse_PendingOpenChannel.Unmarshal(m, b)
@ -4171,7 +4182,7 @@ func (m *PendingChannelsResponse_WaitingCloseChannel) String() string {
}
func (*PendingChannelsResponse_WaitingCloseChannel) ProtoMessage() {}
func (*PendingChannelsResponse_WaitingCloseChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58, 2}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58, 2}
}
func (m *PendingChannelsResponse_WaitingCloseChannel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse_WaitingCloseChannel.Unmarshal(m, b)
@ -4219,7 +4230,7 @@ func (m *PendingChannelsResponse_ClosedChannel) Reset() { *m = PendingCh
func (m *PendingChannelsResponse_ClosedChannel) String() string { return proto.CompactTextString(m) }
func (*PendingChannelsResponse_ClosedChannel) ProtoMessage() {}
func (*PendingChannelsResponse_ClosedChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58, 3}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58, 3}
}
func (m *PendingChannelsResponse_ClosedChannel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse_ClosedChannel.Unmarshal(m, b)
@ -4283,7 +4294,7 @@ func (m *PendingChannelsResponse_ForceClosedChannel) String() string {
}
func (*PendingChannelsResponse_ForceClosedChannel) ProtoMessage() {}
func (*PendingChannelsResponse_ForceClosedChannel) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{58, 4}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{58, 4}
}
func (m *PendingChannelsResponse_ForceClosedChannel) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PendingChannelsResponse_ForceClosedChannel.Unmarshal(m, b)
@ -4362,7 +4373,7 @@ func (m *ChannelEventSubscription) Reset() { *m = ChannelEventSubscripti
func (m *ChannelEventSubscription) String() string { return proto.CompactTextString(m) }
func (*ChannelEventSubscription) ProtoMessage() {}
func (*ChannelEventSubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{59}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{59}
}
func (m *ChannelEventSubscription) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelEventSubscription.Unmarshal(m, b)
@ -4399,7 +4410,7 @@ func (m *ChannelEventUpdate) Reset() { *m = ChannelEventUpdate{} }
func (m *ChannelEventUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelEventUpdate) ProtoMessage() {}
func (*ChannelEventUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{60}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{60}
}
func (m *ChannelEventUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelEventUpdate.Unmarshal(m, b)
@ -4611,7 +4622,7 @@ func (m *WalletBalanceRequest) Reset() { *m = WalletBalanceRequest{} }
func (m *WalletBalanceRequest) String() string { return proto.CompactTextString(m) }
func (*WalletBalanceRequest) ProtoMessage() {}
func (*WalletBalanceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{61}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{61}
}
func (m *WalletBalanceRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WalletBalanceRequest.Unmarshal(m, b)
@ -4647,7 +4658,7 @@ func (m *WalletBalanceResponse) Reset() { *m = WalletBalanceResponse{} }
func (m *WalletBalanceResponse) String() string { return proto.CompactTextString(m) }
func (*WalletBalanceResponse) ProtoMessage() {}
func (*WalletBalanceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{62}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{62}
}
func (m *WalletBalanceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WalletBalanceResponse.Unmarshal(m, b)
@ -4698,7 +4709,7 @@ func (m *ChannelBalanceRequest) Reset() { *m = ChannelBalanceRequest{} }
func (m *ChannelBalanceRequest) String() string { return proto.CompactTextString(m) }
func (*ChannelBalanceRequest) ProtoMessage() {}
func (*ChannelBalanceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{63}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{63}
}
func (m *ChannelBalanceRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelBalanceRequest.Unmarshal(m, b)
@ -4732,7 +4743,7 @@ func (m *ChannelBalanceResponse) Reset() { *m = ChannelBalanceResponse{}
func (m *ChannelBalanceResponse) String() string { return proto.CompactTextString(m) }
func (*ChannelBalanceResponse) ProtoMessage() {}
func (*ChannelBalanceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{64}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{64}
}
func (m *ChannelBalanceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelBalanceResponse.Unmarshal(m, b)
@ -4790,7 +4801,7 @@ func (m *QueryRoutesRequest) Reset() { *m = QueryRoutesRequest{} }
func (m *QueryRoutesRequest) String() string { return proto.CompactTextString(m) }
func (*QueryRoutesRequest) ProtoMessage() {}
func (*QueryRoutesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{65}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{65}
}
func (m *QueryRoutesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryRoutesRequest.Unmarshal(m, b)
@ -4856,7 +4867,7 @@ func (m *QueryRoutesResponse) Reset() { *m = QueryRoutesResponse{} }
func (m *QueryRoutesResponse) String() string { return proto.CompactTextString(m) }
func (*QueryRoutesResponse) ProtoMessage() {}
func (*QueryRoutesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{66}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{66}
}
func (m *QueryRoutesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_QueryRoutesResponse.Unmarshal(m, b)
@ -4908,7 +4919,7 @@ func (m *Hop) Reset() { *m = Hop{} }
func (m *Hop) String() string { return proto.CompactTextString(m) }
func (*Hop) ProtoMessage() {}
func (*Hop) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{67}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{67}
}
func (m *Hop) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Hop.Unmarshal(m, b)
@ -5029,7 +5040,7 @@ func (m *Route) Reset() { *m = Route{} }
func (m *Route) String() string { return proto.CompactTextString(m) }
func (*Route) ProtoMessage() {}
func (*Route) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{68}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{68}
}
func (m *Route) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Route.Unmarshal(m, b)
@ -5105,7 +5116,7 @@ func (m *NodeInfoRequest) Reset() { *m = NodeInfoRequest{} }
func (m *NodeInfoRequest) String() string { return proto.CompactTextString(m) }
func (*NodeInfoRequest) ProtoMessage() {}
func (*NodeInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{69}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{69}
}
func (m *NodeInfoRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeInfoRequest.Unmarshal(m, b)
@ -5150,7 +5161,7 @@ func (m *NodeInfo) Reset() { *m = NodeInfo{} }
func (m *NodeInfo) String() string { return proto.CompactTextString(m) }
func (*NodeInfo) ProtoMessage() {}
func (*NodeInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{70}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{70}
}
func (m *NodeInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeInfo.Unmarshal(m, b)
@ -5211,7 +5222,7 @@ func (m *LightningNode) Reset() { *m = LightningNode{} }
func (m *LightningNode) String() string { return proto.CompactTextString(m) }
func (*LightningNode) ProtoMessage() {}
func (*LightningNode) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{71}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{71}
}
func (m *LightningNode) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LightningNode.Unmarshal(m, b)
@ -5278,7 +5289,7 @@ func (m *NodeAddress) Reset() { *m = NodeAddress{} }
func (m *NodeAddress) String() string { return proto.CompactTextString(m) }
func (*NodeAddress) ProtoMessage() {}
func (*NodeAddress) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{72}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{72}
}
func (m *NodeAddress) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeAddress.Unmarshal(m, b)
@ -5327,7 +5338,7 @@ func (m *RoutingPolicy) Reset() { *m = RoutingPolicy{} }
func (m *RoutingPolicy) String() string { return proto.CompactTextString(m) }
func (*RoutingPolicy) ProtoMessage() {}
func (*RoutingPolicy) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{73}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{73}
}
func (m *RoutingPolicy) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RoutingPolicy.Unmarshal(m, b)
@ -5410,7 +5421,7 @@ func (m *ChannelEdge) Reset() { *m = ChannelEdge{} }
func (m *ChannelEdge) String() string { return proto.CompactTextString(m) }
func (*ChannelEdge) ProtoMessage() {}
func (*ChannelEdge) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{74}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{74}
}
func (m *ChannelEdge) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelEdge.Unmarshal(m, b)
@ -5501,7 +5512,7 @@ func (m *ChannelGraphRequest) Reset() { *m = ChannelGraphRequest{} }
func (m *ChannelGraphRequest) String() string { return proto.CompactTextString(m) }
func (*ChannelGraphRequest) ProtoMessage() {}
func (*ChannelGraphRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{75}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{75}
}
func (m *ChannelGraphRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelGraphRequest.Unmarshal(m, b)
@ -5543,7 +5554,7 @@ func (m *ChannelGraph) Reset() { *m = ChannelGraph{} }
func (m *ChannelGraph) String() string { return proto.CompactTextString(m) }
func (*ChannelGraph) ProtoMessage() {}
func (*ChannelGraph) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{76}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{76}
}
func (m *ChannelGraph) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelGraph.Unmarshal(m, b)
@ -5592,7 +5603,7 @@ func (m *ChanInfoRequest) Reset() { *m = ChanInfoRequest{} }
func (m *ChanInfoRequest) String() string { return proto.CompactTextString(m) }
func (*ChanInfoRequest) ProtoMessage() {}
func (*ChanInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{77}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{77}
}
func (m *ChanInfoRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChanInfoRequest.Unmarshal(m, b)
@ -5629,7 +5640,7 @@ func (m *NetworkInfoRequest) Reset() { *m = NetworkInfoRequest{} }
func (m *NetworkInfoRequest) String() string { return proto.CompactTextString(m) }
func (*NetworkInfoRequest) ProtoMessage() {}
func (*NetworkInfoRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{78}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{78}
}
func (m *NetworkInfoRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkInfoRequest.Unmarshal(m, b)
@ -5668,7 +5679,7 @@ func (m *NetworkInfo) Reset() { *m = NetworkInfo{} }
func (m *NetworkInfo) String() string { return proto.CompactTextString(m) }
func (*NetworkInfo) ProtoMessage() {}
func (*NetworkInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{79}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{79}
}
func (m *NetworkInfo) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkInfo.Unmarshal(m, b)
@ -5761,7 +5772,7 @@ func (m *StopRequest) Reset() { *m = StopRequest{} }
func (m *StopRequest) String() string { return proto.CompactTextString(m) }
func (*StopRequest) ProtoMessage() {}
func (*StopRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{80}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{80}
}
func (m *StopRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopRequest.Unmarshal(m, b)
@ -5791,7 +5802,7 @@ func (m *StopResponse) Reset() { *m = StopResponse{} }
func (m *StopResponse) String() string { return proto.CompactTextString(m) }
func (*StopResponse) ProtoMessage() {}
func (*StopResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{81}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{81}
}
func (m *StopResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopResponse.Unmarshal(m, b)
@ -5821,7 +5832,7 @@ func (m *GraphTopologySubscription) Reset() { *m = GraphTopologySubscrip
func (m *GraphTopologySubscription) String() string { return proto.CompactTextString(m) }
func (*GraphTopologySubscription) ProtoMessage() {}
func (*GraphTopologySubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{82}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{82}
}
func (m *GraphTopologySubscription) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GraphTopologySubscription.Unmarshal(m, b)
@ -5854,7 +5865,7 @@ func (m *GraphTopologyUpdate) Reset() { *m = GraphTopologyUpdate{} }
func (m *GraphTopologyUpdate) String() string { return proto.CompactTextString(m) }
func (*GraphTopologyUpdate) ProtoMessage() {}
func (*GraphTopologyUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{83}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{83}
}
func (m *GraphTopologyUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GraphTopologyUpdate.Unmarshal(m, b)
@ -5909,7 +5920,7 @@ func (m *NodeUpdate) Reset() { *m = NodeUpdate{} }
func (m *NodeUpdate) String() string { return proto.CompactTextString(m) }
func (*NodeUpdate) ProtoMessage() {}
func (*NodeUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{84}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{84}
}
func (m *NodeUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeUpdate.Unmarshal(m, b)
@ -5977,7 +5988,7 @@ func (m *ChannelEdgeUpdate) Reset() { *m = ChannelEdgeUpdate{} }
func (m *ChannelEdgeUpdate) String() string { return proto.CompactTextString(m) }
func (*ChannelEdgeUpdate) ProtoMessage() {}
func (*ChannelEdgeUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{85}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{85}
}
func (m *ChannelEdgeUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelEdgeUpdate.Unmarshal(m, b)
@ -6057,7 +6068,7 @@ func (m *ClosedChannelUpdate) Reset() { *m = ClosedChannelUpdate{} }
func (m *ClosedChannelUpdate) String() string { return proto.CompactTextString(m) }
func (*ClosedChannelUpdate) ProtoMessage() {}
func (*ClosedChannelUpdate) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{86}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{86}
}
func (m *ClosedChannelUpdate) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ClosedChannelUpdate.Unmarshal(m, b)
@ -6127,7 +6138,7 @@ func (m *HopHint) Reset() { *m = HopHint{} }
func (m *HopHint) String() string { return proto.CompactTextString(m) }
func (*HopHint) ProtoMessage() {}
func (*HopHint) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{87}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{87}
}
func (m *HopHint) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_HopHint.Unmarshal(m, b)
@ -6196,7 +6207,7 @@ func (m *RouteHint) Reset() { *m = RouteHint{} }
func (m *RouteHint) String() string { return proto.CompactTextString(m) }
func (*RouteHint) ProtoMessage() {}
func (*RouteHint) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{88}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{88}
}
func (m *RouteHint) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RouteHint.Unmarshal(m, b)
@ -6311,7 +6322,7 @@ func (m *Invoice) Reset() { *m = Invoice{} }
func (m *Invoice) String() string { return proto.CompactTextString(m) }
func (*Invoice) ProtoMessage() {}
func (*Invoice) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{89}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{89}
}
func (m *Invoice) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Invoice.Unmarshal(m, b)
@ -6503,7 +6514,7 @@ func (m *AddInvoiceResponse) Reset() { *m = AddInvoiceResponse{} }
func (m *AddInvoiceResponse) String() string { return proto.CompactTextString(m) }
func (*AddInvoiceResponse) ProtoMessage() {}
func (*AddInvoiceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{90}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{90}
}
func (m *AddInvoiceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AddInvoiceResponse.Unmarshal(m, b)
@ -6560,7 +6571,7 @@ func (m *PaymentHash) Reset() { *m = PaymentHash{} }
func (m *PaymentHash) String() string { return proto.CompactTextString(m) }
func (*PaymentHash) ProtoMessage() {}
func (*PaymentHash) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{91}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{91}
}
func (m *PaymentHash) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PaymentHash.Unmarshal(m, b)
@ -6616,7 +6627,7 @@ func (m *ListInvoiceRequest) Reset() { *m = ListInvoiceRequest{} }
func (m *ListInvoiceRequest) String() string { return proto.CompactTextString(m) }
func (*ListInvoiceRequest) ProtoMessage() {}
func (*ListInvoiceRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{92}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{92}
}
func (m *ListInvoiceRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListInvoiceRequest.Unmarshal(m, b)
@ -6686,7 +6697,7 @@ func (m *ListInvoiceResponse) Reset() { *m = ListInvoiceResponse{} }
func (m *ListInvoiceResponse) String() string { return proto.CompactTextString(m) }
func (*ListInvoiceResponse) ProtoMessage() {}
func (*ListInvoiceResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{93}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{93}
}
func (m *ListInvoiceResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListInvoiceResponse.Unmarshal(m, b)
@ -6749,7 +6760,7 @@ func (m *InvoiceSubscription) Reset() { *m = InvoiceSubscription{} }
func (m *InvoiceSubscription) String() string { return proto.CompactTextString(m) }
func (*InvoiceSubscription) ProtoMessage() {}
func (*InvoiceSubscription) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{94}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{94}
}
func (m *InvoiceSubscription) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InvoiceSubscription.Unmarshal(m, b)
@ -6809,7 +6820,7 @@ func (m *Payment) Reset() { *m = Payment{} }
func (m *Payment) String() string { return proto.CompactTextString(m) }
func (*Payment) ProtoMessage() {}
func (*Payment) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{95}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{95}
}
func (m *Payment) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Payment.Unmarshal(m, b)
@ -6896,7 +6907,7 @@ func (m *ListPaymentsRequest) Reset() { *m = ListPaymentsRequest{} }
func (m *ListPaymentsRequest) String() string { return proto.CompactTextString(m) }
func (*ListPaymentsRequest) ProtoMessage() {}
func (*ListPaymentsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{96}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{96}
}
func (m *ListPaymentsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListPaymentsRequest.Unmarshal(m, b)
@ -6928,7 +6939,7 @@ func (m *ListPaymentsResponse) Reset() { *m = ListPaymentsResponse{} }
func (m *ListPaymentsResponse) String() string { return proto.CompactTextString(m) }
func (*ListPaymentsResponse) ProtoMessage() {}
func (*ListPaymentsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{97}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{97}
}
func (m *ListPaymentsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListPaymentsResponse.Unmarshal(m, b)
@ -6965,7 +6976,7 @@ func (m *DeleteAllPaymentsRequest) Reset() { *m = DeleteAllPaymentsReque
func (m *DeleteAllPaymentsRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteAllPaymentsRequest) ProtoMessage() {}
func (*DeleteAllPaymentsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{98}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{98}
}
func (m *DeleteAllPaymentsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteAllPaymentsRequest.Unmarshal(m, b)
@ -6995,7 +7006,7 @@ func (m *DeleteAllPaymentsResponse) Reset() { *m = DeleteAllPaymentsResp
func (m *DeleteAllPaymentsResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteAllPaymentsResponse) ProtoMessage() {}
func (*DeleteAllPaymentsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{99}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{99}
}
func (m *DeleteAllPaymentsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DeleteAllPaymentsResponse.Unmarshal(m, b)
@ -7026,7 +7037,7 @@ func (m *AbandonChannelRequest) Reset() { *m = AbandonChannelRequest{} }
func (m *AbandonChannelRequest) String() string { return proto.CompactTextString(m) }
func (*AbandonChannelRequest) ProtoMessage() {}
func (*AbandonChannelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{100}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{100}
}
func (m *AbandonChannelRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AbandonChannelRequest.Unmarshal(m, b)
@ -7063,7 +7074,7 @@ func (m *AbandonChannelResponse) Reset() { *m = AbandonChannelResponse{}
func (m *AbandonChannelResponse) String() string { return proto.CompactTextString(m) }
func (*AbandonChannelResponse) ProtoMessage() {}
func (*AbandonChannelResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{101}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{101}
}
func (m *AbandonChannelResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AbandonChannelResponse.Unmarshal(m, b)
@ -7095,7 +7106,7 @@ func (m *DebugLevelRequest) Reset() { *m = DebugLevelRequest{} }
func (m *DebugLevelRequest) String() string { return proto.CompactTextString(m) }
func (*DebugLevelRequest) ProtoMessage() {}
func (*DebugLevelRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{102}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{102}
}
func (m *DebugLevelRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DebugLevelRequest.Unmarshal(m, b)
@ -7140,7 +7151,7 @@ func (m *DebugLevelResponse) Reset() { *m = DebugLevelResponse{} }
func (m *DebugLevelResponse) String() string { return proto.CompactTextString(m) }
func (*DebugLevelResponse) ProtoMessage() {}
func (*DebugLevelResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{103}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{103}
}
func (m *DebugLevelResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DebugLevelResponse.Unmarshal(m, b)
@ -7179,7 +7190,7 @@ func (m *PayReqString) Reset() { *m = PayReqString{} }
func (m *PayReqString) String() string { return proto.CompactTextString(m) }
func (*PayReqString) ProtoMessage() {}
func (*PayReqString) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{104}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{104}
}
func (m *PayReqString) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PayReqString.Unmarshal(m, b)
@ -7226,7 +7237,7 @@ func (m *PayReq) Reset() { *m = PayReq{} }
func (m *PayReq) String() string { return proto.CompactTextString(m) }
func (*PayReq) ProtoMessage() {}
func (*PayReq) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{105}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{105}
}
func (m *PayReq) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PayReq.Unmarshal(m, b)
@ -7326,7 +7337,7 @@ func (m *FeeReportRequest) Reset() { *m = FeeReportRequest{} }
func (m *FeeReportRequest) String() string { return proto.CompactTextString(m) }
func (*FeeReportRequest) ProtoMessage() {}
func (*FeeReportRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{106}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{106}
}
func (m *FeeReportRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FeeReportRequest.Unmarshal(m, b)
@ -7364,7 +7375,7 @@ func (m *ChannelFeeReport) Reset() { *m = ChannelFeeReport{} }
func (m *ChannelFeeReport) String() string { return proto.CompactTextString(m) }
func (*ChannelFeeReport) ProtoMessage() {}
func (*ChannelFeeReport) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{107}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{107}
}
func (m *ChannelFeeReport) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ChannelFeeReport.Unmarshal(m, b)
@ -7430,7 +7441,7 @@ func (m *FeeReportResponse) Reset() { *m = FeeReportResponse{} }
func (m *FeeReportResponse) String() string { return proto.CompactTextString(m) }
func (*FeeReportResponse) ProtoMessage() {}
func (*FeeReportResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{108}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{108}
}
func (m *FeeReportResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FeeReportResponse.Unmarshal(m, b)
@ -7498,7 +7509,7 @@ func (m *PolicyUpdateRequest) Reset() { *m = PolicyUpdateRequest{} }
func (m *PolicyUpdateRequest) String() string { return proto.CompactTextString(m) }
func (*PolicyUpdateRequest) ProtoMessage() {}
func (*PolicyUpdateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{109}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{109}
}
func (m *PolicyUpdateRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PolicyUpdateRequest.Unmarshal(m, b)
@ -7659,7 +7670,7 @@ func (m *PolicyUpdateResponse) Reset() { *m = PolicyUpdateResponse{} }
func (m *PolicyUpdateResponse) String() string { return proto.CompactTextString(m) }
func (*PolicyUpdateResponse) ProtoMessage() {}
func (*PolicyUpdateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{110}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{110}
}
func (m *PolicyUpdateResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_PolicyUpdateResponse.Unmarshal(m, b)
@ -7697,7 +7708,7 @@ func (m *ForwardingHistoryRequest) Reset() { *m = ForwardingHistoryReque
func (m *ForwardingHistoryRequest) String() string { return proto.CompactTextString(m) }
func (*ForwardingHistoryRequest) ProtoMessage() {}
func (*ForwardingHistoryRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{111}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{111}
}
func (m *ForwardingHistoryRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ForwardingHistoryRequest.Unmarshal(m, b)
@ -7769,7 +7780,7 @@ func (m *ForwardingEvent) Reset() { *m = ForwardingEvent{} }
func (m *ForwardingEvent) String() string { return proto.CompactTextString(m) }
func (*ForwardingEvent) ProtoMessage() {}
func (*ForwardingEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{112}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{112}
}
func (m *ForwardingEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ForwardingEvent.Unmarshal(m, b)
@ -7852,7 +7863,7 @@ func (m *ForwardingHistoryResponse) Reset() { *m = ForwardingHistoryResp
func (m *ForwardingHistoryResponse) String() string { return proto.CompactTextString(m) }
func (*ForwardingHistoryResponse) ProtoMessage() {}
func (*ForwardingHistoryResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_rpc_77ead11e8ea54150, []int{113}
return fileDescriptor_rpc_39d91cdf3094ea9f, []int{113}
}
func (m *ForwardingHistoryResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ForwardingHistoryResponse.Unmarshal(m, b)
@ -10352,444 +10363,446 @@ var _Lightning_serviceDesc = grpc.ServiceDesc{
Metadata: "rpc.proto",
}
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_rpc_77ead11e8ea54150) }
func init() { proto.RegisterFile("rpc.proto", fileDescriptor_rpc_39d91cdf3094ea9f) }
var fileDescriptor_rpc_77ead11e8ea54150 = []byte{
// 6974 bytes of a gzipped FileDescriptorProto
var fileDescriptor_rpc_39d91cdf3094ea9f = []byte{
// 7002 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x5c, 0x5f, 0x6c, 0x24, 0xc9,
0x59, 0xdf, 0x9e, 0x3f, 0xf6, 0xcc, 0x37, 0xe3, 0xf1, 0xb8, 0xfc, 0x6f, 0x76, 0x6e, 0x6f, 0x6f,
0xaf, 0xb3, 0xdc, 0x6e, 0x9c, 0x63, 0xbd, 0xb7, 0x49, 0x8e, 0xcb, 0x1d, 0x09, 0x78, 0x6d, 0xef,
0x7a, 0x13, 0x9f, 0xd7, 0x69, 0xef, 0x66, 0xc9, 0x25, 0x68, 0xd2, 0x9e, 0x29, 0x8f, 0xfb, 0xb6,
0xa7, 0x7b, 0xd2, 0xdd, 0x63, 0xef, 0xe4, 0x38, 0x09, 0x01, 0x22, 0x12, 0x02, 0x21, 0xe0, 0x85,
0xa0, 0x20, 0xa4, 0x80, 0x44, 0xf2, 0xc8, 0x43, 0x22, 0x24, 0xe0, 0x0d, 0x21, 0x81, 0x84, 0x10,
0xca, 0x23, 0x12, 0x2f, 0xf0, 0x12, 0x78, 0x43, 0xe2, 0x11, 0x09, 0xd5, 0x57, 0x7f, 0xba, 0xaa,
0xbb, 0x67, 0xbd, 0x97, 0x04, 0x9e, 0xec, 0xfa, 0xd5, 0xd7, 0xf5, 0xf7, 0xfb, 0x57, 0x5f, 0x7d,
0x35, 0x50, 0x8f, 0xc6, 0xfd, 0x5b, 0xe3, 0x28, 0x4c, 0x42, 0x52, 0xf5, 0x83, 0x68, 0xdc, 0xef,
0x5e, 0x19, 0x86, 0xe1, 0xd0, 0xa7, 0x9b, 0xee, 0xd8, 0xdb, 0x74, 0x83, 0x20, 0x4c, 0xdc, 0xc4,
0x0b, 0x83, 0x98, 0x13, 0xd9, 0x5f, 0x83, 0xd6, 0x7d, 0x1a, 0x1c, 0x51, 0x3a, 0x70, 0xe8, 0xd7,
0x27, 0x34, 0x4e, 0xc8, 0x27, 0x60, 0xc9, 0xa5, 0xdf, 0xa0, 0x74, 0xd0, 0x1b, 0xbb, 0x71, 0x3c,
0x3e, 0x8d, 0xdc, 0x98, 0x76, 0xac, 0x6b, 0xd6, 0xcd, 0xa6, 0xd3, 0xe6, 0x15, 0x87, 0x0a, 0x27,
0x59, 0xdf, 0x9e, 0x3f, 0xf6, 0xcc, 0x37, 0xe3, 0xf1, 0xb8, 0xfc, 0x67, 0x67, 0xe7, 0xf6, 0xf6,
0xf6, 0x3a, 0xcb, 0xad, 0xe3, 0x1c, 0xeb, 0xbd, 0x4d, 0x72, 0x5c, 0xee, 0x48, 0xc0, 0x6b, 0x7b,
0xd7, 0x9b, 0xf8, 0xbc, 0x4e, 0x7b, 0x37, 0x4b, 0x2e, 0x41, 0x93, 0xf6, 0x4c, 0x79, 0xdc, 0xb7,
0x3d, 0xdd, 0x93, 0xee, 0x1e, 0x7b, 0x27, 0xc7, 0x49, 0x08, 0x10, 0x91, 0x10, 0x08, 0x01, 0x2f,
0x04, 0x05, 0x21, 0x05, 0x24, 0xc8, 0x23, 0x0f, 0x89, 0x90, 0x80, 0x37, 0x84, 0x04, 0x12, 0x42,
0x90, 0x47, 0x24, 0x5e, 0xe0, 0x25, 0xf0, 0x86, 0xc4, 0x23, 0x12, 0xaa, 0xaf, 0xfe, 0x74, 0x55,
0x77, 0xcf, 0x7a, 0x2f, 0x09, 0x3c, 0xd9, 0xf5, 0xab, 0xaf, 0xeb, 0xef, 0xf7, 0xaf, 0xbe, 0xfa,
0x6a, 0xa0, 0x1e, 0x8d, 0xfb, 0xb7, 0xc6, 0x51, 0x98, 0x84, 0xa4, 0xea, 0x07, 0xd1, 0xb8, 0xdf,
0xbd, 0x3a, 0x0c, 0xc3, 0xa1, 0x4f, 0x37, 0xdd, 0xb1, 0xb7, 0xe9, 0x06, 0x41, 0x98, 0xb8, 0x89,
0x17, 0x06, 0x31, 0x27, 0xb2, 0xbf, 0x06, 0xad, 0xfb, 0x34, 0x38, 0xa2, 0x74, 0xe0, 0xd0, 0xaf,
0x4f, 0x68, 0x9c, 0x90, 0x4f, 0xc0, 0x92, 0x4b, 0xbf, 0x41, 0xe9, 0xa0, 0x37, 0x76, 0xe3, 0x78,
0x7c, 0x1a, 0xb9, 0x31, 0xed, 0x58, 0xd7, 0xad, 0xf5, 0xa6, 0xd3, 0xe6, 0x15, 0x87, 0x0a, 0x27,
0xaf, 0x42, 0x33, 0x66, 0xa4, 0x34, 0x48, 0xa2, 0x70, 0x3c, 0xed, 0x94, 0x90, 0xae, 0xc1, 0xb0,
0x5d, 0x0e, 0xd9, 0x3e, 0x2c, 0xaa, 0x1e, 0xe2, 0x71, 0x18, 0xc4, 0x94, 0xdc, 0x86, 0x95, 0xbe,
0x37, 0x3e, 0xa5, 0x51, 0x0f, 0x3f, 0x1e, 0x05, 0x74, 0x14, 0x06, 0x5e, 0xbf, 0x63, 0x5d, 0x2b,
0xdf, 0xac, 0x3b, 0x84, 0xd7, 0xb1, 0x2f, 0xde, 0x15, 0x35, 0xe4, 0x06, 0x2c, 0xd2, 0x80, 0xe3,
0x74, 0x80, 0x5f, 0x89, 0xae, 0x5a, 0x29, 0xcc, 0x3e, 0xb0, 0xff, 0xd6, 0x82, 0xa5, 0x07, 0x81,
0x97, 0x3c, 0x71, 0x7d, 0x9f, 0x26, 0x72, 0x4e, 0x37, 0x60, 0xf1, 0x1c, 0x01, 0x9c, 0xd3, 0x79,
0x18, 0x0d, 0xc4, 0x8c, 0x5a, 0x1c, 0x3e, 0x14, 0xe8, 0xcc, 0x91, 0x95, 0x66, 0x8e, 0xac, 0x70,
0xb9, 0xca, 0x33, 0x96, 0xeb, 0x06, 0x2c, 0x46, 0xb4, 0x1f, 0x9e, 0xd1, 0x68, 0xda, 0x3b, 0xf7,
0x82, 0x41, 0x78, 0xde, 0xa9, 0x5c, 0xb3, 0x6e, 0x56, 0x9d, 0x96, 0x84, 0x9f, 0x20, 0x6a, 0xaf,
0x00, 0xd1, 0x67, 0xc1, 0xd7, 0xcd, 0x1e, 0xc2, 0xf2, 0xe3, 0xc0, 0x0f, 0xfb, 0x4f, 0x7f, 0xcc,
0xd9, 0x15, 0x74, 0x5f, 0x2a, 0xec, 0x7e, 0x0d, 0x56, 0xcc, 0x8e, 0xc4, 0x00, 0x28, 0xac, 0x6e,
0x9f, 0xba, 0xc1, 0x90, 0xca, 0x26, 0xe5, 0x10, 0x3e, 0x0e, 0xed, 0xfe, 0x24, 0x8a, 0x68, 0x90,
0x1b, 0xc3, 0xa2, 0xc0, 0xd5, 0x20, 0x5e, 0x85, 0x66, 0x40, 0xcf, 0x53, 0x32, 0xc1, 0x32, 0x01,
0x3d, 0x97, 0x24, 0x76, 0x07, 0xd6, 0xb2, 0xdd, 0x88, 0x01, 0xfc, 0xc8, 0x82, 0xca, 0xe3, 0xe4,
0x59, 0x48, 0x6e, 0x41, 0x25, 0x99, 0x8e, 0x39, 0x63, 0xb6, 0xee, 0x90, 0x5b, 0xc8, 0xeb, 0xb7,
0xb6, 0x06, 0x83, 0x88, 0xc6, 0xf1, 0xa3, 0xe9, 0x98, 0x3a, 0x4d, 0x97, 0x17, 0x7a, 0x8c, 0x8e,
0x74, 0x60, 0x5e, 0x94, 0xb1, 0xc3, 0xba, 0x23, 0x8b, 0xe4, 0x2a, 0x80, 0x3b, 0x0a, 0x27, 0x41,
0xd2, 0x8b, 0xdd, 0x04, 0x77, 0xae, 0xec, 0x68, 0x08, 0xb9, 0x0e, 0x0b, 0x71, 0x3f, 0xf2, 0xc6,
0x49, 0x6f, 0x3c, 0x39, 0x7e, 0x4a, 0xa7, 0xb8, 0x63, 0x75, 0xc7, 0x04, 0xc9, 0x27, 0xa0, 0x16,
0x4e, 0x92, 0x71, 0xe8, 0x05, 0x49, 0xa7, 0x7a, 0xcd, 0xba, 0xd9, 0xb8, 0xb3, 0x28, 0xc6, 0xf4,
0x70, 0x92, 0x1c, 0x32, 0xd8, 0x51, 0x04, 0xac, 0xc9, 0x7e, 0x18, 0x9c, 0x78, 0xd1, 0x88, 0xcb,
0x62, 0x67, 0x0e, 0x7b, 0x35, 0x41, 0xfb, 0x5b, 0x25, 0x68, 0x3c, 0x8a, 0xdc, 0x20, 0x76, 0xfb,
0x0c, 0x60, 0x53, 0x48, 0x9e, 0xf5, 0x4e, 0xdd, 0xf8, 0x14, 0x67, 0x5d, 0x77, 0x64, 0x91, 0xac,
0xc1, 0x1c, 0x1f, 0x30, 0xce, 0xad, 0xec, 0x88, 0x12, 0x79, 0x1d, 0x96, 0x82, 0xc9, 0xa8, 0x67,
0xf6, 0x55, 0xc6, 0x1d, 0xcf, 0x57, 0xb0, 0x85, 0x38, 0x66, 0x7b, 0xce, 0xbb, 0xe0, 0xb3, 0xd4,
0x10, 0x62, 0x43, 0x53, 0x94, 0xa8, 0x37, 0x3c, 0xe5, 0xd3, 0xac, 0x3a, 0x06, 0xc6, 0xda, 0x48,
0xbc, 0x11, 0xed, 0xc5, 0x89, 0x3b, 0x1a, 0x8b, 0x69, 0x69, 0x08, 0xd6, 0x87, 0x89, 0xeb, 0xf7,
0x4e, 0x28, 0x8d, 0x3b, 0xf3, 0xa2, 0x5e, 0x21, 0xe4, 0x35, 0x68, 0x0d, 0x68, 0x9c, 0xf4, 0xc4,
0xe6, 0xd0, 0xb8, 0x53, 0x43, 0xc9, 0xcb, 0xa0, 0x8c, 0x43, 0xee, 0xd3, 0x44, 0x5b, 0x9d, 0x58,
0x70, 0xa2, 0xbd, 0x0f, 0x44, 0x83, 0x77, 0x68, 0xe2, 0x7a, 0x7e, 0x4c, 0xde, 0x84, 0x66, 0xa2,
0x11, 0xa3, 0xa6, 0x69, 0x28, 0xb6, 0xd1, 0x3e, 0x70, 0x0c, 0x3a, 0xfb, 0x3e, 0xd4, 0xee, 0x51,
0xba, 0xef, 0x8d, 0xbc, 0x84, 0xac, 0x41, 0xf5, 0xc4, 0x7b, 0x46, 0x39, 0x63, 0x97, 0xf7, 0x2e,
0x39, 0xbc, 0x48, 0xba, 0x30, 0x3f, 0xa6, 0x51, 0x9f, 0xca, 0xe5, 0xdf, 0xbb, 0xe4, 0x48, 0xe0,
0xee, 0x3c, 0x54, 0x7d, 0xf6, 0xb1, 0xfd, 0xdd, 0x12, 0x34, 0x8e, 0x68, 0xa0, 0x04, 0x86, 0x40,
0x85, 0x4d, 0x49, 0x08, 0x09, 0xfe, 0x4f, 0x5e, 0x81, 0x06, 0x4e, 0x33, 0x4e, 0x22, 0x2f, 0x18,
0x0a, 0x3e, 0x05, 0x06, 0x1d, 0x21, 0x42, 0xda, 0x50, 0x76, 0x47, 0x92, 0x47, 0xd9, 0xbf, 0x4c,
0x98, 0xc6, 0xee, 0x74, 0xc4, 0xe4, 0x4e, 0xed, 0x5a, 0xd3, 0x69, 0x08, 0x6c, 0x8f, 0x6d, 0xdb,
0x2d, 0x58, 0xd6, 0x49, 0x64, 0xeb, 0x55, 0x6c, 0x7d, 0x49, 0xa3, 0x14, 0x9d, 0xdc, 0x80, 0x45,
0x49, 0x1f, 0xf1, 0xc1, 0xe2, 0x3e, 0xd6, 0x9d, 0x96, 0x80, 0xe5, 0x14, 0x6e, 0x42, 0xfb, 0xc4,
0x0b, 0x5c, 0xbf, 0xd7, 0xf7, 0x93, 0xb3, 0xde, 0x80, 0xfa, 0x89, 0x8b, 0x3b, 0x5a, 0x75, 0x5a,
0x88, 0x6f, 0xfb, 0xc9, 0xd9, 0x0e, 0x43, 0xc9, 0xeb, 0x50, 0x3f, 0xa1, 0xb4, 0x87, 0x2b, 0xd1,
0xa9, 0x19, 0xd2, 0x21, 0x57, 0xd7, 0xa9, 0x9d, 0x88, 0xff, 0xec, 0xbf, 0xb4, 0xa0, 0xc9, 0x97,
0x4a, 0x98, 0x8b, 0xeb, 0xb0, 0x20, 0x47, 0x44, 0xa3, 0x28, 0x8c, 0x04, 0xfb, 0x9b, 0x20, 0xd9,
0x80, 0xb6, 0x04, 0xc6, 0x11, 0xf5, 0x46, 0xee, 0x90, 0x0a, 0xdd, 0x92, 0xc3, 0xc9, 0x9d, 0xb4,
0xc5, 0x28, 0x9c, 0x24, 0x5c, 0x61, 0x37, 0xee, 0x34, 0xc5, 0xa0, 0x1c, 0x86, 0x39, 0x26, 0x09,
0x63, 0xff, 0x82, 0xa5, 0x36, 0x30, 0xfb, 0xfb, 0x16, 0x10, 0x36, 0xf4, 0x47, 0x21, 0x6f, 0x42,
0xac, 0x54, 0x76, 0x97, 0xac, 0x17, 0xde, 0xa5, 0xd2, 0xac, 0x5d, 0xba, 0x09, 0x73, 0x38, 0x2c,
0x26, 0xcf, 0xe5, 0xec, 0xd0, 0xef, 0x96, 0x3a, 0x96, 0x23, 0xea, 0x89, 0x0d, 0x55, 0x3e, 0xc7,
0x4a, 0xc1, 0x1c, 0x79, 0x95, 0xfd, 0x1d, 0x0b, 0x9a, 0x4c, 0xe3, 0x06, 0xd4, 0x47, 0x5d, 0x45,
0x6e, 0x03, 0x39, 0x99, 0x04, 0x03, 0x2f, 0x18, 0xf6, 0x92, 0x67, 0xde, 0xa0, 0x77, 0x3c, 0x65,
0x5d, 0xe1, 0xb8, 0xf7, 0x2e, 0x39, 0x05, 0x75, 0xe4, 0x75, 0x68, 0x1b, 0x68, 0x9c, 0x44, 0x7c,
0xf4, 0x7b, 0x97, 0x9c, 0x5c, 0x0d, 0x5b, 0x4c, 0xa6, 0x0d, 0x27, 0x49, 0xcf, 0x0b, 0x06, 0xf4,
0x19, 0xae, 0xff, 0x82, 0x63, 0x60, 0x77, 0x5b, 0xd0, 0xd4, 0xbf, 0xb3, 0xdf, 0x87, 0x9a, 0xd4,
0xa5, 0xa8, 0x47, 0x32, 0xe3, 0x72, 0x34, 0x84, 0x74, 0xa1, 0x66, 0x8e, 0xc2, 0xa9, 0x7d, 0x94,
0xbe, 0xed, 0xcf, 0x41, 0x7b, 0x9f, 0x29, 0xb4, 0xc0, 0x0b, 0x86, 0xc2, 0xa8, 0x30, 0x2d, 0x2b,
0x2c, 0x00, 0xe7, 0x3f, 0x51, 0x62, 0xa2, 0x7c, 0x1a, 0xc6, 0x89, 0xe8, 0x07, 0xff, 0xb7, 0xff,
0xcd, 0x82, 0x45, 0xc6, 0x08, 0xef, 0xba, 0xc1, 0x54, 0x72, 0xc1, 0x3e, 0x34, 0x59, 0x53, 0x8f,
0xc2, 0x2d, 0xae, 0xab, 0xb9, 0x0e, 0xba, 0x29, 0xf6, 0x23, 0x43, 0x7d, 0x4b, 0x27, 0x65, 0xae,
0xd4, 0xd4, 0x31, 0xbe, 0x66, 0xca, 0x22, 0x71, 0xa3, 0x21, 0x4d, 0x50, 0x8b, 0x0b, 0xad, 0x0e,
0x1c, 0xda, 0x0e, 0x83, 0x13, 0x72, 0x0d, 0x9a, 0xb1, 0x9b, 0xf4, 0xc6, 0x34, 0xc2, 0x35, 0x41,
0x81, 0x2f, 0x3b, 0x10, 0xbb, 0xc9, 0x21, 0x8d, 0xee, 0x4e, 0x13, 0xda, 0xfd, 0x05, 0x58, 0xca,
0xf5, 0xc2, 0x74, 0x4c, 0x3a, 0x45, 0xf6, 0x2f, 0x59, 0x81, 0xea, 0x99, 0xeb, 0x4f, 0xa8, 0x30,
0x2e, 0xbc, 0xf0, 0x76, 0xe9, 0x2d, 0xcb, 0x7e, 0x0d, 0xda, 0xe9, 0xb0, 0x85, 0xb0, 0x12, 0xa8,
0xb0, 0x95, 0x16, 0x0d, 0xe0, 0xff, 0xf6, 0xb7, 0x2d, 0x4e, 0xb8, 0x1d, 0x7a, 0x4a, 0x51, 0x33,
0x42, 0xa6, 0xcf, 0x25, 0x21, 0xfb, 0x7f, 0xa6, 0x21, 0xfb, 0xc9, 0x27, 0x4b, 0x2e, 0x43, 0x2d,
0xa6, 0xc1, 0xa0, 0xe7, 0xfa, 0x3e, 0xea, 0xb3, 0x9a, 0x33, 0xcf, 0xca, 0x5b, 0xbe, 0x6f, 0xdf,
0x80, 0x25, 0x6d, 0x74, 0xcf, 0x99, 0xc7, 0x01, 0x90, 0x7d, 0x2f, 0x4e, 0x1e, 0x07, 0xf1, 0x58,
0xd3, 0x83, 0x2f, 0x41, 0x7d, 0xe4, 0x05, 0x38, 0x32, 0xce, 0x8a, 0x55, 0xa7, 0x36, 0xf2, 0x02,
0x36, 0xae, 0x18, 0x2b, 0xdd, 0x67, 0xa2, 0xb2, 0x24, 0x2a, 0xdd, 0x67, 0x58, 0x69, 0xbf, 0x05,
0xcb, 0x46, 0x7b, 0xa2, 0xeb, 0x57, 0xa1, 0x3a, 0x49, 0x9e, 0x85, 0xd2, 0x4a, 0x35, 0x04, 0x87,
0x30, 0xbf, 0xc7, 0xe1, 0x35, 0xf6, 0x3b, 0xb0, 0x74, 0x40, 0xcf, 0x05, 0x67, 0xca, 0x81, 0xbc,
0x76, 0xa1, 0x4f, 0x84, 0xf5, 0xf6, 0x2d, 0x20, 0xfa, 0xc7, 0xa2, 0x57, 0xcd, 0x43, 0xb2, 0x0c,
0x0f, 0xc9, 0x7e, 0x0d, 0xc8, 0x91, 0x37, 0x0c, 0xde, 0xa5, 0x71, 0xec, 0x0e, 0x95, 0x52, 0x6b,
0x43, 0x79, 0x14, 0x0f, 0x85, 0xec, 0xb1, 0x7f, 0xed, 0x4f, 0xc2, 0xb2, 0x41, 0x27, 0x1a, 0xbe,
0x02, 0xf5, 0xd8, 0x1b, 0x06, 0x6e, 0x32, 0x89, 0xa8, 0x68, 0x3a, 0x05, 0xec, 0x7b, 0xb0, 0xf2,
0x25, 0x1a, 0x79, 0x27, 0xd3, 0x8b, 0x9a, 0x37, 0xdb, 0x29, 0x65, 0xdb, 0xd9, 0x85, 0xd5, 0x4c,
0x3b, 0xa2, 0x7b, 0xce, 0xbe, 0x62, 0x27, 0x6b, 0x0e, 0x2f, 0x68, 0xc2, 0x5c, 0xd2, 0x85, 0xd9,
0x7e, 0x0c, 0x64, 0x3b, 0x0c, 0x02, 0xda, 0x4f, 0x0e, 0x29, 0x8d, 0xd2, 0x33, 0x51, 0xca, 0xab,
0x8d, 0x3b, 0xeb, 0x62, 0x65, 0xb3, 0x1a, 0x42, 0x30, 0x31, 0x81, 0xca, 0x98, 0x46, 0x23, 0x6c,
0xb8, 0xe6, 0xe0, 0xff, 0xf6, 0x2a, 0x2c, 0x1b, 0xcd, 0x0a, 0x77, 0xf6, 0x0d, 0x58, 0xdd, 0xf1,
0xe2, 0x7e, 0xbe, 0xc3, 0x0e, 0xcc, 0x8f, 0x27, 0xc7, 0xbd, 0x54, 0x12, 0x65, 0x91, 0x79, 0x3e,
0xd9, 0x4f, 0x44, 0x63, 0xbf, 0x69, 0x41, 0x65, 0xef, 0xd1, 0xfe, 0x36, 0x53, 0x7e, 0x5e, 0xd0,
0x0f, 0x47, 0xcc, 0x80, 0xf0, 0x49, 0xab, 0xf2, 0x4c, 0x09, 0xbb, 0x02, 0x75, 0xb4, 0x3b, 0xcc,
0x99, 0x13, 0xc7, 0x97, 0x14, 0x60, 0x8e, 0x24, 0x7d, 0x36, 0xf6, 0x22, 0xf4, 0x14, 0xa5, 0xff,
0x57, 0x41, 0xbd, 0x99, 0xaf, 0xb0, 0xbf, 0x5d, 0x85, 0x79, 0x61, 0x4d, 0xb0, 0xbf, 0x7e, 0xe2,
0x9d, 0x51, 0x31, 0x12, 0x51, 0x62, 0x36, 0x3d, 0xa2, 0xa3, 0x30, 0xa1, 0x3d, 0x63, 0x1b, 0x4c,
0x10, 0x1d, 0x65, 0xde, 0x50, 0x8f, 0xbb, 0xd6, 0x65, 0x4e, 0x65, 0x80, 0x6c, 0xb1, 0x18, 0xd0,
0xf3, 0x06, 0x38, 0xa6, 0x8a, 0x23, 0x8b, 0x6c, 0x25, 0xfa, 0xee, 0xd8, 0xed, 0x7b, 0xc9, 0x54,
0xa8, 0x04, 0x55, 0x66, 0x6d, 0xfb, 0x61, 0xdf, 0xf5, 0x7b, 0xc7, 0xae, 0xef, 0x06, 0x7d, 0x2a,
0x9d, 0x70, 0x03, 0x64, 0x0e, 0xa9, 0x18, 0x92, 0x24, 0xe3, 0x4e, 0x6b, 0x06, 0x65, 0x06, 0xa9,
0x1f, 0x8e, 0x46, 0x5e, 0xc2, 0xfc, 0x58, 0xf4, 0x71, 0xca, 0x8e, 0x86, 0x70, 0x97, 0x1f, 0x4b,
0xe7, 0x7c, 0xf5, 0xea, 0xd2, 0xe5, 0xd7, 0x40, 0xd6, 0x0a, 0x73, 0x94, 0x98, 0x1a, 0x7b, 0x7a,
0xde, 0x01, 0xde, 0x4a, 0x8a, 0xb0, 0x7d, 0x98, 0x04, 0x31, 0x4d, 0x12, 0x9f, 0x0e, 0xd4, 0x80,
0x1a, 0x48, 0x96, 0xaf, 0x20, 0xb7, 0x61, 0x99, 0xbb, 0xd6, 0xb1, 0x9b, 0x84, 0xf1, 0xa9, 0x17,
0xf7, 0x62, 0xe6, 0xa4, 0x36, 0x91, 0xbe, 0xa8, 0x8a, 0xbc, 0x05, 0xeb, 0x19, 0x38, 0xa2, 0x7d,
0xea, 0x9d, 0xd1, 0x41, 0x67, 0x01, 0xbf, 0x9a, 0x55, 0x4d, 0xae, 0x41, 0x83, 0x9d, 0x28, 0x26,
0xe3, 0x81, 0xcb, 0x2c, 0x72, 0x0b, 0xf7, 0x41, 0x87, 0xc8, 0x1b, 0xb0, 0x30, 0xa6, 0xdc, 0x9c,
0x9f, 0x26, 0x7e, 0x3f, 0xee, 0x2c, 0x1a, 0xda, 0x8d, 0x71, 0xae, 0x63, 0x52, 0x30, 0xa6, 0xec,
0xc7, 0xe8, 0x5a, 0xba, 0xd3, 0x4e, 0x1b, 0xd9, 0x2d, 0x05, 0x50, 0x46, 0x22, 0xef, 0xcc, 0x4d,
0x68, 0x67, 0x89, 0x2b, 0x74, 0x51, 0x64, 0xdf, 0x79, 0x81, 0x97, 0x78, 0x6e, 0x12, 0x46, 0x1d,
0x82, 0x75, 0x29, 0x60, 0xff, 0x89, 0xc5, 0xd5, 0xae, 0x60, 0x51, 0xa5, 0x3e, 0x5f, 0x81, 0x06,
0x67, 0xce, 0x5e, 0x18, 0xf8, 0x53, 0xc1, 0xaf, 0xc0, 0xa1, 0x87, 0x81, 0x3f, 0x25, 0x1f, 0x83,
0x05, 0x2f, 0xd0, 0x49, 0xb8, 0x84, 0x37, 0x25, 0x88, 0x44, 0xaf, 0x40, 0x63, 0x3c, 0x39, 0xf6,
0xbd, 0x3e, 0x27, 0x29, 0xf3, 0x56, 0x38, 0x84, 0x04, 0xcc, 0x19, 0xe4, 0xe3, 0xe4, 0x14, 0x15,
0xa4, 0x68, 0x08, 0x8c, 0x91, 0xd8, 0x77, 0x61, 0xc5, 0x1c, 0xa0, 0x50, 0x65, 0x1b, 0x50, 0x13,
0x9c, 0x1f, 0x77, 0x1a, 0xb8, 0x7a, 0x2d, 0xb1, 0x7a, 0x82, 0xd4, 0x51, 0xf5, 0xf6, 0x0f, 0x2a,
0xb0, 0x2c, 0xd0, 0x6d, 0x3f, 0x8c, 0xe9, 0xd1, 0x64, 0x34, 0x72, 0xa3, 0x02, 0x91, 0xb2, 0x2e,
0x10, 0xa9, 0x92, 0x29, 0x52, 0x8c, 0xd1, 0x4f, 0x5d, 0x2f, 0xe0, 0x9e, 0x2c, 0x97, 0x47, 0x0d,
0x21, 0x37, 0x61, 0xb1, 0xef, 0x87, 0x31, 0xf7, 0xda, 0xf4, 0xa3, 0x64, 0x16, 0xce, 0xab, 0x80,
0x6a, 0x91, 0x0a, 0xd0, 0x45, 0x78, 0x2e, 0x23, 0xc2, 0x36, 0x34, 0x59, 0xa3, 0x54, 0x6a, 0xa4,
0x79, 0xee, 0xc9, 0xe9, 0x18, 0x1b, 0x4f, 0x56, 0x60, 0xb8, 0x74, 0x2e, 0x16, 0x89, 0x0b, 0x3b,
0xa9, 0x32, 0x8d, 0xa7, 0x51, 0xd7, 0x85, 0xb8, 0xe4, 0xab, 0xc8, 0x3d, 0x00, 0xde, 0x17, 0x9a,
0x5d, 0x40, 0xb3, 0xfb, 0x9a, 0xb9, 0x23, 0xfa, 0xda, 0xdf, 0x62, 0x85, 0x49, 0x44, 0xd1, 0x14,
0x6b, 0x5f, 0xda, 0xbf, 0x65, 0x41, 0x43, 0xab, 0x23, 0xab, 0xb0, 0xb4, 0xfd, 0xf0, 0xe1, 0xe1,
0xae, 0xb3, 0xf5, 0xe8, 0xc1, 0x97, 0x76, 0x7b, 0xdb, 0xfb, 0x0f, 0x8f, 0x76, 0xdb, 0x97, 0x18,
0xbc, 0xff, 0x70, 0x7b, 0x6b, 0xbf, 0x77, 0xef, 0xa1, 0xb3, 0x2d, 0x61, 0x8b, 0xac, 0x01, 0x71,
0x76, 0xdf, 0x7d, 0xf8, 0x68, 0xd7, 0xc0, 0x4b, 0xa4, 0x0d, 0xcd, 0xbb, 0xce, 0xee, 0xd6, 0xf6,
0x9e, 0x40, 0xca, 0x64, 0x05, 0xda, 0xf7, 0x1e, 0x1f, 0xec, 0x3c, 0x38, 0xb8, 0xdf, 0xdb, 0xde,
0x3a, 0xd8, 0xde, 0xdd, 0xdf, 0xdd, 0x69, 0x57, 0xc8, 0x02, 0xd4, 0xb7, 0xee, 0x6e, 0x1d, 0xec,
0x3c, 0x3c, 0xd8, 0xdd, 0x69, 0x57, 0xed, 0x7f, 0xb5, 0x60, 0x15, 0x47, 0x3d, 0xc8, 0x0a, 0xc8,
0x35, 0x68, 0xf4, 0xc3, 0x70, 0x4c, 0x99, 0xb6, 0x57, 0x0a, 0x5d, 0x87, 0x18, 0xf3, 0x73, 0xf5,
0x79, 0x12, 0x46, 0x7d, 0x2a, 0xe4, 0x03, 0x10, 0xba, 0xc7, 0x10, 0xc6, 0xfc, 0x62, 0x7b, 0x39,
0x05, 0x17, 0x8f, 0x06, 0xc7, 0x38, 0xc9, 0x1a, 0xcc, 0x1d, 0x47, 0xd4, 0xed, 0x9f, 0x0a, 0xc9,
0x10, 0x25, 0xf2, 0xf1, 0xf4, 0x80, 0xd1, 0x67, 0xab, 0xef, 0xd3, 0x01, 0x72, 0x4c, 0xcd, 0x59,
0x14, 0xf8, 0xb6, 0x80, 0x99, 0xfc, 0xbb, 0xc7, 0x6e, 0x30, 0x08, 0x03, 0x3a, 0x10, 0xce, 0x5e,
0x0a, 0xd8, 0x87, 0xb0, 0x96, 0x9d, 0x9f, 0x90, 0xaf, 0x37, 0x35, 0xf9, 0xe2, 0xbe, 0x57, 0x77,
0xf6, 0x6e, 0x6a, 0xb2, 0xf6, 0x1f, 0x16, 0x54, 0x98, 0x29, 0x9e, 0x6d, 0xb6, 0x75, 0xef, 0xaa,
0x9c, 0x8b, 0x3f, 0xe1, 0x99, 0x85, 0x2b, 0x67, 0x6e, 0xc0, 0x34, 0x24, 0xad, 0x8f, 0x68, 0xff,
0x0c, 0x67, 0xac, 0xea, 0x19, 0xc2, 0x04, 0x84, 0xb9, 0xbe, 0xf8, 0xb5, 0x10, 0x10, 0x59, 0x96,
0x75, 0xf8, 0xe5, 0x7c, 0x5a, 0x87, 0xdf, 0x75, 0x60, 0xde, 0x0b, 0x8e, 0xc3, 0x49, 0x30, 0x40,
0x81, 0xa8, 0x39, 0xb2, 0xc8, 0x96, 0x6f, 0x8c, 0x82, 0xea, 0x8d, 0x24, 0xfb, 0xa7, 0x80, 0x4d,
0xd8, 0xd1, 0x28, 0x46, 0xd7, 0x43, 0x05, 0x5d, 0xde, 0x84, 0x25, 0x0d, 0x4b, 0xdd, 0xd8, 0x31,
0x03, 0x32, 0x6e, 0x2c, 0xfa, 0x2c, 0xbc, 0xc6, 0x6e, 0x43, 0xeb, 0x3e, 0x4d, 0x1e, 0x04, 0x27,
0xa1, 0x6c, 0xe9, 0xcf, 0x2b, 0xb0, 0xa8, 0x20, 0xd1, 0xd0, 0x4d, 0x58, 0xf4, 0x06, 0x34, 0x48,
0xbc, 0x64, 0xda, 0x33, 0x4e, 0x60, 0x59, 0x98, 0xf9, 0x7a, 0xae, 0xef, 0xb9, 0x32, 0xc6, 0xc7,
0x0b, 0xe4, 0x0e, 0xac, 0x30, 0x43, 0x24, 0x6d, 0x8b, 0xda, 0x62, 0x7e, 0xf0, 0x2b, 0xac, 0x63,
0xca, 0x80, 0xe1, 0x42, 0xdb, 0xab, 0x4f, 0xb8, 0xcf, 0x53, 0x54, 0xc5, 0x56, 0x8d, 0xb7, 0xc4,
0xa6, 0x5c, 0xe5, 0xc6, 0x4a, 0x01, 0xb9, 0xe0, 0xd9, 0x1c, 0x57, 0x55, 0xd9, 0xe0, 0x99, 0x16,
0x80, 0xab, 0xe5, 0x02, 0x70, 0x4c, 0x95, 0x4d, 0x83, 0x3e, 0x1d, 0xf4, 0x92, 0xb0, 0x87, 0x2a,
0x17, 0x77, 0xa7, 0xe6, 0x64, 0x61, 0x72, 0x05, 0xe6, 0x13, 0x1a, 0x27, 0x01, 0x4d, 0x50, 0x2b,
0xd5, 0x30, 0x20, 0x20, 0x21, 0xe6, 0xa0, 0x4e, 0x22, 0x2f, 0xee, 0x34, 0x31, 0xb4, 0x86, 0xff,
0x93, 0x4f, 0xc1, 0xea, 0x31, 0x8d, 0x93, 0xde, 0x29, 0x75, 0x07, 0x34, 0xc2, 0x9d, 0xe6, 0x31,
0x3c, 0x6e, 0xf7, 0x8b, 0x2b, 0x19, 0x0f, 0x9d, 0xd1, 0x28, 0xf6, 0xc2, 0x00, 0x2d, 0x7e, 0xdd,
0x91, 0x45, 0xd6, 0x1e, 0x9b, 0xbc, 0xb2, 0x97, 0x6a, 0x05, 0x17, 0x71, 0xe2, 0xc5, 0x95, 0xe4,
0x3a, 0xcc, 0xe1, 0x04, 0xe2, 0x4e, 0xdb, 0x88, 0x6a, 0x6c, 0x33, 0xd0, 0x11, 0x75, 0x9f, 0xaf,
0xd4, 0x1a, 0xed, 0xa6, 0xfd, 0x73, 0x50, 0x45, 0x98, 0x6d, 0x3a, 0x5f, 0x0c, 0xce, 0x14, 0xbc,
0xc0, 0x86, 0x16, 0xd0, 0xe4, 0x3c, 0x8c, 0x9e, 0xca, 0x80, 0xaf, 0x28, 0xda, 0xdf, 0x40, 0x17,
0x5f, 0x05, 0x3e, 0x1f, 0xa3, 0x7f, 0xc2, 0x0e, 0x6a, 0x7c, 0xa9, 0xe3, 0x53, 0x57, 0x9c, 0x3a,
0x6a, 0x08, 0x1c, 0x9d, 0xba, 0x4c, 0x6d, 0x19, 0xbb, 0xc7, 0x0f, 0x72, 0x0d, 0xc4, 0xf6, 0xf8,
0xe6, 0x5d, 0x87, 0x96, 0x0c, 0xa9, 0xc6, 0x3d, 0x9f, 0x9e, 0x24, 0x32, 0xae, 0x10, 0x4c, 0x46,
0x78, 0xda, 0xdb, 0xa7, 0x27, 0x89, 0x7d, 0x00, 0x4b, 0x42, 0x95, 0x3c, 0x1c, 0x53, 0xd9, 0xf5,
0x67, 0x8a, 0x4c, 0x72, 0xe3, 0xce, 0xb2, 0xa9, 0x7b, 0x78, 0x10, 0xd9, 0xa4, 0xb4, 0x1d, 0x20,
0xba, 0x6a, 0x12, 0x0d, 0x0a, 0xbb, 0x28, 0x23, 0x27, 0x62, 0x3a, 0x06, 0xc6, 0xd6, 0x27, 0x9e,
0xf4, 0xfb, 0x32, 0x20, 0xce, 0x8e, 0xc3, 0xbc, 0x68, 0x7f, 0xd7, 0x82, 0x65, 0x6c, 0x4d, 0x3a,
0x15, 0x42, 0xfd, 0xbf, 0xf5, 0x11, 0x86, 0xd9, 0xec, 0xeb, 0xd1, 0xa4, 0x15, 0xa8, 0xea, 0x06,
0x81, 0x17, 0x3e, 0xfa, 0xa1, 0xbe, 0x92, 0x3d, 0xd4, 0xdb, 0x7f, 0x68, 0xc1, 0x12, 0xd7, 0xc9,
0x89, 0x9b, 0x4c, 0x62, 0x31, 0xfd, 0x9f, 0x87, 0x05, 0x6e, 0x5c, 0x85, 0x54, 0x8b, 0x81, 0xae,
0x28, 0x05, 0x84, 0x28, 0x27, 0xde, 0xbb, 0xe4, 0x98, 0xc4, 0xe4, 0x1d, 0x74, 0x70, 0x82, 0x1e,
0xa2, 0x22, 0x30, 0x78, 0xb9, 0xc0, 0x0c, 0xa8, 0xef, 0x35, 0xf2, 0xbb, 0x35, 0x98, 0xe3, 0xfe,
0xae, 0x7d, 0x1f, 0x16, 0x8c, 0x8e, 0x8c, 0x80, 0x42, 0x93, 0x07, 0x14, 0x72, 0xa1, 0xa8, 0x52,
0x41, 0x28, 0xea, 0x2f, 0xca, 0x40, 0x18, 0xb3, 0x64, 0x76, 0x83, 0x39, 0xdc, 0xe1, 0xc0, 0x38,
0x3e, 0x35, 0x1d, 0x1d, 0x22, 0xb7, 0x80, 0x68, 0x45, 0x19, 0x51, 0xe4, 0xd6, 0xa7, 0xa0, 0x86,
0xa9, 0x49, 0x61, 0xbc, 0x85, 0x99, 0x15, 0x07, 0x45, 0xbe, 0xec, 0x85, 0x75, 0xcc, 0xc0, 0x8c,
0x27, 0xf1, 0x29, 0x5e, 0x9d, 0x88, 0x03, 0x96, 0x2c, 0x67, 0xf7, 0x77, 0xee, 0xc2, 0xfd, 0x9d,
0xcf, 0x05, 0x6d, 0x34, 0x17, 0xbf, 0x66, 0xba, 0xf8, 0xd7, 0x61, 0x61, 0xc4, 0x5c, 0xce, 0xc4,
0xef, 0xf7, 0x46, 0xac, 0x77, 0x71, 0x9e, 0x32, 0x40, 0xb2, 0x01, 0x6d, 0xe1, 0x6e, 0xa4, 0xe7,
0x08, 0xc0, 0x35, 0xce, 0xe1, 0x4c, 0x7f, 0xa7, 0x61, 0x9c, 0x06, 0x0e, 0x36, 0x05, 0xd8, 0xc9,
0x2b, 0x66, 0x1c, 0xd2, 0x9b, 0x04, 0xe2, 0xd6, 0x84, 0x0e, 0xf0, 0x24, 0x55, 0x73, 0xf2, 0x15,
0xf6, 0xef, 0x5b, 0xd0, 0x66, 0x7b, 0x66, 0xb0, 0xe5, 0xdb, 0x80, 0x52, 0xf1, 0x82, 0x5c, 0x69,
0xd0, 0x92, 0xb7, 0xa0, 0x8e, 0xe5, 0x70, 0x4c, 0x03, 0xc1, 0x93, 0x1d, 0x93, 0x27, 0x53, 0x7d,
0xb2, 0x77, 0xc9, 0x49, 0x89, 0x35, 0x8e, 0xfc, 0x27, 0x0b, 0x1a, 0xa2, 0x97, 0x1f, 0x3b, 0x4c,
0xd0, 0xd5, 0xae, 0xb9, 0x38, 0x27, 0xa5, 0xb7, 0x5a, 0x37, 0x61, 0x71, 0xe4, 0x26, 0x93, 0x88,
0xd9, 0x63, 0x23, 0x44, 0x90, 0x85, 0x99, 0x71, 0x45, 0xd5, 0x19, 0xf7, 0x12, 0xcf, 0xef, 0xc9,
0x5a, 0x71, 0xa1, 0x54, 0x54, 0xc5, 0x34, 0x48, 0x9c, 0xb8, 0x43, 0x2a, 0xec, 0x26, 0x2f, 0xd8,
0x1d, 0x58, 0x13, 0x13, 0xca, 0xb8, 0xaa, 0xf6, 0xdf, 0x34, 0x61, 0x3d, 0x57, 0xa5, 0x6e, 0x9f,
0xc5, 0xd9, 0xd7, 0xf7, 0x46, 0xc7, 0xa1, 0xf2, 0xf3, 0x2d, 0xfd, 0x58, 0x6c, 0x54, 0x91, 0x21,
0xac, 0x4a, 0x07, 0x81, 0xad, 0x69, 0x6a, 0xcc, 0x4a, 0x68, 0xa5, 0xde, 0x30, 0xb7, 0x30, 0xdb,
0xa1, 0xc4, 0x75, 0x21, 0x2e, 0x6e, 0x8f, 0x9c, 0x42, 0x47, 0x79, 0x22, 0x42, 0x59, 0x6b, 0xde,
0x0a, 0xeb, 0xeb, 0xf5, 0x0b, 0xfa, 0x32, 0x3c, 0x5b, 0x67, 0x66, 0x6b, 0x64, 0x0a, 0x57, 0x65,
0x1d, 0x6a, 0xe3, 0x7c, 0x7f, 0x95, 0x17, 0x9a, 0x1b, 0xfa, 0xec, 0x66, 0xa7, 0x17, 0x34, 0x4c,
0xde, 0x87, 0xb5, 0x73, 0xd7, 0x4b, 0xe4, 0xb0, 0x34, 0xdf, 0xa0, 0x8a, 0x5d, 0xde, 0xb9, 0xa0,
0xcb, 0x27, 0xfc, 0x63, 0xc3, 0x44, 0xcd, 0x68, 0xb1, 0xfb, 0x0f, 0x16, 0xb4, 0xcc, 0x76, 0x18,
0x9b, 0x0a, 0xd9, 0x97, 0x3a, 0x50, 0x7a, 0x93, 0x19, 0x38, 0x7f, 0x54, 0x2e, 0x15, 0x1d, 0x95,
0xf5, 0x03, 0x6a, 0xf9, 0xa2, 0x18, 0x53, 0xe5, 0xc5, 0x62, 0x4c, 0xd5, 0xa2, 0x18, 0x53, 0xf7,
0xbf, 0x2d, 0x20, 0x79, 0x5e, 0x22, 0xf7, 0xf9, 0x59, 0x3d, 0xa0, 0xbe, 0x50, 0x29, 0x3f, 0xfb,
0x62, 0xfc, 0x28, 0xd7, 0x4e, 0x7e, 0xcd, 0x04, 0x43, 0xbf, 0x11, 0xd6, 0x9d, 0x9d, 0x05, 0xa7,
0xa8, 0x2a, 0x13, 0xf5, 0xaa, 0x5c, 0x1c, 0xf5, 0xaa, 0x5e, 0x1c, 0xf5, 0x9a, 0xcb, 0x46, 0xbd,
0xba, 0xbf, 0x61, 0xc1, 0x72, 0xc1, 0xa6, 0xff, 0xf4, 0x26, 0xce, 0xb6, 0xc9, 0xd0, 0x05, 0x25,
0xb1, 0x4d, 0x3a, 0xd8, 0xfd, 0x15, 0x58, 0x30, 0x18, 0xfd, 0xa7, 0xd7, 0x7f, 0xd6, 0x5f, 0xe3,
0x7c, 0x66, 0x60, 0xdd, 0xff, 0x2c, 0x01, 0xc9, 0x0b, 0xdb, 0xff, 0xeb, 0x18, 0xf2, 0xeb, 0x54,
0x2e, 0x58, 0xa7, 0xff, 0x53, 0x3b, 0xf0, 0x3a, 0x2c, 0x89, 0x54, 0x15, 0x2d, 0x42, 0xc3, 0x39,
0x26, 0x5f, 0xc1, 0x3c, 0x56, 0x33, 0xe4, 0x58, 0x33, 0xae, 0xfd, 0x35, 0x63, 0x98, 0x89, 0x3c,
0xda, 0x5d, 0xe8, 0x88, 0x15, 0xda, 0x3d, 0xa3, 0x41, 0x72, 0x34, 0x39, 0xe6, 0xe9, 0x1e, 0x5e,
0x18, 0xd8, 0xdf, 0x2f, 0x2b, 0xa7, 0x1b, 0x2b, 0x85, 0x79, 0xff, 0x14, 0x34, 0x75, 0x65, 0x2e,
0xb6, 0x23, 0x13, 0xa0, 0x63, 0x86, 0x5d, 0xa7, 0x22, 0x3b, 0xd0, 0x42, 0x95, 0x35, 0x50, 0xdf,
0x95, 0xf0, 0xbb, 0xe7, 0x04, 0x1e, 0xf6, 0x2e, 0x39, 0x99, 0x6f, 0xc8, 0x67, 0xa1, 0x65, 0x1e,
0xa5, 0x84, 0x8f, 0x50, 0xe4, 0x9b, 0xb3, 0xcf, 0x4d, 0x62, 0xb2, 0x05, 0xed, 0xec, 0x59, 0x4c,
0xdc, 0x16, 0xcf, 0x68, 0x20, 0x47, 0x4e, 0xde, 0x12, 0x77, 0x4f, 0x55, 0x0c, 0x82, 0x5d, 0x37,
0x3f, 0xd3, 0x96, 0xe9, 0x16, 0xff, 0xa3, 0xdd, 0x46, 0x7d, 0x15, 0x20, 0xc5, 0x48, 0x1b, 0x9a,
0x0f, 0x0f, 0x77, 0x0f, 0x7a, 0xdb, 0x7b, 0x5b, 0x07, 0x07, 0xbb, 0xfb, 0xed, 0x4b, 0x84, 0x40,
0x0b, 0xe3, 0x57, 0x3b, 0x0a, 0xb3, 0x18, 0xb6, 0xb5, 0xcd, 0x63, 0x63, 0x02, 0x2b, 0x91, 0x15,
0x68, 0x3f, 0x38, 0xc8, 0xa0, 0xe5, 0xbb, 0x75, 0x25, 0x1f, 0xf6, 0x1a, 0xac, 0xf0, 0x74, 0xa6,
0xbb, 0x9c, 0x3d, 0xa4, 0xaf, 0xf0, 0xc7, 0x16, 0xac, 0x66, 0x2a, 0xd2, 0xc4, 0x03, 0xee, 0x0e,
0x98, 0x3e, 0x82, 0x09, 0x32, 0x9e, 0x54, 0x9e, 0x5f, 0x46, 0x83, 0xe4, 0x2b, 0x18, 0xcf, 0x6b,
0x9e, 0x62, 0x46, 0x92, 0x8a, 0xaa, 0xec, 0x75, 0x9e, 0x74, 0x15, 0x50, 0x3f, 0x33, 0xf0, 0x13,
0x9e, 0x26, 0xa5, 0x57, 0xa4, 0x77, 0x79, 0xe6, 0x90, 0x65, 0x91, 0x39, 0xf9, 0x86, 0xeb, 0x61,
0x8e, 0xb7, 0xb0, 0xce, 0xfe, 0x81, 0x05, 0xe4, 0x8b, 0x13, 0x1a, 0x4d, 0x31, 0x67, 0x40, 0x85,
0x03, 0xd7, 0xb3, 0xc1, 0xae, 0xb9, 0xf1, 0xe4, 0xf8, 0x0b, 0x74, 0x2a, 0xd3, 0x54, 0x4a, 0x69,
0x9a, 0xca, 0xcb, 0x00, 0xec, 0x70, 0xac, 0x32, 0x16, 0xd0, 0xb9, 0x0e, 0x26, 0x23, 0xde, 0x60,
0x61, 0x26, 0x49, 0xe5, 0xe2, 0x4c, 0x92, 0xea, 0x45, 0x99, 0x24, 0xef, 0xc0, 0xb2, 0x31, 0x6e,
0xb5, 0xad, 0x32, 0x77, 0xc2, 0xca, 0xe7, 0x4e, 0xc8, 0xbc, 0x09, 0xfb, 0x9b, 0x25, 0x28, 0xef,
0x85, 0x63, 0x3d, 0x14, 0x6e, 0x99, 0xa1, 0x70, 0xe1, 0x1f, 0xf4, 0x94, 0xf9, 0x17, 0x66, 0xc3,
0x00, 0xc9, 0x06, 0xb4, 0xdc, 0x51, 0xd2, 0x4b, 0x42, 0xe6, 0x0f, 0x9d, 0xbb, 0xd1, 0x80, 0xef,
0x35, 0x86, 0x64, 0x32, 0x35, 0x64, 0x05, 0xca, 0xca, 0x90, 0x22, 0x01, 0x2b, 0x32, 0x67, 0x1c,
0x2f, 0xd9, 0xa6, 0x22, 0xac, 0x24, 0x4a, 0x8c, 0x95, 0xcc, 0xef, 0xf9, 0x49, 0x88, 0xab, 0xc3,
0xa2, 0x2a, 0xe6, 0xab, 0xb0, 0xe5, 0x43, 0x32, 0x11, 0x0f, 0x94, 0x65, 0x3d, 0x76, 0x59, 0x33,
0xaf, 0x1c, 0x7f, 0x64, 0x41, 0x15, 0xd7, 0x86, 0xa9, 0x76, 0xce, 0xfb, 0x2a, 0x1a, 0x8e, 0x6b,
0xb2, 0xe0, 0x64, 0x61, 0x62, 0x1b, 0x89, 0x5e, 0x25, 0x35, 0x21, 0x3d, 0xd9, 0xeb, 0x1a, 0xd4,
0x79, 0x49, 0x25, 0x35, 0x21, 0x49, 0x0a, 0x92, 0xab, 0x50, 0x39, 0x0d, 0xc7, 0xd2, 0x17, 0x05,
0x79, 0x55, 0x14, 0x8e, 0x1d, 0xc4, 0xd3, 0xf1, 0xb0, 0xf6, 0xf8, 0xb4, 0xb8, 0x87, 0x91, 0x85,
0x99, 0x8f, 0xa5, 0x9a, 0xd5, 0x97, 0x29, 0x83, 0xda, 0x1b, 0xb0, 0x78, 0x10, 0x0e, 0xa8, 0x16,
0x92, 0x9c, 0xc9, 0xe7, 0xf6, 0xaf, 0x5a, 0x50, 0x93, 0xc4, 0xe4, 0x26, 0x54, 0x98, 0xe3, 0x98,
0x39, 0xd5, 0xa9, 0x2b, 0x62, 0x46, 0xe7, 0x20, 0x05, 0xb3, 0xb4, 0x18, 0x29, 0x4a, 0x0f, 0x11,
0x32, 0x4e, 0x94, 0xfa, 0xc8, 0x6a, 0xb8, 0x19, 0xd7, 0x32, 0x83, 0xda, 0xdf, 0xb3, 0x60, 0xc1,
0xe8, 0x83, 0x5c, 0x83, 0x86, 0xef, 0xc6, 0x89, 0xb8, 0x76, 0x13, 0xdb, 0xa3, 0x43, 0xfa, 0x46,
0x97, 0xcc, 0x20, 0xb5, 0x0a, 0x9f, 0x96, 0xf5, 0xf0, 0xe9, 0x6d, 0xa8, 0xa7, 0xe9, 0x78, 0x15,
0xc3, 0x82, 0xb2, 0x1e, 0xe5, 0xe5, 0x77, 0x4a, 0x84, 0x11, 0xb9, 0xd0, 0x0f, 0x23, 0x71, 0xa3,
0xc3, 0x0b, 0xf6, 0x3b, 0xd0, 0xd0, 0xe8, 0xf5, 0x00, 0x9d, 0x65, 0x04, 0xe8, 0x54, 0x66, 0x48,
0x29, 0xcd, 0x0c, 0xb1, 0xff, 0xde, 0x82, 0x05, 0xc6, 0x83, 0x5e, 0x30, 0x3c, 0x0c, 0x7d, 0xaf,
0x3f, 0xc5, 0xbd, 0x97, 0xec, 0x26, 0x74, 0x86, 0xe4, 0x45, 0x13, 0x66, 0x5c, 0x2f, 0xc3, 0x02,
0x42, 0x44, 0x55, 0x99, 0xc9, 0x30, 0x93, 0x80, 0x63, 0x37, 0x16, 0x62, 0x21, 0x5c, 0x1a, 0x03,
0x64, 0x92, 0xc6, 0x80, 0xc8, 0x4d, 0x68, 0x6f, 0xe4, 0xf9, 0xbe, 0xc7, 0x69, 0xb9, 0xc3, 0x5b,
0x54, 0xc5, 0xfa, 0x1c, 0x78, 0xb1, 0x7b, 0x9c, 0xde, 0x52, 0xa8, 0xb2, 0xfd, 0x57, 0x25, 0x68,
0x48, 0xcb, 0x38, 0x18, 0x52, 0x71, 0xa5, 0x86, 0x47, 0x0a, 0xa5, 0x64, 0x34, 0x44, 0xd6, 0x1b,
0x87, 0x10, 0x0d, 0xc9, 0x6e, 0x79, 0x39, 0xbf, 0xe5, 0x57, 0xa0, 0xce, 0x58, 0xef, 0x0d, 0x3c,
0xed, 0xf0, 0xeb, 0xb8, 0x14, 0x90, 0xb5, 0x77, 0xb0, 0xb6, 0x9a, 0xd6, 0x22, 0xf0, 0xdc, 0x0b,
0xb8, 0xb7, 0xa0, 0x29, 0x9a, 0xc1, 0x3d, 0x41, 0x9d, 0x92, 0x32, 0xbf, 0xb1, 0x5f, 0x8e, 0x41,
0x29, 0xbf, 0xbc, 0x23, 0xbf, 0xac, 0x5d, 0xf4, 0xa5, 0xa4, 0xb4, 0xef, 0xab, 0x7b, 0xcd, 0xfb,
0x91, 0x3b, 0x3e, 0x95, 0x52, 0x7a, 0x1b, 0x96, 0xbd, 0xa0, 0xef, 0x4f, 0x06, 0xb4, 0x37, 0x09,
0xdc, 0x20, 0x08, 0x27, 0x41, 0x9f, 0xca, 0xa4, 0x8f, 0xa2, 0x2a, 0x7b, 0xa0, 0x72, 0xde, 0xb0,
0x21, 0xb2, 0x01, 0x55, 0xd6, 0x91, 0xb4, 0x0a, 0xc5, 0x22, 0xcc, 0x49, 0xc8, 0x4d, 0xa8, 0xd2,
0xc1, 0x90, 0xca, 0x08, 0x00, 0xc9, 0xf8, 0x3b, 0x83, 0x21, 0x75, 0x38, 0x01, 0x53, 0x28, 0x0c,
0xcd, 0x28, 0x14, 0xd3, 0xa2, 0xcc, 0xb1, 0xe2, 0x83, 0x81, 0xbd, 0x02, 0xe4, 0x80, 0xcb, 0x80,
0x7e, 0x25, 0xf2, 0xeb, 0x65, 0x68, 0x68, 0x30, 0xd3, 0x0d, 0x43, 0x36, 0xe0, 0xde, 0xc0, 0x73,
0x47, 0x34, 0xa1, 0x91, 0xe0, 0xfb, 0x0c, 0xca, 0xe8, 0xdc, 0xb3, 0x61, 0x2f, 0x9c, 0x24, 0xbd,
0x01, 0x1d, 0x46, 0x94, 0x1b, 0x79, 0x66, 0x74, 0x0c, 0x94, 0xd1, 0x8d, 0xdc, 0x67, 0x3a, 0x1d,
0xe7, 0xa0, 0x0c, 0x2a, 0x2f, 0x38, 0xf8, 0x1a, 0x55, 0xd2, 0x0b, 0x0e, 0xbe, 0x22, 0x59, 0xad,
0x56, 0x2d, 0xd0, 0x6a, 0x6f, 0xc2, 0x1a, 0xd7, 0x5f, 0x42, 0xd2, 0x7b, 0x19, 0xc6, 0x9a, 0x51,
0x4b, 0x36, 0xa0, 0xcd, 0xc6, 0x2c, 0x45, 0x22, 0xf6, 0xbe, 0xc1, 0x83, 0x85, 0x96, 0x93, 0xc3,
0x19, 0x2d, 0x46, 0xed, 0x74, 0x5a, 0x7e, 0xe1, 0x9b, 0xc3, 0x91, 0xd6, 0x7d, 0x66, 0xd2, 0xd6,
0x05, 0x6d, 0x06, 0xb7, 0x17, 0xa0, 0x71, 0x94, 0x84, 0x63, 0xb9, 0x29, 0x2d, 0x68, 0xf2, 0xa2,
0x48, 0xbe, 0x79, 0x09, 0x2e, 0x23, 0x17, 0x3d, 0x0a, 0xc7, 0xa1, 0x1f, 0x0e, 0xa7, 0xc6, 0x89,
0xe1, 0x1f, 0x2d, 0x58, 0x36, 0x6a, 0xd3, 0x23, 0x03, 0x06, 0x1b, 0x64, 0xd6, 0x04, 0x67, 0xbc,
0x25, 0x4d, 0xb9, 0x72, 0x42, 0x1e, 0xd7, 0x7d, 0x2c, 0x12, 0x29, 0xb6, 0x60, 0x51, 0x8e, 0x4c,
0x7e, 0xc8, 0xb9, 0xb0, 0x93, 0xe7, 0x42, 0xf1, 0x7d, 0x4b, 0x7c, 0x20, 0x9b, 0xf8, 0xac, 0xb8,
0x38, 0xe7, 0x27, 0x08, 0x19, 0x5b, 0x52, 0x67, 0x0e, 0xfd, 0x84, 0x29, 0x47, 0xd0, 0x57, 0x60,
0x6c, 0xff, 0xb6, 0x05, 0x90, 0x8e, 0x0e, 0xaf, 0x5b, 0x95, 0x81, 0xe0, 0x6f, 0x38, 0x34, 0x63,
0xf0, 0x2a, 0x34, 0xd5, 0x35, 0x5d, 0x6a, 0x73, 0x1a, 0x12, 0x63, 0x0e, 0xe3, 0x0d, 0x58, 0x1c,
0xfa, 0xe1, 0x31, 0x1a, 0x6c, 0xcc, 0xe6, 0x8a, 0x45, 0x0a, 0x52, 0x8b, 0xc3, 0xf7, 0x04, 0x9a,
0x1a, 0xa8, 0x8a, 0x66, 0xa0, 0xec, 0xdf, 0x29, 0xa9, 0x5b, 0x95, 0x74, 0xce, 0x33, 0xa5, 0x8c,
0xdc, 0xc9, 0xa9, 0xd3, 0x19, 0x97, 0x18, 0x18, 0x45, 0x3d, 0xbc, 0x30, 0xc8, 0xf3, 0x0e, 0xb4,
0x22, 0xae, 0xaf, 0xa4, 0x32, 0xab, 0x3c, 0x47, 0x99, 0x2d, 0x44, 0x86, 0x15, 0xfb, 0x38, 0xb4,
0xdd, 0xc1, 0x19, 0x8d, 0x12, 0x0f, 0x8f, 0xd9, 0xe8, 0x42, 0x70, 0x15, 0xbc, 0xa8, 0xe1, 0x68,
0xd9, 0x6f, 0xc0, 0xa2, 0x48, 0xfb, 0x52, 0x94, 0x22, 0x31, 0x3b, 0x85, 0x19, 0xa1, 0xfd, 0xa7,
0xf2, 0x02, 0xc7, 0xdc, 0xc3, 0xd9, 0x2b, 0xa2, 0xcf, 0xae, 0x94, 0x99, 0xdd, 0xc7, 0xc4, 0x65,
0xca, 0x40, 0x9e, 0xe5, 0xcb, 0x5a, 0x92, 0xc5, 0x40, 0x5c, 0x7e, 0x99, 0x4b, 0x5a, 0x79, 0x91,
0x25, 0xb5, 0x7f, 0x68, 0xc1, 0xfc, 0x5e, 0x38, 0xde, 0x13, 0xe9, 0x26, 0x28, 0x08, 0x2a, 0xdf,
0x52, 0x16, 0x9f, 0x93, 0x88, 0x52, 0x68, 0xb9, 0x17, 0xb2, 0x96, 0xfb, 0x17, 0xe1, 0x25, 0x8c,
0x24, 0x45, 0xe1, 0x38, 0x8c, 0x98, 0x30, 0xba, 0x3e, 0x37, 0xd3, 0x61, 0x90, 0x9c, 0x4a, 0x35,
0xf6, 0x3c, 0x12, 0x3c, 0xde, 0xb1, 0x63, 0x09, 0x77, 0xba, 0x85, 0xa7, 0xc1, 0xb5, 0x5b, 0xbe,
0xc2, 0xfe, 0x0c, 0xd4, 0xd1, 0x55, 0xc6, 0x69, 0xbd, 0x0e, 0xf5, 0xd3, 0x70, 0xdc, 0x3b, 0xf5,
0x82, 0x44, 0x0a, 0x77, 0x2b, 0xf5, 0x61, 0xf7, 0x70, 0x41, 0x14, 0x81, 0xfd, 0xcd, 0x39, 0x98,
0x7f, 0x10, 0x9c, 0x85, 0x5e, 0x1f, 0x2f, 0x8b, 0x46, 0x74, 0x14, 0xca, 0xec, 0x53, 0xf6, 0x3f,
0xb9, 0x02, 0xf3, 0x98, 0x6e, 0x35, 0xe6, 0x4c, 0xdb, 0xe4, 0x97, 0xba, 0x02, 0x62, 0x4e, 0x42,
0x94, 0x26, 0xbe, 0x73, 0xf1, 0xd1, 0x10, 0x76, 0x88, 0x88, 0xf4, 0xc4, 0x75, 0x51, 0x4a, 0xb3,
0x7b, 0xab, 0x5a, 0x76, 0x2f, 0xeb, 0x4b, 0xa4, 0xc7, 0xf0, 0xfc, 0x09, 0xde, 0x97, 0x80, 0xf0,
0xe0, 0x13, 0x51, 0x1e, 0x09, 0x44, 0x97, 0x63, 0x5e, 0x1c, 0x7c, 0x74, 0x90, 0xb9, 0x25, 0xfc,
0x03, 0x4e, 0xc3, 0x95, 0xb0, 0x0e, 0x31, 0x17, 0x2e, 0xfb, 0xd4, 0xa0, 0xce, 0x79, 0x3f, 0x03,
0x33, 0x4d, 0x3d, 0xa0, 0x4a, 0xa1, 0xf2, 0x79, 0x00, 0x4f, 0xee, 0xcf, 0xe2, 0xda, 0x71, 0x89,
0x67, 0xc6, 0xc9, 0xe3, 0x12, 0x63, 0x18, 0xd7, 0xf7, 0x8f, 0xdd, 0xfe, 0x53, 0x7c, 0x49, 0x82,
0xd7, 0x37, 0x75, 0xc7, 0x04, 0x31, 0xc9, 0x25, 0xdd, 0x55, 0xbc, 0xfe, 0xae, 0x38, 0x3a, 0x44,
0xee, 0x40, 0x03, 0x8f, 0x88, 0x62, 0x5f, 0x5b, 0xb8, 0xaf, 0x6d, 0xfd, 0x0c, 0x89, 0x3b, 0xab,
0x13, 0xe9, 0x17, 0x59, 0x8b, 0xb9, 0x5c, 0x35, 0x77, 0x30, 0x10, 0xf7, 0x7f, 0x6d, 0xec, 0x2d,
0x05, 0x98, 0x55, 0x15, 0x0b, 0xc6, 0x09, 0x96, 0x90, 0xc0, 0xc0, 0xc8, 0x55, 0xa8, 0xb1, 0xe3,
0xcb, 0xd8, 0xf5, 0x06, 0x98, 0xec, 0xc6, 0x4f, 0x51, 0x0a, 0x63, 0x6d, 0xc8, 0xff, 0xf1, 0x9e,
0x6e, 0x19, 0x57, 0xc5, 0xc0, 0xd8, 0xda, 0xa8, 0x32, 0x0a, 0xd3, 0x0a, 0xdf, 0x51, 0x03, 0x24,
0x6f, 0xe0, 0x2d, 0x4c, 0x42, 0x3b, 0xab, 0x18, 0xe5, 0x79, 0x49, 0xcc, 0x59, 0x30, 0xad, 0xfc,
0x7b, 0xc4, 0x48, 0x1c, 0x4e, 0x69, 0x7f, 0x12, 0x9a, 0x3a, 0x4c, 0x6a, 0x50, 0x79, 0x78, 0xb8,
0x7b, 0xd0, 0xbe, 0x44, 0x1a, 0x30, 0x7f, 0xb4, 0xfb, 0xe8, 0xd1, 0xfe, 0xee, 0x4e, 0xdb, 0x22,
0x4d, 0xa8, 0xa9, 0x8c, 0xa4, 0x92, 0x9d, 0x00, 0xd9, 0x1a, 0x0c, 0xc4, 0x77, 0xea, 0xd8, 0x9e,
0x72, 0xb0, 0x65, 0x70, 0x70, 0x01, 0x17, 0x95, 0x8a, 0xb9, 0xe8, 0xb9, 0x6b, 0x6d, 0xef, 0x42,
0xe3, 0x50, 0x7b, 0x91, 0x81, 0x02, 0x25, 0xdf, 0x62, 0x08, 0x41, 0xd4, 0x10, 0x6d, 0x38, 0x25,
0x7d, 0x38, 0xf6, 0x9f, 0x59, 0x3c, 0x4b, 0x5c, 0x0d, 0x9f, 0xf7, 0x6d, 0x43, 0x53, 0x05, 0x57,
0xd2, 0xf4, 0x42, 0x03, 0x63, 0x34, 0x38, 0x94, 0x5e, 0x78, 0x72, 0x12, 0x53, 0x99, 0x0c, 0x64,
0x60, 0x4c, 0x12, 0x98, 0x4f, 0xc5, 0xfc, 0x13, 0x8f, 0xf7, 0x10, 0x8b, 0xa4, 0xa0, 0x1c, 0xce,
0xf4, 0x7a, 0x44, 0xcf, 0x68, 0x14, 0xab, 0x34, 0x28, 0x55, 0x56, 0x59, 0x90, 0xd9, 0x55, 0xde,
0x80, 0x9a, 0x6a, 0xd7, 0x54, 0x59, 0x92, 0x52, 0xd5, 0x33, 0xd5, 0x88, 0xa7, 0x0c, 0x63, 0xd0,
0x5c, 0x4d, 0xe7, 0x2b, 0xc8, 0x2d, 0x20, 0x27, 0x5e, 0x94, 0x25, 0x2f, 0x23, 0x79, 0x41, 0x8d,
0xfd, 0x04, 0x96, 0x25, 0xeb, 0x68, 0xce, 0x94, 0xb9, 0x89, 0xd6, 0x45, 0x02, 0x53, 0xca, 0x0b,
0x8c, 0xfd, 0x3f, 0x16, 0xcc, 0x8b, 0x9d, 0xce, 0xbd, 0xea, 0xe1, 0xfb, 0x6c, 0x60, 0xa4, 0x63,
0x3c, 0x80, 0x40, 0xe9, 0x12, 0x6a, 0x32, 0xa7, 0x08, 0xcb, 0x45, 0x8a, 0x90, 0x40, 0x65, 0xec,
0x26, 0xa7, 0x78, 0x76, 0xae, 0x3b, 0xf8, 0x3f, 0x69, 0xf3, 0x48, 0x0f, 0x57, 0xba, 0x18, 0xe5,
0x29, 0x7a, 0xbf, 0xc4, 0xed, 0x7b, 0xfe, 0xfd, 0xd2, 0x15, 0xa8, 0xe3, 0x00, 0x7a, 0x69, 0x20,
0x27, 0x05, 0x18, 0xe7, 0xf2, 0x02, 0x4a, 0xb2, 0xc8, 0x45, 0x4e, 0x11, 0x7b, 0x95, 0xef, 0xbc,
0x58, 0x02, 0x75, 0x67, 0x2a, 0xb2, 0x4e, 0x53, 0x38, 0xe5, 0x08, 0x31, 0x80, 0x2c, 0x47, 0x08,
0x52, 0x47, 0xd5, 0xdb, 0x5d, 0xe8, 0xec, 0x50, 0x9f, 0x26, 0x74, 0xcb, 0xf7, 0xb3, 0xed, 0xbf,
0x04, 0x97, 0x0b, 0xea, 0x84, 0xff, 0xfc, 0x45, 0x58, 0xdd, 0xe2, 0x19, 0x7a, 0x3f, 0xad, 0xac,
0x13, 0xbb, 0x03, 0x6b, 0xd9, 0x26, 0x45, 0x67, 0xf7, 0x60, 0x69, 0x87, 0x1e, 0x4f, 0x86, 0xfb,
0xf4, 0x2c, 0xed, 0x88, 0x40, 0x25, 0x3e, 0x0d, 0xcf, 0x85, 0x60, 0xe2, 0xff, 0xe4, 0x65, 0x00,
0x9f, 0xd1, 0xf4, 0xe2, 0x31, 0xed, 0xcb, 0x37, 0x07, 0x88, 0x1c, 0x8d, 0x69, 0xdf, 0x7e, 0x13,
0x88, 0xde, 0x8e, 0x58, 0x2f, 0x66, 0xf7, 0x26, 0xc7, 0xbd, 0x78, 0x1a, 0x27, 0x74, 0x24, 0x1f,
0x53, 0xe8, 0x90, 0x7d, 0x03, 0x9a, 0x87, 0xee, 0xd4, 0xa1, 0x5f, 0x17, 0x8f, 0xb9, 0xd6, 0x61,
0x7e, 0xec, 0x4e, 0x99, 0x9a, 0x52, 0x11, 0x26, 0xac, 0xb6, 0xff, 0xab, 0x04, 0x73, 0x9c, 0x92,
0xb5, 0x3a, 0xa0, 0x71, 0xe2, 0x05, 0xc8, 0x58, 0xb2, 0x55, 0x0d, 0xca, 0xb1, 0x72, 0xa9, 0x80,
0x95, 0xc5, 0x29, 0x4d, 0xe6, 0x6f, 0x0b, 0x7e, 0x35, 0x30, 0xc6, 0x5c, 0x69, 0xfa, 0x17, 0x0f,
0x71, 0xa4, 0x40, 0x26, 0x18, 0x99, 0x5a, 0x57, 0x3e, 0x3e, 0x29, 0xa5, 0x82, 0x73, 0x75, 0xa8,
0xd0, 0x86, 0xcf, 0x73, 0x06, 0xcf, 0xd9, 0xf0, 0x9c, 0xad, 0xae, 0xbd, 0x80, 0xad, 0xe6, 0x47,
0xb7, 0xe7, 0xd9, 0x6a, 0x78, 0x01, 0x5b, 0x6d, 0x13, 0x68, 0xdf, 0xa3, 0xd4, 0xa1, 0xcc, 0x1b,
0x94, 0xbc, 0xfb, 0x2d, 0x0b, 0xda, 0x82, 0x8b, 0x54, 0x1d, 0x79, 0xd5, 0xf0, 0x7a, 0x0b, 0xf3,
0xa8, 0xaf, 0xc3, 0x02, 0xfa, 0xa2, 0x2a, 0xea, 0x2a, 0x42, 0xc4, 0x06, 0xc8, 0xe6, 0x21, 0xaf,
0x3b, 0x47, 0x9e, 0x2f, 0x36, 0x45, 0x87, 0x64, 0xe0, 0x36, 0x72, 0x45, 0x1a, 0x94, 0xe5, 0xa8,
0xb2, 0xfd, 0xd7, 0x16, 0x2c, 0x69, 0x03, 0x16, 0x5c, 0xf8, 0x0e, 0x48, 0x69, 0xe0, 0x21, 0x58,
0x2e, 0xb9, 0xeb, 0xa6, 0xd8, 0xa4, 0x9f, 0x19, 0xc4, 0xb8, 0x99, 0xee, 0x14, 0x07, 0x18, 0x4f,
0x46, 0x42, 0x89, 0xea, 0x10, 0x63, 0xa4, 0x73, 0x4a, 0x9f, 0x2a, 0x12, 0xae, 0xc6, 0x0d, 0x0c,
0x73, 0x74, 0x98, 0x0f, 0xad, 0x88, 0xb8, 0x3d, 0x33, 0x41, 0xfb, 0x5f, 0x2c, 0x58, 0xe6, 0x87,
0x21, 0x71, 0xd4, 0x54, 0x4f, 0x60, 0xe6, 0xf8, 0xe9, 0x8f, 0x4b, 0xe4, 0xde, 0x25, 0x47, 0x94,
0xc9, 0xa7, 0x5f, 0xf0, 0x00, 0xa7, 0x72, 0xb3, 0x66, 0xec, 0x45, 0xb9, 0x68, 0x2f, 0x9e, 0xb3,
0xd2, 0x45, 0x21, 0xc7, 0x6a, 0x61, 0xc8, 0xf1, 0xee, 0x3c, 0x54, 0xe3, 0x7e, 0x38, 0xa6, 0xf6,
0x1a, 0xac, 0x98, 0x93, 0x13, 0x2a, 0xe8, 0x3b, 0x16, 0x74, 0xee, 0xf1, 0xd0, 0xbc, 0x17, 0x0c,
0xf7, 0xbc, 0x38, 0x09, 0x23, 0xf5, 0x52, 0xf0, 0x2a, 0x40, 0x9c, 0xb8, 0x51, 0xc2, 0x33, 0x70,
0x45, 0x40, 0x30, 0x45, 0xd8, 0x18, 0x69, 0x30, 0xe0, 0xb5, 0x7c, 0x6f, 0x54, 0x39, 0xe7, 0x43,
0x88, 0xe3, 0x9a, 0x61, 0x89, 0x5f, 0xe3, 0xb9, 0x8a, 0xcc, 0x57, 0xa0, 0x67, 0xa8, 0xd7, 0xf9,
0x39, 0x28, 0x83, 0xda, 0xff, 0x6c, 0xc1, 0x62, 0x3a, 0x48, 0xbc, 0xc5, 0x33, 0xb5, 0x83, 0x30,
0xbf, 0xa9, 0x76, 0x90, 0xa1, 0x4a, 0x8f, 0xd9, 0x63, 0x31, 0x36, 0x0d, 0x41, 0x89, 0x15, 0xa5,
0x70, 0x22, 0x1d, 0x1c, 0x1d, 0xe2, 0x99, 0x47, 0xcc, 0x13, 0x10, 0x5e, 0x8d, 0x28, 0x61, 0x02,
0xf5, 0x28, 0xc1, 0xaf, 0xe6, 0xf8, 0x41, 0x50, 0x14, 0xa5, 0x29, 0x9d, 0x47, 0x14, 0x4d, 0xa9,
0x7e, 0xcd, 0x51, 0xe3, 0xeb, 0x23, 0xcb, 0xf6, 0xef, 0x5a, 0x70, 0xb9, 0x60, 0xe1, 0x85, 0xd4,
0xec, 0xc0, 0xd2, 0x89, 0xaa, 0x94, 0x8b, 0xc3, 0x45, 0x67, 0x4d, 0xde, 0x33, 0x99, 0x0b, 0xe2,
0xe4, 0x3f, 0x50, 0x7e, 0x11, 0x5f, 0x6e, 0x23, 0xb7, 0x2f, 0x5f, 0xb1, 0xf1, 0x39, 0x68, 0x68,
0x6f, 0xf4, 0xc8, 0x3a, 0x2c, 0x3f, 0x79, 0xf0, 0xe8, 0x60, 0xf7, 0xe8, 0xa8, 0x77, 0xf8, 0xf8,
0xee, 0x17, 0x76, 0xbf, 0xdc, 0xdb, 0xdb, 0x3a, 0xda, 0x6b, 0x5f, 0x22, 0x6b, 0x40, 0x0e, 0x76,
0x8f, 0x1e, 0xed, 0xee, 0x18, 0xb8, 0x75, 0xe7, 0xf7, 0xca, 0xd0, 0xe2, 0xf7, 0x97, 0xfc, 0x37,
0x1b, 0x68, 0x44, 0xde, 0x85, 0x79, 0xf1, 0x9b, 0x1b, 0x64, 0x55, 0x0c, 0xdb, 0xfc, 0x95, 0x8f,
0xee, 0x5a, 0x16, 0x16, 0x7c, 0xb9, 0xfc, 0x6b, 0x3f, 0xfc, 0xf7, 0x3f, 0x28, 0x2d, 0x90, 0xc6,
0xe6, 0xd9, 0x1b, 0x9b, 0x43, 0x1a, 0xc4, 0xac, 0x8d, 0xaf, 0x02, 0xa4, 0xbf, 0x46, 0x41, 0x3a,
0xca, 0x1f, 0xcc, 0xfc, 0xcc, 0x46, 0xf7, 0x72, 0x41, 0x8d, 0x68, 0xf7, 0x32, 0xb6, 0xbb, 0x6c,
0xb7, 0x58, 0xbb, 0x5e, 0xe0, 0x25, 0xfc, 0xa7, 0x29, 0xde, 0xb6, 0x36, 0xc8, 0x00, 0x9a, 0xfa,
0x8f, 0x4d, 0x10, 0x19, 0x86, 0x2a, 0xf8, 0xa9, 0x8b, 0xee, 0x4b, 0x85, 0x75, 0x32, 0x06, 0x87,
0x7d, 0xac, 0xda, 0x6d, 0xd6, 0xc7, 0x04, 0x29, 0xd2, 0x5e, 0x7c, 0x68, 0x99, 0xbf, 0x29, 0x41,
0xae, 0x68, 0x2a, 0x23, 0xf7, 0x8b, 0x16, 0xdd, 0x97, 0x67, 0xd4, 0x8a, 0xbe, 0x5e, 0xc6, 0xbe,
0xd6, 0x6d, 0xc2, 0xfa, 0xea, 0x23, 0x8d, 0xfc, 0x45, 0x8b, 0xb7, 0xad, 0x8d, 0x3b, 0x7f, 0x77,
0x0d, 0xea, 0x2a, 0x70, 0x4c, 0xde, 0x87, 0x05, 0xe3, 0x82, 0x99, 0xc8, 0x69, 0x14, 0xdd, 0x47,
0x77, 0xaf, 0x14, 0x57, 0x8a, 0x8e, 0xaf, 0x62, 0xc7, 0x1d, 0xb2, 0xc6, 0x3a, 0x16, 0x37, 0xb4,
0x9b, 0x98, 0x2a, 0xc1, 0xf3, 0x9e, 0x9f, 0xf2, 0x79, 0xa6, 0x97, 0xc2, 0xc6, 0x3c, 0x73, 0x97,
0xc8, 0xc6, 0x3c, 0xf3, 0x37, 0xc9, 0xf6, 0x15, 0xec, 0x6e, 0x8d, 0xac, 0xe8, 0xdd, 0xa9, 0x80,
0x2e, 0xc5, 0x64, 0x7d, 0xfd, 0x67, 0x18, 0xc8, 0xcb, 0x8a, 0xb1, 0x8a, 0x7e, 0x9e, 0x41, 0xb1,
0x48, 0xfe, 0x37, 0x1a, 0xec, 0x0e, 0x76, 0x45, 0x08, 0x6e, 0x9f, 0xfe, 0x2b, 0x0c, 0xe4, 0x2b,
0x50, 0x57, 0x0f, 0x74, 0xc9, 0xba, 0xf6, 0x60, 0x5a, 0x7f, 0x50, 0xdc, 0xed, 0xe4, 0x2b, 0x8a,
0x18, 0x43, 0x6f, 0x99, 0x31, 0xc6, 0x13, 0x68, 0x68, 0x8f, 0x70, 0xc9, 0x65, 0x15, 0xf6, 0xcf,
0x3e, 0xf4, 0xed, 0x76, 0x8b, 0xaa, 0x44, 0x17, 0x4b, 0xd8, 0x45, 0x83, 0xd4, 0x91, 0xf7, 0x92,
0x67, 0x61, 0x4c, 0xf6, 0x61, 0x55, 0x1c, 0x5c, 0x8e, 0xe9, 0x47, 0x59, 0xa2, 0x82, 0x5f, 0xa5,
0xb8, 0x6d, 0x91, 0x77, 0xa0, 0x26, 0xdf, 0x5a, 0x93, 0xb5, 0xe2, 0x37, 0xe3, 0xdd, 0xf5, 0x1c,
0x2e, 0xd4, 0xda, 0x97, 0x01, 0xd2, 0x17, 0xbf, 0x4a, 0x80, 0x73, 0x2f, 0x88, 0xd5, 0xee, 0xe4,
0x9f, 0x07, 0xdb, 0x6b, 0x38, 0xc1, 0x36, 0x41, 0x01, 0x0e, 0xe8, 0xb9, 0x7c, 0xbe, 0xf2, 0x35,
0x68, 0x68, 0x8f, 0x7e, 0xd5, 0xf2, 0xe5, 0x1f, 0x0c, 0xab, 0xe5, 0x2b, 0x78, 0x23, 0x6c, 0x77,
0xb1, 0xf5, 0x15, 0x7b, 0x91, 0xb5, 0x1e, 0x7b, 0xc3, 0x60, 0xc4, 0x09, 0xd8, 0x06, 0x9d, 0xc2,
0x82, 0xf1, 0xb2, 0x57, 0x49, 0x4f, 0xd1, 0xbb, 0x61, 0x25, 0x3d, 0x85, 0x8f, 0x81, 0x25, 0x3b,
0xdb, 0x4b, 0xac, 0x9f, 0x33, 0x24, 0xd1, 0x7a, 0x7a, 0x0f, 0x1a, 0xda, 0x2b, 0x5d, 0x35, 0x97,
0xfc, 0x83, 0x60, 0x35, 0x97, 0xa2, 0x47, 0xbd, 0x2b, 0xd8, 0x47, 0xcb, 0x46, 0x56, 0xc0, 0xd7,
0x1f, 0xac, 0xed, 0xf7, 0xa1, 0x65, 0xbe, 0xdb, 0x55, 0x72, 0x59, 0xf8, 0x02, 0x58, 0xc9, 0xe5,
0x8c, 0xc7, 0xbe, 0x82, 0xa5, 0x37, 0x96, 0x55, 0x27, 0x9b, 0x1f, 0x88, 0x6b, 0xdc, 0x0f, 0xc9,
0x17, 0x99, 0xf2, 0x11, 0xcf, 0x71, 0xc8, 0xba, 0xc6, 0xb5, 0xfa, 0xa3, 0x1d, 0x25, 0x2f, 0xb9,
0x97, 0x3b, 0x26, 0x33, 0xf3, 0xf7, 0x2b, 0x68, 0x51, 0xf0, 0x59, 0x8e, 0x66, 0x51, 0xf4, 0x97,
0x3b, 0x9a, 0x45, 0x31, 0x5e, 0xef, 0x64, 0x2d, 0x4a, 0xe2, 0xb1, 0x36, 0x02, 0x58, 0xcc, 0x24,
0xa8, 0x29, 0xa9, 0x28, 0xce, 0xe8, 0xed, 0x5e, 0x7d, 0x7e, 0x5e, 0x9b, 0xa9, 0xa8, 0xa4, 0x82,
0xda, 0x94, 0xf9, 0xd3, 0xbf, 0x0c, 0x4d, 0xfd, 0x45, 0x25, 0xd1, 0x45, 0x39, 0xdb, 0xd3, 0x4b,
0x85, 0x75, 0xe6, 0xe6, 0x92, 0xa6, 0xde, 0x0d, 0xf9, 0x12, 0xac, 0x29, 0x51, 0xd7, 0x73, 0x9e,
0x62, 0xf2, 0x4a, 0x41, 0x26, 0x94, 0x1e, 0xce, 0xe8, 0x5e, 0x9e, 0x99, 0x2a, 0x75, 0xdb, 0x62,
0x4c, 0x63, 0x3e, 0x55, 0x4b, 0x95, 0x79, 0xd1, 0x0b, 0xbd, 0x54, 0x99, 0x17, 0xbe, 0x6f, 0x93,
0x4c, 0x43, 0x96, 0x8d, 0x35, 0xe2, 0x91, 0x7c, 0xf2, 0x1e, 0x2c, 0x6a, 0x59, 0xa5, 0x47, 0xd3,
0xa0, 0xaf, 0x04, 0x20, 0xff, 0xfc, 0xa0, 0x5b, 0xe4, 0x6f, 0xdb, 0xeb, 0xd8, 0xfe, 0x92, 0x6d,
0x2c, 0x0e, 0x63, 0xfe, 0x6d, 0x68, 0xe8, 0x19, 0xab, 0xcf, 0x69, 0x77, 0x5d, 0xab, 0xd2, 0xb3,
0xe7, 0x6f, 0x5b, 0xe4, 0x8f, 0x2c, 0x68, 0x1a, 0xf9, 0x9f, 0xc6, 0x7d, 0x55, 0xa6, 0x9d, 0x8e,
0x5e, 0xa7, 0x37, 0x64, 0x3b, 0x38, 0xc8, 0xfd, 0x8d, 0xcf, 0x1b, 0x8b, 0xf0, 0x81, 0x71, 0x6e,
0xbb, 0x95, 0xfd, 0xc1, 0x92, 0x0f, 0xb3, 0x04, 0xfa, 0x13, 0x8d, 0x0f, 0x6f, 0x5b, 0xe4, 0x7b,
0x16, 0xb4, 0xcc, 0x68, 0x83, 0xda, 0xaa, 0xc2, 0xb8, 0x86, 0xda, 0xaa, 0x19, 0x21, 0x8a, 0xf7,
0x70, 0x94, 0x8f, 0x36, 0x1c, 0x63, 0x94, 0xe2, 0x11, 0xe3, 0x4f, 0x36, 0x5a, 0xf2, 0x36, 0xff,
0x29, 0x22, 0x19, 0x02, 0x23, 0x9a, 0xd5, 0xc8, 0x6e, 0xaf, 0xfe, 0x3b, 0x3c, 0x37, 0xad, 0xdb,
0x16, 0xf9, 0x1a, 0xff, 0x5d, 0x13, 0xf1, 0x2d, 0x72, 0xc9, 0x8b, 0x7e, 0x6f, 0x5f, 0xc7, 0x39,
0x5d, 0xb5, 0x2f, 0x1b, 0x73, 0xca, 0xda, 0xe3, 0x2d, 0x3e, 0x3a, 0xf1, 0x13, 0x3a, 0xa9, 0x41,
0xc9, 0xfd, 0xac, 0xce, 0xec, 0x41, 0x8e, 0xf8, 0x20, 0x05, 0xb9, 0xc1, 0xca, 0x2f, 0xd8, 0x8c,
0xbd, 0x81, 0x63, 0xbd, 0x6e, 0xbf, 0x32, 0x73, 0xac, 0x9b, 0x18, 0x33, 0x60, 0x23, 0x3e, 0x04,
0x48, 0xc3, 0xd5, 0x24, 0x13, 0x2e, 0x55, 0x02, 0x9e, 0x8f, 0x68, 0x9b, 0xf2, 0x22, 0xa3, 0xaa,
0xac, 0xc5, 0xaf, 0x70, 0x75, 0xf5, 0x40, 0x06, 0x5a, 0x75, 0xa7, 0xc4, 0x8c, 0x2b, 0x1b, 0x4e,
0x49, 0xb6, 0x7d, 0x43, 0x59, 0xa9, 0xa8, 0xed, 0x63, 0x58, 0xd8, 0x0f, 0xc3, 0xa7, 0x93, 0xb1,
0xba, 0x6c, 0x32, 0xc3, 0x79, 0x7b, 0x6e, 0x7c, 0xda, 0xcd, 0xcc, 0xc2, 0xbe, 0x86, 0x4d, 0x75,
0x49, 0x47, 0x6b, 0x6a, 0xf3, 0x83, 0x34, 0x1c, 0xfe, 0x21, 0x71, 0x61, 0x49, 0xe9, 0x40, 0x35,
0xf0, 0xae, 0xd9, 0x8c, 0xa1, 0xf9, 0xb2, 0x5d, 0x18, 0x9e, 0xad, 0x1c, 0xed, 0x66, 0x2c, 0xdb,
0xbc, 0x6d, 0x91, 0x43, 0x68, 0xee, 0xd0, 0x7e, 0x38, 0xa0, 0x22, 0x26, 0xb6, 0x9c, 0x0e, 0x5c,
0x05, 0xd3, 0xba, 0x0b, 0x06, 0x68, 0xda, 0x85, 0xb1, 0x3b, 0x8d, 0xe8, 0xd7, 0x37, 0x3f, 0x10,
0xd1, 0xb6, 0x0f, 0xa5, 0x5d, 0x90, 0xe1, 0x48, 0xc3, 0x2e, 0x64, 0xe2, 0x97, 0x86, 0x5d, 0xc8,
0xc5, 0x2f, 0x8d, 0xa5, 0x96, 0xe1, 0x50, 0xe2, 0xc3, 0x52, 0x2e, 0xe4, 0xa9, 0x4c, 0xc2, 0xac,
0x40, 0x69, 0xf7, 0xda, 0x6c, 0x02, 0xb3, 0xb7, 0x0d, 0xb3, 0xb7, 0x23, 0x58, 0xd8, 0xa1, 0x7c,
0xb1, 0x78, 0x46, 0x4b, 0x26, 0x89, 0x58, 0xcf, 0x97, 0xc9, 0x2a, 0x70, 0xac, 0x33, 0x0d, 0x3f,
0xa6, 0x93, 0x90, 0xaf, 0x40, 0xe3, 0x3e, 0x4d, 0x64, 0x0a, 0x8b, 0x72, 0x3d, 0x33, 0x39, 0x2d,
0xdd, 0x82, 0x0c, 0x18, 0x93, 0x67, 0xb0, 0xb5, 0x4d, 0x3a, 0x18, 0x52, 0xae, 0x9c, 0x7a, 0xde,
0xe0, 0x43, 0xf2, 0x4b, 0xd8, 0xb8, 0xca, 0xa1, 0x5b, 0xd3, 0x32, 0x1f, 0xf4, 0xc6, 0x17, 0x33,
0x78, 0x51, 0xcb, 0x41, 0x38, 0xa0, 0x9a, 0x0b, 0x14, 0x40, 0x43, 0x4b, 0xfd, 0x54, 0x02, 0x94,
0x4f, 0x63, 0x55, 0x02, 0x54, 0x90, 0x29, 0x6a, 0xdf, 0xc4, 0x7e, 0x6c, 0x72, 0x2d, 0xed, 0x87,
0x67, 0x87, 0xa6, 0x3d, 0x6d, 0x7e, 0xe0, 0x8e, 0x92, 0x0f, 0xc9, 0x13, 0x7c, 0xc9, 0xac, 0xa7,
0xe9, 0xa4, 0xbe, 0x74, 0x36, 0xa3, 0x47, 0x2d, 0x96, 0x56, 0x65, 0xfa, 0xd7, 0xbc, 0x2b, 0xf4,
0x94, 0x3e, 0x0d, 0x70, 0x94, 0x84, 0xe3, 0x1d, 0x97, 0x8e, 0xc2, 0x20, 0xd5, 0xb5, 0x69, 0x2a,
0x4a, 0xaa, 0xbf, 0xb4, 0x7c, 0x14, 0xf2, 0x44, 0x3b, 0x7c, 0x18, 0x59, 0x4e, 0x92, 0xb9, 0x66,
0x66, 0xab, 0xa8, 0x05, 0x29, 0xc8, 0x58, 0xb9, 0x6d, 0x91, 0x2d, 0x80, 0x34, 0xe6, 0xad, 0x8e,
0x12, 0xb9, 0x70, 0xba, 0x52, 0x7b, 0x05, 0x01, 0xf2, 0x43, 0xa8, 0xa7, 0x41, 0xd4, 0xf5, 0x34,
0x7d, 0xd7, 0x08, 0xb9, 0x2a, 0x0b, 0x9e, 0x0b, 0x6d, 0xda, 0x6d, 0x5c, 0x2a, 0x20, 0x35, 0xb6,
0x54, 0x18, 0xaf, 0xf4, 0x60, 0x99, 0x0f, 0x50, 0xb9, 0x23, 0x98, 0x5c, 0x21, 0x67, 0x52, 0x10,
0x5e, 0x54, 0xd2, 0x5c, 0x18, 0x9d, 0x33, 0xa2, 0x15, 0x8c, 0x5b, 0x79, 0x62, 0x07, 0x53, 0xcd,
0x23, 0x58, 0xca, 0x85, 0x8f, 0x94, 0x48, 0xcf, 0x8a, 0xe8, 0x29, 0x91, 0x9e, 0x19, 0x79, 0xb2,
0x57, 0xb1, 0xcb, 0x45, 0x1b, 0xf0, 0x04, 0x74, 0xee, 0x25, 0xfd, 0xd3, 0xb7, 0xad, 0x8d, 0xbb,
0x37, 0xde, 0xfb, 0x99, 0xa1, 0x97, 0x9c, 0x4e, 0x8e, 0x6f, 0xf5, 0xc3, 0xd1, 0xa6, 0x2f, 0x43,
0x0a, 0x22, 0x45, 0x6a, 0xd3, 0x0f, 0x06, 0x9b, 0xd8, 0xf2, 0xf1, 0x1c, 0xfe, 0x9e, 0xeb, 0x27,
0xff, 0x37, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x06, 0x09, 0xb9, 0x01, 0x56, 0x00, 0x00,
0x37, 0x3e, 0xa5, 0x51, 0x0f, 0x3f, 0x1e, 0x05, 0x74, 0x14, 0x06, 0x5e, 0xbf, 0x63, 0x5d, 0x2f,
0xaf, 0xd7, 0x1d, 0xc2, 0xeb, 0xd8, 0x17, 0xef, 0x8a, 0x1a, 0x72, 0x13, 0x16, 0x69, 0xc0, 0x71,
0x3a, 0xc0, 0xaf, 0x44, 0x57, 0xad, 0x14, 0x66, 0x1f, 0xd8, 0x7f, 0x63, 0xc1, 0xd2, 0x83, 0xc0,
0x4b, 0x9e, 0xb8, 0xbe, 0x4f, 0x13, 0x39, 0xa7, 0x9b, 0xb0, 0x78, 0x8e, 0x00, 0xce, 0xe9, 0x3c,
0x8c, 0x06, 0x62, 0x46, 0x2d, 0x0e, 0x1f, 0x0a, 0x74, 0xe6, 0xc8, 0x4a, 0x33, 0x47, 0x56, 0xb8,
0x5c, 0xe5, 0x19, 0xcb, 0x75, 0x13, 0x16, 0x23, 0xda, 0x0f, 0xcf, 0x68, 0x34, 0xed, 0x9d, 0x7b,
0xc1, 0x20, 0x3c, 0xef, 0x54, 0xae, 0x5b, 0xeb, 0x55, 0xa7, 0x25, 0xe1, 0x27, 0x88, 0xda, 0x2b,
0x40, 0xf4, 0x59, 0xf0, 0x75, 0xb3, 0x87, 0xb0, 0xfc, 0x38, 0xf0, 0xc3, 0xfe, 0xd3, 0x1f, 0x71,
0x76, 0x05, 0xdd, 0x97, 0x0a, 0xbb, 0x5f, 0x83, 0x15, 0xb3, 0x23, 0x31, 0x00, 0x0a, 0xab, 0xdb,
0xa7, 0x6e, 0x30, 0xa4, 0xb2, 0x49, 0x39, 0x84, 0x8f, 0x43, 0xbb, 0x3f, 0x89, 0x22, 0x1a, 0xe4,
0xc6, 0xb0, 0x28, 0x70, 0x35, 0x88, 0x57, 0xa1, 0x19, 0xd0, 0xf3, 0x94, 0x4c, 0xb0, 0x4c, 0x40,
0xcf, 0x25, 0x89, 0xdd, 0x81, 0xb5, 0x6c, 0x37, 0x62, 0x00, 0x3f, 0xb4, 0xa0, 0xf2, 0x38, 0x79,
0x16, 0x92, 0x5b, 0x50, 0x49, 0xa6, 0x63, 0xce, 0x98, 0xad, 0x3b, 0xe4, 0x16, 0xf2, 0xfa, 0xad,
0xad, 0xc1, 0x20, 0xa2, 0x71, 0xfc, 0x68, 0x3a, 0xa6, 0x4e, 0xd3, 0xe5, 0x85, 0x1e, 0xa3, 0x23,
0x1d, 0x98, 0x17, 0x65, 0xec, 0xb0, 0xee, 0xc8, 0x22, 0xb9, 0x06, 0xe0, 0x8e, 0xc2, 0x49, 0x90,
0xf4, 0x62, 0x37, 0xc1, 0x9d, 0x2b, 0x3b, 0x1a, 0x42, 0x6e, 0xc0, 0x42, 0xdc, 0x8f, 0xbc, 0x71,
0xd2, 0x1b, 0x4f, 0x8e, 0x9f, 0xd2, 0x29, 0xee, 0x58, 0xdd, 0x31, 0x41, 0xf2, 0x09, 0xa8, 0x85,
0x93, 0x64, 0x1c, 0x7a, 0x41, 0xd2, 0xa9, 0x5e, 0xb7, 0xd6, 0x1b, 0x77, 0x16, 0xc5, 0x98, 0x1e,
0x4e, 0x92, 0x43, 0x06, 0x3b, 0x8a, 0x80, 0x35, 0xd9, 0x0f, 0x83, 0x13, 0x2f, 0x1a, 0x71, 0x59,
0xec, 0xcc, 0x61, 0xaf, 0x26, 0x68, 0x7f, 0xab, 0x04, 0x8d, 0x47, 0x91, 0x1b, 0xc4, 0x6e, 0x9f,
0x01, 0x6c, 0x0a, 0xc9, 0xb3, 0xde, 0xa9, 0x1b, 0x9f, 0xe2, 0xac, 0xeb, 0x8e, 0x2c, 0x92, 0x35,
0x98, 0xe3, 0x03, 0xc6, 0xb9, 0x95, 0x1d, 0x51, 0x22, 0xaf, 0xc3, 0x52, 0x30, 0x19, 0xf5, 0xcc,
0xbe, 0xca, 0xb8, 0xe3, 0xf9, 0x0a, 0xb6, 0x10, 0xc7, 0x6c, 0xcf, 0x79, 0x17, 0x7c, 0x96, 0x1a,
0x42, 0x6c, 0x68, 0x8a, 0x12, 0xf5, 0x86, 0xa7, 0x7c, 0x9a, 0x55, 0xc7, 0xc0, 0x58, 0x1b, 0x89,
0x37, 0xa2, 0xbd, 0x38, 0x71, 0x47, 0x63, 0x31, 0x2d, 0x0d, 0xc1, 0xfa, 0x30, 0x71, 0xfd, 0xde,
0x09, 0xa5, 0x71, 0x67, 0x5e, 0xd4, 0x2b, 0x84, 0xbc, 0x06, 0xad, 0x01, 0x8d, 0x93, 0x9e, 0xd8,
0x1c, 0x1a, 0x77, 0x6a, 0x28, 0x79, 0x19, 0x94, 0x71, 0xc8, 0x7d, 0x9a, 0x68, 0xab, 0x13, 0x0b,
0x4e, 0xb4, 0xf7, 0x81, 0x68, 0xf0, 0x0e, 0x4d, 0x5c, 0xcf, 0x8f, 0xc9, 0x9b, 0xd0, 0x4c, 0x34,
0x62, 0xd4, 0x34, 0x0d, 0xc5, 0x36, 0xda, 0x07, 0x8e, 0x41, 0x67, 0xdf, 0x87, 0xda, 0x3d, 0x4a,
0xf7, 0xbd, 0x91, 0x97, 0x90, 0x35, 0xa8, 0x9e, 0x78, 0xcf, 0x28, 0x67, 0xec, 0xf2, 0xde, 0x25,
0x87, 0x17, 0x49, 0x17, 0xe6, 0xc7, 0x34, 0xea, 0x53, 0xb9, 0xfc, 0x7b, 0x97, 0x1c, 0x09, 0xdc,
0x9d, 0x87, 0xaa, 0xcf, 0x3e, 0xb6, 0xff, 0xb9, 0x04, 0x8d, 0x23, 0x1a, 0x28, 0x81, 0x21, 0x50,
0x61, 0x53, 0x12, 0x42, 0x82, 0xff, 0x93, 0x57, 0xa0, 0x81, 0xd3, 0x8c, 0x93, 0xc8, 0x0b, 0x86,
0x82, 0x4f, 0x81, 0x41, 0x47, 0x88, 0x90, 0x36, 0x94, 0xdd, 0x91, 0xe4, 0x51, 0xf6, 0x2f, 0x13,
0xa6, 0xb1, 0x3b, 0x1d, 0x31, 0xb9, 0x53, 0xbb, 0xd6, 0x74, 0x1a, 0x02, 0xdb, 0x63, 0xdb, 0x76,
0x0b, 0x96, 0x75, 0x12, 0xd9, 0x7a, 0x15, 0x5b, 0x5f, 0xd2, 0x28, 0x45, 0x27, 0x37, 0x61, 0x51,
0xd2, 0x47, 0x7c, 0xb0, 0xb8, 0x8f, 0x75, 0xa7, 0x25, 0x60, 0x39, 0x85, 0x75, 0x68, 0x9f, 0x78,
0x81, 0xeb, 0xf7, 0xfa, 0x7e, 0x72, 0xd6, 0x1b, 0x50, 0x3f, 0x71, 0x71, 0x47, 0xab, 0x4e, 0x0b,
0xf1, 0x6d, 0x3f, 0x39, 0xdb, 0x61, 0x28, 0x79, 0x1d, 0xea, 0x27, 0x94, 0xf6, 0x70, 0x25, 0x3a,
0x35, 0x43, 0x3a, 0xe4, 0xea, 0x3a, 0xb5, 0x13, 0xb9, 0xce, 0xeb, 0xd0, 0x0e, 0x27, 0xc9, 0x30,
0xf4, 0x82, 0x61, 0xaf, 0x7f, 0xea, 0x06, 0x3d, 0x6f, 0xd0, 0xa9, 0x5f, 0xb7, 0xd6, 0x2b, 0x4e,
0x4b, 0xe2, 0x4c, 0x3b, 0x3c, 0x18, 0xd8, 0x7f, 0x61, 0x41, 0x93, 0x2f, 0xaa, 0x30, 0x2c, 0x37,
0x60, 0x41, 0x8e, 0x9d, 0x46, 0x51, 0x18, 0x09, 0x41, 0x31, 0x41, 0xb2, 0x01, 0x6d, 0x09, 0x8c,
0x23, 0xea, 0x8d, 0xdc, 0x21, 0x15, 0x5a, 0x28, 0x87, 0x93, 0x3b, 0x69, 0x8b, 0x51, 0x38, 0x49,
0xb8, 0x6a, 0x6f, 0xdc, 0x69, 0x8a, 0xe1, 0x3b, 0x0c, 0x73, 0x4c, 0x12, 0x26, 0x28, 0x05, 0x9b,
0x62, 0x60, 0xf6, 0xf7, 0x2c, 0x20, 0x6c, 0xe8, 0x8f, 0x42, 0xde, 0x84, 0x58, 0xd3, 0xec, 0x7e,
0x5a, 0x2f, 0xbc, 0x9f, 0xa5, 0x59, 0xfb, 0xb9, 0x0e, 0x73, 0x38, 0x2c, 0x26, 0xf9, 0xe5, 0xec,
0xd0, 0xef, 0x96, 0x3a, 0x96, 0x23, 0xea, 0x89, 0x0d, 0x55, 0x3e, 0xc7, 0x4a, 0xc1, 0x1c, 0x79,
0x95, 0xfd, 0x1d, 0x0b, 0x9a, 0x6c, 0xf5, 0x03, 0xea, 0xa3, 0x56, 0x23, 0xb7, 0x81, 0x9c, 0x4c,
0x82, 0x01, 0xdb, 0xac, 0xe4, 0x99, 0x37, 0xe8, 0x1d, 0x4f, 0x59, 0x57, 0x38, 0xee, 0xbd, 0x4b,
0x4e, 0x41, 0x1d, 0x79, 0x1d, 0xda, 0x06, 0x1a, 0x27, 0x11, 0x1f, 0xfd, 0xde, 0x25, 0x27, 0x57,
0xc3, 0x16, 0x93, 0xe9, 0xcd, 0x49, 0xd2, 0xf3, 0x82, 0x01, 0x7d, 0x86, 0xeb, 0xbf, 0xe0, 0x18,
0xd8, 0xdd, 0x16, 0x34, 0xf5, 0xef, 0xec, 0xf7, 0xa1, 0x26, 0xb5, 0x2e, 0x6a, 0x9c, 0xcc, 0xb8,
0x1c, 0x0d, 0x21, 0x5d, 0xa8, 0x99, 0xa3, 0x70, 0x6a, 0x1f, 0xa5, 0x6f, 0xfb, 0x73, 0xd0, 0xde,
0x67, 0xaa, 0x2f, 0xf0, 0x82, 0xa1, 0x30, 0x3f, 0x4c, 0x1f, 0x0b, 0x5b, 0xc1, 0xf9, 0x4f, 0x94,
0x98, 0xd0, 0x9f, 0x86, 0x71, 0x22, 0xfa, 0xc1, 0xff, 0xed, 0x7f, 0xb3, 0x60, 0x91, 0x31, 0xc2,
0xbb, 0x6e, 0x30, 0x95, 0x5c, 0xb0, 0x0f, 0x4d, 0xd6, 0xd4, 0xa3, 0x70, 0x8b, 0x6b, 0x75, 0xae,
0xad, 0xd6, 0xc5, 0x7e, 0x64, 0xa8, 0x6f, 0xe9, 0xa4, 0xcc, 0xe9, 0x9a, 0x3a, 0xc6, 0xd7, 0x4c,
0xad, 0x24, 0x6e, 0x34, 0xa4, 0x09, 0xea, 0x7b, 0xa1, 0xff, 0x81, 0x43, 0xdb, 0x61, 0x70, 0x42,
0xae, 0x43, 0x33, 0x76, 0x93, 0xde, 0x98, 0x46, 0xb8, 0x26, 0xa8, 0x1a, 0xca, 0x0e, 0xc4, 0x6e,
0x72, 0x48, 0xa3, 0xbb, 0xd3, 0x84, 0x76, 0x7f, 0x0e, 0x96, 0x72, 0xbd, 0x30, 0x6d, 0x94, 0x4e,
0x91, 0xfd, 0x4b, 0x56, 0xa0, 0x7a, 0xe6, 0xfa, 0x13, 0x2a, 0xcc, 0x10, 0x2f, 0xbc, 0x5d, 0x7a,
0xcb, 0xb2, 0x5f, 0x83, 0x76, 0x3a, 0x6c, 0x21, 0xac, 0x04, 0x2a, 0x6c, 0xa5, 0x45, 0x03, 0xf8,
0xbf, 0xfd, 0x6d, 0x8b, 0x13, 0x6e, 0x87, 0x9e, 0x52, 0xe9, 0x8c, 0x90, 0x69, 0x7e, 0x49, 0xc8,
0xfe, 0x9f, 0x69, 0xf2, 0x7e, 0xfc, 0xc9, 0x92, 0x2b, 0x50, 0x8b, 0x69, 0x30, 0xe8, 0xb9, 0xbe,
0x8f, 0x9a, 0xaf, 0xe6, 0xcc, 0xb3, 0xf2, 0x96, 0xef, 0xdb, 0x37, 0x61, 0x49, 0x1b, 0xdd, 0x73,
0xe6, 0x71, 0x00, 0x64, 0xdf, 0x8b, 0x93, 0xc7, 0x41, 0x3c, 0xd6, 0x34, 0xe6, 0x4b, 0x50, 0x1f,
0x79, 0x01, 0x8e, 0x8c, 0xb3, 0x62, 0xd5, 0xa9, 0x8d, 0xbc, 0x80, 0x8d, 0x2b, 0xc6, 0x4a, 0xf7,
0x99, 0xa8, 0x2c, 0x89, 0x4a, 0xf7, 0x19, 0x56, 0xda, 0x6f, 0xc1, 0xb2, 0xd1, 0x9e, 0xe8, 0xfa,
0x55, 0xa8, 0x4e, 0x92, 0x67, 0xa1, 0xb4, 0x67, 0x0d, 0xc1, 0x21, 0xcc, 0x43, 0x72, 0x78, 0x8d,
0xfd, 0x0e, 0x2c, 0x1d, 0xd0, 0x73, 0xc1, 0x99, 0x72, 0x20, 0xaf, 0x5d, 0xe8, 0x3d, 0x61, 0xbd,
0x7d, 0x0b, 0x88, 0xfe, 0xb1, 0xe8, 0x55, 0xf3, 0xa5, 0x2c, 0xc3, 0x97, 0xb2, 0x5f, 0x03, 0x72,
0xe4, 0x0d, 0x83, 0x77, 0x69, 0x1c, 0xbb, 0x43, 0xa5, 0xd4, 0xda, 0x50, 0x1e, 0xc5, 0x43, 0x21,
0x7b, 0xec, 0x5f, 0xfb, 0x93, 0xb0, 0x6c, 0xd0, 0x89, 0x86, 0xaf, 0x42, 0x3d, 0xf6, 0x86, 0x81,
0x9b, 0x4c, 0x22, 0x2a, 0x9a, 0x4e, 0x01, 0xfb, 0x1e, 0xac, 0x7c, 0x89, 0x46, 0xde, 0xc9, 0xf4,
0xa2, 0xe6, 0xcd, 0x76, 0x4a, 0xd9, 0x76, 0x76, 0x61, 0x35, 0xd3, 0x8e, 0xe8, 0x9e, 0xb3, 0xaf,
0xd8, 0xc9, 0x9a, 0xc3, 0x0b, 0x9a, 0x30, 0x97, 0x74, 0x61, 0xb6, 0x1f, 0x03, 0xd9, 0x0e, 0x83,
0x80, 0xf6, 0x93, 0x43, 0x4a, 0xa3, 0xf4, 0xf4, 0x94, 0xf2, 0x6a, 0xe3, 0xce, 0x65, 0xb1, 0xb2,
0x59, 0x0d, 0x21, 0x98, 0x98, 0x40, 0x65, 0x4c, 0xa3, 0x11, 0x36, 0x5c, 0x73, 0xf0, 0x7f, 0x7b,
0x15, 0x96, 0x8d, 0x66, 0x85, 0xe3, 0xfb, 0x06, 0xac, 0xee, 0x78, 0x71, 0x3f, 0xdf, 0x61, 0x07,
0xe6, 0xc7, 0x93, 0xe3, 0x5e, 0x2a, 0x89, 0xb2, 0xc8, 0x7c, 0xa4, 0xec, 0x27, 0xa2, 0xb1, 0x5f,
0xb7, 0xa0, 0xb2, 0xf7, 0x68, 0x7f, 0x9b, 0x29, 0x3f, 0x2f, 0xe8, 0x87, 0x23, 0x66, 0x40, 0xf8,
0xa4, 0x55, 0x79, 0xa6, 0x84, 0x5d, 0x85, 0x3a, 0xda, 0x1d, 0xe6, 0xf6, 0x89, 0x83, 0x4e, 0x0a,
0x30, 0x97, 0x93, 0x3e, 0x1b, 0x7b, 0x11, 0xfa, 0x94, 0xd2, 0x53, 0xac, 0xa0, 0xde, 0xcc, 0x57,
0xd8, 0xdf, 0xae, 0xc2, 0xbc, 0xb0, 0x26, 0xd8, 0x5f, 0x3f, 0xf1, 0xce, 0xa8, 0x18, 0x89, 0x28,
0x31, 0x9b, 0x1e, 0xd1, 0x51, 0x98, 0xd0, 0x9e, 0xb1, 0x0d, 0x26, 0x88, 0x2e, 0x35, 0x6f, 0xa8,
0xc7, 0x9d, 0xf0, 0x32, 0xa7, 0x32, 0x40, 0xb6, 0x58, 0xd2, 0xa3, 0xa8, 0xa0, 0x47, 0x21, 0x8b,
0x6c, 0x25, 0xfa, 0xee, 0xd8, 0xed, 0x7b, 0xc9, 0x54, 0xa8, 0x04, 0x55, 0x66, 0x6d, 0xfb, 0x61,
0xdf, 0xf5, 0x7b, 0xc7, 0xae, 0xef, 0x06, 0x7d, 0x2a, 0xdd, 0x75, 0x03, 0x64, 0xae, 0xab, 0x18,
0x92, 0x24, 0xe3, 0xee, 0x6d, 0x06, 0x65, 0x06, 0xa9, 0x1f, 0x8e, 0x46, 0x5e, 0xc2, 0x3c, 0x5e,
0xf4, 0x86, 0xca, 0x8e, 0x86, 0xf0, 0xc3, 0x01, 0x96, 0xce, 0xf9, 0xea, 0xd5, 0xe5, 0xe1, 0x40,
0x03, 0x59, 0x2b, 0xcc, 0xa5, 0x62, 0x6a, 0xec, 0xe9, 0x79, 0x07, 0x78, 0x2b, 0x29, 0xc2, 0xf6,
0x61, 0x12, 0xc4, 0x34, 0x49, 0x7c, 0x3a, 0x50, 0x03, 0x6a, 0x20, 0x59, 0xbe, 0x82, 0xdc, 0x86,
0x65, 0xee, 0x84, 0xc7, 0x6e, 0x12, 0xc6, 0xa7, 0x5e, 0xdc, 0x8b, 0x99, 0x3b, 0xdb, 0x44, 0xfa,
0xa2, 0x2a, 0xf2, 0x16, 0x5c, 0xce, 0xc0, 0x11, 0xed, 0x53, 0xef, 0x8c, 0x0e, 0x3a, 0x0b, 0xf8,
0xd5, 0xac, 0x6a, 0x72, 0x1d, 0x1a, 0xec, 0xec, 0x31, 0x19, 0x0f, 0x5c, 0x66, 0x91, 0x5b, 0xb8,
0x0f, 0x3a, 0x44, 0xde, 0x80, 0x85, 0x31, 0xe5, 0xe6, 0xfc, 0x34, 0xf1, 0xfb, 0x71, 0x67, 0xd1,
0xd0, 0x6e, 0x8c, 0x73, 0x1d, 0x93, 0x82, 0x31, 0x65, 0x3f, 0x46, 0x27, 0xd4, 0x9d, 0x76, 0xda,
0xc8, 0x6e, 0x29, 0x80, 0x32, 0x12, 0x79, 0x67, 0x6e, 0x42, 0x3b, 0x4b, 0x5c, 0xa1, 0x8b, 0x22,
0xfb, 0xce, 0x0b, 0xbc, 0xc4, 0x73, 0x93, 0x30, 0xea, 0x10, 0xac, 0x4b, 0x01, 0xfb, 0x8f, 0x2c,
0xae, 0x76, 0x05, 0x8b, 0x2a, 0xf5, 0xf9, 0x0a, 0x34, 0x38, 0x73, 0xf6, 0xc2, 0xc0, 0x9f, 0x0a,
0x7e, 0x05, 0x0e, 0x3d, 0x0c, 0xfc, 0x29, 0xf9, 0x18, 0x2c, 0x78, 0x81, 0x4e, 0xc2, 0x25, 0xbc,
0x29, 0x41, 0x24, 0x7a, 0x05, 0x1a, 0xe3, 0xc9, 0xb1, 0xef, 0xf5, 0x39, 0x49, 0x99, 0xb7, 0xc2,
0x21, 0x24, 0x60, 0xce, 0x20, 0x1f, 0x27, 0xa7, 0xa8, 0x20, 0x45, 0x43, 0x60, 0x8c, 0xc4, 0xbe,
0x0b, 0x2b, 0xe6, 0x00, 0x85, 0x2a, 0xdb, 0x80, 0x9a, 0xe0, 0xfc, 0xb8, 0xd3, 0xc0, 0xd5, 0x6b,
0x89, 0xd5, 0x13, 0xa4, 0x8e, 0xaa, 0xb7, 0xbf, 0x5f, 0x81, 0x65, 0x81, 0x6e, 0xfb, 0x61, 0x4c,
0x8f, 0x26, 0xa3, 0x91, 0x1b, 0x15, 0x88, 0x94, 0x75, 0x81, 0x48, 0x95, 0x4c, 0x91, 0x62, 0x8c,
0x7e, 0xea, 0x7a, 0x01, 0xf7, 0x64, 0xb9, 0x3c, 0x6a, 0x08, 0x59, 0x87, 0xc5, 0xbe, 0x1f, 0xc6,
0xdc, 0x6b, 0xd3, 0x0f, 0x9d, 0x59, 0x38, 0xaf, 0x02, 0xaa, 0x45, 0x2a, 0x40, 0x17, 0xe1, 0xb9,
0x8c, 0x08, 0xdb, 0xd0, 0x64, 0x8d, 0x52, 0xa9, 0x91, 0xe6, 0xb9, 0x27, 0xa7, 0x63, 0x6c, 0x3c,
0x59, 0x81, 0xe1, 0xd2, 0xb9, 0x58, 0x24, 0x2e, 0xec, 0x4c, 0xcb, 0x34, 0x9e, 0x46, 0x5d, 0x17,
0xe2, 0x92, 0xaf, 0x22, 0xf7, 0x00, 0x78, 0x5f, 0x68, 0x76, 0x01, 0xcd, 0xee, 0x6b, 0xe6, 0x8e,
0xe8, 0x6b, 0x7f, 0x8b, 0x15, 0x26, 0x11, 0x45, 0x53, 0xac, 0x7d, 0x69, 0xff, 0x86, 0x05, 0x0d,
0xad, 0x8e, 0xac, 0xc2, 0xd2, 0xf6, 0xc3, 0x87, 0x87, 0xbb, 0xce, 0xd6, 0xa3, 0x07, 0x5f, 0xda,
0xed, 0x6d, 0xef, 0x3f, 0x3c, 0xda, 0x6d, 0x5f, 0x62, 0xf0, 0xfe, 0xc3, 0xed, 0xad, 0xfd, 0xde,
0xbd, 0x87, 0xce, 0xb6, 0x84, 0x2d, 0xb2, 0x06, 0xc4, 0xd9, 0x7d, 0xf7, 0xe1, 0xa3, 0x5d, 0x03,
0x2f, 0x91, 0x36, 0x34, 0xef, 0x3a, 0xbb, 0x5b, 0xdb, 0x7b, 0x02, 0x29, 0x93, 0x15, 0x68, 0xdf,
0x7b, 0x7c, 0xb0, 0xf3, 0xe0, 0xe0, 0x7e, 0x6f, 0x7b, 0xeb, 0x60, 0x7b, 0x77, 0x7f, 0x77, 0xa7,
0x5d, 0x21, 0x0b, 0x50, 0xdf, 0xba, 0xbb, 0x75, 0xb0, 0xf3, 0xf0, 0x60, 0x77, 0xa7, 0x5d, 0xb5,
0xff, 0xd5, 0x82, 0x55, 0x1c, 0xf5, 0x20, 0x2b, 0x20, 0xd7, 0xa1, 0xd1, 0x0f, 0xc3, 0x31, 0x65,
0xda, 0x5e, 0x29, 0x74, 0x1d, 0x62, 0xcc, 0xcf, 0xd5, 0xe7, 0x49, 0x18, 0xf5, 0xa9, 0x90, 0x0f,
0x40, 0xe8, 0x1e, 0x43, 0x18, 0xf3, 0x8b, 0xed, 0xe5, 0x14, 0x5c, 0x3c, 0x1a, 0x1c, 0xe3, 0x24,
0x6b, 0x30, 0x77, 0x1c, 0x51, 0xb7, 0x7f, 0x2a, 0x24, 0x43, 0x94, 0xc8, 0xc7, 0xd3, 0x03, 0x46,
0x9f, 0xad, 0xbe, 0x4f, 0x07, 0xc8, 0x31, 0x35, 0x67, 0x51, 0xe0, 0xdb, 0x02, 0x66, 0xf2, 0xef,
0x1e, 0xbb, 0xc1, 0x20, 0x0c, 0xe8, 0x40, 0x38, 0x7b, 0x29, 0x60, 0x1f, 0xc2, 0x5a, 0x76, 0x7e,
0x42, 0xbe, 0xde, 0xd4, 0xe4, 0x8b, 0xfb, 0x5e, 0xdd, 0xd9, 0xbb, 0xa9, 0xc9, 0xda, 0x7f, 0x58,
0x50, 0x61, 0xa6, 0x78, 0xb6, 0xd9, 0xd6, 0xbd, 0xab, 0x72, 0x2e, 0x52, 0x85, 0x67, 0x16, 0xae,
0x9c, 0xb9, 0x01, 0xd3, 0x90, 0xb4, 0x3e, 0xa2, 0xfd, 0x33, 0x9c, 0xb1, 0xaa, 0x67, 0x08, 0x13,
0x10, 0xe6, 0xfa, 0xe2, 0xd7, 0x42, 0x40, 0x64, 0x59, 0xd6, 0xe1, 0x97, 0xf3, 0x69, 0x1d, 0x7e,
0xd7, 0x81, 0x79, 0x2f, 0x38, 0x0e, 0x27, 0xc1, 0x00, 0x05, 0xa2, 0xe6, 0xc8, 0x22, 0x5b, 0xbe,
0x31, 0x0a, 0xaa, 0x37, 0x92, 0xec, 0x9f, 0x02, 0x36, 0x61, 0x47, 0xa3, 0x18, 0x5d, 0x0f, 0x15,
0x9e, 0x79, 0x13, 0x96, 0x34, 0x2c, 0x75, 0x63, 0xc7, 0x0c, 0xc8, 0xb8, 0xb1, 0xe8, 0xb3, 0xf0,
0x1a, 0xbb, 0x0d, 0xad, 0xfb, 0x34, 0x79, 0x10, 0x9c, 0x84, 0xb2, 0xa5, 0x3f, 0xad, 0xc0, 0xa2,
0x82, 0x44, 0x43, 0xeb, 0xb0, 0xe8, 0x0d, 0x68, 0x90, 0x78, 0xc9, 0xb4, 0x67, 0x9c, 0xc0, 0xb2,
0x30, 0xf3, 0xf5, 0x5c, 0xdf, 0x73, 0x65, 0x34, 0x90, 0x17, 0xc8, 0x1d, 0x58, 0x61, 0x86, 0x48,
0xda, 0x16, 0xb5, 0xc5, 0xfc, 0xe0, 0x57, 0x58, 0xc7, 0x94, 0x01, 0xc3, 0x85, 0xb6, 0x57, 0x9f,
0x70, 0x9f, 0xa7, 0xa8, 0x8a, 0xad, 0x1a, 0x6f, 0x89, 0x4d, 0xb9, 0xca, 0x8d, 0x95, 0x02, 0x72,
0x61, 0xb6, 0x39, 0xae, 0xaa, 0xb2, 0x61, 0x36, 0x2d, 0x54, 0x57, 0xcb, 0x85, 0xea, 0x98, 0x2a,
0x9b, 0x06, 0x7d, 0x3a, 0xe8, 0x25, 0x61, 0x0f, 0x55, 0x2e, 0xee, 0x4e, 0xcd, 0xc9, 0xc2, 0xe4,
0x2a, 0xcc, 0x27, 0x34, 0x4e, 0x02, 0x9a, 0xa0, 0x56, 0xaa, 0x61, 0x40, 0x40, 0x42, 0xcc, 0x41,
0x9d, 0x44, 0x5e, 0xdc, 0x69, 0x62, 0x10, 0x0e, 0xff, 0x27, 0x9f, 0x82, 0xd5, 0x63, 0x1a, 0x27,
0xbd, 0x53, 0xea, 0x0e, 0x68, 0x84, 0x3b, 0xcd, 0xa3, 0x7d, 0xdc, 0xee, 0x17, 0x57, 0x32, 0x1e,
0x3a, 0xa3, 0x51, 0xec, 0x85, 0x01, 0x5a, 0xfc, 0xba, 0x23, 0x8b, 0xac, 0x3d, 0x36, 0x79, 0x65,
0x2f, 0xd5, 0x0a, 0x2e, 0xe2, 0xc4, 0x8b, 0x2b, 0xc9, 0x0d, 0x98, 0xc3, 0x09, 0xc4, 0x9d, 0xb6,
0x11, 0xd5, 0xd8, 0x66, 0xa0, 0x23, 0xea, 0x3e, 0x5f, 0xa9, 0x35, 0xda, 0x4d, 0xfb, 0x67, 0xa0,
0x8a, 0x30, 0xdb, 0x74, 0xbe, 0x18, 0x9c, 0x29, 0x78, 0x81, 0x0d, 0x2d, 0xa0, 0xc9, 0x79, 0x18,
0x3d, 0x95, 0xa1, 0x61, 0x51, 0xb4, 0xbf, 0x81, 0x2e, 0xbe, 0x0a, 0x91, 0x3e, 0x46, 0xff, 0x84,
0x1d, 0xd4, 0xf8, 0x52, 0xc7, 0xa7, 0xae, 0x38, 0x75, 0xd4, 0x10, 0x38, 0x3a, 0x75, 0x99, 0xda,
0x32, 0x76, 0x8f, 0x1f, 0xe4, 0x1a, 0x88, 0xed, 0xf1, 0xcd, 0xbb, 0x01, 0x2d, 0x19, 0x7c, 0x8d,
0x7b, 0x3e, 0x3d, 0x49, 0x64, 0x5c, 0x21, 0x98, 0x8c, 0xf0, 0xb4, 0xb7, 0x4f, 0x4f, 0x12, 0xfb,
0x00, 0x96, 0x84, 0x2a, 0x79, 0x38, 0xa6, 0xb2, 0xeb, 0xcf, 0x14, 0x99, 0xe4, 0xc6, 0x9d, 0x65,
0x53, 0xf7, 0xf0, 0x70, 0xb3, 0x49, 0x69, 0x3b, 0x40, 0x74, 0xd5, 0x24, 0x1a, 0x14, 0x76, 0x51,
0x46, 0x4e, 0xc4, 0x74, 0x0c, 0x8c, 0xad, 0x4f, 0x3c, 0xe9, 0xf7, 0x65, 0xe8, 0x9c, 0x1d, 0x87,
0x79, 0xd1, 0xfe, 0x33, 0x0b, 0x96, 0xb1, 0x35, 0xe9, 0x54, 0x08, 0xf5, 0xff, 0xd6, 0x47, 0x18,
0x66, 0xb3, 0xaf, 0x47, 0x93, 0x56, 0xa0, 0xaa, 0x1b, 0x04, 0x5e, 0xf8, 0xe8, 0x87, 0xfa, 0x4a,
0xf6, 0x50, 0x6f, 0xff, 0xbe, 0x05, 0x4b, 0x5c, 0x27, 0x27, 0x6e, 0x32, 0x89, 0xc5, 0xf4, 0x7f,
0x16, 0x16, 0xb8, 0x71, 0x15, 0x52, 0x2d, 0x06, 0xba, 0xa2, 0x14, 0x10, 0xa2, 0x9c, 0x78, 0xef,
0x92, 0x63, 0x12, 0x93, 0x77, 0xd0, 0xc1, 0x09, 0x7a, 0x88, 0x8a, 0xc0, 0xe0, 0x95, 0x02, 0x33,
0xa0, 0xbe, 0xd7, 0xc8, 0xef, 0xd6, 0x60, 0x8e, 0xfb, 0xbb, 0xf6, 0x7d, 0x58, 0x30, 0x3a, 0x32,
0x02, 0x0a, 0x4d, 0x1e, 0x50, 0xc8, 0x85, 0xa2, 0x4a, 0x05, 0xa1, 0xa8, 0x3f, 0x2f, 0x03, 0x61,
0xcc, 0x92, 0xd9, 0x0d, 0xe6, 0x70, 0x87, 0x03, 0xe3, 0xf8, 0xd4, 0x74, 0x74, 0x88, 0xdc, 0x02,
0xa2, 0x15, 0x65, 0x44, 0x91, 0x5b, 0x9f, 0x82, 0x1a, 0xa6, 0x26, 0x85, 0xf1, 0x16, 0x66, 0x56,
0x1c, 0x14, 0xf9, 0xb2, 0x17, 0xd6, 0x31, 0x03, 0x33, 0x9e, 0xc4, 0xa7, 0x78, 0xc9, 0x22, 0x0e,
0x58, 0xb2, 0x9c, 0xdd, 0xdf, 0xb9, 0x0b, 0xf7, 0x77, 0x3e, 0x17, 0xb4, 0xd1, 0x5c, 0xfc, 0x9a,
0xe9, 0xe2, 0xdf, 0x80, 0x85, 0x11, 0x73, 0x39, 0x13, 0xbf, 0xdf, 0x1b, 0xb1, 0xde, 0xc5, 0x79,
0xca, 0x00, 0xc9, 0x06, 0xb4, 0x85, 0xbb, 0x91, 0x9e, 0x23, 0x00, 0xd7, 0x38, 0x87, 0x33, 0xfd,
0x9d, 0x86, 0x71, 0x1a, 0x38, 0xd8, 0x14, 0x60, 0x27, 0xaf, 0x98, 0x71, 0x48, 0x6f, 0x12, 0x88,
0xfb, 0x15, 0x3a, 0xc0, 0x93, 0x54, 0xcd, 0xc9, 0x57, 0xd8, 0xbf, 0x6b, 0x41, 0x9b, 0xed, 0x99,
0xc1, 0x96, 0x6f, 0x03, 0x4a, 0xc5, 0x0b, 0x72, 0xa5, 0x41, 0x4b, 0xde, 0x82, 0x3a, 0x96, 0xc3,
0x31, 0x0d, 0x04, 0x4f, 0x76, 0x4c, 0x9e, 0x4c, 0xf5, 0xc9, 0xde, 0x25, 0x27, 0x25, 0xd6, 0x38,
0xf2, 0x1f, 0x2d, 0x68, 0x88, 0x5e, 0x7e, 0xe4, 0x30, 0x41, 0x57, 0xbb, 0x10, 0xe3, 0x9c, 0x94,
0xde, 0x7f, 0xad, 0xc3, 0xe2, 0xc8, 0x4d, 0x26, 0x11, 0xb3, 0xc7, 0x46, 0x88, 0x20, 0x0b, 0x33,
0xe3, 0x8a, 0xaa, 0x33, 0xee, 0x25, 0x9e, 0xdf, 0x93, 0xb5, 0xe2, 0xea, 0xa9, 0xa8, 0x8a, 0x69,
0x90, 0x38, 0x71, 0x87, 0x54, 0xd8, 0x4d, 0x5e, 0xb0, 0x3b, 0xb0, 0x26, 0x26, 0x94, 0x71, 0x55,
0xed, 0xbf, 0x6e, 0xc2, 0xe5, 0x5c, 0x95, 0xba, 0xa7, 0x16, 0x67, 0x5f, 0xdf, 0x1b, 0x1d, 0x87,
0xca, 0xcf, 0xb7, 0xf4, 0x63, 0xb1, 0x51, 0x45, 0x86, 0xb0, 0x2a, 0x1d, 0x04, 0xb6, 0xa6, 0xa9,
0x31, 0x2b, 0xa1, 0x95, 0x7a, 0xc3, 0xdc, 0xc2, 0x6c, 0x87, 0x12, 0xd7, 0x85, 0xb8, 0xb8, 0x3d,
0x72, 0x0a, 0x1d, 0xe5, 0x89, 0x08, 0x65, 0xad, 0x79, 0x2b, 0xac, 0xaf, 0xd7, 0x2f, 0xe8, 0xcb,
0xf0, 0x6c, 0x9d, 0x99, 0xad, 0x91, 0x29, 0x5c, 0x93, 0x75, 0xa8, 0x8d, 0xf3, 0xfd, 0x55, 0x5e,
0x68, 0x6e, 0xe8, 0xb3, 0x9b, 0x9d, 0x5e, 0xd0, 0x30, 0x79, 0x1f, 0xd6, 0xce, 0x5d, 0x2f, 0x91,
0xc3, 0xd2, 0x7c, 0x83, 0x2a, 0x76, 0x79, 0xe7, 0x82, 0x2e, 0x9f, 0xf0, 0x8f, 0x0d, 0x13, 0x35,
0xa3, 0xc5, 0xee, 0xdf, 0x5b, 0xd0, 0x32, 0xdb, 0x61, 0x6c, 0x2a, 0x64, 0x5f, 0xea, 0x40, 0xe9,
0x4d, 0x66, 0xe0, 0xfc, 0x51, 0xb9, 0x54, 0x74, 0x54, 0xd6, 0x0f, 0xa8, 0xe5, 0x8b, 0x62, 0x4c,
0x95, 0x17, 0x8b, 0x31, 0x55, 0x8b, 0x62, 0x4c, 0xdd, 0xff, 0xb6, 0x80, 0xe4, 0x79, 0x89, 0xdc,
0xe7, 0x67, 0xf5, 0x80, 0xfa, 0x42, 0xa5, 0xfc, 0xf4, 0x8b, 0xf1, 0xa3, 0x5c, 0x3b, 0xf9, 0x35,
0x13, 0x0c, 0xfd, 0xee, 0x58, 0x77, 0x76, 0x16, 0x9c, 0xa2, 0xaa, 0x4c, 0xd4, 0xab, 0x72, 0x71,
0xd4, 0xab, 0x7a, 0x71, 0xd4, 0x6b, 0x2e, 0x1b, 0xf5, 0xea, 0xfe, 0x9a, 0x05, 0xcb, 0x05, 0x9b,
0xfe, 0x93, 0x9b, 0x38, 0xdb, 0x26, 0x43, 0x17, 0x94, 0xc4, 0x36, 0xe9, 0x60, 0xf7, 0x97, 0x60,
0xc1, 0x60, 0xf4, 0x9f, 0x5c, 0xff, 0x59, 0x7f, 0x8d, 0xf3, 0x99, 0x81, 0x75, 0xff, 0xb3, 0x04,
0x24, 0x2f, 0x6c, 0xff, 0xaf, 0x63, 0xc8, 0xaf, 0x53, 0xb9, 0x60, 0x9d, 0xfe, 0x4f, 0xed, 0xc0,
0xeb, 0xb0, 0x24, 0x92, 0x5a, 0xb4, 0x08, 0x0d, 0xe7, 0x98, 0x7c, 0x05, 0xf3, 0x58, 0xcd, 0x90,
0x63, 0xcd, 0x48, 0x10, 0xd0, 0x8c, 0x61, 0x26, 0xf2, 0x68, 0x77, 0xa1, 0x23, 0x56, 0x68, 0xf7,
0x8c, 0x06, 0xc9, 0xd1, 0xe4, 0x98, 0x27, 0x86, 0x78, 0x61, 0x60, 0x7f, 0xaf, 0xac, 0x9c, 0x6e,
0xac, 0x14, 0xe6, 0xfd, 0x53, 0xd0, 0xd4, 0x95, 0xb9, 0xd8, 0x8e, 0x4c, 0x80, 0x8e, 0x19, 0x76,
0x9d, 0x8a, 0xec, 0x40, 0x0b, 0x55, 0xd6, 0x40, 0x7d, 0x57, 0xc2, 0xef, 0x9e, 0x13, 0x78, 0xd8,
0xbb, 0xe4, 0x64, 0xbe, 0x21, 0x9f, 0x85, 0x96, 0x79, 0x94, 0x12, 0x3e, 0x42, 0x91, 0x6f, 0xce,
0x3e, 0x37, 0x89, 0xc9, 0x16, 0xb4, 0xb3, 0x67, 0x31, 0x71, 0x5b, 0x3c, 0xa3, 0x81, 0x1c, 0x39,
0x79, 0x4b, 0xdc, 0x3d, 0x55, 0x31, 0x08, 0x76, 0xc3, 0xfc, 0x4c, 0x5b, 0xa6, 0x5b, 0xfc, 0x8f,
0x76, 0x1b, 0xf5, 0x55, 0x80, 0x14, 0x23, 0x6d, 0x68, 0x3e, 0x3c, 0xdc, 0x3d, 0xe8, 0x6d, 0xef,
0x6d, 0x1d, 0x1c, 0xec, 0xee, 0xb7, 0x2f, 0x11, 0x02, 0x2d, 0x8c, 0x5f, 0xed, 0x28, 0xcc, 0x62,
0xd8, 0xd6, 0x36, 0x8f, 0x8d, 0x09, 0xac, 0x44, 0x56, 0xa0, 0xfd, 0xe0, 0x20, 0x83, 0x96, 0xef,
0xd6, 0x95, 0x7c, 0xd8, 0x6b, 0xb0, 0xc2, 0x13, 0x9f, 0xee, 0x72, 0xf6, 0x90, 0xbe, 0xc2, 0x1f,
0x5a, 0xb0, 0x9a, 0xa9, 0x48, 0x13, 0x0f, 0xb8, 0x3b, 0x60, 0xfa, 0x08, 0x26, 0xc8, 0x78, 0x52,
0x79, 0x7e, 0x19, 0x0d, 0x92, 0xaf, 0x60, 0x3c, 0xaf, 0x79, 0x8a, 0x19, 0x49, 0x2a, 0xaa, 0xb2,
0x2f, 0xf3, 0xf4, 0xac, 0x80, 0xfa, 0x99, 0x81, 0x9f, 0xf0, 0x84, 0x2a, 0xbd, 0x22, 0xbd, 0xcb,
0x33, 0x87, 0x2c, 0x8b, 0xcc, 0xc9, 0x37, 0x5c, 0x0f, 0x73, 0xbc, 0x85, 0x75, 0xf6, 0xf7, 0x2d,
0x20, 0x5f, 0x9c, 0xd0, 0x68, 0x8a, 0x39, 0x03, 0x2a, 0x1c, 0x78, 0x39, 0x1b, 0xec, 0x9a, 0x1b,
0x4f, 0x8e, 0xbf, 0x40, 0xa7, 0x32, 0xa1, 0xa5, 0x94, 0x26, 0xb4, 0xbc, 0x0c, 0xc0, 0x0e, 0xc7,
0x2a, 0x63, 0x01, 0x9d, 0xeb, 0x60, 0x32, 0xe2, 0x0d, 0x16, 0xe6, 0x9c, 0x54, 0x2e, 0xce, 0x39,
0xa9, 0x5e, 0x90, 0x73, 0x62, 0xbf, 0x03, 0xcb, 0xc6, 0xb8, 0xd5, 0xb6, 0xca, 0xdc, 0x09, 0x2b,
0x9f, 0x3b, 0x21, 0xf3, 0x26, 0xec, 0x6f, 0x96, 0xa0, 0xbc, 0x17, 0x8e, 0xf5, 0x50, 0xb8, 0x65,
0x86, 0xc2, 0x85, 0x7f, 0xd0, 0x53, 0xe6, 0x5f, 0x98, 0x0d, 0x03, 0x24, 0x1b, 0xd0, 0x72, 0x47,
0x49, 0x2f, 0x09, 0x99, 0x3f, 0x74, 0xee, 0x46, 0x03, 0xbe, 0xd7, 0x18, 0x92, 0xc9, 0xd4, 0x90,
0x15, 0x28, 0x2b, 0x43, 0x8a, 0x04, 0xac, 0xc8, 0x9c, 0x71, 0xbc, 0x64, 0x9b, 0x8a, 0xb0, 0x92,
0x28, 0x31, 0x56, 0x32, 0xbf, 0xe7, 0x27, 0x21, 0xae, 0x0e, 0x8b, 0xaa, 0x98, 0xaf, 0xc2, 0x96,
0x0f, 0xc9, 0x44, 0x3c, 0x50, 0x96, 0xf5, 0xd8, 0x65, 0xcd, 0xbc, 0x72, 0xfc, 0xa1, 0x05, 0x55,
0x5c, 0x1b, 0xa6, 0xda, 0x39, 0xef, 0xab, 0x68, 0x38, 0xae, 0xc9, 0x82, 0x93, 0x85, 0x89, 0x6d,
0xa4, 0x84, 0x95, 0xd4, 0x84, 0xf4, 0xb4, 0xb0, 0xeb, 0x50, 0xe7, 0x25, 0x95, 0xfe, 0x84, 0x24,
0x29, 0x48, 0xae, 0x41, 0xe5, 0x34, 0x1c, 0x4b, 0x5f, 0x14, 0xe4, 0x55, 0x51, 0x38, 0x76, 0x10,
0x4f, 0xc7, 0xc3, 0xda, 0xe3, 0xd3, 0xe2, 0x1e, 0x46, 0x16, 0x66, 0x3e, 0x96, 0x6a, 0x56, 0x5f,
0xa6, 0x0c, 0x6a, 0x6f, 0xc0, 0xe2, 0x41, 0x38, 0xa0, 0x5a, 0x48, 0x72, 0x26, 0x9f, 0xdb, 0xbf,
0x6c, 0x41, 0x4d, 0x12, 0x93, 0x75, 0xa8, 0x30, 0xc7, 0x31, 0x73, 0xaa, 0x53, 0x57, 0xc4, 0x8c,
0xce, 0x41, 0x0a, 0x66, 0x69, 0x31, 0x52, 0x94, 0x1e, 0x22, 0x64, 0x9c, 0x28, 0xf5, 0x91, 0xd5,
0x70, 0x33, 0xae, 0x65, 0x06, 0xb5, 0xbf, 0x6b, 0xc1, 0x82, 0xd1, 0x07, 0xb9, 0x0e, 0x0d, 0xdf,
0x8d, 0x13, 0x71, 0xed, 0x26, 0xb6, 0x47, 0x87, 0xf4, 0x8d, 0x2e, 0x99, 0x41, 0x6a, 0x15, 0x3e,
0x2d, 0xeb, 0xe1, 0xd3, 0xdb, 0x50, 0x4f, 0x13, 0xf7, 0x2a, 0x86, 0x05, 0x65, 0x3d, 0xca, 0xcb,
0xef, 0x94, 0x08, 0x23, 0x72, 0xa1, 0x1f, 0x46, 0xe2, 0x46, 0x87, 0x17, 0xec, 0x77, 0xa0, 0xa1,
0xd1, 0xeb, 0x01, 0x3a, 0xcb, 0x08, 0xd0, 0xa9, 0xcc, 0x90, 0x52, 0x9a, 0x19, 0x62, 0xff, 0x9d,
0x05, 0x0b, 0x8c, 0x07, 0xbd, 0x60, 0x78, 0x18, 0xfa, 0x5e, 0x7f, 0x8a, 0x7b, 0x2f, 0xd9, 0x4d,
0xe8, 0x0c, 0xc9, 0x8b, 0x26, 0xcc, 0xb8, 0x5e, 0x86, 0x05, 0x84, 0x88, 0xaa, 0x32, 0x93, 0x61,
0x26, 0x01, 0xc7, 0x6e, 0x2c, 0xc4, 0x42, 0xb8, 0x34, 0x06, 0xc8, 0x24, 0x8d, 0x01, 0x91, 0x9b,
0xd0, 0xde, 0xc8, 0xf3, 0x7d, 0x8f, 0xd3, 0x72, 0x87, 0xb7, 0xa8, 0x8a, 0xf5, 0x39, 0xf0, 0x62,
0xf7, 0x38, 0xbd, 0xa5, 0x50, 0x65, 0xfb, 0x2f, 0x4b, 0xd0, 0x90, 0x96, 0x71, 0x30, 0xa4, 0xe2,
0x4a, 0x0d, 0x8f, 0x14, 0x4a, 0xc9, 0x68, 0x88, 0xac, 0x37, 0x0e, 0x21, 0x1a, 0x92, 0xdd, 0xf2,
0x72, 0x7e, 0xcb, 0xaf, 0x42, 0x9d, 0xb1, 0xde, 0x1b, 0x78, 0xda, 0xe1, 0xd7, 0x71, 0x29, 0x20,
0x6b, 0xef, 0x60, 0x6d, 0x35, 0xad, 0x45, 0xe0, 0xb9, 0x17, 0x70, 0x6f, 0x41, 0x53, 0x34, 0x83,
0x7b, 0x82, 0x3a, 0x25, 0x65, 0x7e, 0x63, 0xbf, 0x1c, 0x83, 0x52, 0x7e, 0x79, 0x47, 0x7e, 0x59,
0xbb, 0xe8, 0x4b, 0x49, 0x69, 0xdf, 0x57, 0xf7, 0x9a, 0xf7, 0x23, 0x77, 0x7c, 0x2a, 0xa5, 0xf4,
0x36, 0x2c, 0x7b, 0x41, 0xdf, 0x9f, 0x0c, 0x68, 0x6f, 0x12, 0xb8, 0x41, 0x10, 0x4e, 0x82, 0x3e,
0x95, 0x49, 0x1f, 0x45, 0x55, 0xf6, 0x40, 0xe5, 0xbc, 0x61, 0x43, 0x64, 0x03, 0xaa, 0xac, 0x23,
0x69, 0x15, 0x8a, 0x45, 0x98, 0x93, 0x90, 0x75, 0xa8, 0xd2, 0xc1, 0x90, 0xca, 0x08, 0x00, 0xc9,
0xf8, 0x3b, 0x83, 0x21, 0x75, 0x38, 0x01, 0x53, 0x28, 0x98, 0xd7, 0x68, 0x2a, 0x14, 0xd3, 0xa2,
0xcc, 0xf5, 0x79, 0xe6, 0xe3, 0x0a, 0x90, 0x03, 0x2e, 0x03, 0xfa, 0x95, 0xc8, 0xaf, 0x96, 0xa1,
0xa1, 0xc1, 0x4c, 0x37, 0x0c, 0xd9, 0x80, 0x7b, 0x03, 0xcf, 0x1d, 0xd1, 0x84, 0x46, 0x82, 0xef,
0x33, 0x28, 0xa3, 0x73, 0xcf, 0x86, 0xbd, 0x70, 0x92, 0xf4, 0x06, 0x74, 0x18, 0x51, 0x6e, 0xe4,
0x99, 0xd1, 0x31, 0x50, 0x46, 0x37, 0x72, 0x9f, 0xe9, 0x74, 0x9c, 0x83, 0x32, 0xa8, 0xbc, 0xe0,
0xe0, 0x6b, 0x54, 0x49, 0x2f, 0x38, 0xf8, 0x8a, 0x64, 0xb5, 0x5a, 0xb5, 0x40, 0xab, 0xbd, 0x09,
0x6b, 0x5c, 0x7f, 0x09, 0x49, 0xef, 0x65, 0x18, 0x6b, 0x46, 0x2d, 0xd9, 0x80, 0x36, 0x1b, 0xb3,
0x14, 0x89, 0xd8, 0xfb, 0x06, 0x0f, 0x16, 0x5a, 0x4e, 0x0e, 0x67, 0xb4, 0x18, 0xb5, 0xd3, 0x69,
0xf9, 0x85, 0x6f, 0x0e, 0x47, 0x5a, 0xf7, 0x99, 0x49, 0x5b, 0x17, 0xb4, 0x19, 0xdc, 0x5e, 0x80,
0xc6, 0x51, 0x12, 0x8e, 0xe5, 0xa6, 0xb4, 0xa0, 0xc9, 0x8b, 0x22, 0xf9, 0xe6, 0x25, 0xb8, 0x82,
0x5c, 0xf4, 0x28, 0x1c, 0x87, 0x7e, 0x38, 0x9c, 0x1a, 0x27, 0x86, 0x7f, 0xb0, 0x60, 0xd9, 0xa8,
0x4d, 0x8f, 0x0c, 0x18, 0x6c, 0x90, 0x59, 0x13, 0x9c, 0xf1, 0x96, 0x34, 0xe5, 0xca, 0x09, 0x79,
0x5c, 0xf7, 0xb1, 0x48, 0xa4, 0xd8, 0x82, 0x45, 0x39, 0x32, 0xf9, 0x21, 0xe7, 0xc2, 0x4e, 0x9e,
0x0b, 0xc5, 0xf7, 0x2d, 0xf1, 0x81, 0x6c, 0xe2, 0xb3, 0xe2, 0xe2, 0x9c, 0x9f, 0x20, 0x64, 0x6c,
0x49, 0x9d, 0x39, 0xf4, 0x13, 0xa6, 0x1c, 0x41, 0x5f, 0x81, 0xb1, 0xfd, 0x9b, 0x16, 0x40, 0x3a,
0x3a, 0xbc, 0x6e, 0x55, 0x06, 0x82, 0xbf, 0xf6, 0xd0, 0x8c, 0xc1, 0xab, 0xd0, 0x54, 0xd7, 0x74,
0xa9, 0xcd, 0x69, 0x48, 0x8c, 0x39, 0x8c, 0x37, 0x61, 0x71, 0xe8, 0x87, 0xc7, 0x68, 0xb0, 0x31,
0x9b, 0x2b, 0x16, 0x29, 0x48, 0x2d, 0x0e, 0xdf, 0x13, 0x68, 0x6a, 0xa0, 0x2a, 0x9a, 0x81, 0xb2,
0x7f, 0xab, 0xa4, 0x6e, 0x55, 0xd2, 0x39, 0xcf, 0x94, 0x32, 0x72, 0x27, 0xa7, 0x4e, 0x67, 0x5c,
0x62, 0x60, 0x14, 0xf5, 0xf0, 0xc2, 0x20, 0xcf, 0x3b, 0xd0, 0x8a, 0xb8, 0xbe, 0x92, 0xca, 0xac,
0xf2, 0x1c, 0x65, 0xb6, 0x10, 0x19, 0x56, 0xec, 0xe3, 0xd0, 0x76, 0x07, 0x67, 0x34, 0x4a, 0x3c,
0x3c, 0x66, 0xa3, 0x0b, 0xc1, 0x55, 0xf0, 0xa2, 0x86, 0xa3, 0x65, 0xbf, 0x09, 0x8b, 0x22, 0xed,
0x4b, 0x51, 0x8a, 0x14, 0xee, 0x14, 0x66, 0x84, 0xf6, 0x1f, 0xcb, 0x0b, 0x1c, 0x73, 0x0f, 0x67,
0xaf, 0x88, 0x3e, 0xbb, 0x52, 0x66, 0x76, 0x1f, 0x13, 0x97, 0x29, 0x03, 0x79, 0x96, 0x2f, 0x6b,
0x49, 0x16, 0x03, 0x71, 0xf9, 0x65, 0x2e, 0x69, 0xe5, 0x45, 0x96, 0xd4, 0xfe, 0x81, 0x05, 0xf3,
0x7b, 0xe1, 0x78, 0x4f, 0xa4, 0x9b, 0xa0, 0x20, 0xa8, 0x7c, 0x4b, 0x59, 0x7c, 0x4e, 0x22, 0x4a,
0xa1, 0xe5, 0x5e, 0xc8, 0x5a, 0xee, 0x9f, 0x87, 0x97, 0x30, 0x92, 0x14, 0x85, 0xe3, 0x30, 0x62,
0xc2, 0xe8, 0xfa, 0xdc, 0x4c, 0x87, 0x41, 0x72, 0x2a, 0xd5, 0xd8, 0xf3, 0x48, 0xf0, 0x78, 0xc7,
0x8e, 0x25, 0xdc, 0xe9, 0x16, 0x9e, 0x06, 0xd7, 0x6e, 0xf9, 0x0a, 0xfb, 0x33, 0x50, 0x47, 0x57,
0x19, 0xa7, 0xf5, 0x3a, 0xd4, 0x4f, 0xc3, 0x71, 0xef, 0xd4, 0x0b, 0x12, 0x29, 0xdc, 0xad, 0xd4,
0x87, 0xdd, 0xc3, 0x05, 0x51, 0x04, 0xf6, 0x37, 0xe7, 0x60, 0xfe, 0x41, 0x70, 0x16, 0x7a, 0x7d,
0xbc, 0x2c, 0x1a, 0xd1, 0x51, 0x28, 0xb3, 0x4f, 0xd9, 0xff, 0xe4, 0x2a, 0xcc, 0x63, 0xba, 0xd5,
0x98, 0x33, 0x6d, 0x93, 0x5f, 0xea, 0x0a, 0x88, 0x39, 0x09, 0x51, 0x9a, 0xf8, 0xce, 0xc5, 0x47,
0x43, 0xd8, 0x21, 0x22, 0xd2, 0x13, 0xd7, 0x45, 0x29, 0xcd, 0xee, 0xad, 0x6a, 0xd9, 0xbd, 0xac,
0x2f, 0x91, 0x1e, 0xc3, 0xf3, 0x27, 0x78, 0x5f, 0x02, 0xc2, 0x83, 0x4f, 0x44, 0x79, 0x24, 0x10,
0x5d, 0x8e, 0x79, 0x71, 0xf0, 0xd1, 0x41, 0xe6, 0x96, 0xf0, 0x0f, 0x38, 0x0d, 0x57, 0xc2, 0x3a,
0xc4, 0x5c, 0xb8, 0xec, 0xa3, 0x84, 0x3a, 0xe7, 0xfd, 0x0c, 0xcc, 0x34, 0xf5, 0x80, 0x2a, 0x85,
0xca, 0xe7, 0x01, 0x3c, 0xb9, 0x3f, 0x8b, 0x6b, 0xc7, 0x25, 0x9e, 0x19, 0x27, 0x8f, 0x4b, 0x8c,
0x61, 0x5c, 0xdf, 0x3f, 0x76, 0xfb, 0x4f, 0xf1, 0xcd, 0x09, 0x5e, 0xdf, 0xd4, 0x1d, 0x13, 0xc4,
0x24, 0x97, 0x74, 0x57, 0xf1, 0xfa, 0xbb, 0xe2, 0xe8, 0x10, 0xb9, 0x03, 0x0d, 0x3c, 0x22, 0x8a,
0x7d, 0x6d, 0xe1, 0xbe, 0xb6, 0xf5, 0x33, 0x24, 0xee, 0xac, 0x4e, 0xa4, 0x5f, 0x64, 0x2d, 0xe6,
0x72, 0xd5, 0xdc, 0xc1, 0x40, 0xdc, 0xff, 0xb5, 0xb1, 0xb7, 0x14, 0x60, 0x56, 0x55, 0x2c, 0x18,
0x27, 0x58, 0x42, 0x02, 0x03, 0x23, 0xd7, 0xa0, 0xc6, 0x8e, 0x2f, 0x63, 0xd7, 0x1b, 0x60, 0xb2,
0x1b, 0x3f, 0x45, 0x29, 0x8c, 0xb5, 0x21, 0xff, 0xc7, 0x7b, 0xba, 0x65, 0x5c, 0x15, 0x03, 0x63,
0x6b, 0xa3, 0xca, 0x28, 0x4c, 0x2b, 0x7c, 0x47, 0x0d, 0x90, 0xbc, 0x81, 0xb7, 0x30, 0x09, 0xed,
0xac, 0x62, 0x94, 0xe7, 0x25, 0x31, 0x67, 0xc1, 0xb4, 0xf2, 0xef, 0x11, 0x23, 0x71, 0x38, 0xa5,
0xfd, 0x49, 0x68, 0xea, 0x30, 0xa9, 0x41, 0xe5, 0xe1, 0xe1, 0xee, 0x41, 0xfb, 0x12, 0x69, 0xc0,
0xfc, 0xd1, 0xee, 0xa3, 0x47, 0xfb, 0xbb, 0x3b, 0x6d, 0x8b, 0x34, 0xa1, 0xa6, 0x32, 0x92, 0x4a,
0x76, 0x02, 0x64, 0x6b, 0x30, 0x10, 0xdf, 0xa9, 0x63, 0x7b, 0xca, 0xc1, 0x96, 0xc1, 0xc1, 0x05,
0x5c, 0x54, 0x2a, 0xe6, 0xa2, 0xe7, 0xae, 0xb5, 0xbd, 0x0b, 0x8d, 0x43, 0xed, 0x45, 0x06, 0x0a,
0x94, 0x7c, 0x8b, 0x21, 0x04, 0x51, 0x43, 0xb4, 0xe1, 0x94, 0xf4, 0xe1, 0xd8, 0x7f, 0x62, 0xf1,
0x2c, 0x71, 0x35, 0x7c, 0xde, 0xb7, 0x0d, 0x4d, 0x15, 0x5c, 0x49, 0xd3, 0x0b, 0x0d, 0x8c, 0xd1,
0xe0, 0x50, 0x7a, 0xe1, 0xc9, 0x49, 0x4c, 0x65, 0x32, 0x90, 0x81, 0x31, 0x49, 0x60, 0x3e, 0x15,
0xf3, 0x4f, 0x3c, 0xde, 0x43, 0x2c, 0x92, 0x82, 0x72, 0x38, 0xd3, 0xeb, 0x11, 0x3d, 0xa3, 0x51,
0xac, 0xd2, 0xa0, 0x54, 0x59, 0x65, 0x41, 0x66, 0x57, 0x79, 0x03, 0x6a, 0xaa, 0x5d, 0x53, 0x65,
0x49, 0x4a, 0x55, 0xcf, 0x54, 0x23, 0x9e, 0x32, 0x8c, 0x41, 0x73, 0x35, 0x9d, 0xaf, 0x20, 0xb7,
0x80, 0x9c, 0x78, 0x51, 0x96, 0xbc, 0x8c, 0xe4, 0x05, 0x35, 0xf6, 0x13, 0x58, 0x96, 0xac, 0xa3,
0x39, 0x53, 0xe6, 0x26, 0x5a, 0x17, 0x09, 0x4c, 0x29, 0x2f, 0x30, 0xf6, 0xff, 0x58, 0x30, 0x2f,
0x76, 0x3a, 0xf7, 0xaa, 0x87, 0xef, 0xb3, 0x81, 0x91, 0x8e, 0xf1, 0x00, 0x02, 0xa5, 0x4b, 0xa8,
0xc9, 0x9c, 0x22, 0x2c, 0x17, 0x29, 0x42, 0x02, 0x95, 0xb1, 0x9b, 0x9c, 0xe2, 0xd9, 0xb9, 0xee,
0xe0, 0xff, 0xa4, 0xcd, 0x23, 0x3d, 0x5c, 0xe9, 0x62, 0x94, 0xa7, 0xe8, 0xfd, 0x12, 0xb7, 0xef,
0xf9, 0xf7, 0x4b, 0x57, 0xa1, 0x8e, 0x03, 0xe8, 0xa5, 0x81, 0x9c, 0x14, 0x60, 0x9c, 0xcb, 0x0b,
0x28, 0xc9, 0x22, 0x17, 0x39, 0x45, 0xec, 0x55, 0xbe, 0xf3, 0x62, 0x09, 0xd4, 0x9d, 0xa9, 0xc8,
0x3a, 0x4d, 0xe1, 0x94, 0x23, 0xc4, 0x00, 0xb2, 0x1c, 0x21, 0x48, 0x1d, 0x55, 0x6f, 0x77, 0xa1,
0xb3, 0x43, 0x7d, 0x9a, 0xd0, 0x2d, 0xdf, 0xcf, 0xb6, 0xff, 0x12, 0x5c, 0x29, 0xa8, 0x13, 0xfe,
0xf3, 0x17, 0x61, 0x75, 0x8b, 0x67, 0xe8, 0xfd, 0xa4, 0xb2, 0x4e, 0xec, 0x0e, 0xac, 0x65, 0x9b,
0x14, 0x9d, 0xdd, 0x83, 0xa5, 0x1d, 0x7a, 0x3c, 0x19, 0xee, 0xd3, 0xb3, 0xb4, 0x23, 0x02, 0x95,
0xf8, 0x34, 0x3c, 0x17, 0x82, 0x89, 0xff, 0x93, 0x97, 0x01, 0x7c, 0x46, 0xd3, 0x8b, 0xc7, 0xb4,
0x2f, 0xdf, 0x1c, 0x20, 0x72, 0x34, 0xa6, 0x7d, 0xfb, 0x4d, 0x20, 0x7a, 0x3b, 0x62, 0xbd, 0x98,
0xdd, 0x9b, 0x1c, 0xf7, 0xe2, 0x69, 0x9c, 0xd0, 0x91, 0x7c, 0x4c, 0xa1, 0x43, 0xf6, 0x4d, 0x68,
0x1e, 0xba, 0x53, 0x87, 0x7e, 0x5d, 0x3c, 0xe6, 0xba, 0x0c, 0xf3, 0x63, 0x77, 0xca, 0xd4, 0x94,
0x8a, 0x30, 0x61, 0xb5, 0xfd, 0x5f, 0x25, 0x98, 0xe3, 0x94, 0xac, 0xd5, 0x01, 0x8d, 0x13, 0x2f,
0x40, 0xc6, 0x92, 0xad, 0x6a, 0x50, 0x8e, 0x95, 0x4b, 0x05, 0xac, 0x2c, 0x4e, 0x69, 0x32, 0x7f,
0x5b, 0xf0, 0xab, 0x81, 0x31, 0xe6, 0x4a, 0xd3, 0xbf, 0x78, 0x88, 0x23, 0x05, 0x32, 0xc1, 0xc8,
0xd4, 0xba, 0xf2, 0xf1, 0x49, 0x29, 0x15, 0x9c, 0xab, 0x43, 0x85, 0x36, 0x7c, 0x9e, 0x33, 0x78,
0xce, 0x86, 0xe7, 0x6c, 0x75, 0xed, 0x05, 0x6c, 0x35, 0x3f, 0xba, 0x3d, 0xcf, 0x56, 0xc3, 0x0b,
0xd8, 0x6a, 0x9b, 0x40, 0xfb, 0x1e, 0xa5, 0x0e, 0x65, 0xde, 0xa0, 0xe4, 0xdd, 0x6f, 0x59, 0xd0,
0x16, 0x5c, 0xa4, 0xea, 0xc8, 0xab, 0x86, 0xd7, 0x5b, 0x98, 0x47, 0x7d, 0x03, 0x16, 0xd0, 0x17,
0x55, 0x51, 0x57, 0x11, 0x22, 0x36, 0x40, 0x36, 0x0f, 0x79, 0xdd, 0x39, 0xf2, 0x7c, 0xb1, 0x29,
0x3a, 0x24, 0x03, 0xb7, 0x91, 0x2b, 0xd2, 0xa0, 0x2c, 0x47, 0x95, 0xed, 0xbf, 0xb2, 0x60, 0x49,
0x1b, 0xb0, 0xe0, 0xc2, 0x77, 0x40, 0x4a, 0x03, 0x0f, 0xc1, 0x72, 0xc9, 0xbd, 0x6c, 0x8a, 0x4d,
0xfa, 0x99, 0x41, 0x8c, 0x9b, 0xe9, 0x4e, 0x71, 0x80, 0xf1, 0x64, 0x24, 0x94, 0xa8, 0x0e, 0x31,
0x46, 0x3a, 0xa7, 0xf4, 0xa9, 0x22, 0xe1, 0x6a, 0xdc, 0xc0, 0x30, 0x47, 0x87, 0xf9, 0xd0, 0x8a,
0x88, 0xdb, 0x33, 0x13, 0xb4, 0xff, 0xc5, 0x82, 0x65, 0x7e, 0x18, 0x12, 0x47, 0x4d, 0xf5, 0x04,
0x66, 0x8e, 0x9f, 0xfe, 0xb8, 0x44, 0xee, 0x5d, 0x72, 0x44, 0x99, 0x7c, 0xfa, 0x05, 0x0f, 0x70,
0x2a, 0x37, 0x6b, 0xc6, 0x5e, 0x94, 0x8b, 0xf6, 0xe2, 0x39, 0x2b, 0x5d, 0x14, 0x72, 0xac, 0x16,
0x86, 0x1c, 0xef, 0xce, 0x43, 0x35, 0xee, 0x87, 0x63, 0x6a, 0xaf, 0xc1, 0x8a, 0x39, 0x39, 0xa1,
0x82, 0xbe, 0x63, 0x41, 0xe7, 0x1e, 0x0f, 0xcd, 0x7b, 0xc1, 0x70, 0xcf, 0x8b, 0x93, 0x30, 0x52,
0x2f, 0x05, 0xaf, 0x01, 0xc4, 0x89, 0x1b, 0x25, 0x3c, 0x03, 0x57, 0x04, 0x04, 0x53, 0x84, 0x8d,
0x91, 0x06, 0x03, 0x5e, 0xcb, 0xf7, 0x46, 0x95, 0x73, 0x3e, 0x84, 0x38, 0xae, 0x19, 0x96, 0xf8,
0x35, 0x9e, 0xab, 0xc8, 0x7c, 0x05, 0x7a, 0x86, 0x7a, 0x9d, 0x9f, 0x83, 0x32, 0xa8, 0xfd, 0x4f,
0x16, 0x2c, 0xa6, 0x83, 0xc4, 0x5b, 0x3c, 0x53, 0x3b, 0x08, 0xf3, 0x9b, 0x6a, 0x07, 0x19, 0xaa,
0xf4, 0x98, 0x3d, 0x16, 0x63, 0xd3, 0x10, 0x94, 0x58, 0x51, 0x0a, 0x27, 0xd2, 0xc1, 0xd1, 0x21,
0x9e, 0x79, 0xc4, 0x3c, 0x01, 0xe1, 0xd5, 0x88, 0x12, 0x26, 0x50, 0x8f, 0x12, 0xfc, 0x6a, 0x8e,
0x1f, 0x04, 0x45, 0x51, 0x9a, 0xd2, 0x79, 0x44, 0xd1, 0x94, 0xea, 0xd7, 0x1c, 0x35, 0xbe, 0x3e,
0xb2, 0x6c, 0xff, 0xb6, 0x05, 0x57, 0x0a, 0x16, 0x5e, 0x48, 0xcd, 0x0e, 0x2c, 0x9d, 0xa8, 0x4a,
0xb9, 0x38, 0x5c, 0x74, 0xd6, 0xe4, 0x3d, 0x93, 0xb9, 0x20, 0x4e, 0xfe, 0x03, 0xe5, 0x17, 0xf1,
0xe5, 0x36, 0x72, 0xfb, 0xf2, 0x15, 0x1b, 0x9f, 0x83, 0x86, 0xf6, 0x46, 0x8f, 0x5c, 0x86, 0xe5,
0x27, 0x0f, 0x1e, 0x1d, 0xec, 0x1e, 0x1d, 0xf5, 0x0e, 0x1f, 0xdf, 0xfd, 0xc2, 0xee, 0x97, 0x7b,
0x7b, 0x5b, 0x47, 0x7b, 0xed, 0x4b, 0x64, 0x0d, 0xc8, 0xc1, 0xee, 0xd1, 0xa3, 0xdd, 0x1d, 0x03,
0xb7, 0xee, 0xfc, 0x4e, 0x19, 0x5a, 0xfc, 0xfe, 0x92, 0xff, 0xba, 0x03, 0x8d, 0xc8, 0xbb, 0x30,
0x2f, 0x7e, 0x9d, 0x83, 0xac, 0x8a, 0x61, 0x9b, 0xbf, 0x07, 0xd2, 0x5d, 0xcb, 0xc2, 0x82, 0x2f,
0x97, 0x7f, 0xe5, 0x07, 0xff, 0xfe, 0x7b, 0xa5, 0x05, 0xd2, 0xd8, 0x3c, 0x7b, 0x63, 0x73, 0x48,
0x83, 0x98, 0xb5, 0xf1, 0x55, 0x80, 0xf4, 0x77, 0x2b, 0x48, 0x47, 0xf9, 0x83, 0x99, 0x1f, 0xe4,
0xe8, 0x5e, 0x29, 0xa8, 0x11, 0xed, 0x5e, 0xc1, 0x76, 0x97, 0xed, 0x16, 0x6b, 0xd7, 0x0b, 0xbc,
0x84, 0xff, 0x88, 0xc5, 0xdb, 0xd6, 0x06, 0x19, 0x40, 0x53, 0xff, 0x59, 0x0a, 0x22, 0xc3, 0x50,
0x05, 0x3f, 0x8a, 0xd1, 0x7d, 0xa9, 0xb0, 0x4e, 0xc6, 0xe0, 0xb0, 0x8f, 0x55, 0xbb, 0xcd, 0xfa,
0x98, 0x20, 0x45, 0xda, 0x8b, 0x0f, 0x2d, 0xf3, 0xd7, 0x27, 0xc8, 0x55, 0x4d, 0x65, 0xe4, 0x7e,
0xfb, 0xa2, 0xfb, 0xf2, 0x8c, 0x5a, 0xd1, 0xd7, 0xcb, 0xd8, 0xd7, 0x65, 0x9b, 0xb0, 0xbe, 0xfa,
0x48, 0x23, 0x7f, 0xfb, 0xe2, 0x6d, 0x6b, 0xe3, 0xce, 0xdf, 0x5e, 0x87, 0xba, 0x0a, 0x1c, 0x93,
0xf7, 0x61, 0xc1, 0xb8, 0x60, 0x26, 0x72, 0x1a, 0x45, 0xf7, 0xd1, 0xdd, 0xab, 0xc5, 0x95, 0xa2,
0xe3, 0x6b, 0xd8, 0x71, 0x87, 0xac, 0xb1, 0x8e, 0xc5, 0x0d, 0xed, 0x26, 0xa6, 0x4a, 0xf0, 0xbc,
0xe7, 0xa7, 0x7c, 0x9e, 0xe9, 0xa5, 0xb0, 0x31, 0xcf, 0xdc, 0x25, 0xb2, 0x31, 0xcf, 0xfc, 0x4d,
0xb2, 0x7d, 0x15, 0xbb, 0x5b, 0x23, 0x2b, 0x7a, 0x77, 0x2a, 0xa0, 0x4b, 0x31, 0x59, 0x5f, 0xff,
0xc1, 0x06, 0xf2, 0xb2, 0x62, 0xac, 0xa2, 0x1f, 0x72, 0x50, 0x2c, 0x92, 0xff, 0x35, 0x07, 0xbb,
0x83, 0x5d, 0x11, 0x82, 0xdb, 0xa7, 0xff, 0x5e, 0x03, 0xf9, 0x0a, 0xd4, 0xd5, 0x03, 0x5d, 0x72,
0x59, 0x7b, 0x30, 0xad, 0x3f, 0x28, 0xee, 0x76, 0xf2, 0x15, 0x45, 0x8c, 0xa1, 0xb7, 0xcc, 0x18,
0xe3, 0x09, 0x34, 0xb4, 0x47, 0xb8, 0xe4, 0x8a, 0x0a, 0xfb, 0x67, 0x1f, 0xfa, 0x76, 0xbb, 0x45,
0x55, 0xa2, 0x8b, 0x25, 0xec, 0xa2, 0x41, 0xea, 0xc8, 0x7b, 0xc9, 0xb3, 0x30, 0x26, 0xfb, 0xb0,
0x2a, 0x0e, 0x2e, 0xc7, 0xf4, 0xa3, 0x2c, 0x51, 0xc1, 0xef, 0x57, 0xdc, 0xb6, 0xc8, 0x3b, 0x50,
0x93, 0x6f, 0xad, 0xc9, 0x5a, 0xf1, 0x9b, 0xf1, 0xee, 0xe5, 0x1c, 0x2e, 0xd4, 0xda, 0x97, 0x01,
0xd2, 0x17, 0xbf, 0x4a, 0x80, 0x73, 0x2f, 0x88, 0xd5, 0xee, 0xe4, 0x9f, 0x07, 0xdb, 0x6b, 0x38,
0xc1, 0x36, 0x41, 0x01, 0x0e, 0xe8, 0xb9, 0x7c, 0xbe, 0xf2, 0x35, 0x68, 0x68, 0x8f, 0x7e, 0xd5,
0xf2, 0xe5, 0x1f, 0x0c, 0xab, 0xe5, 0x2b, 0x78, 0x23, 0x6c, 0x77, 0xb1, 0xf5, 0x15, 0x7b, 0x91,
0xb5, 0x1e, 0x7b, 0xc3, 0x60, 0xc4, 0x09, 0xd8, 0x06, 0x9d, 0xc2, 0x82, 0xf1, 0xb2, 0x57, 0x49,
0x4f, 0xd1, 0xbb, 0x61, 0x25, 0x3d, 0x85, 0x8f, 0x81, 0x25, 0x3b, 0xdb, 0x4b, 0xac, 0x9f, 0x33,
0x24, 0xd1, 0x7a, 0x7a, 0x0f, 0x1a, 0xda, 0x2b, 0x5d, 0x35, 0x97, 0xfc, 0x83, 0x60, 0x35, 0x97,
0xa2, 0x47, 0xbd, 0x2b, 0xd8, 0x47, 0xcb, 0x46, 0x56, 0xc0, 0xd7, 0x1f, 0xac, 0xed, 0xf7, 0xa1,
0x65, 0xbe, 0xdb, 0x55, 0x72, 0x59, 0xf8, 0x02, 0x58, 0xc9, 0xe5, 0x8c, 0xc7, 0xbe, 0x82, 0xa5,
0x37, 0x96, 0x55, 0x27, 0x9b, 0x1f, 0x88, 0x6b, 0xdc, 0x0f, 0xc9, 0x17, 0x99, 0xf2, 0x11, 0xcf,
0x71, 0xc8, 0x65, 0x8d, 0x6b, 0xf5, 0x47, 0x3b, 0x4a, 0x5e, 0x72, 0x2f, 0x77, 0x4c, 0x66, 0xe6,
0xef, 0x57, 0xd0, 0xa2, 0xe0, 0xb3, 0x1c, 0xcd, 0xa2, 0xe8, 0x2f, 0x77, 0x34, 0x8b, 0x62, 0xbc,
0xde, 0xc9, 0x5a, 0x94, 0xc4, 0x63, 0x6d, 0x04, 0xb0, 0x98, 0x49, 0x50, 0x53, 0x52, 0x51, 0x9c,
0xd1, 0xdb, 0xbd, 0xf6, 0xfc, 0xbc, 0x36, 0x53, 0x51, 0x49, 0x05, 0xb5, 0x29, 0xf3, 0xa7, 0x7f,
0x11, 0x9a, 0xfa, 0x8b, 0x4a, 0xa2, 0x8b, 0x72, 0xb6, 0xa7, 0x97, 0x0a, 0xeb, 0xcc, 0xcd, 0x25,
0x4d, 0xbd, 0x1b, 0xf2, 0x25, 0x58, 0x53, 0xa2, 0xae, 0xe7, 0x3c, 0xc5, 0xe4, 0x95, 0x82, 0x4c,
0x28, 0x3d, 0x9c, 0xd1, 0xbd, 0x32, 0x33, 0x55, 0xea, 0xb6, 0xc5, 0x98, 0xc6, 0x7c, 0xaa, 0x96,
0x2a, 0xf3, 0xa2, 0x17, 0x7a, 0xa9, 0x32, 0x2f, 0x7c, 0xdf, 0x26, 0x99, 0x86, 0x2c, 0x1b, 0x6b,
0xc4, 0x23, 0xf9, 0xe4, 0x3d, 0x58, 0xd4, 0xb2, 0x4a, 0x8f, 0xa6, 0x41, 0x5f, 0x09, 0x40, 0xfe,
0xf9, 0x41, 0xb7, 0xc8, 0xdf, 0xb6, 0x2f, 0x63, 0xfb, 0x4b, 0xb6, 0xb1, 0x38, 0x8c, 0xf9, 0xb7,
0xa1, 0xa1, 0x67, 0xac, 0x3e, 0xa7, 0xdd, 0xcb, 0x5a, 0x95, 0x9e, 0x3d, 0x7f, 0xdb, 0x22, 0x7f,
0x60, 0x41, 0xd3, 0xc8, 0xff, 0x34, 0xee, 0xab, 0x32, 0xed, 0x74, 0xf4, 0x3a, 0xbd, 0x21, 0xdb,
0xc1, 0x41, 0xee, 0x6f, 0x7c, 0xde, 0x58, 0x84, 0x0f, 0x8c, 0x73, 0xdb, 0xad, 0xec, 0x0f, 0x96,
0x7c, 0x98, 0x25, 0xd0, 0x9f, 0x68, 0x7c, 0x78, 0xdb, 0x22, 0xdf, 0xb5, 0xa0, 0x65, 0x46, 0x1b,
0xd4, 0x56, 0x15, 0xc6, 0x35, 0xd4, 0x56, 0xcd, 0x08, 0x51, 0xbc, 0x87, 0xa3, 0x7c, 0xb4, 0xe1,
0x18, 0xa3, 0x14, 0x8f, 0x18, 0x7f, 0xbc, 0xd1, 0x92, 0xb7, 0xf9, 0x8f, 0x16, 0xc9, 0x10, 0x18,
0xd1, 0xac, 0x46, 0x76, 0x7b, 0xf5, 0xdf, 0xe1, 0x59, 0xb7, 0x6e, 0x5b, 0xe4, 0x6b, 0xfc, 0x77,
0x4d, 0xc4, 0xb7, 0xc8, 0x25, 0x2f, 0xfa, 0xbd, 0x7d, 0x03, 0xe7, 0x74, 0xcd, 0xbe, 0x62, 0xcc,
0x29, 0x6b, 0x8f, 0xb7, 0xf8, 0xe8, 0xc4, 0x4f, 0xe8, 0xa4, 0x06, 0x25, 0xf7, 0xb3, 0x3a, 0xb3,
0x07, 0x39, 0xe2, 0x83, 0x14, 0xe4, 0x06, 0x2b, 0xbf, 0x60, 0x33, 0xf6, 0x06, 0x8e, 0xf5, 0x86,
0xfd, 0xca, 0xcc, 0xb1, 0x6e, 0x62, 0xcc, 0x80, 0x8d, 0xf8, 0x10, 0x20, 0x0d, 0x57, 0x93, 0x4c,
0xb8, 0x54, 0x09, 0x78, 0x3e, 0xa2, 0x6d, 0xca, 0x8b, 0x8c, 0xaa, 0xb2, 0x16, 0xbf, 0xc2, 0xd5,
0xd5, 0x03, 0x19, 0x68, 0xd5, 0x9d, 0x12, 0x33, 0xae, 0x6c, 0x38, 0x25, 0xd9, 0xf6, 0x0d, 0x65,
0xa5, 0xa2, 0xb6, 0x8f, 0x61, 0x61, 0x3f, 0x0c, 0x9f, 0x4e, 0xc6, 0xea, 0xb2, 0xc9, 0x0c, 0xe7,
0xed, 0xb9, 0xf1, 0x69, 0x37, 0x33, 0x0b, 0xfb, 0x3a, 0x36, 0xd5, 0x25, 0x1d, 0xad, 0xa9, 0xcd,
0x0f, 0xd2, 0x70, 0xf8, 0x87, 0xc4, 0x85, 0x25, 0xa5, 0x03, 0xd5, 0xc0, 0xbb, 0x66, 0x33, 0x86,
0xe6, 0xcb, 0x76, 0x61, 0x78, 0xb6, 0x72, 0xb4, 0x9b, 0xb1, 0x6c, 0xf3, 0xb6, 0x45, 0x0e, 0xa1,
0xb9, 0x43, 0xfb, 0xe1, 0x80, 0x8a, 0x98, 0xd8, 0x72, 0x3a, 0x70, 0x15, 0x4c, 0xeb, 0x2e, 0x18,
0xa0, 0x69, 0x17, 0xc6, 0xee, 0x34, 0xa2, 0x5f, 0xdf, 0xfc, 0x40, 0x44, 0xdb, 0x3e, 0x94, 0x76,
0x41, 0x86, 0x23, 0x0d, 0xbb, 0x90, 0x89, 0x5f, 0x1a, 0x76, 0x21, 0x17, 0xbf, 0x34, 0x96, 0x5a,
0x86, 0x43, 0x89, 0x0f, 0x4b, 0xb9, 0x90, 0xa7, 0x32, 0x09, 0xb3, 0x02, 0xa5, 0xdd, 0xeb, 0xb3,
0x09, 0xcc, 0xde, 0x36, 0xcc, 0xde, 0x8e, 0x60, 0x61, 0x87, 0xf2, 0xc5, 0xe2, 0x19, 0x2d, 0x99,
0x24, 0x62, 0x3d, 0x5f, 0x26, 0xab, 0xc0, 0xb1, 0xce, 0x34, 0xfc, 0x98, 0x4e, 0x42, 0xbe, 0x02,
0x8d, 0xfb, 0x34, 0x91, 0x29, 0x2c, 0xca, 0xf5, 0xcc, 0xe4, 0xb4, 0x74, 0x0b, 0x32, 0x60, 0x4c,
0x9e, 0xc1, 0xd6, 0x36, 0xe9, 0x60, 0x48, 0xb9, 0x72, 0xea, 0x79, 0x83, 0x0f, 0xc9, 0x2f, 0x60,
0xe3, 0x2a, 0x87, 0x6e, 0x4d, 0xcb, 0x7c, 0xd0, 0x1b, 0x5f, 0xcc, 0xe0, 0x45, 0x2d, 0x07, 0xe1,
0x80, 0x6a, 0x2e, 0x50, 0x00, 0x0d, 0x2d, 0xf5, 0x53, 0x09, 0x50, 0x3e, 0x8d, 0x55, 0x09, 0x50,
0x41, 0xa6, 0xa8, 0xbd, 0x8e, 0xfd, 0xd8, 0xe4, 0x7a, 0xda, 0x0f, 0xcf, 0x0e, 0x4d, 0x7b, 0xda,
0xfc, 0xc0, 0x1d, 0x25, 0x1f, 0x92, 0x27, 0xf8, 0x92, 0x59, 0x4f, 0xd3, 0x49, 0x7d, 0xe9, 0x6c,
0x46, 0x8f, 0x5a, 0x2c, 0xad, 0xca, 0xf4, 0xaf, 0x79, 0x57, 0xe8, 0x29, 0x7d, 0x1a, 0xe0, 0x28,
0x09, 0xc7, 0x3b, 0x2e, 0x1d, 0x85, 0x41, 0xaa, 0x6b, 0xd3, 0x54, 0x94, 0x54, 0x7f, 0x69, 0xf9,
0x28, 0xe4, 0x89, 0x76, 0xf8, 0x30, 0xb2, 0x9c, 0x24, 0x73, 0xcd, 0xcc, 0x56, 0x51, 0x0b, 0x52,
0x90, 0xb1, 0x72, 0xdb, 0x22, 0x5b, 0x00, 0x69, 0xcc, 0x5b, 0x1d, 0x25, 0x72, 0xe1, 0x74, 0xa5,
0xf6, 0x0a, 0x02, 0xe4, 0x87, 0x50, 0x4f, 0x83, 0xa8, 0x97, 0xd3, 0xf4, 0x5d, 0x23, 0xe4, 0xaa,
0x2c, 0x78, 0x2e, 0xb4, 0x69, 0xb7, 0x71, 0xa9, 0x80, 0xd4, 0xd8, 0x52, 0x61, 0xbc, 0xd2, 0x83,
0x65, 0x3e, 0x40, 0xe5, 0x8e, 0x60, 0x72, 0x85, 0x9c, 0x49, 0x41, 0x78, 0x51, 0x49, 0x73, 0x61,
0x74, 0xce, 0x88, 0x56, 0x30, 0x6e, 0xe5, 0x89, 0x1d, 0x4c, 0x35, 0x8f, 0x60, 0x29, 0x17, 0x3e,
0x52, 0x22, 0x3d, 0x2b, 0xa2, 0xa7, 0x44, 0x7a, 0x66, 0xe4, 0xc9, 0x5e, 0xc5, 0x2e, 0x17, 0x6d,
0xc0, 0x13, 0xd0, 0xb9, 0x97, 0xf4, 0x4f, 0xdf, 0xb6, 0x36, 0xee, 0xde, 0x7c, 0xef, 0xa7, 0x86,
0x5e, 0x72, 0x3a, 0x39, 0xbe, 0xd5, 0x0f, 0x47, 0x9b, 0xbe, 0x0c, 0x29, 0x88, 0x14, 0xa9, 0x4d,
0x3f, 0x18, 0x6c, 0x62, 0xcb, 0xc7, 0x73, 0xf8, 0xcb, 0xaf, 0x9f, 0xfc, 0xdf, 0x00, 0x00, 0x00,
0xff, 0xff, 0x7d, 0x0e, 0xcf, 0xb2, 0x2b, 0x56, 0x00, 0x00,
}

View File

@ -774,6 +774,12 @@ message SendRequest {
send the payment.
*/
FeeLimit fee_limit = 8;
/**
The channel id of the channel that must be taken to the first hop. If zero,
any channel may be used.
*/
uint64 outgoing_chan_id = 9;
}
message SendResponse {
string payment_error = 1 [json_name = "payment_error"];

View File

@ -2903,6 +2903,11 @@
"fee_limit": {
"$ref": "#/definitions/lnrpcFeeLimit",
"description": "*\nThe maximum number of satoshis that will be paid as a fee of the payment.\nThis value can be represented either as a percentage of the amount being\nsent, or as a fixed amount of the maximum fee the user is willing the pay to\nsend the payment."
},
"outgoing_chan_id": {
"type": "string",
"format": "uint64",
"description": "*\nThe channel id of the channel that must be taken to the first hop. If zero,\nany channel may be used."
}
}
},

View File

@ -11,7 +11,7 @@ import (
"github.com/btcsuite/btcd/btcec"
"github.com/coreos/bbolt"
"github.com/lightningnetwork/lightning-onion"
sphinx "github.com/lightningnetwork/lightning-onion"
"github.com/lightningnetwork/lnd/channeldb"
"github.com/lightningnetwork/lnd/lnwire"
)
@ -453,6 +453,10 @@ type restrictParams struct {
// feeLimit is a maximum fee amount allowed to be used on the path from
// the source to the target.
feeLimit lnwire.MilliSatoshi
// outgoingChannelID is the channel that needs to be taken to the first
// hop. If nil, any channel may be used.
outgoingChannelID *uint64
}
// findPath attempts to find a path from the source node within the
@ -563,6 +567,7 @@ func findPath(g *graphParams, r *restrictParams,
// TODO(halseth): also ignore disable flags for non-local
// channels if bandwidth hint is set?
isSourceChan := fromVertex == sourceVertex
edgeFlags := edge.ChannelFlags
isDisabled := edgeFlags&lnwire.ChanUpdateDisabled != 0
@ -570,6 +575,14 @@ func findPath(g *graphParams, r *restrictParams,
return
}
// If we have an outgoing channel restriction and this is not
// the specified channel, skip it.
if isSourceChan && r.outgoingChannelID != nil &&
*r.outgoingChannelID != edge.ChannelID {
return
}
// If this vertex or edge has been black listed, then we'll
// skip exploring this edge.
if _, ok := r.ignoredNodes[fromVertex]; ok {

View File

@ -1918,3 +1918,95 @@ func TestNewRouteFromEmptyHops(t *testing.T) {
t.Fatalf("expected empty hops error: instead got: %v", err)
}
}
// TestRestrictOutgoingChannel asserts that a outgoing channel restriction is
// obeyed by the path finding algorithm.
func TestRestrictOutgoingChannel(t *testing.T) {
t.Parallel()
// Set up a test graph with three possible paths from roasbeef to
// target. The path through channel 2 is the highest cost path.
testChannels := []*testChannel{
symmetricTestChannel("roasbeef", "a", 100000, &testChannelPolicy{
Expiry: 144,
FeeRate: 400,
MinHTLC: 1,
}, 1),
symmetricTestChannel("a", "target", 100000, &testChannelPolicy{
Expiry: 144,
FeeRate: 400,
MinHTLC: 1,
}),
symmetricTestChannel("roasbeef", "b", 100000, &testChannelPolicy{
Expiry: 144,
FeeRate: 800,
MinHTLC: 1,
}, 2),
symmetricTestChannel("roasbeef", "b", 100000, &testChannelPolicy{
Expiry: 144,
FeeRate: 600,
MinHTLC: 1,
}, 3),
symmetricTestChannel("b", "target", 100000, &testChannelPolicy{
Expiry: 144,
FeeRate: 400,
MinHTLC: 1,
}),
}
testGraphInstance, err := createTestGraphFromChannels(testChannels)
if err != nil {
t.Fatalf("unable to create graph: %v", err)
}
defer testGraphInstance.cleanUp()
sourceNode, err := testGraphInstance.graph.SourceNode()
if err != nil {
t.Fatalf("unable to fetch source node: %v", err)
}
sourceVertex := Vertex(sourceNode.PubKeyBytes)
ignoredEdges := make(map[edgeLocator]struct{})
ignoredVertexes := make(map[Vertex]struct{})
const (
startingHeight = 100
finalHopCLTV = 1
)
paymentAmt := lnwire.NewMSatFromSatoshis(100)
target := testGraphInstance.aliasMap["target"]
outgoingChannelID := uint64(2)
// Find the best path given the restriction to only use channel 2 as the
// outgoing channel.
path, err := findPath(
&graphParams{
graph: testGraphInstance.graph,
},
&restrictParams{
ignoredNodes: ignoredVertexes,
ignoredEdges: ignoredEdges,
feeLimit: noFeeLimit,
outgoingChannelID: &outgoingChannelID,
},
sourceNode, target, paymentAmt,
)
if err != nil {
t.Fatalf("unable to find path: %v", err)
}
route, err := newRoute(
paymentAmt, infinity, sourceVertex, path, startingHeight,
finalHopCLTV,
)
if err != nil {
t.Fatalf("unable to create path: %v", err)
}
// Assert that the route starts with channel 2, in line with the
// specified restriction.
if route.Hops[0].ChannelID != 2 {
t.Fatalf("expected route to pass through channel 2, "+
"but channel %v was selected instead", route.Hops[0].ChannelID)
}
}

View File

@ -148,9 +148,10 @@ func (p *paymentSession) RequestRoute(payment *LightningPayment,
bandwidthHints: p.bandwidthHints,
},
&restrictParams{
ignoredNodes: pruneView.vertexes,
ignoredEdges: pruneView.edges,
feeLimit: payment.FeeLimit,
ignoredNodes: pruneView.vertexes,
ignoredEdges: pruneView.edges,
feeLimit: payment.FeeLimit,
outgoingChannelID: payment.OutgoingChannelID,
},
p.mc.selfNode, payment.Target, payment.Amount,
)

View File

@ -17,7 +17,7 @@ import (
"github.com/davecgh/go-spew/spew"
"github.com/go-errors/errors"
"github.com/lightningnetwork/lightning-onion"
sphinx "github.com/lightningnetwork/lightning-onion"
"github.com/lightningnetwork/lnd/channeldb"
"github.com/lightningnetwork/lnd/htlcswitch"
"github.com/lightningnetwork/lnd/input"
@ -1612,6 +1612,10 @@ type LightningPayment struct {
// destination successfully.
RouteHints [][]HopHint
// OutgoingChannelID is the channel that needs to be taken to the first
// hop. If nil, any channel may be used.
OutgoingChannelID *uint64
// TODO(roasbeef): add e2e message?
}

View File

@ -2732,12 +2732,13 @@ func unmarshallSendToRouteRequest(req *lnrpc.SendToRouteRequest,
// hints), or we'll get a fully populated route from the user that we'll pass
// directly to the channel router for dispatching.
type rpcPaymentIntent struct {
msat lnwire.MilliSatoshi
feeLimit lnwire.MilliSatoshi
dest *btcec.PublicKey
rHash [32]byte
cltvDelta uint16
routeHints [][]routing.HopHint
msat lnwire.MilliSatoshi
feeLimit lnwire.MilliSatoshi
dest *btcec.PublicKey
rHash [32]byte
cltvDelta uint16
routeHints [][]routing.HopHint
outgoingChannelID *uint64
routes []*routing.Route
}
@ -2771,6 +2772,12 @@ func extractPaymentIntent(rpcPayReq *rpcPaymentRequest) (rpcPaymentIntent, error
return payIntent, nil
}
// If there are no routes specified, pass along a outgoing channel
// restriction if specified.
if rpcPayReq.OutgoingChanId != 0 {
payIntent.outgoingChannelID = &rpcPayReq.OutgoingChanId
}
// If the payment request field isn't blank, then the details of the
// invoice are encoded entirely within the encoded payReq. So we'll
// attempt to decode it, populating the payment accordingly.
@ -2920,11 +2927,12 @@ func (r *rpcServer) dispatchPaymentIntent(
// router, otherwise we'll create a payment session to execute it.
if len(payIntent.routes) == 0 {
payment := &routing.LightningPayment{
Target: payIntent.dest,
Amount: payIntent.msat,
FeeLimit: payIntent.feeLimit,
PaymentHash: payIntent.rHash,
RouteHints: payIntent.routeHints,
Target: payIntent.dest,
Amount: payIntent.msat,
FeeLimit: payIntent.feeLimit,
PaymentHash: payIntent.rHash,
RouteHints: payIntent.routeHints,
OutgoingChannelID: payIntent.outgoingChannelID,
}
// If the final CLTV value was specified, then we'll use that