diff --git a/sample.go b/sample.go index 0a21069..b8829c1 100644 --- a/sample.go +++ b/sample.go @@ -66,4 +66,7 @@ func main() { // SQL sample sample.SQLQuerySample(client) + + // Server side encryption sample + sample.ServerSideEncryptionSample(client) } diff --git a/sample/ServerSideEncryptionSample.go b/sample/ServerSideEncryptionSample.go new file mode 100644 index 0000000..3094da5 --- /dev/null +++ b/sample/ServerSideEncryptionSample.go @@ -0,0 +1,171 @@ +package sample + +import ( + "fmt" + "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore" + "time" +) + +const ( + TABLE_NAME_DISABLE = "disableSseSampleTable" + TABLE_NAME_KMS_SERVICE = "kmsServiceSampleTable" + TABLE_NAME_BYOK = "byokSampleTable" + PRIMARY_KEY_NAME = "pk" + + BYOK_KEY_ID = "" + BYOK_ROLE_ARN = "acs:ram:::role/kms-ots-test" +) + +func ServerSideEncryptionSample(client *tablestore.TableStoreClient) { + // 创建关闭服务器端加密功能的表 + deleteTableIfExist(client, TABLE_NAME_DISABLE) + createTableDisableSse(client, TABLE_NAME_DISABLE) + + // 创建开启服务器端加密功能(服务主秘钥)的表 + deleteTableIfExist(client, TABLE_NAME_KMS_SERVICE) + createTableKmsService(client, TABLE_NAME_KMS_SERVICE) + + // 创建开启服务器端加密功能(用户主秘钥)的表 + deleteTableIfExist(client, TABLE_NAME_BYOK) + createTableByok(client, TABLE_NAME_BYOK, BYOK_KEY_ID, BYOK_ROLE_ARN) + + // 查看表的属性 + describeTable(client, TABLE_NAME_DISABLE) + describeTable(client, TABLE_NAME_KMS_SERVICE) + describeTable(client, TABLE_NAME_BYOK) + + // 等待表load完毕. + time.Sleep(10 * time.Second) + + // 各写入一行数据 + putRow(client, TABLE_NAME_DISABLE, "pkValue") + putRow(client, TABLE_NAME_KMS_SERVICE, "pkValue") + putRow(client, TABLE_NAME_BYOK, "pkValue") + + // 各读取该行数据 + getRow(client, TABLE_NAME_DISABLE, "pkValue") + getRow(client, TABLE_NAME_KMS_SERVICE, "pkValue") + getRow(client, TABLE_NAME_BYOK, "pkValue") +} + +func deleteTableIfExist(client *tablestore.TableStoreClient, tableName string) { + _, err := client.DeleteTable(&tablestore.DeleteTableRequest{ + TableName: tableName, + }) + if err != nil { + fmt.Println("DeleteTable failed", tableName, err.Error()) + } +} + +func createTable(client *tablestore.TableStoreClient, tableName string, sseSpec *tablestore.SSESpecification) { + createtableRequest := new(tablestore.CreateTableRequest) + tableMeta := new(tablestore.TableMeta) + tableMeta.TableName = tableName + tableMeta.AddPrimaryKeyColumn(PRIMARY_KEY_NAME, tablestore.PrimaryKeyType_STRING) + tableOption := new(tablestore.TableOption) + tableOption.TimeToAlive = -1 + tableOption.MaxVersion = 3 + reservedThroughput := new(tablestore.ReservedThroughput) + reservedThroughput.Readcap = 0 + reservedThroughput.Writecap = 0 + createtableRequest.TableMeta = tableMeta + createtableRequest.TableOption = tableOption + createtableRequest.ReservedThroughput = reservedThroughput + createtableRequest.SSESpecification = sseSpec + + _, err := client.CreateTable(createtableRequest) + if err != nil { + fmt.Println("CreateTable failed", tableName, err.Error()) + } +} + +func createTableDisableSse(client *tablestore.TableStoreClient, tableName string) { + // 关闭服务器端加密功能 + sseSpec := new(tablestore.SSESpecification) + sseSpec.SetEnable(false) + + createTable(client, tableName, sseSpec) +} + +func createTableKmsService(client *tablestore.TableStoreClient, tableName string) { + // 打开服务器端加密功能,使用KMS的服务主密钥 + // 需要确保已经在所在区域开通了KMS服务 + sseSpec := new(tablestore.SSESpecification) + sseSpec.SetEnable(true) + sseSpec.SetKeyType(tablestore.SSE_KMS_SERVICE) + + createTable(client, tableName, sseSpec) +} + +func createTableByok(client *tablestore.TableStoreClient, tableName string, keyId string, roleArn string) { + // 打开服务器端加密功能,使用KMS的用户主密钥 + // 需要确保keyId合法有效且未被禁用,同时roleArn被授予了临时访问该keyId的权限 + sseSpec := new(tablestore.SSESpecification) + sseSpec.SetEnable(true) + sseSpec.SetKeyType(tablestore.SSE_BYOK) + sseSpec.SetKeyId(keyId) + sseSpec.SetRoleArn(roleArn) + + createTable(client, tableName, sseSpec) +} + +func describeTable(client *tablestore.TableStoreClient, tableName string) { + resp, err := client.DescribeTable(&tablestore.DescribeTableRequest{ + TableName: tableName, + }) + if err != nil { + fmt.Println("describe table failed", tableName, err.Error()) + return + } + fmt.Println("表的名称:" + resp.TableMeta.TableName) + sseDetails := resp.SSEDetails + if sseDetails.Enable { + fmt.Println("表是否开启服务器端加密功能:是") + fmt.Println("表的加密秘钥类型:", sseDetails.KeyType.String()) + fmt.Println("表的加密主密钥id:", sseDetails.KeyId) + if sseDetails.KeyType == tablestore.SSE_BYOK { + fmt.Println("表的全局资源描述符:" + sseDetails.RoleArn) + } + } else { + fmt.Println("表是否开启服务器端加密功能:否") + } + +} + +func putRow(client *tablestore.TableStoreClient, tableName string, pkValue string) { + putRowRequest := new(tablestore.PutRowRequest) + putRowChange := new(tablestore.PutRowChange) + putRowChange.TableName = tableName + putPk := new(tablestore.PrimaryKey) + putPk.AddPrimaryKeyColumn(PRIMARY_KEY_NAME, pkValue) + + putRowChange.PrimaryKey = putPk + putRowChange.AddColumn("price", int64(5120)) + putRowChange.SetCondition(tablestore.RowExistenceExpectation_IGNORE) + putRowRequest.PutRowChange = putRowChange + _, err := client.PutRow(putRowRequest) + if err != nil { + fmt.Println("PutRow failed", tableName, err.Error()) + } +} + +func getRow(client *tablestore.TableStoreClient, tableName string, pkValue string) { + getRowRequest := new(tablestore.GetRowRequest) + criteria := new(tablestore.SingleRowQueryCriteria) + putPk := new(tablestore.PrimaryKey) + putPk.AddPrimaryKeyColumn(PRIMARY_KEY_NAME, pkValue) + + criteria.PrimaryKey = putPk + getRowRequest.SingleRowQueryCriteria = criteria + getRowRequest.SingleRowQueryCriteria.TableName = tableName + getRowRequest.SingleRowQueryCriteria.MaxVersion = 1 + getResp, err := client.GetRow(getRowRequest) + + if err != nil { + fmt.Println("GetRow failed", tableName, err) + } else { + colmap := getResp.GetColumnMap() + fmt.Println(tableName, "length is ", len(colmap.Columns)) + fmt.Println("get row col0 result is ", getResp.Columns[0].ColumnName, getResp.Columns[0].Value) + } +} diff --git a/tablestore/api.go b/tablestore/api.go index 0321c20..042f6ec 100644 --- a/tablestore/api.go +++ b/tablestore/api.go @@ -490,7 +490,9 @@ func (tableStoreClient *TableStoreClient) CreateTable(request *CreateTableReques if request.StreamSpec.EnableStream { ss = otsprotocol.StreamSpecification{ EnableStream: &request.StreamSpec.EnableStream, - ExpirationTime: &request.StreamSpec.ExpirationTime} + ExpirationTime: &request.StreamSpec.ExpirationTime, + ColumnsToGet: request.StreamSpec.OriginColumnsToGet, + } } else { ss = otsprotocol.StreamSpecification{ EnableStream: &request.StreamSpec.EnableStream} @@ -499,6 +501,37 @@ func (tableStoreClient *TableStoreClient) CreateTable(request *CreateTableReques req.StreamSpec = &ss } + if request.SSESpecification != nil { + if err := request.SSESpecification.CheckArguments(); err != nil { + return nil, err + } + sse := new(otsprotocol.SSESpecification) + sse.Enable = proto.Bool(request.SSESpecification.Enable) + if request.SSESpecification.KeyType != nil { + sseType := *request.SSESpecification.KeyType + switch sseType { + case SSE_KMS_SERVICE: + keyType := otsprotocol.SSEKeyType_SSE_KMS_SERVICE + sse.KeyType = &keyType + case SSE_BYOK: + keyType := otsprotocol.SSEKeyType_SSE_BYOK + sse.KeyType = &keyType + default: + return nil, errInvalidSSEKeyType(sseType.String()) + } + } + + if request.SSESpecification.KeyId != nil { + sse.KeyId = []byte(*request.SSESpecification.KeyId) + } + + if request.SSESpecification.RoleArn != nil { + sse.RoleArn = []byte(*request.SSESpecification.RoleArn) + } + + req.SseSpec = sse + } + resp := new(otsprotocol.CreateTableResponse) response := &CreateTableResponse{} if err := tableStoreClient.doRequestWithRetry(createTableUri, req, resp, &response.ResponseInfo); err != nil { @@ -1030,11 +1063,11 @@ func (tableStoreClient *TableStoreClient) DescribeTable(request *DescribeTableRe if resp.StreamDetails != nil && *resp.StreamDetails.EnableStream { response.StreamDetails = &StreamDetails{ - EnableStream: *resp.StreamDetails.EnableStream, - StreamId: (*StreamId)(resp.StreamDetails.StreamId), - ExpirationTime: *resp.StreamDetails.ExpirationTime, - LastEnableTime: *resp.StreamDetails.LastEnableTime, - ColumnsToGet: resp.GetStreamDetails().GetColumnsToGet(), + EnableStream: *resp.StreamDetails.EnableStream, + StreamId: (*StreamId)(resp.StreamDetails.StreamId), + ExpirationTime: *resp.StreamDetails.ExpirationTime, + LastEnableTime: *resp.StreamDetails.LastEnableTime, + OriginColumnsToGet: resp.GetStreamDetails().GetColumnsToGet(), } } else { response.StreamDetails = &StreamDetails{ @@ -1045,6 +1078,34 @@ func (tableStoreClient *TableStoreClient) DescribeTable(request *DescribeTableRe response.IndexMetas = append(response.IndexMetas, ConvertPbIndexMetaToIndexMeta(meta)) } + if resp.GetSseDetails() == nil { + response.SSEDetails = &SSEDetails{ + Enable: false, + } + } else { + respSse := resp.GetSseDetails() + sseDetail := new(SSEDetails) + sseDetail.Enable = resp.GetSseDetails().GetEnable() + switch respSse.GetKeyType() { + case otsprotocol.SSEKeyType_SSE_KMS_SERVICE: + sseDetail.KeyType = SSE_KMS_SERVICE + case otsprotocol.SSEKeyType_SSE_BYOK: + sseDetail.KeyType = SSE_BYOK + default: + return nil, errInvalidSSEKeyType(respSse.GetKeyType().String()) + } + + if respSse.GetKeyId() != nil { + sseDetail.KeyId = string(respSse.GetKeyId()) + } + + if respSse.GetRoleArn() != nil { + sseDetail.RoleArn = string(respSse.GetRoleArn()) + } + + response.SSEDetails = sseDetail + } + return response, nil } @@ -1080,7 +1141,7 @@ func (tableStoreClient *TableStoreClient) UpdateTable(request *UpdateTableReques req.StreamSpec = &otsprotocol.StreamSpecification{ EnableStream: &request.StreamSpec.EnableStream, ExpirationTime: &request.StreamSpec.ExpirationTime, - ColumnsToGet: request.StreamSpec.ColumnsToGet, + ColumnsToGet: request.StreamSpec.OriginColumnsToGet, } } else { req.StreamSpec = &otsprotocol.StreamSpecification{EnableStream: &request.StreamSpec.EnableStream} @@ -1104,11 +1165,11 @@ func (tableStoreClient *TableStoreClient) UpdateTable(request *UpdateTableReques if *resp.StreamDetails.EnableStream { response.StreamDetails = &StreamDetails{ - EnableStream: *resp.StreamDetails.EnableStream, - StreamId: (*StreamId)(resp.StreamDetails.StreamId), - ExpirationTime: *resp.StreamDetails.ExpirationTime, - LastEnableTime: *resp.StreamDetails.LastEnableTime, - ColumnsToGet: resp.GetStreamDetails().GetColumnsToGet(), + EnableStream: *resp.StreamDetails.EnableStream, + StreamId: (*StreamId)(resp.StreamDetails.StreamId), + ExpirationTime: *resp.StreamDetails.ExpirationTime, + LastEnableTime: *resp.StreamDetails.LastEnableTime, + OriginColumnsToGet: resp.GetStreamDetails().GetColumnsToGet(), } } else { response.StreamDetails = &StreamDetails{ diff --git a/tablestore/api_test.go b/tablestore/api_test.go index b49b181..2ab0d3c 100644 --- a/tablestore/api_test.go +++ b/tablestore/api_test.go @@ -214,8 +214,6 @@ func PrepareSQLSearchIndex(c *C, tableName string, indexName string) { } func (s *TableStoreSuite) TestCreateTable(c *C) { - fmt.Println("TestCreateTable finished") - tableName := tableNamePrefix + "testcreatetable1" deleteReq := new(DeleteTableRequest) @@ -243,10 +241,54 @@ func (s *TableStoreSuite) TestCreateTable(c *C) { _, error := client.CreateTable(createtableRequest) c.Check(error, Equals, nil) - fmt.Println("TestCreateTable finished") } +func (s *TableStoreSuite) TestCreateTableWithOriginColumn(c *C) { + tableName := tableNamePrefix + "originColumn" + defer func() { + deleteReq := new(DeleteTableRequest) + deleteReq.TableName = tableName + client.DeleteTable(deleteReq) + }() + + ctReq := new(CreateTableRequest) + tableMeta := new(TableMeta) + tableMeta.TableName = tableName + tableMeta.AddPrimaryKeyColumn("pk1", PrimaryKeyType_STRING) + + tableOption := new(TableOption) + + tableOption.TimeToAlive = -1 + tableOption.MaxVersion = 3 + + reservedThroughput := new(ReservedThroughput) + reservedThroughput.Readcap = 0 + reservedThroughput.Writecap = 0 + + ctReq.TableMeta = tableMeta + ctReq.TableOption = tableOption + ctReq.ReservedThroughput = reservedThroughput + + ctReq.StreamSpec = &StreamSpecification{ + EnableStream: true, + ExpirationTime: 168, + OriginColumnsToGet: []string{"col1", "col2"}, + } + + _, err := client.CreateTable(ctReq) + c.Check(err, Equals, nil) + + descTableRequest := &DescribeTableRequest{ + TableName: tableName, + } + descResp, err := client.DescribeTable(descTableRequest) + c.Check(err, Equals, nil) + c.Check(2, Equals, len(descResp.StreamDetails.OriginColumnsToGet)) + + fmt.Println("TestCreateTableWithOriginColumn finished") +} + func (s *TableStoreSuite) TestReCreateTableAndPutRow(c *C) { fmt.Println("TestReCreateTableAndPutRow started") @@ -330,7 +372,7 @@ func (s *TableStoreSuite) TestUpdateAndDescribeTable(c *C) { updateTableReq.StreamSpec = new(StreamSpecification) updateTableReq.StreamSpec.EnableStream = true updateTableReq.StreamSpec.ExpirationTime = 168 - updateTableReq.StreamSpec.ColumnsToGet = []string{"col1", "col2"} + updateTableReq.StreamSpec.OriginColumnsToGet = []string{"col1", "col2"} updateTableResp, error := client.UpdateTable(updateTableReq) c.Assert(error, Equals, nil) @@ -350,9 +392,9 @@ func (s *TableStoreSuite) TestUpdateAndDescribeTable(c *C) { c.Assert(describ.TableOption.MaxVersion, Equals, updateTableReq.TableOption.MaxVersion) c.Assert(describ.StreamDetails.EnableStream, Equals, updateTableReq.StreamSpec.EnableStream) c.Assert(describ.StreamDetails.ExpirationTime, Equals, updateTableReq.StreamSpec.ExpirationTime) - c.Assert(len(describ.StreamDetails.ColumnsToGet), Equals, len(updateTableReq.StreamSpec.ColumnsToGet)) - for i, s := range describ.StreamDetails.ColumnsToGet { - c.Assert(s, Equals, updateTableReq.StreamSpec.ColumnsToGet[i]) + c.Assert(len(describ.StreamDetails.OriginColumnsToGet), Equals, len(updateTableReq.StreamSpec.OriginColumnsToGet)) + for i, s := range describ.StreamDetails.OriginColumnsToGet { + c.Assert(s, Equals, updateTableReq.StreamSpec.OriginColumnsToGet[i]) } fmt.Println("TestUpdateAndDescribeTable finished") } diff --git a/tablestore/error.go b/tablestore/error.go index bac1bb2..7774462 100644 --- a/tablestore/error.go +++ b/tablestore/error.go @@ -13,6 +13,10 @@ var ( return errors.New("[tablestore] table name: \"" + name + "\" too long") } + errInvalidSSEKeyType = func(sseType string) error { + return errors.New(fmt.Sprintf("[tablestore] unknown server side encryption key type: %s", sseType)) + } + errInvalidPartitionType = errors.New("[tablestore] invalid partition key") errMissPrimaryKey = errors.New("[tablestore] missing primary key") errPrimaryKeyTooMuch = errors.New("[tablestore] primary key too much") diff --git a/tablestore/model.go b/tablestore/model.go index f98e585..de3b3a5 100644 --- a/tablestore/model.go +++ b/tablestore/model.go @@ -102,6 +102,7 @@ type CreateTableRequest struct { ReservedThroughput *ReservedThroughput StreamSpec *StreamSpecification IndexMetas []*IndexMeta + SSESpecification *SSESpecification } type CreateIndexRequest struct { @@ -180,6 +181,7 @@ type DescribeTableResponse struct { ReservedThroughput *ReservedThroughput StreamDetails *StreamDetails IndexMetas []*IndexMeta + SSEDetails *SSEDetails ResponseInfo } @@ -680,17 +682,17 @@ type ListStreamResponse struct { } type StreamSpecification struct { - EnableStream bool - ExpirationTime int32 // must be positive. in hours - ColumnsToGet []string + EnableStream bool + ExpirationTime int32 // must be positive. in hours + OriginColumnsToGet []string //origin columns to get for stream data } type StreamDetails struct { - EnableStream bool - StreamId *StreamId // nil when stream is disabled. - ExpirationTime int32 // in hours - LastEnableTime int64 // the last time stream is enabled, in usec - ColumnsToGet []string + EnableStream bool + StreamId *StreamId // nil when stream is disabled. + ExpirationTime int32 // in hours + LastEnableTime int64 // the last time stream is enabled, in usec + OriginColumnsToGet []string //origin columns to get for stream data } type DescribeStreamRequest struct { diff --git a/tablestore/otsprotocol/table_store.pb.go b/tablestore/otsprotocol/table_store.pb.go index d360a7d..e26650b 100644 --- a/tablestore/otsprotocol/table_store.pb.go +++ b/tablestore/otsprotocol/table_store.pb.go @@ -235,6 +235,46 @@ func (RowExistenceExpectation) EnumDescriptor() ([]byte, []int) { return fileDescriptor_f723cea3e4fa0cb7, []int{4} } +type SSEKeyType int32 + +const ( + SSEKeyType_SSE_KMS_SERVICE SSEKeyType = 1 + SSEKeyType_SSE_BYOK SSEKeyType = 2 +) + +var SSEKeyType_name = map[int32]string{ + 1: "SSE_KMS_SERVICE", + 2: "SSE_BYOK", +} + +var SSEKeyType_value = map[string]int32{ + "SSE_KMS_SERVICE": 1, + "SSE_BYOK": 2, +} + +func (x SSEKeyType) Enum() *SSEKeyType { + p := new(SSEKeyType) + *p = x + return p +} + +func (x SSEKeyType) String() string { + return proto.EnumName(SSEKeyType_name, int32(x)) +} + +func (x *SSEKeyType) UnmarshalJSON(data []byte) error { + value, err := proto.UnmarshalJSONEnum(SSEKeyType_value, data, "SSEKeyType") + if err != nil { + return err + } + *x = SSEKeyType(value) + return nil +} + +func (SSEKeyType) EnumDescriptor() ([]byte, []int) { + return fileDescriptor_f723cea3e4fa0cb7, []int{5} +} + type ReturnType int32 const ( @@ -275,7 +315,7 @@ func (x *ReturnType) UnmarshalJSON(data []byte) error { } func (ReturnType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{5} + return fileDescriptor_f723cea3e4fa0cb7, []int{6} } type OperationType int32 @@ -318,7 +358,7 @@ func (x *OperationType) UnmarshalJSON(data []byte) error { } func (OperationType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{6} + return fileDescriptor_f723cea3e4fa0cb7, []int{7} } type Direction int32 @@ -358,7 +398,7 @@ func (x *Direction) UnmarshalJSON(data []byte) error { } func (Direction) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{7} + return fileDescriptor_f723cea3e4fa0cb7, []int{8} } type StreamStatus int32 @@ -398,7 +438,7 @@ func (x *StreamStatus) UnmarshalJSON(data []byte) error { } func (StreamStatus) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{8} + return fileDescriptor_f723cea3e4fa0cb7, []int{9} } type ActionType int32 @@ -441,7 +481,7 @@ func (x *ActionType) UnmarshalJSON(data []byte) error { } func (ActionType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{9} + return fileDescriptor_f723cea3e4fa0cb7, []int{10} } type DefinedColumnType int32 @@ -490,7 +530,7 @@ func (x *DefinedColumnType) UnmarshalJSON(data []byte) error { } func (DefinedColumnType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{10} + return fileDescriptor_f723cea3e4fa0cb7, []int{11} } type IndexUpdateMode int32 @@ -530,7 +570,7 @@ func (x *IndexUpdateMode) UnmarshalJSON(data []byte) error { } func (IndexUpdateMode) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{11} + return fileDescriptor_f723cea3e4fa0cb7, []int{12} } type IndexType int32 @@ -570,7 +610,7 @@ func (x *IndexType) UnmarshalJSON(data []byte) error { } func (IndexType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{12} + return fileDescriptor_f723cea3e4fa0cb7, []int{13} } type SQLPayloadVersion int32 @@ -610,7 +650,7 @@ func (x *SQLPayloadVersion) UnmarshalJSON(data []byte) error { } func (SQLPayloadVersion) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{13} + return fileDescriptor_f723cea3e4fa0cb7, []int{14} } type SQLStatementType int32 @@ -662,7 +702,7 @@ func (x *SQLStatementType) UnmarshalJSON(data []byte) error { } func (SQLStatementType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{14} + return fileDescriptor_f723cea3e4fa0cb7, []int{15} } type Error struct { @@ -1309,12 +1349,139 @@ func (m *StreamDetails) GetColumnsToGet() []string { return nil } +type SSESpecification struct { + Enable *bool `protobuf:"varint,1,req,name=enable" json:"enable,omitempty"` + KeyType *SSEKeyType `protobuf:"varint,2,opt,name=key_type,enum=otsprotocol.SSEKeyType" json:"key_type,omitempty"` + KeyId []byte `protobuf:"bytes,3,opt,name=key_id" json:"key_id,omitempty"` + RoleArn []byte `protobuf:"bytes,4,opt,name=role_arn" json:"role_arn,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SSESpecification) Reset() { *m = SSESpecification{} } +func (m *SSESpecification) String() string { return proto.CompactTextString(m) } +func (*SSESpecification) ProtoMessage() {} +func (*SSESpecification) Descriptor() ([]byte, []int) { + return fileDescriptor_f723cea3e4fa0cb7, []int{12} +} + +func (m *SSESpecification) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SSESpecification.Unmarshal(m, b) +} +func (m *SSESpecification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SSESpecification.Marshal(b, m, deterministic) +} +func (m *SSESpecification) XXX_Merge(src proto.Message) { + xxx_messageInfo_SSESpecification.Merge(m, src) +} +func (m *SSESpecification) XXX_Size() int { + return xxx_messageInfo_SSESpecification.Size(m) +} +func (m *SSESpecification) XXX_DiscardUnknown() { + xxx_messageInfo_SSESpecification.DiscardUnknown(m) +} + +var xxx_messageInfo_SSESpecification proto.InternalMessageInfo + +func (m *SSESpecification) GetEnable() bool { + if m != nil && m.Enable != nil { + return *m.Enable + } + return false +} + +func (m *SSESpecification) GetKeyType() SSEKeyType { + if m != nil && m.KeyType != nil { + return *m.KeyType + } + return SSEKeyType_SSE_KMS_SERVICE +} + +func (m *SSESpecification) GetKeyId() []byte { + if m != nil { + return m.KeyId + } + return nil +} + +func (m *SSESpecification) GetRoleArn() []byte { + if m != nil { + return m.RoleArn + } + return nil +} + +type SSEDetails struct { + Enable *bool `protobuf:"varint,1,req,name=enable" json:"enable,omitempty"` + KeyType *SSEKeyType `protobuf:"varint,2,opt,name=key_type,enum=otsprotocol.SSEKeyType" json:"key_type,omitempty"` + KeyId []byte `protobuf:"bytes,3,opt,name=key_id" json:"key_id,omitempty"` + RoleArn []byte `protobuf:"bytes,4,opt,name=role_arn" json:"role_arn,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SSEDetails) Reset() { *m = SSEDetails{} } +func (m *SSEDetails) String() string { return proto.CompactTextString(m) } +func (*SSEDetails) ProtoMessage() {} +func (*SSEDetails) Descriptor() ([]byte, []int) { + return fileDescriptor_f723cea3e4fa0cb7, []int{13} +} + +func (m *SSEDetails) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SSEDetails.Unmarshal(m, b) +} +func (m *SSEDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SSEDetails.Marshal(b, m, deterministic) +} +func (m *SSEDetails) XXX_Merge(src proto.Message) { + xxx_messageInfo_SSEDetails.Merge(m, src) +} +func (m *SSEDetails) XXX_Size() int { + return xxx_messageInfo_SSEDetails.Size(m) +} +func (m *SSEDetails) XXX_DiscardUnknown() { + xxx_messageInfo_SSEDetails.DiscardUnknown(m) +} + +var xxx_messageInfo_SSEDetails proto.InternalMessageInfo + +func (m *SSEDetails) GetEnable() bool { + if m != nil && m.Enable != nil { + return *m.Enable + } + return false +} + +func (m *SSEDetails) GetKeyType() SSEKeyType { + if m != nil && m.KeyType != nil { + return *m.KeyType + } + return SSEKeyType_SSE_KMS_SERVICE +} + +func (m *SSEDetails) GetKeyId() []byte { + if m != nil { + return m.KeyId + } + return nil +} + +func (m *SSEDetails) GetRoleArn() []byte { + if m != nil { + return m.RoleArn + } + return nil +} + type CreateTableRequest struct { TableMeta *TableMeta `protobuf:"bytes,1,req,name=table_meta" json:"table_meta,omitempty"` ReservedThroughput *ReservedThroughput `protobuf:"bytes,2,req,name=reserved_throughput" json:"reserved_throughput,omitempty"` TableOptions *TableOptions `protobuf:"bytes,3,opt,name=table_options" json:"table_options,omitempty"` Partitions []*PartitionRange `protobuf:"bytes,4,rep,name=partitions" json:"partitions,omitempty"` StreamSpec *StreamSpecification `protobuf:"bytes,5,opt,name=stream_spec" json:"stream_spec,omitempty"` + SseSpec *SSESpecification `protobuf:"bytes,6,opt,name=sse_spec" json:"sse_spec,omitempty"` IndexMetas []*IndexMeta `protobuf:"bytes,7,rep,name=index_metas" json:"index_metas,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -1325,7 +1492,7 @@ func (m *CreateTableRequest) Reset() { *m = CreateTableRequest{} } func (m *CreateTableRequest) String() string { return proto.CompactTextString(m) } func (*CreateTableRequest) ProtoMessage() {} func (*CreateTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{12} + return fileDescriptor_f723cea3e4fa0cb7, []int{14} } func (m *CreateTableRequest) XXX_Unmarshal(b []byte) error { @@ -1381,6 +1548,13 @@ func (m *CreateTableRequest) GetStreamSpec() *StreamSpecification { return nil } +func (m *CreateTableRequest) GetSseSpec() *SSESpecification { + if m != nil { + return m.SseSpec + } + return nil +} + func (m *CreateTableRequest) GetIndexMetas() []*IndexMeta { if m != nil { return m.IndexMetas @@ -1398,7 +1572,7 @@ func (m *CreateTableResponse) Reset() { *m = CreateTableResponse{} } func (m *CreateTableResponse) String() string { return proto.CompactTextString(m) } func (*CreateTableResponse) ProtoMessage() {} func (*CreateTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{13} + return fileDescriptor_f723cea3e4fa0cb7, []int{15} } func (m *CreateTableResponse) XXX_Unmarshal(b []byte) error { @@ -1433,7 +1607,7 @@ func (m *UpdateTableRequest) Reset() { *m = UpdateTableRequest{} } func (m *UpdateTableRequest) String() string { return proto.CompactTextString(m) } func (*UpdateTableRequest) ProtoMessage() {} func (*UpdateTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{14} + return fileDescriptor_f723cea3e4fa0cb7, []int{16} } func (m *UpdateTableRequest) XXX_Unmarshal(b []byte) error { @@ -1495,7 +1669,7 @@ func (m *UpdateTableResponse) Reset() { *m = UpdateTableResponse{} } func (m *UpdateTableResponse) String() string { return proto.CompactTextString(m) } func (*UpdateTableResponse) ProtoMessage() {} func (*UpdateTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{15} + return fileDescriptor_f723cea3e4fa0cb7, []int{17} } func (m *UpdateTableResponse) XXX_Unmarshal(b []byte) error { @@ -1548,7 +1722,7 @@ func (m *DescribeTableRequest) Reset() { *m = DescribeTableRequest{} } func (m *DescribeTableRequest) String() string { return proto.CompactTextString(m) } func (*DescribeTableRequest) ProtoMessage() {} func (*DescribeTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{16} + return fileDescriptor_f723cea3e4fa0cb7, []int{18} } func (m *DescribeTableRequest) XXX_Unmarshal(b []byte) error { @@ -1583,6 +1757,7 @@ type DescribeTableResponse struct { TableStatus *TableStatus `protobuf:"varint,4,req,name=table_status,enum=otsprotocol.TableStatus" json:"table_status,omitempty"` StreamDetails *StreamDetails `protobuf:"bytes,5,opt,name=stream_details" json:"stream_details,omitempty"` ShardSplits [][]byte `protobuf:"bytes,6,rep,name=shard_splits" json:"shard_splits,omitempty"` + SseDetails *SSEDetails `protobuf:"bytes,7,opt,name=sse_details" json:"sse_details,omitempty"` IndexMetas []*IndexMeta `protobuf:"bytes,8,rep,name=index_metas" json:"index_metas,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` @@ -1593,7 +1768,7 @@ func (m *DescribeTableResponse) Reset() { *m = DescribeTableResponse{} } func (m *DescribeTableResponse) String() string { return proto.CompactTextString(m) } func (*DescribeTableResponse) ProtoMessage() {} func (*DescribeTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{17} + return fileDescriptor_f723cea3e4fa0cb7, []int{19} } func (m *DescribeTableResponse) XXX_Unmarshal(b []byte) error { @@ -1656,6 +1831,13 @@ func (m *DescribeTableResponse) GetShardSplits() [][]byte { return nil } +func (m *DescribeTableResponse) GetSseDetails() *SSEDetails { + if m != nil { + return m.SseDetails + } + return nil +} + func (m *DescribeTableResponse) GetIndexMetas() []*IndexMeta { if m != nil { return m.IndexMetas @@ -1673,7 +1855,7 @@ func (m *ListTableRequest) Reset() { *m = ListTableRequest{} } func (m *ListTableRequest) String() string { return proto.CompactTextString(m) } func (*ListTableRequest) ProtoMessage() {} func (*ListTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{18} + return fileDescriptor_f723cea3e4fa0cb7, []int{20} } func (m *ListTableRequest) XXX_Unmarshal(b []byte) error { @@ -1705,7 +1887,7 @@ func (m *ListTableResponse) Reset() { *m = ListTableResponse{} } func (m *ListTableResponse) String() string { return proto.CompactTextString(m) } func (*ListTableResponse) ProtoMessage() {} func (*ListTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{19} + return fileDescriptor_f723cea3e4fa0cb7, []int{21} } func (m *ListTableResponse) XXX_Unmarshal(b []byte) error { @@ -1744,7 +1926,7 @@ func (m *DeleteTableRequest) Reset() { *m = DeleteTableRequest{} } func (m *DeleteTableRequest) String() string { return proto.CompactTextString(m) } func (*DeleteTableRequest) ProtoMessage() {} func (*DeleteTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{20} + return fileDescriptor_f723cea3e4fa0cb7, []int{22} } func (m *DeleteTableRequest) XXX_Unmarshal(b []byte) error { @@ -1782,7 +1964,7 @@ func (m *DeleteTableResponse) Reset() { *m = DeleteTableResponse{} } func (m *DeleteTableResponse) String() string { return proto.CompactTextString(m) } func (*DeleteTableResponse) ProtoMessage() {} func (*DeleteTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{21} + return fileDescriptor_f723cea3e4fa0cb7, []int{23} } func (m *DeleteTableResponse) XXX_Unmarshal(b []byte) error { @@ -1814,7 +1996,7 @@ func (m *LoadTableRequest) Reset() { *m = LoadTableRequest{} } func (m *LoadTableRequest) String() string { return proto.CompactTextString(m) } func (*LoadTableRequest) ProtoMessage() {} func (*LoadTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{22} + return fileDescriptor_f723cea3e4fa0cb7, []int{24} } func (m *LoadTableRequest) XXX_Unmarshal(b []byte) error { @@ -1852,7 +2034,7 @@ func (m *LoadTableResponse) Reset() { *m = LoadTableResponse{} } func (m *LoadTableResponse) String() string { return proto.CompactTextString(m) } func (*LoadTableResponse) ProtoMessage() {} func (*LoadTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{23} + return fileDescriptor_f723cea3e4fa0cb7, []int{25} } func (m *LoadTableResponse) XXX_Unmarshal(b []byte) error { @@ -1884,7 +2066,7 @@ func (m *UnloadTableRequest) Reset() { *m = UnloadTableRequest{} } func (m *UnloadTableRequest) String() string { return proto.CompactTextString(m) } func (*UnloadTableRequest) ProtoMessage() {} func (*UnloadTableRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{24} + return fileDescriptor_f723cea3e4fa0cb7, []int{26} } func (m *UnloadTableRequest) XXX_Unmarshal(b []byte) error { @@ -1922,7 +2104,7 @@ func (m *UnloadTableResponse) Reset() { *m = UnloadTableResponse{} } func (m *UnloadTableResponse) String() string { return proto.CompactTextString(m) } func (*UnloadTableResponse) ProtoMessage() {} func (*UnloadTableResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{25} + return fileDescriptor_f723cea3e4fa0cb7, []int{27} } func (m *UnloadTableResponse) XXX_Unmarshal(b []byte) error { @@ -1956,7 +2138,7 @@ func (m *TimeRange) Reset() { *m = TimeRange{} } func (m *TimeRange) String() string { return proto.CompactTextString(m) } func (*TimeRange) ProtoMessage() {} func (*TimeRange) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{26} + return fileDescriptor_f723cea3e4fa0cb7, []int{28} } func (m *TimeRange) XXX_Unmarshal(b []byte) error { @@ -2010,7 +2192,7 @@ func (m *ReturnContent) Reset() { *m = ReturnContent{} } func (m *ReturnContent) String() string { return proto.CompactTextString(m) } func (*ReturnContent) ProtoMessage() {} func (*ReturnContent) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{27} + return fileDescriptor_f723cea3e4fa0cb7, []int{29} } func (m *ReturnContent) XXX_Unmarshal(b []byte) error { @@ -2066,7 +2248,7 @@ func (m *GetRowRequest) Reset() { *m = GetRowRequest{} } func (m *GetRowRequest) String() string { return proto.CompactTextString(m) } func (*GetRowRequest) ProtoMessage() {} func (*GetRowRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{28} + return fileDescriptor_f723cea3e4fa0cb7, []int{30} } func (m *GetRowRequest) XXX_Unmarshal(b []byte) error { @@ -2179,7 +2361,7 @@ func (m *GetRowResponse) Reset() { *m = GetRowResponse{} } func (m *GetRowResponse) String() string { return proto.CompactTextString(m) } func (*GetRowResponse) ProtoMessage() {} func (*GetRowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{29} + return fileDescriptor_f723cea3e4fa0cb7, []int{31} } func (m *GetRowResponse) XXX_Unmarshal(b []byte) error { @@ -2236,7 +2418,7 @@ func (m *UpdateRowRequest) Reset() { *m = UpdateRowRequest{} } func (m *UpdateRowRequest) String() string { return proto.CompactTextString(m) } func (*UpdateRowRequest) ProtoMessage() {} func (*UpdateRowRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{30} + return fileDescriptor_f723cea3e4fa0cb7, []int{32} } func (m *UpdateRowRequest) XXX_Unmarshal(b []byte) error { @@ -2304,7 +2486,7 @@ func (m *UpdateRowResponse) Reset() { *m = UpdateRowResponse{} } func (m *UpdateRowResponse) String() string { return proto.CompactTextString(m) } func (*UpdateRowResponse) ProtoMessage() {} func (*UpdateRowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{31} + return fileDescriptor_f723cea3e4fa0cb7, []int{33} } func (m *UpdateRowResponse) XXX_Unmarshal(b []byte) error { @@ -2354,7 +2536,7 @@ func (m *PutRowRequest) Reset() { *m = PutRowRequest{} } func (m *PutRowRequest) String() string { return proto.CompactTextString(m) } func (*PutRowRequest) ProtoMessage() {} func (*PutRowRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{32} + return fileDescriptor_f723cea3e4fa0cb7, []int{34} } func (m *PutRowRequest) XXX_Unmarshal(b []byte) error { @@ -2422,7 +2604,7 @@ func (m *PutRowResponse) Reset() { *m = PutRowResponse{} } func (m *PutRowResponse) String() string { return proto.CompactTextString(m) } func (*PutRowResponse) ProtoMessage() {} func (*PutRowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{33} + return fileDescriptor_f723cea3e4fa0cb7, []int{35} } func (m *PutRowResponse) XXX_Unmarshal(b []byte) error { @@ -2472,7 +2654,7 @@ func (m *DeleteRowRequest) Reset() { *m = DeleteRowRequest{} } func (m *DeleteRowRequest) String() string { return proto.CompactTextString(m) } func (*DeleteRowRequest) ProtoMessage() {} func (*DeleteRowRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{34} + return fileDescriptor_f723cea3e4fa0cb7, []int{36} } func (m *DeleteRowRequest) XXX_Unmarshal(b []byte) error { @@ -2540,7 +2722,7 @@ func (m *DeleteRowResponse) Reset() { *m = DeleteRowResponse{} } func (m *DeleteRowResponse) String() string { return proto.CompactTextString(m) } func (*DeleteRowResponse) ProtoMessage() {} func (*DeleteRowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{35} + return fileDescriptor_f723cea3e4fa0cb7, []int{37} } func (m *DeleteRowResponse) XXX_Unmarshal(b []byte) error { @@ -2595,7 +2777,7 @@ func (m *TableInBatchGetRowRequest) Reset() { *m = TableInBatchGetRowReq func (m *TableInBatchGetRowRequest) String() string { return proto.CompactTextString(m) } func (*TableInBatchGetRowRequest) ProtoMessage() {} func (*TableInBatchGetRowRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{36} + return fileDescriptor_f723cea3e4fa0cb7, []int{38} } func (m *TableInBatchGetRowRequest) XXX_Unmarshal(b []byte) error { @@ -2699,7 +2881,7 @@ func (m *BatchGetRowRequest) Reset() { *m = BatchGetRowRequest{} } func (m *BatchGetRowRequest) String() string { return proto.CompactTextString(m) } func (*BatchGetRowRequest) ProtoMessage() {} func (*BatchGetRowRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{37} + return fileDescriptor_f723cea3e4fa0cb7, []int{39} } func (m *BatchGetRowRequest) XXX_Unmarshal(b []byte) error { @@ -2742,7 +2924,7 @@ func (m *RowInBatchGetRowResponse) Reset() { *m = RowInBatchGetRowRespon func (m *RowInBatchGetRowResponse) String() string { return proto.CompactTextString(m) } func (*RowInBatchGetRowResponse) ProtoMessage() {} func (*RowInBatchGetRowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{38} + return fileDescriptor_f723cea3e4fa0cb7, []int{40} } func (m *RowInBatchGetRowResponse) XXX_Unmarshal(b []byte) error { @@ -2810,7 +2992,7 @@ func (m *TableInBatchGetRowResponse) Reset() { *m = TableInBatchGetRowRe func (m *TableInBatchGetRowResponse) String() string { return proto.CompactTextString(m) } func (*TableInBatchGetRowResponse) ProtoMessage() {} func (*TableInBatchGetRowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{39} + return fileDescriptor_f723cea3e4fa0cb7, []int{41} } func (m *TableInBatchGetRowResponse) XXX_Unmarshal(b []byte) error { @@ -2856,7 +3038,7 @@ func (m *BatchGetRowResponse) Reset() { *m = BatchGetRowResponse{} } func (m *BatchGetRowResponse) String() string { return proto.CompactTextString(m) } func (*BatchGetRowResponse) ProtoMessage() {} func (*BatchGetRowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{40} + return fileDescriptor_f723cea3e4fa0cb7, []int{42} } func (m *BatchGetRowResponse) XXX_Unmarshal(b []byte) error { @@ -2898,7 +3080,7 @@ func (m *RowInBatchWriteRowRequest) Reset() { *m = RowInBatchWriteRowReq func (m *RowInBatchWriteRowRequest) String() string { return proto.CompactTextString(m) } func (*RowInBatchWriteRowRequest) ProtoMessage() {} func (*RowInBatchWriteRowRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{41} + return fileDescriptor_f723cea3e4fa0cb7, []int{43} } func (m *RowInBatchWriteRowRequest) XXX_Unmarshal(b []byte) error { @@ -2959,7 +3141,7 @@ func (m *TableInBatchWriteRowRequest) Reset() { *m = TableInBatchWriteRo func (m *TableInBatchWriteRowRequest) String() string { return proto.CompactTextString(m) } func (*TableInBatchWriteRowRequest) ProtoMessage() {} func (*TableInBatchWriteRowRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{42} + return fileDescriptor_f723cea3e4fa0cb7, []int{44} } func (m *TableInBatchWriteRowRequest) XXX_Unmarshal(b []byte) error { @@ -3007,7 +3189,7 @@ func (m *BatchWriteRowRequest) Reset() { *m = BatchWriteRowRequest{} } func (m *BatchWriteRowRequest) String() string { return proto.CompactTextString(m) } func (*BatchWriteRowRequest) ProtoMessage() {} func (*BatchWriteRowRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{43} + return fileDescriptor_f723cea3e4fa0cb7, []int{45} } func (m *BatchWriteRowRequest) XXX_Unmarshal(b []byte) error { @@ -3063,7 +3245,7 @@ func (m *RowInBatchWriteRowResponse) Reset() { *m = RowInBatchWriteRowRe func (m *RowInBatchWriteRowResponse) String() string { return proto.CompactTextString(m) } func (*RowInBatchWriteRowResponse) ProtoMessage() {} func (*RowInBatchWriteRowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{44} + return fileDescriptor_f723cea3e4fa0cb7, []int{46} } func (m *RowInBatchWriteRowResponse) XXX_Unmarshal(b []byte) error { @@ -3124,7 +3306,7 @@ func (m *TableInBatchWriteRowResponse) Reset() { *m = TableInBatchWriteR func (m *TableInBatchWriteRowResponse) String() string { return proto.CompactTextString(m) } func (*TableInBatchWriteRowResponse) ProtoMessage() {} func (*TableInBatchWriteRowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{45} + return fileDescriptor_f723cea3e4fa0cb7, []int{47} } func (m *TableInBatchWriteRowResponse) XXX_Unmarshal(b []byte) error { @@ -3170,7 +3352,7 @@ func (m *BatchWriteRowResponse) Reset() { *m = BatchWriteRowResponse{} } func (m *BatchWriteRowResponse) String() string { return proto.CompactTextString(m) } func (*BatchWriteRowResponse) ProtoMessage() {} func (*BatchWriteRowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{46} + return fileDescriptor_f723cea3e4fa0cb7, []int{48} } func (m *BatchWriteRowResponse) XXX_Unmarshal(b []byte) error { @@ -3222,7 +3404,7 @@ func (m *GetRangeRequest) Reset() { *m = GetRangeRequest{} } func (m *GetRangeRequest) String() string { return proto.CompactTextString(m) } func (*GetRangeRequest) ProtoMessage() {} func (*GetRangeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{47} + return fileDescriptor_f723cea3e4fa0cb7, []int{49} } func (m *GetRangeRequest) XXX_Unmarshal(b []byte) error { @@ -3357,7 +3539,7 @@ func (m *GetRangeResponse) Reset() { *m = GetRangeResponse{} } func (m *GetRangeResponse) String() string { return proto.CompactTextString(m) } func (*GetRangeResponse) ProtoMessage() {} func (*GetRangeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{48} + return fileDescriptor_f723cea3e4fa0cb7, []int{50} } func (m *GetRangeResponse) XXX_Unmarshal(b []byte) error { @@ -3417,7 +3599,7 @@ func (m *ListStreamRequest) Reset() { *m = ListStreamRequest{} } func (m *ListStreamRequest) String() string { return proto.CompactTextString(m) } func (*ListStreamRequest) ProtoMessage() {} func (*ListStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{49} + return fileDescriptor_f723cea3e4fa0cb7, []int{51} } func (m *ListStreamRequest) XXX_Unmarshal(b []byte) error { @@ -3458,7 +3640,7 @@ func (m *Stream) Reset() { *m = Stream{} } func (m *Stream) String() string { return proto.CompactTextString(m) } func (*Stream) ProtoMessage() {} func (*Stream) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{50} + return fileDescriptor_f723cea3e4fa0cb7, []int{52} } func (m *Stream) XXX_Unmarshal(b []byte) error { @@ -3511,7 +3693,7 @@ func (m *ListStreamResponse) Reset() { *m = ListStreamResponse{} } func (m *ListStreamResponse) String() string { return proto.CompactTextString(m) } func (*ListStreamResponse) ProtoMessage() {} func (*ListStreamResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{51} + return fileDescriptor_f723cea3e4fa0cb7, []int{53} } func (m *ListStreamResponse) XXX_Unmarshal(b []byte) error { @@ -3552,7 +3734,7 @@ func (m *StreamShard) Reset() { *m = StreamShard{} } func (m *StreamShard) String() string { return proto.CompactTextString(m) } func (*StreamShard) ProtoMessage() {} func (*StreamShard) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{52} + return fileDescriptor_f723cea3e4fa0cb7, []int{54} } func (m *StreamShard) XXX_Unmarshal(b []byte) error { @@ -3607,7 +3789,7 @@ func (m *DescribeStreamRequest) Reset() { *m = DescribeStreamRequest{} } func (m *DescribeStreamRequest) String() string { return proto.CompactTextString(m) } func (*DescribeStreamRequest) ProtoMessage() {} func (*DescribeStreamRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{53} + return fileDescriptor_f723cea3e4fa0cb7, []int{55} } func (m *DescribeStreamRequest) XXX_Unmarshal(b []byte) error { @@ -3666,7 +3848,7 @@ func (m *DescribeStreamResponse) Reset() { *m = DescribeStreamResponse{} func (m *DescribeStreamResponse) String() string { return proto.CompactTextString(m) } func (*DescribeStreamResponse) ProtoMessage() {} func (*DescribeStreamResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{54} + return fileDescriptor_f723cea3e4fa0cb7, []int{56} } func (m *DescribeStreamResponse) XXX_Unmarshal(b []byte) error { @@ -3750,7 +3932,7 @@ func (m *GetShardIteratorRequest) Reset() { *m = GetShardIteratorRequest func (m *GetShardIteratorRequest) String() string { return proto.CompactTextString(m) } func (*GetShardIteratorRequest) ProtoMessage() {} func (*GetShardIteratorRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{55} + return fileDescriptor_f723cea3e4fa0cb7, []int{57} } func (m *GetShardIteratorRequest) XXX_Unmarshal(b []byte) error { @@ -3811,7 +3993,7 @@ func (m *GetShardIteratorResponse) Reset() { *m = GetShardIteratorRespon func (m *GetShardIteratorResponse) String() string { return proto.CompactTextString(m) } func (*GetShardIteratorResponse) ProtoMessage() {} func (*GetShardIteratorResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{56} + return fileDescriptor_f723cea3e4fa0cb7, []int{58} } func (m *GetShardIteratorResponse) XXX_Unmarshal(b []byte) error { @@ -3858,7 +4040,7 @@ func (m *GetStreamRecordRequest) Reset() { *m = GetStreamRecordRequest{} func (m *GetStreamRecordRequest) String() string { return proto.CompactTextString(m) } func (*GetStreamRecordRequest) ProtoMessage() {} func (*GetStreamRecordRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{57} + return fileDescriptor_f723cea3e4fa0cb7, []int{59} } func (m *GetStreamRecordRequest) XXX_Unmarshal(b []byte) error { @@ -3905,7 +4087,7 @@ func (m *GetStreamRecordResponse) Reset() { *m = GetStreamRecordResponse func (m *GetStreamRecordResponse) String() string { return proto.CompactTextString(m) } func (*GetStreamRecordResponse) ProtoMessage() {} func (*GetStreamRecordResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{58} + return fileDescriptor_f723cea3e4fa0cb7, []int{60} } func (m *GetStreamRecordResponse) XXX_Unmarshal(b []byte) error { @@ -3953,7 +4135,7 @@ func (m *GetStreamRecordResponse_StreamRecord) Reset() { *m = GetStreamR func (m *GetStreamRecordResponse_StreamRecord) String() string { return proto.CompactTextString(m) } func (*GetStreamRecordResponse_StreamRecord) ProtoMessage() {} func (*GetStreamRecordResponse_StreamRecord) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{58, 0} + return fileDescriptor_f723cea3e4fa0cb7, []int{60, 0} } func (m *GetStreamRecordResponse_StreamRecord) XXX_Unmarshal(b []byte) error { @@ -4009,7 +4191,7 @@ func (m *ComputeSplitPointsBySizeRequest) Reset() { *m = ComputeSplitPoi func (m *ComputeSplitPointsBySizeRequest) String() string { return proto.CompactTextString(m) } func (*ComputeSplitPointsBySizeRequest) ProtoMessage() {} func (*ComputeSplitPointsBySizeRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{59} + return fileDescriptor_f723cea3e4fa0cb7, []int{61} } func (m *ComputeSplitPointsBySizeRequest) XXX_Unmarshal(b []byte) error { @@ -4072,7 +4254,7 @@ func (m *ComputeSplitPointsBySizeResponse) Reset() { *m = ComputeSplitPo func (m *ComputeSplitPointsBySizeResponse) String() string { return proto.CompactTextString(m) } func (*ComputeSplitPointsBySizeResponse) ProtoMessage() {} func (*ComputeSplitPointsBySizeResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{60} + return fileDescriptor_f723cea3e4fa0cb7, []int{62} } func (m *ComputeSplitPointsBySizeResponse) XXX_Unmarshal(b []byte) error { @@ -4137,7 +4319,7 @@ func (m *ComputeSplitPointsBySizeResponse_SplitLocation) String() string { } func (*ComputeSplitPointsBySizeResponse_SplitLocation) ProtoMessage() {} func (*ComputeSplitPointsBySizeResponse_SplitLocation) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{60, 0} + return fileDescriptor_f723cea3e4fa0cb7, []int{62, 0} } func (m *ComputeSplitPointsBySizeResponse_SplitLocation) XXX_Unmarshal(b []byte) error { @@ -4184,7 +4366,7 @@ func (m *DefinedColumnSchema) Reset() { *m = DefinedColumnSchema{} } func (m *DefinedColumnSchema) String() string { return proto.CompactTextString(m) } func (*DefinedColumnSchema) ProtoMessage() {} func (*DefinedColumnSchema) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{61} + return fileDescriptor_f723cea3e4fa0cb7, []int{63} } func (m *DefinedColumnSchema) XXX_Unmarshal(b []byte) error { @@ -4234,7 +4416,7 @@ func (m *IndexMeta) Reset() { *m = IndexMeta{} } func (m *IndexMeta) String() string { return proto.CompactTextString(m) } func (*IndexMeta) ProtoMessage() {} func (*IndexMeta) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{62} + return fileDescriptor_f723cea3e4fa0cb7, []int{64} } func (m *IndexMeta) XXX_Unmarshal(b []byte) error { @@ -4303,7 +4485,7 @@ func (m *CreateIndexRequest) Reset() { *m = CreateIndexRequest{} } func (m *CreateIndexRequest) String() string { return proto.CompactTextString(m) } func (*CreateIndexRequest) ProtoMessage() {} func (*CreateIndexRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{63} + return fileDescriptor_f723cea3e4fa0cb7, []int{65} } func (m *CreateIndexRequest) XXX_Unmarshal(b []byte) error { @@ -4355,7 +4537,7 @@ func (m *CreateIndexResponse) Reset() { *m = CreateIndexResponse{} } func (m *CreateIndexResponse) String() string { return proto.CompactTextString(m) } func (*CreateIndexResponse) ProtoMessage() {} func (*CreateIndexResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{64} + return fileDescriptor_f723cea3e4fa0cb7, []int{66} } func (m *CreateIndexResponse) XXX_Unmarshal(b []byte) error { @@ -4388,7 +4570,7 @@ func (m *DropIndexRequest) Reset() { *m = DropIndexRequest{} } func (m *DropIndexRequest) String() string { return proto.CompactTextString(m) } func (*DropIndexRequest) ProtoMessage() {} func (*DropIndexRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{65} + return fileDescriptor_f723cea3e4fa0cb7, []int{67} } func (m *DropIndexRequest) XXX_Unmarshal(b []byte) error { @@ -4433,7 +4615,7 @@ func (m *DropIndexResponse) Reset() { *m = DropIndexResponse{} } func (m *DropIndexResponse) String() string { return proto.CompactTextString(m) } func (*DropIndexResponse) ProtoMessage() {} func (*DropIndexResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{66} + return fileDescriptor_f723cea3e4fa0cb7, []int{68} } func (m *DropIndexResponse) XXX_Unmarshal(b []byte) error { @@ -4466,7 +4648,7 @@ func (m *AddDefinedColumnRequest) Reset() { *m = AddDefinedColumnRequest func (m *AddDefinedColumnRequest) String() string { return proto.CompactTextString(m) } func (*AddDefinedColumnRequest) ProtoMessage() {} func (*AddDefinedColumnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{67} + return fileDescriptor_f723cea3e4fa0cb7, []int{69} } func (m *AddDefinedColumnRequest) XXX_Unmarshal(b []byte) error { @@ -4511,7 +4693,7 @@ func (m *AddDefinedColumnResponse) Reset() { *m = AddDefinedColumnRespon func (m *AddDefinedColumnResponse) String() string { return proto.CompactTextString(m) } func (*AddDefinedColumnResponse) ProtoMessage() {} func (*AddDefinedColumnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{68} + return fileDescriptor_f723cea3e4fa0cb7, []int{70} } func (m *AddDefinedColumnResponse) XXX_Unmarshal(b []byte) error { @@ -4544,7 +4726,7 @@ func (m *DeleteDefinedColumnRequest) Reset() { *m = DeleteDefinedColumnR func (m *DeleteDefinedColumnRequest) String() string { return proto.CompactTextString(m) } func (*DeleteDefinedColumnRequest) ProtoMessage() {} func (*DeleteDefinedColumnRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{69} + return fileDescriptor_f723cea3e4fa0cb7, []int{71} } func (m *DeleteDefinedColumnRequest) XXX_Unmarshal(b []byte) error { @@ -4589,7 +4771,7 @@ func (m *DeleteDefinedColumnResponse) Reset() { *m = DeleteDefinedColumn func (m *DeleteDefinedColumnResponse) String() string { return proto.CompactTextString(m) } func (*DeleteDefinedColumnResponse) ProtoMessage() {} func (*DeleteDefinedColumnResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{70} + return fileDescriptor_f723cea3e4fa0cb7, []int{72} } func (m *DeleteDefinedColumnResponse) XXX_Unmarshal(b []byte) error { @@ -4622,7 +4804,7 @@ func (m *StartLocalTransactionRequest) Reset() { *m = StartLocalTransact func (m *StartLocalTransactionRequest) String() string { return proto.CompactTextString(m) } func (*StartLocalTransactionRequest) ProtoMessage() {} func (*StartLocalTransactionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{71} + return fileDescriptor_f723cea3e4fa0cb7, []int{73} } func (m *StartLocalTransactionRequest) XXX_Unmarshal(b []byte) error { @@ -4668,7 +4850,7 @@ func (m *StartLocalTransactionResponse) Reset() { *m = StartLocalTransac func (m *StartLocalTransactionResponse) String() string { return proto.CompactTextString(m) } func (*StartLocalTransactionResponse) ProtoMessage() {} func (*StartLocalTransactionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{72} + return fileDescriptor_f723cea3e4fa0cb7, []int{74} } func (m *StartLocalTransactionResponse) XXX_Unmarshal(b []byte) error { @@ -4707,7 +4889,7 @@ func (m *CommitTransactionRequest) Reset() { *m = CommitTransactionReque func (m *CommitTransactionRequest) String() string { return proto.CompactTextString(m) } func (*CommitTransactionRequest) ProtoMessage() {} func (*CommitTransactionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{73} + return fileDescriptor_f723cea3e4fa0cb7, []int{75} } func (m *CommitTransactionRequest) XXX_Unmarshal(b []byte) error { @@ -4745,7 +4927,7 @@ func (m *CommitTransactionResponse) Reset() { *m = CommitTransactionResp func (m *CommitTransactionResponse) String() string { return proto.CompactTextString(m) } func (*CommitTransactionResponse) ProtoMessage() {} func (*CommitTransactionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{74} + return fileDescriptor_f723cea3e4fa0cb7, []int{76} } func (m *CommitTransactionResponse) XXX_Unmarshal(b []byte) error { @@ -4777,7 +4959,7 @@ func (m *AbortTransactionRequest) Reset() { *m = AbortTransactionRequest func (m *AbortTransactionRequest) String() string { return proto.CompactTextString(m) } func (*AbortTransactionRequest) ProtoMessage() {} func (*AbortTransactionRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{75} + return fileDescriptor_f723cea3e4fa0cb7, []int{77} } func (m *AbortTransactionRequest) XXX_Unmarshal(b []byte) error { @@ -4815,7 +4997,7 @@ func (m *AbortTransactionResponse) Reset() { *m = AbortTransactionRespon func (m *AbortTransactionResponse) String() string { return proto.CompactTextString(m) } func (*AbortTransactionResponse) ProtoMessage() {} func (*AbortTransactionResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{76} + return fileDescriptor_f723cea3e4fa0cb7, []int{78} } func (m *AbortTransactionResponse) XXX_Unmarshal(b []byte) error { @@ -4848,7 +5030,7 @@ func (m *ComputeSplitsRequest) Reset() { *m = ComputeSplitsRequest{} } func (m *ComputeSplitsRequest) String() string { return proto.CompactTextString(m) } func (*ComputeSplitsRequest) ProtoMessage() {} func (*ComputeSplitsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{77} + return fileDescriptor_f723cea3e4fa0cb7, []int{79} } func (m *ComputeSplitsRequest) XXX_Unmarshal(b []byte) error { @@ -4894,7 +5076,7 @@ func (m *SearchIndexSplitsOptions) Reset() { *m = SearchIndexSplitsOptio func (m *SearchIndexSplitsOptions) String() string { return proto.CompactTextString(m) } func (*SearchIndexSplitsOptions) ProtoMessage() {} func (*SearchIndexSplitsOptions) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{78} + return fileDescriptor_f723cea3e4fa0cb7, []int{80} } func (m *SearchIndexSplitsOptions) XXX_Unmarshal(b []byte) error { @@ -4934,7 +5116,7 @@ func (m *ComputeSplitsResponse) Reset() { *m = ComputeSplitsResponse{} } func (m *ComputeSplitsResponse) String() string { return proto.CompactTextString(m) } func (*ComputeSplitsResponse) ProtoMessage() {} func (*ComputeSplitsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{79} + return fileDescriptor_f723cea3e4fa0cb7, []int{81} } func (m *ComputeSplitsResponse) XXX_Unmarshal(b []byte) error { @@ -4981,7 +5163,7 @@ func (m *SQLQueryRequest) Reset() { *m = SQLQueryRequest{} } func (m *SQLQueryRequest) String() string { return proto.CompactTextString(m) } func (*SQLQueryRequest) ProtoMessage() {} func (*SQLQueryRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{80} + return fileDescriptor_f723cea3e4fa0cb7, []int{82} } func (m *SQLQueryRequest) XXX_Unmarshal(b []byte) error { @@ -5030,7 +5212,7 @@ func (m *TableConsumedCapacity) Reset() { *m = TableConsumedCapacity{} } func (m *TableConsumedCapacity) String() string { return proto.CompactTextString(m) } func (*TableConsumedCapacity) ProtoMessage() {} func (*TableConsumedCapacity) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{81} + return fileDescriptor_f723cea3e4fa0cb7, []int{83} } func (m *TableConsumedCapacity) XXX_Unmarshal(b []byte) error { @@ -5093,7 +5275,7 @@ func (m *SearchConsumedCapacity) Reset() { *m = SearchConsumedCapacity{} func (m *SearchConsumedCapacity) String() string { return proto.CompactTextString(m) } func (*SearchConsumedCapacity) ProtoMessage() {} func (*SearchConsumedCapacity) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{82} + return fileDescriptor_f723cea3e4fa0cb7, []int{84} } func (m *SearchConsumedCapacity) XXX_Unmarshal(b []byte) error { @@ -5157,7 +5339,7 @@ func (m *SQLQueryResponse) Reset() { *m = SQLQueryResponse{} } func (m *SQLQueryResponse) String() string { return proto.CompactTextString(m) } func (*SQLQueryResponse) ProtoMessage() {} func (*SQLQueryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_f723cea3e4fa0cb7, []int{83} + return fileDescriptor_f723cea3e4fa0cb7, []int{85} } func (m *SQLQueryResponse) XXX_Unmarshal(b []byte) error { @@ -5219,6 +5401,7 @@ func init() { proto.RegisterEnum("otsprotocol.BloomFilterType", BloomFilterType_name, BloomFilterType_value) proto.RegisterEnum("otsprotocol.TableStatus", TableStatus_name, TableStatus_value) proto.RegisterEnum("otsprotocol.RowExistenceExpectation", RowExistenceExpectation_name, RowExistenceExpectation_value) + proto.RegisterEnum("otsprotocol.SSEKeyType", SSEKeyType_name, SSEKeyType_value) proto.RegisterEnum("otsprotocol.ReturnType", ReturnType_name, ReturnType_value) proto.RegisterEnum("otsprotocol.OperationType", OperationType_name, OperationType_value) proto.RegisterEnum("otsprotocol.Direction", Direction_name, Direction_value) @@ -5241,6 +5424,8 @@ func init() { proto.RegisterType((*ConsumedCapacity)(nil), "otsprotocol.ConsumedCapacity") proto.RegisterType((*StreamSpecification)(nil), "otsprotocol.StreamSpecification") proto.RegisterType((*StreamDetails)(nil), "otsprotocol.StreamDetails") + proto.RegisterType((*SSESpecification)(nil), "otsprotocol.SSESpecification") + proto.RegisterType((*SSEDetails)(nil), "otsprotocol.SSEDetails") proto.RegisterType((*CreateTableRequest)(nil), "otsprotocol.CreateTableRequest") proto.RegisterType((*CreateTableResponse)(nil), "otsprotocol.CreateTableResponse") proto.RegisterType((*UpdateTableRequest)(nil), "otsprotocol.UpdateTableRequest") @@ -5317,209 +5502,219 @@ func init() { proto.RegisterType((*SQLQueryResponse)(nil), "otsprotocol.SQLQueryResponse") } -func init() { proto.RegisterFile("table_store.proto", fileDescriptor_f723cea3e4fa0cb7) } +func init() { + proto.RegisterFile("table_store.proto", fileDescriptor_f723cea3e4fa0cb7) +} var fileDescriptor_f723cea3e4fa0cb7 = []byte{ - // 3215 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xcd, 0x6f, 0xe3, 0xc6, - 0x15, 0x0f, 0x45, 0xc9, 0xb2, 0x9e, 0x3e, 0x4c, 0x51, 0x6b, 0x5b, 0xb6, 0x77, 0x13, 0x87, 0x49, - 0x36, 0x5a, 0x65, 0xe3, 0x64, 0xdd, 0x24, 0x9b, 0x2f, 0x20, 0x95, 0x25, 0x79, 0xa3, 0xae, 0x2c, - 0xd9, 0x12, 0x9d, 0x4d, 0x0a, 0x14, 0x0c, 0x4d, 0x4e, 0x6c, 0x62, 0x25, 0x52, 0x21, 0x47, 0x6b, - 0x3b, 0x3d, 0xb6, 0xb9, 0xb5, 0xe8, 0x1f, 0x50, 0xa0, 0xd7, 0x1e, 0x7a, 0x28, 0xda, 0x43, 0xd1, - 0xde, 0x5b, 0xa0, 0xb7, 0xfe, 0x0f, 0x3d, 0x14, 0xe8, 0xb5, 0x7f, 0x40, 0x51, 0xcc, 0x07, 0x25, - 0x92, 0xa2, 0x2c, 0xef, 0x26, 0x69, 0x6e, 0xe2, 0xcc, 0x9b, 0x37, 0xef, 0xfd, 0xde, 0xc7, 0xbc, - 0x79, 0x23, 0x28, 0x62, 0xfd, 0x64, 0x80, 0x34, 0x0f, 0x3b, 0x2e, 0xda, 0x19, 0xb9, 0x0e, 0x76, - 0xe4, 0xac, 0x83, 0x3d, 0xfa, 0xcb, 0x70, 0x06, 0xca, 0x6d, 0x48, 0x35, 0x5d, 0xd7, 0x71, 0xe5, - 0x1c, 0x24, 0x0d, 0xc7, 0x44, 0x65, 0x61, 0x3b, 0x51, 0xc9, 0xc8, 0x2b, 0x90, 0x1e, 0x22, 0xcf, - 0xd3, 0x4f, 0x51, 0x39, 0xb1, 0x2d, 0x54, 0x32, 0xca, 0x57, 0x20, 0x1d, 0xba, 0xd6, 0x50, 0x77, - 0x2f, 0x1f, 0xa2, 0xcb, 0xbe, 0x71, 0x86, 0x86, 0x3a, 0x59, 0x62, 0xeb, 0x43, 0x7f, 0xc9, 0x1d, - 0x48, 0xe2, 0xcb, 0x11, 0xa1, 0x4f, 0x54, 0x0a, 0xbb, 0x5b, 0x3b, 0x81, 0x5d, 0x76, 0xa6, 0x4b, - 0xd5, 0xcb, 0x11, 0x92, 0x5f, 0x87, 0x25, 0x67, 0x84, 0x2d, 0xc7, 0x2e, 0x8b, 0xdb, 0x42, 0xa5, - 0xb0, 0x7b, 0x6b, 0x0e, 0x71, 0x97, 0x12, 0x29, 0x77, 0xa1, 0x70, 0xa8, 0xbb, 0xd8, 0x22, 0x1f, - 0x3d, 0xdd, 0x3e, 0x45, 0x72, 0x1e, 0x52, 0x27, 0xe8, 0xd4, 0xb2, 0xe9, 0xd6, 0x39, 0x39, 0x0b, - 0x22, 0xb2, 0x4d, 0xba, 0x73, 0x4e, 0xf9, 0xab, 0x00, 0x39, 0x95, 0x28, 0xcd, 0x56, 0x7b, 0xf2, - 0x0d, 0xc8, 0x61, 0x6b, 0x88, 0x34, 0xec, 0x68, 0x03, 0xeb, 0x09, 0x11, 0x57, 0xa8, 0xa4, 0xc8, - 0xe8, 0x50, 0xbf, 0xd0, 0x9e, 0x20, 0xd7, 0x23, 0x54, 0x54, 0xcd, 0x94, 0x7c, 0x1f, 0x8a, 0x27, - 0x03, 0xc7, 0x19, 0x6a, 0x5f, 0x58, 0x03, 0x8c, 0x5c, 0x8d, 0x6a, 0xc4, 0x84, 0xbc, 0x19, 0x12, - 0x72, 0x8f, 0x50, 0xed, 0x53, 0x22, 0xaa, 0x92, 0x0c, 0x70, 0x32, 0x70, 0x8c, 0xc7, 0x9a, 0x67, - 0x7d, 0x85, 0xca, 0x49, 0xca, 0xec, 0x15, 0xb8, 0x65, 0xa2, 0x27, 0x96, 0x4e, 0xc4, 0xd0, 0x0c, - 0x34, 0x18, 0xf8, 0xbb, 0x69, 0x96, 0xad, 0x79, 0xc8, 0x28, 0xa7, 0xb6, 0x85, 0x8a, 0x48, 0x24, - 0xd1, 0x07, 0x03, 0xe7, 0x5c, 0x1b, 0x8f, 0x4c, 0x1d, 0xa3, 0xf2, 0xd2, 0xb6, 0x50, 0x59, 0x56, - 0xfe, 0x22, 0x40, 0x86, 0xaa, 0x71, 0x80, 0xb0, 0x4e, 0xd8, 0x33, 0x43, 0x06, 0x00, 0xdf, 0x85, - 0xec, 0x88, 0x41, 0xa5, 0x3d, 0x46, 0x97, 0xe5, 0xc4, 0xb6, 0x58, 0xc9, 0xce, 0x85, 0x92, 0x9b, - 0xec, 0x5d, 0x28, 0x98, 0xe8, 0x0b, 0xcb, 0x46, 0xa6, 0x66, 0x38, 0x83, 0xf1, 0x90, 0x58, 0x80, - 0x2c, 0xdb, 0x0e, 0x2d, 0x6b, 0x30, 0x92, 0x3a, 0xa5, 0xe0, 0x2b, 0xab, 0x00, 0x96, 0x6d, 0xa2, - 0x0b, 0x6d, 0x88, 0xb0, 0x5e, 0x4e, 0xd2, 0x55, 0x6b, 0xa1, 0x55, 0x2d, 0x32, 0x4d, 0xa4, 0x55, - 0x4e, 0x20, 0x53, 0x77, 0x6c, 0x93, 0x1a, 0x4c, 0xfe, 0x00, 0xf2, 0xae, 0x73, 0xae, 0xa1, 0x0b, - 0xcb, 0xc3, 0xc8, 0x36, 0x98, 0xf4, 0x85, 0xdd, 0x97, 0x43, 0x6b, 0x7b, 0xce, 0x79, 0xd3, 0x27, - 0x68, 0x5e, 0x8c, 0x90, 0x81, 0x29, 0x6a, 0x72, 0x19, 0x24, 0x26, 0xa7, 0x66, 0xf8, 0x0c, 0xa9, - 0xa5, 0x72, 0xca, 0x6b, 0x90, 0xab, 0xeb, 0x23, 0xdd, 0xb0, 0xf0, 0xe5, 0xb1, 0x6d, 0x61, 0xe2, - 0x8c, 0x2e, 0xd2, 0x4d, 0x6e, 0xdd, 0x3c, 0xa4, 0xce, 0x5d, 0x0b, 0x33, 0xef, 0x4d, 0x29, 0x5f, - 0x0b, 0xb0, 0xd1, 0x43, 0x1e, 0x72, 0x9f, 0x20, 0x53, 0x3d, 0x73, 0x9d, 0xf1, 0xe9, 0xd9, 0x68, - 0x8c, 0x1b, 0x08, 0xeb, 0xd6, 0xc0, 0x93, 0xdf, 0x84, 0xbc, 0xc1, 0x59, 0x69, 0x63, 0xdb, 0xc2, - 0x54, 0xc2, 0xec, 0xee, 0x46, 0x48, 0xc2, 0xd0, 0x66, 0x9b, 0x20, 0x0f, 0x74, 0x0f, 0x6b, 0x96, - 0x6d, 0xb8, 0x48, 0xf7, 0x90, 0x46, 0x1c, 0x8c, 0xfa, 0x9f, 0x38, 0x99, 0x33, 0x51, 0x70, 0x8e, - 0xf8, 0x90, 0xa8, 0xec, 0x83, 0x3c, 0x2b, 0xc6, 0xd3, 0xef, 0xaf, 0x34, 0x40, 0xaa, 0x3b, 0xb6, - 0x37, 0x1e, 0x22, 0xd3, 0x1f, 0x7f, 0x06, 0x2e, 0x3f, 0x81, 0x52, 0x1f, 0xbb, 0x48, 0x1f, 0xf6, - 0x47, 0xc8, 0xb0, 0xbe, 0xb0, 0x0c, 0x86, 0xf9, 0x2a, 0xe4, 0x91, 0xcd, 0xb3, 0x06, 0x99, 0xa5, - 0x8c, 0x96, 0xe5, 0x75, 0x58, 0x41, 0x17, 0x23, 0xcb, 0x65, 0xee, 0xcc, 0x15, 0x26, 0x58, 0xaf, - 0x41, 0x81, 0xd9, 0xc8, 0x23, 0x21, 0x76, 0x8a, 0x30, 0xf5, 0xa9, 0x8c, 0xf2, 0x73, 0x01, 0xf2, - 0x8c, 0xbf, 0x0f, 0xf4, 0x1c, 0xce, 0x45, 0xc8, 0xb0, 0x6f, 0xcd, 0x32, 0x59, 0xba, 0x89, 0xdb, - 0x4c, 0xa4, 0x9b, 0x95, 0x41, 0xa2, 0xe8, 0x72, 0x3e, 0x74, 0x26, 0x49, 0xc3, 0x68, 0x56, 0x8c, - 0x14, 0x15, 0xe3, 0x6f, 0x09, 0x90, 0xeb, 0x2e, 0xd2, 0x31, 0xa2, 0xe1, 0xd4, 0x43, 0x5f, 0x8e, - 0x91, 0x87, 0x89, 0x3f, 0xb3, 0x88, 0xa2, 0xfe, 0xcc, 0xb0, 0x0a, 0xfb, 0xf3, 0x34, 0xfa, 0x3e, - 0x84, 0x92, 0xcb, 0xcd, 0xa6, 0xe1, 0x89, 0xdd, 0xa8, 0xbd, 0xb3, 0xbb, 0x2f, 0x84, 0x1d, 0x39, - 0xd6, 0xbc, 0x6c, 0x27, 0x96, 0xf3, 0x3c, 0xaa, 0x49, 0xd4, 0x30, 0xa1, 0x8c, 0xf5, 0x06, 0xc0, - 0xc8, 0x4f, 0x78, 0x1e, 0x8f, 0xb5, 0x48, 0x42, 0x0d, 0xe7, 0xc3, 0xb7, 0x21, 0xcb, 0x11, 0xf4, - 0x46, 0x3c, 0xaf, 0x44, 0x63, 0x3a, 0xce, 0xd2, 0xaf, 0x41, 0x76, 0x1a, 0xd3, 0x5e, 0x39, 0x7d, - 0x65, 0x50, 0xaf, 0x42, 0x29, 0x04, 0xa3, 0x37, 0x72, 0x6c, 0x0f, 0x29, 0xff, 0x10, 0x40, 0x3e, - 0xa6, 0x89, 0x2b, 0x04, 0x6f, 0x5c, 0xc2, 0x9a, 0x0b, 0xa3, 0xf0, 0xdd, 0xc0, 0x18, 0x41, 0x25, - 0x79, 0x3d, 0x54, 0x94, 0xbf, 0x0b, 0x50, 0x0a, 0x69, 0xc4, 0x34, 0x95, 0x1f, 0xc2, 0x56, 0x8c, - 0xf8, 0x9a, 0xc9, 0x9c, 0x9b, 0xbb, 0xd0, 0xed, 0x05, 0x6a, 0x04, 0x72, 0x4e, 0x58, 0x9b, 0x44, - 0x4c, 0xb4, 0x86, 0xb4, 0xd9, 0x85, 0x02, 0xd7, 0xc6, 0xdf, 0x91, 0x01, 0xb0, 0x19, 0xa3, 0x10, - 0xdf, 0x45, 0xa9, 0xc2, 0x8d, 0x06, 0xf2, 0x0c, 0xd7, 0x3a, 0x59, 0x68, 0x1d, 0xe5, 0xdf, 0x09, - 0x58, 0x8d, 0x10, 0x73, 0xc5, 0x9f, 0x26, 0x54, 0x16, 0x80, 0x94, 0xf8, 0x66, 0x20, 0x89, 0x8b, - 0x40, 0xda, 0x81, 0x9c, 0x5f, 0xf0, 0xe8, 0x78, 0x4c, 0x62, 0x87, 0x9c, 0x35, 0xe5, 0xd9, 0x05, - 0x7d, 0x3a, 0x1f, 0x03, 0x6a, 0x6a, 0x11, 0xa8, 0xe4, 0xbc, 0xf6, 0xce, 0x74, 0xd7, 0xd4, 0xbc, - 0xd1, 0xc0, 0xc2, 0x5e, 0x79, 0x69, 0x5b, 0xac, 0xe4, 0xa2, 0xb1, 0xb4, 0x7c, 0x65, 0x2c, 0xc9, - 0x20, 0xb5, 0x2d, 0x0f, 0x07, 0x6d, 0xa2, 0x54, 0xa0, 0x18, 0x18, 0xe3, 0xd0, 0x97, 0x20, 0x3b, - 0x35, 0x14, 0xf1, 0x31, 0x92, 0xd1, 0x2a, 0x20, 0x37, 0xd0, 0x00, 0x2d, 0x8e, 0x38, 0x12, 0xb3, - 0x21, 0x4a, 0x1e, 0xb3, 0xb7, 0x41, 0x6a, 0x3b, 0xba, 0xb9, 0x70, 0x79, 0x09, 0x8a, 0x01, 0x3a, - 0xbe, 0xb8, 0x02, 0xf2, 0xb1, 0x3d, 0xb8, 0xce, 0xf2, 0x55, 0x28, 0x85, 0x28, 0x39, 0x83, 0x8f, - 0x21, 0xa3, 0x5a, 0x43, 0xc4, 0x32, 0x97, 0x0c, 0xe0, 0x61, 0xdd, 0xc5, 0x2c, 0x93, 0x0b, 0x34, - 0x93, 0x4b, 0xb0, 0x8c, 0x6c, 0x73, 0x7a, 0xc4, 0x88, 0xe4, 0xe0, 0xf0, 0x78, 0x8c, 0x06, 0x8f, - 0xd3, 0x1f, 0x43, 0xbe, 0x87, 0xf0, 0xd8, 0xb5, 0xeb, 0x8e, 0x8d, 0x91, 0x8d, 0xe5, 0xbb, 0x90, - 0x75, 0xe9, 0x00, 0x2b, 0xdc, 0x04, 0x5a, 0xb8, 0xad, 0x47, 0xbc, 0x8d, 0xcc, 0xd3, 0x9a, 0x6d, - 0x8b, 0xe4, 0x23, 0x4a, 0xcd, 0x6b, 0x0c, 0x06, 0x72, 0x82, 0x82, 0xfc, 0xab, 0x04, 0xe4, 0x1f, - 0x20, 0xdc, 0x73, 0xce, 0xaf, 0x4a, 0x69, 0xa5, 0x68, 0x0d, 0x46, 0xca, 0xd1, 0x39, 0x07, 0x22, - 0x8d, 0x23, 0x52, 0x88, 0xba, 0x44, 0x73, 0x9e, 0x8e, 0x22, 0x71, 0x34, 0xc1, 0x25, 0x5a, 0x9e, - 0xa6, 0xe8, 0xe9, 0xb7, 0x09, 0x39, 0x43, 0x37, 0xce, 0x90, 0x46, 0x6b, 0x4d, 0x8f, 0x95, 0x8a, - 0xef, 0x27, 0xb1, 0x3b, 0x46, 0x72, 0x01, 0x96, 0x58, 0xd1, 0x5a, 0x4e, 0x93, 0x02, 0x89, 0xba, - 0x29, 0x45, 0x96, 0x17, 0x7a, 0xcb, 0xf4, 0x60, 0x95, 0x01, 0x08, 0xb6, 0x7c, 0x2c, 0x43, 0xc7, - 0xf2, 0x90, 0xc2, 0xce, 0x63, 0x64, 0x97, 0x81, 0x2e, 0x5c, 0x83, 0x02, 0x76, 0x75, 0xdb, 0xd3, - 0x0d, 0x7a, 0xf8, 0x5a, 0x66, 0x39, 0x4b, 0xaf, 0x00, 0x27, 0x50, 0xf0, 0x01, 0xe1, 0xde, 0xf9, - 0x06, 0x2c, 0x1b, 0xbc, 0x0c, 0xe1, 0x69, 0x21, 0x5c, 0x7e, 0xce, 0xd4, 0x28, 0x59, 0x10, 0x5d, - 0xe7, 0x9c, 0xc3, 0x24, 0x03, 0xd8, 0xe8, 0x02, 0x6b, 0x6c, 0x6f, 0x91, 0x56, 0x75, 0x7f, 0x10, - 0x40, 0x62, 0xb9, 0x77, 0x01, 0xf0, 0x32, 0x00, 0xa9, 0x2a, 0x8d, 0x33, 0x8a, 0x25, 0x63, 0x78, - 0x07, 0x32, 0xd3, 0x2a, 0x51, 0x8c, 0x49, 0x53, 0xd3, 0xa2, 0x74, 0x17, 0x0a, 0x13, 0xd3, 0x53, - 0xd7, 0xe1, 0xe6, 0xd8, 0x8c, 0xf1, 0x15, 0xdf, 0xb9, 0x66, 0x71, 0x49, 0x51, 0x5c, 0x8e, 0xa0, - 0x18, 0x10, 0xf9, 0x1b, 0x43, 0x43, 0x60, 0xf8, 0xad, 0x00, 0xf9, 0xc3, 0xf1, 0x22, 0xe7, 0x0b, - 0xa1, 0xf9, 0x3d, 0x29, 0xdf, 0x81, 0x82, 0x2f, 0xe8, 0xb7, 0xa2, 0xf9, 0x1f, 0x05, 0x90, 0x58, - 0xca, 0x7a, 0x96, 0xc8, 0xfb, 0xfe, 0x3c, 0x20, 0x20, 0xf3, 0xb7, 0x82, 0xc3, 0xcf, 0x12, 0xb0, - 0x41, 0xd3, 0x66, 0xcb, 0xde, 0xd3, 0xb1, 0x71, 0xf6, 0x0c, 0xa9, 0x88, 0x9c, 0x4a, 0x93, 0xd0, - 0x16, 0xe9, 0xe7, 0x6c, 0x66, 0x4a, 0xc6, 0x64, 0xa6, 0xd4, 0x53, 0x65, 0xa6, 0xa5, 0xd8, 0xcc, - 0x94, 0x8e, 0xcd, 0x4c, 0xcb, 0xb1, 0x99, 0x29, 0x13, 0x93, 0x99, 0x80, 0x02, 0xdb, 0x06, 0x39, - 0x46, 0xfb, 0x77, 0x60, 0x89, 0x6a, 0xcf, 0xce, 0xc3, 0x68, 0x39, 0x31, 0x17, 0x35, 0xe5, 0x37, - 0x02, 0x94, 0x7b, 0xce, 0x79, 0x64, 0x8e, 0x9b, 0x2b, 0x0f, 0x29, 0xcb, 0xd3, 0x9c, 0xc7, 0xfc, - 0x4e, 0xf2, 0x22, 0xa4, 0x90, 0xeb, 0x3a, 0x2e, 0xaf, 0x4e, 0xe5, 0xd0, 0x16, 0xac, 0x63, 0x12, - 0x34, 0x30, 0x2b, 0xc5, 0xae, 0x67, 0xe0, 0x24, 0x05, 0x21, 0x9c, 0xfd, 0x52, 0xd4, 0xe8, 0x08, - 0x36, 0xe3, 0xa4, 0xe7, 0x12, 0xc6, 0x19, 0xfd, 0x07, 0x90, 0x74, 0x9d, 0x73, 0x8f, 0x5f, 0xfe, - 0x5f, 0x89, 0xde, 0xa9, 0x63, 0x19, 0x29, 0x1d, 0x28, 0xc5, 0xf1, 0xbf, 0x1f, 0x81, 0xf5, 0xd5, - 0x85, 0xb0, 0x72, 0x7e, 0x7f, 0x26, 0xb7, 0xeb, 0xc9, 0x66, 0x8f, 0xc8, 0xbd, 0x3b, 0x60, 0xad, - 0x0a, 0xef, 0x0b, 0xb1, 0x6b, 0x7f, 0x38, 0xbc, 0xba, 0x23, 0xc4, 0xae, 0x78, 0x7e, 0x0f, 0xe5, - 0xff, 0x9c, 0xd3, 0x95, 0x53, 0xd8, 0x0a, 0x2a, 0x16, 0x95, 0x3d, 0x0e, 0xf2, 0xb7, 0x42, 0x90, - 0xdf, 0x9e, 0x03, 0x79, 0x84, 0x93, 0xf2, 0x53, 0xb8, 0x11, 0xbb, 0xc3, 0xbb, 0x11, 0xd0, 0x2b, - 0x73, 0x41, 0x8f, 0xae, 0x9c, 0x4d, 0x46, 0xec, 0xea, 0x5c, 0x84, 0x8c, 0xe5, 0x69, 0x3a, 0x76, - 0x86, 0x96, 0x41, 0xfd, 0x72, 0x59, 0xf9, 0x85, 0x00, 0x9b, 0x71, 0xa2, 0x7d, 0x3f, 0xae, 0xaf, - 0x58, 0x70, 0x33, 0x5e, 0xb1, 0x2b, 0x1c, 0xfd, 0xed, 0x10, 0xea, 0xaf, 0x2e, 0x44, 0x9d, 0xbb, - 0x66, 0x0f, 0x56, 0xe3, 0xf7, 0x78, 0x2f, 0x82, 0xfb, 0x9d, 0x6b, 0xe0, 0xce, 0x79, 0xfe, 0x37, - 0x01, 0x2b, 0x24, 0x02, 0x88, 0x97, 0x5e, 0xe5, 0x28, 0x77, 0x20, 0x63, 0x5a, 0x2e, 0x32, 0x78, - 0xd3, 0x8a, 0x78, 0x7f, 0xd8, 0x75, 0x1b, 0xfe, 0xec, 0x77, 0x58, 0x31, 0xe6, 0x21, 0x35, 0xb0, - 0x86, 0x16, 0xe6, 0x69, 0xfa, 0x25, 0xd8, 0xb2, 0x6c, 0x63, 0x30, 0xf6, 0xac, 0x27, 0xf4, 0x8e, - 0xe4, 0x62, 0x2d, 0x78, 0x68, 0xa4, 0x69, 0xcc, 0xbd, 0x08, 0x1b, 0xe8, 0xc2, 0x27, 0x22, 0x39, - 0x39, 0x48, 0xb2, 0x4c, 0x49, 0xa2, 0xe9, 0x3e, 0x13, 0x9b, 0xee, 0x21, 0x36, 0xdd, 0x67, 0x63, - 0xd2, 0x7d, 0x2e, 0x5c, 0x88, 0xe6, 0xe7, 0x14, 0xa2, 0x05, 0x7a, 0x2a, 0x7c, 0x2d, 0x80, 0x34, - 0x35, 0xc0, 0xb3, 0x1e, 0xb7, 0xb9, 0x89, 0x47, 0x11, 0x85, 0x9e, 0x87, 0x35, 0x9a, 0x8e, 0x67, - 0x31, 0x11, 0x63, 0xd2, 0x35, 0xf3, 0xe3, 0x57, 0xd9, 0x8d, 0x8d, 0xdd, 0x0e, 0xe7, 0x79, 0x02, - 0x11, 0x78, 0x1f, 0x96, 0x18, 0x51, 0xb8, 0xd5, 0x35, 0xa9, 0x64, 0x03, 0x0b, 0x12, 0x74, 0x6c, - 0x15, 0xf2, 0x86, 0x8b, 0x42, 0xcd, 0xaf, 0x44, 0x45, 0x54, 0xde, 0x07, 0x39, 0xb8, 0x21, 0xd7, - 0xfc, 0x65, 0x48, 0x33, 0x9e, 0xbe, 0x2f, 0x97, 0x62, 0x2e, 0xaf, 0xca, 0x01, 0x64, 0x79, 0xb3, - 0x83, 0xdc, 0x5d, 0xc9, 0x1d, 0x8b, 0x5d, 0x62, 0x27, 0x72, 0x14, 0x21, 0x33, 0xd2, 0x5d, 0x64, - 0xe3, 0x69, 0x2a, 0xd9, 0x80, 0x22, 0x1f, 0xf2, 0xac, 0x93, 0x81, 0x65, 0x9f, 0x92, 0x29, 0x91, - 0xaa, 0xa4, 0x4f, 0x9b, 0x05, 0x61, 0xfd, 0x63, 0x34, 0xdc, 0x86, 0x72, 0xd4, 0xe9, 0x26, 0x7b, - 0xb3, 0x8d, 0x4a, 0x90, 0x65, 0x23, 0xcc, 0x57, 0x69, 0xab, 0x4f, 0xf9, 0xa7, 0x00, 0x6b, 0xd1, - 0x3d, 0xb8, 0xca, 0x31, 0x9b, 0xc4, 0xb6, 0x27, 0x13, 0x95, 0x54, 0x04, 0x5f, 0x31, 0x1e, 0xdf, - 0x24, 0x6d, 0xdd, 0xbe, 0x09, 0x79, 0xbf, 0x61, 0xc4, 0xda, 0x07, 0x29, 0x1a, 0xb5, 0x1b, 0x71, - 0x2d, 0x23, 0xd6, 0x3f, 0xa8, 0xc0, 0x12, 0x15, 0x9c, 0x75, 0x01, 0xb2, 0x91, 0x4e, 0x43, 0x10, - 0xf0, 0x55, 0xc8, 0x33, 0x07, 0xf3, 0x35, 0x4f, 0x53, 0x1c, 0x3f, 0x87, 0xf5, 0x07, 0x08, 0x53, - 0x92, 0x16, 0x26, 0x87, 0xa1, 0xe3, 0x5e, 0x81, 0x64, 0xd0, 0x6a, 0x09, 0xdf, 0x6a, 0x44, 0x01, - 0x0f, 0xeb, 0xc3, 0x11, 0xbb, 0x15, 0x4f, 0xa3, 0x28, 0xc9, 0x9d, 0xaf, 0x3c, 0xbb, 0x03, 0xc7, - 0x71, 0x0d, 0x0a, 0x9c, 0x1f, 0x9f, 0x99, 0xfa, 0x64, 0xc0, 0xdb, 0xd9, 0x0b, 0xd0, 0x47, 0xb0, - 0x46, 0xf8, 0x70, 0x43, 0x18, 0x8e, 0x6b, 0x06, 0x4e, 0xa2, 0x58, 0x2e, 0x93, 0xdc, 0xc3, 0x9a, - 0xf0, 0xff, 0x12, 0x98, 0xae, 0x21, 0x0e, 0x5c, 0x90, 0xd6, 0xa4, 0x0f, 0xe3, 0xd2, 0x09, 0xdf, - 0x95, 0xef, 0x85, 0xf0, 0x9c, 0xb3, 0x7a, 0x27, 0x38, 0x48, 0x6e, 0xf5, 0x41, 0xa0, 0x7d, 0x91, - 0xa8, 0x12, 0x9b, 0x06, 0xe4, 0x42, 0xc4, 0x77, 0x21, 0xcb, 0xb3, 0x4b, 0xa0, 0x46, 0x09, 0x37, - 0x0c, 0x6a, 0xc6, 0xa4, 0x40, 0x29, 0xc0, 0x12, 0x13, 0x8f, 0x27, 0x8d, 0x55, 0xc8, 0x3b, 0xae, - 0x75, 0x6a, 0xd9, 0x5c, 0x6a, 0x7e, 0x89, 0xfd, 0x5a, 0x80, 0x17, 0xea, 0xce, 0x70, 0x34, 0xc6, - 0xa8, 0x3f, 0x1a, 0x58, 0xf8, 0xd0, 0xb1, 0x6c, 0xec, 0xed, 0x5d, 0xf6, 0xad, 0xaf, 0xd0, 0x82, - 0x3b, 0x2d, 0x6d, 0x29, 0xb1, 0x37, 0x24, 0xf6, 0x9a, 0xf0, 0x02, 0xac, 0x4f, 0xc7, 0x68, 0x5f, - 0x5f, 0xb3, 0x6c, 0xed, 0xe4, 0x12, 0xf3, 0x1e, 0x08, 0x89, 0x51, 0x46, 0x30, 0x22, 0xbb, 0xf0, - 0x00, 0xa2, 0xef, 0x4f, 0xca, 0xaf, 0x13, 0xb0, 0x3d, 0x5f, 0x8e, 0x67, 0xcd, 0x9b, 0xaf, 0xc3, - 0x92, 0x47, 0x9f, 0x84, 0xae, 0xf7, 0xe2, 0x44, 0xb2, 0xff, 0x54, 0x3e, 0x8f, 0x5f, 0x44, 0x3a, - 0x90, 0x19, 0x38, 0xac, 0xdf, 0xea, 0x37, 0xb8, 0x3f, 0x88, 0x6c, 0x7b, 0xb5, 0xdc, 0x3b, 0x74, - 0xa6, 0xcd, 0x79, 0x6c, 0xde, 0x83, 0x7c, 0x68, 0x80, 0x44, 0x8a, 0xbf, 0x01, 0x47, 0x97, 0x1a, - 0x6f, 0x84, 0x74, 0xd6, 0xb7, 0x97, 0x95, 0x23, 0x28, 0xc5, 0xbd, 0x73, 0x85, 0x1f, 0x35, 0xef, - 0x86, 0x1e, 0x35, 0x9f, 0x9f, 0xff, 0x4a, 0x46, 0xfc, 0x43, 0xf9, 0x9d, 0x00, 0x99, 0x49, 0x93, - 0x2f, 0xc2, 0x29, 0xe6, 0x7a, 0x96, 0x21, 0x91, 0x13, 0xf3, 0x1c, 0x97, 0x91, 0xef, 0x43, 0x91, - 0x35, 0x13, 0xd9, 0x93, 0xa0, 0x36, 0x74, 0x4c, 0xc4, 0x7b, 0x99, 0x37, 0x67, 0x5b, 0x8a, 0xac, - 0xfb, 0x70, 0xe0, 0x98, 0x68, 0xfa, 0x4a, 0x47, 0xa5, 0x4e, 0xc5, 0x14, 0x1d, 0x74, 0x05, 0x95, - 0x16, 0xfb, 0xef, 0x22, 0x74, 0xc8, 0x77, 0xcc, 0x75, 0x58, 0x19, 0xea, 0x96, 0xad, 0xcd, 0x78, - 0x67, 0xf8, 0x01, 0x30, 0x11, 0x53, 0x8a, 0x4f, 0x55, 0xdf, 0x20, 0xf2, 0x1b, 0x83, 0xb1, 0x89, - 0xb4, 0x13, 0xdd, 0x43, 0x9a, 0xa9, 0x63, 0x9d, 0xd7, 0xa2, 0x93, 0x67, 0x04, 0xbe, 0x2b, 0x2f, - 0xaa, 0x3e, 0x02, 0xa9, 0xe1, 0x3a, 0xa3, 0xeb, 0x89, 0x22, 0xfb, 0xa2, 0x4c, 0x8f, 0x4c, 0xa5, - 0x04, 0xc5, 0x00, 0x03, 0xce, 0xf5, 0x73, 0x58, 0xaf, 0x99, 0x66, 0xc8, 0x50, 0x57, 0x05, 0xe0, - 0x3d, 0x48, 0xf3, 0x32, 0x8c, 0xfb, 0xf6, 0xc2, 0x67, 0x51, 0x65, 0x13, 0xca, 0xb3, 0x3b, 0xf0, - 0xdd, 0x6b, 0xb0, 0xc9, 0xda, 0x02, 0xd7, 0x16, 0x60, 0x25, 0x2c, 0x40, 0x46, 0xb9, 0x05, 0x5b, - 0xb1, 0x2c, 0x26, 0xa8, 0xdd, 0xec, 0x93, 0xf3, 0x94, 0xb8, 0xfd, 0x40, 0x9d, 0xd6, 0x4a, 0x0b, - 0xba, 0x46, 0x93, 0x86, 0x89, 0x72, 0x1f, 0x6e, 0xcd, 0x61, 0x30, 0x3d, 0x21, 0x22, 0x35, 0x18, - 0xeb, 0xed, 0xee, 0x42, 0xb9, 0xee, 0x0c, 0x87, 0x16, 0x8e, 0xd9, 0x75, 0xde, 0x9a, 0x2d, 0xd8, - 0x88, 0x59, 0xc3, 0x55, 0xb9, 0x07, 0xeb, 0xb5, 0x13, 0xc7, 0x7d, 0x1a, 0x7e, 0x04, 0xfb, 0x99, - 0x25, 0x9c, 0xdd, 0x13, 0xb8, 0x11, 0x4c, 0x21, 0xde, 0x15, 0xe5, 0x99, 0xfc, 0x23, 0xd8, 0xf2, - 0x90, 0xee, 0x1a, 0x67, 0x1a, 0xf3, 0x2a, 0xd6, 0xd7, 0x0f, 0xbc, 0xcc, 0x08, 0x33, 0x77, 0xeb, - 0x3e, 0xa5, 0xa7, 0xce, 0xc6, 0xf8, 0xf3, 0x07, 0x08, 0x65, 0x07, 0xca, 0xf3, 0xe6, 0x22, 0x6e, - 0xcb, 0x4a, 0xc3, 0x1f, 0xc2, 0x6a, 0x44, 0xce, 0xe9, 0x25, 0xc8, 0x43, 0x9e, 0x37, 0x51, 0x98, - 0x14, 0xa1, 0xa4, 0x4c, 0x62, 0xb2, 0xf1, 0x13, 0x82, 0x64, 0xf9, 0x23, 0x58, 0xe9, 0x1f, 0xb5, - 0x8f, 0xc6, 0xc8, 0xbd, 0xf4, 0x95, 0xcc, 0x43, 0xea, 0x4b, 0xf2, 0xcd, 0x2d, 0xfe, 0x06, 0xa4, - 0xf9, 0xad, 0x80, 0x2e, 0x89, 0xe6, 0xb1, 0xfe, 0x51, 0xfb, 0x50, 0xbf, 0x1c, 0x38, 0xba, 0xf9, - 0x09, 0xa3, 0x52, 0xfe, 0x24, 0xc0, 0x2a, 0xbd, 0x02, 0xcd, 0x24, 0xff, 0x38, 0xf8, 0x82, 0x27, - 0x48, 0xe2, 0x3a, 0x97, 0xc1, 0x39, 0xef, 0x80, 0xe2, 0xf5, 0xde, 0x01, 0x37, 0x41, 0xb6, 0x3c, - 0x5a, 0xb5, 0x79, 0xc8, 0xb5, 0x90, 0xe7, 0xff, 0x21, 0x81, 0x24, 0x97, 0xdf, 0x0b, 0xb0, 0xc6, - 0xe0, 0xbf, 0x96, 0xe4, 0xd1, 0x3c, 0x12, 0xd5, 0x46, 0xfc, 0x06, 0xda, 0x24, 0xaf, 0xa5, 0x8d, - 0xf2, 0x1f, 0x01, 0xa4, 0xa9, 0xf9, 0xb8, 0xed, 0xdf, 0x9a, 0xc8, 0xe0, 0xd7, 0x41, 0xca, 0xec, - 0xf5, 0xf4, 0x8a, 0x0b, 0x0d, 0xf1, 0x95, 0x80, 0xd1, 0xc5, 0xeb, 0x18, 0x5d, 0x7e, 0x8d, 0x1f, - 0x75, 0xc9, 0x98, 0xbf, 0xe4, 0xf4, 0x8f, 0xda, 0xa4, 0xe0, 0x45, 0x43, 0x64, 0x63, 0x5a, 0x09, - 0x7d, 0x08, 0x2b, 0x3c, 0x64, 0x26, 0x82, 0xa6, 0xa8, 0xa0, 0x2f, 0xc5, 0x84, 0x49, 0x54, 0xd2, - 0xea, 0xdb, 0x50, 0x88, 0xfc, 0x23, 0x28, 0x0b, 0xe9, 0x56, 0x47, 0x6d, 0x3e, 0x68, 0xf6, 0x24, - 0x41, 0x06, 0x58, 0xea, 0xab, 0xbd, 0x56, 0xe7, 0x81, 0x94, 0x20, 0xbf, 0xf7, 0x5a, 0x9d, 0x5a, - 0xef, 0x33, 0x49, 0xac, 0xde, 0x0e, 0xfe, 0x07, 0x89, 0x05, 0x95, 0x2c, 0x43, 0xa1, 0x76, 0xac, - 0x76, 0xb5, 0x56, 0xa7, 0xde, 0x6b, 0x1e, 0x34, 0x3b, 0xaa, 0x24, 0x54, 0x77, 0x60, 0x25, 0xfa, - 0xf7, 0x9c, 0x65, 0x48, 0x76, 0xba, 0x9d, 0xa6, 0x24, 0x90, 0x5f, 0xf5, 0x66, 0xbb, 0x2d, 0x25, - 0xe4, 0x34, 0x88, 0xbd, 0xee, 0x23, 0x49, 0xac, 0x1e, 0x41, 0x36, 0xf8, 0x26, 0x08, 0xb0, 0x54, - 0xab, 0xab, 0xad, 0x4f, 0x08, 0x75, 0x0e, 0x96, 0x5b, 0x1d, 0xfe, 0x95, 0x20, 0x52, 0xb6, 0xbb, - 0xb5, 0x06, 0x91, 0x8c, 0x94, 0xd9, 0x99, 0xe3, 0x8e, 0xff, 0x99, 0x24, 0x94, 0xc7, 0x87, 0x8d, - 0x9a, 0x4a, 0xbe, 0x52, 0xd5, 0x03, 0x58, 0x9f, 0xf7, 0x97, 0x16, 0x80, 0xa5, 0xd6, 0x83, 0x4e, - 0xb7, 0xd7, 0x94, 0x9e, 0x93, 0x25, 0xc8, 0x35, 0x3f, 0x3d, 0x6c, 0xd6, 0x55, 0xad, 0xf9, 0x69, - 0xab, 0xaf, 0x4a, 0x82, 0x7c, 0x03, 0x24, 0x3e, 0xd2, 0xe9, 0xfa, 0xa3, 0x89, 0xea, 0x7b, 0x00, - 0x81, 0x77, 0xab, 0x2c, 0xa4, 0x7b, 0x64, 0xbe, 0x43, 0x58, 0x64, 0x20, 0xd5, 0x53, 0xb5, 0xc3, - 0x87, 0x92, 0x20, 0x97, 0x60, 0xa5, 0xa7, 0x6a, 0xb5, 0x7d, 0xb5, 0xd9, 0xd3, 0x0e, 0xba, 0x8d, - 0xd6, 0xfe, 0x67, 0x52, 0xa2, 0xfa, 0x26, 0xe4, 0xc3, 0x5d, 0xb6, 0x34, 0x88, 0x87, 0xc7, 0x2a, - 0x83, 0x99, 0x4a, 0xdc, 0x64, 0x30, 0x37, 0x9a, 0xed, 0xa6, 0xda, 0xa4, 0x30, 0x67, 0xa6, 0x9d, - 0x89, 0x2c, 0xa4, 0xf7, 0xbb, 0xbd, 0x47, 0xb5, 0x5e, 0x43, 0x7a, 0x8e, 0xe8, 0xb8, 0x57, 0xab, - 0x3f, 0xa4, 0x5f, 0x42, 0xf5, 0x1d, 0xbf, 0x96, 0xe6, 0xb8, 0x95, 0x60, 0xa5, 0xaf, 0xf6, 0x9a, - 0xb5, 0x03, 0xad, 0xd9, 0xa9, 0xed, 0xb5, 0x09, 0x10, 0x82, 0x5c, 0x84, 0x3c, 0x1f, 0xf4, 0x51, - 0x24, 0xca, 0x04, 0x6a, 0xea, 0x2c, 0xa4, 0x0f, 0x8f, 0x55, 0x8d, 0x58, 0x42, 0x90, 0x0b, 0x00, - 0x4c, 0x24, 0xfa, 0x9d, 0x20, 0xdf, 0x4c, 0x2c, 0x8d, 0x59, 0xca, 0x80, 0xe2, 0x4c, 0xd5, 0x25, - 0xaf, 0x40, 0xb6, 0x51, 0x57, 0xb5, 0xa9, 0xff, 0x90, 0x55, 0x75, 0x55, 0x6b, 0x74, 0x8f, 0xf7, - 0xda, 0x44, 0x39, 0x4e, 0xb0, 0xd7, 0xed, 0xb6, 0x9b, 0xb5, 0x8e, 0x24, 0xfa, 0x04, 0xdc, 0xc9, - 0xa8, 0xed, 0x28, 0x41, 0xbb, 0xbb, 0x27, 0xa5, 0xab, 0xef, 0xc3, 0x4a, 0xb4, 0xac, 0x2a, 0xc1, - 0x4a, 0xeb, 0xf8, 0x40, 0xab, 0xf5, 0x3f, 0xeb, 0xd4, 0xb5, 0x56, 0xa7, 0xd1, 0xfc, 0x54, 0x7a, - 0x8e, 0xb8, 0x1e, 0x19, 0x0c, 0x8c, 0x09, 0xd5, 0xb7, 0x78, 0x01, 0x48, 0x05, 0x23, 0xab, 0x54, - 0xed, 0x41, 0xbb, 0xbb, 0x57, 0x6b, 0x87, 0x56, 0xa9, 0x5a, 0xbb, 0x5b, 0x9f, 0x8c, 0x09, 0xd5, - 0x8f, 0xa0, 0x38, 0x1b, 0x8f, 0x37, 0x68, 0x62, 0xd0, 0x0e, 0xdb, 0xb5, 0x56, 0x47, 0xdb, 0x3b, - 0xde, 0xdf, 0xa7, 0xba, 0xf1, 0xd1, 0xfd, 0x76, 0x4d, 0xe5, 0x83, 0x7d, 0x29, 0x51, 0xfd, 0x25, - 0xcb, 0x22, 0xe1, 0x18, 0x2d, 0x00, 0x10, 0xd2, 0x7e, 0xb3, 0xdd, 0xac, 0xab, 0xd3, 0xa5, 0xf5, - 0x5e, 0x93, 0x00, 0xac, 0xd6, 0x18, 0x38, 0x32, 0x14, 0x28, 0xd5, 0xc7, 0xdd, 0x47, 0x7c, 0x4c, - 0x94, 0xd7, 0x40, 0x26, 0x63, 0x8d, 0x66, 0xbf, 0xde, 0x6b, 0xed, 0xf9, 0xb4, 0x49, 0x9f, 0xb6, - 0xd1, 0xeb, 0x1e, 0xf2, 0xb1, 0x14, 0xb5, 0xfa, 0x51, 0x5b, 0xab, 0xb5, 0x89, 0xd7, 0xb1, 0xc1, - 0xa5, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xc8, 0xd2, 0xab, 0xf6, 0x76, 0x28, 0x00, 0x00, + // 3330 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xcd, 0x73, 0xdb, 0xc6, + 0x15, 0x0f, 0xf8, 0x29, 0x3e, 0x7e, 0x08, 0x02, 0x2d, 0x89, 0x92, 0xec, 0x44, 0x41, 0x12, 0x87, + 0x66, 0x1c, 0x39, 0x56, 0x93, 0x38, 0x5f, 0x33, 0x29, 0x45, 0x42, 0x0e, 0x6b, 0x8a, 0x94, 0x48, + 0x2a, 0x8e, 0x3b, 0xd3, 0xd9, 0x40, 0xe0, 0x46, 0xc2, 0x98, 0x04, 0x18, 0x60, 0x69, 0x59, 0xe9, + 0xb1, 0xcd, 0xad, 0x9d, 0x1e, 0x7b, 0xe8, 0x4c, 0xaf, 0x3d, 0xf4, 0xd0, 0x69, 0x0f, 0x9d, 0xf6, + 0xde, 0x43, 0x6f, 0xfd, 0x1f, 0x7a, 0xe8, 0x1f, 0xd0, 0x43, 0x8f, 0x9d, 0xce, 0x7e, 0x80, 0x04, + 0x40, 0x50, 0x94, 0x9d, 0xa4, 0xb9, 0x11, 0xbb, 0x6f, 0xdf, 0xbe, 0xf7, 0x7b, 0x1f, 0xfb, 0xf6, + 0x2d, 0x61, 0x85, 0xe8, 0x27, 0x03, 0x8c, 0x5c, 0x62, 0x3b, 0x78, 0x67, 0xe4, 0xd8, 0xc4, 0x56, + 0xb2, 0x36, 0x71, 0xd9, 0x2f, 0xc3, 0x1e, 0xa8, 0x37, 0x21, 0xa9, 0x39, 0x8e, 0xed, 0x28, 0x39, + 0x48, 0x18, 0x76, 0x1f, 0x97, 0xa4, 0xed, 0x58, 0x39, 0xa3, 0x2c, 0x43, 0x7a, 0x88, 0x5d, 0x57, + 0x3f, 0xc5, 0xa5, 0xd8, 0xb6, 0x54, 0xce, 0xa8, 0x5f, 0x81, 0x7c, 0xe8, 0x98, 0x43, 0xdd, 0xb9, + 0x78, 0x80, 0x2f, 0xba, 0xc6, 0x19, 0x1e, 0xea, 0x74, 0x89, 0xa5, 0x0f, 0xbd, 0x25, 0xb7, 0x20, + 0x41, 0x2e, 0x46, 0x94, 0x3e, 0x56, 0x2e, 0xec, 0x6e, 0xed, 0xf8, 0x76, 0xd9, 0x99, 0x2e, 0xed, + 0x5d, 0x8c, 0xb0, 0xf2, 0x26, 0xa4, 0xec, 0x11, 0x31, 0x6d, 0xab, 0x14, 0xdf, 0x96, 0xca, 0x85, + 0xdd, 0x1b, 0x73, 0x88, 0xdb, 0x8c, 0x48, 0xbd, 0x0d, 0x85, 0x43, 0xdd, 0x21, 0x26, 0xfd, 0xe8, + 0xe8, 0xd6, 0x29, 0x56, 0xf2, 0x90, 0x3c, 0xc1, 0xa7, 0xa6, 0xc5, 0xb6, 0xce, 0x29, 0x59, 0x88, + 0x63, 0xab, 0xcf, 0x76, 0xce, 0xa9, 0x7f, 0x93, 0x20, 0xd7, 0xa3, 0x4a, 0xf3, 0xd5, 0xae, 0x72, + 0x0d, 0x72, 0xc4, 0x1c, 0x62, 0x44, 0x6c, 0x34, 0x30, 0x9f, 0x50, 0x71, 0xa5, 0x72, 0x92, 0x8e, + 0x0e, 0xf5, 0xa7, 0xe8, 0x09, 0x76, 0x5c, 0x4a, 0xc5, 0xd4, 0x4c, 0x2a, 0xf7, 0x60, 0xe5, 0x64, + 0x60, 0xdb, 0x43, 0xf4, 0x85, 0x39, 0x20, 0xd8, 0x41, 0x4c, 0x23, 0x2e, 0xe4, 0xf5, 0x80, 0x90, + 0x7b, 0x94, 0x6a, 0x9f, 0x11, 0x31, 0x95, 0x14, 0x80, 0x93, 0x81, 0x6d, 0x3c, 0x46, 0xae, 0xf9, + 0x15, 0x2e, 0x25, 0x18, 0xb3, 0xd7, 0xe0, 0x46, 0x1f, 0x3f, 0x31, 0x75, 0x2a, 0x06, 0x32, 0xf0, + 0x60, 0xe0, 0xed, 0x86, 0x4c, 0x0b, 0xb9, 0xd8, 0x28, 0x25, 0xb7, 0xa5, 0x72, 0x9c, 0x4a, 0xa2, + 0x0f, 0x06, 0xf6, 0x39, 0x1a, 0x8f, 0xfa, 0x3a, 0xc1, 0xa5, 0xd4, 0xb6, 0x54, 0x5e, 0x52, 0xff, + 0x2a, 0x41, 0x86, 0xa9, 0x71, 0x80, 0x89, 0x4e, 0xd9, 0x73, 0x43, 0xfa, 0x00, 0xdf, 0x85, 0xec, + 0x88, 0x43, 0x85, 0x1e, 0xe3, 0x8b, 0x52, 0x6c, 0x3b, 0x5e, 0xce, 0xce, 0x85, 0x52, 0x98, 0xec, + 0x3d, 0x28, 0xf4, 0xf1, 0x17, 0xa6, 0x85, 0xfb, 0xc8, 0xb0, 0x07, 0xe3, 0x21, 0xb5, 0x00, 0x5d, + 0xb6, 0x1d, 0x58, 0x56, 0xe7, 0x24, 0x35, 0x46, 0x21, 0x56, 0x56, 0x00, 0x4c, 0xab, 0x8f, 0x9f, + 0xa2, 0x21, 0x26, 0x7a, 0x29, 0xc1, 0x56, 0xad, 0x05, 0x56, 0x35, 0xe8, 0x34, 0x95, 0x56, 0x3d, + 0x81, 0x4c, 0xcd, 0xb6, 0xfa, 0xcc, 0x60, 0xca, 0x87, 0x90, 0x77, 0xec, 0x73, 0x84, 0x9f, 0x9a, + 0x2e, 0xc1, 0x96, 0xc1, 0xa5, 0x2f, 0xec, 0xbe, 0x1a, 0x58, 0xdb, 0xb1, 0xcf, 0x35, 0x8f, 0x40, + 0x7b, 0x3a, 0xc2, 0x06, 0x61, 0xa8, 0x29, 0x25, 0x90, 0xb9, 0x9c, 0xc8, 0xf0, 0x18, 0x32, 0x4b, + 0xe5, 0xd4, 0x37, 0x20, 0x57, 0xd3, 0x47, 0xba, 0x61, 0x92, 0x8b, 0x63, 0xcb, 0x24, 0xd4, 0x19, + 0x1d, 0xac, 0xf7, 0x85, 0x75, 0xf3, 0x90, 0x3c, 0x77, 0x4c, 0xc2, 0xbd, 0x37, 0xa9, 0x7e, 0x2d, + 0xc1, 0x46, 0x07, 0xbb, 0xd8, 0x79, 0x82, 0xfb, 0xbd, 0x33, 0xc7, 0x1e, 0x9f, 0x9e, 0x8d, 0xc6, + 0xa4, 0x8e, 0x89, 0x6e, 0x0e, 0x5c, 0xe5, 0x2d, 0xc8, 0x1b, 0x82, 0x15, 0x1a, 0x5b, 0x26, 0x61, + 0x12, 0x66, 0x77, 0x37, 0x02, 0x12, 0x06, 0x36, 0xdb, 0x04, 0x65, 0xa0, 0xbb, 0x04, 0x99, 0x96, + 0xe1, 0x60, 0xdd, 0xc5, 0x88, 0x3a, 0x18, 0xf3, 0xbf, 0xf8, 0x64, 0xae, 0x8f, 0xfd, 0x73, 0xd4, + 0x87, 0xe2, 0xea, 0x3e, 0x28, 0xb3, 0x62, 0x3c, 0xfb, 0xfe, 0x6a, 0x1d, 0xe4, 0x9a, 0x6d, 0xb9, + 0xe3, 0x21, 0xee, 0x7b, 0xe3, 0xcf, 0xc1, 0xe5, 0x27, 0x50, 0xec, 0x12, 0x07, 0xeb, 0xc3, 0xee, + 0x08, 0x1b, 0xe6, 0x17, 0xa6, 0xc1, 0x31, 0x5f, 0x85, 0x3c, 0xb6, 0x44, 0xd6, 0xa0, 0xb3, 0x8c, + 0xd1, 0x92, 0xb2, 0x0e, 0xcb, 0xf8, 0xe9, 0xc8, 0x74, 0xb8, 0x3b, 0x0b, 0x85, 0x29, 0xd6, 0x6b, + 0x50, 0xe0, 0x36, 0x72, 0x69, 0x88, 0x9d, 0x62, 0xc2, 0x7c, 0x2a, 0xa3, 0xfe, 0x5c, 0x82, 0x3c, + 0xe7, 0xef, 0x01, 0x3d, 0x87, 0xf3, 0x0a, 0x64, 0xf8, 0x37, 0x32, 0xfb, 0x3c, 0xdd, 0x44, 0x6d, + 0x16, 0x67, 0x9b, 0x95, 0x40, 0x66, 0xe8, 0x0a, 0x3e, 0x6c, 0x26, 0xc1, 0xc2, 0x68, 0x56, 0x8c, + 0x24, 0x13, 0xc3, 0x06, 0xb9, 0xdb, 0xd5, 0x82, 0x2a, 0x16, 0x20, 0xc5, 0x19, 0x08, 0x09, 0x6e, + 0xc1, 0xd2, 0x63, 0x7c, 0x81, 0x44, 0xfe, 0xa2, 0xd1, 0xbe, 0x1e, 0x80, 0xad, 0xdb, 0xd5, 0xbc, + 0xdc, 0x55, 0x80, 0x14, 0x25, 0x35, 0xfb, 0x4c, 0xa0, 0x9c, 0x22, 0xc3, 0x92, 0x63, 0x0f, 0x30, + 0xd2, 0x1d, 0x8b, 0x09, 0x92, 0x53, 0x4d, 0x80, 0x6e, 0x57, 0xf3, 0x74, 0xfe, 0x4e, 0xb7, 0xfa, + 0x4f, 0x0c, 0x94, 0x9a, 0x83, 0x75, 0x82, 0x59, 0xaa, 0xe8, 0xe0, 0x2f, 0xc7, 0xd8, 0x25, 0x34, + 0x56, 0x79, 0xb6, 0x60, 0xb1, 0xca, 0xfd, 0x20, 0x18, 0xab, 0xd3, 0xcc, 0xf2, 0x11, 0x14, 0x1d, + 0xe1, 0x92, 0x88, 0x4c, 0x7c, 0x92, 0xf9, 0x72, 0x76, 0xf7, 0xa5, 0x60, 0x90, 0x46, 0xba, 0x2e, + 0xdf, 0x89, 0xe7, 0x73, 0x97, 0x49, 0x1a, 0x76, 0xba, 0x40, 0x36, 0xbe, 0x03, 0x30, 0xf2, 0x92, + 0xb9, 0x2b, 0xf2, 0x48, 0xe8, 0xb0, 0x08, 0xe6, 0xfa, 0x77, 0x20, 0x2b, 0xbc, 0xc3, 0x1d, 0x89, + 0x9c, 0x19, 0xce, 0x57, 0x51, 0x5e, 0x7c, 0x07, 0x96, 0x5c, 0x17, 0xf3, 0x35, 0x29, 0xb6, 0xe6, + 0x46, 0x18, 0xe7, 0xe0, 0x82, 0x37, 0x20, 0x3b, 0x4d, 0x70, 0x6e, 0x29, 0x7d, 0x69, 0x86, 0x5b, + 0x85, 0x62, 0x00, 0x77, 0x77, 0x64, 0x5b, 0x2e, 0x56, 0xff, 0x21, 0x81, 0x72, 0xcc, 0xb2, 0x78, + 0xc0, 0x1e, 0x51, 0xd9, 0x7b, 0x2e, 0xee, 0xd2, 0x77, 0x83, 0x7b, 0x08, 0xc6, 0xc4, 0xd5, 0x60, + 0x54, 0xff, 0x2e, 0x41, 0x31, 0xa0, 0x11, 0xd7, 0x54, 0x79, 0x00, 0x5b, 0x11, 0xe2, 0xa3, 0x3e, + 0xf7, 0x7a, 0xe1, 0x73, 0x37, 0x17, 0xa8, 0xe1, 0x4b, 0xc0, 0x41, 0x6d, 0x62, 0x11, 0xa9, 0x2b, + 0xa0, 0xcd, 0x2e, 0x14, 0x84, 0x36, 0xde, 0x8e, 0x1c, 0x80, 0xcd, 0x08, 0x85, 0xc4, 0x2e, 0x6a, + 0x05, 0xae, 0xd5, 0xb1, 0x6b, 0x38, 0xe6, 0xc9, 0x42, 0xeb, 0xa8, 0xbf, 0x8e, 0xc3, 0x6a, 0x88, + 0x58, 0x28, 0xfe, 0x2c, 0xb1, 0xb5, 0x00, 0xa4, 0xd8, 0x37, 0x03, 0x29, 0xbe, 0x08, 0xa4, 0x1d, + 0xc8, 0x79, 0xd5, 0x9f, 0x4e, 0xc6, 0x34, 0xd8, 0xe8, 0xc1, 0x5b, 0x9a, 0x5d, 0xd0, 0x65, 0xf3, + 0x11, 0xa0, 0x26, 0x17, 0x81, 0x4a, 0x8b, 0x17, 0xf7, 0x4c, 0x77, 0xfa, 0xc8, 0x1d, 0x0d, 0x4c, + 0xe2, 0x96, 0x52, 0xdb, 0xf1, 0x72, 0x4e, 0xb9, 0x0d, 0x59, 0x1a, 0x7c, 0x1e, 0x9b, 0x34, 0x63, + 0x33, 0x93, 0xe7, 0x3c, 0x1e, 0xa1, 0xc8, 0x5b, 0xba, 0x34, 0xf2, 0x14, 0x90, 0x9b, 0xa6, 0x4b, + 0xfc, 0x16, 0x54, 0xcb, 0xb0, 0xe2, 0x1b, 0x13, 0x86, 0x2a, 0x42, 0x76, 0x6a, 0x56, 0xea, 0x91, + 0xf4, 0x30, 0x28, 0x83, 0x52, 0xc7, 0x03, 0xbc, 0x38, 0x3e, 0x69, 0x84, 0x07, 0x28, 0x45, 0x84, + 0xdf, 0x04, 0xb9, 0x69, 0xeb, 0xfd, 0x85, 0xcb, 0x8b, 0xb0, 0xe2, 0xa3, 0x13, 0x8b, 0xcb, 0xa0, + 0x1c, 0x5b, 0x83, 0xab, 0x2c, 0x5f, 0x85, 0x62, 0x80, 0x52, 0x30, 0xf8, 0x04, 0x32, 0x3d, 0x73, + 0x88, 0x79, 0x62, 0x54, 0x00, 0x5c, 0xa2, 0x3b, 0x84, 0x1f, 0x82, 0x12, 0x3b, 0x04, 0x65, 0x58, + 0xc2, 0x56, 0x7f, 0x7a, 0x3a, 0xc7, 0xe9, 0x99, 0xeb, 0x8a, 0x88, 0xf6, 0x57, 0x22, 0x3f, 0x86, + 0x7c, 0x07, 0x93, 0xb1, 0x63, 0xd5, 0x6c, 0x8b, 0x60, 0x8b, 0x50, 0x93, 0x39, 0x6c, 0x80, 0x1f, + 0x4d, 0x52, 0xc4, 0xd1, 0xc4, 0x17, 0xb0, 0xa3, 0x69, 0x8b, 0x66, 0x2f, 0x46, 0x2d, 0xca, 0x33, + 0x0e, 0x72, 0x8c, 0x81, 0xfc, 0xab, 0x18, 0xe4, 0xef, 0x63, 0xd2, 0xb1, 0xcf, 0x2f, 0x4b, 0x80, + 0xc5, 0x70, 0xf9, 0x4a, 0x2b, 0xf9, 0x39, 0xb5, 0x04, 0x8b, 0x3a, 0x5a, 0xc3, 0x3b, 0x54, 0x73, + 0x91, 0xbc, 0x42, 0x51, 0x37, 0xc1, 0x25, 0x5c, 0xd9, 0x27, 0x59, 0xe1, 0xb0, 0x09, 0x39, 0x43, + 0x37, 0xce, 0x30, 0x62, 0x65, 0xba, 0xcb, 0xab, 0xec, 0x0f, 0x12, 0xc4, 0x19, 0xb3, 0x83, 0x96, + 0xd7, 0xfb, 0xcc, 0x53, 0x73, 0xcc, 0xa9, 0x19, 0xb2, 0xa2, 0x46, 0x5e, 0x62, 0x35, 0x89, 0x02, + 0x40, 0xb1, 0x15, 0x63, 0x19, 0x36, 0x96, 0x87, 0x24, 0xb1, 0x1f, 0x63, 0xab, 0x04, 0x6c, 0xe1, + 0x1a, 0x14, 0x88, 0xa3, 0x5b, 0xae, 0x6e, 0xb0, 0xba, 0xc5, 0xec, 0x97, 0xb2, 0xec, 0xf6, 0x74, + 0x02, 0x05, 0x0f, 0x10, 0xe1, 0x9d, 0x77, 0x60, 0xc9, 0x10, 0x15, 0x9c, 0x48, 0x22, 0xc1, 0xe3, + 0x69, 0xa6, 0xbc, 0xcb, 0x42, 0xdc, 0xb1, 0xcf, 0x05, 0x4c, 0x0a, 0x80, 0x85, 0x9f, 0x12, 0xc4, + 0xf7, 0x66, 0xd5, 0x81, 0xfa, 0x47, 0x09, 0x64, 0x9e, 0xa9, 0x17, 0x00, 0xaf, 0x00, 0xd0, 0x82, + 0xdc, 0x38, 0x63, 0x58, 0x72, 0x86, 0xb7, 0x20, 0x33, 0x2d, 0xb0, 0xe3, 0x11, 0x49, 0x6d, 0x5a, + 0xcf, 0xef, 0x42, 0x61, 0x62, 0x7a, 0xe6, 0x3a, 0xc2, 0x1c, 0x9b, 0x11, 0xbe, 0xe2, 0x39, 0xd7, + 0x2c, 0x2e, 0x49, 0x86, 0xcb, 0x11, 0xac, 0xf8, 0x44, 0xfe, 0xc6, 0xd0, 0x50, 0x18, 0x7e, 0x27, + 0x41, 0xfe, 0x70, 0xbc, 0xc8, 0xf9, 0x02, 0x68, 0x7e, 0x4f, 0xca, 0xb7, 0xa0, 0xe0, 0x09, 0xfa, + 0xad, 0x68, 0xfe, 0x27, 0x09, 0x64, 0x9e, 0xb2, 0x9e, 0x27, 0xf2, 0xbe, 0x3f, 0x0f, 0xf0, 0xc9, + 0xfc, 0xad, 0xe0, 0xf0, 0xb3, 0x18, 0x6c, 0xb0, 0xb4, 0xd9, 0xb0, 0xf6, 0x74, 0x62, 0x9c, 0x3d, + 0x47, 0x2a, 0xa2, 0x67, 0xd8, 0x24, 0xb4, 0xe3, 0xec, 0x73, 0x36, 0x33, 0x25, 0x22, 0x32, 0x53, + 0xf2, 0x99, 0x32, 0x53, 0x2a, 0x32, 0x33, 0xa5, 0x23, 0x33, 0xd3, 0x52, 0x64, 0x66, 0xca, 0x44, + 0x64, 0x26, 0x60, 0xc0, 0x36, 0x41, 0x89, 0xd0, 0xfe, 0x5d, 0x48, 0x31, 0xed, 0xf9, 0x79, 0x18, + 0x2e, 0x3e, 0xe6, 0xa2, 0xa6, 0xfe, 0x56, 0x82, 0x52, 0xc7, 0x3e, 0x0f, 0xcd, 0x09, 0x73, 0xe5, + 0x21, 0x69, 0xba, 0xc8, 0x7e, 0x2c, 0x6e, 0x38, 0x2f, 0x43, 0x12, 0x3b, 0x8e, 0xed, 0x88, 0x5a, + 0x56, 0x09, 0x6c, 0xc1, 0x9b, 0x4d, 0x7e, 0x03, 0xc7, 0x23, 0x8a, 0xf3, 0x79, 0x06, 0x66, 0xb7, + 0x9e, 0x50, 0xf6, 0x4b, 0x32, 0xa3, 0x63, 0xd8, 0x8c, 0x92, 0x5e, 0x48, 0x18, 0x65, 0xf4, 0x1f, + 0x40, 0xc2, 0xb1, 0xcf, 0x5d, 0xd1, 0x37, 0x79, 0x2d, 0xdc, 0x8e, 0x88, 0x64, 0xa4, 0xb6, 0xa0, + 0x18, 0xc5, 0xff, 0x5e, 0x08, 0xd6, 0xd7, 0x17, 0xc2, 0x2a, 0xf8, 0xfd, 0x45, 0x82, 0x8d, 0xe9, + 0x66, 0x0f, 0x1d, 0x33, 0x10, 0xbc, 0x65, 0xd1, 0x52, 0xe3, 0x1d, 0x93, 0x60, 0x78, 0xb5, 0x47, + 0x98, 0xdf, 0x8e, 0xbd, 0xf6, 0xd3, 0xff, 0x39, 0xa7, 0xab, 0xa7, 0xb0, 0xe5, 0x57, 0x2c, 0x2c, + 0x7b, 0x14, 0xe4, 0x6f, 0x07, 0x20, 0xbf, 0x39, 0x07, 0xf2, 0x10, 0x27, 0xf5, 0xa7, 0x70, 0x2d, + 0x72, 0x87, 0xf7, 0x42, 0xa0, 0x97, 0xe7, 0x82, 0x1e, 0x5e, 0x39, 0x9b, 0x8c, 0x78, 0xd7, 0x61, + 0x05, 0x32, 0xa6, 0x8b, 0x74, 0x62, 0x0f, 0x4d, 0x83, 0xf9, 0xe5, 0x92, 0xfa, 0x0b, 0x09, 0x36, + 0xa3, 0x44, 0xfb, 0x7e, 0x5c, 0x5f, 0x35, 0xe1, 0x7a, 0xb4, 0x62, 0x97, 0x38, 0xfa, 0x3b, 0x01, + 0xd4, 0x5f, 0x5f, 0x88, 0xba, 0x70, 0xcd, 0x0e, 0xac, 0x46, 0xef, 0xf1, 0x7e, 0x08, 0xf7, 0x5b, + 0x57, 0xc0, 0x5d, 0xf0, 0xfc, 0x6f, 0x0c, 0x96, 0x69, 0x04, 0x50, 0x2f, 0xbd, 0xcc, 0x51, 0x6e, + 0x41, 0xa6, 0x6f, 0x3a, 0xd8, 0x10, 0xfd, 0x3e, 0xea, 0xfd, 0x41, 0xd7, 0xad, 0x7b, 0xb3, 0xdf, + 0x61, 0xc5, 0x98, 0x87, 0xe4, 0xc0, 0x1c, 0x9a, 0x44, 0xa4, 0xe9, 0x57, 0x60, 0xcb, 0xb4, 0x8c, + 0xc1, 0xd8, 0x35, 0x9f, 0xb0, 0x1b, 0x95, 0x43, 0x90, 0xff, 0xd0, 0x48, 0xb3, 0x98, 0x7b, 0x19, + 0x36, 0xf0, 0x53, 0x8f, 0x88, 0xe6, 0x64, 0x3f, 0xc9, 0x12, 0x23, 0x09, 0xa7, 0xfb, 0x4c, 0x64, + 0xba, 0x87, 0xc8, 0x74, 0x9f, 0x8d, 0x48, 0xf7, 0xb9, 0x60, 0x21, 0x9a, 0x9f, 0x53, 0x88, 0x16, + 0xd8, 0xa9, 0xf0, 0xb5, 0x04, 0xf2, 0xd4, 0x00, 0xcf, 0x7b, 0xdc, 0xe6, 0x26, 0x1e, 0x45, 0x15, + 0x7a, 0x11, 0xd6, 0x58, 0x3a, 0x9e, 0xc5, 0x24, 0x1e, 0x91, 0xae, 0xb9, 0x1f, 0xbf, 0xce, 0x6f, + 0x6c, 0xfc, 0x2e, 0x39, 0xcf, 0x13, 0xa8, 0xc0, 0xfb, 0x90, 0xe2, 0x44, 0xc1, 0x2e, 0xe1, 0xa4, + 0x92, 0xf5, 0x2d, 0x88, 0xb1, 0xb1, 0x55, 0xc8, 0x1b, 0x0e, 0x0e, 0xf4, 0x0d, 0x63, 0xe5, 0xb8, + 0xfa, 0x01, 0x28, 0xfe, 0x0d, 0x85, 0xe6, 0xaf, 0x42, 0x9a, 0xf3, 0xf4, 0x7c, 0xb9, 0x18, 0x71, + 0xd5, 0x55, 0x0f, 0x20, 0x2b, 0x5a, 0x23, 0xf4, 0xa6, 0x4b, 0xef, 0x58, 0xfc, 0xca, 0x3b, 0x91, + 0x63, 0x05, 0x32, 0x23, 0xdd, 0xc1, 0x16, 0x99, 0xa6, 0x92, 0x0d, 0x58, 0x11, 0x43, 0xae, 0x79, + 0x32, 0x30, 0xad, 0x53, 0xaf, 0x8d, 0x97, 0x51, 0xf5, 0x69, 0x6b, 0x21, 0xa8, 0x7f, 0x84, 0x86, + 0xdb, 0x50, 0x0a, 0x3b, 0xdd, 0x64, 0x6f, 0xbe, 0x51, 0x11, 0xb2, 0x7c, 0x84, 0xfb, 0x2a, 0xeb, + 0x92, 0xaa, 0xff, 0x94, 0x60, 0x2d, 0xbc, 0x87, 0x50, 0x39, 0x62, 0x93, 0xc8, 0xce, 0x6e, 0xac, + 0x9c, 0x0c, 0xe1, 0x1b, 0x8f, 0xc6, 0x37, 0xc1, 0xba, 0xde, 0x6f, 0x41, 0xde, 0x6b, 0x2f, 0xf1, + 0x66, 0x43, 0x92, 0x45, 0xed, 0x46, 0x54, 0x83, 0x89, 0x77, 0x1b, 0xca, 0x90, 0x62, 0x82, 0xf3, + 0x9e, 0x41, 0x36, 0xd4, 0x97, 0xf0, 0x03, 0xbe, 0x0a, 0x79, 0xee, 0x60, 0x9e, 0xe6, 0x69, 0x86, + 0xe3, 0xe7, 0xb0, 0x7e, 0x1f, 0x13, 0x46, 0xd2, 0x20, 0xf4, 0x30, 0xb4, 0x9d, 0x4b, 0x90, 0xf4, + 0x5b, 0x2d, 0xe6, 0x59, 0x8d, 0x2a, 0xe0, 0x12, 0x7d, 0x38, 0xe2, 0xb7, 0xe2, 0x69, 0x14, 0x25, + 0x84, 0xf3, 0x95, 0x66, 0x77, 0x10, 0x38, 0xae, 0x41, 0x41, 0xf0, 0x13, 0x33, 0x53, 0x9f, 0xf4, + 0x79, 0x3b, 0x7f, 0x3c, 0xfb, 0x18, 0xd6, 0x28, 0x1f, 0x61, 0x08, 0xc3, 0x76, 0xfa, 0xbe, 0x93, + 0x28, 0x92, 0xcb, 0x24, 0xf7, 0xf0, 0xf7, 0x8b, 0x7f, 0x49, 0x5c, 0xd7, 0x00, 0x07, 0x21, 0x48, + 0x63, 0xd2, 0xb5, 0x71, 0xd8, 0x84, 0xe7, 0xca, 0x77, 0x03, 0x78, 0xce, 0x59, 0xbd, 0xe3, 0x1f, + 0xa4, 0xb7, 0x7a, 0x3f, 0xd0, 0x9e, 0x48, 0x4c, 0x89, 0x4d, 0x03, 0x72, 0x01, 0xe2, 0xdb, 0x90, + 0x15, 0xd9, 0xc5, 0x57, 0xa3, 0x04, 0x1b, 0x06, 0x55, 0x63, 0x52, 0xa0, 0x14, 0x20, 0xc5, 0xc5, + 0x13, 0x49, 0x63, 0x15, 0xf2, 0xb6, 0x63, 0x9e, 0x9a, 0x96, 0x90, 0x5a, 0x5c, 0x62, 0xbf, 0x96, + 0xe0, 0xa5, 0x9a, 0x3d, 0x1c, 0x8d, 0x09, 0xee, 0x8e, 0x06, 0x26, 0x39, 0xb4, 0x4d, 0x8b, 0xb8, + 0x7b, 0x17, 0x5d, 0xf3, 0x2b, 0xbc, 0xe0, 0x4e, 0xcb, 0x1a, 0x50, 0xfc, 0xf9, 0x8d, 0x3f, 0xc4, + 0xbc, 0x04, 0xeb, 0xd3, 0x31, 0xf6, 0x24, 0x82, 0x4c, 0x0b, 0x9d, 0x5c, 0x10, 0xd1, 0x03, 0xa1, + 0x31, 0xca, 0x09, 0x46, 0x74, 0x17, 0x11, 0x40, 0xec, 0xe9, 0x4e, 0xfd, 0x4d, 0x0c, 0xb6, 0xe7, + 0xcb, 0xf1, 0xbc, 0x79, 0xf3, 0x4d, 0x48, 0xb9, 0xec, 0x35, 0xed, 0x6a, 0x8f, 0x75, 0x34, 0xfb, + 0x4f, 0xe5, 0x73, 0xc5, 0x45, 0xa4, 0x05, 0x99, 0x81, 0xcd, 0xbb, 0xb3, 0x5e, 0xff, 0xfc, 0xc3, + 0xd0, 0xb6, 0x97, 0xcb, 0xbd, 0xc3, 0x66, 0x9a, 0x82, 0xc7, 0xe6, 0x5d, 0xc8, 0x07, 0x06, 0x68, + 0xa4, 0x78, 0x1b, 0x08, 0x74, 0x99, 0xf1, 0x46, 0x58, 0xe7, 0xcf, 0x02, 0x8a, 0x7a, 0x04, 0xc5, + 0xa8, 0x27, 0xc2, 0xe0, 0x7b, 0xf0, 0xed, 0xc0, 0x7b, 0xf0, 0x8b, 0xf3, 0x1f, 0x18, 0xa9, 0x7f, + 0xa8, 0xbf, 0x97, 0x20, 0x33, 0x69, 0xf2, 0x85, 0x38, 0x45, 0x5c, 0xcf, 0x32, 0x34, 0x72, 0x22, + 0x5e, 0x32, 0x33, 0xca, 0x3d, 0x58, 0xe1, 0xcd, 0x44, 0xfe, 0x9a, 0x8a, 0x86, 0x76, 0x1f, 0x8b, + 0xce, 0xe7, 0xf5, 0xd9, 0x96, 0x22, 0xef, 0x3e, 0x1c, 0xd8, 0x7d, 0x3c, 0x7d, 0xe0, 0x64, 0x52, + 0x27, 0x23, 0x8a, 0x0e, 0xb6, 0x82, 0x49, 0x4b, 0xbc, 0x67, 0x17, 0x36, 0xe4, 0x39, 0xe6, 0x3a, + 0x2c, 0x0f, 0x75, 0xd3, 0x42, 0x33, 0xde, 0x19, 0x7c, 0x3b, 0x8d, 0x45, 0x94, 0xe2, 0x53, 0xd5, + 0x37, 0xa8, 0xfc, 0xc6, 0x60, 0xdc, 0xc7, 0xe8, 0x44, 0x77, 0x31, 0xea, 0xeb, 0x44, 0x17, 0xb5, + 0xe8, 0xe4, 0xd1, 0x41, 0xec, 0x2a, 0x8a, 0xaa, 0x8f, 0x41, 0xae, 0x3b, 0xf6, 0xe8, 0x6a, 0xa2, + 0x28, 0x9e, 0x28, 0xd3, 0x23, 0x53, 0x2d, 0xc2, 0x8a, 0x8f, 0x81, 0xe0, 0xfa, 0x39, 0xac, 0x57, + 0xfb, 0xfd, 0x80, 0xa1, 0x2e, 0x0b, 0xc0, 0xbb, 0x90, 0x16, 0x65, 0x98, 0xf0, 0xed, 0x85, 0x2f, + 0xca, 0xea, 0x26, 0x94, 0x66, 0x77, 0x10, 0xbb, 0x57, 0x61, 0x93, 0xb7, 0x05, 0xae, 0x2c, 0xc0, + 0x72, 0x50, 0x80, 0x8c, 0x7a, 0x03, 0xb6, 0x22, 0x59, 0x4c, 0x50, 0xbb, 0xde, 0xa5, 0xe7, 0x29, + 0x75, 0xfb, 0x41, 0x6f, 0x5a, 0x2b, 0x2d, 0xe8, 0x1a, 0x4d, 0x1a, 0x26, 0xea, 0x3d, 0xb8, 0x31, + 0x87, 0xc1, 0xf4, 0x84, 0x08, 0xd5, 0x60, 0xbc, 0xb7, 0xbb, 0x0b, 0xa5, 0x9a, 0x3d, 0x1c, 0x9a, + 0x24, 0x62, 0xd7, 0x79, 0x6b, 0xb6, 0x60, 0x23, 0x62, 0x8d, 0x50, 0xe5, 0x2e, 0xac, 0x57, 0x4f, + 0x6c, 0xe7, 0x59, 0xf8, 0x51, 0xec, 0x67, 0x96, 0x08, 0x76, 0x4f, 0xe0, 0x9a, 0x3f, 0x85, 0xb8, + 0x97, 0x94, 0x67, 0xca, 0x8f, 0x60, 0xcb, 0xc5, 0xba, 0x63, 0x9c, 0x21, 0xee, 0x55, 0xfc, 0x15, + 0xc0, 0xf7, 0x8e, 0x23, 0xcd, 0xdc, 0xad, 0xbb, 0x8c, 0x9e, 0x39, 0x1b, 0xe7, 0x2f, 0x9e, 0x2b, + 0xd4, 0x1d, 0x28, 0xcd, 0x9b, 0x0b, 0xb9, 0x2d, 0x2f, 0x0d, 0x7f, 0x08, 0xab, 0x21, 0x39, 0xa7, + 0x97, 0x20, 0x17, 0xbb, 0xee, 0x44, 0x61, 0x5a, 0x84, 0xd2, 0x32, 0x89, 0xcb, 0x26, 0x4e, 0x08, + 0x9a, 0xe5, 0x8f, 0x60, 0xb9, 0x7b, 0xd4, 0x3c, 0x1a, 0x63, 0xe7, 0xc2, 0x53, 0x32, 0x0f, 0xc9, + 0x2f, 0xe9, 0xb7, 0xb0, 0xf8, 0x1d, 0x48, 0x8b, 0x5b, 0x81, 0x78, 0xac, 0x0d, 0xe6, 0xb1, 0xee, + 0x51, 0xf3, 0x50, 0xbf, 0x18, 0xd8, 0x7a, 0xff, 0x53, 0x4e, 0xa5, 0xfe, 0x59, 0x82, 0x55, 0x76, + 0x05, 0x9a, 0x49, 0xfe, 0x51, 0xf0, 0xf9, 0x4f, 0x90, 0xd8, 0x55, 0x2e, 0x83, 0x73, 0x5e, 0x0d, + 0xe3, 0x57, 0x7b, 0x35, 0xdc, 0x04, 0xc5, 0x74, 0x59, 0xd5, 0xe6, 0x62, 0xc7, 0xc4, 0xae, 0xf7, + 0x5f, 0x0e, 0x9a, 0x5c, 0xfe, 0x20, 0xc1, 0x1a, 0x87, 0xff, 0x4a, 0x92, 0x87, 0xf3, 0x48, 0x58, + 0x9b, 0xf8, 0x37, 0xd0, 0x26, 0x71, 0x25, 0x6d, 0xd4, 0x7f, 0x4b, 0x20, 0x4f, 0xcd, 0x27, 0x6c, + 0xff, 0xf6, 0x44, 0x06, 0xaf, 0x0e, 0x52, 0x67, 0xaf, 0xa7, 0x97, 0x5c, 0x68, 0xa8, 0xaf, 0xf8, + 0x8c, 0x1e, 0xbf, 0x8a, 0xd1, 0x95, 0x37, 0xc4, 0x51, 0x97, 0x88, 0xf8, 0x37, 0x53, 0xf7, 0xa8, + 0x49, 0x0b, 0x5e, 0x3c, 0xc4, 0x16, 0x61, 0x95, 0xd0, 0x47, 0xb0, 0x2c, 0x42, 0x66, 0x22, 0x68, + 0x92, 0x09, 0xfa, 0x4a, 0x44, 0x98, 0x84, 0x25, 0xad, 0xbc, 0x03, 0x85, 0xd0, 0x9f, 0xa9, 0xb2, + 0x90, 0x6e, 0xb4, 0x7a, 0xda, 0x7d, 0xad, 0x23, 0x4b, 0x0a, 0x40, 0xaa, 0xdb, 0xeb, 0x34, 0x5a, + 0xf7, 0xe5, 0x18, 0xfd, 0xbd, 0xd7, 0x68, 0x55, 0x3b, 0x8f, 0xe4, 0x78, 0xe5, 0xa6, 0xff, 0xef, + 0x5b, 0x3c, 0xa8, 0x14, 0x05, 0x0a, 0xd5, 0xe3, 0x5e, 0x1b, 0x35, 0x5a, 0xb5, 0x8e, 0x76, 0xa0, + 0xb5, 0x7a, 0xb2, 0x54, 0xd9, 0x81, 0xe5, 0xf0, 0x3f, 0x9b, 0x96, 0x20, 0xd1, 0x6a, 0xb7, 0x34, + 0x59, 0xa2, 0xbf, 0x6a, 0x5a, 0xb3, 0x29, 0xc7, 0x94, 0x34, 0xc4, 0x3b, 0xed, 0x87, 0x72, 0xbc, + 0x72, 0x04, 0x59, 0xff, 0x0b, 0x22, 0x40, 0xaa, 0x5a, 0xeb, 0x35, 0x3e, 0xa5, 0xd4, 0x39, 0x58, + 0x6a, 0xb4, 0xc4, 0x57, 0x8c, 0x4a, 0xd9, 0x6c, 0x57, 0xeb, 0x54, 0x32, 0x5a, 0x66, 0x67, 0x8e, + 0x5b, 0xde, 0x67, 0x82, 0x52, 0x1e, 0x1f, 0xd6, 0xab, 0x3d, 0xfa, 0x95, 0xac, 0x1c, 0xc0, 0xfa, + 0xbc, 0x7f, 0x03, 0x01, 0xa4, 0x1a, 0xf7, 0x5b, 0xed, 0x8e, 0x26, 0xbf, 0xa0, 0xc8, 0x90, 0xd3, + 0x3e, 0x3b, 0xd4, 0x6a, 0x3d, 0xa4, 0x7d, 0xd6, 0xe8, 0xf6, 0x64, 0x49, 0xb9, 0x06, 0xb2, 0x18, + 0x69, 0xb5, 0xbd, 0xd1, 0x58, 0xe5, 0x0e, 0xfb, 0x37, 0x86, 0x07, 0x56, 0x11, 0x96, 0xbb, 0x5d, + 0x0d, 0x3d, 0x38, 0xe8, 0xa2, 0xae, 0xd6, 0xf9, 0xb4, 0x51, 0x13, 0x92, 0xd2, 0xc1, 0xbd, 0x47, + 0xed, 0x07, 0x72, 0xac, 0xf2, 0x3e, 0x80, 0xef, 0xa1, 0x2b, 0x0b, 0xe9, 0x0e, 0x65, 0xd8, 0xa2, + 0x7b, 0x66, 0x20, 0xd9, 0xe9, 0xa1, 0xc3, 0x07, 0xb2, 0x44, 0x19, 0x75, 0x7a, 0xa8, 0xba, 0xdf, + 0xd3, 0x3a, 0xe8, 0xa0, 0x5d, 0x6f, 0xec, 0x3f, 0x92, 0x63, 0x95, 0xb7, 0x20, 0x1f, 0x6c, 0xcb, + 0xa5, 0x21, 0x7e, 0x78, 0xdc, 0xe3, 0x76, 0x61, 0x2a, 0x6a, 0xdc, 0x2e, 0x75, 0xad, 0xa9, 0xf5, + 0x34, 0x66, 0x97, 0xcc, 0xb4, 0x95, 0x91, 0x85, 0xf4, 0x7e, 0xbb, 0xf3, 0xb0, 0xda, 0xa9, 0xcb, + 0x2f, 0x50, 0xa1, 0xf6, 0xaa, 0xb5, 0x07, 0xec, 0x4b, 0xaa, 0xbc, 0xeb, 0x15, 0xdf, 0x02, 0x68, + 0xaa, 0x47, 0xaf, 0xa3, 0x55, 0x0f, 0x90, 0xd6, 0xaa, 0xee, 0x35, 0x29, 0x72, 0x92, 0xb2, 0x02, + 0x79, 0x31, 0xe8, 0xc1, 0x4e, 0x95, 0xf1, 0x15, 0xe1, 0x59, 0x48, 0x1f, 0x1e, 0xf7, 0x10, 0x35, + 0x9d, 0xa4, 0x14, 0x00, 0xb8, 0x48, 0xec, 0x3b, 0x46, 0xbf, 0xb9, 0x58, 0x88, 0x9b, 0xd6, 0x80, + 0x95, 0x99, 0x32, 0x4d, 0x59, 0x86, 0x6c, 0xbd, 0xd6, 0x43, 0x53, 0x87, 0xa3, 0xab, 0x6a, 0x3d, + 0x54, 0x6f, 0x1f, 0xef, 0x35, 0xa9, 0x72, 0x82, 0x60, 0xaf, 0xdd, 0x6e, 0x6a, 0xd5, 0x96, 0x1c, + 0xf7, 0x08, 0x84, 0x57, 0x32, 0x63, 0x33, 0x82, 0x66, 0x7b, 0x4f, 0x4e, 0x57, 0x3e, 0x80, 0xe5, + 0x70, 0x1d, 0x56, 0x84, 0xe5, 0xc6, 0xf1, 0x01, 0xaa, 0x76, 0x1f, 0xb5, 0x6a, 0xa8, 0xd1, 0xaa, + 0x6b, 0x9f, 0xc9, 0x2f, 0x50, 0x5f, 0xa5, 0x83, 0xbe, 0x31, 0xa9, 0xf2, 0xb6, 0xa8, 0x18, 0x3d, + 0xc3, 0x36, 0x7a, 0xe8, 0x7e, 0xb3, 0xbd, 0x57, 0x6d, 0x06, 0x56, 0xf5, 0x50, 0xb3, 0x5d, 0x9b, + 0x8c, 0x49, 0x95, 0x8f, 0x61, 0x65, 0x36, 0x80, 0xaf, 0xb1, 0x4c, 0x82, 0x0e, 0x9b, 0xd5, 0x46, + 0x0b, 0xed, 0x1d, 0xef, 0xef, 0x33, 0xdd, 0xc4, 0xe8, 0x7e, 0xb3, 0xda, 0x13, 0x83, 0x5d, 0x39, + 0x56, 0xf9, 0x25, 0x4f, 0x3b, 0xc1, 0xa0, 0x2e, 0x00, 0x50, 0xd2, 0xae, 0xd6, 0xd4, 0x6a, 0xbd, + 0xe9, 0xd2, 0x5a, 0x47, 0xa3, 0x00, 0xf7, 0xaa, 0x1c, 0x1c, 0x05, 0x0a, 0x8c, 0xea, 0x93, 0xf6, + 0x43, 0x31, 0x16, 0x57, 0xd6, 0x40, 0xa1, 0x63, 0x75, 0xad, 0x5b, 0xeb, 0x34, 0xf6, 0x3c, 0xda, + 0x84, 0x47, 0x5b, 0xef, 0xb4, 0x0f, 0xc5, 0x58, 0x92, 0x59, 0xfd, 0xa8, 0x89, 0xaa, 0x4d, 0xea, + 0x75, 0x7c, 0x30, 0xf5, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x82, 0xb6, 0xcf, 0xab, 0xe2, 0x29, + 0x00, 0x00, } diff --git a/tablestore/otsprotocol/table_store.proto b/tablestore/otsprotocol/table_store.proto index c46bdf8..6448e6e 100644 --- a/tablestore/otsprotocol/table_store.proto +++ b/tablestore/otsprotocol/table_store.proto @@ -109,6 +109,25 @@ message StreamDetails { repeated string columns_to_get = 5; } +enum SSEKeyType { + SSE_KMS_SERVICE = 1; + SSE_BYOK = 2; +} + +message SSESpecification { + required bool enable = 1; + optional SSEKeyType key_type = 2; + optional bytes key_id = 3; // only useful when key_type is SSE_BYOK + optional bytes role_arn = 4; // only useful when key_type is SSE_BYOK +} + +message SSEDetails { + required bool enable = 1; + optional SSEKeyType key_type = 2; + optional bytes key_id = 3; + optional bytes role_arn = 4; // only useful when key_type is SSE_BYOK +} + /* ############################################# CreateTable ############################################# */ /** * table_meta用于存储表中不可更改的schema属性,可以更改的ReservedThroughput和TableOptions独立出来,作为UpdateTable的参数。 @@ -127,6 +146,7 @@ message CreateTableRequest { optional TableOptions table_options = 3; repeated PartitionRange partitions = 4; optional StreamSpecification stream_spec = 5; + optional SSESpecification sse_spec = 6; repeated IndexMeta index_metas = 7; } @@ -163,6 +183,7 @@ message DescribeTableResponse { required TableStatus table_status = 4; optional StreamDetails stream_details = 5; repeated bytes shard_splits = 6; + optional SSEDetails sse_details = 7; repeated IndexMeta index_metas = 8; } /* ########################################################################################################### */ diff --git a/tablestore/sse_specification.go b/tablestore/sse_specification.go new file mode 100644 index 0000000..6c7a481 --- /dev/null +++ b/tablestore/sse_specification.go @@ -0,0 +1,101 @@ +package tablestore + +import "errors" + +// 表示服务器端加密的秘钥类型 +type SSEKeyType int + +func (t *SSEKeyType) String() string { + switch *t { + case SSE_KMS_SERVICE: + return "SSE_KMS_SERVICE" + case SSE_BYOK: + return "SSE_BYOK" + default: + return "" + } +} + +const ( + // 使用KMS的服务主密钥 + SSE_KMS_SERVICE SSEKeyType = iota + + // 使用KMS的用户主密钥,支持用户自定义秘钥上传 + SSE_BYOK +) + +type SSESpecification struct { + // 是否开启服务器端加密 + Enable bool + + // 当开启服务器端加密时,该参数用于设置秘钥类型 + KeyType *SSEKeyType + + // 当开启服务器端加密且秘钥类型为BYOK时,该参数用于指定KMS用户主密钥的id + KeyId *string + + // 当开启服务器端加密且秘钥类型为BYOK时,需要通过STS服务授权表格存储获取临时访问令牌访问传入的KMS用户主密钥, + // 该参数用于指定为此创建的RAM角色的全局资源描述符 + RoleArn *string +} + +func (sse *SSESpecification) CheckArguments() error { + if sse == nil { + return errors.New("SSESpecification is nil") + } + if sse.Enable { + if sse.KeyType == nil { + return errors.New("key type is required when enable is true") + } else { + if *sse.KeyType != SSE_BYOK { + if sse.KeyId != nil || sse.RoleArn != nil { + return errors.New("key id and role arn cannot be set when key type is not SSE_BYOK") + } + } + + if *sse.KeyType != SSE_KMS_SERVICE { + if sse.KeyId == nil || sse.RoleArn == nil { + return errors.New("key id and role arn are required when key type is not SSE_KMS_SERVICE") + } + } + } + } else { + if sse.KeyType != nil { + return errors.New("key type cannot be set when enable is false") + } + } + + return nil +} + +func (sse *SSESpecification) SetEnable(enable bool) { + sse.Enable = enable +} + +func (sse *SSESpecification) SetKeyType(keyType SSEKeyType) { + sse.KeyType = &keyType +} + +func (sse *SSESpecification) SetKeyId(keyId string) { + sse.KeyId = &keyId +} + +func (sse *SSESpecification) SetRoleArn(roleArn string) { + sse.RoleArn = &roleArn +} + +type SSEDetails struct { + // 是否开启服务器端加密 + Enable bool + + // 秘钥类型, 开启服务器端加密时有效 + KeyType SSEKeyType + + // 主密钥在KMS中的id, 可以根据keyId在KMS系统中对秘钥的使用情况进行审计 + // 开启服务器端加密时有效 + KeyId string + + // 授权表格存储临时访问KMS用户主密钥的全局资源描述符 + // 开启服务器端加密且秘钥类型为SSE_BYOK时有效 + RoleArn string +} diff --git a/tablestore/sse_specification_test.go b/tablestore/sse_specification_test.go new file mode 100644 index 0000000..501ff59 --- /dev/null +++ b/tablestore/sse_specification_test.go @@ -0,0 +1,99 @@ +package tablestore + +import ( + . "gopkg.in/check.v1" +) + +type SseSpecificationSuite struct{} + +var _ = Suite(&SseSpecificationSuite{}) + +func (s *SseSpecificationSuite) TestCheckValidArguments(c *C) { + { + sse := new(SSESpecification) + sse.SetEnable(false) + c.Assert(sse.CheckArguments(), IsNil) + } + { + sse := new(SSESpecification) + sse.SetEnable(true) + sse.SetKeyType(SSE_KMS_SERVICE) + c.Assert(sse.CheckArguments(), IsNil) + } + { + sse := new(SSESpecification) + sse.SetEnable(true) + sse.SetKeyType(SSE_BYOK) + sse.SetKeyId("test-key-id") + sse.SetRoleArn("test-role-arn") + c.Assert(sse.CheckArguments(), IsNil) + } +} + +func (s *SseSpecificationSuite) TestCheckInvalidArguments(c *C) { + { + var sse *SSESpecification + err := sse.CheckArguments() + c.Assert(err, NotNil) + c.Assert(err.Error(), Equals, "SSESpecification is nil") + } + { + sse := new(SSESpecification) + sse.SetEnable(false) + sse.SetKeyType(SSE_KMS_SERVICE) + err := sse.CheckArguments() + c.Assert(err, NotNil) + c.Assert(err.Error(), Equals, "key type cannot be set when enable is false") + } + { + sse := new(SSESpecification) + sse.SetEnable(true) + err := sse.CheckArguments() + c.Assert(err, NotNil) + c.Assert(err.Error(), Equals, "key type is required when enable is true") + } + { + sse := new(SSESpecification) + sse.SetEnable(true) + sse.SetKeyType(SSE_KMS_SERVICE) + sse.SetKeyId("test-key-id") + err := sse.CheckArguments() + c.Assert(err, NotNil) + c.Assert(err.Error(), Equals, "key id and role arn cannot be set when key type is not SSE_BYOK") + } + { + sse := new(SSESpecification) + sse.SetEnable(true) + sse.SetKeyType(SSE_KMS_SERVICE) + sse.SetRoleArn("test-role-arn") + err := sse.CheckArguments() + c.Assert(err, NotNil) + c.Assert(err.Error(), Equals, "key id and role arn cannot be set when key type is not SSE_BYOK") + } + { + sse := new(SSESpecification) + sse.SetEnable(true) + sse.SetKeyType(SSE_BYOK) + err := sse.CheckArguments() + c.Assert(err, NotNil) + c.Assert(err.Error(), Equals, "key id and role arn are required when key type is not SSE_KMS_SERVICE") + } + { + sse := new(SSESpecification) + sse.SetEnable(true) + sse.SetKeyType(SSE_BYOK) + sse.SetKeyId("test-key-id") + err := sse.CheckArguments() + c.Assert(err, NotNil) + c.Assert(err.Error(), Equals, "key id and role arn are required when key type is not SSE_KMS_SERVICE") + } + { + sse := new(SSESpecification) + sse.SetEnable(true) + sse.SetKeyType(SSE_BYOK) + sse.SetRoleArn("test-role-arn") + err := sse.CheckArguments() + c.Assert(err, NotNil) + c.Assert(err.Error(), Equals, "key id and role arn are required when key type is not SSE_KMS_SERVICE") + } +}