diff --git a/cmd/lncli/commands.go b/cmd/lncli/commands.go index 4559a132..9de932ec 100644 --- a/cmd/lncli/commands.go +++ b/cmd/lncli/commands.go @@ -1729,6 +1729,27 @@ func getInfo(ctx *cli.Context) error { return nil } +var getRecoveryInfoCommand = cli.Command{ + Name: "getrecoveryinfo", + Usage: "Display information about an ongoing recovery attempt.", + Action: actionDecorator(getRecoveryInfo), +} + +func getRecoveryInfo(ctx *cli.Context) error { + ctxb := context.Background() + client, cleanUp := getClient(ctx) + defer cleanUp() + + req := &lnrpc.GetRecoveryInfoRequest{} + resp, err := client.GetRecoveryInfo(ctxb, req) + if err != nil { + return err + } + + printRespJSON(resp) + return nil +} + var pendingChannelsCommand = cli.Command{ Name: "pendingchannels", Category: "Channels", diff --git a/cmd/lncli/main.go b/cmd/lncli/main.go index 52d64ada..86e63764 100644 --- a/cmd/lncli/main.go +++ b/cmd/lncli/main.go @@ -271,6 +271,7 @@ func main() { walletBalanceCommand, channelBalanceCommand, getInfoCommand, + getRecoveryInfoCommand, pendingChannelsCommand, sendPaymentCommand, payInvoiceCommand, diff --git a/docs/recovery.md b/docs/recovery.md index 73ac6920..6341c5f7 100644 --- a/docs/recovery.md +++ b/docs/recovery.md @@ -164,7 +164,15 @@ That final line indicates the rescan is complete! If not all funds have appeared, then the user may need to _repeat_ the process with a higher recovery window. Depending on how old the wallet is (the cipher seed stores the wallet's birthday!) and how many addresses were used, the rescan may take anywhere from -a few minutes to a few hours. +a few minutes to a few hours. To track the recovery progress, one can use the +command `lncli getrecoveryinfo`. When finished, the following is returned, +``` +{ + "recovery_mode": true, + "recovery_finished": true, + "progress": 1 +} +``` If the rescan wasn't able to complete fully (`lnd` was shutdown for example), then from `lncli unlock`, it's possible to _restart_ the rescan from where it diff --git a/lnrpc/README.md b/lnrpc/README.md index e7bab919..75f9f8f7 100644 --- a/lnrpc/README.md +++ b/lnrpc/README.md @@ -55,6 +55,8 @@ description): * Lists all available connected peers. * GetInfo * Returns basic data concerning the daemon. + * GetRecoveryInfo + * Returns information about recovery process. * PendingChannels * List the number of pending (not fully confirmed) channels. * ListChannels diff --git a/lnrpc/rest-annotations.yaml b/lnrpc/rest-annotations.yaml index 068cbf26..8c612901 100644 --- a/lnrpc/rest-annotations.yaml +++ b/lnrpc/rest-annotations.yaml @@ -41,6 +41,8 @@ http: get: "/v1/peers/subscribe" - selector: lnrpc.Lightning.GetInfo get: "/v1/getinfo" + - selector: lnrpc.Lightning.GetRecoveryInfo + get: "/v1/getrecoveryinfo" - selector: lnrpc.Lightning.PendingChannels get: "/v1/channels/pending" - selector: lnrpc.Lightning.ListChannels diff --git a/lnrpc/routerrpc/router.pb.go b/lnrpc/routerrpc/router.pb.go index b85ffa08..f1510fc3 100644 --- a/lnrpc/routerrpc/router.pb.go +++ b/lnrpc/routerrpc/router.pb.go @@ -1876,8 +1876,8 @@ func (m *ForwardHtlcInterceptRequest) GetExpiry() uint32 { } //* -//ForwardHtlcInterceptResponse enables the caller to resolve a previously hold forward. -//The caller can choose either to: +//ForwardHtlcInterceptResponse enables the caller to resolve a previously hold +//forward. The caller can choose either to: //- `Resume`: Execute the default behavior (usually forward). //- `Reject`: Fail the htlc backwards. //- `Settle`: Settle this htlc with a given preimage. diff --git a/lnrpc/routerrpc/router.proto b/lnrpc/routerrpc/router.proto index cb06d68d..fd61b887 100644 --- a/lnrpc/routerrpc/router.proto +++ b/lnrpc/routerrpc/router.proto @@ -98,7 +98,7 @@ service Router { rpc TrackPayment (TrackPaymentRequest) returns (stream PaymentStatus) { option deprecated = true; } - + /** HtlcInterceptor dispatches a bi-directional streaming RPC in which Forwarded HTLC requests are sent to the client and the client responds with @@ -106,7 +106,8 @@ service Router { In case of interception, the htlc can be either settled, cancelled or resumed later by using the ResolveHoldForward endpoint. */ - rpc HtlcInterceptor (stream ForwardHtlcInterceptResponse) returns (stream ForwardHtlcInterceptRequest); + rpc HtlcInterceptor (stream ForwardHtlcInterceptResponse) + returns (stream ForwardHtlcInterceptRequest); } message SendPaymentRequest { @@ -589,7 +590,7 @@ message PaymentStatus { repeated lnrpc.HTLCAttempt htlcs = 4; } -message CircuitKey { +message CircuitKey { /// The id of the channel that the is part of this circuit. uint64 chan_id = 1; @@ -618,14 +619,14 @@ message ForwardHtlcInterceptRequest { } /** -ForwardHtlcInterceptResponse enables the caller to resolve a previously hold forward. -The caller can choose either to: +ForwardHtlcInterceptResponse enables the caller to resolve a previously hold +forward. The caller can choose either to: - `Resume`: Execute the default behavior (usually forward). - `Reject`: Fail the htlc backwards. - `Settle`: Settle this htlc with a given preimage. */ message ForwardHtlcInterceptResponse { - /** + /** The key of this forwarded htlc. It defines the incoming channel id and the index in this channel. */ @@ -638,9 +639,8 @@ message ForwardHtlcInterceptResponse { bytes preimage = 3; } -enum ResolveHoldForwardAction { +enum ResolveHoldForwardAction { SETTLE = 0; FAIL = 1; - RESUME = 2; + RESUME = 2; } - diff --git a/lnrpc/rpc.pb.go b/lnrpc/rpc.pb.go index 3d81001b..54b14d2b 100644 --- a/lnrpc/rpc.pb.go +++ b/lnrpc/rpc.pb.go @@ -431,7 +431,7 @@ func (x PendingChannelsResponse_ForceClosedChannel_AnchorState) String() string } func (PendingChannelsResponse_ForceClosedChannel_AnchorState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{68, 5, 0} + return fileDescriptor_77a6da22d6a3feb1, []int{70, 5, 0} } type ChannelEventUpdate_UpdateType int32 @@ -465,7 +465,7 @@ func (x ChannelEventUpdate_UpdateType) String() string { } func (ChannelEventUpdate_UpdateType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{70, 0} + return fileDescriptor_77a6da22d6a3feb1, []int{72, 0} } type Invoice_InvoiceState int32 @@ -496,7 +496,7 @@ func (x Invoice_InvoiceState) String() string { } func (Invoice_InvoiceState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{105, 0} + return fileDescriptor_77a6da22d6a3feb1, []int{107, 0} } type Payment_PaymentStatus int32 @@ -527,7 +527,7 @@ func (x Payment_PaymentStatus) String() string { } func (Payment_PaymentStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{112, 0} + return fileDescriptor_77a6da22d6a3feb1, []int{114, 0} } type HTLCAttempt_HTLCStatus int32 @@ -555,7 +555,7 @@ func (x HTLCAttempt_HTLCStatus) String() string { } func (HTLCAttempt_HTLCStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{113, 0} + return fileDescriptor_77a6da22d6a3feb1, []int{115, 0} } type Failure_FailureCode int32 @@ -666,7 +666,7 @@ func (x Failure_FailureCode) String() string { } func (Failure_FailureCode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{146, 0} + return fileDescriptor_77a6da22d6a3feb1, []int{148, 0} } type Utxo struct { @@ -3983,6 +3983,95 @@ func (m *GetInfoResponse) GetFeatures() map[uint32]*Feature { return nil } +type GetRecoveryInfoRequest struct { + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetRecoveryInfoRequest) Reset() { *m = GetRecoveryInfoRequest{} } +func (m *GetRecoveryInfoRequest) String() string { return proto.CompactTextString(m) } +func (*GetRecoveryInfoRequest) ProtoMessage() {} +func (*GetRecoveryInfoRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_77a6da22d6a3feb1, []int{46} +} + +func (m *GetRecoveryInfoRequest) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetRecoveryInfoRequest.Unmarshal(m, b) +} +func (m *GetRecoveryInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetRecoveryInfoRequest.Marshal(b, m, deterministic) +} +func (m *GetRecoveryInfoRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetRecoveryInfoRequest.Merge(m, src) +} +func (m *GetRecoveryInfoRequest) XXX_Size() int { + return xxx_messageInfo_GetRecoveryInfoRequest.Size(m) +} +func (m *GetRecoveryInfoRequest) XXX_DiscardUnknown() { + xxx_messageInfo_GetRecoveryInfoRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_GetRecoveryInfoRequest proto.InternalMessageInfo + +type GetRecoveryInfoResponse struct { + // Whether the wallet is in recovery mode + RecoveryMode bool `protobuf:"varint,1,opt,name=recovery_mode,json=recoveryMode,proto3" json:"recovery_mode,omitempty"` + // Whether the wallet recovery progress is finished + RecoveryFinished bool `protobuf:"varint,2,opt,name=recovery_finished,json=recoveryFinished,proto3" json:"recovery_finished,omitempty"` + // The recovery progress, ranging from 0 to 1. + Progress float64 `protobuf:"fixed64,3,opt,name=progress,proto3" json:"progress,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *GetRecoveryInfoResponse) Reset() { *m = GetRecoveryInfoResponse{} } +func (m *GetRecoveryInfoResponse) String() string { return proto.CompactTextString(m) } +func (*GetRecoveryInfoResponse) ProtoMessage() {} +func (*GetRecoveryInfoResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_77a6da22d6a3feb1, []int{47} +} + +func (m *GetRecoveryInfoResponse) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_GetRecoveryInfoResponse.Unmarshal(m, b) +} +func (m *GetRecoveryInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_GetRecoveryInfoResponse.Marshal(b, m, deterministic) +} +func (m *GetRecoveryInfoResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_GetRecoveryInfoResponse.Merge(m, src) +} +func (m *GetRecoveryInfoResponse) XXX_Size() int { + return xxx_messageInfo_GetRecoveryInfoResponse.Size(m) +} +func (m *GetRecoveryInfoResponse) XXX_DiscardUnknown() { + xxx_messageInfo_GetRecoveryInfoResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_GetRecoveryInfoResponse proto.InternalMessageInfo + +func (m *GetRecoveryInfoResponse) GetRecoveryMode() bool { + if m != nil { + return m.RecoveryMode + } + return false +} + +func (m *GetRecoveryInfoResponse) GetRecoveryFinished() bool { + if m != nil { + return m.RecoveryFinished + } + return false +} + +func (m *GetRecoveryInfoResponse) GetProgress() float64 { + if m != nil { + return m.Progress + } + return 0 +} + type Chain struct { // The blockchain the node is on (eg bitcoin, litecoin) Chain string `protobuf:"bytes,1,opt,name=chain,proto3" json:"chain,omitempty"` @@ -3997,7 +4086,7 @@ func (m *Chain) Reset() { *m = Chain{} } func (m *Chain) String() string { return proto.CompactTextString(m) } func (*Chain) ProtoMessage() {} func (*Chain) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{46} + return fileDescriptor_77a6da22d6a3feb1, []int{48} } func (m *Chain) XXX_Unmarshal(b []byte) error { @@ -4045,7 +4134,7 @@ func (m *ConfirmationUpdate) Reset() { *m = ConfirmationUpdate{} } func (m *ConfirmationUpdate) String() string { return proto.CompactTextString(m) } func (*ConfirmationUpdate) ProtoMessage() {} func (*ConfirmationUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{47} + return fileDescriptor_77a6da22d6a3feb1, []int{49} } func (m *ConfirmationUpdate) XXX_Unmarshal(b []byte) error { @@ -4098,7 +4187,7 @@ func (m *ChannelOpenUpdate) Reset() { *m = ChannelOpenUpdate{} } func (m *ChannelOpenUpdate) String() string { return proto.CompactTextString(m) } func (*ChannelOpenUpdate) ProtoMessage() {} func (*ChannelOpenUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{48} + return fileDescriptor_77a6da22d6a3feb1, []int{50} } func (m *ChannelOpenUpdate) XXX_Unmarshal(b []byte) error { @@ -4138,7 +4227,7 @@ func (m *ChannelCloseUpdate) Reset() { *m = ChannelCloseUpdate{} } func (m *ChannelCloseUpdate) String() string { return proto.CompactTextString(m) } func (*ChannelCloseUpdate) ProtoMessage() {} func (*ChannelCloseUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{49} + return fileDescriptor_77a6da22d6a3feb1, []int{51} } func (m *ChannelCloseUpdate) XXX_Unmarshal(b []byte) error { @@ -4203,7 +4292,7 @@ func (m *CloseChannelRequest) Reset() { *m = CloseChannelRequest{} } func (m *CloseChannelRequest) String() string { return proto.CompactTextString(m) } func (*CloseChannelRequest) ProtoMessage() {} func (*CloseChannelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{50} + return fileDescriptor_77a6da22d6a3feb1, []int{52} } func (m *CloseChannelRequest) XXX_Unmarshal(b []byte) error { @@ -4273,7 +4362,7 @@ func (m *CloseStatusUpdate) Reset() { *m = CloseStatusUpdate{} } func (m *CloseStatusUpdate) String() string { return proto.CompactTextString(m) } func (*CloseStatusUpdate) ProtoMessage() {} func (*CloseStatusUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{51} + return fileDescriptor_77a6da22d6a3feb1, []int{53} } func (m *CloseStatusUpdate) XXX_Unmarshal(b []byte) error { @@ -4351,7 +4440,7 @@ func (m *PendingUpdate) Reset() { *m = PendingUpdate{} } func (m *PendingUpdate) String() string { return proto.CompactTextString(m) } func (*PendingUpdate) ProtoMessage() {} func (*PendingUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{52} + return fileDescriptor_77a6da22d6a3feb1, []int{54} } func (m *PendingUpdate) XXX_Unmarshal(b []byte) error { @@ -4410,7 +4499,7 @@ func (m *ReadyForPsbtFunding) Reset() { *m = ReadyForPsbtFunding{} } func (m *ReadyForPsbtFunding) String() string { return proto.CompactTextString(m) } func (*ReadyForPsbtFunding) ProtoMessage() {} func (*ReadyForPsbtFunding) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{53} + return fileDescriptor_77a6da22d6a3feb1, []int{55} } func (m *ReadyForPsbtFunding) XXX_Unmarshal(b []byte) error { @@ -4513,7 +4602,7 @@ func (m *OpenChannelRequest) Reset() { *m = OpenChannelRequest{} } func (m *OpenChannelRequest) String() string { return proto.CompactTextString(m) } func (*OpenChannelRequest) ProtoMessage() {} func (*OpenChannelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{54} + return fileDescriptor_77a6da22d6a3feb1, []int{56} } func (m *OpenChannelRequest) XXX_Unmarshal(b []byte) error { @@ -4645,7 +4734,7 @@ func (m *OpenStatusUpdate) Reset() { *m = OpenStatusUpdate{} } func (m *OpenStatusUpdate) String() string { return proto.CompactTextString(m) } func (*OpenStatusUpdate) ProtoMessage() {} func (*OpenStatusUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{55} + return fileDescriptor_77a6da22d6a3feb1, []int{57} } func (m *OpenStatusUpdate) XXX_Unmarshal(b []byte) error { @@ -4746,7 +4835,7 @@ func (m *KeyLocator) Reset() { *m = KeyLocator{} } func (m *KeyLocator) String() string { return proto.CompactTextString(m) } func (*KeyLocator) ProtoMessage() {} func (*KeyLocator) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{56} + return fileDescriptor_77a6da22d6a3feb1, []int{58} } func (m *KeyLocator) XXX_Unmarshal(b []byte) error { @@ -4797,7 +4886,7 @@ func (m *KeyDescriptor) Reset() { *m = KeyDescriptor{} } func (m *KeyDescriptor) String() string { return proto.CompactTextString(m) } func (*KeyDescriptor) ProtoMessage() {} func (*KeyDescriptor) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{57} + return fileDescriptor_77a6da22d6a3feb1, []int{59} } func (m *KeyDescriptor) XXX_Unmarshal(b []byte) error { @@ -4864,7 +4953,7 @@ func (m *ChanPointShim) Reset() { *m = ChanPointShim{} } func (m *ChanPointShim) String() string { return proto.CompactTextString(m) } func (*ChanPointShim) ProtoMessage() {} func (*ChanPointShim) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{58} + return fileDescriptor_77a6da22d6a3feb1, []int{60} } func (m *ChanPointShim) XXX_Unmarshal(b []byte) error { @@ -4946,7 +5035,7 @@ func (m *PsbtShim) Reset() { *m = PsbtShim{} } func (m *PsbtShim) String() string { return proto.CompactTextString(m) } func (*PsbtShim) ProtoMessage() {} func (*PsbtShim) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{59} + return fileDescriptor_77a6da22d6a3feb1, []int{61} } func (m *PsbtShim) XXX_Unmarshal(b []byte) error { @@ -4995,7 +5084,7 @@ func (m *FundingShim) Reset() { *m = FundingShim{} } func (m *FundingShim) String() string { return proto.CompactTextString(m) } func (*FundingShim) ProtoMessage() {} func (*FundingShim) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{60} + return fileDescriptor_77a6da22d6a3feb1, []int{62} } func (m *FundingShim) XXX_Unmarshal(b []byte) error { @@ -5073,7 +5162,7 @@ func (m *FundingShimCancel) Reset() { *m = FundingShimCancel{} } func (m *FundingShimCancel) String() string { return proto.CompactTextString(m) } func (*FundingShimCancel) ProtoMessage() {} func (*FundingShimCancel) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{61} + return fileDescriptor_77a6da22d6a3feb1, []int{63} } func (m *FundingShimCancel) XXX_Unmarshal(b []byte) error { @@ -5118,7 +5207,7 @@ func (m *FundingPsbtVerify) Reset() { *m = FundingPsbtVerify{} } func (m *FundingPsbtVerify) String() string { return proto.CompactTextString(m) } func (*FundingPsbtVerify) ProtoMessage() {} func (*FundingPsbtVerify) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{62} + return fileDescriptor_77a6da22d6a3feb1, []int{64} } func (m *FundingPsbtVerify) XXX_Unmarshal(b []byte) error { @@ -5170,7 +5259,7 @@ func (m *FundingPsbtFinalize) Reset() { *m = FundingPsbtFinalize{} } func (m *FundingPsbtFinalize) String() string { return proto.CompactTextString(m) } func (*FundingPsbtFinalize) ProtoMessage() {} func (*FundingPsbtFinalize) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{63} + return fileDescriptor_77a6da22d6a3feb1, []int{65} } func (m *FundingPsbtFinalize) XXX_Unmarshal(b []byte) error { @@ -5221,7 +5310,7 @@ func (m *FundingTransitionMsg) Reset() { *m = FundingTransitionMsg{} } func (m *FundingTransitionMsg) String() string { return proto.CompactTextString(m) } func (*FundingTransitionMsg) ProtoMessage() {} func (*FundingTransitionMsg) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{64} + return fileDescriptor_77a6da22d6a3feb1, []int{66} } func (m *FundingTransitionMsg) XXX_Unmarshal(b []byte) error { @@ -5325,7 +5414,7 @@ func (m *FundingStateStepResp) Reset() { *m = FundingStateStepResp{} } func (m *FundingStateStepResp) String() string { return proto.CompactTextString(m) } func (*FundingStateStepResp) ProtoMessage() {} func (*FundingStateStepResp) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{65} + return fileDescriptor_77a6da22d6a3feb1, []int{67} } func (m *FundingStateStepResp) XXX_Unmarshal(b []byte) error { @@ -5371,7 +5460,7 @@ func (m *PendingHTLC) Reset() { *m = PendingHTLC{} } func (m *PendingHTLC) String() string { return proto.CompactTextString(m) } func (*PendingHTLC) ProtoMessage() {} func (*PendingHTLC) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{66} + return fileDescriptor_77a6da22d6a3feb1, []int{68} } func (m *PendingHTLC) XXX_Unmarshal(b []byte) error { @@ -5444,7 +5533,7 @@ func (m *PendingChannelsRequest) Reset() { *m = PendingChannelsRequest{} func (m *PendingChannelsRequest) String() string { return proto.CompactTextString(m) } func (*PendingChannelsRequest) ProtoMessage() {} func (*PendingChannelsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{67} + return fileDescriptor_77a6da22d6a3feb1, []int{69} } func (m *PendingChannelsRequest) XXX_Unmarshal(b []byte) error { @@ -5488,7 +5577,7 @@ func (m *PendingChannelsResponse) Reset() { *m = PendingChannelsResponse func (m *PendingChannelsResponse) String() string { return proto.CompactTextString(m) } func (*PendingChannelsResponse) ProtoMessage() {} func (*PendingChannelsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{68} + return fileDescriptor_77a6da22d6a3feb1, []int{70} } func (m *PendingChannelsResponse) XXX_Unmarshal(b []byte) error { @@ -5573,7 +5662,7 @@ func (m *PendingChannelsResponse_PendingChannel) Reset() { func (m *PendingChannelsResponse_PendingChannel) String() string { return proto.CompactTextString(m) } func (*PendingChannelsResponse_PendingChannel) ProtoMessage() {} func (*PendingChannelsResponse_PendingChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{68, 0} + return fileDescriptor_77a6da22d6a3feb1, []int{70, 0} } func (m *PendingChannelsResponse_PendingChannel) XXX_Unmarshal(b []byte) error { @@ -5689,7 +5778,7 @@ func (m *PendingChannelsResponse_PendingOpenChannel) String() string { } func (*PendingChannelsResponse_PendingOpenChannel) ProtoMessage() {} func (*PendingChannelsResponse_PendingOpenChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{68, 1} + return fileDescriptor_77a6da22d6a3feb1, []int{70, 1} } func (m *PendingChannelsResponse_PendingOpenChannel) XXX_Unmarshal(b []byte) error { @@ -5767,7 +5856,7 @@ func (m *PendingChannelsResponse_WaitingCloseChannel) String() string { } func (*PendingChannelsResponse_WaitingCloseChannel) ProtoMessage() {} func (*PendingChannelsResponse_WaitingCloseChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{68, 2} + return fileDescriptor_77a6da22d6a3feb1, []int{70, 2} } func (m *PendingChannelsResponse_WaitingCloseChannel) XXX_Unmarshal(b []byte) error { @@ -5837,7 +5926,7 @@ func (m *PendingChannelsResponse_Commitments) Reset() { *m = PendingChan func (m *PendingChannelsResponse_Commitments) String() string { return proto.CompactTextString(m) } func (*PendingChannelsResponse_Commitments) ProtoMessage() {} func (*PendingChannelsResponse_Commitments) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{68, 3} + return fileDescriptor_77a6da22d6a3feb1, []int{70, 3} } func (m *PendingChannelsResponse_Commitments) XXX_Unmarshal(b []byte) error { @@ -5914,7 +6003,7 @@ func (m *PendingChannelsResponse_ClosedChannel) Reset() { *m = PendingCh func (m *PendingChannelsResponse_ClosedChannel) String() string { return proto.CompactTextString(m) } func (*PendingChannelsResponse_ClosedChannel) ProtoMessage() {} func (*PendingChannelsResponse_ClosedChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{68, 4} + return fileDescriptor_77a6da22d6a3feb1, []int{70, 4} } func (m *PendingChannelsResponse_ClosedChannel) XXX_Unmarshal(b []byte) error { @@ -5980,7 +6069,7 @@ func (m *PendingChannelsResponse_ForceClosedChannel) String() string { } func (*PendingChannelsResponse_ForceClosedChannel) ProtoMessage() {} func (*PendingChannelsResponse_ForceClosedChannel) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{68, 5} + return fileDescriptor_77a6da22d6a3feb1, []int{70, 5} } func (m *PendingChannelsResponse_ForceClosedChannel) XXX_Unmarshal(b []byte) error { @@ -6067,7 +6156,7 @@ func (m *ChannelEventSubscription) Reset() { *m = ChannelEventSubscripti func (m *ChannelEventSubscription) String() string { return proto.CompactTextString(m) } func (*ChannelEventSubscription) ProtoMessage() {} func (*ChannelEventSubscription) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{69} + return fileDescriptor_77a6da22d6a3feb1, []int{71} } func (m *ChannelEventSubscription) XXX_Unmarshal(b []byte) error { @@ -6106,7 +6195,7 @@ func (m *ChannelEventUpdate) Reset() { *m = ChannelEventUpdate{} } func (m *ChannelEventUpdate) String() string { return proto.CompactTextString(m) } func (*ChannelEventUpdate) ProtoMessage() {} func (*ChannelEventUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{70} + return fileDescriptor_77a6da22d6a3feb1, []int{72} } func (m *ChannelEventUpdate) XXX_Unmarshal(b []byte) error { @@ -6231,7 +6320,7 @@ func (m *WalletBalanceRequest) Reset() { *m = WalletBalanceRequest{} } func (m *WalletBalanceRequest) String() string { return proto.CompactTextString(m) } func (*WalletBalanceRequest) ProtoMessage() {} func (*WalletBalanceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{71} + return fileDescriptor_77a6da22d6a3feb1, []int{73} } func (m *WalletBalanceRequest) XXX_Unmarshal(b []byte) error { @@ -6268,7 +6357,7 @@ func (m *WalletBalanceResponse) Reset() { *m = WalletBalanceResponse{} } func (m *WalletBalanceResponse) String() string { return proto.CompactTextString(m) } func (*WalletBalanceResponse) ProtoMessage() {} func (*WalletBalanceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{72} + return fileDescriptor_77a6da22d6a3feb1, []int{74} } func (m *WalletBalanceResponse) XXX_Unmarshal(b []byte) error { @@ -6320,7 +6409,7 @@ func (m *ChannelBalanceRequest) Reset() { *m = ChannelBalanceRequest{} } func (m *ChannelBalanceRequest) String() string { return proto.CompactTextString(m) } func (*ChannelBalanceRequest) ProtoMessage() {} func (*ChannelBalanceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{73} + return fileDescriptor_77a6da22d6a3feb1, []int{75} } func (m *ChannelBalanceRequest) XXX_Unmarshal(b []byte) error { @@ -6355,7 +6444,7 @@ func (m *ChannelBalanceResponse) Reset() { *m = ChannelBalanceResponse{} func (m *ChannelBalanceResponse) String() string { return proto.CompactTextString(m) } func (*ChannelBalanceResponse) ProtoMessage() {} func (*ChannelBalanceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{74} + return fileDescriptor_77a6da22d6a3feb1, []int{76} } func (m *ChannelBalanceResponse) XXX_Unmarshal(b []byte) error { @@ -6473,7 +6562,7 @@ func (m *QueryRoutesRequest) Reset() { *m = QueryRoutesRequest{} } func (m *QueryRoutesRequest) String() string { return proto.CompactTextString(m) } func (*QueryRoutesRequest) ProtoMessage() {} func (*QueryRoutesRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{75} + return fileDescriptor_77a6da22d6a3feb1, []int{77} } func (m *QueryRoutesRequest) XXX_Unmarshal(b []byte) error { @@ -6625,7 +6714,7 @@ func (m *NodePair) Reset() { *m = NodePair{} } func (m *NodePair) String() string { return proto.CompactTextString(m) } func (*NodePair) ProtoMessage() {} func (*NodePair) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{76} + return fileDescriptor_77a6da22d6a3feb1, []int{78} } func (m *NodePair) XXX_Unmarshal(b []byte) error { @@ -6678,7 +6767,7 @@ func (m *EdgeLocator) Reset() { *m = EdgeLocator{} } func (m *EdgeLocator) String() string { return proto.CompactTextString(m) } func (*EdgeLocator) ProtoMessage() {} func (*EdgeLocator) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{77} + return fileDescriptor_77a6da22d6a3feb1, []int{79} } func (m *EdgeLocator) XXX_Unmarshal(b []byte) error { @@ -6731,7 +6820,7 @@ func (m *QueryRoutesResponse) Reset() { *m = QueryRoutesResponse{} } func (m *QueryRoutesResponse) String() string { return proto.CompactTextString(m) } func (*QueryRoutesResponse) ProtoMessage() {} func (*QueryRoutesResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{78} + return fileDescriptor_77a6da22d6a3feb1, []int{80} } func (m *QueryRoutesResponse) XXX_Unmarshal(b []byte) error { @@ -6807,7 +6896,7 @@ func (m *Hop) Reset() { *m = Hop{} } func (m *Hop) String() string { return proto.CompactTextString(m) } func (*Hop) ProtoMessage() {} func (*Hop) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{79} + return fileDescriptor_77a6da22d6a3feb1, []int{81} } func (m *Hop) XXX_Unmarshal(b []byte) error { @@ -6929,7 +7018,7 @@ func (m *MPPRecord) Reset() { *m = MPPRecord{} } func (m *MPPRecord) String() string { return proto.CompactTextString(m) } func (*MPPRecord) ProtoMessage() {} func (*MPPRecord) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{80} + return fileDescriptor_77a6da22d6a3feb1, []int{82} } func (m *MPPRecord) XXX_Unmarshal(b []byte) error { @@ -7007,7 +7096,7 @@ func (m *Route) Reset() { *m = Route{} } func (m *Route) String() string { return proto.CompactTextString(m) } func (*Route) ProtoMessage() {} func (*Route) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{81} + return fileDescriptor_77a6da22d6a3feb1, []int{83} } func (m *Route) XXX_Unmarshal(b []byte) error { @@ -7086,7 +7175,7 @@ func (m *NodeInfoRequest) Reset() { *m = NodeInfoRequest{} } func (m *NodeInfoRequest) String() string { return proto.CompactTextString(m) } func (*NodeInfoRequest) ProtoMessage() {} func (*NodeInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{82} + return fileDescriptor_77a6da22d6a3feb1, []int{84} } func (m *NodeInfoRequest) XXX_Unmarshal(b []byte) error { @@ -7143,7 +7232,7 @@ func (m *NodeInfo) Reset() { *m = NodeInfo{} } func (m *NodeInfo) String() string { return proto.CompactTextString(m) } func (*NodeInfo) ProtoMessage() {} func (*NodeInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{83} + return fileDescriptor_77a6da22d6a3feb1, []int{85} } func (m *NodeInfo) XXX_Unmarshal(b []byte) error { @@ -7213,7 +7302,7 @@ func (m *LightningNode) Reset() { *m = LightningNode{} } func (m *LightningNode) String() string { return proto.CompactTextString(m) } func (*LightningNode) ProtoMessage() {} func (*LightningNode) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{84} + return fileDescriptor_77a6da22d6a3feb1, []int{86} } func (m *LightningNode) XXX_Unmarshal(b []byte) error { @@ -7288,7 +7377,7 @@ func (m *NodeAddress) Reset() { *m = NodeAddress{} } func (m *NodeAddress) String() string { return proto.CompactTextString(m) } func (*NodeAddress) ProtoMessage() {} func (*NodeAddress) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{85} + return fileDescriptor_77a6da22d6a3feb1, []int{87} } func (m *NodeAddress) XXX_Unmarshal(b []byte) error { @@ -7340,7 +7429,7 @@ func (m *RoutingPolicy) Reset() { *m = RoutingPolicy{} } func (m *RoutingPolicy) String() string { return proto.CompactTextString(m) } func (*RoutingPolicy) ProtoMessage() {} func (*RoutingPolicy) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{86} + return fileDescriptor_77a6da22d6a3feb1, []int{88} } func (m *RoutingPolicy) XXX_Unmarshal(b []byte) error { @@ -7438,7 +7527,7 @@ func (m *ChannelEdge) Reset() { *m = ChannelEdge{} } func (m *ChannelEdge) String() string { return proto.CompactTextString(m) } func (*ChannelEdge) ProtoMessage() {} func (*ChannelEdge) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{87} + return fileDescriptor_77a6da22d6a3feb1, []int{89} } func (m *ChannelEdge) XXX_Unmarshal(b []byte) error { @@ -7531,7 +7620,7 @@ func (m *ChannelGraphRequest) Reset() { *m = ChannelGraphRequest{} } func (m *ChannelGraphRequest) String() string { return proto.CompactTextString(m) } func (*ChannelGraphRequest) ProtoMessage() {} func (*ChannelGraphRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{88} + return fileDescriptor_77a6da22d6a3feb1, []int{90} } func (m *ChannelGraphRequest) XXX_Unmarshal(b []byte) error { @@ -7574,7 +7663,7 @@ func (m *ChannelGraph) Reset() { *m = ChannelGraph{} } func (m *ChannelGraph) String() string { return proto.CompactTextString(m) } func (*ChannelGraph) ProtoMessage() {} func (*ChannelGraph) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{89} + return fileDescriptor_77a6da22d6a3feb1, []int{91} } func (m *ChannelGraph) XXX_Unmarshal(b []byte) error { @@ -7621,7 +7710,7 @@ func (m *NodeMetricsRequest) Reset() { *m = NodeMetricsRequest{} } func (m *NodeMetricsRequest) String() string { return proto.CompactTextString(m) } func (*NodeMetricsRequest) ProtoMessage() {} func (*NodeMetricsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{90} + return fileDescriptor_77a6da22d6a3feb1, []int{92} } func (m *NodeMetricsRequest) XXX_Unmarshal(b []byte) error { @@ -7666,7 +7755,7 @@ func (m *NodeMetricsResponse) Reset() { *m = NodeMetricsResponse{} } func (m *NodeMetricsResponse) String() string { return proto.CompactTextString(m) } func (*NodeMetricsResponse) ProtoMessage() {} func (*NodeMetricsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{91} + return fileDescriptor_77a6da22d6a3feb1, []int{93} } func (m *NodeMetricsResponse) XXX_Unmarshal(b []byte) error { @@ -7708,7 +7797,7 @@ func (m *FloatMetric) Reset() { *m = FloatMetric{} } func (m *FloatMetric) String() string { return proto.CompactTextString(m) } func (*FloatMetric) ProtoMessage() {} func (*FloatMetric) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{92} + return fileDescriptor_77a6da22d6a3feb1, []int{94} } func (m *FloatMetric) XXX_Unmarshal(b []byte) error { @@ -7758,7 +7847,7 @@ func (m *ChanInfoRequest) Reset() { *m = ChanInfoRequest{} } func (m *ChanInfoRequest) String() string { return proto.CompactTextString(m) } func (*ChanInfoRequest) ProtoMessage() {} func (*ChanInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{93} + return fileDescriptor_77a6da22d6a3feb1, []int{95} } func (m *ChanInfoRequest) XXX_Unmarshal(b []byte) error { @@ -7796,7 +7885,7 @@ func (m *NetworkInfoRequest) Reset() { *m = NetworkInfoRequest{} } func (m *NetworkInfoRequest) String() string { return proto.CompactTextString(m) } func (*NetworkInfoRequest) ProtoMessage() {} func (*NetworkInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{94} + return fileDescriptor_77a6da22d6a3feb1, []int{96} } func (m *NetworkInfoRequest) XXX_Unmarshal(b []byte) error { @@ -7839,7 +7928,7 @@ func (m *NetworkInfo) Reset() { *m = NetworkInfo{} } func (m *NetworkInfo) String() string { return proto.CompactTextString(m) } func (*NetworkInfo) ProtoMessage() {} func (*NetworkInfo) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{95} + return fileDescriptor_77a6da22d6a3feb1, []int{97} } func (m *NetworkInfo) XXX_Unmarshal(b []byte) error { @@ -7947,7 +8036,7 @@ func (m *StopRequest) Reset() { *m = StopRequest{} } func (m *StopRequest) String() string { return proto.CompactTextString(m) } func (*StopRequest) ProtoMessage() {} func (*StopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{96} + return fileDescriptor_77a6da22d6a3feb1, []int{98} } func (m *StopRequest) XXX_Unmarshal(b []byte) error { @@ -7978,7 +8067,7 @@ func (m *StopResponse) Reset() { *m = StopResponse{} } func (m *StopResponse) String() string { return proto.CompactTextString(m) } func (*StopResponse) ProtoMessage() {} func (*StopResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{97} + return fileDescriptor_77a6da22d6a3feb1, []int{99} } func (m *StopResponse) XXX_Unmarshal(b []byte) error { @@ -8009,7 +8098,7 @@ func (m *GraphTopologySubscription) Reset() { *m = GraphTopologySubscrip func (m *GraphTopologySubscription) String() string { return proto.CompactTextString(m) } func (*GraphTopologySubscription) ProtoMessage() {} func (*GraphTopologySubscription) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{98} + return fileDescriptor_77a6da22d6a3feb1, []int{100} } func (m *GraphTopologySubscription) XXX_Unmarshal(b []byte) error { @@ -8043,7 +8132,7 @@ func (m *GraphTopologyUpdate) Reset() { *m = GraphTopologyUpdate{} } func (m *GraphTopologyUpdate) String() string { return proto.CompactTextString(m) } func (*GraphTopologyUpdate) ProtoMessage() {} func (*GraphTopologyUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{99} + return fileDescriptor_77a6da22d6a3feb1, []int{101} } func (m *GraphTopologyUpdate) XXX_Unmarshal(b []byte) error { @@ -8100,7 +8189,7 @@ func (m *NodeUpdate) Reset() { *m = NodeUpdate{} } func (m *NodeUpdate) String() string { return proto.CompactTextString(m) } func (*NodeUpdate) ProtoMessage() {} func (*NodeUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{100} + return fileDescriptor_77a6da22d6a3feb1, []int{102} } func (m *NodeUpdate) XXX_Unmarshal(b []byte) error { @@ -8176,7 +8265,7 @@ func (m *ChannelEdgeUpdate) Reset() { *m = ChannelEdgeUpdate{} } func (m *ChannelEdgeUpdate) String() string { return proto.CompactTextString(m) } func (*ChannelEdgeUpdate) ProtoMessage() {} func (*ChannelEdgeUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{101} + return fileDescriptor_77a6da22d6a3feb1, []int{103} } func (m *ChannelEdgeUpdate) XXX_Unmarshal(b []byte) error { @@ -8257,7 +8346,7 @@ func (m *ClosedChannelUpdate) Reset() { *m = ClosedChannelUpdate{} } func (m *ClosedChannelUpdate) String() string { return proto.CompactTextString(m) } func (*ClosedChannelUpdate) ProtoMessage() {} func (*ClosedChannelUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{102} + return fileDescriptor_77a6da22d6a3feb1, []int{104} } func (m *ClosedChannelUpdate) XXX_Unmarshal(b []byte) error { @@ -8328,7 +8417,7 @@ func (m *HopHint) Reset() { *m = HopHint{} } func (m *HopHint) String() string { return proto.CompactTextString(m) } func (*HopHint) ProtoMessage() {} func (*HopHint) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{103} + return fileDescriptor_77a6da22d6a3feb1, []int{105} } func (m *HopHint) XXX_Unmarshal(b []byte) error { @@ -8398,7 +8487,7 @@ func (m *RouteHint) Reset() { *m = RouteHint{} } func (m *RouteHint) String() string { return proto.CompactTextString(m) } func (*RouteHint) ProtoMessage() {} func (*RouteHint) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{104} + return fileDescriptor_77a6da22d6a3feb1, []int{106} } func (m *RouteHint) XXX_Unmarshal(b []byte) error { @@ -8531,7 +8620,7 @@ func (m *Invoice) Reset() { *m = Invoice{} } func (m *Invoice) String() string { return proto.CompactTextString(m) } func (*Invoice) ProtoMessage() {} func (*Invoice) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{105} + return fileDescriptor_77a6da22d6a3feb1, []int{107} } func (m *Invoice) XXX_Unmarshal(b []byte) error { @@ -8753,7 +8842,7 @@ func (m *InvoiceHTLC) Reset() { *m = InvoiceHTLC{} } func (m *InvoiceHTLC) String() string { return proto.CompactTextString(m) } func (*InvoiceHTLC) ProtoMessage() {} func (*InvoiceHTLC) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{106} + return fileDescriptor_77a6da22d6a3feb1, []int{108} } func (m *InvoiceHTLC) XXX_Unmarshal(b []byte) error { @@ -8866,7 +8955,7 @@ func (m *AddInvoiceResponse) Reset() { *m = AddInvoiceResponse{} } func (m *AddInvoiceResponse) String() string { return proto.CompactTextString(m) } func (*AddInvoiceResponse) ProtoMessage() {} func (*AddInvoiceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{107} + return fileDescriptor_77a6da22d6a3feb1, []int{109} } func (m *AddInvoiceResponse) XXX_Unmarshal(b []byte) error { @@ -8928,7 +9017,7 @@ func (m *PaymentHash) Reset() { *m = PaymentHash{} } func (m *PaymentHash) String() string { return proto.CompactTextString(m) } func (*PaymentHash) ProtoMessage() {} func (*PaymentHash) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{108} + return fileDescriptor_77a6da22d6a3feb1, []int{110} } func (m *PaymentHash) XXX_Unmarshal(b []byte) error { @@ -8988,7 +9077,7 @@ func (m *ListInvoiceRequest) Reset() { *m = ListInvoiceRequest{} } func (m *ListInvoiceRequest) String() string { return proto.CompactTextString(m) } func (*ListInvoiceRequest) ProtoMessage() {} func (*ListInvoiceRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{109} + return fileDescriptor_77a6da22d6a3feb1, []int{111} } func (m *ListInvoiceRequest) XXX_Unmarshal(b []byte) error { @@ -9059,7 +9148,7 @@ func (m *ListInvoiceResponse) Reset() { *m = ListInvoiceResponse{} } func (m *ListInvoiceResponse) String() string { return proto.CompactTextString(m) } func (*ListInvoiceResponse) ProtoMessage() {} func (*ListInvoiceResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{110} + return fileDescriptor_77a6da22d6a3feb1, []int{112} } func (m *ListInvoiceResponse) XXX_Unmarshal(b []byte) error { @@ -9123,7 +9212,7 @@ func (m *InvoiceSubscription) Reset() { *m = InvoiceSubscription{} } func (m *InvoiceSubscription) String() string { return proto.CompactTextString(m) } func (*InvoiceSubscription) ProtoMessage() {} func (*InvoiceSubscription) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{111} + return fileDescriptor_77a6da22d6a3feb1, []int{113} } func (m *InvoiceSubscription) XXX_Unmarshal(b []byte) error { @@ -9200,7 +9289,7 @@ func (m *Payment) Reset() { *m = Payment{} } func (m *Payment) String() string { return proto.CompactTextString(m) } func (*Payment) ProtoMessage() {} func (*Payment) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{112} + return fileDescriptor_77a6da22d6a3feb1, []int{114} } func (m *Payment) XXX_Unmarshal(b []byte) error { @@ -9353,7 +9442,7 @@ func (m *HTLCAttempt) Reset() { *m = HTLCAttempt{} } func (m *HTLCAttempt) String() string { return proto.CompactTextString(m) } func (*HTLCAttempt) ProtoMessage() {} func (*HTLCAttempt) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{113} + return fileDescriptor_77a6da22d6a3feb1, []int{115} } func (m *HTLCAttempt) XXX_Unmarshal(b []byte) error { @@ -9446,7 +9535,7 @@ func (m *ListPaymentsRequest) Reset() { *m = ListPaymentsRequest{} } func (m *ListPaymentsRequest) String() string { return proto.CompactTextString(m) } func (*ListPaymentsRequest) ProtoMessage() {} func (*ListPaymentsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{114} + return fileDescriptor_77a6da22d6a3feb1, []int{116} } func (m *ListPaymentsRequest) XXX_Unmarshal(b []byte) error { @@ -9515,7 +9604,7 @@ func (m *ListPaymentsResponse) Reset() { *m = ListPaymentsResponse{} } func (m *ListPaymentsResponse) String() string { return proto.CompactTextString(m) } func (*ListPaymentsResponse) ProtoMessage() {} func (*ListPaymentsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{115} + return fileDescriptor_77a6da22d6a3feb1, []int{117} } func (m *ListPaymentsResponse) XXX_Unmarshal(b []byte) error { @@ -9567,7 +9656,7 @@ func (m *DeleteAllPaymentsRequest) Reset() { *m = DeleteAllPaymentsReque func (m *DeleteAllPaymentsRequest) String() string { return proto.CompactTextString(m) } func (*DeleteAllPaymentsRequest) ProtoMessage() {} func (*DeleteAllPaymentsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{116} + return fileDescriptor_77a6da22d6a3feb1, []int{118} } func (m *DeleteAllPaymentsRequest) XXX_Unmarshal(b []byte) error { @@ -9598,7 +9687,7 @@ func (m *DeleteAllPaymentsResponse) Reset() { *m = DeleteAllPaymentsResp func (m *DeleteAllPaymentsResponse) String() string { return proto.CompactTextString(m) } func (*DeleteAllPaymentsResponse) ProtoMessage() {} func (*DeleteAllPaymentsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{117} + return fileDescriptor_77a6da22d6a3feb1, []int{119} } func (m *DeleteAllPaymentsResponse) XXX_Unmarshal(b []byte) error { @@ -9630,7 +9719,7 @@ func (m *AbandonChannelRequest) Reset() { *m = AbandonChannelRequest{} } func (m *AbandonChannelRequest) String() string { return proto.CompactTextString(m) } func (*AbandonChannelRequest) ProtoMessage() {} func (*AbandonChannelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{118} + return fileDescriptor_77a6da22d6a3feb1, []int{120} } func (m *AbandonChannelRequest) XXX_Unmarshal(b []byte) error { @@ -9668,7 +9757,7 @@ func (m *AbandonChannelResponse) Reset() { *m = AbandonChannelResponse{} func (m *AbandonChannelResponse) String() string { return proto.CompactTextString(m) } func (*AbandonChannelResponse) ProtoMessage() {} func (*AbandonChannelResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{119} + return fileDescriptor_77a6da22d6a3feb1, []int{121} } func (m *AbandonChannelResponse) XXX_Unmarshal(b []byte) error { @@ -9701,7 +9790,7 @@ func (m *DebugLevelRequest) Reset() { *m = DebugLevelRequest{} } func (m *DebugLevelRequest) String() string { return proto.CompactTextString(m) } func (*DebugLevelRequest) ProtoMessage() {} func (*DebugLevelRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{120} + return fileDescriptor_77a6da22d6a3feb1, []int{122} } func (m *DebugLevelRequest) XXX_Unmarshal(b []byte) error { @@ -9747,7 +9836,7 @@ func (m *DebugLevelResponse) Reset() { *m = DebugLevelResponse{} } func (m *DebugLevelResponse) String() string { return proto.CompactTextString(m) } func (*DebugLevelResponse) ProtoMessage() {} func (*DebugLevelResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{121} + return fileDescriptor_77a6da22d6a3feb1, []int{123} } func (m *DebugLevelResponse) XXX_Unmarshal(b []byte) error { @@ -9787,7 +9876,7 @@ func (m *PayReqString) Reset() { *m = PayReqString{} } func (m *PayReqString) String() string { return proto.CompactTextString(m) } func (*PayReqString) ProtoMessage() {} func (*PayReqString) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{122} + return fileDescriptor_77a6da22d6a3feb1, []int{124} } func (m *PayReqString) XXX_Unmarshal(b []byte) error { @@ -9838,7 +9927,7 @@ func (m *PayReq) Reset() { *m = PayReq{} } func (m *PayReq) String() string { return proto.CompactTextString(m) } func (*PayReq) ProtoMessage() {} func (*PayReq) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{123} + return fileDescriptor_77a6da22d6a3feb1, []int{125} } func (m *PayReq) XXX_Unmarshal(b []byte) error { @@ -9963,7 +10052,7 @@ func (m *Feature) Reset() { *m = Feature{} } func (m *Feature) String() string { return proto.CompactTextString(m) } func (*Feature) ProtoMessage() {} func (*Feature) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{124} + return fileDescriptor_77a6da22d6a3feb1, []int{126} } func (m *Feature) XXX_Unmarshal(b []byte) error { @@ -10015,7 +10104,7 @@ func (m *FeeReportRequest) Reset() { *m = FeeReportRequest{} } func (m *FeeReportRequest) String() string { return proto.CompactTextString(m) } func (*FeeReportRequest) ProtoMessage() {} func (*FeeReportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{125} + return fileDescriptor_77a6da22d6a3feb1, []int{127} } func (m *FeeReportRequest) XXX_Unmarshal(b []byte) error { @@ -10058,7 +10147,7 @@ func (m *ChannelFeeReport) Reset() { *m = ChannelFeeReport{} } func (m *ChannelFeeReport) String() string { return proto.CompactTextString(m) } func (*ChannelFeeReport) ProtoMessage() {} func (*ChannelFeeReport) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{126} + return fileDescriptor_77a6da22d6a3feb1, []int{128} } func (m *ChannelFeeReport) XXX_Unmarshal(b []byte) error { @@ -10136,7 +10225,7 @@ func (m *FeeReportResponse) Reset() { *m = FeeReportResponse{} } func (m *FeeReportResponse) String() string { return proto.CompactTextString(m) } func (*FeeReportResponse) ProtoMessage() {} func (*FeeReportResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{127} + return fileDescriptor_77a6da22d6a3feb1, []int{129} } func (m *FeeReportResponse) XXX_Unmarshal(b []byte) error { @@ -10214,7 +10303,7 @@ func (m *PolicyUpdateRequest) Reset() { *m = PolicyUpdateRequest{} } func (m *PolicyUpdateRequest) String() string { return proto.CompactTextString(m) } func (*PolicyUpdateRequest) ProtoMessage() {} func (*PolicyUpdateRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{128} + return fileDescriptor_77a6da22d6a3feb1, []int{130} } func (m *PolicyUpdateRequest) XXX_Unmarshal(b []byte) error { @@ -10332,7 +10421,7 @@ func (m *PolicyUpdateResponse) Reset() { *m = PolicyUpdateResponse{} } func (m *PolicyUpdateResponse) String() string { return proto.CompactTextString(m) } func (*PolicyUpdateResponse) ProtoMessage() {} func (*PolicyUpdateResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{129} + return fileDescriptor_77a6da22d6a3feb1, []int{131} } func (m *PolicyUpdateResponse) XXX_Unmarshal(b []byte) error { @@ -10377,7 +10466,7 @@ func (m *ForwardingHistoryRequest) Reset() { *m = ForwardingHistoryReque func (m *ForwardingHistoryRequest) String() string { return proto.CompactTextString(m) } func (*ForwardingHistoryRequest) ProtoMessage() {} func (*ForwardingHistoryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{130} + return fileDescriptor_77a6da22d6a3feb1, []int{132} } func (m *ForwardingHistoryRequest) XXX_Unmarshal(b []byte) error { @@ -10460,7 +10549,7 @@ func (m *ForwardingEvent) Reset() { *m = ForwardingEvent{} } func (m *ForwardingEvent) String() string { return proto.CompactTextString(m) } func (*ForwardingEvent) ProtoMessage() {} func (*ForwardingEvent) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{131} + return fileDescriptor_77a6da22d6a3feb1, []int{133} } func (m *ForwardingEvent) XXX_Unmarshal(b []byte) error { @@ -10560,7 +10649,7 @@ func (m *ForwardingHistoryResponse) Reset() { *m = ForwardingHistoryResp func (m *ForwardingHistoryResponse) String() string { return proto.CompactTextString(m) } func (*ForwardingHistoryResponse) ProtoMessage() {} func (*ForwardingHistoryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{132} + return fileDescriptor_77a6da22d6a3feb1, []int{134} } func (m *ForwardingHistoryResponse) XXX_Unmarshal(b []byte) error { @@ -10607,7 +10696,7 @@ func (m *ExportChannelBackupRequest) Reset() { *m = ExportChannelBackupR func (m *ExportChannelBackupRequest) String() string { return proto.CompactTextString(m) } func (*ExportChannelBackupRequest) ProtoMessage() {} func (*ExportChannelBackupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{133} + return fileDescriptor_77a6da22d6a3feb1, []int{135} } func (m *ExportChannelBackupRequest) XXX_Unmarshal(b []byte) error { @@ -10654,7 +10743,7 @@ func (m *ChannelBackup) Reset() { *m = ChannelBackup{} } func (m *ChannelBackup) String() string { return proto.CompactTextString(m) } func (*ChannelBackup) ProtoMessage() {} func (*ChannelBackup) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{134} + return fileDescriptor_77a6da22d6a3feb1, []int{136} } func (m *ChannelBackup) XXX_Unmarshal(b []byte) error { @@ -10708,7 +10797,7 @@ func (m *MultiChanBackup) Reset() { *m = MultiChanBackup{} } func (m *MultiChanBackup) String() string { return proto.CompactTextString(m) } func (*MultiChanBackup) ProtoMessage() {} func (*MultiChanBackup) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{135} + return fileDescriptor_77a6da22d6a3feb1, []int{137} } func (m *MultiChanBackup) XXX_Unmarshal(b []byte) error { @@ -10753,7 +10842,7 @@ func (m *ChanBackupExportRequest) Reset() { *m = ChanBackupExportRequest func (m *ChanBackupExportRequest) String() string { return proto.CompactTextString(m) } func (*ChanBackupExportRequest) ProtoMessage() {} func (*ChanBackupExportRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{136} + return fileDescriptor_77a6da22d6a3feb1, []int{138} } func (m *ChanBackupExportRequest) XXX_Unmarshal(b []byte) error { @@ -10792,7 +10881,7 @@ func (m *ChanBackupSnapshot) Reset() { *m = ChanBackupSnapshot{} } func (m *ChanBackupSnapshot) String() string { return proto.CompactTextString(m) } func (*ChanBackupSnapshot) ProtoMessage() {} func (*ChanBackupSnapshot) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{137} + return fileDescriptor_77a6da22d6a3feb1, []int{139} } func (m *ChanBackupSnapshot) XXX_Unmarshal(b []byte) error { @@ -10840,7 +10929,7 @@ func (m *ChannelBackups) Reset() { *m = ChannelBackups{} } func (m *ChannelBackups) String() string { return proto.CompactTextString(m) } func (*ChannelBackups) ProtoMessage() {} func (*ChannelBackups) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{138} + return fileDescriptor_77a6da22d6a3feb1, []int{140} } func (m *ChannelBackups) XXX_Unmarshal(b []byte) error { @@ -10882,7 +10971,7 @@ func (m *RestoreChanBackupRequest) Reset() { *m = RestoreChanBackupReque func (m *RestoreChanBackupRequest) String() string { return proto.CompactTextString(m) } func (*RestoreChanBackupRequest) ProtoMessage() {} func (*RestoreChanBackupRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{139} + return fileDescriptor_77a6da22d6a3feb1, []int{141} } func (m *RestoreChanBackupRequest) XXX_Unmarshal(b []byte) error { @@ -10958,7 +11047,7 @@ func (m *RestoreBackupResponse) Reset() { *m = RestoreBackupResponse{} } func (m *RestoreBackupResponse) String() string { return proto.CompactTextString(m) } func (*RestoreBackupResponse) ProtoMessage() {} func (*RestoreBackupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{140} + return fileDescriptor_77a6da22d6a3feb1, []int{142} } func (m *RestoreBackupResponse) XXX_Unmarshal(b []byte) error { @@ -10989,7 +11078,7 @@ func (m *ChannelBackupSubscription) Reset() { *m = ChannelBackupSubscrip func (m *ChannelBackupSubscription) String() string { return proto.CompactTextString(m) } func (*ChannelBackupSubscription) ProtoMessage() {} func (*ChannelBackupSubscription) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{141} + return fileDescriptor_77a6da22d6a3feb1, []int{143} } func (m *ChannelBackupSubscription) XXX_Unmarshal(b []byte) error { @@ -11020,7 +11109,7 @@ func (m *VerifyChanBackupResponse) Reset() { *m = VerifyChanBackupRespon func (m *VerifyChanBackupResponse) String() string { return proto.CompactTextString(m) } func (*VerifyChanBackupResponse) ProtoMessage() {} func (*VerifyChanBackupResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{142} + return fileDescriptor_77a6da22d6a3feb1, []int{144} } func (m *VerifyChanBackupResponse) XXX_Unmarshal(b []byte) error { @@ -11055,7 +11144,7 @@ func (m *MacaroonPermission) Reset() { *m = MacaroonPermission{} } func (m *MacaroonPermission) String() string { return proto.CompactTextString(m) } func (*MacaroonPermission) ProtoMessage() {} func (*MacaroonPermission) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{143} + return fileDescriptor_77a6da22d6a3feb1, []int{145} } func (m *MacaroonPermission) XXX_Unmarshal(b []byte) error { @@ -11102,7 +11191,7 @@ func (m *BakeMacaroonRequest) Reset() { *m = BakeMacaroonRequest{} } func (m *BakeMacaroonRequest) String() string { return proto.CompactTextString(m) } func (*BakeMacaroonRequest) ProtoMessage() {} func (*BakeMacaroonRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{144} + return fileDescriptor_77a6da22d6a3feb1, []int{146} } func (m *BakeMacaroonRequest) XXX_Unmarshal(b []byte) error { @@ -11142,7 +11231,7 @@ func (m *BakeMacaroonResponse) Reset() { *m = BakeMacaroonResponse{} } func (m *BakeMacaroonResponse) String() string { return proto.CompactTextString(m) } func (*BakeMacaroonResponse) ProtoMessage() {} func (*BakeMacaroonResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{145} + return fileDescriptor_77a6da22d6a3feb1, []int{147} } func (m *BakeMacaroonResponse) XXX_Unmarshal(b []byte) error { @@ -11198,7 +11287,7 @@ func (m *Failure) Reset() { *m = Failure{} } func (m *Failure) String() string { return proto.CompactTextString(m) } func (*Failure) ProtoMessage() {} func (*Failure) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{146} + return fileDescriptor_77a6da22d6a3feb1, []int{148} } func (m *Failure) XXX_Unmarshal(b []byte) error { @@ -11342,7 +11431,7 @@ func (m *ChannelUpdate) Reset() { *m = ChannelUpdate{} } func (m *ChannelUpdate) String() string { return proto.CompactTextString(m) } func (*ChannelUpdate) ProtoMessage() {} func (*ChannelUpdate) Descriptor() ([]byte, []int) { - return fileDescriptor_77a6da22d6a3feb1, []int{147} + return fileDescriptor_77a6da22d6a3feb1, []int{149} } func (m *ChannelUpdate) XXX_Unmarshal(b []byte) error { @@ -11515,6 +11604,8 @@ func init() { proto.RegisterType((*GetInfoRequest)(nil), "lnrpc.GetInfoRequest") proto.RegisterType((*GetInfoResponse)(nil), "lnrpc.GetInfoResponse") proto.RegisterMapType((map[uint32]*Feature)(nil), "lnrpc.GetInfoResponse.FeaturesEntry") + proto.RegisterType((*GetRecoveryInfoRequest)(nil), "lnrpc.GetRecoveryInfoRequest") + proto.RegisterType((*GetRecoveryInfoResponse)(nil), "lnrpc.GetRecoveryInfoResponse") proto.RegisterType((*Chain)(nil), "lnrpc.Chain") proto.RegisterType((*ConfirmationUpdate)(nil), "lnrpc.ConfirmationUpdate") proto.RegisterType((*ChannelOpenUpdate)(nil), "lnrpc.ChannelOpenUpdate") @@ -11635,15 +11726,15 @@ func init() { func init() { proto.RegisterFile("rpc.proto", fileDescriptor_77a6da22d6a3feb1) } var fileDescriptor_77a6da22d6a3feb1 = []byte{ - // 11204 bytes of a gzipped FileDescriptorProto + // 11276 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0xbd, 0x4d, 0x6c, 0x23, 0x49, 0x96, 0x18, 0x5c, 0xfc, 0x13, 0xc9, 0x47, 0x52, 0xa2, 0x42, 0x7f, 0x2c, 0x55, 0x57, 0x57, 0x75, 0x76, 0x4f, 0x77, 0x4d, 0x75, 0x8f, 0xba, 0xba, 0xa6, 0xab, 0x7f, 0xa6, 0xbe, 0xed, 0x19, 0x4a, 0xa2, 0x4a, 0x9c, 0x92, 0x48, 0x75, 0x92, 0xaa, 0xde, 0x5e, 0xec, 0xb7, 0xe9, 0x14, 0x19, 0x92, 0xd2, 0x45, 0x66, 0xb2, 0x33, 0x93, 0x2a, 0x69, 0x0c, 0xdf, 0xfc, 0x87, 0x85, 0x6d, 0xc0, 0x80, 0xd7, 0x80, 0x7f, 0x16, 0xfe, 0x59, 0xd8, 0xbe, 0x2d, 0x0c, 0xcf, 0xda, 0x80, 0x01, 0x9f, 0xbd, - 0x17, 0x1b, 0x86, 0xe1, 0xf5, 0xc1, 0xc6, 0x62, 0x01, 0x1f, 0xbc, 0xbe, 0x19, 0x0b, 0xf8, 0xe4, - 0x83, 0x0d, 0x23, 0xde, 0x8b, 0xc8, 0x8c, 0x24, 0x53, 0x55, 0xd5, 0xb3, 0xed, 0xb9, 0x48, 0xcc, + 0x17, 0x1b, 0xb6, 0xe1, 0xf5, 0xc1, 0xc6, 0x62, 0x01, 0x1f, 0xbc, 0xbe, 0x19, 0x0b, 0xf8, 0xe4, + 0x83, 0x01, 0x23, 0xde, 0x8b, 0xc8, 0x8c, 0x24, 0x53, 0x55, 0xd5, 0xb3, 0xed, 0xb9, 0x48, 0xcc, 0xf7, 0x5e, 0xfc, 0x64, 0xc4, 0x8b, 0x17, 0xef, 0x2f, 0x22, 0xa1, 0xec, 0x4f, 0x06, 0x5b, 0x13, 0xdf, 0x0b, 0x3d, 0x56, 0x18, 0xb9, 0xfe, 0x64, 0x60, 0xfc, 0x71, 0x06, 0xf2, 0xc7, 0xe1, 0xa5, 0xc7, 0x1e, 0x41, 0xd5, 0x1e, 0x0e, 0x7d, 0x1e, 0x04, 0x56, 0x78, 0x35, 0xe1, 0x8d, 0xcc, 0xdd, @@ -11702,7 +11793,7 @@ var fileDescriptor_77a6da22d6a3feb1 = []byte{ 0x37, 0x0d, 0x39, 0xf2, 0x7a, 0xe5, 0x61, 0x55, 0xbe, 0x9e, 0x29, 0x60, 0x51, 0xed, 0xf8, 0xf4, 0x1a, 0x7c, 0x6e, 0xfc, 0x56, 0x06, 0x98, 0xe8, 0x76, 0xdf, 0xa3, 0x0a, 0x62, 0x89, 0x94, 0x28, 0x99, 0x79, 0xed, 0x15, 0x92, 0x7d, 0xd9, 0x0a, 0x31, 0xa0, 0x40, 0x7d, 0xcf, 0xa7, 0xf4, 0x9d, - 0x50, 0x3f, 0xcd, 0x97, 0x72, 0xf5, 0xbc, 0xf1, 0x5f, 0x72, 0xb0, 0x2a, 0xf8, 0xd4, 0xe5, 0xa3, + 0x50, 0x3f, 0xcd, 0x97, 0x72, 0xf5, 0xbc, 0xf1, 0x5f, 0x73, 0xb0, 0x2a, 0xf8, 0xd4, 0xe5, 0xa3, 0xe6, 0x60, 0xc0, 0x27, 0xd1, 0xda, 0xb9, 0x03, 0x15, 0xd7, 0x1b, 0x72, 0xc5, 0xb1, 0xd4, 0x31, 0x10, 0x20, 0x8d, 0x5d, 0xcf, 0x6d, 0xc7, 0xa5, 0x8e, 0xd3, 0x60, 0x96, 0x11, 0x82, 0xdd, 0x7e, 0x17, 0x96, 0x26, 0xdc, 0x1d, 0xea, 0x4b, 0x24, 0x47, 0x5c, 0x2f, 0xc1, 0x72, 0x75, 0xdc, 0x81, @@ -11734,7 +11825,7 @@ var fileDescriptor_77a6da22d6a3feb1 = []byte{ 0xe9, 0x72, 0xd9, 0x82, 0x95, 0x44, 0xbf, 0x24, 0xa7, 0x6d, 0x40, 0x51, 0x2c, 0x08, 0xa1, 0x1c, 0x64, 0x48, 0x5b, 0x3d, 0xe5, 0x5c, 0xa8, 0xd7, 0x1f, 0xc2, 0xea, 0x29, 0xe7, 0xbe, 0x1d, 0x22, 0x12, 0x57, 0x8c, 0x98, 0x21, 0x59, 0xf1, 0xb2, 0xc4, 0xf5, 0xec, 0xf0, 0x88, 0xfb, 0x62, 0xa6, - 0x8c, 0xff, 0x95, 0x81, 0x25, 0x21, 0x41, 0x0f, 0x6d, 0xf7, 0x4a, 0x8d, 0xd3, 0x41, 0xea, 0x38, + 0x8c, 0xff, 0x9d, 0x81, 0x25, 0x21, 0x41, 0x0f, 0x6d, 0xf7, 0x4a, 0x8d, 0xd3, 0x41, 0xea, 0x38, 0xdd, 0xd3, 0x36, 0x43, 0x8d, 0xfa, 0xdb, 0x0e, 0x52, 0x6e, 0x76, 0x90, 0xd8, 0x5d, 0xa8, 0x26, 0xfa, 0x5a, 0xc0, 0xbe, 0x42, 0x10, 0x75, 0x32, 0xd6, 0x48, 0x17, 0x34, 0x8d, 0xf4, 0x4f, 0x3f, 0xb8, 0xef, 0x42, 0x3d, 0x7e, 0x19, 0x39, 0xb2, 0x0c, 0xf2, 0x82, 0x51, 0x65, 0x05, 0xf8, 0xdb, @@ -11855,488 +11946,492 @@ var fileDescriptor_77a6da22d6a3feb1 = []byte{ 0x3b, 0xb0, 0x80, 0x6d, 0x04, 0x8d, 0x3a, 0x2e, 0x88, 0x6a, 0x2c, 0xe9, 0x1d, 0xd7, 0x94, 0x38, 0xa1, 0x0a, 0x4e, 0x7d, 0x87, 0xc4, 0x50, 0xd9, 0xc4, 0xdf, 0xec, 0x27, 0x9a, 0x4c, 0x5b, 0xc1, 0xb2, 0xef, 0xc8, 0xb2, 0x33, 0xac, 0x78, 0x9d, 0x78, 0xfb, 0x4e, 0xa5, 0xd5, 0x4f, 0xf3, 0xa5, - 0x4a, 0xbd, 0x6a, 0x7c, 0x0a, 0x05, 0x1a, 0x1d, 0xc1, 0x84, 0x38, 0x76, 0x19, 0xc9, 0x84, 0x08, - 0x6d, 0x40, 0xd1, 0xe5, 0xe1, 0x0b, 0xcf, 0x7f, 0xae, 0xdc, 0xcf, 0xf2, 0xd1, 0xf8, 0x19, 0xfa, - 0x42, 0xa2, 0x98, 0x3d, 0x99, 0x75, 0x82, 0x3d, 0x68, 0x7a, 0x83, 0x73, 0x5b, 0xba, 0x67, 0x4a, - 0x08, 0xe8, 0x9d, 0xdb, 0x73, 0xec, 0x91, 0x9d, 0x0f, 0xdb, 0xbf, 0x03, 0x8b, 0x2a, 0x4b, 0x20, - 0xb0, 0x46, 0xfc, 0x34, 0x94, 0xec, 0x5e, 0x95, 0x29, 0x02, 0xc1, 0x01, 0x3f, 0x0d, 0x8d, 0x43, - 0x58, 0x96, 0x0c, 0xd9, 0x9d, 0x70, 0xd5, 0xf4, 0x67, 0x69, 0xda, 0x70, 0xe5, 0xe1, 0x4a, 0x72, - 0x27, 0xa6, 0xec, 0x87, 0x84, 0x8a, 0x6c, 0x7c, 0x09, 0x4c, 0xdf, 0xa7, 0x65, 0x7d, 0x52, 0x27, - 0x55, 0x5e, 0x7b, 0x15, 0xfc, 0x8a, 0x34, 0x5f, 0x67, 0x28, 0x46, 0x27, 0x98, 0x0e, 0x06, 0x2a, - 0x7b, 0xa3, 0x64, 0xaa, 0x47, 0xe3, 0x3f, 0x66, 0x60, 0x05, 0x2b, 0x53, 0xda, 0xbc, 0x94, 0xc2, - 0xbf, 0x70, 0x27, 0xc5, 0xfc, 0xe8, 0xca, 0x11, 0x3d, 0x7c, 0x7b, 0x8f, 0x68, 0x7e, 0xce, 0x23, - 0xfa, 0x7d, 0xa8, 0x0f, 0xf9, 0xc8, 0xb9, 0xe0, 0xfe, 0x55, 0x64, 0xc8, 0x91, 0xfe, 0xbe, 0xa4, - 0xe0, 0xd2, 0x96, 0x33, 0xfe, 0x56, 0x06, 0x96, 0x49, 0x95, 0x41, 0xab, 0x58, 0x0e, 0xd4, 0x63, - 0x65, 0x06, 0x4a, 0x51, 0x25, 0xdf, 0x29, 0xde, 0xe2, 0x11, 0x4a, 0xc4, 0xfb, 0x37, 0xa4, 0x79, - 0x28, 0xa1, 0xec, 0x47, 0x68, 0x81, 0xb8, 0x16, 0x02, 0x65, 0x30, 0xf3, 0x66, 0x8a, 0xf2, 0x14, - 0x15, 0x17, 0xe6, 0x89, 0x8b, 0xa0, 0xed, 0x92, 0xb0, 0x4b, 0x05, 0xd8, 0xd8, 0x83, 0x5a, 0xa2, - 0x99, 0x84, 0x83, 0xb6, 0x4a, 0x0e, 0xda, 0xb9, 0x80, 0x49, 0x76, 0x3e, 0x60, 0x72, 0x05, 0x2b, - 0x26, 0xb7, 0x87, 0x57, 0x7b, 0x9e, 0x7f, 0x14, 0x9c, 0x84, 0x7b, 0xa4, 0x1f, 0x0a, 0xf9, 0x1e, - 0x45, 0x01, 0x13, 0x5e, 0x50, 0x15, 0x0c, 0x52, 0xc6, 0xee, 0xf7, 0x60, 0x31, 0x0e, 0x17, 0x6a, - 0x9e, 0xb4, 0x5a, 0x14, 0x31, 0x44, 0x87, 0x9a, 0x30, 0x14, 0x83, 0x93, 0x50, 0xfa, 0xd2, 0xf0, - 0xb7, 0xf1, 0x17, 0xf3, 0xc0, 0x04, 0x37, 0xcf, 0x30, 0xcc, 0x4c, 0xa0, 0x33, 0x3b, 0x17, 0xe8, - 0x7c, 0x00, 0x4c, 0x23, 0x50, 0xf1, 0xd7, 0x5c, 0x14, 0x7f, 0xad, 0xc7, 0xb4, 0x32, 0xfc, 0xfa, - 0x00, 0x56, 0xa5, 0xb2, 0x9d, 0xec, 0x2a, 0xb1, 0x06, 0x23, 0xad, 0x3b, 0xd1, 0x5f, 0x15, 0xe4, - 0x14, 0xc6, 0x3b, 0xf9, 0xca, 0x30, 0xc8, 0xa9, 0xcc, 0x76, 0x8d, 0x01, 0x17, 0x5e, 0xc9, 0x80, - 0xc5, 0x39, 0x06, 0xd4, 0x5c, 0x37, 0xa5, 0xa4, 0xeb, 0xc6, 0x80, 0x9a, 0x0a, 0x65, 0x52, 0x06, - 0x07, 0x69, 0x96, 0x15, 0x19, 0xcf, 0xc4, 0x2c, 0x8e, 0x7b, 0x50, 0x57, 0xfe, 0x95, 0xc8, 0x39, - 0x44, 0xd9, 0x09, 0xd2, 0x3d, 0xb7, 0xa3, 0x5c, 0x44, 0x09, 0x57, 0x7c, 0x65, 0xc6, 0x15, 0xff, - 0x3e, 0x2c, 0x07, 0x82, 0x7f, 0xad, 0xa9, 0x2b, 0x53, 0x94, 0xf8, 0x10, 0xed, 0xb0, 0x92, 0x59, - 0x47, 0xc4, 0x71, 0x0c, 0x9f, 0x77, 0x7c, 0xd4, 0x52, 0x1c, 0x1f, 0x8f, 0xe2, 0xa8, 0x5f, 0x70, - 0xee, 0x8c, 0x51, 0xa9, 0x88, 0xd3, 0x6e, 0xe4, 0x00, 0xf7, 0xce, 0x9d, 0xb1, 0xa9, 0x42, 0xcc, - 0xe2, 0xc1, 0xf8, 0x9f, 0x19, 0xa8, 0x0b, 0x3e, 0x48, 0x2c, 0xb1, 0xcf, 0x01, 0x85, 0xc1, 0x6b, - 0xae, 0xb0, 0x8a, 0xa0, 0x55, 0x0b, 0xec, 0x53, 0xc0, 0x15, 0x63, 0x09, 0xa3, 0x53, 0xae, 0xaf, - 0x46, 0x72, 0x7d, 0xc5, 0x32, 0x74, 0xff, 0x06, 0x19, 0x27, 0x02, 0xc2, 0x3e, 0x87, 0xb2, 0x60, - 0x4c, 0xe4, 0x12, 0x99, 0x45, 0xa6, 0x54, 0xb3, 0x94, 0x35, 0x22, 0x8a, 0x4e, 0xe4, 0x63, 0x5a, - 0xa0, 0x36, 0x9f, 0x12, 0xa8, 0xd5, 0x16, 0xf0, 0x3e, 0xc0, 0x53, 0x7e, 0x75, 0xe0, 0x0d, 0xd0, - 0x24, 0xbe, 0x0d, 0x20, 0x78, 0xf9, 0xd4, 0x1e, 0x3b, 0xd2, 0xa3, 0x53, 0x30, 0xcb, 0xcf, 0xf9, - 0xd5, 0x1e, 0x02, 0xc4, 0x44, 0x0a, 0x74, 0xbc, 0x8a, 0x0b, 0x66, 0xe9, 0x39, 0xbf, 0xa2, 0x25, - 0x6c, 0x41, 0xed, 0x29, 0xbf, 0xda, 0xe5, 0xa4, 0x85, 0x7a, 0xbe, 0x60, 0x22, 0xdf, 0x7e, 0x21, - 0xd4, 0xce, 0x44, 0x90, 0xb5, 0xe2, 0xdb, 0x2f, 0x9e, 0xf2, 0x2b, 0x15, 0xf0, 0x2d, 0x0a, 0xfc, - 0xc8, 0x1b, 0xc8, 0x7d, 0x53, 0xa5, 0x8b, 0xc4, 0x9d, 0x32, 0x17, 0x9e, 0xe3, 0x6f, 0xe3, 0x4f, - 0x32, 0x50, 0x13, 0xfd, 0x47, 0xb1, 0x2c, 0xa6, 0x4c, 0x65, 0x1d, 0x65, 0xe2, 0xac, 0xa3, 0x87, - 0x52, 0xaa, 0x91, 0x8c, 0xcf, 0x5e, 0x2f, 0xe3, 0x71, 0x6e, 0x48, 0xc0, 0x7f, 0x04, 0x65, 0x5a, - 0x96, 0x62, 0x9d, 0xe7, 0x12, 0x13, 0x9c, 0x78, 0x21, 0xb3, 0x84, 0x64, 0x4f, 0x29, 0xc9, 0x41, - 0xf3, 0x0e, 0xd2, 0x10, 0x97, 0xfd, 0xc8, 0x27, 0x98, 0x32, 0x0d, 0x85, 0x6b, 0x92, 0x1c, 0x74, - 0xd7, 0xdb, 0xc2, 0x9c, 0xeb, 0xad, 0x0b, 0x25, 0x31, 0xd5, 0xf8, 0xb2, 0x29, 0x95, 0x66, 0xd2, - 0x2a, 0x15, 0x9a, 0x80, 0x2d, 0x36, 0x05, 0x21, 0xe8, 0xb2, 0x52, 0x13, 0xb0, 0x03, 0x7e, 0x84, - 0xc2, 0x2e, 0x03, 0x15, 0x6d, 0x05, 0xa0, 0xf7, 0x32, 0x1a, 0x2f, 0x5a, 0x2e, 0x49, 0x16, 0x4f, - 0x0c, 0xf8, 0xfe, 0x0d, 0xb3, 0x36, 0x48, 0xcc, 0xc0, 0x96, 0xe4, 0x55, 0x2c, 0x99, 0x4d, 0x24, - 0x48, 0xa9, 0x8e, 0x2b, 0x06, 0x15, 0xbf, 0xb7, 0x17, 0x20, 0x2f, 0x48, 0x8d, 0xc7, 0xb0, 0xac, - 0x75, 0x83, 0xfc, 0x00, 0xaf, 0xfb, 0x86, 0xc6, 0xaf, 0x47, 0x85, 0x45, 0x1b, 0x14, 0x5f, 0x52, - 0x09, 0x23, 0x7c, 0x48, 0x2f, 0x2e, 0x13, 0x53, 0x08, 0x24, 0xc8, 0x5e, 0x3b, 0x89, 0xe1, 0x37, - 0x60, 0x45, 0xab, 0x7d, 0xcf, 0x71, 0xed, 0x91, 0xf3, 0x33, 0xdc, 0xf0, 0x03, 0xe7, 0xcc, 0x9d, - 0xa9, 0x9f, 0x40, 0xdf, 0xaa, 0xfe, 0xbf, 0x9d, 0x85, 0x55, 0xd9, 0x00, 0xa6, 0x00, 0x3a, 0x42, - 0x8b, 0x3b, 0x0c, 0xce, 0xd8, 0xe7, 0x50, 0x13, 0x63, 0x63, 0xf9, 0xfc, 0xcc, 0x09, 0x42, 0xae, - 0xe2, 0x5a, 0x29, 0x82, 0x4b, 0x6c, 0xe6, 0x82, 0xd4, 0x94, 0x94, 0xec, 0x31, 0x54, 0xb0, 0x28, - 0xf9, 0x59, 0xe4, 0x44, 0x34, 0xe6, 0x0b, 0xd2, 0x40, 0xef, 0xdf, 0x30, 0x21, 0x88, 0x87, 0xfd, - 0x31, 0x54, 0x70, 0x0e, 0x2f, 0x70, 0x20, 0x67, 0x44, 0xd5, 0xdc, 0x40, 0x8b, 0xc2, 0x93, 0x78, - 0xd8, 0x9b, 0x50, 0x23, 0x61, 0x25, 0xc7, 0x49, 0xa6, 0x16, 0x6d, 0xce, 0x17, 0x57, 0x23, 0x29, - 0x3a, 0x3f, 0xd1, 0x9e, 0xb7, 0xcb, 0x50, 0x0c, 0x7d, 0xe7, 0xec, 0x8c, 0xfb, 0xc6, 0x7a, 0x34, - 0x34, 0x42, 0x0a, 0xf3, 0x5e, 0xc8, 0x27, 0x42, 0x37, 0x37, 0xfe, 0x6d, 0x06, 0x2a, 0x52, 0xae, - 0xfe, 0xc2, 0xc1, 0xb4, 0x4d, 0x2d, 0x37, 0x97, 0x5c, 0x3a, 0x71, 0x2a, 0xee, 0x7b, 0xb0, 0x34, - 0x16, 0x7a, 0xba, 0xb0, 0x23, 0x13, 0x91, 0xb4, 0x45, 0x05, 0x96, 0x6a, 0xf2, 0x16, 0xac, 0xa0, - 0xd6, 0x1c, 0x58, 0xa1, 0x33, 0xb2, 0x14, 0x52, 0xe6, 0xc1, 0x2e, 0x13, 0xaa, 0xef, 0x8c, 0x0e, - 0x25, 0x42, 0x28, 0x8f, 0x41, 0x68, 0x9f, 0x71, 0xb9, 0xb6, 0xe9, 0xc1, 0x68, 0xc0, 0xfa, 0x8c, - 0x09, 0xa9, 0xec, 0xe3, 0xff, 0xbd, 0x0c, 0x1b, 0x73, 0x28, 0x69, 0x27, 0x47, 0x11, 0xa4, 0x91, - 0x33, 0x3e, 0xf1, 0x22, 0xff, 0x6a, 0x46, 0x8b, 0x20, 0x1d, 0x08, 0x8c, 0xf2, 0xaf, 0x72, 0x58, - 0x53, 0x0c, 0x89, 0x0e, 0xd2, 0xc8, 0xca, 0xcc, 0xa2, 0x0d, 0xf4, 0x51, 0x72, 0x13, 0x9b, 0x6d, - 0x4e, 0xc1, 0x75, 0xd5, 0x68, 0x65, 0x32, 0x07, 0x0b, 0xd8, 0x9f, 0x85, 0x46, 0xc4, 0xf7, 0x52, - 0x6d, 0xd7, 0x4c, 0x66, 0xd1, 0xd2, 0x07, 0xaf, 0x68, 0x29, 0xe1, 0xdc, 0x43, 0xdd, 0x69, 0x5d, - 0x2d, 0x19, 0xaa, 0x30, 0x6a, 0xeb, 0x02, 0xde, 0x54, 0x6d, 0xa1, 0x1a, 0x3e, 0xdf, 0x62, 0xfe, - 0xb5, 0xde, 0x0d, 0x1d, 0x97, 0x89, 0x66, 0xcd, 0x5b, 0xb2, 0xe2, 0x08, 0xa5, 0xb7, 0x7b, 0x0e, - 0xeb, 0x2f, 0x6c, 0x27, 0x54, 0xef, 0xa8, 0x59, 0xec, 0x05, 0x6c, 0xef, 0xe1, 0x2b, 0xda, 0xfb, - 0x8a, 0x0a, 0x27, 0x0c, 0x93, 0xd5, 0x17, 0xf3, 0xc0, 0x60, 0xf3, 0x1f, 0xe6, 0x60, 0x31, 0x59, - 0x8b, 0x10, 0x2c, 0x72, 0xb3, 0x51, 0xfa, 0xa6, 0x54, 0x82, 0xa5, 0xef, 0xbf, 0x43, 0x7a, 0xe6, - 0x7c, 0x54, 0x22, 0x9b, 0x12, 0x95, 0xd0, 0x83, 0x01, 0xb9, 0x57, 0x45, 0x5f, 0xf3, 0xaf, 0x15, - 0x7d, 0x2d, 0xa4, 0x45, 0x5f, 0xaf, 0x0f, 0xd9, 0x2d, 0xfc, 0x42, 0x21, 0xbb, 0xe2, 0x4b, 0x43, - 0x76, 0x5a, 0xa0, 0xb1, 0x74, 0x8d, 0x0b, 0x5f, 0x0b, 0x3d, 0xa6, 0x84, 0xec, 0xca, 0xdf, 0x22, - 0x64, 0xb7, 0xf9, 0x27, 0x19, 0x60, 0xf3, 0xab, 0x83, 0x3d, 0xa1, 0x80, 0x8f, 0xcb, 0x47, 0x52, - 0x72, 0xff, 0xe0, 0xf5, 0x56, 0x98, 0x62, 0x08, 0x55, 0x9a, 0x7d, 0x08, 0x2b, 0x7a, 0xb6, 0xbe, - 0x6e, 0xb5, 0xd7, 0x4c, 0xa6, 0xa3, 0x62, 0xdf, 0x8e, 0x16, 0xea, 0xce, 0xbf, 0x32, 0xd4, 0x5d, - 0x78, 0x65, 0xa8, 0x7b, 0x21, 0x19, 0xea, 0xde, 0xfc, 0x0f, 0x19, 0x58, 0x49, 0x61, 0xe2, 0xef, - 0xee, 0x9d, 0x05, 0xef, 0x25, 0xc4, 0x5a, 0x56, 0xf2, 0x9e, 0x2e, 0xd1, 0x0e, 0x94, 0x3f, 0x50, - 0x4c, 0x45, 0x20, 0x77, 0xaa, 0xfb, 0xaf, 0x92, 0x2e, 0x71, 0x09, 0x53, 0x2f, 0xbe, 0xf9, 0x3b, - 0x59, 0xa8, 0x68, 0x48, 0x31, 0x8a, 0xc4, 0xb2, 0x5a, 0x86, 0x11, 0x69, 0x86, 0xe8, 0x73, 0xb8, - 0x03, 0x32, 0xea, 0x41, 0x78, 0x5a, 0x5c, 0x52, 0x0d, 0x44, 0x82, 0x2d, 0x58, 0x51, 0xc1, 0x38, - 0x1e, 0x27, 0x1d, 0xca, 0xbd, 0x66, 0x59, 0x86, 0xe4, 0x78, 0x94, 0xc3, 0xc8, 0x3e, 0x54, 0xe6, - 0x60, 0x3c, 0x77, 0xc8, 0xea, 0x14, 0x52, 0x58, 0xa6, 0x05, 0xa2, 0x26, 0x51, 0xf0, 0xf9, 0x47, - 0xb0, 0xa6, 0x96, 0x47, 0xb2, 0x04, 0x45, 0x19, 0x98, 0x5c, 0x1c, 0x7a, 0x91, 0x9f, 0xc0, 0xed, - 0x99, 0x3e, 0xcd, 0x14, 0xa5, 0xec, 0xd8, 0x9b, 0x89, 0xde, 0xe9, 0x35, 0x6c, 0xfe, 0x39, 0xa8, - 0x25, 0x04, 0xe5, 0x77, 0x37, 0xe5, 0xb3, 0x7e, 0x1e, 0x1a, 0x51, 0xdd, 0xcf, 0xb3, 0xf9, 0x3f, - 0x72, 0xc0, 0xe6, 0x65, 0xf5, 0x2f, 0xb3, 0x0b, 0xf3, 0x8c, 0x99, 0x4b, 0x61, 0xcc, 0xff, 0x67, - 0xfa, 0xc3, 0xfb, 0xb0, 0xec, 0xf3, 0x81, 0x77, 0xc1, 0x7d, 0x2d, 0xa2, 0x4a, 0x8b, 0xb3, 0x1e, - 0x21, 0x54, 0x2f, 0x3e, 0x9d, 0xcd, 0xec, 0x28, 0x25, 0x0e, 0x9c, 0x68, 0x0a, 0xd4, 0x4c, 0x82, - 0xc7, 0x31, 0x2c, 0xd8, 0xee, 0xe0, 0xdc, 0xf3, 0xa5, 0x1c, 0xfc, 0x95, 0x6f, 0xbd, 0x7d, 0x6e, - 0x35, 0xb1, 0x3c, 0x6a, 0x6d, 0xa6, 0xac, 0xcc, 0xf8, 0x08, 0x2a, 0x1a, 0x98, 0x95, 0xa1, 0x70, - 0xd0, 0x3e, 0xdc, 0xee, 0xd6, 0x6f, 0xb0, 0x1a, 0x94, 0xcd, 0xd6, 0x4e, 0xf7, 0x59, 0xcb, 0x6c, - 0xed, 0xd6, 0x33, 0xac, 0x04, 0xf9, 0x83, 0x6e, 0xaf, 0x5f, 0xcf, 0x1a, 0x9b, 0xd0, 0x90, 0x35, - 0xce, 0x07, 0x35, 0x7e, 0x2b, 0x1f, 0xb9, 0x0b, 0x11, 0x29, 0x4d, 0xf4, 0x1f, 0x42, 0x55, 0x57, - 0x6f, 0x24, 0x47, 0xcc, 0x04, 0xf5, 0x85, 0x71, 0xee, 0x69, 0xb2, 0x7a, 0x07, 0x28, 0xa4, 0x3b, - 0x8c, 0x8a, 0x65, 0x13, 0x7a, 0x6b, 0x4a, 0xf8, 0x10, 0x8d, 0x9f, 0x04, 0x1b, 0xfe, 0x7f, 0xb0, - 0x98, 0x74, 0xe0, 0x4b, 0x89, 0x94, 0x66, 0x70, 0x8a, 0xd2, 0x09, 0x8f, 0x3e, 0xfb, 0x09, 0xd4, - 0x67, 0x03, 0x00, 0x52, 0x79, 0xbe, 0xa6, 0xfc, 0x92, 0x93, 0x8c, 0x09, 0xb0, 0x7d, 0x58, 0x4d, - 0x53, 0xf0, 0x90, 0x3f, 0xae, 0x77, 0x52, 0xb0, 0x79, 0x25, 0x8e, 0x7d, 0x26, 0x03, 0x41, 0x05, - 0x9c, 0xfe, 0x77, 0x92, 0xed, 0x6b, 0x83, 0xbd, 0x45, 0xff, 0xb4, 0x90, 0xd0, 0x05, 0x40, 0x0c, - 0x63, 0x75, 0xa8, 0x76, 0x8f, 0x5a, 0x1d, 0x6b, 0x67, 0xbf, 0xd9, 0xe9, 0xb4, 0x0e, 0xea, 0x37, - 0x18, 0x83, 0x45, 0x0c, 0x66, 0xef, 0x46, 0xb0, 0x8c, 0x80, 0xc9, 0x80, 0x9c, 0x82, 0x65, 0xd9, - 0x2a, 0xd4, 0xdb, 0x9d, 0x19, 0x68, 0x8e, 0x35, 0x60, 0xf5, 0xa8, 0x45, 0xf1, 0xef, 0x44, 0xbd, - 0x79, 0x61, 0x34, 0xc8, 0xd7, 0x15, 0x46, 0xc3, 0x57, 0xf6, 0x68, 0xc4, 0x43, 0xb9, 0x0e, 0x94, - 0x2e, 0xfd, 0x77, 0x32, 0xb0, 0x36, 0x83, 0x88, 0xcf, 0x86, 0x90, 0x26, 0x9d, 0xd4, 0xa1, 0xab, - 0x08, 0x54, 0xab, 0xe9, 0x7d, 0x58, 0x8e, 0x1c, 0x4f, 0x33, 0xbb, 0x52, 0x3d, 0x42, 0x28, 0xe2, - 0x0f, 0x61, 0x45, 0xf3, 0x5f, 0xcd, 0xc8, 0x0a, 0xa6, 0xa1, 0x64, 0x01, 0x63, 0x23, 0xca, 0xc1, - 0x9f, 0xe9, 0xf5, 0x10, 0xd6, 0x67, 0x11, 0x71, 0x9c, 0x2c, 0xd9, 0x5f, 0xf5, 0xc8, 0x1e, 0xcc, - 0x30, 0x42, 0xb2, 0xb7, 0xfa, 0x84, 0xab, 0xe6, 0x7f, 0x77, 0x01, 0xd8, 0x97, 0x53, 0xee, 0x5f, - 0xe1, 0xd9, 0x8f, 0xe0, 0x55, 0x09, 0x8e, 0xca, 0xd3, 0x92, 0x7d, 0xad, 0xf3, 0x5d, 0x69, 0xe7, - 0xab, 0xf2, 0xaf, 0x3e, 0x5f, 0x55, 0x78, 0xd5, 0xf9, 0xaa, 0xb7, 0xa1, 0xe6, 0x9c, 0xb9, 0x9e, - 0x10, 0x85, 0x42, 0x13, 0x0e, 0x1a, 0x0b, 0x77, 0x73, 0xf7, 0xaa, 0x66, 0x55, 0x02, 0x85, 0x1e, - 0x1c, 0xb0, 0xc7, 0x31, 0x11, 0x1f, 0x9e, 0xe1, 0x19, 0x43, 0x5d, 0x08, 0xb6, 0x86, 0x67, 0x5c, - 0x3a, 0x96, 0xd0, 0xd2, 0x50, 0x85, 0x05, 0x3c, 0x60, 0xef, 0xc0, 0x62, 0xe0, 0x4d, 0x85, 0x61, - 0xa1, 0x86, 0x81, 0x02, 0x65, 0x55, 0x82, 0x1e, 0xa9, 0xb0, 0xe9, 0xca, 0x34, 0xe0, 0xd6, 0xd8, - 0x09, 0x02, 0xa1, 0x9e, 0x0d, 0x3c, 0x37, 0xf4, 0xbd, 0x91, 0x8c, 0x7d, 0x2d, 0x4f, 0x03, 0x7e, - 0x48, 0x98, 0x1d, 0x42, 0xb0, 0x8f, 0xe3, 0x2e, 0x4d, 0x6c, 0xc7, 0x0f, 0x1a, 0x80, 0x5d, 0x52, - 0x6f, 0x8a, 0xfa, 0xbb, 0xed, 0xf8, 0x51, 0x5f, 0xc4, 0x43, 0x30, 0x73, 0xee, 0xab, 0x32, 0x7b, - 0xee, 0xeb, 0xcf, 0xa4, 0x9f, 0xfb, 0xaa, 0x61, 0xd5, 0x0f, 0x64, 0xd5, 0xf3, 0x53, 0xfc, 0xad, - 0x8e, 0x7f, 0xcd, 0x1f, 0x67, 0x5b, 0xfc, 0x36, 0xc7, 0xd9, 0x96, 0xd2, 0x8e, 0xb3, 0x7d, 0x04, - 0x15, 0x3c, 0x68, 0x64, 0x9d, 0x3b, 0x42, 0x87, 0xa3, 0x58, 0x5e, 0x5d, 0x3f, 0x89, 0xb4, 0xef, - 0xb8, 0xa1, 0x09, 0xbe, 0xfa, 0x19, 0xcc, 0x9f, 0x2c, 0x5b, 0xfe, 0x25, 0x9e, 0x2c, 0x93, 0x07, - 0xa2, 0xb6, 0xa0, 0xa4, 0xe6, 0x89, 0x31, 0xc8, 0x9f, 0xfa, 0xde, 0x58, 0xc5, 0x38, 0xc4, 0x6f, - 0xb6, 0x08, 0xd9, 0xd0, 0x93, 0x85, 0xb3, 0xa1, 0x67, 0xfc, 0xff, 0x50, 0xd1, 0x58, 0x8d, 0xbd, - 0x45, 0x7e, 0x49, 0x61, 0x9b, 0x49, 0xdd, 0x92, 0x46, 0xb1, 0x2c, 0xa1, 0xed, 0xa1, 0x90, 0x37, - 0x43, 0xc7, 0xe7, 0x78, 0x06, 0xd4, 0xf2, 0xf9, 0x05, 0xf7, 0x03, 0x15, 0x73, 0xaa, 0x47, 0x08, - 0x93, 0xe0, 0xc6, 0x6f, 0xc0, 0x4a, 0x62, 0x6e, 0xa5, 0x88, 0x78, 0x07, 0x16, 0x70, 0xdc, 0x54, - 0xd2, 0x40, 0xf2, 0x84, 0x97, 0xc4, 0xe1, 0x79, 0x57, 0x0a, 0x97, 0x59, 0x13, 0xdf, 0x3b, 0xc1, - 0x46, 0x32, 0x66, 0x45, 0xc2, 0x8e, 0x7c, 0xef, 0xc4, 0xf8, 0xc3, 0x1c, 0xe4, 0xf6, 0xbd, 0x89, - 0x9e, 0xc4, 0x96, 0x99, 0x4b, 0x62, 0x93, 0x06, 0xa7, 0x15, 0x19, 0x94, 0x52, 0x67, 0xc7, 0x40, - 0x91, 0x32, 0x2a, 0xef, 0xc1, 0xa2, 0x90, 0x13, 0xa1, 0x27, 0x2c, 0xf6, 0x17, 0xb6, 0x4f, 0x0a, - 0x71, 0x8e, 0x16, 0x9f, 0x3d, 0x0e, 0xfb, 0xde, 0x1e, 0xc1, 0xd9, 0x2a, 0xe4, 0x22, 0xf3, 0x05, - 0xd1, 0xe2, 0x91, 0xad, 0xc3, 0x02, 0x66, 0x33, 0x5f, 0xc9, 0xa0, 0xb7, 0x7c, 0x62, 0x3f, 0x80, - 0x95, 0x64, 0xbd, 0x24, 0x8a, 0xa4, 0x6e, 0xa4, 0x57, 0x8c, 0x32, 0xe9, 0x26, 0x08, 0x39, 0x42, - 0x34, 0x32, 0xb9, 0xe6, 0x94, 0x73, 0x44, 0x69, 0x42, 0xaf, 0x94, 0x10, 0x7a, 0x77, 0xa0, 0x12, - 0x8e, 0x2e, 0xac, 0x89, 0x7d, 0x35, 0xf2, 0xec, 0xa1, 0x5c, 0xdf, 0x10, 0x8e, 0x2e, 0x8e, 0x08, - 0xc2, 0x3e, 0x04, 0x18, 0x4f, 0x26, 0x72, 0xed, 0x61, 0xf0, 0x23, 0x66, 0xe5, 0xc3, 0xa3, 0x23, - 0x62, 0x39, 0xb3, 0x3c, 0x9e, 0x4c, 0xe8, 0x27, 0xdb, 0x85, 0xc5, 0xd4, 0x73, 0x9a, 0xb7, 0x55, - 0xf2, 0xad, 0x37, 0xd9, 0x4a, 0x59, 0x9c, 0xb5, 0x81, 0x0e, 0xdb, 0xfc, 0x09, 0xb0, 0x3f, 0xe5, - 0x69, 0xc9, 0x3e, 0x94, 0xa3, 0xfe, 0xe9, 0x87, 0x0d, 0x31, 0x9d, 0xbe, 0x92, 0x38, 0x6c, 0xd8, - 0x1c, 0x0e, 0x7d, 0x21, 0x17, 0x69, 0xc3, 0x8c, 0x44, 0x3e, 0x68, 0x3b, 0x66, 0x93, 0xe4, 0xbe, - 0xf1, 0x5f, 0x33, 0x50, 0xa0, 0x93, 0x8f, 0xef, 0xc2, 0x12, 0xd1, 0x47, 0x09, 0x81, 0x32, 0x54, - 0x4e, 0xfb, 0x6e, 0x5f, 0xe6, 0x02, 0x8a, 0x65, 0xa1, 0x9d, 0x06, 0xcf, 0x46, 0x33, 0xaf, 0x9d, - 0x08, 0xbf, 0x03, 0xe5, 0xa8, 0x69, 0x8d, 0x75, 0x4a, 0xaa, 0x65, 0xf6, 0x26, 0xe4, 0xcf, 0xbd, - 0x89, 0xf2, 0xfc, 0x40, 0x3c, 0x92, 0x26, 0xc2, 0xe3, 0xbe, 0x88, 0x36, 0xa8, 0xf3, 0xd2, 0x63, - 0x11, 0x35, 0x82, 0x6c, 0x30, 0xff, 0x8e, 0x0b, 0x29, 0xef, 0x78, 0x0c, 0x4b, 0x42, 0x0e, 0x68, - 0x39, 0x2d, 0xd7, 0x6f, 0x9a, 0xdf, 0x17, 0x1a, 0xde, 0x60, 0x34, 0x1d, 0x72, 0xdd, 0xf7, 0x86, - 0x09, 0x70, 0x12, 0xae, 0x34, 0x6b, 0xe3, 0x77, 0x33, 0x24, 0x5f, 0x44, 0xbd, 0xec, 0x1e, 0xe4, - 0xc5, 0xfe, 0x36, 0xe3, 0x89, 0x8f, 0xce, 0x35, 0x08, 0x3a, 0x13, 0x29, 0xc4, 0xd4, 0x61, 0xd4, - 0x5e, 0xaf, 0xbd, 0x66, 0x56, 0xdc, 0xe9, 0x38, 0x72, 0x5d, 0x7d, 0x4f, 0xbd, 0xd6, 0x8c, 0xdb, - 0x87, 0xde, 0x3e, 0x5a, 0xa6, 0x5b, 0x5a, 0x26, 0x5d, 0x3e, 0xb1, 0x63, 0x2a, 0x2d, 0x70, 0x78, - 0xc6, 0xb5, 0x0c, 0xba, 0xdf, 0xcb, 0x42, 0x2d, 0xd1, 0x23, 0x4c, 0x25, 0x14, 0x1b, 0x00, 0x05, - 0x96, 0xe4, 0x7c, 0x83, 0x00, 0x49, 0x45, 0x5d, 0x1b, 0xa7, 0x6c, 0x62, 0x9c, 0xa2, 0xe4, 0x9c, - 0x9c, 0x9e, 0x9c, 0xf3, 0x00, 0xca, 0xf1, 0x2d, 0x00, 0xc9, 0x2e, 0x89, 0xf6, 0xd4, 0xe9, 0x8e, - 0x98, 0x28, 0x4e, 0xe7, 0x29, 0xe8, 0xe9, 0x3c, 0x5f, 0x68, 0xd9, 0x1f, 0x0b, 0x58, 0x8d, 0x91, - 0x36, 0xa2, 0xbf, 0x94, 0xdc, 0x0f, 0xe3, 0x31, 0x54, 0xb4, 0xce, 0xeb, 0x59, 0x1e, 0x99, 0x44, - 0x96, 0x47, 0x74, 0x3a, 0x2b, 0x1b, 0x9f, 0xce, 0x32, 0xfe, 0x52, 0x16, 0x6a, 0x62, 0x7d, 0x39, - 0xee, 0xd9, 0x91, 0x37, 0x72, 0x06, 0x18, 0x68, 0x8a, 0x56, 0x98, 0x54, 0xb4, 0xd4, 0x3a, 0x93, - 0x4b, 0x8c, 0xf4, 0x2c, 0xfd, 0x68, 0x2a, 0x09, 0xe9, 0xe8, 0x68, 0xaa, 0x01, 0x35, 0x21, 0x18, - 0x31, 0x64, 0x14, 0xdf, 0x25, 0x60, 0x56, 0x4e, 0x39, 0xdf, 0xb6, 0x03, 0x92, 0x90, 0x3f, 0x80, - 0x15, 0x41, 0x83, 0xa7, 0xf2, 0xc6, 0xce, 0x68, 0xe4, 0x10, 0x25, 0x39, 0x9a, 0xea, 0xa7, 0x9c, - 0x9b, 0x76, 0xc8, 0x0f, 0x05, 0x42, 0x5e, 0x3d, 0x50, 0x1a, 0x3a, 0x81, 0x7d, 0x12, 0x27, 0x7c, - 0x46, 0xcf, 0x18, 0x59, 0xb6, 0x2f, 0xb5, 0xc8, 0x32, 0x39, 0x20, 0x2a, 0x63, 0xfb, 0x32, 0x8a, - 0x2c, 0xcf, 0x70, 0x52, 0x71, 0x96, 0x93, 0x8c, 0x7f, 0x9d, 0x85, 0x8a, 0xc6, 0x96, 0xaf, 0xb3, - 0xbb, 0xde, 0x9e, 0x0b, 0x0c, 0x96, 0xf5, 0x18, 0xe0, 0xdb, 0xc9, 0x26, 0x31, 0xf7, 0x85, 0x2e, - 0x39, 0xd0, 0x18, 0xf8, 0x16, 0x94, 0xc5, 0xaa, 0xfb, 0x08, 0x5d, 0xb0, 0xf2, 0xea, 0x0f, 0x04, - 0x1c, 0x4d, 0x4f, 0x14, 0xf2, 0x21, 0x22, 0x0b, 0x31, 0xf2, 0xa1, 0x40, 0xbe, 0x2c, 0x05, 0xfb, - 0x53, 0xa8, 0xca, 0x5a, 0x71, 0x4e, 0xf1, 0x75, 0xe3, 0x55, 0x9f, 0x98, 0x6f, 0xb3, 0x42, 0xcd, - 0xd1, 0xe4, 0xcb, 0x82, 0x0f, 0x55, 0xc1, 0xd2, 0xab, 0x0a, 0x3e, 0xa4, 0x07, 0x63, 0x2f, 0xca, - 0x6a, 0xc7, 0xbc, 0x2b, 0x25, 0xc7, 0x3e, 0x84, 0x15, 0x25, 0xae, 0xa6, 0xae, 0xed, 0xba, 0xde, - 0xd4, 0x1d, 0x70, 0x75, 0x40, 0x8b, 0x49, 0xd4, 0x71, 0x8c, 0x31, 0x86, 0xd1, 0x69, 0x5f, 0xca, - 0xdf, 0xba, 0x0f, 0x05, 0xd2, 0xcb, 0x49, 0xf9, 0x48, 0x17, 0x5c, 0x44, 0xc2, 0xee, 0x41, 0x81, - 0xd4, 0xf3, 0xec, 0xb5, 0xc2, 0x86, 0x08, 0x8c, 0x26, 0x30, 0x51, 0xf0, 0x90, 0x87, 0xbe, 0x33, - 0x08, 0xe2, 0xb3, 0x5f, 0x05, 0x61, 0x7f, 0x52, 0x5b, 0xb1, 0xe7, 0x36, 0xa6, 0x44, 0x1b, 0x95, - 0x68, 0xc4, 0xc6, 0xb4, 0x92, 0xa8, 0x43, 0xaa, 0x4b, 0x23, 0x58, 0x3f, 0xe1, 0xe1, 0x0b, 0xce, - 0x5d, 0x57, 0x28, 0x43, 0x03, 0xee, 0x86, 0xbe, 0x3d, 0x12, 0x93, 0x44, 0x6f, 0xf0, 0x68, 0xae, - 0xd6, 0xd8, 0x07, 0xb2, 0x1d, 0x17, 0xdc, 0x89, 0xca, 0x91, 0xec, 0x58, 0x3b, 0x49, 0xc3, 0x6d, - 0xfe, 0x3a, 0x6c, 0x5e, 0x5f, 0x28, 0xe5, 0xdc, 0xe7, 0xbd, 0xa4, 0x54, 0x89, 0xe2, 0x80, 0x23, - 0xcf, 0x0e, 0xa9, 0x37, 0xba, 0x64, 0xe9, 0x40, 0x45, 0xc3, 0xc4, 0x7b, 0x7f, 0x06, 0x95, 0x3b, - 0x7a, 0x10, 0x3b, 0x92, 0xeb, 0xf9, 0x63, 0x8c, 0xbb, 0x0d, 0xad, 0xb8, 0xf6, 0x8c, 0xb9, 0x14, - 0xc3, 0xf1, 0xf8, 0xbb, 0xb1, 0x05, 0x4b, 0xa8, 0xd9, 0x6b, 0x1b, 0xdd, 0xcb, 0x94, 0x41, 0x63, - 0x15, 0x58, 0x87, 0x64, 0x97, 0x9e, 0xef, 0xf9, 0x9f, 0x72, 0x50, 0xd1, 0xc0, 0x62, 0x37, 0xc2, - 0x04, 0x40, 0x6b, 0xe8, 0xd8, 0x63, 0xae, 0x82, 0x9c, 0x35, 0xb3, 0x86, 0xd0, 0x5d, 0x09, 0x14, - 0x7b, 0xb1, 0x7d, 0x71, 0x66, 0x79, 0xd3, 0xd0, 0x1a, 0xf2, 0x33, 0x9f, 0xab, 0x5e, 0x56, 0xed, - 0x8b, 0xb3, 0xee, 0x34, 0xdc, 0x45, 0x98, 0xa0, 0x12, 0xb2, 0x44, 0xa3, 0x92, 0x39, 0x6b, 0x63, - 0xfb, 0x32, 0xa6, 0x92, 0x89, 0x93, 0xc4, 0x99, 0xf9, 0x28, 0x71, 0x92, 0xac, 0xc5, 0xd9, 0x0d, - 0xb4, 0x30, 0xbf, 0x81, 0x7e, 0x0c, 0xeb, 0xb4, 0x81, 0x4a, 0xd1, 0x6c, 0xcd, 0xac, 0xe4, 0x55, - 0xc4, 0xca, 0x97, 0xd4, 0xd4, 0xde, 0xba, 0x78, 0x03, 0x25, 0x96, 0x02, 0xe7, 0x67, 0x24, 0xc8, - 0x32, 0xa6, 0x78, 0x33, 0x59, 0x79, 0xcf, 0xf9, 0x19, 0x17, 0x94, 0x98, 0x1d, 0xa3, 0x53, 0xca, - 0x03, 0x16, 0x63, 0xc7, 0x9d, 0xa5, 0xb4, 0x2f, 0x93, 0x94, 0x65, 0x49, 0x69, 0x5f, 0xea, 0x94, - 0x8f, 0x60, 0x63, 0xcc, 0x87, 0x8e, 0x9d, 0xac, 0xd6, 0x8a, 0x15, 0xb7, 0x55, 0x42, 0x6b, 0x65, - 0x7a, 0x64, 0xb8, 0x8b, 0xd1, 0xf8, 0x99, 0x37, 0x3e, 0x71, 0x48, 0x67, 0xa1, 0x7c, 0x9d, 0xbc, - 0xb9, 0xe8, 0x4e, 0xc7, 0xbf, 0x86, 0x60, 0x51, 0x24, 0x30, 0x6a, 0x50, 0xe9, 0x85, 0xde, 0x44, - 0x4d, 0xf3, 0x22, 0x54, 0xe9, 0x51, 0x9e, 0x7a, 0xbc, 0x05, 0x37, 0x51, 0x24, 0xf4, 0xbd, 0x89, - 0x37, 0xf2, 0xce, 0xae, 0x12, 0x7e, 0xbc, 0x7f, 0x97, 0x81, 0x95, 0x04, 0x56, 0x8a, 0xd7, 0x8f, - 0x49, 0x9e, 0x45, 0x47, 0xd7, 0x68, 0x0d, 0x2e, 0x6b, 0x6b, 0x90, 0x08, 0x49, 0x98, 0xa9, 0xe3, - 0x6c, 0xcd, 0xf8, 0x7a, 0x06, 0x55, 0x90, 0x44, 0x4a, 0x63, 0x5e, 0xa4, 0xc8, 0xf2, 0xea, 0xe2, - 0x06, 0x55, 0xc5, 0xaf, 0xc8, 0x43, 0x30, 0x43, 0xf9, 0xca, 0xb9, 0xe4, 0x49, 0x02, 0xdd, 0xe7, - 0xa7, 0x7a, 0x10, 0x3b, 0x02, 0x03, 0xe3, 0x1f, 0x65, 0x00, 0xe2, 0xde, 0xe1, 0x59, 0x86, 0x48, - 0x6f, 0xc9, 0x60, 0x1a, 0xaa, 0xa6, 0xa3, 0xbc, 0x05, 0xd5, 0x28, 0x63, 0x39, 0xd6, 0x84, 0x2a, - 0x0a, 0x26, 0xd4, 0xa1, 0xf7, 0x60, 0xe9, 0x6c, 0xe4, 0x9d, 0xa0, 0xc6, 0x2a, 0xf5, 0x16, 0xca, - 0x57, 0x5b, 0x24, 0xb0, 0xd2, 0x46, 0x62, 0xbd, 0x29, 0x9f, 0x9a, 0xd4, 0xac, 0x6b, 0x41, 0xc6, - 0xdf, 0xc8, 0x46, 0xa9, 0x9b, 0xf1, 0x48, 0xbc, 0xdc, 0xbc, 0xfb, 0x45, 0x72, 0x69, 0x5e, 0x16, - 0x5e, 0x7c, 0x0c, 0x8b, 0x3e, 0x6d, 0x4a, 0x6a, 0xc7, 0xca, 0xbf, 0x64, 0xc7, 0xaa, 0xf9, 0x09, - 0x4d, 0xe7, 0xfb, 0x50, 0xb7, 0x87, 0x17, 0xdc, 0x0f, 0x1d, 0xf4, 0xd6, 0xa3, 0x7e, 0x2c, 0x93, - 0x25, 0x35, 0x38, 0x2a, 0xa2, 0xef, 0xc1, 0x92, 0x3c, 0x89, 0x1b, 0x51, 0xca, 0x7b, 0x80, 0x62, - 0xb0, 0x20, 0x34, 0xfe, 0xa9, 0xca, 0x15, 0x4d, 0xce, 0xee, 0xcb, 0x47, 0x45, 0x7f, 0xc3, 0xec, - 0x7c, 0x00, 0x55, 0x32, 0x92, 0x0c, 0x02, 0x48, 0x79, 0x44, 0x40, 0x19, 0x02, 0x48, 0x0e, 0x6b, - 0xfe, 0x75, 0x86, 0xd5, 0xf8, 0xf7, 0x19, 0x28, 0xee, 0x7b, 0x93, 0x7d, 0x87, 0xb2, 0xf9, 0x71, - 0x99, 0x44, 0x31, 0xaa, 0x05, 0xf1, 0x88, 0x89, 0x3f, 0x2f, 0x39, 0x70, 0x96, 0xaa, 0xe6, 0xd5, - 0x92, 0x6a, 0xde, 0x17, 0x70, 0x0b, 0x43, 0x80, 0xbe, 0x37, 0xf1, 0x7c, 0xb1, 0x54, 0xed, 0x11, - 0xa9, 0x7b, 0x9e, 0x1b, 0x9e, 0x2b, 0xd9, 0x79, 0xf3, 0x94, 0xf3, 0x23, 0x8d, 0xe2, 0x30, 0x22, - 0xc0, 0x23, 0x9d, 0xa3, 0xf0, 0xc2, 0x22, 0x0b, 0x5d, 0xea, 0xa3, 0x24, 0x51, 0x97, 0x04, 0xa2, - 0x85, 0x70, 0xd4, 0x48, 0x8d, 0xcf, 0xa0, 0x1c, 0x39, 0x7b, 0xd8, 0xfb, 0x50, 0x3e, 0xf7, 0x26, - 0xd2, 0x23, 0x94, 0x49, 0x1c, 0xca, 0x93, 0x6f, 0x6d, 0x96, 0xce, 0xe9, 0x47, 0x60, 0xfc, 0x61, - 0x11, 0x8a, 0x6d, 0xf7, 0xc2, 0x73, 0x06, 0x98, 0x6d, 0x3a, 0xe6, 0x63, 0x4f, 0x5d, 0x07, 0x20, - 0x7e, 0x63, 0x6e, 0x56, 0x7c, 0x9b, 0x4f, 0x4e, 0xe6, 0x66, 0x45, 0xf7, 0xf8, 0xac, 0xc1, 0x82, - 0xaf, 0x5f, 0xc7, 0x53, 0xf0, 0x31, 0xff, 0x3d, 0xda, 0x2f, 0x0b, 0xda, 0x25, 0x0b, 0xa2, 0x2e, - 0xba, 0x26, 0x06, 0x87, 0x8c, 0x8e, 0x67, 0x96, 0x11, 0x82, 0x03, 0xf6, 0x06, 0x14, 0xe5, 0x19, - 0x38, 0x3a, 0xb4, 0x44, 0x09, 0xeb, 0x12, 0x84, 0xdc, 0xe0, 0x73, 0x0a, 0xe1, 0x46, 0x8a, 0x6c, - 0xce, 0xac, 0x2a, 0xe0, 0xae, 0xe0, 0xb5, 0x3b, 0x50, 0x21, 0x7a, 0x22, 0x29, 0xc9, 0x24, 0x4d, - 0x04, 0x21, 0x41, 0xca, 0xad, 0x56, 0xe5, 0xd4, 0x5b, 0xad, 0x30, 0x9d, 0x38, 0x92, 0xb2, 0xf4, - 0x8a, 0x40, 0x77, 0x19, 0x69, 0x70, 0x75, 0x55, 0x9c, 0xf4, 0xa9, 0xd0, 0x69, 0x65, 0xe5, 0x53, - 0x79, 0x1b, 0x6a, 0xa7, 0xf6, 0x68, 0x74, 0x62, 0x0f, 0x9e, 0x93, 0x2b, 0xa0, 0x4a, 0xde, 0x4f, - 0x05, 0x44, 0x5f, 0xc0, 0x1d, 0xa8, 0x68, 0xb3, 0x8c, 0x19, 0x98, 0x79, 0x13, 0xe2, 0xf9, 0x9d, - 0xf5, 0xf0, 0x2d, 0xbe, 0x86, 0x87, 0x4f, 0xcb, 0x44, 0x5d, 0x4a, 0x66, 0xa2, 0xde, 0x42, 0x69, - 0x2a, 0x53, 0x0e, 0xeb, 0x74, 0x71, 0x8e, 0x3d, 0x1c, 0x62, 0xca, 0x21, 0x3a, 0xb2, 0x68, 0xf0, - 0x08, 0xbf, 0x4c, 0xb6, 0x04, 0xc1, 0x88, 0xe4, 0x36, 0xb9, 0xa9, 0x27, 0xb6, 0x33, 0xc4, 0x43, - 0x07, 0xe4, 0x3d, 0x28, 0xda, 0xe3, 0xf0, 0xc8, 0x76, 0x86, 0xec, 0x2e, 0x54, 0x15, 0x1a, 0x77, - 0xc7, 0x15, 0x1a, 0x7f, 0x89, 0x16, 0x7b, 0xa2, 0x01, 0xb5, 0x88, 0x62, 0x1c, 0x1f, 0x39, 0xae, - 0x48, 0x12, 0xe4, 0x83, 0x8f, 0x30, 0xcb, 0x27, 0xe4, 0x78, 0xb0, 0x78, 0xf1, 0xe1, 0xad, 0x28, - 0xf9, 0x00, 0xb9, 0x54, 0xfd, 0xa7, 0xe0, 0x18, 0x51, 0x0a, 0xe5, 0x8e, 0x62, 0x74, 0xeb, 0x09, - 0xfd, 0x57, 0x92, 0x62, 0x8c, 0x8e, 0x08, 0xd8, 0x67, 0x9a, 0xfd, 0xda, 0x40, 0xe2, 0x37, 0x66, - 0xea, 0xbf, 0xee, 0x50, 0xd6, 0x6d, 0x00, 0x27, 0x10, 0xbb, 0x4c, 0xc0, 0xdd, 0x21, 0x9e, 0x11, - 0x2e, 0x99, 0x65, 0x27, 0x78, 0x4a, 0x80, 0xef, 0xd6, 0xb0, 0x6d, 0x42, 0x55, 0x7f, 0x4d, 0x56, - 0x82, 0x7c, 0xf7, 0xa8, 0xd5, 0xa9, 0xdf, 0x60, 0x15, 0x28, 0xf6, 0x5a, 0xfd, 0xfe, 0x01, 0x46, - 0xfa, 0xaa, 0x50, 0x8a, 0x0e, 0x32, 0x66, 0xc5, 0x53, 0x73, 0x67, 0xa7, 0x75, 0xd4, 0x6f, 0xed, - 0xd6, 0x73, 0x3f, 0xcd, 0x97, 0xb2, 0xf5, 0x9c, 0xf1, 0x47, 0x39, 0xa8, 0x68, 0xa3, 0xf0, 0x72, - 0x61, 0x7c, 0x1b, 0x00, 0x2d, 0xc9, 0x38, 0x23, 0x35, 0x6f, 0x96, 0x05, 0x84, 0x26, 0x5f, 0x8f, - 0x51, 0xe4, 0xe8, 0x46, 0x26, 0x15, 0xa3, 0x78, 0x1b, 0x6a, 0x74, 0xb9, 0x91, 0x1e, 0xaf, 0x2d, - 0x98, 0x55, 0x02, 0x4a, 0x51, 0x8d, 0x27, 0x9c, 0x91, 0x08, 0x8f, 0xd7, 0xc9, 0x4b, 0x4d, 0x08, - 0x84, 0x07, 0xec, 0xf0, 0x74, 0x64, 0xe0, 0x8d, 0x2e, 0x38, 0x51, 0x90, 0x46, 0x58, 0x91, 0xb0, - 0xbe, 0x3c, 0xab, 0x2d, 0xe5, 0xa1, 0x76, 0xc4, 0xb6, 0x60, 0x56, 0x09, 0x28, 0x1b, 0xfa, 0x81, - 0x62, 0x20, 0xca, 0x5e, 0xd9, 0x98, 0xe7, 0x86, 0x04, 0xf3, 0x1c, 0xcc, 0xb9, 0x11, 0xcb, 0xc8, - 0x18, 0xdf, 0x9b, 0x2f, 0xf7, 0x6a, 0x77, 0x22, 0x7b, 0x1f, 0xd8, 0x78, 0x32, 0xb1, 0x52, 0x1c, - 0x7c, 0x79, 0x73, 0x69, 0x3c, 0x99, 0xf4, 0x35, 0xff, 0xd7, 0x77, 0xe0, 0x7b, 0xfc, 0x06, 0x58, - 0x53, 0x2c, 0x60, 0xec, 0x62, 0x64, 0x8a, 0xc5, 0x62, 0x39, 0xa3, 0x8b, 0xe5, 0x14, 0xe9, 0x97, - 0x4d, 0x95, 0x7e, 0x2f, 0x93, 0x13, 0xc6, 0x1e, 0x54, 0x8e, 0xb4, 0xab, 0xd3, 0xee, 0x8a, 0x1d, - 0x42, 0x5d, 0x9a, 0x46, 0x7b, 0x07, 0xf9, 0x14, 0x7d, 0x79, 0x57, 0x9a, 0xd6, 0x9b, 0xac, 0xd6, - 0x1b, 0xe3, 0x1f, 0x64, 0xe8, 0xaa, 0x99, 0xa8, 0xf3, 0xf1, 0x6d, 0x6d, 0x2a, 0xfc, 0x16, 0x9f, - 0x84, 0xaf, 0xa8, 0xb0, 0x9b, 0x3c, 0xc4, 0x8e, 0x5d, 0xb3, 0xbc, 0xd3, 0xd3, 0x80, 0xab, 0x1c, - 0x8f, 0x0a, 0xc2, 0xba, 0x08, 0x52, 0xca, 0xb7, 0xd0, 0xf0, 0x1d, 0xaa, 0x3f, 0x90, 0x89, 0x1d, - 0x42, 0xf9, 0x3e, 0xb4, 0x2f, 0x65, 0xab, 0x81, 0x50, 0x41, 0x64, 0x7c, 0x40, 0x1d, 0x96, 0x8d, - 0x9e, 0x8d, 0xbf, 0x2b, 0x0f, 0xeb, 0xcf, 0x8e, 0xef, 0x7d, 0x28, 0x45, 0xb5, 0x26, 0x77, 0x58, - 0x45, 0x19, 0xe1, 0xc5, 0x3e, 0x8e, 0xce, 0x90, 0x44, 0x8f, 0x69, 0x71, 0x61, 0x8c, 0xa7, 0xad, - 0xf5, 0xfa, 0x03, 0x60, 0xa7, 0x8e, 0x3f, 0x4b, 0x4c, 0x8b, 0xad, 0x8e, 0x18, 0x8d, 0xda, 0x38, - 0x86, 0x15, 0x25, 0x25, 0x34, 0x8b, 0x20, 0x39, 0x79, 0x99, 0x57, 0x08, 0xf9, 0xec, 0x9c, 0x90, - 0x37, 0x7e, 0xb3, 0x00, 0x45, 0x75, 0x0d, 0x61, 0xda, 0xd5, 0x79, 0xe5, 0xe4, 0xd5, 0x79, 0x8d, - 0xc4, 0x85, 0x4a, 0x38, 0xf5, 0x72, 0xbf, 0x7f, 0x6f, 0x76, 0xcb, 0xd6, 0x62, 0x15, 0x89, 0x6d, - 0x5b, 0xc6, 0x2a, 0x0a, 0xc9, 0x58, 0x45, 0xda, 0x75, 0x82, 0xa4, 0x7a, 0xce, 0x5d, 0x27, 0x78, - 0x0b, 0x48, 0x8f, 0xd0, 0x92, 0xdb, 0x4a, 0x08, 0x10, 0x7b, 0x4e, 0x52, 0xed, 0x28, 0xcd, 0xaa, - 0x1d, 0xaf, 0xad, 0x12, 0x7c, 0x0c, 0x0b, 0x74, 0xbd, 0x86, 0x3c, 0xfc, 0xab, 0x36, 0x0e, 0x39, - 0x56, 0xea, 0x3f, 0x9d, 0x78, 0x30, 0x25, 0xad, 0x7e, 0x37, 0x57, 0x25, 0x71, 0x37, 0x97, 0x1e, - 0x43, 0xa9, 0x26, 0x63, 0x28, 0xf7, 0xa0, 0x1e, 0x0d, 0x1c, 0x7a, 0x24, 0xdd, 0x40, 0x9e, 0x1c, - 0x5c, 0x54, 0x70, 0x21, 0x0d, 0x3b, 0x41, 0xbc, 0xf1, 0x2d, 0x26, 0x36, 0x3e, 0x21, 0xab, 0x9a, - 0x61, 0xc8, 0xc7, 0x93, 0x50, 0x6d, 0x7c, 0xda, 0x0d, 0x8e, 0x34, 0xf3, 0x4b, 0x38, 0xf3, 0x6a, - 0x7a, 0x89, 0x3b, 0xb6, 0x61, 0xf1, 0xd4, 0x76, 0x46, 0x53, 0x9f, 0x5b, 0x3e, 0xb7, 0x03, 0xcf, - 0xc5, 0xc5, 0x1f, 0xef, 0xc1, 0xf2, 0x15, 0xf7, 0x88, 0xc6, 0x44, 0x12, 0xb3, 0x76, 0xaa, 0x3f, - 0xe2, 0x21, 0x26, 0x7d, 0x24, 0xc4, 0x96, 0x25, 0xcf, 0x10, 0x53, 0xae, 0x4a, 0xbb, 0x63, 0xed, - 0x1d, 0xb4, 0x9f, 0xec, 0xf7, 0xeb, 0x19, 0xf1, 0xd8, 0x3b, 0xde, 0xd9, 0x69, 0xb5, 0x76, 0x71, - 0x0b, 0x03, 0x58, 0xd8, 0x6b, 0xb6, 0x0f, 0xe4, 0x06, 0x96, 0xaf, 0x17, 0x8c, 0x7f, 0x99, 0x85, - 0x8a, 0xf6, 0x36, 0xec, 0x51, 0x34, 0x09, 0x74, 0x03, 0xd4, 0xed, 0xf9, 0x37, 0xde, 0x52, 0x12, - 0x5e, 0x9b, 0x85, 0xe8, 0xae, 0xc6, 0xec, 0xb5, 0x77, 0x35, 0xb2, 0x77, 0x61, 0xc9, 0xa6, 0x1a, - 0xa2, 0x41, 0x97, 0xce, 0x7d, 0x09, 0x96, 0x63, 0x8e, 0x19, 0xa4, 0xf1, 0x36, 0x25, 0xe8, 0xf2, - 0x2a, 0x69, 0x33, 0xda, 0xa9, 0x70, 0x6e, 0x8a, 0x72, 0x64, 0x64, 0x30, 0x3e, 0xda, 0xf0, 0xe5, - 0x78, 0x29, 0xb4, 0x10, 0x41, 0x09, 0x0e, 0xaf, 0x9a, 0xd1, 0xb3, 0xf1, 0x09, 0x40, 0xfc, 0x3e, - 0xc9, 0xe1, 0xbb, 0x91, 0x1c, 0xbe, 0x8c, 0x36, 0x7c, 0x59, 0xe3, 0x9f, 0x48, 0xd1, 0x25, 0xe7, - 0x22, 0x72, 0xf5, 0xfd, 0x00, 0x94, 0xf3, 0xd1, 0xc2, 0x24, 0xef, 0xc9, 0x88, 0x87, 0xea, 0x32, - 0x83, 0x65, 0x89, 0x69, 0x47, 0x88, 0x39, 0x51, 0x9b, 0x9d, 0x17, 0xb5, 0x6f, 0x41, 0x55, 0x88, - 0x59, 0xc9, 0x48, 0x81, 0x14, 0x57, 0x95, 0xb1, 0x7d, 0xa9, 0xda, 0x4e, 0xc8, 0xd8, 0xfc, 0x8c, - 0x8c, 0xfd, 0x7b, 0x19, 0xba, 0x5b, 0x24, 0xee, 0x68, 0x2c, 0x64, 0xa3, 0x3a, 0x93, 0x42, 0x56, - 0x92, 0x9a, 0x11, 0xfe, 0x1a, 0xc1, 0x99, 0x4d, 0x17, 0x9c, 0xe9, 0x22, 0x39, 0x97, 0x2a, 0x92, - 0x8d, 0x4d, 0x68, 0xec, 0x72, 0x31, 0x14, 0xcd, 0xd1, 0x68, 0x66, 0x2c, 0x8d, 0x5b, 0x70, 0x33, - 0x05, 0x27, 0xbd, 0x36, 0x5f, 0xc2, 0x5a, 0x93, 0x2e, 0x5d, 0xf8, 0xae, 0x0e, 0x4f, 0x1a, 0x0d, - 0x58, 0x9f, 0xad, 0x52, 0x36, 0xb6, 0x07, 0xcb, 0xbb, 0xfc, 0x64, 0x7a, 0x76, 0xc0, 0x2f, 0xe2, - 0x86, 0x18, 0xe4, 0x83, 0x73, 0xef, 0x85, 0x9c, 0x5c, 0xfc, 0x8d, 0x69, 0x99, 0x82, 0xc6, 0x0a, - 0x26, 0x7c, 0xa0, 0x3c, 0xf7, 0x08, 0xe9, 0x4d, 0xf8, 0xc0, 0x78, 0x04, 0x4c, 0xaf, 0x47, 0xce, - 0x84, 0x30, 0xab, 0xa6, 0x27, 0x56, 0x70, 0x15, 0x84, 0x7c, 0xac, 0x0e, 0x0d, 0x42, 0x30, 0x3d, - 0xe9, 0x11, 0xc4, 0x78, 0x0f, 0xaa, 0x47, 0xf6, 0x95, 0xc9, 0xbf, 0x91, 0x67, 0xf3, 0x36, 0xa0, - 0x38, 0xb1, 0xaf, 0x84, 0x3c, 0x8d, 0x82, 0x78, 0x88, 0x36, 0xfe, 0x59, 0x1e, 0x16, 0x88, 0x92, - 0xdd, 0xa5, 0x9b, 0x90, 0x1d, 0x17, 0xe5, 0x99, 0xda, 0x59, 0x34, 0xd0, 0xdc, 0xe6, 0x93, 0x9d, - 0xdf, 0x7c, 0xa4, 0xc7, 0x51, 0xdd, 0xea, 0xa4, 0xc2, 0x2d, 0xee, 0x74, 0xac, 0xae, 0x72, 0x4a, - 0xde, 0x3c, 0x90, 0x8f, 0x6f, 0xd0, 0xa6, 0x53, 0xd7, 0xc9, 0x80, 0x78, 0x6c, 0xbc, 0x51, 0xef, - 0xd4, 0x9e, 0x2a, 0xf7, 0x1d, 0x1d, 0x94, 0x6a, 0x21, 0x16, 0xd5, 0x81, 0xd3, 0xa4, 0x85, 0x38, - 0x67, 0x09, 0x96, 0x5e, 0x6d, 0x09, 0x92, 0x2b, 0xf2, 0x25, 0x96, 0x20, 0xbc, 0x86, 0x25, 0xf8, - 0x1a, 0xc1, 0xe8, 0x9b, 0x50, 0x42, 0x45, 0x49, 0xdb, 0x86, 0x84, 0x82, 0x24, 0xb6, 0xa1, 0x4f, - 0x35, 0x5b, 0x89, 0x32, 0x61, 0xb4, 0x7d, 0xc0, 0xe4, 0xdf, 0xfc, 0x72, 0x82, 0x7c, 0x5f, 0x43, - 0x51, 0x42, 0x05, 0x43, 0xbb, 0xf6, 0x58, 0x5d, 0x8c, 0x87, 0xbf, 0xc5, 0xb0, 0xe1, 0x6d, 0x5e, - 0xdf, 0x4c, 0x1d, 0x9f, 0x0f, 0xd5, 0x8d, 0x47, 0x0e, 0xae, 0x51, 0x01, 0x11, 0x2f, 0x28, 0xec, - 0x36, 0xd7, 0x7b, 0xe1, 0x4a, 0xd9, 0x53, 0x74, 0x82, 0xa7, 0xe2, 0xd1, 0x60, 0x50, 0xc7, 0x6b, - 0x34, 0x27, 0x9e, 0xaf, 0x76, 0x79, 0xe3, 0xe7, 0x19, 0xa8, 0xcb, 0xd5, 0x15, 0xe1, 0x74, 0xb3, - 0xa9, 0x70, 0x5d, 0xe2, 0xc6, 0xcb, 0xef, 0x2f, 0x32, 0xa0, 0x86, 0xde, 0xa2, 0x68, 0xcb, 0x27, - 0x6f, 0x57, 0x45, 0x00, 0xf7, 0xe4, 0xb6, 0xff, 0x26, 0x54, 0x54, 0xd2, 0xf8, 0xd8, 0x19, 0xa9, - 0xcb, 0xf2, 0x29, 0x6b, 0xfc, 0xd0, 0x19, 0x29, 0x8d, 0xc1, 0xb7, 0xe5, 0x01, 0xe8, 0x0c, 0x6a, - 0x0c, 0xa6, 0x1d, 0x72, 0xe3, 0x5f, 0x64, 0x60, 0x59, 0x7b, 0x15, 0xb9, 0x6e, 0x7f, 0x04, 0xd5, - 0xe8, 0xfe, 0x5a, 0x1e, 0xa9, 0xaa, 0x1b, 0x49, 0x41, 0x13, 0x17, 0xab, 0x0c, 0x22, 0x48, 0x20, - 0x3a, 0x33, 0xb4, 0xaf, 0x28, 0xb3, 0x79, 0x3a, 0x56, 0xd6, 0xe0, 0xd0, 0xbe, 0xda, 0xe3, 0xbc, - 0x37, 0x1d, 0x0b, 0x5b, 0xff, 0x05, 0xe7, 0xcf, 0x23, 0x02, 0x12, 0x9f, 0x20, 0x60, 0x92, 0xc2, - 0x80, 0xda, 0xd8, 0x73, 0xc3, 0xf3, 0x88, 0x44, 0xaa, 0xe9, 0x08, 0x24, 0x1a, 0xe3, 0x0f, 0xb2, - 0xb0, 0x42, 0x3e, 0x49, 0xe9, 0x0b, 0x96, 0xa2, 0xab, 0x01, 0x0b, 0xe4, 0x9e, 0x25, 0xe1, 0xb5, - 0x7f, 0xc3, 0x94, 0xcf, 0xec, 0xe3, 0xd7, 0xf4, 0xa3, 0xaa, 0x33, 0xd6, 0xd7, 0x0c, 0x7f, 0x6e, - 0x7e, 0xf8, 0xaf, 0x1f, 0xde, 0xb4, 0xc8, 0x70, 0x21, 0x2d, 0x32, 0xfc, 0x3a, 0xf1, 0xd8, 0xb9, - 0xd3, 0xc0, 0x45, 0x49, 0xa3, 0x9d, 0x06, 0x7e, 0x04, 0x1b, 0x09, 0x1a, 0x94, 0xd6, 0xce, 0xa9, - 0xc3, 0xd5, 0x8d, 0x35, 0xab, 0x1a, 0x75, 0x4f, 0xe1, 0xb6, 0x8b, 0x50, 0x08, 0x06, 0xde, 0x84, - 0x1b, 0xeb, 0xb0, 0x9a, 0x1c, 0x55, 0xb9, 0x4d, 0xfc, 0x76, 0x06, 0x1a, 0x32, 0x8f, 0xc7, 0x71, - 0xcf, 0xf6, 0x9d, 0x20, 0xf4, 0xfc, 0xe8, 0x9e, 0xd7, 0xdb, 0x00, 0x74, 0x71, 0x3f, 0x1a, 0xdf, - 0xf2, 0x8e, 0x16, 0x84, 0xa0, 0xe9, 0x7d, 0x13, 0x4a, 0xdc, 0x1d, 0x12, 0x92, 0xb8, 0xa1, 0xc8, - 0xdd, 0xa1, 0x32, 0xdc, 0xe7, 0xb6, 0xd2, 0x5a, 0x52, 0x49, 0x90, 0x37, 0x22, 0x88, 0xd1, 0xe1, - 0x17, 0xb8, 0xa5, 0xe7, 0xa3, 0x1b, 0x11, 0x0e, 0xed, 0x4b, 0xcc, 0x8a, 0x0d, 0x8c, 0xbf, 0x99, - 0x85, 0xa5, 0xb8, 0x7f, 0x74, 0xdf, 0xca, 0xcb, 0x6f, 0x8e, 0xb9, 0x2b, 0xd9, 0xc1, 0x11, 0x06, - 0x8f, 0xe6, 0xa9, 0x2d, 0xd1, 0xe2, 0x6c, 0xbb, 0xcc, 0x80, 0x8a, 0xa2, 0xf0, 0xa6, 0xa1, 0x76, - 0x85, 0x62, 0x99, 0x48, 0xba, 0xd3, 0x50, 0x58, 0xa8, 0xc2, 0x54, 0x77, 0x5c, 0x69, 0x23, 0x16, - 0xec, 0x71, 0xd8, 0xc6, 0xaf, 0x43, 0x08, 0xb0, 0x28, 0x46, 0x13, 0x29, 0xa8, 0x04, 0x7d, 0x9d, - 0x0c, 0x16, 0x9a, 0x39, 0x34, 0x56, 0x74, 0x6d, 0x9e, 0x2e, 0xb4, 0x8e, 0xb4, 0xf9, 0x37, 0xa1, - 0x42, 0x95, 0xc7, 0x87, 0xbf, 0xf3, 0x66, 0x19, 0x5b, 0x40, 0xbc, 0xf4, 0x9a, 0x79, 0xd3, 0x84, - 0xaf, 0x00, 0xa8, 0x29, 0x4c, 0x93, 0xf9, 0xab, 0x19, 0xb8, 0x99, 0x32, 0x6d, 0x72, 0x95, 0xef, - 0xc0, 0xf2, 0x69, 0x84, 0x54, 0xa3, 0x4b, 0x4b, 0x7d, 0x5d, 0x89, 0xd5, 0xe4, 0x98, 0x9a, 0xf5, - 0xd3, 0x24, 0x20, 0xb6, 0x52, 0x69, 0x06, 0x13, 0x57, 0x0b, 0xa0, 0x4a, 0x44, 0xd3, 0x48, 0x06, - 0xe2, 0x11, 0x6c, 0xb6, 0x2e, 0x85, 0xc4, 0x88, 0x52, 0x6b, 0x07, 0xcf, 0xa7, 0x2a, 0x7a, 0x35, - 0xe3, 0x91, 0xcf, 0xbc, 0x96, 0x47, 0x7e, 0x48, 0x67, 0x91, 0xa3, 0xba, 0x7e, 0x91, 0x4a, 0x70, - 0x03, 0x15, 0x65, 0x4e, 0xb0, 0x0a, 0x75, 0xc7, 0x80, 0x00, 0x51, 0xa5, 0x46, 0x00, 0x4b, 0x87, - 0xd3, 0x51, 0xe8, 0xec, 0x44, 0x20, 0xf6, 0xb1, 0x2c, 0x83, 0xed, 0xa8, 0x51, 0x4b, 0x6d, 0x08, - 0xa2, 0x86, 0x70, 0xb0, 0xc6, 0xa2, 0x22, 0x6b, 0xbe, 0xbd, 0xa5, 0x71, 0xb2, 0x05, 0xe3, 0x26, - 0x6c, 0xc4, 0x4f, 0x34, 0x6c, 0x6a, 0xab, 0xf9, 0xfb, 0x19, 0x4a, 0xc1, 0x27, 0x5c, 0xcf, 0xb5, - 0x27, 0xc1, 0xb9, 0x17, 0xb2, 0x16, 0xac, 0x04, 0x8e, 0x7b, 0x36, 0xe2, 0x7a, 0xf5, 0x81, 0x1c, - 0x84, 0xb5, 0x64, 0xdf, 0xa8, 0x68, 0x60, 0x2e, 0x53, 0x89, 0xb8, 0xb6, 0x80, 0x6d, 0x5f, 0xd7, - 0xc9, 0x98, 0x2d, 0x66, 0x46, 0x63, 0xbe, 0xf3, 0x6d, 0x58, 0x4c, 0x36, 0xc4, 0x3e, 0x95, 0x47, - 0xf8, 0xe3, 0x5e, 0xe5, 0x66, 0xce, 0x37, 0xc7, 0x0c, 0x51, 0x89, 0xc7, 0x3e, 0x30, 0xfe, 0x7a, - 0x06, 0x1a, 0x26, 0x17, 0x9c, 0xab, 0xf5, 0x52, 0xf1, 0xcc, 0x8f, 0xe6, 0x6a, 0xbd, 0xfe, 0x5d, - 0xd5, 0xcd, 0x00, 0xaa, 0x47, 0x1f, 0x5c, 0x3b, 0x19, 0xfb, 0x37, 0xe6, 0xde, 0x68, 0xbb, 0x04, - 0x0b, 0x44, 0x62, 0x6c, 0xc0, 0x9a, 0xec, 0x8f, 0xea, 0x4b, 0x1c, 0x6e, 0x4d, 0xb4, 0x98, 0x08, - 0xb7, 0x6e, 0x42, 0x83, 0xce, 0xea, 0xea, 0x2f, 0x21, 0x0b, 0xee, 0x02, 0x3b, 0xb4, 0x07, 0xb6, - 0xef, 0x79, 0xee, 0x11, 0xf7, 0x65, 0x42, 0x33, 0x6a, 0x98, 0x18, 0x8d, 0x54, 0xaa, 0x30, 0x3d, - 0xa9, 0x8b, 0x63, 0x3d, 0x57, 0xe5, 0x6f, 0xd1, 0x93, 0x61, 0xc2, 0xca, 0xb6, 0xfd, 0x9c, 0xab, - 0x9a, 0xd4, 0x10, 0x3d, 0x86, 0xca, 0x24, 0xaa, 0x54, 0x8d, 0xbb, 0xba, 0x62, 0x64, 0xbe, 0x59, - 0x53, 0xa7, 0x36, 0x1e, 0xc2, 0x6a, 0xb2, 0x4e, 0x29, 0x3a, 0x36, 0xa1, 0x34, 0x96, 0x30, 0xd9, - 0xbb, 0xe8, 0xd9, 0xf8, 0xad, 0x12, 0x14, 0xa5, 0xa5, 0xca, 0xb6, 0x20, 0x3f, 0x50, 0x39, 0x74, - 0xf1, 0xd5, 0x56, 0x12, 0xab, 0xfe, 0xef, 0x60, 0x26, 0x9d, 0xa0, 0x63, 0x8f, 0x61, 0x31, 0x19, - 0x46, 0x9e, 0xb9, 0x09, 0x20, 0x19, 0xff, 0xad, 0x0d, 0x66, 0x02, 0x86, 0xe5, 0x78, 0x73, 0x24, - 0x9d, 0xa1, 0x74, 0xae, 0xed, 0x9e, 0x9e, 0x2b, 0xf4, 0xed, 0xe0, 0xdc, 0xb6, 0x1e, 0x3e, 0xfa, - 0x44, 0x5e, 0x05, 0x50, 0x41, 0x60, 0xef, 0xdc, 0x7e, 0xf8, 0xe8, 0x93, 0x59, 0x4d, 0x5a, 0x5e, - 0x04, 0xa0, 0x69, 0xd2, 0xab, 0x50, 0xa0, 0x1b, 0x52, 0x29, 0x19, 0x8a, 0x1e, 0xd8, 0x03, 0x58, - 0x55, 0xce, 0x0f, 0x99, 0xb6, 0x4e, 0x52, 0xb0, 0x44, 0x27, 0x05, 0x25, 0xae, 0x87, 0x28, 0x72, - 0x97, 0xac, 0xc3, 0xc2, 0x79, 0x7c, 0xdd, 0x6d, 0xcd, 0x94, 0x4f, 0xc6, 0x1f, 0x14, 0xa0, 0xa2, - 0x0d, 0x0a, 0xab, 0x42, 0xc9, 0x6c, 0xf5, 0x5a, 0xe6, 0xb3, 0xd6, 0x6e, 0xfd, 0x06, 0xbb, 0x07, - 0xef, 0xb4, 0x3b, 0x3b, 0x5d, 0xd3, 0x6c, 0xed, 0xf4, 0xad, 0xae, 0x69, 0xa9, 0x0b, 0xd6, 0x8e, - 0x9a, 0x5f, 0x1f, 0xb6, 0x3a, 0x7d, 0x6b, 0xb7, 0xd5, 0x6f, 0xb6, 0x0f, 0x7a, 0xf5, 0x0c, 0x7b, - 0x03, 0x1a, 0x31, 0xa5, 0x42, 0x37, 0x0f, 0xbb, 0xc7, 0x9d, 0x7e, 0x3d, 0xcb, 0xee, 0xc0, 0xad, - 0xbd, 0x76, 0xa7, 0x79, 0x60, 0xc5, 0x34, 0x3b, 0x07, 0xfd, 0x67, 0x56, 0xeb, 0x57, 0x8f, 0xda, - 0xe6, 0xd7, 0xf5, 0x5c, 0x1a, 0xc1, 0x7e, 0xff, 0x60, 0x47, 0xd5, 0x90, 0x67, 0x37, 0x61, 0x8d, - 0x08, 0xa8, 0x88, 0xd5, 0xef, 0x76, 0xad, 0x5e, 0xb7, 0xdb, 0xa9, 0x17, 0xd8, 0x32, 0xd4, 0xda, - 0x9d, 0x67, 0xcd, 0x83, 0xf6, 0xae, 0x65, 0xb6, 0x9a, 0x07, 0x87, 0xf5, 0x05, 0xb6, 0x02, 0x4b, - 0xb3, 0x74, 0x45, 0x51, 0x85, 0xa2, 0xeb, 0x76, 0xda, 0xdd, 0x8e, 0xf5, 0xac, 0x65, 0xf6, 0xda, - 0xdd, 0x4e, 0xbd, 0xc4, 0xd6, 0x81, 0x25, 0x51, 0xfb, 0x87, 0xcd, 0x9d, 0x7a, 0x99, 0xad, 0xc1, - 0x72, 0x12, 0xfe, 0xb4, 0xf5, 0x75, 0x1d, 0x58, 0x03, 0x56, 0xa9, 0x63, 0xd6, 0x76, 0xeb, 0xa0, - 0xfb, 0x95, 0x75, 0xd8, 0xee, 0xb4, 0x0f, 0x8f, 0x0f, 0xeb, 0x15, 0xbc, 0xb7, 0xb1, 0xd5, 0xb2, - 0xda, 0x9d, 0xde, 0xf1, 0xde, 0x5e, 0x7b, 0xa7, 0xdd, 0xea, 0xf4, 0xeb, 0x55, 0x6a, 0x39, 0xed, - 0xc5, 0x6b, 0xa2, 0x80, 0x3c, 0xdb, 0x62, 0xed, 0xb6, 0x7b, 0xcd, 0xed, 0x83, 0xd6, 0x6e, 0x7d, - 0x91, 0xdd, 0x86, 0x9b, 0xfd, 0xd6, 0xe1, 0x51, 0xd7, 0x6c, 0x9a, 0x5f, 0xab, 0xb3, 0x2f, 0xd6, - 0x5e, 0xb3, 0x7d, 0x70, 0x6c, 0xb6, 0xea, 0x4b, 0xec, 0x2d, 0xb8, 0x6d, 0xb6, 0xbe, 0x3c, 0x6e, - 0x9b, 0xad, 0x5d, 0xab, 0xd3, 0xdd, 0x6d, 0x59, 0x7b, 0xad, 0x66, 0xff, 0xd8, 0x6c, 0x59, 0x87, - 0xed, 0x5e, 0xaf, 0xdd, 0x79, 0x52, 0xaf, 0xb3, 0x77, 0xe0, 0x6e, 0x44, 0x12, 0x55, 0x30, 0x43, - 0xb5, 0x2c, 0xde, 0x4f, 0x4d, 0x69, 0xa7, 0xf5, 0xab, 0x7d, 0xeb, 0xa8, 0xd5, 0x32, 0xeb, 0x8c, - 0x6d, 0xc2, 0x7a, 0xdc, 0x3c, 0x35, 0x20, 0xdb, 0x5e, 0x11, 0xb8, 0xa3, 0x96, 0x79, 0xd8, 0xec, - 0x88, 0x09, 0x4e, 0xe0, 0x56, 0x45, 0xb7, 0x63, 0xdc, 0x6c, 0xb7, 0xd7, 0x18, 0x83, 0x45, 0x6d, - 0x56, 0xf6, 0x9a, 0x66, 0x7d, 0x9d, 0x2d, 0x41, 0xe5, 0xf0, 0xe8, 0xc8, 0xea, 0xb7, 0x0f, 0x5b, - 0xdd, 0xe3, 0x7e, 0x7d, 0x83, 0xad, 0x41, 0xbd, 0xdd, 0xe9, 0xb7, 0x4c, 0x31, 0xd7, 0xaa, 0xe8, - 0x7f, 0x2b, 0xb2, 0x55, 0x58, 0x52, 0x3d, 0x55, 0xd0, 0x3f, 0x2e, 0xb2, 0x0d, 0x60, 0xc7, 0x1d, - 0xb3, 0xd5, 0xdc, 0x15, 0x03, 0x17, 0x21, 0xfe, 0x7b, 0x51, 0x86, 0x94, 0x7e, 0x9e, 0x8b, 0x36, - 0xeb, 0x38, 0x47, 0x23, 0x79, 0xf9, 0x79, 0x55, 0xbb, 0xb4, 0xfc, 0x55, 0x9f, 0x30, 0xd1, 0x4c, - 0xab, 0xdc, 0x9c, 0x69, 0x35, 0x67, 0xbb, 0xd7, 0x74, 0xdd, 0xef, 0x6d, 0xa8, 0x8d, 0xe9, 0x22, - 0x74, 0x79, 0xe1, 0x31, 0xc8, 0x84, 0x25, 0x02, 0xd2, 0x6d, 0xc7, 0x73, 0xdf, 0xf0, 0x28, 0xcc, - 0x7f, 0xc3, 0x23, 0x4d, 0xbf, 0x5f, 0x48, 0xd3, 0xef, 0xef, 0xc3, 0x32, 0x89, 0x26, 0xc7, 0x75, - 0xc6, 0xca, 0x6a, 0x26, 0x2d, 0x70, 0x09, 0x45, 0x14, 0xc1, 0x95, 0x39, 0xa1, 0x4c, 0x0e, 0x29, - 0x42, 0x8a, 0xd2, 0xda, 0x48, 0x58, 0x1a, 0x24, 0x39, 0x22, 0x4b, 0x23, 0x6a, 0xc1, 0xbe, 0x8c, - 0x5b, 0xa8, 0x68, 0x2d, 0x10, 0x1c, 0x5b, 0xb8, 0x0f, 0xcb, 0xfc, 0x32, 0xf4, 0x6d, 0xcb, 0x9b, - 0xd8, 0xdf, 0x4c, 0x31, 0xe6, 0x6d, 0xa3, 0x0d, 0x5f, 0x35, 0x97, 0x10, 0xd1, 0x45, 0xf8, 0xae, - 0x1d, 0xda, 0xf7, 0xff, 0x3c, 0x54, 0xb4, 0x4b, 0xf2, 0xd9, 0x06, 0xac, 0x7c, 0xd5, 0xee, 0x77, - 0x5a, 0xbd, 0x9e, 0x75, 0x74, 0xbc, 0xfd, 0xb4, 0xf5, 0xb5, 0xb5, 0xdf, 0xec, 0xed, 0xd7, 0x6f, - 0x88, 0x45, 0xdb, 0x69, 0xf5, 0xfa, 0xad, 0xdd, 0x04, 0x3c, 0xc3, 0xde, 0x84, 0xcd, 0xe3, 0xce, - 0x71, 0xaf, 0xb5, 0x6b, 0xa5, 0x95, 0xcb, 0x0a, 0x2e, 0x95, 0xf8, 0x94, 0xe2, 0xb9, 0xfb, 0xbf, - 0x01, 0x8b, 0xc9, 0x63, 0xe0, 0x0c, 0x60, 0xe1, 0xa0, 0xf5, 0xa4, 0xb9, 0xf3, 0x35, 0xdd, 0xec, - 0xda, 0xeb, 0x37, 0xfb, 0xed, 0x1d, 0x4b, 0xde, 0xe4, 0x2a, 0x24, 0x42, 0x86, 0x55, 0xa0, 0xd8, - 0xec, 0xec, 0xec, 0x77, 0xcd, 0x5e, 0x3d, 0xcb, 0xde, 0x80, 0x0d, 0xc5, 0xab, 0x3b, 0xdd, 0xc3, - 0xc3, 0x76, 0x1f, 0x85, 0x61, 0xff, 0xeb, 0x23, 0xc1, 0x9a, 0xf7, 0x6d, 0x28, 0xc7, 0x57, 0xd1, - 0xa2, 0x80, 0x69, 0xf7, 0xdb, 0xcd, 0x7e, 0x2c, 0x5d, 0xeb, 0x37, 0x84, 0xfc, 0x8a, 0xc1, 0x78, - 0x93, 0x6c, 0x3d, 0x43, 0x27, 0xe5, 0x14, 0x90, 0x5a, 0xaf, 0x67, 0xc5, 0xa2, 0x8a, 0xa1, 0xdb, - 0xdd, 0xbe, 0x78, 0x85, 0xcf, 0x61, 0x31, 0x99, 0x0f, 0x99, 0x74, 0x6c, 0x6f, 0xc2, 0xfa, 0x76, - 0xab, 0xff, 0x55, 0xab, 0xd5, 0xc1, 0xd1, 0xd9, 0x69, 0x75, 0xfa, 0x66, 0xf3, 0xa0, 0xdd, 0xff, - 0xba, 0x9e, 0xb9, 0xff, 0x18, 0xea, 0xb3, 0xc1, 0xc7, 0x44, 0xb4, 0xf6, 0x65, 0x61, 0xdd, 0xfb, - 0xff, 0x39, 0x03, 0xab, 0x69, 0x7e, 0x77, 0x31, 0x87, 0x72, 0x71, 0x0a, 0x11, 0xdd, 0xeb, 0x76, - 0xac, 0x4e, 0x17, 0xaf, 0x8e, 0xdc, 0x84, 0xf5, 0x19, 0x84, 0x92, 0x04, 0x19, 0x76, 0x0b, 0x36, - 0xe6, 0x0a, 0x59, 0x66, 0xf7, 0x18, 0x5f, 0xbb, 0x01, 0xab, 0x33, 0xc8, 0x96, 0x69, 0x76, 0xcd, - 0x7a, 0x8e, 0x7d, 0x00, 0xf7, 0x66, 0x30, 0xf3, 0x1b, 0x93, 0xda, 0xb7, 0xf2, 0xec, 0x3d, 0x78, - 0x7b, 0x8e, 0x3a, 0x96, 0xdd, 0xd6, 0x76, 0xf3, 0x40, 0xbc, 0x5e, 0xbd, 0x70, 0xff, 0x1f, 0xe7, - 0x00, 0xe2, 0x03, 0x47, 0xa2, 0xfd, 0xdd, 0x66, 0xbf, 0x79, 0xd0, 0x15, 0xec, 0x65, 0x76, 0xfb, - 0xa2, 0x76, 0xb3, 0xf5, 0x65, 0xfd, 0x46, 0x2a, 0xa6, 0x7b, 0x24, 0x5e, 0x68, 0x03, 0x56, 0x68, - 0xaa, 0x0e, 0xc4, 0x6b, 0xb4, 0x3b, 0x4f, 0xe8, 0x16, 0x52, 0xdc, 0xfd, 0x8e, 0x8f, 0xf6, 0xcc, - 0x6e, 0xa7, 0x6f, 0xf5, 0xf6, 0x8f, 0xfb, 0xbb, 0x78, 0x87, 0xe9, 0x8e, 0xd9, 0x3e, 0xa2, 0x3a, - 0xf3, 0x2f, 0x23, 0x10, 0x55, 0x17, 0xc4, 0x5a, 0x78, 0xd2, 0xed, 0xf5, 0xda, 0x47, 0xd6, 0x97, - 0xc7, 0x2d, 0xb3, 0xdd, 0xea, 0x61, 0xc1, 0x85, 0x14, 0xb8, 0xa0, 0x2f, 0x8a, 0x3d, 0xb3, 0x7f, - 0xf0, 0x4c, 0x6e, 0x6a, 0x82, 0xb4, 0x94, 0x04, 0x09, 0xaa, 0xb2, 0x98, 0x1d, 0xb1, 0x2b, 0xa4, - 0xd4, 0x0c, 0xd7, 0xe0, 0x44, 0xb9, 0x8a, 0xd8, 0xef, 0xe6, 0x16, 0x09, 0x16, 0xab, 0xa6, 0xa3, - 0x44, 0x29, 0xdc, 0x0a, 0x23, 0xc5, 0x61, 0x77, 0xd7, 0xc4, 0x02, 0x8b, 0x73, 0x50, 0x41, 0xbb, - 0x24, 0x98, 0x50, 0x6c, 0x1b, 0x82, 0xa4, 0xae, 0x1e, 0x04, 0x66, 0xf9, 0xe1, 0xff, 0x79, 0x13, - 0xca, 0x51, 0xe2, 0x31, 0xfb, 0x29, 0xd4, 0x12, 0x27, 0x41, 0x99, 0x72, 0x0b, 0xa6, 0x1d, 0x1c, - 0xdd, 0x7c, 0x23, 0x1d, 0x29, 0x35, 0xd0, 0x43, 0xcd, 0xc2, 0xa0, 0xca, 0xde, 0x98, 0xd5, 0xfa, - 0x13, 0xb5, 0xdd, 0xbe, 0x06, 0x2b, 0xab, 0x7b, 0x8a, 0x17, 0xa2, 0xea, 0x9f, 0x25, 0x64, 0xb7, - 0xe3, 0xdb, 0x29, 0x53, 0x3e, 0x57, 0xb8, 0x79, 0x73, 0xfe, 0x03, 0x82, 0xea, 0x8b, 0x83, 0xbb, - 0x50, 0xd1, 0xbe, 0xb6, 0xc3, 0x6e, 0x5e, 0xfb, 0x65, 0xa0, 0xcd, 0xcd, 0x34, 0x94, 0xec, 0xd2, - 0x17, 0x50, 0x8e, 0xbe, 0xbc, 0xc2, 0x36, 0xb4, 0xaf, 0xe6, 0xe8, 0xdf, 0x8f, 0xd9, 0x6c, 0xcc, - 0x23, 0x64, 0xf9, 0x5d, 0xa8, 0x68, 0x1f, 0x50, 0x89, 0x7a, 0x31, 0xff, 0x91, 0x96, 0xa8, 0x17, - 0x69, 0xdf, 0x5b, 0x39, 0x80, 0x35, 0x69, 0xc7, 0x9c, 0xf0, 0x6f, 0x33, 0x3c, 0x29, 0xdf, 0x57, - 0x7c, 0x90, 0x61, 0x8f, 0xa1, 0xa4, 0x3e, 0x95, 0xc3, 0xd6, 0xd3, 0x3f, 0x04, 0xb4, 0xb9, 0x31, - 0x07, 0x97, 0x5d, 0x69, 0x02, 0xc4, 0x9f, 0x66, 0x61, 0xea, 0xc5, 0xe7, 0x3e, 0xf5, 0x12, 0xcd, - 0x4c, 0xca, 0x77, 0x5c, 0x76, 0xa1, 0xa2, 0x7d, 0x85, 0x25, 0x1a, 0x93, 0xf9, 0x2f, 0xb8, 0x44, - 0x63, 0x92, 0xf6, 0xd1, 0x96, 0x9f, 0x42, 0x2d, 0xf1, 0x39, 0x95, 0x88, 0x8f, 0xd3, 0x3e, 0xd6, - 0x12, 0xf1, 0x71, 0xfa, 0x17, 0x58, 0x76, 0xa1, 0xa2, 0x7d, 0xfc, 0x24, 0xea, 0xd1, 0xfc, 0x77, - 0x56, 0xa2, 0x1e, 0xa5, 0x7c, 0x2b, 0x45, 0xac, 0x86, 0xe4, 0x97, 0x4f, 0xa2, 0xd5, 0x90, 0xfa, - 0x09, 0x95, 0x68, 0x35, 0xa4, 0x7f, 0x2e, 0x45, 0xb0, 0x5e, 0x74, 0x13, 0x32, 0xdb, 0xd0, 0xb8, - 0x43, 0xbf, 0x52, 0x39, 0x62, 0xbd, 0xf9, 0x4b, 0x93, 0x9f, 0xc0, 0x4a, 0xc4, 0x34, 0xd1, 0x3d, - 0xc6, 0x41, 0xd4, 0xa7, 0xd4, 0xdb, 0x92, 0x37, 0xeb, 0xb3, 0xd8, 0x07, 0x19, 0xf6, 0x19, 0x14, - 0xe5, 0xe5, 0xb0, 0x6c, 0x6d, 0xf6, 0xb2, 0x58, 0xea, 0xc4, 0x7a, 0xfa, 0x1d, 0xb2, 0xec, 0x08, - 0x96, 0x66, 0xef, 0x07, 0xbe, 0x7d, 0xdd, 0x7d, 0x0a, 0x54, 0xd3, 0x9b, 0x2f, 0xbf, 0x6e, 0x81, - 0x3d, 0x81, 0xaa, 0xfe, 0x29, 0x03, 0xa6, 0xaf, 0x9a, 0xd9, 0xba, 0x6e, 0xa5, 0xe2, 0x64, 0x45, - 0xcf, 0x60, 0x3d, 0x1a, 0x1d, 0xfd, 0x70, 0x7f, 0xc0, 0xee, 0xa4, 0x1c, 0xf9, 0x4f, 0x8c, 0xd1, - 0xcd, 0x6b, 0xef, 0x04, 0x78, 0x90, 0x41, 0x91, 0x98, 0xb8, 0xa0, 0x3d, 0x16, 0x89, 0x69, 0xf7, - 0xd2, 0xc7, 0x22, 0x31, 0xfd, 0x56, 0xf7, 0x26, 0x2c, 0x69, 0x97, 0x13, 0xf4, 0xae, 0xdc, 0x41, - 0xc4, 0x9d, 0xf3, 0x17, 0x75, 0x6e, 0xa6, 0xf9, 0xbe, 0xd8, 0x0e, 0x54, 0xf4, 0xfb, 0x0d, 0x5e, - 0x52, 0x7c, 0x43, 0x43, 0xe9, 0x57, 0x3f, 0x3e, 0xc8, 0xb0, 0x03, 0xa8, 0xcf, 0xde, 0x46, 0x16, - 0x2d, 0xb8, 0xb4, 0x1b, 0xdc, 0x36, 0x67, 0x90, 0x89, 0x3b, 0xcc, 0x04, 0x5f, 0x24, 0xbe, 0xba, - 0xe7, 0xf9, 0xb3, 0x1b, 0x47, 0xf2, 0x6b, 0x7c, 0x51, 0x6d, 0x69, 0xdf, 0x61, 0xbc, 0x97, 0x79, - 0x90, 0x61, 0x7b, 0x50, 0x4d, 0x5c, 0xc6, 0x93, 0xc8, 0x58, 0x9f, 0x79, 0xcd, 0x86, 0x8e, 0x9b, - 0x79, 0xcf, 0x43, 0x58, 0x4c, 0x06, 0x69, 0xa3, 0x8e, 0xa5, 0x86, 0x83, 0xa3, 0xe9, 0x4b, 0x8f, - 0xec, 0xb2, 0x1f, 0xd3, 0x37, 0x65, 0x55, 0x42, 0x0e, 0x9b, 0xff, 0x06, 0x69, 0x34, 0x67, 0xfa, - 0x17, 0x3b, 0x8d, 0xdc, 0x5f, 0xc9, 0x66, 0xf0, 0xbd, 0x7e, 0x44, 0x5f, 0x74, 0x53, 0x39, 0x19, - 0x62, 0xfe, 0x5f, 0xb7, 0x12, 0xb6, 0x47, 0x8d, 0xcb, 0xef, 0x69, 0xc6, 0x72, 0x76, 0xee, 0x1b, - 0x9b, 0xaf, 0xe8, 0x43, 0x93, 0xfa, 0x20, 0xcb, 0x24, 0x78, 0xf0, 0x35, 0xeb, 0x62, 0x9f, 0x02, - 0xc4, 0x89, 0x6e, 0x6c, 0x26, 0xdd, 0x2a, 0x5a, 0x50, 0x29, 0xb9, 0x70, 0x2d, 0x5a, 0xef, 0x51, - 0xbe, 0x97, 0xbe, 0x81, 0x26, 0x53, 0xcf, 0x12, 0x1b, 0xe8, 0x6c, 0x35, 0x3f, 0x84, 0xda, 0x81, - 0xe7, 0x3d, 0x9f, 0x4e, 0xa2, 0x6c, 0xe9, 0x64, 0x32, 0x82, 0x30, 0x66, 0x37, 0x67, 0xba, 0xc5, - 0x9a, 0xb0, 0x1c, 0x89, 0x88, 0x38, 0xe1, 0x2c, 0x49, 0x94, 0x10, 0x0c, 0x33, 0x15, 0x3c, 0xc8, - 0xb0, 0x87, 0x50, 0xdd, 0xe5, 0x03, 0x3c, 0x2c, 0x8f, 0x61, 0xf3, 0x95, 0x44, 0x08, 0x96, 0xe2, - 0xed, 0x9b, 0xb5, 0x04, 0x50, 0x89, 0xb8, 0x38, 0xfd, 0x42, 0x97, 0xf0, 0xc9, 0x1c, 0x86, 0x84, - 0x88, 0x9b, 0x4b, 0xc1, 0x78, 0x06, 0xcb, 0x73, 0x09, 0x0e, 0x91, 0x74, 0xbb, 0x2e, 0x2d, 0x62, - 0xf3, 0xee, 0xf5, 0x04, 0xb2, 0xde, 0x9f, 0x40, 0x8d, 0x6e, 0x02, 0x3d, 0xe1, 0x74, 0xd8, 0x6d, - 0xe6, 0xa6, 0x18, 0xfd, 0x24, 0xdd, 0xac, 0x48, 0xa2, 0x02, 0x4f, 0xf0, 0x32, 0x7c, 0xed, 0x28, - 0x59, 0x34, 0xaf, 0xf3, 0xc7, 0xdb, 0xa2, 0x79, 0x4d, 0x3b, 0xb5, 0xf6, 0x39, 0x54, 0x9e, 0xf0, - 0x50, 0x1d, 0xce, 0x8a, 0xb4, 0x99, 0x99, 0xd3, 0x5a, 0x9b, 0x29, 0x47, 0xea, 0xd8, 0x27, 0x58, - 0x34, 0x3a, 0x68, 0xbc, 0xae, 0xb5, 0xa2, 0x17, 0x5d, 0x9a, 0x81, 0x0b, 0x5d, 0x41, 0xbb, 0x6e, - 0x20, 0xea, 0xf8, 0xfc, 0xf5, 0x12, 0x51, 0xc7, 0xd3, 0x6e, 0x27, 0xf8, 0x31, 0x8d, 0x80, 0x76, - 0x1c, 0x2c, 0x56, 0x98, 0x66, 0x4f, 0x8e, 0x45, 0xdd, 0xd7, 0xc9, 0x1f, 0x01, 0xf4, 0x42, 0x6f, - 0xb2, 0x6b, 0xf3, 0xb1, 0xe7, 0xc6, 0x32, 0x21, 0x3e, 0x88, 0x14, 0x2f, 0x44, 0xed, 0x34, 0x12, - 0xfb, 0x4a, 0xd3, 0x24, 0x13, 0x53, 0xa2, 0xa6, 0xfd, 0xda, 0xb3, 0x4a, 0xd1, 0xeb, 0xa4, 0x9c, - 0x57, 0x42, 0x21, 0x01, 0x71, 0xee, 0x49, 0xa4, 0x17, 0xce, 0xa5, 0xb5, 0x44, 0x6b, 0x3d, 0x25, - 0x51, 0xe5, 0x0b, 0x28, 0xc7, 0x41, 0xfb, 0x8d, 0xf8, 0xee, 0x93, 0x44, 0x88, 0x3f, 0x92, 0xde, - 0xf3, 0x01, 0xf3, 0x0e, 0xac, 0x50, 0x77, 0xa2, 0xed, 0x0f, 0x8f, 0xcb, 0x44, 0xdf, 0x72, 0x98, - 0x8f, 0x54, 0x47, 0xeb, 0x27, 0x2d, 0xde, 0x2a, 0xd6, 0xcf, 0x5c, 0xdc, 0x2e, 0x5a, 0x3f, 0xd7, - 0x05, 0x62, 0xa3, 0xf5, 0x73, 0x7d, 0xc8, 0xaf, 0x03, 0x2b, 0x29, 0x11, 0x38, 0xf6, 0x96, 0x32, - 0x43, 0xae, 0x8d, 0xce, 0x6d, 0xa6, 0x46, 0x6a, 0x58, 0x1f, 0x36, 0xa8, 0x4c, 0x73, 0x34, 0x9a, - 0x09, 0xf8, 0xbc, 0xa9, 0x15, 0x48, 0x09, 0x62, 0x25, 0x54, 0x99, 0x99, 0x40, 0x56, 0x07, 0xea, - 0xb3, 0xb1, 0x12, 0x76, 0x3d, 0xf9, 0xe6, 0x9d, 0x84, 0x82, 0x3d, 0x1f, 0x5f, 0x61, 0xcf, 0xa2, - 0x88, 0xcd, 0x4c, 0x1f, 0xef, 0x44, 0x17, 0x3a, 0xa7, 0xc7, 0x97, 0x22, 0xdd, 0x3d, 0x35, 0xe0, - 0xc3, 0x7e, 0x15, 0x36, 0x66, 0x39, 0x5a, 0xd5, 0x7c, 0x37, 0x6d, 0xb8, 0xae, 0x55, 0xe5, 0x92, - 0x2f, 0xf4, 0x20, 0x23, 0x04, 0xb1, 0x1e, 0x77, 0x89, 0x18, 0x29, 0x25, 0xc0, 0x13, 0x31, 0x52, - 0x5a, 0xa0, 0x66, 0xfb, 0xbd, 0x5f, 0xfb, 0xde, 0x99, 0x13, 0x9e, 0x4f, 0x4f, 0xb6, 0x06, 0xde, - 0xf8, 0xc3, 0x91, 0x32, 0xc5, 0xe5, 0x21, 0xca, 0x0f, 0x47, 0xee, 0xf0, 0x43, 0x2c, 0x7d, 0xb2, - 0x30, 0xf1, 0xbd, 0xd0, 0xfb, 0xe1, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0xeb, 0x43, 0xf6, 0x73, - 0xe4, 0x81, 0x00, 0x00, + 0x4a, 0xbd, 0x6a, 0x34, 0x30, 0x1c, 0x6d, 0xf2, 0x81, 0x77, 0xc1, 0xfd, 0xab, 0xc4, 0x1a, 0xc9, + 0xc0, 0xc6, 0x1c, 0x2a, 0x8e, 0x6a, 0xf9, 0x12, 0x6e, 0x8d, 0xbd, 0xa1, 0xda, 0xd3, 0xab, 0x0a, + 0x78, 0xe8, 0x0d, 0xb9, 0xb0, 0x4b, 0x23, 0xa2, 0x53, 0xc7, 0x75, 0x82, 0x73, 0x3e, 0x94, 0x5b, + 0x7b, 0x5d, 0x21, 0xf6, 0x24, 0x5c, 0x68, 0x87, 0x13, 0xdf, 0x3b, 0x8b, 0x76, 0xba, 0x8c, 0x19, + 0x3d, 0x1b, 0x9f, 0x42, 0x81, 0x66, 0x50, 0x2c, 0x14, 0x9c, 0xdf, 0x8c, 0x5c, 0x28, 0x08, 0x6d, + 0x40, 0xd1, 0xe5, 0xe1, 0x0b, 0xcf, 0x7f, 0xae, 0x5c, 0xe4, 0xf2, 0xd1, 0xf8, 0x19, 0xfa, 0x6b, + 0xa2, 0xbc, 0x02, 0x32, 0x3d, 0x05, 0x0b, 0x13, 0x0b, 0x06, 0xe7, 0xb6, 0x74, 0x21, 0x95, 0x10, + 0xd0, 0x3b, 0xb7, 0xe7, 0x58, 0x38, 0x3b, 0x9f, 0x5a, 0xf0, 0x0e, 0x2c, 0xaa, 0x4c, 0x86, 0xc0, + 0x1a, 0xf1, 0xd3, 0x50, 0x2e, 0xc9, 0xaa, 0x4c, 0x63, 0x08, 0x0e, 0xf8, 0x69, 0x68, 0x1c, 0xc2, + 0xb2, 0x5c, 0x34, 0xdd, 0x09, 0x57, 0x4d, 0x7f, 0x96, 0xa6, 0xb1, 0x57, 0x1e, 0xae, 0x24, 0xb5, + 0x05, 0xca, 0xd0, 0x48, 0xa8, 0xf1, 0xc6, 0x97, 0xc0, 0x74, 0x5d, 0x42, 0xd6, 0x27, 0xf5, 0x66, + 0x15, 0x59, 0x50, 0x01, 0xba, 0x48, 0x3b, 0x77, 0x86, 0x62, 0x74, 0x82, 0xe9, 0x60, 0xa0, 0x32, + 0x4c, 0x4a, 0xa6, 0x7a, 0x34, 0xfe, 0x53, 0x06, 0x56, 0xb0, 0x32, 0x65, 0x71, 0xc8, 0x9d, 0xe2, + 0x17, 0xee, 0xa4, 0x98, 0x1f, 0x5d, 0x81, 0xa3, 0x87, 0x6f, 0xef, 0xb5, 0xcd, 0xcf, 0x79, 0x6d, + 0xbf, 0x0f, 0xf5, 0x21, 0x1f, 0x39, 0xc8, 0x4a, 0x4a, 0x1f, 0x22, 0x1b, 0x63, 0x49, 0xc1, 0xa5, + 0xbd, 0x69, 0xfc, 0xad, 0x0c, 0x2c, 0x93, 0xba, 0x85, 0x96, 0xbb, 0x1c, 0xa8, 0xc7, 0xca, 0x54, + 0x95, 0xe2, 0x54, 0xbe, 0x53, 0xac, 0x86, 0x20, 0x94, 0x88, 0xf7, 0x6f, 0x48, 0x13, 0x56, 0x42, + 0xd9, 0x8f, 0xd0, 0x4a, 0x72, 0x2d, 0x04, 0xca, 0x80, 0xeb, 0xcd, 0x14, 0x05, 0x2f, 0x2a, 0x2e, + 0x4c, 0x28, 0x17, 0x41, 0xdb, 0x25, 0x61, 0x3b, 0x0b, 0xb0, 0xb1, 0x07, 0xb5, 0x44, 0x33, 0x09, + 0x27, 0x72, 0x95, 0x9c, 0xc8, 0x73, 0x41, 0x9d, 0xec, 0x7c, 0x50, 0xe7, 0x0a, 0x56, 0x4c, 0x6e, + 0x0f, 0xaf, 0xf6, 0x3c, 0xff, 0x28, 0x38, 0x09, 0xf7, 0x48, 0x87, 0x15, 0x7b, 0x50, 0x14, 0xa9, + 0x4c, 0x78, 0x6a, 0x55, 0xc0, 0x4a, 0x19, 0xe4, 0xdf, 0x83, 0xc5, 0x38, 0xa4, 0xa9, 0x79, 0xfb, + 0x6a, 0x51, 0x54, 0x13, 0x9d, 0x7e, 0xc2, 0x98, 0x0d, 0x4e, 0x42, 0xe9, 0xef, 0xc3, 0xdf, 0xc6, + 0x5f, 0xcc, 0x03, 0x13, 0xdc, 0x3c, 0xc3, 0x30, 0x33, 0xc1, 0xd8, 0xec, 0x5c, 0x30, 0xf6, 0x01, + 0x30, 0x8d, 0x40, 0xc5, 0x88, 0x73, 0x51, 0x8c, 0xb8, 0x1e, 0xd3, 0xca, 0x10, 0xf1, 0x03, 0x58, + 0x95, 0x06, 0x41, 0xb2, 0xab, 0xc4, 0x1a, 0x8c, 0x2c, 0x83, 0x44, 0x7f, 0x55, 0x20, 0x36, 0xb0, + 0x43, 0xe9, 0xcf, 0xc3, 0x40, 0xac, 0x72, 0x2d, 0x68, 0x0c, 0xb8, 0xf0, 0x4a, 0x06, 0x2c, 0xce, + 0x31, 0xa0, 0xe6, 0x5e, 0x2a, 0x25, 0xdd, 0x4b, 0x06, 0xd4, 0x54, 0xb8, 0x95, 0xb2, 0x4c, 0x48, + 0xfb, 0xad, 0xc8, 0x98, 0x2b, 0x66, 0x9a, 0xdc, 0x83, 0xba, 0xf2, 0x01, 0x45, 0x0e, 0x2c, 0xca, + 0xa0, 0x90, 0x2e, 0xc4, 0x1d, 0xe5, 0xc6, 0x4a, 0x84, 0x0b, 0x2a, 0x33, 0xe1, 0x82, 0xf7, 0x61, + 0x39, 0x10, 0xfc, 0x6b, 0x4d, 0x5d, 0x99, 0x46, 0xc5, 0x87, 0x68, 0x2b, 0x96, 0xcc, 0x3a, 0x22, + 0x8e, 0x63, 0xf8, 0xbc, 0x73, 0xa6, 0x96, 0xe2, 0x9c, 0x79, 0x14, 0x47, 0x26, 0x83, 0x73, 0x67, + 0x8c, 0x8a, 0x4f, 0x9c, 0x1a, 0x24, 0x07, 0xb8, 0x77, 0xee, 0x8c, 0x4d, 0x15, 0x06, 0x17, 0x0f, + 0xc6, 0xff, 0xca, 0x40, 0x5d, 0xf0, 0x41, 0x62, 0x89, 0x7d, 0x0e, 0x28, 0x0c, 0x5e, 0x73, 0x85, + 0x55, 0x04, 0xad, 0x5a, 0x60, 0x9f, 0x02, 0xae, 0x18, 0x4b, 0x18, 0xc6, 0x72, 0x7d, 0x35, 0x92, + 0xeb, 0x2b, 0x96, 0xa1, 0xfb, 0x37, 0xc8, 0x80, 0x12, 0x10, 0xf6, 0x39, 0x94, 0x05, 0x63, 0x22, + 0x97, 0xc8, 0x4c, 0x37, 0xa5, 0x3e, 0xa6, 0xac, 0x11, 0x51, 0x74, 0x22, 0x1f, 0xd3, 0x82, 0xc9, + 0xf9, 0x94, 0x60, 0xb2, 0xb6, 0x80, 0xf7, 0x01, 0x9e, 0xf2, 0xab, 0x03, 0x6f, 0x80, 0x66, 0xfb, + 0x6d, 0x00, 0xc1, 0xcb, 0xa7, 0xf6, 0xd8, 0x91, 0x5e, 0xa7, 0x82, 0x59, 0x7e, 0xce, 0xaf, 0xf6, + 0x10, 0x20, 0x26, 0x52, 0xa0, 0xe3, 0x55, 0x5c, 0x30, 0x4b, 0xcf, 0xf9, 0x15, 0x2d, 0x61, 0x0b, + 0x6a, 0x4f, 0xf9, 0xd5, 0x2e, 0x27, 0x4d, 0xd9, 0xf3, 0x05, 0x13, 0xf9, 0xf6, 0x0b, 0xa1, 0x1a, + 0x27, 0x02, 0xc1, 0x15, 0xdf, 0x7e, 0xf1, 0x94, 0x5f, 0xa9, 0xa0, 0x74, 0x51, 0xe0, 0x47, 0xde, + 0x40, 0xee, 0xed, 0x2a, 0xa5, 0x25, 0xee, 0x94, 0xb9, 0xf0, 0x1c, 0x7f, 0x1b, 0x7f, 0x92, 0x81, + 0x9a, 0xe8, 0x3f, 0x8a, 0x65, 0x31, 0x65, 0x2a, 0x33, 0x2a, 0x13, 0x67, 0x46, 0x3d, 0x94, 0x52, + 0x8d, 0x64, 0x7c, 0xf6, 0x7a, 0x19, 0x8f, 0x73, 0x43, 0x02, 0xfe, 0x23, 0x28, 0xd3, 0xb2, 0x14, + 0xeb, 0x3c, 0x97, 0x98, 0xe0, 0xc4, 0x0b, 0x99, 0x25, 0x24, 0x7b, 0x4a, 0x89, 0x18, 0x9a, 0x07, + 0x93, 0x86, 0xb8, 0xec, 0x47, 0x7e, 0xcb, 0x94, 0x69, 0x28, 0x5c, 0x93, 0x88, 0xa1, 0xbb, 0x07, + 0x17, 0xe6, 0xdc, 0x83, 0x5d, 0x28, 0x89, 0xa9, 0xc6, 0x97, 0x4d, 0xa9, 0x34, 0x93, 0x56, 0xa9, + 0xd0, 0x04, 0x6c, 0xb1, 0x29, 0x08, 0x41, 0x97, 0x95, 0x9a, 0x80, 0x1d, 0xf0, 0x23, 0x14, 0x76, + 0x19, 0xa8, 0x68, 0x2b, 0x00, 0x3d, 0xac, 0xd1, 0x78, 0xd1, 0x72, 0x49, 0xb2, 0x78, 0x62, 0xc0, + 0xf7, 0x6f, 0x98, 0xb5, 0x41, 0x62, 0x06, 0xb6, 0x24, 0xaf, 0x62, 0xc9, 0x6c, 0x22, 0x89, 0x4b, + 0x75, 0x5c, 0x31, 0xa8, 0xf8, 0xbd, 0xbd, 0x00, 0x79, 0x41, 0x6a, 0x3c, 0x86, 0x65, 0xad, 0x1b, + 0xe4, 0xab, 0x78, 0xdd, 0x37, 0x34, 0x7e, 0x3d, 0x2a, 0x2c, 0xda, 0xa0, 0x18, 0x98, 0x4a, 0x6a, + 0xe1, 0x43, 0x7a, 0x71, 0x99, 0x3c, 0x43, 0x20, 0x41, 0xf6, 0xda, 0x89, 0x16, 0xbf, 0x01, 0x2b, + 0x5a, 0xed, 0x7b, 0x8e, 0x6b, 0x8f, 0x9c, 0x9f, 0xe1, 0x86, 0x1f, 0x38, 0x67, 0xee, 0x4c, 0xfd, + 0x04, 0xfa, 0x56, 0xf5, 0xff, 0xed, 0x2c, 0xac, 0xca, 0x06, 0x30, 0x4d, 0xd1, 0x11, 0x5a, 0xdc, + 0x61, 0x70, 0xc6, 0x3e, 0x87, 0x9a, 0x18, 0x1b, 0xcb, 0xe7, 0x67, 0x4e, 0x10, 0x72, 0x15, 0x7b, + 0x4b, 0x11, 0x5c, 0x62, 0x33, 0x17, 0xa4, 0xa6, 0xa4, 0x64, 0x8f, 0xa1, 0x82, 0x45, 0xc9, 0x17, + 0x24, 0x27, 0xa2, 0x31, 0x5f, 0x90, 0x06, 0x7a, 0xff, 0x86, 0x09, 0x41, 0x3c, 0xec, 0x8f, 0xa1, + 0x82, 0x73, 0x78, 0x81, 0x03, 0x39, 0x23, 0xaa, 0xe6, 0x06, 0x5a, 0x14, 0x9e, 0xc4, 0xc3, 0xde, + 0x84, 0x1a, 0x09, 0x2b, 0x39, 0x4e, 0x32, 0xfd, 0x69, 0x73, 0xbe, 0xb8, 0x1a, 0x49, 0xd1, 0xf9, + 0x89, 0xf6, 0xbc, 0x5d, 0x86, 0x62, 0xe8, 0x3b, 0x67, 0x67, 0xdc, 0x37, 0xd6, 0xa3, 0xa1, 0x11, + 0x52, 0x98, 0xf7, 0x42, 0x3e, 0x11, 0xea, 0xb9, 0xf1, 0x6f, 0x33, 0x50, 0x91, 0x72, 0xf5, 0x17, + 0x0e, 0xf8, 0x6d, 0x6a, 0xf9, 0xc3, 0xe4, 0x76, 0x8a, 0xd3, 0x85, 0xdf, 0x83, 0xa5, 0xb1, 0xb0, + 0x25, 0x84, 0xad, 0x9b, 0x88, 0xf6, 0x2d, 0x2a, 0xb0, 0x54, 0x93, 0xb7, 0x60, 0x05, 0xb5, 0xe6, + 0xc0, 0x0a, 0x9d, 0x91, 0xa5, 0x90, 0x32, 0x57, 0x77, 0x99, 0x50, 0x7d, 0x67, 0x74, 0x28, 0x11, + 0x42, 0x79, 0x0c, 0x42, 0xfb, 0x8c, 0xcb, 0xb5, 0x4d, 0x0f, 0xc2, 0x3e, 0x99, 0x31, 0x73, 0x95, + 0x7d, 0xf2, 0x7f, 0x96, 0x61, 0x63, 0x0e, 0x25, 0xed, 0x93, 0x28, 0xca, 0x35, 0x72, 0xc6, 0x27, + 0x5e, 0xe4, 0x03, 0xce, 0x68, 0x51, 0xae, 0x03, 0x81, 0x51, 0x3e, 0x60, 0x0e, 0x6b, 0x8a, 0x21, + 0xd1, 0x89, 0x1b, 0x59, 0xc2, 0x59, 0xb4, 0xd3, 0x3e, 0x4a, 0x6e, 0x62, 0xb3, 0xcd, 0x29, 0xb8, + 0xae, 0x1a, 0xad, 0x4c, 0xe6, 0x60, 0x01, 0xfb, 0xb3, 0xd0, 0x88, 0xf8, 0x5e, 0xaa, 0xed, 0x9a, + 0x59, 0x2f, 0x5a, 0xfa, 0xe0, 0x15, 0x2d, 0x25, 0x1c, 0x90, 0xa8, 0x3b, 0xad, 0xab, 0x25, 0x43, + 0x15, 0x46, 0x6d, 0x5d, 0xc0, 0x9b, 0xaa, 0x2d, 0x54, 0xc3, 0xe7, 0x5b, 0xcc, 0xbf, 0xd6, 0xbb, + 0xa1, 0x73, 0x35, 0xd1, 0xac, 0x79, 0x4b, 0x56, 0x1c, 0xa1, 0xf4, 0x76, 0xcf, 0x61, 0xfd, 0x85, + 0xed, 0x84, 0xea, 0x1d, 0x35, 0xaf, 0x42, 0x01, 0xdb, 0x7b, 0xf8, 0x8a, 0xf6, 0xbe, 0xa2, 0xc2, + 0x09, 0xc3, 0x64, 0xf5, 0xc5, 0x3c, 0x30, 0xd8, 0xfc, 0x87, 0x39, 0x58, 0x4c, 0xd6, 0x22, 0x04, + 0x8b, 0xdc, 0x6c, 0x94, 0xbe, 0x29, 0x95, 0x60, 0x19, 0x9f, 0xe8, 0x90, 0x9e, 0x39, 0x1f, 0x39, + 0xc9, 0xa6, 0x44, 0x4e, 0xf4, 0x80, 0x45, 0xee, 0x55, 0x11, 0xe2, 0xfc, 0x6b, 0x45, 0x88, 0x0b, + 0x69, 0x11, 0xe2, 0xeb, 0xc3, 0x8a, 0x0b, 0xbf, 0x50, 0x58, 0xb1, 0xf8, 0xd2, 0xb0, 0xa2, 0x16, + 0x0c, 0x2d, 0x5d, 0x13, 0x66, 0xd0, 0xc2, 0xa3, 0x29, 0x61, 0xc5, 0xf2, 0xb7, 0x08, 0x2b, 0x6e, + 0xfe, 0x49, 0x06, 0xd8, 0xfc, 0xea, 0x60, 0x4f, 0x28, 0x28, 0xe5, 0xf2, 0x91, 0x94, 0xdc, 0x3f, + 0x78, 0xbd, 0x15, 0xa6, 0x18, 0x42, 0x95, 0x66, 0x1f, 0xc2, 0x8a, 0x7e, 0xa2, 0x40, 0xb7, 0xda, + 0x6b, 0x26, 0xd3, 0x51, 0xb1, 0xff, 0x49, 0x0b, 0xc7, 0xe7, 0x5f, 0x19, 0x8e, 0x2f, 0xbc, 0x32, + 0x1c, 0xbf, 0x90, 0x0c, 0xc7, 0x6f, 0xfe, 0xc7, 0x0c, 0xac, 0xa4, 0x30, 0xf1, 0x77, 0xf7, 0xce, + 0x82, 0xf7, 0x12, 0x62, 0x2d, 0x2b, 0x79, 0x4f, 0x97, 0x68, 0x07, 0xca, 0x67, 0x29, 0xa6, 0x22, + 0x90, 0x3b, 0xd5, 0xfd, 0x57, 0x49, 0x97, 0xb8, 0x84, 0xa9, 0x17, 0xdf, 0xfc, 0x9d, 0x2c, 0x54, + 0x34, 0xa4, 0x18, 0x45, 0x62, 0x59, 0x2d, 0x0b, 0x8a, 0x34, 0x43, 0xf4, 0x39, 0xdc, 0x01, 0x19, + 0x99, 0x21, 0x3c, 0x2d, 0x2e, 0xa9, 0x06, 0x22, 0xc1, 0x16, 0xac, 0xa8, 0x80, 0x21, 0x8f, 0x13, + 0x23, 0xe5, 0x5e, 0xb3, 0x2c, 0xc3, 0x86, 0x3c, 0xca, 0xb3, 0x64, 0x1f, 0x2a, 0x73, 0x30, 0x9e, + 0x3b, 0x64, 0x75, 0x0a, 0x7b, 0x2c, 0xd3, 0x02, 0x51, 0x93, 0x28, 0xf8, 0xfc, 0x23, 0x58, 0x53, + 0xcb, 0x23, 0x59, 0x82, 0x22, 0x21, 0x4c, 0x2e, 0x0e, 0xbd, 0xc8, 0x4f, 0xe0, 0xf6, 0x4c, 0x9f, + 0x66, 0x8a, 0x52, 0x06, 0xef, 0xcd, 0x44, 0xef, 0xf4, 0x1a, 0x36, 0xff, 0x1c, 0xd4, 0x12, 0x82, + 0xf2, 0xbb, 0x9b, 0xf2, 0x59, 0x3f, 0x0f, 0x8d, 0xa8, 0xee, 0xe7, 0xd9, 0xfc, 0x9f, 0x39, 0x60, + 0xf3, 0xb2, 0xfa, 0x97, 0xd9, 0x85, 0x79, 0xc6, 0xcc, 0xa5, 0x30, 0xe6, 0xff, 0x33, 0xfd, 0x21, + 0x76, 0x37, 0x6a, 0x51, 0x5f, 0x5a, 0x9c, 0xf5, 0x08, 0xa1, 0x7a, 0xf1, 0xe9, 0x6c, 0xf6, 0x49, + 0x29, 0x71, 0x28, 0x46, 0x53, 0xa0, 0x66, 0x92, 0x50, 0x8e, 0x61, 0xc1, 0x76, 0x07, 0xe7, 0x9e, + 0x2f, 0xe5, 0xe0, 0xaf, 0x7c, 0xeb, 0xed, 0x73, 0xab, 0x89, 0xe5, 0x51, 0x6b, 0x33, 0x65, 0x65, + 0xc6, 0x47, 0x50, 0xd1, 0xc0, 0xac, 0x0c, 0x85, 0x83, 0xf6, 0xe1, 0x76, 0xb7, 0x7e, 0x83, 0xd5, + 0xa0, 0x6c, 0xb6, 0x76, 0xba, 0xcf, 0x5a, 0x66, 0x6b, 0xb7, 0x9e, 0x61, 0x25, 0xc8, 0x1f, 0x74, + 0x7b, 0xfd, 0x7a, 0xd6, 0xd8, 0x84, 0x86, 0xac, 0x71, 0x3e, 0xf0, 0xf2, 0x5b, 0xf9, 0xc8, 0x5d, + 0x88, 0x48, 0x69, 0xa2, 0xff, 0x10, 0xaa, 0xba, 0x7a, 0x23, 0x39, 0x62, 0x26, 0xf1, 0x40, 0x18, + 0xe7, 0x9e, 0x26, 0xab, 0x77, 0x80, 0xc2, 0xce, 0xc3, 0xa8, 0x58, 0x36, 0xa1, 0xb7, 0xa6, 0x84, + 0x38, 0xd1, 0xf8, 0x49, 0xb0, 0xe1, 0xff, 0x07, 0x8b, 0xc9, 0x20, 0x83, 0x94, 0x48, 0x69, 0x06, + 0xa7, 0x28, 0x9d, 0x88, 0x3a, 0xb0, 0x9f, 0x40, 0x7d, 0x36, 0x48, 0x21, 0x95, 0xe7, 0x6b, 0xca, + 0x2f, 0x39, 0xc9, 0xb8, 0x05, 0xdb, 0x87, 0xd5, 0x34, 0x05, 0x0f, 0xf9, 0xe3, 0x7a, 0x27, 0x05, + 0x9b, 0x57, 0xe2, 0xd8, 0x67, 0x32, 0x58, 0x55, 0xc0, 0xe9, 0x7f, 0x27, 0xd9, 0xbe, 0x36, 0xd8, + 0x5b, 0xf4, 0x4f, 0x0b, 0x5b, 0x5d, 0x00, 0xc4, 0x30, 0x56, 0x87, 0x6a, 0xf7, 0xa8, 0xd5, 0xb1, + 0x76, 0xf6, 0x9b, 0x9d, 0x4e, 0xeb, 0xa0, 0x7e, 0x83, 0x31, 0x58, 0xc4, 0x80, 0xfb, 0x6e, 0x04, + 0xcb, 0x08, 0x98, 0x0c, 0x1a, 0x2a, 0x58, 0x96, 0xad, 0x42, 0xbd, 0xdd, 0x99, 0x81, 0xe6, 0x58, + 0x03, 0x56, 0x8f, 0x5a, 0x14, 0xa3, 0x4f, 0xd4, 0x9b, 0x17, 0x46, 0x83, 0x7c, 0x5d, 0x61, 0x34, + 0x7c, 0x65, 0x8f, 0x46, 0x3c, 0x94, 0xeb, 0x40, 0xe9, 0xd2, 0x7f, 0x27, 0x03, 0x6b, 0x33, 0x88, + 0xd8, 0xd3, 0x4f, 0x9a, 0x74, 0x52, 0x87, 0xae, 0x22, 0x50, 0xad, 0xa6, 0xf7, 0x61, 0x39, 0x72, + 0x3c, 0xcd, 0xec, 0x4a, 0xf5, 0x08, 0xa1, 0x88, 0x3f, 0x84, 0x15, 0xcd, 0x7f, 0x35, 0x23, 0x2b, + 0x98, 0x86, 0x92, 0x05, 0x8c, 0x8d, 0xe8, 0x9c, 0xc0, 0x4c, 0xaf, 0x87, 0xb0, 0x3e, 0x8b, 0x88, + 0x63, 0x79, 0xc9, 0xfe, 0xaa, 0x47, 0xf6, 0x60, 0x86, 0x11, 0x92, 0xbd, 0xd5, 0x27, 0x5c, 0x35, + 0xff, 0xbb, 0x0b, 0xc0, 0xbe, 0x9c, 0x72, 0xff, 0x0a, 0xcf, 0xa7, 0x04, 0xaf, 0x4a, 0xc2, 0x54, + 0x9e, 0x96, 0xec, 0x6b, 0x9d, 0x41, 0x4b, 0x3b, 0x03, 0x96, 0x7f, 0xf5, 0x19, 0xb0, 0xc2, 0xab, + 0xce, 0x80, 0xbd, 0x0d, 0x35, 0xe7, 0xcc, 0xf5, 0x84, 0x28, 0x14, 0x9a, 0x70, 0xd0, 0x58, 0xb8, + 0x9b, 0xbb, 0x57, 0x35, 0xab, 0x12, 0x28, 0xf4, 0xe0, 0x80, 0x3d, 0x8e, 0x89, 0xf8, 0xf0, 0x0c, + 0xcf, 0x41, 0xea, 0x42, 0xb0, 0x35, 0x3c, 0xe3, 0xd2, 0xb1, 0x84, 0x96, 0x86, 0x2a, 0x2c, 0xe0, + 0x01, 0x7b, 0x07, 0x16, 0x03, 0x6f, 0x2a, 0x0c, 0x0b, 0x35, 0x0c, 0x14, 0xcc, 0xab, 0x12, 0xf4, + 0x48, 0x85, 0x76, 0x57, 0xa6, 0x01, 0xb7, 0xc6, 0x4e, 0x10, 0x08, 0xf5, 0x6c, 0xe0, 0xb9, 0xa1, + 0xef, 0x8d, 0x64, 0x7c, 0x6e, 0x79, 0x1a, 0xf0, 0x43, 0xc2, 0xec, 0x10, 0x82, 0x7d, 0x1c, 0x77, + 0x69, 0x62, 0x3b, 0x7e, 0xd0, 0x00, 0xec, 0x92, 0x7a, 0x53, 0xd4, 0xdf, 0x6d, 0xc7, 0x8f, 0xfa, + 0x22, 0x1e, 0x82, 0x99, 0xb3, 0x69, 0x95, 0xd9, 0xb3, 0x69, 0x7f, 0x26, 0xfd, 0x6c, 0x5a, 0x0d, + 0xab, 0x7e, 0x20, 0xab, 0x9e, 0x9f, 0xe2, 0x6f, 0x75, 0x44, 0x6d, 0xfe, 0xc8, 0xdd, 0xe2, 0xb7, + 0x39, 0x72, 0xb7, 0x94, 0x76, 0xe4, 0xee, 0x23, 0xa8, 0xe0, 0x61, 0x28, 0xeb, 0xdc, 0x11, 0x3a, + 0x1c, 0xc5, 0x1b, 0xeb, 0xfa, 0x69, 0xa9, 0x7d, 0xc7, 0x0d, 0x4d, 0xf0, 0xd5, 0xcf, 0x60, 0xfe, + 0xf4, 0xdb, 0xf2, 0x2f, 0xf1, 0xf4, 0x9b, 0x3c, 0xb4, 0xb5, 0x05, 0x25, 0x35, 0x4f, 0x8c, 0x41, + 0xfe, 0xd4, 0xf7, 0xc6, 0x2a, 0xc6, 0x21, 0x7e, 0xb3, 0x45, 0xc8, 0x86, 0x9e, 0x2c, 0x9c, 0x0d, + 0x3d, 0xe3, 0xff, 0x87, 0x8a, 0xc6, 0x6a, 0xec, 0x2d, 0xf2, 0x4b, 0x0a, 0xdb, 0x4c, 0xea, 0x96, + 0x34, 0x8a, 0x65, 0x09, 0x6d, 0x0f, 0x85, 0xbc, 0x19, 0x3a, 0x3e, 0xc7, 0x73, 0xaa, 0x96, 0xcf, + 0x2f, 0xb8, 0x1f, 0xa8, 0x98, 0x53, 0x3d, 0x42, 0x98, 0x04, 0x37, 0x7e, 0x03, 0x56, 0x12, 0x73, + 0x2b, 0x45, 0xc4, 0x3b, 0xb0, 0x80, 0xe3, 0xa6, 0x12, 0x1b, 0x92, 0xa7, 0xd0, 0x24, 0x0e, 0xcf, + 0xe4, 0x52, 0xb8, 0xcc, 0x9a, 0xf8, 0xde, 0x09, 0x36, 0x92, 0x31, 0x2b, 0x12, 0x76, 0xe4, 0x7b, + 0x27, 0xc6, 0x1f, 0xe6, 0x20, 0xb7, 0xef, 0x4d, 0xf4, 0x44, 0xbb, 0xcc, 0x5c, 0xa2, 0x9d, 0x34, + 0x38, 0xad, 0xc8, 0xa0, 0x94, 0x3a, 0x3b, 0x06, 0x8a, 0x94, 0x51, 0x79, 0x0f, 0x16, 0x85, 0x9c, + 0x08, 0x3d, 0x61, 0xb1, 0xbf, 0xb0, 0x7d, 0x52, 0x88, 0x73, 0xb4, 0xf8, 0xec, 0x71, 0xd8, 0xf7, + 0xf6, 0x08, 0xce, 0x56, 0x21, 0x17, 0x99, 0x2f, 0x88, 0x16, 0x8f, 0x6c, 0x1d, 0x16, 0x30, 0xe3, + 0xfa, 0x4a, 0x06, 0xe6, 0xe5, 0x13, 0xfb, 0x01, 0xac, 0x24, 0xeb, 0x25, 0x51, 0x24, 0x75, 0x23, + 0xbd, 0x62, 0x94, 0x49, 0x37, 0x41, 0xc8, 0x11, 0xa2, 0x91, 0x09, 0x40, 0xa7, 0x9c, 0x23, 0x4a, + 0x13, 0x7a, 0xa5, 0x84, 0xd0, 0xbb, 0x03, 0x95, 0x70, 0x74, 0x61, 0x4d, 0xec, 0xab, 0x91, 0x67, + 0x0f, 0xe5, 0xfa, 0x86, 0x70, 0x74, 0x71, 0x44, 0x10, 0xf6, 0x21, 0xc0, 0x78, 0x32, 0x91, 0x6b, + 0x0f, 0x83, 0x1f, 0x31, 0x2b, 0x1f, 0x1e, 0x1d, 0x11, 0xcb, 0x99, 0xe5, 0xf1, 0x64, 0x42, 0x3f, + 0xd9, 0x2e, 0x2c, 0xa6, 0x9e, 0x25, 0xbd, 0xad, 0x12, 0x84, 0xbd, 0xc9, 0x56, 0xca, 0xe2, 0xac, + 0x0d, 0x74, 0xd8, 0xe6, 0x4f, 0x80, 0xfd, 0x29, 0x4f, 0x74, 0xf6, 0xa1, 0x1c, 0xf5, 0x4f, 0x3f, + 0x10, 0x89, 0x29, 0xff, 0x95, 0xc4, 0x81, 0xc8, 0xe6, 0x70, 0xe8, 0x0b, 0xb9, 0x48, 0x1b, 0x66, + 0x24, 0xf2, 0x41, 0xdb, 0x31, 0x9b, 0x24, 0xf7, 0x8d, 0xff, 0x96, 0x81, 0x02, 0x9d, 0xce, 0x7c, + 0x17, 0x96, 0x88, 0x3e, 0x4a, 0x5a, 0x94, 0xe1, 0x7c, 0xda, 0x77, 0xfb, 0x32, 0x5f, 0x51, 0x2c, + 0x0b, 0xed, 0xc4, 0x7a, 0x36, 0x9a, 0x79, 0xed, 0xd4, 0xfa, 0x1d, 0x28, 0x47, 0x4d, 0x6b, 0xac, + 0x53, 0x52, 0x2d, 0xb3, 0x37, 0x21, 0x7f, 0xee, 0x4d, 0x94, 0xe7, 0x07, 0xe2, 0x91, 0x34, 0x11, + 0x1e, 0xf7, 0x45, 0xb4, 0x41, 0x9d, 0x97, 0x1e, 0x8b, 0xa8, 0x11, 0x64, 0x83, 0xf9, 0x77, 0x5c, + 0x48, 0x79, 0xc7, 0x63, 0x58, 0x12, 0x72, 0x40, 0xcb, 0x29, 0xb8, 0x7e, 0xd3, 0xfc, 0xbe, 0xd0, + 0xf0, 0x06, 0xa3, 0xe9, 0x90, 0xeb, 0xbe, 0x37, 0x4c, 0xd2, 0x93, 0x70, 0xa5, 0x59, 0x1b, 0xbf, + 0x9b, 0x21, 0xf9, 0x22, 0xea, 0x65, 0xf7, 0x20, 0xef, 0xaa, 0xfc, 0x83, 0x58, 0x8f, 0x8b, 0xce, + 0x5e, 0x08, 0x3a, 0x13, 0x29, 0xc4, 0xd4, 0x61, 0xd4, 0x5e, 0xaf, 0xbd, 0x66, 0x56, 0xdc, 0xe9, + 0x38, 0x72, 0x5d, 0x7d, 0x4f, 0xbd, 0xd6, 0x8c, 0xdb, 0x87, 0xde, 0x3e, 0x5a, 0xa6, 0x5b, 0x5a, + 0xb6, 0x5f, 0x3e, 0xb1, 0x63, 0x2a, 0x2d, 0x70, 0x78, 0xc6, 0xb5, 0x2c, 0xbf, 0xdf, 0xcb, 0x42, + 0x2d, 0xd1, 0x23, 0x4c, 0x77, 0x14, 0x1b, 0x00, 0x05, 0x96, 0xe4, 0x7c, 0x83, 0x00, 0x49, 0x45, + 0x5d, 0x1b, 0xa7, 0x6c, 0x62, 0x9c, 0xa2, 0x04, 0xa2, 0x9c, 0x9e, 0x40, 0xf4, 0x00, 0xca, 0xf1, + 0x4d, 0x05, 0xc9, 0x2e, 0x89, 0xf6, 0xd4, 0x09, 0x94, 0x98, 0x28, 0x4e, 0x39, 0x2a, 0xe8, 0x29, + 0x47, 0x5f, 0x68, 0x19, 0x2a, 0x0b, 0x58, 0x8d, 0x91, 0x36, 0xa2, 0xbf, 0x94, 0xfc, 0x14, 0xe3, + 0x31, 0x54, 0xb4, 0xce, 0xeb, 0x59, 0x1e, 0x99, 0x44, 0x96, 0x47, 0x74, 0x82, 0x2c, 0x1b, 0x9f, + 0x20, 0x33, 0xfe, 0x52, 0x16, 0x6a, 0x62, 0x7d, 0x39, 0xee, 0xd9, 0x91, 0x37, 0x72, 0x06, 0x18, + 0x68, 0x8a, 0x56, 0x98, 0x54, 0xb4, 0xd4, 0x3a, 0x93, 0x4b, 0x8c, 0xf4, 0x2c, 0xfd, 0xf8, 0x2c, + 0x09, 0xe9, 0xe8, 0xf8, 0xac, 0x01, 0x35, 0x21, 0x18, 0x31, 0x64, 0x14, 0xdf, 0x77, 0x60, 0x56, + 0x4e, 0x39, 0xdf, 0xb6, 0x03, 0x92, 0x90, 0x3f, 0x80, 0x15, 0x41, 0x83, 0x27, 0x07, 0xc7, 0xce, + 0x68, 0xe4, 0x10, 0x25, 0x39, 0x9a, 0xea, 0xa7, 0x9c, 0x9b, 0x76, 0xc8, 0x0f, 0x05, 0x42, 0x5e, + 0x8f, 0x50, 0x1a, 0x3a, 0x81, 0x7d, 0x12, 0x27, 0xa5, 0x46, 0xcf, 0x18, 0x59, 0xb6, 0x2f, 0xb5, + 0xc8, 0x32, 0x39, 0x20, 0x2a, 0x63, 0xfb, 0x32, 0x8a, 0x2c, 0xcf, 0x70, 0x52, 0x71, 0x96, 0x93, + 0x8c, 0x7f, 0x9d, 0x85, 0x8a, 0xc6, 0x96, 0xaf, 0xb3, 0xbb, 0xde, 0x9e, 0x0b, 0x0c, 0x96, 0xf5, + 0x18, 0xe0, 0xdb, 0xc9, 0x26, 0x31, 0xf7, 0x85, 0x2e, 0x62, 0xd0, 0x18, 0xf8, 0x16, 0x94, 0xc5, + 0xaa, 0xfb, 0x08, 0x5d, 0xb0, 0xf2, 0x7a, 0x12, 0x04, 0x1c, 0x4d, 0x4f, 0x14, 0xf2, 0x21, 0x22, + 0x0b, 0x31, 0xf2, 0xa1, 0x40, 0xbe, 0x2c, 0x4d, 0xfc, 0x53, 0xa8, 0xca, 0x5a, 0x71, 0x4e, 0xf1, + 0x75, 0xe3, 0x55, 0x9f, 0x98, 0x6f, 0xb3, 0x42, 0xcd, 0xd1, 0xe4, 0xcb, 0x82, 0x0f, 0x55, 0xc1, + 0xd2, 0xab, 0x0a, 0x3e, 0xa4, 0x07, 0x63, 0x2f, 0xca, 0xbc, 0xc7, 0xdc, 0x30, 0x25, 0xc7, 0x3e, + 0x84, 0x15, 0x25, 0xae, 0xa6, 0xae, 0xed, 0xba, 0xde, 0xd4, 0x1d, 0x70, 0x75, 0x88, 0x8c, 0x49, + 0xd4, 0x71, 0x8c, 0x31, 0x86, 0xd1, 0x89, 0x64, 0xca, 0x31, 0xbb, 0x0f, 0x05, 0xd2, 0xcb, 0x49, + 0xf9, 0x48, 0x17, 0x5c, 0x44, 0xc2, 0xee, 0x41, 0x81, 0xd4, 0xf3, 0xec, 0xb5, 0xc2, 0x86, 0x08, + 0x8c, 0x26, 0x30, 0x51, 0xf0, 0x90, 0x87, 0xbe, 0x33, 0x08, 0xe2, 0xf3, 0x69, 0x05, 0x61, 0x7f, + 0x52, 0x5b, 0xb1, 0xe7, 0x36, 0xa6, 0x44, 0x1b, 0x95, 0x68, 0xc4, 0xc6, 0xb4, 0x92, 0xa8, 0x43, + 0xaa, 0x4b, 0x23, 0x58, 0x3f, 0xe1, 0xe1, 0x0b, 0xce, 0x5d, 0x57, 0x28, 0x43, 0x03, 0xee, 0x86, + 0xbe, 0x3d, 0x12, 0x93, 0x44, 0x6f, 0xf0, 0x68, 0xae, 0xd6, 0xd8, 0x07, 0xb2, 0x1d, 0x17, 0xdc, + 0x89, 0xca, 0x91, 0xec, 0x58, 0x3b, 0x49, 0xc3, 0x6d, 0xfe, 0x3a, 0x6c, 0x5e, 0x5f, 0x28, 0xe5, + 0x6c, 0xea, 0xbd, 0xa4, 0x54, 0x89, 0xe2, 0x80, 0x23, 0xcf, 0x0e, 0xa9, 0x37, 0xba, 0x64, 0xe9, + 0x40, 0x45, 0xc3, 0xc4, 0x7b, 0x7f, 0x06, 0x95, 0x3b, 0x7a, 0x10, 0x3b, 0x92, 0xeb, 0xf9, 0x63, + 0x8c, 0xbb, 0x0d, 0xad, 0xb8, 0xf6, 0x8c, 0xb9, 0x14, 0xc3, 0xf1, 0x88, 0xbe, 0xb1, 0x05, 0x4b, + 0xa8, 0xd9, 0x6b, 0x1b, 0xdd, 0xcb, 0x94, 0x41, 0x63, 0x15, 0x58, 0x87, 0x64, 0x97, 0x9e, 0x6f, + 0xf7, 0x9f, 0x73, 0x50, 0xd1, 0xc0, 0x62, 0x37, 0xc2, 0x24, 0x45, 0x6b, 0xe8, 0xd8, 0x63, 0xae, + 0x82, 0x9c, 0x35, 0xb3, 0x86, 0xd0, 0x5d, 0x09, 0x14, 0x7b, 0xb1, 0x7d, 0x71, 0x66, 0x79, 0xd3, + 0xd0, 0x1a, 0xf2, 0x33, 0x9f, 0xab, 0x5e, 0x56, 0xed, 0x8b, 0xb3, 0xee, 0x34, 0xdc, 0x45, 0x98, + 0xa0, 0x12, 0xb2, 0x44, 0xa3, 0x92, 0x39, 0x6b, 0x63, 0xfb, 0x32, 0xa6, 0x92, 0xc9, 0x9d, 0xc4, + 0x99, 0xf9, 0x28, 0xb9, 0x93, 0xac, 0xc5, 0xd9, 0x0d, 0xb4, 0x30, 0xbf, 0x81, 0x7e, 0x0c, 0xeb, + 0xb4, 0x81, 0x4a, 0xd1, 0x6c, 0xcd, 0xac, 0xe4, 0x55, 0xc4, 0xca, 0x97, 0xd4, 0xd4, 0xde, 0xba, + 0x78, 0x03, 0x25, 0x96, 0x02, 0xe7, 0x67, 0x24, 0xc8, 0x32, 0xa6, 0x78, 0x33, 0x59, 0x79, 0xcf, + 0xf9, 0x19, 0x17, 0x94, 0x98, 0x1d, 0xa3, 0x53, 0xca, 0x43, 0x20, 0x63, 0xc7, 0x9d, 0xa5, 0xb4, + 0x2f, 0x93, 0x94, 0x65, 0x49, 0x69, 0x5f, 0xea, 0x94, 0x8f, 0x60, 0x63, 0xcc, 0x87, 0x8e, 0x9d, + 0xac, 0xd6, 0x8a, 0x15, 0xb7, 0x55, 0x42, 0x6b, 0x65, 0x7a, 0x64, 0xb8, 0x8b, 0xd1, 0xf8, 0x99, + 0x37, 0x3e, 0x71, 0x48, 0x67, 0xa1, 0x7c, 0x9d, 0xbc, 0xb9, 0xe8, 0x4e, 0xc7, 0xbf, 0x86, 0x60, + 0x51, 0x24, 0x30, 0x6a, 0x50, 0xe9, 0x85, 0xde, 0x44, 0x4d, 0xf3, 0x22, 0x54, 0xe9, 0x51, 0x9e, + 0xcc, 0xbc, 0x05, 0x37, 0x51, 0x24, 0xf4, 0xbd, 0x89, 0x37, 0xf2, 0xce, 0xae, 0x12, 0x7e, 0xbc, + 0x7f, 0x97, 0x81, 0x95, 0x04, 0x56, 0x8a, 0xd7, 0x8f, 0x49, 0x9e, 0x45, 0xc7, 0xeb, 0x68, 0x0d, + 0x2e, 0x6b, 0x6b, 0x90, 0x08, 0x49, 0x98, 0xa9, 0x23, 0x77, 0xcd, 0xf8, 0x0a, 0x09, 0x55, 0x90, + 0x44, 0x4a, 0x63, 0x5e, 0xa4, 0xc8, 0xf2, 0xea, 0x72, 0x09, 0x55, 0xc5, 0xaf, 0xc8, 0x83, 0x3a, + 0x43, 0xf9, 0xca, 0xb9, 0xe4, 0x69, 0x07, 0xdd, 0xe7, 0xa7, 0x7a, 0x10, 0x3b, 0x02, 0x03, 0xe3, + 0x1f, 0x65, 0x00, 0xe2, 0xde, 0xe1, 0x79, 0x8b, 0x48, 0x6f, 0xc9, 0x60, 0xaa, 0xac, 0xa6, 0xa3, + 0xbc, 0x05, 0xd5, 0x28, 0xab, 0x3a, 0xd6, 0x84, 0x2a, 0x0a, 0x26, 0xd4, 0xa1, 0xf7, 0x60, 0xe9, + 0x6c, 0xe4, 0x9d, 0xa0, 0xc6, 0x2a, 0xf5, 0x16, 0xca, 0x57, 0x5b, 0x24, 0xb0, 0xd2, 0x46, 0x62, + 0xbd, 0x29, 0x9f, 0x9a, 0x78, 0xad, 0x6b, 0x41, 0xc6, 0xdf, 0xc8, 0x46, 0xa9, 0x9b, 0xf1, 0x48, + 0xbc, 0xdc, 0xbc, 0xfb, 0x45, 0x72, 0x69, 0x5e, 0x16, 0x5e, 0x7c, 0x0c, 0x8b, 0x3e, 0x6d, 0x4a, + 0x6a, 0xc7, 0xca, 0xbf, 0x64, 0xc7, 0xaa, 0xf9, 0x09, 0x4d, 0xe7, 0xfb, 0x50, 0xb7, 0x87, 0x17, + 0xdc, 0x0f, 0x1d, 0xf4, 0xd6, 0xa3, 0x7e, 0x2c, 0x93, 0x25, 0x35, 0x38, 0x2a, 0xa2, 0xef, 0xc1, + 0x92, 0x3c, 0x2d, 0x1c, 0x51, 0xca, 0xbb, 0x8a, 0x62, 0xb0, 0x20, 0x34, 0xfe, 0xa9, 0xca, 0x15, + 0x4d, 0xce, 0xee, 0xcb, 0x47, 0x45, 0x7f, 0xc3, 0xec, 0x7c, 0x00, 0x55, 0x32, 0x92, 0x0c, 0x02, + 0x48, 0x79, 0x44, 0x40, 0x19, 0x02, 0x48, 0x0e, 0x6b, 0xfe, 0x75, 0x86, 0xd5, 0xf8, 0xf7, 0x19, + 0x28, 0xee, 0x7b, 0x93, 0x7d, 0x87, 0x4e, 0x1c, 0xe0, 0x32, 0x89, 0x62, 0x54, 0x0b, 0xe2, 0x11, + 0x13, 0x7f, 0x5e, 0x72, 0x28, 0x2e, 0x55, 0xcd, 0xab, 0x25, 0xd5, 0xbc, 0x2f, 0xe0, 0x16, 0x86, + 0x00, 0x7d, 0x6f, 0xe2, 0xf9, 0x62, 0xa9, 0xda, 0x23, 0x52, 0xf7, 0x3c, 0x37, 0x3c, 0x57, 0xb2, + 0xf3, 0xe6, 0x29, 0xe7, 0x47, 0x1a, 0xc5, 0x61, 0x44, 0x80, 0xc7, 0x4e, 0x47, 0xe1, 0x85, 0x45, + 0x16, 0xba, 0xd4, 0x47, 0x49, 0xa2, 0x2e, 0x09, 0x44, 0x0b, 0xe1, 0xa8, 0x91, 0x1a, 0x9f, 0x41, + 0x39, 0x72, 0xf6, 0xb0, 0xf7, 0xa1, 0x7c, 0xee, 0x4d, 0xa4, 0x47, 0x28, 0x93, 0x38, 0x38, 0x28, + 0xdf, 0xda, 0x2c, 0x9d, 0xd3, 0x8f, 0xc0, 0xf8, 0xc3, 0x22, 0x14, 0xdb, 0xee, 0x85, 0xe7, 0x0c, + 0x30, 0xdb, 0x74, 0xcc, 0xc7, 0x9e, 0xba, 0xb2, 0x40, 0xfc, 0xc6, 0xdc, 0xac, 0xf8, 0xc6, 0xa1, + 0x9c, 0xcc, 0xcd, 0x8a, 0xee, 0x1a, 0x5a, 0x83, 0x05, 0x5f, 0xbf, 0x32, 0xa8, 0xe0, 0x63, 0x8e, + 0x7e, 0xb4, 0x5f, 0x16, 0xb4, 0x8b, 0x20, 0x44, 0x5d, 0x74, 0x95, 0x0d, 0x0e, 0x19, 0x1d, 0x21, + 0x2d, 0x23, 0x04, 0x07, 0xec, 0x0d, 0x28, 0xca, 0x73, 0x7a, 0x74, 0xb0, 0x8a, 0x92, 0xea, 0x25, + 0x08, 0xb9, 0xc1, 0xe7, 0x14, 0xc2, 0x8d, 0x14, 0xd9, 0x9c, 0x59, 0x55, 0xc0, 0x5d, 0xc1, 0x6b, + 0x77, 0xa0, 0x42, 0xf4, 0x44, 0x52, 0x92, 0x49, 0x9a, 0x08, 0x42, 0x82, 0x94, 0x9b, 0xb7, 0xca, + 0xa9, 0x37, 0x6f, 0x61, 0x3a, 0x71, 0x24, 0x65, 0xe9, 0x15, 0x81, 0xee, 0x5b, 0xd2, 0xe0, 0xea, + 0x3a, 0x3b, 0xe9, 0x53, 0xa1, 0x13, 0xd5, 0xca, 0xa7, 0xf2, 0x36, 0xd4, 0x4e, 0xed, 0xd1, 0xe8, + 0xc4, 0x1e, 0x3c, 0x27, 0x57, 0x40, 0x95, 0xbc, 0x9f, 0x0a, 0x88, 0xbe, 0x80, 0x3b, 0x50, 0xd1, + 0x66, 0x19, 0x33, 0x30, 0xf3, 0x26, 0xc4, 0xf3, 0x3b, 0xeb, 0xe1, 0x5b, 0x7c, 0x0d, 0x0f, 0x9f, + 0x96, 0x89, 0xba, 0x94, 0xcc, 0x44, 0xbd, 0x85, 0xd2, 0x54, 0xa6, 0x1c, 0xd6, 0xe9, 0x72, 0x1f, + 0x7b, 0x38, 0xc4, 0x94, 0x43, 0x74, 0x64, 0xd1, 0xe0, 0x11, 0x7e, 0x99, 0x6c, 0x09, 0x82, 0x11, + 0xc9, 0x6d, 0x72, 0x53, 0x4f, 0x6c, 0x67, 0x88, 0x07, 0x23, 0xc8, 0x7b, 0x50, 0xb4, 0xc7, 0xe1, + 0x91, 0xed, 0x0c, 0xd9, 0x5d, 0xa8, 0x2a, 0x34, 0xee, 0x8e, 0x2b, 0x34, 0xfe, 0x12, 0x2d, 0xf6, + 0x44, 0x03, 0x6a, 0x11, 0xc5, 0x38, 0x3e, 0x16, 0x5d, 0x91, 0x24, 0xc8, 0x07, 0x1f, 0x61, 0x96, + 0x4f, 0xc8, 0xf1, 0xf0, 0xf3, 0xe2, 0xc3, 0x5b, 0x51, 0xf2, 0x01, 0x72, 0xa9, 0xfa, 0x4f, 0xc1, + 0x31, 0xa2, 0x14, 0xca, 0x1d, 0xc5, 0xe8, 0xd6, 0x13, 0xfa, 0xaf, 0x24, 0xc5, 0x18, 0x1d, 0x11, + 0xb0, 0xcf, 0x34, 0xfb, 0xb5, 0x81, 0xc4, 0x6f, 0xcc, 0xd4, 0x7f, 0xdd, 0xc1, 0xb1, 0xdb, 0x00, + 0x4e, 0x20, 0x76, 0x99, 0x80, 0xbb, 0x43, 0x3c, 0xc7, 0x5c, 0x32, 0xcb, 0x4e, 0xf0, 0x94, 0x00, + 0xdf, 0xad, 0x61, 0xdb, 0x84, 0xaa, 0xfe, 0x9a, 0xac, 0x04, 0xf9, 0xee, 0x51, 0xab, 0x53, 0xbf, + 0xc1, 0x2a, 0x50, 0xec, 0xb5, 0xfa, 0xfd, 0x03, 0x8c, 0xf4, 0x55, 0xa1, 0x14, 0x1d, 0xb6, 0xcc, + 0x8a, 0xa7, 0xe6, 0xce, 0x4e, 0xeb, 0xa8, 0xdf, 0xda, 0xad, 0xe7, 0x7e, 0x9a, 0x2f, 0x65, 0xeb, + 0x39, 0xe3, 0x8f, 0x72, 0x50, 0xd1, 0x46, 0xe1, 0xe5, 0xc2, 0xf8, 0x36, 0x00, 0x5a, 0x92, 0x71, + 0x46, 0x6a, 0xde, 0x2c, 0x0b, 0x08, 0x4d, 0xbe, 0x1e, 0xa3, 0xc8, 0xd1, 0xad, 0x51, 0x2a, 0x46, + 0xf1, 0x36, 0xd4, 0xe8, 0x02, 0x26, 0x3d, 0x5e, 0x5b, 0x30, 0xab, 0x04, 0x94, 0xa2, 0x1a, 0x4f, + 0x61, 0x23, 0x11, 0x1e, 0x01, 0x94, 0x17, 0xaf, 0x10, 0x08, 0x0f, 0x01, 0xe2, 0x09, 0xce, 0xc0, + 0x1b, 0x5d, 0x70, 0xa2, 0x20, 0x8d, 0xb0, 0x22, 0x61, 0x7d, 0x79, 0x9e, 0x5c, 0xca, 0x43, 0xed, + 0x18, 0x70, 0xc1, 0xac, 0x12, 0x50, 0x36, 0xf4, 0x03, 0xc5, 0x40, 0x94, 0xbd, 0xb2, 0x31, 0xcf, + 0x0d, 0x09, 0xe6, 0x39, 0x98, 0x73, 0x23, 0x96, 0x91, 0x31, 0xbe, 0x37, 0x5f, 0xee, 0xd5, 0xee, + 0x44, 0xf6, 0x3e, 0xb0, 0xf1, 0x64, 0x62, 0xa5, 0x38, 0xf8, 0xf2, 0xe6, 0xd2, 0x78, 0x32, 0xe9, + 0x6b, 0xfe, 0xaf, 0xef, 0xc0, 0xf7, 0xf8, 0x0d, 0xb0, 0xa6, 0x58, 0xc0, 0xd8, 0xc5, 0xc8, 0x14, + 0x8b, 0xc5, 0x72, 0x46, 0x17, 0xcb, 0x29, 0xd2, 0x2f, 0x9b, 0x2a, 0xfd, 0x5e, 0x26, 0x27, 0x8c, + 0x3d, 0xa8, 0x1c, 0x69, 0xd7, 0xbb, 0xdd, 0x15, 0x3b, 0x84, 0xba, 0xd8, 0x8d, 0xf6, 0x0e, 0xf2, + 0x29, 0xfa, 0xf2, 0x3e, 0x37, 0xad, 0x37, 0x59, 0xad, 0x37, 0xc6, 0x3f, 0xc8, 0xd0, 0x75, 0x38, + 0x51, 0xe7, 0xe3, 0x1b, 0xe5, 0x54, 0xf8, 0x2d, 0x3e, 0xad, 0x5f, 0x51, 0x61, 0x37, 0x79, 0xd0, + 0x1e, 0xbb, 0x66, 0x79, 0xa7, 0xa7, 0x01, 0x57, 0x39, 0x1e, 0x15, 0x84, 0x75, 0x11, 0xa4, 0x94, + 0x6f, 0xa1, 0xe1, 0x3b, 0x54, 0x7f, 0x20, 0x13, 0x3b, 0x84, 0xf2, 0x7d, 0x68, 0x5f, 0xca, 0x56, + 0x03, 0xa1, 0x82, 0xc8, 0xf8, 0x80, 0x3a, 0xd0, 0x1b, 0x3d, 0x1b, 0x7f, 0x57, 0x5e, 0x28, 0x30, + 0x3b, 0xbe, 0xf7, 0xa1, 0x14, 0xd5, 0x9a, 0xdc, 0x61, 0x15, 0x65, 0x84, 0x17, 0xfb, 0x38, 0x3a, + 0x43, 0x12, 0x3d, 0xa6, 0xc5, 0x85, 0x31, 0x9e, 0xb6, 0xd6, 0xeb, 0x0f, 0x80, 0x9d, 0x3a, 0xfe, + 0x2c, 0x31, 0x2d, 0xb6, 0x3a, 0x62, 0x34, 0x6a, 0xe3, 0x18, 0x56, 0x94, 0x94, 0xd0, 0x2c, 0x82, + 0xe4, 0xe4, 0x65, 0x5e, 0x21, 0xe4, 0xb3, 0x73, 0x42, 0xde, 0xf8, 0xcd, 0x02, 0x14, 0xd5, 0x55, + 0x89, 0x69, 0xd7, 0xfb, 0x95, 0x93, 0xd7, 0xfb, 0x35, 0x12, 0x97, 0x3e, 0xe1, 0xd4, 0xcb, 0xfd, + 0xfe, 0xbd, 0xd9, 0x2d, 0x5b, 0x8b, 0x55, 0x24, 0xb6, 0x6d, 0x19, 0xab, 0x28, 0x24, 0x63, 0x15, + 0x69, 0x57, 0x1e, 0x92, 0xea, 0x39, 0x77, 0xe5, 0xe1, 0x2d, 0x20, 0x3d, 0x42, 0x4b, 0x6e, 0x2b, + 0x21, 0x40, 0xec, 0x39, 0x49, 0xb5, 0xa3, 0x34, 0xab, 0x76, 0xbc, 0xb6, 0x4a, 0xf0, 0x31, 0x2c, + 0xd0, 0x15, 0x20, 0xf2, 0x80, 0xb2, 0xda, 0x38, 0xe4, 0x58, 0xa9, 0xff, 0x74, 0xe2, 0xc1, 0x94, + 0xb4, 0xfa, 0xfd, 0x61, 0x95, 0xc4, 0xfd, 0x61, 0x7a, 0x0c, 0xa5, 0x9a, 0x8c, 0xa1, 0xdc, 0x83, + 0x7a, 0x34, 0x70, 0xe8, 0x91, 0x74, 0x03, 0x79, 0xba, 0x71, 0x51, 0xc1, 0x85, 0x34, 0xec, 0x04, + 0xf1, 0xc6, 0xb7, 0x98, 0xd8, 0xf8, 0x84, 0xac, 0x6a, 0x86, 0x21, 0x1f, 0x4f, 0x42, 0xb5, 0xf1, + 0x69, 0xb7, 0x4c, 0xd2, 0xcc, 0x2f, 0xe1, 0xcc, 0xab, 0xe9, 0x25, 0xee, 0xd8, 0x86, 0xc5, 0x53, + 0xdb, 0x19, 0x4d, 0x7d, 0x6e, 0xf9, 0xdc, 0x0e, 0x3c, 0x17, 0x17, 0x7f, 0xbc, 0x07, 0xcb, 0x57, + 0xdc, 0x23, 0x1a, 0x13, 0x49, 0xcc, 0xda, 0xa9, 0xfe, 0x88, 0x87, 0x98, 0xf4, 0x91, 0x10, 0x5b, + 0x96, 0x3c, 0xe7, 0x4c, 0xb9, 0x2a, 0xed, 0x8e, 0xb5, 0x77, 0xd0, 0x7e, 0xb2, 0xdf, 0xaf, 0x67, + 0xc4, 0x63, 0xef, 0x78, 0x67, 0xa7, 0xd5, 0xda, 0xc5, 0x2d, 0x0c, 0x60, 0x61, 0xaf, 0xd9, 0x3e, + 0x90, 0x1b, 0x58, 0xbe, 0x5e, 0x30, 0xfe, 0x65, 0x16, 0x2a, 0xda, 0xdb, 0xb0, 0x47, 0xd1, 0x24, + 0xd0, 0x2d, 0x55, 0xb7, 0xe7, 0xdf, 0x78, 0x4b, 0x49, 0x78, 0x6d, 0x16, 0xa2, 0xfb, 0x24, 0xb3, + 0xd7, 0xde, 0x27, 0xc9, 0xde, 0x85, 0x25, 0x9b, 0x6a, 0x88, 0x06, 0x5d, 0x3a, 0xf7, 0x25, 0x58, + 0x8e, 0x39, 0x66, 0x90, 0xc6, 0xdb, 0x94, 0xa0, 0xcb, 0xab, 0xa4, 0xcd, 0x68, 0xa7, 0xc2, 0xb9, + 0x29, 0xca, 0x91, 0x91, 0xc1, 0xf8, 0x68, 0xc3, 0x97, 0xe3, 0xa5, 0xd0, 0x74, 0xb2, 0x51, 0xe3, + 0xf0, 0xaa, 0x19, 0x3d, 0x1b, 0x9f, 0x00, 0xc4, 0xef, 0x93, 0x1c, 0xbe, 0x1b, 0xc9, 0xe1, 0xcb, + 0x68, 0xc3, 0x97, 0x35, 0xfe, 0x89, 0x14, 0x5d, 0x72, 0x2e, 0x22, 0x57, 0xdf, 0x0f, 0x40, 0x39, + 0x1f, 0x2d, 0x4c, 0xf2, 0x9e, 0x8c, 0x78, 0xa8, 0x0e, 0x67, 0x2e, 0x4b, 0x4c, 0x3b, 0x42, 0xcc, + 0x89, 0xda, 0xec, 0xbc, 0xa8, 0x7d, 0x0b, 0xaa, 0x42, 0xcc, 0x4a, 0x46, 0x0a, 0xa4, 0xb8, 0xaa, + 0x8c, 0xed, 0x4b, 0xd5, 0x76, 0x42, 0xc6, 0xe6, 0x67, 0x64, 0xec, 0xdf, 0xcb, 0xd0, 0xfd, 0x27, + 0x71, 0x47, 0x63, 0x21, 0x1b, 0xd5, 0x99, 0x14, 0xb2, 0x92, 0xd4, 0x8c, 0xf0, 0xd7, 0x08, 0xce, + 0x6c, 0xba, 0xe0, 0x4c, 0x17, 0xc9, 0xb9, 0x54, 0x91, 0x6c, 0x6c, 0x42, 0x63, 0x97, 0x8b, 0xa1, + 0x68, 0x8e, 0x46, 0x33, 0x63, 0x69, 0xdc, 0x82, 0x9b, 0x29, 0x38, 0xe9, 0xb5, 0xf9, 0x12, 0xd6, + 0x9a, 0x74, 0x31, 0xc4, 0x77, 0x75, 0x78, 0xd2, 0x68, 0xc0, 0xfa, 0x6c, 0x95, 0xb2, 0xb1, 0x3d, + 0x58, 0xde, 0xe5, 0x27, 0xd3, 0xb3, 0x03, 0x7e, 0x11, 0x37, 0xc4, 0x20, 0x1f, 0x9c, 0x7b, 0x2f, + 0xe4, 0xe4, 0xe2, 0x6f, 0x4c, 0xcb, 0x14, 0x34, 0x56, 0x30, 0xe1, 0x03, 0xe5, 0xb9, 0x47, 0x48, + 0x6f, 0xc2, 0x07, 0xc6, 0x23, 0x60, 0x7a, 0x3d, 0x72, 0x26, 0x84, 0x59, 0x35, 0x3d, 0xb1, 0x82, + 0xab, 0x20, 0xe4, 0x63, 0x75, 0x68, 0x10, 0x82, 0xe9, 0x49, 0x8f, 0x20, 0xc6, 0x7b, 0x50, 0x3d, + 0xb2, 0xaf, 0x4c, 0xfe, 0x8d, 0x3c, 0x9b, 0xb7, 0x01, 0xc5, 0x89, 0x7d, 0x25, 0xe4, 0x69, 0x14, + 0xc4, 0x43, 0xb4, 0xf1, 0xcf, 0xf2, 0xb0, 0x40, 0x94, 0xec, 0x2e, 0xdd, 0xd6, 0xec, 0xb8, 0x28, + 0xcf, 0xd4, 0xce, 0xa2, 0x81, 0xe6, 0x36, 0x9f, 0xec, 0xfc, 0xe6, 0x23, 0x3d, 0x8e, 0xea, 0xe6, + 0x29, 0x15, 0x6e, 0x71, 0xa7, 0x63, 0x75, 0xdd, 0x54, 0xf2, 0x76, 0x84, 0x7c, 0x7c, 0xcb, 0x37, + 0x9d, 0x0c, 0x4f, 0x06, 0xc4, 0x63, 0xe3, 0x8d, 0x7a, 0xa7, 0xf6, 0x54, 0xb9, 0xef, 0xe8, 0xa0, + 0x54, 0x0b, 0xb1, 0xa8, 0x0e, 0x9c, 0x26, 0x2d, 0xc4, 0x39, 0x4b, 0xb0, 0xf4, 0x6a, 0x4b, 0x90, + 0x5c, 0x91, 0x2f, 0xb1, 0x04, 0xe1, 0x35, 0x2c, 0xc1, 0xd7, 0x08, 0x46, 0xdf, 0x84, 0x12, 0x2a, + 0x4a, 0xda, 0x36, 0x24, 0x14, 0x24, 0xb1, 0x0d, 0x7d, 0xaa, 0xd9, 0x4a, 0x94, 0x09, 0xa3, 0xed, + 0x03, 0x26, 0xff, 0xe6, 0x97, 0x13, 0xe4, 0xfb, 0x1a, 0x8a, 0x12, 0x2a, 0x18, 0xda, 0xb5, 0xc7, + 0xea, 0xf2, 0x3e, 0xfc, 0x2d, 0x86, 0x0d, 0x6f, 0x1c, 0xfb, 0x66, 0xea, 0xf8, 0x7c, 0xa8, 0x6e, + 0x65, 0x72, 0x70, 0x8d, 0x0a, 0x88, 0x78, 0x41, 0x61, 0xb7, 0xb9, 0xde, 0x0b, 0x57, 0xca, 0x9e, + 0xa2, 0x13, 0x3c, 0x15, 0x8f, 0x06, 0x83, 0x3a, 0x5e, 0xf5, 0x39, 0xf1, 0x7c, 0xb5, 0xcb, 0x1b, + 0x3f, 0xcf, 0x40, 0x5d, 0xae, 0xae, 0x08, 0xa7, 0x9b, 0x4d, 0x85, 0xeb, 0x12, 0x37, 0x5e, 0x7e, + 0xc7, 0x92, 0x01, 0x35, 0xf4, 0x16, 0x45, 0x5b, 0x3e, 0x79, 0xbb, 0x2a, 0x02, 0xb8, 0x27, 0xb7, + 0xfd, 0x37, 0xa1, 0xa2, 0x92, 0xc6, 0xc7, 0xce, 0x48, 0x5d, 0xe8, 0x4f, 0x59, 0xe3, 0x87, 0xce, + 0x48, 0x69, 0x0c, 0xbe, 0x2d, 0x0f, 0x40, 0x67, 0x50, 0x63, 0x30, 0xed, 0x90, 0x1b, 0xff, 0x22, + 0x03, 0xcb, 0xda, 0xab, 0xc8, 0x75, 0xfb, 0x23, 0xa8, 0x46, 0x77, 0xec, 0xf2, 0x48, 0x55, 0xdd, + 0x48, 0x0a, 0x9a, 0xb8, 0x58, 0x65, 0x10, 0x41, 0x02, 0xd1, 0x99, 0xa1, 0x7d, 0x45, 0x99, 0xcd, + 0xd3, 0xb1, 0xb2, 0x06, 0x87, 0xf6, 0xd5, 0x1e, 0xe7, 0xbd, 0xe9, 0x58, 0xd8, 0xfa, 0x2f, 0x38, + 0x7f, 0x1e, 0x11, 0x90, 0xf8, 0x04, 0x01, 0x93, 0x14, 0x06, 0xd4, 0xc6, 0x9e, 0x1b, 0x9e, 0x47, + 0x24, 0x52, 0x4d, 0x47, 0x20, 0xd1, 0x18, 0x7f, 0x90, 0x85, 0x15, 0xf2, 0x49, 0x4a, 0x5f, 0xb0, + 0x14, 0x5d, 0x0d, 0x58, 0x20, 0xf7, 0x2c, 0x09, 0xaf, 0xfd, 0x1b, 0xa6, 0x7c, 0x66, 0x1f, 0xbf, + 0xa6, 0x1f, 0x55, 0x9d, 0xb1, 0xbe, 0x66, 0xf8, 0x73, 0xf3, 0xc3, 0x7f, 0xfd, 0xf0, 0xa6, 0x45, + 0x86, 0x0b, 0x69, 0x91, 0xe1, 0xd7, 0x89, 0xc7, 0xce, 0x9d, 0x06, 0x2e, 0x4a, 0x1a, 0xed, 0x34, + 0xf0, 0x23, 0xd8, 0x48, 0xd0, 0xa0, 0xb4, 0x76, 0x4e, 0x1d, 0xae, 0x6e, 0xd5, 0x59, 0xd5, 0xa8, + 0x7b, 0x0a, 0xb7, 0x5d, 0x84, 0x42, 0x30, 0xf0, 0x26, 0xdc, 0x58, 0x87, 0xd5, 0xe4, 0xa8, 0xca, + 0x6d, 0xe2, 0xb7, 0x33, 0xd0, 0x90, 0x79, 0x3c, 0x8e, 0x7b, 0xb6, 0xef, 0x04, 0xa1, 0xe7, 0x47, + 0x77, 0xd1, 0xde, 0x06, 0xa0, 0x8f, 0x0b, 0xa0, 0xf1, 0x2d, 0xef, 0x91, 0x41, 0x08, 0x9a, 0xde, + 0x37, 0xa1, 0xc4, 0xdd, 0x21, 0x21, 0x89, 0x1b, 0x8a, 0xdc, 0x1d, 0x2a, 0xc3, 0x7d, 0x6e, 0x2b, + 0xad, 0x25, 0x95, 0x04, 0x79, 0x23, 0x82, 0x18, 0x1d, 0x7e, 0x81, 0x5b, 0x7a, 0x3e, 0xba, 0x11, + 0xe1, 0xd0, 0xbe, 0xc4, 0xac, 0xd8, 0xc0, 0xf8, 0x9b, 0x59, 0x58, 0x8a, 0xfb, 0x47, 0x77, 0xc2, + 0xbc, 0xfc, 0x76, 0x9b, 0xbb, 0x92, 0x1d, 0x1c, 0x61, 0xf0, 0x68, 0x9e, 0xda, 0x12, 0x2d, 0xce, + 0xb6, 0xcb, 0x0c, 0xa8, 0x28, 0x0a, 0x6f, 0x1a, 0x6a, 0xd7, 0x3c, 0x96, 0x89, 0xa4, 0x3b, 0x0d, + 0x85, 0x85, 0x2a, 0x4c, 0x75, 0xc7, 0x95, 0x36, 0x62, 0xc1, 0x1e, 0x87, 0x6d, 0xfc, 0x82, 0x85, + 0x00, 0x8b, 0x62, 0x34, 0x91, 0x82, 0x4a, 0xd0, 0xd7, 0xc9, 0x60, 0xa1, 0x99, 0x43, 0x63, 0x45, + 0xd7, 0xe6, 0xe9, 0xd2, 0xed, 0x48, 0x9b, 0x7f, 0x13, 0x2a, 0x54, 0x79, 0x7c, 0xf8, 0x3b, 0x6f, + 0x96, 0xb1, 0x05, 0xc4, 0x4b, 0xaf, 0x99, 0x37, 0x4d, 0xf8, 0x0a, 0x80, 0x9a, 0xc2, 0x34, 0x99, + 0xbf, 0x9a, 0x81, 0x9b, 0x29, 0xd3, 0x26, 0x57, 0xf9, 0x0e, 0x2c, 0x9f, 0x46, 0x48, 0x35, 0xba, + 0xb4, 0xd4, 0xd7, 0x95, 0x58, 0x4d, 0x8e, 0xa9, 0x59, 0x3f, 0x4d, 0x02, 0x62, 0x2b, 0x95, 0x66, + 0x30, 0x71, 0xb5, 0x00, 0xaa, 0x44, 0x34, 0x8d, 0x64, 0x20, 0x1e, 0xc1, 0x66, 0xeb, 0x52, 0x48, + 0x8c, 0x28, 0xb5, 0x76, 0xf0, 0x7c, 0xaa, 0xa2, 0x57, 0x33, 0x1e, 0xf9, 0xcc, 0x6b, 0x79, 0xe4, + 0x87, 0x74, 0x16, 0x39, 0xaa, 0xeb, 0x17, 0xa9, 0x04, 0x37, 0x50, 0x51, 0xe6, 0x04, 0xab, 0x50, + 0x77, 0x0c, 0x08, 0x10, 0x55, 0x6a, 0x04, 0xb0, 0x74, 0x38, 0x1d, 0x85, 0xce, 0x4e, 0x04, 0x62, + 0x1f, 0xcb, 0x32, 0xd8, 0x8e, 0x1a, 0xb5, 0xd4, 0x86, 0x20, 0x6a, 0x08, 0x07, 0x6b, 0x2c, 0x2a, + 0xb2, 0xe6, 0xdb, 0x5b, 0x1a, 0x27, 0x5b, 0x30, 0x6e, 0xc2, 0x46, 0xfc, 0x44, 0xc3, 0xa6, 0xb6, + 0x9a, 0xbf, 0x9f, 0xa1, 0x14, 0x7c, 0xc2, 0xf5, 0x5c, 0x7b, 0x12, 0x9c, 0x7b, 0x21, 0x6b, 0xc1, + 0x4a, 0xe0, 0xb8, 0x67, 0x23, 0xae, 0x57, 0x1f, 0xc8, 0x41, 0x58, 0x4b, 0xf6, 0x8d, 0x8a, 0x06, + 0xe6, 0x32, 0x95, 0x88, 0x6b, 0x0b, 0xd8, 0xf6, 0x75, 0x9d, 0x8c, 0xd9, 0x62, 0x66, 0x34, 0xe6, + 0x3b, 0xdf, 0x86, 0xc5, 0x64, 0x43, 0xec, 0x53, 0x79, 0x84, 0x3f, 0xee, 0x55, 0x6e, 0xe6, 0x7c, + 0x73, 0xcc, 0x10, 0x95, 0x78, 0xec, 0x03, 0xe3, 0xaf, 0x67, 0xa0, 0x61, 0x72, 0xc1, 0xb9, 0x5a, + 0x2f, 0x15, 0xcf, 0xfc, 0x68, 0xae, 0xd6, 0xeb, 0xdf, 0x55, 0xdd, 0x0c, 0xa0, 0x7a, 0xf4, 0xc1, + 0xb5, 0x93, 0xb1, 0x7f, 0x63, 0xee, 0x8d, 0xb6, 0x4b, 0xb0, 0x40, 0x24, 0xc6, 0x06, 0xac, 0xc9, + 0xfe, 0xa8, 0xbe, 0xc4, 0xe1, 0xd6, 0x44, 0x8b, 0x89, 0x70, 0xeb, 0x26, 0x34, 0xe8, 0xac, 0xae, + 0xfe, 0x12, 0xb2, 0xe0, 0x2e, 0xb0, 0x43, 0x7b, 0x60, 0xfb, 0x9e, 0xe7, 0x1e, 0x71, 0x5f, 0x26, + 0x34, 0xa3, 0x86, 0x89, 0xd1, 0x48, 0xa5, 0x0a, 0xd3, 0x93, 0xba, 0xdc, 0xd6, 0x73, 0x55, 0xfe, + 0x16, 0x3d, 0x19, 0x26, 0xac, 0x6c, 0xdb, 0xcf, 0xb9, 0xaa, 0x49, 0x0d, 0xd1, 0x63, 0xa8, 0x4c, + 0xa2, 0x4a, 0xd5, 0xb8, 0xab, 0x2b, 0x46, 0xe6, 0x9b, 0x35, 0x75, 0x6a, 0xe3, 0x21, 0xac, 0x26, + 0xeb, 0x94, 0xa2, 0x63, 0x13, 0x4a, 0x63, 0x09, 0x93, 0xbd, 0x8b, 0x9e, 0x8d, 0xdf, 0x2a, 0x41, + 0x51, 0x5a, 0xaa, 0x6c, 0x0b, 0xf2, 0x03, 0x95, 0x43, 0x17, 0x5f, 0xbf, 0x25, 0xb1, 0xea, 0xff, + 0x0e, 0x66, 0xd2, 0x09, 0x3a, 0xf6, 0x18, 0x16, 0x93, 0x61, 0xe4, 0x99, 0x9b, 0x00, 0x92, 0xf1, + 0xdf, 0xda, 0x60, 0x26, 0x60, 0x58, 0x8e, 0x37, 0x47, 0xd2, 0x19, 0x4a, 0xe7, 0xda, 0xee, 0xe9, + 0xb9, 0x42, 0xdf, 0x0e, 0xce, 0x6d, 0xeb, 0xe1, 0xa3, 0x4f, 0xe4, 0x55, 0x00, 0x15, 0x04, 0xf6, + 0xce, 0xed, 0x87, 0x8f, 0x3e, 0x99, 0xd5, 0xa4, 0xe5, 0x45, 0x00, 0x9a, 0x26, 0xbd, 0x0a, 0x05, + 0xba, 0xc5, 0x95, 0x92, 0xa1, 0xe8, 0x81, 0x3d, 0x80, 0x55, 0xe5, 0xfc, 0x90, 0x69, 0xeb, 0x24, + 0x05, 0x4b, 0x74, 0x52, 0x50, 0xe2, 0x7a, 0x88, 0x22, 0x77, 0xc9, 0x3a, 0x2c, 0x9c, 0xc7, 0x57, + 0xf2, 0xd6, 0x4c, 0xf9, 0x64, 0xfc, 0x41, 0x01, 0x2a, 0xda, 0xa0, 0xb0, 0x2a, 0x94, 0xcc, 0x56, + 0xaf, 0x65, 0x3e, 0x6b, 0xed, 0xd6, 0x6f, 0xb0, 0x7b, 0xf0, 0x4e, 0xbb, 0xb3, 0xd3, 0x35, 0xcd, + 0xd6, 0x4e, 0xdf, 0xea, 0x9a, 0x96, 0xba, 0x04, 0xee, 0xa8, 0xf9, 0xf5, 0x61, 0xab, 0xd3, 0xb7, + 0x76, 0x5b, 0xfd, 0x66, 0xfb, 0xa0, 0x57, 0xcf, 0xb0, 0x37, 0xa0, 0x11, 0x53, 0x2a, 0x74, 0xf3, + 0xb0, 0x7b, 0xdc, 0xe9, 0xd7, 0xb3, 0xec, 0x0e, 0xdc, 0xda, 0x6b, 0x77, 0x9a, 0x07, 0x56, 0x4c, + 0xb3, 0x73, 0xd0, 0x7f, 0x66, 0xb5, 0x7e, 0xf5, 0xa8, 0x6d, 0x7e, 0x5d, 0xcf, 0xa5, 0x11, 0xec, + 0xf7, 0x0f, 0x76, 0x54, 0x0d, 0x79, 0x76, 0x13, 0xd6, 0x88, 0x80, 0x8a, 0x58, 0xfd, 0x6e, 0xd7, + 0xea, 0x75, 0xbb, 0x9d, 0x7a, 0x81, 0x2d, 0x43, 0xad, 0xdd, 0x79, 0xd6, 0x3c, 0x68, 0xef, 0x5a, + 0x66, 0xab, 0x79, 0x70, 0x58, 0x5f, 0x60, 0x2b, 0xb0, 0x34, 0x4b, 0x57, 0x14, 0x55, 0x28, 0xba, + 0x6e, 0xa7, 0xdd, 0xed, 0x58, 0xcf, 0x5a, 0x66, 0xaf, 0xdd, 0xed, 0xd4, 0x4b, 0x6c, 0x1d, 0x58, + 0x12, 0xb5, 0x7f, 0xd8, 0xdc, 0xa9, 0x97, 0xd9, 0x1a, 0x2c, 0x27, 0xe1, 0x4f, 0x5b, 0x5f, 0xd7, + 0x81, 0x35, 0x60, 0x95, 0x3a, 0x66, 0x6d, 0xb7, 0x0e, 0xba, 0x5f, 0x59, 0x87, 0xed, 0x4e, 0xfb, + 0xf0, 0xf8, 0xb0, 0x5e, 0xc1, 0xbb, 0x25, 0x5b, 0x2d, 0xab, 0xdd, 0xe9, 0x1d, 0xef, 0xed, 0xb5, + 0x77, 0xda, 0xad, 0x4e, 0xbf, 0x5e, 0xa5, 0x96, 0xd3, 0x5e, 0xbc, 0x26, 0x0a, 0xc8, 0xb3, 0x2d, + 0xd6, 0x6e, 0xbb, 0xd7, 0xdc, 0x3e, 0x68, 0xed, 0xd6, 0x17, 0xd9, 0x6d, 0xb8, 0xd9, 0x6f, 0x1d, + 0x1e, 0x75, 0xcd, 0xa6, 0xf9, 0xb5, 0x3a, 0xfb, 0x62, 0xed, 0x35, 0xdb, 0x07, 0xc7, 0x66, 0xab, + 0xbe, 0xc4, 0xde, 0x82, 0xdb, 0x66, 0xeb, 0xcb, 0xe3, 0xb6, 0xd9, 0xda, 0xb5, 0x3a, 0xdd, 0xdd, + 0x96, 0xb5, 0xd7, 0x6a, 0xf6, 0x8f, 0xcd, 0x96, 0x75, 0xd8, 0xee, 0xf5, 0xda, 0x9d, 0x27, 0xf5, + 0x3a, 0x7b, 0x07, 0xee, 0x46, 0x24, 0x51, 0x05, 0x33, 0x54, 0xcb, 0xe2, 0xfd, 0xd4, 0x94, 0x76, + 0x5a, 0xbf, 0xda, 0xb7, 0x8e, 0x5a, 0x2d, 0xb3, 0xce, 0xd8, 0x26, 0xac, 0xc7, 0xcd, 0x53, 0x03, + 0xb2, 0xed, 0x15, 0x81, 0x3b, 0x6a, 0x99, 0x87, 0xcd, 0x8e, 0x98, 0xe0, 0x04, 0x6e, 0x55, 0x74, + 0x3b, 0xc6, 0xcd, 0x76, 0x7b, 0x8d, 0x31, 0x58, 0xd4, 0x66, 0x65, 0xaf, 0x69, 0xd6, 0xd7, 0xd9, + 0x12, 0x54, 0x0e, 0x8f, 0x8e, 0xac, 0x7e, 0xfb, 0xb0, 0xd5, 0x3d, 0xee, 0xd7, 0x37, 0xd8, 0x1a, + 0xd4, 0xdb, 0x9d, 0x7e, 0xcb, 0x14, 0x73, 0xad, 0x8a, 0xfe, 0xf7, 0x22, 0x5b, 0x85, 0x25, 0xd5, + 0x53, 0x05, 0xfd, 0xe3, 0x22, 0xdb, 0x00, 0x76, 0xdc, 0x31, 0x5b, 0xcd, 0x5d, 0x31, 0x70, 0x11, + 0xe2, 0x7f, 0x14, 0x65, 0x48, 0xe9, 0xe7, 0xb9, 0x68, 0xb3, 0x8e, 0x73, 0x34, 0x92, 0x17, 0xb4, + 0x57, 0xb5, 0x8b, 0xd5, 0x5f, 0xf5, 0x99, 0x15, 0xcd, 0xb4, 0xca, 0xcd, 0x99, 0x56, 0x73, 0xb6, + 0x7b, 0x4d, 0xd7, 0xfd, 0xde, 0x86, 0xda, 0x98, 0x2e, 0x6b, 0x97, 0x97, 0x32, 0x83, 0x4c, 0x58, + 0x22, 0x20, 0xdd, 0xc8, 0x3c, 0xf7, 0x9d, 0x91, 0xc2, 0xfc, 0x77, 0x46, 0xd2, 0xf4, 0xfb, 0x85, + 0x34, 0xfd, 0xfe, 0x3e, 0x2c, 0x93, 0x68, 0x72, 0x5c, 0x67, 0xac, 0xac, 0x66, 0xd2, 0x02, 0x97, + 0x50, 0x44, 0x11, 0x5c, 0x99, 0x13, 0xca, 0xe4, 0x90, 0x22, 0xa4, 0x28, 0xad, 0x8d, 0x84, 0xa5, + 0x41, 0x92, 0x23, 0xb2, 0x34, 0xa2, 0x16, 0xec, 0xcb, 0xb8, 0x85, 0x8a, 0xd6, 0x02, 0xc1, 0xb1, + 0x85, 0xfb, 0xb0, 0xcc, 0x2f, 0x43, 0xdf, 0xb6, 0xbc, 0x89, 0xfd, 0xcd, 0x14, 0x63, 0xde, 0x36, + 0xda, 0xf0, 0x55, 0x73, 0x09, 0x11, 0x5d, 0x84, 0xef, 0xda, 0xa1, 0x7d, 0xff, 0xcf, 0x43, 0x45, + 0xbb, 0xc8, 0x9f, 0x6d, 0xc0, 0xca, 0x57, 0xed, 0x7e, 0xa7, 0xd5, 0xeb, 0x59, 0x47, 0xc7, 0xdb, + 0x4f, 0x5b, 0x5f, 0x5b, 0xfb, 0xcd, 0xde, 0x7e, 0xfd, 0x86, 0x58, 0xb4, 0x9d, 0x56, 0xaf, 0xdf, + 0xda, 0x4d, 0xc0, 0x33, 0xec, 0x4d, 0xd8, 0x3c, 0xee, 0x1c, 0xf7, 0x5a, 0xbb, 0x56, 0x5a, 0xb9, + 0xac, 0xe0, 0x52, 0x89, 0x4f, 0x29, 0x9e, 0xbb, 0xff, 0x1b, 0xb0, 0x98, 0x3c, 0x06, 0xce, 0x00, + 0x16, 0x0e, 0x5a, 0x4f, 0x9a, 0x3b, 0x5f, 0xd3, 0xed, 0xb3, 0xbd, 0x7e, 0xb3, 0xdf, 0xde, 0xb1, + 0xe4, 0x6d, 0xb3, 0x42, 0x22, 0x64, 0x58, 0x05, 0x8a, 0xcd, 0xce, 0xce, 0x7e, 0xd7, 0xec, 0xd5, + 0xb3, 0xec, 0x0d, 0xd8, 0x50, 0xbc, 0xba, 0xd3, 0x3d, 0x3c, 0x6c, 0xf7, 0x51, 0x18, 0xf6, 0xbf, + 0x3e, 0x12, 0xac, 0x79, 0xdf, 0x86, 0x72, 0x7c, 0x5d, 0x2e, 0x0a, 0x98, 0x76, 0xbf, 0xdd, 0xec, + 0xc7, 0xd2, 0xb5, 0x7e, 0x43, 0xc8, 0xaf, 0x18, 0x8c, 0xb7, 0xdd, 0xd6, 0x33, 0x74, 0x52, 0x4e, + 0x01, 0xa9, 0xf5, 0x7a, 0x56, 0x2c, 0xaa, 0x18, 0xba, 0xdd, 0xed, 0x8b, 0x57, 0xf8, 0x1c, 0x16, + 0x93, 0xf9, 0x90, 0x49, 0xc7, 0xf6, 0x26, 0xac, 0x6f, 0xb7, 0xfa, 0x5f, 0xb5, 0x5a, 0x1d, 0x1c, + 0x9d, 0x9d, 0x56, 0xa7, 0x6f, 0x36, 0x0f, 0xda, 0xfd, 0xaf, 0xeb, 0x99, 0xfb, 0x8f, 0xa1, 0x3e, + 0x1b, 0x7c, 0x4c, 0x44, 0x6b, 0x5f, 0x16, 0xd6, 0xbd, 0xff, 0x5f, 0x32, 0xb0, 0x9a, 0xe6, 0x77, + 0x17, 0x73, 0x28, 0x17, 0xa7, 0x10, 0xd1, 0xbd, 0x6e, 0xc7, 0xea, 0x74, 0xf1, 0x7a, 0xcb, 0x4d, + 0x58, 0x9f, 0x41, 0x28, 0x49, 0x90, 0x61, 0xb7, 0x60, 0x63, 0xae, 0x90, 0x65, 0x76, 0x8f, 0xf1, + 0xb5, 0x1b, 0xb0, 0x3a, 0x83, 0x6c, 0x99, 0x66, 0xd7, 0xac, 0xe7, 0xd8, 0x07, 0x70, 0x6f, 0x06, + 0x33, 0xbf, 0x31, 0xa9, 0x7d, 0x2b, 0xcf, 0xde, 0x83, 0xb7, 0xe7, 0xa8, 0x63, 0xd9, 0x6d, 0x6d, + 0x37, 0x0f, 0xc4, 0xeb, 0xd5, 0x0b, 0xf7, 0xff, 0x71, 0x0e, 0x20, 0x3e, 0x70, 0x24, 0xda, 0xdf, + 0x6d, 0xf6, 0x9b, 0x07, 0x5d, 0xc1, 0x5e, 0x66, 0xb7, 0x2f, 0x6a, 0x37, 0x5b, 0x5f, 0xd6, 0x6f, + 0xa4, 0x62, 0xba, 0x47, 0xe2, 0x85, 0x36, 0x60, 0x85, 0xa6, 0xea, 0x40, 0xbc, 0x46, 0xbb, 0xf3, + 0x84, 0x6e, 0x4a, 0xc5, 0xdd, 0xef, 0xf8, 0x68, 0xcf, 0xec, 0x76, 0xfa, 0x56, 0x6f, 0xff, 0xb8, + 0xbf, 0x8b, 0xf7, 0xac, 0xee, 0x98, 0xed, 0x23, 0xaa, 0x33, 0xff, 0x32, 0x02, 0x51, 0x75, 0x41, + 0xac, 0x85, 0x27, 0xdd, 0x5e, 0xaf, 0x7d, 0x64, 0x7d, 0x79, 0xdc, 0x32, 0xdb, 0xad, 0x1e, 0x16, + 0x5c, 0x48, 0x81, 0x0b, 0xfa, 0xa2, 0xd8, 0x33, 0xfb, 0x07, 0xcf, 0xe4, 0xa6, 0x26, 0x48, 0x4b, + 0x49, 0x90, 0xa0, 0x2a, 0x8b, 0xd9, 0x11, 0xbb, 0x42, 0x4a, 0xcd, 0x70, 0x0d, 0x4e, 0x94, 0xab, + 0x88, 0xfd, 0x6e, 0x6e, 0x91, 0x60, 0xb1, 0x6a, 0x3a, 0x4a, 0x94, 0xc2, 0xad, 0x30, 0x52, 0x1c, + 0x76, 0x77, 0x4d, 0x2c, 0xb0, 0x38, 0x07, 0x15, 0xb4, 0x4b, 0x82, 0x09, 0xc5, 0xb6, 0x21, 0x48, + 0xea, 0xea, 0x41, 0x60, 0x96, 0x1f, 0xfe, 0x87, 0x3b, 0x50, 0x8e, 0x12, 0x8f, 0xd9, 0x4f, 0xa1, + 0x96, 0x38, 0x09, 0xca, 0x94, 0x5b, 0x30, 0xed, 0xe0, 0xe8, 0xe6, 0x1b, 0xe9, 0x48, 0xa9, 0x81, + 0x1e, 0x6a, 0x16, 0x06, 0x55, 0xf6, 0xc6, 0xac, 0xd6, 0x9f, 0xa8, 0xed, 0xf6, 0x35, 0x58, 0x59, + 0xdd, 0x53, 0xbc, 0xb4, 0x55, 0xff, 0x74, 0x22, 0xbb, 0x1d, 0xdf, 0xa0, 0x99, 0xf2, 0x49, 0xc5, + 0xcd, 0x9b, 0xf3, 0x1f, 0x39, 0x54, 0x5f, 0x45, 0xdc, 0x85, 0x8a, 0xf6, 0x45, 0x20, 0x76, 0xf3, + 0xda, 0xaf, 0x17, 0x6d, 0x6e, 0xa6, 0xa1, 0x64, 0x97, 0xbe, 0x80, 0x72, 0xf4, 0x75, 0x18, 0xb6, + 0xa1, 0x7d, 0xd9, 0x47, 0xff, 0xc6, 0xcd, 0x66, 0x63, 0x1e, 0x21, 0xcb, 0xef, 0x42, 0x45, 0xfb, + 0xc8, 0x4b, 0xd4, 0x8b, 0xf9, 0x0f, 0xc9, 0x44, 0xbd, 0x48, 0xfb, 0x26, 0xcc, 0x01, 0xac, 0x49, + 0x3b, 0xe6, 0x84, 0x7f, 0x9b, 0xe1, 0x49, 0xf9, 0x06, 0xe4, 0x83, 0x0c, 0x7b, 0x0c, 0x25, 0xf5, + 0x39, 0x1f, 0xb6, 0x9e, 0xfe, 0xb1, 0xa2, 0xcd, 0x8d, 0x39, 0xb8, 0xec, 0x4a, 0x13, 0x20, 0xfe, + 0x7c, 0x0c, 0x53, 0x2f, 0x3e, 0xf7, 0x39, 0x9a, 0x68, 0x66, 0x52, 0xbe, 0x35, 0xb3, 0x0b, 0x15, + 0xed, 0x4b, 0x31, 0xd1, 0x98, 0xcc, 0x7f, 0x65, 0x26, 0x1a, 0x93, 0xb4, 0x0f, 0xcb, 0xfc, 0x14, + 0x6a, 0x89, 0x4f, 0xbe, 0x44, 0x7c, 0x9c, 0xf6, 0x41, 0x99, 0x88, 0x8f, 0xd3, 0xbf, 0x12, 0xb3, + 0x0b, 0x15, 0xed, 0x03, 0x2d, 0x51, 0x8f, 0xe6, 0xbf, 0x05, 0x13, 0xf5, 0x28, 0xe5, 0x7b, 0x2e, + 0x62, 0x35, 0x24, 0xbf, 0xce, 0x12, 0xad, 0x86, 0xd4, 0xcf, 0xbc, 0x44, 0xab, 0x21, 0xfd, 0x93, + 0x2e, 0x82, 0xf5, 0xa2, 0xdb, 0x9a, 0xd9, 0x86, 0xc6, 0x1d, 0xfa, 0xb5, 0xcf, 0x11, 0xeb, 0xcd, + 0x5f, 0xec, 0xfc, 0x04, 0x56, 0x22, 0xa6, 0x89, 0xee, 0x5a, 0x0e, 0xa2, 0x3e, 0xa5, 0xde, 0xe8, + 0xbc, 0x59, 0x9f, 0xc5, 0x3e, 0xc8, 0xb0, 0xcf, 0xa0, 0x28, 0x2f, 0xb0, 0x65, 0x6b, 0xb3, 0x17, + 0xda, 0x52, 0x27, 0xd6, 0xd3, 0xef, 0xb9, 0x65, 0x47, 0xb8, 0xa0, 0xf5, 0x1b, 0x66, 0x75, 0x8e, + 0x4d, 0xb9, 0x94, 0x76, 0xf3, 0xcd, 0xeb, 0xd0, 0x71, 0x8d, 0xb3, 0xb7, 0x22, 0xdf, 0xbe, 0xee, + 0x86, 0x86, 0x64, 0x8d, 0xd7, 0x5d, 0x25, 0xf5, 0x04, 0xaa, 0xfa, 0x07, 0x1c, 0x98, 0xbe, 0x0e, + 0x67, 0xeb, 0xba, 0x95, 0x8a, 0x93, 0x15, 0x3d, 0x83, 0xf5, 0x68, 0xbc, 0xf5, 0xeb, 0x02, 0x02, + 0x76, 0x27, 0xe5, 0x12, 0x81, 0xc4, 0xa8, 0xdf, 0xbc, 0xf6, 0x96, 0x81, 0x07, 0x19, 0x14, 0xb2, + 0x89, 0x6b, 0xe9, 0x63, 0x21, 0x9b, 0x76, 0x1b, 0x7f, 0x2c, 0x64, 0xd3, 0xef, 0xb2, 0x6f, 0xc2, + 0x92, 0x76, 0xdd, 0x41, 0xef, 0xca, 0x1d, 0x44, 0xfc, 0x3e, 0x7f, 0xf5, 0xe7, 0x66, 0x9a, 0x37, + 0x8d, 0xed, 0x40, 0x45, 0xbf, 0x31, 0xe1, 0x25, 0xc5, 0x37, 0x34, 0x94, 0x7e, 0x99, 0xe4, 0x83, + 0x0c, 0x3b, 0x80, 0xfa, 0xec, 0xfd, 0x66, 0xd1, 0x12, 0x4e, 0xbb, 0x13, 0x6e, 0x73, 0x06, 0x99, + 0xb8, 0x15, 0x4d, 0xf0, 0x45, 0xe2, 0x5b, 0x83, 0x9e, 0x3f, 0xbb, 0x15, 0x25, 0xbf, 0x41, 0x18, + 0xd5, 0x96, 0xf6, 0xf5, 0xc9, 0x7b, 0x99, 0x07, 0x19, 0xb6, 0x07, 0xd5, 0xc4, 0xf5, 0x3e, 0x89, + 0x1c, 0xf8, 0x99, 0xd7, 0x6c, 0xe8, 0xb8, 0x99, 0xf7, 0x3c, 0x84, 0xc5, 0x64, 0xd8, 0x37, 0xea, + 0x58, 0x6a, 0x80, 0x39, 0x9a, 0xbe, 0xf4, 0x58, 0x31, 0xfb, 0x31, 0x7d, 0x49, 0x57, 0xa5, 0xf8, + 0xb0, 0xf9, 0x2f, 0xaf, 0x46, 0x73, 0xa6, 0x7f, 0xa7, 0xd4, 0xc8, 0xfd, 0x95, 0x6c, 0x06, 0xdf, + 0xeb, 0x47, 0xf4, 0x1d, 0x3b, 0x95, 0xe5, 0x21, 0xe6, 0xff, 0x75, 0x2b, 0x61, 0x7b, 0xd4, 0xb8, + 0xfc, 0x8a, 0x68, 0x2c, 0xb9, 0xe7, 0xbe, 0x2c, 0xfa, 0x8a, 0x3e, 0x34, 0xa9, 0x0f, 0xb2, 0x4c, + 0x82, 0x07, 0x5f, 0xb3, 0x2e, 0xf6, 0x29, 0x40, 0x9c, 0x3a, 0xc7, 0x66, 0x12, 0xb8, 0xa2, 0x05, + 0x95, 0x92, 0x5d, 0xd7, 0xa2, 0xf5, 0x1e, 0x65, 0x90, 0xe9, 0x5b, 0x72, 0x32, 0x99, 0x2d, 0xb1, + 0x25, 0xcf, 0x56, 0xf3, 0x43, 0xa8, 0x1d, 0x78, 0xde, 0xf3, 0xe9, 0x24, 0xca, 0xbf, 0x4e, 0xa6, + 0x37, 0x08, 0xf3, 0x78, 0x73, 0xa6, 0x5b, 0xac, 0x09, 0xcb, 0x91, 0x88, 0x88, 0x53, 0xd8, 0x92, + 0x44, 0x09, 0xc1, 0x30, 0x53, 0xc1, 0x83, 0x0c, 0x7b, 0x08, 0xd5, 0x5d, 0x3e, 0xc0, 0xe3, 0xf7, + 0x18, 0x88, 0x5f, 0x49, 0x04, 0x75, 0x29, 0x82, 0xbf, 0x59, 0x4b, 0x00, 0x95, 0x88, 0x8b, 0x13, + 0x3a, 0xf4, 0x3d, 0x23, 0x99, 0x15, 0x91, 0x10, 0x71, 0x73, 0x49, 0x1d, 0xcf, 0x60, 0x79, 0x2e, + 0x65, 0x22, 0x92, 0x6e, 0xd7, 0x25, 0x5a, 0x6c, 0xde, 0xbd, 0x9e, 0x40, 0xd6, 0xfb, 0x13, 0xa8, + 0xd1, 0xdd, 0xa2, 0x27, 0x9c, 0x8e, 0xcf, 0xcd, 0xdc, 0x3d, 0xa3, 0x9f, 0xcd, 0x9b, 0x15, 0x49, + 0x54, 0xe0, 0x09, 0x7e, 0x02, 0x40, 0x3b, 0x9c, 0x16, 0xcd, 0xeb, 0xfc, 0x81, 0xb9, 0x68, 0x5e, + 0xd3, 0xce, 0xc1, 0x7d, 0x0e, 0x95, 0x27, 0x3c, 0x54, 0xc7, 0xbd, 0x22, 0xfd, 0x68, 0xe6, 0xfc, + 0xd7, 0x66, 0xca, 0x21, 0x3d, 0xf6, 0x09, 0x16, 0x8d, 0x8e, 0x2e, 0xaf, 0x6b, 0xad, 0xe8, 0x45, + 0x97, 0x66, 0xe0, 0x42, 0xfb, 0xd0, 0x2e, 0x30, 0x88, 0x3a, 0x3e, 0x7f, 0x61, 0x45, 0xd4, 0xf1, + 0xb4, 0xfb, 0x0e, 0x7e, 0x4c, 0x23, 0xa0, 0x1d, 0x30, 0x8b, 0x55, 0xb0, 0xd9, 0xb3, 0x68, 0x51, + 0xf7, 0x75, 0xf2, 0x47, 0x00, 0xbd, 0xd0, 0x9b, 0xec, 0xda, 0x7c, 0xec, 0xb9, 0xb1, 0x4c, 0x88, + 0x8f, 0x36, 0xc5, 0x0b, 0x51, 0x3b, 0xdf, 0xc4, 0xbe, 0xd2, 0x74, 0xd3, 0xc4, 0x94, 0xa8, 0x69, + 0xbf, 0xf6, 0xf4, 0x53, 0xf4, 0x3a, 0x29, 0x27, 0xa0, 0x50, 0x48, 0x40, 0x9c, 0xcd, 0x12, 0x69, + 0x9a, 0x73, 0x89, 0x32, 0xd1, 0x5a, 0x4f, 0x49, 0x7d, 0xf9, 0x02, 0xca, 0x71, 0x1a, 0xc0, 0x46, + 0x7c, 0x9b, 0x4a, 0x22, 0x69, 0x20, 0x92, 0xde, 0xf3, 0x21, 0xf8, 0x0e, 0xac, 0x50, 0x77, 0xa2, + 0xed, 0x0f, 0x0f, 0xe0, 0x44, 0x5f, 0xb0, 0x98, 0x8f, 0x7d, 0x47, 0xeb, 0x27, 0x2d, 0x82, 0x2b, + 0xd6, 0xcf, 0x5c, 0x24, 0x30, 0x5a, 0x3f, 0xd7, 0x85, 0x76, 0xa3, 0xf5, 0x73, 0x7d, 0x10, 0xb1, + 0x03, 0x2b, 0x29, 0x31, 0x3d, 0xf6, 0x96, 0x32, 0x6c, 0xae, 0x8d, 0xf7, 0x6d, 0xa6, 0xc6, 0x7e, + 0x58, 0x1f, 0x36, 0xa8, 0x4c, 0x73, 0x34, 0x9a, 0x09, 0x21, 0xbd, 0xa9, 0x15, 0x48, 0x09, 0x8b, + 0x25, 0x54, 0x99, 0x99, 0xd0, 0x58, 0x07, 0xea, 0xb3, 0xd1, 0x17, 0x76, 0x3d, 0xf9, 0xe6, 0x9d, + 0x84, 0xca, 0x3e, 0x1f, 0xb1, 0x61, 0xcf, 0xa2, 0x18, 0xd0, 0x4c, 0x1f, 0xef, 0x44, 0x57, 0x44, + 0xa7, 0x47, 0xac, 0x22, 0x6b, 0x20, 0x35, 0x84, 0xc4, 0x7e, 0x15, 0x36, 0x66, 0x39, 0x5a, 0xd5, + 0x7c, 0x37, 0x6d, 0xb8, 0xae, 0x55, 0xe5, 0x92, 0x2f, 0xf4, 0x20, 0x23, 0x04, 0xb1, 0x1e, 0xc9, + 0x89, 0x18, 0x29, 0x25, 0x64, 0x14, 0x31, 0x52, 0x5a, 0xe8, 0x67, 0xfb, 0xbd, 0x5f, 0xfb, 0xde, + 0x99, 0x13, 0x9e, 0x4f, 0x4f, 0xb6, 0x06, 0xde, 0xf8, 0xc3, 0x91, 0x32, 0xee, 0xe5, 0xb1, 0xcc, + 0x0f, 0x47, 0xee, 0xf0, 0x43, 0x2c, 0x7d, 0xb2, 0x30, 0xf1, 0xbd, 0xd0, 0xfb, 0xe1, 0xff, 0x0d, + 0x00, 0x00, 0xff, 0xff, 0x1f, 0xda, 0x01, 0x0a, 0xda, 0x82, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -12434,6 +12529,11 @@ type LightningClient interface { //it's identity pubkey, alias, the chains it is connected to, and information //concerning the number of open+pending channels. GetInfo(ctx context.Context, in *GetInfoRequest, opts ...grpc.CallOption) (*GetInfoResponse, error) + //* lncli: `getrecoveryinfo` + //GetRecoveryInfo returns information concerning the recovery mode including + //whether it's in a recovery mode, whether the recovery is finished, and the + //progress made so far. + GetRecoveryInfo(ctx context.Context, in *GetRecoveryInfoRequest, opts ...grpc.CallOption) (*GetRecoveryInfoResponse, error) // lncli: `pendingchannels` //PendingChannels returns a list of all the channels that are currently //considered "pending". A channel is pending if it has finished the funding @@ -12883,6 +12983,15 @@ func (c *lightningClient) GetInfo(ctx context.Context, in *GetInfoRequest, opts return out, nil } +func (c *lightningClient) GetRecoveryInfo(ctx context.Context, in *GetRecoveryInfoRequest, opts ...grpc.CallOption) (*GetRecoveryInfoResponse, error) { + out := new(GetRecoveryInfoResponse) + err := c.cc.Invoke(ctx, "/lnrpc.Lightning/GetRecoveryInfo", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *lightningClient) PendingChannels(ctx context.Context, in *PendingChannelsRequest, opts ...grpc.CallOption) (*PendingChannelsResponse, error) { out := new(PendingChannelsResponse) err := c.cc.Invoke(ctx, "/lnrpc.Lightning/PendingChannels", in, out, opts...) @@ -13525,6 +13634,11 @@ type LightningServer interface { //it's identity pubkey, alias, the chains it is connected to, and information //concerning the number of open+pending channels. GetInfo(context.Context, *GetInfoRequest) (*GetInfoResponse, error) + //* lncli: `getrecoveryinfo` + //GetRecoveryInfo returns information concerning the recovery mode including + //whether it's in a recovery mode, whether the recovery is finished, and the + //progress made so far. + GetRecoveryInfo(context.Context, *GetRecoveryInfoRequest) (*GetRecoveryInfoResponse, error) // lncli: `pendingchannels` //PendingChannels returns a list of all the channels that are currently //considered "pending". A channel is pending if it has finished the funding @@ -13828,6 +13942,9 @@ func (*UnimplementedLightningServer) SubscribePeerEvents(req *PeerEventSubscript func (*UnimplementedLightningServer) GetInfo(ctx context.Context, req *GetInfoRequest) (*GetInfoResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetInfo not implemented") } +func (*UnimplementedLightningServer) GetRecoveryInfo(ctx context.Context, req *GetRecoveryInfoRequest) (*GetRecoveryInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetRecoveryInfo not implemented") +} func (*UnimplementedLightningServer) PendingChannels(ctx context.Context, req *PendingChannelsRequest) (*PendingChannelsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method PendingChannels not implemented") } @@ -14244,6 +14361,24 @@ func _Lightning_GetInfo_Handler(srv interface{}, ctx context.Context, dec func(i return interceptor(ctx, in, info, handler) } +func _Lightning_GetRecoveryInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetRecoveryInfoRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(LightningServer).GetRecoveryInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/lnrpc.Lightning/GetRecoveryInfo", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(LightningServer).GetRecoveryInfo(ctx, req.(*GetRecoveryInfoRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _Lightning_PendingChannels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(PendingChannelsRequest) if err := dec(in); err != nil { @@ -15048,6 +15183,10 @@ var _Lightning_serviceDesc = grpc.ServiceDesc{ MethodName: "GetInfo", Handler: _Lightning_GetInfo_Handler, }, + { + MethodName: "GetRecoveryInfo", + Handler: _Lightning_GetRecoveryInfo_Handler, + }, { MethodName: "PendingChannels", Handler: _Lightning_PendingChannels_Handler, diff --git a/lnrpc/rpc.pb.gw.go b/lnrpc/rpc.pb.gw.go index 736b46e8..a9fb5431 100644 --- a/lnrpc/rpc.pb.gw.go +++ b/lnrpc/rpc.pb.gw.go @@ -519,6 +519,24 @@ func local_request_Lightning_GetInfo_0(ctx context.Context, marshaler runtime.Ma } +func request_Lightning_GetRecoveryInfo_0(ctx context.Context, marshaler runtime.Marshaler, client LightningClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetRecoveryInfoRequest + var metadata runtime.ServerMetadata + + msg, err := client.GetRecoveryInfo(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Lightning_GetRecoveryInfo_0(ctx context.Context, marshaler runtime.Marshaler, server LightningServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq GetRecoveryInfoRequest + var metadata runtime.ServerMetadata + + msg, err := server.GetRecoveryInfo(ctx, &protoReq) + return msg, metadata, err + +} + func request_Lightning_PendingChannels_0(ctx context.Context, marshaler runtime.Marshaler, client LightningClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq PendingChannelsRequest var metadata runtime.ServerMetadata @@ -2194,6 +2212,26 @@ func RegisterLightningHandlerServer(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("GET", pattern_Lightning_GetRecoveryInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Lightning_GetRecoveryInfo_0(rctx, inboundMarshaler, server, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Lightning_GetRecoveryInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Lightning_PendingChannels_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3197,6 +3235,26 @@ func RegisterLightningHandlerClient(ctx context.Context, mux *runtime.ServeMux, }) + mux.Handle("GET", pattern_Lightning_GetRecoveryInfo_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Lightning_GetRecoveryInfo_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Lightning_GetRecoveryInfo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + mux.Handle("GET", pattern_Lightning_PendingChannels_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() @@ -3953,6 +4011,8 @@ var ( pattern_Lightning_GetInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "getinfo"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Lightning_GetRecoveryInfo_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "getrecoveryinfo"}, "", runtime.AssumeColonVerbOpt(true))) + pattern_Lightning_PendingChannels_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "channels", "pending"}, "", runtime.AssumeColonVerbOpt(true))) pattern_Lightning_ListChannels_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v1", "channels"}, "", runtime.AssumeColonVerbOpt(true))) @@ -4059,6 +4119,8 @@ var ( forward_Lightning_GetInfo_0 = runtime.ForwardResponseMessage + forward_Lightning_GetRecoveryInfo_0 = runtime.ForwardResponseMessage + forward_Lightning_PendingChannels_0 = runtime.ForwardResponseMessage forward_Lightning_ListChannels_0 = runtime.ForwardResponseMessage diff --git a/lnrpc/rpc.proto b/lnrpc/rpc.proto index f69b768f..d9f49731 100644 --- a/lnrpc/rpc.proto +++ b/lnrpc/rpc.proto @@ -140,6 +140,14 @@ service Lightning { */ rpc GetInfo (GetInfoRequest) returns (GetInfoResponse); + /** lncli: `getrecoveryinfo` + GetRecoveryInfo returns information concerning the recovery mode including + whether it's in a recovery mode, whether the recovery is finished, and the + progress made so far. + */ + rpc GetRecoveryInfo (GetRecoveryInfoRequest) + returns (GetRecoveryInfoResponse); + // TODO(roasbeef): merge with below with bool? /* lncli: `pendingchannels` PendingChannels returns a list of all the channels that are currently @@ -1381,6 +1389,19 @@ message GetInfoResponse { map features = 19; } +message GetRecoveryInfoRequest { +} +message GetRecoveryInfoResponse { + // Whether the wallet is in recovery mode + bool recovery_mode = 1; + + // Whether the wallet recovery progress is finished + bool recovery_finished = 2; + + // The recovery progress, ranging from 0 to 1. + double progress = 3; +} + message Chain { // The blockchain the node is on (eg bitcoin, litecoin) string chain = 1; diff --git a/lnrpc/rpc.swagger.json b/lnrpc/rpc.swagger.json index cd36a870..e9111be4 100644 --- a/lnrpc/rpc.swagger.json +++ b/lnrpc/rpc.swagger.json @@ -829,6 +829,29 @@ ] } }, + "/v1/getrecoveryinfo": { + "get": { + "summary": "* lncli: `getrecoveryinfo`\nGetRecoveryInfo returns information concerning the recovery mode including\nwhether it's in a recovery mode, whether the recovery is finished, and the\nprogress made so far.", + "operationId": "GetRecoveryInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/lnrpcGetRecoveryInfoResponse" + } + }, + "default": { + "description": "An unexpected error response", + "schema": { + "$ref": "#/definitions/runtimeError" + } + } + }, + "tags": [ + "Lightning" + ] + } + }, "/v1/graph": { "get": { "summary": "lncli: `describegraph`\nDescribeGraph returns a description of the latest graph state from the\npoint of view of the node. The graph information is partitioned into two\ncomponents: all the nodes/vertexes, and all the edges that connect the\nvertexes themselves. As this is a directed graph, the edges also contain\nthe node directional specific routing policy which includes: the time lock\ndelta, fee information, etc.", @@ -3530,6 +3553,26 @@ } } }, + "lnrpcGetRecoveryInfoResponse": { + "type": "object", + "properties": { + "recovery_mode": { + "type": "boolean", + "format": "boolean", + "title": "Whether the wallet is in recovery mode" + }, + "recovery_finished": { + "type": "boolean", + "format": "boolean", + "title": "Whether the wallet recovery progress is finished" + }, + "progress": { + "type": "number", + "format": "double", + "description": "The recovery progress, ranging from 0 to 1." + } + } + }, "lnrpcGraphTopologyUpdate": { "type": "object", "properties": { diff --git a/lntest/itest/lnd_test.go b/lntest/itest/lnd_test.go index 930bcd97..f9245e9c 100644 --- a/lntest/itest/lnd_test.go +++ b/lntest/itest/lnd_test.go @@ -817,6 +817,105 @@ const ( AddrTypeNestedPubkeyHash = lnrpc.AddressType_NESTED_PUBKEY_HASH ) +// testGetRecoveryInfo checks whether lnd gives the right information about +// the wallet recovery process. +func testGetRecoveryInfo(net *lntest.NetworkHarness, t *harnessTest) { + ctxb := context.Background() + + // First, create a new node with strong passphrase and grab the mnemonic + // used for key derivation. This will bring up Carol with an empty + // wallet, and such that she is synced up. + password := []byte("The Magic Words are Squeamish Ossifrage") + carol, mnemonic, err := net.NewNodeWithSeed("Carol", nil, password) + if err != nil { + t.Fatalf("unable to create node with seed; %v", err) + } + + shutdownAndAssert(net, t, carol) + + checkInfo := func(expectedRecoveryMode, expectedRecoveryFinished bool, + expectedProgress float64, recoveryWindow int32) { + + // Restore Carol, passing in the password, mnemonic, and + // desired recovery window. + node, err := net.RestoreNodeWithSeed( + "Carol", nil, password, mnemonic, recoveryWindow, nil, + ) + if err != nil { + t.Fatalf("unable to restore node: %v", err) + } + + // Wait for Carol to sync to the chain. + _, minerHeight, err := net.Miner.Node.GetBestBlock() + if err != nil { + t.Fatalf("unable to get current blockheight %v", err) + } + ctxt, _ := context.WithTimeout(ctxb, defaultTimeout) + err = waitForNodeBlockHeight(ctxt, node, minerHeight) + if err != nil { + t.Fatalf("unable to sync to chain: %v", err) + } + + // Query carol for her current wallet recovery progress. + var ( + recoveryMode bool + recoveryFinished bool + progress float64 + ) + + err = wait.Predicate(func() bool { + // Verify that recovery info gives the right response. + req := &lnrpc.GetRecoveryInfoRequest{} + ctxt, _ := context.WithTimeout(ctxb, defaultTimeout) + resp, err := node.GetRecoveryInfo(ctxt, req) + if err != nil { + t.Fatalf("unable to query recovery info: %v", err) + } + + recoveryMode = resp.RecoveryMode + recoveryFinished = resp.RecoveryFinished + progress = resp.Progress + + if recoveryMode != expectedRecoveryMode || + recoveryFinished != expectedRecoveryFinished || + progress != expectedProgress { + return false + } + + return true + }, 15*time.Second) + if err != nil { + t.Fatalf("expected recovery mode to be %v, got %v, "+ + "expected recovery finished to be %v, got %v, "+ + "expected progress %v, got %v", + expectedRecoveryMode, recoveryMode, + expectedRecoveryFinished, recoveryFinished, + expectedProgress, progress, + ) + } + + // Lastly, shutdown this Carol so we can move on to the next + // restoration. + shutdownAndAssert(net, t, node) + } + + // Restore Carol with a recovery window of 0. Since it's not in recovery + // mode, the recovery info will give a response with recoveryMode=false, + // recoveryFinished=false, and progress=0 + checkInfo(false, false, 0, 0) + + // Change the recovery windown to be 1 to turn on recovery mode. Since the + // current chain height is the same as the birthday height, it should + // indicate the recovery process is finished. + checkInfo(true, true, 1, 1) + + // We now go ahead 5 blocks. Because the wallet's syncing process is + // controlled by a goroutine in the background, it will catch up quickly. + // This makes the recovery progress back to 1. + mineBlocks(t, net, 5, 0) + checkInfo(true, true, 1, 1) +} + // testOnchainFundRecovery checks lnd's ability to rescan for onchain outputs // when providing a valid aezeed that owns outputs on the chain. This test // performs multiple restorations using the same seed and various recovery @@ -14430,6 +14529,10 @@ var testsCases = []*testCase{ name: "sweep coins", test: testSweepAllCoins, }, + { + name: "recovery info", + test: testGetRecoveryInfo, + }, { name: "onchain fund recovery", test: testOnchainFundRecovery, diff --git a/lnwallet/btcwallet/btcwallet.go b/lnwallet/btcwallet/btcwallet.go index 41c9555a..94b41323 100644 --- a/lnwallet/btcwallet/btcwallet.go +++ b/lnwallet/btcwallet/btcwallet.go @@ -844,3 +844,83 @@ func (b *BtcWallet) IsSynced() (bool, int64, error) { return true, bestTimestamp, nil } + +// GetRecoveryInfo returns a boolean indicating whether the wallet is started +// in recovery mode. It also returns a float64, ranging from 0 to 1, +// representing the recovery progress made so far. +// +// This is a part of the WalletController interface. +func (b *BtcWallet) GetRecoveryInfo() (bool, float64, error) { + isRecoveryMode := true + progress := float64(0) + + // A zero value in RecoveryWindow indicates there is no trigger of + // recovery mode. + if b.cfg.RecoveryWindow == 0 { + isRecoveryMode = false + return isRecoveryMode, progress, nil + } + + // Query the wallet's birthday block height from db. + var birthdayBlock waddrmgr.BlockStamp + err := walletdb.View(b.db, func(tx walletdb.ReadTx) error { + var err error + addrmgrNs := tx.ReadBucket(waddrmgrNamespaceKey) + birthdayBlock, _, err = b.wallet.Manager.BirthdayBlock(addrmgrNs) + if err != nil { + return err + } + return nil + }) + + if err != nil { + // The wallet won't start until the backend is synced, thus the birthday + // block won't be set and this particular error will be returned. We'll + // catch this error and return a progress of 0 instead. + if waddrmgr.IsError(err, waddrmgr.ErrBirthdayBlockNotSet) { + return isRecoveryMode, progress, nil + } + + return isRecoveryMode, progress, err + } + + // Grab the best chain state the wallet is currently aware of. + syncState := b.wallet.Manager.SyncedTo() + + // Next, query the chain backend to grab the info about the tip of the + // main chain. + // + // NOTE: The actual recovery process is handled by the btcsuite/btcwallet. + // The process purposefully doesn't update the best height. It might create + // a small difference between the height queried here and the height used + // in the recovery process, ie, the bestHeight used here might be greater, + // showing the recovery being unfinished while it's actually done. However, + // during a wallet rescan after the recovery, the wallet's synced height + // will catch up and this won't be an issue. + _, bestHeight, err := b.cfg.ChainSource.GetBestBlock() + if err != nil { + return isRecoveryMode, progress, err + } + + // The birthday block height might be greater than the current synced height + // in a newly restored wallet, and might be greater than the chain tip if a + // rollback happens. In that case, we will return zero progress here. + if syncState.Height < birthdayBlock.Height || + bestHeight < birthdayBlock.Height { + return isRecoveryMode, progress, nil + } + + // progress is the ratio of the [number of blocks processed] over the [total + // number of blocks] needed in a recovery mode, ranging from 0 to 1, in + // which, + // - total number of blocks is the current chain's best height minus the + // wallet's birthday height plus 1. + // - number of blocks processed is the wallet's synced height minus its + // birthday height plus 1. + // - If the wallet is born very recently, the bestHeight can be equal to + // the birthdayBlock.Height, and it will recovery instantly. + progress = float64(syncState.Height-birthdayBlock.Height+1) / + float64(bestHeight-birthdayBlock.Height+1) + + return isRecoveryMode, progress, nil +} diff --git a/lnwallet/interface.go b/lnwallet/interface.go index dc5c336e..12d1e375 100644 --- a/lnwallet/interface.go +++ b/lnwallet/interface.go @@ -285,6 +285,11 @@ type WalletController interface { // known to the wallet, expressed in Unix epoch time IsSynced() (bool, int64, error) + // GetRecoveryInfo returns a boolean indicating whether the wallet is + // started in recovery mode. It also returns a float64 indicating the + // recovery progress made so far. + GetRecoveryInfo() (bool, float64, error) + // Start initializes the wallet, making any necessary connections, // starting up required goroutines etc. Start() error diff --git a/lnwallet/interface_test.go b/lnwallet/interface_test.go index d496b500..af9a4db0 100644 --- a/lnwallet/interface_test.go +++ b/lnwallet/interface_test.go @@ -45,6 +45,7 @@ import ( "github.com/lightningnetwork/lnd/lnwallet/chainfee" "github.com/lightningnetwork/lnd/lnwallet/chanfunding" "github.com/lightningnetwork/lnd/lnwire" + "github.com/stretchr/testify/require" ) var ( @@ -364,6 +365,51 @@ func createTestWallet(tempTestDir string, miningNode *rpctest.Harness, return wallet, nil } +func testGetRecoveryInfo(miner *rpctest.Harness, + alice, bob *lnwallet.LightningWallet, t *testing.T) { + + // alice's wallet is in recovery mode + expectedRecoveryMode := true + expectedProgress := float64(1) + + isRecoveryMode, progress, err := alice.GetRecoveryInfo() + require.NoError(t, err, "unable to get alice's recovery info") + + require.Equal(t, + expectedRecoveryMode, isRecoveryMode, "recovery mode incorrect", + ) + require.Equal(t, expectedProgress, progress, "progress incorrect") + + // Generate 5 blocks and check the recovery process again. + const numBlocksMined = 5 + _, err = miner.Node.Generate(numBlocksMined) + require.NoError(t, err, "unable to mine blocks") + + // Check the recovery process. Once synced, the progress should be 1. + err = waitForWalletSync(miner, alice) + require.NoError(t, err, "Couldn't sync Alice's wallet") + + isRecoveryMode, progress, err = alice.GetRecoveryInfo() + require.NoError(t, err, "unable to get alice's recovery info") + + require.Equal(t, + expectedRecoveryMode, isRecoveryMode, "recovery mode incorrect", + ) + require.Equal(t, expectedProgress, progress, "progress incorrect") + + // bob's wallet is not in recovery mode + expectedRecoveryMode = false + expectedProgress = float64(0) + + isRecoveryMode, progress, err = bob.GetRecoveryInfo() + require.NoError(t, err, "unable to get bob's recovery info") + + require.Equal(t, + expectedRecoveryMode, isRecoveryMode, "recovery mode incorrect", + ) + require.Equal(t, expectedProgress, progress, "progress incorrect") +} + func testDualFundingReservationWorkflow(miner *rpctest.Harness, alice, bob *lnwallet.LightningWallet, t *testing.T) { @@ -2712,6 +2758,10 @@ var walletTests = []walletTestCase{ name: "test sign create account", test: testSignOutputCreateAccount, }, + { + name: "test get recovery info", + test: testGetRecoveryInfo, + }, } func clearWalletStates(a, b *lnwallet.LightningWallet) error { @@ -3177,6 +3227,8 @@ func runTests(t *testing.T, walletDriver *lnwallet.WalletDriver, NetParams: netParams, ChainSource: aliceClient, CoinType: keychain.CoinTypeTestnet, + // wallet starts in recovery mode + RecoveryWindow: 2, } aliceWalletController, err = walletDriver.New(aliceWalletConfig) if err != nil { @@ -3200,6 +3252,8 @@ func runTests(t *testing.T, walletDriver *lnwallet.WalletDriver, NetParams: netParams, ChainSource: bobClient, CoinType: keychain.CoinTypeTestnet, + // wallet starts without recovery mode + RecoveryWindow: 0, } bobWalletController, err = walletDriver.New(bobWalletConfig) if err != nil { diff --git a/mock.go b/mock.go index fc86d1b0..c2b7dd6b 100644 --- a/mock.go +++ b/mock.go @@ -349,6 +349,9 @@ func (*mockWalletController) SubscribeTransactions() (lnwallet.TransactionSubscr func (*mockWalletController) IsSynced() (bool, int64, error) { return true, int64(0), nil } +func (*mockWalletController) GetRecoveryInfo() (bool, float64, error) { + return true, float64(1), nil +} func (*mockWalletController) Start() error { return nil } diff --git a/rpcserver.go b/rpcserver.go index 2607fd71..62c43448 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -261,6 +261,10 @@ func mainRPCServerPermissions() map[string][]bakery.Op { Entity: "info", Action: "read", }}, + "/lnrpc.Lightning/GetRecoveryInfo": {{ + Entity: "info", + Action: "read", + }}, "/lnrpc.Lightning/ListPeers": {{ Entity: "peers", Action: "read", @@ -2481,6 +2485,27 @@ func (r *rpcServer) GetInfo(ctx context.Context, }, nil } +// GetRecoveryInfo returns a boolean indicating whether the wallet is started +// in recovery mode, whether the recovery is finished, and the progress made +// so far. +func (r *rpcServer) GetRecoveryInfo(ctx context.Context, + in *lnrpc.GetRecoveryInfoRequest) (*lnrpc.GetRecoveryInfoResponse, error) { + + isRecoveryMode, progress, err := r.server.cc.wallet.GetRecoveryInfo() + if err != nil { + return nil, fmt.Errorf("unable to get wallet recovery info: %v", err) + } + + rpcsLog.Debugf("[getrecoveryinfo] is recovery mode=%v, progress=%v", + isRecoveryMode, progress) + + return &lnrpc.GetRecoveryInfoResponse{ + RecoveryMode: isRecoveryMode, + RecoveryFinished: progress == 1, + Progress: progress, + }, nil +} + // ListPeers returns a verbose listing of all currently active peers. func (r *rpcServer) ListPeers(ctx context.Context, in *lnrpc.ListPeersRequest) (*lnrpc.ListPeersResponse, error) {