// Code generated by protoc-gen-go. DO NOT EDIT. // source: datasource.proto /* Package datasource is a generated protocol buffer package. It is generated from these files: datasource.proto It has these top-level messages: DatasourceRequest Query TimeRange DatasourceResponse QueryResult Table TableColumn TableRow RowValue DatasourceInfo TimeSeries Point */ package datasource import proto "github.com/golang/protobuf/proto" import fmt "fmt" import math "math" import ( context "golang.org/x/net/context" grpc "google.golang.org/grpc" ) // Reference imports to suppress errors if they are not otherwise used. var _ = proto.Marshal var _ = fmt.Errorf var _ = math.Inf // This is a compile-time assertion to ensure that this generated file // is compatible with the proto package it is being compiled against. // A compilation error at this line likely means your copy of the // proto package needs to be updated. const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package type RowValue_Kind int32 const ( // Field type null. RowValue_TYPE_NULL RowValue_Kind = 0 // Field type double. RowValue_TYPE_DOUBLE RowValue_Kind = 1 // Field type int64. RowValue_TYPE_INT64 RowValue_Kind = 2 // Field type bool. RowValue_TYPE_BOOL RowValue_Kind = 3 // Field type string. RowValue_TYPE_STRING RowValue_Kind = 4 // Field type bytes. RowValue_TYPE_BYTES RowValue_Kind = 5 ) var RowValue_Kind_name = map[int32]string{ 0: "TYPE_NULL", 1: "TYPE_DOUBLE", 2: "TYPE_INT64", 3: "TYPE_BOOL", 4: "TYPE_STRING", 5: "TYPE_BYTES", } var RowValue_Kind_value = map[string]int32{ "TYPE_NULL": 0, "TYPE_DOUBLE": 1, "TYPE_INT64": 2, "TYPE_BOOL": 3, "TYPE_STRING": 4, "TYPE_BYTES": 5, } func (x RowValue_Kind) String() string { return proto.EnumName(RowValue_Kind_name, int32(x)) } func (RowValue_Kind) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{8, 0} } type DatasourceRequest struct { TimeRange *TimeRange `protobuf:"bytes,1,opt,name=timeRange" json:"timeRange,omitempty"` Datasource *DatasourceInfo `protobuf:"bytes,2,opt,name=datasource" json:"datasource,omitempty"` Queries []*Query `protobuf:"bytes,3,rep,name=queries" json:"queries,omitempty"` } func (m *DatasourceRequest) Reset() { *m = DatasourceRequest{} } func (m *DatasourceRequest) String() string { return proto.CompactTextString(m) } func (*DatasourceRequest) ProtoMessage() {} func (*DatasourceRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} } func (m *DatasourceRequest) GetTimeRange() *TimeRange { if m != nil { return m.TimeRange } return nil } func (m *DatasourceRequest) GetDatasource() *DatasourceInfo { if m != nil { return m.Datasource } return nil } func (m *DatasourceRequest) GetQueries() []*Query { if m != nil { return m.Queries } return nil } type Query struct { RefId string `protobuf:"bytes,1,opt,name=refId" json:"refId,omitempty"` MaxDataPoints int64 `protobuf:"varint,2,opt,name=maxDataPoints" json:"maxDataPoints,omitempty"` IntervalMs int64 `protobuf:"varint,3,opt,name=intervalMs" json:"intervalMs,omitempty"` ModelJson string `protobuf:"bytes,4,opt,name=modelJson" json:"modelJson,omitempty"` } func (m *Query) Reset() { *m = Query{} } func (m *Query) String() string { return proto.CompactTextString(m) } func (*Query) ProtoMessage() {} func (*Query) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} } func (m *Query) GetRefId() string { if m != nil { return m.RefId } return "" } func (m *Query) GetMaxDataPoints() int64 { if m != nil { return m.MaxDataPoints } return 0 } func (m *Query) GetIntervalMs() int64 { if m != nil { return m.IntervalMs } return 0 } func (m *Query) GetModelJson() string { if m != nil { return m.ModelJson } return "" } type TimeRange struct { FromRaw string `protobuf:"bytes,1,opt,name=fromRaw" json:"fromRaw,omitempty"` ToRaw string `protobuf:"bytes,2,opt,name=toRaw" json:"toRaw,omitempty"` FromEpochMs int64 `protobuf:"varint,3,opt,name=fromEpochMs" json:"fromEpochMs,omitempty"` ToEpochMs int64 `protobuf:"varint,4,opt,name=toEpochMs" json:"toEpochMs,omitempty"` } func (m *TimeRange) Reset() { *m = TimeRange{} } func (m *TimeRange) String() string { return proto.CompactTextString(m) } func (*TimeRange) ProtoMessage() {} func (*TimeRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} } func (m *TimeRange) GetFromRaw() string { if m != nil { return m.FromRaw } return "" } func (m *TimeRange) GetToRaw() string { if m != nil { return m.ToRaw } return "" } func (m *TimeRange) GetFromEpochMs() int64 { if m != nil { return m.FromEpochMs } return 0 } func (m *TimeRange) GetToEpochMs() int64 { if m != nil { return m.ToEpochMs } return 0 } type DatasourceResponse struct { Results []*QueryResult `protobuf:"bytes,1,rep,name=results" json:"results,omitempty"` } func (m *DatasourceResponse) Reset() { *m = DatasourceResponse{} } func (m *DatasourceResponse) String() string { return proto.CompactTextString(m) } func (*DatasourceResponse) ProtoMessage() {} func (*DatasourceResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} } func (m *DatasourceResponse) GetResults() []*QueryResult { if m != nil { return m.Results } return nil } type QueryResult struct { Error string `protobuf:"bytes,1,opt,name=error" json:"error,omitempty"` RefId string `protobuf:"bytes,2,opt,name=refId" json:"refId,omitempty"` MetaJson string `protobuf:"bytes,3,opt,name=metaJson" json:"metaJson,omitempty"` Series []*TimeSeries `protobuf:"bytes,4,rep,name=series" json:"series,omitempty"` Tables []*Table `protobuf:"bytes,5,rep,name=tables" json:"tables,omitempty"` } func (m *QueryResult) Reset() { *m = QueryResult{} } func (m *QueryResult) String() string { return proto.CompactTextString(m) } func (*QueryResult) ProtoMessage() {} func (*QueryResult) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} } func (m *QueryResult) GetError() string { if m != nil { return m.Error } return "" } func (m *QueryResult) GetRefId() string { if m != nil { return m.RefId } return "" } func (m *QueryResult) GetMetaJson() string { if m != nil { return m.MetaJson } return "" } func (m *QueryResult) GetSeries() []*TimeSeries { if m != nil { return m.Series } return nil } func (m *QueryResult) GetTables() []*Table { if m != nil { return m.Tables } return nil } type Table struct { Columns []*TableColumn `protobuf:"bytes,1,rep,name=columns" json:"columns,omitempty"` Rows []*TableRow `protobuf:"bytes,2,rep,name=rows" json:"rows,omitempty"` } func (m *Table) Reset() { *m = Table{} } func (m *Table) String() string { return proto.CompactTextString(m) } func (*Table) ProtoMessage() {} func (*Table) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} } func (m *Table) GetColumns() []*TableColumn { if m != nil { return m.Columns } return nil } func (m *Table) GetRows() []*TableRow { if m != nil { return m.Rows } return nil } type TableColumn struct { Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` } func (m *TableColumn) Reset() { *m = TableColumn{} } func (m *TableColumn) String() string { return proto.CompactTextString(m) } func (*TableColumn) ProtoMessage() {} func (*TableColumn) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} } func (m *TableColumn) GetName() string { if m != nil { return m.Name } return "" } type TableRow struct { Values []*RowValue `protobuf:"bytes,1,rep,name=values" json:"values,omitempty"` } func (m *TableRow) Reset() { *m = TableRow{} } func (m *TableRow) String() string { return proto.CompactTextString(m) } func (*TableRow) ProtoMessage() {} func (*TableRow) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} } func (m *TableRow) GetValues() []*RowValue { if m != nil { return m.Values } return nil } type RowValue struct { Kind RowValue_Kind `protobuf:"varint,1,opt,name=kind,enum=models.RowValue_Kind" json:"kind,omitempty"` DoubleValue float64 `protobuf:"fixed64,2,opt,name=doubleValue" json:"doubleValue,omitempty"` Int64Value int64 `protobuf:"varint,3,opt,name=int64Value" json:"int64Value,omitempty"` BoolValue bool `protobuf:"varint,4,opt,name=boolValue" json:"boolValue,omitempty"` StringValue string `protobuf:"bytes,5,opt,name=stringValue" json:"stringValue,omitempty"` BytesValue []byte `protobuf:"bytes,6,opt,name=bytesValue,proto3" json:"bytesValue,omitempty"` } func (m *RowValue) Reset() { *m = RowValue{} } func (m *RowValue) String() string { return proto.CompactTextString(m) } func (*RowValue) ProtoMessage() {} func (*RowValue) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} } func (m *RowValue) GetKind() RowValue_Kind { if m != nil { return m.Kind } return RowValue_TYPE_NULL } func (m *RowValue) GetDoubleValue() float64 { if m != nil { return m.DoubleValue } return 0 } func (m *RowValue) GetInt64Value() int64 { if m != nil { return m.Int64Value } return 0 } func (m *RowValue) GetBoolValue() bool { if m != nil { return m.BoolValue } return false } func (m *RowValue) GetStringValue() string { if m != nil { return m.StringValue } return "" } func (m *RowValue) GetBytesValue() []byte { if m != nil { return m.BytesValue } return nil } type DatasourceInfo struct { Id int64 `protobuf:"varint,1,opt,name=id" json:"id,omitempty"` OrgId int64 `protobuf:"varint,2,opt,name=orgId" json:"orgId,omitempty"` Name string `protobuf:"bytes,3,opt,name=name" json:"name,omitempty"` Type string `protobuf:"bytes,4,opt,name=type" json:"type,omitempty"` Url string `protobuf:"bytes,5,opt,name=url" json:"url,omitempty"` JsonData string `protobuf:"bytes,6,opt,name=jsonData" json:"jsonData,omitempty"` DecryptedSecureJsonData map[string]string `protobuf:"bytes,7,rep,name=decryptedSecureJsonData" json:"decryptedSecureJsonData,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` } func (m *DatasourceInfo) Reset() { *m = DatasourceInfo{} } func (m *DatasourceInfo) String() string { return proto.CompactTextString(m) } func (*DatasourceInfo) ProtoMessage() {} func (*DatasourceInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} } func (m *DatasourceInfo) GetId() int64 { if m != nil { return m.Id } return 0 } func (m *DatasourceInfo) GetOrgId() int64 { if m != nil { return m.OrgId } return 0 } func (m *DatasourceInfo) GetName() string { if m != nil { return m.Name } return "" } func (m *DatasourceInfo) GetType() string { if m != nil { return m.Type } return "" } func (m *DatasourceInfo) GetUrl() string { if m != nil { return m.Url } return "" } func (m *DatasourceInfo) GetJsonData() string { if m != nil { return m.JsonData } return "" } func (m *DatasourceInfo) GetDecryptedSecureJsonData() map[string]string { if m != nil { return m.DecryptedSecureJsonData } return nil } type TimeSeries struct { Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` Tags map[string]string `protobuf:"bytes,2,rep,name=tags" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` Points []*Point `protobuf:"bytes,3,rep,name=points" json:"points,omitempty"` } func (m *TimeSeries) Reset() { *m = TimeSeries{} } func (m *TimeSeries) String() string { return proto.CompactTextString(m) } func (*TimeSeries) ProtoMessage() {} func (*TimeSeries) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} } func (m *TimeSeries) GetName() string { if m != nil { return m.Name } return "" } func (m *TimeSeries) GetTags() map[string]string { if m != nil { return m.Tags } return nil } func (m *TimeSeries) GetPoints() []*Point { if m != nil { return m.Points } return nil } type Point struct { Timestamp int64 `protobuf:"varint,1,opt,name=timestamp" json:"timestamp,omitempty"` Value float64 `protobuf:"fixed64,2,opt,name=value" json:"value,omitempty"` } func (m *Point) Reset() { *m = Point{} } func (m *Point) String() string { return proto.CompactTextString(m) } func (*Point) ProtoMessage() {} func (*Point) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} } func (m *Point) GetTimestamp() int64 { if m != nil { return m.Timestamp } return 0 } func (m *Point) GetValue() float64 { if m != nil { return m.Value } return 0 } func init() { proto.RegisterType((*DatasourceRequest)(nil), "models.DatasourceRequest") proto.RegisterType((*Query)(nil), "models.Query") proto.RegisterType((*TimeRange)(nil), "models.TimeRange") proto.RegisterType((*DatasourceResponse)(nil), "models.DatasourceResponse") proto.RegisterType((*QueryResult)(nil), "models.QueryResult") proto.RegisterType((*Table)(nil), "models.Table") proto.RegisterType((*TableColumn)(nil), "models.TableColumn") proto.RegisterType((*TableRow)(nil), "models.TableRow") proto.RegisterType((*RowValue)(nil), "models.RowValue") proto.RegisterType((*DatasourceInfo)(nil), "models.DatasourceInfo") proto.RegisterType((*TimeSeries)(nil), "models.TimeSeries") proto.RegisterType((*Point)(nil), "models.Point") proto.RegisterEnum("models.RowValue_Kind", RowValue_Kind_name, RowValue_Kind_value) } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context var _ grpc.ClientConn // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. const _ = grpc.SupportPackageIsVersion4 // Client API for DatasourcePlugin service type DatasourcePluginClient interface { Query(ctx context.Context, in *DatasourceRequest, opts ...grpc.CallOption) (*DatasourceResponse, error) } type datasourcePluginClient struct { cc *grpc.ClientConn } func NewDatasourcePluginClient(cc *grpc.ClientConn) DatasourcePluginClient { return &datasourcePluginClient{cc} } func (c *datasourcePluginClient) Query(ctx context.Context, in *DatasourceRequest, opts ...grpc.CallOption) (*DatasourceResponse, error) { out := new(DatasourceResponse) err := grpc.Invoke(ctx, "/models.DatasourcePlugin/Query", in, out, c.cc, opts...) if err != nil { return nil, err } return out, nil } // Server API for DatasourcePlugin service type DatasourcePluginServer interface { Query(context.Context, *DatasourceRequest) (*DatasourceResponse, error) } func RegisterDatasourcePluginServer(s *grpc.Server, srv DatasourcePluginServer) { s.RegisterService(&_DatasourcePlugin_serviceDesc, srv) } func _DatasourcePlugin_Query_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(DatasourceRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { return srv.(DatasourcePluginServer).Query(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, FullMethod: "/models.DatasourcePlugin/Query", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { return srv.(DatasourcePluginServer).Query(ctx, req.(*DatasourceRequest)) } return interceptor(ctx, in, info, handler) } var _DatasourcePlugin_serviceDesc = grpc.ServiceDesc{ ServiceName: "models.DatasourcePlugin", HandlerType: (*DatasourcePluginServer)(nil), Methods: []grpc.MethodDesc{ { MethodName: "Query", Handler: _DatasourcePlugin_Query_Handler, }, }, Streams: []grpc.StreamDesc{}, Metadata: "datasource.proto", } func init() { proto.RegisterFile("datasource.proto", fileDescriptor0) } var fileDescriptor0 = []byte{ // 841 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xdb, 0x8e, 0x23, 0x35, 0x10, 0xa5, 0x2f, 0xc9, 0xa4, 0x2b, 0x3b, 0xa1, 0xd7, 0xdc, 0x42, 0x34, 0x42, 0xa1, 0xb5, 0x88, 0x80, 0x44, 0x40, 0xd9, 0xd1, 0x80, 0x40, 0xe2, 0x21, 0x3b, 0x11, 0xca, 0x10, 0x66, 0x06, 0x27, 0x8b, 0xb4, 0x08, 0x09, 0x75, 0xd2, 0x4e, 0x68, 0xb6, 0xbb, 0x9d, 0xb5, 0xdd, 0x13, 0x22, 0x9e, 0xf8, 0x18, 0x24, 0x9e, 0xf9, 0x01, 0x1e, 0xf9, 0x2d, 0xe4, 0xea, 0x6b, 0x76, 0x02, 0x12, 0x6f, 0xae, 0x73, 0x4e, 0x95, 0xcb, 0x55, 0x65, 0x1b, 0xdc, 0xc0, 0x57, 0xbe, 0xe4, 0xa9, 0x58, 0xb1, 0xe1, 0x56, 0x70, 0xc5, 0x49, 0x33, 0xe6, 0x01, 0x8b, 0xa4, 0xf7, 0xbb, 0x01, 0x0f, 0x2f, 0x4b, 0x92, 0xb2, 0x17, 0x29, 0x93, 0x8a, 0x7c, 0x0c, 0x8e, 0x0a, 0x63, 0x46, 0xfd, 0x64, 0xc3, 0xba, 0x46, 0xdf, 0x18, 0xb4, 0x47, 0x0f, 0x87, 0x99, 0xc7, 0x70, 0x51, 0x10, 0xb4, 0xd2, 0x90, 0x0b, 0x80, 0x6a, 0x8b, 0xae, 0x89, 0x1e, 0x6f, 0x16, 0x1e, 0x55, 0xfc, 0x69, 0xb2, 0xe6, 0xb4, 0xa6, 0x24, 0xef, 0xc3, 0xc9, 0x8b, 0x94, 0x89, 0x90, 0xc9, 0xae, 0xd5, 0xb7, 0x06, 0xed, 0xd1, 0x69, 0xe1, 0xf4, 0x6d, 0xca, 0xc4, 0x9e, 0x16, 0xac, 0xf7, 0x9b, 0x01, 0x0d, 0x84, 0xc8, 0xeb, 0xd0, 0x10, 0x6c, 0x3d, 0x0d, 0x30, 0x2f, 0x87, 0x66, 0x06, 0x79, 0x04, 0xa7, 0xb1, 0xff, 0x8b, 0xde, 0xe9, 0x96, 0x87, 0x89, 0x92, 0x98, 0x83, 0x45, 0x0f, 0x41, 0xf2, 0x0e, 0x40, 0x98, 0x28, 0x26, 0xee, 0xfc, 0xe8, 0x1b, 0xbd, 0xa3, 0x96, 0xd4, 0x10, 0x72, 0x06, 0x0e, 0x6e, 0x7f, 0x25, 0x79, 0xd2, 0xb5, 0x31, 0x7e, 0x05, 0x78, 0xbf, 0x82, 0x53, 0x1e, 0x9e, 0x74, 0xe1, 0x64, 0x2d, 0x78, 0x4c, 0xfd, 0x5d, 0x9e, 0x48, 0x61, 0xea, 0x04, 0x15, 0xd7, 0xb8, 0x99, 0x25, 0x88, 0x06, 0xe9, 0x43, 0x5b, 0x0b, 0x26, 0x5b, 0xbe, 0xfa, 0xa9, 0xdc, 0xbb, 0x0e, 0xe9, 0xcd, 0x15, 0x2f, 0x78, 0x1b, 0xf9, 0x0a, 0xf0, 0x9e, 0x00, 0xa9, 0xf7, 0x49, 0x6e, 0x79, 0x22, 0x19, 0xf9, 0x08, 0x4e, 0x04, 0x93, 0x69, 0xa4, 0x64, 0xd7, 0xc0, 0xfa, 0xbd, 0x76, 0x58, 0x3f, 0xe4, 0x68, 0xa1, 0xf1, 0xfe, 0x30, 0xa0, 0x5d, 0x23, 0x74, 0xaa, 0x4c, 0x08, 0x2e, 0x8a, 0x5a, 0xa2, 0x51, 0x55, 0xd8, 0xac, 0x57, 0xb8, 0x07, 0xad, 0x98, 0x29, 0x1f, 0x4b, 0x63, 0x21, 0x51, 0xda, 0xe4, 0x43, 0x68, 0xca, 0xac, 0x8b, 0x36, 0x66, 0x41, 0xea, 0xc3, 0x32, 0x47, 0x86, 0xe6, 0x0a, 0xf2, 0x1e, 0x34, 0x95, 0xbf, 0x8c, 0x98, 0xec, 0x36, 0x0e, 0x3b, 0xbe, 0xd0, 0x28, 0xcd, 0x49, 0xef, 0x07, 0x68, 0x20, 0xa0, 0x8f, 0xb8, 0xe2, 0x51, 0x1a, 0x27, 0xf7, 0x8e, 0x88, 0xfc, 0x13, 0xe4, 0x68, 0xa1, 0x21, 0x8f, 0xc0, 0x16, 0x7c, 0xa7, 0xfb, 0xaf, 0xb5, 0xee, 0x61, 0x70, 0xbe, 0xa3, 0xc8, 0x7a, 0xef, 0x42, 0xbb, 0xe6, 0x4d, 0x08, 0xd8, 0x89, 0x1f, 0xb3, 0xbc, 0x0c, 0xb8, 0xf6, 0xce, 0xa1, 0x55, 0x38, 0x91, 0x01, 0x34, 0xef, 0xfc, 0x28, 0x65, 0x45, 0x0a, 0x65, 0x58, 0xca, 0x77, 0xdf, 0x69, 0x82, 0xe6, 0xbc, 0xf7, 0x97, 0x09, 0xad, 0x02, 0x24, 0x1f, 0x80, 0xfd, 0x3c, 0x4c, 0xb2, 0x49, 0xed, 0x8c, 0xde, 0x78, 0xd9, 0x69, 0xf8, 0x75, 0x98, 0x04, 0x14, 0x25, 0x7a, 0x3c, 0x02, 0x9e, 0x2e, 0x23, 0x86, 0x0c, 0x56, 0xde, 0xa0, 0x75, 0x28, 0x9f, 0xdd, 0x8b, 0xf3, 0x4c, 0x50, 0xcd, 0x6e, 0x8e, 0xe8, 0xf1, 0x59, 0x72, 0x1e, 0x65, 0xb4, 0x1e, 0x9f, 0x16, 0xad, 0x00, 0x1d, 0x5f, 0x2a, 0x11, 0x26, 0x9b, 0x8c, 0x6f, 0xe0, 0x41, 0xeb, 0x90, 0x8e, 0xbf, 0xdc, 0x2b, 0x26, 0x33, 0x41, 0xb3, 0x6f, 0x0c, 0x1e, 0xd0, 0x1a, 0xe2, 0xad, 0xc1, 0xd6, 0xf9, 0x92, 0x53, 0x70, 0x16, 0xcf, 0x6e, 0x27, 0x3f, 0x5e, 0x3f, 0x9d, 0xcd, 0xdc, 0x57, 0xc8, 0xab, 0xd0, 0x46, 0xf3, 0xf2, 0xe6, 0xe9, 0x78, 0x36, 0x71, 0x0d, 0xd2, 0x01, 0x40, 0x60, 0x7a, 0xbd, 0xb8, 0x38, 0x77, 0xcd, 0x52, 0x3f, 0xbe, 0xb9, 0x99, 0xb9, 0x56, 0xa9, 0x9f, 0x2f, 0xe8, 0xf4, 0xfa, 0x2b, 0xd7, 0x2e, 0xf5, 0xe3, 0x67, 0x8b, 0xc9, 0xdc, 0x6d, 0x78, 0x7f, 0x9b, 0xd0, 0x39, 0x7c, 0x31, 0x48, 0x07, 0xcc, 0x30, 0xab, 0xa2, 0x45, 0xcd, 0x30, 0xd0, 0x03, 0xca, 0xc5, 0x26, 0x1f, 0x50, 0x8b, 0x66, 0x46, 0xd9, 0x44, 0xab, 0x6a, 0xa2, 0xc6, 0xd4, 0x7e, 0xcb, 0xf2, 0xbb, 0x8c, 0x6b, 0xe2, 0x82, 0x95, 0x8a, 0x28, 0x2f, 0x81, 0x5e, 0xea, 0xd1, 0xfe, 0x59, 0xf2, 0x44, 0xef, 0x8a, 0x07, 0x77, 0x68, 0x69, 0x93, 0x18, 0xde, 0x0a, 0xd8, 0x4a, 0xec, 0xb7, 0x8a, 0x05, 0x73, 0xb6, 0x4a, 0x05, 0xbb, 0x2a, 0xa4, 0x27, 0x38, 0x0b, 0x8f, 0x8f, 0x3f, 0x73, 0xc3, 0xcb, 0xe3, 0x5e, 0x93, 0x44, 0x89, 0x3d, 0xfd, 0xb7, 0x98, 0xbd, 0x2b, 0x38, 0xfb, 0x2f, 0x47, 0x9d, 0xfc, 0x73, 0xb6, 0xcf, 0x07, 0x55, 0x2f, 0x75, 0x31, 0xee, 0xca, 0x99, 0x71, 0x68, 0x66, 0x7c, 0x6e, 0x7e, 0x66, 0x78, 0x7f, 0x1a, 0x00, 0xd5, 0x05, 0x3c, 0x36, 0xe4, 0xe4, 0x13, 0xb0, 0x95, 0xbf, 0x29, 0x6e, 0xcb, 0xd9, 0xfd, 0x6b, 0x3b, 0x5c, 0xf8, 0x1b, 0x99, 0xe5, 0x8c, 0x4a, 0x7d, 0x7d, 0xb7, 0xd9, 0x0b, 0xfb, 0xd2, 0x83, 0x8d, 0x4f, 0x2c, 0xcd, 0xc9, 0xde, 0xa7, 0xe0, 0x94, 0x9e, 0xff, 0x2b, 0xe9, 0x2f, 0xa0, 0x81, 0x91, 0xf0, 0x39, 0x0c, 0x63, 0x26, 0x95, 0x1f, 0x6f, 0xf3, 0xde, 0x57, 0xc0, 0x61, 0x00, 0x23, 0x0f, 0x30, 0xa2, 0xe0, 0x56, 0x5d, 0xb8, 0x8d, 0xd2, 0x4d, 0x98, 0x90, 0x2f, 0x8b, 0x8f, 0xe3, 0xed, 0xfb, 0x8d, 0xca, 0xff, 0xbb, 0x5e, 0xef, 0x18, 0x95, 0x3d, 0xb1, 0xe3, 0x07, 0xdf, 0xd7, 0x3e, 0xac, 0x65, 0x13, 0xbf, 0xcf, 0xc7, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xab, 0xf8, 0xda, 0x77, 0x52, 0x07, 0x00, 0x00, }