poolrpc: add new calls for Bid node rating system, and node rating queries

This commit is contained in:
Olaoluwa Osuntokun 2020-09-18 17:46:17 -07:00
parent 273fb46088
commit 4b41c323c7
7 changed files with 1031 additions and 400 deletions

View file

@ -104,6 +104,43 @@ func (AuctionAccountState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_f3883418d94ca37f, []int{1}
}
type NodeTier int32
const (
// The default node tier. This value will be determined at run-time by the
// current order version.
NodeTier_TIER_DEFAULT NodeTier = 0
// Tier 0, bid with this tier are opting out of the smaller "higher
// quality" pool of nodes to match their bids. Nodes in this tier are
// considered to have "no rating".
NodeTier_TIER_0 NodeTier = 1
// Tier 1, the "base" node tier. Nodes in this tier are shown to have a
// higher degree of up time and route-ability compared to the rest of the
// nodes in the network. This is the current default node tier when
// submitting bid orders.
NodeTier_TIER_1 NodeTier = 2
)
var NodeTier_name = map[int32]string{
0: "TIER_DEFAULT",
1: "TIER_0",
2: "TIER_1",
}
var NodeTier_value = map[string]int32{
"TIER_DEFAULT": 0,
"TIER_0": 1,
"TIER_1": 2,
}
func (x NodeTier) String() string {
return proto.EnumName(NodeTier_name, int32(x))
}
func (NodeTier) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_f3883418d94ca37f, []int{2}
}
type OrderState int32
const (
@ -141,7 +178,7 @@ func (x OrderState) String() string {
}
func (OrderState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_f3883418d94ca37f, []int{2}
return fileDescriptor_f3883418d94ca37f, []int{3}
}
type OrderMatchReject_RejectReason int32
@ -2465,7 +2502,11 @@ type ServerBid struct {
//
//The version of the order format that is used. Will be increased once new
//features are added.
Version uint32 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"`
Version uint32 `protobuf:"varint,4,opt,name=version,proto3" json:"version,omitempty"`
//
//The minium node tier this order should be matched with. Only asks backed by
//a node this tier or higher will be eligible for matching with this bid.
MinNodeTier NodeTier `protobuf:"varint,5,opt,name=min_node_tier,json=minNodeTier,proto3,enum=poolrpc.NodeTier" json:"min_node_tier,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -2517,6 +2558,13 @@ func (m *ServerBid) GetVersion() uint32 {
return 0
}
func (m *ServerBid) GetMinNodeTier() NodeTier {
if m != nil {
return m.MinNodeTier
}
return NodeTier_TIER_DEFAULT
}
type ServerAsk struct {
//
//The common fields shared between both ask and bid order types.
@ -3775,9 +3823,139 @@ func (m *BatchSnapshotResponse) GetBatchTx() []byte {
return nil
}
type ServerNodeRatingRequest struct {
// The target node to obtain ratings information for.
NodePubkeys [][]byte `protobuf:"bytes,1,rep,name=node_pubkeys,json=nodePubkeys,proto3" json:"node_pubkeys,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ServerNodeRatingRequest) Reset() { *m = ServerNodeRatingRequest{} }
func (m *ServerNodeRatingRequest) String() string { return proto.CompactTextString(m) }
func (*ServerNodeRatingRequest) ProtoMessage() {}
func (*ServerNodeRatingRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_f3883418d94ca37f, []int{52}
}
func (m *ServerNodeRatingRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServerNodeRatingRequest.Unmarshal(m, b)
}
func (m *ServerNodeRatingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ServerNodeRatingRequest.Marshal(b, m, deterministic)
}
func (m *ServerNodeRatingRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ServerNodeRatingRequest.Merge(m, src)
}
func (m *ServerNodeRatingRequest) XXX_Size() int {
return xxx_messageInfo_ServerNodeRatingRequest.Size(m)
}
func (m *ServerNodeRatingRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ServerNodeRatingRequest.DiscardUnknown(m)
}
var xxx_messageInfo_ServerNodeRatingRequest proto.InternalMessageInfo
func (m *ServerNodeRatingRequest) GetNodePubkeys() [][]byte {
if m != nil {
return m.NodePubkeys
}
return nil
}
type NodeRating struct {
// The pubkey for the node these ratings belong to.
NodePubkey []byte `protobuf:"bytes,1,opt,name=node_pubkey,json=nodePubkey,proto3" json:"node_pubkey,omitempty"`
// The tier of the target node.
NodeTier NodeTier `protobuf:"varint,2,opt,name=node_tier,json=nodeTier,proto3,enum=poolrpc.NodeTier" json:"node_tier,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *NodeRating) Reset() { *m = NodeRating{} }
func (m *NodeRating) String() string { return proto.CompactTextString(m) }
func (*NodeRating) ProtoMessage() {}
func (*NodeRating) Descriptor() ([]byte, []int) {
return fileDescriptor_f3883418d94ca37f, []int{53}
}
func (m *NodeRating) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeRating.Unmarshal(m, b)
}
func (m *NodeRating) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_NodeRating.Marshal(b, m, deterministic)
}
func (m *NodeRating) XXX_Merge(src proto.Message) {
xxx_messageInfo_NodeRating.Merge(m, src)
}
func (m *NodeRating) XXX_Size() int {
return xxx_messageInfo_NodeRating.Size(m)
}
func (m *NodeRating) XXX_DiscardUnknown() {
xxx_messageInfo_NodeRating.DiscardUnknown(m)
}
var xxx_messageInfo_NodeRating proto.InternalMessageInfo
func (m *NodeRating) GetNodePubkey() []byte {
if m != nil {
return m.NodePubkey
}
return nil
}
func (m *NodeRating) GetNodeTier() NodeTier {
if m != nil {
return m.NodeTier
}
return NodeTier_TIER_DEFAULT
}
type ServerNodeRatingResponse struct {
// A series of node ratings for each of the queried nodes.
NodeRatings []*NodeRating `protobuf:"bytes,1,rep,name=node_ratings,json=nodeRatings,proto3" json:"node_ratings,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *ServerNodeRatingResponse) Reset() { *m = ServerNodeRatingResponse{} }
func (m *ServerNodeRatingResponse) String() string { return proto.CompactTextString(m) }
func (*ServerNodeRatingResponse) ProtoMessage() {}
func (*ServerNodeRatingResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_f3883418d94ca37f, []int{54}
}
func (m *ServerNodeRatingResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ServerNodeRatingResponse.Unmarshal(m, b)
}
func (m *ServerNodeRatingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_ServerNodeRatingResponse.Marshal(b, m, deterministic)
}
func (m *ServerNodeRatingResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ServerNodeRatingResponse.Merge(m, src)
}
func (m *ServerNodeRatingResponse) XXX_Size() int {
return xxx_messageInfo_ServerNodeRatingResponse.Size(m)
}
func (m *ServerNodeRatingResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ServerNodeRatingResponse.DiscardUnknown(m)
}
var xxx_messageInfo_ServerNodeRatingResponse proto.InternalMessageInfo
func (m *ServerNodeRatingResponse) GetNodeRatings() []*NodeRating {
if m != nil {
return m.NodeRatings
}
return nil
}
func init() {
proto.RegisterEnum("poolrpc.ChannelType", ChannelType_name, ChannelType_value)
proto.RegisterEnum("poolrpc.AuctionAccountState", AuctionAccountState_name, AuctionAccountState_value)
proto.RegisterEnum("poolrpc.NodeTier", NodeTier_name, NodeTier_value)
proto.RegisterEnum("poolrpc.OrderState", OrderState_name, OrderState_value)
proto.RegisterEnum("poolrpc.OrderMatchReject_RejectReason", OrderMatchReject_RejectReason_name, OrderMatchReject_RejectReason_value)
proto.RegisterEnum("poolrpc.OrderReject_OrderRejectReason", OrderReject_OrderRejectReason_name, OrderReject_OrderRejectReason_value)
@ -3843,229 +4021,242 @@ func init() {
proto.RegisterType((*MatchedOrderSnapshot)(nil), "poolrpc.MatchedOrderSnapshot")
proto.RegisterType((*BatchSnapshotRequest)(nil), "poolrpc.BatchSnapshotRequest")
proto.RegisterType((*BatchSnapshotResponse)(nil), "poolrpc.BatchSnapshotResponse")
proto.RegisterType((*ServerNodeRatingRequest)(nil), "poolrpc.ServerNodeRatingRequest")
proto.RegisterType((*NodeRating)(nil), "poolrpc.NodeRating")
proto.RegisterType((*ServerNodeRatingResponse)(nil), "poolrpc.ServerNodeRatingResponse")
}
func init() { proto.RegisterFile("auctioneer.proto", fileDescriptor_f3883418d94ca37f) }
var fileDescriptor_f3883418d94ca37f = []byte{
// 3465 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3a, 0x4b, 0x73, 0xdb, 0xd6,
0xb9, 0xe2, 0x43, 0x22, 0xf9, 0xf1, 0x21, 0xe8, 0x48, 0xb2, 0x29, 0xda, 0x72, 0x6c, 0xe4, 0x71,
0x1d, 0x27, 0x96, 0x13, 0x39, 0xd7, 0x37, 0x0f, 0xdf, 0xdc, 0x01, 0x49, 0x28, 0xa4, 0x4d, 0x91,
0x0c, 0x40, 0xda, 0x71, 0x36, 0x18, 0x90, 0x3c, 0xa2, 0x70, 0x45, 0x02, 0x2c, 0x00, 0xda, 0x52,
0x17, 0x59, 0x74, 0xd7, 0x55, 0x57, 0x9d, 0x2e, 0x3a, 0x5d, 0x74, 0xa6, 0xfb, 0x76, 0xda, 0x4d,
0x97, 0x9d, 0x2e, 0xbb, 0xe8, 0x4f, 0xe8, 0x63, 0xa6, 0x7f, 0xa2, 0x33, 0x5d, 0x74, 0xce, 0x03,
0x20, 0x00, 0x82, 0x92, 0x9b, 0xb6, 0x33, 0xdd, 0x48, 0xc4, 0xf7, 0x38, 0xe7, 0xfb, 0xce, 0xf9,
0xde, 0x00, 0x08, 0xfa, 0x7c, 0xe8, 0x1a, 0x96, 0x89, 0xb1, 0x7d, 0x30, 0xb3, 0x2d, 0xd7, 0x42,
0x99, 0x99, 0x65, 0x4d, 0xec, 0xd9, 0x50, 0xfc, 0x5e, 0x02, 0x76, 0x15, 0xec, 0x60, 0xfb, 0x25,
0x96, 0x86, 0x43, 0x6b, 0x6e, 0xba, 0x0a, 0xfe, 0xce, 0x1c, 0x3b, 0x2e, 0x7a, 0x13, 0x8a, 0x3a,
0x83, 0x68, 0x2f, 0xf5, 0xc9, 0x1c, 0x97, 0x13, 0xb7, 0x13, 0x77, 0xd3, 0x4a, 0x81, 0x03, 0x9f,
0x11, 0x18, 0x7a, 0x1b, 0x4a, 0x1e, 0x11, 0x3e, 0x9f, 0x19, 0xf6, 0x45, 0x39, 0x79, 0x3b, 0x71,
0xb7, 0xa8, 0x78, 0xac, 0x32, 0x05, 0xa2, 0x7d, 0x00, 0xd7, 0xd6, 0x47, 0xd8, 0xd6, 0xce, 0xf0,
0x45, 0x39, 0x75, 0x3b, 0x71, 0xb7, 0xa0, 0xe4, 0x18, 0xe4, 0x29, 0xbe, 0x10, 0xcf, 0xe0, 0x5a,
0x54, 0x06, 0x67, 0x66, 0x99, 0x0e, 0x5b, 0xdf, 0x97, 0x9d, 0x32, 0x27, 0x28, 0x73, 0x71, 0x01,
0x7d, 0x8a, 0x2f, 0xd0, 0x3d, 0xd8, 0x32, 0x4c, 0xc3, 0x35, 0xf4, 0x89, 0x36, 0xd0, 0xdd, 0xe1,
0x29, 0xa5, 0x4c, 0x52, 0xca, 0x4d, 0x8e, 0xa8, 0x12, 0x38, 0xd9, 0xec, 0x2f, 0x09, 0x28, 0xab,
0x64, 0x2f, 0xbb, 0x69, 0x1a, 0x6e, 0x44, 0xe9, 0x47, 0x0b, 0xa5, 0x67, 0x96, 0x61, 0xba, 0x74,
0xbb, 0xfc, 0xe1, 0xd6, 0x01, 0x3f, 0xaf, 0x83, 0xce, 0xdc, 0xed, 0x12, 0x84, 0x7f, 0x0e, 0xf4,
0x29, 0x78, 0x0e, 0xce, 0xd0, 0x36, 0x66, 0x2e, 0xdf, 0xdd, 0x5b, 0x4d, 0xa5, 0xc0, 0xe5, 0x33,
0x4d, 0xbd, 0xd6, 0x99, 0xa6, 0xaf, 0x3e, 0xd3, 0xf5, 0xe8, 0x99, 0xde, 0x80, 0xbd, 0x18, 0x2d,
0xd9, 0xb1, 0x8a, 0x73, 0xef, 0x08, 0xd4, 0xf9, 0x60, 0x6a, 0xb8, 0x1d, 0x7b, 0x84, 0x6d, 0xef,
0x08, 0xde, 0x81, 0x94, 0xee, 0x9c, 0x71, 0xc5, 0x91, 0xaf, 0x38, 0xa3, 0x97, 0x9c, 0xb3, 0xc6,
0x9a, 0x42, 0x08, 0x08, 0xdd, 0xc0, 0x18, 0x51, 0x3d, 0x97, 0xe9, 0xaa, 0xc6, 0x88, 0xd0, 0x0d,
0x8c, 0x51, 0x35, 0x07, 0x99, 0x11, 0x76, 0x75, 0x63, 0xe2, 0x10, 0x63, 0xdb, 0x8b, 0xd9, 0x97,
0xdf, 0xf5, 0x63, 0x28, 0x1a, 0xe6, 0x4b, 0x7d, 0x62, 0x8c, 0x34, 0x8b, 0x20, 0xb8, 0x08, 0xbb,
0xfe, 0xd2, 0x4d, 0x86, 0xa5, 0x5c, 0x8d, 0x35, 0xa5, 0x60, 0x04, 0x9e, 0xd1, 0x4d, 0xc8, 0xea,
0xc3, 0x21, 0x9e, 0xb9, 0x98, 0xc9, 0x94, 0x6d, 0xac, 0x29, 0x3e, 0x24, 0x28, 0xc4, 0x67, 0x9e,
0xee, 0x35, 0xdd, 0x1c, 0xe2, 0x49, 0x48, 0xf7, 0x37, 0x20, 0x4f, 0xb7, 0xd6, 0x4c, 0xcb, 0x1c,
0x62, 0x6e, 0x6b, 0x40, 0x41, 0x6d, 0x02, 0x59, 0x9c, 0x6a, 0x88, 0x99, 0x9f, 0xea, 0x9f, 0x92,
0xb0, 0x53, 0x9b, 0x18, 0xd8, 0x74, 0x25, 0x66, 0x9d, 0xc7, 0xd8, 0x71, 0xf4, 0x31, 0x46, 0x1f,
0xc1, 0xc6, 0xd0, 0x9a, 0x4e, 0x0d, 0xcf, 0x9c, 0x2a, 0xbe, 0x4a, 0xfc, 0x62, 0x6a, 0x14, 0x3b,
0xc5, 0xa6, 0xdb, 0x58, 0x53, 0x38, 0x2d, 0x7a, 0x0c, 0x39, 0x67, 0x3e, 0x20, 0xe6, 0x34, 0xc0,
0xfc, 0x98, 0x6f, 0x46, 0x19, 0x55, 0x46, 0x30, 0x23, 0xbb, 0x35, 0xd6, 0x94, 0x05, 0x03, 0x7a,
0x08, 0x1b, 0x4c, 0x7b, 0x6a, 0x63, 0xf9, 0xc3, 0xbd, 0x85, 0x09, 0x13, 0xa1, 0x8f, 0x89, 0x3b,
0x48, 0x94, 0x80, 0x6c, 0xc9, 0x48, 0x09, 0x93, 0x8d, 0xff, 0x1f, 0x0f, 0x5d, 0x6a, 0x72, 0xf1,
0x4c, 0x0a, 0x25, 0x20, 0x4c, 0x8c, 0x14, 0xdd, 0x87, 0xb4, 0x63, 0x8c, 0x4d, 0x6a, 0x82, 0xf9,
0xc3, 0xeb, 0x31, 0x2c, 0xaa, 0x31, 0x26, 0xd2, 0x51, 0x32, 0xf4, 0x11, 0x64, 0x6c, 0x3c, 0xb4,
0x5e, 0x62, 0xbb, 0xbc, 0x41, 0x39, 0xca, 0x51, 0xa5, 0x14, 0x86, 0xbe, 0x68, 0xac, 0x29, 0x1e,
0x69, 0x75, 0x1d, 0x52, 0x53, 0x67, 0x2c, 0xbe, 0x80, 0xad, 0xa5, 0x23, 0x23, 0xb7, 0xc6, 0x8e,
0x4c, 0x3b, 0xd5, 0x9d, 0x53, 0xef, 0xd6, 0x18, 0xa8, 0xa1, 0x3b, 0xa7, 0xc4, 0xed, 0x58, 0x58,
0x78, 0x89, 0x6d, 0xc7, 0xb0, 0x4c, 0x1e, 0xa4, 0x0a, 0x14, 0xf8, 0x8c, 0xc1, 0x44, 0x1b, 0xb6,
0x63, 0x0e, 0x35, 0xe2, 0x66, 0x89, 0x88, 0x9b, 0xa1, 0x3b, 0x50, 0xe0, 0x7b, 0x33, 0x93, 0x61,
0x6e, 0xcf, 0xe5, 0xa1, 0x36, 0x83, 0xf6, 0x20, 0xab, 0xcf, 0xdd, 0x53, 0xcd, 0x31, 0xc6, 0x3c,
0xf4, 0x65, 0xc8, 0xb3, 0x6a, 0x8c, 0xc5, 0xfb, 0x20, 0x44, 0x6f, 0x83, 0x90, 0x33, 0x61, 0x8d,
0x11, 0xdf, 0x2e, 0x43, 0x9f, 0x9b, 0x23, 0xf1, 0x67, 0xa9, 0x20, 0x3d, 0xbb, 0x88, 0x4b, 0xe8,
0xd1, 0x35, 0x72, 0x9d, 0xba, 0xc3, 0x15, 0xce, 0x29, 0xfc, 0x09, 0x7d, 0x01, 0x79, 0xf6, 0x4b,
0x1b, 0x5a, 0x23, 0x16, 0x84, 0x4a, 0x87, 0xef, 0xac, 0xbc, 0xeb, 0x03, 0xf6, 0x4f, 0xa1, 0x2c,
0x0a, 0x30, 0xd6, 0x9a, 0x35, 0xc2, 0xe8, 0x19, 0x6c, 0x32, 0x23, 0xc0, 0xdc, 0x67, 0x9d, 0x72,
0xfa, 0x76, 0xea, 0x6e, 0xfe, 0xf0, 0xfe, 0x55, 0x8b, 0x61, 0xe6, 0xb6, 0x8e, 0x6c, 0xba, 0xf6,
0x85, 0x52, 0xb2, 0x43, 0xc0, 0xca, 0x73, 0xd8, 0x8e, 0x21, 0x43, 0x02, 0xa4, 0xbc, 0x4b, 0xc8,
0x29, 0xe4, 0x27, 0xba, 0x07, 0xeb, 0x2c, 0x90, 0x32, 0xff, 0xd8, 0x09, 0x6f, 0xcb, 0xe5, 0x66,
0x24, 0x9f, 0x26, 0x3f, 0x4e, 0x88, 0x43, 0x28, 0x04, 0x95, 0x41, 0x79, 0xc8, 0xf4, 0xdb, 0x4f,
0xdb, 0x9d, 0xe7, 0x6d, 0x61, 0x0d, 0x5d, 0x03, 0xa4, 0xca, 0xca, 0x33, 0x59, 0xd1, 0x8e, 0x9b,
0x6a, 0x55, 0x6e, 0x48, 0xcf, 0x9a, 0x1d, 0x45, 0x48, 0xa0, 0x0a, 0x5c, 0xab, 0x4a, 0xbd, 0x5a,
0x43, 0x7b, 0x26, 0x2b, 0x6a, 0xb3, 0xd3, 0x26, 0xe8, 0x63, 0x02, 0x10, 0x92, 0x08, 0x41, 0xa9,
0x2b, 0x29, 0xbd, 0xa6, 0xd4, 0xd2, 0x14, 0xf9, 0x89, 0x5c, 0xeb, 0x09, 0x29, 0xf1, 0x57, 0x09,
0xc8, 0x07, 0xf6, 0x0f, 0x5c, 0x43, 0xe2, 0xb2, 0x6b, 0x48, 0xc6, 0x5d, 0x03, 0x3f, 0xb4, 0xa0,
0x3a, 0x4b, 0xd7, 0x20, 0xd6, 0x60, 0x6b, 0x89, 0x80, 0x48, 0x56, 0xef, 0x77, 0x5b, 0xcd, 0x9a,
0xd4, 0x93, 0xb5, 0xae, 0x2c, 0x2b, 0xc2, 0x1a, 0xd1, 0xa4, 0xd6, 0x90, 0xda, 0x6d, 0xb9, 0xa5,
0x1d, 0xf5, 0xdb, 0xf5, 0x66, 0xfb, 0x0b, 0xed, 0x48, 0x6a, 0xb6, 0xe4, 0xba, 0x90, 0x10, 0xff,
0x9a, 0x80, 0x7c, 0xed, 0x54, 0x37, 0x4d, 0x3c, 0x69, 0x9a, 0x27, 0x16, 0xba, 0x0b, 0x69, 0xf7,
0x62, 0xc6, 0x82, 0x60, 0x29, 0x70, 0xb2, 0x9c, 0xa6, 0x77, 0x31, 0xc3, 0x0a, 0xa5, 0x40, 0x6f,
0x41, 0x69, 0x62, 0x0d, 0xf5, 0x89, 0x66, 0x5a, 0x23, 0x1c, 0x48, 0xbd, 0x05, 0x0a, 0x6d, 0x5b,
0x23, 0x4c, 0x3c, 0xe5, 0x1d, 0x62, 0x2b, 0x53, 0xcb, 0xc5, 0x0b, 0x32, 0xe6, 0x0d, 0x45, 0x06,
0xf6, 0xe8, 0xfe, 0x07, 0xca, 0x6c, 0xb5, 0x99, 0x7e, 0x41, 0xdc, 0x5b, 0x1b, 0xe8, 0x0e, 0xe6,
0xd9, 0x38, 0x4d, 0x19, 0x76, 0x29, 0xbe, 0xcb, 0xd0, 0x55, 0xdd, 0xc1, 0x2c, 0x07, 0x7f, 0x02,
0x7b, 0x7c, 0x83, 0x18, 0x4e, 0x96, 0x1f, 0xaf, 0x31, 0x82, 0x28, 0xab, 0xf8, 0xc7, 0x24, 0x94,
0xc2, 0xe1, 0xea, 0x32, 0xb7, 0x7a, 0x0a, 0x05, 0x3f, 0xd9, 0x1b, 0x63, 0xa7, 0x9c, 0xa4, 0x26,
0x7f, 0x77, 0x45, 0xe0, 0xf3, 0x43, 0xb5, 0x31, 0xe6, 0xd6, 0x9e, 0xd7, 0x17, 0x10, 0xd4, 0x86,
0xe2, 0x90, 0x9d, 0xa8, 0x66, 0x98, 0x27, 0x96, 0x53, 0x4e, 0xd1, 0xd5, 0xde, 0x5d, 0xb5, 0x5a,
0xe0, 0x8a, 0xf8, 0x72, 0x85, 0x61, 0x00, 0x54, 0xf9, 0x1c, 0x84, 0xe8, 0x86, 0x31, 0x7e, 0xb3,
0x13, 0xf4, 0x9b, 0x42, 0xc0, 0x43, 0x2a, 0x7d, 0xd8, 0x5a, 0xda, 0xe2, 0x1f, 0x71, 0xbc, 0x00,
0x73, 0xd0, 0xf1, 0x3e, 0x80, 0xcd, 0x48, 0x74, 0xbf, 0x22, 0xb2, 0x8a, 0x3f, 0x4e, 0xc1, 0x0e,
0x2f, 0x3a, 0xc2, 0xd9, 0xf4, 0x63, 0xc8, 0x0d, 0x4f, 0xf5, 0xc9, 0x04, 0x9b, 0x63, 0xcc, 0x13,
0x6a, 0x39, 0x52, 0x7e, 0xd4, 0x3c, 0x3c, 0xc9, 0x89, 0x3e, 0x31, 0xfa, 0x6f, 0xc8, 0x38, 0xf3,
0xe1, 0x10, 0x3b, 0x0e, 0x17, 0x7b, 0x91, 0xdf, 0x54, 0x2f, 0x71, 0xaa, 0x8c, 0x80, 0xe4, 0x1e,
0x4e, 0x8b, 0x1e, 0xc0, 0x3a, 0xb6, 0x6d, 0xcb, 0xe6, 0x99, 0xf4, 0xfa, 0x32, 0x93, 0x4c, 0xd0,
0x8d, 0x35, 0x85, 0xd1, 0xa1, 0x47, 0x90, 0x99, 0xd9, 0x78, 0xa6, 0xdb, 0x98, 0xe7, 0xd1, 0x4a,
0xcc, 0x6d, 0x76, 0x19, 0x05, 0xd9, 0x88, 0x13, 0xa3, 0xc3, 0x50, 0x26, 0xbd, 0xb9, 0xc2, 0x04,
0xaa, 0x78, 0x6c, 0x2c, 0xd2, 0xe9, 0x27, 0x90, 0x3d, 0x31, 0x4c, 0x7d, 0x62, 0x7c, 0x17, 0xf3,
0x7c, 0x7a, 0x23, 0x86, 0xef, 0x88, 0x93, 0x90, 0xa2, 0xc8, 0x23, 0x47, 0x0f, 0x21, 0xc3, 0x2d,
0xb1, 0x9c, 0x89, 0x68, 0xc6, 0x8f, 0x9c, 0x5f, 0x19, 0x91, 0x91, 0x53, 0x7a, 0x89, 0xb8, 0x0b,
0x9b, 0x91, 0xa3, 0x46, 0x37, 0xa3, 0xf7, 0x52, 0x08, 0x9e, 0x7d, 0x24, 0x49, 0x27, 0xa3, 0x49,
0x5a, 0xfc, 0x10, 0x84, 0xe8, 0x25, 0x5c, 0x65, 0x22, 0xbf, 0x48, 0xf3, 0xc0, 0x17, 0x3c, 0x50,
0xd4, 0x83, 0xd2, 0x94, 0x3c, 0x2f, 0x72, 0x52, 0x62, 0x65, 0x4e, 0xe2, 0x3c, 0x07, 0xc7, 0x8c,
0x21, 0x98, 0x93, 0x8a, 0xd3, 0x20, 0x0c, 0x1d, 0xc0, 0xf6, 0x70, 0x82, 0x75, 0xdb, 0x30, 0xc7,
0xda, 0xcc, 0x36, 0x86, 0x58, 0xb3, 0x75, 0x17, 0xf3, 0x4a, 0x62, 0xcb, 0x43, 0x75, 0x09, 0x46,
0xd1, 0x5d, 0x8c, 0xfe, 0x0f, 0x84, 0xe1, 0xa9, 0x6e, 0x8f, 0xf1, 0x48, 0xe3, 0x47, 0xe7, 0xb9,
0xf6, 0x4e, 0xb4, 0xde, 0xa9, 0x1b, 0x27, 0x27, 0xca, 0x26, 0xa7, 0xe6, 0x30, 0x07, 0x7d, 0x0a,
0x45, 0x7c, 0x8e, 0x87, 0x73, 0x72, 0x0f, 0xda, 0x09, 0xf6, 0x4c, 0x69, 0x51, 0x0e, 0xcb, 0x1e,
0xf6, 0x08, 0x63, 0xa5, 0x80, 0x03, 0x4f, 0xe8, 0x3d, 0xd8, 0x62, 0xc1, 0xcb, 0xb5, 0x75, 0xd3,
0xd1, 0xe9, 0x5d, 0xf2, 0x10, 0x28, 0x50, 0x44, 0x6f, 0x01, 0x47, 0xef, 0xc3, 0xf6, 0x09, 0x66,
0xea, 0x68, 0x8e, 0xee, 0x6a, 0x33, 0x72, 0xdc, 0xaf, 0xa8, 0x31, 0xa5, 0x95, 0xcd, 0x13, 0x4c,
0xf5, 0x51, 0x75, 0xb7, 0x8b, 0xed, 0xa7, 0xaf, 0x48, 0xb0, 0xa7, 0xd4, 0x78, 0xc0, 0xe9, 0xa9,
0xed, 0xa4, 0x95, 0x02, 0x21, 0xa4, 0x40, 0x55, 0x0f, 0x17, 0x25, 0xd9, 0x70, 0xf4, 0x5c, 0x2a,
0xc6, 0x72, 0xcb, 0xc5, 0x58, 0xe5, 0x39, 0xa0, 0xe5, 0x2b, 0x89, 0x09, 0x43, 0xef, 0x85, 0xc3,
0xd0, 0xe2, 0x70, 0x82, 0xdc, 0xe1, 0x38, 0xb4, 0x1d, 0xe3, 0x4d, 0x97, 0x15, 0x5d, 0x16, 0xa0,
0x65, 0x3f, 0xba, 0x2c, 0x3d, 0xec, 0x03, 0xf0, 0xc3, 0x3f, 0xe7, 0xfd, 0x51, 0x41, 0xc9, 0xb1,
0x53, 0x3f, 0x37, 0x46, 0xc4, 0x11, 0x4e, 0xb1, 0x31, 0x3e, 0x75, 0xb5, 0x53, 0x92, 0x98, 0x52,
0x54, 0x7b, 0x60, 0xa0, 0x06, 0x49, 0x46, 0xbf, 0x4e, 0x42, 0x29, 0x1c, 0x59, 0x48, 0xb8, 0x66,
0x11, 0x88, 0xa9, 0xce, 0xc3, 0xcc, 0x63, 0x00, 0xfa, 0x23, 0x58, 0x3e, 0xec, 0xaf, 0x08, 0x4e,
0x07, 0xf4, 0xaf, 0x92, 0xa3, 0x0c, 0xb4, 0x76, 0xbb, 0xbc, 0x27, 0x47, 0x0d, 0xd8, 0xf6, 0x92,
0x9c, 0x4d, 0x7b, 0x73, 0x9d, 0x1a, 0x51, 0xfa, 0xd2, 0x40, 0xa1, 0x20, 0xdd, 0xef, 0x34, 0x3d,
0x16, 0xd1, 0x80, 0x75, 0xa6, 0x45, 0xa8, 0xd8, 0xda, 0x86, 0x4d, 0x5e, 0x6c, 0xa9, 0x8d, 0x7e,
0xaf, 0x4e, 0x80, 0xb4, 0xd2, 0x92, 0x6a, 0xb5, 0x4e, 0xbf, 0xdd, 0xd3, 0xea, 0x1d, 0x59, 0xd5,
0xda, 0x9d, 0x9e, 0x26, 0x7f, 0xd5, 0x54, 0x7b, 0x42, 0x12, 0x89, 0x70, 0xab, 0xd9, 0xae, 0x75,
0x8e, 0xbb, 0x2d, 0xb9, 0x27, 0x6b, 0x1e, 0x99, 0x22, 0x93, 0x55, 0xa4, 0x5e, 0xb3, 0xd3, 0x16,
0x52, 0xe2, 0x6f, 0x93, 0x50, 0x0a, 0x4b, 0xb4, 0xc8, 0x74, 0x6c, 0x7c, 0xc1, 0x1e, 0x48, 0x49,
0x16, 0x9a, 0x57, 0xf0, 0xa7, 0xab, 0x0e, 0x65, 0x79, 0x1c, 0x91, 0x8e, 0x1b, 0x47, 0xdc, 0x80,
0xdc, 0x62, 0x0c, 0xc1, 0xdc, 0x8e, 0x59, 0x0b, 0x41, 0x1e, 0xc2, 0xba, 0xe3, 0x92, 0xd0, 0xb1,
0x41, 0x2f, 0xec, 0xe6, 0x8a, 0xa3, 0x54, 0x09, 0x8d, 0xc2, 0x48, 0xa3, 0x36, 0x93, 0x89, 0xda,
0x0c, 0xba, 0x0f, 0x59, 0x6b, 0xee, 0xb2, 0x52, 0x27, 0xbb, 0x6a, 0x64, 0xe1, 0x93, 0x10, 0x01,
0x27, 0xba, 0x8b, 0x1d, 0x57, 0x73, 0xcf, 0xa9, 0xff, 0x15, 0x94, 0x2c, 0x03, 0xf4, 0xce, 0xc5,
0x6f, 0xa0, 0x10, 0xf4, 0x1e, 0xf4, 0x08, 0x0a, 0x5e, 0x3c, 0x1d, 0x18, 0x23, 0x2f, 0x9a, 0x6e,
0x47, 0x5d, 0xad, 0x6a, 0x8c, 0x94, 0xfc, 0xd4, 0xff, 0xed, 0x04, 0xf9, 0x74, 0xe7, 0xcc, 0x2b,
0x93, 0x96, 0xf8, 0x24, 0xe7, 0xcc, 0xe7, 0x93, 0x9c, 0x33, 0x47, 0xec, 0x03, 0x2c, 0x50, 0xe8,
0xad, 0x2b, 0xc6, 0x11, 0x6c, 0x18, 0x71, 0x07, 0x0a, 0x73, 0xd3, 0x70, 0x1d, 0xed, 0xc4, 0x98,
0x4c, 0xf8, 0x04, 0xa0, 0xa8, 0xe4, 0x29, 0xec, 0x88, 0x82, 0x02, 0xcb, 0x56, 0x8d, 0x11, 0x59,
0x76, 0xc0, 0x5d, 0x37, 0x76, 0x7a, 0x41, 0x67, 0x17, 0xaf, 0xb3, 0xec, 0x6f, 0x92, 0x90, 0x0f,
0xc4, 0x71, 0x62, 0x22, 0xd8, 0x1c, 0x91, 0x2c, 0x31, 0xd0, 0x27, 0xba, 0x37, 0x45, 0x48, 0x2b,
0x45, 0x06, 0xad, 0x32, 0x20, 0xaa, 0x43, 0x81, 0x93, 0x31, 0x63, 0x60, 0xde, 0x7b, 0x27, 0x2e,
0x35, 0x1c, 0x84, 0x2c, 0x22, 0xcf, 0xd8, 0xe8, 0x03, 0xd9, 0xcc, 0xbb, 0x53, 0xcd, 0x30, 0x47,
0xf8, 0x9c, 0x9a, 0xec, 0xba, 0x52, 0xf4, 0xa0, 0x4d, 0x02, 0x8c, 0x58, 0x75, 0x3a, 0x9a, 0x46,
0xbf, 0x81, 0x42, 0x70, 0x0b, 0xb4, 0x03, 0x42, 0xa7, 0xdf, 0xeb, 0xf6, 0x89, 0x77, 0xd5, 0x14,
0x59, 0xea, 0xc9, 0x75, 0x61, 0x0d, 0xdd, 0x81, 0x7d, 0x0e, 0xad, 0xf7, 0x55, 0xe2, 0x96, 0x3d,
0xb9, 0x5d, 0x97, 0xeb, 0x5a, 0xe7, 0xe8, 0xa8, 0xd6, 0x90, 0x9a, 0xc4, 0x7d, 0xf7, 0x61, 0x2f,
0x48, 0x22, 0xd5, 0x09, 0xbe, 0xd7, 0xd1, 0x8e, 0x64, 0x59, 0x15, 0x92, 0xa4, 0xbf, 0xe2, 0xe8,
0xa3, 0x7e, 0xab, 0xf5, 0x42, 0x53, 0xbb, 0x72, 0x9b, 0xf4, 0x4b, 0x7f, 0x4b, 0x42, 0x9e, 0x1d,
0x3c, 0x33, 0xb8, 0x2b, 0x5a, 0xee, 0x7d, 0x00, 0x9a, 0xab, 0x4e, 0x8c, 0x73, 0xff, 0x4a, 0x72,
0x04, 0x72, 0x44, 0x00, 0x24, 0x49, 0xe8, 0x53, 0x97, 0x4f, 0xd6, 0xc8, 0xcf, 0xe8, 0x54, 0x67,
0x23, 0x3a, 0xd5, 0x21, 0xee, 0xc0, 0x08, 0x48, 0x8b, 0x9e, 0x61, 0xee, 0x40, 0x01, 0xaa, 0x31,
0x46, 0x22, 0x14, 0xa7, 0xf3, 0x89, 0x6b, 0x10, 0x24, 0x15, 0x88, 0xe5, 0xb3, 0x3c, 0x05, 0xaa,
0xc6, 0x98, 0x88, 0xb4, 0x07, 0x59, 0xda, 0xd4, 0xcc, 0xe6, 0x03, 0xee, 0x4e, 0x19, 0xf2, 0xdc,
0x9d, 0x0f, 0xd0, 0x87, 0x90, 0xa3, 0x28, 0x7d, 0x34, 0xb2, 0xcb, 0x10, 0x29, 0x00, 0x48, 0xcf,
0x23, 0x8d, 0x46, 0x36, 0x76, 0x1c, 0x85, 0xae, 0x40, 0x1e, 0x88, 0x38, 0xa4, 0xa4, 0xd7, 0x68,
0xfb, 0x55, 0xa0, 0xfa, 0x65, 0x09, 0x80, 0xb4, 0x5c, 0xe8, 0x73, 0xd8, 0x9f, 0xea, 0xe7, 0x7c,
0xcc, 0x19, 0x97, 0xb7, 0x8b, 0x54, 0xf1, 0xeb, 0x53, 0xfd, 0x9c, 0x8e, 0x3c, 0x8f, 0xc2, 0xf9,
0xfb, 0x49, 0x3a, 0x9b, 0x16, 0xd6, 0x9f, 0xa4, 0xb3, 0xeb, 0xc2, 0xc6, 0x93, 0x74, 0x36, 0x2f,
0x14, 0xc4, 0x1f, 0x24, 0x20, 0xe7, 0xdb, 0x3d, 0x3a, 0xf0, 0x27, 0x65, 0xdc, 0x39, 0x76, 0x22,
0xce, 0xc1, 0x52, 0xaa, 0x47, 0x84, 0x0e, 0x61, 0x77, 0x82, 0x49, 0x9f, 0x35, 0x9a, 0xdb, 0x34,
0xde, 0x6b, 0x83, 0x89, 0x35, 0x3c, 0x73, 0xf8, 0xc5, 0x6c, 0x53, 0x64, 0x9d, 0xe3, 0xaa, 0x14,
0x85, 0xca, 0x90, 0xf1, 0x92, 0x3f, 0x1b, 0x6d, 0x7a, 0x8f, 0x4f, 0xd2, 0xd9, 0x94, 0x90, 0x16,
0xbf, 0xef, 0x4b, 0x44, 0x22, 0xc0, 0xbf, 0x4c, 0xa2, 0xf4, 0x6b, 0x49, 0xb4, 0x1e, 0x92, 0x48,
0x3c, 0x80, 0x7c, 0x60, 0xd6, 0x77, 0xf5, 0x84, 0xf0, 0x97, 0x09, 0x28, 0x04, 0x07, 0x95, 0x57,
0x72, 0x20, 0x09, 0xf2, 0x27, 0xba, 0x31, 0xd1, 0x02, 0xa3, 0x9a, 0xd2, 0xe1, 0xed, 0xd8, 0xa9,
0xe7, 0xc1, 0x91, 0x6e, 0x4c, 0xbc, 0x01, 0xc0, 0x89, 0xff, 0x9b, 0xec, 0x41, 0x97, 0x70, 0x5c,
0x52, 0x84, 0x52, 0xdb, 0xcf, 0x31, 0x02, 0x95, 0x42, 0xc4, 0x7d, 0x80, 0x05, 0x2b, 0xda, 0x84,
0x7c, 0xb3, 0xfd, 0x4c, 0x6a, 0x35, 0xeb, 0x9a, 0x74, 0xdc, 0x13, 0xd6, 0xc4, 0xc7, 0x9e, 0x03,
0x36, 0xcd, 0xd9, 0x3c, 0x9c, 0x4d, 0x12, 0x57, 0x66, 0x13, 0xf1, 0x31, 0x14, 0xf8, 0x45, 0xcc,
0x5d, 0xc2, 0xbe, 0x32, 0xe5, 0x86, 0x46, 0xe3, 0xfc, 0x49, 0xfc, 0x79, 0x12, 0x2a, 0x8c, 0xfd,
0xd8, 0x1a, 0x19, 0x27, 0x17, 0x91, 0x89, 0xfc, 0x15, 0xc1, 0xe0, 0x21, 0x80, 0x89, 0x5f, 0x69,
0x06, 0x91, 0xdb, 0x4b, 0x31, 0x51, 0xfb, 0xa0, 0x4a, 0x29, 0x39, 0x13, 0xbf, 0xa2, 0xbf, 0x48,
0x66, 0xca, 0x13, 0x26, 0x8b, 0x8a, 0xeb, 0x95, 0xe5, 0xbb, 0x51, 0xab, 0xa2, 0x58, 0x85, 0x2c,
0xcf, 0x7e, 0x3a, 0xe8, 0x39, 0xdb, 0x6c, 0xa6, 0xdb, 0xfa, 0xd4, 0xe1, 0xa5, 0xd0, 0xc7, 0x11,
0xb6, 0x38, 0x25, 0x0e, 0xda, 0xf8, 0x15, 0x87, 0x74, 0x09, 0x2f, 0x76, 0xb1, 0xed, 0x50, 0x81,
0xe8, 0xa3, 0x53, 0x79, 0x1f, 0x76, 0xe2, 0x48, 0xe2, 0x4f, 0x52, 0xfc, 0x1c, 0x6e, 0xc4, 0xee,
0xc5, 0xe7, 0xe8, 0x6f, 0x40, 0x3e, 0x30, 0x9e, 0xf0, 0x0c, 0x6e, 0x31, 0x73, 0x10, 0x3f, 0x85,
0xeb, 0x01, 0xc7, 0x61, 0x69, 0xe5, 0x75, 0x07, 0xe0, 0xb6, 0x37, 0x3d, 0x0f, 0xf2, 0xf2, 0x8d,
0xdf, 0xf5, 0x2a, 0x1b, 0x36, 0x32, 0xda, 0x0e, 0xf7, 0x5b, 0xa1, 0x82, 0xe6, 0x3d, 0xd8, 0x62,
0x89, 0x75, 0x6e, 0x9e, 0xcc, 0x27, 0xa1, 0xec, 0x2a, 0x50, 0x44, 0x7f, 0x01, 0x17, 0x4b, 0x50,
0xe8, 0x61, 0x7b, 0xea, 0x70, 0x21, 0xc5, 0xdf, 0x27, 0xa1, 0xc8, 0x01, 0x7c, 0xe7, 0x7b, 0xb0,
0x45, 0x82, 0x62, 0xdc, 0xfb, 0xaa, 0xcd, 0xa9, 0x7e, 0x2e, 0x05, 0x5f, 0xaf, 0xfc, 0x2f, 0xec,
0x11, 0x5a, 0xa6, 0x66, 0x6c, 0xd0, 0xaa, 0x26, 0xcb, 0x09, 0xe5, 0xda, 0x54, 0x3f, 0xa7, 0x72,
0x47, 0x22, 0xc5, 0x52, 0x5b, 0x96, 0x7a, 0xfd, 0xb6, 0x4c, 0x85, 0xcd, 0x70, 0x64, 0xf2, 0xc6,
0xa5, 0xf7, 0x7c, 0xee, 0x90, 0x5e, 0x07, 0xad, 0x60, 0xa8, 0xf2, 0x66, 0xa5, 0xa1, 0xf8, 0xe5,
0x54, 0x24, 0xd8, 0x8e, 0x21, 0x0b, 0xf6, 0x4a, 0xc5, 0x98, 0x99, 0x4f, 0x36, 0xd8, 0x14, 0x55,
0x61, 0x47, 0xc1, 0x13, 0xfc, 0x52, 0x37, 0xdd, 0x2a, 0x9b, 0xd4, 0x32, 0x6b, 0x28, 0x41, 0xd2,
0x6f, 0x6f, 0x92, 0xc6, 0x08, 0x55, 0xe8, 0x3b, 0x16, 0xd6, 0xcb, 0x12, 0x57, 0x2b, 0x28, 0xfe,
0xb3, 0xf8, 0xe7, 0x14, 0x14, 0x43, 0x8b, 0x04, 0x63, 0x6a, 0x22, 0x14, 0x53, 0xf9, 0xba, 0x49,
0x7f, 0xdd, 0x7f, 0xba, 0x57, 0xee, 0x2e, 0xb5, 0xfc, 0xe9, 0xc8, 0x14, 0x2d, 0x24, 0xda, 0xb7,
0x6f, 0xf7, 0xd7, 0x57, 0xb5, 0xfb, 0x4b, 0x66, 0xb1, 0xf1, 0xfa, 0x66, 0x71, 0x1b, 0xf2, 0xc1,
0x3e, 0x9d, 0x15, 0x20, 0x41, 0xd0, 0xaa, 0x16, 0x3d, 0x1b, 0xdb, 0xa2, 0xff, 0xfb, 0x9a, 0xe7,
0x3a, 0x14, 0x82, 0x6a, 0xb0, 0x26, 0xd8, 0xc1, 0x54, 0x5f, 0xe6, 0x6d, 0x19, 0xf2, 0xcc, 0x51,
0x9e, 0xc4, 0x74, 0xf9, 0xb4, 0x92, 0xe1, 0x62, 0x8a, 0x9f, 0x41, 0x3e, 0x50, 0xf7, 0x10, 0x33,
0x31, 0xb1, 0xfb, 0xca, 0xb2, 0xcf, 0xb8, 0x6c, 0xde, 0x23, 0x42, 0x90, 0xa6, 0x55, 0x13, 0x7b,
0x79, 0x41, 0x7f, 0x8b, 0x12, 0x64, 0xbd, 0x0c, 0x44, 0xf0, 0xb4, 0xc5, 0x66, 0x06, 0x4a, 0x7f,
0x93, 0x8a, 0x9d, 0x85, 0x75, 0x5e, 0x0f, 0xf3, 0x8a, 0x9d, 0xc1, 0x68, 0x35, 0x2c, 0xfe, 0x28,
0x01, 0x79, 0xc9, 0x39, 0x53, 0x4d, 0x7d, 0xe6, 0x9c, 0x5a, 0xee, 0x25, 0x76, 0xfa, 0x6d, 0x6a,
0x9b, 0x70, 0x75, 0x9a, 0x8a, 0x56, 0xa7, 0xa1, 0xda, 0x2e, 0x1d, 0xae, 0xed, 0xa8, 0x64, 0x55,
0x63, 0xf4, 0x1f, 0x28, 0xd9, 0x1f, 0x12, 0xb0, 0x13, 0xb4, 0x0a, 0x5f, 0xc4, 0xd0, 0xdb, 0xe2,
0x80, 0xb7, 0x2e, 0xce, 0x37, 0xe6, 0x6d, 0xf1, 0x82, 0x2e, 0xa0, 0x2d, 0xeb, 0xb8, 0xde, 0x04,
0xe6, 0x88, 0xc4, 0xef, 0xa8, 0xf1, 0x30, 0x39, 0x0b, 0x1e, 0x90, 0x3a, 0xdb, 0xfb, 0x80, 0x5c,
0xcb, 0xd5, 0x27, 0xc4, 0x17, 0x1c, 0x8d, 0x3a, 0x23, 0x1e, 0x51, 0x99, 0xd3, 0x8a, 0x40, 0x31,
0xaa, 0xee, 0x3a, 0x35, 0x06, 0x27, 0x4b, 0xb2, 0x5c, 0xc3, 0x3d, 0x9c, 0x3b, 0x31, 0xeb, 0xec,
0xb8, 0x52, 0xe2, 0x87, 0xb0, 0x43, 0x43, 0x83, 0x2f, 0x0d, 0x0f, 0x81, 0x97, 0x0c, 0x86, 0x7e,
0x9a, 0x84, 0xdd, 0x08, 0x0f, 0x4f, 0x47, 0xab, 0xef, 0x2d, 0xb8, 0x5c, 0x32, 0x3c, 0x36, 0x12,
0xa1, 0x38, 0xb3, 0xf1, 0x4b, 0xcd, 0xc7, 0xb3, 0xe9, 0x43, 0x9e, 0x00, 0xab, 0x9c, 0x66, 0x45,
0x54, 0x4a, 0xaf, 0x8a, 0x4a, 0xf5, 0xa5, 0xb8, 0xb8, 0x4e, 0xe3, 0xe2, 0x7e, 0xac, 0xab, 0xfb,
0x7a, 0x44, 0x62, 0xe1, 0x2d, 0xc8, 0x7b, 0x03, 0x2d, 0x22, 0x57, 0x86, 0xba, 0xa3, 0x37, 0xd1,
0x6a, 0x8e, 0x16, 0x4a, 0xb9, 0xe7, 0xbc, 0xb9, 0xca, 0x70, 0xe4, 0xbd, 0x77, 0xfd, 0x77, 0x4a,
0xb4, 0x79, 0x29, 0x42, 0xae, 0xf7, 0x5c, 0x96, 0x9e, 0xb6, 0x64, 0x55, 0x15, 0xd6, 0x50, 0x1e,
0x32, 0x52, 0xbb, 0xd6, 0xe8, 0x28, 0xaa, 0x90, 0xb8, 0xf7, 0xc3, 0x04, 0x6c, 0xc7, 0x8c, 0x40,
0xe8, 0x5b, 0xb9, 0x1e, 0x7b, 0x87, 0xc5, 0xde, 0x58, 0x75, 0xba, 0x72, 0x5b, 0x58, 0x43, 0x25,
0x00, 0x06, 0xa7, 0xcf, 0x09, 0xb4, 0x05, 0x45, 0xf6, 0x2c, 0x7f, 0xd5, 0x6d, 0x2a, 0x72, 0x5d,
0x48, 0xa2, 0x32, 0xec, 0x84, 0x59, 0xfb, 0xdd, 0xba, 0xd4, 0x93, 0x85, 0x14, 0x12, 0xa0, 0xc0,
0x30, 0xb5, 0x56, 0x47, 0x95, 0xeb, 0x42, 0x1a, 0x5d, 0x87, 0xed, 0x30, 0x2d, 0x7d, 0xe5, 0x27,
0xac, 0xdf, 0xfb, 0x49, 0x02, 0x60, 0x51, 0xc0, 0xa0, 0x6d, 0xd8, 0xec, 0x28, 0x75, 0x59, 0xd1,
0xd4, 0x7e, 0xf5, 0xb8, 0xd9, 0x63, 0xbd, 0xf1, 0x16, 0x14, 0x19, 0xb0, 0xd6, 0x92, 0x25, 0xb2,
0x37, 0x1d, 0x65, 0x31, 0x10, 0x7f, 0x3d, 0xd8, 0x7a, 0xa1, 0x1d, 0x35, 0x5b, 0x2d, 0x2a, 0x17,
0x82, 0x12, 0xc3, 0xc9, 0x5f, 0xc9, 0xb5, 0x3e, 0x59, 0x22, 0xb5, 0x80, 0xd5, 0xa4, 0x76, 0x4d,
0x6e, 0x51, 0x99, 0xfc, 0x65, 0x3d, 0x95, 0xd6, 0x89, 0xe0, 0x0c, 0xc4, 0xdf, 0xdb, 0x6d, 0x1c,
0xfe, 0x6e, 0xc3, 0x7f, 0x63, 0x23, 0xf9, 0x53, 0x28, 0xf4, 0x25, 0x94, 0xc2, 0x9f, 0xd4, 0xa0,
0x5b, 0x81, 0x5c, 0x18, 0xf3, 0xbd, 0x4f, 0xe5, 0x8d, 0x95, 0x78, 0x6e, 0xd5, 0x3d, 0xc8, 0x07,
0xbe, 0x25, 0x41, 0x77, 0x96, 0xaa, 0xec, 0xe8, 0xd7, 0x34, 0x15, 0xf1, 0x32, 0x12, 0xbe, 0xea,
0xd7, 0x50, 0x0c, 0x95, 0xb1, 0xe8, 0xcd, 0xd7, 0x28, 0xa8, 0x2b, 0x6f, 0x5d, 0x4e, 0xb4, 0x90,
0x38, 0xf0, 0xa1, 0xc9, 0x92, 0xc4, 0xcb, 0x1f, 0xbf, 0x2c, 0x49, 0x1c, 0xf7, 0x9d, 0x4a, 0x2f,
0xdc, 0x11, 0x46, 0x57, 0x5d, 0xfe, 0xac, 0x64, 0x69, 0xd5, 0x98, 0x8f, 0x47, 0xd0, 0x97, 0x21,
0x2b, 0xbb, 0x1d, 0xd7, 0xe2, 0x06, 0x2b, 0xf5, 0xca, 0x9d, 0x4b, 0x28, 0xf8, 0x92, 0x2f, 0x60,
0xd7, 0x1f, 0x02, 0xd3, 0x08, 0xc2, 0xed, 0x03, 0x2d, 0xdc, 0x3f, 0xee, 0x73, 0x95, 0xca, 0x7e,
0x74, 0xca, 0x16, 0x42, 0xdf, 0x4d, 0x7c, 0x90, 0x40, 0x8f, 0x60, 0x9d, 0x56, 0xaa, 0x68, 0x37,
0x5a, 0xb9, 0x32, 0xe9, 0xae, 0xc5, 0x17, 0xb4, 0xa8, 0x0d, 0xbb, 0xa1, 0x4a, 0xcc, 0xcf, 0x23,
0xfb, 0xf1, 0x95, 0xda, 0xf2, 0x7a, 0xe1, 0x1a, 0xb3, 0x0d, 0xc5, 0x55, 0xeb, 0xc4, 0x85, 0xf3,
0xca, 0xad, 0x55, 0x68, 0x26, 0x5f, 0xf5, 0xbf, 0xbe, 0x7e, 0x7b, 0x6c, 0xb8, 0xa7, 0xf3, 0xc1,
0xc1, 0xd0, 0x9a, 0x3e, 0x98, 0x18, 0xe3, 0x53, 0xd7, 0x34, 0xcc, 0xf1, 0x44, 0x1f, 0x38, 0x0f,
0x08, 0xe7, 0x03, 0xce, 0x3e, 0xd8, 0xa0, 0xdf, 0xd1, 0x3d, 0xfc, 0x7b, 0x00, 0x00, 0x00, 0xff,
0xff, 0x2d, 0x22, 0x36, 0x62, 0x5b, 0x27, 0x00, 0x00,
// 3620 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x3a, 0xcb, 0x72, 0xdb, 0x58,
0x76, 0xe2, 0x43, 0x22, 0x79, 0xf8, 0x10, 0x74, 0x25, 0xd9, 0x14, 0x6d, 0xb9, 0x6d, 0xf4, 0x23,
0x6e, 0x75, 0x5b, 0x6e, 0xcb, 0xdd, 0x4e, 0x3f, 0x9c, 0x4e, 0x81, 0x24, 0xd4, 0xa4, 0x4d, 0x91,
0x6c, 0x80, 0xb4, 0xdb, 0x5d, 0x95, 0x42, 0x81, 0xe4, 0x15, 0x85, 0x88, 0x04, 0x18, 0x00, 0xb4,
0xa5, 0x2c, 0x7a, 0x91, 0x5d, 0x3e, 0x20, 0x95, 0x45, 0xaa, 0x17, 0xa9, 0xca, 0x3e, 0xa9, 0x64,
0x93, 0x65, 0x2a, 0x8b, 0x59, 0xce, 0x27, 0xcc, 0xa3, 0x6a, 0x7e, 0x62, 0xaa, 0x66, 0x31, 0x75,
0x1f, 0x00, 0x01, 0x10, 0x94, 0x3c, 0x3d, 0x33, 0x55, 0xb3, 0x91, 0x80, 0x73, 0xcf, 0xb9, 0xf7,
0x9c, 0x73, 0xcf, 0x1b, 0x04, 0x41, 0x9f, 0x0f, 0x5d, 0xc3, 0x32, 0x31, 0xb6, 0x0f, 0x67, 0xb6,
0xe5, 0x5a, 0x28, 0x33, 0xb3, 0xac, 0x89, 0x3d, 0x1b, 0x8a, 0xff, 0x94, 0x80, 0x5d, 0x05, 0x3b,
0xd8, 0x7e, 0x8d, 0xa5, 0xe1, 0xd0, 0x9a, 0x9b, 0xae, 0x82, 0xff, 0x61, 0x8e, 0x1d, 0x17, 0xbd,
0x0b, 0x45, 0x9d, 0x41, 0xb4, 0xd7, 0xfa, 0x64, 0x8e, 0xcb, 0x89, 0xbb, 0x89, 0xfb, 0x69, 0xa5,
0xc0, 0x81, 0x2f, 0x08, 0x0c, 0xbd, 0x0f, 0x25, 0x0f, 0x09, 0x5f, 0xcc, 0x0c, 0xfb, 0xb2, 0x9c,
0xbc, 0x9b, 0xb8, 0x5f, 0x54, 0x3c, 0x52, 0x99, 0x02, 0xd1, 0x3e, 0x80, 0x6b, 0xeb, 0x23, 0x6c,
0x6b, 0xe7, 0xf8, 0xb2, 0x9c, 0xba, 0x9b, 0xb8, 0x5f, 0x50, 0x72, 0x0c, 0xf2, 0x1c, 0x5f, 0x8a,
0xe7, 0x70, 0x23, 0xca, 0x83, 0x33, 0xb3, 0x4c, 0x87, 0xed, 0xef, 0xf3, 0x4e, 0x89, 0x13, 0x94,
0xb8, 0xb8, 0x80, 0x3e, 0xc7, 0x97, 0xe8, 0x00, 0xb6, 0x0c, 0xd3, 0x70, 0x0d, 0x7d, 0xa2, 0x0d,
0x74, 0x77, 0x78, 0x46, 0x31, 0x93, 0x14, 0x73, 0x93, 0x2f, 0x54, 0x09, 0x9c, 0x1c, 0xf6, 0x9b,
0x04, 0x94, 0x55, 0x72, 0x96, 0xdd, 0x34, 0x0d, 0x37, 0x22, 0xf4, 0x93, 0x85, 0xd0, 0x33, 0xcb,
0x30, 0x5d, 0x7a, 0x5c, 0xfe, 0x68, 0xeb, 0x90, 0xeb, 0xeb, 0xb0, 0x33, 0x77, 0xbb, 0x64, 0xc1,
0xd7, 0x03, 0x7d, 0x0b, 0xea, 0xc1, 0x19, 0xda, 0xc6, 0xcc, 0xe5, 0xa7, 0x7b, 0xbb, 0xa9, 0x14,
0xb8, 0xac, 0xd3, 0xd4, 0x5b, 0xe9, 0x34, 0x7d, 0xbd, 0x4e, 0xd7, 0xa3, 0x3a, 0xbd, 0x05, 0x7b,
0x31, 0x52, 0x32, 0xb5, 0x8a, 0x73, 0x4f, 0x05, 0xea, 0x7c, 0x30, 0x35, 0xdc, 0x8e, 0x3d, 0xc2,
0xb6, 0xa7, 0x82, 0x0f, 0x20, 0xa5, 0x3b, 0xe7, 0x5c, 0x70, 0xe4, 0x0b, 0xce, 0xf0, 0x25, 0xe7,
0xbc, 0xb1, 0xa6, 0x10, 0x04, 0x82, 0x37, 0x30, 0x46, 0x54, 0xce, 0x65, 0xbc, 0xaa, 0x31, 0x22,
0x78, 0x03, 0x63, 0x54, 0xcd, 0x41, 0x66, 0x84, 0x5d, 0xdd, 0x98, 0x38, 0xc4, 0xd8, 0xf6, 0x62,
0xce, 0xe5, 0x77, 0xfd, 0x14, 0x8a, 0x86, 0xf9, 0x5a, 0x9f, 0x18, 0x23, 0xcd, 0x22, 0x0b, 0x9c,
0x85, 0x5d, 0x7f, 0xeb, 0x26, 0x5b, 0xa5, 0x54, 0x8d, 0x35, 0xa5, 0x60, 0x04, 0xde, 0xd1, 0x6d,
0xc8, 0xea, 0xc3, 0x21, 0x9e, 0xb9, 0x98, 0xf1, 0x94, 0x6d, 0xac, 0x29, 0x3e, 0x24, 0xc8, 0xc4,
0x57, 0x9e, 0xec, 0x35, 0xdd, 0x1c, 0xe2, 0x49, 0x48, 0xf6, 0x77, 0x20, 0x4f, 0x8f, 0xd6, 0x4c,
0xcb, 0x1c, 0x62, 0x6e, 0x6b, 0x40, 0x41, 0x6d, 0x02, 0x59, 0x68, 0x35, 0x44, 0xcc, 0xb5, 0xfa,
0xab, 0x24, 0xec, 0xd4, 0x26, 0x06, 0x36, 0x5d, 0x89, 0x59, 0xe7, 0x09, 0x76, 0x1c, 0x7d, 0x8c,
0xd1, 0xa7, 0xb0, 0x31, 0xb4, 0xa6, 0x53, 0xc3, 0x33, 0xa7, 0x8a, 0x2f, 0x12, 0xbf, 0x98, 0x1a,
0x5d, 0x9d, 0x62, 0xd3, 0x6d, 0xac, 0x29, 0x1c, 0x17, 0x3d, 0x85, 0x9c, 0x33, 0x1f, 0x10, 0x73,
0x1a, 0x60, 0xae, 0xe6, 0xdb, 0x51, 0x42, 0x95, 0x21, 0xcc, 0xc8, 0x69, 0x8d, 0x35, 0x65, 0x41,
0x80, 0x1e, 0xc3, 0x06, 0x93, 0x9e, 0xda, 0x58, 0xfe, 0x68, 0x6f, 0x61, 0xc2, 0x84, 0xe9, 0x13,
0xe2, 0x0e, 0x12, 0x45, 0x20, 0x47, 0x32, 0x54, 0x42, 0x64, 0xe3, 0xbf, 0xc7, 0x43, 0x97, 0x9a,
0x5c, 0x3c, 0x91, 0x42, 0x11, 0x08, 0x11, 0x43, 0x45, 0x0f, 0x20, 0xed, 0x18, 0x63, 0x93, 0x9a,
0x60, 0xfe, 0xe8, 0x66, 0x0c, 0x89, 0x6a, 0x8c, 0x09, 0x77, 0x14, 0x0d, 0x7d, 0x0a, 0x19, 0x1b,
0x0f, 0xad, 0xd7, 0xd8, 0x2e, 0x6f, 0x50, 0x8a, 0x72, 0x54, 0x28, 0x85, 0x2d, 0x5f, 0x36, 0xd6,
0x14, 0x0f, 0xb5, 0xba, 0x0e, 0xa9, 0xa9, 0x33, 0x16, 0x5f, 0xc1, 0xd6, 0x92, 0xca, 0xc8, 0xad,
0x31, 0x95, 0x69, 0x67, 0xba, 0x73, 0xe6, 0xdd, 0x1a, 0x03, 0x35, 0x74, 0xe7, 0x8c, 0xb8, 0x1d,
0x0b, 0x0b, 0xaf, 0xb1, 0xed, 0x18, 0x96, 0xc9, 0x83, 0x54, 0x81, 0x02, 0x5f, 0x30, 0x98, 0x68,
0xc3, 0x76, 0x8c, 0x52, 0x23, 0x6e, 0x96, 0x88, 0xb8, 0x19, 0xba, 0x07, 0x05, 0x7e, 0x36, 0x33,
0x19, 0xe6, 0xf6, 0x9c, 0x1f, 0x6a, 0x33, 0x68, 0x0f, 0xb2, 0xfa, 0xdc, 0x3d, 0xd3, 0x1c, 0x63,
0xcc, 0x43, 0x5f, 0x86, 0xbc, 0xab, 0xc6, 0x58, 0x7c, 0x00, 0x42, 0xf4, 0x36, 0x08, 0x3a, 0x63,
0xd6, 0x18, 0xf1, 0xe3, 0x32, 0xf4, 0xbd, 0x39, 0x12, 0xff, 0x23, 0x15, 0xc4, 0x67, 0x17, 0x71,
0x05, 0x3e, 0xba, 0x41, 0xae, 0x53, 0x77, 0xb8, 0xc0, 0x39, 0x85, 0xbf, 0xa1, 0x6f, 0x20, 0xcf,
0x9e, 0xb4, 0xa1, 0x35, 0x62, 0x41, 0xa8, 0x74, 0xf4, 0xc1, 0xca, 0xbb, 0x3e, 0x64, 0xff, 0x14,
0x4a, 0xa2, 0x00, 0x23, 0xad, 0x59, 0x23, 0x8c, 0x5e, 0xc0, 0x26, 0x33, 0x02, 0xcc, 0x7d, 0xd6,
0x29, 0xa7, 0xef, 0xa6, 0xee, 0xe7, 0x8f, 0x1e, 0x5c, 0xb7, 0x19, 0x66, 0x6e, 0xeb, 0xc8, 0xa6,
0x6b, 0x5f, 0x2a, 0x25, 0x3b, 0x04, 0xac, 0xbc, 0x84, 0xed, 0x18, 0x34, 0x24, 0x40, 0xca, 0xbb,
0x84, 0x9c, 0x42, 0x1e, 0xd1, 0x01, 0xac, 0xb3, 0x40, 0xca, 0xfc, 0x63, 0x27, 0x7c, 0x2c, 0xe7,
0x9b, 0xa1, 0x7c, 0x99, 0xfc, 0x3c, 0x21, 0x0e, 0xa1, 0x10, 0x14, 0x06, 0xe5, 0x21, 0xd3, 0x6f,
0x3f, 0x6f, 0x77, 0x5e, 0xb6, 0x85, 0x35, 0x74, 0x03, 0x90, 0x2a, 0x2b, 0x2f, 0x64, 0x45, 0x3b,
0x69, 0xaa, 0x55, 0xb9, 0x21, 0xbd, 0x68, 0x76, 0x14, 0x21, 0x81, 0x2a, 0x70, 0xa3, 0x2a, 0xf5,
0x6a, 0x0d, 0xed, 0x85, 0xac, 0xa8, 0xcd, 0x4e, 0x9b, 0x2c, 0x9f, 0x10, 0x80, 0x90, 0x44, 0x08,
0x4a, 0x5d, 0x49, 0xe9, 0x35, 0xa5, 0x96, 0xa6, 0xc8, 0xcf, 0xe4, 0x5a, 0x4f, 0x48, 0x89, 0xff,
0x93, 0x80, 0x7c, 0xe0, 0xfc, 0xc0, 0x35, 0x24, 0xae, 0xba, 0x86, 0x64, 0xdc, 0x35, 0x70, 0xa5,
0x05, 0xc5, 0x59, 0xba, 0x06, 0xb1, 0x06, 0x5b, 0x4b, 0x08, 0x84, 0xb3, 0x7a, 0xbf, 0xdb, 0x6a,
0xd6, 0xa4, 0x9e, 0xac, 0x75, 0x65, 0x59, 0x11, 0xd6, 0x88, 0x24, 0xb5, 0x86, 0xd4, 0x6e, 0xcb,
0x2d, 0xed, 0xb8, 0xdf, 0xae, 0x37, 0xdb, 0xdf, 0x68, 0xc7, 0x52, 0xb3, 0x25, 0xd7, 0x85, 0x84,
0xf8, 0xdb, 0x04, 0xe4, 0x6b, 0x67, 0xba, 0x69, 0xe2, 0x49, 0xd3, 0x3c, 0xb5, 0xd0, 0x7d, 0x48,
0xbb, 0x97, 0x33, 0x16, 0x04, 0x4b, 0x01, 0xcd, 0x72, 0x9c, 0xde, 0xe5, 0x0c, 0x2b, 0x14, 0x03,
0xbd, 0x07, 0xa5, 0x89, 0x35, 0xd4, 0x27, 0x9a, 0x69, 0x8d, 0x70, 0x20, 0xf5, 0x16, 0x28, 0xb4,
0x6d, 0x8d, 0x30, 0xf1, 0x94, 0x0f, 0x88, 0xad, 0x4c, 0x2d, 0x17, 0x2f, 0xd0, 0x98, 0x37, 0x14,
0x19, 0xd8, 0xc3, 0xfb, 0x6b, 0x28, 0xb3, 0xdd, 0x66, 0xfa, 0x25, 0x71, 0x6f, 0x6d, 0xa0, 0x3b,
0x98, 0x67, 0xe3, 0x34, 0x25, 0xd8, 0xa5, 0xeb, 0x5d, 0xb6, 0x5c, 0xd5, 0x1d, 0xcc, 0x72, 0xf0,
0x17, 0xb0, 0xc7, 0x0f, 0x88, 0xa1, 0x64, 0xf9, 0xf1, 0x06, 0x43, 0x88, 0x92, 0x8a, 0xbf, 0x4c,
0x42, 0x29, 0x1c, 0xae, 0xae, 0x72, 0xab, 0xe7, 0x50, 0xf0, 0x93, 0xbd, 0x31, 0x76, 0xca, 0x49,
0x6a, 0xf2, 0xf7, 0x57, 0x04, 0x3e, 0x3f, 0x54, 0x1b, 0x63, 0x6e, 0xed, 0x79, 0x7d, 0x01, 0x41,
0x6d, 0x28, 0x0e, 0x99, 0x46, 0x35, 0xc3, 0x3c, 0xb5, 0x9c, 0x72, 0x8a, 0xee, 0xf6, 0xe1, 0xaa,
0xdd, 0x02, 0x57, 0xc4, 0xb7, 0x2b, 0x0c, 0x03, 0xa0, 0xca, 0xd7, 0x20, 0x44, 0x0f, 0x8c, 0xf1,
0x9b, 0x9d, 0xa0, 0xdf, 0x14, 0x02, 0x1e, 0x52, 0xe9, 0xc3, 0xd6, 0xd2, 0x11, 0x7f, 0x88, 0xe3,
0x05, 0x88, 0x83, 0x8e, 0xf7, 0x09, 0x6c, 0x46, 0xa2, 0xfb, 0x35, 0x91, 0x55, 0xfc, 0xb7, 0x14,
0xec, 0xf0, 0xa2, 0x23, 0x9c, 0x4d, 0x3f, 0x87, 0xdc, 0xf0, 0x4c, 0x9f, 0x4c, 0xb0, 0x39, 0xc6,
0x3c, 0xa1, 0x96, 0x23, 0xe5, 0x47, 0xcd, 0x5b, 0x27, 0x39, 0xd1, 0x47, 0x46, 0x9f, 0x41, 0xc6,
0x99, 0x0f, 0x87, 0xd8, 0x71, 0x38, 0xdb, 0x8b, 0xfc, 0xa6, 0x7a, 0x89, 0x53, 0x65, 0x08, 0x24,
0xf7, 0x70, 0x5c, 0xf4, 0x10, 0xd6, 0xb1, 0x6d, 0x5b, 0x36, 0xcf, 0xa4, 0x37, 0x97, 0x89, 0x64,
0xb2, 0xdc, 0x58, 0x53, 0x18, 0x1e, 0x7a, 0x02, 0x99, 0x99, 0x8d, 0x67, 0xba, 0x8d, 0x79, 0x1e,
0xad, 0xc4, 0xdc, 0x66, 0x97, 0x61, 0x90, 0x83, 0x38, 0x32, 0x3a, 0x0a, 0x65, 0xd2, 0xdb, 0x2b,
0x4c, 0xa0, 0x8a, 0xc7, 0xc6, 0x22, 0x9d, 0x7e, 0x01, 0xd9, 0x53, 0xc3, 0xd4, 0x27, 0xc6, 0x3f,
0x62, 0x9e, 0x4f, 0x6f, 0xc5, 0xd0, 0x1d, 0x73, 0x14, 0x52, 0x14, 0x79, 0xe8, 0xe8, 0x31, 0x64,
0xb8, 0x25, 0x96, 0x33, 0x11, 0xc9, 0xb8, 0xca, 0xf9, 0x95, 0x11, 0x1e, 0x39, 0xa6, 0x97, 0x88,
0xbb, 0xb0, 0x19, 0x51, 0x35, 0xba, 0x1d, 0xbd, 0x97, 0x42, 0x50, 0xf7, 0x91, 0x24, 0x9d, 0x8c,
0x26, 0x69, 0xf1, 0x11, 0x08, 0xd1, 0x4b, 0xb8, 0xce, 0x44, 0xfe, 0x2b, 0xcd, 0x03, 0x5f, 0x50,
0xa1, 0xa8, 0x07, 0xa5, 0x29, 0x79, 0x5f, 0xe4, 0xa4, 0xc4, 0xca, 0x9c, 0xc4, 0x69, 0x0e, 0x4f,
0x18, 0x41, 0x30, 0x27, 0x15, 0xa7, 0x41, 0x18, 0x3a, 0x84, 0xed, 0xe1, 0x04, 0xeb, 0xb6, 0x61,
0x8e, 0xb5, 0x99, 0x6d, 0x0c, 0xb1, 0x66, 0xeb, 0x2e, 0xe6, 0x95, 0xc4, 0x96, 0xb7, 0xd4, 0x25,
0x2b, 0x8a, 0xee, 0x62, 0xf4, 0xb7, 0x20, 0x0c, 0xcf, 0x74, 0x7b, 0x8c, 0x47, 0x1a, 0x57, 0x9d,
0xe7, 0xda, 0x3b, 0xd1, 0x7a, 0xa7, 0x6e, 0x9c, 0x9e, 0x2a, 0x9b, 0x1c, 0x9b, 0xc3, 0x1c, 0xf4,
0x25, 0x14, 0xf1, 0x05, 0x1e, 0xce, 0xc9, 0x3d, 0x68, 0xa7, 0xd8, 0x33, 0xa5, 0x45, 0x39, 0x2c,
0x7b, 0xab, 0xc7, 0x18, 0x2b, 0x05, 0x1c, 0x78, 0x43, 0x1f, 0xc1, 0x16, 0x0b, 0x5e, 0xae, 0xad,
0x9b, 0x8e, 0x4e, 0xef, 0x92, 0x87, 0x40, 0x81, 0x2e, 0xf4, 0x16, 0x70, 0xf4, 0x31, 0x6c, 0x9f,
0x62, 0x26, 0x8e, 0xe6, 0xe8, 0xae, 0x36, 0x23, 0xea, 0x7e, 0x43, 0x8d, 0x29, 0xad, 0x6c, 0x9e,
0x62, 0x2a, 0x8f, 0xaa, 0xbb, 0x5d, 0x6c, 0x3f, 0x7f, 0x43, 0x82, 0x3d, 0xc5, 0xc6, 0x03, 0x8e,
0x4f, 0x6d, 0x27, 0xad, 0x14, 0x08, 0x22, 0x05, 0xaa, 0x7a, 0xb8, 0x28, 0xc9, 0x86, 0xa3, 0xe7,
0x52, 0x31, 0x96, 0x5b, 0x2e, 0xc6, 0x2a, 0x2f, 0x01, 0x2d, 0x5f, 0x49, 0x4c, 0x18, 0xfa, 0x28,
0x1c, 0x86, 0x16, 0xca, 0x09, 0x52, 0x87, 0xe3, 0xd0, 0x76, 0x8c, 0x37, 0x5d, 0x55, 0x74, 0x59,
0x80, 0x96, 0xfd, 0xe8, 0xaa, 0xf4, 0xb0, 0x0f, 0xc0, 0x95, 0x7f, 0xc1, 0xfb, 0xa3, 0x82, 0x92,
0x63, 0x5a, 0xbf, 0x30, 0x46, 0xc4, 0x11, 0xce, 0xb0, 0x31, 0x3e, 0x73, 0xb5, 0x33, 0x92, 0x98,
0x52, 0x54, 0x7a, 0x60, 0xa0, 0x06, 0x49, 0x46, 0xff, 0x9b, 0x84, 0x52, 0x38, 0xb2, 0x90, 0x70,
0xcd, 0x22, 0x10, 0x13, 0x9d, 0x87, 0x99, 0xa7, 0x00, 0xf4, 0x21, 0x58, 0x3e, 0xec, 0xaf, 0x08,
0x4e, 0x87, 0xf4, 0xaf, 0x92, 0xa3, 0x04, 0xb4, 0x76, 0xbb, 0xba, 0x27, 0x47, 0x0d, 0xd8, 0xf6,
0x92, 0x9c, 0x4d, 0x7b, 0x73, 0x9d, 0x1a, 0x51, 0xfa, 0xca, 0x40, 0xa1, 0x20, 0xdd, 0xef, 0x34,
0x3d, 0x12, 0xd1, 0x80, 0x75, 0x26, 0x45, 0xa8, 0xd8, 0xda, 0x86, 0x4d, 0x5e, 0x6c, 0xa9, 0x8d,
0x7e, 0xaf, 0x4e, 0x80, 0xb4, 0xd2, 0x92, 0x6a, 0xb5, 0x4e, 0xbf, 0xdd, 0xd3, 0xea, 0x1d, 0x59,
0xd5, 0xda, 0x9d, 0x9e, 0x26, 0x7f, 0xd7, 0x54, 0x7b, 0x42, 0x12, 0x89, 0x70, 0xa7, 0xd9, 0xae,
0x75, 0x4e, 0xba, 0x2d, 0xb9, 0x27, 0x6b, 0x1e, 0x9a, 0x22, 0x93, 0x5d, 0xa4, 0x5e, 0xb3, 0xd3,
0x16, 0x52, 0xe2, 0xff, 0x27, 0xa1, 0x14, 0xe6, 0x68, 0x91, 0xe9, 0xd8, 0xf8, 0x82, 0xbd, 0x90,
0x92, 0x2c, 0x34, 0xaf, 0xe0, 0x6f, 0xd7, 0x29, 0x65, 0x79, 0x1c, 0x91, 0x8e, 0x1b, 0x47, 0xdc,
0x82, 0xdc, 0x62, 0x0c, 0xc1, 0xdc, 0x8e, 0x59, 0x0b, 0x59, 0x3c, 0x82, 0x75, 0xc7, 0x25, 0xa1,
0x63, 0x83, 0x5e, 0xd8, 0xed, 0x15, 0xaa, 0x54, 0x09, 0x8e, 0xc2, 0x50, 0xa3, 0x36, 0x93, 0x89,
0xda, 0x0c, 0x7a, 0x00, 0x59, 0x6b, 0xee, 0xb2, 0x52, 0x27, 0xbb, 0x6a, 0x64, 0xe1, 0xa3, 0x10,
0x06, 0x27, 0xba, 0x8b, 0x1d, 0x57, 0x73, 0x2f, 0xa8, 0xff, 0x15, 0x94, 0x2c, 0x03, 0xf4, 0x2e,
0xc4, 0x1f, 0xa0, 0x10, 0xf4, 0x1e, 0xf4, 0x04, 0x0a, 0x5e, 0x3c, 0x1d, 0x18, 0x23, 0x2f, 0x9a,
0x6e, 0x47, 0x5d, 0xad, 0x6a, 0x8c, 0x94, 0xfc, 0xd4, 0x7f, 0x76, 0x82, 0x74, 0xba, 0x73, 0xee,
0x95, 0x49, 0x4b, 0x74, 0x92, 0x73, 0xee, 0xd3, 0x49, 0xce, 0xb9, 0x23, 0xf6, 0x01, 0x16, 0x4b,
0xe8, 0xbd, 0x6b, 0xc6, 0x11, 0x6c, 0x18, 0x71, 0x0f, 0x0a, 0x73, 0xd3, 0x70, 0x1d, 0xed, 0xd4,
0x98, 0x4c, 0xf8, 0x04, 0xa0, 0xa8, 0xe4, 0x29, 0xec, 0x98, 0x82, 0x02, 0xdb, 0x56, 0x8d, 0x11,
0xd9, 0x76, 0xc0, 0x5d, 0x37, 0x76, 0x7a, 0x41, 0x67, 0x17, 0x6f, 0xb3, 0xed, 0xff, 0x25, 0x21,
0x1f, 0x88, 0xe3, 0xc4, 0x44, 0xb0, 0x39, 0x22, 0x59, 0x62, 0xa0, 0x4f, 0x74, 0x6f, 0x8a, 0x90,
0x56, 0x8a, 0x0c, 0x5a, 0x65, 0x40, 0x54, 0x87, 0x02, 0x47, 0x63, 0xc6, 0xc0, 0xbc, 0xf7, 0x5e,
0x5c, 0x6a, 0x38, 0x0c, 0x59, 0x44, 0x9e, 0x91, 0xd1, 0x17, 0x72, 0x98, 0x77, 0xa7, 0x9a, 0x61,
0x8e, 0xf0, 0x05, 0x35, 0xd9, 0x75, 0xa5, 0xe8, 0x41, 0x9b, 0x04, 0x18, 0xb1, 0xea, 0x74, 0x34,
0x8d, 0xfe, 0x00, 0x85, 0xe0, 0x11, 0x68, 0x07, 0x84, 0x4e, 0xbf, 0xd7, 0xed, 0x13, 0xef, 0xaa,
0x29, 0xb2, 0xd4, 0x93, 0xeb, 0xc2, 0x1a, 0xba, 0x07, 0xfb, 0x1c, 0x5a, 0xef, 0xab, 0xc4, 0x2d,
0x7b, 0x72, 0xbb, 0x2e, 0xd7, 0xb5, 0xce, 0xf1, 0x71, 0xad, 0x21, 0x35, 0x89, 0xfb, 0xee, 0xc3,
0x5e, 0x10, 0x45, 0xaa, 0x93, 0xf5, 0x5e, 0x47, 0x3b, 0x96, 0x65, 0x55, 0x48, 0x92, 0xfe, 0x8a,
0x2f, 0x1f, 0xf7, 0x5b, 0xad, 0x57, 0x9a, 0xda, 0x95, 0xdb, 0xa4, 0x5f, 0xfa, 0x5d, 0x12, 0xf2,
0x4c, 0xf1, 0xcc, 0xe0, 0xae, 0x69, 0xb9, 0xf7, 0x01, 0x68, 0xae, 0x3a, 0x35, 0x2e, 0xfc, 0x2b,
0xc9, 0x11, 0xc8, 0x31, 0x01, 0x90, 0x24, 0xa1, 0x4f, 0x5d, 0x3e, 0x59, 0x23, 0x8f, 0xd1, 0xa9,
0xce, 0x46, 0x74, 0xaa, 0x43, 0xdc, 0x81, 0x21, 0x90, 0x16, 0x3d, 0xc3, 0xdc, 0x81, 0x02, 0x54,
0x63, 0x8c, 0x44, 0x28, 0x4e, 0xe7, 0x13, 0xd7, 0x20, 0x8b, 0x94, 0x21, 0x96, 0xcf, 0xf2, 0x14,
0xa8, 0x1a, 0x63, 0xc2, 0xd2, 0x1e, 0x64, 0x69, 0x53, 0x33, 0x9b, 0x0f, 0xb8, 0x3b, 0x65, 0xc8,
0x7b, 0x77, 0x3e, 0x40, 0x8f, 0x20, 0x47, 0x97, 0xf4, 0xd1, 0xc8, 0x2e, 0x43, 0xa4, 0x00, 0x20,
0x3d, 0x8f, 0x34, 0x1a, 0xd9, 0xd8, 0x71, 0x14, 0xba, 0x03, 0x79, 0x21, 0xec, 0x90, 0x92, 0x5e,
0xa3, 0xed, 0x57, 0x81, 0xca, 0x97, 0x25, 0x00, 0xd2, 0x72, 0xa1, 0xaf, 0x61, 0x7f, 0xaa, 0x5f,
0xf0, 0x31, 0x67, 0x5c, 0xde, 0x2e, 0x52, 0xc1, 0x6f, 0x4e, 0xf5, 0x0b, 0x3a, 0xf2, 0x3c, 0x0e,
0xe7, 0xef, 0x67, 0xe9, 0x6c, 0x5a, 0x58, 0x7f, 0x96, 0xce, 0xae, 0x0b, 0x1b, 0xcf, 0xd2, 0xd9,
0xbc, 0x50, 0x10, 0x7f, 0x96, 0x80, 0x9c, 0x6f, 0xf7, 0xe8, 0xd0, 0x9f, 0x94, 0x71, 0xe7, 0xd8,
0x89, 0x38, 0x07, 0x4b, 0xa9, 0x1e, 0x12, 0x3a, 0x82, 0xdd, 0x09, 0x26, 0x7d, 0xd6, 0x68, 0x6e,
0xd3, 0x78, 0xaf, 0x0d, 0x26, 0xd6, 0xf0, 0xdc, 0xe1, 0x17, 0xb3, 0x4d, 0x17, 0xeb, 0x7c, 0xad,
0x4a, 0x97, 0x50, 0x19, 0x32, 0x5e, 0xf2, 0x67, 0xa3, 0x4d, 0xef, 0x15, 0x7d, 0x06, 0xc5, 0xa9,
0x61, 0xb2, 0x0e, 0xd1, 0x35, 0xb0, 0x4d, 0xa3, 0x67, 0x29, 0x10, 0xcc, 0x88, 0xc6, 0x7a, 0x06,
0xb6, 0x95, 0xfc, 0xd4, 0x30, 0xbd, 0x97, 0x67, 0xe9, 0x6c, 0x4a, 0x48, 0x8b, 0xff, 0xec, 0x0b,
0x42, 0x02, 0xc7, 0x9f, 0x4c, 0x90, 0xf4, 0x5b, 0x09, 0xb2, 0x1e, 0x12, 0x44, 0x3c, 0x84, 0x7c,
0x60, 0x44, 0x78, 0xfd, 0x60, 0xf1, 0xbf, 0x13, 0x50, 0x08, 0xce, 0x37, 0xaf, 0xa5, 0x40, 0x12,
0xe4, 0x4f, 0x75, 0x63, 0xa2, 0x05, 0x26, 0x3c, 0xa5, 0xa3, 0xbb, 0xb1, 0xc3, 0xd2, 0xc3, 0x63,
0xdd, 0x98, 0x78, 0x73, 0x83, 0x53, 0xff, 0x99, 0x9c, 0x41, 0xb7, 0x70, 0x5c, 0x52, 0xbb, 0x52,
0x97, 0xc9, 0x31, 0x04, 0x95, 0x42, 0xc4, 0x7d, 0x80, 0x05, 0x29, 0xda, 0x84, 0x7c, 0xb3, 0xfd,
0x42, 0x6a, 0x35, 0xeb, 0x9a, 0x74, 0xd2, 0x13, 0xd6, 0xc4, 0xa7, 0x9e, 0xdf, 0x36, 0xcd, 0xd9,
0x3c, 0x9c, 0x84, 0x12, 0xd7, 0x26, 0x21, 0xf1, 0x29, 0x14, 0xf8, 0x45, 0xcc, 0x5d, 0x42, 0xbe,
0x32, 0x53, 0x87, 0x26, 0xea, 0xfc, 0x4d, 0xfc, 0xcf, 0x24, 0x54, 0x18, 0xf9, 0x89, 0x35, 0x32,
0x4e, 0x2f, 0x23, 0x83, 0xfc, 0x6b, 0x62, 0xc8, 0x63, 0x00, 0x13, 0xbf, 0xd1, 0x0c, 0xc2, 0xb7,
0x97, 0x99, 0xa2, 0xf6, 0x41, 0x85, 0x52, 0x72, 0x26, 0x7e, 0x43, 0x9f, 0x48, 0x42, 0xcb, 0x13,
0x22, 0x8b, 0xb2, 0xeb, 0x55, 0xf3, 0xbb, 0x51, 0xab, 0xa2, 0xab, 0x0a, 0xd9, 0x9e, 0x3d, 0x3a,
0xe8, 0x25, 0x3b, 0x6c, 0xa6, 0xdb, 0xfa, 0xd4, 0xe1, 0x15, 0xd4, 0xe7, 0x11, 0xb2, 0x38, 0x21,
0x0e, 0xdb, 0xf8, 0x0d, 0x87, 0x74, 0x09, 0x2d, 0x76, 0xb1, 0xed, 0x50, 0x86, 0xe8, 0xab, 0x53,
0xf9, 0x18, 0x76, 0xe2, 0x50, 0xe2, 0x35, 0x29, 0x7e, 0x0d, 0xb7, 0x62, 0xcf, 0xe2, 0xe3, 0xf7,
0x77, 0x20, 0x1f, 0x98, 0x6a, 0x78, 0x06, 0xb7, 0x18, 0x55, 0x88, 0x5f, 0xc2, 0xcd, 0x80, 0xe3,
0xb0, 0x6c, 0xf4, 0xb6, 0x73, 0x73, 0xdb, 0x1b, 0xba, 0x07, 0x69, 0xf9, 0xc1, 0x1f, 0x7a, 0x05,
0x11, 0x9b, 0x34, 0x6d, 0x87, 0xdb, 0xb4, 0x50, 0x1d, 0xf4, 0x11, 0x6c, 0xb1, 0x7c, 0x3c, 0x37,
0x4f, 0xe7, 0x93, 0x50, 0x52, 0x16, 0xe8, 0x42, 0x7f, 0x01, 0x17, 0x4b, 0x50, 0xe8, 0x61, 0x7b,
0xea, 0x70, 0x26, 0xc5, 0x9f, 0x27, 0xa1, 0xc8, 0x01, 0xfc, 0xe4, 0x03, 0xd8, 0x22, 0xb1, 0x34,
0xee, 0x33, 0xd7, 0xe6, 0x54, 0xbf, 0x90, 0x82, 0x5f, 0x65, 0xfe, 0x06, 0xf6, 0x08, 0x2e, 0x13,
0x33, 0x36, 0xd6, 0x55, 0x93, 0xe5, 0x84, 0x72, 0x63, 0xaa, 0x5f, 0x50, 0xbe, 0x23, 0x91, 0x62,
0xa9, 0x9b, 0x4b, 0xbd, 0x7d, 0x37, 0xa7, 0xc2, 0x66, 0x38, 0x32, 0x79, 0x53, 0xd6, 0x03, 0x9f,
0x3a, 0x24, 0xd7, 0x61, 0x2b, 0x18, 0xaa, 0xbc, 0x11, 0x6b, 0x28, 0x7e, 0x39, 0x15, 0x09, 0xb6,
0x63, 0xd0, 0x82, 0x2d, 0x56, 0x31, 0x66, 0x54, 0x94, 0x0d, 0xf6, 0x52, 0x55, 0xd8, 0x51, 0xf0,
0x04, 0xbf, 0xd6, 0x4d, 0xb7, 0xca, 0x06, 0xbc, 0xcc, 0x1a, 0x4a, 0x90, 0xf4, 0xbb, 0xa2, 0xa4,
0x31, 0x42, 0x15, 0xfa, 0x69, 0x86, 0xb5, 0xc0, 0xc4, 0xd5, 0x0a, 0x8a, 0xff, 0x2e, 0xfe, 0x3a,
0x05, 0xc5, 0xd0, 0x26, 0xc1, 0x98, 0x9a, 0x08, 0x27, 0x07, 0xb6, 0x6f, 0xd2, 0xdf, 0xf7, 0x8f,
0x6e, 0xb1, 0xbb, 0x4b, 0x93, 0x82, 0x74, 0x64, 0xf8, 0x16, 0x62, 0xed, 0xa7, 0x4f, 0x09, 0xd6,
0x57, 0x4d, 0x09, 0x96, 0xcc, 0x62, 0xe3, 0xed, 0xcd, 0xe2, 0x2e, 0xe4, 0x83, 0xed, 0x3d, 0xab,
0x5b, 0x82, 0xa0, 0x55, 0x9d, 0x7d, 0x36, 0xb6, 0xb3, 0xff, 0xf3, 0xf5, 0xdc, 0x75, 0x28, 0x04,
0xc5, 0x60, 0xbd, 0xb3, 0x83, 0xa9, 0xbc, 0xcc, 0xdb, 0x32, 0xe4, 0x9d, 0x2f, 0x79, 0x1c, 0xd3,
0xed, 0xd3, 0x4a, 0x86, 0xb3, 0x29, 0x7e, 0x05, 0xf9, 0x40, 0xb9, 0x44, 0xcc, 0xc4, 0xc4, 0xee,
0x1b, 0xcb, 0x3e, 0xe7, 0xbc, 0x79, 0xaf, 0x08, 0x41, 0x9a, 0x16, 0x5b, 0xec, 0x9b, 0x07, 0x7d,
0x16, 0x25, 0xc8, 0x7a, 0x19, 0x88, 0xac, 0xd3, 0xce, 0x9c, 0x19, 0x28, 0x7d, 0x26, 0x85, 0x3e,
0x0b, 0xeb, 0xbc, 0x8c, 0xe6, 0x85, 0x3e, 0x83, 0xd1, 0x22, 0x5a, 0xfc, 0xd7, 0x04, 0xe4, 0x25,
0xe7, 0x5c, 0x35, 0xf5, 0x99, 0x73, 0x66, 0xb9, 0x57, 0xd8, 0xe9, 0x4f, 0x29, 0x89, 0xc2, 0x45,
0x6d, 0x2a, 0x5a, 0xd4, 0x86, 0x4a, 0xc2, 0x74, 0xb8, 0x24, 0xa4, 0x9c, 0x55, 0x8d, 0xd1, 0x5f,
0x20, 0x67, 0xbf, 0x48, 0xc0, 0x4e, 0xd0, 0x2a, 0x7c, 0x16, 0x43, 0x1f, 0x99, 0x03, 0xde, 0xba,
0xd0, 0x6f, 0xcc, 0x47, 0xe6, 0x05, 0x5e, 0x40, 0x5a, 0xd6, 0xa8, 0xbd, 0x0b, 0xcc, 0x11, 0x89,
0xdf, 0x51, 0xe3, 0x61, 0x7c, 0x16, 0x3c, 0x20, 0x75, 0xb6, 0x8f, 0x01, 0xb9, 0x96, 0xab, 0x4f,
0x88, 0x2f, 0x38, 0x1a, 0x75, 0x46, 0x3c, 0xa2, 0x3c, 0xa7, 0x15, 0x81, 0xae, 0xa8, 0xba, 0xeb,
0xd4, 0x18, 0x9c, 0x6c, 0xc9, 0x72, 0x0d, 0xf7, 0x70, 0xee, 0xc4, 0xac, 0x21, 0xe4, 0x42, 0x89,
0x8f, 0x60, 0x87, 0x86, 0x06, 0x9f, 0x1b, 0x1e, 0x02, 0xaf, 0x98, 0x27, 0xfd, 0x7b, 0x12, 0x76,
0x23, 0x34, 0x3c, 0x1d, 0xad, 0xbe, 0xb7, 0xe0, 0x76, 0xc9, 0xf0, 0xb4, 0x49, 0x84, 0xe2, 0xcc,
0xc6, 0xaf, 0x35, 0x7f, 0x9d, 0x0d, 0x2d, 0xf2, 0x04, 0x58, 0xe5, 0x38, 0x2b, 0xa2, 0x52, 0x7a,
0x55, 0x54, 0xaa, 0x2f, 0xc5, 0xc5, 0x75, 0x1a, 0x17, 0xf7, 0x63, 0x5d, 0xdd, 0x97, 0x23, 0x12,
0x0b, 0xef, 0x40, 0xde, 0x9b, 0x83, 0x11, 0xbe, 0x32, 0xd4, 0x1d, 0xbd, 0x41, 0x58, 0x73, 0xb4,
0x10, 0xca, 0xbd, 0xe0, 0x3d, 0x59, 0x86, 0x2f, 0x8a, 0x4f, 0xbd, 0x52, 0x83, 0x78, 0xbc, 0xa2,
0xbb, 0xe4, 0x06, 0xb9, 0x66, 0xef, 0x41, 0xc1, 0x6b, 0xb5, 0xce, 0xf1, 0x25, 0x9b, 0x46, 0x14,
0x94, 0x3c, 0x6f, 0xb7, 0x08, 0x48, 0xfc, 0x3b, 0x80, 0x05, 0x1d, 0xa9, 0x4d, 0x02, 0x04, 0x5e,
0x6d, 0xb2, 0xc0, 0x47, 0x87, 0xbc, 0x43, 0xa3, 0xfd, 0x46, 0x72, 0x55, 0xbf, 0x41, 0xdb, 0x33,
0xf2, 0x24, 0x2a, 0x5e, 0x2d, 0x13, 0x64, 0x8e, 0x5f, 0xe1, 0x13, 0xce, 0x9d, 0x4d, 0xc1, 0xcb,
0xb3, 0x92, 0x00, 0x09, 0xe5, 0x8a, 0x3d, 0x3b, 0x07, 0x1f, 0xfa, 0xdf, 0xde, 0x68, 0x93, 0x57,
0x84, 0x5c, 0xef, 0xa5, 0x2c, 0x3d, 0x6f, 0xc9, 0xaa, 0x2a, 0xac, 0xa1, 0x3c, 0x64, 0xa4, 0x76,
0xad, 0xd1, 0x51, 0x54, 0x21, 0x71, 0xf0, 0x2f, 0x09, 0xd8, 0x8e, 0x19, 0x15, 0xd1, 0xaf, 0x97,
0x3d, 0xf6, 0xad, 0x8f, 0x7d, 0xd9, 0xeb, 0x74, 0xe5, 0xb6, 0xb0, 0x86, 0x4a, 0x00, 0x0c, 0x4e,
0xdf, 0x13, 0x68, 0x0b, 0x8a, 0xec, 0x5d, 0xfe, 0xae, 0xdb, 0x54, 0xe4, 0xba, 0x90, 0x44, 0x65,
0xd8, 0x09, 0x93, 0xf6, 0xbb, 0x75, 0xa9, 0x27, 0x0b, 0x29, 0x24, 0x40, 0x81, 0xad, 0xd4, 0x5a,
0x1d, 0x55, 0xae, 0x0b, 0x69, 0x74, 0x13, 0xb6, 0xc3, 0xb8, 0xf4, 0xd3, 0xa8, 0xb0, 0x7e, 0xf0,
0x29, 0x64, 0x3d, 0x65, 0x11, 0xb2, 0x5e, 0x53, 0x56, 0xb4, 0xba, 0x7c, 0x2c, 0xf5, 0x5b, 0x3d,
0x61, 0x0d, 0x01, 0x6c, 0x50, 0xc8, 0x27, 0x42, 0xc2, 0x7f, 0x7e, 0x24, 0x24, 0x0f, 0x7e, 0x4c,
0x00, 0x2c, 0xea, 0x3c, 0xb4, 0x0d, 0x9b, 0x1d, 0xa5, 0x2e, 0x2b, 0x9a, 0xda, 0xaf, 0x9e, 0x34,
0x7b, 0x6c, 0xf2, 0xb0, 0x05, 0x45, 0x06, 0xac, 0xb5, 0x64, 0x89, 0x70, 0x4c, 0x07, 0x85, 0x0c,
0xc4, 0x3f, 0xbe, 0xb6, 0x5e, 0x69, 0xc7, 0xcd, 0x56, 0x8b, 0x4a, 0x83, 0xa0, 0xc4, 0xd6, 0xe4,
0xef, 0xe4, 0x5a, 0x9f, 0x6c, 0x91, 0x5a, 0xc0, 0x6a, 0x52, 0xbb, 0x26, 0xb7, 0xa8, 0x24, 0xfe,
0xb6, 0x9e, 0x22, 0xd6, 0x09, 0xdf, 0x0c, 0xc4, 0xbf, 0x8a, 0x6e, 0x1c, 0xfd, 0x98, 0xf1, 0xbf,
0x87, 0x49, 0xfe, 0x8c, 0x0f, 0x7d, 0x0b, 0xa5, 0xf0, 0x0f, 0x96, 0xd0, 0x9d, 0x40, 0xc9, 0x10,
0xf3, 0x6b, 0xaa, 0xca, 0x3b, 0x2b, 0xd7, 0xb9, 0xe5, 0xf4, 0x20, 0x1f, 0xf8, 0xa5, 0x0e, 0xba,
0xb7, 0xd4, 0x8c, 0x44, 0x7f, 0xab, 0x54, 0x11, 0xaf, 0x42, 0xe1, 0xbb, 0x7e, 0x0f, 0xc5, 0x50,
0xb5, 0x8f, 0xde, 0x7d, 0x8b, 0xbe, 0xa3, 0xf2, 0xde, 0xd5, 0x48, 0x0b, 0x8e, 0x03, 0x3f, 0xe3,
0x59, 0xe2, 0x78, 0xf9, 0xa7, 0x45, 0x4b, 0x1c, 0xc7, 0xfd, 0x0a, 0xa8, 0x17, 0x6e, 0x9c, 0xa3,
0xbb, 0x2e, 0xff, 0x68, 0x67, 0x69, 0xd7, 0x98, 0x9f, 0xe6, 0xa0, 0x6f, 0x43, 0x56, 0x76, 0x37,
0x6e, 0x12, 0x10, 0x6c, 0x68, 0x2a, 0xf7, 0xae, 0xc0, 0xe0, 0x5b, 0xbe, 0x82, 0x5d, 0x7f, 0xc4,
0x4e, 0x03, 0x2d, 0xb7, 0x0f, 0xb4, 0x88, 0x92, 0x71, 0x3f, 0x06, 0xaa, 0xec, 0x47, 0x67, 0x98,
0xa1, 0xe5, 0xfb, 0x89, 0x4f, 0x12, 0xe8, 0x09, 0xac, 0xd3, 0x82, 0x1e, 0xed, 0x46, 0x0b, 0x7c,
0xc6, 0xdd, 0x8d, 0xf8, 0xba, 0x1f, 0xb5, 0x61, 0x37, 0x54, 0xb0, 0xfa, 0xe9, 0x76, 0x3f, 0xbe,
0xa0, 0x5d, 0xde, 0x2f, 0x5c, 0x8a, 0xb7, 0xa1, 0xb8, 0x6a, 0x9f, 0xb8, 0xac, 0x57, 0xb9, 0xb3,
0x6a, 0x79, 0x71, 0x0b, 0x81, 0xc0, 0x1c, 0xbd, 0x85, 0xa5, 0x58, 0xbf, 0x74, 0x0b, 0xcb, 0x01,
0xb7, 0xfa, 0x57, 0xdf, 0xbf, 0x3f, 0x36, 0xdc, 0xb3, 0xf9, 0xe0, 0x70, 0x68, 0x4d, 0x1f, 0x4e,
0x8c, 0xf1, 0x99, 0x6b, 0x1a, 0xe6, 0x78, 0xa2, 0x0f, 0x9c, 0x87, 0x84, 0xf8, 0x21, 0xdf, 0x61,
0xb0, 0x41, 0x7f, 0xf8, 0xf8, 0xf8, 0xf7, 0x01, 0x00, 0x00, 0xff, 0xff, 0x1b, 0x22, 0xc2, 0x07,
0x0c, 0x29, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -4090,6 +4281,7 @@ type ChannelAuctioneerClient interface {
Terms(ctx context.Context, in *TermsRequest, opts ...grpc.CallOption) (*TermsResponse, error)
RelevantBatchSnapshot(ctx context.Context, in *RelevantBatchRequest, opts ...grpc.CallOption) (*RelevantBatch, error)
BatchSnapshot(ctx context.Context, in *BatchSnapshotRequest, opts ...grpc.CallOption) (*BatchSnapshotResponse, error)
NodeRating(ctx context.Context, in *ServerNodeRatingRequest, opts ...grpc.CallOption) (*ServerNodeRatingResponse, error)
}
type channelAuctioneerClient struct {
@ -4212,6 +4404,15 @@ func (c *channelAuctioneerClient) BatchSnapshot(ctx context.Context, in *BatchSn
return out, nil
}
func (c *channelAuctioneerClient) NodeRating(ctx context.Context, in *ServerNodeRatingRequest, opts ...grpc.CallOption) (*ServerNodeRatingResponse, error) {
out := new(ServerNodeRatingResponse)
err := c.cc.Invoke(ctx, "/poolrpc.ChannelAuctioneer/NodeRating", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// ChannelAuctioneerServer is the server API for ChannelAuctioneer service.
type ChannelAuctioneerServer interface {
ReserveAccount(context.Context, *ReserveAccountRequest) (*ReserveAccountResponse, error)
@ -4224,6 +4425,7 @@ type ChannelAuctioneerServer interface {
Terms(context.Context, *TermsRequest) (*TermsResponse, error)
RelevantBatchSnapshot(context.Context, *RelevantBatchRequest) (*RelevantBatch, error)
BatchSnapshot(context.Context, *BatchSnapshotRequest) (*BatchSnapshotResponse, error)
NodeRating(context.Context, *ServerNodeRatingRequest) (*ServerNodeRatingResponse, error)
}
// UnimplementedChannelAuctioneerServer can be embedded to have forward compatible implementations.
@ -4260,6 +4462,9 @@ func (*UnimplementedChannelAuctioneerServer) RelevantBatchSnapshot(ctx context.C
func (*UnimplementedChannelAuctioneerServer) BatchSnapshot(ctx context.Context, req *BatchSnapshotRequest) (*BatchSnapshotResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method BatchSnapshot not implemented")
}
func (*UnimplementedChannelAuctioneerServer) NodeRating(ctx context.Context, req *ServerNodeRatingRequest) (*ServerNodeRatingResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method NodeRating not implemented")
}
func RegisterChannelAuctioneerServer(s *grpc.Server, srv ChannelAuctioneerServer) {
s.RegisterService(&_ChannelAuctioneer_serviceDesc, srv)
@ -4453,6 +4658,24 @@ func _ChannelAuctioneer_BatchSnapshot_Handler(srv interface{}, ctx context.Conte
return interceptor(ctx, in, info, handler)
}
func _ChannelAuctioneer_NodeRating_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ServerNodeRatingRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(ChannelAuctioneerServer).NodeRating(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/poolrpc.ChannelAuctioneer/NodeRating",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ChannelAuctioneerServer).NodeRating(ctx, req.(*ServerNodeRatingRequest))
}
return interceptor(ctx, in, info, handler)
}
var _ChannelAuctioneer_serviceDesc = grpc.ServiceDesc{
ServiceName: "poolrpc.ChannelAuctioneer",
HandlerType: (*ChannelAuctioneerServer)(nil),
@ -4493,6 +4716,10 @@ var _ChannelAuctioneer_serviceDesc = grpc.ServiceDesc{
MethodName: "BatchSnapshot",
Handler: _ChannelAuctioneer_BatchSnapshot_Handler,
},
{
MethodName: "NodeRating",
Handler: _ChannelAuctioneer_NodeRating_Handler,
},
},
Streams: []grpc.StreamDesc{
{

View file

@ -15,6 +15,7 @@ service ChannelAuctioneer {
rpc Terms (TermsRequest) returns (TermsResponse);
rpc RelevantBatchSnapshot (RelevantBatchRequest) returns (RelevantBatch);
rpc BatchSnapshot (BatchSnapshotRequest) returns (BatchSnapshotResponse);
rpc NodeRating(ServerNodeRatingRequest) returns (ServerNodeRatingResponse);
}
message ReserveAccountRequest {
@ -788,6 +789,23 @@ message ServerOrder {
uint64 max_batch_fee_rate_sat_per_kw = 13;
}
enum NodeTier {
// The default node tier. This value will be determined at run-time by the
// current order version.
TIER_DEFAULT = 0;
// Tier 0, bid with this tier are opting out of the smaller "higher
// quality" pool of nodes to match their bids. Nodes in this tier are
// considered to have "no rating".
TIER_0 = 1;
// Tier 1, the "base" node tier. Nodes in this tier are shown to have a
// higher degree of up time and route-ability compared to the rest of the
// nodes in the network. This is the current default node tier when
// submitting bid orders.
TIER_1 = 2;
}
message ServerBid {
/*
The common fields shared between both ask and bid order types.
@ -809,6 +827,12 @@ message ServerBid {
features are added.
*/
uint32 version = 4;
/*
The minium node tier this order should be matched with. Only asks backed by
a node this tier or higher will be eligible for matching with this bid.
*/
NodeTier min_node_tier = 5;
}
message ServerAsk {
@ -1096,3 +1120,21 @@ message BatchSnapshotResponse {
// The batch transaction including all witness data.
bytes batch_tx = 6;
}
message ServerNodeRatingRequest {
// The target node to obtain ratings information for.
repeated bytes node_pubkeys = 1;
}
message NodeRating {
// The pubkey for the node these ratings belong to.
bytes node_pubkey = 1;
// The tier of the target node.
NodeTier node_tier = 2;
}
message ServerNodeRatingResponse {
// A series of node ratings for each of the queried nodes.
repeated NodeRating node_ratings = 1;
}

View file

@ -1695,7 +1695,11 @@ type Bid struct {
//
//The version of the order format that is used. Will be increased once new
//features are added.
Version uint32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"`
Version uint32 `protobuf:"varint,3,opt,name=version,proto3" json:"version,omitempty"`
//
//The minium node tier this order should be matched with. Only asks backed by
//a node this tier or higher will be eligible for matching with this bid.
MinNodeTier NodeTier `protobuf:"varint,4,opt,name=min_node_tier,json=minNodeTier,proto3,enum=poolrpc.NodeTier" json:"min_node_tier,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -1747,6 +1751,13 @@ func (m *Bid) GetVersion() uint32 {
return 0
}
func (m *Bid) GetMinNodeTier() NodeTier {
if m != nil {
return m.MinNodeTier
}
return NodeTier_TIER_DEFAULT
}
type Ask struct {
//
//The common fields shared between both ask and bid order types.
@ -2215,7 +2226,11 @@ type Lease struct {
// The order executed that resulted in the channel created.
OrderNonce []byte `protobuf:"bytes,10,opt,name=order_nonce,json=orderNonce,proto3" json:"order_nonce,omitempty"`
// Whether this channel was purchased from another trader or not.
Purchased bool `protobuf:"varint,11,opt,name=purchased,proto3" json:"purchased,omitempty"`
Purchased bool `protobuf:"varint,11,opt,name=purchased,proto3" json:"purchased,omitempty"`
// The pubkey of the node that this channel was bought/sold from.
ChannelRemoteNodeKey []byte `protobuf:"bytes,12,opt,name=channel_remote_node_key,json=channelRemoteNodeKey,proto3" json:"channel_remote_node_key,omitempty"`
// The tier of the node that this channel was bought/sold from.
ChannelNodeTier NodeTier `protobuf:"varint,13,opt,name=channel_node_tier,json=channelNodeTier,proto3,enum=poolrpc.NodeTier" json:"channel_node_tier,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -2323,6 +2338,20 @@ func (m *Lease) GetPurchased() bool {
return false
}
func (m *Lease) GetChannelRemoteNodeKey() []byte {
if m != nil {
return m.ChannelRemoteNodeKey
}
return nil
}
func (m *Lease) GetChannelNodeTier() NodeTier {
if m != nil {
return m.ChannelNodeTier
}
return NodeTier_TIER_DEFAULT
}
type LeasesRequest struct {
//
//An optional list of batches to retrieve the leases of. If empty, leases
@ -2690,6 +2719,86 @@ func (m *LeaseDurationResponse) GetLeaseDurations() map[uint32]bool {
return nil
}
type NodeRatingRequest struct {
// The target node to obtain ratings information for.
NodePubkeys [][]byte `protobuf:"bytes,1,rep,name=node_pubkeys,json=nodePubkeys,proto3" json:"node_pubkeys,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *NodeRatingRequest) Reset() { *m = NodeRatingRequest{} }
func (m *NodeRatingRequest) String() string { return proto.CompactTextString(m) }
func (*NodeRatingRequest) ProtoMessage() {}
func (*NodeRatingRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_b8f61804588c75fe, []int{41}
}
func (m *NodeRatingRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeRatingRequest.Unmarshal(m, b)
}
func (m *NodeRatingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_NodeRatingRequest.Marshal(b, m, deterministic)
}
func (m *NodeRatingRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_NodeRatingRequest.Merge(m, src)
}
func (m *NodeRatingRequest) XXX_Size() int {
return xxx_messageInfo_NodeRatingRequest.Size(m)
}
func (m *NodeRatingRequest) XXX_DiscardUnknown() {
xxx_messageInfo_NodeRatingRequest.DiscardUnknown(m)
}
var xxx_messageInfo_NodeRatingRequest proto.InternalMessageInfo
func (m *NodeRatingRequest) GetNodePubkeys() [][]byte {
if m != nil {
return m.NodePubkeys
}
return nil
}
type NodeRatingResponse struct {
// A series of node ratings for each of the queried nodes.
NodeRatings []*NodeRating `protobuf:"bytes,1,rep,name=node_ratings,json=nodeRatings,proto3" json:"node_ratings,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *NodeRatingResponse) Reset() { *m = NodeRatingResponse{} }
func (m *NodeRatingResponse) String() string { return proto.CompactTextString(m) }
func (*NodeRatingResponse) ProtoMessage() {}
func (*NodeRatingResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b8f61804588c75fe, []int{42}
}
func (m *NodeRatingResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NodeRatingResponse.Unmarshal(m, b)
}
func (m *NodeRatingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_NodeRatingResponse.Marshal(b, m, deterministic)
}
func (m *NodeRatingResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_NodeRatingResponse.Merge(m, src)
}
func (m *NodeRatingResponse) XXX_Size() int {
return xxx_messageInfo_NodeRatingResponse.Size(m)
}
func (m *NodeRatingResponse) XXX_DiscardUnknown() {
xxx_messageInfo_NodeRatingResponse.DiscardUnknown(m)
}
var xxx_messageInfo_NodeRatingResponse proto.InternalMessageInfo
func (m *NodeRatingResponse) GetNodeRatings() []*NodeRating {
if m != nil {
return m.NodeRatings
}
return nil
}
func init() {
proto.RegisterEnum("poolrpc.AccountState", AccountState_name, AccountState_value)
proto.RegisterEnum("poolrpc.MatchState", MatchState_name, MatchState_value)
@ -2736,189 +2845,200 @@ func init() {
proto.RegisterType((*LeaseDurationRequest)(nil), "poolrpc.LeaseDurationRequest")
proto.RegisterType((*LeaseDurationResponse)(nil), "poolrpc.LeaseDurationResponse")
proto.RegisterMapType((map[uint32]bool)(nil), "poolrpc.LeaseDurationResponse.LeaseDurationsEntry")
proto.RegisterType((*NodeRatingRequest)(nil), "poolrpc.NodeRatingRequest")
proto.RegisterType((*NodeRatingResponse)(nil), "poolrpc.NodeRatingResponse")
}
func init() { proto.RegisterFile("trader.proto", fileDescriptor_b8f61804588c75fe) }
var fileDescriptor_b8f61804588c75fe = []byte{
// 2829 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x49, 0x73, 0x23, 0xc7,
0xb1, 0x26, 0xc0, 0x15, 0x89, 0x85, 0x60, 0x81, 0xe4, 0x70, 0x30, 0x43, 0x0d, 0xa7, 0xdf, 0x93,
0xde, 0x0c, 0xa5, 0x37, 0x94, 0xf8, 0x24, 0x3d, 0xc7, 0x58, 0x61, 0x19, 0x20, 0x9b, 0x02, 0x2c,
0x0e, 0x08, 0x17, 0x39, 0x63, 0x2d, 0x11, 0xee, 0x28, 0xa0, 0x8b, 0x64, 0x8b, 0x40, 0x37, 0xd4,
0x5d, 0xe0, 0x62, 0x85, 0x2e, 0xb6, 0x7f, 0x80, 0xc3, 0x0a, 0xfb, 0xea, 0x3f, 0x61, 0x87, 0x0f,
0x8e, 0xf0, 0xc1, 0x27, 0x47, 0xd8, 0x37, 0x1f, 0x7d, 0xf5, 0x0f, 0x71, 0x54, 0x56, 0x15, 0xd0,
0xdd, 0x00, 0x47, 0xcb, 0xc5, 0x37, 0x74, 0x2e, 0xf5, 0x65, 0x66, 0x65, 0x55, 0x66, 0x25, 0xa0,
0x20, 0x42, 0xe6, 0xf2, 0xf0, 0xc9, 0x20, 0x0c, 0x44, 0x40, 0x16, 0x07, 0x41, 0xd0, 0x0b, 0x07,
0xdd, 0xea, 0xfd, 0xb3, 0x20, 0x38, 0xeb, 0xf1, 0x1d, 0x36, 0xf0, 0x76, 0x98, 0xef, 0x07, 0x82,
0x09, 0x2f, 0xf0, 0x23, 0x25, 0x56, 0x2d, 0xb3, 0x61, 0x57, 0x7e, 0x73, 0xa3, 0x68, 0xfd, 0x3d,
0x03, 0xa4, 0xe9, 0x7b, 0xa2, 0xd6, 0xed, 0x06, 0x43, 0x5f, 0x50, 0xfe, 0xf9, 0x90, 0x47, 0x82,
0xfc, 0x17, 0x14, 0x99, 0xa2, 0x38, 0x97, 0xac, 0x37, 0xe4, 0x1b, 0x99, 0xad, 0xcc, 0xa3, 0x39,
0x5a, 0xd0, 0xc4, 0x17, 0x92, 0x46, 0x1e, 0xc3, 0x32, 0xeb, 0x44, 0x41, 0x6f, 0x28, 0xb8, 0x73,
0xce, 0xbd, 0xb3, 0x73, 0xb1, 0x91, 0xdd, 0xca, 0x3c, 0x2a, 0x36, 0x66, 0x68, 0xc9, 0x30, 0x1a,
0x48, 0x97, 0xa2, 0x21, 0xef, 0x31, 0xe1, 0x5d, 0x8e, 0x44, 0x67, 0x8d, 0xa8, 0x61, 0x68, 0xd1,
0x87, 0x90, 0xef, 0x06, 0xfe, 0xa9, 0x23, 0x58, 0x78, 0xc6, 0xc5, 0xc6, 0x1c, 0x8a, 0x65, 0x28,
0x48, 0xe2, 0x09, 0xd2, 0xea, 0x65, 0x28, 0x19, 0xeb, 0xf8, 0xf5, 0xc0, 0x0b, 0x6f, 0xea, 0x0b,
0x30, 0x77, 0xca, 0x79, 0x64, 0x71, 0xa8, 0xfc, 0x78, 0x18, 0x08, 0xfe, 0x5d, 0xdc, 0x49, 0x01,
0x1b, 0x57, 0xe2, 0xc0, 0x06, 0xe6, 0x0a, 0x56, 0x93, 0x30, 0xd1, 0x20, 0xf0, 0x23, 0x4e, 0xfe,
0x1f, 0xee, 0xf6, 0x3d, 0x9f, 0x87, 0xce, 0x29, 0xe7, 0x4e, 0xc8, 0x04, 0x77, 0x22, 0x26, 0x9c,
0x01, 0x0f, 0x9d, 0x8b, 0x2b, 0x8d, 0xb9, 0x8a, 0x02, 0x07, 0x9c, 0x53, 0x26, 0xf8, 0x31, 0x13,
0x6d, 0x1e, 0x7e, 0x78, 0x45, 0x5e, 0x83, 0xe5, 0xb1, 0xa2, 0x08, 0x04, 0xeb, 0x21, 0xfe, 0x1c,
0x2d, 0x1a, 0xf1, 0x13, 0x49, 0xb4, 0xd6, 0xa0, 0x72, 0xe8, 0x45, 0x66, 0xb7, 0x22, 0xed, 0x9f,
0xb5, 0x0f, 0xab, 0x49, 0xb2, 0xb6, 0xe7, 0x0d, 0x58, 0xd2, 0x2e, 0x46, 0x1b, 0x99, 0xad, 0xd9,
0x47, 0xf9, 0xdd, 0xf2, 0x13, 0x9d, 0x29, 0x4f, 0x8c, 0xed, 0x23, 0x09, 0xeb, 0x7d, 0x58, 0x38,
0x1a, 0x8a, 0xc1, 0x50, 0x90, 0x7b, 0x90, 0xc3, 0x38, 0x49, 0xf3, 0xb5, 0xdd, 0x4b, 0x48, 0x38,
0x66, 0x82, 0x6c, 0xc0, 0x22, 0x73, 0xdd, 0x90, 0x47, 0x11, 0xda, 0x98, 0xa3, 0xe6, 0xd3, 0xfa,
0x65, 0x06, 0x8a, 0x6a, 0x85, 0x9f, 0x78, 0xe2, 0xfc, 0x80, 0xf3, 0xb8, 0x6c, 0x26, 0x21, 0xfb,
0x0d, 0xa2, 0x4d, 0x9e, 0x40, 0x65, 0x5a, 0x1c, 0x65, 0xe2, 0xcc, 0x35, 0x66, 0xe8, 0xf2, 0x69,
0x32, 0x88, 0xa3, 0xdd, 0xd9, 0x83, 0x75, 0x65, 0x45, 0x24, 0xcd, 0x68, 0xf6, 0x07, 0x3d, 0xaf,
0xeb, 0x09, 0x69, 0xce, 0x63, 0x58, 0x0c, 0x14, 0x47, 0x87, 0x63, 0x79, 0x14, 0x0e, 0xa5, 0x41,
0x0d, 0xdf, 0xfa, 0x6b, 0x06, 0x2a, 0x7b, 0xbd, 0x20, 0x4a, 0xa7, 0xd2, 0x26, 0x80, 0x3a, 0x79,
0xce, 0x05, 0xbf, 0x41, 0xa7, 0x0a, 0x34, 0xa7, 0x28, 0x1f, 0xf2, 0x1b, 0xf2, 0x43, 0x58, 0x56,
0x2b, 0x38, 0x57, 0x9e, 0x38, 0x97, 0xdb, 0x89, 0xae, 0xe5, 0x77, 0xd7, 0x53, 0x48, 0x3a, 0x42,
0x8d, 0x19, 0x5a, 0x0c, 0x12, 0x21, 0xfb, 0xfe, 0xd8, 0xc6, 0x59, 0xd4, 0x7c, 0x90, 0xd2, 0x4c,
0x7b, 0xd5, 0x98, 0x19, 0x59, 0x5d, 0xaf, 0xc0, 0xca, 0xe9, 0xd0, 0x77, 0x23, 0xc7, 0xe5, 0x91,
0xf0, 0x7c, 0x3c, 0xfc, 0xd6, 0x3b, 0xb0, 0x9a, 0xf4, 0x44, 0x67, 0xc7, 0x26, 0x40, 0x57, 0xd2,
0x1d, 0x71, 0xed, 0xb9, 0xc6, 0x15, 0xa4, 0x9c, 0x5c, 0x7b, 0xae, 0xf5, 0xab, 0x0c, 0xac, 0x4b,
0x28, 0x37, 0x64, 0x57, 0xdf, 0x2e, 0x08, 0xb1, 0x30, 0x67, 0x5f, 0x1e, 0x66, 0xf2, 0xc6, 0x4b,
0xf6, 0x78, 0x62, 0x87, 0xad, 0xcf, 0xe0, 0xce, 0x84, 0x45, 0xda, 0x99, 0x6d, 0x58, 0xd4, 0x89,
0x8c, 0xf6, 0x4c, 0xcb, 0x74, 0x23, 0x20, 0xaf, 0x83, 0x2b, 0xbd, 0x8c, 0xf2, 0x3d, 0x8b, 0x1e,
0x14, 0x0c, 0x11, 0xdd, 0xff, 0x45, 0x06, 0xd6, 0xf6, 0xf9, 0x20, 0x88, 0x26, 0x2e, 0xc7, 0xaf,
0xf1, 0x7e, 0x13, 0x80, 0xf5, 0xf1, 0xae, 0x91, 0xa7, 0x47, 0x1d, 0xe3, 0x9c, 0xa2, 0xc8, 0xe3,
0xf3, 0xed, 0x3c, 0x3e, 0x83, 0xf5, 0xb4, 0x11, 0xdf, 0xc1, 0xe1, 0x87, 0x50, 0x70, 0xd5, 0x2a,
0x71, 0x7f, 0xf3, 0x9a, 0x86, 0xee, 0xba, 0xb0, 0x56, 0x1f, 0xf6, 0x07, 0x5a, 0x55, 0xde, 0x4f,
0xdf, 0xcc, 0xdb, 0x5b, 0xdc, 0xc9, 0x4e, 0x77, 0x67, 0x03, 0xd6, 0xd3, 0x28, 0xca, 0x1d, 0xeb,
0x37, 0x59, 0x58, 0xd4, 0xe4, 0xaf, 0x83, 0xfc, 0x5f, 0x58, 0x92, 0xe9, 0x13, 0x78, 0xbe, 0xd0,
0x87, 0x6b, 0x25, 0x9e, 0x5f, 0x6d, 0xc9, 0xa0, 0x23, 0x11, 0xb2, 0x0a, 0xf3, 0xea, 0xd2, 0x57,
0x21, 0x56, 0x1f, 0xe4, 0x75, 0x58, 0x61, 0x97, 0xcc, 0xeb, 0xb1, 0x4e, 0x8f, 0x3b, 0x1d, 0xd6,
0x63, 0x7e, 0x97, 0x63, 0xb1, 0x99, 0xa3, 0xe5, 0x11, 0xa3, 0xae, 0xe8, 0x52, 0x18, 0x0b, 0x0d,
0x9e, 0x27, 0x53, 0xc0, 0xe6, 0xe5, 0x95, 0x45, 0xcb, 0x63, 0x86, 0x2e, 0x60, 0xaf, 0xc3, 0x7c,
0x24, 0x98, 0xe0, 0x1b, 0x0b, 0x5b, 0x99, 0x47, 0xa5, 0xdd, 0xb5, 0xf4, 0xb6, 0x1c, 0x4b, 0x26,
0x55, 0x32, 0xe4, 0x01, 0xe4, 0x7b, 0x4c, 0xf0, 0x48, 0x6f, 0xcc, 0x22, 0xfa, 0x0a, 0x8a, 0x84,
0xfb, 0xd2, 0x05, 0x72, 0x3c, 0xec, 0xf4, 0x3d, 0x71, 0x14, 0xba, 0x3c, 0x34, 0x9b, 0xb2, 0x05,
0xb3, 0x2c, 0xba, 0xd0, 0x1b, 0x5f, 0x18, 0x23, 0x44, 0x17, 0x8d, 0x19, 0x2a, 0x59, 0x52, 0xa2,
0xa3, 0x77, 0x3a, 0x2e, 0x51, 0xf7, 0x5c, 0x29, 0xd1, 0xf1, 0xdc, 0x7a, 0x0e, 0x16, 0x5d, 0x2e,
0x98, 0xd7, 0x8b, 0xac, 0x5f, 0x67, 0xa0, 0x92, 0x40, 0xd1, 0x39, 0xf6, 0x1e, 0x14, 0x3d, 0xff,
0x92, 0xf5, 0x3c, 0xd7, 0x09, 0x24, 0x43, 0x03, 0x8e, 0x5d, 0x6a, 0x2a, 0x2e, 0x6a, 0x35, 0x66,
0x68, 0xc1, 0x8b, 0x7d, 0x93, 0x5d, 0x58, 0x65, 0xdd, 0x2e, 0x1f, 0x08, 0xae, 0xd5, 0x1d, 0x3f,
0x90, 0x51, 0xc6, 0xec, 0x6b, 0xcc, 0x50, 0x62, 0xb8, 0x28, 0xde, 0x92, 0xbc, 0xb8, 0x51, 0x2d,
0x58, 0x91, 0x45, 0x0d, 0x99, 0xa6, 0xd2, 0xc9, 0x82, 0x72, 0xc9, 0xc3, 0x4e, 0x10, 0xa9, 0x1a,
0xbe, 0x44, 0xcd, 0xa7, 0x8c, 0x24, 0xeb, 0x62, 0x83, 0x11, 0xf8, 0xbd, 0x1b, 0x04, 0x59, 0xa2,
0xa0, 0x48, 0x47, 0x7e, 0xef, 0xc6, 0xfa, 0x08, 0x48, 0x7c, 0x3d, 0xed, 0xe2, 0x16, 0xcc, 0xb1,
0xe8, 0xc2, 0xd4, 0x83, 0x44, 0x28, 0x29, 0x72, 0xa4, 0x44, 0xc7, 0x73, 0xcd, 0x55, 0x96, 0x08,
0x25, 0x45, 0x8e, 0xf5, 0x0e, 0x90, 0x3d, 0x99, 0x27, 0xbd, 0xc4, 0x1e, 0x3d, 0x80, 0x7c, 0xdc,
0x6b, 0x95, 0xc6, 0x10, 0x8c, 0x7c, 0x95, 0xc5, 0x3c, 0xa1, 0xa6, 0x4f, 0xc2, 0x1f, 0x66, 0x61,
0x5e, 0x05, 0xf0, 0xeb, 0x2f, 0x1a, 0x3c, 0x76, 0xa7, 0xde, 0x35, 0x57, 0x3b, 0x5d, 0xa4, 0x39,
0x49, 0x39, 0x90, 0x04, 0x52, 0x86, 0x59, 0xd6, 0x17, 0x3a, 0xeb, 0xe5, 0x4f, 0xf2, 0x03, 0xd8,
0xec, 0xb3, 0x6b, 0xa7, 0xc3, 0x44, 0xf7, 0x7c, 0x6a, 0x8b, 0xa2, 0xf2, 0xff, 0x4e, 0x9f, 0x5d,
0xd7, 0xa5, 0x4c, 0xba, 0x4b, 0x49, 0x79, 0x34, 0x9f, 0xf6, 0x88, 0x3c, 0x4e, 0xa6, 0x7e, 0x65,
0x7c, 0x2c, 0xa5, 0x4c, 0x22, 0xf1, 0x57, 0x61, 0x7e, 0xe8, 0x7b, 0x22, 0xc2, 0x94, 0x2f, 0x52,
0xf5, 0x21, 0x0f, 0x1a, 0xfe, 0x70, 0x86, 0xfe, 0xe9, 0xb0, 0x77, 0xea, 0xf5, 0x7a, 0xdc, 0xdd,
0x58, 0x52, 0x07, 0x0d, 0x19, 0xcf, 0xc7, 0x74, 0xf2, 0x06, 0x90, 0x90, 0x47, 0x3c, 0xbc, 0xe4,
0xae, 0x33, 0x6e, 0x57, 0x72, 0xea, 0x0c, 0x1b, 0xce, 0x0b, 0xd3, 0xb6, 0xec, 0xc2, 0x5a, 0x37,
0xe4, 0xea, 0x04, 0x0b, 0xaf, 0xcf, 0x23, 0xc1, 0xfa, 0x03, 0xc7, 0x8f, 0x36, 0x00, 0x15, 0x2a,
0x86, 0x79, 0x62, 0x78, 0x2d, 0x69, 0xce, 0x02, 0xbf, 0xe4, 0xb2, 0x7b, 0xca, 0xe3, 0xe6, 0xa7,
0x1c, 0xb2, 0x25, 0x8f, 0x6a, 0x11, 0xeb, 0x4b, 0x98, 0xad, 0x7b, 0x2e, 0x79, 0x34, 0xca, 0x60,
0x7d, 0x5a, 0x4a, 0x49, 0x25, 0x6a, 0xd8, 0xd2, 0xa2, 0x1e, 0x67, 0x11, 0x77, 0xdc, 0xa1, 0xbe,
0x59, 0x3a, 0xbd, 0xa0, 0x7b, 0x11, 0xe9, 0xad, 0xac, 0x20, 0x73, 0x5f, 0xf3, 0xea, 0xc8, 0xd2,
0xf9, 0x1f, 0x79, 0x81, 0xaf, 0x1a, 0x68, 0x6a, 0x3e, 0x25, 0x7c, 0x2d, 0xba, 0xf8, 0x8f, 0xc1,
0xff, 0x25, 0x03, 0x30, 0x0e, 0x8a, 0xac, 0x38, 0x89, 0x20, 0x4b, 0x5b, 0x66, 0x69, 0x5e, 0xc4,
0x82, 0x7b, 0x0f, 0x72, 0x18, 0x39, 0x27, 0x12, 0xa1, 0xee, 0x24, 0x97, 0x90, 0x70, 0x2c, 0x42,
0xf2, 0x14, 0x0a, 0x98, 0x27, 0x4e, 0xf7, 0x9c, 0xf9, 0x67, 0x5c, 0xb7, 0x42, 0xe3, 0x8b, 0xe7,
0xf9, 0xc0, 0x65, 0x82, 0xbb, 0x08, 0xd6, 0x98, 0xa1, 0x79, 0x14, 0xde, 0x43, 0x59, 0xb2, 0x03,
0x8b, 0x7d, 0x99, 0xbe, 0xdc, 0xc5, 0x84, 0x8e, 0x6f, 0xdb, 0x33, 0x49, 0x37, 0x4a, 0x46, 0xaa,
0xbe, 0x08, 0xf3, 0x08, 0x6c, 0xfd, 0x2e, 0x03, 0x85, 0xf8, 0xca, 0xe4, 0x29, 0x94, 0x06, 0x21,
0xbf, 0xf4, 0x82, 0x61, 0xe4, 0xa8, 0xcc, 0xce, 0xdc, 0x9e, 0xd9, 0x45, 0x23, 0x8a, 0x9f, 0xe4,
0x4d, 0xc8, 0xf9, 0xfc, 0x4a, 0xab, 0x65, 0x6f, 0x57, 0x5b, 0xf2, 0xf9, 0x95, 0xd2, 0x78, 0x08,
0x05, 0x95, 0xfd, 0x3a, 0xf1, 0x55, 0x88, 0xf3, 0x48, 0x3b, 0x40, 0x92, 0xf5, 0xb7, 0x0c, 0xc0,
0xd8, 0x09, 0xf2, 0x36, 0xe4, 0xd1, 0x89, 0x5b, 0x8c, 0x43, 0x49, 0x85, 0x02, 0xfd, 0xd1, 0xef,
0x09, 0x9c, 0xec, 0x04, 0x8e, 0x6c, 0x91, 0x74, 0x74, 0xf4, 0xcd, 0x3f, 0xab, 0x5a, 0x24, 0x4d,
0x54, 0xf7, 0xd3, 0xfb, 0x50, 0x0c, 0xf9, 0x67, 0xbc, 0x2b, 0x9c, 0x90, 0xb3, 0x28, 0xf0, 0x31,
0xdc, 0xa5, 0xdd, 0x6a, 0x12, 0x9f, 0xa2, 0x08, 0x45, 0x09, 0x5a, 0x08, 0x63, 0x5f, 0xb2, 0x1d,
0xa0, 0xbc, 0x1b, 0x5c, 0xf2, 0x30, 0xfd, 0xa2, 0x39, 0x82, 0x3b, 0x13, 0x1c, 0x7d, 0x63, 0xbf,
0x0d, 0xeb, 0xfe, 0xb0, 0xef, 0x84, 0x8a, 0xcd, 0x5d, 0x27, 0xf6, 0xc4, 0x91, 0x7e, 0xac, 0xfa,
0xc3, 0x3e, 0x35, 0x4c, 0xa3, 0x6d, 0x55, 0x60, 0xa5, 0xa6, 0x1e, 0xbf, 0xe3, 0xde, 0xc6, 0x6a,
0x03, 0x89, 0x13, 0x35, 0xc0, 0x53, 0x28, 0xf2, 0x6b, 0xde, 0x1d, 0xe2, 0x99, 0x90, 0x1d, 0x7c,
0xba, 0xea, 0xd9, 0x86, 0x2b, 0xb5, 0x0a, 0x3c, 0xf6, 0x65, 0xfd, 0x73, 0x16, 0xe6, 0x0f, 0xe5,
0xc1, 0x21, 0xef, 0x42, 0x51, 0xe6, 0xae, 0xcf, 0x7b, 0x8e, 0x6a, 0x55, 0x32, 0xb7, 0xb5, 0x2a,
0x05, 0x2d, 0x87, 0x5f, 0xf2, 0x29, 0x68, 0xf4, 0x58, 0x3f, 0xde, 0x43, 0x9a, 0xe5, 0x6a, 0x7d,
0xec, 0x23, 0xdf, 0x85, 0x3b, 0x46, 0x2e, 0x7d, 0x80, 0x55, 0xde, 0xac, 0x69, 0x76, 0xea, 0x08,
0xbf, 0x09, 0xab, 0x46, 0x4f, 0x1d, 0x7f, 0xf5, 0x84, 0x56, 0x0f, 0x6d, 0x4a, 0x34, 0x0f, 0x7d,
0xb0, 0x91, 0x23, 0xaf, 0xfd, 0x41, 0xc8, 0xfb, 0xde, 0xb0, 0x8f, 0xd6, 0xcc, 0xa3, 0x35, 0xa0,
0x49, 0xd2, 0x94, 0x6d, 0xd9, 0x1e, 0xc5, 0x02, 0x86, 0x62, 0x0b, 0xaa, 0x03, 0x8c, 0x47, 0x47,
0xca, 0x5a, 0x18, 0x16, 0x6f, 0x2c, 0xb7, 0x88, 0x72, 0x79, 0x24, 0x6a, 0x99, 0x27, 0x50, 0xe9,
0xf6, 0x38, 0x0b, 0x3d, 0xff, 0x4c, 0x95, 0xa8, 0x41, 0xe8, 0x75, 0x39, 0xd6, 0x81, 0x39, 0xba,
0x62, 0x58, 0xb2, 0x34, 0xb5, 0x25, 0x83, 0x3c, 0x82, 0xb2, 0xaa, 0x4b, 0x58, 0x09, 0x51, 0x45,
0x97, 0x81, 0x12, 0xd2, 0xb1, 0x1e, 0x52, 0xdd, 0x6e, 0xc5, 0x2b, 0x18, 0x4c, 0x54, 0xb0, 0xfb,
0x90, 0x1b, 0x0c, 0xc3, 0xee, 0x39, 0x8b, 0xb8, 0xbb, 0x91, 0xc7, 0x1e, 0x62, 0x4c, 0xb0, 0x1a,
0x50, 0xc4, 0xc0, 0x8c, 0xda, 0x91, 0x7b, 0x90, 0x53, 0xd5, 0x54, 0x36, 0x08, 0xb2, 0x85, 0x28,
0xd0, 0x25, 0x24, 0x34, 0xdd, 0x88, 0x54, 0x63, 0xaf, 0xef, 0xac, 0xe2, 0x8d, 0xde, 0xda, 0xbf,
0xcd, 0x40, 0xc9, 0x2c, 0xa5, 0xd3, 0xee, 0x35, 0x58, 0xc0, 0x0d, 0x31, 0xbd, 0xc8, 0xf8, 0xe2,
0x46, 0x41, 0xaa, 0xb9, 0x64, 0x07, 0x56, 0x71, 0x42, 0x80, 0xe9, 0xc1, 0x59, 0xe8, 0x73, 0x37,
0x96, 0x25, 0x2b, 0xc8, 0xab, 0xf5, 0x85, 0x8d, 0x1c, 0x19, 0xce, 0xd7, 0x81, 0x8c, 0x15, 0x06,
0xcc, 0x53, 0xe2, 0xfa, 0xc1, 0x61, 0xc4, 0xdb, 0xcc, 0x93, 0xc2, 0xd6, 0x32, 0x14, 0x4f, 0x82,
0x0b, 0xee, 0x8f, 0x4e, 0xe2, 0x7b, 0x50, 0x32, 0x84, 0xd1, 0xcb, 0x63, 0x41, 0x20, 0x45, 0x1b,
0x4a, 0xc6, 0x86, 0x46, 0x4c, 0xa0, 0x30, 0xd5, 0x12, 0xd6, 0x9f, 0xb2, 0x90, 0x1b, 0x51, 0xe5,
0xad, 0xd2, 0x91, 0x29, 0xd7, 0x67, 0x5d, 0x16, 0x06, 0x81, 0xaf, 0x7b, 0x9a, 0x82, 0x24, 0x3e,
0xd3, 0x34, 0x79, 0x3b, 0x0d, 0xd8, 0x4d, 0x5f, 0x56, 0x86, 0x73, 0x16, 0x9d, 0x9b, 0xc7, 0x8a,
0xa6, 0x35, 0x58, 0x74, 0x4e, 0x1e, 0x43, 0xd9, 0x88, 0x0c, 0x42, 0xee, 0xf5, 0x99, 0xae, 0x10,
0x05, 0xba, 0xac, 0xe9, 0x6d, 0x4d, 0x96, 0xb9, 0xa1, 0x5f, 0x63, 0xe8, 0x79, 0x5f, 0xba, 0x3e,
0x87, 0xc5, 0xa8, 0xa4, 0xe8, 0xd2, 0xf1, 0x67, 0x11, 0x13, 0xe4, 0x2d, 0x58, 0x0b, 0x83, 0xa1,
0x90, 0x49, 0x27, 0x73, 0x73, 0x2c, 0x3e, 0x8f, 0xe2, 0x44, 0x33, 0x0f, 0x38, 0x1f, 0xa9, 0xe8,
0x2a, 0xe7, 0x60, 0xef, 0xc0, 0x5d, 0xcc, 0x79, 0x5d, 0xe5, 0xf6, 0x14, 0x49, 0x56, 0x4c, 0x3c,
0x60, 0x5c, 0x35, 0xf7, 0x4b, 0xd4, 0x7c, 0x4a, 0xe5, 0x48, 0x04, 0x21, 0x3b, 0xe3, 0x8e, 0xcf,
0xfa, 0x2a, 0xbd, 0x73, 0xb2, 0x92, 0x21, 0xad, 0xc5, 0xfa, 0xdc, 0x5a, 0x87, 0xd5, 0xc3, 0x78,
0x15, 0x36, 0x7b, 0xf2, 0xc7, 0x0c, 0xac, 0xa5, 0x18, 0x7a, 0x6f, 0x3e, 0x85, 0xe5, 0x64, 0x51,
0x37, 0x9b, 0xb4, 0x9b, 0xcc, 0xa6, 0xb4, 0x62, 0x92, 0x1a, 0xd9, 0xbe, 0x08, 0x6f, 0x68, 0x29,
0xd1, 0x02, 0x44, 0xd5, 0x1a, 0x54, 0xa6, 0x88, 0xc9, 0x46, 0xd3, 0xf4, 0xa7, 0x45, 0x2a, 0x7f,
0x8e, 0x9f, 0x5c, 0xaa, 0x0b, 0x57, 0x1f, 0x4f, 0xb3, 0xdf, 0xcb, 0x6c, 0x7f, 0x95, 0x81, 0x42,
0xfc, 0x1d, 0x44, 0xca, 0x50, 0x68, 0xdb, 0xad, 0xfd, 0x66, 0xeb, 0x03, 0xe7, 0xa8, 0x6d, 0xb7,
0xca, 0x33, 0x84, 0x40, 0xc9, 0x50, 0x9e, 0xb7, 0xf7, 0x6b, 0x27, 0x76, 0x39, 0x43, 0x96, 0x60,
0x0e, 0xb9, 0x59, 0x92, 0x87, 0x45, 0xfb, 0xa3, 0x76, 0x93, 0xda, 0xfb, 0xe5, 0xd9, 0xb8, 0xe8,
0xde, 0xe1, 0xd1, 0xb1, 0xbd, 0x5f, 0x9e, 0x23, 0x00, 0x0b, 0xfa, 0xf7, 0x3c, 0xa9, 0xc0, 0x32,
0xb5, 0xf7, 0x8e, 0x5e, 0xd8, 0xf4, 0x63, 0xe7, 0xa0, 0xd6, 0x3c, 0xb4, 0xf7, 0xcb, 0x0b, 0x64,
0x05, 0x8a, 0x46, 0xa9, 0x5e, 0x3b, 0xd9, 0x6b, 0x94, 0x17, 0xb7, 0xdb, 0xba, 0xa8, 0x2a, 0x93,
0xf2, 0xb0, 0xd8, 0xa6, 0x76, 0xbb, 0x46, 0xed, 0xf2, 0x0c, 0x29, 0xc0, 0x52, 0x6d, 0x6f, 0xcf,
0x6e, 0x9f, 0xd8, 0xfb, 0xe5, 0x8c, 0xfc, 0xa2, 0xf6, 0x8f, 0xec, 0x3d, 0xf9, 0x95, 0x95, 0x50,
0xc7, 0xcd, 0x0f, 0x5a, 0x68, 0x4a, 0x11, 0x72, 0x07, 0xcd, 0x56, 0xed, 0xb0, 0xf9, 0x89, 0xb4,
0x62, 0xfb, 0xcf, 0x19, 0x58, 0x99, 0xa8, 0x7e, 0xd2, 0x8d, 0xd6, 0x51, 0x4b, 0x2e, 0xbb, 0x0e,
0xe4, 0xd8, 0xa6, 0x2f, 0x6c, 0xea, 0x3c, 0x6b, 0x1e, 0xd7, 0xed, 0x46, 0xed, 0x45, 0xf3, 0x88,
0x96, 0x33, 0xa4, 0x0a, 0xeb, 0x68, 0x94, 0xf3, 0xc2, 0xa6, 0xc7, 0xcd, 0xa3, 0x96, 0x64, 0x3f,
0x43, 0x2b, 0xb3, 0x64, 0x13, 0xee, 0xb6, 0x6b, 0xf4, 0xa4, 0x59, 0x3b, 0x74, 0x94, 0x11, 0xce,
0xde, 0xd1, 0xe1, 0x61, 0xed, 0xc4, 0xa6, 0xb5, 0xc3, 0xf2, 0x2c, 0x79, 0x08, 0x9b, 0x29, 0xf6,
0xfe, 0xf3, 0xf6, 0x61, 0x73, 0xaf, 0x76, 0x62, 0x3b, 0x6d, 0xdb, 0xa6, 0xe5, 0x39, 0xf2, 0x18,
0x5e, 0x4d, 0xaf, 0xd0, 0xa8, 0xb5, 0x5a, 0xf6, 0xa1, 0x73, 0xf0, 0x5c, 0x45, 0x44, 0x47, 0x69,
0x7e, 0xf7, 0xf7, 0x45, 0x58, 0x38, 0xc1, 0xa7, 0x06, 0x09, 0xa0, 0x10, 0x9f, 0x76, 0x92, 0xfb,
0xa3, 0x54, 0x9a, 0x32, 0x6b, 0xad, 0x6e, 0xde, 0xc2, 0xd5, 0xaf, 0x1b, 0xeb, 0xe7, 0xff, 0xf8,
0xd7, 0x57, 0xd9, 0xfb, 0xd6, 0x9d, 0x9d, 0xcb, 0xb7, 0x76, 0xa4, 0xe4, 0x8e, 0xb9, 0x13, 0x77,
0x3e, 0x97, 0xf2, 0x4f, 0x33, 0xdb, 0xe4, 0x13, 0xc8, 0xc7, 0x66, 0xd2, 0xe4, 0x5e, 0xec, 0xb9,
0x99, 0x1e, 0xc6, 0x54, 0x27, 0xa6, 0x1e, 0xd6, 0x7d, 0x44, 0x58, 0xb7, 0x56, 0x26, 0x10, 0xe4,
0xda, 0xa7, 0x50, 0x88, 0x8f, 0x4a, 0x63, 0xce, 0x4c, 0x19, 0xac, 0xc6, 0x9c, 0x99, 0x36, 0x5f,
0xb5, 0xee, 0x22, 0x54, 0x85, 0x4c, 0x42, 0x49, 0x9c, 0xf8, 0xd0, 0x2d, 0x86, 0x33, 0x65, 0xaa,
0x18, 0xc3, 0x99, 0x36, 0xa9, 0x33, 0x38, 0xdb, 0x53, 0x70, 0xbe, 0x80, 0xe5, 0xd4, 0x48, 0x8c,
0x8c, 0x07, 0x86, 0xd3, 0xc7, 0x77, 0xd5, 0xad, 0xdb, 0x05, 0x34, 0xe0, 0xab, 0x08, 0xf8, 0xc0,
0xaa, 0x4e, 0xee, 0x92, 0x19, 0x92, 0xc9, 0x60, 0x5e, 0x41, 0x29, 0x39, 0x9d, 0x22, 0xaf, 0x8c,
0x96, 0x9e, 0x3a, 0x3b, 0xab, 0x3e, 0xb8, 0x95, 0xaf, 0x91, 0xff, 0x1b, 0x91, 0x5f, 0xb1, 0xee,
0x4e, 0x22, 0xeb, 0x71, 0x95, 0x04, 0x16, 0x50, 0x4a, 0xce, 0x91, 0x62, 0xc0, 0x53, 0xc7, 0x58,
0x31, 0xe0, 0x5b, 0x06, 0x50, 0x0f, 0x11, 0xf8, 0x9e, 0xb5, 0x3e, 0x09, 0xdc, 0x19, 0xf6, 0x07,
0x12, 0xf5, 0x67, 0xb0, 0x9c, 0x6a, 0x4a, 0x63, 0xb1, 0x9e, 0xde, 0xc8, 0xc6, 0x62, 0x7d, 0x4b,
0x3f, 0xfb, 0x32, 0x8f, 0x75, 0x8f, 0x2b, 0xb1, 0x5d, 0xc8, 0xc7, 0x26, 0x34, 0xb1, 0x33, 0x31,
0x39, 0x1d, 0xaa, 0xde, 0x9f, 0xce, 0xd4, 0x78, 0x55, 0xc4, 0x5b, 0xb5, 0x96, 0x47, 0x78, 0xd8,
0xff, 0xe0, 0xe9, 0xf8, 0x29, 0xc0, 0x78, 0x46, 0x42, 0xaa, 0x89, 0xec, 0x4f, 0x0c, 0x62, 0xaa,
0xf7, 0xa6, 0xf2, 0x34, 0xc4, 0x1d, 0x84, 0x58, 0x21, 0x69, 0x08, 0x12, 0x40, 0x3e, 0x36, 0xf2,
0x88, 0x79, 0x31, 0x39, 0x3f, 0x89, 0x79, 0x31, 0x6d, 0x4a, 0xa2, 0x33, 0x74, 0x7b, 0x33, 0x05,
0xb1, 0xf3, 0x45, 0xac, 0xc1, 0xfb, 0x92, 0x7c, 0x0a, 0x30, 0xee, 0xf0, 0x63, 0x0e, 0x4d, 0xbc,
0x05, 0x62, 0x0e, 0x4d, 0x3e, 0x09, 0xac, 0x55, 0x44, 0x2b, 0x91, 0xc2, 0x08, 0xed, 0x94, 0x73,
0xf2, 0xb9, 0xee, 0xe1, 0x46, 0xf5, 0x90, 0x6c, 0xde, 0x56, 0x65, 0x15, 0xc6, 0x2b, 0x2f, 0x2f,
0xc2, 0xd6, 0x16, 0xc2, 0x54, 0xc9, 0xc6, 0x08, 0x26, 0x55, 0xcc, 0x49, 0x00, 0x45, 0x1c, 0xcd,
0x1c, 0xfb, 0x6c, 0x10, 0x9d, 0x07, 0x22, 0x86, 0x98, 0xa0, 0x4f, 0x22, 0xa6, 0xd8, 0x1a, 0xf1,
0x01, 0x22, 0xde, 0x25, 0xe3, 0xeb, 0x18, 0xdb, 0xd7, 0x9d, 0xc8, 0xac, 0xff, 0x31, 0x14, 0x3f,
0xe0, 0x62, 0xd4, 0xc2, 0x45, 0x64, 0xfc, 0x47, 0x46, 0xa2, 0x4f, 0xac, 0xde, 0x99, 0xa0, 0x4f,
0x4b, 0x86, 0x5e, 0xc4, 0xc4, 0x8e, 0xea, 0x0d, 0x09, 0x85, 0x05, 0xd5, 0x02, 0xc7, 0xd6, 0x4c,
0xb4, 0xd7, 0xb1, 0x35, 0x93, 0xbd, 0xf2, 0x94, 0x04, 0x53, 0xcd, 0x71, 0xfd, 0x7f, 0x3e, 0x79,
0xf5, 0xcc, 0x13, 0xe7, 0xc3, 0xce, 0x93, 0x6e, 0xd0, 0xdf, 0xe9, 0x79, 0x67, 0xe7, 0xc2, 0xf7,
0xfc, 0xb3, 0x1e, 0xeb, 0x44, 0x4a, 0x4e, 0x2f, 0xd8, 0x59, 0xc0, 0xff, 0x3f, 0xff, 0xef, 0xdf,
0x01, 0x00, 0x00, 0xff, 0xff, 0xf5, 0x74, 0xbb, 0x51, 0x48, 0x1d, 0x00, 0x00,
// 2976 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0x4b, 0x73, 0x23, 0x49,
0xf1, 0x77, 0xfb, 0xed, 0xd4, 0xc3, 0x72, 0xc9, 0xaf, 0xd1, 0x8c, 0x77, 0x3c, 0xfd, 0xff, 0xef,
0x32, 0xe3, 0x5d, 0xc6, 0xbb, 0xc3, 0xce, 0x40, 0x0c, 0x0b, 0x8b, 0x6c, 0xb7, 0x57, 0x62, 0x3d,
0xb2, 0x28, 0x7b, 0x86, 0x7d, 0x44, 0xd0, 0x51, 0x52, 0x97, 0xed, 0x5e, 0xab, 0xbb, 0xb5, 0xdd,
0x25, 0x3f, 0xd8, 0xd8, 0x0b, 0xf0, 0x01, 0x08, 0x36, 0xe0, 0xc2, 0x81, 0x2f, 0x01, 0xc1, 0x81,
0x08, 0x0e, 0x9c, 0x88, 0x80, 0x0b, 0xc1, 0x57, 0xe0, 0x83, 0x10, 0x95, 0x55, 0x25, 0x75, 0x4b,
0xf2, 0xec, 0xe3, 0xc2, 0x4d, 0x9d, 0x99, 0x55, 0xbf, 0xcc, 0xac, 0xcc, 0xca, 0xac, 0x14, 0xe4,
0x45, 0xcc, 0x3c, 0x1e, 0x3f, 0xec, 0xc6, 0x91, 0x88, 0xc8, 0x5c, 0x37, 0x8a, 0x3a, 0x71, 0xb7,
0x5d, 0xb9, 0x73, 0x1a, 0x45, 0xa7, 0x1d, 0xbe, 0xcd, 0xba, 0xfe, 0x36, 0x0b, 0xc3, 0x48, 0x30,
0xe1, 0x47, 0x61, 0xa2, 0xc4, 0x2a, 0x25, 0xd6, 0x6b, 0xcb, 0x6f, 0x6e, 0x16, 0xda, 0xff, 0xb4,
0x80, 0xd4, 0x43, 0x5f, 0x54, 0xdb, 0xed, 0xa8, 0x17, 0x0a, 0xca, 0x3f, 0xed, 0xf1, 0x44, 0x90,
0xff, 0x83, 0x02, 0x53, 0x14, 0xf7, 0x82, 0x75, 0x7a, 0x7c, 0xdd, 0xda, 0xb4, 0xee, 0x4f, 0xd3,
0xbc, 0x26, 0xbe, 0x90, 0x34, 0xf2, 0x00, 0x16, 0x59, 0x2b, 0x89, 0x3a, 0x3d, 0xc1, 0xdd, 0x33,
0xee, 0x9f, 0x9e, 0x89, 0xf5, 0xc9, 0x4d, 0xeb, 0x7e, 0xa1, 0x36, 0x41, 0x8b, 0x86, 0x51, 0x43,
0xba, 0x14, 0x8d, 0x79, 0x87, 0x09, 0xff, 0xa2, 0x2f, 0x3a, 0x65, 0x44, 0x0d, 0x43, 0x8b, 0xde,
0x83, 0x5c, 0x3b, 0x0a, 0x4f, 0x5c, 0xc1, 0xe2, 0x53, 0x2e, 0xd6, 0xa7, 0x51, 0xcc, 0xa2, 0x20,
0x89, 0xc7, 0x48, 0xdb, 0x29, 0x41, 0xd1, 0x68, 0xc7, 0xaf, 0xba, 0x7e, 0x7c, 0xbd, 0x33, 0x0b,
0xd3, 0x27, 0x9c, 0x27, 0x36, 0x87, 0xf2, 0x4f, 0x7a, 0x91, 0xe0, 0xdf, 0xc4, 0x9c, 0x21, 0x60,
0x63, 0x4a, 0x1a, 0xd8, 0xc0, 0x5c, 0xc2, 0x72, 0x16, 0x26, 0xe9, 0x46, 0x61, 0xc2, 0xc9, 0x77,
0xe1, 0x56, 0xe0, 0x87, 0x3c, 0x76, 0x4f, 0x38, 0x77, 0x63, 0x26, 0xb8, 0x9b, 0x30, 0xe1, 0x76,
0x79, 0xec, 0x9e, 0x5f, 0x6a, 0xcc, 0x65, 0x14, 0xd8, 0xe7, 0x9c, 0x32, 0xc1, 0x8f, 0x98, 0x68,
0xf2, 0xf8, 0xfd, 0x4b, 0xf2, 0x1a, 0x2c, 0x0e, 0x16, 0x8a, 0x48, 0xb0, 0x0e, 0xe2, 0x4f, 0xd3,
0x82, 0x11, 0x3f, 0x96, 0x44, 0x7b, 0x05, 0xca, 0x07, 0x7e, 0x62, 0x4e, 0x2b, 0xd1, 0xf6, 0xd9,
0x7b, 0xb0, 0x9c, 0x25, 0x6b, 0x7d, 0xde, 0x80, 0x79, 0x6d, 0x62, 0xb2, 0x6e, 0x6d, 0x4e, 0xdd,
0xcf, 0x3d, 0x2a, 0x3d, 0xd4, 0x91, 0xf2, 0xd0, 0xe8, 0xde, 0x97, 0xb0, 0xdf, 0x85, 0xd9, 0xc3,
0x9e, 0xe8, 0xf6, 0x04, 0xb9, 0x0d, 0x0b, 0xe8, 0x27, 0xa9, 0xbe, 0xd6, 0x7b, 0x1e, 0x09, 0x47,
0x4c, 0x90, 0x75, 0x98, 0x63, 0x9e, 0x17, 0xf3, 0x24, 0x41, 0x1d, 0x17, 0xa8, 0xf9, 0xb4, 0x7f,
0x65, 0x41, 0x41, 0xed, 0xf0, 0x53, 0x5f, 0x9c, 0xed, 0x73, 0x9e, 0x96, 0xb5, 0x32, 0xb2, 0x5f,
0xc1, 0xdb, 0xe4, 0x21, 0x94, 0xc7, 0xf9, 0x51, 0x06, 0xce, 0x74, 0x6d, 0x82, 0x2e, 0x9e, 0x64,
0x9d, 0xd8, 0x3f, 0x9d, 0x5d, 0x58, 0x55, 0x5a, 0x24, 0x52, 0x8d, 0x7a, 0xd0, 0xed, 0xf8, 0x6d,
0x5f, 0x48, 0x75, 0x1e, 0xc0, 0x5c, 0xa4, 0x38, 0xda, 0x1d, 0x8b, 0x7d, 0x77, 0xa8, 0x15, 0xd4,
0xf0, 0xed, 0xbf, 0x5b, 0x50, 0xde, 0xed, 0x44, 0xc9, 0x70, 0x28, 0x6d, 0x00, 0xa8, 0xcc, 0x73,
0xcf, 0xf9, 0x35, 0x1a, 0x95, 0xa7, 0x0b, 0x8a, 0xf2, 0x3e, 0xbf, 0x26, 0x3f, 0x82, 0x45, 0xb5,
0x83, 0x7b, 0xe9, 0x8b, 0x33, 0x79, 0x9c, 0x68, 0x5a, 0xee, 0xd1, 0xea, 0x10, 0x92, 0xf6, 0x50,
0x6d, 0x82, 0x16, 0xa2, 0x8c, 0xcb, 0xbe, 0x3f, 0xd0, 0x71, 0x0a, 0x57, 0xde, 0x1d, 0x5a, 0x39,
0x6c, 0x55, 0x6d, 0xa2, 0xaf, 0xf5, 0x4e, 0x19, 0x96, 0x4e, 0x7a, 0xa1, 0x97, 0xb8, 0x1e, 0x4f,
0x84, 0x1f, 0x62, 0xf2, 0xdb, 0x8f, 0x61, 0x39, 0x6b, 0x89, 0x8e, 0x8e, 0x0d, 0x80, 0xb6, 0xa4,
0xbb, 0xe2, 0xca, 0xf7, 0x8c, 0x29, 0x48, 0x39, 0xbe, 0xf2, 0x3d, 0xfb, 0xd7, 0x16, 0xac, 0x4a,
0x28, 0x2f, 0x66, 0x97, 0x5f, 0xcf, 0x09, 0x29, 0x37, 0x4f, 0xbe, 0xdc, 0xcd, 0xe4, 0x8d, 0x97,
0x9c, 0xf1, 0xc8, 0x09, 0xdb, 0x9f, 0xc0, 0xda, 0x88, 0x46, 0xda, 0x98, 0x2d, 0x98, 0xd3, 0x81,
0x8c, 0xfa, 0x8c, 0x8b, 0x74, 0x23, 0x20, 0xaf, 0x83, 0x4b, 0xbd, 0x8d, 0xb2, 0x7d, 0x12, 0x2d,
0xc8, 0x1b, 0x22, 0x9a, 0xff, 0x4b, 0x0b, 0x56, 0xf6, 0x78, 0x37, 0x4a, 0x46, 0x2e, 0xc7, 0x2f,
0xb1, 0x7e, 0x03, 0x80, 0x05, 0x78, 0xd7, 0xc8, 0xec, 0x51, 0x69, 0xbc, 0xa0, 0x28, 0x32, 0x7d,
0xbe, 0x9e, 0xc5, 0xa7, 0xb0, 0x3a, 0xac, 0xc4, 0x37, 0x30, 0xf8, 0x1e, 0xe4, 0x3d, 0xb5, 0x4b,
0xda, 0xde, 0x9c, 0xa6, 0xa1, 0xb9, 0x1e, 0xac, 0xec, 0xf4, 0x82, 0xae, 0x5e, 0x2a, 0xef, 0xa7,
0xaf, 0x66, 0xed, 0x0d, 0xe6, 0x4c, 0x8e, 0x37, 0x67, 0x1d, 0x56, 0x87, 0x51, 0x94, 0x39, 0xf6,
0x6f, 0x27, 0x61, 0x4e, 0x93, 0xbf, 0x0c, 0xf2, 0xdb, 0x30, 0x2f, 0xc3, 0x27, 0xf2, 0x43, 0xa1,
0x93, 0x6b, 0x29, 0x1d, 0x5f, 0x4d, 0xc9, 0xa0, 0x7d, 0x11, 0xb2, 0x0c, 0x33, 0xea, 0xd2, 0x57,
0x2e, 0x56, 0x1f, 0xe4, 0x75, 0x58, 0x62, 0x17, 0xcc, 0xef, 0xb0, 0x56, 0x87, 0xbb, 0x2d, 0xd6,
0x61, 0x61, 0x9b, 0x63, 0xb1, 0x99, 0xa6, 0xa5, 0x3e, 0x63, 0x47, 0xd1, 0xa5, 0x30, 0x16, 0x1a,
0xcc, 0x27, 0x53, 0xc0, 0x66, 0xe4, 0x95, 0x45, 0x4b, 0x03, 0x86, 0x2e, 0x60, 0xaf, 0xc3, 0x4c,
0x22, 0x98, 0xe0, 0xeb, 0xb3, 0x9b, 0xd6, 0xfd, 0xe2, 0xa3, 0x95, 0xe1, 0x63, 0x39, 0x92, 0x4c,
0xaa, 0x64, 0xc8, 0x5d, 0xc8, 0x75, 0x98, 0xe0, 0x89, 0x3e, 0x98, 0x39, 0xb4, 0x15, 0x14, 0x09,
0xcf, 0xa5, 0x0d, 0xe4, 0xa8, 0xd7, 0x0a, 0x7c, 0x71, 0x18, 0x7b, 0x3c, 0x36, 0x87, 0xb2, 0x09,
0x53, 0x2c, 0x39, 0xd7, 0x07, 0x9f, 0x1f, 0x20, 0x24, 0xe7, 0xb5, 0x09, 0x2a, 0x59, 0x52, 0xa2,
0xa5, 0x4f, 0x3a, 0x2d, 0xb1, 0xe3, 0x7b, 0x52, 0xa2, 0xe5, 0x7b, 0x3b, 0x0b, 0x30, 0xe7, 0x71,
0xc1, 0xfc, 0x4e, 0x62, 0xff, 0xc6, 0x82, 0x72, 0x06, 0x45, 0xc7, 0xd8, 0x3b, 0x50, 0xf0, 0xc3,
0x0b, 0xd6, 0xf1, 0x3d, 0x37, 0x92, 0x0c, 0x0d, 0x38, 0x30, 0xa9, 0xae, 0xb8, 0xb8, 0xaa, 0x36,
0x41, 0xf3, 0x7e, 0xea, 0x9b, 0x3c, 0x82, 0x65, 0xd6, 0x6e, 0xf3, 0xae, 0xe0, 0x7a, 0xb9, 0x1b,
0x46, 0xd2, 0xcb, 0x18, 0x7d, 0xb5, 0x09, 0x4a, 0x0c, 0x17, 0xc5, 0x1b, 0x92, 0x97, 0x56, 0xaa,
0x01, 0x4b, 0xb2, 0xa8, 0x21, 0xd3, 0x54, 0x3a, 0x59, 0x50, 0x2e, 0x78, 0xdc, 0x8a, 0x12, 0x55,
0xc3, 0xe7, 0xa9, 0xf9, 0x94, 0x9e, 0x64, 0x6d, 0x6c, 0x30, 0xa2, 0xb0, 0x73, 0x8d, 0x20, 0xf3,
0x14, 0x14, 0xe9, 0x30, 0xec, 0x5c, 0xdb, 0x1f, 0x00, 0x49, 0xef, 0xa7, 0x4d, 0xdc, 0x84, 0x69,
0x96, 0x9c, 0x9b, 0x7a, 0x90, 0x71, 0x25, 0x45, 0x8e, 0x94, 0x68, 0xf9, 0x9e, 0xb9, 0xca, 0x32,
0xae, 0xa4, 0xc8, 0xb1, 0x1f, 0x03, 0xd9, 0x95, 0x71, 0xd2, 0xc9, 0x9c, 0xd1, 0x5d, 0xc8, 0xa5,
0xad, 0x56, 0x61, 0x0c, 0x51, 0xdf, 0x56, 0x59, 0xcc, 0x33, 0xcb, 0x74, 0x26, 0xfc, 0x69, 0x0a,
0x66, 0x94, 0x03, 0xbf, 0xfc, 0xa2, 0xc1, 0xb4, 0x3b, 0xf1, 0xaf, 0xb8, 0x3a, 0xe9, 0x02, 0x5d,
0x90, 0x94, 0x7d, 0x49, 0x20, 0x25, 0x98, 0x62, 0x81, 0xd0, 0x51, 0x2f, 0x7f, 0x92, 0x1f, 0xc2,
0x46, 0xc0, 0xae, 0xdc, 0x16, 0x13, 0xed, 0xb3, 0xb1, 0x2d, 0x8a, 0x8a, 0xff, 0xb5, 0x80, 0x5d,
0xed, 0x48, 0x99, 0xe1, 0x2e, 0x65, 0xc8, 0xa2, 0x99, 0x61, 0x8b, 0xc8, 0x83, 0x6c, 0xe8, 0x97,
0x07, 0x69, 0x29, 0x65, 0x32, 0x81, 0xbf, 0x0c, 0x33, 0xbd, 0xd0, 0x17, 0x09, 0x86, 0x7c, 0x81,
0xaa, 0x0f, 0x99, 0x68, 0xf8, 0xc3, 0xed, 0x85, 0x27, 0xbd, 0xce, 0x89, 0xdf, 0xe9, 0x70, 0x6f,
0x7d, 0x5e, 0x25, 0x1a, 0x32, 0x9e, 0x0f, 0xe8, 0xe4, 0x0d, 0x20, 0x31, 0x4f, 0x78, 0x7c, 0xc1,
0x3d, 0x77, 0xd0, 0xae, 0x2c, 0xa8, 0x1c, 0x36, 0x9c, 0x17, 0xa6, 0x6d, 0x79, 0x04, 0x2b, 0xed,
0x98, 0xab, 0x0c, 0x16, 0x7e, 0xc0, 0x13, 0xc1, 0x82, 0xae, 0x1b, 0x26, 0xeb, 0x80, 0x0b, 0xca,
0x86, 0x79, 0x6c, 0x78, 0x0d, 0xa9, 0xce, 0x2c, 0xbf, 0xe0, 0xb2, 0x7b, 0xca, 0xe1, 0xe1, 0x0f,
0x19, 0xe4, 0x48, 0x1e, 0xd5, 0x22, 0xf6, 0x1f, 0x2d, 0x98, 0xda, 0xf1, 0x3d, 0x72, 0xbf, 0x1f,
0xc2, 0x3a, 0x5d, 0x8a, 0xd9, 0x55, 0xd4, 0xb0, 0xa5, 0x4a, 0x1d, 0xce, 0x12, 0xee, 0x7a, 0x3d,
0x7d, 0xb5, 0xb4, 0x3a, 0x51, 0xfb, 0x3c, 0xd1, 0x67, 0x59, 0x46, 0xe6, 0x9e, 0xe6, 0xed, 0x20,
0x4b, 0x27, 0x40, 0xe2, 0x47, 0xa1, 0xea, 0xa0, 0xa9, 0xf9, 0x24, 0x8f, 0x41, 0x36, 0x8b, 0x6e,
0x18, 0x79, 0xdc, 0x15, 0x3e, 0x8f, 0xf1, 0x34, 0x8b, 0xa9, 0xbb, 0xb1, 0x11, 0x79, 0xfc, 0xd8,
0xe7, 0x31, 0xcd, 0x05, 0x7e, 0x68, 0x3e, 0xec, 0xcf, 0x61, 0xaa, 0x9a, 0x9c, 0xff, 0xaf, 0xb4,
0xb6, 0xff, 0x66, 0x01, 0x0c, 0x9c, 0x29, 0x2b, 0x55, 0xe6, 0x70, 0xa4, 0x2e, 0x53, 0x34, 0x27,
0x52, 0x87, 0x72, 0x1b, 0x16, 0xd0, 0xe3, 0x6e, 0x22, 0x62, 0xdd, 0x81, 0xce, 0x23, 0xe1, 0x48,
0xc4, 0xe4, 0x29, 0xe4, 0x31, 0xbe, 0xdc, 0xf6, 0x19, 0x0b, 0x4f, 0xb9, 0x6e, 0xa1, 0x06, 0x17,
0xd6, 0xf3, 0xae, 0xc7, 0x04, 0xf7, 0x10, 0xac, 0x36, 0x41, 0x73, 0x28, 0xbc, 0x8b, 0xb2, 0x64,
0x1b, 0xe6, 0x02, 0x19, 0xf6, 0xdc, 0x43, 0xd7, 0xa5, 0x8f, 0xfb, 0x99, 0xa4, 0x9b, 0x45, 0x46,
0x6a, 0x67, 0x0e, 0x66, 0x10, 0xd8, 0xfe, 0x83, 0x05, 0xf9, 0xf4, 0xce, 0xe4, 0x29, 0x14, 0xbb,
0x31, 0xbf, 0xf0, 0xa3, 0x5e, 0xe2, 0xaa, 0x8c, 0xb0, 0x6e, 0xce, 0x88, 0x82, 0x11, 0xc5, 0x4f,
0xf2, 0x26, 0x2c, 0x84, 0xfc, 0x52, 0x2f, 0x9b, 0xbc, 0x79, 0xd9, 0x7c, 0xc8, 0x2f, 0xd5, 0x8a,
0x7b, 0x90, 0x57, 0x59, 0xa3, 0x13, 0x46, 0xb9, 0x38, 0x87, 0xb4, 0x7d, 0x24, 0xd9, 0xff, 0xb0,
0x00, 0x06, 0x46, 0x90, 0xb7, 0x21, 0x87, 0x46, 0xdc, 0xa0, 0x1c, 0x4a, 0x2a, 0x14, 0x08, 0xfa,
0xbf, 0x47, 0x70, 0x26, 0x47, 0x70, 0x64, 0x6b, 0xa5, 0xbd, 0xa3, 0x2b, 0xc6, 0x94, 0x6a, 0xad,
0x34, 0x51, 0xdd, 0x6b, 0xef, 0x42, 0x21, 0xe6, 0x9f, 0xf0, 0xb6, 0x70, 0x63, 0xce, 0x92, 0x28,
0xd4, 0x91, 0x5a, 0xc9, 0xe2, 0x53, 0x14, 0xa1, 0x28, 0x41, 0xf3, 0x71, 0xea, 0x4b, 0xb6, 0x11,
0x94, 0xb7, 0xa3, 0x0b, 0x1e, 0x0f, 0xbf, 0x84, 0x0e, 0x61, 0x6d, 0x84, 0xa3, 0x6f, 0xfa, 0xb7,
0x61, 0x35, 0xec, 0x05, 0x6e, 0xac, 0xd8, 0xdc, 0x73, 0x53, 0x4f, 0x23, 0x69, 0xc7, 0x72, 0xd8,
0x0b, 0xa8, 0x61, 0x9a, 0xd5, 0x76, 0x19, 0x96, 0xaa, 0xea, 0xd1, 0x3c, 0xe8, 0x89, 0xec, 0x26,
0x90, 0x34, 0x51, 0x03, 0x3c, 0x85, 0x02, 0xbf, 0xe2, 0xed, 0x1e, 0xe6, 0x84, 0xec, 0xfc, 0x87,
0xab, 0xa5, 0x63, 0xb8, 0x72, 0x55, 0x9e, 0xa7, 0xbe, 0xec, 0x7f, 0x4d, 0xc3, 0xcc, 0x81, 0x4c,
0x1c, 0xf2, 0x04, 0x0a, 0x32, 0x76, 0x43, 0xde, 0x71, 0x55, 0x8b, 0x63, 0xdd, 0xd4, 0xe2, 0xe4,
0xb5, 0x1c, 0x7e, 0xc9, 0x27, 0xa4, 0x59, 0xc7, 0x82, 0x74, 0xef, 0x69, 0xb6, 0xab, 0x06, 0xd8,
0x7f, 0x3e, 0x81, 0x35, 0x23, 0x37, 0x9c, 0xc0, 0x2a, 0x6e, 0x56, 0x34, 0x7b, 0x28, 0x85, 0xdf,
0x84, 0x65, 0xb3, 0x4e, 0xa5, 0xbf, 0x7a, 0x7a, 0xab, 0x07, 0x3a, 0x25, 0x9a, 0x87, 0x36, 0x38,
0xc8, 0x91, 0xe5, 0xa2, 0x1b, 0xf3, 0xc0, 0xef, 0x05, 0xa8, 0xcd, 0x0c, 0x6a, 0x03, 0x9a, 0x24,
0x55, 0xd9, 0x92, 0x6d, 0x55, 0xca, 0x61, 0x28, 0x36, 0xab, 0x3a, 0xc7, 0xb4, 0x77, 0xa4, 0xac,
0x8d, 0x6e, 0xf1, 0x07, 0x72, 0x73, 0x28, 0x97, 0x43, 0xa2, 0x96, 0x79, 0x08, 0xe5, 0x76, 0x87,
0xb3, 0xd8, 0x0f, 0x4f, 0x55, 0x69, 0xeb, 0xc6, 0x7e, 0x9b, 0x63, 0xfd, 0x98, 0xa6, 0x4b, 0x86,
0x25, 0x4b, 0x5a, 0x53, 0x32, 0xc8, 0x7d, 0x28, 0xa9, 0x7a, 0x86, 0x15, 0x14, 0x97, 0xe8, 0xf2,
0x51, 0x44, 0x3a, 0xd6, 0x51, 0xaa, 0xdb, 0xb4, 0x74, 0xe5, 0x83, 0x91, 0xca, 0x77, 0x07, 0x16,
0xba, 0xbd, 0xb8, 0x7d, 0xc6, 0x12, 0xee, 0xad, 0xe7, 0xb0, 0xf7, 0x18, 0x10, 0xc8, 0xe3, 0x81,
0xcf, 0x63, 0x1e, 0x44, 0x82, 0xab, 0x5b, 0x5a, 0x56, 0xf5, 0x3c, 0x6e, 0x65, 0x5c, 0x4b, 0x91,
0x2b, 0xef, 0x66, 0x59, 0xe0, 0x7f, 0x00, 0x4b, 0x66, 0xd9, 0xe0, 0x56, 0x2f, 0xdc, 0x74, 0xab,
0x9b, 0xe3, 0xef, 0xdf, 0xec, 0x35, 0x28, 0xe0, 0x71, 0xf4, 0x9b, 0xa7, 0xdb, 0xb0, 0xa0, 0x6a,
0xbf, 0x6c, 0x67, 0x64, 0xc3, 0x93, 0xa7, 0xf3, 0x48, 0xa8, 0x7b, 0x09, 0xa9, 0xa4, 0x66, 0x05,
0x93, 0x8a, 0xd7, 0x9f, 0x0c, 0xfc, 0xce, 0x82, 0xa2, 0xd9, 0x4a, 0x07, 0xfb, 0x6b, 0x30, 0x8b,
0x61, 0x60, 0x3a, 0xa7, 0x41, 0xb9, 0x40, 0x41, 0xaa, 0xb9, 0x64, 0x1b, 0x96, 0x71, 0x9e, 0x81,
0x41, 0xc9, 0x59, 0x1c, 0x72, 0x2f, 0x15, 0x9b, 0x4b, 0xc8, 0xab, 0x06, 0xc2, 0x41, 0x8e, 0x3c,
0xc4, 0xd7, 0x81, 0x0c, 0x16, 0x74, 0x99, 0xaf, 0xc4, 0xf5, 0xf3, 0xc8, 0x88, 0x37, 0x99, 0x2f,
0x85, 0xed, 0x45, 0x28, 0x1c, 0x47, 0xe7, 0x3c, 0xec, 0xe7, 0xff, 0x3b, 0x50, 0x34, 0x84, 0xfe,
0x3b, 0x69, 0x56, 0x20, 0x45, 0x2b, 0x4a, 0x06, 0x8a, 0x26, 0x4c, 0xa0, 0x30, 0xd5, 0x12, 0xf6,
0x5f, 0x26, 0x61, 0xa1, 0x4f, 0x95, 0x77, 0x59, 0x4b, 0x06, 0x7a, 0xc0, 0xda, 0x2c, 0x8e, 0xa2,
0x50, 0x77, 0x60, 0x79, 0x49, 0x7c, 0xa6, 0x69, 0xf2, 0x4e, 0xec, 0xb2, 0xeb, 0x40, 0xd6, 0xa3,
0x33, 0x96, 0x9c, 0x99, 0xa7, 0x95, 0xa6, 0xd5, 0x58, 0x72, 0x46, 0x1e, 0x40, 0xc9, 0x88, 0x74,
0x63, 0xee, 0x07, 0x4c, 0xd7, 0xa5, 0x3c, 0x5d, 0xd4, 0xf4, 0xa6, 0x26, 0xcb, 0x88, 0xd4, 0x6f,
0x47, 0xb4, 0x3c, 0x90, 0xa6, 0x4f, 0x63, 0x09, 0x2c, 0x2a, 0xba, 0x34, 0xfc, 0x59, 0xc2, 0x04,
0x79, 0x0b, 0x56, 0xe2, 0xa8, 0x27, 0x64, 0xa8, 0xcb, 0x8c, 0x18, 0x88, 0xcf, 0xa0, 0x38, 0xd1,
0xcc, 0x7d, 0xce, 0xfb, 0x4b, 0x74, 0x6d, 0x75, 0xb1, 0xd3, 0xe1, 0x1e, 0x66, 0x9a, 0xae, 0xad,
0xbb, 0x8a, 0x24, 0xeb, 0x34, 0xa6, 0x35, 0x57, 0x4f, 0x91, 0x79, 0x6a, 0x3e, 0xe5, 0xe2, 0x44,
0x44, 0x31, 0x3b, 0xe5, 0x6e, 0xc8, 0x02, 0x95, 0x54, 0x0b, 0xb2, 0x7e, 0x22, 0xad, 0xc1, 0x02,
0x6e, 0xaf, 0xc2, 0xf2, 0x41, 0xba, 0xf6, 0x9b, 0x33, 0xf9, 0xb3, 0x05, 0x2b, 0x43, 0x0c, 0x7d,
0x36, 0x1f, 0xc3, 0x62, 0xb6, 0x95, 0x30, 0x87, 0xf4, 0x28, 0x1b, 0x4d, 0xc3, 0x0b, 0xb3, 0xd4,
0xc4, 0x09, 0x45, 0x7c, 0x4d, 0x8b, 0x99, 0xc6, 0x23, 0xa9, 0x54, 0xa1, 0x3c, 0x46, 0x4c, 0xb6,
0xc5, 0xa6, 0x9b, 0x2e, 0x50, 0xf9, 0x73, 0xf0, 0x40, 0x54, 0x6f, 0x06, 0xf5, 0xf1, 0x74, 0xf2,
0x7b, 0x96, 0xfd, 0x04, 0x96, 0x64, 0x36, 0x51, 0x26, 0x5d, 0x69, 0xb2, 0xe8, 0x1e, 0xe4, 0x31,
0x1b, 0xbb, 0xbd, 0xd6, 0x39, 0xbf, 0x36, 0x89, 0x94, 0x93, 0xb4, 0xa6, 0x22, 0xd9, 0x07, 0x40,
0xd2, 0xeb, 0xb4, 0xb5, 0x4f, 0xf4, 0xc2, 0x18, 0xc9, 0xc6, 0xd4, 0x72, 0x26, 0x93, 0xf5, 0x12,
0xdc, 0x4d, 0xfd, 0x4e, 0xb6, 0xbe, 0xb0, 0x20, 0x9f, 0x7e, 0x3b, 0x92, 0x12, 0xe4, 0x9b, 0x4e,
0x63, 0xaf, 0xde, 0x78, 0xcf, 0x3d, 0x6c, 0x3a, 0x8d, 0xd2, 0x04, 0x21, 0x50, 0x34, 0x94, 0xe7,
0xcd, 0xbd, 0xea, 0xb1, 0x53, 0xb2, 0xc8, 0x3c, 0x4c, 0x23, 0x77, 0x92, 0xe4, 0x60, 0xce, 0xf9,
0xa0, 0x59, 0xa7, 0xce, 0x5e, 0x69, 0x2a, 0x2d, 0xba, 0x7b, 0x70, 0x78, 0xe4, 0xec, 0x95, 0xa6,
0x09, 0xc0, 0xac, 0xfe, 0x3d, 0x43, 0xca, 0xb0, 0x48, 0x9d, 0xdd, 0xc3, 0x17, 0x0e, 0xfd, 0xd0,
0xdd, 0xaf, 0xd6, 0x0f, 0x9c, 0xbd, 0xd2, 0x2c, 0x59, 0x82, 0x82, 0x59, 0xb4, 0x53, 0x3d, 0xde,
0xad, 0x95, 0xe6, 0xb6, 0x9a, 0xba, 0xa1, 0x50, 0x2a, 0xe5, 0x60, 0xae, 0x49, 0x9d, 0x66, 0x95,
0x3a, 0xa5, 0x09, 0x92, 0x87, 0xf9, 0xea, 0xee, 0xae, 0xd3, 0x3c, 0x76, 0xf6, 0x4a, 0x96, 0xfc,
0xa2, 0xce, 0x8f, 0x9d, 0x5d, 0xf9, 0x35, 0x29, 0xa1, 0x8e, 0xea, 0xef, 0x35, 0x50, 0x95, 0x02,
0x2c, 0xec, 0xd7, 0x1b, 0xd5, 0x83, 0xfa, 0x47, 0x52, 0x8b, 0xad, 0xbf, 0x5a, 0xb0, 0x34, 0x52,
0xf9, 0xa5, 0x19, 0x8d, 0xc3, 0x86, 0xdc, 0x76, 0x15, 0xc8, 0x91, 0x43, 0x5f, 0x38, 0xd4, 0x7d,
0x56, 0x3f, 0xda, 0x71, 0x6a, 0xd5, 0x17, 0xf5, 0x43, 0x5a, 0xb2, 0x48, 0x05, 0x56, 0x51, 0x29,
0xf7, 0x85, 0x43, 0x8f, 0xea, 0x87, 0x0d, 0xc9, 0x7e, 0x86, 0x5a, 0x4e, 0x92, 0x0d, 0xb8, 0xd5,
0xac, 0xd2, 0xe3, 0x7a, 0xf5, 0xc0, 0x55, 0x4a, 0xb8, 0xbb, 0x87, 0x07, 0x07, 0xd5, 0x63, 0x87,
0x56, 0x0f, 0x4a, 0x53, 0xe4, 0x1e, 0x6c, 0x0c, 0xb1, 0xf7, 0x9e, 0x37, 0x0f, 0xea, 0xbb, 0xd5,
0x63, 0xc7, 0x6d, 0x3a, 0x0e, 0x2d, 0x4d, 0x93, 0x07, 0xf0, 0xea, 0xf0, 0x0e, 0xb5, 0x6a, 0xa3,
0xe1, 0x1c, 0xb8, 0xfb, 0xcf, 0x95, 0x47, 0xb4, 0x97, 0x66, 0x1e, 0xfd, 0xbe, 0x08, 0xb3, 0xc7,
0xf8, 0x3c, 0x23, 0x11, 0xe4, 0xd3, 0x13, 0x62, 0x72, 0xa7, 0x7f, 0xca, 0x63, 0xe6, 0xd3, 0x95,
0x8d, 0x1b, 0xb8, 0xfa, 0x45, 0x68, 0xff, 0xe2, 0xdf, 0xff, 0xf9, 0x62, 0xf2, 0x8e, 0xbd, 0xb6,
0x7d, 0xf1, 0xd6, 0xb6, 0x94, 0xdc, 0x36, 0x37, 0xf3, 0xf6, 0xa7, 0x52, 0xfe, 0xa9, 0xb5, 0x45,
0x3e, 0x82, 0x5c, 0x6a, 0x8e, 0x4f, 0x6e, 0xa7, 0x9e, 0xe8, 0xc3, 0x03, 0xac, 0xca, 0xc8, 0xa4,
0xc8, 0xbe, 0x83, 0x08, 0xab, 0xf6, 0xd2, 0x08, 0x82, 0xdc, 0xfb, 0x04, 0xf2, 0xe9, 0xf1, 0x72,
0xca, 0x98, 0x31, 0xc3, 0xe8, 0x94, 0x31, 0xe3, 0x66, 0xd2, 0xf6, 0x2d, 0x84, 0x2a, 0x93, 0x51,
0x28, 0x89, 0x93, 0x1e, 0x54, 0xa6, 0x70, 0xc6, 0x4c, 0x62, 0x53, 0x38, 0xe3, 0xa6, 0x9b, 0x06,
0x67, 0x6b, 0x0c, 0xce, 0x67, 0xb0, 0x38, 0x34, 0x46, 0x24, 0x83, 0x21, 0xeb, 0xf8, 0x91, 0x67,
0x65, 0xf3, 0x66, 0x01, 0x0d, 0xf8, 0x2a, 0x02, 0xde, 0xb5, 0x2b, 0xa3, 0xa7, 0x64, 0x06, 0x8b,
0xd2, 0x99, 0x97, 0x50, 0xcc, 0x4e, 0xf4, 0xc8, 0x2b, 0xfd, 0xad, 0xc7, 0xce, 0x1b, 0x2b, 0x77,
0x6f, 0xe4, 0x6b, 0xe4, 0xff, 0x47, 0xe4, 0x57, 0xec, 0x5b, 0xa3, 0xc8, 0x7a, 0xc4, 0x27, 0x81,
0x05, 0x14, 0xb3, 0xb3, 0xb7, 0x14, 0xf0, 0xd8, 0xd1, 0x5f, 0x0a, 0xf8, 0x86, 0xa1, 0xdd, 0x3d,
0x04, 0xbe, 0x6d, 0xaf, 0x8e, 0x02, 0xb7, 0x7a, 0x41, 0x57, 0xa2, 0xfe, 0x1c, 0x16, 0x87, 0x1a,
0xf2, 0x94, 0xaf, 0xc7, 0x37, 0xf1, 0x29, 0x5f, 0xdf, 0xd0, 0xcb, 0xbf, 0xcc, 0x62, 0xdd, 0xdf,
0x4b, 0x6c, 0x0f, 0x72, 0xa9, 0xa9, 0x56, 0x2a, 0x27, 0x46, 0x27, 0x6a, 0x95, 0x3b, 0xe3, 0x99,
0x1a, 0xaf, 0x82, 0x78, 0xcb, 0xf6, 0x62, 0x1f, 0x0f, 0x7b, 0x3f, 0xcc, 0x8e, 0x9f, 0x01, 0x0c,
0xe6, 0x4a, 0xa4, 0x92, 0x89, 0xfe, 0xcc, 0xf0, 0xaa, 0x72, 0x7b, 0x2c, 0x4f, 0x43, 0xac, 0x21,
0xc4, 0x12, 0x19, 0x86, 0x20, 0x11, 0xe4, 0x52, 0x63, 0xa2, 0x94, 0x15, 0xa3, 0x33, 0xa7, 0x94,
0x15, 0xe3, 0x26, 0x4b, 0x3a, 0x42, 0xb7, 0x36, 0x86, 0x20, 0xb6, 0x3f, 0x4b, 0x35, 0xb7, 0x9f,
0x93, 0x8f, 0x01, 0x06, 0xaf, 0x9b, 0x94, 0x41, 0x23, 0xef, 0xa0, 0x94, 0x41, 0xa3, 0xcf, 0x21,
0x7b, 0x19, 0xd1, 0x8a, 0x24, 0xdf, 0x47, 0x3b, 0xe1, 0x9c, 0x7c, 0xaa, 0x3b, 0xc9, 0x7e, 0x55,
0x26, 0x1b, 0x37, 0xd5, 0x7a, 0x85, 0xf1, 0xca, 0xcb, 0x5b, 0x01, 0x7b, 0x13, 0x61, 0x2a, 0x64,
0xbd, 0x0f, 0x33, 0xd4, 0x52, 0x90, 0x08, 0x0a, 0x38, 0xce, 0x3a, 0x0a, 0x59, 0x37, 0x39, 0x8b,
0x44, 0x0a, 0x31, 0x43, 0x1f, 0x45, 0x1c, 0x62, 0x6b, 0xc4, 0xbb, 0x88, 0x78, 0x8b, 0x0c, 0xae,
0x63, 0x6c, 0xa2, 0xb7, 0x13, 0xb3, 0xff, 0x87, 0x50, 0x78, 0x8f, 0x8b, 0x7e, 0x23, 0x99, 0x90,
0xc1, 0x9f, 0x3f, 0x99, 0x6e, 0xb5, 0xb2, 0x36, 0x42, 0x1f, 0x17, 0x0c, 0x9d, 0x84, 0x89, 0x6d,
0xd5, 0xa1, 0x12, 0x0a, 0xb3, 0xaa, 0x11, 0x4f, 0xed, 0x99, 0x69, 0xf2, 0x53, 0x7b, 0x66, 0x3b,
0xf6, 0x31, 0x01, 0xa6, 0x5b, 0x74, 0x0e, 0xb9, 0x41, 0xeb, 0x91, 0x8e, 0xe0, 0x91, 0xde, 0x27,
0x75, 0xe0, 0xa3, 0xfd, 0x8d, 0xbd, 0x81, 0x00, 0x6b, 0x64, 0xa5, 0x0f, 0x90, 0x6e, 0x77, 0x76,
0xbe, 0xf5, 0xd1, 0xab, 0xa7, 0xbe, 0x38, 0xeb, 0xb5, 0x1e, 0xb6, 0xa3, 0x60, 0xbb, 0xe3, 0x9f,
0x9e, 0x89, 0xd0, 0x0f, 0x4f, 0x3b, 0xac, 0x95, 0x28, 0x69, 0xbd, 0x75, 0x6b, 0x16, 0xff, 0x9a,
0xfe, 0xce, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x9c, 0xd3, 0x1f, 0xcc, 0xe3, 0x1e, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -3000,6 +3120,10 @@ type TraderClient interface {
//Leases returns the list of channels that were either purchased or sold by
//the trader within the auction.
Leases(ctx context.Context, in *LeasesRequest, opts ...grpc.CallOption) (*LeasesResponse, error)
// pool: `auction ratings`
//Returns the Node Tier information for this target Lightning node, and other
//related ranking information.
NodeRatings(ctx context.Context, in *NodeRatingRequest, opts ...grpc.CallOption) (*NodeRatingResponse, error)
}
type traderClient struct {
@ -3154,6 +3278,15 @@ func (c *traderClient) Leases(ctx context.Context, in *LeasesRequest, opts ...gr
return out, nil
}
func (c *traderClient) NodeRatings(ctx context.Context, in *NodeRatingRequest, opts ...grpc.CallOption) (*NodeRatingResponse, error) {
out := new(NodeRatingResponse)
err := c.cc.Invoke(ctx, "/poolrpc.Trader/NodeRatings", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// TraderServer is the server API for Trader service.
type TraderServer interface {
//
@ -3223,6 +3356,10 @@ type TraderServer interface {
//Leases returns the list of channels that were either purchased or sold by
//the trader within the auction.
Leases(context.Context, *LeasesRequest) (*LeasesResponse, error)
// pool: `auction ratings`
//Returns the Node Tier information for this target Lightning node, and other
//related ranking information.
NodeRatings(context.Context, *NodeRatingRequest) (*NodeRatingResponse, error)
}
// UnimplementedTraderServer can be embedded to have forward compatible implementations.
@ -3277,6 +3414,9 @@ func (*UnimplementedTraderServer) GetLsatTokens(ctx context.Context, req *Tokens
func (*UnimplementedTraderServer) Leases(ctx context.Context, req *LeasesRequest) (*LeasesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method Leases not implemented")
}
func (*UnimplementedTraderServer) NodeRatings(ctx context.Context, req *NodeRatingRequest) (*NodeRatingResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method NodeRatings not implemented")
}
func RegisterTraderServer(s *grpc.Server, srv TraderServer) {
s.RegisterService(&_Trader_serviceDesc, srv)
@ -3570,6 +3710,24 @@ func _Trader_Leases_Handler(srv interface{}, ctx context.Context, dec func(inter
return interceptor(ctx, in, info, handler)
}
func _Trader_NodeRatings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(NodeRatingRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(TraderServer).NodeRatings(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/poolrpc.Trader/NodeRatings",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(TraderServer).NodeRatings(ctx, req.(*NodeRatingRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Trader_serviceDesc = grpc.ServiceDesc{
ServiceName: "poolrpc.Trader",
HandlerType: (*TraderServer)(nil),
@ -3638,6 +3796,10 @@ var _Trader_serviceDesc = grpc.ServiceDesc{
MethodName: "Leases",
Handler: _Trader_Leases_Handler,
},
{
MethodName: "NodeRatings",
Handler: _Trader_NodeRatings_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "trader.proto",

View file

@ -527,6 +527,39 @@ func local_request_Trader_Leases_0(ctx context.Context, marshaler runtime.Marsha
}
var (
filter_Trader_NodeRatings_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)}
)
func request_Trader_NodeRatings_0(ctx context.Context, marshaler runtime.Marshaler, client TraderClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq NodeRatingRequest
var metadata runtime.ServerMetadata
if err := req.ParseForm(); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_Trader_NodeRatings_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.NodeRatings(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
return msg, metadata, err
}
func local_request_Trader_NodeRatings_0(ctx context.Context, marshaler runtime.Marshaler, server TraderServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
var protoReq NodeRatingRequest
var metadata runtime.ServerMetadata
if err := runtime.PopulateQueryParameters(&protoReq, req.URL.Query(), filter_Trader_NodeRatings_0); err != nil {
return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := server.NodeRatings(ctx, &protoReq)
return msg, metadata, err
}
// RegisterTraderHandlerServer registers the http handlers for service Trader to "mux".
// UnaryRPC :call TraderServer directly.
// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906.
@ -852,6 +885,26 @@ func RegisterTraderHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser
})
mux.Handle("GET", pattern_Trader_NodeRatings_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_Trader_NodeRatings_0(rctx, inboundMarshaler, server, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Trader_NodeRatings_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
@ -1213,6 +1266,26 @@ func RegisterTraderHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli
})
mux.Handle("GET", pattern_Trader_NodeRatings_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_Trader_NodeRatings_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
forward_Trader_NodeRatings_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
return nil
}
@ -1248,6 +1321,8 @@ var (
pattern_Trader_GetLsatTokens_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "lsat", "tokens"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_Trader_Leases_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "pool", "leases"}, "", runtime.AssumeColonVerbOpt(true)))
pattern_Trader_NodeRatings_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v1", "pool", "node_ratings"}, "", runtime.AssumeColonVerbOpt(true)))
)
var (
@ -1282,4 +1357,6 @@ var (
forward_Trader_GetLsatTokens_0 = runtime.ForwardResponseMessage
forward_Trader_Leases_0 = runtime.ForwardResponseMessage
forward_Trader_NodeRatings_0 = runtime.ForwardResponseMessage
)

View file

@ -178,6 +178,15 @@ service Trader {
};
};
/* pool: `auction ratings`
Returns the Node Tier information for this target Lightning node, and other
related ranking information.
*/
rpc NodeRatings(NodeRatingRequest) returns (NodeRatingResponse) {
option (google.api.http) = {
get: "/v1/pool/node_ratings"
};
};
}
message InitAccountRequest {
@ -536,6 +545,13 @@ message Bid {
features are added.
*/
uint32 version = 3;
/*
The minium node tier this order should be matched with. Only asks backed by
a node this tier or higher will be eligible for matching with this bid.
*/
NodeTier min_node_tier = 4;
}
message Ask {
@ -747,6 +763,12 @@ message Lease {
// Whether this channel was purchased from another trader or not.
bool purchased = 11;
// The pubkey of the node that this channel was bought/sold from.
bytes channel_remote_node_key = 12;
// The tier of the node that this channel was bought/sold from.
NodeTier channel_node_tier = 13;
}
message LeasesRequest {
@ -835,3 +857,13 @@ message LeaseDurationRequest {
message LeaseDurationResponse {
map<uint32, bool> lease_durations = 1;
}
message NodeRatingRequest {
// The target node to obtain ratings information for.
repeated bytes node_pubkeys = 1;
}
message NodeRatingResponse {
// A series of node ratings for each of the queried nodes.
repeated NodeRating node_ratings = 1;
}

View file

@ -435,6 +435,43 @@
]
}
},
"/v1/pool/node_ratings": {
"get": {
"summary": "pool: `auction ratings`\nReturns the Node Tier information for this target Lightning node, and other\nrelated ranking information.",
"operationId": "NodeRatings",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
"$ref": "#/definitions/poolrpcNodeRatingResponse"
}
},
"default": {
"description": "An unexpected error response",
"schema": {
"$ref": "#/definitions/gatewayruntimeError"
}
}
},
"parameters": [
{
"name": "node_pubkeys",
"description": "The target node to obtain ratings information for.",
"in": "query",
"required": false,
"type": "array",
"items": {
"type": "string",
"format": "byte"
},
"collectionFormat": "multi"
}
],
"tags": [
"Trader"
]
}
},
"/v1/pool/orders": {
"get": {
"summary": "pool: `orders list`\nListOrders returns a list of all active and archived orders that are\ncurrently known to the trader daemon.",
@ -732,6 +769,10 @@
"type": "integer",
"format": "int64",
"description": "The version of the order format that is used. Will be increased once new\nfeatures are added."
},
"min_node_tier": {
"$ref": "#/definitions/poolrpcNodeTier",
"description": "The minium node tier this order should be matched with. Only asks backed by\na node this tier or higher will be eligible for matching with this bid."
}
}
},
@ -933,6 +974,15 @@
"type": "boolean",
"format": "boolean",
"description": "Whether this channel was purchased from another trader or not."
},
"channel_remote_node_key": {
"type": "string",
"format": "byte",
"description": "The pubkey of the node that this channel was bought/sold from."
},
"channel_node_tier": {
"$ref": "#/definitions/poolrpcNodeTier",
"description": "The tier of the node that this channel was bought/sold from."
}
}
},
@ -1118,6 +1168,42 @@
}
}
},
"poolrpcNodeRating": {
"type": "object",
"properties": {
"node_pubkey": {
"type": "string",
"format": "byte",
"description": "The pubkey for the node these ratings belong to."
},
"node_tier": {
"$ref": "#/definitions/poolrpcNodeTier",
"description": "The tier of the target node."
}
}
},
"poolrpcNodeRatingResponse": {
"type": "object",
"properties": {
"node_ratings": {
"type": "array",
"items": {
"$ref": "#/definitions/poolrpcNodeRating"
},
"description": "A series of node ratings for each of the queried nodes."
}
}
},
"poolrpcNodeTier": {
"type": "string",
"enum": [
"TIER_DEFAULT",
"TIER_0",
"TIER_1"
],
"default": "TIER_DEFAULT",
"description": " - TIER_DEFAULT: The default node tier. This value will be determined at run-time by the\ncurrent order version.\n - TIER_0: Tier 0, bid with this tier are opting out of the smaller \"higher\nquality\" pool of nodes to match their bids. Nodes in this tier are\nconsidered to have \"no rating\".\n - TIER_1: Tier 1, the \"base\" node tier. Nodes in this tier are shown to have a\nhigher degree of up time and route-ability compared to the rest of the\nnodes in the network. This is the current default node tier when\nsubmitting bid orders."
},
"poolrpcOrder": {
"type": "object",
"properties": {

View file

@ -1826,6 +1826,11 @@ func (s *rpcServer) LeaseDurations(ctx context.Context,
}, nil
}
func (s *rpcServer) NodeRatings(ctx context.Context,
req *poolrpc.NodeRatingRequest) (*poolrpc.NodeRatingResponse, error) {
return nil, nil
}
// rpcOrderStateToDBState maps the order state as received over the RPC
// protocol to the local state that we use in the database.
func rpcOrderStateToDBState(state poolrpc.OrderState) (order.State, error) {