lnrpc: re-compile protos with protoc v3.0.2 add json_name option

This commit modifies the protobuf file and most of the auto-generated
files to be generated by protoc version v3.0.2. Additionally, this
fixes a minor cosmetic regression within the `lncli` command line tool
which caused the JSON responses to be rendered in `camelCase` rather
than `snake_case`. We fix this by specifying the `json_name` for each
relevant RPC response.
This commit is contained in:
Olaoluwa Osuntokun 2017-02-27 21:03:43 -06:00
parent fc54c5d8d8
commit 3a851d8bc6
No known key found for this signature in database
GPG Key ID: 9CC5B105D03521A2
3 changed files with 552 additions and 583 deletions

@ -153,13 +153,13 @@ func (NewAddressRequest_AddressType) EnumDescriptor() ([]byte, []int) {
} }
type Transaction struct { type Transaction struct {
TxHash string `protobuf:"bytes,1,opt,name=tx_hash,json=txHash" json:"tx_hash,omitempty"` TxHash string `protobuf:"bytes,1,opt,name=tx_hash" json:"tx_hash,omitempty"`
Amount float64 `protobuf:"fixed64,2,opt,name=amount" json:"amount,omitempty"` Amount float64 `protobuf:"fixed64,2,opt,name=amount" json:"amount,omitempty"`
NumConfirmations int32 `protobuf:"varint,3,opt,name=num_confirmations,json=numConfirmations" json:"num_confirmations,omitempty"` NumConfirmations int32 `protobuf:"varint,3,opt,name=num_confirmations" json:"num_confirmations,omitempty"`
BlockHash string `protobuf:"bytes,4,opt,name=block_hash,json=blockHash" json:"block_hash,omitempty"` BlockHash string `protobuf:"bytes,4,opt,name=block_hash" json:"block_hash,omitempty"`
BlockHeight int32 `protobuf:"varint,5,opt,name=block_height,json=blockHeight" json:"block_height,omitempty"` BlockHeight int32 `protobuf:"varint,5,opt,name=block_height" json:"block_height,omitempty"`
TimeStamp int64 `protobuf:"varint,6,opt,name=time_stamp,json=timeStamp" json:"time_stamp,omitempty"` TimeStamp int64 `protobuf:"varint,6,opt,name=time_stamp" json:"time_stamp,omitempty"`
TotalFees int64 `protobuf:"varint,7,opt,name=total_fees,json=totalFees" json:"total_fees,omitempty"` TotalFees int64 `protobuf:"varint,7,opt,name=total_fees" json:"total_fees,omitempty"`
} }
func (m *Transaction) Reset() { *m = Transaction{} } func (m *Transaction) Reset() { *m = Transaction{} }
@ -297,8 +297,8 @@ func (m *SendRequest) GetPaymentRequest() string {
} }
type SendResponse struct { type SendResponse struct {
PaymentPreimage []byte `protobuf:"bytes,1,opt,name=payment_preimage,json=paymentPreimage,proto3" json:"payment_preimage,omitempty"` PaymentPreimage []byte `protobuf:"bytes,1,opt,name=payment_preimage,proto3" json:"payment_preimage,omitempty"`
PaymentRoute *Route `protobuf:"bytes,2,opt,name=payment_route,json=paymentRoute" json:"payment_route,omitempty"` PaymentRoute *Route `protobuf:"bytes,2,opt,name=payment_route" json:"payment_route,omitempty"`
} }
func (m *SendResponse) Reset() { *m = SendResponse{} } func (m *SendResponse) Reset() { *m = SendResponse{} }
@ -321,9 +321,9 @@ func (m *SendResponse) GetPaymentRoute() *Route {
} }
type ChannelPoint struct { type ChannelPoint struct {
FundingTxid []byte `protobuf:"bytes,1,opt,name=funding_txid,json=fundingTxid,proto3" json:"funding_txid,omitempty"` FundingTxid []byte `protobuf:"bytes,1,opt,name=funding_txid,proto3" json:"funding_txid,omitempty"`
FundingTxidStr string `protobuf:"bytes,2,opt,name=funding_txid_str,json=fundingTxidStr" json:"funding_txid_str,omitempty"` FundingTxidStr string `protobuf:"bytes,2,opt,name=funding_txid_str" json:"funding_txid_str,omitempty"`
OutputIndex uint32 `protobuf:"varint,3,opt,name=output_index,json=outputIndex" json:"output_index,omitempty"` OutputIndex uint32 `protobuf:"varint,3,opt,name=output_index" json:"output_index,omitempty"`
} }
func (m *ChannelPoint) Reset() { *m = ChannelPoint{} } func (m *ChannelPoint) Reset() { *m = ChannelPoint{} }
@ -513,7 +513,7 @@ func (m *ConnectPeerRequest) GetPerm() bool {
} }
type ConnectPeerResponse struct { type ConnectPeerResponse struct {
PeerId int32 `protobuf:"varint,1,opt,name=peer_id,json=peerId" json:"peer_id,omitempty"` PeerId int32 `protobuf:"varint,1,opt,name=peer_id" json:"peer_id,omitempty"`
} }
func (m *ConnectPeerResponse) Reset() { *m = ConnectPeerResponse{} } func (m *ConnectPeerResponse) Reset() { *m = ConnectPeerResponse{} }
@ -531,9 +531,9 @@ func (m *ConnectPeerResponse) GetPeerId() int32 {
type HTLC struct { type HTLC struct {
Incoming bool `protobuf:"varint,1,opt,name=incoming" json:"incoming,omitempty"` Incoming bool `protobuf:"varint,1,opt,name=incoming" json:"incoming,omitempty"`
Amount int64 `protobuf:"varint,2,opt,name=amount" json:"amount,omitempty"` Amount int64 `protobuf:"varint,2,opt,name=amount" json:"amount,omitempty"`
HashLock []byte `protobuf:"bytes,3,opt,name=hash_lock,json=hashLock,proto3" json:"hash_lock,omitempty"` HashLock []byte `protobuf:"bytes,3,opt,name=hash_lock,proto3" json:"hash_lock,omitempty"`
ExpirationHeight uint32 `protobuf:"varint,4,opt,name=expiration_height,json=expirationHeight" json:"expiration_height,omitempty"` ExpirationHeight uint32 `protobuf:"varint,4,opt,name=expiration_height" json:"expiration_height,omitempty"`
RevocationDelay uint32 `protobuf:"varint,5,opt,name=revocation_delay,json=revocationDelay" json:"revocation_delay,omitempty"` RevocationDelay uint32 `protobuf:"varint,5,opt,name=revocation_delay" json:"revocation_delay,omitempty"`
} }
func (m *HTLC) Reset() { *m = HTLC{} } func (m *HTLC) Reset() { *m = HTLC{} }
@ -577,17 +577,17 @@ func (m *HTLC) GetRevocationDelay() uint32 {
} }
type ActiveChannel struct { type ActiveChannel struct {
RemotePubkey string `protobuf:"bytes,1,opt,name=remote_pubkey,json=remotePubkey" json:"remote_pubkey,omitempty"` RemotePubkey string `protobuf:"bytes,1,opt,name=remote_pubkey" json:"remote_pubkey,omitempty"`
ChannelPoint string `protobuf:"bytes,2,opt,name=channel_point,json=channelPoint" json:"channel_point,omitempty"` ChannelPoint string `protobuf:"bytes,2,opt,name=channel_point" json:"channel_point,omitempty"`
ChanId uint64 `protobuf:"varint,3,opt,name=chan_id,json=chanId" json:"chan_id,omitempty"` ChanId uint64 `protobuf:"varint,3,opt,name=chan_id" json:"chan_id,omitempty"`
Capacity int64 `protobuf:"varint,4,opt,name=capacity" json:"capacity,omitempty"` Capacity int64 `protobuf:"varint,4,opt,name=capacity" json:"capacity,omitempty"`
LocalBalance int64 `protobuf:"varint,5,opt,name=local_balance,json=localBalance" json:"local_balance,omitempty"` LocalBalance int64 `protobuf:"varint,5,opt,name=local_balance" json:"local_balance,omitempty"`
RemoteBalance int64 `protobuf:"varint,6,opt,name=remote_balance,json=remoteBalance" json:"remote_balance,omitempty"` RemoteBalance int64 `protobuf:"varint,6,opt,name=remote_balance" json:"remote_balance,omitempty"`
UnsettledBalance int64 `protobuf:"varint,7,opt,name=unsettled_balance,json=unsettledBalance" json:"unsettled_balance,omitempty"` UnsettledBalance int64 `protobuf:"varint,7,opt,name=unsettled_balance" json:"unsettled_balance,omitempty"`
TotalSatoshisSent int64 `protobuf:"varint,8,opt,name=total_satoshis_sent,json=totalSatoshisSent" json:"total_satoshis_sent,omitempty"` TotalSatoshisSent int64 `protobuf:"varint,8,opt,name=total_satoshis_sent" json:"total_satoshis_sent,omitempty"`
TotalSatoshisReceived int64 `protobuf:"varint,9,opt,name=total_satoshis_received,json=totalSatoshisReceived" json:"total_satoshis_received,omitempty"` TotalSatoshisReceived int64 `protobuf:"varint,9,opt,name=total_satoshis_received" json:"total_satoshis_received,omitempty"`
NumUpdates uint64 `protobuf:"varint,10,opt,name=num_updates,json=numUpdates" json:"num_updates,omitempty"` NumUpdates uint64 `protobuf:"varint,10,opt,name=num_updates" json:"num_updates,omitempty"`
PendingHtlcs []*HTLC `protobuf:"bytes,11,rep,name=pending_htlcs,json=pendingHtlcs" json:"pending_htlcs,omitempty"` PendingHtlcs []*HTLC `protobuf:"bytes,11,rep,name=pending_htlcs" json:"pending_htlcs,omitempty"`
} }
func (m *ActiveChannel) Reset() { *m = ActiveChannel{} } func (m *ActiveChannel) Reset() { *m = ActiveChannel{} }
@ -697,15 +697,15 @@ func (m *ListChannelsResponse) GetChannels() []*ActiveChannel {
} }
type Peer struct { type Peer struct {
PubKey string `protobuf:"bytes,1,opt,name=pub_key,json=pubKey" json:"pub_key,omitempty"` PubKey string `protobuf:"bytes,1,opt,name=pub_key" json:"pub_key,omitempty"`
PeerId int32 `protobuf:"varint,2,opt,name=peer_id,json=peerId" json:"peer_id,omitempty"` PeerId int32 `protobuf:"varint,2,opt,name=peer_id" json:"peer_id,omitempty"`
Address string `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"` Address string `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"`
BytesSent uint64 `protobuf:"varint,4,opt,name=bytes_sent,json=bytesSent" json:"bytes_sent,omitempty"` BytesSent uint64 `protobuf:"varint,4,opt,name=bytes_sent" json:"bytes_sent,omitempty"`
BytesRecv uint64 `protobuf:"varint,5,opt,name=bytes_recv,json=bytesRecv" json:"bytes_recv,omitempty"` BytesRecv uint64 `protobuf:"varint,5,opt,name=bytes_recv" json:"bytes_recv,omitempty"`
SatSent int64 `protobuf:"varint,6,opt,name=sat_sent,json=satSent" json:"sat_sent,omitempty"` SatSent int64 `protobuf:"varint,6,opt,name=sat_sent" json:"sat_sent,omitempty"`
SatRecv int64 `protobuf:"varint,7,opt,name=sat_recv,json=satRecv" json:"sat_recv,omitempty"` SatRecv int64 `protobuf:"varint,7,opt,name=sat_recv" json:"sat_recv,omitempty"`
Inbound bool `protobuf:"varint,8,opt,name=inbound" json:"inbound,omitempty"` Inbound bool `protobuf:"varint,8,opt,name=inbound" json:"inbound,omitempty"`
PingTime int64 `protobuf:"varint,9,opt,name=ping_time,json=pingTime" json:"ping_time,omitempty"` PingTime int64 `protobuf:"varint,9,opt,name=ping_time" json:"ping_time,omitempty"`
} }
func (m *Peer) Reset() { *m = Peer{} } func (m *Peer) Reset() { *m = Peer{} }
@ -809,14 +809,14 @@ func (*GetInfoRequest) ProtoMessage() {}
func (*GetInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} } func (*GetInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
type GetInfoResponse struct { type GetInfoResponse struct {
IdentityPubkey string `protobuf:"bytes,1,opt,name=identity_pubkey,json=identityPubkey" json:"identity_pubkey,omitempty"` IdentityPubkey string `protobuf:"bytes,1,opt,name=identity_pubkey" json:"identity_pubkey,omitempty"`
Alias string `protobuf:"bytes,2,opt,name=alias" json:"alias,omitempty"` Alias string `protobuf:"bytes,2,opt,name=alias" json:"alias,omitempty"`
NumPendingChannels uint32 `protobuf:"varint,3,opt,name=num_pending_channels,json=numPendingChannels" json:"num_pending_channels,omitempty"` NumPendingChannels uint32 `protobuf:"varint,3,opt,name=num_pending_channels" json:"num_pending_channels,omitempty"`
NumActiveChannels uint32 `protobuf:"varint,4,opt,name=num_active_channels,json=numActiveChannels" json:"num_active_channels,omitempty"` NumActiveChannels uint32 `protobuf:"varint,4,opt,name=num_active_channels" json:"num_active_channels,omitempty"`
NumPeers uint32 `protobuf:"varint,5,opt,name=num_peers,json=numPeers" json:"num_peers,omitempty"` NumPeers uint32 `protobuf:"varint,5,opt,name=num_peers" json:"num_peers,omitempty"`
BlockHeight uint32 `protobuf:"varint,6,opt,name=block_height,json=blockHeight" json:"block_height,omitempty"` BlockHeight uint32 `protobuf:"varint,6,opt,name=block_height" json:"block_height,omitempty"`
BlockHash string `protobuf:"bytes,8,opt,name=block_hash,json=blockHash" json:"block_hash,omitempty"` BlockHash string `protobuf:"bytes,8,opt,name=block_hash" json:"block_hash,omitempty"`
SyncedToChain bool `protobuf:"varint,9,opt,name=synced_to_chain,json=syncedToChain" json:"synced_to_chain,omitempty"` SyncedToChain bool `protobuf:"varint,9,opt,name=synced_to_chain" json:"synced_to_chain,omitempty"`
Testnet bool `protobuf:"varint,10,opt,name=testnet" json:"testnet,omitempty"` Testnet bool `protobuf:"varint,10,opt,name=testnet" json:"testnet,omitempty"`
} }
@ -921,7 +921,7 @@ func (m *ConfirmationUpdate) GetNumConfsLeft() uint32 {
} }
type ChannelOpenUpdate struct { type ChannelOpenUpdate struct {
ChannelPoint *ChannelPoint `protobuf:"bytes,1,opt,name=channel_point,json=channelPoint" json:"channel_point,omitempty"` ChannelPoint *ChannelPoint `protobuf:"bytes,1,opt,name=channel_point" json:"channel_point,omitempty"`
} }
func (m *ChannelOpenUpdate) Reset() { *m = ChannelOpenUpdate{} } func (m *ChannelOpenUpdate) Reset() { *m = ChannelOpenUpdate{} }
@ -937,7 +937,7 @@ func (m *ChannelOpenUpdate) GetChannelPoint() *ChannelPoint {
} }
type ChannelCloseUpdate struct { type ChannelCloseUpdate struct {
ClosingTxid []byte `protobuf:"bytes,1,opt,name=closing_txid,json=closingTxid,proto3" json:"closing_txid,omitempty"` ClosingTxid []byte `protobuf:"bytes,1,opt,name=closing_txid,proto3" json:"closing_txid,omitempty"`
Success bool `protobuf:"varint,2,opt,name=success" json:"success,omitempty"` Success bool `protobuf:"varint,2,opt,name=success" json:"success,omitempty"`
} }
@ -1010,13 +1010,13 @@ type isCloseStatusUpdate_Update interface {
} }
type CloseStatusUpdate_ClosePending struct { type CloseStatusUpdate_ClosePending struct {
ClosePending *PendingUpdate `protobuf:"bytes,1,opt,name=close_pending,json=closePending,oneof"` ClosePending *PendingUpdate `protobuf:"bytes,1,opt,name=close_pending,oneof"`
} }
type CloseStatusUpdate_Confirmation struct { type CloseStatusUpdate_Confirmation struct {
Confirmation *ConfirmationUpdate `protobuf:"bytes,2,opt,name=confirmation,oneof"` Confirmation *ConfirmationUpdate `protobuf:"bytes,2,opt,name=confirmation,oneof"`
} }
type CloseStatusUpdate_ChanClose struct { type CloseStatusUpdate_ChanClose struct {
ChanClose *ChannelCloseUpdate `protobuf:"bytes,3,opt,name=chan_close,json=chanClose,oneof"` ChanClose *ChannelCloseUpdate `protobuf:"bytes,3,opt,name=chan_close,oneof"`
} }
func (*CloseStatusUpdate_ClosePending) isCloseStatusUpdate_Update() {} func (*CloseStatusUpdate_ClosePending) isCloseStatusUpdate_Update() {}
@ -1146,7 +1146,7 @@ func _CloseStatusUpdate_OneofSizer(msg proto.Message) (n int) {
type PendingUpdate struct { type PendingUpdate struct {
Txid []byte `protobuf:"bytes,1,opt,name=txid,proto3" json:"txid,omitempty"` Txid []byte `protobuf:"bytes,1,opt,name=txid,proto3" json:"txid,omitempty"`
OutputIndex uint32 `protobuf:"varint,2,opt,name=output_index,json=outputIndex" json:"output_index,omitempty"` OutputIndex uint32 `protobuf:"varint,2,opt,name=output_index" json:"output_index,omitempty"`
} }
func (m *PendingUpdate) Reset() { *m = PendingUpdate{} } func (m *PendingUpdate) Reset() { *m = PendingUpdate{} }
@ -1169,12 +1169,12 @@ func (m *PendingUpdate) GetOutputIndex() uint32 {
} }
type OpenChannelRequest struct { type OpenChannelRequest struct {
TargetPeerId int32 `protobuf:"varint,1,opt,name=target_peer_id,json=targetPeerId" json:"target_peer_id,omitempty"` TargetPeerId int32 `protobuf:"varint,1,opt,name=target_peer_id" json:"target_peer_id,omitempty"`
NodePubkey []byte `protobuf:"bytes,2,opt,name=node_pubkey,json=nodePubkey,proto3" json:"node_pubkey,omitempty"` NodePubkey []byte `protobuf:"bytes,2,opt,name=node_pubkey,proto3" json:"node_pubkey,omitempty"`
NodePubkeyString string `protobuf:"bytes,3,opt,name=node_pubkey_string,json=nodePubkeyString" json:"node_pubkey_string,omitempty"` NodePubkeyString string `protobuf:"bytes,3,opt,name=node_pubkey_string" json:"node_pubkey_string,omitempty"`
LocalFundingAmount int64 `protobuf:"varint,4,opt,name=local_funding_amount,json=localFundingAmount" json:"local_funding_amount,omitempty"` LocalFundingAmount int64 `protobuf:"varint,4,opt,name=local_funding_amount" json:"local_funding_amount,omitempty"`
PushSat int64 `protobuf:"varint,5,opt,name=push_sat,json=pushSat" json:"push_sat,omitempty"` PushSat int64 `protobuf:"varint,5,opt,name=push_sat" json:"push_sat,omitempty"`
NumConfs uint32 `protobuf:"varint,6,opt,name=num_confs,json=numConfs" json:"num_confs,omitempty"` NumConfs uint32 `protobuf:"varint,6,opt,name=num_confs" json:"num_confs,omitempty"`
} }
func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} } func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} }
@ -1242,13 +1242,13 @@ type isOpenStatusUpdate_Update interface {
} }
type OpenStatusUpdate_ChanPending struct { type OpenStatusUpdate_ChanPending struct {
ChanPending *PendingUpdate `protobuf:"bytes,1,opt,name=chan_pending,json=chanPending,oneof"` ChanPending *PendingUpdate `protobuf:"bytes,1,opt,name=chan_pending,oneof"`
} }
type OpenStatusUpdate_Confirmation struct { type OpenStatusUpdate_Confirmation struct {
Confirmation *ConfirmationUpdate `protobuf:"bytes,2,opt,name=confirmation,oneof"` Confirmation *ConfirmationUpdate `protobuf:"bytes,2,opt,name=confirmation,oneof"`
} }
type OpenStatusUpdate_ChanOpen struct { type OpenStatusUpdate_ChanOpen struct {
ChanOpen *ChannelOpenUpdate `protobuf:"bytes,3,opt,name=chan_open,json=chanOpen,oneof"` ChanOpen *ChannelOpenUpdate `protobuf:"bytes,3,opt,name=chan_open,oneof"`
} }
func (*OpenStatusUpdate_ChanPending) isOpenStatusUpdate_Update() {} func (*OpenStatusUpdate_ChanPending) isOpenStatusUpdate_Update() {}
@ -1393,7 +1393,7 @@ func (m *PendingChannelRequest) GetStatus() ChannelStatus {
} }
type PendingChannelResponse struct { type PendingChannelResponse struct {
PendingChannels []*PendingChannelResponse_PendingChannel `protobuf:"bytes,1,rep,name=pending_channels,json=pendingChannels" json:"pending_channels,omitempty"` PendingChannels []*PendingChannelResponse_PendingChannel `protobuf:"bytes,1,rep,name=pending_channels" json:"pending_channels,omitempty"`
} }
func (m *PendingChannelResponse) Reset() { *m = PendingChannelResponse{} } func (m *PendingChannelResponse) Reset() { *m = PendingChannelResponse{} }
@ -1409,12 +1409,12 @@ func (m *PendingChannelResponse) GetPendingChannels() []*PendingChannelResponse_
} }
type PendingChannelResponse_PendingChannel struct { type PendingChannelResponse_PendingChannel struct {
IdentityKey string `protobuf:"bytes,1,opt,name=identity_key,json=identityKey" json:"identity_key,omitempty"` IdentityKey string `protobuf:"bytes,1,opt,name=identity_key" json:"identity_key,omitempty"`
ChannelPoint string `protobuf:"bytes,2,opt,name=channel_point,json=channelPoint" json:"channel_point,omitempty"` ChannelPoint string `protobuf:"bytes,2,opt,name=channel_point" json:"channel_point,omitempty"`
Capacity int64 `protobuf:"varint,3,opt,name=capacity" json:"capacity,omitempty"` Capacity int64 `protobuf:"varint,3,opt,name=capacity" json:"capacity,omitempty"`
LocalBalance int64 `protobuf:"varint,4,opt,name=local_balance,json=localBalance" json:"local_balance,omitempty"` LocalBalance int64 `protobuf:"varint,4,opt,name=local_balance" json:"local_balance,omitempty"`
RemoteBalance int64 `protobuf:"varint,5,opt,name=remote_balance,json=remoteBalance" json:"remote_balance,omitempty"` RemoteBalance int64 `protobuf:"varint,5,opt,name=remote_balance" json:"remote_balance,omitempty"`
ClosingTxid string `protobuf:"bytes,6,opt,name=closing_txid,json=closingTxid" json:"closing_txid,omitempty"` ClosingTxid string `protobuf:"bytes,6,opt,name=closing_txid" json:"closing_txid,omitempty"`
Status ChannelStatus `protobuf:"varint,7,opt,name=status,enum=lnrpc.ChannelStatus" json:"status,omitempty"` Status ChannelStatus `protobuf:"varint,7,opt,name=status,enum=lnrpc.ChannelStatus" json:"status,omitempty"`
} }
@ -1555,9 +1555,9 @@ func (m *RouteRequest) GetAmt() int64 {
} }
type Hop struct { type Hop struct {
ChanId uint64 `protobuf:"varint,1,opt,name=chan_id,json=chanId" json:"chan_id,omitempty"` ChanId uint64 `protobuf:"varint,1,opt,name=chan_id" json:"chan_id,omitempty"`
ChanCapacity int64 `protobuf:"varint,2,opt,name=chan_capacity,json=chanCapacity" json:"chan_capacity,omitempty"` ChanCapacity int64 `protobuf:"varint,2,opt,name=chan_capacity" json:"chan_capacity,omitempty"`
AmtToForward int64 `protobuf:"varint,3,opt,name=amt_to_forward,json=amtToForward" json:"amt_to_forward,omitempty"` AmtToForward int64 `protobuf:"varint,3,opt,name=amt_to_forward" json:"amt_to_forward,omitempty"`
Fee int64 `protobuf:"varint,4,opt,name=fee" json:"fee,omitempty"` Fee int64 `protobuf:"varint,4,opt,name=fee" json:"fee,omitempty"`
} }
@ -1595,9 +1595,9 @@ func (m *Hop) GetFee() int64 {
} }
type Route struct { type Route struct {
TotalTimeLock uint32 `protobuf:"varint,1,opt,name=total_time_lock,json=totalTimeLock" json:"total_time_lock,omitempty"` TotalTimeLock uint32 `protobuf:"varint,1,opt,name=total_time_lock" json:"total_time_lock,omitempty"`
TotalFees int64 `protobuf:"varint,2,opt,name=total_fees,json=totalFees" json:"total_fees,omitempty"` TotalFees int64 `protobuf:"varint,2,opt,name=total_fees" json:"total_fees,omitempty"`
TotalAmt int64 `protobuf:"varint,3,opt,name=total_amt,json=totalAmt" json:"total_amt,omitempty"` TotalAmt int64 `protobuf:"varint,3,opt,name=total_amt" json:"total_amt,omitempty"`
Hops []*Hop `protobuf:"bytes,4,rep,name=hops" json:"hops,omitempty"` Hops []*Hop `protobuf:"bytes,4,rep,name=hops" json:"hops,omitempty"`
} }
@ -1652,8 +1652,8 @@ func (m *NodeInfoRequest) GetPubKey() string {
type NodeInfo struct { type NodeInfo struct {
Node *LightningNode `protobuf:"bytes,1,opt,name=node" json:"node,omitempty"` Node *LightningNode `protobuf:"bytes,1,opt,name=node" json:"node,omitempty"`
NumChannels uint32 `protobuf:"varint,2,opt,name=num_channels,json=numChannels" json:"num_channels,omitempty"` NumChannels uint32 `protobuf:"varint,2,opt,name=num_channels" json:"num_channels,omitempty"`
TotalCapacity int64 `protobuf:"varint,3,opt,name=total_capacity,json=totalCapacity" json:"total_capacity,omitempty"` TotalCapacity int64 `protobuf:"varint,3,opt,name=total_capacity" json:"total_capacity,omitempty"`
} }
func (m *NodeInfo) Reset() { *m = NodeInfo{} } func (m *NodeInfo) Reset() { *m = NodeInfo{} }
@ -1683,8 +1683,8 @@ func (m *NodeInfo) GetTotalCapacity() int64 {
} }
type LightningNode struct { type LightningNode struct {
LastUpdate uint32 `protobuf:"varint,1,opt,name=last_update,json=lastUpdate" json:"last_update,omitempty"` LastUpdate uint32 `protobuf:"varint,1,opt,name=last_update" json:"last_update,omitempty"`
PubKey string `protobuf:"bytes,2,opt,name=pub_key,json=pubKey" json:"pub_key,omitempty"` PubKey string `protobuf:"bytes,2,opt,name=pub_key" json:"pub_key,omitempty"`
Address string `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"` Address string `protobuf:"bytes,3,opt,name=address" json:"address,omitempty"`
Alias string `protobuf:"bytes,4,opt,name=alias" json:"alias,omitempty"` Alias string `protobuf:"bytes,4,opt,name=alias" json:"alias,omitempty"`
} }
@ -1723,10 +1723,10 @@ func (m *LightningNode) GetAlias() string {
} }
type RoutingPolicy struct { type RoutingPolicy struct {
TimeLockDelta uint32 `protobuf:"varint,1,opt,name=time_lock_delta,json=timeLockDelta" json:"time_lock_delta,omitempty"` TimeLockDelta uint32 `protobuf:"varint,1,opt,name=time_lock_delta" json:"time_lock_delta,omitempty"`
MinHtlc int64 `protobuf:"varint,2,opt,name=min_htlc,json=minHtlc" json:"min_htlc,omitempty"` MinHtlc int64 `protobuf:"varint,2,opt,name=min_htlc" json:"min_htlc,omitempty"`
FeeBaseMsat int64 `protobuf:"varint,3,opt,name=fee_base_msat,json=feeBaseMsat" json:"fee_base_msat,omitempty"` FeeBaseMsat int64 `protobuf:"varint,3,opt,name=fee_base_msat" json:"fee_base_msat,omitempty"`
FeeRateMilliMsat int64 `protobuf:"varint,4,opt,name=fee_rate_milli_msat,json=feeRateMilliMsat" json:"fee_rate_milli_msat,omitempty"` FeeRateMilliMsat int64 `protobuf:"varint,4,opt,name=fee_rate_milli_msat" json:"fee_rate_milli_msat,omitempty"`
} }
func (m *RoutingPolicy) Reset() { *m = RoutingPolicy{} } func (m *RoutingPolicy) Reset() { *m = RoutingPolicy{} }
@ -1763,14 +1763,14 @@ func (m *RoutingPolicy) GetFeeRateMilliMsat() int64 {
} }
type ChannelEdge struct { type ChannelEdge struct {
ChannelId uint64 `protobuf:"varint,1,opt,name=channel_id,json=channelId" json:"channel_id,omitempty"` ChannelId uint64 `protobuf:"varint,1,opt,name=channel_id" json:"channel_id,omitempty"`
ChanPoint string `protobuf:"bytes,2,opt,name=chan_point,json=chanPoint" json:"chan_point,omitempty"` ChanPoint string `protobuf:"bytes,2,opt,name=chan_point" json:"chan_point,omitempty"`
LastUpdate uint32 `protobuf:"varint,3,opt,name=last_update,json=lastUpdate" json:"last_update,omitempty"` LastUpdate uint32 `protobuf:"varint,3,opt,name=last_update" json:"last_update,omitempty"`
Node1Pub string `protobuf:"bytes,4,opt,name=node1_pub,json=node1Pub" json:"node1_pub,omitempty"` Node1Pub string `protobuf:"bytes,4,opt,name=node1_pub" json:"node1_pub,omitempty"`
Node2Pub string `protobuf:"bytes,5,opt,name=node2_pub,json=node2Pub" json:"node2_pub,omitempty"` Node2Pub string `protobuf:"bytes,5,opt,name=node2_pub" json:"node2_pub,omitempty"`
Capacity int64 `protobuf:"varint,6,opt,name=capacity" json:"capacity,omitempty"` Capacity int64 `protobuf:"varint,6,opt,name=capacity" json:"capacity,omitempty"`
Node1Policy *RoutingPolicy `protobuf:"bytes,7,opt,name=node1_policy,json=node1Policy" json:"node1_policy,omitempty"` Node1Policy *RoutingPolicy `protobuf:"bytes,7,opt,name=node1_policy" json:"node1_policy,omitempty"`
Node2Policy *RoutingPolicy `protobuf:"bytes,8,opt,name=node2_policy,json=node2Policy" json:"node2_policy,omitempty"` Node2Policy *RoutingPolicy `protobuf:"bytes,8,opt,name=node2_policy" json:"node2_policy,omitempty"`
} }
func (m *ChannelEdge) Reset() { *m = ChannelEdge{} } func (m *ChannelEdge) Reset() { *m = ChannelEdge{} }
@ -1891,15 +1891,15 @@ func (*NetworkInfoRequest) ProtoMessage() {}
func (*NetworkInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} } func (*NetworkInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{50} }
type NetworkInfo struct { type NetworkInfo struct {
GraphDiameter uint32 `protobuf:"varint,1,opt,name=graph_diameter,json=graphDiameter" json:"graph_diameter,omitempty"` GraphDiameter uint32 `protobuf:"varint,1,opt,name=graph_diameter" json:"graph_diameter,omitempty"`
AvgOutDegree float64 `protobuf:"fixed64,2,opt,name=avg_out_degree,json=avgOutDegree" json:"avg_out_degree,omitempty"` AvgOutDegree float64 `protobuf:"fixed64,2,opt,name=avg_out_degree" json:"avg_out_degree,omitempty"`
MaxOutDegree uint32 `protobuf:"varint,3,opt,name=max_out_degree,json=maxOutDegree" json:"max_out_degree,omitempty"` MaxOutDegree uint32 `protobuf:"varint,3,opt,name=max_out_degree" json:"max_out_degree,omitempty"`
NumNodes uint32 `protobuf:"varint,4,opt,name=num_nodes,json=numNodes" json:"num_nodes,omitempty"` NumNodes uint32 `protobuf:"varint,4,opt,name=num_nodes" json:"num_nodes,omitempty"`
NumChannels uint32 `protobuf:"varint,5,opt,name=num_channels,json=numChannels" json:"num_channels,omitempty"` NumChannels uint32 `protobuf:"varint,5,opt,name=num_channels" json:"num_channels,omitempty"`
TotalNetworkCapacity int64 `protobuf:"varint,6,opt,name=total_network_capacity,json=totalNetworkCapacity" json:"total_network_capacity,omitempty"` TotalNetworkCapacity int64 `protobuf:"varint,6,opt,name=total_network_capacity" json:"total_network_capacity,omitempty"`
AvgChannelSize float64 `protobuf:"fixed64,7,opt,name=avg_channel_size,json=avgChannelSize" json:"avg_channel_size,omitempty"` AvgChannelSize float64 `protobuf:"fixed64,7,opt,name=avg_channel_size" json:"avg_channel_size,omitempty"`
MinChannelSize int64 `protobuf:"varint,8,opt,name=min_channel_size,json=minChannelSize" json:"min_channel_size,omitempty"` MinChannelSize int64 `protobuf:"varint,8,opt,name=min_channel_size" json:"min_channel_size,omitempty"`
MaxChannelSize int64 `protobuf:"varint,9,opt,name=max_channel_size,json=maxChannelSize" json:"max_channel_size,omitempty"` MaxChannelSize int64 `protobuf:"varint,9,opt,name=max_channel_size" json:"max_channel_size,omitempty"`
} }
func (m *NetworkInfo) Reset() { *m = NetworkInfo{} } func (m *NetworkInfo) Reset() { *m = NetworkInfo{} }
@ -1997,13 +1997,13 @@ func (*SetAliasResponse) Descriptor() ([]byte, []int) { return fileDescriptor0,
type Invoice struct { type Invoice struct {
Memo string `protobuf:"bytes,1,opt,name=memo" json:"memo,omitempty"` Memo string `protobuf:"bytes,1,opt,name=memo" json:"memo,omitempty"`
Receipt []byte `protobuf:"bytes,2,opt,name=receipt,proto3" json:"receipt,omitempty"` Receipt []byte `protobuf:"bytes,2,opt,name=receipt,proto3" json:"receipt,omitempty"`
RPreimage []byte `protobuf:"bytes,3,opt,name=r_preimage,json=rPreimage,proto3" json:"r_preimage,omitempty"` RPreimage []byte `protobuf:"bytes,3,opt,name=r_preimage,proto3" json:"r_preimage,omitempty"`
RHash []byte `protobuf:"bytes,4,opt,name=r_hash,json=rHash,proto3" json:"r_hash,omitempty"` RHash []byte `protobuf:"bytes,4,opt,name=r_hash,proto3" json:"r_hash,omitempty"`
Value int64 `protobuf:"varint,5,opt,name=value" json:"value,omitempty"` Value int64 `protobuf:"varint,5,opt,name=value" json:"value,omitempty"`
Settled bool `protobuf:"varint,6,opt,name=settled" json:"settled,omitempty"` Settled bool `protobuf:"varint,6,opt,name=settled" json:"settled,omitempty"`
CreationDate int64 `protobuf:"varint,7,opt,name=creation_date,json=creationDate" json:"creation_date,omitempty"` CreationDate int64 `protobuf:"varint,7,opt,name=creation_date" json:"creation_date,omitempty"`
SettleDate int64 `protobuf:"varint,8,opt,name=settle_date,json=settleDate" json:"settle_date,omitempty"` SettleDate int64 `protobuf:"varint,8,opt,name=settle_date" json:"settle_date,omitempty"`
PaymentRequest string `protobuf:"bytes,9,opt,name=payment_request,json=paymentRequest" json:"payment_request,omitempty"` PaymentRequest string `protobuf:"bytes,9,opt,name=payment_request" json:"payment_request,omitempty"`
} }
func (m *Invoice) Reset() { *m = Invoice{} } func (m *Invoice) Reset() { *m = Invoice{} }
@ -2075,8 +2075,8 @@ func (m *Invoice) GetPaymentRequest() string {
} }
type AddInvoiceResponse struct { type AddInvoiceResponse struct {
RHash []byte `protobuf:"bytes,1,opt,name=r_hash,json=rHash,proto3" json:"r_hash,omitempty"` RHash []byte `protobuf:"bytes,1,opt,name=r_hash,proto3" json:"r_hash,omitempty"`
PaymentRequest string `protobuf:"bytes,2,opt,name=payment_request,json=paymentRequest" json:"payment_request,omitempty"` PaymentRequest string `protobuf:"bytes,2,opt,name=payment_request" json:"payment_request,omitempty"`
} }
func (m *AddInvoiceResponse) Reset() { *m = AddInvoiceResponse{} } func (m *AddInvoiceResponse) Reset() { *m = AddInvoiceResponse{} }
@ -2099,8 +2099,8 @@ func (m *AddInvoiceResponse) GetPaymentRequest() string {
} }
type PaymentHash struct { type PaymentHash struct {
RHashStr string `protobuf:"bytes,1,opt,name=r_hash_str,json=rHashStr" json:"r_hash_str,omitempty"` RHashStr string `protobuf:"bytes,1,opt,name=r_hash_str" json:"r_hash_str,omitempty"`
RHash []byte `protobuf:"bytes,2,opt,name=r_hash,json=rHash,proto3" json:"r_hash,omitempty"` RHash []byte `protobuf:"bytes,2,opt,name=r_hash,proto3" json:"r_hash,omitempty"`
} }
func (m *PaymentHash) Reset() { *m = PaymentHash{} } func (m *PaymentHash) Reset() { *m = PaymentHash{} }
@ -2163,10 +2163,10 @@ func (*InvoiceSubscription) ProtoMessage() {}
func (*InvoiceSubscription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} } func (*InvoiceSubscription) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{59} }
type Payment struct { type Payment struct {
PaymentHash string `protobuf:"bytes,1,opt,name=payment_hash,json=paymentHash" json:"payment_hash,omitempty"` PaymentHash string `protobuf:"bytes,1,opt,name=payment_hash" json:"payment_hash,omitempty"`
Value int64 `protobuf:"varint,2,opt,name=value" json:"value,omitempty"` Value int64 `protobuf:"varint,2,opt,name=value" json:"value,omitempty"`
CreationDate int64 `protobuf:"varint,3,opt,name=creation_date,json=creationDate" json:"creation_date,omitempty"` CreationDate int64 `protobuf:"varint,3,opt,name=creation_date" json:"creation_date,omitempty"`
Path []string `protobuf:"bytes,4,rep,name=path" json:"path,omitempty"` Path []string `protobuf:"bytes,4,rep,name=path,json=string" json:"path,omitempty"`
Fee int64 `protobuf:"varint,5,opt,name=fee" json:"fee,omitempty"` Fee int64 `protobuf:"varint,5,opt,name=fee" json:"fee,omitempty"`
} }
@ -2275,7 +2275,7 @@ func (m *DebugLevelRequest) GetLevelSpec() string {
} }
type DebugLevelResponse struct { type DebugLevelResponse struct {
SubSystems string `protobuf:"bytes,1,opt,name=sub_systems,json=subSystems" json:"sub_systems,omitempty"` SubSystems string `protobuf:"bytes,1,opt,name=sub_systems" json:"sub_systems,omitempty"`
} }
func (m *DebugLevelResponse) Reset() { *m = DebugLevelResponse{} } func (m *DebugLevelResponse) Reset() { *m = DebugLevelResponse{} }
@ -2308,8 +2308,8 @@ func (m *PayReqString) GetPayReq() string {
type PayReq struct { type PayReq struct {
Destination string `protobuf:"bytes,1,opt,name=destination" json:"destination,omitempty"` Destination string `protobuf:"bytes,1,opt,name=destination" json:"destination,omitempty"`
PaymentHash string `protobuf:"bytes,2,opt,name=payment_hash,json=paymentHash" json:"payment_hash,omitempty"` PaymentHash string `protobuf:"bytes,2,opt,name=payment_hash" json:"payment_hash,omitempty"`
NumSatoshis int64 `protobuf:"varint,3,opt,name=num_satoshis,json=numSatoshis" json:"num_satoshis,omitempty"` NumSatoshis int64 `protobuf:"varint,3,opt,name=num_satoshis" json:"num_satoshis,omitempty"`
} }
func (m *PayReq) Reset() { *m = PayReq{} } func (m *PayReq) Reset() { *m = PayReq{} }
@ -3654,247 +3654,233 @@ var _Lightning_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("rpc.proto", fileDescriptor0) } func init() { proto.RegisterFile("rpc.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{ var fileDescriptor0 = []byte{
// 3860 bytes of a gzipped FileDescriptorProto // 3644 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x5a, 0xcd, 0x6f, 0x1b, 0x49, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x5a, 0x4f, 0x6f, 0x1b, 0x47,
0x76, 0x77, 0xf3, 0x43, 0x24, 0x1f, 0x49, 0x89, 0x2a, 0x7d, 0xd1, 0xb4, 0x67, 0xc6, 0xee, 0xf1, 0x96, 0x77, 0x93, 0x94, 0x44, 0x3e, 0x92, 0xfa, 0x53, 0x92, 0x25, 0x9a, 0xb2, 0x1d, 0xb9, 0xd7,
0xae, 0xb5, 0x9e, 0x89, 0xa4, 0x51, 0x92, 0xf9, 0x5a, 0x20, 0x0b, 0x59, 0xb2, 0x2d, 0x63, 0x64, 0x88, 0x05, 0x6d, 0x20, 0xd9, 0x5a, 0xc0, 0xeb, 0x38, 0x8b, 0x0d, 0x64, 0x5b, 0x6b, 0x19, 0x51,
0x59, 0xd3, 0xd4, 0xac, 0x93, 0x5d, 0x04, 0x4c, 0x8b, 0x2c, 0x51, 0xbd, 0x26, 0xbb, 0x7b, 0xba, 0x64, 0xa5, 0xe5, 0xc4, 0xd9, 0x04, 0x0b, 0x6e, 0x8b, 0x2c, 0x51, 0x1d, 0x37, 0xbb, 0x3b, 0xdd,
0x8b, 0x92, 0x38, 0x86, 0xf7, 0x10, 0x24, 0xa7, 0x24, 0x87, 0x20, 0xf7, 0x45, 0x2e, 0x39, 0xe7, 0x45, 0xc9, 0x8c, 0x21, 0xec, 0x22, 0x9b, 0xdb, 0x1e, 0x16, 0xc1, 0x02, 0x73, 0x0c, 0xe6, 0x0b,
0x92, 0xbf, 0x20, 0x7f, 0x41, 0x82, 0x3d, 0xe4, 0x1c, 0x20, 0xb7, 0x1c, 0x93, 0x6b, 0x80, 0xe0, 0xcc, 0x65, 0xae, 0xf3, 0x1d, 0x06, 0x03, 0xe4, 0x34, 0x87, 0x39, 0x0c, 0x30, 0x5f, 0x60, 0xee,
0xbd, 0xaa, 0xea, 0xae, 0x6e, 0x52, 0x33, 0x4e, 0xb0, 0x27, 0xb1, 0x5e, 0xbd, 0x7e, 0x55, 0xf5, 0x73, 0x18, 0xbc, 0xfa, 0xd3, 0x5d, 0xd5, 0xdd, 0x4a, 0x3c, 0x98, 0x93, 0x58, 0xbf, 0x7a, 0xfd,
0x3e, 0x7f, 0xf5, 0x4a, 0x50, 0x8b, 0xc2, 0xfe, 0x56, 0x18, 0x05, 0x22, 0x60, 0xe5, 0x91, 0x1f, 0xaa, 0xea, 0xfd, 0xaf, 0x57, 0x82, 0x46, 0x1c, 0xf5, 0x37, 0xa3, 0x38, 0x64, 0x21, 0x99, 0xf2,
0x85, 0xfd, 0xce, 0xdd, 0x61, 0x10, 0x0c, 0x47, 0x7c, 0xdb, 0x0d, 0xbd, 0x6d, 0xd7, 0xf7, 0x03, 0x83, 0x38, 0xea, 0x77, 0xaf, 0x0f, 0xc3, 0x70, 0xe8, 0xd3, 0x2d, 0x37, 0xf2, 0xb6, 0xdc, 0x20,
0xe1, 0x0a, 0x2f, 0xf0, 0x63, 0xc9, 0x64, 0xff, 0xa7, 0x05, 0xf5, 0xd3, 0xc8, 0xf5, 0x63, 0xb7, 0x08, 0x99, 0xcb, 0xbc, 0x30, 0x48, 0x04, 0x91, 0xfd, 0x67, 0x0b, 0x9a, 0x2f, 0x62, 0x37, 0x48,
0x8f, 0x64, 0xb6, 0x01, 0x15, 0x71, 0xdd, 0xbb, 0x70, 0xe3, 0x8b, 0xb6, 0x75, 0xcf, 0xda, 0xac, 0xdc, 0x3e, 0xc2, 0xa4, 0x03, 0x33, 0xec, 0x75, 0xef, 0xd4, 0x4d, 0x4e, 0x3b, 0xd6, 0x9a, 0xb5,
0x39, 0x0b, 0xe2, 0xfa, 0xd0, 0x8d, 0x2f, 0xd8, 0x3a, 0x2c, 0xb8, 0xe3, 0x60, 0xe2, 0x8b, 0x76, 0xde, 0x70, 0xd4, 0x90, 0x2c, 0xc3, 0xb4, 0x3b, 0x0a, 0xc7, 0x01, 0xeb, 0x54, 0xd6, 0xac, 0x75,
0xe1, 0x9e, 0xb5, 0x69, 0x39, 0x6a, 0xc4, 0x3e, 0x82, 0x65, 0x7f, 0x32, 0xee, 0xf5, 0x03, 0xff, 0xcb, 0x91, 0x23, 0xf2, 0x1e, 0x2c, 0x04, 0xe3, 0x51, 0xaf, 0x1f, 0x06, 0x27, 0x5e, 0x3c, 0x12,
0xdc, 0x8b, 0xc6, 0x52, 0x76, 0xbb, 0x78, 0xcf, 0xda, 0x2c, 0x3b, 0x2d, 0x7f, 0x32, 0xde, 0x37, 0xcc, 0x3b, 0xd5, 0x35, 0x6b, 0x7d, 0xca, 0x29, 0x4e, 0x90, 0x9b, 0x00, 0xc7, 0x7e, 0xd8, 0x7f,
0xe9, 0xec, 0x3d, 0x80, 0xb3, 0x51, 0xd0, 0x7f, 0x2d, 0x17, 0x28, 0xd1, 0x02, 0x35, 0xa2, 0xd0, 0x25, 0x96, 0xa8, 0xf1, 0x25, 0x34, 0x84, 0xd8, 0xd0, 0x92, 0x23, 0xea, 0x0d, 0x4f, 0x59, 0x67,
0x1a, 0xf7, 0xa1, 0xa1, 0xa6, 0xb9, 0x37, 0xbc, 0x10, 0xed, 0x32, 0x89, 0xa9, 0x4b, 0x06, 0x22, 0x8a, 0x33, 0x32, 0x30, 0xe4, 0xc1, 0xbc, 0x11, 0xed, 0x25, 0xcc, 0x1d, 0x45, 0x9d, 0xe9, 0x35,
0xa1, 0x04, 0xe1, 0x8d, 0x79, 0x2f, 0x16, 0xee, 0x38, 0x6c, 0x2f, 0xdc, 0xb3, 0x36, 0x8b, 0x4e, 0x6b, 0xbd, 0xea, 0x68, 0x08, 0x9f, 0x0f, 0x99, 0xeb, 0xf7, 0x4e, 0x28, 0x4d, 0x3a, 0x33, 0x72,
0x0d, 0x29, 0x5d, 0x24, 0xd0, 0x74, 0x20, 0xdc, 0x51, 0xef, 0x9c, 0xf3, 0xb8, 0x5d, 0x51, 0xd3, 0x3e, 0x45, 0xec, 0x0e, 0x2c, 0x3f, 0xa5, 0x4c, 0x3b, 0x75, 0xe2, 0xd0, 0xaf, 0xc7, 0x34, 0x61,
0x48, 0x79, 0xca, 0x79, 0x6c, 0xb7, 0x61, 0xfd, 0x19, 0x17, 0xc6, 0x79, 0x63, 0x87, 0x7f, 0x3b, 0xf6, 0x3e, 0x10, 0x0d, 0x7e, 0x42, 0x99, 0xeb, 0xf9, 0x09, 0xb9, 0x0f, 0x2d, 0xa6, 0x11, 0x77,
0xe1, 0xb1, 0xb0, 0x8f, 0x80, 0x19, 0xe4, 0x03, 0x2e, 0x5c, 0x6f, 0x14, 0xb3, 0x4f, 0xa1, 0x21, 0xac, 0xb5, 0xea, 0x7a, 0x73, 0x9b, 0x6c, 0x72, 0xf9, 0x6e, 0x6a, 0x1f, 0x38, 0x06, 0x9d, 0xfd,
0x0c, 0xe6, 0xb6, 0x75, 0xaf, 0xb8, 0x59, 0xdf, 0x65, 0x5b, 0xa4, 0xd9, 0x2d, 0xe3, 0x03, 0x27, 0x3b, 0x0b, 0x9a, 0x47, 0x34, 0x18, 0x48, 0xee, 0x84, 0x40, 0x6d, 0x40, 0x13, 0xc6, 0x05, 0xdb,
0xc3, 0x67, 0xff, 0x8b, 0x05, 0xf5, 0x2e, 0xf7, 0x07, 0x4a, 0x3a, 0x63, 0x50, 0x1a, 0xf0, 0x58, 0x72, 0xf8, 0x6f, 0xf2, 0x0e, 0x34, 0xf1, 0x6f, 0x2f, 0x61, 0xb1, 0x17, 0x0c, 0xb9, 0x68, 0x1b,
0x90, 0x4a, 0x1b, 0x0e, 0xfd, 0x66, 0x1f, 0x40, 0x1d, 0xff, 0xf6, 0x62, 0x11, 0x79, 0xfe, 0x90, 0x0e, 0x20, 0x74, 0xc4, 0x11, 0x32, 0x0f, 0x55, 0x77, 0xc4, 0xb8, 0x40, 0xab, 0x0e, 0xfe, 0x24,
0xb4, 0x5a, 0x73, 0x00, 0x49, 0x5d, 0xa2, 0xb0, 0x16, 0x14, 0xdd, 0xb1, 0x20, 0x5d, 0x16, 0x1d, 0xb7, 0xa0, 0x15, 0xb9, 0x93, 0x11, 0x0d, 0x58, 0x26, 0xc4, 0x96, 0xd3, 0x94, 0xd8, 0x1e, 0x4a,
0xfc, 0x89, 0xfa, 0x09, 0xdd, 0xe9, 0x98, 0xfb, 0x22, 0x55, 0x60, 0xc3, 0xa9, 0x2b, 0x1a, 0xa9, 0x71, 0x13, 0x16, 0x75, 0x12, 0xc5, 0x7d, 0x8a, 0x73, 0x5f, 0xd0, 0x28, 0xe5, 0x22, 0x77, 0x60,
0x70, 0x0b, 0x56, 0x4c, 0x16, 0x2d, 0xbd, 0x4c, 0xd2, 0x97, 0x0d, 0x4e, 0xb5, 0xc8, 0x43, 0x58, 0x4e, 0xd1, 0xc7, 0x62, 0xb3, 0x5c, 0xac, 0x0d, 0x67, 0x56, 0xc2, 0x4a, 0x40, 0x01, 0xb4, 0xc4,
0xd2, 0xfc, 0x91, 0xdc, 0x2c, 0x29, 0xb5, 0xe6, 0x2c, 0x2a, 0xb2, 0x56, 0xd0, 0x08, 0x1a, 0xf2, 0x89, 0x92, 0x28, 0x0c, 0x12, 0x4a, 0x36, 0x60, 0x5e, 0x7d, 0x18, 0xc5, 0xd4, 0x1b, 0xb9, 0x43,
0x44, 0x71, 0x18, 0xf8, 0x31, 0x67, 0x3f, 0x81, 0x96, 0xfe, 0x30, 0x8c, 0xb8, 0x37, 0x76, 0x87, 0x2a, 0x8f, 0x57, 0xc0, 0xc9, 0x36, 0xb4, 0xd3, 0x45, 0xc2, 0x31, 0xa3, 0xfc, 0xb0, 0xcd, 0xed,
0x5c, 0x1d, 0x4f, 0x0b, 0x3c, 0x51, 0x64, 0xf6, 0x09, 0x34, 0x93, 0x35, 0x82, 0x89, 0xe0, 0x74, 0x96, 0x94, 0xa3, 0x83, 0x98, 0x63, 0x92, 0xd8, 0xdf, 0x5a, 0xd0, 0x7a, 0x7c, 0xea, 0x06, 0x01,
0xd6, 0xfa, 0x6e, 0x43, 0xa9, 0xd1, 0x41, 0x9a, 0xa3, 0x4f, 0x46, 0x23, 0xfb, 0xd7, 0xd0, 0xd8, 0xf5, 0x0f, 0x43, 0x2f, 0x60, 0x68, 0x1f, 0x27, 0xe3, 0x60, 0xe0, 0x05, 0xc3, 0x1e, 0x7b, 0xed,
0xbf, 0x70, 0x7d, 0x9f, 0x8f, 0x4e, 0x02, 0xcf, 0xa7, 0x93, 0x9f, 0x4f, 0xfc, 0x81, 0xe7, 0x0f, 0x0d, 0xe4, 0x62, 0x06, 0x86, 0x9b, 0xd2, 0xc7, 0x78, 0x7a, 0x29, 0xd8, 0x02, 0x8e, 0xfc, 0xc2,
0x7b, 0xe2, 0xda, 0x1b, 0xa8, 0x95, 0xea, 0x8a, 0x76, 0x7a, 0xed, 0x0d, 0xd8, 0x26, 0xb4, 0x4c, 0x31, 0x8b, 0xc6, 0xac, 0xe7, 0x05, 0x03, 0xfa, 0x9a, 0xcb, 0xb9, 0xed, 0x18, 0x98, 0xfd, 0xaf,
0x16, 0x3c, 0xb9, 0x52, 0xea, 0xa2, 0xc1, 0xd6, 0x15, 0x11, 0x0a, 0x0b, 0x26, 0x22, 0x9c, 0x88, 0x30, 0xbf, 0x8f, 0x86, 0x17, 0x78, 0xc1, 0x70, 0x67, 0x30, 0x88, 0x69, 0x92, 0xa0, 0x37, 0x44,
0x9e, 0xe7, 0x0f, 0xf8, 0x35, 0x69, 0xb8, 0xe9, 0xd4, 0x25, 0xed, 0x39, 0x92, 0xec, 0x3f, 0x82, 0xe3, 0xe3, 0x57, 0x74, 0x22, 0xdd, 0x44, 0x8e, 0x50, 0xc7, 0xa7, 0x61, 0xc2, 0xe4, 0x7a, 0xfc,
0xd6, 0x11, 0xfa, 0x9b, 0xef, 0xf9, 0xc3, 0xbd, 0xc1, 0x20, 0xe2, 0x71, 0x8c, 0x11, 0x10, 0x4e, 0xb7, 0xfd, 0x4b, 0x0b, 0xe6, 0x50, 0x6a, 0x1f, 0xbb, 0xc1, 0x44, 0xd9, 0xc2, 0x3e, 0xb4, 0x90,
0xce, 0x5e, 0xf3, 0xa9, 0x8e, 0x0c, 0x39, 0x42, 0xe3, 0x5e, 0x04, 0xb1, 0x50, 0x8b, 0xd1, 0x6f, 0xd5, 0x8b, 0x70, 0x47, 0xf8, 0x94, 0xb0, 0xa9, 0x75, 0x29, 0x8b, 0x1c, 0xf5, 0xa6, 0x4e, 0xba,
0xfb, 0xef, 0x2d, 0x58, 0x42, 0x75, 0xbd, 0x70, 0xfd, 0xa9, 0x76, 0x82, 0x23, 0x68, 0xa0, 0xa8, 0x1b, 0xb0, 0x78, 0xe2, 0xb4, 0x5c, 0x0d, 0xea, 0x7e, 0x08, 0x0b, 0x05, 0x12, 0xb4, 0x9c, 0x6c,
0xd3, 0x60, 0x4f, 0xc6, 0x91, 0x74, 0xa6, 0x4d, 0xa5, 0x85, 0x1c, 0xf7, 0x96, 0xc9, 0xfa, 0xc4, 0x7f, 0xf8, 0x93, 0x2c, 0xc1, 0xd4, 0x99, 0xeb, 0x8f, 0x85, 0xe4, 0xab, 0x8e, 0x18, 0x3c, 0xac,
0x17, 0xd1, 0xd4, 0x69, 0xb8, 0x06, 0xa9, 0xf3, 0x33, 0x58, 0x9e, 0x61, 0x41, 0x97, 0x49, 0xf7, 0x3c, 0xb0, 0xec, 0x77, 0x61, 0x3e, 0x5b, 0x53, 0xea, 0x96, 0x40, 0x2d, 0x15, 0x71, 0xc3, 0xe1,
0x87, 0x3f, 0xd9, 0x2a, 0x94, 0x2f, 0xdd, 0xd1, 0x44, 0xea, 0xbc, 0xe8, 0xc8, 0xc1, 0x97, 0x85, 0xbf, 0x51, 0x14, 0x48, 0xf7, 0x38, 0xf4, 0x52, 0xa7, 0x41, 0x3a, 0xdc, 0x8c, 0xa2, 0xc3, 0xdf,
0xcf, 0x2d, 0xfb, 0xc7, 0xd0, 0x4a, 0xd7, 0x54, 0x46, 0x65, 0x50, 0x4a, 0xd4, 0x5b, 0x73, 0xe8, 0xb9, 0x60, 0x51, 0x55, 0xc1, 0xc2, 0xbe, 0x03, 0x0b, 0xda, 0xf7, 0x3f, 0xb1, 0xd0, 0x0f, 0x16,
0x37, 0xaa, 0x02, 0xf9, 0xf6, 0x03, 0x2f, 0x89, 0x16, 0xe4, 0xc3, 0xcd, 0x68, 0x3e, 0xfc, 0x9d, 0x2c, 0x1c, 0xd0, 0x73, 0x29, 0x6e, 0xb5, 0xd4, 0x03, 0xa8, 0xb1, 0x49, 0x24, 0x4c, 0x6c, 0x76,
0x4b, 0x10, 0x45, 0x9d, 0x20, 0xec, 0x87, 0xb0, 0x6c, 0x7c, 0xff, 0x3d, 0x0b, 0xfd, 0xc6, 0x82, 0xfb, 0xb6, 0x94, 0x56, 0x81, 0x6e, 0x53, 0x0e, 0x5f, 0x4c, 0x22, 0xea, 0xf0, 0x2f, 0xec, 0xe7,
0xe5, 0x63, 0x7e, 0xa5, 0xd4, 0xad, 0x97, 0xfa, 0x1c, 0x4a, 0x62, 0x1a, 0x4a, 0xdf, 0x5a, 0xdc, 0xd0, 0xd4, 0x40, 0xb2, 0x02, 0x8b, 0x2f, 0x9f, 0xbd, 0x38, 0xd8, 0x3d, 0x3a, 0xea, 0x1d, 0x7e,
0x7d, 0xa0, 0xb4, 0x35, 0xc3, 0xb7, 0xa5, 0x86, 0xa7, 0xd3, 0x90, 0x3b, 0xf4, 0x85, 0xfd, 0x12, 0xfa, 0xe8, 0xa3, 0xdd, 0x7f, 0xef, 0xed, 0xed, 0x1c, 0xed, 0xcd, 0x5f, 0x21, 0xcb, 0x40, 0x0e,
0xea, 0x06, 0x91, 0x6d, 0xc0, 0xca, 0xab, 0xe7, 0xa7, 0xc7, 0x4f, 0xba, 0xdd, 0xde, 0xc9, 0x37, 0x76, 0x8f, 0x5e, 0xec, 0x3e, 0x31, 0x70, 0x8b, 0xcc, 0x41, 0x53, 0x07, 0x2a, 0x76, 0x17, 0x3a,
0x8f, 0xbf, 0x7a, 0xf2, 0x27, 0xbd, 0xc3, 0xbd, 0xee, 0x61, 0xeb, 0x16, 0x5b, 0x07, 0x76, 0xfc, 0x07, 0xf4, 0xfc, 0xa5, 0xc7, 0x02, 0x9a, 0x24, 0xe6, 0xf2, 0xf6, 0x26, 0x10, 0x7d, 0x4f, 0xf2,
0xa4, 0x7b, 0xfa, 0xe4, 0x20, 0x43, 0xb7, 0xd8, 0x12, 0xd4, 0x4d, 0x42, 0xc1, 0xee, 0x40, 0xfb, 0x98, 0x1d, 0x98, 0x71, 0x05, 0xa4, 0x42, 0xab, 0x1c, 0xda, 0x9f, 0x02, 0x79, 0x1c, 0x06, 0x01,
0x98, 0x5f, 0xbd, 0xf2, 0x84, 0xcf, 0xe3, 0x38, 0xbb, 0xbc, 0xbd, 0x05, 0xcc, 0xdc, 0x93, 0x3a, 0xed, 0xb3, 0x43, 0x4a, 0x63, 0x75, 0xd8, 0x7f, 0xd4, 0xe4, 0xda, 0xdc, 0x5e, 0x91, 0x87, 0xcd,
0x66, 0x1b, 0x2a, 0xae, 0x24, 0xa9, 0x93, 0xea, 0xa1, 0xfd, 0x0d, 0xb0, 0xfd, 0xc0, 0xf7, 0x79, 0x5b, 0xa2, 0x14, 0x38, 0x81, 0x5a, 0x44, 0xe3, 0x11, 0x17, 0x77, 0xdd, 0xe1, 0xbf, 0xed, 0x2d,
0x5f, 0x9c, 0x70, 0x1e, 0xe9, 0xc3, 0x7e, 0x64, 0xe8, 0xb5, 0xbe, 0xbb, 0xa1, 0x0e, 0x9b, 0xf7, 0x58, 0x34, 0xd8, 0x66, 0xfb, 0x88, 0x28, 0x8d, 0x7b, 0x52, 0xe2, 0x53, 0x8e, 0x1a, 0xda, 0xbf,
0x44, 0xa5, 0x70, 0x06, 0xa5, 0x90, 0x47, 0x63, 0x52, 0x77, 0xd5, 0xa1, 0xdf, 0xf6, 0x16, 0xac, 0xb6, 0xa0, 0xb6, 0xf7, 0x62, 0xff, 0x31, 0xe9, 0x42, 0xdd, 0x0b, 0xfa, 0xe1, 0x08, 0x83, 0x86,
0x64, 0xc4, 0xaa, 0x7d, 0x6c, 0x40, 0x25, 0xe4, 0x3c, 0xea, 0x29, 0x8d, 0x97, 0x9d, 0x05, 0x1c, 0xc5, 0x39, 0xa6, 0xe3, 0xcb, 0x54, 0x4b, 0xae, 0x43, 0x83, 0xc7, 0x1a, 0x8c, 0xd4, 0xdc, 0x8d,
0x3e, 0x1f, 0xd8, 0xff, 0x68, 0x41, 0xe9, 0xf0, 0xf4, 0x68, 0x9f, 0x75, 0xa0, 0xea, 0xf9, 0xfd, 0x5a, 0x4e, 0x06, 0x60, 0x96, 0xa0, 0xaf, 0x23, 0x2f, 0xe6, 0x69, 0x40, 0x05, 0xf7, 0x1a, 0x77,
0x60, 0x8c, 0xc9, 0xc2, 0x22, 0x81, 0xc9, 0xf8, 0x26, 0xcb, 0xb2, 0x3b, 0x50, 0xa3, 0x1c, 0x83, 0xb6, 0xe2, 0x04, 0x7a, 0x70, 0x4c, 0xcf, 0xc2, 0xbe, 0x00, 0x07, 0xd4, 0x77, 0x27, 0x3c, 0x78,
0xe9, 0x99, 0x82, 0xa8, 0xe1, 0x54, 0x91, 0x70, 0x14, 0xf4, 0x5f, 0x63, 0x5d, 0xe0, 0xd7, 0xa1, 0xb5, 0x9d, 0x02, 0x6e, 0xff, 0xb6, 0x0a, 0xed, 0x9d, 0x3e, 0xf3, 0xce, 0xa8, 0x0c, 0x14, 0xe4,
0x17, 0x51, 0xe6, 0xd7, 0x09, 0xbd, 0x44, 0x91, 0xd6, 0x4a, 0x27, 0x54, 0x56, 0xff, 0x09, 0xb4, 0x36, 0xb4, 0x63, 0x3a, 0x0a, 0x19, 0xed, 0x19, 0x2e, 0x6a, 0x82, 0x48, 0xd5, 0x17, 0x1f, 0xf4,
0x22, 0x7e, 0x19, 0xf4, 0x25, 0xf3, 0x80, 0x8f, 0xdc, 0x29, 0xa5, 0xac, 0xa6, 0xb3, 0x94, 0xd2, 0x22, 0x0c, 0x2d, 0xd2, 0x65, 0x4d, 0x10, 0x85, 0x85, 0x00, 0x0a, 0x0b, 0xcf, 0x54, 0x73, 0xd4,
0x0f, 0x90, 0x6c, 0xff, 0x73, 0x11, 0x9a, 0x7b, 0x7d, 0xe1, 0x5d, 0x72, 0x95, 0x20, 0xd8, 0x87, 0x10, 0x65, 0xd4, 0x77, 0x23, 0xb7, 0xef, 0xb1, 0x09, 0x3f, 0x48, 0xd5, 0x49, 0xc7, 0xc8, 0xdb,
0xd0, 0x8c, 0xf8, 0x38, 0x10, 0xbc, 0x97, 0x09, 0xcf, 0x86, 0x24, 0x9e, 0xc8, 0x20, 0xfd, 0x10, 0x0f, 0xfb, 0xae, 0xdf, 0x3b, 0x76, 0x7d, 0x37, 0xe8, 0x53, 0xbe, 0xf9, 0xaa, 0x63, 0x82, 0xe4,
0x9a, 0x7d, 0xc9, 0xdf, 0x0b, 0x31, 0xa3, 0xa8, 0x68, 0x6d, 0xf4, 0xcd, 0x2c, 0xb3, 0x01, 0x15, 0x5d, 0x98, 0x95, 0x5b, 0x52, 0x64, 0x22, 0x97, 0xe5, 0x50, 0x94, 0xdd, 0x38, 0x48, 0x28, 0x63,
0x1c, 0xa3, 0x9a, 0xf0, 0x38, 0x25, 0x67, 0x01, 0x87, 0xcf, 0x07, 0xa8, 0x9d, 0xbe, 0x1b, 0xba, 0x3e, 0x1d, 0xa4, 0xa4, 0x22, 0xad, 0x15, 0x27, 0xc8, 0x5d, 0x58, 0x14, 0xb9, 0x2e, 0x71, 0x59,
0x7d, 0x4f, 0x4c, 0xe9, 0x0c, 0x45, 0x27, 0x19, 0xa3, 0xe4, 0x51, 0xd0, 0x77, 0x47, 0xbd, 0x33, 0x98, 0x9c, 0x7a, 0x49, 0x2f, 0xa1, 0x01, 0xeb, 0xd4, 0x39, 0x7d, 0xd9, 0x14, 0x79, 0x00, 0x2b,
0x77, 0xe4, 0xfa, 0x7d, 0x4e, 0x1b, 0x2f, 0x3a, 0x0d, 0x22, 0x3e, 0x96, 0x34, 0xf6, 0x23, 0x58, 0x39, 0x38, 0xa6, 0x7d, 0xea, 0x9d, 0xd1, 0x41, 0xa7, 0xc1, 0xbf, 0xba, 0x6c, 0x9a, 0xac, 0x41,
0x54, 0x7b, 0xd4, 0x5c, 0xb2, 0x74, 0xa9, 0x9d, 0x6b, 0xb6, 0x8f, 0x60, 0x79, 0xe2, 0xc7, 0x5c, 0x13, 0x53, 0xfc, 0x38, 0x1a, 0xb8, 0x8c, 0x26, 0x1d, 0xe0, 0x12, 0xd2, 0x21, 0x72, 0x0f, 0xda,
0x88, 0x11, 0x1f, 0x24, 0x9c, 0xb2, 0x8a, 0xb5, 0x92, 0x09, 0xcd, 0xbc, 0x05, 0x2b, 0xb2, 0xd6, 0x11, 0x15, 0x31, 0xf7, 0x94, 0xf9, 0xfd, 0xa4, 0xd3, 0xe4, 0x81, 0xae, 0x29, 0xad, 0x19, 0xad,
0xc5, 0xae, 0x08, 0xe2, 0x0b, 0x2f, 0xee, 0xc5, 0xdc, 0x17, 0xed, 0x2a, 0xb1, 0x2f, 0xd3, 0x54, 0xcd, 0x31, 0x29, 0xec, 0xab, 0xb0, 0xb8, 0xef, 0x25, 0x4c, 0x6a, 0x33, 0x75, 0xaa, 0x3d, 0x58,
0x57, 0xcd, 0x74, 0xb9, 0x2f, 0xd8, 0xa7, 0xb0, 0x91, 0xe3, 0x8f, 0x78, 0x9f, 0x7b, 0x97, 0x7c, 0x32, 0x61, 0x69, 0xce, 0x77, 0xa1, 0x2e, 0x55, 0xa6, 0x98, 0x2f, 0x49, 0xe6, 0x86, 0x55, 0x38,
0xd0, 0xae, 0xd1, 0x37, 0x6b, 0x99, 0x6f, 0x1c, 0x35, 0x89, 0x85, 0x0a, 0x2b, 0xfc, 0x24, 0x1c, 0x29, 0x95, 0xfd, 0x5d, 0x05, 0x6a, 0xe8, 0x11, 0xdc, 0x13, 0xc6, 0xc7, 0xbd, 0xcc, 0x44, 0xd4,
0xb8, 0x82, 0xc7, 0x6d, 0x20, 0xcd, 0x80, 0x3f, 0x19, 0x7f, 0x23, 0x29, 0x6c, 0x07, 0x9a, 0x21, 0x50, 0xf7, 0x91, 0x8a, 0xe1, 0x23, 0xba, 0x17, 0x57, 0x0d, 0x2f, 0xe6, 0xa5, 0xcd, 0x84, 0x51,
0x97, 0x99, 0xf7, 0x42, 0x8c, 0xfa, 0x71, 0xbb, 0x4e, 0x99, 0xad, 0xae, 0xdc, 0x17, 0xfd, 0xcb, 0x29, 0xef, 0x1a, 0x97, 0x85, 0x86, 0x64, 0xf3, 0x31, 0xed, 0x9f, 0x71, 0x8b, 0x48, 0xe7, 0x11,
0x69, 0x28, 0x8e, 0x43, 0x64, 0xb0, 0xd7, 0x60, 0xe5, 0xc8, 0x8b, 0x85, 0xb2, 0x60, 0x12, 0x44, 0x41, 0x83, 0x4a, 0x5c, 0x26, 0xbe, 0x16, 0x86, 0x90, 0x8e, 0xd5, 0x1c, 0xff, 0x72, 0x26, 0x9b,
0x87, 0xb0, 0x9a, 0x25, 0x2b, 0xf7, 0xdd, 0x81, 0xaa, 0xb2, 0x93, 0x96, 0xbd, 0xaa, 0x64, 0x67, 0xe3, 0xdf, 0x75, 0x60, 0xc6, 0x0b, 0x8e, 0xc3, 0x71, 0x30, 0xe0, 0x4a, 0xae, 0x3b, 0x6a, 0x88,
0x3c, 0xc1, 0x49, 0xb8, 0xec, 0xff, 0xb1, 0xa0, 0x84, 0x11, 0x40, 0x9e, 0x3f, 0x39, 0xeb, 0x65, 0x2e, 0x19, 0xf1, 0x6c, 0xe7, 0x8d, 0xa8, 0x54, 0x65, 0x06, 0xd8, 0x04, 0xd3, 0x5a, 0xc2, 0x63,
0xb3, 0xf6, 0x57, 0x7c, 0x6a, 0x86, 0x44, 0xc1, 0x0c, 0x09, 0x33, 0x66, 0x8b, 0x99, 0x98, 0x25, 0x43, 0x2a, 0xe4, 0xfb, 0xb0, 0xa0, 0x61, 0x52, 0xc2, 0xb7, 0x60, 0x0a, 0x4f, 0xaf, 0x0a, 0x1f,
0xf4, 0x32, 0x15, 0x5c, 0xe9, 0xb9, 0x44, 0x7a, 0xa8, 0x11, 0x85, 0xf4, 0x9b, 0x4c, 0x47, 0xbc, 0xa5, 0x3b, 0x1e, 0x54, 0xc4, 0x8c, 0x3d, 0x0f, 0xb3, 0x4f, 0x29, 0x7b, 0x16, 0x9c, 0x84, 0x8a,
0x7f, 0x49, 0x5e, 0xa0, 0xa7, 0x1d, 0xde, 0xbf, 0x64, 0xb7, 0xa1, 0x1a, 0xbb, 0x42, 0x7e, 0x2b, 0xd3, 0x1f, 0x2a, 0x30, 0x97, 0x42, 0x92, 0xd1, 0x3a, 0xcc, 0x79, 0x03, 0x1a, 0x30, 0x8f, 0x4d,
0x8d, 0x5f, 0x89, 0x5d, 0x41, 0x5f, 0xaa, 0x29, 0xfa, 0xae, 0x92, 0x4c, 0xd1, 0x57, 0x6d, 0xa8, 0x4c, 0xd7, 0xcc, 0xc3, 0x98, 0xa9, 0x5c, 0xdf, 0x73, 0x13, 0xe9, 0x94, 0x62, 0x40, 0xb6, 0x61,
0x78, 0xfe, 0x59, 0x30, 0xf1, 0x07, 0x64, 0xd8, 0xaa, 0xa3, 0x87, 0x18, 0x7d, 0x21, 0x15, 0x3b, 0x09, 0x6d, 0x4b, 0x99, 0x4b, 0xaa, 0x76, 0x91, 0xb4, 0x4b, 0xe7, 0xd0, 0x1d, 0x10, 0x77, 0xb9,
0x6f, 0xcc, 0x95, 0x01, 0xab, 0x48, 0x38, 0xf5, 0xc6, 0xdc, 0x66, 0x58, 0xbf, 0x62, 0x4a, 0x02, 0x2d, 0x64, 0x9f, 0x88, 0xd0, 0x53, 0x36, 0x85, 0x52, 0x13, 0x9c, 0xf0, 0xc8, 0x22, 0xea, 0x64,
0x89, 0x76, 0x3f, 0x85, 0x65, 0x83, 0xa6, 0x54, 0x7b, 0x1f, 0xca, 0x78, 0x6e, 0x0d, 0x6d, 0xb4, 0x40, 0xa1, 0x40, 0x9d, 0x16, 0x05, 0x43, 0xbe, 0x40, 0xd5, 0x8a, 0xdc, 0x7a, 0xa1, 0xc8, 0x5d,
0xcd, 0x28, 0x7b, 0xc8, 0x19, 0xbb, 0x05, 0x8b, 0xcf, 0xb8, 0x78, 0xee, 0x9f, 0x07, 0x5a, 0xd2, 0x87, 0xb9, 0x64, 0x12, 0xf4, 0xe9, 0xa0, 0xc7, 0x42, 0x5c, 0xd7, 0x0b, 0xb8, 0x76, 0xea, 0x4e,
0x6f, 0x0b, 0xb0, 0x94, 0x90, 0x94, 0xa0, 0x87, 0xb0, 0xe4, 0x0d, 0xb8, 0x2f, 0x3c, 0x31, 0xcd, 0x1e, 0xe6, 0xe5, 0x38, 0x4d, 0x58, 0x40, 0x19, 0x77, 0xae, 0xba, 0xa3, 0x86, 0xf6, 0x37, 0x3c,
0xc6, 0xe1, 0xa2, 0x26, 0xab, 0x48, 0x5c, 0x85, 0xb2, 0x3b, 0xf2, 0xdc, 0x58, 0x45, 0xa0, 0x1c, 0x67, 0xa4, 0x95, 0xf5, 0xa7, 0xdc, 0xdf, 0xc8, 0x2a, 0x34, 0xc4, 0x3a, 0xc9, 0xa9, 0x2b, 0x6b,
0xb0, 0x1d, 0x58, 0x45, 0x27, 0xd3, 0x7e, 0x94, 0x98, 0x5b, 0xd6, 0x66, 0xe6, 0x4f, 0xc6, 0x27, 0xa3, 0x3a, 0x07, 0x8e, 0x4e, 0x5d, 0x2c, 0x1c, 0x8d, 0xad, 0x0b, 0xcb, 0x6e, 0x72, 0x6c, 0x4f,
0x72, 0x4a, 0x3b, 0x07, 0xba, 0x3f, 0x7e, 0xe1, 0x92, 0x07, 0xa4, 0x1f, 0xc8, 0x14, 0x83, 0x98, 0xec, 0xfc, 0x36, 0xcc, 0xaa, 0x9a, 0x3d, 0xe9, 0xf9, 0xf4, 0x84, 0xa9, 0x82, 0x28, 0x18, 0x8f,
0x34, 0xe3, 0x1b, 0x31, 0xea, 0x4b, 0xae, 0x80, 0xa7, 0x95, 0xc9, 0xa5, 0x4a, 0x62, 0x79, 0x14, 0x70, 0xb9, 0x64, 0x9f, 0x9e, 0x30, 0xfb, 0x00, 0x16, 0xa4, 0x57, 0x3d, 0x8f, 0xa8, 0x5a, 0xfa,
0xcf, 0x20, 0xcf, 0x05, 0x09, 0x09, 0x72, 0xc8, 0xd3, 0xc0, 0xae, 0xd5, 0x3c, 0x76, 0xfd, 0x31, 0xfd, 0x7c, 0x3c, 0x15, 0x79, 0x6b, 0x51, 0x5a, 0x8b, 0x5e, 0xc5, 0xe5, 0x82, 0xac, 0xed, 0x00,
0x2c, 0xc5, 0x53, 0xbf, 0xcf, 0x07, 0x3d, 0x11, 0xe0, 0x6e, 0x3c, 0x9f, 0x8c, 0x52, 0x75, 0x9a, 0x91, 0xd3, 0x8f, 0xfd, 0x30, 0xa1, 0x92, 0xa1, 0x0d, 0xad, 0xbe, 0x1f, 0x26, 0xf9, 0x52, 0x4f,
0x92, 0x7c, 0x1a, 0xec, 0x23, 0x11, 0x0d, 0x2a, 0x78, 0x2c, 0x7c, 0x2e, 0x28, 0x92, 0xaa, 0x8e, 0xc7, 0x50, 0x3e, 0xc9, 0xb8, 0xdf, 0x47, 0x6f, 0x14, 0x99, 0x4f, 0x0d, 0xed, 0xef, 0x2c, 0x58,
0x1e, 0xda, 0xdf, 0x51, 0x49, 0x48, 0xd0, 0xb2, 0x8c, 0x2e, 0xdc, 0xb6, 0x5c, 0x36, 0xbe, 0x70, 0xe4, 0xdc, 0x94, 0xff, 0xa7, 0x25, 0xc4, 0xdb, 0x6f, 0xb3, 0xd5, 0xd7, 0x4b, 0xcf, 0x1b, 0xf2,
0x15, 0xec, 0xa9, 0x12, 0xa1, 0x7b, 0xe1, 0xce, 0x6c, 0xbb, 0x30, 0x0b, 0x98, 0x1f, 0xc0, 0xa2, 0xda, 0xe1, 0x7b, 0x23, 0x4f, 0x25, 0xbf, 0x06, 0x22, 0xfb, 0x08, 0xa0, 0xc9, 0x9e, 0x84, 0x71,
0xc6, 0xe7, 0x71, 0x6f, 0xc4, 0xcf, 0x85, 0x52, 0x69, 0x43, 0x81, 0xf3, 0xf8, 0x88, 0x9f, 0x0b, 0x9f, 0x72, 0x89, 0xd5, 0x1d, 0x31, 0xb0, 0x7f, 0x6f, 0xc1, 0x02, 0xdf, 0xc6, 0x11, 0x73, 0xd9,
0xfb, 0x05, 0x2c, 0x2b, 0x45, 0xbd, 0x0c, 0xb9, 0x5e, 0xfa, 0xf3, 0x7c, 0xce, 0x94, 0x65, 0x69, 0x38, 0x91, 0x47, 0xfb, 0x17, 0x68, 0xe3, 0x31, 0xa8, 0x32, 0x57, 0xb9, 0x89, 0xa5, 0xd4, 0xb3,
0x45, 0xf9, 0x88, 0x09, 0xd0, 0xb2, 0x89, 0xd4, 0xfe, 0x1a, 0x98, 0x9a, 0xdd, 0x1f, 0x05, 0x31, 0x38, 0x2a, 0x88, 0xf7, 0xae, 0x38, 0x26, 0x31, 0xf9, 0x10, 0x5a, 0xfa, 0xa5, 0x4a, 0xd6, 0xd1,
0x57, 0xf2, 0xee, 0x43, 0xa3, 0x3f, 0x0a, 0xe2, 0x3c, 0x88, 0x53, 0x34, 0x02, 0x71, 0x6d, 0xa8, 0xd7, 0xd4, 0x09, 0x0a, 0x56, 0xb1, 0x77, 0xc5, 0x31, 0x3e, 0x20, 0x1f, 0x00, 0xf0, 0x2c, 0xc6,
0xc4, 0x93, 0x7e, 0x1f, 0x83, 0x4f, 0x96, 0x35, 0x3d, 0xb4, 0xff, 0xc2, 0x82, 0x15, 0x12, 0xa6, 0xd9, 0xf2, 0xfd, 0x6a, 0x9f, 0x17, 0x14, 0xb1, 0x77, 0xc5, 0xd1, 0xc8, 0x1f, 0xd5, 0x61, 0x5a,
0x83, 0x3d, 0xc1, 0x07, 0xff, 0xcf, 0x4d, 0x26, 0x57, 0x89, 0x91, 0x37, 0xf6, 0x74, 0x69, 0xa3, 0x04, 0x77, 0xfb, 0x29, 0xb4, 0x8d, 0x9d, 0x1a, 0x85, 0x5c, 0x4b, 0x14, 0x72, 0x85, 0x02, 0xbb,
0xab, 0xc4, 0x11, 0x12, 0xd0, 0x4f, 0xcf, 0x83, 0xa8, 0xcf, 0x49, 0x5f, 0x55, 0x47, 0x0e, 0xec, 0x52, 0x52, 0x60, 0xff, 0xc5, 0x02, 0x82, 0x96, 0x94, 0x53, 0xd5, 0xbb, 0x30, 0xcb, 0xdc, 0x78,
0x7f, 0xb3, 0x60, 0x99, 0xb6, 0xd1, 0x15, 0xae, 0x98, 0xc4, 0xea, 0x64, 0x3f, 0x85, 0x26, 0x9e, 0x48, 0x59, 0xcf, 0xac, 0x57, 0x72, 0x28, 0xcf, 0x42, 0xe1, 0x20, 0xcd, 0xf6, 0x15, 0x71, 0x1f,
0x82, 0x6b, 0xff, 0x55, 0x9b, 0x58, 0x4d, 0xa2, 0x89, 0xa8, 0x92, 0xf9, 0xf0, 0x96, 0x43, 0x6a, 0xd2, 0x20, 0xb2, 0x09, 0x44, 0x1b, 0xaa, 0xeb, 0x90, 0x88, 0xdf, 0x25, 0x33, 0x18, 0x68, 0x44,
0xe0, 0x8a, 0xca, 0x7e, 0x06, 0x0d, 0xf3, 0xf6, 0xa4, 0xd0, 0xf1, 0x6d, 0x7d, 0x80, 0x19, 0x97, 0xaa, 0x56, 0xf7, 0x05, 0x59, 0xf1, 0x88, 0x3c, 0x5f, 0x3a, 0x87, 0x21, 0x3a, 0x1a, 0xe3, 0x5d,
0x20, 0x01, 0x06, 0x95, 0x7d, 0x09, 0x40, 0x65, 0x8b, 0xa4, 0xd2, 0x76, 0x8d, 0xcf, 0x67, 0xcc, 0xcb, 0x65, 0x32, 0xdd, 0xa7, 0x63, 0x15, 0x52, 0xb8, 0x5b, 0xc9, 0x88, 0x91, 0x01, 0xf6, 0x8f,
0x70, 0x78, 0xcb, 0xa9, 0x21, 0x3b, 0x91, 0x1e, 0x57, 0x61, 0x41, 0x26, 0x76, 0xfb, 0x29, 0x34, 0x16, 0xcc, 0xe3, 0xf1, 0x0d, 0x13, 0x79, 0x08, 0xdc, 0xfa, 0xde, 0xd2, 0x42, 0x0c, 0xda, 0xbf,
0x33, 0xfb, 0xcc, 0x60, 0xb4, 0x86, 0xc4, 0x68, 0x33, 0xd0, 0xb9, 0x30, 0x0b, 0x9d, 0xff, 0xcb, 0xdf, 0x40, 0x1e, 0x40, 0x83, 0x33, 0x0c, 0x23, 0x1a, 0x48, 0xfb, 0xe8, 0x98, 0xf6, 0x91, 0x39,
0x02, 0x86, 0x4e, 0x94, 0xb3, 0xd3, 0x03, 0x58, 0x14, 0x6e, 0x34, 0xe4, 0xa2, 0x97, 0x45, 0x22, 0xfe, 0xde, 0x15, 0x27, 0x23, 0xd6, 0xac, 0x63, 0x17, 0xae, 0xca, 0x5d, 0xe6, 0xd4, 0xfa, 0x1e,
0x0d, 0x49, 0x3d, 0x91, 0xc9, 0x17, 0x6b, 0x4d, 0x30, 0x48, 0x2a, 0x79, 0x81, 0x96, 0x06, 0x24, 0x4c, 0x27, 0xfc, 0xa4, 0xb2, 0x8c, 0x5f, 0x32, 0x39, 0x0b, 0x29, 0x38, 0x92, 0xc6, 0xfe, 0xdf,
0xa9, 0xec, 0xf1, 0x31, 0x30, 0x83, 0x41, 0x5f, 0x6f, 0x64, 0xa2, 0x6e, 0xa5, 0x7c, 0xea, 0x76, 0x2a, 0x2c, 0xe7, 0xf9, 0xc8, 0x74, 0xf2, 0x39, 0xcc, 0x17, 0x52, 0x81, 0x48, 0x51, 0xef, 0x99,
0xb3, 0x03, 0xab, 0xb2, 0x36, 0xeb, 0x9b, 0x81, 0xc2, 0x31, 0xb2, 0x86, 0x33, 0x9a, 0x7b, 0x2a, 0x62, 0xca, 0x7d, 0x98, 0x87, 0x0b, 0x5c, 0xba, 0xbf, 0xa8, 0xc0, 0xac, 0x49, 0x84, 0x76, 0x9c,
0xa7, 0x24, 0x8c, 0xc6, 0x54, 0x1c, 0x4e, 0xf0, 0xde, 0xe4, 0x0a, 0x55, 0xc8, 0x2b, 0x38, 0xee, 0x26, 0xa9, 0x2c, 0x71, 0x19, 0xd8, 0x5b, 0x96, 0x94, 0x7a, 0xe1, 0x58, 0xfd, 0xb9, 0xc2, 0xb1,
0xba, 0x42, 0x27, 0x10, 0x8a, 0x24, 0x95, 0x20, 0xaa, 0x3a, 0x88, 0xec, 0x7f, 0xb5, 0xa0, 0x85, 0xf6, 0x76, 0x85, 0xe3, 0x54, 0x69, 0xe1, 0x98, 0x8f, 0xa0, 0xe2, 0x4e, 0x6f, 0x46, 0xd0, 0x4c,
0xa7, 0xce, 0xb8, 0xc5, 0x17, 0x40, 0x1e, 0xf7, 0x8e, 0x5e, 0x51, 0x47, 0xde, 0xdf, 0x99, 0x53, 0x1b, 0x33, 0x6f, 0xa1, 0x8d, 0xf7, 0x61, 0xe9, 0xa5, 0xeb, 0xfb, 0x94, 0x3d, 0x12, 0x4b, 0x28,
0x7c, 0x06, 0x64, 0xe5, 0x5e, 0x10, 0x72, 0x5f, 0xf9, 0x44, 0x3b, 0xeb, 0x13, 0x69, 0xa4, 0x1f, 0x9d, 0xde, 0x82, 0xd6, 0xb9, 0xb8, 0x0a, 0xf5, 0xc2, 0xc0, 0x9f, 0xc8, 0x4b, 0x43, 0x53, 0x62,
0xde, 0x92, 0xa5, 0x13, 0x29, 0x86, 0x47, 0x3c, 0x81, 0xb5, 0x6c, 0xd2, 0xd5, 0xb6, 0xfc, 0x18, 0xcf, 0x03, 0x7f, 0x62, 0xdf, 0x83, 0xab, 0xb9, 0x4f, 0xb3, 0xfb, 0x88, 0x3a, 0x86, 0xc5, 0x3b,
0x16, 0x62, 0x3a, 0xa7, 0x42, 0xe5, 0xab, 0x59, 0xc1, 0x52, 0x07, 0x8e, 0xe2, 0xb1, 0xff, 0xb2, 0x4b, 0x6a, 0x68, 0xaf, 0xc0, 0x55, 0xb9, 0x0d, 0x73, 0x39, 0x7b, 0x1b, 0x96, 0xf3, 0x13, 0xe5,
0x08, 0xeb, 0x79, 0x39, 0xaa, 0x68, 0xbc, 0x82, 0xd6, 0x4c, 0xc6, 0x97, 0x85, 0xe8, 0xe3, 0xac, 0xcc, 0xaa, 0x19, 0xb3, 0xf7, 0xa1, 0x25, 0x5a, 0x0c, 0x72, 0xcb, 0x2b, 0xf9, 0xe2, 0x0f, 0xaf,
0x92, 0x72, 0x1f, 0xe6, 0xc9, 0x4b, 0x61, 0xb6, 0x38, 0x74, 0xfe, 0xb6, 0x00, 0x8b, 0x59, 0x1e, 0xf0, 0x1f, 0xd1, 0x89, 0xea, 0xb8, 0x54, 0xd2, 0x8e, 0x8b, 0xfd, 0x5f, 0x50, 0xdd, 0x0b, 0x23,
0x74, 0xdd, 0xa4, 0x40, 0xa5, 0xd5, 0xa9, 0xae, 0x69, 0x5f, 0xbd, 0x2b, 0x48, 0x34, 0xb1, 0x60, 0xfd, 0x2e, 0x60, 0x99, 0x77, 0x01, 0xa9, 0xf8, 0x5e, 0xaa, 0x57, 0xf1, 0xb1, 0x09, 0xa2, 0xda,
0xf1, 0x87, 0xb0, 0x60, 0xe9, 0x9d, 0xb0, 0x60, 0x79, 0x1e, 0x16, 0xcc, 0x67, 0x4b, 0x79, 0x2d, 0xdc, 0x11, 0xc3, 0xe4, 0x7e, 0x12, 0xc6, 0xe7, 0x6e, 0x3c, 0x90, 0xea, 0xcf, 0xa1, 0xb8, 0x81,
0xcf, 0x64, 0xcb, 0xd4, 0x0e, 0x95, 0x77, 0xb0, 0xc3, 0x17, 0xb0, 0xfa, 0xca, 0x1d, 0x8d, 0xb8, 0x13, 0xaa, 0x54, 0x8f, 0x3f, 0xed, 0xff, 0xb3, 0x60, 0x8a, 0x6f, 0x1e, 0x4b, 0x07, 0x51, 0x8c,
0x50, 0x2b, 0x68, 0x6b, 0xde, 0x87, 0xc6, 0x95, 0xbc, 0xd3, 0xf4, 0x02, 0x7f, 0x34, 0x55, 0xf0, 0x8b, 0x54, 0x84, 0x77, 0x2d, 0x8b, 0xc7, 0x93, 0x3c, 0x9c, 0xeb, 0x82, 0x55, 0xf2, 0x5d, 0x30,
0xbf, 0xae, 0x68, 0x2f, 0xfd, 0xd1, 0xd4, 0xfe, 0x04, 0xd6, 0x72, 0x9f, 0xa6, 0x17, 0x1c, 0x7d, 0x8c, 0x49, 0x62, 0x94, 0xb5, 0x97, 0x32, 0x80, 0xdc, 0x84, 0xda, 0x69, 0x18, 0x61, 0x9d, 0x84,
0x08, 0x8b, 0xda, 0x42, 0x7a, 0x68, 0x6f, 0xc0, 0x9a, 0xda, 0x46, 0x76, 0x39, 0x7b, 0x17, 0xd6, 0xfe, 0x04, 0xaa, 0x5c, 0x0f, 0x23, 0x87, 0xe3, 0xf6, 0x06, 0xcc, 0x1d, 0x84, 0x03, 0xaa, 0x55,
0xf3, 0x13, 0xf3, 0x85, 0x15, 0x53, 0x61, 0x5f, 0x40, 0x43, 0x76, 0x09, 0xd4, 0x96, 0x6f, 0x44, 0x7c, 0x97, 0x0a, 0xd4, 0xfe, 0x6f, 0x0b, 0xea, 0x8a, 0x98, 0xac, 0x43, 0x0d, 0x03, 0x6e, 0x2e,
0x75, 0xaa, 0x67, 0x52, 0x48, 0x7a, 0x26, 0xf6, 0x1b, 0x28, 0x1e, 0x06, 0xa1, 0x09, 0xed, 0xad, 0x9e, 0xa5, 0xb7, 0x5a, 0xa4, 0x73, 0x38, 0x05, 0x5a, 0x2f, 0x8f, 0x91, 0xca, 0xb5, 0x2b, 0x69,
0x0c, 0xb4, 0x57, 0x36, 0xef, 0x25, 0x36, 0x95, 0xdf, 0x92, 0xcd, 0xf7, 0xb5, 0x5d, 0x1f, 0xc0, 0x25, 0x92, 0xd5, 0x6a, 0x98, 0x22, 0xf8, 0x9e, 0x73, 0x1e, 0x95, 0x43, 0xed, 0x37, 0xd0, 0x36,
0xa2, 0x3b, 0x16, 0x58, 0xd9, 0xcf, 0x83, 0xe8, 0xca, 0x8d, 0x06, 0xca, 0xf2, 0x0d, 0x77, 0x2c, 0x96, 0xc0, 0x9c, 0xe1, 0xbb, 0x09, 0x93, 0xf7, 0x14, 0x29, 0x43, 0x1d, 0xd2, 0x2f, 0x07, 0x95,
0x4e, 0x83, 0xa7, 0x92, 0x86, 0x8b, 0x9f, 0x73, 0x6d, 0x73, 0xfc, 0x69, 0xff, 0x95, 0x05, 0x65, 0xc2, 0xe5, 0xe0, 0x92, 0x2b, 0x40, 0x5a, 0xb6, 0xd6, 0xb4, 0xb2, 0xd5, 0xfe, 0x95, 0x05, 0x6d,
0xda, 0x38, 0xc2, 0x03, 0x09, 0xbe, 0x65, 0xc9, 0xc1, 0x1b, 0x93, 0x45, 0x29, 0xa4, 0x49, 0x64, 0xd4, 0x9e, 0x17, 0x0c, 0x0f, 0x43, 0xdf, 0xeb, 0x4f, 0xb8, 0x16, 0x95, 0xa2, 0xf0, 0x1a, 0xcb,
0x04, 0x6d, 0x74, 0x6d, 0xca, 0x36, 0xb0, 0x0a, 0xb9, 0x06, 0x16, 0xe6, 0x20, 0x39, 0x9d, 0x76, 0xdc, 0x54, 0x8b, 0x26, 0x8c, 0xc1, 0x62, 0xe4, 0x05, 0xfc, 0x66, 0x24, 0x75, 0x98, 0x8e, 0xd1,
0x86, 0xaa, 0x44, 0xd8, 0x1b, 0x0b, 0xf6, 0x3e, 0x94, 0x2e, 0x82, 0x10, 0x21, 0x10, 0x46, 0x10, 0xea, 0x4e, 0x28, 0x7a, 0x7b, 0x42, 0x7b, 0x23, 0x4c, 0x3b, 0xe2, 0xec, 0x26, 0x88, 0x05, 0x30,
0x68, 0xf8, 0x1d, 0x84, 0x0e, 0xd1, 0xed, 0x47, 0xb0, 0x74, 0x1c, 0x0c, 0xb8, 0x81, 0xe4, 0x6e, 0x02, 0xb1, 0xcb, 0x68, 0x6f, 0xe4, 0xf9, 0xbe, 0x27, 0x68, 0x85, 0x75, 0x95, 0x4d, 0xd9, 0xbf,
0x54, 0xa4, 0xfd, 0x6b, 0xa8, 0x6a, 0x5e, 0xb6, 0x09, 0x25, 0xcc, 0xac, 0xb9, 0xf4, 0x95, 0xdc, 0xa9, 0x40, 0x53, 0xba, 0xd7, 0xee, 0x60, 0x48, 0xd1, 0x92, 0x54, 0x04, 0x4b, 0x4d, 0x5f, 0x43,
0x4a, 0x91, 0xcf, 0x21, 0x0e, 0x74, 0x25, 0x4a, 0x91, 0x3a, 0x96, 0x55, 0x79, 0xc0, 0x2c, 0xa9, 0xd4, 0xbc, 0x11, 0xf3, 0x34, 0x24, 0x2f, 0xeb, 0x6a, 0x51, 0xd6, 0x98, 0x1f, 0xc3, 0x01, 0xbd,
0x61, 0xd8, 0x8f, 0x60, 0x51, 0x9e, 0x20, 0x17, 0x44, 0x52, 0x0f, 0x5a, 0xe3, 0xf6, 0x14, 0x9a, 0x87, 0x69, 0x58, 0xca, 0x2e, 0x03, 0xd4, 0xec, 0x36, 0x9f, 0x9d, 0xca, 0x66, 0x39, 0x60, 0x84,
0x99, 0x05, 0xb0, 0x32, 0x8c, 0xdc, 0x58, 0xa8, 0x6b, 0x88, 0x52, 0x1e, 0x20, 0x49, 0x25, 0x5b, 0xd3, 0xe9, 0x5c, 0x38, 0x7d, 0x00, 0x2d, 0xc9, 0x86, 0xcb, 0x9d, 0x87, 0xb8, 0xcc, 0xe8, 0x0c,
0xe3, 0x28, 0x85, 0x8c, 0x4f, 0xdc, 0x0c, 0xe8, 0x13, 0x28, 0x5a, 0x32, 0xa0, 0xa8, 0xfd, 0x0f, 0x9d, 0x38, 0x06, 0xa5, 0xfa, 0x72, 0x5b, 0x7d, 0x59, 0xff, 0xb9, 0x2f, 0x15, 0x25, 0x5e, 0x5f,
0x16, 0x34, 0xd1, 0x68, 0x9e, 0x3f, 0x3c, 0x09, 0x46, 0x5e, 0x7f, 0x4a, 0xc6, 0xd3, 0x66, 0xc3, 0xa5, 0xf0, 0x9e, 0xc6, 0x6e, 0x74, 0xaa, 0x42, 0xd6, 0x20, 0x6d, 0x64, 0x72, 0x98, 0x6c, 0xc0,
0xdb, 0xa9, 0x70, 0x13, 0xe3, 0x29, 0xbb, 0x1d, 0x20, 0x11, 0x8b, 0xc7, 0xd8, 0xf3, 0xe9, 0x12, 0x14, 0x7e, 0xa6, 0x32, 0x56, 0xb9, 0x23, 0x08, 0x12, 0xb2, 0x0e, 0x53, 0x74, 0x30, 0xe4, 0x5e,
0xa4, 0x4c, 0x57, 0x19, 0x7b, 0x3e, 0x5e, 0x79, 0x98, 0x0d, 0xcd, 0x73, 0x8e, 0x11, 0x1f, 0xf3, 0xac, 0x77, 0x9e, 0x35, 0x1d, 0x39, 0x82, 0x00, 0xdd, 0x12, 0xd1, 0x9c, 0x5b, 0x9a, 0x51, 0x6b,
0xde, 0x18, 0x8b, 0x8b, 0x3c, 0x75, 0xfd, 0x9c, 0xf3, 0xc7, 0x6e, 0xcc, 0x5f, 0xc4, 0xae, 0x60, 0x1a, 0x87, 0xcf, 0x06, 0xf6, 0x12, 0x90, 0x03, 0xca, 0xce, 0xc3, 0xf8, 0x95, 0x7e, 0x6f, 0xfb,
0xbf, 0x07, 0x2b, 0xc8, 0x13, 0xb9, 0x82, 0xf7, 0xc6, 0xde, 0x68, 0xe4, 0x49, 0x4e, 0xe9, 0x4f, 0x9f, 0x2a, 0x34, 0x35, 0x18, 0x3d, 0x6c, 0x88, 0x1b, 0xee, 0x0d, 0x3c, 0x77, 0x44, 0x19, 0x8d,
0xad, 0x73, 0xce, 0x1d, 0x57, 0xf0, 0x17, 0x38, 0x81, 0xec, 0xf6, 0x3f, 0x15, 0xa0, 0xae, 0xd4, 0xa5, 0xa5, 0xe6, 0x50, 0x1e, 0xdc, 0xce, 0x86, 0xbd, 0x70, 0xcc, 0x7a, 0x03, 0x3a, 0x8c, 0x29,
0xfa, 0x64, 0x30, 0xe4, 0xe8, 0x3a, 0x3a, 0x7b, 0x25, 0x5e, 0x5e, 0x53, 0x94, 0xe7, 0x03, 0x3d, 0x95, 0xcf, 0x04, 0x39, 0x14, 0xe9, 0x46, 0xee, 0x6b, 0x9d, 0x4e, 0xd8, 0x43, 0x0e, 0x55, 0x25,
0x9d, 0xc9, 0x6c, 0x34, 0x2d, 0xd3, 0x5a, 0x4e, 0xbf, 0xc5, 0x19, 0xfd, 0x62, 0xf9, 0x0b, 0x06, 0x93, 0x90, 0x51, 0x2d, 0x2b, 0x99, 0x84, 0x44, 0xf2, 0xb1, 0x61, 0xaa, 0x24, 0x36, 0xdc, 0x87,
0xfc, 0x13, 0x2c, 0xbd, 0x4a, 0x61, 0x55, 0x22, 0x9c, 0x4c, 0xce, 0xf4, 0xe4, 0x2e, 0x4d, 0x96, 0x65, 0x11, 0x05, 0x02, 0x71, 0x9c, 0x5e, 0xce, 0x4c, 0x2e, 0x99, 0x25, 0x1b, 0x30, 0x8f, 0x7b,
0xd3, 0xc9, 0x5d, 0x9c, 0x34, 0x33, 0xe6, 0x42, 0x2e, 0x63, 0x7e, 0x06, 0x0d, 0x25, 0x95, 0x54, 0x56, 0x06, 0x9e, 0x78, 0xdf, 0x88, 0x6e, 0x8b, 0xe5, 0x14, 0x70, 0xa4, 0x45, 0x77, 0x34, 0x68,
0x4d, 0x89, 0x2c, 0xf5, 0xb1, 0x8c, 0x19, 0x9c, 0xba, 0x5c, 0x4e, 0xda, 0x44, 0x7d, 0xb8, 0xab, 0x45, 0xa7, 0xa5, 0x80, 0x73, 0x5a, 0xf7, 0xb5, 0x49, 0xdb, 0x90, 0xb4, 0x39, 0xdc, 0xde, 0x84,
0x3f, 0xac, 0xfe, 0xd0, 0x87, 0xbb, 0x72, 0x80, 0x77, 0x4f, 0xa5, 0xb5, 0x67, 0x91, 0x1b, 0x5e, 0xb9, 0x23, 0xca, 0x76, 0x30, 0x7c, 0x28, 0x3d, 0xae, 0x42, 0x23, 0xa0, 0xe7, 0x3d, 0x11, 0x5f,
0xe8, 0xb4, 0x34, 0x48, 0x3a, 0x8e, 0x44, 0x66, 0x8f, 0xa0, 0x8c, 0x5f, 0xe9, 0x7a, 0x34, 0xdf, 0x44, 0x80, 0xad, 0x07, 0xf4, 0x9c, 0xd3, 0xe0, 0x5d, 0x3e, 0xa3, 0x17, 0xa9, 0xd0, 0xfe, 0xbe,
0xeb, 0x25, 0x0b, 0xdb, 0x84, 0x32, 0x1f, 0x0c, 0x29, 0x5e, 0xcd, 0xfe, 0xb0, 0x61, 0x1c, 0x47, 0x02, 0x33, 0xcf, 0x82, 0xb3, 0xd0, 0xeb, 0xf3, 0xca, 0x7c, 0x44, 0x47, 0xa1, 0x6a, 0xb1, 0xe2,
0x32, 0x60, 0x08, 0x22, 0x35, 0x17, 0x82, 0x73, 0x33, 0x93, 0xbd, 0x0a, 0xec, 0x98, 0x8b, 0xab, 0x6f, 0x0c, 0x63, 0xbc, 0x91, 0x13, 0x31, 0x59, 0x32, 0xab, 0x21, 0x3a, 0x74, 0x9c, 0xf5, 0xf3,
0x20, 0x7a, 0x6d, 0xde, 0xbd, 0xfe, 0xbb, 0x00, 0x75, 0x83, 0x8c, 0xf1, 0x34, 0xc4, 0x0d, 0xf7, 0x45, 0x2f, 0x4f, 0x43, 0xc8, 0x32, 0x4c, 0xc7, 0xfa, 0xdb, 0x83, 0x1c, 0x65, 0xfd, 0xe5, 0x29,
0x06, 0x9e, 0x3b, 0xe6, 0x82, 0x47, 0xda, 0x35, 0x89, 0x7a, 0xa0, 0x88, 0x94, 0xc1, 0x2e, 0x87, 0xad, 0xbf, 0xcc, 0xef, 0x68, 0xa2, 0x47, 0xc5, 0x05, 0x8f, 0x77, 0x34, 0x31, 0xe4, 0x69, 0x33,
0xbd, 0x60, 0x22, 0x7a, 0x03, 0x3e, 0x8c, 0x38, 0x57, 0x6d, 0xfc, 0x86, 0x7b, 0x39, 0x7c, 0x39, 0xa6, 0xb2, 0x99, 0x87, 0xa1, 0x61, 0x46, 0xa6, 0x4d, 0x1d, 0xc4, 0xf0, 0x21, 0x3e, 0x10, 0x34,
0x11, 0x07, 0x44, 0x43, 0xae, 0xb1, 0x7b, 0x6d, 0x72, 0xa9, 0xcb, 0xc2, 0xd8, 0xbd, 0x4e, 0xb9, 0x42, 0xbc, 0x3a, 0x84, 0xe1, 0x34, 0xff, 0x7c, 0xd1, 0x10, 0x7d, 0x85, 0x1c, 0x6c, 0x7f, 0x06,
0x14, 0x10, 0x92, 0xea, 0x29, 0x25, 0x40, 0xe8, 0x98, 0x74, 0x91, 0x4f, 0x01, 0xe5, 0xd9, 0x14, 0x64, 0x67, 0x30, 0x90, 0x52, 0x49, 0x8b, 0x86, 0xec, 0x3c, 0x96, 0x71, 0x9e, 0x12, 0xbe, 0x95,
0xf0, 0x07, 0xb0, 0x2e, 0x53, 0x80, 0x2f, 0xcf, 0xd1, 0xcb, 0x79, 0xc7, 0x2a, 0xcd, 0xaa, 0x43, 0x72, 0xbe, 0xbb, 0xd0, 0x3c, 0xd4, 0xde, 0x5f, 0xb8, 0x00, 0xd5, 0xcb, 0x8b, 0x14, 0xba, 0x86,
0x26, 0x39, 0x78, 0x13, 0x5a, 0x78, 0x02, 0xed, 0xe2, 0xb1, 0xf7, 0x9d, 0x6c, 0x8d, 0x58, 0x0e, 0x68, 0x0b, 0x56, 0xf4, 0x05, 0xed, 0x7f, 0x06, 0xb2, 0xef, 0x25, 0x2c, 0xdd, 0x5f, 0x5a, 0x5c,
0x9e, 0x4c, 0x97, 0x3c, 0xef, 0x3b, 0x8e, 0x9c, 0x18, 0x86, 0x19, 0x4e, 0xd9, 0x15, 0x59, 0x1c, 0xa9, 0x0a, 0x55, 0x2f, 0xae, 0x24, 0xc6, 0x8b, 0xab, 0x1d, 0xd1, 0x33, 0xcb, 0x1f, 0x6c, 0x03,
0x7b, 0x7e, 0x9e, 0xd3, 0xbd, 0xce, 0x72, 0xd6, 0x14, 0xa7, 0x7b, 0x6d, 0x70, 0xda, 0x5b, 0xb0, 0xea, 0x9e, 0x80, 0x54, 0x9c, 0x99, 0x95, 0xb1, 0x43, 0x51, 0xa6, 0xf3, 0x18, 0xb7, 0x24, 0x78,
0xd4, 0xe5, 0x62, 0x0f, 0x13, 0x84, 0x36, 0x1c, 0xaa, 0x81, 0x5f, 0xf5, 0x64, 0x06, 0xb1, 0x94, 0x34, 0x3e, 0x4e, 0xfa, 0xb1, 0x17, 0xa1, 0x0a, 0xec, 0xef, 0x2d, 0x98, 0x91, 0x47, 0x43, 0xaf,
0xcf, 0xf3, 0x2b, 0xe2, 0xc1, 0x0b, 0x78, 0xca, 0x2f, 0xeb, 0x9b, 0xfd, 0xd7, 0x05, 0xa8, 0x3c, 0x33, 0x5e, 0x9e, 0x64, 0x0d, 0xac, 0x63, 0xe5, 0x6f, 0x0c, 0x45, 0x4d, 0x57, 0xcb, 0x34, 0xbd,
0xf7, 0x2f, 0x03, 0xaf, 0x4f, 0xe0, 0x7a, 0xcc, 0xc7, 0x81, 0x6e, 0x80, 0xe2, 0x6f, 0x4c, 0x54, 0x04, 0xb5, 0xc8, 0x65, 0xa7, 0xbc, 0xe8, 0x68, 0x60, 0xcd, 0xa9, 0x5e, 0xc0, 0xb0, 0x1c, 0x9a,
0xd4, 0x91, 0x09, 0x85, 0x02, 0xbe, 0x7a, 0x88, 0xb1, 0x1b, 0xa5, 0x6d, 0x76, 0xd9, 0x6a, 0xab, 0xca, 0xca, 0x21, 0xd9, 0x21, 0x94, 0xdb, 0x4a, 0x9b, 0x57, 0x8f, 0x44, 0x87, 0x30, 0x83, 0x33,
0x45, 0x49, 0x83, 0x7d, 0x0d, 0x16, 0x22, 0xf3, 0x45, 0xa0, 0x1c, 0xd1, 0x95, 0x34, 0xe9, 0xfd, 0x29, 0xc8, 0x2d, 0xe6, 0xa5, 0x20, 0x49, 0x9d, 0x74, 0xde, 0xee, 0x42, 0xe7, 0x09, 0xf5, 0x29,
0x96, 0x8d, 0xde, 0x2f, 0x5d, 0xb1, 0x64, 0x23, 0x89, 0xd4, 0x8d, 0x57, 0x2c, 0x39, 0xa4, 0x52, 0xa3, 0x3b, 0xbe, 0x9f, 0xe7, 0xbf, 0x0a, 0xd7, 0x4a, 0xe6, 0xa4, 0xb7, 0xfd, 0x1b, 0x2c, 0x3c,
0x18, 0x71, 0xd5, 0x83, 0xc3, 0x24, 0x50, 0x51, 0xa5, 0x50, 0x11, 0x0f, 0x30, 0x0d, 0x7c, 0x00, 0xa1, 0xc7, 0xe3, 0xe1, 0x3e, 0x3d, 0xcb, 0xae, 0x3a, 0x04, 0x6a, 0xc9, 0x69, 0x78, 0x2e, 0x35,
0x75, 0xc9, 0x2f, 0x59, 0xa4, 0x5e, 0x41, 0x92, 0x88, 0x61, 0xce, 0x8b, 0x42, 0x6d, 0xee, 0x8b, 0xc6, 0x7f, 0x93, 0x1b, 0x00, 0x3e, 0xd2, 0xf4, 0x92, 0x88, 0xf6, 0xa5, 0x3d, 0x35, 0x38, 0x72,
0xc2, 0x29, 0xb0, 0xbd, 0xc1, 0x40, 0x29, 0x24, 0x01, 0x01, 0xe9, 0x59, 0x2c, 0xf3, 0x2c, 0x73, 0x14, 0xd1, 0xbe, 0x7d, 0x1f, 0x88, 0xce, 0x47, 0x1e, 0x01, 0x7d, 0x60, 0x7c, 0xdc, 0x4b, 0x26,
0xa4, 0x16, 0xe6, 0x4a, 0x7d, 0x0c, 0xf5, 0x13, 0xe3, 0x3d, 0xe4, 0x2e, 0x6a, 0x4e, 0xbf, 0x84, 0x09, 0xa3, 0x23, 0xe5, 0xfe, 0x3a, 0x64, 0xdf, 0x81, 0xd6, 0xa1, 0x3b, 0x71, 0xe8, 0xd7, 0xf2,
0x68, 0x2b, 0x45, 0xea, 0x01, 0xc4, 0x58, 0xac, 0x60, 0x2c, 0x66, 0x7f, 0x06, 0xec, 0xc8, 0x8b, 0x49, 0x0f, 0xab, 0x31, 0x77, 0x82, 0x06, 0x9a, 0x56, 0x63, 0x7c, 0xda, 0x8e, 0x61, 0x5a, 0x10,
0x45, 0xb2, 0xb5, 0x04, 0x27, 0x69, 0xb0, 0x6a, 0xe2, 0x24, 0x45, 0x23, 0x9c, 0xb4, 0x27, 0xfb, 0x22, 0xd3, 0x01, 0x4d, 0x98, 0x17, 0x88, 0x5b, 0xa2, 0x64, 0xaa, 0x41, 0x05, 0x85, 0x57, 0x4a,
0x5a, 0xf9, 0x33, 0x3d, 0x82, 0xaa, 0x27, 0x49, 0x3a, 0x9d, 0x2c, 0xaa, 0x14, 0xa1, 0x39, 0x93, 0x14, 0x2e, 0x43, 0xb1, 0x6a, 0x0e, 0x4b, 0xcd, 0x1a, 0xd8, 0xc6, 0x36, 0xb4, 0x8d, 0xfb, 0x04,
0x79, 0x4c, 0x4f, 0x8a, 0xd8, 0x9d, 0x9c, 0xc5, 0xfd, 0xc8, 0x0b, 0x51, 0xf5, 0xf6, 0xdf, 0x58, 0x99, 0x81, 0xea, 0xce, 0xfe, 0xfe, 0xfc, 0x15, 0xd2, 0x84, 0x99, 0xe7, 0x87, 0xbb, 0x07, 0xcf,
0x50, 0x51, 0xe7, 0x9a, 0x79, 0x06, 0x52, 0x48, 0xd6, 0x7c, 0x06, 0x9a, 0xdb, 0xf6, 0x9f, 0x35, 0x0e, 0x9e, 0xce, 0x5b, 0x38, 0x78, 0xbc, 0xff, 0xfc, 0x08, 0x07, 0x95, 0xed, 0x3f, 0x2e, 0x43,
0x70, 0x71, 0x8e, 0x81, 0x19, 0x94, 0x42, 0x57, 0x5c, 0x10, 0x8a, 0xa8, 0x39, 0xf4, 0x5b, 0x23, 0x23, 0xcd, 0x86, 0xe4, 0x2b, 0x68, 0x1b, 0xb7, 0x07, 0xb2, 0x2a, 0x55, 0x58, 0x76, 0x1d, 0xe9,
0x9b, 0x72, 0x8a, 0x6c, 0x54, 0x07, 0x4f, 0x6d, 0x29, 0x4e, 0xb5, 0xbf, 0x9a, 0x25, 0xa7, 0x1a, 0x5e, 0x2f, 0x9f, 0x94, 0xaa, 0xba, 0xf9, 0xed, 0x8f, 0x7f, 0xfa, 0xff, 0x4a, 0x87, 0x2c, 0x6f,
0x50, 0xdb, 0xcb, 0x6b, 0x40, 0xb1, 0x3a, 0xc9, 0xbc, 0xdd, 0x81, 0xf6, 0x01, 0x1f, 0x71, 0xc1, 0x9d, 0xdd, 0xdb, 0x92, 0xd7, 0x83, 0x2d, 0xde, 0x05, 0x13, 0x4d, 0xb7, 0x57, 0x30, 0x6b, 0xde,
0xf7, 0x46, 0xa3, 0xbc, 0xfc, 0x3b, 0x70, 0x7b, 0xce, 0x9c, 0x8a, 0xaf, 0xa7, 0xb0, 0x7c, 0xc0, 0x2e, 0xc8, 0x75, 0x33, 0xe3, 0xe6, 0x56, 0xbb, 0x71, 0xc9, 0xac, 0x5c, 0xee, 0x3a, 0x5f, 0x6e,
0xcf, 0x26, 0xc3, 0x23, 0x7e, 0x99, 0xde, 0x55, 0x18, 0x94, 0xe2, 0x8b, 0xe0, 0x4a, 0x59, 0x8b, 0x99, 0x2c, 0xe9, 0xcb, 0xa5, 0x59, 0x8a, 0xf2, 0x36, 0xa9, 0xfe, 0x18, 0x4d, 0x14, 0xbf, 0xf2,
0x7e, 0x63, 0x38, 0x8d, 0x90, 0xa7, 0x17, 0x87, 0xbc, 0xaf, 0x4b, 0x21, 0x51, 0xba, 0x21, 0xef, 0x47, 0xea, 0xee, 0xb5, 0xe2, 0xc3, 0xb3, 0x7c, 0xa9, 0xb6, 0x3b, 0x7c, 0x29, 0x42, 0xe6, 0x71,
0xdb, 0x7f, 0x08, 0xcc, 0x94, 0xa3, 0x8e, 0x80, 0x8e, 0x3f, 0x39, 0xeb, 0xc5, 0xd3, 0x58, 0xf0, 0x29, 0xfd, 0x2d, 0x9a, 0x7c, 0x09, 0x8d, 0xf4, 0xe1, 0x8d, 0xac, 0x68, 0xcf, 0x8c, 0xfa, 0x53,
0xb1, 0x0e, 0x78, 0x88, 0x27, 0x67, 0x5d, 0x49, 0xb1, 0x1f, 0x42, 0xe3, 0xc4, 0x9d, 0x3a, 0xfc, 0x5e, 0xb7, 0x53, 0x9c, 0x90, 0x87, 0x58, 0xe5, 0x9c, 0xaf, 0xda, 0x05, 0xce, 0x0f, 0xad, 0x0d,
0x5b, 0x75, 0xf9, 0x44, 0x40, 0xe2, 0x4e, 0xd1, 0x5d, 0x13, 0x6c, 0x45, 0xd3, 0x76, 0x08, 0x0b, 0xb2, 0x0f, 0x57, 0x65, 0xcc, 0x38, 0xa6, 0x7f, 0xcb, 0x49, 0x4a, 0x9e, 0xd0, 0xef, 0x5a, 0xe4,
0x92, 0x91, 0xdd, 0x93, 0x6f, 0x80, 0x9e, 0x2f, 0x2f, 0x79, 0xca, 0x90, 0x06, 0x69, 0xc6, 0xd6, 0x03, 0xa8, 0xab, 0xb7, 0x48, 0xb2, 0x5c, 0xfe, 0x20, 0xda, 0x5d, 0x29, 0xe0, 0xd2, 0x51, 0x76,
0x85, 0x59, 0x5b, 0xab, 0x8c, 0xab, 0xbb, 0xba, 0x1a, 0x59, 0xf8, 0x93, 0xb1, 0x6e, 0xe5, 0x3e, 0x00, 0xb2, 0xa7, 0x37, 0xd2, 0xb9, 0xec, 0x85, 0x30, 0x15, 0x62, 0xc9, 0x3b, 0xdd, 0x90, 0xbf,
0xda, 0x85, 0x66, 0xe6, 0x4e, 0xc0, 0x2a, 0x50, 0xdc, 0x3b, 0x3a, 0x6a, 0xdd, 0x62, 0x75, 0xa8, 0x3c, 0x9a, 0x2f, 0x7b, 0xe4, 0x9d, 0x8c, 0xbe, 0xf4, 0xcd, 0xef, 0x27, 0x18, 0xda, 0xcb, 0x5c,
0xbc, 0x3c, 0x79, 0x72, 0xfc, 0xfc, 0xf8, 0x59, 0xcb, 0xc2, 0xc1, 0xfe, 0xd1, 0xcb, 0x2e, 0x0e, 0x76, 0xf3, 0x64, 0x16, 0x65, 0x17, 0xd0, 0x73, 0x75, 0x5b, 0xf8, 0x02, 0x9a, 0xda, 0xfb, 0x1c,
0x0a, 0xbb, 0xff, 0xbe, 0x0e, 0xb5, 0xa4, 0xda, 0xb1, 0x5f, 0x41, 0x33, 0x73, 0x03, 0x60, 0x77, 0xd1, 0xfa, 0x33, 0xb9, 0xa7, 0xc0, 0x6e, 0xb7, 0x6c, 0x4a, 0x72, 0x5f, 0xe2, 0xdc, 0x67, 0xed,
0x94, 0xfd, 0xe6, 0x5d, 0x29, 0x3a, 0x77, 0xe7, 0x4f, 0x2a, 0x3b, 0xbd, 0xff, 0xe7, 0xbf, 0xfd, 0x06, 0x72, 0xe7, 0x3d, 0x6a, 0x54, 0xc9, 0x27, 0xe8, 0x3c, 0xb2, 0x91, 0x4f, 0xb2, 0xb7, 0x43,
0x8f, 0xbf, 0x2b, 0xb4, 0xd9, 0xfa, 0xf6, 0xe5, 0x27, 0xdb, 0x0a, 0xe2, 0x6f, 0x53, 0xcf, 0x8a, 0xb3, 0xdd, 0x9f, 0xea, 0xbb, 0xd0, 0xf3, 0xb7, 0x17, 0x38, 0xd7, 0x26, 0xc9, 0xb8, 0x92, 0x8f,
0xfa, 0x66, 0xec, 0x35, 0x2c, 0x66, 0x6f, 0x08, 0xec, 0x6e, 0xb6, 0xa2, 0xe6, 0x56, 0x7b, 0xef, 0x61, 0x46, 0x36, 0xf4, 0xc9, 0xd5, 0x4c, 0xaf, 0x5a, 0xed, 0xd8, 0x5d, 0xce, 0xc3, 0x92, 0xd9,
0x86, 0x59, 0xb5, 0xdc, 0x5d, 0x5a, 0x6e, 0x9d, 0xad, 0x9a, 0xcb, 0xe9, 0xfa, 0xc4, 0x38, 0xb5, 0x22, 0x67, 0xd6, 0x26, 0x4d, 0x64, 0x36, 0xa4, 0xcc, 0x43, 0x1e, 0x3e, 0xcc, 0x99, 0x2d, 0x96,
0x32, 0xcd, 0x27, 0x61, 0xa6, 0xe5, 0xcd, 0x7f, 0x2a, 0xee, 0xdc, 0x9e, 0x7d, 0xfe, 0x55, 0xef, 0x24, 0x75, 0xb3, 0xd2, 0xbe, 0x51, 0xea, 0x66, 0xe5, 0x4d, 0x1d, 0xd3, 0xcd, 0x94, 0x7b, 0x6d,
0xc5, 0x76, 0x9b, 0x96, 0x62, 0xac, 0x85, 0x4b, 0x99, 0x2f, 0xc2, 0xec, 0x97, 0x50, 0x4b, 0x5e, 0xa9, 0x96, 0xd8, 0x7f, 0x40, 0x4b, 0x7f, 0x3d, 0x22, 0x5d, 0xed, 0xe4, 0xb9, 0x97, 0xa6, 0xee,
0xc1, 0xd8, 0x86, 0xf1, 0xe6, 0x67, 0xbe, 0xab, 0x75, 0xda, 0xb3, 0x13, 0xea, 0x10, 0x77, 0x48, 0x6a, 0xe9, 0x9c, 0x29, 0x6e, 0xd2, 0xd2, 0x97, 0x21, 0x5f, 0xc0, 0x9c, 0xd6, 0xc0, 0x3c, 0x9a,
0xf2, 0x9a, 0x3d, 0x23, 0xf9, 0x4b, 0xeb, 0x11, 0x3b, 0x82, 0x35, 0x95, 0x2c, 0xce, 0xf8, 0xff, 0x04, 0xfd, 0x54, 0x9d, 0xc5, 0xc6, 0x66, 0xb7, 0xac, 0xd9, 0x6c, 0xaf, 0x70, 0xc6, 0x0b, 0xb6,
0xe5, 0x24, 0x73, 0x1e, 0xb2, 0x77, 0x2c, 0xf6, 0x53, 0xa8, 0xea, 0x87, 0x41, 0xb6, 0x3e, 0xff, 0xc1, 0x18, 0x55, 0xf9, 0x18, 0x9a, 0x1a, 0x8f, 0x9f, 0xe2, 0xbb, 0xa2, 0x4d, 0xe9, 0xcd, 0xc4,
0x75, 0xb2, 0xb3, 0x31, 0x43, 0x57, 0x51, 0xb2, 0x07, 0x90, 0xbe, 0x83, 0xb1, 0xf6, 0x4d, 0xcf, 0xbb, 0x16, 0xf9, 0xc1, 0x82, 0x96, 0xde, 0x0e, 0x4f, 0x05, 0x50, 0xd2, 0x23, 0x4f, 0xcd, 0xa2,
0x75, 0x89, 0x12, 0xe7, 0x3c, 0x9a, 0x0d, 0xe9, 0x19, 0x30, 0xfb, 0xcc, 0xc6, 0x3e, 0x48, 0xf9, 0xd0, 0xb8, 0xb6, 0x3f, 0xe3, 0x9b, 0x3c, 0xdc, 0x38, 0x30, 0x84, 0xfc, 0xc6, 0x68, 0x70, 0x6d,
0xe7, 0x3e, 0xc0, 0x7d, 0x8f, 0x40, 0x7b, 0x9d, 0x74, 0xd7, 0x62, 0x8b, 0xa8, 0x3b, 0x9f, 0x5f, 0xea, 0xff, 0x64, 0x71, 0x91, 0x9f, 0xd4, 0x1b, 0xbf, 0x17, 0x5b, 0x6f, 0x78, 0x97, 0xfc, 0xe2,
0x69, 0xf8, 0xff, 0x0b, 0xa8, 0x1b, 0x8f, 0x65, 0xcc, 0x68, 0xae, 0xe4, 0xde, 0xe5, 0x3a, 0x9d, 0xae, 0x45, 0x1e, 0x8a, 0xff, 0x95, 0x51, 0xa5, 0x06, 0xd1, 0x1c, 0x3c, 0x2f, 0x36, 0xfd, 0x3f,
0x79, 0x53, 0x4a, 0xfa, 0x2a, 0x49, 0x5f, 0xb4, 0x6b, 0x28, 0x9d, 0xba, 0xcb, 0x68, 0x92, 0xaf, 0x50, 0xd6, 0xad, 0xbb, 0x16, 0xf9, 0x4f, 0xf1, 0xff, 0x15, 0xf2, 0x5b, 0x2e, 0xfd, 0xb7, 0xfd,
0x31, 0x78, 0x54, 0xb3, 0x9d, 0xa5, 0x0f, 0x79, 0xd9, 0x96, 0x7c, 0x62, 0xef, 0x99, 0xbe, 0xbc, 0xde, 0xbe, 0xcd, 0x4f, 0x74, 0xd3, 0xbe, 0x66, 0x9c, 0x28, 0x1f, 0xe1, 0x0e, 0x01, 0xb2, 0xba,
0xbd, 0x4c, 0x52, 0xeb, 0x2c, 0x95, 0xca, 0x5e, 0x40, 0x45, 0x35, 0xdd, 0xd9, 0x5a, 0x6a, 0x57, 0x91, 0xe4, 0x8a, 0xa8, 0xd4, 0xf7, 0x8b, 0xa5, 0xa5, 0xa9, 0x55, 0x55, 0x6b, 0x21, 0xc7, 0xaf,
0x03, 0x1b, 0x76, 0xd6, 0xf3, 0x64, 0x25, 0x6c, 0x85, 0x84, 0x35, 0x59, 0x1d, 0x85, 0x0d, 0xb9, 0x84, 0x41, 0x4a, 0xfa, 0x24, 0x55, 0x6b, 0xb1, 0xfe, 0xeb, 0x76, 0xcb, 0xa6, 0x24, 0xff, 0x7f,
0xf0, 0x50, 0xc6, 0x08, 0x96, 0xf2, 0x2d, 0xf5, 0xbb, 0x37, 0x34, 0x5d, 0xb2, 0x61, 0x36, 0xbf, 0xe0, 0xfc, 0x6f, 0x90, 0x55, 0x9d, 0xff, 0xd6, 0x1b, 0xbd, 0x5e, 0xbc, 0x20, 0x9f, 0x41, 0x7b,
0x25, 0x93, 0x0d, 0x33, 0x1d, 0x5e, 0xdb, 0xaa, 0x3a, 0xb2, 0x3f, 0x85, 0x86, 0xf9, 0xb4, 0xc3, 0x3f, 0x0c, 0x5f, 0x8d, 0xa3, 0xf4, 0x3a, 0x60, 0xd6, 0x3f, 0x58, 0xb3, 0x76, 0x73, 0x87, 0xb2,
0x3a, 0xc6, 0xc9, 0x73, 0xcf, 0x40, 0x9d, 0x3b, 0x73, 0xe7, 0xb2, 0xea, 0x66, 0x0d, 0x73, 0x19, 0x6f, 0x71, 0xce, 0xab, 0xe4, 0x9a, 0xc9, 0x39, 0xab, 0x62, 0x2f, 0x88, 0x0b, 0x0b, 0x69, 0xdc,
0xf6, 0x0b, 0x58, 0x32, 0x7a, 0x8e, 0xdd, 0xa9, 0xdf, 0x4f, 0xcc, 0x39, 0xdb, 0x8b, 0xec, 0xcc, 0x4f, 0x0f, 0xd2, 0x35, 0xf9, 0xe8, 0xc5, 0x64, 0x61, 0x0d, 0x23, 0x13, 0xa7, 0x6b, 0x24, 0x8a,
0x6b, 0x0e, 0xdb, 0x1b, 0x24, 0x78, 0xd9, 0xce, 0x08, 0x46, 0x53, 0xee, 0x43, 0xdd, 0x90, 0xf1, 0xe7, 0x5d, 0x8b, 0x1c, 0x42, 0xeb, 0x09, 0xed, 0x87, 0x03, 0x2a, 0x6b, 0x96, 0xc5, 0x6c, 0xe7,
0x7d, 0x72, 0x37, 0x8c, 0x29, 0xb3, 0x11, 0xb8, 0x63, 0xb1, 0xdf, 0x58, 0xd0, 0x30, 0xdb, 0xd7, 0x69, 0xad, 0xd3, 0x6d, 0x1b, 0xa0, 0x19, 0x09, 0x22, 0x77, 0x12, 0xd3, 0xaf, 0xb7, 0xde, 0xc8,
0x89, 0x02, 0xe6, 0xf4, 0xb4, 0x13, 0xb7, 0x98, 0x69, 0x34, 0xdb, 0x3f, 0xa7, 0x4d, 0x9e, 0x3c, 0x62, 0xe8, 0x42, 0x45, 0x02, 0x55, 0xc0, 0x19, 0x91, 0x20, 0x57, 0xf1, 0x19, 0x91, 0xa0, 0x50,
0x3a, 0xce, 0x28, 0xf9, 0x4d, 0xa6, 0x6b, 0xb5, 0x65, 0xfe, 0x1b, 0xc4, 0xdb, 0xfc, 0xa4, 0xd9, 0xf1, 0x19, 0x91, 0x40, 0x15, 0x90, 0xc4, 0xc7, 0x3a, 0x30, 0x57, 0x24, 0xa6, 0xd9, 0xe3, 0xb2,
0xbe, 0x7d, 0xbb, 0xfd, 0x86, 0xba, 0xda, 0x6f, 0x77, 0x2c, 0xf6, 0xa5, 0xfc, 0x8f, 0x15, 0x8d, 0xd2, 0xb2, 0xbb, 0x76, 0x39, 0x81, 0xb9, 0xda, 0x86, 0xb9, 0xda, 0x11, 0xb4, 0x9f, 0x50, 0x21,
0x31, 0x98, 0x11, 0xe0, 0x79, 0xb5, 0x99, 0xff, 0x07, 0xb2, 0x69, 0xed, 0x58, 0xec, 0xcf, 0xe4, 0x2c, 0xd1, 0x56, 0xe8, 0x9a, 0xa1, 0x45, 0x6f, 0x41, 0xe4, 0xc3, 0x0e, 0x9f, 0x33, 0x03, 0x3d,
0x3f, 0x3b, 0xa8, 0x6f, 0x49, 0xfb, 0xef, 0xfa, 0xbd, 0xfd, 0x80, 0x4e, 0xf4, 0xbe, 0x7d, 0x3b, 0xbf, 0xd3, 0x93, 0x2f, 0xa1, 0xf9, 0x94, 0x32, 0xd5, 0x47, 0x48, 0x73, 0x70, 0xae, 0xb1, 0xd0,
0x73, 0xa2, 0x7c, 0x86, 0x3b, 0x01, 0x48, 0xb1, 0x22, 0xcb, 0xa1, 0xa7, 0x24, 0xf6, 0x67, 0xe1, 0x2d, 0x69, 0x43, 0xd8, 0x6b, 0x9c, 0x5b, 0x97, 0x74, 0x52, 0x6e, 0x5b, 0x74, 0x30, 0xa4, 0x22,
0x64, 0xd6, 0xaa, 0x1a, 0x64, 0xa1, 0xc4, 0x5f, 0x49, 0x87, 0x54, 0xfc, 0x71, 0x62, 0xd6, 0x59, 0x08, 0xf4, 0xbc, 0xc1, 0x05, 0xf9, 0x9c, 0x33, 0x4f, 0xdb, 0x81, 0x8a, 0x79, 0xae, 0x99, 0xd8,
0xe0, 0xd7, 0xe9, 0xcc, 0x9b, 0x52, 0xf2, 0x3f, 0x24, 0xf9, 0xef, 0xb1, 0x3b, 0xa6, 0xfc, 0xed, 0x9d, 0xcb, 0xe1, 0x65, 0x9c, 0x83, 0x70, 0x40, 0xb7, 0xde, 0xc8, 0xae, 0x1c, 0x72, 0x86, 0x4f,
0x37, 0x26, 0x50, 0x7c, 0xcb, 0x7e, 0x0e, 0xcd, 0xa3, 0x20, 0x78, 0x3d, 0x09, 0x13, 0xf4, 0x9f, 0xc6, 0x34, 0x9e, 0x88, 0x46, 0xe9, 0xa2, 0xf1, 0x6f, 0x65, 0x92, 0xab, 0xf1, 0xbf, 0x66, 0xf6,
0x05, 0x3f, 0x58, 0xc6, 0x3b, 0xb9, 0x43, 0xd9, 0xf7, 0x49, 0xf2, 0x1d, 0x76, 0x3b, 0x2b, 0x39, 0x1d, 0xce, 0xf2, 0x16, 0x79, 0x27, 0x63, 0xc9, 0xff, 0xeb, 0x2c, 0xe3, 0xb9, 0xf5, 0xc6, 0x1d,
0x45, 0xb3, 0x6f, 0x99, 0x0b, 0xcb, 0x49, 0xde, 0x4f, 0x0e, 0xd2, 0xc9, 0xca, 0x31, 0x51, 0xe4, 0xb1, 0x0b, 0xf2, 0x92, 0xbf, 0x6e, 0xeb, 0x5d, 0x91, 0x2c, 0xdb, 0xe7, 0x1b, 0x28, 0xa9, 0x58,
0xcc, 0x1a, 0x99, 0x4a, 0x9c, 0xac, 0x11, 0x6b, 0x99, 0x3b, 0x16, 0x3b, 0x81, 0xc6, 0x01, 0xef, 0xb4, 0x29, 0xb3, 0x02, 0x10, 0x2b, 0xf1, 0x1c, 0xc8, 0x4b, 0x1d, 0x71, 0x6d, 0xd7, 0x4a, 0x1d,
0x07, 0x03, 0xae, 0x10, 0xcb, 0x4a, 0xba, 0xf3, 0x04, 0xe9, 0x74, 0x9a, 0x19, 0x62, 0x36, 0x13, 0xe3, 0xde, 0xaf, 0x95, 0x3a, 0xe6, 0xfd, 0x1e, 0x4b, 0x9d, 0xec, 0xa6, 0x90, 0x96, 0x3a, 0x85,
0x84, 0xee, 0x34, 0xe2, 0xdf, 0x6e, 0xbf, 0x51, 0x50, 0xe8, 0xad, 0xce, 0x04, 0x1a, 0xbd, 0x65, 0x4b, 0x48, 0x1a, 0x9d, 0x8a, 0xd7, 0x8a, 0xe3, 0x69, 0xfe, 0x4f, 0xa0, 0xff, 0xf4, 0xd7, 0x00,
0x32, 0x41, 0x0e, 0xee, 0x65, 0x32, 0xc1, 0x0c, 0xdc, 0xcb, 0x64, 0x02, 0x8d, 0x1e, 0xd9, 0x08, 0x00, 0x00, 0xff, 0xff, 0xed, 0x7e, 0x21, 0xa3, 0x36, 0x2a, 0x00, 0x00,
0x41, 0x60, 0x0e, 0x21, 0x26, 0xd5, 0xe3, 0x26, 0x5c, 0xd9, 0xb9, 0x77, 0x33, 0x43, 0x76, 0xb5,
0x47, 0xd9, 0xd5, 0xba, 0xd0, 0x3c, 0xe0, 0x52, 0x59, 0xb2, 0x6d, 0xd0, 0xc9, 0xa6, 0x16, 0xb3,
0xc5, 0x90, 0x4f, 0x3b, 0x34, 0x97, 0x4d, 0xf4, 0x74, 0x67, 0x67, 0xbf, 0x84, 0xfa, 0x33, 0x2e,
0x74, 0x9f, 0x20, 0xa9, 0xc1, 0xb9, 0xc6, 0x41, 0x67, 0x4e, 0x9b, 0xc1, 0xbe, 0x47, 0xd2, 0x3a,
0xac, 0x9d, 0x48, 0xdb, 0xe6, 0x83, 0x21, 0x97, 0x49, 0xa0, 0xe7, 0x0d, 0xde, 0xb2, 0x3f, 0x26,
0xe1, 0x49, 0x6f, 0x4f, 0x0b, 0xcf, 0x35, 0x06, 0x3b, 0x4b, 0x39, 0xfa, 0x3c, 0xc9, 0x7e, 0x30,
0xe0, 0xdb, 0x6f, 0x54, 0xd3, 0x0d, 0x25, 0xc3, 0xd7, 0x13, 0x1e, 0x4d, 0x65, 0xc3, 0x73, 0x25,
0xf3, 0xdf, 0x5d, 0x4a, 0x6a, 0xe6, 0x5f, 0xbe, 0xec, 0x87, 0x24, 0xf2, 0x3e, 0xfb, 0x20, 0x15,
0x49, 0xff, 0x1f, 0x96, 0xca, 0xdc, 0x7e, 0xe3, 0x8e, 0xc5, 0x5b, 0xf6, 0x8a, 0x5e, 0xa0, 0xcd,
0xae, 0x47, 0x5a, 0xed, 0xf3, 0x0d, 0x92, 0x44, 0x2d, 0xc6, 0x54, 0x16, 0x01, 0xc8, 0x95, 0xa8,
0x06, 0x12, 0xd4, 0x91, 0xb7, 0x74, 0x03, 0xea, 0x64, 0xae, 0xf9, 0x06, 0xd4, 0xc9, 0x5e, 0xe7,
0x11, 0xea, 0xa4, 0xd7, 0x84, 0x04, 0xea, 0xcc, 0xdc, 0x40, 0x92, 0xec, 0x34, 0x7b, 0xa7, 0x38,
0x5b, 0xa0, 0x7f, 0xc2, 0xfc, 0xfd, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xbf, 0xc1, 0xca, 0xce,
0xb6, 0x29, 0x00, 0x00,
} }

@ -165,18 +165,18 @@ service Lightning {
} }
message Transaction { message Transaction {
string tx_hash = 1; string tx_hash = 1 [ json_name = "tx_hash" ];
double amount = 2; double amount = 2 [ json_name = "amount" ];
int32 num_confirmations = 3; int32 num_confirmations = 3 [ json_name = "num_confirmations" ];
string block_hash = 4; string block_hash = 4 [ json_name = "block_hash" ];
int32 block_height = 5; int32 block_height = 5 [ json_name = "block_height" ];
int64 time_stamp = 6; int64 time_stamp = 6 [ json_name = "time_stamp" ];
int64 total_fees = 7; int64 total_fees = 7 [ json_name = "total_fees" ];
} }
message GetTransactionsRequest { message GetTransactionsRequest {
} }
message TransactionDetails { message TransactionDetails {
repeated Transaction transactions = 1; repeated Transaction transactions = 1 [ json_name = "transactions" ];
} }
message SendRequest { message SendRequest {
@ -191,26 +191,26 @@ message SendRequest {
string payment_request = 6; string payment_request = 6;
} }
message SendResponse { message SendResponse {
bytes payment_preimage = 1; bytes payment_preimage = 1 [ json_name = "payment_preimage" ];
Route payment_route = 2; Route payment_route = 2 [ json_name = "payment_route" ];
} }
message ChannelPoint { message ChannelPoint {
bytes funding_txid = 1; bytes funding_txid = 1 [ json_name = "funding_txid" ];
string funding_txid_str = 2; string funding_txid_str = 2 [ json_name = "funding_txid_str" ];
uint32 output_index = 3; uint32 output_index = 3 [ json_name = "output_index" ];
} }
message LightningAddress { message LightningAddress {
string pubkey = 1; string pubkey = 1 [ json_name = "pubkey" ];
string host = 2; string host = 2 [ json_name = "host" ];
} }
message SendManyRequest { message SendManyRequest {
map<string, int64> AddrToAmount = 1; map<string, int64> AddrToAmount = 1;
} }
message SendManyResponse { message SendManyResponse {
string txid = 1; string txid = 1 [ json_name = "txid" ];
} }
message SendCoinsRequest { message SendCoinsRequest {
@ -218,7 +218,7 @@ message SendCoinsRequest {
int64 amount = 2; int64 amount = 2;
} }
message SendCoinsResponse { message SendCoinsResponse {
string txid = 1; string txid = 1 [ json_name = "txid" ];
} }
message NewAddressRequest { message NewAddressRequest {
@ -231,7 +231,7 @@ message NewAddressRequest {
} }
message NewWitnessAddressRequest {} message NewWitnessAddressRequest {}
message NewAddressResponse { message NewAddressResponse {
string address = 1; string address = 1 [ json_name = "address" ];
} }
message ConnectPeerRequest { message ConnectPeerRequest {
@ -239,75 +239,75 @@ message ConnectPeerRequest {
bool perm = 2; bool perm = 2;
} }
message ConnectPeerResponse { message ConnectPeerResponse {
int32 peer_id = 1; int32 peer_id = 1 [ json_name = "peer_id" ];
} }
message HTLC { message HTLC {
bool incoming = 1; bool incoming = 1 [ json_name = "incoming" ];
int64 amount = 2; int64 amount = 2 [ json_name = "amount" ];
bytes hash_lock = 3; bytes hash_lock = 3 [ json_name = "hash_lock" ];
uint32 expiration_height = 4; uint32 expiration_height = 4 [ json_name = "expiration_height" ];
uint32 revocation_delay = 5; uint32 revocation_delay = 5 [ json_name = "revocation_delay" ];
} }
message ActiveChannel { message ActiveChannel {
string remote_pubkey = 1; string remote_pubkey = 1 [ json_name = "remote_pubkey" ];
string channel_point = 2; string channel_point = 2 [ json_name = "channel_point" ];
uint64 chan_id = 3; uint64 chan_id = 3 [ json_name = "chan_id" ];
int64 capacity = 4; int64 capacity = 4 [ json_name = "capacity" ];
int64 local_balance = 5; int64 local_balance = 5 [ json_name = "local_balance" ];
int64 remote_balance = 6; int64 remote_balance = 6 [ json_name = "remote_balance" ];
int64 unsettled_balance = 7; int64 unsettled_balance = 7 [ json_name = "unsettled_balance" ];
int64 total_satoshis_sent = 8; int64 total_satoshis_sent = 8 [ json_name = "total_satoshis_sent" ];
int64 total_satoshis_received = 9; int64 total_satoshis_received = 9 [ json_name = "total_satoshis_received" ];
uint64 num_updates = 10; uint64 num_updates = 10 [ json_name = "num_updates" ];
repeated HTLC pending_htlcs = 11; repeated HTLC pending_htlcs = 11 [ json_name = "pending_htlcs" ];
} }
message ListChannelsRequest {} message ListChannelsRequest {}
message ListChannelsResponse { message ListChannelsResponse {
repeated ActiveChannel channels = 11; repeated ActiveChannel channels = 11 [ json_name = "channels" ];
} }
message Peer { message Peer {
string pub_key = 1; string pub_key = 1 [ json_name = "pub_key" ];
int32 peer_id = 2; int32 peer_id = 2 [ json_name = "peer_id" ];
string address = 3; string address = 3 [ json_name = "address" ];
uint64 bytes_sent = 4; uint64 bytes_sent = 4 [ json_name = "bytes_sent" ];
uint64 bytes_recv = 5; uint64 bytes_recv = 5 [ json_name = "bytes_recv" ];
int64 sat_sent = 6; int64 sat_sent = 6 [ json_name = "sat_sent" ];
int64 sat_recv = 7; int64 sat_recv = 7 [ json_name = "sat_recv" ];
bool inbound = 8; bool inbound = 8 [ json_name = "inbound" ];
int64 ping_time = 9; int64 ping_time = 9 [ json_name = "ping_time" ];
} }
message ListPeersRequest {} message ListPeersRequest {}
message ListPeersResponse { message ListPeersResponse {
repeated Peer peers = 1; repeated Peer peers = 1 [ json_name = "peers" ];
} }
message GetInfoRequest{} message GetInfoRequest{}
message GetInfoResponse { message GetInfoResponse {
string identity_pubkey = 1; string identity_pubkey = 1 [ json_name = "identity_pubkey" ];
string alias = 2; string alias = 2 [ json_name = "alias" ];
uint32 num_pending_channels = 3; uint32 num_pending_channels = 3 [ json_name = "num_pending_channels" ];
uint32 num_active_channels = 4; uint32 num_active_channels = 4 [ json_name = "num_active_channels" ];
uint32 num_peers = 5; uint32 num_peers = 5 [ json_name = "num_peers" ];
uint32 block_height = 6; uint32 block_height = 6 [ json_name = "block_height" ];
string block_hash = 8; string block_hash = 8 [ json_name = "block_hash" ];
bool synced_to_chain = 9; bool synced_to_chain = 9 [ json_name = "synced_to_chain" ];
bool testnet = 10; bool testnet = 10 [ json_name = "testnet" ];
} }
message ConfirmationUpdate { message ConfirmationUpdate {
@ -318,13 +318,13 @@ message ConfirmationUpdate {
} }
message ChannelOpenUpdate { message ChannelOpenUpdate {
ChannelPoint channel_point = 1; ChannelPoint channel_point = 1 [ json_name = "channel_point"] ;
} }
message ChannelCloseUpdate { message ChannelCloseUpdate {
bytes closing_txid = 1; bytes closing_txid = 1 [ json_name = "closing_txid" ];
bool success = 2; bool success = 2 [ json_name = "success" ];
} }
message CloseChannelRequest { message CloseChannelRequest {
@ -334,32 +334,32 @@ message CloseChannelRequest {
} }
message CloseStatusUpdate { message CloseStatusUpdate {
oneof update { oneof update {
PendingUpdate close_pending = 1; PendingUpdate close_pending = 1 [ json_name = "close_pending" ];
ConfirmationUpdate confirmation = 2; ConfirmationUpdate confirmation = 2 [ json_name = "confirmation" ];
ChannelCloseUpdate chan_close = 3; ChannelCloseUpdate chan_close = 3 [ json_name = "chan_close" ];
} }
} }
message PendingUpdate { message PendingUpdate {
bytes txid = 1; bytes txid = 1 [ json_name = "txid" ];
uint32 output_index = 2; uint32 output_index = 2 [ json_name = "output_index" ];
} }
message OpenChannelRequest { message OpenChannelRequest {
int32 target_peer_id = 1; int32 target_peer_id = 1 [ json_name = "target_peer_id" ];
bytes node_pubkey = 2; bytes node_pubkey = 2 [ json_name = "node_pubkey" ];
string node_pubkey_string = 3; string node_pubkey_string = 3 [ json_name = "node_pubkey_string" ];
int64 local_funding_amount = 4; int64 local_funding_amount = 4 [ json_name = "local_funding_amount" ];
int64 push_sat = 5; int64 push_sat = 5 [ json_name = "push_sat" ];
uint32 num_confs = 6; uint32 num_confs = 6 [ json_name = "num_confs" ];
} }
message OpenStatusUpdate { message OpenStatusUpdate {
oneof update { oneof update {
PendingUpdate chan_pending = 1; PendingUpdate chan_pending = 1 [ json_name = "chan_pending" ];
ConfirmationUpdate confirmation = 2; ConfirmationUpdate confirmation = 2 [ json_name = "confirmation" ];
ChannelOpenUpdate chan_open = 3; ChannelOpenUpdate chan_open = 3 [ json_name = "chan_open" ];
} }
} }
@ -373,32 +373,32 @@ message PendingChannelRequest {
} }
message PendingChannelResponse { message PendingChannelResponse {
message PendingChannel { message PendingChannel {
string identity_key = 1; string identity_key = 1 [ json_name = "identity_key" ];
string channel_point = 2; string channel_point = 2 [ json_name = "channel_point" ];
int64 capacity = 3; int64 capacity = 3 [ json_name = "capacity" ];
int64 local_balance = 4; int64 local_balance = 4 [ json_name = "local_balance" ];
int64 remote_balance = 5; int64 remote_balance = 5 [ json_name = "remote_balance" ];
string closing_txid = 6; string closing_txid = 6 [ json_name = "closing_txid" ];
ChannelStatus status = 7; ChannelStatus status = 7 [ json_name = "status" ];
} }
repeated PendingChannel pending_channels = 1; repeated PendingChannel pending_channels = 1 [ json_name = "pending_channels" ];
} }
message WalletBalanceRequest { message WalletBalanceRequest {
bool witness_only = 1; bool witness_only = 1;
} }
message WalletBalanceResponse { message WalletBalanceResponse {
double balance = 1; double balance = 1 [ json_name = "balance" ];
} }
message ChannelBalanceRequest { message ChannelBalanceRequest {
} }
message ChannelBalanceResponse { message ChannelBalanceResponse {
int64 balance = 1; int64 balance = 1 [ json_name = "balance" ];
} }
message RouteRequest { message RouteRequest {
@ -407,18 +407,18 @@ message RouteRequest {
} }
message Hop { message Hop {
uint64 chan_id = 1; uint64 chan_id = 1 [ json_name = "chan_id" ];
int64 chan_capacity = 2; int64 chan_capacity = 2 [ json_name = "chan_capacity" ];
int64 amt_to_forward = 3; int64 amt_to_forward = 3 [ json_name = "amt_to_forward" ];
int64 fee = 4; int64 fee = 4 [ json_name = "fee" ];
} }
message Route { message Route {
uint32 total_time_lock = 1; uint32 total_time_lock = 1 [ json_name = "total_time_lock" ];
int64 total_fees = 2; int64 total_fees = 2 [ json_name = "total_fees" ];
int64 total_amt = 3; int64 total_amt = 3 [ json_name = "total_amt" ];
repeated Hop hops = 4; repeated Hop hops = 4 [ json_name = "hops" ];
} }
message NodeInfoRequest{ message NodeInfoRequest{
@ -426,46 +426,46 @@ message NodeInfoRequest{
} }
message NodeInfo { message NodeInfo {
LightningNode node = 1; LightningNode node = 1 [ json_name = "node" ];
uint32 num_channels = 2; uint32 num_channels = 2 [ json_name = "num_channels" ];
int64 total_capacity = 3; int64 total_capacity = 3 [ json_name = "total_capacity" ];
} }
message LightningNode { message LightningNode {
uint32 last_update = 1; uint32 last_update = 1 [ json_name = "last_update" ];
string pub_key = 2; string pub_key = 2 [ json_name = "pub_key" ];
string address = 3; string address = 3 [ json_name = "address" ];
string alias = 4; string alias = 4 [ json_name = "alias" ];
} }
message RoutingPolicy { message RoutingPolicy {
uint32 time_lock_delta = 1; uint32 time_lock_delta = 1 [ json_name = "time_lock_delta" ];
int64 min_htlc = 2; int64 min_htlc = 2 [ json_name = "min_htlc" ];
int64 fee_base_msat = 3; int64 fee_base_msat = 3 [ json_name = "fee_base_msat" ];
int64 fee_rate_milli_msat = 4; int64 fee_rate_milli_msat = 4 [ json_name = "fee_rate_milli_msat" ];
} }
message ChannelEdge { message ChannelEdge {
uint64 channel_id = 1; uint64 channel_id = 1 [ json_name = "channel_id" ];
string chan_point = 2; string chan_point = 2 [ json_name = "chan_point" ];
uint32 last_update = 3; uint32 last_update = 3 [ json_name = "last_update" ];
string node1_pub = 4; string node1_pub = 4 [ json_name = "node1_pub" ];
string node2_pub = 5; string node2_pub = 5 [ json_name = "node2_pub" ];
int64 capacity = 6; int64 capacity = 6 [ json_name = "capacity" ];
RoutingPolicy node1_policy = 7; RoutingPolicy node1_policy = 7 [ json_name = "node1_policy" ];
RoutingPolicy node2_policy = 8; RoutingPolicy node2_policy = 8 [ json_name = "node2_policy" ];
} }
message ChannelGraphRequest{} message ChannelGraphRequest{}
message ChannelGraph { message ChannelGraph {
repeated LightningNode nodes = 1; repeated LightningNode nodes = 1 [ json_name = "nodes" ];
repeated ChannelEdge edges = 2; repeated ChannelEdge edges = 2 [ json_name = "edges" ];
} }
message ChanInfoRequest { message ChanInfoRequest {
@ -474,18 +474,18 @@ message ChanInfoRequest {
message NetworkInfoRequest{} message NetworkInfoRequest{}
message NetworkInfo { message NetworkInfo {
uint32 graph_diameter = 1; uint32 graph_diameter = 1 [ json_name = "graph_diameter" ];
double avg_out_degree = 2; double avg_out_degree = 2 [ json_name = "avg_out_degree" ];
uint32 max_out_degree = 3; uint32 max_out_degree = 3 [ json_name = "max_out_degree" ];
uint32 num_nodes = 4; uint32 num_nodes = 4 [ json_name = "num_nodes" ];
uint32 num_channels = 5; uint32 num_channels = 5 [ json_name = "num_channels" ];
int64 total_network_capacity = 6; int64 total_network_capacity = 6 [ json_name = "total_network_capacity" ];
double avg_channel_size = 7; double avg_channel_size = 7 [ json_name = "avg_channel_size" ];
int64 min_channel_size = 8; int64 min_channel_size = 8 [ json_name = "min_channel_size" ];
int64 max_channel_size = 9; int64 max_channel_size = 9 [ json_name = "max_channel_size" ];
// TODO(roasbeef): fee rate info, expiry // TODO(roasbeef): fee rate info, expiry
// * also additional RPC for tracking fee info once in // * also additional RPC for tracking fee info once in
@ -497,56 +497,56 @@ message SetAliasRequest {
message SetAliasResponse{} message SetAliasResponse{}
message Invoice { message Invoice {
string memo = 1; string memo = 1 [ json_name = "memo" ];
bytes receipt = 2; bytes receipt = 2 [ json_name = "receipt" ];
bytes r_preimage = 3; bytes r_preimage = 3 [ json_name = "r_preimage" ];
bytes r_hash = 4; bytes r_hash = 4 [ json_name = "r_hash" ];
int64 value = 5; int64 value = 5 [ json_name = "value" ];
bool settled = 6; bool settled = 6 [ json_name = "settled" ];
int64 creation_date = 7; int64 creation_date = 7 [ json_name = "creation_date" ];
int64 settle_date = 8; int64 settle_date = 8 [ json_name = "settle_date" ];
string payment_request = 9; string payment_request = 9 [ json_name = "payment_request" ];
} }
message AddInvoiceResponse { message AddInvoiceResponse {
bytes r_hash = 1; bytes r_hash = 1 [ json_name = "r_hash" ];
string payment_request = 2; string payment_request = 2 [ json_name = "payment_request" ];
} }
message PaymentHash { message PaymentHash {
string r_hash_str = 1; string r_hash_str = 1 [ json_name = "r_hash_str" ];
bytes r_hash = 2; bytes r_hash = 2 [ json_name = "r_hash" ];
} }
message ListInvoiceRequest { message ListInvoiceRequest {
bool pending_only = 1; bool pending_only = 1;
} }
message ListInvoiceResponse { message ListInvoiceResponse {
repeated Invoice invoices = 1; repeated Invoice invoices = 1 [ json_name = "invoices" ];
} }
message InvoiceSubscription {} message InvoiceSubscription {}
message Payment { message Payment {
string payment_hash = 1; string payment_hash = 1 [ json_name = "payment_hash" ];
int64 value = 2; int64 value = 2 [ json_name = "value" ];
int64 creation_date = 3; int64 creation_date = 3 [ json_name = "creation_date" ];
repeated string path = 4; repeated string path = 4 [ json_name = "string" ];
int64 fee = 5; int64 fee = 5 [ json_name = "fee" ];
} }
message ListPaymentsRequest { message ListPaymentsRequest {
} }
message ListPaymentsResponse { message ListPaymentsResponse {
repeated Payment payments = 1; repeated Payment payments = 1 [ json_name= "payments" ];
} }
message DeleteAllPaymentsRequest { message DeleteAllPaymentsRequest {
@ -560,14 +560,14 @@ message DebugLevelRequest {
string level_spec = 2; string level_spec = 2;
} }
message DebugLevelResponse { message DebugLevelResponse {
string sub_systems = 1; string sub_systems = 1 [ json_name = "sub_systems" ];
} }
message PayReqString { message PayReqString {
string pay_req = 1; string pay_req = 1;
} }
message PayReq { message PayReq {
string destination = 1; string destination = 1 [ json_name = "destination" ];
string payment_hash = 2; string payment_hash = 2 [ json_name = "payment_hash" ];
int64 num_satoshis = 3; int64 num_satoshis = 3 [ json_name = "num_satoshis" ];
} }

@ -26,6 +26,15 @@
} }
} }
}, },
"parameters": [
{
"name": "witness_only",
"in": "query",
"required": false,
"type": "boolean",
"format": "boolean"
}
],
"tags": [ "tags": [
"Lightning" "Lightning"
] ]
@ -99,6 +108,20 @@
} }
} }
}, },
"parameters": [
{
"name": "status",
"in": "query",
"required": false,
"type": "string",
"enum": [
"ALL",
"OPENING",
"CLOSING"
],
"default": "ALL"
}
],
"tags": [ "tags": [
"Lightning" "Lightning"
] ]
@ -258,8 +281,7 @@
"name": "pub_key", "name": "pub_key",
"in": "path", "in": "path",
"required": true, "required": true,
"type": "string", "type": "string"
"format": "string"
} }
], ],
"tags": [ "tags": [
@ -283,8 +305,7 @@
"name": "pub_key", "name": "pub_key",
"in": "path", "in": "path",
"required": true, "required": true,
"type": "string", "type": "string"
"format": "string"
}, },
{ {
"name": "amt", "name": "amt",
@ -382,8 +403,14 @@
"name": "r_hash_str", "name": "r_hash_str",
"in": "path", "in": "path",
"required": true, "required": true,
"type": "string"
},
{
"name": "r_hash",
"in": "query",
"required": false,
"type": "string", "type": "string",
"format": "string" "format": "byte"
} }
], ],
"tags": [ "tags": [
@ -453,8 +480,7 @@
"name": "pay_req", "name": "pay_req",
"in": "path", "in": "path",
"required": true, "required": true,
"type": "string", "type": "string"
"format": "string"
} }
], ],
"tags": [ "tags": [
@ -557,12 +583,10 @@
"type": "object", "type": "object",
"properties": { "properties": {
"identity_key": { "identity_key": {
"type": "string", "type": "string"
"format": "string"
}, },
"channel_point": { "channel_point": {
"type": "string", "type": "string"
"format": "string"
}, },
"capacity": { "capacity": {
"type": "string", "type": "string",
@ -577,8 +601,7 @@
"format": "int64" "format": "int64"
}, },
"closing_txid": { "closing_txid": {
"type": "string", "type": "string"
"format": "string"
}, },
"status": { "status": {
"$ref": "#/definitions/lnrpcChannelStatus" "$ref": "#/definitions/lnrpcChannelStatus"
@ -589,12 +612,10 @@
"type": "object", "type": "object",
"properties": { "properties": {
"remote_pubkey": { "remote_pubkey": {
"type": "string", "type": "string"
"format": "string"
}, },
"channel_point": { "channel_point": {
"type": "string", "type": "string"
"format": "string"
}, },
"chan_id": { "chan_id": {
"type": "string", "type": "string",
@ -644,8 +665,7 @@
"format": "byte" "format": "byte"
}, },
"payment_request": { "payment_request": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -691,20 +711,17 @@
"format": "uint64" "format": "uint64"
}, },
"chan_point": { "chan_point": {
"type": "string", "type": "string"
"format": "string"
}, },
"last_update": { "last_update": {
"type": "integer", "type": "integer",
"format": "int64" "format": "int64"
}, },
"node1_pub": { "node1_pub": {
"type": "string", "type": "string"
"format": "string"
}, },
"node2_pub": { "node2_pub": {
"type": "string", "type": "string"
"format": "string"
}, },
"capacity": { "capacity": {
"type": "string", "type": "string",
@ -754,8 +771,7 @@
"format": "byte" "format": "byte"
}, },
"funding_txid_str": { "funding_txid_str": {
"type": "string", "type": "string"
"format": "string"
}, },
"output_index": { "output_index": {
"type": "integer", "type": "integer",
@ -848,8 +864,7 @@
"format": "boolean" "format": "boolean"
}, },
"level_spec": { "level_spec": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -857,8 +872,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"sub_systems": { "sub_systems": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -875,12 +889,10 @@
"type": "object", "type": "object",
"properties": { "properties": {
"identity_pubkey": { "identity_pubkey": {
"type": "string", "type": "string"
"format": "string"
}, },
"alias": { "alias": {
"type": "string", "type": "string"
"format": "string"
}, },
"num_pending_channels": { "num_pending_channels": {
"type": "integer", "type": "integer",
@ -899,8 +911,7 @@
"format": "int64" "format": "int64"
}, },
"block_hash": { "block_hash": {
"type": "string", "type": "string"
"format": "string"
}, },
"synced_to_chain": { "synced_to_chain": {
"type": "boolean", "type": "boolean",
@ -965,8 +976,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"memo": { "memo": {
"type": "string", "type": "string"
"format": "string"
}, },
"receipt": { "receipt": {
"type": "string", "type": "string",
@ -997,8 +1007,7 @@
"format": "int64" "format": "int64"
}, },
"payment_request": { "payment_request": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -1009,12 +1018,10 @@
"type": "object", "type": "object",
"properties": { "properties": {
"pubkey": { "pubkey": {
"type": "string", "type": "string"
"format": "string"
}, },
"host": { "host": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -1026,16 +1033,13 @@
"format": "int64" "format": "int64"
}, },
"pub_key": { "pub_key": {
"type": "string", "type": "string"
"format": "string"
}, },
"address": { "address": {
"type": "string", "type": "string"
"format": "string"
}, },
"alias": { "alias": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -1157,8 +1161,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"address": { "address": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -1185,8 +1188,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"pub_key": { "pub_key": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -1202,8 +1204,7 @@
"format": "byte" "format": "byte"
}, },
"node_pubkey_string": { "node_pubkey_string": {
"type": "string", "type": "string"
"format": "string"
}, },
"local_funding_amount": { "local_funding_amount": {
"type": "string", "type": "string",
@ -1237,12 +1238,10 @@
"type": "object", "type": "object",
"properties": { "properties": {
"destination": { "destination": {
"type": "string", "type": "string"
"format": "string"
}, },
"payment_hash": { "payment_hash": {
"type": "string", "type": "string"
"format": "string"
}, },
"num_satoshis": { "num_satoshis": {
"type": "string", "type": "string",
@ -1254,8 +1253,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"pay_req": { "pay_req": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -1263,8 +1261,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"payment_hash": { "payment_hash": {
"type": "string", "type": "string"
"format": "string"
}, },
"value": { "value": {
"type": "string", "type": "string",
@ -1277,8 +1274,7 @@
"path": { "path": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string", "type": "string"
"format": "string"
} }
}, },
"fee": { "fee": {
@ -1291,8 +1287,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"r_hash_str": { "r_hash_str": {
"type": "string", "type": "string"
"format": "string"
}, },
"r_hash": { "r_hash": {
"type": "string", "type": "string",
@ -1304,16 +1299,14 @@
"type": "object", "type": "object",
"properties": { "properties": {
"pub_key": { "pub_key": {
"type": "string", "type": "string"
"format": "string"
}, },
"peer_id": { "peer_id": {
"type": "integer", "type": "integer",
"format": "int32" "format": "int32"
}, },
"address": { "address": {
"type": "string", "type": "string"
"format": "string"
}, },
"bytes_sent": { "bytes_sent": {
"type": "string", "type": "string",
@ -1400,8 +1393,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"pub_key": { "pub_key": {
"type": "string", "type": "string"
"format": "string"
}, },
"amt": { "amt": {
"type": "string", "type": "string",
@ -1434,8 +1426,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"addr": { "addr": {
"type": "string", "type": "string"
"format": "string"
}, },
"amount": { "amount": {
"type": "string", "type": "string",
@ -1447,8 +1438,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"txid": { "txid": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -1468,8 +1458,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"txid": { "txid": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -1481,8 +1470,7 @@
"format": "byte" "format": "byte"
}, },
"dest_string": { "dest_string": {
"type": "string", "type": "string"
"format": "string"
}, },
"amt": { "amt": {
"type": "string", "type": "string",
@ -1493,12 +1481,10 @@
"format": "byte" "format": "byte"
}, },
"payment_hash_string": { "payment_hash_string": {
"type": "string", "type": "string"
"format": "string"
}, },
"payment_request": { "payment_request": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -1518,8 +1504,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"new_alias": { "new_alias": {
"type": "string", "type": "string"
"format": "string"
} }
} }
}, },
@ -1530,8 +1515,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"tx_hash": { "tx_hash": {
"type": "string", "type": "string"
"format": "string"
}, },
"amount": { "amount": {
"type": "number", "type": "number",
@ -1542,8 +1526,7 @@
"format": "int32" "format": "int32"
}, },
"block_hash": { "block_hash": {
"type": "string", "type": "string"
"format": "string"
}, },
"block_height": { "block_height": {
"type": "integer", "type": "integer",