enhance: define snapshot-owned clustering contracts

Signed-off-by: xianliang.li <xianliang.li@zilliz.com>
This commit is contained in:
xianliang.li committed 2026-10-14 17:14:02 +08:00
1 parent 4f99c09bd1
commit a537f3a8aa
21 files changed
+6924 -5274

No files matched your search

+7 -1
View File
@@ -965,7 +965,8 @@ dataCoord:
newDataSizeThreshold: 512m # If new data size is large than newDataSizeThreshold, execute clustering compaction
preferSegmentSizeRatio: 0.8
maxSegmentSizeRatio: 1
maxTrainSizeRatio: 0.8 # max data size ratio in Kmeans train, if larger than it, will down sampling to meet this limit
maxTrainSizeRatio: 0.8 # Fraction of worker memory used to budget KMeans training data; sample when the input exceeds this budget.
chunkSizePerCentroid: 8MB # Positive target raw vector bytes per centroid, not a hard chunk size limit.
maxCentroidsNum: 10240 # maximum centroids number in Kmeans train
minCentroidsNum: 16 # minimum centroids number in Kmeans train
minClusterSizeRatio: 0.01 # minimum cluster size / avg size in Kmeans train
@@ -1787,6 +1788,11 @@ streaming:
# Any configuration related to the knowhere vector search engine
knowhere:
enable: true # When enable this configuration, the index parameters defined following will be automatically populated as index parameters, without requiring user input.
cluster:
type: KMEANS # Knowhere clustering implementation name.
analyze: # Provider parameters; coordinator-owned shape and sampling fields take precedence.
compactionPlan:
planner: ivf
AISAQ:
build:
max_degree: 56 # Maximum degree of the Vamana graph
+21 -13
View File
@@ -21,11 +21,15 @@ import (
"strconv"
"github.com/milvus-io/milvus/internal/json"
"github.com/milvus-io/milvus/pkg/v3/proto/clusteringpb"
"github.com/milvus-io/milvus/pkg/v3/util/merr"
)
type SegmentStats struct {
FieldStats []FieldStats `json:"fieldStats"`
NumRows int
// Ranges map the enclosing snapshot's clustering field entries to physical rows.
ClusteringRanges []*clusteringpb.ClusteringRange `json:"clusteringRanges,omitempty"`
}
func NewSegmentStats(fieldStats []FieldStats, rows int) *SegmentStats {
@@ -36,8 +40,9 @@ func NewSegmentStats(fieldStats []FieldStats, rows int) *SegmentStats {
}
type PartitionStatsSnapshot struct {
SegmentStats map[UniqueID]SegmentStats `json:"segmentStats"`
Version int64
SegmentStats map[UniqueID]SegmentStats `json:"segmentStats"`
Version int64
ClusteringStats *clusteringpb.PartitionClusteringStats `json:"clusteringStats,omitempty"`
}
func NewPartitionStatsSnapshot() *PartitionStatsSnapshot {
@@ -62,26 +67,29 @@ func (ps *PartitionStatsSnapshot) UpdateSegmentStats(segmentID UniqueID, segment
}
func DeserializePartitionsStatsSnapshot(data []byte) (*PartitionStatsSnapshot, error) {
var messageMap map[string]*json.RawMessage
err := json.Unmarshal(data, &messageMap)
if err != nil {
return nil, err
partitionStats := &PartitionStatsSnapshot{}
if err := json.Unmarshal(data, partitionStats); err != nil {
return nil, wrapPartitionStatsDecodeError(err, "deserialize partition stats snapshot")
}
partitionStats := &PartitionStatsSnapshot{
SegmentStats: make(map[UniqueID]SegmentStats),
}
err = json.Unmarshal(*messageMap["segmentStats"], &partitionStats.SegmentStats)
if err != nil {
if err := partitionStats.ValidateClusteringStats(); err != nil {
return nil, err
}
return partitionStats, nil
}
func SerializePartitionStatsSnapshot(partStats *PartitionStatsSnapshot) ([]byte, error) {
if partStats == nil {
return nil, merr.WrapErrServiceInternalMsg("nil partition stats snapshot")
}
if err := partStats.ValidateClusteringStats(); err != nil {
return nil, err
}
partData, err := json.Marshal(partStats)
if err != nil {
return nil, err
if merr.IsMilvusError(err) {
return nil, merr.Wrap(err, "serialize partition stats snapshot")
}
return nil, merr.WrapErrSerializationFailed(err, "serialize partition stats snapshot")
}
return partData, nil
}
@@ -0,0 +1,282 @@
// Licensed to the LF AI & Data foundation under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package storage
import (
"bytes"
"strings"
"google.golang.org/protobuf/encoding/protojson"
"github.com/milvus-io/milvus-proto/go-api/v3/schemapb"
"github.com/milvus-io/milvus/internal/json"
"github.com/milvus-io/milvus/pkg/v3/common"
"github.com/milvus-io/milvus/pkg/v3/proto/clusteringpb"
"github.com/milvus-io/milvus/pkg/v3/util/merr"
"github.com/milvus-io/milvus/pkg/v3/util/typeutil"
)
const PartitionClusteringStatsFormatVersion uint32 = 1
// JSON can return a typed error from a nested FieldStats or range decoder.
// Preserve that classification rather than replacing it with a parse error.
func wrapPartitionStatsDecodeError(err error, context string) error {
if merr.IsMilvusError(err) {
return merr.Wrap(err, context)
}
return merr.WrapErrDataIntegrity(err, "%s", context)
}
// The existing JSON envelope stays unchanged. New protobuf values use protojson
// so int64 range offsets, counts and group segment IDs survive a round trip.
type partitionStatsJSON struct {
SegmentStats map[UniqueID]SegmentStats `json:"segmentStats"`
Version int64
ClusteringStats json.RawMessage `json:"clusteringStats,omitempty"`
}
func (ps PartitionStatsSnapshot) MarshalJSON() ([]byte, error) {
wire := partitionStatsJSON{SegmentStats: ps.SegmentStats, Version: ps.Version}
if ps.ClusteringStats != nil {
encoded, err := protojson.Marshal(ps.ClusteringStats)
if err != nil {
return nil, merr.WrapErrSerializationFailed(err, "encode partition clustering stats")
}
wire.ClusteringStats = encoded
}
return json.Marshal(wire)
}
func (ps *PartitionStatsSnapshot) UnmarshalJSON(data []byte) error {
var wire partitionStatsJSON
if err := json.Unmarshal(data, &wire); err != nil {
return wrapPartitionStatsDecodeError(err, "decode partition stats snapshot")
}
// A missing segmentStats field used to dereference a nil RawMessage. Reject
// it explicitly, but preserve legacy snapshots with a null segment map.
var fields map[string]json.RawMessage
if err := json.Unmarshal(data, &fields); err != nil {
return merr.WrapErrDataIntegrity(err, "decode partition stats fields")
}
if _, ok := fields["segmentStats"]; !ok {
return merr.WrapErrDataIntegrityMsg("partition stats snapshot has no segmentStats")
}
next := PartitionStatsSnapshot{SegmentStats: wire.SegmentStats, Version: wire.Version}
if len(wire.ClusteringStats) != 0 && !bytes.Equal(bytes.TrimSpace(wire.ClusteringStats), []byte("null")) {
next.ClusteringStats = &clusteringpb.PartitionClusteringStats{}
if err := protojson.Unmarshal(wire.ClusteringStats, next.ClusteringStats); err != nil {
return merr.WrapErrDataIntegrity(err, "decode partition clustering stats")
}
}
*ps = next
return nil
}
type segmentStatsJSON struct {
FieldStats []FieldStats `json:"fieldStats"`
NumRows int
ClusteringRanges []json.RawMessage `json:"clusteringRanges,omitempty"`
}
func (stats SegmentStats) MarshalJSON() ([]byte, error) {
wire := segmentStatsJSON{FieldStats: stats.FieldStats, NumRows: stats.NumRows}
for _, entry := range stats.ClusteringRanges {
if entry == nil {
return nil, merr.WrapErrDataIntegrityMsg("nil clustering range")
}
encoded, err := protojson.Marshal(entry)
if err != nil {
return nil, merr.WrapErrSerializationFailed(err, "encode clustering range")
}
wire.ClusteringRanges = append(wire.ClusteringRanges, encoded)
}
return json.Marshal(wire)
}
func (stats *SegmentStats) UnmarshalJSON(data []byte) error {
var wire segmentStatsJSON
if err := json.Unmarshal(data, &wire); err != nil {
return wrapPartitionStatsDecodeError(err, "decode segment stats")
}
next := SegmentStats{FieldStats: wire.FieldStats, NumRows: wire.NumRows}
for _, encoded := range wire.ClusteringRanges {
if bytes.Equal(bytes.TrimSpace(encoded), []byte("null")) {
return merr.WrapErrDataIntegrityMsg("null clustering range")
}
entry := &clusteringpb.ClusteringRange{}
if err := protojson.Unmarshal(encoded, entry); err != nil {
return merr.WrapErrDataIntegrity(err, "decode clustering range")
}
next.ClusteringRanges = append(next.ClusteringRanges, entry)
}
*stats = next
return nil
}
// ValidateClusteringStats checks metadata without loading cluster/index files.
// Readers must validate typed cluster descriptions and matching index labels.
// A valid layout must still be bound to its matching segment view before pruning.
// Selection and publication must separately enforce complete group replacement
// against the pinned base; this validator only checks one snapshot's structure.
func (ps *PartitionStatsSnapshot) ValidateClusteringStats() error {
if ps == nil {
return merr.WrapErrDataIntegrityMsg("nil partition stats snapshot")
}
clustering := ps.ClusteringStats
if clustering == nil {
for _, stats := range ps.SegmentStats {
if len(stats.ClusteringRanges) != 0 {
return merr.WrapErrDataIntegrityMsg("clustering ranges have no enclosing cluster table")
}
}
return nil
}
if clustering.FormatVersion != PartitionClusteringStatsFormatVersion {
return merr.Wrapf(merr.ErrServiceUnimplemented, "unsupported partition clustering stats format %d", clustering.FormatVersion)
}
if ps.Version <= 0 || clustering.FieldId <= 0 {
return merr.WrapErrDataIntegrityMsg("invalid clustering snapshot version or field")
}
if err := validateClusteringField(clustering); err != nil {
return err
}
if (clustering.NumClusters == 0) != (clustering.ClustersFile == "") {
return merr.WrapErrDataIntegrityMsg("cluster count and file reference disagree")
}
if err := validateClusteringIndex(clustering); err != nil {
return err
}
segmentGroups := make(map[UniqueID]int)
for groupOffset, group := range clustering.Groups {
if group == nil || len(group.SegmentIds) == 0 {
return merr.WrapErrDataIntegrityMsg("empty clustering group %d", groupOffset)
}
for _, segmentID := range group.SegmentIds {
if _, exists := ps.SegmentStats[segmentID]; !exists {
return merr.WrapErrDataIntegrityMsg("clustering group %d references unknown segment %d", groupOffset, segmentID)
}
if _, exists := segmentGroups[segmentID]; exists {
return merr.WrapErrDataIntegrityMsg("duplicate clustering group membership for segment %d", segmentID)
}
segmentGroups[segmentID] = groupOffset
}
}
if len(segmentGroups) != len(ps.SegmentStats) {
return merr.WrapErrDataIntegrityMsg("clustering groups do not cover every segment")
}
// Allocate only for offsets actually present in the decoded ranges, not an
// untrusted count from metadata that could otherwise allocate gigabytes.
// A cluster's group is derived from its ranges' segment ownership, so no
// second membership list needs to be persisted or kept in sync.
clusterGroups := make(map[uint32]int)
for segmentID, stats := range ps.SegmentStats {
if segmentID <= 0 || stats.NumRows <= 0 {
return merr.WrapErrDataIntegrityMsg("invalid covered segment %d or row count", segmentID)
}
seen := make(map[uint32]struct{}, len(stats.ClusteringRanges))
var end int64
for _, entry := range stats.ClusteringRanges {
if entry == nil || entry.ClusterOffset >= clustering.NumClusters {
return merr.WrapErrDataIntegrityMsg("invalid cluster offset in segment %d", segmentID)
}
if _, exists := seen[entry.ClusterOffset]; exists {
return merr.WrapErrDataIntegrityMsg("non-contiguous cluster in segment %d", segmentID)
}
// Subtraction avoids overflow in row_offset + row_count.
if entry.RowOffset != end || entry.RowCount <= 0 || entry.RowCount > int64(stats.NumRows)-end {
return merr.WrapErrDataIntegrityMsg("clustering ranges overlap, have a gap or exceed segment %d", segmentID)
}
end += entry.RowCount
seen[entry.ClusterOffset] = struct{}{}
groupOffset := segmentGroups[segmentID]
if previous, exists := clusterGroups[entry.ClusterOffset]; exists && previous != groupOffset {
return merr.WrapErrDataIntegrityMsg("cluster %d spans clustering groups %d and %d", entry.ClusterOffset, previous, groupOffset)
}
clusterGroups[entry.ClusterOffset] = groupOffset
}
if end != int64(stats.NumRows) {
return merr.WrapErrDataIntegrityMsg("clustering ranges do not cover segment %d", segmentID)
}
}
if uint64(len(clusterGroups)) != uint64(clustering.NumClusters) {
return merr.WrapErrDataIntegrityMsg("cluster count does not match referenced offsets")
}
return nil
}
// Keep type admission separate from the common index and physical-range rules.
// Scalar mapping must supply its typed cluster descriptions and sorted ranges
// before scalar snapshots can be admitted. Existing scalar FieldStats are
// unaffected. Half-precision vector admission belongs to PR5.
func validateClusteringField(clustering *clusteringpb.PartitionClusteringStats) error {
switch clustering.DataType {
case schemapb.DataType_FloatVector:
if clustering.Dim <= 0 {
return merr.WrapErrDataIntegrityMsg("invalid clustering vector dimension")
}
return nil
default:
return merr.Wrapf(merr.ErrServiceUnimplemented, "unsupported clustering stats field type %s", clustering.DataType)
}
}
func validateClusteringIndex(clustering *clusteringpb.PartitionClusteringStats) error {
index := clustering.ClusteringIndex
if clustering.NumClusters == 0 {
if index != nil {
return merr.WrapErrDataIntegrityMsg("empty cluster table has an index")
}
return nil
}
if index == nil {
return merr.WrapErrDataIntegrityMsg("nonempty cluster table has no index")
}
if index.IndexEngineVersion <= 0 || index.IndexSize <= 0 {
return merr.WrapErrDataIntegrityMsg("invalid clustering index engine version or size")
}
params := make(map[string]string, len(index.IndexParams))
for _, param := range index.IndexParams {
if param == nil || strings.TrimSpace(param.Key) == "" {
return merr.WrapErrDataIntegrityMsg("invalid clustering index parameter")
}
if _, exists := params[param.Key]; exists {
return merr.WrapErrDataIntegrityMsg("duplicate clustering index parameter %s", param.Key)
}
params[param.Key] = param.Value
}
if strings.TrimSpace(params[common.IndexTypeKey]) == "" {
return merr.WrapErrDataIntegrityMsg("clustering index requires index_type")
}
if typeutil.IsVectorType(clustering.DataType) && strings.TrimSpace(params[common.MetricTypeKey]) == "" {
return merr.WrapErrDataIntegrityMsg("vector clustering index requires metric_type")
}
if len(index.IndexFilePaths) == 0 {
return merr.WrapErrDataIntegrityMsg("clustering index has no files")
}
files := make(map[string]struct{}, len(index.IndexFilePaths))
for _, file := range index.IndexFilePaths {
// Complete object keys are opaque; do not normalize or prepend a root.
if file == "" || file == clustering.ClustersFile {
return merr.WrapErrDataIntegrityMsg("invalid clustering index file reference")
}
if _, exists := files[file]; exists {
return merr.WrapErrDataIntegrityMsg("duplicate clustering index file reference")
}
files[file] = struct{}{}
}
return nil
}
@@ -0,0 +1,390 @@
// Licensed to the LF AI & Data foundation under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package storage
import (
"math"
"testing"
"github.com/stretchr/testify/require"
"google.golang.org/protobuf/proto"
"github.com/milvus-io/milvus-proto/go-api/v3/commonpb"
"github.com/milvus-io/milvus-proto/go-api/v3/schemapb"
"github.com/milvus-io/milvus/internal/json"
"github.com/milvus-io/milvus/pkg/v3/proto/clusteringpb"
"github.com/milvus-io/milvus/pkg/v3/util/merr"
)
func clusteringSnapshotFixture() *PartitionStatsSnapshot {
return &PartitionStatsSnapshot{
Version: 9007199254740993,
ClusteringStats: &clusteringpb.PartitionClusteringStats{
FormatVersion: PartitionClusteringStatsFormatVersion, FieldId: 100,
DataType: schemapb.DataType_FloatVector, Dim: 2,
NumClusters: 2, ClustersFile: "files/part_stats/1/2/channel/9007199254740993.clusters",
Groups: []*clusteringpb.ClusteringGroup{{SegmentIds: []int64{10, 20}}},
ClusteringIndex: &clusteringpb.ClusteringIndexInfo{
IndexParams: []*commonpb.KeyValuePair{
{Key: "index_type", Value: "HNSW"},
{Key: "metric_type", Value: "L2"},
{Key: "M", Value: "16"},
},
IndexFilePaths: []string{"files/part_stats/1/2/channel/9007199254740993.clustering_index/HNSW"},
IndexEngineVersion: 9,
IndexSize: 4096,
},
},
SegmentStats: map[int64]SegmentStats{
10: {NumRows: 5, ClusteringRanges: []*clusteringpb.ClusteringRange{
{ClusterOffset: 0, RowOffset: 0, RowCount: 2},
{ClusterOffset: 1, RowOffset: 2, RowCount: 3},
}},
20: {NumRows: 1, ClusteringRanges: []*clusteringpb.ClusteringRange{
{ClusterOffset: 1, RowOffset: 0, RowCount: 1},
}},
},
}
}
func TestClusteringSnapshotRoundTripAndRemap(t *testing.T) {
original := clusteringSnapshotFixture()
data, err := SerializePartitionStatsSnapshot(original)
require.NoError(t, err)
decoded, err := DeserializePartitionsStatsSnapshot(data)
require.NoError(t, err)
require.Equal(t, original.Version, decoded.Version)
require.True(t, proto.Equal(original.ClusteringStats, decoded.ClusteringStats))
for id, stats := range original.SegmentStats {
require.Equal(t, stats.NumRows, decoded.SegmentStats[id].NumRows)
for i, entry := range stats.ClusteringRanges {
require.True(t, proto.Equal(entry, decoded.SegmentStats[id].ClusteringRanges[i]))
}
}
// A new complete snapshot may renumber retained clusters. Physical ranges
// keep their row order; numerical cluster offsets need not be sorted.
decoded.Version++
// The merger writes the reordered vectors to a new immutable file. This
// metadata test checks reference ownership; it does not perform file IO.
decoded.ClusteringStats.ClustersFile = "files/part_stats/1/2/channel/9007199254740994.clusters"
decoded.ClusteringStats.ClusteringIndex.IndexFilePaths[0] = "files/part_stats/1/2/channel/9007199254740994.clustering_index/HNSW"
// Segment membership is independent of the cluster offset order. Mutating
// the decoded member slice must not change the published snapshot's group.
decoded.ClusteringStats.Groups[0].SegmentIds[0] = 20
decoded.ClusteringStats.Groups[0].SegmentIds[1] = 10
for _, stats := range decoded.SegmentStats {
for _, entry := range stats.ClusteringRanges {
entry.ClusterOffset = 1 - entry.ClusterOffset
}
}
require.NoError(t, decoded.ValidateClusteringStats())
require.Equal(t, []int64{10, 20}, original.ClusteringStats.Groups[0].SegmentIds)
require.Equal(t, uint32(0), original.SegmentStats[10].ClusteringRanges[0].ClusterOffset)
require.Equal(t, "files/part_stats/1/2/channel/9007199254740993.clusters", original.ClusteringStats.ClustersFile)
require.Equal(t, "files/part_stats/1/2/channel/9007199254740993.clustering_index/HNSW", original.ClusteringStats.ClusteringIndex.IndexFilePaths[0])
unchanged, err := SerializePartitionStatsSnapshot(original)
require.NoError(t, err)
require.JSONEq(t, string(data), string(unchanged))
}
func TestClusteringSnapshotLegacyJSON(t *testing.T) {
for _, document := range []string{
`{"segmentStats":null}`,
`{"segmentStats":{},"Version":123}`,
`{"segmentStats":{"10":{"NumRows":5,"fieldStats":[{"fieldID":100,"type":5,"min":1,"max":5}]}},"Version":123}`,
`{"segmentStats":{"10":{"NumRows":5,"fieldStats":[{"fieldID":101,"type":101,"centroids":[[1,2]]}]}},"Version":123}`,
} {
decoded, err := DeserializePartitionsStatsSnapshot([]byte(document))
require.NoError(t, err, document)
require.Nil(t, decoded.ClusteringStats)
encoded, err := SerializePartitionStatsSnapshot(decoded)
require.NoError(t, err)
require.NotContains(t, string(encoded), "clusteringStats")
require.NotContains(t, string(encoded), "clusteringRanges")
again, err := DeserializePartitionsStatsSnapshot(encoded)
require.NoError(t, err)
require.Equal(t, decoded, again)
}
}
func TestClusteringSnapshotEmptyAndLargeRanges(t *testing.T) {
snapshot := clusteringSnapshotFixture()
snapshot.ClusteringStats.NumClusters = 0
snapshot.ClusteringStats.ClustersFile = ""
snapshot.ClusteringStats.ClusteringIndex = nil
snapshot.ClusteringStats.Groups = nil
snapshot.SegmentStats = map[int64]SegmentStats{}
encoded, err := SerializePartitionStatsSnapshot(snapshot)
require.NoError(t, err)
decoded, err := DeserializePartitionsStatsSnapshot(encoded)
require.NoError(t, err)
require.NotNil(t, decoded.ClusteringStats)
require.Empty(t, decoded.SegmentStats)
require.Nil(t, decoded.ClusteringStats.ClusteringIndex)
require.Empty(t, decoded.ClusteringStats.Groups)
snapshot = clusteringSnapshotFixture()
snapshot.ClusteringStats.NumClusters = 1
snapshot.ClusteringStats.ClusteringIndex.IndexSize = 9007199254740993
const largeSegmentID int64 = 9007199254740993
snapshot.ClusteringStats.Groups = []*clusteringpb.ClusteringGroup{{SegmentIds: []int64{largeSegmentID}}}
snapshot.SegmentStats = map[int64]SegmentStats{largeSegmentID: {
NumRows: math.MaxInt64,
ClusteringRanges: []*clusteringpb.ClusteringRange{{RowCount: math.MaxInt64}},
}}
encoded, err = SerializePartitionStatsSnapshot(snapshot)
require.NoError(t, err)
decoded, err = DeserializePartitionsStatsSnapshot(encoded)
require.NoError(t, err)
require.Equal(t, int64(math.MaxInt64), decoded.SegmentStats[largeSegmentID].ClusteringRanges[0].RowCount)
require.Equal(t, []int64{largeSegmentID}, decoded.ClusteringStats.Groups[0].SegmentIds)
require.Equal(t, int64(9007199254740993), decoded.ClusteringStats.ClusteringIndex.IndexSize)
}
func TestClusteringSnapshotRejectsInvalidIndex(t *testing.T) {
cases := []struct {
name string
mutate func(*clusteringpb.PartitionClusteringStats)
}{
{"missing index", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex = nil }},
{"zero engine version", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexEngineVersion = 0 }},
{"negative engine version", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexEngineVersion = -1 }},
{"zero size", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexSize = 0 }},
{"negative size", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexSize = -1 }},
{"missing files", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexFilePaths = nil }},
{"empty file", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexFilePaths[0] = "" }},
{"raw cluster description file", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexFilePaths[0] = s.ClustersFile }},
{"duplicate file", func(s *clusteringpb.PartitionClusteringStats) {
s.ClusteringIndex.IndexFilePaths = append(s.ClusteringIndex.IndexFilePaths, s.ClusteringIndex.IndexFilePaths[0])
}},
{"missing parameters", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexParams = nil }},
{"missing index type", func(s *clusteringpb.PartitionClusteringStats) {
s.ClusteringIndex.IndexParams = s.ClusteringIndex.IndexParams[1:]
}},
{"blank metric", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexParams[1].Value = " " }},
{"nil parameter", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexParams[0] = nil }},
{"empty parameter key", func(s *clusteringpb.PartitionClusteringStats) { s.ClusteringIndex.IndexParams[0].Key = "" }},
{"duplicate parameter", func(s *clusteringpb.PartitionClusteringStats) {
s.ClusteringIndex.IndexParams = append(s.ClusteringIndex.IndexParams, &commonpb.KeyValuePair{Key: "metric_type", Value: "IP"})
}},
{"index on empty table", func(s *clusteringpb.PartitionClusteringStats) {
s.NumClusters = 0
s.ClustersFile = ""
}},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
snapshot := clusteringSnapshotFixture()
tc.mutate(snapshot.ClusteringStats)
if snapshot.ClusteringStats.NumClusters == 0 {
snapshot.SegmentStats = map[int64]SegmentStats{}
snapshot.ClusteringStats.Groups = nil
}
_, err := SerializePartitionStatsSnapshot(snapshot)
require.ErrorIs(t, err, merr.ErrDataIntegrity)
// Corrupt persisted metadata must also fail on the read boundary.
encoded, err := json.Marshal(snapshot)
require.NoError(t, err)
_, err = DeserializePartitionsStatsSnapshot(encoded)
require.ErrorIs(t, err, merr.ErrDataIntegrity)
})
}
}
func TestClusteringSnapshotGroupMembership(t *testing.T) {
// Clusters 0/1 share the first group, including cluster 1 spanning two
// segments. Cluster 2 belongs to a second, disjoint group.
snapshot := clusteringSnapshotFixture()
snapshot.ClusteringStats.NumClusters = 3
snapshot.SegmentStats[30] = SegmentStats{NumRows: 4, ClusteringRanges: []*clusteringpb.ClusteringRange{
{ClusterOffset: 2, RowCount: 4},
}}
snapshot.ClusteringStats.Groups = append(snapshot.ClusteringStats.Groups,
&clusteringpb.ClusteringGroup{SegmentIds: []int64{30}})
encoded, err := SerializePartitionStatsSnapshot(snapshot)
require.NoError(t, err)
decoded, err := DeserializePartitionsStatsSnapshot(encoded)
require.NoError(t, err)
require.True(t, proto.Equal(snapshot.ClusteringStats, decoded.ClusteringStats))
// Groups may also contain clusters with no shared segment. Membership is
// defined by the segment directory, not by physical connectivity.
snapshot.SegmentStats[10] = SegmentStats{NumRows: 5, ClusteringRanges: []*clusteringpb.ClusteringRange{
{RowCount: 5},
}}
require.NoError(t, snapshot.ValidateClusteringStats())
// Offsets belong to each snapshot: swapping the group order and cluster
// labels preserves all physical ranges and unique derived memberships.
snapshot.ClusteringStats.Groups[0], snapshot.ClusteringStats.Groups[1] =
snapshot.ClusteringStats.Groups[1], snapshot.ClusteringStats.Groups[0]
for _, stats := range snapshot.SegmentStats {
for _, entry := range stats.ClusteringRanges {
entry.ClusterOffset = 2 - entry.ClusterOffset
}
}
require.NoError(t, snapshot.ValidateClusteringStats())
}
func TestClusteringSnapshotRejectsInvalidGroups(t *testing.T) {
cases := []struct {
name string
mutate func(*PartitionStatsSnapshot)
}{
{"missing groups", func(s *PartitionStatsSnapshot) { s.ClusteringStats.Groups = nil }},
{"nil group", func(s *PartitionStatsSnapshot) { s.ClusteringStats.Groups[0] = nil }},
{"empty group", func(s *PartitionStatsSnapshot) { s.ClusteringStats.Groups[0].SegmentIds = nil }},
{"unreferenced segment", func(s *PartitionStatsSnapshot) { s.ClusteringStats.Groups[0].SegmentIds = []int64{10} }},
{"unknown segment", func(s *PartitionStatsSnapshot) { s.ClusteringStats.Groups[0].SegmentIds = []int64{10, 30} }},
{"zero segment", func(s *PartitionStatsSnapshot) { s.ClusteringStats.Groups[0].SegmentIds = []int64{10, 0} }},
{"negative segment", func(s *PartitionStatsSnapshot) { s.ClusteringStats.Groups[0].SegmentIds = []int64{10, -20} }},
{"duplicate member", func(s *PartitionStatsSnapshot) { s.ClusteringStats.Groups[0].SegmentIds = []int64{10, 20, 10} }},
{"segment in two groups", func(s *PartitionStatsSnapshot) {
s.ClusteringStats.Groups = append(s.ClusteringStats.Groups, &clusteringpb.ClusteringGroup{SegmentIds: []int64{20}})
}},
{"cluster spans groups", func(s *PartitionStatsSnapshot) {
s.ClusteringStats.Groups = []*clusteringpb.ClusteringGroup{{SegmentIds: []int64{10}}, {SegmentIds: []int64{20}}}
}},
{"cluster zero spans groups", func(s *PartitionStatsSnapshot) {
s.ClusteringStats.Groups = []*clusteringpb.ClusteringGroup{{SegmentIds: []int64{10}}, {SegmentIds: []int64{20}}}
s.SegmentStats[20].ClusteringRanges[0].ClusterOffset = 0
}},
{"groups on empty snapshot", func(s *PartitionStatsSnapshot) {
s.ClusteringStats.NumClusters = 0
s.ClusteringStats.ClustersFile = ""
s.ClusteringStats.ClusteringIndex = nil
s.SegmentStats = nil
}},
{"empty group on empty snapshot", func(s *PartitionStatsSnapshot) {
s.ClusteringStats.NumClusters = 0
s.ClusteringStats.ClustersFile = ""
s.ClusteringStats.ClusteringIndex = nil
s.ClusteringStats.Groups = []*clusteringpb.ClusteringGroup{{}}
s.SegmentStats = nil
}},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
snapshot := clusteringSnapshotFixture()
tc.mutate(snapshot)
_, err := SerializePartitionStatsSnapshot(snapshot)
require.ErrorIs(t, err, merr.ErrDataIntegrity)
// Bypass the write guard to verify corrupt persisted groups fail
// through the real JSON decode and validation boundary as well.
encoded, err := json.Marshal(snapshot)
require.NoError(t, err)
_, err = DeserializePartitionsStatsSnapshot(encoded)
require.ErrorIs(t, err, merr.ErrDataIntegrity)
})
}
}
func TestClusteringSnapshotRejectsInvalidLayout(t *testing.T) {
cases := []struct {
name string
mutate func(*PartitionStatsSnapshot)
}{
{"missing table", func(s *PartitionStatsSnapshot) { s.ClusteringStats = nil }},
{"zero version", func(s *PartitionStatsSnapshot) { s.Version = 0 }},
{"invalid field", func(s *PartitionStatsSnapshot) { s.ClusteringStats.FieldId = 0 }},
{"invalid dimension", func(s *PartitionStatsSnapshot) { s.ClusteringStats.Dim = 0 }},
{"missing cluster description file", func(s *PartitionStatsSnapshot) { s.ClusteringStats.ClustersFile = "" }},
{"zero cluster count with file", func(s *PartitionStatsSnapshot) { s.ClusteringStats.NumClusters = 0 }},
{"out of bounds maximum offset", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[0].ClusterOffset = math.MaxUint32 }},
{"large untrusted count", func(s *PartitionStatsSnapshot) { s.ClusteringStats.NumClusters = math.MaxUint32 }},
{"invalid segment", func(s *PartitionStatsSnapshot) {
s.SegmentStats[0] = s.SegmentStats[10]
s.ClusteringStats.Groups[0].SegmentIds = append(s.ClusteringStats.Groups[0].SegmentIds, 0)
}},
{"empty segment", func(s *PartitionStatsSnapshot) {
s.SegmentStats[30] = SegmentStats{}
s.ClusteringStats.Groups[0].SegmentIds = append(s.ClusteringStats.Groups[0].SegmentIds, 30)
}},
{"nil range", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[0] = nil }},
{"out of bounds cluster", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[0].ClusterOffset = 2 }},
{"duplicate cluster", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[1].ClusterOffset = 0 }},
{"negative start", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[0].RowOffset = -1 }},
{"empty range", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[0].RowCount = 0 }},
{"negative count", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[0].RowCount = -1 }},
{"gap", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[1].RowOffset = 3 }},
{"overlap", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[1].RowOffset = 1 }},
{"overflow", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[1].RowCount = math.MaxInt64 }},
{"incomplete coverage", func(s *PartitionStatsSnapshot) { s.SegmentStats[10].ClusteringRanges[1].RowCount = 2 }},
{"unreferenced cluster", func(s *PartitionStatsSnapshot) {
s.ClusteringStats.NumClusters++
}},
}
for _, tc := range cases {
t.Run(tc.name, func(t *testing.T) {
snapshot := clusteringSnapshotFixture()
tc.mutate(snapshot)
_, err := SerializePartitionStatsSnapshot(snapshot)
require.ErrorIs(t, err, merr.ErrDataIntegrity)
// Bypass the serializer's guard to exercise rejection at read time.
encoded, err := json.Marshal(snapshot)
if tc.name == "nil range" {
require.ErrorIs(t, err, merr.ErrDataIntegrity)
return
}
require.NoError(t, err)
_, err = DeserializePartitionsStatsSnapshot(encoded)
require.ErrorIs(t, err, merr.ErrDataIntegrity)
})
}
}
func TestClusteringSnapshotDecodeErrors(t *testing.T) {
for _, document := range []string{
`{`, `null`, `{}`, `{"segmentStats":[]}`,
`{"segmentStats":{"10":{"clusteringRanges":[null]}}}`,
`{"segmentStats":{},"clusteringStats":{"numClusters":-1}}`,
`{"segmentStats":{},"clusteringStats":{"numClusters":4294967296}}`,
`{"segmentStats":{},"clusteringStats":{"groups":[{"segmentIds":["9223372036854775808"]}]}}`,
`{"segmentStats":{"10":{"clusteringRanges":[{"rowCount":"9223372036854775808"}]}}}`,
} {
_, err := DeserializePartitionsStatsSnapshot([]byte(document))
require.ErrorIs(t, err, merr.ErrDataIntegrity, document)
}
// The field decoder already assigns a code; the new envelope preserves it.
_, err := DeserializePartitionsStatsSnapshot([]byte(`{"segmentStats":{"10":{"fieldStats":[{}]}}}`))
require.ErrorIs(t, err, merr.ErrServiceInternal)
require.Equal(t, merr.Code(merr.ErrServiceInternal), merr.Code(err))
for _, mutate := range []func(*PartitionStatsSnapshot){
func(s *PartitionStatsSnapshot) { s.ClusteringStats.FormatVersion = 99 },
func(s *PartitionStatsSnapshot) { s.ClusteringStats.DataType = schemapb.DataType_Float16Vector },
func(s *PartitionStatsSnapshot) { s.ClusteringStats.DataType = schemapb.DataType_BFloat16Vector },
// Scalar metadata has no vector dimension or metric. It must fail as an
// unsupported capability until typed mapping/query support is available,
// rather than being mistaken for malformed vector metadata or admitted.
func(s *PartitionStatsSnapshot) {
s.ClusteringStats.DataType = schemapb.DataType_Int64
s.ClusteringStats.Dim = 0
s.ClusteringStats.ClusteringIndex.IndexParams = []*commonpb.KeyValuePair{{Key: "index_type", Value: "STL_SORT"}}
},
} {
snapshot := clusteringSnapshotFixture()
mutate(snapshot)
_, err := SerializePartitionStatsSnapshot(snapshot)
require.ErrorIs(t, err, merr.ErrServiceUnimplemented)
encoded, err := json.Marshal(snapshot)
require.NoError(t, err)
_, err = DeserializePartitionsStatsSnapshot(encoded)
require.ErrorIs(t, err, merr.ErrServiceUnimplemented)
}
}
+3 -3
View File
@@ -46,7 +46,7 @@ func WithSubstr(substring string) Filter {
}
func WithPrefix(prefix string) Filter {
prefix = strings.ToLower(prefix)
prefix = lowerKey(prefix)
return func(key string) (string, bool) {
return key, strings.HasPrefix(key, prefix)
}
@@ -54,7 +54,7 @@ func WithPrefix(prefix string) Filter {
func WithOneOfPrefixs(prefixs ...string) Filter {
for id, prefix := range prefixs {
prefixs[id] = strings.ToLower(prefix)
prefixs[id] = lowerKey(prefix)
}
return func(key string) (string, bool) {
for _, prefix := range prefixs {
@@ -67,7 +67,7 @@ func WithOneOfPrefixs(prefixs ...string) Filter {
}
func RemovePrefix(prefix string) Filter {
prefix = strings.ToLower(prefix)
prefix = lowerKey(prefix)
return func(key string) (string, bool) {
return strings.Replace(key, prefix, "", 1), true
}
+16
View File
@@ -1674,3 +1674,19 @@ func TestProcessImmutableConfigsRendererKeyAbsentFromSources(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, "woodpecker", v)
}
// Prefix filters must use the same case rules as their stored keys. In
// particular, compactionPlan and provider parameter suffixes are case sensitive.
func TestKnowhereMixedCasePrefixFilters(t *testing.T) {
mgr := NewManager()
mgr.RegisterConfigPrefix("knowhere.")
mgr.RegisterConfigPrefix("example.")
mgr.SetMapConfig("knowhere.cluster.compactionPlan.efConstruction", "64")
mgr.SetMapConfig("knowhere.cluster.analyze.num_threads", "8")
mgr.SetMapConfig("example.option", "value")
require.Equal(t, map[string]string{"efConstruction": "64"},
mgr.GetEffectiveBy(WithPrefix("knowhere.cluster.compactionPlan."), RemovePrefix("knowhere.cluster.compactionPlan.")))
require.Equal(t, map[string]string{
"knowhere.cluster.compactionPlan.efConstruction": "64", "example.option": "value",
}, mgr.GetEffectiveBy(WithOneOfPrefixs("knowhere.cluster.compactionPlan.", "EXAMPLE.")))
}
+14
View File
@@ -25,6 +25,20 @@ message LoadIndexInfo {
int64 num_rows = 17;
int32 current_scalar_index_version = 18;
index.IndexStorePathVersion index_store_path_version = 19;
// Present only for a snapshot-owned clustering index. Collection, partition,
// field/shape and num_rows (num_clusters) use the common fields above. The
// field type selects vector index_engine_version or current_scalar_index_version.
// segmentID/indexID/index_buildID/index_version/index_store_path_version are
// inapplicable: use snapshot identity for cache keys and local paths instead.
// PR1 declares the payload only; callers must wait for native loader support.
PartitionStatsContext partition_stats = 20;
}
// Runtime load context, not a second persisted copy of snapshot ownership.
// Absence on LoadIndexInfo preserves the segment-index loading path.
message PartitionStatsContext {
string channel = 1;
int64 version = 2;
}
message IndexStats {
+174 -79
View File
@@ -46,6 +46,13 @@ type LoadIndexInfo struct {
NumRows int64 `protobuf:"varint,17,opt,name=num_rows,json=numRows,proto3" json:"num_rows,omitempty"`
CurrentScalarIndexVersion int32 `protobuf:"varint,18,opt,name=current_scalar_index_version,json=currentScalarIndexVersion,proto3" json:"current_scalar_index_version,omitempty"`
IndexStorePathVersion indexpb.IndexStorePathVersion `protobuf:"varint,19,opt,name=index_store_path_version,json=indexStorePathVersion,proto3,enum=milvus.proto.index.IndexStorePathVersion" json:"index_store_path_version,omitempty"`
// Present only for a snapshot-owned clustering index. Collection, partition,
// field/shape and num_rows (num_clusters) use the common fields above. The
// field type selects vector index_engine_version or current_scalar_index_version.
// segmentID/indexID/index_buildID/index_version/index_store_path_version are
// inapplicable: use snapshot identity for cache keys and local paths instead.
// PR1 declares the payload only; callers must wait for native loader support.
PartitionStats *PartitionStatsContext `protobuf:"bytes,20,opt,name=partition_stats,json=partitionStats,proto3" json:"partition_stats,omitempty"`
}
func (x *LoadIndexInfo) Reset() {
@@ -207,6 +214,70 @@ func (x *LoadIndexInfo) GetIndexStorePathVersion() indexpb.IndexStorePathVersion
return indexpb.IndexStorePathVersion(0)
}
func (x *LoadIndexInfo) GetPartitionStats() *PartitionStatsContext {
if x != nil {
return x.PartitionStats
}
return nil
}
// Runtime load context, not a second persisted copy of snapshot ownership.
// Absence on LoadIndexInfo preserves the segment-index loading path.
type PartitionStatsContext struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Channel string `protobuf:"bytes,1,opt,name=channel,proto3" json:"channel,omitempty"`
Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"`
}
func (x *PartitionStatsContext) Reset() {
*x = PartitionStatsContext{}
if protoimpl.UnsafeEnabled {
mi := &file_cgo_msg_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PartitionStatsContext) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PartitionStatsContext) ProtoMessage() {}
func (x *PartitionStatsContext) ProtoReflect() protoreflect.Message {
mi := &file_cgo_msg_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PartitionStatsContext.ProtoReflect.Descriptor instead.
func (*PartitionStatsContext) Descriptor() ([]byte, []int) {
return file_cgo_msg_proto_rawDescGZIP(), []int{1}
}
func (x *PartitionStatsContext) GetChannel() string {
if x != nil {
return x.Channel
}
return ""
}
func (x *PartitionStatsContext) GetVersion() int64 {
if x != nil {
return x.Version
}
return 0
}
type IndexStats struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -219,7 +290,7 @@ type IndexStats struct {
func (x *IndexStats) Reset() {
*x = IndexStats{}
if protoimpl.UnsafeEnabled {
mi := &file_cgo_msg_proto_msgTypes[1]
mi := &file_cgo_msg_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -232,7 +303,7 @@ func (x *IndexStats) String() string {
func (*IndexStats) ProtoMessage() {}
func (x *IndexStats) ProtoReflect() protoreflect.Message {
mi := &file_cgo_msg_proto_msgTypes[1]
mi := &file_cgo_msg_proto_msgTypes[2]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -245,7 +316,7 @@ func (x *IndexStats) ProtoReflect() protoreflect.Message {
// Deprecated: Use IndexStats.ProtoReflect.Descriptor instead.
func (*IndexStats) Descriptor() ([]byte, []int) {
return file_cgo_msg_proto_rawDescGZIP(), []int{1}
return file_cgo_msg_proto_rawDescGZIP(), []int{2}
}
func (x *IndexStats) GetMemSize() int64 {
@@ -274,7 +345,7 @@ type SerializedIndexFileInfo struct {
func (x *SerializedIndexFileInfo) Reset() {
*x = SerializedIndexFileInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_cgo_msg_proto_msgTypes[2]
mi := &file_cgo_msg_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -287,7 +358,7 @@ func (x *SerializedIndexFileInfo) String() string {
func (*SerializedIndexFileInfo) ProtoMessage() {}
func (x *SerializedIndexFileInfo) ProtoReflect() protoreflect.Message {
mi := &file_cgo_msg_proto_msgTypes[2]
mi := &file_cgo_msg_proto_msgTypes[3]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -300,7 +371,7 @@ func (x *SerializedIndexFileInfo) ProtoReflect() protoreflect.Message {
// Deprecated: Use SerializedIndexFileInfo.ProtoReflect.Descriptor instead.
func (*SerializedIndexFileInfo) Descriptor() ([]byte, []int) {
return file_cgo_msg_proto_rawDescGZIP(), []int{2}
return file_cgo_msg_proto_rawDescGZIP(), []int{3}
}
func (x *SerializedIndexFileInfo) GetFileName() string {
@@ -330,7 +401,7 @@ type FunctionChainInputPlan struct {
func (x *FunctionChainInputPlan) Reset() {
*x = FunctionChainInputPlan{}
if protoimpl.UnsafeEnabled {
mi := &file_cgo_msg_proto_msgTypes[3]
mi := &file_cgo_msg_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -343,7 +414,7 @@ func (x *FunctionChainInputPlan) String() string {
func (*FunctionChainInputPlan) ProtoMessage() {}
func (x *FunctionChainInputPlan) ProtoReflect() protoreflect.Message {
mi := &file_cgo_msg_proto_msgTypes[3]
mi := &file_cgo_msg_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -356,7 +427,7 @@ func (x *FunctionChainInputPlan) ProtoReflect() protoreflect.Message {
// Deprecated: Use FunctionChainInputPlan.ProtoReflect.Descriptor instead.
func (*FunctionChainInputPlan) Descriptor() ([]byte, []int) {
return file_cgo_msg_proto_rawDescGZIP(), []int{3}
return file_cgo_msg_proto_rawDescGZIP(), []int{4}
}
func (x *FunctionChainInputPlan) GetInputs() []*FunctionChainInput {
@@ -381,7 +452,7 @@ type FunctionChainInput struct {
func (x *FunctionChainInput) Reset() {
*x = FunctionChainInput{}
if protoimpl.UnsafeEnabled {
mi := &file_cgo_msg_proto_msgTypes[4]
mi := &file_cgo_msg_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
@@ -394,7 +465,7 @@ func (x *FunctionChainInput) String() string {
func (*FunctionChainInput) ProtoMessage() {}
func (x *FunctionChainInput) ProtoReflect() protoreflect.Message {
mi := &file_cgo_msg_proto_msgTypes[4]
mi := &file_cgo_msg_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
@@ -407,7 +478,7 @@ func (x *FunctionChainInput) ProtoReflect() protoreflect.Message {
// Deprecated: Use FunctionChainInput.ProtoReflect.Descriptor instead.
func (*FunctionChainInput) Descriptor() ([]byte, []int) {
return file_cgo_msg_proto_rawDescGZIP(), []int{4}
return file_cgo_msg_proto_rawDescGZIP(), []int{5}
}
func (x *FunctionChainInput) GetSourceFieldId() int64 {
@@ -452,7 +523,7 @@ var file_cgo_msg_proto_rawDesc = []byte{
0x10, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x67,
0x6f, 0x1a, 0x0c, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a,
0x11, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x22, 0xea, 0x06, 0x0a, 0x0d, 0x4c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78,
0x74, 0x6f, 0x22, 0xbc, 0x07, 0x0a, 0x0d, 0x4c, 0x6f, 0x61, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74,
@@ -502,49 +573,59 @@ var file_cgo_msg_proto_rawDesc = []byte{
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x74,
0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x53,
0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x74, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x1a,
0x3e, 0x0a, 0x10, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
0x88, 0x01, 0x0a, 0x0a, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x19,
0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x07, 0x6d, 0x65, 0x6d, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x5f, 0x0a, 0x16, 0x73, 0x65, 0x72,
0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x69, 0x6e,
0x66, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72,
0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x74, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
0x50, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x67, 0x6f, 0x2e, 0x50, 0x61, 0x72, 0x74,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78,
0x74, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x73, 0x1a, 0x3e, 0x0a, 0x10, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x22, 0x4b, 0x0a, 0x15, 0x50, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74,
0x61, 0x74, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68,
0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61,
0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x88,
0x01, 0x0a, 0x0a, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a,
0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x07, 0x6d, 0x65, 0x6d, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x5f, 0x0a, 0x16, 0x73, 0x65, 0x72, 0x69,
0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x69, 0x6e, 0x66,
0x6f, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x67, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x69,
0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x14, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x53, 0x0a, 0x17, 0x53, 0x65, 0x72,
0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x65,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x14, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0x53, 0x0a, 0x17, 0x53, 0x65,
0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c,
0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61,
0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22,
0x56, 0x0a, 0x16, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e,
0x49, 0x6e, 0x70, 0x75, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x3c, 0x0a, 0x06, 0x69, 0x6e, 0x70,
0x75, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x67, 0x6f, 0x2e, 0x46, 0x75, 0x6e,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52,
0x06, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x12, 0x46, 0x75, 0x6e, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x26,
0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46,
0x69, 0x65, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74,
0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e,
0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52,
0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12,
0x21, 0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74,
0x68, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x50,
0x61, 0x74, 0x68, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x70,
0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4a, 0x73, 0x6f,
0x6e, 0x50, 0x61, 0x74, 0x68, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2d, 0x69, 0x6f, 0x2f, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2f, 0x63, 0x67, 0x6f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d,
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x56,
0x0a, 0x16, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49,
0x6e, 0x70, 0x75, 0x74, 0x50, 0x6c, 0x61, 0x6e, 0x12, 0x3c, 0x0a, 0x06, 0x69, 0x6e, 0x70, 0x75,
0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x67, 0x6f, 0x2e, 0x46, 0x75, 0x6e, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x52, 0x06,
0x69, 0x6e, 0x70, 0x75, 0x74, 0x73, 0x22, 0xeb, 0x01, 0x0a, 0x12, 0x46, 0x75, 0x6e, 0x63, 0x74,
0x69, 0x6f, 0x6e, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x12, 0x26, 0x0a,
0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x46, 0x69,
0x65, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x47, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f,
0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73,
0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e,
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21,
0x0a, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6c, 0x6f, 0x67, 0x69, 0x63, 0x61, 0x6c, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68,
0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x50, 0x61,
0x74, 0x68, 0x12, 0x20, 0x0a, 0x0c, 0x69, 0x73, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x70, 0x61,
0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x4a, 0x73, 0x6f, 0x6e,
0x50, 0x61, 0x74, 0x68, 0x42, 0x30, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63,
0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2d, 0x69, 0x6f, 0x2f, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2f, 0x63, 0x67, 0x6f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -559,30 +640,32 @@ func file_cgo_msg_proto_rawDescGZIP() []byte {
return file_cgo_msg_proto_rawDescData
}
var file_cgo_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
var file_cgo_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
var file_cgo_msg_proto_goTypes = []interface{}{
(*LoadIndexInfo)(nil), // 0: milvus.proto.cgo.LoadIndexInfo
(*IndexStats)(nil), // 1: milvus.proto.cgo.IndexStats
(*SerializedIndexFileInfo)(nil), // 2: milvus.proto.cgo.SerializedIndexFileInfo
(*FunctionChainInputPlan)(nil), // 3: milvus.proto.cgo.FunctionChainInputPlan
(*FunctionChainInput)(nil), // 4: milvus.proto.cgo.FunctionChainInput
nil, // 5: milvus.proto.cgo.LoadIndexInfo.IndexParamsEntry
(*schemapb.FieldSchema)(nil), // 6: milvus.proto.schema.FieldSchema
(indexpb.IndexStorePathVersion)(0), // 7: milvus.proto.index.IndexStorePathVersion
(schemapb.DataType)(0), // 8: milvus.proto.schema.DataType
(*PartitionStatsContext)(nil), // 1: milvus.proto.cgo.PartitionStatsContext
(*IndexStats)(nil), // 2: milvus.proto.cgo.IndexStats
(*SerializedIndexFileInfo)(nil), // 3: milvus.proto.cgo.SerializedIndexFileInfo
(*FunctionChainInputPlan)(nil), // 4: milvus.proto.cgo.FunctionChainInputPlan
(*FunctionChainInput)(nil), // 5: milvus.proto.cgo.FunctionChainInput
nil, // 6: milvus.proto.cgo.LoadIndexInfo.IndexParamsEntry
(*schemapb.FieldSchema)(nil), // 7: milvus.proto.schema.FieldSchema
(indexpb.IndexStorePathVersion)(0), // 8: milvus.proto.index.IndexStorePathVersion
(schemapb.DataType)(0), // 9: milvus.proto.schema.DataType
}
var file_cgo_msg_proto_depIdxs = []int32{
6, // 0: milvus.proto.cgo.LoadIndexInfo.field:type_name -> milvus.proto.schema.FieldSchema
5, // 1: milvus.proto.cgo.LoadIndexInfo.index_params:type_name -> milvus.proto.cgo.LoadIndexInfo.IndexParamsEntry
7, // 2: milvus.proto.cgo.LoadIndexInfo.index_store_path_version:type_name -> milvus.proto.index.IndexStorePathVersion
2, // 3: milvus.proto.cgo.IndexStats.serialized_index_infos:type_name -> milvus.proto.cgo.SerializedIndexFileInfo
4, // 4: milvus.proto.cgo.FunctionChainInputPlan.inputs:type_name -> milvus.proto.cgo.FunctionChainInput
8, // 5: milvus.proto.cgo.FunctionChainInput.target_data_type:type_name -> milvus.proto.schema.DataType
6, // [6:6] is the sub-list for method output_type
6, // [6:6] is the sub-list for method input_type
6, // [6:6] is the sub-list for extension type_name
6, // [6:6] is the sub-list for extension extendee
0, // [0:6] is the sub-list for field type_name
7, // 0: milvus.proto.cgo.LoadIndexInfo.field:type_name -> milvus.proto.schema.FieldSchema
6, // 1: milvus.proto.cgo.LoadIndexInfo.index_params:type_name -> milvus.proto.cgo.LoadIndexInfo.IndexParamsEntry
8, // 2: milvus.proto.cgo.LoadIndexInfo.index_store_path_version:type_name -> milvus.proto.index.IndexStorePathVersion
1, // 3: milvus.proto.cgo.LoadIndexInfo.partition_stats:type_name -> milvus.proto.cgo.PartitionStatsContext
3, // 4: milvus.proto.cgo.IndexStats.serialized_index_infos:type_name -> milvus.proto.cgo.SerializedIndexFileInfo
5, // 5: milvus.proto.cgo.FunctionChainInputPlan.inputs:type_name -> milvus.proto.cgo.FunctionChainInput
9, // 6: milvus.proto.cgo.FunctionChainInput.target_data_type:type_name -> milvus.proto.schema.DataType
7, // [7:7] is the sub-list for method output_type
7, // [7:7] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension type_name
7, // [7:7] is the sub-list for extension extendee
0, // [0:7] is the sub-list for field type_name
}
func init() { file_cgo_msg_proto_init() }
@@ -604,7 +687,7 @@ func file_cgo_msg_proto_init() {
}
}
file_cgo_msg_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*IndexStats); i {
switch v := v.(*PartitionStatsContext); i {
case 0:
return &v.state
case 1:
@@ -616,7 +699,7 @@ func file_cgo_msg_proto_init() {
}
}
file_cgo_msg_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SerializedIndexFileInfo); i {
switch v := v.(*IndexStats); i {
case 0:
return &v.state
case 1:
@@ -628,7 +711,7 @@ func file_cgo_msg_proto_init() {
}
}
file_cgo_msg_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FunctionChainInputPlan); i {
switch v := v.(*SerializedIndexFileInfo); i {
case 0:
return &v.state
case 1:
@@ -640,6 +723,18 @@ func file_cgo_msg_proto_init() {
}
}
file_cgo_msg_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FunctionChainInputPlan); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_cgo_msg_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FunctionChainInput); i {
case 0:
return &v.state
@@ -658,7 +753,7 @@ func file_cgo_msg_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_cgo_msg_proto_rawDesc,
NumEnums: 0,
NumMessages: 6,
NumMessages: 7,
NumExtensions: 0,
NumServices: 0,
},
+75
View File
@@ -3,6 +3,7 @@ package milvus.proto.clustering;
option go_package = "github.com/milvus-io/milvus/pkg/v3/proto/clusteringpb";
import "schema.proto";
import "common.proto";
// Synchronously modify StorageConfig in index_coord.proto/index_cgo_msg.proto file
message StorageConfig {
@@ -56,6 +57,9 @@ message AnalyzeInfo {
// segmentID -> manifest path. A non-empty entry marks a StorageV3 segment
// read through the manifest; V1 segments use insert_files instead.
map<int64, string> manifest_paths = 17;
string cluster_type = 18;
// Knowhere analyze parameters frozen in the AnalyzeTask.
map<string, string> cluster_params = 19;
}
message ClusteringCentroidsStats {
@@ -63,6 +67,77 @@ message ClusteringCentroidsStats {
}
message ClusteringCentroidIdMappingStats {
// Dense offsets into this Analyze generation, not persistent centroid IDs.
repeated uint32 centroid_id_mapping = 1;
repeated int64 num_in_centroid = 2;
// One finite distance per input row, aligned with centroid_id_mapping.
// Mapping sorts by centroid, then by ascending distance within each centroid.
repeated float distance_to_centroid = 3;
}
// Immutable index artifacts for the complete snapshot's clustering field.
// Index labels identify cluster offsets, mapped to physical rows by
// ClusteringRange. Scope, field and cluster count come from the snapshot,
// not segment/index-task identities.
message ClusteringIndexInfo {
// Persisted build parameters, including index_type exactly once. Vector
// indexes also require metric_type. QueryNode-local load parameters are
// merged into a copy at load time.
repeated common.KeyValuePair index_params = 1;
// Complete object keys, using the existing index codec and slice naming.
repeated string index_file_paths = 2;
// Version of the index engine selected by the enclosing field's data_type:
// FieldIndexInfo.current_index_version for vectors, current_scalar_index_version
// for scalars. These are separate version domains. This is not a snapshot or
// index-build generation. Scalar execution is a follow-up.
int32 index_engine_version = 3;
// Positive uncompressed index bytes, matching FieldIndexInfo.index_size for
// load-resource estimation; not the size of the cluster description file.
int64 index_size = 4;
}
// Metadata for one clustering field, owned by the complete PartitionStatsSnapshot.
// Cluster descriptions live in the referenced file, not in snapshot metadata.
// The field type selects their interpretation; physical ranges are type-neutral.
message PartitionClusteringStats {
uint32 format_version = 1;
int64 field_id = 2;
schema.DataType data_type = 3;
int64 dim = 4; // Vector dimension; inapplicable (zero) for a scalar field.
uint32 num_clusters = 5;
// Complete object key for immutable cluster descriptions. Entry order defines
// cluster offsets and index labels for this snapshot. For FloatVector the
// payload is ClusteringCentroidsStats, with one centroid per cluster. Scalar
// descriptions, mapping and query support are deferred; no scalar producer is
// enabled by this contract. Empty exactly when num_clusters is zero.
string clusters_file = 6;
// Required for a nonempty table, absent for an empty table. Built from the
// complete cluster descriptions in final offset order before publication.
// Index files and metadata are immutable with the snapshot.
ClusteringIndexInfo clustering_index = 7;
// Complete segment grouping for this snapshot. Array positions are local
// group offsets, not global IDs. Every covered segment belongs to exactly
// one group; every cluster's ranges must lie entirely within one group.
// Empty exactly when the complete snapshot is empty.
repeated ClusteringGroup groups = 8;
}
// A group owns one or more segments. Cluster membership is derived from the
// referenced SegmentStats.ClusteringRanges, not persisted a second time.
// Compaction selection/publication must separately enforce complete replacement
// of each touched group against the pinned base snapshot. Query pruning still
// selects individual cluster ranges, not all rows in a group.
message ClusteringGroup {
// Distinct IDs referencing SegmentStats entries in the owning snapshot.
repeated int64 segment_ids = 1;
}
// Embedded in SegmentStats; field and cluster identity come from the owning
// snapshot's PartitionClusteringStats. This layout also applies to scalar value
// groups once scalar mapping produces contiguous rows. A cluster may span
// segments, but has at most one contiguous range in each segment.
message ClusteringRange {
uint32 cluster_offset = 1; // Offset into this snapshot's cluster table; zero is valid.
int64 row_offset = 2; // Final physical segment row offset.
int64 row_count = 3; // Positive; interval is [offset, offset + count).
}
+644 -166
View File
@@ -7,6 +7,7 @@
package clusteringpb
import (
commonpb "github.com/milvus-io/milvus-proto/go-api/v3/commonpb"
schemapb "github.com/milvus-io/milvus-proto/go-api/v3/schemapb"
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
@@ -324,6 +325,9 @@ type AnalyzeInfo struct {
// segmentID -> manifest path. A non-empty entry marks a StorageV3 segment
// read through the manifest; V1 segments use insert_files instead.
ManifestPaths map[int64]string `protobuf:"bytes,17,rep,name=manifest_paths,json=manifestPaths,proto3" json:"manifest_paths,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
ClusterType string `protobuf:"bytes,18,opt,name=cluster_type,json=clusterType,proto3" json:"cluster_type,omitempty"`
// Knowhere analyze parameters frozen in the AnalyzeTask.
ClusterParams map[string]string `protobuf:"bytes,19,rep,name=cluster_params,json=clusterParams,proto3" json:"cluster_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *AnalyzeInfo) Reset() {
@@ -477,6 +481,20 @@ func (x *AnalyzeInfo) GetManifestPaths() map[int64]string {
return nil
}
func (x *AnalyzeInfo) GetClusterType() string {
if x != nil {
return x.ClusterType
}
return ""
}
func (x *AnalyzeInfo) GetClusterParams() map[string]string {
if x != nil {
return x.ClusterParams
}
return nil
}
type ClusteringCentroidsStats struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -529,8 +547,12 @@ type ClusteringCentroidIdMappingStats struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Dense offsets into this Analyze generation, not persistent centroid IDs.
CentroidIdMapping []uint32 `protobuf:"varint,1,rep,packed,name=centroid_id_mapping,json=centroidIdMapping,proto3" json:"centroid_id_mapping,omitempty"`
NumInCentroid []int64 `protobuf:"varint,2,rep,packed,name=num_in_centroid,json=numInCentroid,proto3" json:"num_in_centroid,omitempty"`
// One finite distance per input row, aligned with centroid_id_mapping.
// Mapping sorts by centroid, then by ascending distance within each centroid.
DistanceToCentroid []float32 `protobuf:"fixed32,3,rep,packed,name=distance_to_centroid,json=distanceToCentroid,proto3" json:"distance_to_centroid,omitempty"`
}
func (x *ClusteringCentroidIdMappingStats) Reset() {
@@ -579,160 +601,556 @@ func (x *ClusteringCentroidIdMappingStats) GetNumInCentroid() []int64 {
return nil
}
func (x *ClusteringCentroidIdMappingStats) GetDistanceToCentroid() []float32 {
if x != nil {
return x.DistanceToCentroid
}
return nil
}
// Immutable index artifacts for the complete snapshot's clustering field.
// Index labels identify cluster offsets, mapped to physical rows by
// ClusteringRange. Scope, field and cluster count come from the snapshot,
// not segment/index-task identities.
type ClusteringIndexInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Persisted build parameters, including index_type exactly once. Vector
// indexes also require metric_type. QueryNode-local load parameters are
// merged into a copy at load time.
IndexParams []*commonpb.KeyValuePair `protobuf:"bytes,1,rep,name=index_params,json=indexParams,proto3" json:"index_params,omitempty"`
// Complete object keys, using the existing index codec and slice naming.
IndexFilePaths []string `protobuf:"bytes,2,rep,name=index_file_paths,json=indexFilePaths,proto3" json:"index_file_paths,omitempty"`
// Version of the index engine selected by the enclosing field's data_type:
// FieldIndexInfo.current_index_version for vectors, current_scalar_index_version
// for scalars. These are separate version domains. This is not a snapshot or
// index-build generation. Scalar execution is a follow-up.
IndexEngineVersion int32 `protobuf:"varint,3,opt,name=index_engine_version,json=indexEngineVersion,proto3" json:"index_engine_version,omitempty"`
// Positive uncompressed index bytes, matching FieldIndexInfo.index_size for
// load-resource estimation; not the size of the cluster description file.
IndexSize int64 `protobuf:"varint,4,opt,name=index_size,json=indexSize,proto3" json:"index_size,omitempty"`
}
func (x *ClusteringIndexInfo) Reset() {
*x = ClusteringIndexInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_clustering_proto_msgTypes[5]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ClusteringIndexInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClusteringIndexInfo) ProtoMessage() {}
func (x *ClusteringIndexInfo) ProtoReflect() protoreflect.Message {
mi := &file_clustering_proto_msgTypes[5]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ClusteringIndexInfo.ProtoReflect.Descriptor instead.
func (*ClusteringIndexInfo) Descriptor() ([]byte, []int) {
return file_clustering_proto_rawDescGZIP(), []int{5}
}
func (x *ClusteringIndexInfo) GetIndexParams() []*commonpb.KeyValuePair {
if x != nil {
return x.IndexParams
}
return nil
}
func (x *ClusteringIndexInfo) GetIndexFilePaths() []string {
if x != nil {
return x.IndexFilePaths
}
return nil
}
func (x *ClusteringIndexInfo) GetIndexEngineVersion() int32 {
if x != nil {
return x.IndexEngineVersion
}
return 0
}
func (x *ClusteringIndexInfo) GetIndexSize() int64 {
if x != nil {
return x.IndexSize
}
return 0
}
// Metadata for one clustering field, owned by the complete PartitionStatsSnapshot.
// Cluster descriptions live in the referenced file, not in snapshot metadata.
// The field type selects their interpretation; physical ranges are type-neutral.
type PartitionClusteringStats struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
FormatVersion uint32 `protobuf:"varint,1,opt,name=format_version,json=formatVersion,proto3" json:"format_version,omitempty"`
FieldId int64 `protobuf:"varint,2,opt,name=field_id,json=fieldId,proto3" json:"field_id,omitempty"`
DataType schemapb.DataType `protobuf:"varint,3,opt,name=data_type,json=dataType,proto3,enum=milvus.proto.schema.DataType" json:"data_type,omitempty"`
Dim int64 `protobuf:"varint,4,opt,name=dim,proto3" json:"dim,omitempty"` // Vector dimension; inapplicable (zero) for a scalar field.
NumClusters uint32 `protobuf:"varint,5,opt,name=num_clusters,json=numClusters,proto3" json:"num_clusters,omitempty"`
// Complete object key for immutable cluster descriptions. Entry order defines
// cluster offsets and index labels for this snapshot. For FloatVector the
// payload is ClusteringCentroidsStats, with one centroid per cluster. Scalar
// descriptions, mapping and query support are deferred; no scalar producer is
// enabled by this contract. Empty exactly when num_clusters is zero.
ClustersFile string `protobuf:"bytes,6,opt,name=clusters_file,json=clustersFile,proto3" json:"clusters_file,omitempty"`
// Required for a nonempty table, absent for an empty table. Built from the
// complete cluster descriptions in final offset order before publication.
// Index files and metadata are immutable with the snapshot.
ClusteringIndex *ClusteringIndexInfo `protobuf:"bytes,7,opt,name=clustering_index,json=clusteringIndex,proto3" json:"clustering_index,omitempty"`
// Complete segment grouping for this snapshot. Array positions are local
// group offsets, not global IDs. Every covered segment belongs to exactly
// one group; every cluster's ranges must lie entirely within one group.
// Empty exactly when the complete snapshot is empty.
Groups []*ClusteringGroup `protobuf:"bytes,8,rep,name=groups,proto3" json:"groups,omitempty"`
}
func (x *PartitionClusteringStats) Reset() {
*x = PartitionClusteringStats{}
if protoimpl.UnsafeEnabled {
mi := &file_clustering_proto_msgTypes[6]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *PartitionClusteringStats) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*PartitionClusteringStats) ProtoMessage() {}
func (x *PartitionClusteringStats) ProtoReflect() protoreflect.Message {
mi := &file_clustering_proto_msgTypes[6]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use PartitionClusteringStats.ProtoReflect.Descriptor instead.
func (*PartitionClusteringStats) Descriptor() ([]byte, []int) {
return file_clustering_proto_rawDescGZIP(), []int{6}
}
func (x *PartitionClusteringStats) GetFormatVersion() uint32 {
if x != nil {
return x.FormatVersion
}
return 0
}
func (x *PartitionClusteringStats) GetFieldId() int64 {
if x != nil {
return x.FieldId
}
return 0
}
func (x *PartitionClusteringStats) GetDataType() schemapb.DataType {
if x != nil {
return x.DataType
}
return schemapb.DataType(0)
}
func (x *PartitionClusteringStats) GetDim() int64 {
if x != nil {
return x.Dim
}
return 0
}
func (x *PartitionClusteringStats) GetNumClusters() uint32 {
if x != nil {
return x.NumClusters
}
return 0
}
func (x *PartitionClusteringStats) GetClustersFile() string {
if x != nil {
return x.ClustersFile
}
return ""
}
func (x *PartitionClusteringStats) GetClusteringIndex() *ClusteringIndexInfo {
if x != nil {
return x.ClusteringIndex
}
return nil
}
func (x *PartitionClusteringStats) GetGroups() []*ClusteringGroup {
if x != nil {
return x.Groups
}
return nil
}
// A group owns one or more segments. Cluster membership is derived from the
// referenced SegmentStats.ClusteringRanges, not persisted a second time.
// Compaction selection/publication must separately enforce complete replacement
// of each touched group against the pinned base snapshot. Query pruning still
// selects individual cluster ranges, not all rows in a group.
type ClusteringGroup struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
// Distinct IDs referencing SegmentStats entries in the owning snapshot.
SegmentIds []int64 `protobuf:"varint,1,rep,packed,name=segment_ids,json=segmentIds,proto3" json:"segment_ids,omitempty"`
}
func (x *ClusteringGroup) Reset() {
*x = ClusteringGroup{}
if protoimpl.UnsafeEnabled {
mi := &file_clustering_proto_msgTypes[7]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ClusteringGroup) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClusteringGroup) ProtoMessage() {}
func (x *ClusteringGroup) ProtoReflect() protoreflect.Message {
mi := &file_clustering_proto_msgTypes[7]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ClusteringGroup.ProtoReflect.Descriptor instead.
func (*ClusteringGroup) Descriptor() ([]byte, []int) {
return file_clustering_proto_rawDescGZIP(), []int{7}
}
func (x *ClusteringGroup) GetSegmentIds() []int64 {
if x != nil {
return x.SegmentIds
}
return nil
}
// Embedded in SegmentStats; field and cluster identity come from the owning
// snapshot's PartitionClusteringStats. This layout also applies to scalar value
// groups once scalar mapping produces contiguous rows. A cluster may span
// segments, but has at most one contiguous range in each segment.
type ClusteringRange struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
ClusterOffset uint32 `protobuf:"varint,1,opt,name=cluster_offset,json=clusterOffset,proto3" json:"cluster_offset,omitempty"` // Offset into this snapshot's cluster table; zero is valid.
RowOffset int64 `protobuf:"varint,2,opt,name=row_offset,json=rowOffset,proto3" json:"row_offset,omitempty"` // Final physical segment row offset.
RowCount int64 `protobuf:"varint,3,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"` // Positive; interval is [offset, offset + count).
}
func (x *ClusteringRange) Reset() {
*x = ClusteringRange{}
if protoimpl.UnsafeEnabled {
mi := &file_clustering_proto_msgTypes[8]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ClusteringRange) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ClusteringRange) ProtoMessage() {}
func (x *ClusteringRange) ProtoReflect() protoreflect.Message {
mi := &file_clustering_proto_msgTypes[8]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use ClusteringRange.ProtoReflect.Descriptor instead.
func (*ClusteringRange) Descriptor() ([]byte, []int) {
return file_clustering_proto_rawDescGZIP(), []int{8}
}
func (x *ClusteringRange) GetClusterOffset() uint32 {
if x != nil {
return x.ClusterOffset
}
return 0
}
func (x *ClusteringRange) GetRowOffset() int64 {
if x != nil {
return x.RowOffset
}
return 0
}
func (x *ClusteringRange) GetRowCount() int64 {
if x != nil {
return x.RowCount
}
return 0
}
var File_clustering_proto protoreflect.FileDescriptor
var file_clustering_proto_rawDesc = []byte{
0x0a, 0x10, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x12, 0x17, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x1a, 0x0c, 0x73, 0x63, 0x68,
0x65, 0x6d, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x07, 0x0a, 0x0d, 0x53, 0x74,
0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61,
0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64,
0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f,
0x6b, 0x65, 0x79, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63,
0x65, 0x73, 0x73, 0x4b, 0x65, 0x79, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x72,
0x65, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73,
0x73, 0x4b, 0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x53, 0x53, 0x4c, 0x18, 0x04,
0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x73, 0x65, 0x53, 0x53, 0x4c, 0x12, 0x1f, 0x0a, 0x0b,
0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a,
0x09, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x72, 0x6f, 0x6f, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73,
0x65, 0x49, 0x41, 0x4d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x73, 0x65, 0x49,
0x41, 0x4d, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x41, 0x4d, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e,
0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x49, 0x41, 0x4d, 0x45, 0x6e, 0x64, 0x70,
0x6f, 0x69, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f,
0x74, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72,
0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x5f, 0x76,
0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28,
0x08, 0x52, 0x0e, 0x75, 0x73, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73,
0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x6f,
0x75, 0x64, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72,
0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65,
0x6f, 0x75, 0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x72, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x12, 0x1c,
0x0a, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x41, 0x43, 0x65, 0x72, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x73, 0x73, 0x6c, 0x43, 0x41, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x11,
0x47, 0x63, 0x70, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4a, 0x53, 0x4f,
0x4e, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x47, 0x63, 0x70, 0x43, 0x72, 0x65, 0x64,
0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61,
0x78, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x73, 0x12, 0x2d, 0x0a, 0x13, 0x73, 0x73, 0x6c, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x6d,
0x69, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09,
0x52, 0x10, 0x73, 0x73, 0x6c, 0x54, 0x6c, 0x73, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63,
0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52,
0x11, 0x75, 0x73, 0x65, 0x43, 0x72, 0x63, 0x33, 0x32, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73,
0x75, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65,
0x18, 0x13, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x4d, 0x6f, 0x64,
0x65, 0x12, 0x3b, 0x0a, 0x1a, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x5f, 0x73, 0x6d, 0x61, 0x6c, 0x6c,
0x5f, 0x72, 0x65, 0x61, 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18,
0x14, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x17, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x53, 0x6d, 0x61, 0x6c,
0x6c, 0x52, 0x65, 0x61, 0x64, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2b,
0x0a, 0x11, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61,
0x74, 0x6f, 0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x6c, 0x6f, 0x6e,
0x43, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x74,
0x61, 0x6c, 0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18,
0x16, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63,
0x6b, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x34, 0x0a, 0x17, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x5f, 0x6d,
0x61, 0x78, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72,
0x18, 0x17, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x4d, 0x61, 0x78,
0x49, 0x64, 0x6c, 0x65, 0x50, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x44, 0x0a, 0x1f, 0x74,
0x61, 0x6c, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x5f,
0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x18,
0x20, 0x01, 0x28, 0x08, 0x52, 0x1b, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x46, 0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x61, 0x62, 0x6c,
0x65, 0x22, 0x30, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73,
0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x46, 0x69,
0x6c, 0x65, 0x73, 0x22, 0x99, 0x08, 0x0a, 0x0b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44,
0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49,
0x44, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01,
0x28, 0x03, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x63,
0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12,
0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x04,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49,
0x44, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x05,
0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12,
0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x6d,
0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x64, 0x69, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x6e,
0x75, 0x6d, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d,
0x0a, 0x0a, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01,
0x28, 0x03, 0x52, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2a, 0x0a,
0x11, 0x6d, 0x69, 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x43, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78,
0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x0b,
0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0e, 0x6d, 0x61, 0x78, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x12,
0x58, 0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18,
0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e,
0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x49, 0x6e, 0x73, 0x65,
0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x69, 0x6e,
0x73, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x08, 0x6e, 0x75, 0x6d,
0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49, 0x6e, 0x66,
0x6f, 0x2e, 0x4e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
0x6e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64,
0x5f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x63, 0x68,
0x65, 0x6d, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52,
0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x4d, 0x0a, 0x0e,
0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x10,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x53,
0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x73, 0x74,
0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0e, 0x6d,
0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x11, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x65, 0x6d, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc5, 0x07, 0x0a, 0x0d, 0x53, 0x74, 0x6f, 0x72,
0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x64, 0x64,
0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72,
0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65,
0x79, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x63, 0x63, 0x65, 0x73,
0x73, 0x4b, 0x65, 0x79, 0x49, 0x44, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74,
0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0f, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4b,
0x65, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x53, 0x53, 0x4c, 0x18, 0x04, 0x20, 0x01,
0x28, 0x08, 0x52, 0x06, 0x75, 0x73, 0x65, 0x53, 0x53, 0x4c, 0x12, 0x1f, 0x0a, 0x0b, 0x62, 0x75,
0x63, 0x6b, 0x65, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0a, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x72,
0x6f, 0x6f, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x72, 0x6f, 0x6f, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x49,
0x41, 0x4d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x73, 0x65, 0x49, 0x41, 0x4d,
0x12, 0x20, 0x0a, 0x0b, 0x49, 0x41, 0x4d, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18,
0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x49, 0x41, 0x4d, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69,
0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79,
0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67,
0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x75, 0x73, 0x65, 0x5f, 0x76, 0x69, 0x72,
0x74, 0x75, 0x61, 0x6c, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52,
0x0e, 0x75, 0x73, 0x65, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x48, 0x6f, 0x73, 0x74, 0x12,
0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52,
0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6c, 0x6f, 0x75, 0x64,
0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x2c,
0x0a, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75,
0x74, 0x5f, 0x6d, 0x73, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x10, 0x72, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x4d, 0x73, 0x12, 0x1c, 0x0a, 0x09,
0x73, 0x73, 0x6c, 0x43, 0x41, 0x43, 0x65, 0x72, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52,
0x09, 0x73, 0x73, 0x6c, 0x43, 0x41, 0x43, 0x65, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x11, 0x47, 0x63,
0x70, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x18,
0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x47, 0x63, 0x70, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6e,
0x74, 0x69, 0x61, 0x6c, 0x4a, 0x53, 0x4f, 0x4e, 0x12, 0x27, 0x0a, 0x0f, 0x6d, 0x61, 0x78, 0x5f,
0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28,
0x0d, 0x52, 0x0e, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e,
0x73, 0x12, 0x2d, 0x0a, 0x13, 0x73, 0x73, 0x6c, 0x5f, 0x74, 0x6c, 0x73, 0x5f, 0x6d, 0x69, 0x6e,
0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10,
0x73, 0x73, 0x6c, 0x54, 0x6c, 0x73, 0x4d, 0x69, 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x12, 0x2e, 0x0a, 0x13, 0x75, 0x73, 0x65, 0x5f, 0x63, 0x72, 0x63, 0x33, 0x32, 0x63, 0x5f, 0x63,
0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x75,
0x73, 0x65, 0x43, 0x72, 0x63, 0x33, 0x32, 0x63, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x73, 0x75, 0x6d,
0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x13,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12,
0x3b, 0x0a, 0x1a, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x5f, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x5f, 0x72,
0x65, 0x61, 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x14, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x17, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x52,
0x65, 0x61, 0x64, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2b, 0x0a, 0x11,
0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f,
0x72, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x43, 0x6f,
0x6f, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x74, 0x6f, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61, 0x6c,
0x6f, 0x6e, 0x5f, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x16, 0x20,
0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x53,
0x69, 0x7a, 0x65, 0x12, 0x34, 0x0a, 0x17, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x5f, 0x6d, 0x61, 0x78,
0x5f, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x18, 0x17,
0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x4d, 0x61, 0x78, 0x49, 0x64,
0x6c, 0x65, 0x50, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x12, 0x44, 0x0a, 0x1f, 0x74, 0x61, 0x6c,
0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x5f, 0x65, 0x78,
0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x18, 0x20, 0x01,
0x28, 0x08, 0x52, 0x1b, 0x74, 0x61, 0x6c, 0x6f, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x46,
0x6f, 0x72, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x22,
0x30, 0x0a, 0x0b, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x21,
0x0a, 0x0c, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6c, 0x65,
0x73, 0x22, 0xde, 0x09, 0x0a, 0x0b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49, 0x6e, 0x66,
0x6f, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12,
0x18, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6c,
0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a,
0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12,
0x1c, 0x0a, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01,
0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a,
0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x6d, 0x18, 0x07,
0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x64, 0x69, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d,
0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52,
0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1d, 0x0a, 0x0a,
0x74, 0x72, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03,
0x52, 0x09, 0x74, 0x72, 0x61, 0x69, 0x6e, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6d,
0x69, 0x6e, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x18, 0x0a, 0x20, 0x01, 0x28, 0x01, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x61, 0x78, 0x5f, 0x63,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x0b, 0x20, 0x01,
0x28, 0x01, 0x52, 0x0f, 0x6d, 0x61, 0x78, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x52, 0x61,
0x74, 0x69, 0x6f, 0x12, 0x28, 0x0a, 0x10, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x6d,
0x61, 0x78, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x58, 0x0a,
0x0c, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x0d, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x6e,
0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65,
0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61,
0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x73, 0x1a, 0x64, 0x0a, 0x10, 0x49,
0x6e, 0x73, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12,
0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65,
0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b,
0x32, 0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72,
0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38,
0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x4e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a,
0x12, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x73, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22,
0x5a, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x65, 0x6e,
0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3e, 0x0a, 0x09, 0x63,
0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x63,
0x68, 0x65, 0x6d, 0x61, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x46, 0x69, 0x65, 0x6c, 0x64,
0x52, 0x09, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x22, 0x7a, 0x0a, 0x20, 0x43,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69,
0x64, 0x49, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
0x2e, 0x0a, 0x13, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x5f, 0x69, 0x64, 0x5f, 0x6d,
0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x11, 0x63, 0x65,
0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x49, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12,
0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f,
0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x75, 0x6d, 0x49, 0x6e, 0x43,
0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75,
0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2d, 0x69, 0x6f, 0x2f,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x70, 0x62,
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x49, 0x6e, 0x73, 0x65, 0x72, 0x74,
0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0b, 0x69, 0x6e, 0x73, 0x65,
0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x4c, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72,
0x6f, 0x77, 0x73, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x69, 0x6e, 0x67, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e,
0x4e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x6e, 0x75,
0x6d, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x43, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73,
0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d,
0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x0b, 0x66,
0x69, 0x65, 0x6c, 0x64, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x4d, 0x0a, 0x0e, 0x73, 0x74,
0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x10, 0x20, 0x01,
0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x53, 0x74, 0x6f,
0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72,
0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x5e, 0x0a, 0x0e, 0x6d, 0x61, 0x6e,
0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x37, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x7a, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
0x50, 0x61, 0x74, 0x68, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x6d, 0x61, 0x6e, 0x69,
0x66, 0x65, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0b, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5e, 0x0a, 0x0e,
0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x13,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x63,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x64, 0x0a, 0x10,
0x49, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b,
0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x49, 0x6e, 0x73, 0x65,
0x72, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
0x38, 0x01, 0x1a, 0x3a, 0x0a, 0x0c, 0x4e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40,
0x0a, 0x12, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x73, 0x45,
0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28,
0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18,
0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x1a, 0x40, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02,
0x38, 0x01, 0x22, 0x5a, 0x0a, 0x18, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67,
0x43, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x3e,
0x0a, 0x09, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x46, 0x69,
0x65, 0x6c, 0x64, 0x52, 0x09, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x22, 0xac,
0x01, 0x0a, 0x20, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x43, 0x65, 0x6e,
0x74, 0x72, 0x6f, 0x69, 0x64, 0x49, 0x64, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x74,
0x61, 0x74, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x5f,
0x69, 0x64, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d,
0x52, 0x11, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x49, 0x64, 0x4d, 0x61, 0x70, 0x70,
0x69, 0x6e, 0x67, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x5f, 0x69, 0x6e, 0x5f, 0x63, 0x65,
0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0d, 0x6e, 0x75,
0x6d, 0x49, 0x6e, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x64,
0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x63, 0x65, 0x6e, 0x74, 0x72,
0x6f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x02, 0x52, 0x12, 0x64, 0x69, 0x73, 0x74, 0x61,
0x6e, 0x63, 0x65, 0x54, 0x6f, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x22, 0xd6, 0x01,
0x0a, 0x13, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x64, 0x65,
0x78, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
0x6e, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0b,
0x69, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x69,
0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18,
0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x65,
0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x65,
0x6e, 0x67, 0x69, 0x6e, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x12, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x45, 0x6e, 0x67, 0x69, 0x6e, 0x65,
0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x8d, 0x03, 0x0a, 0x18, 0x50, 0x61, 0x72, 0x74, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x53, 0x74,
0x61, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x5f, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x66, 0x6f, 0x72,
0x6d, 0x61, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x66, 0x69,
0x65, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69,
0x65, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x74, 0x79,
0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x44,
0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70,
0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x69, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03,
0x64, 0x69, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x6c,
0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x73, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x57, 0x0a, 0x10, 0x63,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18,
0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e,
0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49,
0x6e, 0x66, 0x6f, 0x52, 0x0f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x12, 0x40, 0x0a, 0x06, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x18, 0x08,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x43,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x52, 0x06,
0x67, 0x72, 0x6f, 0x75, 0x70, 0x73, 0x22, 0x32, 0x0a, 0x0f, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x69, 0x6e, 0x67, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x67,
0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x03, 0x52, 0x0a,
0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x73, 0x22, 0x74, 0x0a, 0x0f, 0x43, 0x6c,
0x75, 0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x25, 0x0a,
0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x66,
0x66, 0x73, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x77, 0x5f, 0x6f, 0x66, 0x66, 0x73,
0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x72, 0x6f, 0x77, 0x4f, 0x66, 0x66,
0x73, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x6f, 0x77, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x72, 0x6f, 0x77, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x42, 0x37, 0x5a, 0x35, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2d, 0x69, 0x6f, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2f,
0x70, 0x6b, 0x67, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x63, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x69, 0x6e, 0x67, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
}
var (
@@ -747,32 +1165,44 @@ func file_clustering_proto_rawDescGZIP() []byte {
return file_clustering_proto_rawDescData
}
var file_clustering_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
var file_clustering_proto_msgTypes = make([]protoimpl.MessageInfo, 13)
var file_clustering_proto_goTypes = []interface{}{
(*StorageConfig)(nil), // 0: milvus.proto.clustering.StorageConfig
(*InsertFiles)(nil), // 1: milvus.proto.clustering.InsertFiles
(*AnalyzeInfo)(nil), // 2: milvus.proto.clustering.AnalyzeInfo
(*ClusteringCentroidsStats)(nil), // 3: milvus.proto.clustering.ClusteringCentroidsStats
(*ClusteringCentroidIdMappingStats)(nil), // 4: milvus.proto.clustering.ClusteringCentroidIdMappingStats
nil, // 5: milvus.proto.clustering.AnalyzeInfo.InsertFilesEntry
nil, // 6: milvus.proto.clustering.AnalyzeInfo.NumRowsEntry
nil, // 7: milvus.proto.clustering.AnalyzeInfo.ManifestPathsEntry
(*schemapb.FieldSchema)(nil), // 8: milvus.proto.schema.FieldSchema
(*schemapb.VectorField)(nil), // 9: milvus.proto.schema.VectorField
(*ClusteringIndexInfo)(nil), // 5: milvus.proto.clustering.ClusteringIndexInfo
(*PartitionClusteringStats)(nil), // 6: milvus.proto.clustering.PartitionClusteringStats
(*ClusteringGroup)(nil), // 7: milvus.proto.clustering.ClusteringGroup
(*ClusteringRange)(nil), // 8: milvus.proto.clustering.ClusteringRange
nil, // 9: milvus.proto.clustering.AnalyzeInfo.InsertFilesEntry
nil, // 10: milvus.proto.clustering.AnalyzeInfo.NumRowsEntry
nil, // 11: milvus.proto.clustering.AnalyzeInfo.ManifestPathsEntry
nil, // 12: milvus.proto.clustering.AnalyzeInfo.ClusterParamsEntry
(*schemapb.FieldSchema)(nil), // 13: milvus.proto.schema.FieldSchema
(*schemapb.VectorField)(nil), // 14: milvus.proto.schema.VectorField
(*commonpb.KeyValuePair)(nil), // 15: milvus.proto.common.KeyValuePair
(schemapb.DataType)(0), // 16: milvus.proto.schema.DataType
}
var file_clustering_proto_depIdxs = []int32{
5, // 0: milvus.proto.clustering.AnalyzeInfo.insert_files:type_name -> milvus.proto.clustering.AnalyzeInfo.InsertFilesEntry
6, // 1: milvus.proto.clustering.AnalyzeInfo.num_rows:type_name -> milvus.proto.clustering.AnalyzeInfo.NumRowsEntry
8, // 2: milvus.proto.clustering.AnalyzeInfo.field_schema:type_name -> milvus.proto.schema.FieldSchema
0, // 3: milvus.proto.clustering.AnalyzeInfo.storage_config:type_name -> milvus.proto.clustering.StorageConfig
7, // 4: milvus.proto.clustering.AnalyzeInfo.manifest_paths:type_name -> milvus.proto.clustering.AnalyzeInfo.ManifestPathsEntry
9, // 5: milvus.proto.clustering.ClusteringCentroidsStats.centroids:type_name -> milvus.proto.schema.VectorField
1, // 6: milvus.proto.clustering.AnalyzeInfo.InsertFilesEntry.value:type_name -> milvus.proto.clustering.InsertFiles
7, // [7:7] is the sub-list for method output_type
7, // [7:7] is the sub-list for method input_type
7, // [7:7] is the sub-list for extension type_name
7, // [7:7] is the sub-list for extension extendee
0, // [0:7] is the sub-list for field type_name
9, // 0: milvus.proto.clustering.AnalyzeInfo.insert_files:type_name -> milvus.proto.clustering.AnalyzeInfo.InsertFilesEntry
10, // 1: milvus.proto.clustering.AnalyzeInfo.num_rows:type_name -> milvus.proto.clustering.AnalyzeInfo.NumRowsEntry
13, // 2: milvus.proto.clustering.AnalyzeInfo.field_schema:type_name -> milvus.proto.schema.FieldSchema
0, // 3: milvus.proto.clustering.AnalyzeInfo.storage_config:type_name -> milvus.proto.clustering.StorageConfig
11, // 4: milvus.proto.clustering.AnalyzeInfo.manifest_paths:type_name -> milvus.proto.clustering.AnalyzeInfo.ManifestPathsEntry
12, // 5: milvus.proto.clustering.AnalyzeInfo.cluster_params:type_name -> milvus.proto.clustering.AnalyzeInfo.ClusterParamsEntry
14, // 6: milvus.proto.clustering.ClusteringCentroidsStats.centroids:type_name -> milvus.proto.schema.VectorField
15, // 7: milvus.proto.clustering.ClusteringIndexInfo.index_params:type_name -> milvus.proto.common.KeyValuePair
16, // 8: milvus.proto.clustering.PartitionClusteringStats.data_type:type_name -> milvus.proto.schema.DataType
5, // 9: milvus.proto.clustering.PartitionClusteringStats.clustering_index:type_name -> milvus.proto.clustering.ClusteringIndexInfo
7, // 10: milvus.proto.clustering.PartitionClusteringStats.groups:type_name -> milvus.proto.clustering.ClusteringGroup
1, // 11: milvus.proto.clustering.AnalyzeInfo.InsertFilesEntry.value:type_name -> milvus.proto.clustering.InsertFiles
12, // [12:12] is the sub-list for method output_type
12, // [12:12] is the sub-list for method input_type
12, // [12:12] is the sub-list for extension type_name
12, // [12:12] is the sub-list for extension extendee
0, // [0:12] is the sub-list for field type_name
}
func init() { file_clustering_proto_init() }
@@ -841,6 +1271,54 @@ func file_clustering_proto_init() {
return nil
}
}
file_clustering_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ClusteringIndexInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_clustering_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*PartitionClusteringStats); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_clustering_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ClusteringGroup); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_clustering_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ClusteringRange); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
@@ -848,7 +1326,7 @@ func file_clustering_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_clustering_proto_rawDesc,
NumEnums: 0,
NumMessages: 8,
NumMessages: 13,
NumExtensions: 0,
NumServices: 0,
},
+8
View File
@@ -860,6 +860,8 @@ message CompactionPlan {
// The requesting DataCoord can commit schema-bump manifest deltas. Absent
// or false preserves the legacy worker-produced complete manifest response.
bool enable_manifest_delta = 32;
// Zero only for initial construction; never silently replace a missing base.
int64 base_partition_stats_version = 33;
}
// ManifestColumnGroupFile is one loon/parquet file belonging to a column
@@ -959,6 +961,9 @@ message CompactionPlanResult {
// classifies the original error (merr.Status), so DataCoord can persist the
// code/reason and decide retryability instead of seeing a bare `failed`.
common.Status fail_status = 6;
// Equals planID for a successful vector clustering result, including empty outputs.
// The complete snapshot must already exist before returning this receipt.
int64 partition_stats_version = 7;
}
message CompactionStateResponse {
@@ -1647,6 +1652,8 @@ message CompactionTask{
IDRange pre_allocated_segmentIDs = 28;
repeated schema.FunctionSchema diff_functions = 29;
uint64 create_ts = 30;
int64 base_partition_stats_version = 31;
map<string, string> clustering_plan_params = 32;
}
message PartitionStatsInfo {
@@ -1654,6 +1661,7 @@ message PartitionStatsInfo {
int64 partitionID = 2;
string vChannel = 3;
int64 version = 4;
// Complete snapshot coverage, including retained segments from the base.
repeated int64 segmentIDs = 5;
int64 analyzeTaskID = 6;
int64 commitTime = 7;
File diff suppressed because it is too large. Load diff
+3
View File
@@ -311,6 +311,9 @@ message AnalyzeTask {
string fail_reason = 11;
int64 dim = 12;
string centroids_file = 13;
int64 num_clusters = 14;
string cluster_type = 15;
map<string, string> cluster_params = 16;
}
message SegmentStats {
+264 -224
View File
@@ -2619,6 +2619,9 @@ type AnalyzeTask struct {
FailReason string `protobuf:"bytes,11,opt,name=fail_reason,json=failReason,proto3" json:"fail_reason,omitempty"`
Dim int64 `protobuf:"varint,12,opt,name=dim,proto3" json:"dim,omitempty"`
CentroidsFile string `protobuf:"bytes,13,opt,name=centroids_file,json=centroidsFile,proto3" json:"centroids_file,omitempty"`
NumClusters int64 `protobuf:"varint,14,opt,name=num_clusters,json=numClusters,proto3" json:"num_clusters,omitempty"`
ClusterType string `protobuf:"bytes,15,opt,name=cluster_type,json=clusterType,proto3" json:"cluster_type,omitempty"`
ClusterParams map[string]string `protobuf:"bytes,16,rep,name=cluster_params,json=clusterParams,proto3" json:"cluster_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *AnalyzeTask) Reset() {
@@ -2744,6 +2747,27 @@ func (x *AnalyzeTask) GetCentroidsFile() string {
return ""
}
func (x *AnalyzeTask) GetNumClusters() int64 {
if x != nil {
return x.NumClusters
}
return 0
}
func (x *AnalyzeTask) GetClusterType() string {
if x != nil {
return x.ClusterType
}
return ""
}
func (x *AnalyzeTask) GetClusterParams() map[string]string {
if x != nil {
return x.ClusterParams
}
return nil
}
type SegmentStats struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -3478,7 +3502,7 @@ var file_index_coord_proto_rawDesc = []byte{
0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0xc2, 0x03, 0x0a,
0x52, 0x0a, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x22, 0xa5, 0x05, 0x0a,
0x0b, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x22, 0x0a, 0x0c,
0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44,
@@ -3507,162 +3531,176 @@ var file_index_coord_proto_rawDesc = []byte{
0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x64, 0x69, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x65,
0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0d, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x46, 0x69, 0x6c,
0x65, 0x22, 0x76, 0x0a, 0x0c, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74,
0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49,
0x44, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x16, 0x0a, 0x06,
0x6c, 0x6f, 0x67, 0x49, 0x44, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x6c, 0x6f,
0x67, 0x49, 0x44, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x6e,
0x69, 0x66, 0x65, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x47, 0x0a, 0x0c, 0x46, 0x69, 0x65,
0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x69, 0x65,
0x6c, 0x64, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66, 0x69, 0x65, 0x6c,
0x64, 0x49, 0x44, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68,
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74,
0x68, 0x73, 0x22, 0x91, 0x04, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x73, 0x54, 0x61, 0x73, 0x6b,
0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f,
0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e,
0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65,
0x6e, 0x74, 0x49, 0x44, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x63,
0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e,
0x73, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x74,
0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x61, 0x73,
0x6b, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06,
0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a,
0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6e,
0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x08,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61,
0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x69,
0x6c, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a,
0x66, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x61,
0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d,
0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x3f, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x4a, 0x6f, 0x62, 0x54,
0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53,
0x74, 0x61, 0x74, 0x73, 0x53, 0x75, 0x62, 0x4a, 0x6f, 0x62, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x4a,
0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x63,
0x79, 0x63, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x61, 0x6e, 0x52,
0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72,
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e,
0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75,
0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73,
0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2a, 0x72, 0x0a, 0x15, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53,
0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x74, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12,
0x29, 0x0a, 0x25, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x50,
0x41, 0x54, 0x48, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x55, 0x49, 0x4c,
0x44, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a, 0x2a, 0x49, 0x4e,
0x44, 0x45, 0x58, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x56,
0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43, 0x54, 0x49, 0x4f,
0x4e, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x45, 0x44, 0x10, 0x01, 0x2a, 0x5b, 0x0a, 0x07, 0x4a, 0x6f,
0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65,
0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70,
0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4a, 0x6f, 0x62, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x4a,
0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x4a, 0x6f, 0x62,
0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x53, 0x74, 0x61,
0x74, 0x73, 0x4a, 0x6f, 0x62, 0x10, 0x03, 0x2a, 0x83, 0x01, 0x0a, 0x08, 0x4a, 0x6f, 0x62, 0x53,
0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65,
0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61,
0x74, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4a, 0x6f, 0x62, 0x53,
0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x10, 0x02,
0x12, 0x14, 0x0a, 0x10, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x69, 0x6e, 0x69,
0x73, 0x68, 0x65, 0x64, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61,
0x74, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x04, 0x12, 0x11, 0x0a, 0x0d, 0x4a, 0x6f,
0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x10, 0x05, 0x2a, 0x55, 0x0a,
0x0b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x75, 0x62, 0x4a, 0x6f, 0x62, 0x12, 0x08, 0x0a, 0x04,
0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x10, 0x01,
0x12, 0x10, 0x0a, 0x0c, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4a, 0x6f, 0x62,
0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4d, 0x32, 0x35, 0x4a, 0x6f, 0x62, 0x10, 0x03, 0x12,
0x13, 0x0a, 0x0f, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4a,
0x6f, 0x62, 0x10, 0x04, 0x32, 0xf4, 0x09, 0x0a, 0x0a, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x43, 0x6f,
0x6f, 0x72, 0x64, 0x12, 0x54, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x64,
0x65, 0x78, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e,
0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0a, 0x41, 0x6c, 0x74,
0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x25, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x41, 0x6c, 0x74,
0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b,
0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x73, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x6e, 0x75, 0x6d, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
0x74, 0x79, 0x70, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x32, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x64, 0x65, 0x78, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x54, 0x61, 0x73, 0x6b,
0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61,
0x6d, 0x73, 0x1a, 0x40, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
0x3a, 0x02, 0x38, 0x01, 0x22, 0x76, 0x0a, 0x0c, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53,
0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x02, 0x49, 0x44, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x12,
0x16, 0x0a, 0x06, 0x6c, 0x6f, 0x67, 0x49, 0x44, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52,
0x06, 0x6c, 0x6f, 0x67, 0x49, 0x44, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66,
0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x22, 0x47, 0x0a, 0x0c,
0x46, 0x69, 0x65, 0x6c, 0x64, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, 0x18, 0x0a, 0x07,
0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x66,
0x69, 0x65, 0x6c, 0x64, 0x49, 0x44, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70,
0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x66, 0x69, 0x6c, 0x65,
0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x91, 0x04, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x74, 0x73, 0x54,
0x61, 0x73, 0x6b, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69,
0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61,
0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x67,
0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65,
0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x73, 0x65, 0x72,
0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
0x0d, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x16,
0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06,
0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x12, 0x16, 0x0a, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03,
0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x44, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4a, 0x6f, 0x62,
0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b,
0x66, 0x61, 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x29, 0x0a,
0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49,
0x44, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53,
0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x3f, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x4a,
0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65,
0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x75, 0x62, 0x4a, 0x6f, 0x62, 0x52, 0x0a, 0x73,
0x75, 0x62, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x6e,
0x52, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63,
0x61, 0x6e, 0x52, 0x65, 0x63, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x4e, 0x0a, 0x0e, 0x66, 0x69, 0x6c,
0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65,
0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x2a, 0x72, 0x0a, 0x15, 0x49, 0x6e, 0x64,
0x65, 0x78, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x74, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x25, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x53, 0x54, 0x4f, 0x52,
0x45, 0x5f, 0x50, 0x41, 0x54, 0x48, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x42,
0x55, 0x49, 0x4c, 0x44, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2e, 0x0a,
0x2a, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x5f, 0x53, 0x54, 0x4f, 0x52, 0x45, 0x5f, 0x50, 0x41, 0x54,
0x48, 0x5f, 0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x4f, 0x4c, 0x4c, 0x45, 0x43,
0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x4f, 0x54, 0x45, 0x44, 0x10, 0x01, 0x2a, 0x5b, 0x0a,
0x07, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4a, 0x6f, 0x62, 0x54,
0x79, 0x70, 0x65, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x6f, 0x62,
0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4a, 0x6f, 0x62, 0x10, 0x01, 0x12, 0x15,
0x0a, 0x11, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65,
0x4a, 0x6f, 0x62, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65,
0x53, 0x74, 0x61, 0x74, 0x73, 0x4a, 0x6f, 0x62, 0x10, 0x03, 0x2a, 0x83, 0x01, 0x0a, 0x08, 0x4a,
0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4a, 0x6f, 0x62, 0x53, 0x74,
0x61, 0x74, 0x65, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4a, 0x6f, 0x62,
0x53, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x4a,
0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73,
0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x46,
0x69, 0x6e, 0x69, 0x73, 0x68, 0x65, 0x64, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x4a, 0x6f, 0x62,
0x53, 0x74, 0x61, 0x74, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x10, 0x04, 0x12, 0x11, 0x0a,
0x0d, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x74, 0x72, 0x79, 0x10, 0x05,
0x2a, 0x55, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x75, 0x62, 0x4a, 0x6f, 0x62, 0x12,
0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x53, 0x6f, 0x72,
0x74, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78,
0x4a, 0x6f, 0x62, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x42, 0x4d, 0x32, 0x35, 0x4a, 0x6f, 0x62,
0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x49, 0x6e, 0x64,
0x65, 0x78, 0x4a, 0x6f, 0x62, 0x10, 0x04, 0x32, 0xf4, 0x09, 0x0a, 0x0a, 0x49, 0x6e, 0x64, 0x65,
0x78, 0x43, 0x6f, 0x6f, 0x72, 0x64, 0x12, 0x54, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65,
0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74,
0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d,
0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0a,
0x41, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x25, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
0x41, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00,
0x12, 0x66, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74,
0x65, 0x12, 0x28, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53,
0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53,
0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65,
0x12, 0x2f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74,
0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x30, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e,
0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x64, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65,
0x78, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x28, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x44,
0x72, 0x6f, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x72,
0x6f, 0x70, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f,
0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x66, 0x0a,
0x0d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x28,
0x0d, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x28,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e,
0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74,
0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65,
0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d,
0x65, 0x6e, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x64,
0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e,
0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x6e,
0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x00, 0x12, 0x64, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e,
0x66, 0x6f, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65,
0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65,
0x78, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x50, 0x0a, 0x09, 0x44, 0x72, 0x6f, 0x70,
0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x66, 0x0a, 0x0d, 0x44, 0x65,
0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x28, 0x2e, 0x6d, 0x69,
0x64, 0x65, 0x78, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x64, 0x65,
0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x65,
0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x75, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65,
0x78, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x2e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x65, 0x73, 0x63, 0x72,
0x69, 0x62, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65,
0x22, 0x00, 0x12, 0x75, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74,
0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x2d, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65,
0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74,
0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69,
0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x15,
0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f,
0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x30, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e,
0x64, 0x65, 0x78, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74,
0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7e, 0x0a, 0x15, 0x47, 0x65, 0x74,
0x49, 0x6e, 0x64, 0x65, 0x78, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65,
0x73, 0x73, 0x12, 0x30, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78,
0x42, 0x75, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x65, 0x71,
0x73, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12,
0x53, 0x68, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x73, 0x12, 0x30, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x64,
0x65, 0x78, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x7b, 0x0a, 0x12, 0x53, 0x68, 0x6f,
0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12,
0x30, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x31, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70,
0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74,
0x72, 0x69, 0x63, 0x73, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65,
0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73,
0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0b, 0x43, 0x68, 0x65, 0x63, 0x6b,
0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x43, 0x68, 0x65,
0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x28, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74,
0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x32, 0x5a, 0x30, 0x67,
0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2d, 0x69, 0x6f, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x76,
0x33, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x70, 0x62, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x68, 0x6f,
0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52,
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0a, 0x47, 0x65, 0x74,
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x47, 0x65,
0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0b, 0x43, 0x68,
0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x48, 0x65,
0x61, 0x6c, 0x74, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x32,
0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2d, 0x69, 0x6f, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2f, 0x70, 0x6b,
0x67, 0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -3678,7 +3716,7 @@ func file_index_coord_proto_rawDescGZIP() []byte {
}
var file_index_coord_proto_enumTypes = make([]protoimpl.EnumInfo, 4)
var file_index_coord_proto_msgTypes = make([]protoimpl.MessageInfo, 33)
var file_index_coord_proto_msgTypes = make([]protoimpl.MessageInfo, 34)
var file_index_coord_proto_goTypes = []interface{}{
(IndexStorePathVersion)(0), // 0: milvus.proto.index.IndexStorePathVersion
(JobType)(0), // 1: milvus.proto.index.JobType
@@ -3717,90 +3755,92 @@ var file_index_coord_proto_goTypes = []interface{}{
(*FieldLogPath)(nil), // 34: milvus.proto.index.FieldLogPath
(*StatsTask)(nil), // 35: milvus.proto.index.StatsTask
nil, // 36: milvus.proto.index.GetIndexInfoResponse.SegmentInfoEntry
(*commonpb.KeyValuePair)(nil), // 37: milvus.proto.common.KeyValuePair
(commonpb.IndexState)(0), // 38: milvus.proto.common.IndexState
(*commonpb.MsgBase)(nil), // 39: milvus.proto.common.MsgBase
(*commonpb.Address)(nil), // 40: milvus.proto.common.Address
(*commonpb.Status)(nil), // 41: milvus.proto.common.Status
(*internalpb.InitParams)(nil), // 42: milvus.proto.internal.InitParams
(schemapb.DataType)(0), // 43: milvus.proto.schema.DataType
(*internalpb.FileResourceInfo)(nil), // 44: milvus.proto.internal.FileResourceInfo
(*internalpb.ShowConfigurationsRequest)(nil), // 45: milvus.proto.internal.ShowConfigurationsRequest
(*milvuspb.GetMetricsRequest)(nil), // 46: milvus.proto.milvus.GetMetricsRequest
(*milvuspb.CheckHealthRequest)(nil), // 47: milvus.proto.milvus.CheckHealthRequest
(*internalpb.ShowConfigurationsResponse)(nil), // 48: milvus.proto.internal.ShowConfigurationsResponse
(*milvuspb.GetMetricsResponse)(nil), // 49: milvus.proto.milvus.GetMetricsResponse
(*milvuspb.CheckHealthResponse)(nil), // 50: milvus.proto.milvus.CheckHealthResponse
nil, // 37: milvus.proto.index.AnalyzeTask.ClusterParamsEntry
(*commonpb.KeyValuePair)(nil), // 38: milvus.proto.common.KeyValuePair
(commonpb.IndexState)(0), // 39: milvus.proto.common.IndexState
(*commonpb.MsgBase)(nil), // 40: milvus.proto.common.MsgBase
(*commonpb.Address)(nil), // 41: milvus.proto.common.Address
(*commonpb.Status)(nil), // 42: milvus.proto.common.Status
(*internalpb.InitParams)(nil), // 43: milvus.proto.internal.InitParams
(schemapb.DataType)(0), // 44: milvus.proto.schema.DataType
(*internalpb.FileResourceInfo)(nil), // 45: milvus.proto.internal.FileResourceInfo
(*internalpb.ShowConfigurationsRequest)(nil), // 46: milvus.proto.internal.ShowConfigurationsRequest
(*milvuspb.GetMetricsRequest)(nil), // 47: milvus.proto.milvus.GetMetricsRequest
(*milvuspb.CheckHealthRequest)(nil), // 48: milvus.proto.milvus.CheckHealthRequest
(*internalpb.ShowConfigurationsResponse)(nil), // 49: milvus.proto.internal.ShowConfigurationsResponse
(*milvuspb.GetMetricsResponse)(nil), // 50: milvus.proto.milvus.GetMetricsResponse
(*milvuspb.CheckHealthResponse)(nil), // 51: milvus.proto.milvus.CheckHealthResponse
}
var file_index_coord_proto_depIdxs = []int32{
37, // 0: milvus.proto.index.IndexInfo.type_params:type_name -> milvus.proto.common.KeyValuePair
37, // 1: milvus.proto.index.IndexInfo.index_params:type_name -> milvus.proto.common.KeyValuePair
38, // 2: milvus.proto.index.IndexInfo.state:type_name -> milvus.proto.common.IndexState
37, // 3: milvus.proto.index.IndexInfo.user_index_params:type_name -> milvus.proto.common.KeyValuePair
38, // 0: milvus.proto.index.IndexInfo.type_params:type_name -> milvus.proto.common.KeyValuePair
38, // 1: milvus.proto.index.IndexInfo.index_params:type_name -> milvus.proto.common.KeyValuePair
39, // 2: milvus.proto.index.IndexInfo.state:type_name -> milvus.proto.common.IndexState
38, // 3: milvus.proto.index.IndexInfo.user_index_params:type_name -> milvus.proto.common.KeyValuePair
4, // 4: milvus.proto.index.FieldIndex.index_info:type_name -> milvus.proto.index.IndexInfo
38, // 5: milvus.proto.index.SegmentIndex.state:type_name -> milvus.proto.common.IndexState
39, // 5: milvus.proto.index.SegmentIndex.state:type_name -> milvus.proto.common.IndexState
0, // 6: milvus.proto.index.SegmentIndex.index_store_path_version:type_name -> milvus.proto.index.IndexStorePathVersion
39, // 7: milvus.proto.index.RegisterNodeRequest.base:type_name -> milvus.proto.common.MsgBase
40, // 8: milvus.proto.index.RegisterNodeRequest.address:type_name -> milvus.proto.common.Address
41, // 9: milvus.proto.index.RegisterNodeResponse.status:type_name -> milvus.proto.common.Status
42, // 10: milvus.proto.index.RegisterNodeResponse.init_params:type_name -> milvus.proto.internal.InitParams
41, // 11: milvus.proto.index.GetIndexStateResponse.status:type_name -> milvus.proto.common.Status
38, // 12: milvus.proto.index.GetIndexStateResponse.state:type_name -> milvus.proto.common.IndexState
38, // 13: milvus.proto.index.SegmentIndexState.state:type_name -> milvus.proto.common.IndexState
41, // 14: milvus.proto.index.GetSegmentIndexStateResponse.status:type_name -> milvus.proto.common.Status
40, // 7: milvus.proto.index.RegisterNodeRequest.base:type_name -> milvus.proto.common.MsgBase
41, // 8: milvus.proto.index.RegisterNodeRequest.address:type_name -> milvus.proto.common.Address
42, // 9: milvus.proto.index.RegisterNodeResponse.status:type_name -> milvus.proto.common.Status
43, // 10: milvus.proto.index.RegisterNodeResponse.init_params:type_name -> milvus.proto.internal.InitParams
42, // 11: milvus.proto.index.GetIndexStateResponse.status:type_name -> milvus.proto.common.Status
39, // 12: milvus.proto.index.GetIndexStateResponse.state:type_name -> milvus.proto.common.IndexState
39, // 13: milvus.proto.index.SegmentIndexState.state:type_name -> milvus.proto.common.IndexState
42, // 14: milvus.proto.index.GetSegmentIndexStateResponse.status:type_name -> milvus.proto.common.Status
12, // 15: milvus.proto.index.GetSegmentIndexStateResponse.states:type_name -> milvus.proto.index.SegmentIndexState
37, // 16: milvus.proto.index.CreateIndexRequest.type_params:type_name -> milvus.proto.common.KeyValuePair
37, // 17: milvus.proto.index.CreateIndexRequest.index_params:type_name -> milvus.proto.common.KeyValuePair
37, // 18: milvus.proto.index.CreateIndexRequest.user_index_params:type_name -> milvus.proto.common.KeyValuePair
37, // 19: milvus.proto.index.AlterIndexRequest.params:type_name -> milvus.proto.common.KeyValuePair
37, // 20: milvus.proto.index.IndexFilePathInfo.index_params:type_name -> milvus.proto.common.KeyValuePair
38, // 16: milvus.proto.index.CreateIndexRequest.type_params:type_name -> milvus.proto.common.KeyValuePair
38, // 17: milvus.proto.index.CreateIndexRequest.index_params:type_name -> milvus.proto.common.KeyValuePair
38, // 18: milvus.proto.index.CreateIndexRequest.user_index_params:type_name -> milvus.proto.common.KeyValuePair
38, // 19: milvus.proto.index.AlterIndexRequest.params:type_name -> milvus.proto.common.KeyValuePair
38, // 20: milvus.proto.index.IndexFilePathInfo.index_params:type_name -> milvus.proto.common.KeyValuePair
0, // 21: milvus.proto.index.IndexFilePathInfo.index_store_path_version:type_name -> milvus.proto.index.IndexStorePathVersion
17, // 22: milvus.proto.index.SegmentInfo.index_infos:type_name -> milvus.proto.index.IndexFilePathInfo
41, // 23: milvus.proto.index.GetIndexInfoResponse.status:type_name -> milvus.proto.common.Status
42, // 23: milvus.proto.index.GetIndexInfoResponse.status:type_name -> milvus.proto.common.Status
36, // 24: milvus.proto.index.GetIndexInfoResponse.segment_info:type_name -> milvus.proto.index.GetIndexInfoResponse.SegmentInfoEntry
41, // 25: milvus.proto.index.DescribeIndexResponse.status:type_name -> milvus.proto.common.Status
42, // 25: milvus.proto.index.DescribeIndexResponse.status:type_name -> milvus.proto.common.Status
4, // 26: milvus.proto.index.DescribeIndexResponse.index_infos:type_name -> milvus.proto.index.IndexInfo
41, // 27: milvus.proto.index.GetIndexBuildProgressResponse.status:type_name -> milvus.proto.common.Status
37, // 28: milvus.proto.index.JobInfo.index_params:type_name -> milvus.proto.common.KeyValuePair
41, // 29: milvus.proto.index.GetIndexStatisticsResponse.status:type_name -> milvus.proto.common.Status
42, // 27: milvus.proto.index.GetIndexBuildProgressResponse.status:type_name -> milvus.proto.common.Status
38, // 28: milvus.proto.index.JobInfo.index_params:type_name -> milvus.proto.common.KeyValuePair
42, // 29: milvus.proto.index.GetIndexStatisticsResponse.status:type_name -> milvus.proto.common.Status
4, // 30: milvus.proto.index.GetIndexStatisticsResponse.index_infos:type_name -> milvus.proto.index.IndexInfo
41, // 31: milvus.proto.index.ListIndexesResponse.status:type_name -> milvus.proto.common.Status
42, // 31: milvus.proto.index.ListIndexesResponse.status:type_name -> milvus.proto.common.Status
4, // 32: milvus.proto.index.ListIndexesResponse.index_infos:type_name -> milvus.proto.index.IndexInfo
43, // 33: milvus.proto.index.AnalyzeTask.field_type:type_name -> milvus.proto.schema.DataType
44, // 33: milvus.proto.index.AnalyzeTask.field_type:type_name -> milvus.proto.schema.DataType
2, // 34: milvus.proto.index.AnalyzeTask.state:type_name -> milvus.proto.index.JobState
2, // 35: milvus.proto.index.StatsTask.state:type_name -> milvus.proto.index.JobState
3, // 36: milvus.proto.index.StatsTask.subJobType:type_name -> milvus.proto.index.StatsSubJob
44, // 37: milvus.proto.index.StatsTask.file_resources:type_name -> milvus.proto.internal.FileResourceInfo
18, // 38: milvus.proto.index.GetIndexInfoResponse.SegmentInfoEntry.value:type_name -> milvus.proto.index.SegmentInfo
14, // 39: milvus.proto.index.IndexCoord.CreateIndex:input_type -> milvus.proto.index.CreateIndexRequest
15, // 40: milvus.proto.index.IndexCoord.AlterIndex:input_type -> milvus.proto.index.AlterIndexRequest
9, // 41: milvus.proto.index.IndexCoord.GetIndexState:input_type -> milvus.proto.index.GetIndexStateRequest
11, // 42: milvus.proto.index.IndexCoord.GetSegmentIndexState:input_type -> milvus.proto.index.GetSegmentIndexStateRequest
16, // 43: milvus.proto.index.IndexCoord.GetIndexInfos:input_type -> milvus.proto.index.GetIndexInfoRequest
20, // 44: milvus.proto.index.IndexCoord.DropIndex:input_type -> milvus.proto.index.DropIndexRequest
21, // 45: milvus.proto.index.IndexCoord.DescribeIndex:input_type -> milvus.proto.index.DescribeIndexRequest
28, // 46: milvus.proto.index.IndexCoord.GetIndexStatistics:input_type -> milvus.proto.index.GetIndexStatisticsRequest
23, // 47: milvus.proto.index.IndexCoord.GetIndexBuildProgress:input_type -> milvus.proto.index.GetIndexBuildProgressRequest
45, // 48: milvus.proto.index.IndexCoord.ShowConfigurations:input_type -> milvus.proto.internal.ShowConfigurationsRequest
46, // 49: milvus.proto.index.IndexCoord.GetMetrics:input_type -> milvus.proto.milvus.GetMetricsRequest
47, // 50: milvus.proto.index.IndexCoord.CheckHealth:input_type -> milvus.proto.milvus.CheckHealthRequest
41, // 51: milvus.proto.index.IndexCoord.CreateIndex:output_type -> milvus.proto.common.Status
41, // 52: milvus.proto.index.IndexCoord.AlterIndex:output_type -> milvus.proto.common.Status
10, // 53: milvus.proto.index.IndexCoord.GetIndexState:output_type -> milvus.proto.index.GetIndexStateResponse
13, // 54: milvus.proto.index.IndexCoord.GetSegmentIndexState:output_type -> milvus.proto.index.GetSegmentIndexStateResponse
19, // 55: milvus.proto.index.IndexCoord.GetIndexInfos:output_type -> milvus.proto.index.GetIndexInfoResponse
41, // 56: milvus.proto.index.IndexCoord.DropIndex:output_type -> milvus.proto.common.Status
22, // 57: milvus.proto.index.IndexCoord.DescribeIndex:output_type -> milvus.proto.index.DescribeIndexResponse
29, // 58: milvus.proto.index.IndexCoord.GetIndexStatistics:output_type -> milvus.proto.index.GetIndexStatisticsResponse
24, // 59: milvus.proto.index.IndexCoord.GetIndexBuildProgress:output_type -> milvus.proto.index.GetIndexBuildProgressResponse
48, // 60: milvus.proto.index.IndexCoord.ShowConfigurations:output_type -> milvus.proto.internal.ShowConfigurationsResponse
49, // 61: milvus.proto.index.IndexCoord.GetMetrics:output_type -> milvus.proto.milvus.GetMetricsResponse
50, // 62: milvus.proto.index.IndexCoord.CheckHealth:output_type -> milvus.proto.milvus.CheckHealthResponse
51, // [51:63] is the sub-list for method output_type
39, // [39:51] is the sub-list for method input_type
39, // [39:39] is the sub-list for extension type_name
39, // [39:39] is the sub-list for extension extendee
0, // [0:39] is the sub-list for field type_name
37, // 35: milvus.proto.index.AnalyzeTask.cluster_params:type_name -> milvus.proto.index.AnalyzeTask.ClusterParamsEntry
2, // 36: milvus.proto.index.StatsTask.state:type_name -> milvus.proto.index.JobState
3, // 37: milvus.proto.index.StatsTask.subJobType:type_name -> milvus.proto.index.StatsSubJob
45, // 38: milvus.proto.index.StatsTask.file_resources:type_name -> milvus.proto.internal.FileResourceInfo
18, // 39: milvus.proto.index.GetIndexInfoResponse.SegmentInfoEntry.value:type_name -> milvus.proto.index.SegmentInfo
14, // 40: milvus.proto.index.IndexCoord.CreateIndex:input_type -> milvus.proto.index.CreateIndexRequest
15, // 41: milvus.proto.index.IndexCoord.AlterIndex:input_type -> milvus.proto.index.AlterIndexRequest
9, // 42: milvus.proto.index.IndexCoord.GetIndexState:input_type -> milvus.proto.index.GetIndexStateRequest
11, // 43: milvus.proto.index.IndexCoord.GetSegmentIndexState:input_type -> milvus.proto.index.GetSegmentIndexStateRequest
16, // 44: milvus.proto.index.IndexCoord.GetIndexInfos:input_type -> milvus.proto.index.GetIndexInfoRequest
20, // 45: milvus.proto.index.IndexCoord.DropIndex:input_type -> milvus.proto.index.DropIndexRequest
21, // 46: milvus.proto.index.IndexCoord.DescribeIndex:input_type -> milvus.proto.index.DescribeIndexRequest
28, // 47: milvus.proto.index.IndexCoord.GetIndexStatistics:input_type -> milvus.proto.index.GetIndexStatisticsRequest
23, // 48: milvus.proto.index.IndexCoord.GetIndexBuildProgress:input_type -> milvus.proto.index.GetIndexBuildProgressRequest
46, // 49: milvus.proto.index.IndexCoord.ShowConfigurations:input_type -> milvus.proto.internal.ShowConfigurationsRequest
47, // 50: milvus.proto.index.IndexCoord.GetMetrics:input_type -> milvus.proto.milvus.GetMetricsRequest
48, // 51: milvus.proto.index.IndexCoord.CheckHealth:input_type -> milvus.proto.milvus.CheckHealthRequest
42, // 52: milvus.proto.index.IndexCoord.CreateIndex:output_type -> milvus.proto.common.Status
42, // 53: milvus.proto.index.IndexCoord.AlterIndex:output_type -> milvus.proto.common.Status
10, // 54: milvus.proto.index.IndexCoord.GetIndexState:output_type -> milvus.proto.index.GetIndexStateResponse
13, // 55: milvus.proto.index.IndexCoord.GetSegmentIndexState:output_type -> milvus.proto.index.GetSegmentIndexStateResponse
19, // 56: milvus.proto.index.IndexCoord.GetIndexInfos:output_type -> milvus.proto.index.GetIndexInfoResponse
42, // 57: milvus.proto.index.IndexCoord.DropIndex:output_type -> milvus.proto.common.Status
22, // 58: milvus.proto.index.IndexCoord.DescribeIndex:output_type -> milvus.proto.index.DescribeIndexResponse
29, // 59: milvus.proto.index.IndexCoord.GetIndexStatistics:output_type -> milvus.proto.index.GetIndexStatisticsResponse
24, // 60: milvus.proto.index.IndexCoord.GetIndexBuildProgress:output_type -> milvus.proto.index.GetIndexBuildProgressResponse
49, // 61: milvus.proto.index.IndexCoord.ShowConfigurations:output_type -> milvus.proto.internal.ShowConfigurationsResponse
50, // 62: milvus.proto.index.IndexCoord.GetMetrics:output_type -> milvus.proto.milvus.GetMetricsResponse
51, // 63: milvus.proto.index.IndexCoord.CheckHealth:output_type -> milvus.proto.milvus.CheckHealthResponse
52, // [52:64] is the sub-list for method output_type
40, // [40:52] is the sub-list for method input_type
40, // [40:40] is the sub-list for extension type_name
40, // [40:40] is the sub-list for extension extendee
0, // [0:40] is the sub-list for field type_name
}
func init() { file_index_coord_proto_init() }
@@ -4200,7 +4240,7 @@ func file_index_coord_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_index_coord_proto_rawDesc,
NumEnums: 4,
NumMessages: 33,
NumMessages: 34,
NumExtensions: 0,
NumServices: 1,
},
+4
View File
@@ -842,6 +842,8 @@ message SyncAction {
int64 TargetVersion = 9;
repeated int64 droppedInTarget = 10;
msg.MsgPosition checkpoint = 11;
// For snapshot-owned layouts, UpdateVersion activates complete bindings
// with the segment view. UpdatePartitionStats may only prefetch that format.
map<int64, int64> partition_stats_versions = 12;
msg.MsgPosition deleteCP = 13;
map<int64, int64> sealed_segment_row_count = 14; // segmentID -> row count, same as sealedInTarget
@@ -980,6 +982,8 @@ message ChannelTarget {
repeated PartitionTarget partition_targets = 4;
msg.MsgPosition seek_position = 5;
msg.MsgPosition delete_checkpoint = 6;
// Exact stats versions bound to this persisted target, per partition.
map<int64, int64> partition_stats_versions = 7;
}
message CollectionTarget {
File diff suppressed because it is too large. Load diff
+2
View File
@@ -170,6 +170,8 @@ message AnalyzeRequest {
int64 max_cluster_size = 17;
int64 task_slot = 18;
repeated common.KeyValuePair plugin_context = 19;
string cluster_type = 20;
map<string, string> cluster_params = 21;
}
message CreateStatsRequest {
+468 -438
View File
@@ -917,6 +917,8 @@ type AnalyzeRequest struct {
MaxClusterSize int64 `protobuf:"varint,17,opt,name=max_cluster_size,json=maxClusterSize,proto3" json:"max_cluster_size,omitempty"`
TaskSlot int64 `protobuf:"varint,18,opt,name=task_slot,json=taskSlot,proto3" json:"task_slot,omitempty"`
PluginContext []*commonpb.KeyValuePair `protobuf:"bytes,19,rep,name=plugin_context,json=pluginContext,proto3" json:"plugin_context,omitempty"`
ClusterType string `protobuf:"bytes,20,opt,name=cluster_type,json=clusterType,proto3" json:"cluster_type,omitempty"`
ClusterParams map[string]string `protobuf:"bytes,21,rep,name=cluster_params,json=clusterParams,proto3" json:"cluster_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
}
func (x *AnalyzeRequest) Reset() {
@@ -1084,6 +1086,20 @@ func (x *AnalyzeRequest) GetPluginContext() []*commonpb.KeyValuePair {
return nil
}
func (x *AnalyzeRequest) GetClusterType() string {
if x != nil {
return x.ClusterType
}
return ""
}
func (x *AnalyzeRequest) GetClusterParams() map[string]string {
if x != nil {
return x.ClusterParams
}
return nil
}
type CreateStatsRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -2449,7 +2465,7 @@ var file_worker_proto_rawDesc = []byte{
0x64, 0x69, 0x73, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x65, 0x6e, 0x61, 0x62,
0x6c, 0x65, 0x44, 0x69, 0x73, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f,
0x73, 0x6c, 0x6f, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74,
0x61, 0x6c, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x22, 0xbd, 0x07, 0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c,
0x61, 0x6c, 0x53, 0x6c, 0x6f, 0x74, 0x73, 0x22, 0x80, 0x09, 0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c,
0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b,
@@ -2503,360 +2519,372 @@ var file_worker_proto_rawDesc = []byte{
0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75,
0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e,
0x74, 0x65, 0x78, 0x74, 0x1a, 0x61, 0x0a, 0x11, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53,
0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79,
0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6c,
0x74, 0x65, 0x78, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x5f,
0x74, 0x79, 0x70, 0x65, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x63, 0x6c, 0x75, 0x73, 0x74,
0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x15, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x35, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x64, 0x65, 0x78, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x2e, 0x43, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x61, 0x0a, 0x11, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74,
0x53, 0x74, 0x61, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65,
0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x36, 0x0a, 0x05,
0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x2e, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x76,
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x40, 0x0a, 0x12, 0x43, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf1, 0x0c, 0x0a, 0x12, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12,
0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65,
0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63,
0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70,
0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x25, 0x0a,
0x0e, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18,
0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61,
0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49,
0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74,
0x49, 0x44, 0x12, 0x3f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x67,
0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c,
0x64, 0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4c,
0x6f, 0x67, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6c, 0x6f, 0x67,
0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c,
0x64, 0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x4c, 0x6f,
0x67, 0x73, 0x12, 0x48, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61,
0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xf1, 0x0c, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c,
0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06,
0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x61,
0x73, 0x6b, 0x49, 0x44, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69,
0x6f, 0x6e, 0x49, 0x44, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c,
0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74,
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70,
0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e,
0x73, 0x65, 0x72, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01,
0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65,
0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x06,
0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12,
0x3f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x07,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69,
0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4c, 0x6f, 0x67, 0x73,
0x12, 0x3d, 0x0a, 0x0a, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x08,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69,
0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x09, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x4c, 0x6f, 0x67, 0x73, 0x12,
0x48, 0x0a, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69,
0x67, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x74, 0x6f,
0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x73, 0x74, 0x6f, 0x72,
0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x06, 0x73, 0x63, 0x68,
0x65, 0x6d, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e,
0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61,
0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x3f, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x4a,
0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6d,
0x53, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x73,
0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, 0x0a, 0x06,
0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x73, 0x63, 0x68, 0x65,
0x6d, 0x61, 0x2e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x63, 0x68,
0x65, 0x6d, 0x61, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x3f, 0x0a, 0x0a, 0x73,
0x75, 0x62, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32,
0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x75, 0x62, 0x4a, 0x6f, 0x62,
0x52, 0x0a, 0x73, 0x75, 0x62, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0f,
0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18,
0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x65, 0x67,
0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c,
0x6f, 0x67, 0x49, 0x44, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72,
0x74, 0x4c, 0x6f, 0x67, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67,
0x49, 0x44, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67,
0x49, 0x44, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x0f,
0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x25, 0x0a,
0x0e, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x18,
0x10, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x54, 0x74, 0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f,
0x74, 0x73, 0x18, 0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e,
0x74, 0x54, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67,
0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62,
0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x31, 0x0a, 0x15,
0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f,
0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12,
0x40, 0x0a, 0x1d, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74,
0x73, 0x5f, 0x74, 0x61, 0x6e, 0x74, 0x69, 0x76, 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79,
0x18, 0x15, 0x20, 0x01, 0x28, 0x03, 0x52, 0x19, 0x6a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53,
0x74, 0x61, 0x74, 0x73, 0x54, 0x61, 0x6e, 0x74, 0x69, 0x76, 0x79, 0x4d, 0x65, 0x6d, 0x6f, 0x72,
0x79, 0x12, 0x3a, 0x0a, 0x1a, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74,
0x61, 0x74, 0x73, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18,
0x16, 0x20, 0x01, 0x28, 0x03, 0x52, 0x16, 0x6a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74,
0x61, 0x74, 0x73, 0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3f, 0x0a,
0x1d, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79,
0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x17,
0x20, 0x01, 0x28, 0x08, 0x52, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4a, 0x73, 0x6f, 0x6e,
0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x1b,
0x0a, 0x09, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28,
0x03, 0x52, 0x08, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73,
0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x19,
0x20, 0x01, 0x28, 0x03, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f,
0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x76, 0x65, 0x72,
0x73, 0x69, 0x6f, 0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72,
0x65, 0x6e, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x0e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f,
0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d,
0x6d, 0x6f, 0x6e, 0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72,
0x52, 0x0d, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12,
0x46, 0x0a, 0x20, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x61,
0x78, 0x5f, 0x73, 0x68, 0x72, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75,
0x6d, 0x6e, 0x73, 0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1c, 0x6a, 0x73, 0x6f, 0x6e, 0x53,
0x74, 0x61, 0x74, 0x73, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x72, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67,
0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x24, 0x6a, 0x73, 0x6f, 0x6e, 0x5f,
0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x73, 0x68, 0x72, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x5f,
0x72, 0x61, 0x74, 0x69, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18,
0x1d, 0x20, 0x01, 0x28, 0x01, 0x52, 0x20, 0x6a, 0x73, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73,
0x53, 0x68, 0x72, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x54, 0x68,
0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x3c, 0x0a, 0x1b, 0x6a, 0x73, 0x6f, 0x6e, 0x5f,
0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x61, 0x74, 0x63,
0x68, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x6a, 0x73,
0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63,
0x68, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
0x74, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61,
0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x0e, 0x66, 0x69,
0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x20, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52,
0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x66, 0x69, 0x6c,
0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x65,
0x6c, 0x74, 0x61, 0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x22, 0xf8,
0x02, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x56, 0x32, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72,
0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65,
0x72, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20,
0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x12, 0x36, 0x0a, 0x08, 0x6a,
0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x54,
0x79, 0x70, 0x65, 0x12, 0x4d, 0x0a, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x5f, 0x72,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65,
0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x75, 0x62, 0x4a, 0x6f, 0x62, 0x52, 0x0a, 0x73,
0x75, 0x62, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x12, 0x28, 0x0a, 0x0f, 0x74, 0x61, 0x72,
0x67, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18, 0x0c, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x53, 0x65, 0x67, 0x6d, 0x65, 0x6e,
0x74, 0x49, 0x44, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f, 0x67, 0x49,
0x44, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f,
0x67, 0x49, 0x44, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x44, 0x18,
0x0e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x44, 0x12,
0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28,
0x03, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f,
0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x74, 0x6c, 0x18, 0x10, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x74,
0x6c, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x73, 0x18,
0x11, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x73,
0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x73, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x18, 0x12, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x74, 0x61, 0x73, 0x6b, 0x56, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x4d, 0x61, 0x78,
0x53, 0x69, 0x7a, 0x65, 0x18, 0x13, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x62, 0x69, 0x6e, 0x6c,
0x6f, 0x67, 0x4d, 0x61, 0x78, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x31, 0x0a, 0x15, 0x65, 0x6e, 0x61,
0x62, 0x6c, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x73, 0x18, 0x14, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65,
0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x40, 0x0a, 0x1d,
0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x74,
0x61, 0x6e, 0x74, 0x69, 0x76, 0x79, 0x5f, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x18, 0x15, 0x20,
0x01, 0x28, 0x03, 0x52, 0x19, 0x6a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74,
0x73, 0x54, 0x61, 0x6e, 0x74, 0x69, 0x76, 0x79, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x12, 0x3a,
0x0a, 0x1a, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73,
0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x16, 0x20, 0x01,
0x28, 0x03, 0x52, 0x16, 0x6a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73,
0x44, 0x61, 0x74, 0x61, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x3f, 0x0a, 0x1d, 0x65, 0x6e,
0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74,
0x61, 0x74, 0x73, 0x5f, 0x69, 0x6e, 0x5f, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x17, 0x20, 0x01, 0x28,
0x08, 0x52, 0x18, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79,
0x53, 0x74, 0x61, 0x74, 0x73, 0x49, 0x6e, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74,
0x61, 0x73, 0x6b, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x18, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
0x74, 0x61, 0x73, 0x6b, 0x53, 0x6c, 0x6f, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x74, 0x6f, 0x72,
0x61, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x19, 0x20, 0x01, 0x28,
0x03, 0x52, 0x0e, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
0x6e, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x61,
0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f,
0x6e, 0x18, 0x1a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x12, 0x48, 0x0a, 0x0e, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6e,
0x74, 0x65, 0x78, 0x74, 0x18, 0x1b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
0x2e, 0x4b, 0x65, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0d, 0x70,
0x6c, 0x75, 0x67, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x46, 0x0a, 0x20,
0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x73,
0x68, 0x72, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73,
0x18, 0x1c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x1c, 0x6a, 0x73, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x73, 0x4d, 0x61, 0x78, 0x53, 0x68, 0x72, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6c,
0x75, 0x6d, 0x6e, 0x73, 0x12, 0x4e, 0x0a, 0x24, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x73, 0x5f, 0x73, 0x68, 0x72, 0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x1d, 0x20, 0x01,
0x28, 0x01, 0x52, 0x20, 0x6a, 0x73, 0x6f, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x68, 0x72,
0x65, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73,
0x68, 0x6f, 0x6c, 0x64, 0x12, 0x3c, 0x0a, 0x1b, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x61,
0x74, 0x73, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x73,
0x69, 0x7a, 0x65, 0x18, 0x1e, 0x20, 0x01, 0x28, 0x03, 0x52, 0x17, 0x6a, 0x73, 0x6f, 0x6e, 0x53,
0x74, 0x61, 0x74, 0x73, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x61, 0x74, 0x63, 0x68, 0x53, 0x69,
0x7a, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x70,
0x61, 0x74, 0x68, 0x18, 0x1f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x6e, 0x69, 0x66,
0x65, 0x73, 0x74, 0x50, 0x61, 0x74, 0x68, 0x12, 0x4e, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x5f,
0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x18, 0x20, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2e, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f,
0x75, 0x72, 0x63, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0d, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65,
0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x65, 0x6e, 0x61, 0x62, 0x6c,
0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61,
0x18, 0x21, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x4d, 0x61,
0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x22, 0xf8, 0x02, 0x0a, 0x12,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44,
0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x12, 0x36, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f,
0x78, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x48, 0x00, 0x52, 0x0e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x4b, 0x0a, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x43,
0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48,
0x00, 0x52, 0x0c, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x4d, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00,
0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x09,
0x0a, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x84, 0x01, 0x0a, 0x12, 0x51, 0x75,
0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18,
0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52,
0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f,
0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65,
0x12, 0x4d, 0x0a, 0x0f, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x5f, 0x72, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52,
0x0e, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x4b, 0x0a, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c,
0x69, 0x6e, 0x64, 0x65, 0x78, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x0d,
0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x06, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53,
0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73,
0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x72,
0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x84, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79,
0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a,
0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x74,
0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x74, 0x61,
0x73, 0x6b, 0x49, 0x44, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74, 0x79, 0x70,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4a, 0x6f, 0x62,
0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x22, 0xfa, 0x03,
0x0a, 0x0d, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12,
0x18, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x44, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61,
0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6b,
0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x72, 0x69,
0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x04, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x53, 0x69, 0x7a,
0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e,
0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x61, 0x73,
0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e,
0x64, 0x65, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
0x05, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x13, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20,
0x01, 0x28, 0x03, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74,
0x6f, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65,
0x6d, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65,
0x6d, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
0x5f, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x63, 0x75, 0x72,
0x72, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x18, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f,
0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69,
0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x49, 0x6e,
0x64, 0x65, 0x78, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x74, 0x68, 0x56, 0x65, 0x72, 0x73,
0x69, 0x6f, 0x6e, 0x52, 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50,
0x61, 0x74, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a, 0x0f, 0x49, 0x6e,
0x64, 0x65, 0x78, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3b, 0x0a,
0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e,
0x64, 0x65, 0x78, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e, 0x66,
0x6f, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xa3, 0x01, 0x0a, 0x0d, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06,
0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x74, 0x61,
0x73, 0x6b, 0x49, 0x44, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74,
0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c,
0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66,
0x61, 0x69, 0x6c, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x65, 0x6e,
0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0d, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x46, 0x69, 0x6c, 0x65,
0x22, 0x4d, 0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22,
0x9e, 0x07, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
0x22, 0xfa, 0x03, 0x0a, 0x0d, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x44, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x52, 0x07, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x44, 0x12, 0x35, 0x0a, 0x05,
0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
0x6e, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74,
0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x66, 0x69, 0x6c,
0x65, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x69, 0x6e,
0x64, 0x65, 0x78, 0x46, 0x69, 0x6c, 0x65, 0x4b, 0x65, 0x79, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x73,
0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x04,
0x20, 0x01, 0x28, 0x04, 0x52, 0x0e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64,
0x53, 0x69, 0x7a, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x61,
0x73, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x52,
0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74,
0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06,
0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x49, 0x6e, 0x64,
0x65, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x13, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x42, 0x02, 0x18, 0x01, 0x52, 0x11, 0x69, 0x6e, 0x64, 0x65,
0x78, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a,
0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52,
0x07, 0x6d, 0x65, 0x6d, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x75, 0x72, 0x72,
0x65, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19,
0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x53, 0x63, 0x61, 0x6c, 0x61, 0x72, 0x49, 0x6e, 0x64,
0x65, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x62, 0x0a, 0x18, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x5f, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x29, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x6f, 0x72, 0x65, 0x50, 0x61, 0x74, 0x68, 0x56,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x15, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x6f,
0x72, 0x65, 0x50, 0x61, 0x74, 0x68, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x4e, 0x0a,
0x0f, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
0x12, 0x3b, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x54, 0x61, 0x73, 0x6b,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xa3, 0x01,
0x0a, 0x0d, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12,
0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52,
0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4a, 0x6f, 0x62, 0x53,
0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66,
0x61, 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c,
0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18, 0x04, 0x20, 0x01,
0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44,
0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18,
0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44, 0x18,
0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x44,
0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x3f, 0x0a, 0x0b, 0x69, 0x6e,
0x73, 0x65, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x64,
0x61, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x52,
0x0a, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x73,
0x74, 0x61, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x64,
0x61, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x52,
0x09, 0x73, 0x74, 0x61, 0x74, 0x73, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x5a, 0x0a, 0x0f, 0x74, 0x65,
0x78, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x0a, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4c, 0x6f,
0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x74, 0x65, 0x78, 0x74, 0x53, 0x74, 0x61,
0x74, 0x73, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d, 0x5f, 0x72, 0x6f,
0x77, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x75, 0x6d, 0x52, 0x6f, 0x77,
0x73, 0x12, 0x3b, 0x0a, 0x09, 0x62, 0x6d, 0x32, 0x35, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x0c,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69,
0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x08, 0x62, 0x6d, 0x32, 0x35, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x64,
0x0a, 0x13, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73,
0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x4a, 0x73, 0x6f,
0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4c, 0x6f, 0x67, 0x73, 0x45, 0x6e, 0x74,
0x72, 0x79, 0x52, 0x10, 0x6a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73,
0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74,
0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73,
0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65, 0x4d, 0x61, 0x6e,
0x69, 0x66, 0x65, 0x73, 0x74, 0x1a, 0x63, 0x0a, 0x12, 0x54, 0x65, 0x78, 0x74, 0x53, 0x74, 0x61,
0x74, 0x73, 0x4c, 0x6f, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b,
0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61,
0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x64, 0x0a, 0x15, 0x4a, 0x73,
0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4c, 0x6f, 0x67, 0x73, 0x45, 0x6e,
0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79,
0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01,
0x22, 0x49, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
0x12, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xeb, 0x02, 0x0a, 0x13,
0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73,
0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75,
0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x51, 0x0a, 0x11, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f,
0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4a, 0x6f, 0x62, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x4a,
0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x54, 0x0a, 0x13, 0x61, 0x6e, 0x61,
0x6c, 0x79, 0x7a, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x25, 0x0a, 0x0e,
0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x04,
0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x6f, 0x69, 0x64, 0x73, 0x46,
0x69, 0x6c, 0x65, 0x22, 0x4d, 0x0a, 0x0e, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x52, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x3b, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x41, 0x6e, 0x61, 0x6c,
0x79, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x11, 0x61, 0x6e,
0x61, 0x6c, 0x79, 0x7a, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12,
0x4e, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0f,
0x73, 0x74, 0x61, 0x74, 0x73, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x42,
0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x83, 0x01, 0x0a, 0x11, 0x44, 0x72,
0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12,
0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01,
0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x18, 0x0a,
0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07,
0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6a, 0x6f, 0x62, 0x5f, 0x74,
0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x79, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x73, 0x22, 0x9e, 0x07, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x18, 0x01, 0x20, 0x01,
0x28, 0x03, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x12, 0x32, 0x0a, 0x05, 0x73, 0x74,
0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x4a,
0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x32,
0xd8, 0x07, 0x0a, 0x09, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x50, 0x0a,
0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x24, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
0x1a, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12,
0x5a, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x24, 0x2e, 0x6d,
0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1f,
0x0a, 0x0b, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20,
0x01, 0x28, 0x09, 0x52, 0x0a, 0x66, 0x61, 0x69, 0x6c, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12,
0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x44, 0x18,
0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f,
0x6e, 0x49, 0x44, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74, 0x69, 0x6f, 0x6e,
0x49, 0x44, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x74,
0x69, 0x6f, 0x6e, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74,
0x49, 0x44, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e,
0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x07,
0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x3f, 0x0a,
0x0b, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x08, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x6c,
0x6f, 0x67, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x65, 0x72, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x3d,
0x0a, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x09, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x69, 0x6e, 0x6c,
0x6f, 0x67, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x73, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x5a, 0x0a,
0x0f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x73,
0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74,
0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x53, 0x74, 0x61, 0x74,
0x73, 0x4c, 0x6f, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x74, 0x65, 0x78, 0x74,
0x53, 0x74, 0x61, 0x74, 0x73, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x75, 0x6d,
0x5f, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x6e, 0x75, 0x6d,
0x52, 0x6f, 0x77, 0x73, 0x12, 0x3b, 0x0a, 0x09, 0x62, 0x6d, 0x32, 0x35, 0x5f, 0x6c, 0x6f, 0x67,
0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x46, 0x69, 0x65, 0x6c,
0x64, 0x42, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x52, 0x08, 0x62, 0x6d, 0x32, 0x35, 0x4c, 0x6f, 0x67,
0x73, 0x12, 0x64, 0x0a, 0x13, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x74,
0x61, 0x74, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x35,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e,
0x64, 0x65, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e,
0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4c, 0x6f, 0x67, 0x73,
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x10, 0x6a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74,
0x61, 0x74, 0x73, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66,
0x65, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x61, 0x6e, 0x69, 0x66,
0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x6e, 0x69,
0x66, 0x65, 0x73, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x62, 0x61, 0x73, 0x65,
0x4d, 0x61, 0x6e, 0x69, 0x66, 0x65, 0x73, 0x74, 0x1a, 0x63, 0x0a, 0x12, 0x54, 0x65, 0x78, 0x74,
0x53, 0x74, 0x61, 0x74, 0x73, 0x4c, 0x6f, 0x67, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10,
0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79,
0x12, 0x37, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
0x21, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x64,
0x61, 0x74, 0x61, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x53, 0x74, 0x61,
0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x64, 0x0a,
0x15, 0x4a, 0x73, 0x6f, 0x6e, 0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4c, 0x6f, 0x67,
0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20,
0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4a, 0x73, 0x6f, 0x6e,
0x4b, 0x65, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
0x02, 0x38, 0x01, 0x22, 0x49, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x73, 0x12, 0x39, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01,
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0xeb,
0x02, 0x0a, 0x13, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61,
0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63,
0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09,
0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x12, 0x51, 0x0a, 0x11, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4a,
0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x54, 0x0a, 0x13,
0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x5f, 0x6a, 0x6f, 0x62, 0x5f, 0x72, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x41,
0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48, 0x00, 0x52,
0x11, 0x61, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x73, 0x12, 0x4e, 0x0a, 0x11, 0x73, 0x74, 0x61, 0x74, 0x73, 0x5f, 0x6a, 0x6f, 0x62, 0x5f,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x48,
0x00, 0x52, 0x0f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x83, 0x01, 0x0a,
0x11, 0x44, 0x72, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x44,
0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28,
0x03, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x44, 0x73, 0x12, 0x36, 0x0a, 0x08, 0x6a, 0x6f,
0x62, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65,
0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62,
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x08, 0x44,
0x72, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x23, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x72, 0x6f,
0x70, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0b, 0x47,
0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6c,
0x78, 0x2e, 0x4a, 0x6f, 0x62, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6a, 0x6f, 0x62, 0x54, 0x79,
0x70, 0x65, 0x32, 0xd8, 0x07, 0x0a, 0x09, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x4e, 0x6f, 0x64, 0x65,
0x12, 0x50, 0x0a, 0x09, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x12, 0x24, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x52, 0x65, 0x71, 0x75,
0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
0x22, 0x00, 0x12, 0x5a, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x12,
0x24, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x64, 0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e,
0x0a, 0x08, 0x44, 0x72, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x12, 0x23, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74,
0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x54, 0x0a,
0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x56, 0x32, 0x12, 0x26, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65,
0x78, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x56, 0x32, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75,
0x73, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73,
0x56, 0x32, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62,
0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e,
0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x52, 0x65, 0x73, 0x70, 0x6f,
0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0a, 0x44, 0x72, 0x6f, 0x70, 0x4a, 0x6f, 0x62,
0x73, 0x56, 0x32, 0x12, 0x25, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x72, 0x6f, 0x70, 0x4a, 0x6f, 0x62,
0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e,
0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0a, 0x47, 0x65, 0x74,
0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x47, 0x65,
0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d,
0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0a, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75,
0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x44, 0x72, 0x6f, 0x70, 0x4a, 0x6f, 0x62, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a,
0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x5a,
0x0a, 0x09, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x24, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b,
0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x08, 0x44, 0x72,
0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x60,
0x0a, 0x0b, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x26, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f, 0x62, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65,
0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x47, 0x65, 0x74, 0x4a, 0x6f,
0x62, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00,
0x12, 0x54, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x56, 0x32, 0x12,
0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69,
0x6e, 0x64, 0x65, 0x78, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4a, 0x6f, 0x62, 0x56, 0x32,
0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x60, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a,
0x6f, 0x62, 0x73, 0x56, 0x32, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70,
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79,
0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x52, 0x65,
0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x0a, 0x44, 0x72, 0x6f, 0x70,
0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x12, 0x25, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44, 0x72, 0x6f, 0x70,
0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f,
0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69,
0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2d,
0x69, 0x6f, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2f, 0x70, 0x6b, 0x67, 0x2f, 0x76, 0x33,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x70, 0x62, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x4a, 0x6f, 0x62, 0x73, 0x56, 0x32, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e,
0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f, 0x6d,
0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x12, 0x5f, 0x0a, 0x0a,
0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x12, 0x26, 0x2e, 0x6d, 0x69, 0x6c,
0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73,
0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x65, 0x74, 0x72,
0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a,
0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x25, 0x2e, 0x6d, 0x69,
0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65,
0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22,
0x00, 0x12, 0x5a, 0x0a, 0x09, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x24,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e,
0x64, 0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71,
0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x54,
0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a,
0x08, 0x44, 0x72, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x12, 0x23, 0x2e, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x44,
0x72, 0x6f, 0x70, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b,
0x2e, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x63, 0x6f,
0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x00, 0x42, 0x33, 0x5a,
0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x6c, 0x76,
0x75, 0x73, 0x2d, 0x69, 0x6f, 0x2f, 0x6d, 0x69, 0x6c, 0x76, 0x75, 0x73, 0x2f, 0x70, 0x6b, 0x67,
0x2f, 0x76, 0x33, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@@ -2871,7 +2899,7 @@ func file_worker_proto_rawDescGZIP() []byte {
return file_worker_proto_rawDescData
}
var file_worker_proto_msgTypes = make([]protoimpl.MessageInfo, 29)
var file_worker_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
var file_worker_proto_goTypes = []interface{}{
(*CreateTaskRequest)(nil), // 0: milvus.proto.index.CreateTaskRequest
(*QueryTaskRequest)(nil), // 1: milvus.proto.index.QueryTaskRequest
@@ -2900,112 +2928,114 @@ var file_worker_proto_goTypes = []interface{}{
nil, // 24: milvus.proto.index.QueryTaskResponse.PropertiesEntry
nil, // 25: milvus.proto.index.DropTaskRequest.PropertiesEntry
nil, // 26: milvus.proto.index.AnalyzeRequest.SegmentStatsEntry
nil, // 27: milvus.proto.index.StatsResult.TextStatsLogsEntry
nil, // 28: milvus.proto.index.StatsResult.JsonKeyStatsLogsEntry
(*commonpb.Status)(nil), // 29: milvus.proto.common.Status
(*indexpb.StorageConfig)(nil), // 30: milvus.proto.index.StorageConfig
(*commonpb.KeyValuePair)(nil), // 31: milvus.proto.common.KeyValuePair
(schemapb.DataType)(0), // 32: milvus.proto.schema.DataType
(*indexpb.OptionalFieldInfo)(nil), // 33: milvus.proto.index.OptionalFieldInfo
(*schemapb.FieldSchema)(nil), // 34: milvus.proto.schema.FieldSchema
(*datapb.FieldBinlog)(nil), // 35: milvus.proto.data.FieldBinlog
(indexpb.IndexStorePathVersion)(0), // 36: milvus.proto.index.IndexStorePathVersion
(*indexpb.JobInfo)(nil), // 37: milvus.proto.index.JobInfo
(*schemapb.CollectionSchema)(nil), // 38: milvus.proto.schema.CollectionSchema
(indexpb.StatsSubJob)(0), // 39: milvus.proto.index.StatsSubJob
(*internalpb.FileResourceInfo)(nil), // 40: milvus.proto.internal.FileResourceInfo
(indexpb.JobType)(0), // 41: milvus.proto.index.JobType
(commonpb.IndexState)(0), // 42: milvus.proto.common.IndexState
(indexpb.JobState)(0), // 43: milvus.proto.index.JobState
(*indexpb.SegmentStats)(nil), // 44: milvus.proto.index.SegmentStats
(*datapb.TextIndexStats)(nil), // 45: milvus.proto.data.TextIndexStats
(*datapb.JsonKeyStats)(nil), // 46: milvus.proto.data.JsonKeyStats
(*milvuspb.GetMetricsRequest)(nil), // 47: milvus.proto.milvus.GetMetricsRequest
(*milvuspb.GetMetricsResponse)(nil), // 48: milvus.proto.milvus.GetMetricsResponse
nil, // 27: milvus.proto.index.AnalyzeRequest.ClusterParamsEntry
nil, // 28: milvus.proto.index.StatsResult.TextStatsLogsEntry
nil, // 29: milvus.proto.index.StatsResult.JsonKeyStatsLogsEntry
(*commonpb.Status)(nil), // 30: milvus.proto.common.Status
(*indexpb.StorageConfig)(nil), // 31: milvus.proto.index.StorageConfig
(*commonpb.KeyValuePair)(nil), // 32: milvus.proto.common.KeyValuePair
(schemapb.DataType)(0), // 33: milvus.proto.schema.DataType
(*indexpb.OptionalFieldInfo)(nil), // 34: milvus.proto.index.OptionalFieldInfo
(*schemapb.FieldSchema)(nil), // 35: milvus.proto.schema.FieldSchema
(*datapb.FieldBinlog)(nil), // 36: milvus.proto.data.FieldBinlog
(indexpb.IndexStorePathVersion)(0), // 37: milvus.proto.index.IndexStorePathVersion
(*indexpb.JobInfo)(nil), // 38: milvus.proto.index.JobInfo
(*schemapb.CollectionSchema)(nil), // 39: milvus.proto.schema.CollectionSchema
(indexpb.StatsSubJob)(0), // 40: milvus.proto.index.StatsSubJob
(*internalpb.FileResourceInfo)(nil), // 41: milvus.proto.internal.FileResourceInfo
(indexpb.JobType)(0), // 42: milvus.proto.index.JobType
(commonpb.IndexState)(0), // 43: milvus.proto.common.IndexState
(indexpb.JobState)(0), // 44: milvus.proto.index.JobState
(*indexpb.SegmentStats)(nil), // 45: milvus.proto.index.SegmentStats
(*datapb.TextIndexStats)(nil), // 46: milvus.proto.data.TextIndexStats
(*datapb.JsonKeyStats)(nil), // 47: milvus.proto.data.JsonKeyStats
(*milvuspb.GetMetricsRequest)(nil), // 48: milvus.proto.milvus.GetMetricsRequest
(*milvuspb.GetMetricsResponse)(nil), // 49: milvus.proto.milvus.GetMetricsResponse
}
var file_worker_proto_depIdxs = []int32{
22, // 0: milvus.proto.index.CreateTaskRequest.properties:type_name -> milvus.proto.index.CreateTaskRequest.PropertiesEntry
23, // 1: milvus.proto.index.QueryTaskRequest.properties:type_name -> milvus.proto.index.QueryTaskRequest.PropertiesEntry
29, // 2: milvus.proto.index.QueryTaskResponse.status:type_name -> milvus.proto.common.Status
30, // 2: milvus.proto.index.QueryTaskResponse.status:type_name -> milvus.proto.common.Status
24, // 3: milvus.proto.index.QueryTaskResponse.properties:type_name -> milvus.proto.index.QueryTaskResponse.PropertiesEntry
25, // 4: milvus.proto.index.DropTaskRequest.properties:type_name -> milvus.proto.index.DropTaskRequest.PropertiesEntry
30, // 5: milvus.proto.index.CreateJobRequest.storage_config:type_name -> milvus.proto.index.StorageConfig
31, // 6: milvus.proto.index.CreateJobRequest.index_params:type_name -> milvus.proto.common.KeyValuePair
31, // 7: milvus.proto.index.CreateJobRequest.type_params:type_name -> milvus.proto.common.KeyValuePair
32, // 8: milvus.proto.index.CreateJobRequest.field_type:type_name -> milvus.proto.schema.DataType
33, // 9: milvus.proto.index.CreateJobRequest.optional_scalar_fields:type_name -> milvus.proto.index.OptionalFieldInfo
34, // 10: milvus.proto.index.CreateJobRequest.field:type_name -> milvus.proto.schema.FieldSchema
35, // 11: milvus.proto.index.CreateJobRequest.insert_logs:type_name -> milvus.proto.data.FieldBinlog
31, // 12: milvus.proto.index.CreateJobRequest.plugin_context:type_name -> milvus.proto.common.KeyValuePair
36, // 13: milvus.proto.index.CreateJobRequest.index_store_path_version:type_name -> milvus.proto.index.IndexStorePathVersion
29, // 14: milvus.proto.index.QueryJobsResponse.status:type_name -> milvus.proto.common.Status
31, // 5: milvus.proto.index.CreateJobRequest.storage_config:type_name -> milvus.proto.index.StorageConfig
32, // 6: milvus.proto.index.CreateJobRequest.index_params:type_name -> milvus.proto.common.KeyValuePair
32, // 7: milvus.proto.index.CreateJobRequest.type_params:type_name -> milvus.proto.common.KeyValuePair
33, // 8: milvus.proto.index.CreateJobRequest.field_type:type_name -> milvus.proto.schema.DataType
34, // 9: milvus.proto.index.CreateJobRequest.optional_scalar_fields:type_name -> milvus.proto.index.OptionalFieldInfo
35, // 10: milvus.proto.index.CreateJobRequest.field:type_name -> milvus.proto.schema.FieldSchema
36, // 11: milvus.proto.index.CreateJobRequest.insert_logs:type_name -> milvus.proto.data.FieldBinlog
32, // 12: milvus.proto.index.CreateJobRequest.plugin_context:type_name -> milvus.proto.common.KeyValuePair
37, // 13: milvus.proto.index.CreateJobRequest.index_store_path_version:type_name -> milvus.proto.index.IndexStorePathVersion
30, // 14: milvus.proto.index.QueryJobsResponse.status:type_name -> milvus.proto.common.Status
14, // 15: milvus.proto.index.QueryJobsResponse.index_infos:type_name -> milvus.proto.index.IndexTaskInfo
29, // 16: milvus.proto.index.GetJobStatsResponse.status:type_name -> milvus.proto.common.Status
37, // 17: milvus.proto.index.GetJobStatsResponse.job_infos:type_name -> milvus.proto.index.JobInfo
32, // 18: milvus.proto.index.AnalyzeRequest.field_type:type_name -> milvus.proto.schema.DataType
30, // 16: milvus.proto.index.GetJobStatsResponse.status:type_name -> milvus.proto.common.Status
38, // 17: milvus.proto.index.GetJobStatsResponse.job_infos:type_name -> milvus.proto.index.JobInfo
33, // 18: milvus.proto.index.AnalyzeRequest.field_type:type_name -> milvus.proto.schema.DataType
26, // 19: milvus.proto.index.AnalyzeRequest.segment_stats:type_name -> milvus.proto.index.AnalyzeRequest.SegmentStatsEntry
30, // 20: milvus.proto.index.AnalyzeRequest.storage_config:type_name -> milvus.proto.index.StorageConfig
34, // 21: milvus.proto.index.AnalyzeRequest.field:type_name -> milvus.proto.schema.FieldSchema
31, // 22: milvus.proto.index.AnalyzeRequest.plugin_context:type_name -> milvus.proto.common.KeyValuePair
35, // 23: milvus.proto.index.CreateStatsRequest.insert_logs:type_name -> milvus.proto.data.FieldBinlog
35, // 24: milvus.proto.index.CreateStatsRequest.delta_logs:type_name -> milvus.proto.data.FieldBinlog
30, // 25: milvus.proto.index.CreateStatsRequest.storage_config:type_name -> milvus.proto.index.StorageConfig
38, // 26: milvus.proto.index.CreateStatsRequest.schema:type_name -> milvus.proto.schema.CollectionSchema
39, // 27: milvus.proto.index.CreateStatsRequest.subJobType:type_name -> milvus.proto.index.StatsSubJob
31, // 28: milvus.proto.index.CreateStatsRequest.plugin_context:type_name -> milvus.proto.common.KeyValuePair
40, // 29: milvus.proto.index.CreateStatsRequest.file_resources:type_name -> milvus.proto.internal.FileResourceInfo
41, // 30: milvus.proto.index.CreateJobV2Request.job_type:type_name -> milvus.proto.index.JobType
10, // 31: milvus.proto.index.CreateJobV2Request.analyze_request:type_name -> milvus.proto.index.AnalyzeRequest
4, // 32: milvus.proto.index.CreateJobV2Request.index_request:type_name -> milvus.proto.index.CreateJobRequest
11, // 33: milvus.proto.index.CreateJobV2Request.stats_request:type_name -> milvus.proto.index.CreateStatsRequest
41, // 34: milvus.proto.index.QueryJobsV2Request.job_type:type_name -> milvus.proto.index.JobType
42, // 35: milvus.proto.index.IndexTaskInfo.state:type_name -> milvus.proto.common.IndexState
36, // 36: milvus.proto.index.IndexTaskInfo.index_store_path_version:type_name -> milvus.proto.index.IndexStorePathVersion
14, // 37: milvus.proto.index.IndexJobResults.results:type_name -> milvus.proto.index.IndexTaskInfo
43, // 38: milvus.proto.index.AnalyzeResult.state:type_name -> milvus.proto.index.JobState
16, // 39: milvus.proto.index.AnalyzeResults.results:type_name -> milvus.proto.index.AnalyzeResult
43, // 40: milvus.proto.index.StatsResult.state:type_name -> milvus.proto.index.JobState
35, // 41: milvus.proto.index.StatsResult.insert_logs:type_name -> milvus.proto.data.FieldBinlog
35, // 42: milvus.proto.index.StatsResult.stats_logs:type_name -> milvus.proto.data.FieldBinlog
27, // 43: milvus.proto.index.StatsResult.text_stats_logs:type_name -> milvus.proto.index.StatsResult.TextStatsLogsEntry
35, // 44: milvus.proto.index.StatsResult.bm25_logs:type_name -> milvus.proto.data.FieldBinlog
28, // 45: milvus.proto.index.StatsResult.json_key_stats_logs:type_name -> milvus.proto.index.StatsResult.JsonKeyStatsLogsEntry
18, // 46: milvus.proto.index.StatsResults.results:type_name -> milvus.proto.index.StatsResult
29, // 47: milvus.proto.index.QueryJobsV2Response.status:type_name -> milvus.proto.common.Status
15, // 48: milvus.proto.index.QueryJobsV2Response.index_job_results:type_name -> milvus.proto.index.IndexJobResults
17, // 49: milvus.proto.index.QueryJobsV2Response.analyze_job_results:type_name -> milvus.proto.index.AnalyzeResults
19, // 50: milvus.proto.index.QueryJobsV2Response.stats_job_results:type_name -> milvus.proto.index.StatsResults
41, // 51: milvus.proto.index.DropJobsV2Request.job_type:type_name -> milvus.proto.index.JobType
44, // 52: milvus.proto.index.AnalyzeRequest.SegmentStatsEntry.value:type_name -> milvus.proto.index.SegmentStats
45, // 53: milvus.proto.index.StatsResult.TextStatsLogsEntry.value:type_name -> milvus.proto.data.TextIndexStats
46, // 54: milvus.proto.index.StatsResult.JsonKeyStatsLogsEntry.value:type_name -> milvus.proto.data.JsonKeyStats
4, // 55: milvus.proto.index.IndexNode.CreateJob:input_type -> milvus.proto.index.CreateJobRequest
5, // 56: milvus.proto.index.IndexNode.QueryJobs:input_type -> milvus.proto.index.QueryJobsRequest
7, // 57: milvus.proto.index.IndexNode.DropJobs:input_type -> milvus.proto.index.DropJobsRequest
8, // 58: milvus.proto.index.IndexNode.GetJobStats:input_type -> milvus.proto.index.GetJobStatsRequest
12, // 59: milvus.proto.index.IndexNode.CreateJobV2:input_type -> milvus.proto.index.CreateJobV2Request
13, // 60: milvus.proto.index.IndexNode.QueryJobsV2:input_type -> milvus.proto.index.QueryJobsV2Request
21, // 61: milvus.proto.index.IndexNode.DropJobsV2:input_type -> milvus.proto.index.DropJobsV2Request
47, // 62: milvus.proto.index.IndexNode.GetMetrics:input_type -> milvus.proto.milvus.GetMetricsRequest
0, // 63: milvus.proto.index.IndexNode.CreateTask:input_type -> milvus.proto.index.CreateTaskRequest
1, // 64: milvus.proto.index.IndexNode.QueryTask:input_type -> milvus.proto.index.QueryTaskRequest
3, // 65: milvus.proto.index.IndexNode.DropTask:input_type -> milvus.proto.index.DropTaskRequest
29, // 66: milvus.proto.index.IndexNode.CreateJob:output_type -> milvus.proto.common.Status
6, // 67: milvus.proto.index.IndexNode.QueryJobs:output_type -> milvus.proto.index.QueryJobsResponse
29, // 68: milvus.proto.index.IndexNode.DropJobs:output_type -> milvus.proto.common.Status
9, // 69: milvus.proto.index.IndexNode.GetJobStats:output_type -> milvus.proto.index.GetJobStatsResponse
29, // 70: milvus.proto.index.IndexNode.CreateJobV2:output_type -> milvus.proto.common.Status
20, // 71: milvus.proto.index.IndexNode.QueryJobsV2:output_type -> milvus.proto.index.QueryJobsV2Response
29, // 72: milvus.proto.index.IndexNode.DropJobsV2:output_type -> milvus.proto.common.Status
48, // 73: milvus.proto.index.IndexNode.GetMetrics:output_type -> milvus.proto.milvus.GetMetricsResponse
29, // 74: milvus.proto.index.IndexNode.CreateTask:output_type -> milvus.proto.common.Status
2, // 75: milvus.proto.index.IndexNode.QueryTask:output_type -> milvus.proto.index.QueryTaskResponse
29, // 76: milvus.proto.index.IndexNode.DropTask:output_type -> milvus.proto.common.Status
66, // [66:77] is the sub-list for method output_type
55, // [55:66] is the sub-list for method input_type
55, // [55:55] is the sub-list for extension type_name
55, // [55:55] is the sub-list for extension extendee
0, // [0:55] is the sub-list for field type_name
31, // 20: milvus.proto.index.AnalyzeRequest.storage_config:type_name -> milvus.proto.index.StorageConfig
35, // 21: milvus.proto.index.AnalyzeRequest.field:type_name -> milvus.proto.schema.FieldSchema
32, // 22: milvus.proto.index.AnalyzeRequest.plugin_context:type_name -> milvus.proto.common.KeyValuePair
27, // 23: milvus.proto.index.AnalyzeRequest.cluster_params:type_name -> milvus.proto.index.AnalyzeRequest.ClusterParamsEntry
36, // 24: milvus.proto.index.CreateStatsRequest.insert_logs:type_name -> milvus.proto.data.FieldBinlog
36, // 25: milvus.proto.index.CreateStatsRequest.delta_logs:type_name -> milvus.proto.data.FieldBinlog
31, // 26: milvus.proto.index.CreateStatsRequest.storage_config:type_name -> milvus.proto.index.StorageConfig
39, // 27: milvus.proto.index.CreateStatsRequest.schema:type_name -> milvus.proto.schema.CollectionSchema
40, // 28: milvus.proto.index.CreateStatsRequest.subJobType:type_name -> milvus.proto.index.StatsSubJob
32, // 29: milvus.proto.index.CreateStatsRequest.plugin_context:type_name -> milvus.proto.common.KeyValuePair
41, // 30: milvus.proto.index.CreateStatsRequest.file_resources:type_name -> milvus.proto.internal.FileResourceInfo
42, // 31: milvus.proto.index.CreateJobV2Request.job_type:type_name -> milvus.proto.index.JobType
10, // 32: milvus.proto.index.CreateJobV2Request.analyze_request:type_name -> milvus.proto.index.AnalyzeRequest
4, // 33: milvus.proto.index.CreateJobV2Request.index_request:type_name -> milvus.proto.index.CreateJobRequest
11, // 34: milvus.proto.index.CreateJobV2Request.stats_request:type_name -> milvus.proto.index.CreateStatsRequest
42, // 35: milvus.proto.index.QueryJobsV2Request.job_type:type_name -> milvus.proto.index.JobType
43, // 36: milvus.proto.index.IndexTaskInfo.state:type_name -> milvus.proto.common.IndexState
37, // 37: milvus.proto.index.IndexTaskInfo.index_store_path_version:type_name -> milvus.proto.index.IndexStorePathVersion
14, // 38: milvus.proto.index.IndexJobResults.results:type_name -> milvus.proto.index.IndexTaskInfo
44, // 39: milvus.proto.index.AnalyzeResult.state:type_name -> milvus.proto.index.JobState
16, // 40: milvus.proto.index.AnalyzeResults.results:type_name -> milvus.proto.index.AnalyzeResult
44, // 41: milvus.proto.index.StatsResult.state:type_name -> milvus.proto.index.JobState
36, // 42: milvus.proto.index.StatsResult.insert_logs:type_name -> milvus.proto.data.FieldBinlog
36, // 43: milvus.proto.index.StatsResult.stats_logs:type_name -> milvus.proto.data.FieldBinlog
28, // 44: milvus.proto.index.StatsResult.text_stats_logs:type_name -> milvus.proto.index.StatsResult.TextStatsLogsEntry
36, // 45: milvus.proto.index.StatsResult.bm25_logs:type_name -> milvus.proto.data.FieldBinlog
29, // 46: milvus.proto.index.StatsResult.json_key_stats_logs:type_name -> milvus.proto.index.StatsResult.JsonKeyStatsLogsEntry
18, // 47: milvus.proto.index.StatsResults.results:type_name -> milvus.proto.index.StatsResult
30, // 48: milvus.proto.index.QueryJobsV2Response.status:type_name -> milvus.proto.common.Status
15, // 49: milvus.proto.index.QueryJobsV2Response.index_job_results:type_name -> milvus.proto.index.IndexJobResults
17, // 50: milvus.proto.index.QueryJobsV2Response.analyze_job_results:type_name -> milvus.proto.index.AnalyzeResults
19, // 51: milvus.proto.index.QueryJobsV2Response.stats_job_results:type_name -> milvus.proto.index.StatsResults
42, // 52: milvus.proto.index.DropJobsV2Request.job_type:type_name -> milvus.proto.index.JobType
45, // 53: milvus.proto.index.AnalyzeRequest.SegmentStatsEntry.value:type_name -> milvus.proto.index.SegmentStats
46, // 54: milvus.proto.index.StatsResult.TextStatsLogsEntry.value:type_name -> milvus.proto.data.TextIndexStats
47, // 55: milvus.proto.index.StatsResult.JsonKeyStatsLogsEntry.value:type_name -> milvus.proto.data.JsonKeyStats
4, // 56: milvus.proto.index.IndexNode.CreateJob:input_type -> milvus.proto.index.CreateJobRequest
5, // 57: milvus.proto.index.IndexNode.QueryJobs:input_type -> milvus.proto.index.QueryJobsRequest
7, // 58: milvus.proto.index.IndexNode.DropJobs:input_type -> milvus.proto.index.DropJobsRequest
8, // 59: milvus.proto.index.IndexNode.GetJobStats:input_type -> milvus.proto.index.GetJobStatsRequest
12, // 60: milvus.proto.index.IndexNode.CreateJobV2:input_type -> milvus.proto.index.CreateJobV2Request
13, // 61: milvus.proto.index.IndexNode.QueryJobsV2:input_type -> milvus.proto.index.QueryJobsV2Request
21, // 62: milvus.proto.index.IndexNode.DropJobsV2:input_type -> milvus.proto.index.DropJobsV2Request
48, // 63: milvus.proto.index.IndexNode.GetMetrics:input_type -> milvus.proto.milvus.GetMetricsRequest
0, // 64: milvus.proto.index.IndexNode.CreateTask:input_type -> milvus.proto.index.CreateTaskRequest
1, // 65: milvus.proto.index.IndexNode.QueryTask:input_type -> milvus.proto.index.QueryTaskRequest
3, // 66: milvus.proto.index.IndexNode.DropTask:input_type -> milvus.proto.index.DropTaskRequest
30, // 67: milvus.proto.index.IndexNode.CreateJob:output_type -> milvus.proto.common.Status
6, // 68: milvus.proto.index.IndexNode.QueryJobs:output_type -> milvus.proto.index.QueryJobsResponse
30, // 69: milvus.proto.index.IndexNode.DropJobs:output_type -> milvus.proto.common.Status
9, // 70: milvus.proto.index.IndexNode.GetJobStats:output_type -> milvus.proto.index.GetJobStatsResponse
30, // 71: milvus.proto.index.IndexNode.CreateJobV2:output_type -> milvus.proto.common.Status
20, // 72: milvus.proto.index.IndexNode.QueryJobsV2:output_type -> milvus.proto.index.QueryJobsV2Response
30, // 73: milvus.proto.index.IndexNode.DropJobsV2:output_type -> milvus.proto.common.Status
49, // 74: milvus.proto.index.IndexNode.GetMetrics:output_type -> milvus.proto.milvus.GetMetricsResponse
30, // 75: milvus.proto.index.IndexNode.CreateTask:output_type -> milvus.proto.common.Status
2, // 76: milvus.proto.index.IndexNode.QueryTask:output_type -> milvus.proto.index.QueryTaskResponse
30, // 77: milvus.proto.index.IndexNode.DropTask:output_type -> milvus.proto.common.Status
67, // [67:78] is the sub-list for method output_type
56, // [56:67] is the sub-list for method input_type
56, // [56:56] is the sub-list for extension type_name
56, // [56:56] is the sub-list for extension extendee
0, // [0:56] is the sub-list for field type_name
}
func init() { file_worker_proto_init() }
@@ -3295,7 +3325,7 @@ func file_worker_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_worker_proto_rawDesc,
NumEnums: 0,
NumMessages: 29,
NumMessages: 30,
NumExtensions: 0,
NumServices: 1,
},
@@ -0,0 +1,67 @@
// Licensed to the LF AI & Data foundation under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package paramtable
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestClusteringParamDefaults(t *testing.T) {
base := NewBaseTable(Files([]string{}), SkipRemote(true), SkipEnv(true))
defer base.mgr.Close()
var params ComponentParam
params.Init(base)
cfg := &params.DataCoordCfg
require.Equal(t, int64(8*1024*1024), cfg.ClusteringCompactionChunkSizePerCentroid.GetAsSize())
// Preserve the existing memory-based training budget and centroid cap.
require.Equal(t, 0.8, cfg.ClusteringCompactionMaxTrainSizeRatio.GetAsFloat())
require.Equal(t, 10240, cfg.ClusteringCompactionMaxCentroidsNum.GetAsInt())
require.Equal(t, "KMEANS", params.KnowhereConfig.ClusterType.GetValue())
}
func TestClusteringParamNamespaces(t *testing.T) {
base := NewBaseTable(Files([]string{}), SkipRemote(true), SkipEnv(true))
defer base.mgr.Close()
cfg := &knowhereConfig{}
cfg.init(base)
for key, value := range map[string]string{
"knowhere.cluster.analyze.num_threads": "8",
"knowhere.cluster.analyze.metric_type": "L2",
"knowhere.cluster.compactionPlan.planner": "ivf",
"knowhere.cluster.compactionPlan.efConstruction": "64",
"knowhere.IVF_FLAT.build.nlist": "128",
} {
require.NoError(t, base.Save(key, value))
}
analyze := cfg.GetAnalyzeParams()
plan := cfg.GetCompactionPlanParams()
require.Equal(t, map[string]string{"num_threads": "8", "metric_type": "L2"}, analyze)
require.Equal(t, map[string]string{"planner": "ivf", "efConstruction": "64"}, plan)
require.Equal(t, map[string]string{"nlist": "128"}, cfg.getIndexParam("IVF_FLAT", BuildStage))
// A task can freeze these copies without later configuration changes
// mutating the parameters used by a retried build.
require.NoError(t, base.Save("knowhere.cluster.analyze.num_threads", "16"))
require.Equal(t, "8", analyze["num_threads"])
require.Equal(t, "16", cfg.GetAnalyzeParams()["num_threads"])
plan["planner"] = "changed"
require.Equal(t, "ivf", cfg.GetCompactionPlanParams()["planner"])
require.NoError(t, base.Remove("knowhere.cluster.compactionPlan.efConstruction"))
require.NotContains(t, cfg.GetCompactionPlanParams(), "efConstruction")
}
+11 -1
View File
@@ -6441,6 +6441,7 @@ type dataCoordConfig struct {
ClusteringCompactionMinClusterSizeRatio ParamItem `refreshable:"true"`
ClusteringCompactionMaxClusterSizeRatio ParamItem `refreshable:"true"`
ClusteringCompactionMaxClusterSize ParamItem `refreshable:"true"`
ClusteringCompactionChunkSizePerCentroid ParamItem `refreshable:"true"`
// LevelZero Segment
LevelZeroCompactionTriggerMinSize ParamItem `refreshable:"true"`
@@ -7332,7 +7333,7 @@ Startup processes fixed-size batches and retries failed reads per segment. An ex
Key: "dataCoord.compaction.clustering.maxTrainSizeRatio",
Version: "2.4.7",
DefaultValue: "0.8",
Doc: "max data size ratio in Kmeans train, if larger than it, will down sampling to meet this limit",
Doc: "Fraction of worker memory used to budget KMeans training data; sample when the input exceeds this budget",
Export: true,
}
p.ClusteringCompactionMaxTrainSizeRatio.Init(base.mgr)
@@ -7382,6 +7383,15 @@ Startup processes fixed-size batches and retries failed reads per segment. An ex
}
p.ClusteringCompactionMaxClusterSize.Init(base.mgr)
p.ClusteringCompactionChunkSizePerCentroid = ParamItem{
Key: "dataCoord.compaction.clustering.chunkSizePerCentroid",
Version: "3.1.0",
DefaultValue: "8MB",
Doc: "Target raw vector bytes per centroid; must be positive and is independent of segment size",
Export: true,
}
p.ClusteringCompactionChunkSizePerCentroid.Init(base.mgr)
p.EnableGarbageCollection = ParamItem{
Key: "dataCoord.enableGarbageCollection",
Version: "2.0.0",
+38 -2
View File
@@ -14,8 +14,11 @@ import (
)
type knowhereConfig struct {
Enable ParamItem `refreshable:"true"`
IndexParam ParamGroup `refreshable:"true"`
Enable ParamItem `refreshable:"true"`
IndexParam ParamGroup `refreshable:"true"`
ClusterType ParamItem `refreshable:"true"`
AnalyzeParam ParamGroup `refreshable:"true"`
CompactionPlanParam ParamGroup `refreshable:"true"`
}
const (
@@ -71,6 +74,39 @@ func (p *knowhereConfig) init(base *BaseTable) {
Doc: "When enable this configuration, the index parameters defined following will be automatically populated as index parameters, without requiring user input.",
}
p.Enable.Init(base.mgr)
p.ClusterType = ParamItem{
Key: "knowhere.cluster.type",
Version: "3.1.0",
DefaultValue: "KMEANS",
Export: true,
Doc: "clustering implementation registered in Knowhere",
}
p.ClusterType.Init(base.mgr)
p.AnalyzeParam = ParamGroup{
KeyPrefix: "knowhere.cluster.analyze.",
Version: "3.1.0",
Export: true,
Doc: "parameters passed through to the Knowhere clustering analyze implementation",
}
p.AnalyzeParam.Init(base.mgr)
p.CompactionPlanParam = ParamGroup{
KeyPrefix: "knowhere.cluster.compactionPlan.",
Version: "3.1.0",
Export: true,
Doc: "parameters passed through to the Knowhere clustering compaction plan implementation",
}
p.CompactionPlanParam.Init(base.mgr)
}
func (p *knowhereConfig) GetAnalyzeParams() map[string]string {
return p.AnalyzeParam.GetValue()
}
func (p *knowhereConfig) GetCompactionPlanParams() map[string]string {
return p.CompactionPlanParam.GetValue()
}
func (p *knowhereConfig) getIndexParam(indexType string, stage string) map[string]string {