diff --git a/.travis.yml b/.travis.yml index e61aea381e..10be276453 100644 --- a/.travis.yml +++ b/.travis.yml @@ -46,9 +46,10 @@ env: # what we used for the latest PMM release - GO_VERSION=1.15.x # what will be used for PMM releases soon - # - GO_VERSION=1.16.x + - GO_VERSION=1.16.x # the latest HEAD - - GO_VERSION=tip + # TODO enable when 1.15.x is removed + # - GO_VERSION=tip matrix: fast_finish: true diff --git a/Gopkg.lock b/Gopkg.lock index 24197660cc..7f70f3ab11 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -408,8 +408,8 @@ revision = "c158e23a172f892cc389233858238449efec1dbb" [[projects]] - branch = "PMM-2.0" - digest = "1:a3113281b924c96d25babbdd2a7611ed58ff4e5184dab85353d4199666abe275" + branch = "PMM-5194-tunnels" + digest = "1:95e3caad5d89c543e3a4b895a57a0c8db29c839c3af859786e4d7150f9c3c4ef" name = "github.com/percona/pmm" packages = [ "api/agentpb", @@ -433,7 +433,7 @@ "version", ] pruneopts = "NUT" - revision = "4559713b8bc01ab2538bd183bca387cebe624966" + revision = "4a47e69663fbf943789a2168b24d3f6f3c870cb2" [[projects]] digest = "1:65230c46134944510adb8844cf4098b5c9fdd1dd11992c3980afc1d3e0c8e4bd" diff --git a/Gopkg.toml b/Gopkg.toml index 78292aefdc..4341375f3a 100644 --- a/Gopkg.toml +++ b/Gopkg.toml @@ -14,7 +14,8 @@ required = [ [[constraint]] name = "github.com/percona/pmm" - branch = "PMM-2.0" + # branch = "PMM-2.0" + branch = "PMM-5194-tunnels" [[constraint]] name = "github.com/percona-platform/saas" @@ -24,7 +25,7 @@ required = [ name = "github.com/percona-platform/dbaas-api" branch = "main" -# to prevent unexpected downgrades; see https://github.com/percona/exporter_shared/releases/tag/v0.6.0 -[[constraint]] - name = "github.com/percona/exporter_shared" - version = "0.7.2" +# # to prevent unexpected downgrades; see https://github.com/percona/exporter_shared/releases/tag/v0.6.0 +# [[constraint]] +# name = "github.com/percona/exporter_shared" +# version = "0.7.2" diff --git a/docker-compose.yml b/docker-compose.yml index 34cc29d976..82180d114d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.7' services: pmm-managed-server: - image: ${PMM_SERVER_IMAGE:-perconalab/pmm-server:dev-latest} + image: perconalab/pmm-server-fb:PR-1459-bf4d9f9 container_name: pmm-managed-server hostname: pmm-managed-server environment: diff --git a/main.go b/main.go index 67d5510ed0..9e913bb0f4 100644 --- a/main.go +++ b/main.go @@ -160,6 +160,7 @@ func runGRPCServer(ctx context.Context, deps *gRPCServerDeps) { inventorypb.RegisterNodesServer(gRPCServer, inventorygrpc.NewNodesServer(nodesSvc)) inventorypb.RegisterServicesServer(gRPCServer, inventorygrpc.NewServicesServer(servicesSvc)) inventorypb.RegisterAgentsServer(gRPCServer, inventorygrpc.NewAgentsServer(agentsSvc)) + inventorypb.RegisterTunnelsServer(gRPCServer, inventory.NewTunnelsService(deps.db, deps.agentsRegistry)) nodeSvc := management.NewNodeService(deps.db, deps.agentsRegistry) serviceSvc := management.NewServiceService(deps.db, deps.agentsRegistry, deps.vmdb) @@ -276,6 +277,7 @@ func runHTTP1Server(ctx context.Context, deps *http1ServerDeps) { inventorypb.RegisterNodesHandlerFromEndpoint, inventorypb.RegisterServicesHandlerFromEndpoint, inventorypb.RegisterAgentsHandlerFromEndpoint, + inventorypb.RegisterTunnelsHandlerFromEndpoint, managementpb.RegisterNodeHandlerFromEndpoint, managementpb.RegisterServiceHandlerFromEndpoint, diff --git a/models/database.go b/models/database.go index 1f863bf363..0eea4195a6 100644 --- a/models/database.go +++ b/models/database.go @@ -413,12 +413,15 @@ var databaseSchema = [][]string{ PRIMARY KEY (id) )`, }, + 25: { `ALTER TABLE agents ADD COLUMN mongo_db_tls_options JSONB`, }, + 26: { `ALTER TABLE ia_rules ALTER COLUMN channel_ids DROP NOT NULL`, }, + 27: { `CREATE TABLE backup_locations ( id VARCHAR NOT NULL, @@ -436,9 +439,26 @@ var databaseSchema = [][]string{ UNIQUE (name) )`, }, + 28: { `ALTER TABLE agents ADD COLUMN disabled_collectors VARCHAR[]`, }, + + 29: { + `CREATE TABLE tunnels ( + tunnel_id VARCHAR NOT NULL, + listen_agent_id VARCHAR NOT NULL, + listen_port INTEGER NOT NULL CHECK (listen_port > 0), + connect_agent_id VARCHAR NOT NULL, + connect_port INTEGER NOT NULL CHECK (connect_port > 0), + created_at TIMESTAMP NOT NULL, + updated_at TIMESTAMP NOT NULL, + + PRIMARY KEY (tunnel_id), + FOREIGN KEY (listen_agent_id) REFERENCES agents (agent_id), + FOREIGN KEY (connect_agent_id) REFERENCES agents (agent_id) + )`, + }, } // ^^^ Avoid default values in schema definition. ^^^ @@ -524,9 +544,17 @@ func SetupDB(sqlDB *sql.DB, params *SetupDBParams) (*reform.DB, error) { } queries := databaseSchema[version] + if len(queries) == 0 { + return fmt.Errorf("no queries in version %d: missed migration number?", version) + } + queries = append(queries, fmt.Sprintf(`INSERT INTO schema_migrations (id) VALUES (%d)`, version)) for _, q := range queries { q = strings.TrimSpace(q) + if q == "" { + return fmt.Errorf("empty query in version %d: missed migration number?", version) + } + if _, err = tx.Exec(q); err != nil { return errors.Wrapf(err, "failed to execute statement:\n%s", q) } diff --git a/models/tunnel_helpers.go b/models/tunnel_helpers.go new file mode 100644 index 0000000000..1afcf3bd29 --- /dev/null +++ b/models/tunnel_helpers.go @@ -0,0 +1,127 @@ +// pmm-managed +// Copyright (C) 2017 Percona LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package models + +import ( + "github.com/google/uuid" + "github.com/pkg/errors" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "gopkg.in/reform.v1" +) + +func checkUniqueTunnelID(q *reform.Querier, id string) error { + if id == "" { + panic("empty Tunnel ID") + } + + tunnel := &Tunnel{TunnelID: id} + switch err := q.Reload(tunnel); err { + case nil: + return status.Errorf(codes.AlreadyExists, "Tunnel with ID %q already exists.", id) + case reform.ErrNoRows: + return nil + default: + return errors.WithStack(err) + } +} + +// FindTunnels returns Tunnels for given pmm-agent, or all, if pmmAgentID is empty. +func FindTunnels(q *reform.Querier, pmmAgentID string) ([]*Tunnel, error) { + var args []interface{} + tail := "ORDER BY tunnel_id" + if pmmAgentID != "" { + // TODO check that agent exist + args = []interface{}{pmmAgentID, pmmAgentID} + tail = "WHERE listen_agent_id = $1 OR connect_agent_id = $2 " + tail + } + + structs, err := q.SelectAllFrom(TunnelTable, tail, args...) + if err != nil { + return nil, errors.WithStack(err) + } + + tunnels := make([]*Tunnel, len(structs)) + for i, s := range structs { + tunnels[i] = s.(*Tunnel) + } + + return tunnels, nil +} + +// FindTunnelByID finds Tunnel by ID. +func FindTunnelByID(q *reform.Querier, id string) (*Tunnel, error) { + if id == "" { + return nil, status.Error(codes.InvalidArgument, "Empty Tunnel ID.") + } + + tunnel := &Tunnel{TunnelID: id} + switch err := q.Reload(tunnel); err { + case nil: + return tunnel, nil + case reform.ErrNoRows: + return nil, status.Errorf(codes.NotFound, "Tunnel with ID %q not found.", id) + default: + return nil, errors.WithStack(err) + } +} + +// CreateTunnelParams TODO. +type CreateTunnelParams struct { + ListenAgentID string + ListenPort uint16 + ConnectAgentID string + ConnectPort uint16 +} + +// CreateTunnel creates Tunnel. +func CreateTunnel(q *reform.Querier, params *CreateTunnelParams) (*Tunnel, error) { + id := "/tunnel_id/" + uuid.New().String() + if err := checkUniqueTunnelID(q, id); err != nil { + return nil, err + } + + // TODO check that agents exist + // TODO check that ports > 0 + + row := &Tunnel{ + TunnelID: id, + ListenAgentID: params.ListenAgentID, + ListenPort: params.ListenPort, + ConnectAgentID: params.ConnectAgentID, + ConnectPort: params.ConnectPort, + } + + if err := q.Insert(row); err != nil { + return nil, errors.WithStack(err) + } + + return row, nil +} + +// RemoveTunnel removes Tunnel by ID. +func RemoveTunnel(q *reform.Querier, id string, mode RemoveMode) (*Tunnel, error) { + // TODO find agents + // TODO cascade delete + + t := &Tunnel{TunnelID: id} + if err := q.Delete(t); err != nil { + return nil, errors.Wrap(err, "failed to delete Tunnel") + } + + return t, nil +} diff --git a/models/tunnel_model.go b/models/tunnel_model.go new file mode 100644 index 0000000000..ce1ac5f4d5 --- /dev/null +++ b/models/tunnel_model.go @@ -0,0 +1,64 @@ +// pmm-managed +// Copyright (C) 2017 Percona LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package models + +import ( + "time" + + "gopkg.in/reform.v1" +) + +//go:generate reform + +//reform:tunnels +type Tunnel struct { + TunnelID string `reform:"tunnel_id,pk"` + ListenAgentID string `reform:"listen_agent_id"` + ListenPort uint16 `reform:"listen_port"` + ConnectAgentID string `reform:"connect_agent_id"` + ConnectPort uint16 `reform:"connect_port"` + CreatedAt time.Time `reform:"created_at"` + UpdatedAt time.Time `reform:"updated_at"` +} + +// BeforeInsert implements reform.BeforeInserter interface. +func (s *Tunnel) BeforeInsert() error { + now := Now() + s.CreatedAt = now + s.UpdatedAt = now + return nil +} + +// BeforeUpdate implements reform.BeforeUpdater interface. +func (s *Tunnel) BeforeUpdate() error { + s.UpdatedAt = Now() + return nil +} + +// AfterFind implements reform.AfterFinder interface. +func (s *Tunnel) AfterFind() error { + s.CreatedAt = s.CreatedAt.UTC() + s.UpdatedAt = s.UpdatedAt.UTC() + return nil +} + +// check interfaces +var ( + _ reform.BeforeInserter = (*Tunnel)(nil) + _ reform.BeforeUpdater = (*Tunnel)(nil) + _ reform.AfterFinder = (*Tunnel)(nil) +) diff --git a/models/tunnel_model_reform.go b/models/tunnel_model_reform.go new file mode 100644 index 0000000000..361039c028 --- /dev/null +++ b/models/tunnel_model_reform.go @@ -0,0 +1,161 @@ +// Code generated by gopkg.in/reform.v1. DO NOT EDIT. + +package models + +import ( + "fmt" + "strings" + + "gopkg.in/reform.v1" + "gopkg.in/reform.v1/parse" +) + +type tunnelTableType struct { + s parse.StructInfo + z []interface{} +} + +// Schema returns a schema name in SQL database (""). +func (v *tunnelTableType) Schema() string { + return v.s.SQLSchema +} + +// Name returns a view or table name in SQL database ("tunnels"). +func (v *tunnelTableType) Name() string { + return v.s.SQLName +} + +// Columns returns a new slice of column names for that view or table in SQL database. +func (v *tunnelTableType) Columns() []string { + return []string{ + "tunnel_id", + "listen_agent_id", + "listen_port", + "connect_agent_id", + "connect_port", + "created_at", + "updated_at", + } +} + +// NewStruct makes a new struct for that view or table. +func (v *tunnelTableType) NewStruct() reform.Struct { + return new(Tunnel) +} + +// NewRecord makes a new record for that table. +func (v *tunnelTableType) NewRecord() reform.Record { + return new(Tunnel) +} + +// PKColumnIndex returns an index of primary key column for that table in SQL database. +func (v *tunnelTableType) PKColumnIndex() uint { + return uint(v.s.PKFieldIndex) +} + +// TunnelTable represents tunnels view or table in SQL database. +var TunnelTable = &tunnelTableType{ + s: parse.StructInfo{ + Type: "Tunnel", + SQLName: "tunnels", + Fields: []parse.FieldInfo{ + {Name: "TunnelID", Type: "string", Column: "tunnel_id"}, + {Name: "ListenAgentID", Type: "string", Column: "listen_agent_id"}, + {Name: "ListenPort", Type: "uint16", Column: "listen_port"}, + {Name: "ConnectAgentID", Type: "string", Column: "connect_agent_id"}, + {Name: "ConnectPort", Type: "uint16", Column: "connect_port"}, + {Name: "CreatedAt", Type: "time.Time", Column: "created_at"}, + {Name: "UpdatedAt", Type: "time.Time", Column: "updated_at"}, + }, + PKFieldIndex: 0, + }, + z: new(Tunnel).Values(), +} + +// String returns a string representation of this struct or record. +func (s Tunnel) String() string { + res := make([]string, 7) + res[0] = "TunnelID: " + reform.Inspect(s.TunnelID, true) + res[1] = "ListenAgentID: " + reform.Inspect(s.ListenAgentID, true) + res[2] = "ListenPort: " + reform.Inspect(s.ListenPort, true) + res[3] = "ConnectAgentID: " + reform.Inspect(s.ConnectAgentID, true) + res[4] = "ConnectPort: " + reform.Inspect(s.ConnectPort, true) + res[5] = "CreatedAt: " + reform.Inspect(s.CreatedAt, true) + res[6] = "UpdatedAt: " + reform.Inspect(s.UpdatedAt, true) + return strings.Join(res, ", ") +} + +// Values returns a slice of struct or record field values. +// Returned interface{} values are never untyped nils. +func (s *Tunnel) Values() []interface{} { + return []interface{}{ + s.TunnelID, + s.ListenAgentID, + s.ListenPort, + s.ConnectAgentID, + s.ConnectPort, + s.CreatedAt, + s.UpdatedAt, + } +} + +// Pointers returns a slice of pointers to struct or record fields. +// Returned interface{} values are never untyped nils. +func (s *Tunnel) Pointers() []interface{} { + return []interface{}{ + &s.TunnelID, + &s.ListenAgentID, + &s.ListenPort, + &s.ConnectAgentID, + &s.ConnectPort, + &s.CreatedAt, + &s.UpdatedAt, + } +} + +// View returns View object for that struct. +func (s *Tunnel) View() reform.View { + return TunnelTable +} + +// Table returns Table object for that record. +func (s *Tunnel) Table() reform.Table { + return TunnelTable +} + +// PKValue returns a value of primary key for that record. +// Returned interface{} value is never untyped nil. +func (s *Tunnel) PKValue() interface{} { + return s.TunnelID +} + +// PKPointer returns a pointer to primary key field for that record. +// Returned interface{} value is never untyped nil. +func (s *Tunnel) PKPointer() interface{} { + return &s.TunnelID +} + +// HasPK returns true if record has non-zero primary key set, false otherwise. +func (s *Tunnel) HasPK() bool { + return s.TunnelID != TunnelTable.z[TunnelTable.s.PKFieldIndex] +} + +// SetPK sets record primary key, if possible. +// +// Deprecated: prefer direct field assignment where possible: s.TunnelID = pk. +func (s *Tunnel) SetPK(pk interface{}) { + reform.SetPK(s, pk) +} + +// check interfaces +var ( + _ reform.View = TunnelTable + _ reform.Struct = (*Tunnel)(nil) + _ reform.Table = TunnelTable + _ reform.Record = (*Tunnel)(nil) + _ fmt.Stringer = (*Tunnel)(nil) +) + +func init() { + parse.AssertUpToDate(&TunnelTable.s, new(Tunnel)) +} diff --git a/services/agents/channel/channel.go b/services/agents/channel/channel.go index b5648374e3..e823d233cd 100644 --- a/services/agents/channel/channel.go +++ b/services/agents/channel/channel.go @@ -59,6 +59,9 @@ type Metrics struct { // Channel encapsulates two-way communication channel between pmm-managed and pmm-agent. // +// pmm-agent establishes a single gRPC connection with pmm-managed +// and then starts a single gRPC bidirectional stream, which is represented by this type. +// // All exported methods are thread-safe. //nolint:maligned type Channel struct { @@ -79,7 +82,7 @@ type Channel struct { closeErr error } -// New creates new two-way communication channel with given stream. +// New creates new two-way communication channel with given gRPC bidirectional stream. // // Stream should not be used by the caller after channel is created. func New(stream agentpb.Agent_ConnectServer) *Channel { @@ -126,7 +129,7 @@ func (c *Channel) Requests() <-chan *AgentRequest { return c.requests } -// SendResponse sends message to pmm-managed. It is no-op once channel is closed (see Wait). +// SendResponse sends response to pmm-managed. It is no-op once channel is closed (see Wait). func (c *Channel) SendResponse(resp *ServerResponse) { msg := &agentpb.ServerMessage{ Id: resp.ID, @@ -221,6 +224,11 @@ func (c *Channel) runReceiver() { ID: msg.Id, Payload: p.ActionResult, } + case *agentpb.AgentMessage_TunnelData: + c.requests <- &AgentRequest{ + ID: msg.Id, + Payload: p.TunnelData, + } // responses case *agentpb.AgentMessage_Pong: @@ -233,6 +241,8 @@ func (c *Channel) runReceiver() { c.publish(msg.Id, p.StopAction) case *agentpb.AgentMessage_CheckConnection: c.publish(msg.Id, p.CheckConnection) + case *agentpb.AgentMessage_TunnelDataAck: + c.publish(msg.Id, p.TunnelDataAck) case nil: c.close(errors.Errorf("failed to handle received message %s", msg)) diff --git a/services/agents/channel/tunnel.go b/services/agents/channel/tunnel.go new file mode 100644 index 0000000000..d92722265d --- /dev/null +++ b/services/agents/channel/tunnel.go @@ -0,0 +1,17 @@ +// pmm-managed +// Copyright (C) 2017 Percona LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package channel diff --git a/services/agents/registry.go b/services/agents/registry.go index d3cadb5492..c4017b1bec 100644 --- a/services/agents/registry.go +++ b/services/agents/registry.go @@ -94,13 +94,14 @@ type pmmAgentInfo struct { // TODO Split into several types https://jira.percona.com/browse/PMM-4932 type Registry struct { db *reform.DB - vmdb prometheusService qanClient qanClient + vmdb prometheusService rw sync.RWMutex agents map[string]*pmmAgentInfo // id -> info roster *roster + // tunnels *tunnelRegistry mAgents prom.GaugeFunc mConnects prom.Counter @@ -114,12 +115,13 @@ func NewRegistry(db *reform.DB, qanClient qanClient, vmdb prometheusService) *Re agents := make(map[string]*pmmAgentInfo) r := &Registry{ db: db, - vmdb: vmdb, qanClient: qanClient, + vmdb: vmdb, agents: agents, roster: newRoster(), + // tunnels: newTunnelRegistry(), mAgents: prom.NewGaugeFunc(prom.GaugeOpts{ Namespace: prometheusNamespace, @@ -265,6 +267,57 @@ func (r *Registry) Run(stream agentpb.Agent_ConnectServer) error { Payload: new(agentpb.ActionResultResponse), }) + case *agentpb.TunnelData: + t, err := models.FindTunnelByID(r.db.Querier, p.TunnelId) + if err != nil { + agent.channel.SendResponse(&channel.ServerResponse{ + ID: req.ID, + Payload: &agentpb.TunnelDataAck{ + Status: status.Convert(err).Proto(), + }, + }) + continue + } + + var otherAgentID string + switch agent.id { + case t.ListenAgentID: + otherAgentID = t.ConnectAgentID + case t.ConnectAgentID: + otherAgentID = t.ListenAgentID + default: + agent.channel.SendResponse(&channel.ServerResponse{ + ID: req.ID, + Payload: &agentpb.TunnelDataAck{ + Status: status.Newf(codes.NotFound, "TODO").Proto(), + }, + }) + continue + } + + otherAgent, err := r.get(otherAgentID) + if err != nil { + agent.channel.SendResponse(&channel.ServerResponse{ + ID: req.ID, + Payload: &agentpb.TunnelDataAck{ + Status: status.Convert(err).Proto(), + }, + }) + continue + } + + res := otherAgent.channel.SendRequest(&agentpb.TunnelData{ + TunnelId: p.TunnelId, + ConnectionId: p.ConnectionId, + Close: p.Close, + Data: p.Data, + }) + l.Debugf("%+v", res) + + agent.channel.SendResponse(&channel.ServerResponse{ + ID: req.ID, + }) + case nil: l.Warnf("Unexpected request: %v.", req) disconnectReason = "unimplemented" @@ -741,10 +794,19 @@ func (r *Registry) sendSetStateRequest(ctx context.Context, agent *pmmAgentInfo) l.Errorf("%+v", err) } } + + tunnels, err := getTunnels(r.db.Querier, agent.id) + if err != nil { + l.Errorf("Failed to get tunnels for pmm-agent %s: %s.", agent.id, err) + return + } + state := &agentpb.SetStateRequest{ AgentProcesses: agentProcesses, BuiltinAgents: builtinAgents, + Tunnels: tunnels, } + l.Infof("sendSetStateRequest:\n%s", proto.MarshalTextString(state)) resp := agent.channel.SendRequest(state) l.Infof("SetState response: %+v.", resp) diff --git a/services/agents/tunnel_registry.go b/services/agents/tunnel_registry.go new file mode 100644 index 0000000000..438d6541ac --- /dev/null +++ b/services/agents/tunnel_registry.go @@ -0,0 +1,54 @@ +// pmm-managed +// Copyright (C) 2017 Percona LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package agents + +import ( + "github.com/percona/pmm/api/agentpb" + "gopkg.in/reform.v1" + + "github.com/percona/pmm-managed/models" +) + +// type tunnelRegistry struct { +// } + +// func newTunnelRegistry() *tunnelRegistry { +// return &tunnelRegistry{} +// } + +// getTunnels returns SetStateRequest's tunnels for given pmm-agent ID. +func getTunnels(q *reform.Querier, pmmAgentID string) (map[string]*agentpb.SetStateRequest_Tunnel, error) { + tunnels, err := models.FindTunnels(q, pmmAgentID) + if err != nil { + return nil, err + } + + res := make(map[string]*agentpb.SetStateRequest_Tunnel, len(tunnels)) + for _, t := range tunnels { + var req agentpb.SetStateRequest_Tunnel + switch pmmAgentID { + case t.ListenAgentID: + req.ListenPort = uint32(t.ListenPort) + case t.ConnectAgentID: + req.ConnectPort = uint32(t.ConnectPort) + } + + res[t.TunnelID] = &req + } + + return res, nil +} diff --git a/services/inventory/tunnels.go b/services/inventory/tunnels.go new file mode 100644 index 0000000000..577d5430c8 --- /dev/null +++ b/services/inventory/tunnels.go @@ -0,0 +1,97 @@ +// pmm-managed +// Copyright (C) 2017 Percona LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + +package inventory + +import ( + "context" + + "github.com/percona/pmm/api/inventorypb" + "gopkg.in/reform.v1" + + "github.com/percona/pmm-managed/models" +) + +// TunnelsService works with inventory API Tunnels. +type TunnelsService struct { + db *reform.DB + r agentsRegistry +} + +// NewTunnelsService returns Inventory API handler for managing Tunnels. +func NewTunnelsService(db *reform.DB, r agentsRegistry) inventorypb.TunnelsServer { + return &TunnelsService{ + db: db, + r: r, + } +} + +// ListTunnels returns a list of all Tunnels. +func (s *TunnelsService) ListTunnels(ctx context.Context, req *inventorypb.ListTunnelsRequest) (*inventorypb.ListTunnelsResponse, error) { + tunnels, err := models.FindTunnels(s.db.Querier, req.AgentId) + if err != nil { + return nil, err + } + + res := &inventorypb.ListTunnelsResponse{ + Tunnel: make([]*inventorypb.Tunnel, len(tunnels)), + } + for i, t := range tunnels { + res.Tunnel[i] = &inventorypb.Tunnel{ + TunnelId: t.TunnelID, + ListenAgentId: t.ListenAgentID, + ListenPort: uint32(t.ListenPort), + ConnectAgentId: t.ConnectAgentID, + ConnectPort: uint32(t.ConnectPort), + } + } + return res, nil +} + +// AddTunnel adds a Tunnel. +func (s *TunnelsService) AddTunnel(ctx context.Context, req *inventorypb.AddTunnelRequest) (*inventorypb.AddTunnelResponse, error) { + params := &models.CreateTunnelParams{ + ListenAgentID: req.ListenAgentId, + ListenPort: uint16(req.ListenPort), + ConnectAgentID: req.ConnectAgentId, + ConnectPort: uint16(req.ConnectPort), + } + + t, err := models.CreateTunnel(s.db.Querier, params) + if err != nil { + return nil, err + } + + s.r.RequestStateUpdate(ctx, req.ListenAgentId) + s.r.RequestStateUpdate(ctx, req.ConnectAgentId) + + return &inventorypb.AddTunnelResponse{ + TunnelId: t.TunnelID, + }, nil +} + +// RemoveTunnel removes a Tunnel. +func (s *TunnelsService) RemoveTunnel(ctx context.Context, req *inventorypb.RemoveTunnelRequest) (*inventorypb.RemoveTunnelResponse, error) { + t, err := models.RemoveTunnel(s.db.Querier, req.TunnelId, models.RemoveCascade) + if err != nil { + return nil, err + } + + s.r.RequestStateUpdate(ctx, t.ListenAgentID) + s.r.RequestStateUpdate(ctx, t.ConnectAgentID) + + return new(inventorypb.RemoveTunnelResponse), nil +} diff --git a/vendor/github.com/percona/pmm/api/agentpb/agent.go b/vendor/github.com/percona/pmm/api/agentpb/agent.go index f134520862..415ec7740b 100644 --- a/vendor/github.com/percona/pmm/api/agentpb/agent.go +++ b/vendor/github.com/percona/pmm/api/agentpb/agent.go @@ -41,7 +41,8 @@ type ServerRequestPayload interface { sealed() } -// AgentMessage request payloads +// AgentMessage request payloads. + func (m *Ping) AgentMessageRequestPayload() isAgentMessage_Payload { return &AgentMessage_Ping{Ping: m} } @@ -54,8 +55,12 @@ func (m *QANCollectRequest) AgentMessageRequestPayload() isAgentMessage_Payload func (m *ActionResultRequest) AgentMessageRequestPayload() isAgentMessage_Payload { return &AgentMessage_ActionResult{ActionResult: m} } +func (m *TunnelData) AgentMessageRequestPayload() isAgentMessage_Payload { + return &AgentMessage_TunnelData{TunnelData: m} +} + +// AgentMessage response payloads. -// AgentMessage response payloads func (m *Pong) AgentMessageResponsePayload() isAgentMessage_Payload { return &AgentMessage_Pong{Pong: m} } @@ -71,8 +76,12 @@ func (m *StopActionResponse) AgentMessageResponsePayload() isAgentMessage_Payloa func (m *CheckConnectionResponse) AgentMessageResponsePayload() isAgentMessage_Payload { return &AgentMessage_CheckConnection{CheckConnection: m} } +func (m *TunnelDataAck) AgentMessageResponsePayload() isAgentMessage_Payload { + return &AgentMessage_TunnelDataAck{TunnelDataAck: m} +} + +// ServerMessage response payloads. -// ServerMessage response payloads func (m *Pong) ServerMessageResponsePayload() isServerMessage_Payload { return &ServerMessage_Pong{Pong: m} } @@ -85,8 +94,12 @@ func (m *QANCollectResponse) ServerMessageResponsePayload() isServerMessage_Payl func (m *ActionResultResponse) ServerMessageResponsePayload() isServerMessage_Payload { return &ServerMessage_ActionResult{ActionResult: m} } +func (m *TunnelDataAck) ServerMessageResponsePayload() isServerMessage_Payload { + return &ServerMessage_TunnelDataAck{TunnelDataAck: m} +} + +// ServerMessage request payloads. -// ServerMessage request payloads func (m *Ping) ServerMessageRequestPayload() isServerMessage_Payload { return &ServerMessage_Ping{Ping: m} } @@ -102,8 +115,11 @@ func (m *StopActionRequest) ServerMessageRequestPayload() isServerMessage_Payloa func (m *CheckConnectionRequest) ServerMessageRequestPayload() isServerMessage_Payload { return &ServerMessage_CheckConnection{CheckConnection: m} } +func (m *TunnelData) ServerMessageRequestPayload() isServerMessage_Payload { + return &ServerMessage_TunnelData{TunnelData: m} +} -// in alphabetical order +// In alphabetical order. func (*ActionResultRequest) sealed() {} func (*ActionResultResponse) sealed() {} func (*CheckConnectionRequest) sealed() {} @@ -120,34 +136,40 @@ func (*StateChangedRequest) sealed() {} func (*StateChangedResponse) sealed() {} func (*StopActionRequest) sealed() {} func (*StopActionResponse) sealed() {} +func (*TunnelData) sealed() {} +func (*TunnelDataAck) sealed() {} // check interfaces var ( - // AgentMessage request payloads + // AgentMessage request payloads. _ AgentRequestPayload = (*Ping)(nil) _ AgentRequestPayload = (*StateChangedRequest)(nil) _ AgentRequestPayload = (*QANCollectRequest)(nil) _ AgentRequestPayload = (*ActionResultRequest)(nil) + _ AgentRequestPayload = (*TunnelData)(nil) - // AgentMessage response payloads + // AgentMessage response payloads. _ AgentResponsePayload = (*Pong)(nil) _ AgentResponsePayload = (*SetStateResponse)(nil) _ AgentResponsePayload = (*StartActionResponse)(nil) _ AgentResponsePayload = (*StopActionResponse)(nil) _ AgentResponsePayload = (*CheckConnectionResponse)(nil) + _ AgentResponsePayload = (*TunnelDataAck)(nil) - // ServerMessage response payloads + // ServerMessage response payloads. _ ServerResponsePayload = (*Pong)(nil) _ ServerResponsePayload = (*StateChangedResponse)(nil) _ ServerResponsePayload = (*QANCollectResponse)(nil) _ ServerResponsePayload = (*ActionResultResponse)(nil) + _ ServerResponsePayload = (*TunnelDataAck)(nil) - // ServerMessage request payloads + // ServerMessage request payloads. _ ServerRequestPayload = (*Ping)(nil) _ ServerRequestPayload = (*SetStateRequest)(nil) _ ServerRequestPayload = (*StartActionRequest)(nil) _ ServerRequestPayload = (*StopActionRequest)(nil) _ ServerRequestPayload = (*CheckConnectionRequest)(nil) + _ ServerRequestPayload = (*TunnelData)(nil) ) //go-sumtype:decl AgentParams diff --git a/vendor/github.com/percona/pmm/api/agentpb/agent.pb.go b/vendor/github.com/percona/pmm/api/agentpb/agent.pb.go index 894b4402c9..422ca27e6c 100644 --- a/vendor/github.com/percona/pmm/api/agentpb/agent.pb.go +++ b/vendor/github.com/percona/pmm/api/agentpb/agent.pb.go @@ -11,10 +11,12 @@ import ( proto "github.com/golang/protobuf/proto" duration "github.com/golang/protobuf/ptypes/duration" timestamp "github.com/golang/protobuf/ptypes/timestamp" + _ "github.com/mwitkow/go-proto-validators" inventorypb "github.com/percona/pmm/api/inventorypb" + status "google.golang.org/genproto/googleapis/rpc/status" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" + status1 "google.golang.org/grpc/status" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -432,7 +434,8 @@ func (*StateChangedResponse) Descriptor() ([]byte, []int) { return file_agentpb_agent_proto_rawDescGZIP(), []int{6} } -// SetStateRequest is a ServerMessage asking pmm-agent to run agents according to desired state. +// SetStateRequest is a ServerMessage asking pmm-agent to run agents and setup tunnels +// according to desired state. type SetStateRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -440,6 +443,8 @@ type SetStateRequest struct { AgentProcesses map[string]*SetStateRequest_AgentProcess `protobuf:"bytes,1,rep,name=agent_processes,json=agentProcesses,proto3" json:"agent_processes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` BuiltinAgents map[string]*SetStateRequest_BuiltinAgent `protobuf:"bytes,2,rep,name=builtin_agents,json=builtinAgents,proto3" json:"builtin_agents,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + // Desired Tunnel configurations and their IDs. + Tunnels map[string]*SetStateRequest_Tunnel `protobuf:"bytes,3,rep,name=tunnels,proto3" json:"tunnels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *SetStateRequest) Reset() { @@ -488,11 +493,20 @@ func (x *SetStateRequest) GetBuiltinAgents() map[string]*SetStateRequest_Builtin return nil } +func (x *SetStateRequest) GetTunnels() map[string]*SetStateRequest_Tunnel { + if x != nil { + return x.Tunnels + } + return nil +} + // SetStateResponse is an AgentMessage for SetStateRequest acceptance. type SetStateResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + Tunnels map[string]*status.Status `protobuf:"bytes,3,rep,name=tunnels,proto3" json:"tunnels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` } func (x *SetStateResponse) Reset() { @@ -527,6 +541,13 @@ func (*SetStateResponse) Descriptor() ([]byte, []int) { return file_agentpb_agent_proto_rawDescGZIP(), []int{8} } +func (x *SetStateResponse) GetTunnels() map[string]*status.Status { + if x != nil { + return x.Tunnels + } + return nil +} + // QueryActionValue represents a single value used in query Actions. type QueryActionValue struct { state protoimpl.MessageState @@ -1404,6 +1425,132 @@ func (*ActionResultResponse) Descriptor() ([]byte, []int) { return file_agentpb_agent_proto_rawDescGZIP(), []int{18} } +// TunnelData is a AgentMessage/ServerMessage for transferring data chunk over the Tunnel. +type TunnelData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Tunnel ID. + TunnelId string `protobuf:"bytes,1,opt,name=tunnel_id,json=tunnelId,proto3" json:"tunnel_id,omitempty"` + // ID of the connection within a Tunnel. + // Unlike other IDs, this one is generated by pmm-agent, not by pmm-managed. + ConnectionId string `protobuf:"bytes,2,opt,name=connection_id,json=connectionId,proto3" json:"connection_id,omitempty"` + // True if this is the last chunk of data in this direction for this connection. + Close bool `protobuf:"varint,3,opt,name=close,proto3" json:"close,omitempty"` + // Data chunk. + Data []byte `protobuf:"bytes,4,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *TunnelData) Reset() { + *x = TunnelData{} + if protoimpl.UnsafeEnabled { + mi := &file_agentpb_agent_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TunnelData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TunnelData) ProtoMessage() {} + +func (x *TunnelData) ProtoReflect() protoreflect.Message { + mi := &file_agentpb_agent_proto_msgTypes[19] + 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 TunnelData.ProtoReflect.Descriptor instead. +func (*TunnelData) Descriptor() ([]byte, []int) { + return file_agentpb_agent_proto_rawDescGZIP(), []int{19} +} + +func (x *TunnelData) GetTunnelId() string { + if x != nil { + return x.TunnelId + } + return "" +} + +func (x *TunnelData) GetConnectionId() string { + if x != nil { + return x.ConnectionId + } + return "" +} + +func (x *TunnelData) GetClose() bool { + if x != nil { + return x.Close + } + return false +} + +func (x *TunnelData) GetData() []byte { + if x != nil { + return x.Data + } + return nil +} + +// TunnelDataAck is a AgentMessage/ServerMessage for TunnelData acceptance. +type TunnelDataAck struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // TODO + Status *status.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` +} + +func (x *TunnelDataAck) Reset() { + *x = TunnelDataAck{} + if protoimpl.UnsafeEnabled { + mi := &file_agentpb_agent_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TunnelDataAck) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TunnelDataAck) ProtoMessage() {} + +func (x *TunnelDataAck) ProtoReflect() protoreflect.Message { + mi := &file_agentpb_agent_proto_msgTypes[20] + 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 TunnelDataAck.ProtoReflect.Descriptor instead. +func (*TunnelDataAck) Descriptor() ([]byte, []int) { + return file_agentpb_agent_proto_rawDescGZIP(), []int{20} +} + +func (x *TunnelDataAck) GetStatus() *status.Status { + if x != nil { + return x.Status + } + return nil +} + // CheckConnectionRequest is a ServerMessage asking pmm-agent to check connection with Service. type CheckConnectionRequest struct { state protoimpl.MessageState @@ -1423,7 +1570,7 @@ type CheckConnectionRequest struct { func (x *CheckConnectionRequest) Reset() { *x = CheckConnectionRequest{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[19] + mi := &file_agentpb_agent_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1436,7 +1583,7 @@ func (x *CheckConnectionRequest) String() string { func (*CheckConnectionRequest) ProtoMessage() {} func (x *CheckConnectionRequest) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[19] + mi := &file_agentpb_agent_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1449,7 +1596,7 @@ func (x *CheckConnectionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckConnectionRequest.ProtoReflect.Descriptor instead. func (*CheckConnectionRequest) Descriptor() ([]byte, []int) { - return file_agentpb_agent_proto_rawDescGZIP(), []int{19} + return file_agentpb_agent_proto_rawDescGZIP(), []int{21} } func (x *CheckConnectionRequest) GetType() inventorypb.ServiceType { @@ -1494,7 +1641,7 @@ type CheckConnectionResponse struct { func (x *CheckConnectionResponse) Reset() { *x = CheckConnectionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[20] + mi := &file_agentpb_agent_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1507,7 +1654,7 @@ func (x *CheckConnectionResponse) String() string { func (*CheckConnectionResponse) ProtoMessage() {} func (x *CheckConnectionResponse) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[20] + mi := &file_agentpb_agent_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1520,7 +1667,7 @@ func (x *CheckConnectionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckConnectionResponse.ProtoReflect.Descriptor instead. func (*CheckConnectionResponse) Descriptor() ([]byte, []int) { - return file_agentpb_agent_proto_rawDescGZIP(), []int{20} + return file_agentpb_agent_proto_rawDescGZIP(), []int{22} } func (x *CheckConnectionResponse) GetError() string { @@ -1548,18 +1695,20 @@ type AgentMessage struct { // *AgentMessage_StateChanged // *AgentMessage_QanCollect // *AgentMessage_ActionResult + // *AgentMessage_TunnelData // *AgentMessage_Pong // *AgentMessage_SetState // *AgentMessage_StartAction // *AgentMessage_StopAction // *AgentMessage_CheckConnection + // *AgentMessage_TunnelDataAck Payload isAgentMessage_Payload `protobuf_oneof:"payload"` } func (x *AgentMessage) Reset() { *x = AgentMessage{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[21] + mi := &file_agentpb_agent_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1572,7 +1721,7 @@ func (x *AgentMessage) String() string { func (*AgentMessage) ProtoMessage() {} func (x *AgentMessage) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[21] + mi := &file_agentpb_agent_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1585,7 +1734,7 @@ func (x *AgentMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use AgentMessage.ProtoReflect.Descriptor instead. func (*AgentMessage) Descriptor() ([]byte, []int) { - return file_agentpb_agent_proto_rawDescGZIP(), []int{21} + return file_agentpb_agent_proto_rawDescGZIP(), []int{23} } func (x *AgentMessage) GetId() uint32 { @@ -1630,6 +1779,13 @@ func (x *AgentMessage) GetActionResult() *ActionResultRequest { return nil } +func (x *AgentMessage) GetTunnelData() *TunnelData { + if x, ok := x.GetPayload().(*AgentMessage_TunnelData); ok { + return x.TunnelData + } + return nil +} + func (x *AgentMessage) GetPong() *Pong { if x, ok := x.GetPayload().(*AgentMessage_Pong); ok { return x.Pong @@ -1665,6 +1821,13 @@ func (x *AgentMessage) GetCheckConnection() *CheckConnectionResponse { return nil } +func (x *AgentMessage) GetTunnelDataAck() *TunnelDataAck { + if x, ok := x.GetPayload().(*AgentMessage_TunnelDataAck); ok { + return x.TunnelDataAck + } + return nil +} + type isAgentMessage_Payload interface { isAgentMessage_Payload() } @@ -1686,6 +1849,10 @@ type AgentMessage_ActionResult struct { ActionResult *ActionResultRequest `protobuf:"bytes,5,opt,name=action_result,json=actionResult,proto3,oneof"` } +type AgentMessage_TunnelData struct { + TunnelData *TunnelData `protobuf:"bytes,6,opt,name=tunnel_data,json=tunnelData,proto3,oneof"` +} + type AgentMessage_Pong struct { // responses from agent Pong *Pong `protobuf:"bytes,8,opt,name=pong,proto3,oneof"` @@ -1707,6 +1874,10 @@ type AgentMessage_CheckConnection struct { CheckConnection *CheckConnectionResponse `protobuf:"bytes,12,opt,name=check_connection,json=checkConnection,proto3,oneof"` } +type AgentMessage_TunnelDataAck struct { + TunnelDataAck *TunnelDataAck `protobuf:"bytes,13,opt,name=tunnel_data_ack,json=tunnelDataAck,proto3,oneof"` +} + func (*AgentMessage_Ping) isAgentMessage_Payload() {} func (*AgentMessage_StateChanged) isAgentMessage_Payload() {} @@ -1715,6 +1886,8 @@ func (*AgentMessage_QanCollect) isAgentMessage_Payload() {} func (*AgentMessage_ActionResult) isAgentMessage_Payload() {} +func (*AgentMessage_TunnelData) isAgentMessage_Payload() {} + func (*AgentMessage_Pong) isAgentMessage_Payload() {} func (*AgentMessage_SetState) isAgentMessage_Payload() {} @@ -1725,6 +1898,8 @@ func (*AgentMessage_StopAction) isAgentMessage_Payload() {} func (*AgentMessage_CheckConnection) isAgentMessage_Payload() {} +func (*AgentMessage_TunnelDataAck) isAgentMessage_Payload() {} + type ServerMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1736,18 +1911,20 @@ type ServerMessage struct { // *ServerMessage_StateChanged // *ServerMessage_QanCollect // *ServerMessage_ActionResult + // *ServerMessage_TunnelDataAck // *ServerMessage_Ping // *ServerMessage_SetState // *ServerMessage_StartAction // *ServerMessage_StopAction // *ServerMessage_CheckConnection + // *ServerMessage_TunnelData Payload isServerMessage_Payload `protobuf_oneof:"payload"` } func (x *ServerMessage) Reset() { *x = ServerMessage{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[22] + mi := &file_agentpb_agent_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1760,7 +1937,7 @@ func (x *ServerMessage) String() string { func (*ServerMessage) ProtoMessage() {} func (x *ServerMessage) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[22] + mi := &file_agentpb_agent_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1773,7 +1950,7 @@ func (x *ServerMessage) ProtoReflect() protoreflect.Message { // Deprecated: Use ServerMessage.ProtoReflect.Descriptor instead. func (*ServerMessage) Descriptor() ([]byte, []int) { - return file_agentpb_agent_proto_rawDescGZIP(), []int{22} + return file_agentpb_agent_proto_rawDescGZIP(), []int{24} } func (x *ServerMessage) GetId() uint32 { @@ -1818,6 +1995,13 @@ func (x *ServerMessage) GetActionResult() *ActionResultResponse { return nil } +func (x *ServerMessage) GetTunnelDataAck() *TunnelDataAck { + if x, ok := x.GetPayload().(*ServerMessage_TunnelDataAck); ok { + return x.TunnelDataAck + } + return nil +} + func (x *ServerMessage) GetPing() *Ping { if x, ok := x.GetPayload().(*ServerMessage_Ping); ok { return x.Ping @@ -1853,6 +2037,13 @@ func (x *ServerMessage) GetCheckConnection() *CheckConnectionRequest { return nil } +func (x *ServerMessage) GetTunnelData() *TunnelData { + if x, ok := x.GetPayload().(*ServerMessage_TunnelData); ok { + return x.TunnelData + } + return nil +} + type isServerMessage_Payload interface { isServerMessage_Payload() } @@ -1874,6 +2065,10 @@ type ServerMessage_ActionResult struct { ActionResult *ActionResultResponse `protobuf:"bytes,5,opt,name=action_result,json=actionResult,proto3,oneof"` } +type ServerMessage_TunnelDataAck struct { + TunnelDataAck *TunnelDataAck `protobuf:"bytes,6,opt,name=tunnel_data_ack,json=tunnelDataAck,proto3,oneof"` +} + type ServerMessage_Ping struct { // requests from server Ping *Ping `protobuf:"bytes,8,opt,name=ping,proto3,oneof"` @@ -1895,6 +2090,10 @@ type ServerMessage_CheckConnection struct { CheckConnection *CheckConnectionRequest `protobuf:"bytes,12,opt,name=check_connection,json=checkConnection,proto3,oneof"` } +type ServerMessage_TunnelData struct { + TunnelData *TunnelData `protobuf:"bytes,13,opt,name=tunnel_data,json=tunnelData,proto3,oneof"` +} + func (*ServerMessage_Pong) isServerMessage_Payload() {} func (*ServerMessage_StateChanged) isServerMessage_Payload() {} @@ -1903,6 +2102,8 @@ func (*ServerMessage_QanCollect) isServerMessage_Payload() {} func (*ServerMessage_ActionResult) isServerMessage_Payload() {} +func (*ServerMessage_TunnelDataAck) isServerMessage_Payload() {} + func (*ServerMessage_Ping) isServerMessage_Payload() {} func (*ServerMessage_SetState) isServerMessage_Payload() {} @@ -1913,6 +2114,8 @@ func (*ServerMessage_StopAction) isServerMessage_Payload() {} func (*ServerMessage_CheckConnection) isServerMessage_Payload() {} +func (*ServerMessage_TunnelData) isServerMessage_Payload() {} + // AgentProcess describes desired configuration of a single agent process started by pmm-agent. type SetStateRequest_AgentProcess struct { state protoimpl.MessageState @@ -1931,7 +2134,7 @@ type SetStateRequest_AgentProcess struct { func (x *SetStateRequest_AgentProcess) Reset() { *x = SetStateRequest_AgentProcess{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[24] + mi := &file_agentpb_agent_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1944,7 +2147,7 @@ func (x *SetStateRequest_AgentProcess) String() string { func (*SetStateRequest_AgentProcess) ProtoMessage() {} func (x *SetStateRequest_AgentProcess) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[24] + mi := &file_agentpb_agent_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2028,7 +2231,7 @@ type SetStateRequest_BuiltinAgent struct { func (x *SetStateRequest_BuiltinAgent) Reset() { *x = SetStateRequest_BuiltinAgent{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[26] + mi := &file_agentpb_agent_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2041,7 +2244,7 @@ func (x *SetStateRequest_BuiltinAgent) String() string { func (*SetStateRequest_BuiltinAgent) ProtoMessage() {} func (x *SetStateRequest_BuiltinAgent) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[26] + mi := &file_agentpb_agent_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2092,6 +2295,64 @@ func (x *SetStateRequest_BuiltinAgent) GetTextFiles() *TextFiles { return nil } +// Tunnel describes desired configuration of a single Tunnel for pmm-agent. +type SetStateRequest_Tunnel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Listen port of the listening pmm-agent; one of listen_port and connect_port should be set. + ListenPort uint32 `protobuf:"varint,1,opt,name=listen_port,json=listenPort,proto3" json:"listen_port,omitempty"` + // Target port of the connecting pmm-agent; one of listen_port and connect_port should be set. + ConnectPort uint32 `protobuf:"varint,2,opt,name=connect_port,json=connectPort,proto3" json:"connect_port,omitempty"` +} + +func (x *SetStateRequest_Tunnel) Reset() { + *x = SetStateRequest_Tunnel{} + if protoimpl.UnsafeEnabled { + mi := &file_agentpb_agent_proto_msgTypes[30] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SetStateRequest_Tunnel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SetStateRequest_Tunnel) ProtoMessage() {} + +func (x *SetStateRequest_Tunnel) ProtoReflect() protoreflect.Message { + mi := &file_agentpb_agent_proto_msgTypes[30] + 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 SetStateRequest_Tunnel.ProtoReflect.Descriptor instead. +func (*SetStateRequest_Tunnel) Descriptor() ([]byte, []int) { + return file_agentpb_agent_proto_rawDescGZIP(), []int{7, 4} +} + +func (x *SetStateRequest_Tunnel) GetListenPort() uint32 { + if x != nil { + return x.ListenPort + } + return 0 +} + +func (x *SetStateRequest_Tunnel) GetConnectPort() uint32 { + if x != nil { + return x.ConnectPort + } + return 0 +} + // MySQLExplainParams describes MySQL EXPLAIN action parameters. type StartActionRequest_MySQLExplainParams struct { state protoimpl.MessageState @@ -2107,7 +2368,7 @@ type StartActionRequest_MySQLExplainParams struct { func (x *StartActionRequest_MySQLExplainParams) Reset() { *x = StartActionRequest_MySQLExplainParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[30] + mi := &file_agentpb_agent_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2120,7 +2381,7 @@ func (x *StartActionRequest_MySQLExplainParams) String() string { func (*StartActionRequest_MySQLExplainParams) ProtoMessage() {} func (x *StartActionRequest_MySQLExplainParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[30] + mi := &file_agentpb_agent_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2171,7 +2432,7 @@ type StartActionRequest_MySQLShowCreateTableParams struct { func (x *StartActionRequest_MySQLShowCreateTableParams) Reset() { *x = StartActionRequest_MySQLShowCreateTableParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[31] + mi := &file_agentpb_agent_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2184,7 +2445,7 @@ func (x *StartActionRequest_MySQLShowCreateTableParams) String() string { func (*StartActionRequest_MySQLShowCreateTableParams) ProtoMessage() {} func (x *StartActionRequest_MySQLShowCreateTableParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[31] + mi := &file_agentpb_agent_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2228,7 +2489,7 @@ type StartActionRequest_MySQLShowTableStatusParams struct { func (x *StartActionRequest_MySQLShowTableStatusParams) Reset() { *x = StartActionRequest_MySQLShowTableStatusParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[32] + mi := &file_agentpb_agent_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2241,7 +2502,7 @@ func (x *StartActionRequest_MySQLShowTableStatusParams) String() string { func (*StartActionRequest_MySQLShowTableStatusParams) ProtoMessage() {} func (x *StartActionRequest_MySQLShowTableStatusParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[32] + mi := &file_agentpb_agent_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2285,7 +2546,7 @@ type StartActionRequest_MySQLShowIndexParams struct { func (x *StartActionRequest_MySQLShowIndexParams) Reset() { *x = StartActionRequest_MySQLShowIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[33] + mi := &file_agentpb_agent_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2298,7 +2559,7 @@ func (x *StartActionRequest_MySQLShowIndexParams) String() string { func (*StartActionRequest_MySQLShowIndexParams) ProtoMessage() {} func (x *StartActionRequest_MySQLShowIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[33] + mi := &file_agentpb_agent_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2342,7 +2603,7 @@ type StartActionRequest_PostgreSQLShowCreateTableParams struct { func (x *StartActionRequest_PostgreSQLShowCreateTableParams) Reset() { *x = StartActionRequest_PostgreSQLShowCreateTableParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[34] + mi := &file_agentpb_agent_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2355,7 +2616,7 @@ func (x *StartActionRequest_PostgreSQLShowCreateTableParams) String() string { func (*StartActionRequest_PostgreSQLShowCreateTableParams) ProtoMessage() {} func (x *StartActionRequest_PostgreSQLShowCreateTableParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[34] + mi := &file_agentpb_agent_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2399,7 +2660,7 @@ type StartActionRequest_PostgreSQLShowIndexParams struct { func (x *StartActionRequest_PostgreSQLShowIndexParams) Reset() { *x = StartActionRequest_PostgreSQLShowIndexParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[35] + mi := &file_agentpb_agent_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2412,7 +2673,7 @@ func (x *StartActionRequest_PostgreSQLShowIndexParams) String() string { func (*StartActionRequest_PostgreSQLShowIndexParams) ProtoMessage() {} func (x *StartActionRequest_PostgreSQLShowIndexParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[35] + mi := &file_agentpb_agent_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2459,7 +2720,7 @@ type StartActionRequest_MongoDBExplainParams struct { func (x *StartActionRequest_MongoDBExplainParams) Reset() { *x = StartActionRequest_MongoDBExplainParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[36] + mi := &file_agentpb_agent_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2472,7 +2733,7 @@ func (x *StartActionRequest_MongoDBExplainParams) String() string { func (*StartActionRequest_MongoDBExplainParams) ProtoMessage() {} func (x *StartActionRequest_MongoDBExplainParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[36] + mi := &file_agentpb_agent_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2519,7 +2780,7 @@ type StartActionRequest_PTSummaryParams struct { func (x *StartActionRequest_PTSummaryParams) Reset() { *x = StartActionRequest_PTSummaryParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[37] + mi := &file_agentpb_agent_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2532,7 +2793,7 @@ func (x *StartActionRequest_PTSummaryParams) String() string { func (*StartActionRequest_PTSummaryParams) ProtoMessage() {} func (x *StartActionRequest_PTSummaryParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[37] + mi := &file_agentpb_agent_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2563,7 +2824,7 @@ type StartActionRequest_PTMongoDBSummaryParams struct { func (x *StartActionRequest_PTMongoDBSummaryParams) Reset() { *x = StartActionRequest_PTMongoDBSummaryParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[38] + mi := &file_agentpb_agent_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2576,7 +2837,7 @@ func (x *StartActionRequest_PTMongoDBSummaryParams) String() string { func (*StartActionRequest_PTMongoDBSummaryParams) ProtoMessage() {} func (x *StartActionRequest_PTMongoDBSummaryParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[38] + mi := &file_agentpb_agent_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2635,7 +2896,7 @@ type StartActionRequest_MySQLQueryShowParams struct { func (x *StartActionRequest_MySQLQueryShowParams) Reset() { *x = StartActionRequest_MySQLQueryShowParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[39] + mi := &file_agentpb_agent_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2648,7 +2909,7 @@ func (x *StartActionRequest_MySQLQueryShowParams) String() string { func (*StartActionRequest_MySQLQueryShowParams) ProtoMessage() {} func (x *StartActionRequest_MySQLQueryShowParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[39] + mi := &file_agentpb_agent_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2693,7 +2954,7 @@ type StartActionRequest_MySQLQuerySelectParams struct { func (x *StartActionRequest_MySQLQuerySelectParams) Reset() { *x = StartActionRequest_MySQLQuerySelectParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[40] + mi := &file_agentpb_agent_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2706,7 +2967,7 @@ func (x *StartActionRequest_MySQLQuerySelectParams) String() string { func (*StartActionRequest_MySQLQuerySelectParams) ProtoMessage() {} func (x *StartActionRequest_MySQLQuerySelectParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[40] + mi := &file_agentpb_agent_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2749,7 +3010,7 @@ type StartActionRequest_PostgreSQLQueryShowParams struct { func (x *StartActionRequest_PostgreSQLQueryShowParams) Reset() { *x = StartActionRequest_PostgreSQLQueryShowParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[41] + mi := &file_agentpb_agent_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2762,7 +3023,7 @@ func (x *StartActionRequest_PostgreSQLQueryShowParams) String() string { func (*StartActionRequest_PostgreSQLQueryShowParams) ProtoMessage() {} func (x *StartActionRequest_PostgreSQLQueryShowParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[41] + mi := &file_agentpb_agent_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2800,7 +3061,7 @@ type StartActionRequest_PostgreSQLQuerySelectParams struct { func (x *StartActionRequest_PostgreSQLQuerySelectParams) Reset() { *x = StartActionRequest_PostgreSQLQuerySelectParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[42] + mi := &file_agentpb_agent_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2813,7 +3074,7 @@ func (x *StartActionRequest_PostgreSQLQuerySelectParams) String() string { func (*StartActionRequest_PostgreSQLQuerySelectParams) ProtoMessage() {} func (x *StartActionRequest_PostgreSQLQuerySelectParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[42] + mi := &file_agentpb_agent_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2859,7 +3120,7 @@ type StartActionRequest_MongoDBQueryGetParameterParams struct { func (x *StartActionRequest_MongoDBQueryGetParameterParams) Reset() { *x = StartActionRequest_MongoDBQueryGetParameterParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[43] + mi := &file_agentpb_agent_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2872,7 +3133,7 @@ func (x *StartActionRequest_MongoDBQueryGetParameterParams) String() string { func (*StartActionRequest_MongoDBQueryGetParameterParams) ProtoMessage() {} func (x *StartActionRequest_MongoDBQueryGetParameterParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[43] + mi := &file_agentpb_agent_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2918,7 +3179,7 @@ type StartActionRequest_MongoDBQueryBuildInfoParams struct { func (x *StartActionRequest_MongoDBQueryBuildInfoParams) Reset() { *x = StartActionRequest_MongoDBQueryBuildInfoParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[44] + mi := &file_agentpb_agent_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2931,7 +3192,7 @@ func (x *StartActionRequest_MongoDBQueryBuildInfoParams) String() string { func (*StartActionRequest_MongoDBQueryBuildInfoParams) ProtoMessage() {} func (x *StartActionRequest_MongoDBQueryBuildInfoParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[44] + mi := &file_agentpb_agent_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2977,7 +3238,7 @@ type StartActionRequest_MongoDBQueryGetCmdLineOptsParams struct { func (x *StartActionRequest_MongoDBQueryGetCmdLineOptsParams) Reset() { *x = StartActionRequest_MongoDBQueryGetCmdLineOptsParams{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[45] + mi := &file_agentpb_agent_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2990,7 +3251,7 @@ func (x *StartActionRequest_MongoDBQueryGetCmdLineOptsParams) String() string { func (*StartActionRequest_MongoDBQueryGetCmdLineOptsParams) ProtoMessage() {} func (x *StartActionRequest_MongoDBQueryGetCmdLineOptsParams) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[45] + mi := &file_agentpb_agent_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3033,7 +3294,7 @@ type CheckConnectionResponse_Stats struct { func (x *CheckConnectionResponse_Stats) Reset() { *x = CheckConnectionResponse_Stats{} if protoimpl.UnsafeEnabled { - mi := &file_agentpb_agent_proto_msgTypes[46] + mi := &file_agentpb_agent_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3046,7 +3307,7 @@ func (x *CheckConnectionResponse_Stats) String() string { func (*CheckConnectionResponse_Stats) ProtoMessage() {} func (x *CheckConnectionResponse_Stats) ProtoReflect() protoreflect.Message { - mi := &file_agentpb_agent_proto_msgTypes[46] + mi := &file_agentpb_agent_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3059,7 +3320,7 @@ func (x *CheckConnectionResponse_Stats) ProtoReflect() protoreflect.Message { // Deprecated: Use CheckConnectionResponse_Stats.ProtoReflect.Descriptor instead. func (*CheckConnectionResponse_Stats) Descriptor() ([]byte, []int) { - return file_agentpb_agent_proto_rawDescGZIP(), []int{20, 0} + return file_agentpb_agent_proto_rawDescGZIP(), []int{22, 0} } func (x *CheckConnectionResponse_Stats) GetTableCount() int32 { @@ -3075,63 +3336,72 @@ var file_agentpb_agent_proto_rawDesc = []byte{ 0x0a, 0x13, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x1a, 0x17, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x70, 0x62, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, - 0x79, 0x70, 0x62, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x1a, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x2f, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x01, 0x0a, - 0x09, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, 0x65, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x0a, - 0x13, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x64, - 0x65, 0x6c, 0x69, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x65, 0x6d, 0x70, - 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x65, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x12, 0x30, 0x0a, - 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, 0x5f, - 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x65, 0x6d, - 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x69, 0x67, 0x68, 0x74, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x1a, - 0x38, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 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, 0x06, 0x0a, 0x04, 0x50, 0x69, 0x6e, - 0x67, 0x22, 0x45, 0x0a, 0x04, 0x50, 0x6f, 0x6e, 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x11, 0x51, 0x41, 0x4e, 0x43, - 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, 0x0a, - 0x0e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0d, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x14, 0x0a, 0x12, 0x51, 0x41, - 0x4e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x81, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, - 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, - 0x50, 0x6f, 0x72, 0x74, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, - 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdf, 0x07, 0x0a, - 0x0f, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6d, 0x77, 0x69, 0x74, 0x6b, 0x6f, 0x77, 0x2f, 0x67, 0x6f, 0x2d, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, + 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x70, 0x62, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x70, 0x62, 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x1a, 0x1a, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x2f, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xda, 0x01, + 0x0a, 0x09, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x05, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2e, + 0x0a, 0x13, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, + 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x74, 0x65, 0x6d, + 0x70, 0x6c, 0x61, 0x74, 0x65, 0x4c, 0x65, 0x66, 0x74, 0x44, 0x65, 0x6c, 0x69, 0x6d, 0x12, 0x30, + 0x0a, 0x14, 0x74, 0x65, 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x5f, 0x72, 0x69, 0x67, 0x68, 0x74, + 0x5f, 0x64, 0x65, 0x6c, 0x69, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x74, 0x65, + 0x6d, 0x70, 0x6c, 0x61, 0x74, 0x65, 0x52, 0x69, 0x67, 0x68, 0x74, 0x44, 0x65, 0x6c, 0x69, 0x6d, + 0x1a, 0x38, 0x0a, 0x0a, 0x46, 0x69, 0x6c, 0x65, 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, 0x06, 0x0a, 0x04, 0x50, 0x69, + 0x6e, 0x67, 0x22, 0x45, 0x0a, 0x04, 0x50, 0x6f, 0x6e, 0x67, 0x12, 0x3d, 0x0a, 0x0c, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x63, 0x75, + 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x50, 0x0a, 0x11, 0x51, 0x41, 0x4e, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3b, + 0x0a, 0x0e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x0d, 0x6d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x42, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x22, 0x14, 0x0a, 0x12, 0x51, + 0x41, 0x4e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x81, 0x01, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, + 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x16, 0x0a, 0x14, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdb, 0x09, + 0x0a, 0x0f, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x53, 0x0a, 0x0f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x63, 0x65, + 0x73, 0x73, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, + 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, + 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, + 0x6e, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x74, + 0x69, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x3d, 0x0a, 0x07, 0x74, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x65, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, - 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x50, 0x0a, 0x0e, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, - 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, - 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x1a, 0xf4, 0x02, 0x0a, 0x0c, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, + 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x1a, 0xf4, 0x02, 0x0a, 0x0c, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, @@ -3181,382 +3451,430 @@ var file_agentpb_agent_proto_rawDesc = []byte{ 0x39, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x12, - 0x0a, 0x10, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xc0, 0x02, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x6e, 0x69, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x03, 0x6e, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x04, 0x62, - 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x6f, - 0x6c, 0x12, 0x16, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, - 0x48, 0x00, 0x52, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x18, 0x0a, 0x06, 0x75, 0x69, 0x6e, - 0x74, 0x36, 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x75, 0x69, 0x6e, - 0x74, 0x36, 0x34, 0x12, 0x18, 0x0a, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, - 0x05, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, - 0x62, 0x79, 0x74, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x12, 0x2f, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x6c, 0x69, - 0x63, 0x65, 0x12, 0x29, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x42, 0x06, 0x0a, - 0x04, 0x6b, 0x69, 0x6e, 0x64, 0x22, 0x41, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x6c, 0x69, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x65, 0x6e, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x60, + 0x0a, 0x06, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, + 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xe2, + 0xdf, 0x1f, 0x04, 0x18, 0x80, 0x80, 0x04, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, + 0x6f, 0x72, 0x74, 0x12, 0x2b, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x70, + 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x08, 0xe2, 0xdf, 0x1f, 0x04, 0x18, + 0x80, 0x80, 0x04, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x1a, 0x59, 0x0a, 0x0c, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 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, 0x33, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa2, 0x01, 0x0a, 0x10, + 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x3e, 0x0a, 0x07, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, + 0x1a, 0x4e, 0x0a, 0x0c, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 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, 0x28, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, + 0x22, 0xc0, 0x02, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x6e, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x48, 0x00, 0x52, 0x03, 0x6e, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x04, 0x62, 0x6f, 0x6f, + 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x04, 0x62, 0x6f, 0x6f, 0x6c, 0x12, + 0x16, 0x0a, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, + 0x52, 0x05, 0x69, 0x6e, 0x74, 0x36, 0x34, 0x12, 0x18, 0x0a, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, + 0x34, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x48, 0x00, 0x52, 0x06, 0x75, 0x69, 0x6e, 0x74, 0x36, + 0x34, 0x12, 0x18, 0x0a, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x01, 0x48, 0x00, 0x52, 0x06, 0x64, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x05, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x12, 0x3a, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x48, 0x00, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, + 0x2f, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x48, 0x00, 0x52, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, + 0x12, 0x29, 0x0a, 0x03, 0x6d, 0x61, 0x70, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x4d, 0x61, 0x70, 0x48, 0x00, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x42, 0x06, 0x0a, 0x04, 0x6b, + 0x69, 0x6e, 0x64, 0x22, 0x41, 0x0a, 0x10, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x53, 0x6c, 0x69, 0x63, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x0e, 0x51, 0x75, 0x65, 0x72, 0x79, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x12, 0x30, 0x0a, 0x03, 0x6d, 0x61, 0x70, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x2e, 0x4d, 0x61, + 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x1a, 0x4f, 0x0a, 0x08, 0x4d, + 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x05, 0x73, 0x6c, 0x69, 0x63, 0x65, 0x22, 0x93, 0x01, 0x0a, 0x0e, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x12, 0x30, 0x0a, 0x03, 0x6d, - 0x61, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x2e, - 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x03, 0x6d, 0x61, 0x70, 0x1a, 0x4f, 0x0a, - 0x08, 0x4d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x85, - 0x01, 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x2b, - 0x0a, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x6c, 0x69, 0x63, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x64, - 0x6f, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, - 0x52, 0x04, 0x64, 0x6f, 0x63, 0x73, 0x22, 0xce, 0x19, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x60, 0x0a, 0x14, 0x6d, 0x79, - 0x73, 0x71, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x12, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x45, - 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7a, 0x0a, 0x1e, - 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, - 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x6d, 0x79, - 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7a, 0x0a, 0x1e, 0x6d, 0x79, 0x73, 0x71, - 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x75, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x34, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, - 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x85, 0x01, 0x0a, + 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, + 0x6c, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x2b, 0x0a, 0x04, + 0x72, 0x6f, 0x77, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x6c, + 0x69, 0x63, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x29, 0x0a, 0x04, 0x64, 0x6f, 0x63, + 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x61, 0x70, 0x52, 0x04, + 0x64, 0x6f, 0x63, 0x73, 0x22, 0xce, 0x19, 0x0a, 0x12, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x60, 0x0a, 0x14, 0x6d, 0x79, 0x73, 0x71, + 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x12, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, + 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7a, 0x0a, 0x1e, 0x6d, 0x79, + 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, + 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x6d, 0x79, 0x73, 0x71, + 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7a, 0x0a, 0x1e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, + 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x17, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, - 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x68, - 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x89, 0x01, - 0x0a, 0x23, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, - 0x77, 0x5f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x67, + 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1a, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, + 0x77, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x67, 0x0a, 0x17, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, + 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, + 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, + 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x89, 0x01, 0x0a, 0x23, + 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x39, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, + 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, + 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, + 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x76, 0x0a, 0x1c, 0x70, 0x6f, 0x73, 0x74, 0x67, + 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, + 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x48, 0x00, 0x52, 0x19, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, + 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x66, 0x0a, 0x16, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x65, 0x78, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, + 0x44, 0x42, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, + 0x00, 0x52, 0x14, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, + 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x57, 0x0a, 0x11, 0x70, 0x74, 0x5f, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x54, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, + 0x0f, 0x70, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x12, 0x6d, 0x0a, 0x19, 0x70, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x73, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, + 0x54, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x16, 0x70, 0x74, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, + 0x64, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x67, 0x0a, 0x17, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, + 0x68, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x32, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, + 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, + 0x48, 0x00, 0x52, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, + 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x6d, 0x0a, 0x19, 0x6d, 0x79, 0x73, 0x71, + 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, - 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1f, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, - 0x65, 0x73, 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, - 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x76, 0x0a, 0x1c, 0x70, 0x6f, 0x73, - 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x64, - 0x65, 0x78, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x19, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, - 0x71, 0x6c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x66, 0x0a, 0x16, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x65, 0x78, 0x70, - 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, - 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x45, 0x78, 0x70, 0x6c, - 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x57, 0x0a, 0x11, 0x70, 0x74, 0x5f, - 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, - 0x50, 0x54, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, - 0x00, 0x52, 0x0f, 0x70, 0x74, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x12, 0x6d, 0x0a, 0x19, 0x70, 0x74, 0x5f, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, - 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, - 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x2e, 0x50, 0x54, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x16, 0x70, 0x74, 0x4d, 0x6f, 0x6e, - 0x67, 0x6f, 0x64, 0x62, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x67, 0x0a, 0x17, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x5f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x32, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, - 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, - 0x6d, 0x73, 0x48, 0x00, 0x52, 0x14, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x6d, 0x0a, 0x19, 0x6d, 0x79, - 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, + 0x16, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, + 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x76, 0x0a, 0x1c, 0x70, 0x6f, 0x73, 0x74, 0x67, + 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x68, 0x6f, 0x77, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, - 0x00, 0x52, 0x16, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x76, 0x0a, 0x1c, 0x70, 0x6f, 0x73, - 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x68, - 0x6f, 0x77, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x33, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, - 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, - 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x19, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, - 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x7c, 0x0a, 0x1e, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, - 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, + 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x48, 0x00, 0x52, 0x19, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x7c, 0x0a, 0x1e, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x5f, 0x71, 0x75, + 0x65, 0x72, 0x79, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, + 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, + 0x52, 0x1b, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x85, 0x01, + 0x0a, 0x21, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, + 0x67, 0x65, 0x74, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x70, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x2e, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x48, 0x00, 0x52, 0x1b, 0x70, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x73, 0x71, 0x6c, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, - 0x85, 0x01, 0x0a, 0x21, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, - 0x79, 0x5f, 0x67, 0x65, 0x74, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x5f, 0x70, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x36, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x61, 0x67, - 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, - 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1e, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, - 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7c, 0x0a, 0x1e, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, - 0x64, 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, - 0x66, 0x6f, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x35, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, - 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1b, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, - 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x8b, 0x01, 0x0a, 0x23, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, - 0x62, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x67, 0x65, 0x74, 0x63, 0x6d, 0x64, 0x6c, 0x69, - 0x6e, 0x65, 0x6f, 0x70, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x38, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, - 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x43, 0x6d, - 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x4f, 0x70, 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, - 0x00, 0x52, 0x20, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, - 0x65, 0x74, 0x63, 0x6d, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x6f, 0x70, 0x74, 0x73, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x1a, 0x82, 0x01, 0x0a, 0x12, 0x4d, 0x79, 0x53, - 0x51, 0x4c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x47, 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1e, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x7c, 0x0a, 0x1e, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, + 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x66, 0x6f, + 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x37, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x35, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, 0x1b, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x73, 0x12, 0x8b, 0x01, 0x0a, 0x23, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x5f, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x67, 0x65, 0x74, 0x63, 0x6d, 0x64, 0x6c, 0x69, 0x6e, 0x65, + 0x6f, 0x70, 0x74, 0x73, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x38, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x4d, 0x6f, 0x6e, + 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x43, 0x6d, 0x64, 0x4c, + 0x69, 0x6e, 0x65, 0x4f, 0x70, 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x48, 0x00, 0x52, + 0x20, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x64, 0x62, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, + 0x63, 0x6d, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x6f, 0x70, 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x73, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x09, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, + 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x1a, 0x82, 0x01, 0x0a, 0x12, 0x4d, 0x79, 0x53, 0x51, 0x4c, + 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, + 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x44, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, + 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, + 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, 0x0c, 0x6f, + 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x1a, 0x44, 0x0a, 0x1a, 0x4d, + 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x1a, 0x44, 0x0a, 0x1a, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x54, 0x61, + 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x3e, 0x0a, 0x14, 0x4d, 0x79, 0x53, 0x51, 0x4c, + 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x49, 0x0a, 0x1f, 0x50, 0x6f, 0x73, 0x74, 0x67, + 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, + 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x1a, 0x43, 0x0a, 0x19, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, + 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x6f, 0x0a, 0x14, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, + 0x44, 0x42, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x44, 0x0a, 0x0d, 0x6f, 0x75, 0x74, 0x70, 0x75, - 0x74, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6c, - 0x61, 0x69, 0x6e, 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x52, - 0x0c, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x1a, 0x44, 0x0a, - 0x1a, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, - 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x1a, 0x44, 0x0a, 0x1a, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, - 0x54, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x3e, 0x0a, 0x14, 0x4d, 0x79, 0x53, - 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x49, 0x0a, 0x1f, 0x50, 0x6f, 0x73, - 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, - 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, - 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x43, 0x0a, 0x19, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, 0x65, 0x53, - 0x51, 0x4c, 0x53, 0x68, 0x6f, 0x77, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x1a, 0x6f, 0x0a, 0x14, 0x4d, 0x6f, 0x6e, - 0x67, 0x6f, 0x44, 0x42, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, - 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, - 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x11, 0x0a, 0x0f, 0x50, 0x54, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x78, 0x0a, - 0x16, 0x50, 0x54, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, - 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x1a, 0x3e, 0x0a, 0x14, 0x4d, 0x79, 0x53, 0x51, 0x4c, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, + 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x11, 0x0a, 0x0f, 0x50, 0x54, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x1a, 0x78, 0x0a, 0x16, 0x50, + 0x54, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1a, 0x0a, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x1a, 0x3e, 0x0a, 0x14, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, + 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, + 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x71, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x40, 0x0a, 0x16, 0x4d, 0x79, 0x53, 0x51, 0x4c, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x40, 0x0a, 0x16, 0x4d, 0x79, 0x53, 0x51, 0x4c, - 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, - 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x2d, 0x0a, 0x19, 0x50, 0x6f, 0x73, - 0x74, 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x1a, 0x45, 0x0a, 0x1b, 0x50, 0x6f, 0x73, 0x74, - 0x67, 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, - 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x1a, - 0x63, 0x0a, 0x1e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, - 0x65, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, + 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x2d, 0x0a, 0x19, 0x50, 0x6f, 0x73, 0x74, 0x67, + 0x72, 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x68, 0x6f, 0x77, 0x50, 0x61, + 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x1a, 0x45, 0x0a, 0x1b, 0x50, 0x6f, 0x73, 0x74, 0x67, 0x72, + 0x65, 0x53, 0x51, 0x4c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x63, 0x0a, + 0x1e, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, + 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, + 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, + 0x65, 0x73, 0x1a, 0x60, 0x0a, 0x1b, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, 0x75, 0x65, + 0x72, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, - 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x60, 0x0a, 0x1b, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x50, 0x61, 0x72, - 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, - 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x65, 0x0a, 0x20, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, - 0x42, 0x51, 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x43, 0x6d, 0x64, 0x4c, 0x69, 0x6e, 0x65, - 0x4f, 0x70, 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, - 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, - 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x08, 0x0a, - 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, - 0x0a, 0x11, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x22, 0x14, 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x74, 0x0a, 0x13, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, - 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, - 0x75, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x16, 0x0a, 0x14, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, - 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, - 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x33, 0x0a, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, - 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, - 0x6c, 0x65, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x17, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, - 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x1a, 0x28, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb6, 0x04, 0x0a, 0x0c, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x04, - 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x67, 0x65, - 0x6e, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, - 0x41, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x71, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, - 0x51, 0x41, 0x4e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x48, 0x00, 0x52, 0x0a, 0x71, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, - 0x41, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6e, 0x67, 0x48, 0x00, 0x52, - 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, - 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, - 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, - 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, - 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, - 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x10, - 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, + 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x65, 0x0a, 0x20, 0x4d, 0x6f, 0x6e, 0x67, 0x6f, 0x44, 0x42, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x47, 0x65, 0x74, 0x43, 0x6d, 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x4f, 0x70, + 0x74, 0x73, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, + 0x78, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, + 0x52, 0x09, 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x70, + 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x0a, 0x11, + 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x14, + 0x0a, 0x12, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x74, 0x0a, 0x13, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x75, 0x74, 0x70, + 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, + 0x64, 0x6f, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x16, 0x0a, 0x14, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x0a, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, + 0x61, 0x12, 0x23, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x08, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, + 0xdf, 0x1f, 0x02, 0x58, 0x01, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x3b, 0x0a, + 0x0d, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x41, 0x63, 0x6b, 0x12, 0x2a, + 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x72, 0x70, 0x63, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0xbc, 0x01, 0x0a, 0x16, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xb6, 0x04, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6e, - 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, - 0x61, 0x6e, 0x67, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, - 0x0c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3c, 0x0a, - 0x0b, 0x71, 0x61, 0x6e, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x41, 0x4e, 0x43, 0x6f, - 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, - 0x0a, 0x71, 0x61, 0x6e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, - 0x00, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, - 0x21, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, - 0x6e, 0x67, 0x12, 0x35, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, - 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, - 0x08, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x0c, 0x73, 0x74, 0x61, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x64, 0x73, 0x6e, 0x12, 0x33, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x2f, 0x0a, 0x0a, 0x74, 0x65, 0x78, 0x74, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x09, + 0x74, 0x65, 0x78, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x17, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x3a, 0x0a, 0x05, 0x73, + 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, 0x28, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x22, 0xac, 0x05, 0x0a, 0x0c, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, + 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x41, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3b, 0x0a, 0x0b, 0x71, 0x61, 0x6e, 0x5f, + 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x41, 0x4e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x71, 0x61, 0x6e, 0x43, 0x6f, + 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x41, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0c, 0x61, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x34, 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, + 0x48, 0x00, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x12, 0x21, + 0x0a, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x6f, 0x6e, + 0x67, 0x12, 0x36, 0x0a, 0x09, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, + 0x08, 0x73, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x74, 0x6f, - 0x70, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, - 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, - 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2a, 0xc4, 0x01, - 0x0a, 0x18, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x4f, 0x75, - 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, - 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, - 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, - 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, - 0x4c, 0x41, 0x49, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, - 0x41, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x01, 0x12, 0x24, 0x0a, 0x20, + 0x1a, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0b, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3c, 0x0a, 0x0b, 0x73, 0x74, + 0x6f, 0x70, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x74, + 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, + 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x48, 0x00, 0x52, 0x0f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x0f, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, + 0x61, 0x41, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, + 0x74, 0x61, 0x41, 0x63, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x22, 0xac, 0x05, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, + 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x21, 0x0a, 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x0b, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6f, 0x6e, 0x67, 0x48, 0x00, 0x52, + 0x04, 0x70, 0x6f, 0x6e, 0x67, 0x12, 0x42, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5f, 0x63, + 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0b, 0x71, 0x61, 0x6e, + 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x51, 0x41, 0x4e, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x71, 0x61, 0x6e, + 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x42, 0x0a, 0x0d, 0x61, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x0c, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, 0x0f, 0x74, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x61, 0x63, 0x6b, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x41, 0x63, 0x6b, 0x48, 0x00, 0x52, 0x0d, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x41, 0x63, 0x6b, 0x12, 0x21, 0x0a, 0x04, 0x70, + 0x69, 0x6e, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x35, + 0x0a, 0x09, 0x73, 0x65, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x74, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x08, 0x73, 0x65, 0x74, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3e, 0x0a, 0x0c, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x61, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x61, 0x67, + 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x72, 0x74, 0x41, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3b, 0x0a, 0x0b, 0x73, 0x74, 0x6f, 0x70, 0x5f, 0x61, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x41, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x4a, 0x0a, 0x10, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0f, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, + 0x0a, 0x0b, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x48, 0x00, 0x52, 0x0a, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x44, 0x61, 0x74, 0x61, 0x42, 0x09, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x2a, + 0xc4, 0x01, 0x0a, 0x18, 0x4d, 0x79, 0x73, 0x71, 0x6c, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, + 0x4f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x46, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x5f, 0x4f, 0x55, - 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, - 0x10, 0x02, 0x12, 0x30, 0x0a, 0x2c, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x4c, - 0x41, 0x49, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, - 0x54, 0x5f, 0x54, 0x52, 0x41, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, 0x4a, 0x53, - 0x4f, 0x4e, 0x10, 0x03, 0x32, 0x41, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x38, 0x0a, - 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x13, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, 0x14, 0x2e, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x15, 0x5a, 0x13, 0x61, 0x70, 0x69, 0x2f, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x3b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x56, 0x41, + 0x4c, 0x49, 0x44, 0x10, 0x00, 0x12, 0x27, 0x0a, 0x23, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, + 0x58, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, + 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x44, 0x45, 0x46, 0x41, 0x55, 0x4c, 0x54, 0x10, 0x01, 0x12, 0x24, + 0x0a, 0x20, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x5f, + 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x5f, 0x4a, 0x53, + 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x30, 0x0a, 0x2c, 0x4d, 0x59, 0x53, 0x51, 0x4c, 0x5f, 0x45, 0x58, + 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x5f, 0x4f, 0x55, 0x54, 0x50, 0x55, 0x54, 0x5f, 0x46, 0x4f, 0x52, + 0x4d, 0x41, 0x54, 0x5f, 0x54, 0x52, 0x41, 0x44, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x5f, + 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x03, 0x32, 0x41, 0x0a, 0x05, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, + 0x38, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x13, 0x2e, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x1a, + 0x14, 0x2e, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x65, + 0x73, 0x73, 0x61, 0x67, 0x65, 0x28, 0x01, 0x30, 0x01, 0x42, 0x15, 0x5a, 0x13, 0x61, 0x70, 0x69, + 0x2f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x3b, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3572,7 +3890,7 @@ func file_agentpb_agent_proto_rawDescGZIP() []byte { } var file_agentpb_agent_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_agentpb_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 47) +var file_agentpb_agent_proto_msgTypes = make([]protoimpl.MessageInfo, 52) var file_agentpb_agent_proto_goTypes = []interface{}{ (MysqlExplainOutputFormat)(0), // 0: agent.MysqlExplainOutputFormat (*TextFiles)(nil), // 1: agent.TextFiles @@ -3594,113 +3912,128 @@ var file_agentpb_agent_proto_goTypes = []interface{}{ (*StopActionResponse)(nil), // 17: agent.StopActionResponse (*ActionResultRequest)(nil), // 18: agent.ActionResultRequest (*ActionResultResponse)(nil), // 19: agent.ActionResultResponse - (*CheckConnectionRequest)(nil), // 20: agent.CheckConnectionRequest - (*CheckConnectionResponse)(nil), // 21: agent.CheckConnectionResponse - (*AgentMessage)(nil), // 22: agent.AgentMessage - (*ServerMessage)(nil), // 23: agent.ServerMessage - nil, // 24: agent.TextFiles.FilesEntry - (*SetStateRequest_AgentProcess)(nil), // 25: agent.SetStateRequest.AgentProcess - nil, // 26: agent.SetStateRequest.AgentProcessesEntry - (*SetStateRequest_BuiltinAgent)(nil), // 27: agent.SetStateRequest.BuiltinAgent - nil, // 28: agent.SetStateRequest.BuiltinAgentsEntry - nil, // 29: agent.SetStateRequest.AgentProcess.TextFilesEntry - nil, // 30: agent.QueryActionMap.MapEntry - (*StartActionRequest_MySQLExplainParams)(nil), // 31: agent.StartActionRequest.MySQLExplainParams - (*StartActionRequest_MySQLShowCreateTableParams)(nil), // 32: agent.StartActionRequest.MySQLShowCreateTableParams - (*StartActionRequest_MySQLShowTableStatusParams)(nil), // 33: agent.StartActionRequest.MySQLShowTableStatusParams - (*StartActionRequest_MySQLShowIndexParams)(nil), // 34: agent.StartActionRequest.MySQLShowIndexParams - (*StartActionRequest_PostgreSQLShowCreateTableParams)(nil), // 35: agent.StartActionRequest.PostgreSQLShowCreateTableParams - (*StartActionRequest_PostgreSQLShowIndexParams)(nil), // 36: agent.StartActionRequest.PostgreSQLShowIndexParams - (*StartActionRequest_MongoDBExplainParams)(nil), // 37: agent.StartActionRequest.MongoDBExplainParams - (*StartActionRequest_PTSummaryParams)(nil), // 38: agent.StartActionRequest.PTSummaryParams - (*StartActionRequest_PTMongoDBSummaryParams)(nil), // 39: agent.StartActionRequest.PTMongoDBSummaryParams - (*StartActionRequest_MySQLQueryShowParams)(nil), // 40: agent.StartActionRequest.MySQLQueryShowParams - (*StartActionRequest_MySQLQuerySelectParams)(nil), // 41: agent.StartActionRequest.MySQLQuerySelectParams - (*StartActionRequest_PostgreSQLQueryShowParams)(nil), // 42: agent.StartActionRequest.PostgreSQLQueryShowParams - (*StartActionRequest_PostgreSQLQuerySelectParams)(nil), // 43: agent.StartActionRequest.PostgreSQLQuerySelectParams - (*StartActionRequest_MongoDBQueryGetParameterParams)(nil), // 44: agent.StartActionRequest.MongoDBQueryGetParameterParams - (*StartActionRequest_MongoDBQueryBuildInfoParams)(nil), // 45: agent.StartActionRequest.MongoDBQueryBuildInfoParams - (*StartActionRequest_MongoDBQueryGetCmdLineOptsParams)(nil), // 46: agent.StartActionRequest.MongoDBQueryGetCmdLineOptsParams - (*CheckConnectionResponse_Stats)(nil), // 47: agent.CheckConnectionResponse.Stats - (*timestamp.Timestamp)(nil), // 48: google.protobuf.Timestamp - (*MetricsBucket)(nil), // 49: agent.MetricsBucket - (inventorypb.AgentStatus)(0), // 50: inventory.AgentStatus - (*duration.Duration)(nil), // 51: google.protobuf.Duration - (inventorypb.ServiceType)(0), // 52: inventory.ServiceType - (inventorypb.AgentType)(0), // 53: inventory.AgentType + (*TunnelData)(nil), // 20: agent.TunnelData + (*TunnelDataAck)(nil), // 21: agent.TunnelDataAck + (*CheckConnectionRequest)(nil), // 22: agent.CheckConnectionRequest + (*CheckConnectionResponse)(nil), // 23: agent.CheckConnectionResponse + (*AgentMessage)(nil), // 24: agent.AgentMessage + (*ServerMessage)(nil), // 25: agent.ServerMessage + nil, // 26: agent.TextFiles.FilesEntry + (*SetStateRequest_AgentProcess)(nil), // 27: agent.SetStateRequest.AgentProcess + nil, // 28: agent.SetStateRequest.AgentProcessesEntry + (*SetStateRequest_BuiltinAgent)(nil), // 29: agent.SetStateRequest.BuiltinAgent + nil, // 30: agent.SetStateRequest.BuiltinAgentsEntry + (*SetStateRequest_Tunnel)(nil), // 31: agent.SetStateRequest.Tunnel + nil, // 32: agent.SetStateRequest.TunnelsEntry + nil, // 33: agent.SetStateRequest.AgentProcess.TextFilesEntry + nil, // 34: agent.SetStateResponse.TunnelsEntry + nil, // 35: agent.QueryActionMap.MapEntry + (*StartActionRequest_MySQLExplainParams)(nil), // 36: agent.StartActionRequest.MySQLExplainParams + (*StartActionRequest_MySQLShowCreateTableParams)(nil), // 37: agent.StartActionRequest.MySQLShowCreateTableParams + (*StartActionRequest_MySQLShowTableStatusParams)(nil), // 38: agent.StartActionRequest.MySQLShowTableStatusParams + (*StartActionRequest_MySQLShowIndexParams)(nil), // 39: agent.StartActionRequest.MySQLShowIndexParams + (*StartActionRequest_PostgreSQLShowCreateTableParams)(nil), // 40: agent.StartActionRequest.PostgreSQLShowCreateTableParams + (*StartActionRequest_PostgreSQLShowIndexParams)(nil), // 41: agent.StartActionRequest.PostgreSQLShowIndexParams + (*StartActionRequest_MongoDBExplainParams)(nil), // 42: agent.StartActionRequest.MongoDBExplainParams + (*StartActionRequest_PTSummaryParams)(nil), // 43: agent.StartActionRequest.PTSummaryParams + (*StartActionRequest_PTMongoDBSummaryParams)(nil), // 44: agent.StartActionRequest.PTMongoDBSummaryParams + (*StartActionRequest_MySQLQueryShowParams)(nil), // 45: agent.StartActionRequest.MySQLQueryShowParams + (*StartActionRequest_MySQLQuerySelectParams)(nil), // 46: agent.StartActionRequest.MySQLQuerySelectParams + (*StartActionRequest_PostgreSQLQueryShowParams)(nil), // 47: agent.StartActionRequest.PostgreSQLQueryShowParams + (*StartActionRequest_PostgreSQLQuerySelectParams)(nil), // 48: agent.StartActionRequest.PostgreSQLQuerySelectParams + (*StartActionRequest_MongoDBQueryGetParameterParams)(nil), // 49: agent.StartActionRequest.MongoDBQueryGetParameterParams + (*StartActionRequest_MongoDBQueryBuildInfoParams)(nil), // 50: agent.StartActionRequest.MongoDBQueryBuildInfoParams + (*StartActionRequest_MongoDBQueryGetCmdLineOptsParams)(nil), // 51: agent.StartActionRequest.MongoDBQueryGetCmdLineOptsParams + (*CheckConnectionResponse_Stats)(nil), // 52: agent.CheckConnectionResponse.Stats + (*timestamp.Timestamp)(nil), // 53: google.protobuf.Timestamp + (*MetricsBucket)(nil), // 54: agent.MetricsBucket + (inventorypb.AgentStatus)(0), // 55: inventory.AgentStatus + (*duration.Duration)(nil), // 56: google.protobuf.Duration + (*status.Status)(nil), // 57: google.rpc.Status + (inventorypb.ServiceType)(0), // 58: inventory.ServiceType + (inventorypb.AgentType)(0), // 59: inventory.AgentType } var file_agentpb_agent_proto_depIdxs = []int32{ - 24, // 0: agent.TextFiles.files:type_name -> agent.TextFiles.FilesEntry - 48, // 1: agent.Pong.current_time:type_name -> google.protobuf.Timestamp - 49, // 2: agent.QANCollectRequest.metrics_bucket:type_name -> agent.MetricsBucket - 50, // 3: agent.StateChangedRequest.status:type_name -> inventory.AgentStatus - 26, // 4: agent.SetStateRequest.agent_processes:type_name -> agent.SetStateRequest.AgentProcessesEntry - 28, // 5: agent.SetStateRequest.builtin_agents:type_name -> agent.SetStateRequest.BuiltinAgentsEntry - 48, // 6: agent.QueryActionValue.timestamp:type_name -> google.protobuf.Timestamp - 11, // 7: agent.QueryActionValue.slice:type_name -> agent.QueryActionSlice - 12, // 8: agent.QueryActionValue.map:type_name -> agent.QueryActionMap - 10, // 9: agent.QueryActionSlice.slice:type_name -> agent.QueryActionValue - 30, // 10: agent.QueryActionMap.map:type_name -> agent.QueryActionMap.MapEntry - 11, // 11: agent.QueryActionResult.rows:type_name -> agent.QueryActionSlice - 12, // 12: agent.QueryActionResult.docs:type_name -> agent.QueryActionMap - 31, // 13: agent.StartActionRequest.mysql_explain_params:type_name -> agent.StartActionRequest.MySQLExplainParams - 32, // 14: agent.StartActionRequest.mysql_show_create_table_params:type_name -> agent.StartActionRequest.MySQLShowCreateTableParams - 33, // 15: agent.StartActionRequest.mysql_show_table_status_params:type_name -> agent.StartActionRequest.MySQLShowTableStatusParams - 34, // 16: agent.StartActionRequest.mysql_show_index_params:type_name -> agent.StartActionRequest.MySQLShowIndexParams - 35, // 17: agent.StartActionRequest.postgresql_show_create_table_params:type_name -> agent.StartActionRequest.PostgreSQLShowCreateTableParams - 36, // 18: agent.StartActionRequest.postgresql_show_index_params:type_name -> agent.StartActionRequest.PostgreSQLShowIndexParams - 37, // 19: agent.StartActionRequest.mongodb_explain_params:type_name -> agent.StartActionRequest.MongoDBExplainParams - 38, // 20: agent.StartActionRequest.pt_summary_params:type_name -> agent.StartActionRequest.PTSummaryParams - 39, // 21: agent.StartActionRequest.pt_mongodb_summary_params:type_name -> agent.StartActionRequest.PTMongoDBSummaryParams - 40, // 22: agent.StartActionRequest.mysql_query_show_params:type_name -> agent.StartActionRequest.MySQLQueryShowParams - 41, // 23: agent.StartActionRequest.mysql_query_select_params:type_name -> agent.StartActionRequest.MySQLQuerySelectParams - 42, // 24: agent.StartActionRequest.postgresql_query_show_params:type_name -> agent.StartActionRequest.PostgreSQLQueryShowParams - 43, // 25: agent.StartActionRequest.postgresql_query_select_params:type_name -> agent.StartActionRequest.PostgreSQLQuerySelectParams - 44, // 26: agent.StartActionRequest.mongodb_query_getparameter_params:type_name -> agent.StartActionRequest.MongoDBQueryGetParameterParams - 45, // 27: agent.StartActionRequest.mongodb_query_buildinfo_params:type_name -> agent.StartActionRequest.MongoDBQueryBuildInfoParams - 46, // 28: agent.StartActionRequest.mongodb_query_getcmdlineopts_params:type_name -> agent.StartActionRequest.MongoDBQueryGetCmdLineOptsParams - 51, // 29: agent.StartActionRequest.timeout:type_name -> google.protobuf.Duration - 52, // 30: agent.CheckConnectionRequest.type:type_name -> inventory.ServiceType - 51, // 31: agent.CheckConnectionRequest.timeout:type_name -> google.protobuf.Duration - 1, // 32: agent.CheckConnectionRequest.text_files:type_name -> agent.TextFiles - 47, // 33: agent.CheckConnectionResponse.stats:type_name -> agent.CheckConnectionResponse.Stats - 2, // 34: agent.AgentMessage.ping:type_name -> agent.Ping - 6, // 35: agent.AgentMessage.state_changed:type_name -> agent.StateChangedRequest - 4, // 36: agent.AgentMessage.qan_collect:type_name -> agent.QANCollectRequest - 18, // 37: agent.AgentMessage.action_result:type_name -> agent.ActionResultRequest - 3, // 38: agent.AgentMessage.pong:type_name -> agent.Pong - 9, // 39: agent.AgentMessage.set_state:type_name -> agent.SetStateResponse - 15, // 40: agent.AgentMessage.start_action:type_name -> agent.StartActionResponse - 17, // 41: agent.AgentMessage.stop_action:type_name -> agent.StopActionResponse - 21, // 42: agent.AgentMessage.check_connection:type_name -> agent.CheckConnectionResponse - 3, // 43: agent.ServerMessage.pong:type_name -> agent.Pong - 7, // 44: agent.ServerMessage.state_changed:type_name -> agent.StateChangedResponse - 5, // 45: agent.ServerMessage.qan_collect:type_name -> agent.QANCollectResponse - 19, // 46: agent.ServerMessage.action_result:type_name -> agent.ActionResultResponse - 2, // 47: agent.ServerMessage.ping:type_name -> agent.Ping - 8, // 48: agent.ServerMessage.set_state:type_name -> agent.SetStateRequest - 14, // 49: agent.ServerMessage.start_action:type_name -> agent.StartActionRequest - 16, // 50: agent.ServerMessage.stop_action:type_name -> agent.StopActionRequest - 20, // 51: agent.ServerMessage.check_connection:type_name -> agent.CheckConnectionRequest - 53, // 52: agent.SetStateRequest.AgentProcess.type:type_name -> inventory.AgentType - 29, // 53: agent.SetStateRequest.AgentProcess.text_files:type_name -> agent.SetStateRequest.AgentProcess.TextFilesEntry - 25, // 54: agent.SetStateRequest.AgentProcessesEntry.value:type_name -> agent.SetStateRequest.AgentProcess - 53, // 55: agent.SetStateRequest.BuiltinAgent.type:type_name -> inventory.AgentType - 1, // 56: agent.SetStateRequest.BuiltinAgent.text_files:type_name -> agent.TextFiles - 27, // 57: agent.SetStateRequest.BuiltinAgentsEntry.value:type_name -> agent.SetStateRequest.BuiltinAgent - 10, // 58: agent.QueryActionMap.MapEntry.value:type_name -> agent.QueryActionValue - 0, // 59: agent.StartActionRequest.MySQLExplainParams.output_format:type_name -> agent.MysqlExplainOutputFormat - 1, // 60: agent.StartActionRequest.MongoDBExplainParams.text_files:type_name -> agent.TextFiles - 1, // 61: agent.StartActionRequest.MongoDBQueryGetParameterParams.text_files:type_name -> agent.TextFiles - 1, // 62: agent.StartActionRequest.MongoDBQueryBuildInfoParams.text_files:type_name -> agent.TextFiles - 1, // 63: agent.StartActionRequest.MongoDBQueryGetCmdLineOptsParams.text_files:type_name -> agent.TextFiles - 22, // 64: agent.Agent.Connect:input_type -> agent.AgentMessage - 23, // 65: agent.Agent.Connect:output_type -> agent.ServerMessage - 65, // [65:66] is the sub-list for method output_type - 64, // [64:65] is the sub-list for method input_type - 64, // [64:64] is the sub-list for extension type_name - 64, // [64:64] is the sub-list for extension extendee - 0, // [0:64] is the sub-list for field type_name + 26, // 0: agent.TextFiles.files:type_name -> agent.TextFiles.FilesEntry + 53, // 1: agent.Pong.current_time:type_name -> google.protobuf.Timestamp + 54, // 2: agent.QANCollectRequest.metrics_bucket:type_name -> agent.MetricsBucket + 55, // 3: agent.StateChangedRequest.status:type_name -> inventory.AgentStatus + 28, // 4: agent.SetStateRequest.agent_processes:type_name -> agent.SetStateRequest.AgentProcessesEntry + 30, // 5: agent.SetStateRequest.builtin_agents:type_name -> agent.SetStateRequest.BuiltinAgentsEntry + 32, // 6: agent.SetStateRequest.tunnels:type_name -> agent.SetStateRequest.TunnelsEntry + 34, // 7: agent.SetStateResponse.tunnels:type_name -> agent.SetStateResponse.TunnelsEntry + 53, // 8: agent.QueryActionValue.timestamp:type_name -> google.protobuf.Timestamp + 11, // 9: agent.QueryActionValue.slice:type_name -> agent.QueryActionSlice + 12, // 10: agent.QueryActionValue.map:type_name -> agent.QueryActionMap + 10, // 11: agent.QueryActionSlice.slice:type_name -> agent.QueryActionValue + 35, // 12: agent.QueryActionMap.map:type_name -> agent.QueryActionMap.MapEntry + 11, // 13: agent.QueryActionResult.rows:type_name -> agent.QueryActionSlice + 12, // 14: agent.QueryActionResult.docs:type_name -> agent.QueryActionMap + 36, // 15: agent.StartActionRequest.mysql_explain_params:type_name -> agent.StartActionRequest.MySQLExplainParams + 37, // 16: agent.StartActionRequest.mysql_show_create_table_params:type_name -> agent.StartActionRequest.MySQLShowCreateTableParams + 38, // 17: agent.StartActionRequest.mysql_show_table_status_params:type_name -> agent.StartActionRequest.MySQLShowTableStatusParams + 39, // 18: agent.StartActionRequest.mysql_show_index_params:type_name -> agent.StartActionRequest.MySQLShowIndexParams + 40, // 19: agent.StartActionRequest.postgresql_show_create_table_params:type_name -> agent.StartActionRequest.PostgreSQLShowCreateTableParams + 41, // 20: agent.StartActionRequest.postgresql_show_index_params:type_name -> agent.StartActionRequest.PostgreSQLShowIndexParams + 42, // 21: agent.StartActionRequest.mongodb_explain_params:type_name -> agent.StartActionRequest.MongoDBExplainParams + 43, // 22: agent.StartActionRequest.pt_summary_params:type_name -> agent.StartActionRequest.PTSummaryParams + 44, // 23: agent.StartActionRequest.pt_mongodb_summary_params:type_name -> agent.StartActionRequest.PTMongoDBSummaryParams + 45, // 24: agent.StartActionRequest.mysql_query_show_params:type_name -> agent.StartActionRequest.MySQLQueryShowParams + 46, // 25: agent.StartActionRequest.mysql_query_select_params:type_name -> agent.StartActionRequest.MySQLQuerySelectParams + 47, // 26: agent.StartActionRequest.postgresql_query_show_params:type_name -> agent.StartActionRequest.PostgreSQLQueryShowParams + 48, // 27: agent.StartActionRequest.postgresql_query_select_params:type_name -> agent.StartActionRequest.PostgreSQLQuerySelectParams + 49, // 28: agent.StartActionRequest.mongodb_query_getparameter_params:type_name -> agent.StartActionRequest.MongoDBQueryGetParameterParams + 50, // 29: agent.StartActionRequest.mongodb_query_buildinfo_params:type_name -> agent.StartActionRequest.MongoDBQueryBuildInfoParams + 51, // 30: agent.StartActionRequest.mongodb_query_getcmdlineopts_params:type_name -> agent.StartActionRequest.MongoDBQueryGetCmdLineOptsParams + 56, // 31: agent.StartActionRequest.timeout:type_name -> google.protobuf.Duration + 57, // 32: agent.TunnelDataAck.status:type_name -> google.rpc.Status + 58, // 33: agent.CheckConnectionRequest.type:type_name -> inventory.ServiceType + 56, // 34: agent.CheckConnectionRequest.timeout:type_name -> google.protobuf.Duration + 1, // 35: agent.CheckConnectionRequest.text_files:type_name -> agent.TextFiles + 52, // 36: agent.CheckConnectionResponse.stats:type_name -> agent.CheckConnectionResponse.Stats + 2, // 37: agent.AgentMessage.ping:type_name -> agent.Ping + 6, // 38: agent.AgentMessage.state_changed:type_name -> agent.StateChangedRequest + 4, // 39: agent.AgentMessage.qan_collect:type_name -> agent.QANCollectRequest + 18, // 40: agent.AgentMessage.action_result:type_name -> agent.ActionResultRequest + 20, // 41: agent.AgentMessage.tunnel_data:type_name -> agent.TunnelData + 3, // 42: agent.AgentMessage.pong:type_name -> agent.Pong + 9, // 43: agent.AgentMessage.set_state:type_name -> agent.SetStateResponse + 15, // 44: agent.AgentMessage.start_action:type_name -> agent.StartActionResponse + 17, // 45: agent.AgentMessage.stop_action:type_name -> agent.StopActionResponse + 23, // 46: agent.AgentMessage.check_connection:type_name -> agent.CheckConnectionResponse + 21, // 47: agent.AgentMessage.tunnel_data_ack:type_name -> agent.TunnelDataAck + 3, // 48: agent.ServerMessage.pong:type_name -> agent.Pong + 7, // 49: agent.ServerMessage.state_changed:type_name -> agent.StateChangedResponse + 5, // 50: agent.ServerMessage.qan_collect:type_name -> agent.QANCollectResponse + 19, // 51: agent.ServerMessage.action_result:type_name -> agent.ActionResultResponse + 21, // 52: agent.ServerMessage.tunnel_data_ack:type_name -> agent.TunnelDataAck + 2, // 53: agent.ServerMessage.ping:type_name -> agent.Ping + 8, // 54: agent.ServerMessage.set_state:type_name -> agent.SetStateRequest + 14, // 55: agent.ServerMessage.start_action:type_name -> agent.StartActionRequest + 16, // 56: agent.ServerMessage.stop_action:type_name -> agent.StopActionRequest + 22, // 57: agent.ServerMessage.check_connection:type_name -> agent.CheckConnectionRequest + 20, // 58: agent.ServerMessage.tunnel_data:type_name -> agent.TunnelData + 59, // 59: agent.SetStateRequest.AgentProcess.type:type_name -> inventory.AgentType + 33, // 60: agent.SetStateRequest.AgentProcess.text_files:type_name -> agent.SetStateRequest.AgentProcess.TextFilesEntry + 27, // 61: agent.SetStateRequest.AgentProcessesEntry.value:type_name -> agent.SetStateRequest.AgentProcess + 59, // 62: agent.SetStateRequest.BuiltinAgent.type:type_name -> inventory.AgentType + 1, // 63: agent.SetStateRequest.BuiltinAgent.text_files:type_name -> agent.TextFiles + 29, // 64: agent.SetStateRequest.BuiltinAgentsEntry.value:type_name -> agent.SetStateRequest.BuiltinAgent + 31, // 65: agent.SetStateRequest.TunnelsEntry.value:type_name -> agent.SetStateRequest.Tunnel + 57, // 66: agent.SetStateResponse.TunnelsEntry.value:type_name -> google.rpc.Status + 10, // 67: agent.QueryActionMap.MapEntry.value:type_name -> agent.QueryActionValue + 0, // 68: agent.StartActionRequest.MySQLExplainParams.output_format:type_name -> agent.MysqlExplainOutputFormat + 1, // 69: agent.StartActionRequest.MongoDBExplainParams.text_files:type_name -> agent.TextFiles + 1, // 70: agent.StartActionRequest.MongoDBQueryGetParameterParams.text_files:type_name -> agent.TextFiles + 1, // 71: agent.StartActionRequest.MongoDBQueryBuildInfoParams.text_files:type_name -> agent.TextFiles + 1, // 72: agent.StartActionRequest.MongoDBQueryGetCmdLineOptsParams.text_files:type_name -> agent.TextFiles + 24, // 73: agent.Agent.Connect:input_type -> agent.AgentMessage + 25, // 74: agent.Agent.Connect:output_type -> agent.ServerMessage + 74, // [74:75] is the sub-list for method output_type + 73, // [73:74] is the sub-list for method input_type + 73, // [73:73] is the sub-list for extension type_name + 73, // [73:73] is the sub-list for extension extendee + 0, // [0:73] is the sub-list for field type_name } func init() { file_agentpb_agent_proto_init() } @@ -3939,7 +4272,7 @@ func file_agentpb_agent_proto_init() { } } file_agentpb_agent_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckConnectionRequest); i { + switch v := v.(*TunnelData); i { case 0: return &v.state case 1: @@ -3951,7 +4284,7 @@ func file_agentpb_agent_proto_init() { } } file_agentpb_agent_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CheckConnectionResponse); i { + switch v := v.(*TunnelDataAck); i { case 0: return &v.state case 1: @@ -3963,7 +4296,7 @@ func file_agentpb_agent_proto_init() { } } file_agentpb_agent_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AgentMessage); i { + switch v := v.(*CheckConnectionRequest); i { case 0: return &v.state case 1: @@ -3975,7 +4308,19 @@ func file_agentpb_agent_proto_init() { } } file_agentpb_agent_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerMessage); i { + switch v := v.(*CheckConnectionResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_agentpb_agent_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AgentMessage); i { case 0: return &v.state case 1: @@ -3987,7 +4332,7 @@ func file_agentpb_agent_proto_init() { } } file_agentpb_agent_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetStateRequest_AgentProcess); i { + switch v := v.(*ServerMessage); i { case 0: return &v.state case 1: @@ -3999,6 +4344,18 @@ func file_agentpb_agent_proto_init() { } } file_agentpb_agent_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetStateRequest_AgentProcess); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_agentpb_agent_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetStateRequest_BuiltinAgent); i { case 0: return &v.state @@ -4011,6 +4368,18 @@ func file_agentpb_agent_proto_init() { } } file_agentpb_agent_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetStateRequest_Tunnel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_agentpb_agent_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_MySQLExplainParams); i { case 0: return &v.state @@ -4022,7 +4391,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_MySQLShowCreateTableParams); i { case 0: return &v.state @@ -4034,7 +4403,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_MySQLShowTableStatusParams); i { case 0: return &v.state @@ -4046,7 +4415,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_MySQLShowIndexParams); i { case 0: return &v.state @@ -4058,7 +4427,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_PostgreSQLShowCreateTableParams); i { case 0: return &v.state @@ -4070,7 +4439,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_PostgreSQLShowIndexParams); i { case 0: return &v.state @@ -4082,7 +4451,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_MongoDBExplainParams); i { case 0: return &v.state @@ -4094,7 +4463,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_PTSummaryParams); i { case 0: return &v.state @@ -4106,7 +4475,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_PTMongoDBSummaryParams); i { case 0: return &v.state @@ -4118,7 +4487,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_MySQLQueryShowParams); i { case 0: return &v.state @@ -4130,7 +4499,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_MySQLQuerySelectParams); i { case 0: return &v.state @@ -4142,7 +4511,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_PostgreSQLQueryShowParams); i { case 0: return &v.state @@ -4154,7 +4523,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_PostgreSQLQuerySelectParams); i { case 0: return &v.state @@ -4166,7 +4535,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_MongoDBQueryGetParameterParams); i { case 0: return &v.state @@ -4178,7 +4547,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_MongoDBQueryBuildInfoParams); i { case 0: return &v.state @@ -4190,7 +4559,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StartActionRequest_MongoDBQueryGetCmdLineOptsParams); i { case 0: return &v.state @@ -4202,7 +4571,7 @@ func file_agentpb_agent_proto_init() { return nil } } - file_agentpb_agent_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_agentpb_agent_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CheckConnectionResponse_Stats); i { case 0: return &v.state @@ -4244,27 +4613,31 @@ func file_agentpb_agent_proto_init() { (*StartActionRequest_MongodbQueryBuildinfoParams)(nil), (*StartActionRequest_MongodbQueryGetcmdlineoptsParams)(nil), } - file_agentpb_agent_proto_msgTypes[21].OneofWrappers = []interface{}{ + file_agentpb_agent_proto_msgTypes[23].OneofWrappers = []interface{}{ (*AgentMessage_Ping)(nil), (*AgentMessage_StateChanged)(nil), (*AgentMessage_QanCollect)(nil), (*AgentMessage_ActionResult)(nil), + (*AgentMessage_TunnelData)(nil), (*AgentMessage_Pong)(nil), (*AgentMessage_SetState)(nil), (*AgentMessage_StartAction)(nil), (*AgentMessage_StopAction)(nil), (*AgentMessage_CheckConnection)(nil), + (*AgentMessage_TunnelDataAck)(nil), } - file_agentpb_agent_proto_msgTypes[22].OneofWrappers = []interface{}{ + file_agentpb_agent_proto_msgTypes[24].OneofWrappers = []interface{}{ (*ServerMessage_Pong)(nil), (*ServerMessage_StateChanged)(nil), (*ServerMessage_QanCollect)(nil), (*ServerMessage_ActionResult)(nil), + (*ServerMessage_TunnelDataAck)(nil), (*ServerMessage_Ping)(nil), (*ServerMessage_SetState)(nil), (*ServerMessage_StartAction)(nil), (*ServerMessage_StopAction)(nil), (*ServerMessage_CheckConnection)(nil), + (*ServerMessage_TunnelData)(nil), } type x struct{} out := protoimpl.TypeBuilder{ @@ -4272,7 +4645,7 @@ func file_agentpb_agent_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_agentpb_agent_proto_rawDesc, NumEnums: 1, - NumMessages: 47, + NumMessages: 52, NumExtensions: 0, NumServices: 1, }, @@ -4353,7 +4726,7 @@ type UnimplementedAgentServer struct { } func (*UnimplementedAgentServer) Connect(Agent_ConnectServer) error { - return status.Errorf(codes.Unimplemented, "method Connect not implemented") + return status1.Errorf(codes.Unimplemented, "method Connect not implemented") } func RegisterAgentServer(s *grpc.Server, srv AgentServer) { diff --git a/vendor/github.com/percona/pmm/api/agentpb/agent.validator.pb.go b/vendor/github.com/percona/pmm/api/agentpb/agent.validator.pb.go index 0371361bad..499c5f9325 100644 --- a/vendor/github.com/percona/pmm/api/agentpb/agent.validator.pb.go +++ b/vendor/github.com/percona/pmm/api/agentpb/agent.validator.pb.go @@ -8,8 +8,10 @@ import ( proto "github.com/golang/protobuf/proto" _ "github.com/golang/protobuf/ptypes/duration" _ "github.com/golang/protobuf/ptypes/timestamp" + _ "github.com/mwitkow/go-proto-validators" github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" _ "github.com/percona/pmm/api/inventorypb" + _ "google.golang.org/genproto/googleapis/rpc/status" math "math" ) @@ -53,6 +55,7 @@ func (this *StateChangedResponse) Validate() error { return nil } func (this *SetStateRequest) Validate() error { + // Validation of proto3 map<> fields is unsupported. // Validation of proto3 map<> fields is unsupported. // Validation of proto3 map<> fields is unsupported. return nil @@ -69,7 +72,17 @@ func (this *SetStateRequest_BuiltinAgent) Validate() error { } return nil } +func (this *SetStateRequest_Tunnel) Validate() error { + if !(this.ListenPort < 65536) { + return github_com_mwitkow_go_proto_validators.FieldError("ListenPort", fmt.Errorf(`value '%v' must be less than '65536'`, this.ListenPort)) + } + if !(this.ConnectPort < 65536) { + return github_com_mwitkow_go_proto_validators.FieldError("ConnectPort", fmt.Errorf(`value '%v' must be less than '65536'`, this.ConnectPort)) + } + return nil +} func (this *SetStateResponse) Validate() error { + // Validation of proto3 map<> fields is unsupported. return nil } func (this *QueryActionValue) Validate() error { @@ -330,6 +343,23 @@ func (this *ActionResultRequest) Validate() error { func (this *ActionResultResponse) Validate() error { return nil } +func (this *TunnelData) Validate() error { + if this.TunnelId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("TunnelId", fmt.Errorf(`value '%v' must not be an empty string`, this.TunnelId)) + } + if this.ConnectionId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("ConnectionId", fmt.Errorf(`value '%v' must not be an empty string`, this.ConnectionId)) + } + return nil +} +func (this *TunnelDataAck) Validate() error { + if this.Status != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Status); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Status", err) + } + } + return nil +} func (this *CheckConnectionRequest) Validate() error { if this.Timeout != nil { if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(this.Timeout); err != nil { @@ -383,6 +413,13 @@ func (this *AgentMessage) Validate() error { } } } + if oneOfNester, ok := this.GetPayload().(*AgentMessage_TunnelData); ok { + if oneOfNester.TunnelData != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(oneOfNester.TunnelData); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TunnelData", err) + } + } + } if oneOfNester, ok := this.GetPayload().(*AgentMessage_Pong); ok { if oneOfNester.Pong != nil { if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(oneOfNester.Pong); err != nil { @@ -418,6 +455,13 @@ func (this *AgentMessage) Validate() error { } } } + if oneOfNester, ok := this.GetPayload().(*AgentMessage_TunnelDataAck); ok { + if oneOfNester.TunnelDataAck != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(oneOfNester.TunnelDataAck); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TunnelDataAck", err) + } + } + } return nil } func (this *ServerMessage) Validate() error { @@ -449,6 +493,13 @@ func (this *ServerMessage) Validate() error { } } } + if oneOfNester, ok := this.GetPayload().(*ServerMessage_TunnelDataAck); ok { + if oneOfNester.TunnelDataAck != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(oneOfNester.TunnelDataAck); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TunnelDataAck", err) + } + } + } if oneOfNester, ok := this.GetPayload().(*ServerMessage_Ping); ok { if oneOfNester.Ping != nil { if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(oneOfNester.Ping); err != nil { @@ -484,5 +535,12 @@ func (this *ServerMessage) Validate() error { } } } + if oneOfNester, ok := this.GetPayload().(*ServerMessage_TunnelData); ok { + if oneOfNester.TunnelData != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(oneOfNester.TunnelData); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("TunnelData", err) + } + } + } return nil } diff --git a/vendor/github.com/percona/pmm/api/inventorypb/tunnels.pb.go b/vendor/github.com/percona/pmm/api/inventorypb/tunnels.pb.go new file mode 100644 index 0000000000..70ca83e133 --- /dev/null +++ b/vendor/github.com/percona/pmm/api/inventorypb/tunnels.pb.go @@ -0,0 +1,805 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.13.0 +// source: inventorypb/tunnels.proto + +package inventorypb + +import ( + context "context" + proto "github.com/golang/protobuf/proto" + _ "github.com/mwitkow/go-proto-validators" + _ "google.golang.org/genproto/googleapis/api/annotations" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +// Tunnel represents a single Tunnel configuration. +type Tunnel struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Tunnel ID. + TunnelId string `protobuf:"bytes,1,opt,name=tunnel_id,json=tunnelId,proto3" json:"tunnel_id,omitempty"` + // Agent ID of the listening pmm-agent. + ListenAgentId string `protobuf:"bytes,2,opt,name=listen_agent_id,json=listenAgentId,proto3" json:"listen_agent_id,omitempty"` + // Listen port of the listening pmm-agent. + ListenPort uint32 `protobuf:"varint,3,opt,name=listen_port,json=listenPort,proto3" json:"listen_port,omitempty"` + // Agent ID of the connecting pmm-agent. + ConnectAgentId string `protobuf:"bytes,4,opt,name=connect_agent_id,json=connectAgentId,proto3" json:"connect_agent_id,omitempty"` + // Target port of the connecting pmm-agent. + ConnectPort uint32 `protobuf:"varint,5,opt,name=connect_port,json=connectPort,proto3" json:"connect_port,omitempty"` +} + +func (x *Tunnel) Reset() { + *x = Tunnel{} + if protoimpl.UnsafeEnabled { + mi := &file_inventorypb_tunnels_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Tunnel) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Tunnel) ProtoMessage() {} + +func (x *Tunnel) ProtoReflect() protoreflect.Message { + mi := &file_inventorypb_tunnels_proto_msgTypes[0] + 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 Tunnel.ProtoReflect.Descriptor instead. +func (*Tunnel) Descriptor() ([]byte, []int) { + return file_inventorypb_tunnels_proto_rawDescGZIP(), []int{0} +} + +func (x *Tunnel) GetTunnelId() string { + if x != nil { + return x.TunnelId + } + return "" +} + +func (x *Tunnel) GetListenAgentId() string { + if x != nil { + return x.ListenAgentId + } + return "" +} + +func (x *Tunnel) GetListenPort() uint32 { + if x != nil { + return x.ListenPort + } + return 0 +} + +func (x *Tunnel) GetConnectAgentId() string { + if x != nil { + return x.ConnectAgentId + } + return "" +} + +func (x *Tunnel) GetConnectPort() uint32 { + if x != nil { + return x.ConnectPort + } + return 0 +} + +type ListTunnelsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Return only Tunnels where one (or both) pmm-agent has this ID. + AgentId string `protobuf:"bytes,1,opt,name=agent_id,json=agentId,proto3" json:"agent_id,omitempty"` +} + +func (x *ListTunnelsRequest) Reset() { + *x = ListTunnelsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_inventorypb_tunnels_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTunnelsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTunnelsRequest) ProtoMessage() {} + +func (x *ListTunnelsRequest) ProtoReflect() protoreflect.Message { + mi := &file_inventorypb_tunnels_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 ListTunnelsRequest.ProtoReflect.Descriptor instead. +func (*ListTunnelsRequest) Descriptor() ([]byte, []int) { + return file_inventorypb_tunnels_proto_rawDescGZIP(), []int{1} +} + +func (x *ListTunnelsRequest) GetAgentId() string { + if x != nil { + return x.AgentId + } + return "" +} + +type ListTunnelsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tunnel []*Tunnel `protobuf:"bytes,1,rep,name=tunnel,proto3" json:"tunnel,omitempty"` +} + +func (x *ListTunnelsResponse) Reset() { + *x = ListTunnelsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_inventorypb_tunnels_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListTunnelsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListTunnelsResponse) ProtoMessage() {} + +func (x *ListTunnelsResponse) ProtoReflect() protoreflect.Message { + mi := &file_inventorypb_tunnels_proto_msgTypes[2] + 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 ListTunnelsResponse.ProtoReflect.Descriptor instead. +func (*ListTunnelsResponse) Descriptor() ([]byte, []int) { + return file_inventorypb_tunnels_proto_rawDescGZIP(), []int{2} +} + +func (x *ListTunnelsResponse) GetTunnel() []*Tunnel { + if x != nil { + return x.Tunnel + } + return nil +} + +type AddTunnelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Agent ID of the listening pmm-agent. + ListenAgentId string `protobuf:"bytes,1,opt,name=listen_agent_id,json=listenAgentId,proto3" json:"listen_agent_id,omitempty"` + // Listen port of the listening pmm-agent. + ListenPort uint32 `protobuf:"varint,2,opt,name=listen_port,json=listenPort,proto3" json:"listen_port,omitempty"` + // Agent ID of the connecting pmm-agent. + ConnectAgentId string `protobuf:"bytes,3,opt,name=connect_agent_id,json=connectAgentId,proto3" json:"connect_agent_id,omitempty"` + // Target port of the connecting pmm-agent. + ConnectPort uint32 `protobuf:"varint,4,opt,name=connect_port,json=connectPort,proto3" json:"connect_port,omitempty"` +} + +func (x *AddTunnelRequest) Reset() { + *x = AddTunnelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_inventorypb_tunnels_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddTunnelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddTunnelRequest) ProtoMessage() {} + +func (x *AddTunnelRequest) ProtoReflect() protoreflect.Message { + mi := &file_inventorypb_tunnels_proto_msgTypes[3] + 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 AddTunnelRequest.ProtoReflect.Descriptor instead. +func (*AddTunnelRequest) Descriptor() ([]byte, []int) { + return file_inventorypb_tunnels_proto_rawDescGZIP(), []int{3} +} + +func (x *AddTunnelRequest) GetListenAgentId() string { + if x != nil { + return x.ListenAgentId + } + return "" +} + +func (x *AddTunnelRequest) GetListenPort() uint32 { + if x != nil { + return x.ListenPort + } + return 0 +} + +func (x *AddTunnelRequest) GetConnectAgentId() string { + if x != nil { + return x.ConnectAgentId + } + return "" +} + +func (x *AddTunnelRequest) GetConnectPort() uint32 { + if x != nil { + return x.ConnectPort + } + return 0 +} + +type AddTunnelResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Tunnel ID. + TunnelId string `protobuf:"bytes,1,opt,name=tunnel_id,json=tunnelId,proto3" json:"tunnel_id,omitempty"` +} + +func (x *AddTunnelResponse) Reset() { + *x = AddTunnelResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_inventorypb_tunnels_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AddTunnelResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AddTunnelResponse) ProtoMessage() {} + +func (x *AddTunnelResponse) ProtoReflect() protoreflect.Message { + mi := &file_inventorypb_tunnels_proto_msgTypes[4] + 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 AddTunnelResponse.ProtoReflect.Descriptor instead. +func (*AddTunnelResponse) Descriptor() ([]byte, []int) { + return file_inventorypb_tunnels_proto_rawDescGZIP(), []int{4} +} + +func (x *AddTunnelResponse) GetTunnelId() string { + if x != nil { + return x.TunnelId + } + return "" +} + +type RemoveTunnelRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TunnelId string `protobuf:"bytes,1,opt,name=tunnel_id,json=tunnelId,proto3" json:"tunnel_id,omitempty"` +} + +func (x *RemoveTunnelRequest) Reset() { + *x = RemoveTunnelRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_inventorypb_tunnels_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveTunnelRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveTunnelRequest) ProtoMessage() {} + +func (x *RemoveTunnelRequest) ProtoReflect() protoreflect.Message { + mi := &file_inventorypb_tunnels_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 RemoveTunnelRequest.ProtoReflect.Descriptor instead. +func (*RemoveTunnelRequest) Descriptor() ([]byte, []int) { + return file_inventorypb_tunnels_proto_rawDescGZIP(), []int{5} +} + +func (x *RemoveTunnelRequest) GetTunnelId() string { + if x != nil { + return x.TunnelId + } + return "" +} + +type RemoveTunnelResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *RemoveTunnelResponse) Reset() { + *x = RemoveTunnelResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_inventorypb_tunnels_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *RemoveTunnelResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RemoveTunnelResponse) ProtoMessage() {} + +func (x *RemoveTunnelResponse) ProtoReflect() protoreflect.Message { + mi := &file_inventorypb_tunnels_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 RemoveTunnelResponse.ProtoReflect.Descriptor instead. +func (*RemoveTunnelResponse) Descriptor() ([]byte, []int) { + return file_inventorypb_tunnels_proto_rawDescGZIP(), []int{6} +} + +var File_inventorypb_tunnels_proto protoreflect.FileDescriptor + +var file_inventorypb_tunnels_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x2f, 0x74, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x1a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x6d, 0x77, 0x69, 0x74, 0x6b, 0x6f, 0x77, 0x2f, 0x67, 0x6f, 0x2d, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2d, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x01, 0x0a, + 0x06, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6c, + 0x69, 0x73, 0x74, 0x65, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, + 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x28, 0x0a, + 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, + 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x2f, 0x0a, 0x12, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x13, 0x4c, + 0x69, 0x73, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x06, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x22, 0xd0, 0x01, + 0x0a, 0x10, 0x41, 0x64, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x0f, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, + 0x02, 0x58, 0x01, 0x52, 0x0d, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x0b, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xe2, 0xdf, 0x1f, 0x06, 0x10, 0x00, 0x18, + 0x80, 0x80, 0x04, 0x52, 0x0a, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x50, 0x6f, 0x72, 0x74, 0x12, + 0x30, 0x0a, 0x10, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, 0x1f, 0x02, 0x58, + 0x01, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, + 0x64, 0x12, 0x2d, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x6f, 0x72, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x0a, 0xe2, 0xdf, 0x1f, 0x06, 0x10, 0x00, 0x18, + 0x80, 0x80, 0x04, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x72, 0x74, + 0x22, 0x30, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x49, 0x64, 0x22, 0x3a, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, + 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x09, 0x74, 0x75, 0x6e, + 0x6e, 0x65, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xe2, 0xdf, + 0x1f, 0x02, 0x58, 0x01, 0x52, 0x08, 0x74, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x64, 0x22, 0x16, + 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xe6, 0x02, 0x0a, 0x07, 0x54, 0x75, 0x6e, 0x6e, 0x65, + 0x6c, 0x73, 0x12, 0x73, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, + 0x73, 0x12, 0x1d, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x1e, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, + 0x4c, 0x69, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x12, 0x6c, 0x0a, 0x09, 0x41, 0x64, 0x64, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x2e, 0x41, 0x64, 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x1c, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x41, 0x64, + 0x64, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x24, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x22, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, + 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x41, + 0x64, 0x64, 0x3a, 0x01, 0x2a, 0x12, 0x78, 0x0a, 0x0c, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, + 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x1e, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, + 0x79, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x54, 0x75, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x27, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x22, 0x1c, + 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x54, 0x75, + 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x2f, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x3a, 0x01, 0x2a, 0x42, + 0x1d, 0x5a, 0x1b, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, + 0x70, 0x62, 0x3b, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_inventorypb_tunnels_proto_rawDescOnce sync.Once + file_inventorypb_tunnels_proto_rawDescData = file_inventorypb_tunnels_proto_rawDesc +) + +func file_inventorypb_tunnels_proto_rawDescGZIP() []byte { + file_inventorypb_tunnels_proto_rawDescOnce.Do(func() { + file_inventorypb_tunnels_proto_rawDescData = protoimpl.X.CompressGZIP(file_inventorypb_tunnels_proto_rawDescData) + }) + return file_inventorypb_tunnels_proto_rawDescData +} + +var file_inventorypb_tunnels_proto_msgTypes = make([]protoimpl.MessageInfo, 7) +var file_inventorypb_tunnels_proto_goTypes = []interface{}{ + (*Tunnel)(nil), // 0: inventory.Tunnel + (*ListTunnelsRequest)(nil), // 1: inventory.ListTunnelsRequest + (*ListTunnelsResponse)(nil), // 2: inventory.ListTunnelsResponse + (*AddTunnelRequest)(nil), // 3: inventory.AddTunnelRequest + (*AddTunnelResponse)(nil), // 4: inventory.AddTunnelResponse + (*RemoveTunnelRequest)(nil), // 5: inventory.RemoveTunnelRequest + (*RemoveTunnelResponse)(nil), // 6: inventory.RemoveTunnelResponse +} +var file_inventorypb_tunnels_proto_depIdxs = []int32{ + 0, // 0: inventory.ListTunnelsResponse.tunnel:type_name -> inventory.Tunnel + 1, // 1: inventory.Tunnels.ListTunnels:input_type -> inventory.ListTunnelsRequest + 3, // 2: inventory.Tunnels.AddTunnel:input_type -> inventory.AddTunnelRequest + 5, // 3: inventory.Tunnels.RemoveTunnel:input_type -> inventory.RemoveTunnelRequest + 2, // 4: inventory.Tunnels.ListTunnels:output_type -> inventory.ListTunnelsResponse + 4, // 5: inventory.Tunnels.AddTunnel:output_type -> inventory.AddTunnelResponse + 6, // 6: inventory.Tunnels.RemoveTunnel:output_type -> inventory.RemoveTunnelResponse + 4, // [4:7] is the sub-list for method output_type + 1, // [1:4] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_inventorypb_tunnels_proto_init() } +func file_inventorypb_tunnels_proto_init() { + if File_inventorypb_tunnels_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_inventorypb_tunnels_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Tunnel); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_tunnels_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTunnelsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_tunnels_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListTunnelsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_tunnels_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddTunnelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_tunnels_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AddTunnelResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_tunnels_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveTunnelRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_inventorypb_tunnels_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RemoveTunnelResponse); 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{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_inventorypb_tunnels_proto_rawDesc, + NumEnums: 0, + NumMessages: 7, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_inventorypb_tunnels_proto_goTypes, + DependencyIndexes: file_inventorypb_tunnels_proto_depIdxs, + MessageInfos: file_inventorypb_tunnels_proto_msgTypes, + }.Build() + File_inventorypb_tunnels_proto = out.File + file_inventorypb_tunnels_proto_rawDesc = nil + file_inventorypb_tunnels_proto_goTypes = nil + file_inventorypb_tunnels_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// TunnelsClient is the client API for Tunnels service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type TunnelsClient interface { + // ListTunnels returns a list of all Tunnels. + ListTunnels(ctx context.Context, in *ListTunnelsRequest, opts ...grpc.CallOption) (*ListTunnelsResponse, error) + // AddTunnel adds a Tunnel. + AddTunnel(ctx context.Context, in *AddTunnelRequest, opts ...grpc.CallOption) (*AddTunnelResponse, error) + // RemoveTunnel removes a Tunnel. + RemoveTunnel(ctx context.Context, in *RemoveTunnelRequest, opts ...grpc.CallOption) (*RemoveTunnelResponse, error) +} + +type tunnelsClient struct { + cc grpc.ClientConnInterface +} + +func NewTunnelsClient(cc grpc.ClientConnInterface) TunnelsClient { + return &tunnelsClient{cc} +} + +func (c *tunnelsClient) ListTunnels(ctx context.Context, in *ListTunnelsRequest, opts ...grpc.CallOption) (*ListTunnelsResponse, error) { + out := new(ListTunnelsResponse) + err := c.cc.Invoke(ctx, "/inventory.Tunnels/ListTunnels", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *tunnelsClient) AddTunnel(ctx context.Context, in *AddTunnelRequest, opts ...grpc.CallOption) (*AddTunnelResponse, error) { + out := new(AddTunnelResponse) + err := c.cc.Invoke(ctx, "/inventory.Tunnels/AddTunnel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *tunnelsClient) RemoveTunnel(ctx context.Context, in *RemoveTunnelRequest, opts ...grpc.CallOption) (*RemoveTunnelResponse, error) { + out := new(RemoveTunnelResponse) + err := c.cc.Invoke(ctx, "/inventory.Tunnels/RemoveTunnel", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// TunnelsServer is the server API for Tunnels service. +type TunnelsServer interface { + // ListTunnels returns a list of all Tunnels. + ListTunnels(context.Context, *ListTunnelsRequest) (*ListTunnelsResponse, error) + // AddTunnel adds a Tunnel. + AddTunnel(context.Context, *AddTunnelRequest) (*AddTunnelResponse, error) + // RemoveTunnel removes a Tunnel. + RemoveTunnel(context.Context, *RemoveTunnelRequest) (*RemoveTunnelResponse, error) +} + +// UnimplementedTunnelsServer can be embedded to have forward compatible implementations. +type UnimplementedTunnelsServer struct { +} + +func (*UnimplementedTunnelsServer) ListTunnels(context.Context, *ListTunnelsRequest) (*ListTunnelsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListTunnels not implemented") +} +func (*UnimplementedTunnelsServer) AddTunnel(context.Context, *AddTunnelRequest) (*AddTunnelResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddTunnel not implemented") +} +func (*UnimplementedTunnelsServer) RemoveTunnel(context.Context, *RemoveTunnelRequest) (*RemoveTunnelResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveTunnel not implemented") +} + +func RegisterTunnelsServer(s *grpc.Server, srv TunnelsServer) { + s.RegisterService(&_Tunnels_serviceDesc, srv) +} + +func _Tunnels_ListTunnels_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListTunnelsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TunnelsServer).ListTunnels(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/inventory.Tunnels/ListTunnels", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TunnelsServer).ListTunnels(ctx, req.(*ListTunnelsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Tunnels_AddTunnel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AddTunnelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TunnelsServer).AddTunnel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/inventory.Tunnels/AddTunnel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TunnelsServer).AddTunnel(ctx, req.(*AddTunnelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Tunnels_RemoveTunnel_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveTunnelRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(TunnelsServer).RemoveTunnel(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/inventory.Tunnels/RemoveTunnel", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(TunnelsServer).RemoveTunnel(ctx, req.(*RemoveTunnelRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Tunnels_serviceDesc = grpc.ServiceDesc{ + ServiceName: "inventory.Tunnels", + HandlerType: (*TunnelsServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListTunnels", + Handler: _Tunnels_ListTunnels_Handler, + }, + { + MethodName: "AddTunnel", + Handler: _Tunnels_AddTunnel_Handler, + }, + { + MethodName: "RemoveTunnel", + Handler: _Tunnels_RemoveTunnel_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "inventorypb/tunnels.proto", +} diff --git a/vendor/github.com/percona/pmm/api/inventorypb/tunnels.pb.gw.go b/vendor/github.com/percona/pmm/api/inventorypb/tunnels.pb.gw.go new file mode 100644 index 0000000000..46bf903466 --- /dev/null +++ b/vendor/github.com/percona/pmm/api/inventorypb/tunnels.pb.gw.go @@ -0,0 +1,331 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: inventorypb/tunnels.proto + +/* +Package inventorypb is a reverse proxy. + +It translates gRPC into RESTful JSON APIs. +*/ +package inventorypb + +import ( + "context" + "io" + "net/http" + + "github.com/golang/protobuf/descriptor" + "github.com/golang/protobuf/proto" + "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/grpc-ecosystem/grpc-gateway/utilities" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/grpclog" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +// Suppress "imported and not used" errors +var _ codes.Code +var _ io.Reader +var _ status.Status +var _ = runtime.String +var _ = utilities.NewDoubleArray +var _ = descriptor.ForMessage +var _ = metadata.Join + +func request_Tunnels_ListTunnels_0(ctx context.Context, marshaler runtime.Marshaler, client TunnelsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListTunnelsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ListTunnels(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Tunnels_ListTunnels_0(ctx context.Context, marshaler runtime.Marshaler, server TunnelsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq ListTunnelsRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ListTunnels(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Tunnels_AddTunnel_0(ctx context.Context, marshaler runtime.Marshaler, client TunnelsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AddTunnelRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.AddTunnel(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Tunnels_AddTunnel_0(ctx context.Context, marshaler runtime.Marshaler, server TunnelsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AddTunnelRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.AddTunnel(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Tunnels_RemoveTunnel_0(ctx context.Context, marshaler runtime.Marshaler, client TunnelsClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RemoveTunnelRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.RemoveTunnel(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Tunnels_RemoveTunnel_0(ctx context.Context, marshaler runtime.Marshaler, server TunnelsServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RemoveTunnelRequest + var metadata runtime.ServerMetadata + + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.RemoveTunnel(ctx, &protoReq) + return msg, metadata, err + +} + +// RegisterTunnelsHandlerServer registers the http handlers for service Tunnels to "mux". +// UnaryRPC :call TunnelsServer directly. +// StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. +// Note that using this registration option will cause many gRPC library features to stop working. Consider using RegisterTunnelsHandlerFromEndpoint instead. +func RegisterTunnelsHandlerServer(ctx context.Context, mux *runtime.ServeMux, server TunnelsServer) error { + + mux.Handle("POST", pattern_Tunnels_ListTunnels_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Tunnels_ListTunnels_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Tunnels_ListTunnels_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Tunnels_AddTunnel_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Tunnels_AddTunnel_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Tunnels_AddTunnel_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Tunnels_RemoveTunnel_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Tunnels_RemoveTunnel_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Tunnels_RemoveTunnel_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +// RegisterTunnelsHandlerFromEndpoint is same as RegisterTunnelsHandler but +// automatically dials to "endpoint" and closes the connection when "ctx" gets done. +func RegisterTunnelsHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) { + conn, err := grpc.Dial(endpoint, opts...) + if err != nil { + return err + } + defer func() { + if err != nil { + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + return + } + go func() { + <-ctx.Done() + if cerr := conn.Close(); cerr != nil { + grpclog.Infof("Failed to close conn to %s: %v", endpoint, cerr) + } + }() + }() + + return RegisterTunnelsHandler(ctx, mux, conn) +} + +// RegisterTunnelsHandler registers the http handlers for service Tunnels to "mux". +// The handlers forward requests to the grpc endpoint over "conn". +func RegisterTunnelsHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error { + return RegisterTunnelsHandlerClient(ctx, mux, NewTunnelsClient(conn)) +} + +// RegisterTunnelsHandlerClient registers the http handlers for service Tunnels +// to "mux". The handlers forward requests to the grpc endpoint over the given implementation of "TunnelsClient". +// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "TunnelsClient" +// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in +// "TunnelsClient" to call the correct interceptors. +func RegisterTunnelsHandlerClient(ctx context.Context, mux *runtime.ServeMux, client TunnelsClient) error { + + mux.Handle("POST", pattern_Tunnels_ListTunnels_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Tunnels_ListTunnels_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Tunnels_ListTunnels_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Tunnels_AddTunnel_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Tunnels_AddTunnel_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Tunnels_AddTunnel_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("POST", pattern_Tunnels_RemoveTunnel_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Tunnels_RemoveTunnel_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Tunnels_RemoveTunnel_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Tunnels_ListTunnels_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "inventory", "Tunnels", "List"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Tunnels_AddTunnel_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "inventory", "Tunnels", "Add"}, "", runtime.AssumeColonVerbOpt(true))) + + pattern_Tunnels_RemoveTunnel_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"v1", "inventory", "Tunnels", "Remove"}, "", runtime.AssumeColonVerbOpt(true))) +) + +var ( + forward_Tunnels_ListTunnels_0 = runtime.ForwardResponseMessage + + forward_Tunnels_AddTunnel_0 = runtime.ForwardResponseMessage + + forward_Tunnels_RemoveTunnel_0 = runtime.ForwardResponseMessage +) diff --git a/vendor/github.com/percona/pmm/api/inventorypb/tunnels.validator.pb.go b/vendor/github.com/percona/pmm/api/inventorypb/tunnels.validator.pb.go new file mode 100644 index 0000000000..4560c6c510 --- /dev/null +++ b/vendor/github.com/percona/pmm/api/inventorypb/tunnels.validator.pb.go @@ -0,0 +1,68 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: inventorypb/tunnels.proto + +package inventorypb + +import ( + fmt "fmt" + proto "github.com/golang/protobuf/proto" + _ "github.com/mwitkow/go-proto-validators" + github_com_mwitkow_go_proto_validators "github.com/mwitkow/go-proto-validators" + _ "google.golang.org/genproto/googleapis/api/annotations" + math "math" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf + +func (this *Tunnel) Validate() error { + return nil +} +func (this *ListTunnelsRequest) Validate() error { + return nil +} +func (this *ListTunnelsResponse) Validate() error { + for _, item := range this.Tunnel { + if item != nil { + if err := github_com_mwitkow_go_proto_validators.CallValidatorIfExists(item); err != nil { + return github_com_mwitkow_go_proto_validators.FieldError("Tunnel", err) + } + } + } + return nil +} +func (this *AddTunnelRequest) Validate() error { + if this.ListenAgentId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("ListenAgentId", fmt.Errorf(`value '%v' must not be an empty string`, this.ListenAgentId)) + } + if !(this.ListenPort > 0) { + return github_com_mwitkow_go_proto_validators.FieldError("ListenPort", fmt.Errorf(`value '%v' must be greater than '0'`, this.ListenPort)) + } + if !(this.ListenPort < 65536) { + return github_com_mwitkow_go_proto_validators.FieldError("ListenPort", fmt.Errorf(`value '%v' must be less than '65536'`, this.ListenPort)) + } + if this.ConnectAgentId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("ConnectAgentId", fmt.Errorf(`value '%v' must not be an empty string`, this.ConnectAgentId)) + } + if !(this.ConnectPort > 0) { + return github_com_mwitkow_go_proto_validators.FieldError("ConnectPort", fmt.Errorf(`value '%v' must be greater than '0'`, this.ConnectPort)) + } + if !(this.ConnectPort < 65536) { + return github_com_mwitkow_go_proto_validators.FieldError("ConnectPort", fmt.Errorf(`value '%v' must be less than '65536'`, this.ConnectPort)) + } + return nil +} +func (this *AddTunnelResponse) Validate() error { + return nil +} +func (this *RemoveTunnelRequest) Validate() error { + if this.TunnelId == "" { + return github_com_mwitkow_go_proto_validators.FieldError("TunnelId", fmt.Errorf(`value '%v' must not be an empty string`, this.TunnelId)) + } + return nil +} +func (this *RemoveTunnelResponse) Validate() error { + return nil +} diff --git a/vendor/github.com/percona/pmm/api/managementpb/external.pb.go b/vendor/github.com/percona/pmm/api/managementpb/external.pb.go index b365fd9711..cdc1e9ee5c 100644 --- a/vendor/github.com/percona/pmm/api/managementpb/external.pb.go +++ b/vendor/github.com/percona/pmm/api/managementpb/external.pb.go @@ -82,6 +82,8 @@ type AddExternalRequest struct { // Node with registered pmm_agent_id must present at pmm-server // in case of push metrics_mode. MetricsMode MetricsMode `protobuf:"varint,17,opt,name=metrics_mode,json=metricsMode,proto3,enum=management.MetricsMode" json:"metrics_mode,omitempty"` + // Skip connection check. + SkipConnectionCheck bool `protobuf:"varint,21,opt,name=skip_connection_check,json=skipConnectionCheck,proto3" json:"skip_connection_check,omitempty"` } func (x *AddExternalRequest) Reset() { @@ -235,6 +237,13 @@ func (x *AddExternalRequest) GetMetricsMode() MetricsMode { return MetricsMode_AUTO } +func (x *AddExternalRequest) GetSkipConnectionCheck() bool { + if x != nil { + return x.SkipConnectionCheck + } + return false +} + type AddExternalResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -307,7 +316,7 @@ var file_managementpb_external_proto_rawDesc = []byte{ 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2f, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdb, 0x05, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8f, 0x06, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x73, 0x5f, 0x6f, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x72, @@ -349,32 +358,35 @@ var file_managementpb_external_proto_rawDesc = []byte{ 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x95, 0x01, 0x0a, 0x13, - 0x41, 0x64, 0x64, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x65, 0x78, 0x74, - 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, - 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, - 0x74, 0x65, 0x72, 0x32, 0x82, 0x01, 0x0a, 0x08, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, - 0x12, 0x76, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x12, - 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, - 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, - 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, - 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, - 0x6c, 0x2f, 0x41, 0x64, 0x64, 0x3a, 0x01, 0x2a, 0x42, 0x1f, 0x5a, 0x1d, 0x61, 0x70, 0x69, 0x2f, - 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x3b, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, + 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x1a, 0x3f, + 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, + 0x95, 0x01, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, + 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, + 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, + 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, + 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x32, 0x82, 0x01, 0x0a, 0x08, 0x45, 0x78, 0x74, 0x65, + 0x72, 0x6e, 0x61, 0x6c, 0x12, 0x76, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x45, 0x78, 0x74, 0x65, 0x72, + 0x6e, 0x61, 0x6c, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x41, 0x64, 0x64, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, + 0x2e, 0x41, 0x64, 0x64, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, 0x22, 0x1b, 0x2f, 0x76, + 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x45, 0x78, 0x74, + 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x41, 0x64, 0x64, 0x3a, 0x01, 0x2a, 0x42, 0x1f, 0x5a, 0x1d, + 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, + 0x3b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/vendor/github.com/percona/pmm/api/managementpb/haproxy.pb.go b/vendor/github.com/percona/pmm/api/managementpb/haproxy.pb.go index edbaf77b68..ed656ea102 100644 --- a/vendor/github.com/percona/pmm/api/managementpb/haproxy.pb.go +++ b/vendor/github.com/percona/pmm/api/managementpb/haproxy.pb.go @@ -76,6 +76,8 @@ type AddHAProxyRequest struct { // Node with registered pmm_agent_id must present at pmm-server // in case of push metrics_mode. MetricsMode MetricsMode `protobuf:"varint,16,opt,name=metrics_mode,json=metricsMode,proto3,enum=management.MetricsMode" json:"metrics_mode,omitempty"` + // Skip connection check. + SkipConnectionCheck bool `protobuf:"varint,21,opt,name=skip_connection_check,json=skipConnectionCheck,proto3" json:"skip_connection_check,omitempty"` } func (x *AddHAProxyRequest) Reset() { @@ -215,6 +217,13 @@ func (x *AddHAProxyRequest) GetMetricsMode() MetricsMode { return MetricsMode_AUTO } +func (x *AddHAProxyRequest) GetSkipConnectionCheck() bool { + if x != nil { + return x.SkipConnectionCheck + } + return false +} + type AddHAProxyResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -287,7 +296,7 @@ var file_managementpb_haproxy_proto_rawDesc = []byte{ 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x2f, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x05, 0x0a, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xd0, 0x05, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6e, 0x6f, 0x64, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x6e, @@ -325,31 +334,34 @@ var file_managementpb_haproxy_proto_rawDesc = []byte{ 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x0b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x1a, 0x3f, 0x0a, 0x11, 0x43, 0x75, - 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, 0x93, 0x01, 0x0a, 0x12, - 0x41, 0x64, 0x64, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x65, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x45, - 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, 0x52, - 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, - 0x72, 0x32, 0x7d, 0x0a, 0x07, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x72, 0x0a, 0x0a, - 0x41, 0x64, 0x64, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x48, 0x41, 0x50, 0x72, 0x6f, - 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, - 0x74, 0x2f, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x41, 0x64, 0x64, 0x3a, 0x01, 0x2a, - 0x42, 0x1f, 0x5a, 0x1d, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x70, 0x62, 0x3b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, - 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x73, 0x6b, + 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x68, + 0x65, 0x63, 0x6b, 0x18, 0x15, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x73, 0x6b, 0x69, 0x70, 0x43, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x1a, 0x3f, + 0x0a, 0x11, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4c, 0x61, 0x62, 0x65, 0x6c, 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, + 0x93, 0x01, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, + 0x6f, 0x72, 0x79, 0x2e, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x65, + 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x65, 0x78, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x72, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, + 0x72, 0x79, 0x2e, 0x45, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, 0x6f, 0x72, + 0x74, 0x65, 0x72, 0x52, 0x10, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x45, 0x78, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x72, 0x32, 0x7d, 0x0a, 0x07, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, + 0x12, 0x72, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x1d, + 0x2e, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x48, + 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, + 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x48, 0x41, + 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x61, 0x6e, 0x61, 0x67, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x2f, 0x48, 0x41, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x41, 0x64, + 0x64, 0x3a, 0x01, 0x2a, 0x42, 0x1f, 0x5a, 0x1d, 0x61, 0x70, 0x69, 0x2f, 0x6d, 0x61, 0x6e, 0x61, + 0x67, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x70, 0x62, 0x3b, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x6d, + 0x65, 0x6e, 0x74, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var (